[WIP] Daemon & CLI

This commit is contained in:
Alex-Emmet 2026-07-23 23:13:02 +02:00
commit 8b158108bb
100 changed files with 6519 additions and 1596 deletions

View file

@ -242,7 +242,7 @@ pub fn save_users() {
// No-op: users are auto-saved via SQLite.
}
pub async fn load_users() -> std::io::Result<()> {
pub fn load_users_sync() -> std::io::Result<()> {
// Users are loaded from SQLite on demand. This function is kept for API compat.
// If we need to migrate from a legacy users.json file, we can do so here.
let content = load_file("", "users.json");

View file

@ -13,6 +13,8 @@ pub struct IotaConfig {
pub iota_id: Option<u64>,
#[serde(default = "default_port")]
pub port: u16,
#[serde(default)]
pub web: WebSettings,
#[serde(skip_serializing_if = "Option::is_none")]
pub omikron_host: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
@ -27,6 +29,54 @@ pub struct IotaConfig {
pub read_receipts_enabled: bool,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
#[serde(rename_all = "snake_case")]
pub enum WebMode {
Disabled,
Loopback,
Network,
}
impl Default for WebMode {
fn default() -> Self {
Self::Disabled
}
}
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct WebSettings {
#[serde(default)]
pub mode: WebMode,
#[serde(default = "default_web_bind")]
pub bind: String,
#[serde(default = "default_port")]
pub port: u16,
#[serde(default = "default_web_asset_dir")]
pub asset_dir: String,
pub certificate: Option<String>,
pub key: Option<String>,
#[serde(default)]
pub required: bool,
}
fn default_web_bind() -> String {
"127.0.0.1".into()
}
fn default_web_asset_dir() -> String {
"web".into()
}
impl Default for WebSettings {
fn default() -> Self {
Self {
mode: WebMode::default(),
bind: default_web_bind(),
port: default_port(),
asset_dir: default_web_asset_dir(),
certificate: None,
key: None,
required: false,
}
}
}
const fn default_port() -> u16 {
1984
}
@ -40,6 +90,7 @@ impl Default for IotaConfig {
Self {
iota_id: None,
port: default_port(),
web: WebSettings::default(),
omikron_host: None,
omikron_port: None,
keyring: None,