|
@@ -154,11 +154,11 @@ ServerConfig parseArguments(int argc, char* argv[]) {
|
|
|
config.auth.enableGuestAccess = true;
|
|
config.auth.enableGuestAccess = true;
|
|
|
} else if (arg == "--enable-unix-auth") {
|
|
} else if (arg == "--enable-unix-auth") {
|
|
|
// Deprecated flag - show warning and set auth method to UNIX
|
|
// Deprecated flag - show warning and set auth method to UNIX
|
|
|
- std::cerr << "Warning: --enable-unix-auth is deprecated. Use --auth unix instead." << std::endl;
|
|
|
|
|
|
|
+ LOG_WARNING("Warning: --enable-unix-auth is deprecated. Use --auth unix instead.");
|
|
|
config.auth.authMethod = AuthMethod::UNIX;
|
|
config.auth.authMethod = AuthMethod::UNIX;
|
|
|
} else if (arg == "--enable-pam-auth") {
|
|
} else if (arg == "--enable-pam-auth") {
|
|
|
// Deprecated flag - show warning and set auth method to PAM
|
|
// Deprecated flag - show warning and set auth method to PAM
|
|
|
- std::cerr << "Warning: --enable-pam-auth is deprecated. Use --auth pam instead." << std::endl;
|
|
|
|
|
|
|
+ LOG_WARNING("Warning: --enable-pam-auth is deprecated. Use --auth pam instead.");
|
|
|
config.auth.authMethod = AuthMethod::PAM;
|
|
config.auth.authMethod = AuthMethod::PAM;
|
|
|
} else if (arg == "--pam-service-name" && i + 1 < argc) {
|
|
} else if (arg == "--pam-service-name" && i + 1 < argc) {
|
|
|
config.auth.pamServiceName = argv[++i];
|
|
config.auth.pamServiceName = argv[++i];
|
|
@@ -187,83 +187,83 @@ ServerConfig parseArguments(int argc, char* argv[]) {
|
|
|
} else if (arg == "--jwt-audience" && i + 1 < argc) {
|
|
} else if (arg == "--jwt-audience" && i + 1 < argc) {
|
|
|
config.auth.jwtAudience = argv[++i];
|
|
config.auth.jwtAudience = argv[++i];
|
|
|
} else if (arg == "--help" || arg == "-h") {
|
|
} else if (arg == "--help" || arg == "-h") {
|
|
|
- std::cout << "stable-diffusion.cpp-rest server\n"
|
|
|
|
|
- << "Usage: " << argv[0] << " [options]\n\n"
|
|
|
|
|
- << "Required Options:\n"
|
|
|
|
|
- << " --models-dir <dir> Base models directory path (required)\n"
|
|
|
|
|
- << "\n"
|
|
|
|
|
- << "Server Options:\n"
|
|
|
|
|
- << " --host <host> Host address to bind to (default: 0.0.0.0)\n"
|
|
|
|
|
- << " --port <port> Port number to listen on (default: 8080)\n"
|
|
|
|
|
- << " --max-concurrent <num> Maximum concurrent generations (default: 1)\n"
|
|
|
|
|
- << " --queue-dir <dir> Queue persistence directory (default: ./queue)\n"
|
|
|
|
|
- << " --output-dir <dir> Output files directory (default: ./output)\n"
|
|
|
|
|
- << " --ui-dir <dir> Web UI static files directory (optional)\n"
|
|
|
|
|
- << " --verbose, -v Enable verbose logging\n"
|
|
|
|
|
- << " --enable-file-logging Enable logging to file\n"
|
|
|
|
|
- << " --log-file <path> Log file path (default: /var/log/stable-diffusion-rest/server.log)\n"
|
|
|
|
|
- << "\n"
|
|
|
|
|
- << "Network & Connection Options:\n"
|
|
|
|
|
- << " --connection-timeout <ms> Connection timeout in milliseconds (default: 500)\n"
|
|
|
|
|
- << " --read-timeout <ms> Read timeout in milliseconds (default: 500)\n"
|
|
|
|
|
- << " --write-timeout <ms> Write timeout in milliseconds (default: 500)\n"
|
|
|
|
|
- << "\n"
|
|
|
|
|
- << "Authentication Options:\n"
|
|
|
|
|
- << " --auth <method> Authentication method (none, jwt, api-key, unix, pam, optional)\n"
|
|
|
|
|
- << " --auth-method <method> Authentication method (alias for --auth)\n"
|
|
|
|
|
- << " --jwt-secret <secret> JWT secret key (auto-generated if not provided)\n"
|
|
|
|
|
- << " --jwt-expiration <minutes> JWT token expiration time (default: 60)\n"
|
|
|
|
|
- << " --enable-guest-access Allow unauthenticated guest access\n"
|
|
|
|
|
- << " --pam-service-name <name> PAM service name (default: stable-diffusion-rest)\n"
|
|
|
|
|
- << " --auth-data-dir <dir> Directory for authentication data (default: ./auth)\n"
|
|
|
|
|
- << " --public-paths <paths> Comma-separated list of public paths (default: /api/health,/api/status)\n"
|
|
|
|
|
- << " --jwt-audience <audience> JWT audience claim (default: stable-diffusion-rest)\n"
|
|
|
|
|
- << "\n"
|
|
|
|
|
- << "Deprecated Options (will be removed in future version):\n"
|
|
|
|
|
- << " --enable-unix-auth Deprecated: Use --auth unix instead\n"
|
|
|
|
|
- << " --enable-pam-auth Deprecated: Use --auth pam instead\n"
|
|
|
|
|
- << "\n"
|
|
|
|
|
- << "Model Directory Options:\n"
|
|
|
|
|
- << " All model directories are optional and default to standard folder names\n"
|
|
|
|
|
- << " under --models-dir. Only specify these if your folder names differ.\n"
|
|
|
|
|
- << "\n"
|
|
|
|
|
- << " --checkpoints <dir> Checkpoints directory (default: checkpoints)\n"
|
|
|
|
|
- << " --controlnet-dir <dir> ControlNet models directory (default: controlnet)\n"
|
|
|
|
|
- << " --embeddings-dir <dir> Embeddings directory (default: embeddings)\n"
|
|
|
|
|
- << " --esrgan-dir <dir> ESRGAN models directory (default: ESRGAN)\n"
|
|
|
|
|
- << " --lora-dir <dir> LoRA models directory (default: loras)\n"
|
|
|
|
|
- << " --taesd-dir <dir> TAESD models directory (default: TAESD)\n"
|
|
|
|
|
- << " --vae-dir <dir> VAE models directory (default: vae)\n"
|
|
|
|
|
- << " --diffusion-models-dir <dir> Diffusion models directory (default: diffusion_models)\n"
|
|
|
|
|
- << "\n"
|
|
|
|
|
- << "Generation Limits & Security:\n"
|
|
|
|
|
- << " --max-prompt-length <len> Maximum prompt character length (default: 10000)\n"
|
|
|
|
|
- << " --max-negative-prompt-length <len> Maximum negative prompt character length (default: 10000)\n"
|
|
|
|
|
- << " --shutdown-delay <ms> Graceful shutdown delay in milliseconds (default: 100)\n"
|
|
|
|
|
- << "\n"
|
|
|
|
|
- << "Default Admin Credentials:\n"
|
|
|
|
|
- << " --default-admin-username <name> Default admin username (default: admin)\n"
|
|
|
|
|
- << " --default-admin-password <pass> Default admin password (default: admin123)\n"
|
|
|
|
|
- << " --default-admin-email <email> Default admin email (default: admin@localhost)\n"
|
|
|
|
|
- << "\n"
|
|
|
|
|
- << "Other Options:\n"
|
|
|
|
|
- << " --help, -h Show this help message\n"
|
|
|
|
|
- << "\n"
|
|
|
|
|
- << "Path Resolution:\n"
|
|
|
|
|
- << " - Absolute paths are used as-is\n"
|
|
|
|
|
- << " - Relative paths are resolved relative to --models-dir\n"
|
|
|
|
|
- << " - Default folder names match standard SD model structure\n"
|
|
|
|
|
- << "\n"
|
|
|
|
|
- << "Examples:\n"
|
|
|
|
|
- << " # Use all defaults (requires standard folder structure)\n"
|
|
|
|
|
- << " " << argv[0] << " --models-dir /data/SD_MODELS\n"
|
|
|
|
|
- << "\n"
|
|
|
|
|
- << " # Override specific folders\n"
|
|
|
|
|
- << " " << argv[0] << " --models-dir /data/SD_MODELS --checkpoints my_checkpoints\n"
|
|
|
|
|
- << "\n"
|
|
|
|
|
- << " # Use absolute path for one folder\n"
|
|
|
|
|
- << " " << argv[0] << " --models-dir /data/SD_MODELS --lora-dir /other/path/loras\n"
|
|
|
|
|
- << std::endl;
|
|
|
|
|
|
|
+ LOG_INFO("stable-diffusion.cpp-rest server");
|
|
|
|
|
+ LOG_INFO("Usage: " + std::string(argv[0]) + " [options]");
|
|
|
|
|
+ LOG_INFO("");
|
|
|
|
|
+ LOG_INFO("Required Options:");
|
|
|
|
|
+ LOG_INFO(" --models-dir <dir> Base models directory path (required)");
|
|
|
|
|
+ LOG_INFO("");
|
|
|
|
|
+ LOG_INFO("Server Options:");
|
|
|
|
|
+ LOG_INFO(" --host <host> Host address to bind to (default: 0.0.0.0)");
|
|
|
|
|
+ LOG_INFO(" --port <port> Port number to listen on (default: 8080)");
|
|
|
|
|
+ LOG_INFO(" --max-concurrent <num> Maximum concurrent generations (default: 1)");
|
|
|
|
|
+ LOG_INFO(" --queue-dir <dir> Queue persistence directory (default: ./queue)");
|
|
|
|
|
+ LOG_INFO(" --output-dir <dir> Output files directory (default: ./output)");
|
|
|
|
|
+ LOG_INFO(" --ui-dir <dir> Web UI static files directory (optional)");
|
|
|
|
|
+ LOG_INFO(" --verbose, -v Enable verbose logging");
|
|
|
|
|
+ LOG_INFO(" --enable-file-logging Enable logging to file");
|
|
|
|
|
+ LOG_INFO(" --log-file <path> Log file path (default: /var/log/stable-diffusion-rest/server.log)");
|
|
|
|
|
+ LOG_INFO("");
|
|
|
|
|
+ LOG_INFO("Network & Connection Options:");
|
|
|
|
|
+ LOG_INFO(" --connection-timeout <ms> Connection timeout in milliseconds (default: 500)");
|
|
|
|
|
+ LOG_INFO(" --read-timeout <ms> Read timeout in milliseconds (default: 500)");
|
|
|
|
|
+ LOG_INFO(" --write-timeout <ms> Write timeout in milliseconds (default: 500)");
|
|
|
|
|
+ LOG_INFO("");
|
|
|
|
|
+ LOG_INFO("Authentication Options:");
|
|
|
|
|
+ LOG_INFO(" --auth <method> Authentication method (none, jwt, api-key, unix, pam, optional)");
|
|
|
|
|
+ LOG_INFO(" --auth-method <method> Authentication method (alias for --auth)");
|
|
|
|
|
+ LOG_INFO(" --jwt-secret <secret> JWT secret key (auto-generated if not provided)");
|
|
|
|
|
+ LOG_INFO(" --jwt-expiration <minutes> JWT token expiration time (default: 60)");
|
|
|
|
|
+ LOG_INFO(" --enable-guest-access Allow unauthenticated guest access");
|
|
|
|
|
+ LOG_INFO(" --pam-service-name <name> PAM service name (default: stable-diffusion-rest)");
|
|
|
|
|
+ LOG_INFO(" --auth-data-dir <dir> Directory for authentication data (default: ./auth)");
|
|
|
|
|
+ LOG_INFO(" --public-paths <paths> Comma-separated list of public paths (default: /api/health,/api/status)");
|
|
|
|
|
+ LOG_INFO(" --jwt-audience <audience> JWT audience claim (default: stable-diffusion-rest)");
|
|
|
|
|
+ LOG_INFO("");
|
|
|
|
|
+ LOG_INFO("Deprecated Options (will be removed in future version):");
|
|
|
|
|
+ LOG_INFO(" --enable-unix-auth Deprecated: Use --auth unix instead");
|
|
|
|
|
+ LOG_INFO(" --enable-pam-auth Deprecated: Use --auth pam instead");
|
|
|
|
|
+ LOG_INFO("");
|
|
|
|
|
+ LOG_INFO("Model Directory Options:");
|
|
|
|
|
+ LOG_INFO(" All model directories are optional and default to standard folder names");
|
|
|
|
|
+ LOG_INFO(" under --models-dir. Only specify these if your folder names differ.");
|
|
|
|
|
+ LOG_INFO("");
|
|
|
|
|
+ LOG_INFO(" --checkpoints <dir> Checkpoints directory (default: checkpoints)");
|
|
|
|
|
+ LOG_INFO(" --controlnet-dir <dir> ControlNet models directory (default: controlnet)");
|
|
|
|
|
+ LOG_INFO(" --embeddings-dir <dir> Embeddings directory (default: embeddings)");
|
|
|
|
|
+ LOG_INFO(" --esrgan-dir <dir> ESRGAN models directory (default: ESRGAN)");
|
|
|
|
|
+ LOG_INFO(" --lora-dir <dir> LoRA models directory (default: loras)");
|
|
|
|
|
+ LOG_INFO(" --taesd-dir <dir> TAESD models directory (default: TAESD)");
|
|
|
|
|
+ LOG_INFO(" --vae-dir <dir> VAE models directory (default: vae)");
|
|
|
|
|
+ LOG_INFO(" --diffusion-models-dir <dir> Diffusion models directory (default: diffusion_models)");
|
|
|
|
|
+ LOG_INFO("");
|
|
|
|
|
+ LOG_INFO("Generation Limits & Security:");
|
|
|
|
|
+ LOG_INFO(" --max-prompt-length <len> Maximum prompt character length (default: 10000)");
|
|
|
|
|
+ LOG_INFO(" --max-negative-prompt-length <len> Maximum negative prompt character length (default: 10000)");
|
|
|
|
|
+ LOG_INFO(" --shutdown-delay <ms> Graceful shutdown delay in milliseconds (default: 100)");
|
|
|
|
|
+ LOG_INFO("");
|
|
|
|
|
+ LOG_INFO("Default Admin Credentials:");
|
|
|
|
|
+ LOG_INFO(" --default-admin-username <name> Default admin username (default: admin)");
|
|
|
|
|
+ LOG_INFO(" --default-admin-password <pass> Default admin password (default: admin123)");
|
|
|
|
|
+ LOG_INFO(" --default-admin-email <email> Default admin email (default: admin@localhost)");
|
|
|
|
|
+ LOG_INFO("");
|
|
|
|
|
+ LOG_INFO("Other Options:");
|
|
|
|
|
+ LOG_INFO(" --help, -h Show this help message");
|
|
|
|
|
+ LOG_INFO("");
|
|
|
|
|
+ LOG_INFO("Path Resolution:");
|
|
|
|
|
+ LOG_INFO(" - Absolute paths are used as-is");
|
|
|
|
|
+ LOG_INFO(" - Relative paths are resolved relative to --models-dir");
|
|
|
|
|
+ LOG_INFO(" - Default folder names match standard SD model structure");
|
|
|
|
|
+ LOG_INFO("");
|
|
|
|
|
+ LOG_INFO("Examples:");
|
|
|
|
|
+ LOG_INFO(" # Use all defaults (requires standard folder structure)");
|
|
|
|
|
+ LOG_INFO(" " + std::string(argv[0]) + " --models-dir /data/SD_MODELS");
|
|
|
|
|
+ LOG_INFO("");
|
|
|
|
|
+ LOG_INFO(" # Override specific folders");
|
|
|
|
|
+ LOG_INFO(" " + std::string(argv[0]) + " --models-dir /data/SD_MODELS --checkpoints my_checkpoints");
|
|
|
|
|
+ LOG_INFO("");
|
|
|
|
|
+ LOG_INFO(" # Use absolute path for one folder");
|
|
|
|
|
+ LOG_INFO(" " + std::string(argv[0]) + " --models-dir /data/SD_MODELS --lora-dir /other/path/loras");
|
|
|
exit(0);
|
|
exit(0);
|
|
|
} else {
|
|
} else {
|
|
|
LOG_ERROR("Unknown argument: " + arg);
|
|
LOG_ERROR("Unknown argument: " + arg);
|