2024-12-15 14:40:03 +01:00
|
|
|
"""Server Module."""
|
|
|
|
|
2025-02-12 21:35:51 +01:00
|
|
|
import os
|
2024-12-15 14:40:03 +01:00
|
|
|
from typing import Optional
|
|
|
|
|
|
|
|
from pydantic import Field, IPvAnyAddress, field_validator
|
|
|
|
|
|
|
|
from akkudoktoreos.config.configabc import SettingsBaseModel
|
2025-01-05 14:41:07 +01:00
|
|
|
from akkudoktoreos.core.logging import get_logger
|
2024-12-15 14:40:03 +01:00
|
|
|
|
|
|
|
logger = get_logger(__name__)
|
|
|
|
|
|
|
|
|
2025-02-12 21:35:51 +01:00
|
|
|
def get_default_host() -> str:
|
|
|
|
if os.name == "nt":
|
|
|
|
return "127.0.0.1"
|
|
|
|
return "0.0.0.0"
|
|
|
|
|
|
|
|
|
2024-12-15 14:40:03 +01:00
|
|
|
class ServerCommonSettings(SettingsBaseModel):
|
2025-01-15 00:54:45 +01:00
|
|
|
"""Server Configuration.
|
2024-12-15 14:40:03 +01:00
|
|
|
|
|
|
|
Attributes:
|
|
|
|
To be added
|
|
|
|
"""
|
|
|
|
|
2025-02-12 21:35:51 +01:00
|
|
|
host: Optional[IPvAnyAddress] = Field(
|
|
|
|
default=get_default_host(), description="EOS server IP address."
|
|
|
|
)
|
2025-01-18 14:26:34 +01:00
|
|
|
port: Optional[int] = Field(default=8503, description="EOS server IP port number.")
|
|
|
|
verbose: Optional[bool] = Field(default=False, description="Enable debug output")
|
|
|
|
startup_eosdash: Optional[bool] = Field(
|
2025-01-09 16:54:49 +01:00
|
|
|
default=True, description="EOS server to start EOSdash server."
|
2024-12-15 14:40:03 +01:00
|
|
|
)
|
2025-01-18 14:26:34 +01:00
|
|
|
eosdash_host: Optional[IPvAnyAddress] = Field(
|
2025-02-12 21:35:51 +01:00
|
|
|
default=get_default_host(), description="EOSdash server IP address."
|
2024-12-29 18:42:49 +01:00
|
|
|
)
|
2025-01-18 14:26:34 +01:00
|
|
|
eosdash_port: Optional[int] = Field(default=8504, description="EOSdash server IP port number.")
|
2024-12-15 14:40:03 +01:00
|
|
|
|
2025-01-18 14:26:34 +01:00
|
|
|
@field_validator("port", "eosdash_port")
|
2024-12-15 14:40:03 +01:00
|
|
|
def validate_server_port(cls, value: Optional[int]) -> Optional[int]:
|
|
|
|
if value is not None and not (1024 <= value <= 49151):
|
|
|
|
raise ValueError("Server port number must be between 1024 and 49151.")
|
|
|
|
return value
|