change cgi_ext to cgi_handler

This commit is contained in:
whaffman 2025-10-30 15:06:13 +01:00
parent 895ad1481b
commit 334c378d23
6 changed files with 9 additions and 11 deletions

View File

@ -67,7 +67,7 @@ server {
} }
# cgi_enabled yes; # cgi_enabled yes;
# cgi_ext .php /usr/bin/php-cgi; # cgi_handler .php /usr/bin/php-cgi;
} }
server { server {
@ -101,7 +101,7 @@ server {
# } # }
# cgi_enabled yes; # cgi_enabled yes;
cgi_ext .php /usr/bin/php-cgi; cgi_handler .php /usr/bin/php-cgi;
} }
server { server {
@ -121,7 +121,7 @@ server {
} }
cgi_enabled yes; cgi_enabled yes;
cgi_ext .php /usr/bin/php-cgi; cgi_handler .php /usr/bin/php-cgi;
} }
server { server {
@ -156,5 +156,5 @@ server {
} }
cgi_enabled yes; cgi_enabled yes;
cgi_ext .bla ./ubuntu_cgi_tester cgi_handler .bla ./ubuntu_cgi_tester
} }

View File

@ -1,5 +1,4 @@
#include <webserv/config/AConfig.hpp> // for AConfig #include <webserv/config/AConfig.hpp> // for AConfig
#include <webserv/config/directive/ADirective.hpp> // for ADirective #include <webserv/config/directive/ADirective.hpp> // for ADirective
#include <webserv/config/directive/DirectiveFactory.hpp> // for DirectiveFactory #include <webserv/config/directive/DirectiveFactory.hpp> // for DirectiveFactory
#include <webserv/config/directive/DirectiveValue.hpp> // for DirectiveValue #include <webserv/config/directive/DirectiveValue.hpp> // for DirectiveValue
@ -120,7 +119,7 @@ std::string AConfig::getCGIPath(const std::string &extension) const
Log::trace(LOCATION); Log::trace(LOCATION);
for (const auto &directive : directives_) for (const auto &directive : directives_)
{ {
if (directive->getName() != "cgi_ext") if (directive->getName() != "cgi_handler")
{ {
continue; continue;
} }

View File

@ -31,7 +31,7 @@ class DirectiveFactory
{.name = "autoindex", .type = "BoolDirective", .context = "gsl"}, {.name = "autoindex", .type = "BoolDirective", .context = "gsl"},
{.name = "allowed_methods", .type = "VectorDirective", .context = "gsl"}, {.name = "allowed_methods", .type = "VectorDirective", .context = "gsl"},
{.name = "cgi_enabled", .type = "BoolDirective", .context = "gsl"}, {.name = "cgi_enabled", .type = "BoolDirective", .context = "gsl"},
{.name = "cgi_ext", .type = "VectorDirective", .context = "gsl"}, {.name = "cgi_handler", .type = "VectorDirective", .context = "gsl"},
{.name = "cgi_timeout", .type = "IntDirective", .context = "gsl"}, {.name = "cgi_timeout", .type = "IntDirective", .context = "gsl"},
{.name = "upload_enabled", .type = "BoolDirective", .context = "gsl"}, {.name = "upload_enabled", .type = "BoolDirective", .context = "gsl"},
{.name = "upload_store", .type = "StringDirective", .context = "gsl"}, {.name = "upload_store", .type = "StringDirective", .context = "gsl"},

View File

@ -21,7 +21,7 @@ using DirectiveValueType = std::variant<int, // listen, error_page status, cgi_t
size_t, size_t,
bool, // autoindex, upload_enabled bool, // autoindex, upload_enabled
std::string, // host, server_name, root, cgi_pass, upload_store std::string, // host, server_name, root, cgi_pass, upload_store
std::vector<std::string>, // index, allowed_methods, cgi_ext std::vector<std::string>, // index, allowed_methods, cgi_handler
std::pair<int, std::string> // error_page (status, path), redirect std::pair<int, std::string> // error_page (status, path), redirect
>; >;

View File

@ -1,5 +1,4 @@
#include <webserv/config/validation/ConfigValidator.hpp> #include <webserv/config/validation/ConfigValidator.hpp>
#include <webserv/config/validation/ValidationEngine.hpp> // for ValidationEngine #include <webserv/config/validation/ValidationEngine.hpp> // for ValidationEngine
#include <webserv/config/validation/directive_rules/AValidationRule.hpp> // for AValidationRule #include <webserv/config/validation/directive_rules/AValidationRule.hpp> // for AValidationRule
#include <webserv/config/validation/directive_rules/AllowedValuesRule.hpp> // for AllowedValuesRule #include <webserv/config/validation/directive_rules/AllowedValuesRule.hpp> // for AllowedValuesRule
@ -40,7 +39,7 @@ ConfigValidator::ConfigValidator(const GlobalConfig *config) : engine_(std::make
engine_->addLocationRule("allowed_methods", std::make_unique<AllowedValuesRule>( engine_->addLocationRule("allowed_methods", std::make_unique<AllowedValuesRule>(
std::vector<std::string>{"GET", "POST", "DELETE", "PUT"}, false)); std::vector<std::string>{"GET", "POST", "DELETE", "PUT"}, false));
// engine_->addLocationRule("root", std::make_unique<FolderExistsRule>(true)); // engine_->addLocationRule("root", std::make_unique<FolderExistsRule>(true));
engine_->addLocationRule("cgi_ext", std::make_unique<CgiExtValidationRule>(false)); engine_->addLocationRule("cgi_handler", std::make_unique<CgiExtValidationRule>(false));
// TODO: Add a validation rule for redirect // TODO: Add a validation rule for redirect

View File

@ -17,7 +17,7 @@ CgiExtValidationRule::CgiExtValidationRule(bool requiresValue)
bool isAllowedCGIExtension(const std::string &extension) bool isAllowedCGIExtension(const std::string &extension)
{ {
static const std::vector<std::string> allowedExtensions = {".php", ".py", ".bla", ".sh"}; static const std::vector<std::string> allowedExtensions = {".php", ".py", ".bla", ".sh", ".cgi"};
return std::ranges::any_of(allowedExtensions, [&extension](const auto &it) { return extension == it; }); return std::ranges::any_of(allowedExtensions, [&extension](const auto &it) { return extension == it; });
} }