[server]
host = "127.0.0.1"
keep_alive = 75
max_connections = 1000
port = 8080

[database]
database = "main"
namespace = "control_center"
url = "rocksdb://data/control-center.db"

[jwt]
access_token_expiration_hours = 1
audience = "control-center-api"
issuer = "control-center"
private_key_pem = """
-----BEGIN RSA PRIVATE KEY-----
MIIEpAIBAAKCAQEA82On7Xk5jycsV4NCOij0510ssy/3S1Pqj+UjGS1R3+tyHX57
BQ3NiA3D/bn4ozMXmyORxrX0LKhnrERLV9NAKV21XOzjWlkz2oAcEhIfz+1l9kWr
R/4VzJFc+DPnFr1ly+1+BUQC3E2rWhIPvknRwTCpBouIl4EhD36V7CC5nnu3/hfL
UngfY5dyR9coeV8ZS6r4P2HBfqvEimPliCeEnv9Pt0F/3ENRnzyW28wbrGDUlb3R
LKsCI4cJE9oDcuOkyYZEWf2H5xAcidksaDNxabYRGS5IqT25obMElEZZDvj9X60S
8UHuI3Tm+2kc69fo64/S53y3yNr6Ed05PVewiQIDAQABAoIBAQDK5tp466WjhMm/
jwpoB/ra4l9AZo1ne+bA3QoclB58aQDyO539AZvFf4xTenUgQJi+WbHOkaOkkyQS
hcC1z8PeeGOYu1dx24mR71j3a6qfoc5tt3jqBJVRvCFgPYy59Vzm2+9CHoev9wQR
i5saTNoTjyhp72sIurq/+wyrFEEKL4NkAB0n7bR0C1AI8uNwwU70ANb5ih5DgBso
Nz5mm4eKQyzkN+cs34Hqdlvlskv5xAaU7Z6sjqZwHt0fQ2+gHehOLnaRAE/48PAI
xNzoDFstPGQAgzg1H8VLnLgo7+B4OEQkr6WzZacr2XSBTcpEXSBHb0FUkpT1ks4V
t6uEQbDxAoGBAPaMPZK+Z7V64p64jhA3UNUpechx+wfnTf+KE5fiopOWe009ykb2
wJuPFrUNFYyZ/lLE6sze64OYzjGTKp3+UTegPBpac5VWMf3J9W+VU0CG37LeMJPh
psRrjmdW/e1JZ9D8K1rHWb4zU6LmSBZDXAXdNmxSOMDJfs/QgFNDtHiFAoGBAPy4
anLxSRzkbfEQYBN0+JivOxxrtu9H+JbjaShh4eUD/GlC9DSH0ptm5Feh4UeGxq85
d79AJhYgzTy9c1ri+1+Yj4p0YqAw7fjE5ib3zVNVB0otJNi9hmf9OfokqOCv+hVM
TyBwEDzJ0meqmrDRBH+cLSfCQLN9oTlAabBlKtk1AoGAE3P/S7vQTQZ0KRfgxbDH
pPoPzNwJdZcvlVEcuKg+Maz276JHeo/vpJaGsSRmJeDkqz00VZPlO03sPwcgnrS5
Tc1L0LyAUDEr4p1zyykaF4ZM0j0r0g9E7EycQNUhVf6rvVaYSSJfl11PZRQMbg1E
joXkzGk0Zym+4sDNz0QRUk0CgYEA4SoSNd0C7kocJncXkt5aC/e8a+MQt3rhYta1
P7SORrTZdJOh7xfArpLrCaUCie7sIPzL00t9Y6PQGLkXCThJDXBpG8v8f4t4y3fr
M3b/qqqMdytns/CQyyAUQuncyWwhHk7CBT2zSeXroE+hyb5BCs2EcfMiIInjVpYs
VGye060CgYBZj2wMBlF3StH84bXJlYPhauNcwJSRzJte0WNjW/mXXcGJtfFhR5Mq
jNJxjFk+EhOw2mPg678lHT7mGymo3u2sHLROCB4vdwao6yxYtRd8KRcUpt51L/ZX
e8NVbdrratDy105kYSUsi78yXAVl09wUisU0JMnaj9vgNkmYfkzx5A==
-----END RSA PRIVATE KEY-----
"""
public_key_pem = """
-----BEGIN RSA PUBLIC KEY-----
MIIBCgKCAQEA82On7Xk5jycsV4NCOij0510ssy/3S1Pqj+UjGS1R3+tyHX57BQ3N
iA3D/bn4ozMXmyORxrX0LKhnrERLV9NAKV21XOzjWlkz2oAcEhIfz+1l9kWrR/4V
zJFc+DPnFr1ly+1+BUQC3E2rWhIPvknRwTCpBouIl4EhD36V7CC5nnu3/hfLUngf
Y5dyR9coeV8ZS6r4P2HBfqvEimPliCeEnv9Pt0F/3ENRnzyW28wbrGDUlb3RLKsC
I4cJE9oDcuOkyYZEWf2H5xAcidksaDNxabYRGS5IqT25obMElEZZDvj9X60S8UHu
I3Tm+2kc69fo64/S53y3yNr6Ed05PVewiQIDAQAB
-----END RSA PUBLIC KEY-----
"""
refresh_token_expiration_hours = 168

[rate_limiting]
global = false
max_requests = 100
per_ip = true
window_seconds = 60

[cors]
allow_credentials = true
allowed_headers = ["content-type", "authorization", "accept", "x-requested-with", "x-session-id"]
allowed_methods = ["GET", "POST", "PUT", "DELETE", "PATCH", "OPTIONS"]
allowed_origins = ["http://localhost:3000"]
expose_headers = [
  "x-total-count",
  "x-rate-limit-remaining",
  "x-rate-limit-limit",
  "x-rate-limit-reset",
]
max_age = 86400

[security]
failed_login_lockout_attempts = 5
failed_login_lockout_duration_minutes = 15
max_sessions_per_user = 5
password_min_length = 8
password_require_numbers = false
password_require_special_chars = false
password_require_uppercase = false
session_cleanup_interval_minutes = 60

[logging]
format = "json"
level = "info"
max_file_size = "100MB"
max_files = 10
