diff --git a/README.md b/README.md index 8f7f049..8b6d851 100644 --- a/README.md +++ b/README.md @@ -43,6 +43,7 @@ SSID=my_ssid PASS=my_wifi_password BROKER=my_ip:1883 SEED=my_seed +NETWORK=regtest ``` connect to the `sphinxkey` network on your computer diff --git a/sphinx-key/src/conn/http.rs b/sphinx-key/src/conn/http.rs index 3b92762..4f60ea0 100644 --- a/sphinx-key/src/conn/http.rs +++ b/sphinx-key/src/conn/http.rs @@ -57,6 +57,7 @@ pub fn config_server(mutex: Arc<(Mutex>, Condvar)>) -> Result = option_env!("NETWORK"); - fn main() -> Result<()> { - // Temporary. Will disappear once ESP-IDF 4.4 is released, but for now it is necessary to call this function once, // or else some patches to the runtime implemented by esp-idf-sys might not link properly. esp_idf_sys::link_patches(); - let network: Network = if let Some(n) = NETWORK { - match n { - "bitcoin" => Network::Bitcoin, - "mainnet" => Network::Bitcoin, - "testnet" => Network::Testnet, - "signet" => Network::Signet, - "regtest" => Network::Regtest, - _ => Network::Regtest, - } - } else { - Network::Regtest - }; - esp_idf_svc::log::EspLogger::initialize_default(); thread::sleep(Duration::from_secs(1)); - log::info!("Network set to {:?}", network); let peripherals = Peripherals::take().unwrap(); let pins = peripherals.pins; @@ -63,10 +46,14 @@ fn main() -> Result<()> { sd_card(peripherals.spi2); let default_nvs = Arc::new(EspDefaultNvs::new()?); - let mut store = EspNvsStorage::new_default(default_nvs.clone(), "sphinx", true).expect("no storage"); + let mut store = + EspNvsStorage::new_default(default_nvs.clone(), "sphinx", true).expect("no storage"); let existing: Option = store.get("config").expect("failed"); if let Some(exist) = existing { - println!("=============> START CLIENT NOW <============== {:?}", exist); + println!( + "=============> START CLIENT NOW <============== {:?}", + exist + ); // store.remove("config").expect("couldnt remove config"); led_tx.send(Status::ConnectingToWifi).unwrap(); let _wifi = start_wifi_client(default_nvs.clone(), &exist)?; @@ -77,17 +64,26 @@ fn main() -> Result<()> { // _conn needs to stay in scope or its dropped let (mqtt, connection) = conn::mqtt::make_client(&exist.broker, CLIENT_ID)?; let mqtt_client = conn::mqtt::start_listening(mqtt, connection, tx)?; - // this blocks forever... the "main thread" log::info!(">>>>>>>>>>> blocking forever..."); let do_log = true; + let network = match exist.network.as_str() { + "bitcoin" => Network::Bitcoin, + "mainnet" => Network::Bitcoin, + "testnet" => Network::Testnet, + "signet" => Network::Signet, + "regtest" => Network::Regtest, + _ => Network::Regtest, + }; + log::info!("Network set to {:?}", network); make_event_loop(mqtt_client, rx, network, do_log, led_tx)?; - } else { led_tx.send(Status::WifiAccessPoint).unwrap(); println!("=============> START SERVER NOW AND WAIT <=============="); if let Ok((wifi, config)) = start_config_server_and_wait(default_nvs.clone()) { - store.put("config", &config).expect("could not store config"); + store + .put("config", &config) + .expect("could not store config"); println!("CONFIG SAVED"); drop(wifi); thread::sleep(Duration::from_secs(1)); diff --git a/tester/src/config.rs b/tester/src/config.rs index 19984bb..7665d9f 100644 --- a/tester/src/config.rs +++ b/tester/src/config.rs @@ -22,6 +22,7 @@ pub struct ConfigBody { pub pass: String, pub broker: String, pub pubkey: String, // for ecdh + pub network: String, } #[derive(Clone, Debug, Serialize, Deserialize)] pub struct ConfigResponse { @@ -37,7 +38,11 @@ async fn main() -> anyhow::Result<()> { let broker: String = env::var("BROKER").expect("no broker"); let seed_string: String = env::var("SEED").expect("no seed"); let seed: [u8; MSG_LEN] = hex::decode(seed_string)?[..MSG_LEN].try_into()?; - println!("seed {:?}", seed); + let network: String = env::var("NETWORK").unwrap_or("regtest".to_string()); + if !(network == "bitcoin" || network == "mainnet" || network == "testnet" || network == "signet" || network == "regtest") { + panic!("invalid network string"); + } + println!("network {:?}", network); let s = Secp256k1::new(); let (sk1, pk1) = s.generate_keypair(&mut thread_rng()); @@ -65,7 +70,7 @@ async fn main() -> anyhow::Result<()> { let cipher_seed = hex::encode(cipher); let config = ConfigBody { seed: cipher_seed, - ssid, pass, broker, + ssid, pass, broker, network, pubkey: hex::encode(pk1.serialize()), };