/// Name of the cookie that contains session information pub const SESSION_COOKIE_NAME: &str = "X-session-cookie"; /// Maximum time after a ping during which a device is considered "up" pub const DEVICE_MAX_PING_TIME: u64 = 30; /// Fallback value to use if production cannot be fetched pub const FALLBACK_PRODUCTION_VALUE: i32 = 5000; /// Maximum session duration after inactivity, in seconds pub const MAX_INACTIVITY_DURATION: u64 = 3600; /// Maximum session duration (1 day) pub const MAX_SESSION_DURATION: u64 = 3600 * 24; /// Maximum firmware size (in bytes) pub const MAX_FIRMWARE_SIZE: usize = 50 * 1000 * 1000; /// List of routes that do not require authentication pub const ROUTES_WITHOUT_AUTH: [&str; 2] = ["/web_api/server/config", "/web_api/auth/password_auth"]; #[derive(serde::Serialize)] pub struct SizeConstraint { /// Minimal string length min: usize, /// Maximal string length max: usize, } impl SizeConstraint { pub fn new(min: usize, max: usize) -> Self { Self { min, max } } pub fn validate(&self, val: &str) -> bool { let len = val.trim().len(); len >= self.min && len <= self.max } pub fn validate_usize(&self, val: usize) -> bool { val >= self.min && val <= self.max } } /// Backend static constraints #[derive(serde::Serialize)] pub struct StaticConstraints { /// Device name constraint pub dev_name_len: SizeConstraint, /// Device description constraint pub dev_description_len: SizeConstraint, /// Relay name constraint pub relay_name_len: SizeConstraint, /// Relay priority constraint pub relay_priority: SizeConstraint, /// Relay consumption constraint pub relay_consumption: SizeConstraint, /// Relay minimal uptime pub relay_minimal_uptime: SizeConstraint, /// Relay minimal downtime pub relay_minimal_downtime: SizeConstraint, /// Relay daily minimal uptime pub relay_daily_minimal_runtime: SizeConstraint, } impl Default for StaticConstraints { fn default() -> Self { Self { dev_name_len: SizeConstraint::new(1, 50), dev_description_len: SizeConstraint::new(0, 100), relay_name_len: SizeConstraint::new(1, 100), relay_priority: SizeConstraint::new(0, 999999), relay_consumption: SizeConstraint::new(0, 999999), relay_minimal_uptime: SizeConstraint::new(0, 9999999), relay_minimal_downtime: SizeConstraint::new(0, 9999999), relay_daily_minimal_runtime: SizeConstraint::new(0, 3600 * 24), } } }