| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788 |
- #ifndef SERVER_CONFIG_H
- #define SERVER_CONFIG_H
- #include <string>
- #include <vector>
- /**
- * @brief Authentication method enumeration
- */
- enum class AuthMethod {
- NONE, ///< No authentication (allow all access)
- PAM, ///< PAM authentication
- SHARED_KEY ///< Shared key authentication
- };
- /**
- * @brief Authentication configuration structure
- */
- struct AuthConfig {
- AuthMethod authMethod = AuthMethod::NONE; ///< Primary authentication method
- bool enableGuestAccess = false; ///< Allow unauthenticated access
- std::string sharedKey = ""; ///< Shared key for authentication
- std::string pamServiceName = "stable-diffusion-rest"; ///< PAM service name
- std::string dataDir = "./auth"; ///< Directory for authentication data
- std::vector<std::string> publicPaths; ///< Paths that don't require authentication
- std::vector<std::string> adminPaths; ///< Paths that require admin access
- std::vector<std::string> userPaths; ///< Paths that require user access
- std::string customPublicPaths; ///< Custom public paths (comma-separated)
- };
- // Server configuration structure
- struct ServerConfig {
- // Server settings
- std::string host = "0.0.0.0";
- int port = 8080;
- int maxConcurrentGenerations = 1;
- bool verbose = false;
-
- // Connection and timeout settings
- int connectionTimeoutMs = 500; // Connection timeout in milliseconds
- int readTimeoutMs = 500; // Read timeout in milliseconds
- int writeTimeoutMs = 500; // Write timeout in milliseconds
-
- // Generation limits
- int maxPromptLength = 10000; // Maximum prompt character length
- int maxNegativePromptLength = 10000; // Maximum negative prompt character length
-
- // Graceful shutdown delay
- int shutdownDelayMs = 100; // Delay in milliseconds for graceful shutdown
- // Required directory parameter
- std::string modelsDir = ""; // Base models directory (required, must be set via --models-dir)
- // Model type directory parameters
- // All default to standard folder names under modelsDir if not explicitly set
- std::string checkpoints = ""; // Checkpoints directory (default: checkpoints)
- std::string controlnetDir = ""; // ControlNet directory (default: controlnet)
- std::string embeddingsDir = ""; // Embeddings directory (default: embeddings)
- std::string esrganDir = ""; // ESRGAN directory (default: ESRGAN)
- std::string loraDir = ""; // LoRA directory (default: loras)
- std::string taesdDir = ""; // TAESD directory (default: TAESD)
- std::string vaeDir = ""; // VAE directory (default: vae)
- std::string diffusionModelsDir = ""; // Diffusion models directory (default: diffusion_models)
- // Queue and output directories
- std::string queueDir = "./queue"; // Directory to store queue job files
- std::string outputDir = "./output"; // Directory to store generated images/videos
- // UI directory (optional - for serving static web UI)
- std::string uiDir = ""; // Directory containing static web UI files
- // Logging options
- bool enableFileLogging = false;
- std::string logFilePath = "/var/log/stable-diffusion-rest/server.log";
- // Default admin credentials (for initial setup)
- std::string defaultAdminUsername = "admin";
- std::string defaultAdminPassword = "admin123";
- std::string defaultAdminEmail = "admin@localhost";
-
- // Hash all models option
- bool hashAllModels = false; // Hash all models during startup
-
- // Authentication configuration
- AuthConfig auth;
- };
- #endif // SERVER_CONFIG_H
|