diff --git a/docs/openwrt-uci.md b/docs/openwrt-uci.md index 116bfdd..0bfa82c 100644 --- a/docs/openwrt-uci.md +++ b/docs/openwrt-uci.md @@ -51,15 +51,24 @@ config service 'main' ``` The example above uses a placeholder. Avoid typing real credentials into a -command that your shell will save in history. On OpenWrt's ash, you can instead +command that your shell will save in history. In an interactive SSH terminal, you can read the Basic header without echoing it and send it to UCI over stdin: ```sh -read -r -s -p 'Complete Basic authorization header: ' authorization -printf '\n' -printf "set wakey.main.otlp_authorization='%s'\ncommit wakey\n" "$authorization" | uci batch -unset authorization -chmod 600 /etc/config/wakey +( + set -e + terminal_state=$(stty -g /dev/tty + stty -echo /dev/tty + printf "set wakey.main.otlp_authorization='%s'\ncommit wakey\n" "$authorization" | uci batch + chmod 600 /etc/config/wakey +) ``` Use a normal `Basic ` header here, without quotes/newlines inside the value. diff --git a/wakey-agent/src/main.rs b/wakey-agent/src/main.rs index bea0064..0f60d68 100644 --- a/wakey-agent/src/main.rs +++ b/wakey-agent/src/main.rs @@ -19,7 +19,13 @@ async fn main() -> Result<()> { // Only the long-lived daemon exports: hotplug/enroll invocations stay cheap. let daemon_config = if let Command::Serve(args) = &cli.command { - Some(config::load_config(global_config.unwrap_or(&args.config))?) + let path = global_config.unwrap_or(&args.config); + // Let serve report its enrollment/setup instructions for a missing file. + if path.exists() { + Some(config::load_config(path)?) + } else { + None + } } else { None };