server_config.h 4.2 KB

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