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 0000000..6beb4dd Binary files /dev/null and b/Client/android/android_release.keystore differ diff --git a/Client/tags b/Client/tags deleted file mode 100644 index 26bd69c..0000000 --- a/Client/tags +++ /dev/null @@ -1,157 +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_Client include/bclient.hpp /^class Book_Client : public QObject$/;" c -Book_Client src/bclient.cpp /^Book_Client::Book_Client(QObject *parent):QObject(parent)$/;" f class:Book_Client -ConState include/bclient.hpp /^ enum ConState {$/;" g class:Server -Connected include/bclient.hpp /^ Connected$/;" e enum:Server::ConState -Disconnected include/bclient.hpp /^ Disconnected = 0,$/;" e enum:Server::ConState -QT_NAMESPACE build/.rcc/qrc_client_main_fonts.cpp /^namespace QT_NAMESPACE {$/;" n file: -QT_NAMESPACE build/.rcc/qrc_client_main_raw_qml_0.cpp /^namespace QT_NAMESPACE {$/;" n file: -QT_NAMESPACE build/.rcc/qrc_qmake_client.cpp /^namespace QT_NAMESPACE {$/;" n file: -QT_RCC_MANGLE_NAMESPACE build/.rcc/qrc_client_main_fonts.cpp 4750;" d file: -QT_RCC_MANGLE_NAMESPACE build/.rcc/qrc_client_main_fonts.cpp 4754;" d file: -QT_RCC_MANGLE_NAMESPACE build/.rcc/qrc_client_main_raw_qml_0.cpp 5109;" d file: -QT_RCC_MANGLE_NAMESPACE build/.rcc/qrc_client_main_raw_qml_0.cpp 5113;" d file: -QT_RCC_MANGLE_NAMESPACE build/.rcc/qrc_qmake_client.cpp 77;" d file: -QT_RCC_MANGLE_NAMESPACE build/.rcc/qrc_qmake_client.cpp 81;" d file: -QT_RCC_MANGLE_NAMESPACE0 build/.rcc/qrc_client_main_fonts.cpp 4747;" d file: -QT_RCC_MANGLE_NAMESPACE0 build/.rcc/qrc_client_main_raw_qml_0.cpp 5106;" d file: -QT_RCC_MANGLE_NAMESPACE0 build/.rcc/qrc_qmake_client.cpp 74;" d file: -QT_RCC_MANGLE_NAMESPACE1 build/.rcc/qrc_client_main_fonts.cpp 4748;" d file: -QT_RCC_MANGLE_NAMESPACE1 build/.rcc/qrc_client_main_raw_qml_0.cpp 5107;" d file: -QT_RCC_MANGLE_NAMESPACE1 build/.rcc/qrc_qmake_client.cpp 75;" d file: -QT_RCC_MANGLE_NAMESPACE2 build/.rcc/qrc_client_main_fonts.cpp 4749;" d file: -QT_RCC_MANGLE_NAMESPACE2 build/.rcc/qrc_client_main_raw_qml_0.cpp 5108;" d file: -QT_RCC_MANGLE_NAMESPACE2 build/.rcc/qrc_qmake_client.cpp 76;" d file: -QT_RCC_PREPEND_NAMESPACE build/.rcc/qrc_client_main_fonts.cpp 4746;" d file: -QT_RCC_PREPEND_NAMESPACE build/.rcc/qrc_client_main_fonts.cpp 4753;" d file: -QT_RCC_PREPEND_NAMESPACE build/.rcc/qrc_client_main_raw_qml_0.cpp 5105;" d file: -QT_RCC_PREPEND_NAMESPACE build/.rcc/qrc_client_main_raw_qml_0.cpp 5112;" d file: -QT_RCC_PREPEND_NAMESPACE build/.rcc/qrc_qmake_client.cpp 73;" d file: -QT_RCC_PREPEND_NAMESPACE build/.rcc/qrc_qmake_client.cpp 80;" d file: -QmlCacheGeneratedCode build/.rcc/qmlcache/client_main_qml/Enter_Pin_client_qml.cpp /^namespace QmlCacheGeneratedCode {$/;" n file: -QmlCacheGeneratedCode build/.rcc/qmlcache/client_main_qml/Head_qml.cpp /^namespace QmlCacheGeneratedCode {$/;" n file: -QmlCacheGeneratedCode build/.rcc/qmlcache/client_main_qml/LocalConf_qml.cpp /^namespace QmlCacheGeneratedCode {$/;" n file: -QmlCacheGeneratedCode build/.rcc/qmlcache/client_main_qml/MyMapView_qml.cpp /^namespace QmlCacheGeneratedCode {$/;" n file: -QmlCacheGeneratedCode build/.rcc/qmlcache/client_main_qml/window_qml.cpp /^namespace QmlCacheGeneratedCode {$/;" n file: -QmlCacheGeneratedCode build/.rcc/qmlcache/client_main_qmlcache_loader.cpp /^namespace QmlCacheGeneratedCode {$/;" n file: -QtLoader wasm/qtloader.js /^function QtLoader(config)$/;" f -Registry build/.rcc/qmlcache/client_main_qmlcache_loader.cpp /^Registry::Registry() {$/;" f class:__anon1::Registry -Registry build/.rcc/qmlcache/client_main_qmlcache_loader.cpp /^struct Registry {$/;" s namespace:__anon1 file: -Sending include/bclient.hpp /^ Sending,$/;" e enum:Server::ConState -Server include/bclient.hpp /^class Server : public QObject$/;" c -_QtLoader wasm/qtloader.js /^function _QtLoader(config)$/;" f -_esterVtech_0x2e_com_imports_client_qml_Enter_Pin_client_qml build/.rcc/qmlcache/client_main_qml/Enter_Pin_client_qml.cpp /^namespace _esterVtech_0x2e_com_imports_client_qml_Enter_Pin_client_qml {$/;" n namespace:QmlCacheGeneratedCode file: -_esterVtech_0x2e_com_imports_client_qml_Enter_Pin_client_qml build/.rcc/qmlcache/client_main_qmlcache_loader.cpp /^namespace _esterVtech_0x2e_com_imports_client_qml_Enter_Pin_client_qml { $/;" n namespace:QmlCacheGeneratedCode file: -_esterVtech_0x2e_com_imports_client_qml_Head_qml build/.rcc/qmlcache/client_main_qml/Head_qml.cpp /^namespace _esterVtech_0x2e_com_imports_client_qml_Head_qml {$/;" n namespace:QmlCacheGeneratedCode file: -_esterVtech_0x2e_com_imports_client_qml_Head_qml build/.rcc/qmlcache/client_main_qmlcache_loader.cpp /^namespace _esterVtech_0x2e_com_imports_client_qml_Head_qml { $/;" n namespace:QmlCacheGeneratedCode file: -_esterVtech_0x2e_com_imports_client_qml_LocalConf_qml build/.rcc/qmlcache/client_main_qml/LocalConf_qml.cpp /^namespace _esterVtech_0x2e_com_imports_client_qml_LocalConf_qml {$/;" n namespace:QmlCacheGeneratedCode file: -_esterVtech_0x2e_com_imports_client_qml_LocalConf_qml build/.rcc/qmlcache/client_main_qmlcache_loader.cpp /^namespace _esterVtech_0x2e_com_imports_client_qml_LocalConf_qml { $/;" n namespace:QmlCacheGeneratedCode file: -_esterVtech_0x2e_com_imports_client_qml_MyMapView_qml build/.rcc/qmlcache/client_main_qml/MyMapView_qml.cpp /^namespace _esterVtech_0x2e_com_imports_client_qml_MyMapView_qml {$/;" n namespace:QmlCacheGeneratedCode file: -_esterVtech_0x2e_com_imports_client_qml_window_qml build/.rcc/qmlcache/client_main_qml/window_qml.cpp /^namespace _esterVtech_0x2e_com_imports_client_qml_window_qml {$/;" n namespace:QmlCacheGeneratedCode file: -_esterVtech_0x2e_com_imports_client_qml_window_qml build/.rcc/qmlcache/client_main_qmlcache_loader.cpp /^namespace _esterVtech_0x2e_com_imports_client_qml_window_qml { $/;" n namespace:QmlCacheGeneratedCode file: -addCanvasElement wasm/qtloader.js /^ function addCanvasElement(element) {$/;" f -aotBuiltFunctions build/.rcc/qmlcache/client_main_qml/Enter_Pin_client_qml.cpp /^extern const QQmlPrivate::AOTCompiledFunction aotBuiltFunctions[] = {$/;" m namespace:QmlCacheGeneratedCode::_esterVtech_0x2e_com_imports_client_qml_Enter_Pin_client_qml file: -aotBuiltFunctions build/.rcc/qmlcache/client_main_qml/Head_qml.cpp /^extern const QQmlPrivate::AOTCompiledFunction aotBuiltFunctions[] = {$/;" m namespace:QmlCacheGeneratedCode::_esterVtech_0x2e_com_imports_client_qml_Head_qml file: -aotBuiltFunctions build/.rcc/qmlcache/client_main_qml/LocalConf_qml.cpp /^extern const QQmlPrivate::AOTCompiledFunction aotBuiltFunctions[] = { { 0, QMetaType::fromType(), {}, 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 @@
- +