Publish curated Unraid-AppOps-Gateway source from 034c9f844d2455850ba37b31379b7edaa786583e

This commit is contained in:
Public Source Publisher committed 2026-10-01 19:39:31 +00:00
1 parent c61fbfd87f
commit 1a54836efc
101 files changed
+4973 -1298

No files matched your search

+27 -21
View File
@@ -51,16 +51,22 @@ class Settings:
environment: str = "development"
log_level: str = "info"
static_dir: str = "dist"
gpu_metrics_url: str = ""
frontend_origin: str = "http://localhost:5173"
voice_token: str | None = None
voice_token_file: str | None = None
operator_token: str | None = None
operator_token_file: str | None = None
operator_auth_required: bool = False
operator_proxy_auth_enabled: bool = False
operator_proxy_trusted_networks: list[str] | None = None
operator_proxy_users: list[str] | None = None
operator_proxy_groups: list[str] | None = None
auth_public_url: str = ""
auth_admin_subjects: list[str] | None = None
auth_admin_emails: list[str] | None = None
authentik_issuer: str = ""
authentik_entra_source: str = ""
authentik_client_id: str = ""
authentik_client_secret: str | None = None
entra_tenant_id: str = ""
entra_client_id: str = ""
entra_client_secret: str | None = None
deployment_mode: str = "private"
verify_tls: bool = True
secret_key: str | None = None
@@ -127,24 +133,24 @@ class Settings:
self.n8n_token = None
self.log_level = (_env_value("APPOPS_LOG_LEVEL", self.log_level) or self.log_level).lower()
self.static_dir = _env_value("APPOPS_STATIC_DIR", self.static_dir) or self.static_dir
self.gpu_metrics_url = _env_value("APPOPS_GPU_METRICS_URL", self.gpu_metrics_url) or ""
self.frontend_origin = _env_value("APPOPS_FRONTEND_ORIGIN", None) or (
f"http://localhost:{self.port}" if self.environment == "production" else self.frontend_origin
)
self.voice_token_file = _env_value("APP_OPS_VOICE_TOKEN_FILE", self.voice_token_file)
self.voice_token = _secret_value("APP_OPS_VOICE_TOKEN", "APP_OPS_VOICE_TOKEN_FILE") or self.voice_token
self.operator_token = _env_value("APPOPS_OPERATOR_TOKEN", self.operator_token)
self.operator_token_file = _env_value("APPOPS_OPERATOR_TOKEN_FILE", self.operator_token_file)
if not self.operator_token and self.operator_token_file:
try:
with open(self.operator_token_file, encoding="utf-8") as token_file:
self.operator_token = token_file.read().strip() or None
except OSError:
self.operator_token = None
self.operator_auth_required = _env_bool("APPOPS_REQUIRE_OPERATOR_AUTH", self.operator_auth_required)
self.operator_proxy_auth_enabled = _env_bool("APPOPS_OPERATOR_PROXY_AUTH", self.operator_proxy_auth_enabled)
self.operator_proxy_trusted_networks = _env_list("APPOPS_OPERATOR_PROXY_TRUSTED_NETWORKS", self.operator_proxy_trusted_networks)
self.operator_proxy_users = _env_list("APPOPS_OPERATOR_PROXY_USERS", self.operator_proxy_users)
self.operator_proxy_groups = _env_list("APPOPS_OPERATOR_PROXY_GROUPS", self.operator_proxy_groups)
self.auth_public_url = (_env_value("APPOPS_AUTH_PUBLIC_URL", "") or "").rstrip("/")
self.auth_admin_subjects = _env_list("APPOPS_AUTH_ADMIN_SUBJECTS")
self.auth_admin_emails = _env_list("APPOPS_AUTH_ADMIN_EMAILS")
self.authentik_issuer = _env_value("APPOPS_AUTHENTIK_ISSUER", "") or ""
self.authentik_entra_source = _env_value("APPOPS_AUTHENTIK_ENTRA_SOURCE", "") or ""
self.authentik_client_id = _env_value("APPOPS_AUTHENTIK_CLIENT_ID", "") or ""
self.authentik_client_secret = _secret_value("APPOPS_AUTHENTIK_CLIENT_SECRET", "APPOPS_AUTHENTIK_CLIENT_SECRET_FILE")
self.entra_tenant_id = _env_value("APPOPS_ENTRA_TENANT_ID", "") or ""
self.entra_client_id = _env_value("APPOPS_ENTRA_CLIENT_ID", "") or ""
self.entra_client_secret = _secret_value("APPOPS_ENTRA_CLIENT_SECRET", "APPOPS_ENTRA_CLIENT_SECRET_FILE")
self.deployment_mode = (_env_value("APPOPS_DEPLOYMENT_MODE", self.deployment_mode) or self.deployment_mode).lower()
self.verify_tls = _env_bool("APPOPS_VERIFY_TLS", self.verify_tls)
self.secret_key_file = _env_value("APPOPS_SECRET_KEY_FILE", self.secret_key_file)
@@ -272,13 +278,13 @@ class Settings:
"APPOPS_STATIC_DIR": self.static_dir,
"APPOPS_FRONTEND_ORIGIN": self.frontend_origin,
"voice_token": bool(self.voice_token),
"operator_token": bool(self.operator_token),
"APPOPS_OPERATOR_TOKEN_FILE": bool(self.operator_token_file),
"APPOPS_REQUIRE_OPERATOR_AUTH": self.operator_auth_required,
"APPOPS_USER_AUTH_REQUIRED": True,
"APPOPS_AUTH_PUBLIC_URL_CONFIGURED": bool(self.auth_public_url),
"APPOPS_AUTHENTIK_OIDC_CONFIGURED": bool(self.authentik_issuer and self.authentik_client_id and self.authentik_client_secret),
"APPOPS_ENTRA_OIDC_CONFIGURED": bool(self.entra_tenant_id and self.entra_client_id and self.entra_client_secret),
"APPOPS_AUTH_ADMIN_BOOTSTRAP_CONFIGURED": bool(self.auth_admin_subjects or self.auth_admin_emails),
"APPOPS_OPERATOR_PROXY_AUTH": self.operator_proxy_auth_enabled,
"APPOPS_OPERATOR_PROXY_TRUSTED_NETWORKS_CONFIGURED": bool(self.operator_proxy_trusted_networks),
"APPOPS_OPERATOR_PROXY_USER_COUNT": len(self.operator_proxy_users or []),
"APPOPS_OPERATOR_PROXY_GROUP_COUNT": len(self.operator_proxy_groups or []),
"APPOPS_DEPLOYMENT_MODE": self.deployment_mode,
"APPOPS_BACKUP_RETENTION": self.backup_retention,
"APPOPS_ENABLE_MCP": self.mcp_enabled,