first server configuration works with Periphery -> Core

This commit is contained in:
mbecker20
2025-09-28 14:39:11 -07:00
parent 0fe91378a6
commit 281a2dc1ce
5 changed files with 46 additions and 46 deletions

View File

@@ -205,7 +205,7 @@ pub fn core_config() -> &'static CoreConfig {
bind_ip: env.komodo_bind_ip.unwrap_or(config.bind_ip),
timezone: env.komodo_timezone.unwrap_or(config.timezone),
first_server: env.komodo_first_server.or(config.first_server),
first_server_name: env.komodo_first_server_name.unwrap_or(config.first_server_name),
first_server_name: env.komodo_first_server_name.or(config.first_server_name),
frontend_path: env.komodo_frontend_path.unwrap_or(config.frontend_path),
jwt_ttl: env
.komodo_jwt_ttl

View File

@@ -198,11 +198,15 @@ async fn open_alert_cleanup() {
/// Ensures a default server / builder exists with the defined address
async fn ensure_first_server_and_builder() {
let config = core_config();
let Some(address) = config.first_server.clone() else {
if config.first_server.is_none()
&& config.first_server_name.is_none()
{
// If neither defined, early return
return;
};
}
let db = db_client();
let Ok(server) = db
// If any server exists, exit early.
let Ok(None) = db
.servers
.find_one(Document::new())
.await
@@ -210,39 +214,37 @@ async fn ensure_first_server_and_builder() {
else {
return;
};
let server = if let Some(server) = server {
server
} else {
match (CreateServer {
name: config.first_server_name.clone(),
config: PartialServerConfig {
address: Some(address),
enabled: Some(true),
..Default::default()
},
})
.resolve(&WriteArgs {
user: system_user().to_owned(),
})
.await
{
Ok(server) => server,
Err(e) => {
error!(
"Failed to initialize 'first_server'. Failed to CreateServer. {:#}",
e.error
);
return;
}
let name = config.first_server_name.as_deref().unwrap_or("Local");
let server = match (CreateServer {
name: name.to_string(),
config: PartialServerConfig {
address: config.first_server.clone(),
enabled: Some(true),
..Default::default()
},
})
.resolve(&WriteArgs {
user: system_user().to_owned(),
})
.await
{
Ok(server) => server,
Err(e) => {
error!(
"Failed to initialize 'first_server'. Failed to CreateServer. {:#}",
e.error
);
return;
}
};
// If any builder exists, exit early.
let Ok(None) = db.builders
.find_one(Document::new()).await
.inspect_err(|e| error!("Failed to initialize 'first_builder' | Failed to query db | {e:?}")) else {
return;
};
if let Err(e) = (CreateBuilder {
name: config.first_server_name.clone(),
name: name.to_string(),
config: PartialBuilderConfig::Server(
PartialServerBuilderConfig {
server_id: Some(server.id),

View File

@@ -370,14 +370,15 @@ pub struct CoreConfig {
pub enable_fancy_toml: bool,
/// If defined, ensure an enabled first server exists at this address.
/// Example: `http://periphery:8120`
/// Example: `wss://periphery:8120`
#[serde(skip_serializing_if = "Option::is_none")]
pub first_server: Option<String>,
/// Give the first server this name.
/// Default: `Local`
#[serde(default = "default_first_server_name")]
pub first_server_name: String,
/// If None and "first_server" is defined, will default to "Local".
/// Default: None
#[serde(skip_serializing_if = "Option::is_none")]
pub first_server_name: Option<String>,
/// The path to the built frontend folder.
#[serde(default = "default_frontend_path")]
@@ -667,10 +668,6 @@ fn default_frontend_path() -> String {
"/app/frontend".to_string()
}
fn default_first_server_name() -> String {
String::from("Local")
}
fn default_jwt_ttl() -> Timelength {
Timelength::OneDay
}
@@ -732,7 +729,7 @@ impl Default for CoreConfig {
disable_init_resources: Default::default(),
enable_fancy_toml: Default::default(),
first_server: Default::default(),
first_server_name: default_first_server_name(),
first_server_name: Default::default(),
frontend_path: default_frontend_path(),
database: Default::default(),
local_auth: Default::default(),

View File

@@ -35,7 +35,7 @@ TZ=Etc/UTC
## 32 characters or less.
KOMODO_PRIVATE_KEY="default-core-pk"
## Used for Oauth / Webhook url suggestion / Caddy reverse proxy.
## Used for Oauth / Webhook url suggestion.
KOMODO_HOST=https://demo.komo.do
## Displayed in the browser tab.
KOMODO_TITLE=Komodo
@@ -53,7 +53,7 @@ KOMODO_DISABLE_CONFIRM_DIALOG=false
## Default: 15-sec
KOMODO_MONITORING_INTERVAL="15-sec"
## Interval at which to poll Resources for any updates / automated actions.
## Options: 15-min, 1-hr, 2-hr, 6-hr, 12-hr, 1-day
## Options: 5-min, 15-min, 1-hr, 2-hr, 6-hr, 12-hr, 1-day
## Default: 1-hr
KOMODO_RESOURCE_POLL_INTERVAL="1-hr"
@@ -139,10 +139,9 @@ PERIPHERY_ROOT_DIRECTORY=/etc/komodo
## Specify whether to disable the terminals feature
## and disallow remote shell access (inside the Periphery container).
PERIPHERY_DISABLE_TERMINALS=false
## Enable SSL using self signed certificates.
## Connect to Periphery at `wss://address:8120` (or just `address:8120`).
PERIPHERY_SSL_ENABLED=true
## Specify whether to disable the container exec feature
## and disallow remote container shell access.
PERIPHERY_DISABLE_CONTAINER_EXEC=false
## If the disk size is overreporting, can use one of these to
## whitelist / blacklist the disks to filter them, whichever is easier.

View File

@@ -70,9 +70,11 @@ private_key = "default-core-pk"
# first_server = ""
## Give the first server a custom name.
## If this is set but 'first_server' is not,
## will assume inbound connection.
## Env: KOMODO_FIRST_SERVER_NAME
## Default: Local
first_server_name = "Local"
## Default: None
# first_server_name = "Local"
## Disables write support on resources in the UI.
## This protects users that that would normally have write priviledges during their UI usage,