From 45d945db2ea9a98945e48107d8b1076970a6c054 Mon Sep 17 00:00:00 2001 From: Aiden McClelland Date: Wed, 8 Sep 2021 19:13:36 -0600 Subject: [PATCH] fix tor addressing for realzies --- appmgr/Cargo.lock | 1 + appmgr/Cargo.toml | 6 +++-- appmgr/sqlx-data.json | 46 ++++++++++++++++++++++--------------- appmgr/src/net/interface.rs | 11 +++++++-- appmgr/src/shutdown.rs | 7 ++++++ 5 files changed, 49 insertions(+), 22 deletions(-) diff --git a/appmgr/Cargo.lock b/appmgr/Cargo.lock index 4d177d3ab..16b6ac6d1 100644 --- a/appmgr/Cargo.lock +++ b/appmgr/Cargo.lock @@ -1914,6 +1914,7 @@ dependencies = [ "json-patch", "json-ptr", "lazy_static", + "log", "nix 0.20.1", "patch-db-macro", "qutex-2", diff --git a/appmgr/Cargo.toml b/appmgr/Cargo.toml index 9ba4f7e41..5689b05b3 100644 --- a/appmgr/Cargo.toml +++ b/appmgr/Cargo.toml @@ -43,7 +43,7 @@ portable = [] production = [] [dependencies] -aes = { version = "0.7.5", features = ["ctr", "armv8"] } +aes = { version = "0.7.5", features = ["ctr"] } anyhow = "1.0.40" async-trait = "0.1.42" avahi-sys = { git = "https://github.com/Start9Labs/avahi-sys", version = "0.10.0", branch = "feature/dynamic-linking", features = [ @@ -76,7 +76,9 @@ log = "0.4.11" nix = "0.22.0" openssh-keys = "0.5.0" openssl = { version = "0.10.30", features = ["vendored"] } -patch-db = { version = "*", path = "../../patch-db/patch-db" } +patch-db = { version = "*", path = "../../patch-db/patch-db", features = [ + "log", +] } pbkdf2 = "0.9.0" pin-project = "1.0.6" prettytable-rs = "0.8.0" diff --git a/appmgr/sqlx-data.json b/appmgr/sqlx-data.json index cb0327b5b..a3e5bb9ab 100644 --- a/appmgr/sqlx-data.json +++ b/appmgr/sqlx-data.json @@ -38,6 +38,24 @@ ] } }, + "3e57a0e52b69f33e9411c13b03a5d82c5856d63f0375eb4c23b255a09c54f8b1": { + "query": "SELECT key FROM tor WHERE package = ? AND interface = ?", + "describe": { + "columns": [ + { + "name": "key", + "ordinal": 0, + "type_info": "Blob" + } + ], + "parameters": { + "Right": 2 + }, + "nullable": [ + false + ] + } + }, "4691e3a2ce80b59009ac17124f54f925f61dc5ea371903e62cdffa5d7b67ca96": { "query": "SELECT * FROM session WHERE logged_out IS NULL OR logged_out > CURRENT_TIMESTAMP", "describe": { @@ -178,24 +196,6 @@ ] } }, - "c895b08869cc611708d37643ec92b5c827c1766c63e263d5687aa639357b27e6": { - "query": "INSERT OR IGNORE INTO tor (package, interface, key) VALUES (?, ?, ?) RETURNING key AS \"key!:Vec\"", - "describe": { - "columns": [ - { - "name": "key!:Vec", - "ordinal": 0, - "type_info": "Null" - } - ], - "parameters": { - "Right": 3 - }, - "nullable": [ - null - ] - } - }, "d5117054072476377f3c4f040ea429d4c9b2cf534e76f35c80a2bf60e8599cca": { "query": "SELECT openssh_pubkey FROM ssh_keys", "describe": { @@ -214,6 +214,16 @@ ] } }, + "d79d608ceb862c15b741a6040044c6dd54a837a3a0c5594d15a6041c7bc68ea8": { + "query": "INSERT OR IGNORE INTO tor (package, interface, key) VALUES (?, ?, ?)", + "describe": { + "columns": [], + "parameters": { + "Right": 3 + }, + "nullable": [] + } + }, "de2a5e90798d606047ab8180c044baac05469c0cdf151316bd58ee8c7196fdef": { "query": "SELECT * FROM ssh_keys WHERE fingerprint = ?", "describe": { diff --git a/appmgr/src/net/interface.rs b/appmgr/src/net/interface.rs index a718158b3..5c2d8f3dc 100644 --- a/appmgr/src/net/interface.rs +++ b/appmgr/src/net/interface.rs @@ -36,12 +36,19 @@ impl Interfaces { if iface.tor_config.is_some() || iface.lan_config.is_some() { let key = TorSecretKeyV3::generate(); let key_vec = key.as_bytes().to_vec(); - let key_row = sqlx::query!( - "INSERT OR IGNORE INTO tor (package, interface, key) VALUES (?, ?, ?) RETURNING key AS \"key!:Vec\"", + sqlx::query!( + "INSERT OR IGNORE INTO tor (package, interface, key) VALUES (?, ?, ?)", **package_id, **id, key_vec, ) + .execute(&mut *secrets) + .await?; + let key_row = sqlx::query!( + "SELECT key FROM tor WHERE package = ? AND interface = ?", + **package_id, + **id, + ) .fetch_one(&mut *secrets) .await?; let mut key = [0_u8; 64]; diff --git a/appmgr/src/shutdown.rs b/appmgr/src/shutdown.rs index 2c1decf82..b02f7ece6 100644 --- a/appmgr/src/shutdown.rs +++ b/appmgr/src/shutdown.rs @@ -17,6 +17,13 @@ impl Shutdown { pub fn execute(&self) { use std::process::Command; + Command::new("systemctl") + .arg("stop") + .arg("systemd-journald") + .spawn() + .unwrap() + .wait() + .unwrap(); if let Err(e) = export_blocking(&self.zfs_pool) { log::error!("Error Exporting ZFS Pool: {}", e); }