server_config.h 3.8 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788
  1. #ifndef SERVER_CONFIG_H
  2. #define SERVER_CONFIG_H
  3. #include <string>
  4. #include <vector>
  5. /**
  6. * @brief Authentication method enumeration
  7. */
  8. enum class AuthMethod {
  9. NONE, ///< No authentication (allow all access)
  10. PAM, ///< PAM authentication
  11. SHARED_KEY ///< Shared key authentication
  12. };
  13. /**
  14. * @brief Authentication configuration structure
  15. */
  16. struct AuthConfig {
  17. AuthMethod authMethod = AuthMethod::NONE; ///< Primary authentication method
  18. bool enableGuestAccess = false; ///< Allow unauthenticated access
  19. std::string sharedKey = ""; ///< Shared key for authentication
  20. std::string pamServiceName = "stable-diffusion-rest"; ///< PAM service name
  21. std::string dataDir = "./auth"; ///< Directory for authentication data
  22. std::vector<std::string> publicPaths; ///< Paths that don't require authentication
  23. std::vector<std::string> adminPaths; ///< Paths that require admin access
  24. std::vector<std::string> userPaths; ///< Paths that require user access
  25. std::string customPublicPaths; ///< Custom public paths (comma-separated)
  26. };
  27. // Server configuration structure
  28. struct ServerConfig {
  29. // Server settings
  30. std::string host = "0.0.0.0";
  31. int port = 8080;
  32. int maxConcurrentGenerations = 1;
  33. bool verbose = false;
  34. // Connection and timeout settings
  35. int connectionTimeoutMs = 500; // Connection timeout in milliseconds
  36. int readTimeoutMs = 500; // Read timeout in milliseconds
  37. int writeTimeoutMs = 500; // Write timeout in milliseconds
  38. // Generation limits
  39. int maxPromptLength = 10000; // Maximum prompt character length
  40. int maxNegativePromptLength = 10000; // Maximum negative prompt character length
  41. // Graceful shutdown delay
  42. int shutdownDelayMs = 100; // Delay in milliseconds for graceful shutdown
  43. // Required directory parameter
  44. std::string modelsDir = ""; // Base models directory (required, must be set via --models-dir)
  45. // Model type directory parameters
  46. // All default to standard folder names under modelsDir if not explicitly set
  47. std::string checkpoints = ""; // Checkpoints directory (default: checkpoints)
  48. std::string controlnetDir = ""; // ControlNet directory (default: controlnet)
  49. std::string embeddingsDir = ""; // Embeddings directory (default: embeddings)
  50. std::string esrganDir = ""; // ESRGAN directory (default: ESRGAN)
  51. std::string loraDir = ""; // LoRA directory (default: loras)
  52. std::string taesdDir = ""; // TAESD directory (default: TAESD)
  53. std::string vaeDir = ""; // VAE directory (default: vae)
  54. std::string diffusionModelsDir = ""; // Diffusion models directory (default: diffusion_models)
  55. // Queue and output directories
  56. std::string queueDir = "./queue"; // Directory to store queue job files
  57. std::string outputDir = "./output"; // Directory to store generated images/videos
  58. // UI directory (optional - for serving static web UI)
  59. std::string uiDir = ""; // Directory containing static web UI files
  60. // Logging options
  61. bool enableFileLogging = false;
  62. std::string logFilePath = "/var/log/stable-diffusion-rest/server.log";
  63. // Default admin credentials (for initial setup)
  64. std::string defaultAdminUsername = "admin";
  65. std::string defaultAdminPassword = "admin123";
  66. std::string defaultAdminEmail = "admin@localhost";
  67. // Hash all models option
  68. bool hashAllModels = false; // Hash all models during startup
  69. // Authentication configuration
  70. AuthConfig auth;
  71. };
  72. #endif // SERVER_CONFIG_H