From 5d82ecac0ce45485725cdfc5919f941a04ffc856 Mon Sep 17 00:00:00 2001 From: Ivan Shumkov Date: Wed, 30 Oct 2024 18:05:36 +0700 Subject: [PATCH 1/4] chore(release): update changelog and bump version to 1.5.0-rc.1 (#2291) --- CHANGELOG.md | 43 ++++++++++++++++ Cargo.lock | 50 +++++++++---------- package.json | 2 +- packages/bench-suite/package.json | 2 +- packages/check-features/Cargo.toml | 2 +- packages/dapi-grpc/Cargo.toml | 2 +- packages/dapi-grpc/package.json | 2 +- packages/dapi/package.json | 2 +- packages/dash-spv/package.json | 2 +- .../configs/getConfigFileMigrationsFactory.js | 3 ++ packages/dashmate/package.json | 2 +- packages/dashpay-contract/Cargo.toml | 2 +- packages/dashpay-contract/package.json | 2 +- packages/data-contracts/Cargo.toml | 2 +- packages/dpns-contract/Cargo.toml | 2 +- packages/dpns-contract/package.json | 2 +- packages/feature-flags-contract/Cargo.toml | 2 +- packages/feature-flags-contract/package.json | 2 +- packages/js-dapi-client/package.json | 2 +- packages/js-dash-sdk/package.json | 2 +- packages/js-grpc-common/package.json | 2 +- .../Cargo.toml | 2 +- .../package.json | 2 +- packages/platform-test-suite/package.json | 2 +- packages/rs-dapi-client/Cargo.toml | 2 +- packages/rs-dapi-grpc-macros/Cargo.toml | 2 +- packages/rs-dpp/Cargo.toml | 2 +- packages/rs-drive-abci/Cargo.toml | 2 +- packages/rs-drive-proof-verifier/Cargo.toml | 2 +- packages/rs-drive/Cargo.toml | 2 +- .../Cargo.toml | 2 +- .../Cargo.toml | 2 +- packages/rs-platform-serialization/Cargo.toml | 2 +- .../rs-platform-value-convertible/Cargo.toml | 2 +- packages/rs-platform-value/Cargo.toml | 2 +- packages/rs-platform-version/Cargo.toml | 2 +- packages/rs-platform-versioning/Cargo.toml | 2 +- packages/rs-sdk/Cargo.toml | 2 +- packages/simple-signer/Cargo.toml | 2 +- packages/strategy-tests/Cargo.toml | 2 +- packages/wallet-lib/package.json | 2 +- packages/wasm-dpp/Cargo.toml | 2 +- packages/wasm-dpp/package.json | 2 +- packages/withdrawals-contract/Cargo.toml | 2 +- packages/withdrawals-contract/package.json | 2 +- 45 files changed, 113 insertions(+), 67 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index f90a4979b3..cdd50af756 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,3 +1,46 @@ +## [1.5.0-rc.1](https://github.com/dashpay/platform/compare/v1.4.1...v1.5.0-rc.1) (2024-10-30) + + +### ⚠ BREAKING CHANGES + +* **sdk:** return consensus errors from broadcast methods (#2274) +* **sdk:** provide request execution information (#2259) +* **sdk:** wrong order of objects returned by Drive (#2207) + +### Features + +* **dashmate:** add protocol version to the status command ([#2255](https://github.com/dashpay/platform/issues/2255)) +* **sdk:** added transfer transition to rs-sdk ([#2289](https://github.com/dashpay/platform/issues/2289)) +* **sdk:** detect stale nodes ([#2254](https://github.com/dashpay/platform/issues/2254)) +* **sdk:** provide request execution information ([#2259](https://github.com/dashpay/platform/issues/2259)) +* **sdk:** return consensus errors from broadcast methods ([#2274](https://github.com/dashpay/platform/issues/2274)) +* **sdk:** sdk-level retry logic for `fetch` and `fetch_many` ([#2266](https://github.com/dashpay/platform/issues/2266)) + + +### Bug Fixes + +* **dapi:** invalid state transition failed with already in chain error ([#2270](https://github.com/dashpay/platform/issues/2270)) +* **dashmate:** invalid drive status check ([#2248](https://github.com/dashpay/platform/issues/2248)) +* **dashmate:** invalid platform version in the status command ([#2249](https://github.com/dashpay/platform/issues/2249)) +* document query start to support pagination ([#2284](https://github.com/dashpay/platform/issues/2284)) +* **sdk:** `AddressListError` is private ([#2278](https://github.com/dashpay/platform/issues/2278)) +* **sdk:** opposite retry trigger ([#2265](https://github.com/dashpay/platform/issues/2265)) +* **sdk:** wrong order of objects returned by Drive ([#2207](https://github.com/dashpay/platform/issues/2207)) +* seed nodes aren't responding ([#2276](https://github.com/dashpay/platform/issues/2276)) + + +### Miscellaneous Chores + +* add partial eq to document query ([#2253](https://github.com/dashpay/platform/issues/2253)) +* **dashmate:** report port check errors ([#2245](https://github.com/dashpay/platform/issues/2245)) +* move BLS Sigs import to Rust Dash Core ([#2252](https://github.com/dashpay/platform/issues/2252)) +* update to latest rust dash core with x11 optional ([#2251](https://github.com/dashpay/platform/issues/2251)) + + +### Code Refactoring + +* platform version refactoring into sub versions ([#2269](https://github.com/dashpay/platform/issues/2269)) + ### [1.4.1](https://github.com/dashpay/platform/compare/v1.4.0...v1.4.1) (2024-10-12) diff --git a/Cargo.lock b/Cargo.lock index 8f0f966db1..f88a4fcab4 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -676,7 +676,7 @@ checksum = "613afe47fcd5fac7ccf1db93babcb082c5994d996f20b8b159f2ad1658eb5724" [[package]] name = "check-features" -version = "1.4.1" +version = "1.5.0-rc.1" dependencies = [ "toml", ] @@ -1045,7 +1045,7 @@ dependencies = [ [[package]] name = "dapi-grpc" -version = "1.4.1" +version = "1.5.0-rc.1" dependencies = [ "dapi-grpc-macros", "futures-core", @@ -1061,7 +1061,7 @@ dependencies = [ [[package]] name = "dapi-grpc-macros" -version = "1.4.1" +version = "1.5.0-rc.1" dependencies = [ "dapi-grpc", "heck 0.5.0", @@ -1106,7 +1106,7 @@ dependencies = [ [[package]] name = "dash-sdk" -version = "1.4.1" +version = "1.5.0-rc.1" dependencies = [ "arc-swap", "async-trait", @@ -1212,7 +1212,7 @@ dependencies = [ [[package]] name = "dashpay-contract" -version = "1.4.1" +version = "1.5.0-rc.1" dependencies = [ "platform-value", "platform-version", @@ -1222,7 +1222,7 @@ dependencies = [ [[package]] name = "data-contracts" -version = "1.4.1" +version = "1.5.0-rc.1" dependencies = [ "dashpay-contract", "dpns-contract", @@ -1353,7 +1353,7 @@ checksum = "1435fa1053d8b2fbbe9be7e97eca7f33d37b28409959813daefc1446a14247f1" [[package]] name = "dpns-contract" -version = "1.4.1" +version = "1.5.0-rc.1" dependencies = [ "platform-value", "platform-version", @@ -1363,7 +1363,7 @@ dependencies = [ [[package]] name = "dpp" -version = "1.4.1" +version = "1.5.0-rc.1" dependencies = [ "anyhow", "assert_matches", @@ -1413,7 +1413,7 @@ dependencies = [ [[package]] name = "drive" -version = "1.4.1" +version = "1.5.0-rc.1" dependencies = [ "arc-swap", "assert_matches", @@ -1454,7 +1454,7 @@ dependencies = [ [[package]] name = "drive-abci" -version = "1.4.1" +version = "1.5.0-rc.1" dependencies = [ "arc-swap", "assert_matches", @@ -1508,7 +1508,7 @@ dependencies = [ [[package]] name = "drive-proof-verifier" -version = "1.4.1" +version = "1.5.0-rc.1" dependencies = [ "bincode", "dapi-grpc", @@ -1730,7 +1730,7 @@ checksum = "9fc0510504f03c51ada170672ac806f1f105a88aa97a5281117e1ddc3368e51a" [[package]] name = "feature-flags-contract" -version = "1.4.1" +version = "1.5.0-rc.1" dependencies = [ "platform-value", "platform-version", @@ -2595,7 +2595,7 @@ dependencies = [ [[package]] name = "json-schema-compatibility-validator" -version = "1.4.1" +version = "1.5.0-rc.1" dependencies = [ "assert_matches", "json-patch", @@ -2753,7 +2753,7 @@ dependencies = [ [[package]] name = "masternode-reward-shares-contract" -version = "1.4.1" +version = "1.5.0-rc.1" dependencies = [ "platform-value", "platform-version", @@ -3333,7 +3333,7 @@ checksum = "d231b230927b5e4ad203db57bbcbee2802f6bce620b1e4a9024a07d94e2907ec" [[package]] name = "platform-serialization" -version = "1.4.1" +version = "1.5.0-rc.1" dependencies = [ "bincode", "platform-version", @@ -3341,7 +3341,7 @@ dependencies = [ [[package]] name = "platform-serialization-derive" -version = "1.4.1" +version = "1.5.0-rc.1" dependencies = [ "proc-macro2", "quote", @@ -3351,7 +3351,7 @@ dependencies = [ [[package]] name = "platform-value" -version = "1.4.1" +version = "1.5.0-rc.1" dependencies = [ "base64 0.22.1", "bincode", @@ -3372,7 +3372,7 @@ dependencies = [ [[package]] name = "platform-value-convertible" -version = "1.4.1" +version = "1.5.0-rc.1" dependencies = [ "quote", "syn 2.0.75", @@ -3380,7 +3380,7 @@ dependencies = [ [[package]] name = "platform-version" -version = "1.4.1" +version = "1.5.0-rc.1" dependencies = [ "bincode", "grovedb-version", @@ -3391,7 +3391,7 @@ dependencies = [ [[package]] name = "platform-versioning" -version = "1.4.1" +version = "1.5.0-rc.1" dependencies = [ "proc-macro2", "quote", @@ -3877,7 +3877,7 @@ dependencies = [ [[package]] name = "rs-dapi-client" -version = "1.4.1" +version = "1.5.0-rc.1" dependencies = [ "backon", "chrono", @@ -4333,7 +4333,7 @@ checksum = "f27f6278552951f1f2b8cf9da965d10969b2efdea95a6ec47987ab46edfe263a" [[package]] name = "simple-signer" -version = "1.4.1" +version = "1.5.0-rc.1" dependencies = [ "base64 0.22.1", "bincode", @@ -4399,7 +4399,7 @@ dependencies = [ [[package]] name = "strategy-tests" -version = "1.4.1" +version = "1.5.0-rc.1" dependencies = [ "bincode", "dpp", @@ -5318,7 +5318,7 @@ checksum = "ed9d5b4305409d1fc9482fee2d7f9bcbf24b3972bf59817ef757e23982242a93" [[package]] name = "wasm-dpp" -version = "1.4.1" +version = "1.5.0-rc.1" dependencies = [ "anyhow", "async-trait", @@ -5620,7 +5620,7 @@ dependencies = [ [[package]] name = "withdrawals-contract" -version = "1.4.1" +version = "1.5.0-rc.1" dependencies = [ "num_enum 0.5.11", "platform-value", diff --git a/package.json b/package.json index c1a993ced1..922ed4e1fb 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "@dashevo/platform", - "version": "1.4.1", + "version": "1.5.0-rc.1", "private": true, "scripts": { "setup": "yarn install && yarn run build && yarn run configure", diff --git a/packages/bench-suite/package.json b/packages/bench-suite/package.json index 1e6befe213..c852ab77a3 100644 --- a/packages/bench-suite/package.json +++ b/packages/bench-suite/package.json @@ -1,7 +1,7 @@ { "name": "@dashevo/bench-suite", "private": true, - "version": "1.4.1", + "version": "1.5.0-rc.1", "description": "Dash Platform benchmark tool", "scripts": { "bench": "node ./bin/bench.js", diff --git a/packages/check-features/Cargo.toml b/packages/check-features/Cargo.toml index de43293845..c838ae9295 100644 --- a/packages/check-features/Cargo.toml +++ b/packages/check-features/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "check-features" -version = "1.4.1" +version = "1.5.0-rc.1" edition = "2021" # See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html diff --git a/packages/dapi-grpc/Cargo.toml b/packages/dapi-grpc/Cargo.toml index 14aa3139be..be3b39b848 100644 --- a/packages/dapi-grpc/Cargo.toml +++ b/packages/dapi-grpc/Cargo.toml @@ -1,7 +1,7 @@ [package] name = "dapi-grpc" description = "GRPC client for Dash Platform" -version = "1.4.1" +version = "1.5.0-rc.1" authors = [ "Samuel Westrich ", "Igor Markin ", diff --git a/packages/dapi-grpc/package.json b/packages/dapi-grpc/package.json index 2fd2bf508a..b1bbf0d65d 100644 --- a/packages/dapi-grpc/package.json +++ b/packages/dapi-grpc/package.json @@ -1,6 +1,6 @@ { "name": "@dashevo/dapi-grpc", - "version": "1.4.1", + "version": "1.5.0-rc.1", "description": "DAPI GRPC definition file and generated clients", "browser": "browser.js", "main": "node.js", diff --git a/packages/dapi/package.json b/packages/dapi/package.json index a6f52bdc50..fa58af27d9 100644 --- a/packages/dapi/package.json +++ b/packages/dapi/package.json @@ -1,7 +1,7 @@ { "name": "@dashevo/dapi", "private": true, - "version": "1.4.1", + "version": "1.5.0-rc.1", "description": "A decentralized API for the Dash network", "scripts": { "api": "node scripts/api.js", diff --git a/packages/dash-spv/package.json b/packages/dash-spv/package.json index de71743fa0..3ce1b85e8e 100644 --- a/packages/dash-spv/package.json +++ b/packages/dash-spv/package.json @@ -1,6 +1,6 @@ { "name": "@dashevo/dash-spv", - "version": "2.4.1", + "version": "2.5.0-rc.1", "description": "Repository containing SPV functions used by @dashevo", "main": "index.js", "scripts": { diff --git a/packages/dashmate/configs/getConfigFileMigrationsFactory.js b/packages/dashmate/configs/getConfigFileMigrationsFactory.js index 862f3abee3..3e503e3124 100644 --- a/packages/dashmate/configs/getConfigFileMigrationsFactory.js +++ b/packages/dashmate/configs/getConfigFileMigrationsFactory.js @@ -1029,6 +1029,9 @@ export default function getConfigFileMigrationsFactory(homeDir, defaultConfigs) if (options.network === NETWORK_TESTNET && name !== 'base') { options.platform.drive.tenderdash.p2p.seeds = testnet.get('platform.drive.tenderdash.p2p.seeds'); } + + options.platform.drive.abci.docker.image = 'dashpay/drive:1-rc'; + options.platform.dapi.api.docker.image = 'dashpay/dapi:1-rc'; }); return configFile; }, diff --git a/packages/dashmate/package.json b/packages/dashmate/package.json index 6620a2fc3f..e665842008 100644 --- a/packages/dashmate/package.json +++ b/packages/dashmate/package.json @@ -1,6 +1,6 @@ { "name": "dashmate", - "version": "1.4.1", + "version": "1.5.0-rc.1", "description": "Distribution package for Dash node installation", "scripts": { "lint": "eslint .", diff --git a/packages/dashpay-contract/Cargo.toml b/packages/dashpay-contract/Cargo.toml index 35a591d48c..fe77dd7902 100644 --- a/packages/dashpay-contract/Cargo.toml +++ b/packages/dashpay-contract/Cargo.toml @@ -1,7 +1,7 @@ [package] name = "dashpay-contract" description = "DashPay data contract schema and tools" -version = "1.4.1" +version = "1.5.0-rc.1" edition = "2021" rust-version.workspace = true license = "MIT" diff --git a/packages/dashpay-contract/package.json b/packages/dashpay-contract/package.json index 74bdc33f77..f75f2bd096 100644 --- a/packages/dashpay-contract/package.json +++ b/packages/dashpay-contract/package.json @@ -1,6 +1,6 @@ { "name": "@dashevo/dashpay-contract", - "version": "1.4.1", + "version": "1.5.0-rc.1", "description": "Reference contract of the DashPay DPA on Dash Evolution", "scripts": { "lint": "eslint .", diff --git a/packages/data-contracts/Cargo.toml b/packages/data-contracts/Cargo.toml index 21b309f881..af8b3a30d0 100644 --- a/packages/data-contracts/Cargo.toml +++ b/packages/data-contracts/Cargo.toml @@ -1,7 +1,7 @@ [package] name = "data-contracts" description = "Dash Platform system data contracts" -version = "1.4.1" +version = "1.5.0-rc.1" edition = "2021" rust-version.workspace = true license = "MIT" diff --git a/packages/dpns-contract/Cargo.toml b/packages/dpns-contract/Cargo.toml index 0841354e40..6dd1403245 100644 --- a/packages/dpns-contract/Cargo.toml +++ b/packages/dpns-contract/Cargo.toml @@ -1,7 +1,7 @@ [package] name = "dpns-contract" description = "DPNS data contract schema and tools" -version = "1.4.1" +version = "1.5.0-rc.1" edition = "2021" rust-version.workspace = true license = "MIT" diff --git a/packages/dpns-contract/package.json b/packages/dpns-contract/package.json index 98701984c1..192af93cbd 100644 --- a/packages/dpns-contract/package.json +++ b/packages/dpns-contract/package.json @@ -1,6 +1,6 @@ { "name": "@dashevo/dpns-contract", - "version": "1.4.1", + "version": "1.5.0-rc.1", "description": "A contract and helper scripts for DPNS DApp", "scripts": { "lint": "eslint .", diff --git a/packages/feature-flags-contract/Cargo.toml b/packages/feature-flags-contract/Cargo.toml index 0a52c83f22..2dcd36de3a 100644 --- a/packages/feature-flags-contract/Cargo.toml +++ b/packages/feature-flags-contract/Cargo.toml @@ -1,7 +1,7 @@ [package] name = "feature-flags-contract" description = "Feature flags data contract schema and tools" -version = "1.4.1" +version = "1.5.0-rc.1" edition = "2021" rust-version.workspace = true license = "MIT" diff --git a/packages/feature-flags-contract/package.json b/packages/feature-flags-contract/package.json index 2c46c68e82..9f7016dc7f 100644 --- a/packages/feature-flags-contract/package.json +++ b/packages/feature-flags-contract/package.json @@ -1,6 +1,6 @@ { "name": "@dashevo/feature-flags-contract", - "version": "1.4.1", + "version": "1.5.0-rc.1", "description": "Data Contract to store Dash Platform feature flags", "scripts": { "build": "", diff --git a/packages/js-dapi-client/package.json b/packages/js-dapi-client/package.json index a3d72af982..6477a3a3d7 100644 --- a/packages/js-dapi-client/package.json +++ b/packages/js-dapi-client/package.json @@ -1,6 +1,6 @@ { "name": "@dashevo/dapi-client", - "version": "1.4.1", + "version": "1.5.0-rc.1", "description": "Client library used to access Dash DAPI endpoints", "main": "lib/index.js", "contributors": [ diff --git a/packages/js-dash-sdk/package.json b/packages/js-dash-sdk/package.json index 5f232ba903..48ef281b2b 100644 --- a/packages/js-dash-sdk/package.json +++ b/packages/js-dash-sdk/package.json @@ -1,6 +1,6 @@ { "name": "dash", - "version": "4.4.1", + "version": "4.5.0-rc.1", "description": "Dash library for JavaScript/TypeScript ecosystem (Wallet, DAPI, Primitives, BLS, ...)", "main": "build/index.js", "unpkg": "dist/dash.min.js", diff --git a/packages/js-grpc-common/package.json b/packages/js-grpc-common/package.json index ee51714414..8c4a817245 100644 --- a/packages/js-grpc-common/package.json +++ b/packages/js-grpc-common/package.json @@ -1,6 +1,6 @@ { "name": "@dashevo/grpc-common", - "version": "1.4.1", + "version": "1.5.0-rc.1", "description": "Common GRPC library", "main": "index.js", "scripts": { diff --git a/packages/masternode-reward-shares-contract/Cargo.toml b/packages/masternode-reward-shares-contract/Cargo.toml index e7b8c4a298..042f3d5019 100644 --- a/packages/masternode-reward-shares-contract/Cargo.toml +++ b/packages/masternode-reward-shares-contract/Cargo.toml @@ -1,7 +1,7 @@ [package] name = "masternode-reward-shares-contract" description = "Masternode reward shares data contract schema and tools" -version = "1.4.1" +version = "1.5.0-rc.1" edition = "2021" rust-version.workspace = true license = "MIT" diff --git a/packages/masternode-reward-shares-contract/package.json b/packages/masternode-reward-shares-contract/package.json index 8682f46915..ed3c4e3d9d 100644 --- a/packages/masternode-reward-shares-contract/package.json +++ b/packages/masternode-reward-shares-contract/package.json @@ -1,6 +1,6 @@ { "name": "@dashevo/masternode-reward-shares-contract", - "version": "1.4.1", + "version": "1.5.0-rc.1", "description": "A contract and helper scripts for reward sharing", "scripts": { "lint": "eslint .", diff --git a/packages/platform-test-suite/package.json b/packages/platform-test-suite/package.json index 8655c8deac..bb92b21b78 100644 --- a/packages/platform-test-suite/package.json +++ b/packages/platform-test-suite/package.json @@ -1,7 +1,7 @@ { "name": "@dashevo/platform-test-suite", "private": true, - "version": "1.4.1", + "version": "1.5.0-rc.1", "description": "Dash Network end-to-end tests", "scripts": { "test": "yarn exec bin/test.sh", diff --git a/packages/rs-dapi-client/Cargo.toml b/packages/rs-dapi-client/Cargo.toml index e8ffd41a9c..5591f7610d 100644 --- a/packages/rs-dapi-client/Cargo.toml +++ b/packages/rs-dapi-client/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "rs-dapi-client" -version = "1.4.1" +version = "1.5.0-rc.1" edition = "2021" [features] diff --git a/packages/rs-dapi-grpc-macros/Cargo.toml b/packages/rs-dapi-grpc-macros/Cargo.toml index 8df0883193..7cb8cc73d3 100644 --- a/packages/rs-dapi-grpc-macros/Cargo.toml +++ b/packages/rs-dapi-grpc-macros/Cargo.toml @@ -1,7 +1,7 @@ [package] name = "dapi-grpc-macros" -version = "1.4.1" +version = "1.5.0-rc.1" edition = "2021" description = "Macros used by dapi-grpc. Internal use only." diff --git a/packages/rs-dpp/Cargo.toml b/packages/rs-dpp/Cargo.toml index 591a86701d..5f66794e38 100644 --- a/packages/rs-dpp/Cargo.toml +++ b/packages/rs-dpp/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "dpp" -version = "1.4.1" +version = "1.5.0-rc.1" edition = "2021" rust-version.workspace = true authors = [ diff --git a/packages/rs-drive-abci/Cargo.toml b/packages/rs-drive-abci/Cargo.toml index 7e8346fe95..892457b17c 100644 --- a/packages/rs-drive-abci/Cargo.toml +++ b/packages/rs-drive-abci/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "drive-abci" -version = "1.4.1" +version = "1.5.0-rc.1" authors = [ "Samuel Westrich ", "Ivan Shumkov ", diff --git a/packages/rs-drive-proof-verifier/Cargo.toml b/packages/rs-drive-proof-verifier/Cargo.toml index f46f844629..81fe019cc8 100644 --- a/packages/rs-drive-proof-verifier/Cargo.toml +++ b/packages/rs-drive-proof-verifier/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "drive-proof-verifier" -version = "1.4.1" +version = "1.5.0-rc.1" edition = "2021" rust-version.workspace = true diff --git a/packages/rs-drive/Cargo.toml b/packages/rs-drive/Cargo.toml index ef9f1c4570..2db16fe0c9 100644 --- a/packages/rs-drive/Cargo.toml +++ b/packages/rs-drive/Cargo.toml @@ -1,7 +1,7 @@ [package] name = "drive" description = "Dash drive built on top of GroveDB" -version = "1.4.1" +version = "1.5.0-rc.1" authors = [ "Samuel Westrich ", "Ivan Shumkov ", diff --git a/packages/rs-json-schema-compatibility-validator/Cargo.toml b/packages/rs-json-schema-compatibility-validator/Cargo.toml index 1bf215ed99..5add650213 100644 --- a/packages/rs-json-schema-compatibility-validator/Cargo.toml +++ b/packages/rs-json-schema-compatibility-validator/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "json-schema-compatibility-validator" -version = "1.4.1" +version = "1.5.0-rc.1" edition = "2021" rust-version.workspace = true authors = ["Ivan Shumkov "] diff --git a/packages/rs-platform-serialization-derive/Cargo.toml b/packages/rs-platform-serialization-derive/Cargo.toml index 7f8296f4b4..8141f4d7f7 100644 --- a/packages/rs-platform-serialization-derive/Cargo.toml +++ b/packages/rs-platform-serialization-derive/Cargo.toml @@ -2,7 +2,7 @@ name = "platform-serialization-derive" authors = ["Samuel Westrich "] description = "Bincode serialization and deserialization derivations" -version = "1.4.1" +version = "1.5.0-rc.1" edition = "2021" rust-version.workspace = true license = "MIT" diff --git a/packages/rs-platform-serialization/Cargo.toml b/packages/rs-platform-serialization/Cargo.toml index b6c39cd79d..62c812b2ce 100644 --- a/packages/rs-platform-serialization/Cargo.toml +++ b/packages/rs-platform-serialization/Cargo.toml @@ -2,7 +2,7 @@ name = "platform-serialization" authors = ["Samuel Westrich "] description = "Bincode based serialization and deserialization" -version = "1.4.1" +version = "1.5.0-rc.1" edition = "2021" rust-version.workspace = true license = "MIT" diff --git a/packages/rs-platform-value-convertible/Cargo.toml b/packages/rs-platform-value-convertible/Cargo.toml index ad17e9d567..25e5a0e8d8 100644 --- a/packages/rs-platform-value-convertible/Cargo.toml +++ b/packages/rs-platform-value-convertible/Cargo.toml @@ -2,7 +2,7 @@ name = "platform-value-convertible" authors = ["Samuel Westrich "] description = "Convertion to and from platform values" -version = "1.4.1" +version = "1.5.0-rc.1" edition = "2021" rust-version.workspace = true license = "MIT" diff --git a/packages/rs-platform-value/Cargo.toml b/packages/rs-platform-value/Cargo.toml index 15a35ffb22..6ce24dc659 100644 --- a/packages/rs-platform-value/Cargo.toml +++ b/packages/rs-platform-value/Cargo.toml @@ -2,7 +2,7 @@ name = "platform-value" authors = ["Samuel Westrich "] description = "A simple value module" -version = "1.4.1" +version = "1.5.0-rc.1" edition = "2021" rust-version.workspace = true license = "MIT" diff --git a/packages/rs-platform-version/Cargo.toml b/packages/rs-platform-version/Cargo.toml index 4113302c47..904b398f7f 100644 --- a/packages/rs-platform-version/Cargo.toml +++ b/packages/rs-platform-version/Cargo.toml @@ -2,7 +2,7 @@ name = "platform-version" authors = ["Samuel Westrich "] description = "Versioning library for Platform" -version = "1.4.1" +version = "1.5.0-rc.1" edition = "2021" rust-version.workspace = true license = "MIT" diff --git a/packages/rs-platform-versioning/Cargo.toml b/packages/rs-platform-versioning/Cargo.toml index 69916cbdee..f2d15da3b6 100644 --- a/packages/rs-platform-versioning/Cargo.toml +++ b/packages/rs-platform-versioning/Cargo.toml @@ -2,7 +2,7 @@ name = "platform-versioning" authors = ["Samuel Westrich "] description = "Version derivation" -version = "1.4.1" +version = "1.5.0-rc.1" edition = "2021" rust-version.workspace = true license = "MIT" diff --git a/packages/rs-sdk/Cargo.toml b/packages/rs-sdk/Cargo.toml index cbb5e7fe93..ba1f021ecd 100644 --- a/packages/rs-sdk/Cargo.toml +++ b/packages/rs-sdk/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "dash-sdk" -version = "1.4.1" +version = "1.5.0-rc.1" edition = "2021" [dependencies] diff --git a/packages/simple-signer/Cargo.toml b/packages/simple-signer/Cargo.toml index 12bb07870d..f9e29d35b4 100644 --- a/packages/simple-signer/Cargo.toml +++ b/packages/simple-signer/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "simple-signer" -version = "1.4.1" +version = "1.5.0-rc.1" edition = "2021" rust-version.workspace = true diff --git a/packages/strategy-tests/Cargo.toml b/packages/strategy-tests/Cargo.toml index 437d73457c..6b45b6d958 100644 --- a/packages/strategy-tests/Cargo.toml +++ b/packages/strategy-tests/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "strategy-tests" -version = "1.4.1" +version = "1.5.0-rc.1" authors = [ "Samuel Westrich ", "Ivan Shumkov ", diff --git a/packages/wallet-lib/package.json b/packages/wallet-lib/package.json index 9536e860ec..7ef4d54e99 100644 --- a/packages/wallet-lib/package.json +++ b/packages/wallet-lib/package.json @@ -1,6 +1,6 @@ { "name": "@dashevo/wallet-lib", - "version": "8.4.1", + "version": "8.5.0-rc.1", "description": "Light wallet library for Dash", "main": "src/index.js", "unpkg": "dist/wallet-lib.min.js", diff --git a/packages/wasm-dpp/Cargo.toml b/packages/wasm-dpp/Cargo.toml index e9bc972494..902d46b986 100644 --- a/packages/wasm-dpp/Cargo.toml +++ b/packages/wasm-dpp/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "wasm-dpp" -version = "1.4.1" +version = "1.5.0-rc.1" edition = "2021" rust-version.workspace = true authors = ["Anton Suprunchuk "] diff --git a/packages/wasm-dpp/package.json b/packages/wasm-dpp/package.json index 7821b424df..282458b0ba 100644 --- a/packages/wasm-dpp/package.json +++ b/packages/wasm-dpp/package.json @@ -1,6 +1,6 @@ { "name": "@dashevo/wasm-dpp", - "version": "1.4.1", + "version": "1.5.0-rc.1", "description": "The JavaScript implementation of the Dash Platform Protocol", "main": "dist/index.js", "types": "dist/index.d.ts", diff --git a/packages/withdrawals-contract/Cargo.toml b/packages/withdrawals-contract/Cargo.toml index 3f776fd03c..9b24e5390c 100644 --- a/packages/withdrawals-contract/Cargo.toml +++ b/packages/withdrawals-contract/Cargo.toml @@ -1,7 +1,7 @@ [package] name = "withdrawals-contract" description = "Witdrawals data contract schema and tools" -version = "1.4.1" +version = "1.5.0-rc.1" edition = "2021" rust-version.workspace = true license = "MIT" diff --git a/packages/withdrawals-contract/package.json b/packages/withdrawals-contract/package.json index 89cfc8ebd1..60f5570b15 100644 --- a/packages/withdrawals-contract/package.json +++ b/packages/withdrawals-contract/package.json @@ -1,6 +1,6 @@ { "name": "@dashevo/withdrawals-contract", - "version": "1.4.1", + "version": "1.5.0-rc.1", "description": "Data Contract to manipulate and track withdrawals", "scripts": { "build": "", From 453b30c55cda49539ed9b3a8a8924d810b0cc9a6 Mon Sep 17 00:00:00 2001 From: Ivan Shumkov Date: Thu, 31 Oct 2024 22:43:25 +0700 Subject: [PATCH 2/4] fix(dashmate): zero ssl certificate draft not saved (#2297) --- .../ssl/zerossl/obtainZeroSSLCertificateTaskFactory.js | 7 +++++++ .../src/ssl/zerossl/validateZeroSslCertificateFactory.js | 8 ++++---- 2 files changed, 11 insertions(+), 4 deletions(-) diff --git a/packages/dashmate/src/listr/tasks/ssl/zerossl/obtainZeroSSLCertificateTaskFactory.js b/packages/dashmate/src/listr/tasks/ssl/zerossl/obtainZeroSSLCertificateTaskFactory.js index ca679233d0..76aed5e6fc 100644 --- a/packages/dashmate/src/listr/tasks/ssl/zerossl/obtainZeroSSLCertificateTaskFactory.js +++ b/packages/dashmate/src/listr/tasks/ssl/zerossl/obtainZeroSSLCertificateTaskFactory.js @@ -18,6 +18,8 @@ import { ERRORS } from '../../../../ssl/zerossl/validateZeroSslCertificateFactor * @param {VerificationServer} verificationServer * @param {HomeDir} homeDir * @param {validateZeroSslCertificate} validateZeroSslCertificate + * @param {ConfigFileJsonRepository} configFileRepository + * @param {ConfigFile} configFile * @return {obtainZeroSSLCertificateTask} */ export default function obtainZeroSSLCertificateTaskFactory( @@ -32,6 +34,8 @@ export default function obtainZeroSSLCertificateTaskFactory( verificationServer, homeDir, validateZeroSslCertificate, + configFileRepository, + configFile, ) { /** * @typedef {obtainZeroSSLCertificateTask} @@ -141,6 +145,9 @@ export default function obtainZeroSSLCertificateTaskFactory( config.set('platform.gateway.ssl.enabled', true); config.set('platform.gateway.ssl.provider', 'zerossl'); config.set('platform.gateway.ssl.providerConfigs.zerossl.id', ctx.certificate.id); + + // Save config file + configFileRepository.write(configFile); }, }, { diff --git a/packages/dashmate/src/ssl/zerossl/validateZeroSslCertificateFactory.js b/packages/dashmate/src/ssl/zerossl/validateZeroSslCertificateFactory.js index 20b221216c..53f3da5b56 100644 --- a/packages/dashmate/src/ssl/zerossl/validateZeroSslCertificateFactory.js +++ b/packages/dashmate/src/ssl/zerossl/validateZeroSslCertificateFactory.js @@ -104,10 +104,7 @@ export default function validateZeroSslCertificateFactory(homeDir, getCertificat } if (['pending_validation', 'draft'].includes(data.certificate.status)) { - // Certificate is already created, so we just need to pass validation - // and download certificate file - - // We need to download new certificate bundle + // We need to validate and download new certificate bundle data.isBundleFilePresent = false; return { @@ -116,6 +113,9 @@ export default function validateZeroSslCertificateFactory(homeDir, getCertificat }; } + // Certificate is already created at this point, so we just need to pass validation + // and download certificate file + if (data.certificate.status !== 'issued' || data.isExpiresSoon) { // Certificate is going to expire soon, or current certificate is not valid // we need to obtain a new one From d1ba61d4734c5c5e666318f35941b9782e6583eb Mon Sep 17 00:00:00 2001 From: Ivan Shumkov Date: Fri, 1 Nov 2024 01:10:58 +0700 Subject: [PATCH 3/4] fix(dashmate): cleanup zerossl certs command (#2298) --- packages/dashmate/src/commands/ssl/cleanup.js | 58 +++++++++++ packages/dashmate/src/commands/ssl/obtain.js | 2 +- packages/dashmate/src/createDIContainer.js | 5 + .../scheduleRenewZeroSslCertificateFactory.js | 2 +- .../cleanupZeroSSLCertificatesTaskFactory.js | 98 +++++++++++++++++++ .../obtainZeroSSLCertificateTaskFactory.js | 4 +- .../src/ssl/zerossl/cancelCertificate.js | 2 +- .../src/ssl/zerossl/listCertificates.js | 10 +- 8 files changed, 174 insertions(+), 7 deletions(-) create mode 100644 packages/dashmate/src/commands/ssl/cleanup.js create mode 100644 packages/dashmate/src/listr/tasks/ssl/zerossl/cleanupZeroSSLCertificatesTaskFactory.js diff --git a/packages/dashmate/src/commands/ssl/cleanup.js b/packages/dashmate/src/commands/ssl/cleanup.js new file mode 100644 index 0000000000..eaef76cf49 --- /dev/null +++ b/packages/dashmate/src/commands/ssl/cleanup.js @@ -0,0 +1,58 @@ +import { Listr } from 'listr2'; +import { Flags } from '@oclif/core'; +import ConfigBaseCommand from '../../oclif/command/ConfigBaseCommand.js'; +import MuteOneLineError from '../../oclif/errors/MuteOneLineError.js'; + +export default class CleanupCommand extends ConfigBaseCommand { + static description = `Cleanup Zero SSL certificate + +Cancel all drafted or pending validation certificates on ZeroSSL +`; + + static flags = { + ...ConfigBaseCommand.flags, + verbose: Flags.boolean({ char: 'v', description: 'use verbose mode for output', default: false }), + }; + + /** + * @param {Object} args + * @param {Object} flags + * @param {boolean} flags.verbose + * @param {Config} config + * @param {cleanupZeroSSLCertificatesTask} cleanupZeroSSLCertificatesTask + * @return {Promise} + */ + async runWithDependencies( + args, + { + verbose: isVerbose, + }, + config, + cleanupZeroSSLCertificatesTask, + ) { + const tasks = new Listr( + [ + { + title: 'Cleanup ZeroSSL certificate', + task: () => cleanupZeroSSLCertificatesTask(config), + }, + ], + { + renderer: isVerbose ? 'verbose' : 'default', + rendererOptions: { + showTimer: isVerbose, + clearOutput: false, + collapse: false, + showSubtasks: true, + removeEmptyLines: false, + }, + }, + ); + + try { + await tasks.run(); + } catch (e) { + throw new MuteOneLineError(e); + } + } +} diff --git a/packages/dashmate/src/commands/ssl/obtain.js b/packages/dashmate/src/commands/ssl/obtain.js index cc39f1a47a..4dbfcd3561 100644 --- a/packages/dashmate/src/commands/ssl/obtain.js +++ b/packages/dashmate/src/commands/ssl/obtain.js @@ -45,7 +45,7 @@ Certificate will be renewed if it is about to expire (see 'expiration-days' flag [ { title: 'Obtain ZeroSSL certificate', - task: async () => obtainZeroSSLCertificateTask(config), + task: () => obtainZeroSSLCertificateTask(config), }, ], { diff --git a/packages/dashmate/src/createDIContainer.js b/packages/dashmate/src/createDIContainer.js index 9f3b861623..3b2e657d2b 100644 --- a/packages/dashmate/src/createDIContainer.js +++ b/packages/dashmate/src/createDIContainer.js @@ -23,6 +23,9 @@ import analyseSystemResourcesFactory from './doctor/analyse/analyseSystemResourc import analyseSamplesFactory from './doctor/analyseSamplesFactory.js'; import archiveSamples from './doctor/archiveSamples.js'; import unarchiveSamplesFactory from './doctor/unarchiveSamplesFactory.js'; +import cleanupZeroSSLCertificatesTaskFactory + from './listr/tasks/ssl/zerossl/cleanupZeroSSLCertificatesTaskFactory.js'; +import cancelCertificate from './ssl/zerossl/cancelCertificate.js'; import renderTemplateFactory from './templates/renderTemplateFactory.js'; import renderServiceTemplatesFactory from './templates/renderServiceTemplatesFactory.js'; @@ -206,6 +209,7 @@ export default async function createDIContainer(options = {}) { downloadCertificate: asValue(downloadCertificate), getCertificate: asValue(getCertificate), listCertificates: asValue(listCertificates), + cancelCertificate: asValue(cancelCertificate), createSelfSignedCertificate: asValue(createSelfSignedCertificate), verificationServer: asClass(VerificationServer).singleton(), }); @@ -299,6 +303,7 @@ export default async function createDIContainer(options = {}) { enableCoreQuorumsTask: asFunction(enableCoreQuorumsTaskFactory).singleton(), registerMasternodeGuideTask: asFunction(registerMasternodeGuideTaskFactory).singleton(), obtainZeroSSLCertificateTask: asFunction(obtainZeroSSLCertificateTaskFactory).singleton(), + cleanupZeroSSLCertificatesTask: asFunction(cleanupZeroSSLCertificatesTaskFactory).singleton(), obtainSelfSignedCertificateTask: asFunction(obtainSelfSignedCertificateTaskFactory).singleton(), saveCertificateTask: asFunction(saveCertificateTaskFactory), reindexNodeTask: asFunction(reindexNodeTaskFactory).singleton(), diff --git a/packages/dashmate/src/helper/scheduleRenewZeroSslCertificateFactory.js b/packages/dashmate/src/helper/scheduleRenewZeroSslCertificateFactory.js index c403c2bef3..8d741511dd 100644 --- a/packages/dashmate/src/helper/scheduleRenewZeroSslCertificateFactory.js +++ b/packages/dashmate/src/helper/scheduleRenewZeroSslCertificateFactory.js @@ -51,7 +51,7 @@ export default function scheduleRenewZeroSslCertificateFactory( } const job = new CronJob(expiresAt, async () => { - const tasks = await obtainZeroSSLCertificateTask(config); + const tasks = obtainZeroSSLCertificateTask(config); await tasks.run({ expirationDays: Certificate.EXPIRATION_LIMIT_DAYS, diff --git a/packages/dashmate/src/listr/tasks/ssl/zerossl/cleanupZeroSSLCertificatesTaskFactory.js b/packages/dashmate/src/listr/tasks/ssl/zerossl/cleanupZeroSSLCertificatesTaskFactory.js new file mode 100644 index 0000000000..f38d62562d --- /dev/null +++ b/packages/dashmate/src/listr/tasks/ssl/zerossl/cleanupZeroSSLCertificatesTaskFactory.js @@ -0,0 +1,98 @@ +import chalk from 'chalk'; +import { Listr } from 'listr2'; +import { Observable } from 'rxjs'; +import wait from '../../../../util/wait.js'; + +/** + * @param {listCertificates} listCertificates + * @param {cancelCertificate} cancelCertificate + * @return {cleanupZeroSSLCertificatesTask} + */ +export default function cleanupZeroSSLCertificatesTaskFactory( + listCertificates, + cancelCertificate, +) { + /** + * @typedef {cleanupZeroSSLCertificatesTask} + * @param {Config} config + * @return {Listr} + */ + function cleanupZeroSSLCertificatesTask(config) { + const apiKey = config.get('platform.gateway.ssl.providerConfigs.zerossl.apiKey', true); + + return new Listr([ + { + title: 'Collect drafted and pending validation certificates', + // Skips the check if force flag is set + task: async (ctx, task) => { + ctx.certificates = []; + + let certificatesPerRequest = []; + let page = 1; + + // Fetch all certificates in draft or pending validation status + // with pagination + do { + certificatesPerRequest = await listCertificates(apiKey, ['draft', 'pending_validation'], page); + + ctx.certificates = ctx.certificates.concat(certificatesPerRequest); + + page += 1; + + // eslint-disable-next-line no-param-reassign + task.output = `Found ${ctx.certificates.length} certificates`; + } while (certificatesPerRequest.length === 1000); + + ctx.total = ctx.certificates.length; + }, + }, + { + title: 'Cancel certificates', + skip: (ctx) => ctx.certificates.length === 0, + task: async (ctx, task) => { + // eslint-disable-next-line no-param-reassign + task.title = `Cancel ${ctx.certificates.length} certificates`; + ctx.canceled = 0; + ctx.errored = 0; + return new Observable(async (observer) => { + for (const certificate of ctx.certificates) { + try { + await cancelCertificate(apiKey, certificate.id); + + ctx.canceled += 1; + } catch (e) { + ctx.errored += 1; + + if (process.env.DEBUG) { + // eslint-disable-next-line no-console + console.warn(e); + } + } + + observer.next(chalk`{green ${ctx.canceled}} / {red ${ctx.errored}} / ${ctx.total}`); + + await wait(100); + } + + if (ctx.errored > 0) { + observer.error(new Error('Some certificates were not canceled. Please try again.')); + } else { + observer.complete(); + } + + return this; + }); + }, + options: { + persistentOutput: true, + }, + }, + ], { + rendererOptions: { + showErrorMessage: true, + }, + }); + } + + return cleanupZeroSSLCertificatesTask; +} diff --git a/packages/dashmate/src/listr/tasks/ssl/zerossl/obtainZeroSSLCertificateTaskFactory.js b/packages/dashmate/src/listr/tasks/ssl/zerossl/obtainZeroSSLCertificateTaskFactory.js index 76aed5e6fc..71d7b7809b 100644 --- a/packages/dashmate/src/listr/tasks/ssl/zerossl/obtainZeroSSLCertificateTaskFactory.js +++ b/packages/dashmate/src/listr/tasks/ssl/zerossl/obtainZeroSSLCertificateTaskFactory.js @@ -40,9 +40,9 @@ export default function obtainZeroSSLCertificateTaskFactory( /** * @typedef {obtainZeroSSLCertificateTask} * @param {Config} config - * @return {Promise} + * @return {Listr} */ - async function obtainZeroSSLCertificateTask(config) { + function obtainZeroSSLCertificateTask(config) { return new Listr([ { title: 'Check if certificate already exists and not expiring soon', diff --git a/packages/dashmate/src/ssl/zerossl/cancelCertificate.js b/packages/dashmate/src/ssl/zerossl/cancelCertificate.js index 5a4e131674..2d8f9dfa9b 100644 --- a/packages/dashmate/src/ssl/zerossl/cancelCertificate.js +++ b/packages/dashmate/src/ssl/zerossl/cancelCertificate.js @@ -1,4 +1,4 @@ -import requestApi from './requestApi'; +import requestApi from './requestApi.js'; /** * Get ZeroSSL certificate diff --git a/packages/dashmate/src/ssl/zerossl/listCertificates.js b/packages/dashmate/src/ssl/zerossl/listCertificates.js index 63dad29283..f7530cee4c 100644 --- a/packages/dashmate/src/ssl/zerossl/listCertificates.js +++ b/packages/dashmate/src/ssl/zerossl/listCertificates.js @@ -8,12 +8,18 @@ import Certificate from './Certificate.js'; * @param {string} apiKey * @param {String[]} [statuses] - possible values: draft, pending_validation, issued, cancelled, * revoked, expired. + * @param {number} [page] * @param {string} [search] * @return {Promise} */ -export default async function listCertificates(apiKey, statuses = [], search = undefined) { - let url = `https://api.zerossl.com/certificates?access_key=${apiKey}&limit=1000`; +export default async function listCertificates( + apiKey, + statuses = [], + page = 1, + search = undefined, +) { + let url = `https://api.zerossl.com/certificates?access_key=${apiKey}&limit=1000&page=${page}`; if (statuses.length > 0) { url += `&statuses=${statuses.join(',')}`; From 65e72dd60d72c5f786d28dc8768867db94f21938 Mon Sep 17 00:00:00 2001 From: Ivan Shumkov Date: Fri, 1 Nov 2024 01:19:18 +0700 Subject: [PATCH 4/4] fix(dashmate): invalid mount path from helper (#2296) --- packages/dashmate/docker-compose.yml | 3 ++- packages/dashmate/docker/entrypoint.sh | 2 +- 2 files changed, 3 insertions(+), 2 deletions(-) diff --git a/packages/dashmate/docker-compose.yml b/packages/dashmate/docker-compose.yml index 67aae0bfa9..fb4cb02b0f 100644 --- a/packages/dashmate/docker-compose.yml +++ b/packages/dashmate/docker-compose.yml @@ -17,13 +17,14 @@ services: environment: - LOCAL_UID=${LOCAL_UID:?err} - LOCAL_GID=${LOCAL_GID:?err} + - DASHMATE_HOME_DIR=${DASHMATE_HOME_DIR:?err} ports: - 127.0.0.1:${DASHMATE_HELPER_API_PORT:?err}:${DASHMATE_HELPER_API_PORT:?err} command: yarn workspace dashmate helper ${CONFIG_NAME:?err} expose: - ${DASHMATE_HELPER_API_PORT:?err} volumes: - - ${DASHMATE_HOME_DIR:?err}:/home/dashmate/.dashmate + - ${DASHMATE_HOME_DIR:?err}:${DASHMATE_HOME_DIR:?err} - /var/run/docker.sock:/var/run/docker.sock core: diff --git a/packages/dashmate/docker/entrypoint.sh b/packages/dashmate/docker/entrypoint.sh index 773f337a2f..852dcb4095 100755 --- a/packages/dashmate/docker/entrypoint.sh +++ b/packages/dashmate/docker/entrypoint.sh @@ -31,4 +31,4 @@ fi echo "Starting with UID: $USER_ID, GID: $GROUP_ID, USER: $USERNAME, GROUP: $GROUP" -exec su - $USERNAME -c "cd /platform;DASHMATE_HELPER=1 DASHMATE_HOME_DIR=/home/dashmate/.dashmate $*" +exec su $USERNAME -c "cd /platform;DASHMATE_HELPER=1 DASHMATE_HOME_DIR=$DASHMATE_HOME_DIR $*"