diff --git a/Cargo.lock b/Cargo.lock index faa1e879ab3..d43873dcbbc 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -2517,7 +2517,16 @@ version = "4.0.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "f51c5d4ddabd36886dd3e1438cb358cdcb0d7c499cb99cb4ac2e38e18b5cb210" dependencies = [ - "dirs-sys", + "dirs-sys 0.3.7", +] + +[[package]] +name = "directories" +version = "5.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9a49173b84e034382284f27f1af4dcbbd231ffa358c0fe316541a7337f376a35" +dependencies = [ + "dirs-sys 0.4.1", ] [[package]] @@ -2536,7 +2545,7 @@ version = "4.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "ca3aa72a6f96ea37bbc5aa912f6788242832f75369bdfdadcb0e38423f100059" dependencies = [ - "dirs-sys", + "dirs-sys 0.3.7", ] [[package]] @@ -2550,6 +2559,18 @@ dependencies = [ "winapi", ] +[[package]] +name = "dirs-sys" +version = "0.4.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "520f05a5cbd335fae5a99ff7a6ab8627577660ee5cfd6a94a6a929b52ff0321c" +dependencies = [ + "libc", + "option-ext", + "redox_users", + "windows-sys 0.48.0", +] + [[package]] name = "dirs-sys-next" version = "0.1.2" @@ -3970,6 +3991,14 @@ dependencies = [ "static_assertions", ] +[[package]] +name = "gear-key-finder" +version = "1.0.1" +dependencies = [ + "directories 5.0.1", + "hex", +] + [[package]] name = "gear-lazy-pages" version = "1.0.1" @@ -7078,6 +7107,12 @@ version = "0.1.5" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "ff011a302c396a5197692431fc1948019154afc178baf7d8e37367442a4601cf" +[[package]] +name = "option-ext" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "04744f49eae99ab78e0d5c0b603ab218f515ea8cfe5a456d7629ad883a3b6e7d" + [[package]] name = "os_str_bytes" version = "6.5.1" @@ -10376,7 +10411,7 @@ version = "0.10.0-dev" source = "git+https://github.com/gear-tech/substrate.git?branch=gear-polkadot-v0.9.41-canary-no-sandbox#93aa762a96970dc7d5987a8c890a6be4912f3cd3" dependencies = [ "async-trait", - "directories", + "directories 4.0.1", "exit-future", "futures", "futures-timer", diff --git a/Cargo.toml b/Cargo.toml index 95f1b55982d..268077f08a2 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -451,6 +451,7 @@ scale-value = "^0.10" # gsdk heck = "0.4.1" # gsdk-api-gen etc = "0.1.16" # gcli scale-decode = "0.7.0" # gsdk +directories = "5.0.1" # utils/key-finder [profile.release] panic = "unwind" diff --git a/utils/key-finder/Cargo.toml b/utils/key-finder/Cargo.toml new file mode 100644 index 00000000000..3091e9f61bc --- /dev/null +++ b/utils/key-finder/Cargo.toml @@ -0,0 +1,12 @@ +[package] +name = "gear-key-finder" +version.workspace = true +authors.workspace = true +edition.workspace = true + +[[bin]] +name = "gear-key-finder" + +[dependencies] +hex = { workspace = true, features = ["alloc"] } +directories.workspace = true diff --git a/utils/key-finder/src/main.rs b/utils/key-finder/src/main.rs new file mode 100644 index 00000000000..cfa56031ecf --- /dev/null +++ b/utils/key-finder/src/main.rs @@ -0,0 +1,41 @@ +use directories::ProjectDirs; + +const VERSIONS: [&str; 7] = [ + "staging_testnet", + "staging_testnet_v2", + "gear_staging_testnet_v3", + "gear_staging_testnet_v4", + "gear_staging_testnet_v5", + "gear_staging_testnet_v6", + "gear_staging_testnet_v7", +]; + +const PATHS: [&str; 2] = ["gear", "gear-node"]; + +fn main() { + let mut found = false; + for path in PATHS { + let chains_path = ProjectDirs::from("", "", path) + .unwrap() + .data_local_dir() + .join("chains"); + if chains_path.is_dir() { + for version in VERSIONS { + let mut key_path = chains_path.join(version); + key_path.extend(&["network", "secret_ed25519"]); + if key_path.is_file() { + let key = std::fs::read(&key_path); + if let Ok(key) = key { + println!("Key found in \"{path}/{version}\": 0x{}", hex::encode(key)); + found = true; + } else { + eprintln!("Failed to read key from {path:?}",); + } + } + } + } + } + if !found { + println!("No key file was found. Please try to run this utility with `sudo`."); + } +}