From 4b08f62bf2e07d4c24b8e5b4f502108788507f4c Mon Sep 17 00:00:00 2001 From: Eduardo Gonzalez Lazo <30321688+EddyTheCo@users.noreply.github.com> Date: Wed, 14 Feb 2024 14:26:54 +0100 Subject: [PATCH 1/2] added actions (#3) * added actions * added cpack * does not need multimedia on wasm * added the keystore * center position is now on top * added subdir for client * use kdap openssl --- .github/release.yml | 22 ++++ .github/workflows/build-test-install.yml | 61 +++++++++ .github/workflows/build-wasm.yaml | 59 +++++++++ CMakeLists.txt | 9 ++ Client/CMakeLists.txt | 15 ++- Client/ServerMap/qml/ObjectMapView.qml | 2 +- Client/android/android_release.keystore | Bin 0 -> 2688 bytes Client/tags | 157 ----------------------- README.md | 17 +++ Server/README.md | 9 +- Server/tags | 55 -------- wasm/Client/index.html | 2 +- 12 files changed, 190 insertions(+), 218 deletions(-) create mode 100644 .github/release.yml create mode 100644 .github/workflows/build-test-install.yml create mode 100644 .github/workflows/build-wasm.yaml create mode 100644 Client/android/android_release.keystore delete mode 100644 Client/tags create mode 100644 README.md delete mode 100644 Server/tags diff --git a/.github/release.yml b/.github/release.yml new file mode 100644 index 0000000..cc7d695 --- /dev/null +++ b/.github/release.yml @@ -0,0 +1,22 @@ +changelog: + exclude: + labels: + - ignore-for-release + authors: + - octocat + categories: + - title: Breaking Changes + labels: + - Semver-Major + - breaking-change + - title: Exciting New Features + labels: + - Semver-Minor + - enhancement + - title: Bug Fixing + labels: + - Semver-Patch + - bug + - title: Other Changes + labels: + - "*" diff --git a/.github/workflows/build-test-install.yml b/.github/workflows/build-test-install.yml new file mode 100644 index 0000000..21da0d5 --- /dev/null +++ b/.github/workflows/build-test-install.yml @@ -0,0 +1,61 @@ +name: push-build-release +run-name: ${{ github.actor }} ${{ github.event_name }} to ${{ github.base_ref }} +on: + + push: + tags: + - 'v*' + pull_request: + branches: [develop] +jobs: + build_test_package: + strategy: + matrix: + os: [ubuntu-latest,macos-latest,windows-latest] + + uses: EddyTheCo/Common/.github/workflows/build-test-install.yml@v0.1.2 + permissions: + contents: write + with: + os: ${{ matrix.os }} + cmakeArgs: ' -DUSE_THREADS=ON -DQTDEPLOY=ON' + qtModules: 'qtwebsockets qtshadertools qtmultimedia qtlocation qtpositioning' + qtVersion: '6.6.0' + test: false + build-android: + strategy: + matrix: + qtArch: ['android_arm64_v8a','android_armv7'] + + uses: EddyTheCo/Common/.github/workflows/build-android.yml@android_subdirectory + with: + qtModules: 'qtwebsockets qtshadertools qtmultimedia qtlocation qtpositioning' + qtTarget: 'lockersClient' + qtVersion: '6.6.0' + cmakeArgs: '-DUSE_THREADS=ON -DBUILD_SERVER=OFF' + qtArch: ${{ matrix.qtArch }} + subdir: 'Client' + secrets: + QT_ANDROID_KEYSTORE_STORE_PASS: ${{ secrets.QT_ANDROID_KEYSTORE_STORE_PASS }} + release: + if: startsWith(github.ref, 'refs/tags/v') + needs: [build_test_package,build-android] + runs-on: ubuntu-latest + + permissions: + contents: write + + steps: + + - uses: actions/checkout@v4 + + - uses: actions/download-artifact@v4 + with: + path: artifacts + - name: Display structure of downloaded files + run: ls -R + + - name: Releases + uses: softprops/action-gh-release@v1 + with: + files: ./artifacts/*/* diff --git a/.github/workflows/build-wasm.yaml b/.github/workflows/build-wasm.yaml new file mode 100644 index 0000000..fcc78d7 --- /dev/null +++ b/.github/workflows/build-wasm.yaml @@ -0,0 +1,59 @@ +name: build-wasm +run-name: ${{ github.actor }} ${{ github.event_name }} to ${{ github.base_ref }} +on: + pull_request: + branches: [main,develop] + pull_request_target: + types: [closed] + branches: [main] +jobs: + build-html: + uses: EddyTheCo/Common/.github/workflows/build-wasm.yml@v0.1.2 + permissions: + pages: write + id-token: write + with: + qtModules: 'qtwebsockets qtshadertools ' + qtVersion: '6.6.0' + emsdkVersion: '3.1.37' + deploy_dev: ${{ (github.event.pull_request.merged == false)&&(startsWith(github.base_ref, 'main'))&&(startsWith(github.head_ref, 'develop')) }} + deploy_wasm: + needs: build-html + if: ${{ (startsWith(github.base_ref, 'main'))&&(startsWith(github.head_ref, 'develop')) }} + + runs-on: 'ubuntu-latest' + permissions: + pages: write + id-token: write + + environment: + name: github-pages + url: ${{ steps.deployment.outputs.page_url }} + + steps: + - name: Deploy to GitHub Pages + id: deployment + uses: actions/deploy-pages@v4 + + release: + if: startsWith(github.ref, 'refs/tags/v') + needs: build-html + runs-on: ubuntu-latest + + permissions: + contents: write + + steps: + + - uses: actions/checkout@v4 + + - uses: actions/download-artifact@v4 + with: + path: artifacts + - name: Display structure of downloaded files + run: ls -R + + - name: Releases + uses: softprops/action-gh-release@v1 + with: + files: ./artifacts/*/* diff --git a/CMakeLists.txt b/CMakeLists.txt index 949a0b3..ce27c41 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -56,3 +56,12 @@ endif(BUILD_CLIENT) if(BUILD_SERVER) add_subdirectory(Server) endif(BUILD_SERVER) + +if(CMAKE_PROJECT_NAME STREQUAL PROJECT_NAME) + set(CPACK_PACKAGE_CONTACT "estervtech") + set(CPACK_PACKAGE_FILE_NAME "${PROJECT_NAME}-v${SEMVER}-${CMAKE_SYSTEM_NAME}_${CMAKE_SYSTEM_VERSION}-${CMAKE_SYSTEM_PROCESSOR}-${CMAKE_CXX_COMPILER_ID}") + if(USE_THREADS) + set(CPACK_PACKAGE_FILE_NAME "${CPACK_PACKAGE_FILE_NAME}-MThread") + endif(USE_THREADS) + include(CPack) +endif() diff --git a/Client/CMakeLists.txt b/Client/CMakeLists.txt index 78d5162..99002ed 100644 --- a/Client/CMakeLists.txt +++ b/Client/CMakeLists.txt @@ -18,7 +18,7 @@ endif() if(EMSCRIPTEN OR ANDROID) - find_package(Qt6 REQUIRED COMPONENTS Core Gui Quick Qml Multimedia QuickControls2) + find_package(Qt6 REQUIRED COMPONENTS Core Gui Quick Qml QuickControls2) find_package(EstervDesigns 1.1 REQUIRED COMPONENTS FlatControl CONFIG ) endif(EMSCRIPTEN OR ANDROID) @@ -64,6 +64,19 @@ if(ANDROID) set_property(TARGET lockersClient APPEND PROPERTY QT_ANDROID_MIN_SDK_VERSION 30) set_property(TARGET lockersClient APPEND PROPERTY QT_ANDROID_TARGET_SDK_VERSION 34) set_property(TARGET lockersClient APPEND PROPERTY QT_ANDROID_SDK_BUILD_TOOLS_REVISION 34.0.0) + + FetchContent_Declare( + android_openssl + DOWNLOAD_EXTRACT_TIMESTAMP true + URL https://github.com/KDAB/android_openssl/archive/refs/heads/master.zip + ) +FetchContent_GetProperties(android_openssl) +if(NOT android_openssl_POPULATED) + FetchContent_Populate(android_openssl) + include(${android_openssl_SOURCE_DIR}/android_openssl.cmake) + add_android_openssl_libraries(lockersClient) +endif(NOT android_openssl_POPULATED) + endif(ANDROID) endif(EMSCRIPTEN OR ANDROID) diff --git a/Client/ServerMap/qml/ObjectMapView.qml b/Client/ServerMap/qml/ObjectMapView.qml index 11ec315..3b5eadf 100644 --- a/Client/ServerMap/qml/ObjectMapView.qml +++ b/Client/ServerMap/qml/ObjectMapView.qml @@ -107,7 +107,7 @@ MapView { height:56 radius: 56 anchors.right: parent.right - anchors.bottom: parent.bottom + anchors.top: parent.top anchors.margins: 10 visible: LocationPermisioner.isGranted ToolTip.text: qsTr("Recenter") diff --git a/Client/android/android_release.keystore b/Client/android/android_release.keystore new file mode 100644 index 0000000000000000000000000000000000000000..6beb4ddb5cb53dd71a8e6fe8de8d2ad04c43145c GIT binary patch literal 2688 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, {}, nullptr } };QT_WARNING_POP$/;" m namespace:QmlCacheGeneratedCode::_esterVtech_0x2e_com_imports_client_qml_LocalConf_qml file: -aotBuiltFunctions build/.rcc/qmlcache/client_main_qml/MyMapView_qml.cpp /^extern const QQmlPrivate::AOTCompiledFunction aotBuiltFunctions[] = {$/;" m namespace:QmlCacheGeneratedCode::_esterVtech_0x2e_com_imports_client_qml_MyMapView_qml file: -aotBuiltFunctions build/.rcc/qmlcache/client_main_qml/window_qml.cpp /^extern const QQmlPrivate::AOTCompiledFunction aotBuiltFunctions[] = {$/;" m namespace:QmlCacheGeneratedCode::_esterVtech_0x2e_com_imports_client_qml_window_qml file: -books_ include/bclient.hpp /^ std::vector books_;$/;" m class:Server -canLoadQt wasm/qtloader.js /^ function canLoadQt() {$/;" f function:webAssemblySupported -checkFunds src/bclient.cpp /^void Book_Client::checkFunds(std::vector outs)$/;" f class:Book_Client -check_if_expired src/bclient.cpp /^void Book_Client::check_if_expired(void)$/;" f class:Book_Client -check_state_output src/bclient.cpp /^void Server::check_state_output(const Node_output& node_output_)$/;" f class:Server -clientId include/bclient.hpp /^ QString clientId(void)const{return m_clientId;}$/;" f class:Book_Client -committedStatus wasm/qtloader.js /^ var committedStatus = undefined;$/;" v -completeLoadEmscriptenModule wasm/qtloader.js /^ function completeLoadEmscriptenModule(applicationName, emscriptenModuleSource, wasmModule) {$/;" f function:webAssemblySupported -config.restart wasm/qtloader.js /^ config.restart = function() {$/;" f -deserialize_state src/bclient.cpp /^void Server::deserialize_state(const QByteArray &state)$/;" f class:Server -dummy build/.rcc/qrc_client_main_fonts.cpp /^ } dummy;$/;" m namespace:__anon4 typeref:struct:__anon4::initializer file: -dummy build/.rcc/qrc_client_main_raw_qml_0.cpp /^ } dummy;$/;" m namespace:__anon2 typeref:struct:__anon2::initializer file: -dummy build/.rcc/qrc_qmake_client.cpp /^ } dummy;$/;" m namespace:__anon3 typeref:struct:__anon3::initializer file: -fetchCompileWasm wasm/qtloader.js /^ function fetchCompileWasm(filePath) {$/;" f function:webAssemblySupported -fetchResource wasm/qtloader.js /^ function fetchResource(filePath) {$/;" f function:webAssemblySupported -fetchText wasm/qtloader.js /^ function fetchText(filePath) {$/;" f function:webAssemblySupported -fetchThenCompileWasm wasm/qtloader.js /^ function fetchThenCompileWasm(response) {$/;" f function:webAssemblySupported -fontDpi wasm/qtloader.js /^ function fontDpi() {$/;" f -funds include/bclient.hpp /^ QJsonObject funds(void)const{return funds_json;}$/;" f class:Book_Client -funds_ include/bclient.hpp /^ quint64 funds_;$/;" m class:Book_Client -funds_json include/bclient.hpp /^ QJsonObject funds_json;$/;" m class:Book_Client -getServerList src/bclient.cpp /^void Book_Client::getServerList(void)$/;" f class:Book_Client -get_server_id src/bclient.cpp /^QString Book_Client::get_server_id(void)const$/;" f class:Book_Client -handleError wasm/qtloader.js /^ function handleError(error) {$/;" f function:webAssemblySupported -handleStatusChange wasm/qtloader.js /^ function handleStatusChange() {$/;" f -init wasm/js/scripts.js /^function init() {$/;" f -initQTwasm wasm/js/initQTwasm.js /^function initQTwasm(wasm_url, app_name, rootDivSele, logoPath) {$/;" f -initializer build/.rcc/qrc_client_main_fonts.cpp /^ initializer() { QT_RCC_MANGLE_NAMESPACE(qInitResources_client_main_fonts)(); }$/;" f struct:__anon4::initializer -initializer build/.rcc/qrc_client_main_fonts.cpp /^ struct initializer {$/;" s namespace:__anon4 file: -initializer build/.rcc/qrc_client_main_raw_qml_0.cpp /^ initializer() { QT_RCC_MANGLE_NAMESPACE(qInitResources_client_main_raw_qml_0)(); }$/;" f struct:__anon2::initializer -initializer build/.rcc/qrc_client_main_raw_qml_0.cpp /^ struct initializer {$/;" s namespace:__anon2 file: -initializer build/.rcc/qrc_qmake_client.cpp /^ initializer() { QT_RCC_MANGLE_NAMESPACE(qInitResources_qmake_client)(); }$/;" f struct:__anon3::initializer -initializer build/.rcc/qrc_qmake_client.cpp /^ struct initializer {$/;" s namespace:__anon3 file: -loadEmscriptenModule wasm/qtloader.js /^ function loadEmscriptenModule(applicationName) {$/;" f function:webAssemblySupported -lookupCachedUnit build/.rcc/qmlcache/client_main_qmlcache_loader.cpp /^const QQmlPrivate::CachedQmlUnit *Registry::lookupCachedUnit(const QUrl &url) {$/;" f class:__anon1::Registry -m_clientId include/bclient.hpp /^ QString m_clientId;$/;" m class:Book_Client -m_state include/bclient.hpp /^ ConState m_state;$/;" m class:Server -main client_main.cpp /^int main(int argc, char *argv[])$/;" f -module wasm/qtloader.js /^ function module() {$/;" f -monitor_state src/bclient.cpp /^void Server::monitor_state(void)$/;" f class:Server -paytoaddr_ include/bclient.hpp /^ qblocks::c_array server_id_,paytoaddr_;$/;" m class:Server -presentNft src/bclient.cpp /^void Server::presentNft(const QString address)$/;" f class:Server -price_per_hour_ include/bclient.hpp /^ quint64 price_per_hour_;$/;" m class:Server -qCleanupResources_client_main_fonts build/.rcc/qrc_client_main_fonts.cpp /^int QT_RCC_MANGLE_NAMESPACE(qCleanupResources_client_main_fonts)()$/;" f -qCleanupResources_client_main_raw_qml_0 build/.rcc/qrc_client_main_raw_qml_0.cpp /^int QT_RCC_MANGLE_NAMESPACE(qCleanupResources_client_main_raw_qml_0)()$/;" f -qCleanupResources_qmake_client build/.rcc/qrc_qmake_client.cpp /^int QT_RCC_MANGLE_NAMESPACE(qCleanupResources_qmake_client)()$/;" f -qCleanupResources_qmlcache_client_main build/.rcc/qmlcache/client_main_qmlcache_loader.cpp /^int QT_MANGLE_NAMESPACE(qCleanupResources_qmlcache_client_main)() {$/;" f -qInitResources_client_main_fonts build/.rcc/qrc_client_main_fonts.cpp /^int QT_RCC_MANGLE_NAMESPACE(qInitResources_client_main_fonts)()$/;" f -qInitResources_client_main_raw_qml_0 build/.rcc/qrc_client_main_raw_qml_0.cpp /^int QT_RCC_MANGLE_NAMESPACE(qInitResources_client_main_raw_qml_0)()$/;" f -qInitResources_qmake_client build/.rcc/qrc_qmake_client.cpp /^int QT_RCC_MANGLE_NAMESPACE(qInitResources_qmake_client)()$/;" f -qInitResources_qmlcache_client_main build/.rcc/qmlcache/client_main_qmlcache_loader.cpp /^int QT_MANGLE_NAMESPACE(qInitResources_qmlcache_client_main)() {$/;" f -qResourceFeatureZlib build/.rcc/qrc_client_main_raw_qml_0.cpp /^static inline unsigned char qResourceFeatureZlib()$/;" f namespace:QT_NAMESPACE -qt_resource_data build/.rcc/qrc_client_main_fonts.cpp /^static const unsigned char qt_resource_data[] = {$/;" v file: -qt_resource_data build/.rcc/qrc_client_main_raw_qml_0.cpp /^static const unsigned char qt_resource_data[] = {$/;" v file: -qt_resource_data build/.rcc/qrc_qmake_client.cpp /^static const unsigned char qt_resource_data[] = {$/;" v file: -qt_resource_name build/.rcc/qrc_client_main_fonts.cpp /^static const unsigned char qt_resource_name[] = {$/;" v file: -qt_resource_name build/.rcc/qrc_client_main_raw_qml_0.cpp /^static const unsigned char qt_resource_name[] = {$/;" v file: -qt_resource_name build/.rcc/qrc_qmake_client.cpp /^static const unsigned char qt_resource_name[] = {$/;" v file: -qt_resource_struct build/.rcc/qrc_client_main_fonts.cpp /^static const unsigned char qt_resource_struct[] = {$/;" v file: -qt_resource_struct build/.rcc/qrc_client_main_raw_qml_0.cpp /^static const unsigned char qt_resource_struct[] = {$/;" v file: -qt_resource_struct build/.rcc/qrc_qmake_client.cpp /^static const unsigned char qt_resource_struct[] = {$/;" v file: -removeCanvasElement wasm/qtloader.js /^ function removeCanvasElement(element) {$/;" f -removeChildren wasm/qtloader.js /^ function removeChildren(element) {$/;" f function:webAssemblySupported -resizeCanvasElement wasm/qtloader.js /^ function resizeCanvasElement(element) {$/;" f -resizeSplitX wasm/js/scripts.js /^function resizeSplitX(event) {$/;" f -resourcePathToCachedUnit build/.rcc/qmlcache/client_main_qmlcache_loader.cpp /^ QHash resourcePathToCachedUnit;$/;" m struct:__anon1::Registry file: -self.moduleConfig.instantiateWasm wasm/qtloader.js /^ self.moduleConfig.instantiateWasm = function(imports, successCallback) {$/;" f function:webAssemblySupported -sendNft src/bclient.cpp /^void Book_Client::sendNft(Node_output out,c_array address)$/;" f class:Book_Client -send_booking src/bclient.cpp /^void Server::send_booking(const QJsonArray books)$/;" f class:Server -server_id_ include/bclient.hpp /^ qblocks::c_array server_id_,paytoaddr_;$/;" m class:Server -setCanvasContent wasm/qtloader.js /^ function setCanvasContent() {$/;" f function:_QtLoader -setClientId include/bclient.hpp /^ void setClientId(QString clie){if(clie!=m_clientId){m_clientId=clie;emit clientIdChanged();}}$/;" f class:Book_Client -setErrorContent wasm/qtloader.js /^ function setErrorContent() {$/;" f function:_QtLoader -setExitContent wasm/qtloader.js /^ function setExitContent() {$/;" f function:_QtLoader -setFontDpi wasm/qtloader.js /^ function setFontDpi(dpi) {$/;" f -setFunds src/bclient.cpp /^void Book_Client::setFunds(quint64 funds_m){$/;" f class:Book_Client -setLoaderContent wasm/qtloader.js /^ function setLoaderContent() {$/;" f function:_QtLoader -setStatus wasm/qtloader.js /^ function setStatus(status) {$/;" f -set_server_id src/bclient.cpp /^void Book_Client::set_server_id(QString server_id_m)$/;" f class:Book_Client -state include/bclient.hpp /^ ConState state(void){return m_state;}$/;" f class:Server -total_funds include/bclient.hpp /^ QHash total_funds;$/;" m class:Book_Client -unit build/.rcc/qmlcache/client_main_qmlcache_loader.cpp /^ const QQmlPrivate::CachedQmlUnit unit = {$/;" m namespace:QmlCacheGeneratedCode::_esterVtech_0x2e_com_imports_client_qml_Enter_Pin_client_qml file: -unit build/.rcc/qmlcache/client_main_qmlcache_loader.cpp /^ const QQmlPrivate::CachedQmlUnit unit = {$/;" m namespace:QmlCacheGeneratedCode::_esterVtech_0x2e_com_imports_client_qml_Head_qml file: -unit build/.rcc/qmlcache/client_main_qmlcache_loader.cpp /^ const QQmlPrivate::CachedQmlUnit unit = {$/;" m namespace:QmlCacheGeneratedCode::_esterVtech_0x2e_com_imports_client_qml_LocalConf_qml file: -unit build/.rcc/qmlcache/client_main_qmlcache_loader.cpp /^ const QQmlPrivate::CachedQmlUnit unit = {$/;" m namespace:QmlCacheGeneratedCode::_esterVtech_0x2e_com_imports_client_qml_window_qml file: -webAssemblySupported wasm/qtloader.js /^ function webAssemblySupported() {$/;" f function:_QtLoader -webGLSupported wasm/qtloader.js /^ function webGLSupported() {$/;" f function:webAssemblySupported -wrapCall build/.rcc/qmlcache/client_main_qml/Enter_Pin_client_qml.cpp /^void wrapCall(const QQmlPrivate::AOTCompiledContext *aotContext, void *dataPtr, void **argumentsPtr, Binding &&binding)$/;" f namespace:QmlCacheGeneratedCode::_esterVtech_0x2e_com_imports_client_qml_Enter_Pin_client_qml -wrapCall build/.rcc/qmlcache/client_main_qml/Head_qml.cpp /^void wrapCall(const QQmlPrivate::AOTCompiledContext *aotContext, void *dataPtr, void **argumentsPtr, Binding &&binding)$/;" f namespace:QmlCacheGeneratedCode::_esterVtech_0x2e_com_imports_client_qml_Head_qml -wrapCall build/.rcc/qmlcache/client_main_qml/MyMapView_qml.cpp /^void wrapCall(const QQmlPrivate::AOTCompiledContext *aotContext, void *dataPtr, void **argumentsPtr, Binding &&binding)$/;" f namespace:QmlCacheGeneratedCode::_esterVtech_0x2e_com_imports_client_qml_MyMapView_qml -wrapCall build/.rcc/qmlcache/client_main_qml/window_qml.cpp /^void wrapCall(const QQmlPrivate::AOTCompiledContext *aotContext, void *dataPtr, void **argumentsPtr, Binding &&binding)$/;" f namespace:QmlCacheGeneratedCode::_esterVtech_0x2e_com_imports_client_qml_window_qml -~Registry build/.rcc/qmlcache/client_main_qmlcache_loader.cpp /^Registry::~Registry() {$/;" f class:__anon1::Registry -~initializer build/.rcc/qrc_client_main_fonts.cpp /^ ~initializer() { QT_RCC_MANGLE_NAMESPACE(qCleanupResources_client_main_fonts)(); }$/;" f struct:__anon4::initializer -~initializer build/.rcc/qrc_client_main_raw_qml_0.cpp /^ ~initializer() { QT_RCC_MANGLE_NAMESPACE(qCleanupResources_client_main_raw_qml_0)(); }$/;" f struct:__anon2::initializer -~initializer build/.rcc/qrc_qmake_client.cpp /^ ~initializer() { QT_RCC_MANGLE_NAMESPACE(qCleanupResources_qmake_client)(); }$/;" f struct:__anon3::initializer diff --git a/README.md b/README.md new file mode 100644 index 0000000..02e87a2 --- /dev/null +++ b/README.md @@ -0,0 +1,17 @@ +# DLockers + +This repo produce a [server](https://github.com/EddyTheCo/DLockers/tree/main/Server/) and a [client](https://github.com/EddyTheCo/DLockers/tree/main/Client/) applications that communicate peer-to-peer using the IOTA network. +We are not interested in the speculative side of crypto and we are not associated with the Iota Foundation. +We discourage investing in Shimmer and IOTA because that will be investing in the Iota Foundation and its pursuit of centralizing the development and protocol. + + + + + +## The bigger picture + +* Any person can start renting physical space for lockers. +* You do not depend on centralized company servers to store your business data or to process payments. +* As long as you maintain a node(blockchain), your gainings and business data are cryptographically secured. +* The code is open source and grants you certain rights and responsibilities to respect other people's rights. +* By using NFTs the client can pass the right to open a box to other clients. diff --git a/Server/README.md b/Server/README.md index f2fba21..ec11a42 100644 --- a/Server/README.md +++ b/Server/README.md @@ -22,9 +22,12 @@ If everything is fine the server collect the money from the client, update its i The server allows you to open the locker if you own a NFT signed by the server. The signed NFT has immutable metadata that reference certain time interval of the bookings the client has paid. -The server is configured to run on a raspberry-pi, with a 4g and GPS module. +## Platformsi + +The server is configured to run on a raspberry-pi, with a 4g and GPS module by using the [evt yocto Layer](https://github.com/EddyTheCo/meta-evt) The server will set the pin 17(this can be configured) up when a valid NFT is received. The later will open the electrical locker. - One using the GPS, the geographical position of the server will be public. -One can also setup a [mock-up Server](https://eddytheco.github.io/DLockers/MockupServer) for testing. + +One can also setup a [mock-up Server](https://eddytheco.github.io/DLockers/MockupServer) for testing just using the browser. +The releases from this repo are also a mock-up Server. diff --git a/Server/tags b/Server/tags deleted file mode 100644 index f57953b..0000000 --- a/Server/tags +++ /dev/null @@ -1,55 +0,0 @@ -!_TAG_FILE_FORMAT 2 /extended format; --format=1 will not append ;" to lines/ -!_TAG_FILE_SORTED 1 /0=unsorted, 1=sorted, 2=foldcase/ -!_TAG_PROGRAM_AUTHOR Darren Hiebert /dhiebert@users.sourceforge.net/ -!_TAG_PROGRAM_NAME Exuberant Ctags // -!_TAG_PROGRAM_URL http://ctags.sourceforge.net /official site/ -!_TAG_PROGRAM_VERSION 5.9~svn20110310 // -Book_Server include/server.hpp /^class Book_Server : public QObject$/;" c -Book_Server src/server.cpp /^Book_Server::Book_Server(QObject *parent):QObject(parent),price_per_hour_(10000),state_(Ready),reciever(nullptr),started(false),$/;" f class:Book_Server -ConState include/server.hpp /^ enum ConState {$/;" g class:Book_Server -PosSource include/server.hpp /^ QGeoPositionInfoSource *PosSource;$/;" m class:Book_Server -Publishing include/server.hpp /^ Publishing = 0,$/;" e enum:Book_Server::ConState -Ready include/server.hpp /^ Ready$/;" e enum:Book_Server::ConState -books_ include/server.hpp /^ std::set books_;$/;" m class:Book_Server -checkFunds src/server.cpp /^void Book_Server::checkFunds(std::vector outs)$/;" f class:Book_Server -checkLPermission src/server.cpp /^void Book_Server::checkLPermission(void)$/;" f class:Book_Server -check_nft_to_open src/server.cpp /^void Book_Server::check_nft_to_open(Node_output node_out)$/;" f class:Book_Server -check_state_output src/server.cpp /^void Book_Server::check_state_output(const std::vector node_output_s)$/;" f class:Book_Server -clean_state src/server.cpp /^void Book_Server::clean_state(void)$/;" f class:Book_Server -deserialize_state src/server.cpp /^void Book_Server::deserialize_state(const QByteArray &state)$/;" f class:Book_Server -funds include/server.hpp /^ QJsonObject funds(void)const{return funds_json;}$/;" f class:Book_Server -funds_ include/server.hpp /^ quint64 funds_;$/;" m class:Book_Server -funds_json include/server.hpp /^ QJsonObject funds_json,minfunds_json;$/;" m class:Book_Server -get_publish_output src/server.cpp /^std::shared_ptr Book_Server::get_publish_output(const quint64 &amount)const$/;" f class:Book_Server -get_restart_state src/server.cpp /^void Book_Server::get_restart_state(void)$/;" f class:Book_Server -handle_init_funds src/server.cpp /^void Book_Server::handle_init_funds()$/;" f class:Book_Server -handle_new_book src/server.cpp /^void Book_Server::handle_new_book(Node_output node_out)$/;" f class:Book_Server -init src/server.cpp /^void Book_Server::init()$/;" f class:Book_Server -initGPS src/server.cpp /^void Book_Server::initGPS(void)$/;" f class:Book_Server -is_open include/server.hpp /^ bool is_open()const{return open;}$/;" f class:Book_Server -m_GeoCoord include/server.hpp /^ QGeoCoordinate m_GeoCoord;$/;" m class:Book_Server -m_rpi_server include/server.hpp /^ bool m_rpi_server;$/;" m class:Book_Server -main main.cpp /^int main(int argc, char *argv[])$/;" f -minfunds include/server.hpp /^ QJsonObject minfunds(void)const{return minfunds_json;}$/;" f class:Book_Server -minfunds_json include/server.hpp /^ QJsonObject funds_json,minfunds_json;$/;" m class:Book_Server -open include/server.hpp /^ bool open,started;$/;" m class:Book_Server -open_rpi_box src/server.cpp /^void Book_Server::open_rpi_box(void)$/;" f class:Book_Server -payments include/server.hpp /^ auto payments(void)const{return payments_;}$/;" f class:Book_Server -payments_ include/server.hpp /^ QJsonArray payments_;$/;" m class:Book_Server -price_per_hour_ include/server.hpp /^ quint64 price_per_hour_;$/;" m class:Book_Server -queue include/server.hpp /^ std::queue queue;$/;" m class:Book_Server -reciever include/server.hpp /^ QObject* reciever;$/;" m class:Book_Server -restart src/server.cpp /^void Book_Server::restart(void)$/;" f class:Book_Server -serialize_state src/server.cpp /^QByteArray Book_Server::serialize_state(void)const$/;" f class:Book_Server -serverId include/server.hpp /^ QString serverId(void)const{return serverId_;}$/;" f class:Book_Server -serverId_ include/server.hpp /^ QString serverId_;$/;" m class:Book_Server -setFunds src/server.cpp /^void Book_Server::setFunds(quint64 funds_m){$/;" f class:Book_Server -setOpen include/server.hpp /^ void setOpen(bool op){if(op!=open){open=op;emit openChanged();}}$/;" f class:Book_Server -setServerId include/server.hpp /^ void setServerId(QString ser){if(ser!=serverId_){serverId_=ser;emit serverIdChanged();}}$/;" f class:Book_Server -set_state include/server.hpp /^ void set_state(ConState state_m){if(state_m!=state_){state_=state_m;emit stateChanged(); }}$/;" f class:Book_Server -setminFunds src/server.cpp /^void Book_Server::setminFunds(quint64 funds_m){$/;" f class:Book_Server -started include/server.hpp /^ bool open,started;$/;" m class:Book_Server -state include/server.hpp /^ ConState state(void)const{return state_;}$/;" f class:Book_Server -state_ include/server.hpp /^ ConState state_;$/;" m class:Book_Server -total_funds include/server.hpp /^ QHash total_funds;$/;" m class:Book_Server -try_to_open src/server.cpp /^void Book_Server::try_to_open(void)$/;" f class:Book_Server diff --git a/wasm/Client/index.html b/wasm/Client/index.html index c771de0..b7bf20d 100644 --- a/wasm/Client/index.html +++ b/wasm/Client/index.html @@ -24,7 +24,7 @@
- +