mirror of
https://github.com/moghtech/komodo.git
synced 2026-04-28 11:49:39 -05:00
first server configuration works with Periphery -> Core
This commit is contained in:
@@ -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
|
||||
|
||||
@@ -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),
|
||||
|
||||
@@ -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(),
|
||||
|
||||
@@ -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.
|
||||
|
||||
@@ -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,
|
||||
|
||||
Reference in New Issue
Block a user