mirror of
https://github.com/Relintai/pandemonium_engine.git
synced 2025-02-02 14:25:55 +01:00
Store incoming http request parameters properly.
This commit is contained in:
parent
df2859b9d0
commit
e5719c991b
@ -328,7 +328,7 @@ int HTTPParser::on_header_value(const char *at, size_t length) {
|
|||||||
ERR_PRINT("header_val " + s);
|
ERR_PRINT("header_val " + s);
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
_request->add_post_parameter(_queued_header_field, s);
|
_request->add_header_parameter(_queued_header_field, s);
|
||||||
|
|
||||||
if (_queued_header_field == "host") {
|
if (_queued_header_field == "host") {
|
||||||
_request->set_host(s);
|
_request->set_host(s);
|
||||||
|
@ -281,6 +281,9 @@ void HTTPServerConnection::send_file(Ref<WebServerRequest> request, const String
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
//String range = request->get_htt
|
||||||
|
|
||||||
|
|
||||||
String s = "HTTP/1.1 " + HTTPServerEnums::get_status_code_header_string(request->get_status_code()) + "\r\n";
|
String s = "HTTP/1.1 " + HTTPServerEnums::get_status_code_header_string(request->get_status_code()) + "\r\n";
|
||||||
|
|
||||||
if (!custom_headers.has("Connection")) {
|
if (!custom_headers.has("Connection")) {
|
||||||
|
@ -124,6 +124,17 @@ void SimpleWebServerRequest::set_get_parameter(const String &key, const String &
|
|||||||
_get_parameters[key] = value;
|
_get_parameters[key] = value;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
String SimpleWebServerRequest::get_header_parameter(const String &key) const {
|
||||||
|
if (!_header_parameters.has(key)) {
|
||||||
|
return "";
|
||||||
|
}
|
||||||
|
|
||||||
|
return _header_parameters[key];
|
||||||
|
}
|
||||||
|
void SimpleWebServerRequest::set_header_parameter(const String &key, const String &value) {
|
||||||
|
_header_parameters[key] = value;
|
||||||
|
}
|
||||||
|
|
||||||
void SimpleWebServerRequest::send_redirect(const String &location, const HTTPServerEnums::HTTPStatusCode status_code) {
|
void SimpleWebServerRequest::send_redirect(const String &location, const HTTPServerEnums::HTTPStatusCode status_code) {
|
||||||
ERR_FAIL_COND(!_server);
|
ERR_FAIL_COND(!_server);
|
||||||
|
|
||||||
@ -167,6 +178,10 @@ void SimpleWebServerRequest::add_get_parameter(const String &key, const String &
|
|||||||
_get_parameters[key] = value;
|
_get_parameters[key] = value;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void SimpleWebServerRequest::add_header_parameter(const String &key, const String &value) {
|
||||||
|
_header_parameters[key] = value;
|
||||||
|
}
|
||||||
|
|
||||||
void SimpleWebServerRequest::set_parser_path(const String &value) {
|
void SimpleWebServerRequest::set_parser_path(const String &value) {
|
||||||
//https://www.rfc-editor.org/rfc/rfc3986.txt
|
//https://www.rfc-editor.org/rfc/rfc3986.txt
|
||||||
//3.4. Query
|
//3.4. Query
|
||||||
|
@ -73,6 +73,9 @@ public:
|
|||||||
virtual void set_post_parameter(const String &key, const String &value);
|
virtual void set_post_parameter(const String &key, const String &value);
|
||||||
virtual void set_get_parameter(const String &key, const String &value);
|
virtual void set_get_parameter(const String &key, const String &value);
|
||||||
|
|
||||||
|
virtual String get_header_parameter(const String &key) const;
|
||||||
|
virtual void set_header_parameter(const String &key, const String &value);
|
||||||
|
|
||||||
virtual void send_redirect(const String &location, const HTTPServerEnums::HTTPStatusCode status_code = HTTPServerEnums::HTTP_STATUS_CODE_302_FOUND);
|
virtual void send_redirect(const String &location, const HTTPServerEnums::HTTPStatusCode status_code = HTTPServerEnums::HTTP_STATUS_CODE_302_FOUND);
|
||||||
virtual void send();
|
virtual void send();
|
||||||
virtual void send_file(const String &p_file_path);
|
virtual void send_file(const String &p_file_path);
|
||||||
@ -81,6 +84,7 @@ public:
|
|||||||
|
|
||||||
void add_post_parameter(const String &key, const String &value);
|
void add_post_parameter(const String &key, const String &value);
|
||||||
void add_get_parameter(const String &key, const String &value);
|
void add_get_parameter(const String &key, const String &value);
|
||||||
|
void add_header_parameter(const String &key, const String &value);
|
||||||
void set_parser_path(const String &value);
|
void set_parser_path(const String &value);
|
||||||
void set_host(const String &value);
|
void set_host(const String &value);
|
||||||
|
|
||||||
@ -107,6 +111,7 @@ protected:
|
|||||||
|
|
||||||
HashMap<String, String> _post_parameters;
|
HashMap<String, String> _post_parameters;
|
||||||
HashMap<String, String> _get_parameters;
|
HashMap<String, String> _get_parameters;
|
||||||
|
HashMap<String, String> _header_parameters;
|
||||||
String _parser_path;
|
String _parser_path;
|
||||||
String _host;
|
String _host;
|
||||||
|
|
||||||
|
@ -136,7 +136,7 @@ bool WebServerRequest::has_csrf_token() {
|
|||||||
|
|
||||||
String WebServerRequest::get_csrf_token() {
|
String WebServerRequest::get_csrf_token() {
|
||||||
if (!_session.is_valid()) {
|
if (!_session.is_valid()) {
|
||||||
return "";
|
return String();
|
||||||
}
|
}
|
||||||
|
|
||||||
const Variant &val = _session->get_const("csrf_token");
|
const Variant &val = _session->get_const("csrf_token");
|
||||||
@ -174,7 +174,7 @@ bool WebServerRequest::validate_csrf_token() {
|
|||||||
}
|
}
|
||||||
|
|
||||||
String WebServerRequest::get_cookie(const String &key) {
|
String WebServerRequest::get_cookie(const String &key) {
|
||||||
return "";
|
return String();
|
||||||
}
|
}
|
||||||
|
|
||||||
void WebServerRequest::response_add_cookie(const Ref<WebServerCookie> &cookie) {
|
void WebServerRequest::response_add_cookie(const Ref<WebServerCookie> &cookie) {
|
||||||
@ -214,7 +214,7 @@ String WebServerRequest::custom_response_header_get(const StringName &key) {
|
|||||||
String *e = _custom_response_headers.getptr(key);
|
String *e = _custom_response_headers.getptr(key);
|
||||||
|
|
||||||
if (!e) {
|
if (!e) {
|
||||||
return "";
|
return String();
|
||||||
}
|
}
|
||||||
|
|
||||||
return *e;
|
return *e;
|
||||||
@ -252,10 +252,10 @@ int WebServerRequest::get_file_count() const {
|
|||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
String WebServerRequest::get_file_file_name(const int index) const {
|
String WebServerRequest::get_file_file_name(const int index) const {
|
||||||
return "";
|
return String();
|
||||||
}
|
}
|
||||||
String WebServerRequest::get_file_key(const int index) const {
|
String WebServerRequest::get_file_key(const int index) const {
|
||||||
return "";
|
return String();
|
||||||
}
|
}
|
||||||
int WebServerRequest::get_file_length(const int index) const {
|
int WebServerRequest::get_file_length(const int index) const {
|
||||||
return 0;
|
return 0;
|
||||||
@ -264,19 +264,19 @@ PoolByteArray WebServerRequest::get_file_data(const int index) const {
|
|||||||
return PoolByteArray();
|
return PoolByteArray();
|
||||||
}
|
}
|
||||||
String WebServerRequest::get_file_data_str(const int index) const {
|
String WebServerRequest::get_file_data_str(const int index) const {
|
||||||
return "";
|
return String();
|
||||||
}
|
}
|
||||||
|
|
||||||
String WebServerRequest::get_parameter(const String &key) const {
|
String WebServerRequest::get_parameter(const String &key) const {
|
||||||
return "";
|
return String();
|
||||||
}
|
}
|
||||||
|
|
||||||
String WebServerRequest::get_post_parameter(const String &key) const {
|
String WebServerRequest::get_post_parameter(const String &key) const {
|
||||||
return "";
|
return String();
|
||||||
}
|
}
|
||||||
|
|
||||||
String WebServerRequest::get_get_parameter(const String &key) const {
|
String WebServerRequest::get_get_parameter(const String &key) const {
|
||||||
return "";
|
return String();
|
||||||
}
|
}
|
||||||
|
|
||||||
void WebServerRequest::set_post_parameter(const String &key, const String &value) {
|
void WebServerRequest::set_post_parameter(const String &key, const String &value) {
|
||||||
@ -284,6 +284,12 @@ void WebServerRequest::set_post_parameter(const String &key, const String &value
|
|||||||
void WebServerRequest::set_get_parameter(const String &key, const String &value) {
|
void WebServerRequest::set_get_parameter(const String &key, const String &value) {
|
||||||
}
|
}
|
||||||
|
|
||||||
|
String WebServerRequest::get_header_parameter(const String &key) const {
|
||||||
|
return String();
|
||||||
|
}
|
||||||
|
void WebServerRequest::set_header_parameter(const String &key, const String &value) {
|
||||||
|
}
|
||||||
|
|
||||||
HTTPServerEnums::HTTPStatusCode WebServerRequest::get_status_code() const {
|
HTTPServerEnums::HTTPStatusCode WebServerRequest::get_status_code() const {
|
||||||
return _status_code;
|
return _status_code;
|
||||||
}
|
}
|
||||||
@ -343,7 +349,7 @@ void WebServerRequest::send_error(int error_code) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
String WebServerRequest::parser_get_path() {
|
String WebServerRequest::parser_get_path() {
|
||||||
return "";
|
return String();
|
||||||
}
|
}
|
||||||
|
|
||||||
void WebServerRequest::setup_url_stack() {
|
void WebServerRequest::setup_url_stack() {
|
||||||
@ -517,7 +523,7 @@ String WebServerRequest::get_url_site_add(const String &add) const {
|
|||||||
}
|
}
|
||||||
|
|
||||||
String WebServerRequest::get_host() const {
|
String WebServerRequest::get_host() const {
|
||||||
return "";
|
return String();
|
||||||
}
|
}
|
||||||
|
|
||||||
void WebServerRequest::update() {
|
void WebServerRequest::update() {
|
||||||
@ -642,6 +648,9 @@ void WebServerRequest::_bind_methods() {
|
|||||||
ClassDB::bind_method(D_METHOD("set_post_parameter", "key", "value"), &WebServerRequest::set_post_parameter);
|
ClassDB::bind_method(D_METHOD("set_post_parameter", "key", "value"), &WebServerRequest::set_post_parameter);
|
||||||
ClassDB::bind_method(D_METHOD("set_get_parameter", "key", "value"), &WebServerRequest::set_get_parameter);
|
ClassDB::bind_method(D_METHOD("set_get_parameter", "key", "value"), &WebServerRequest::set_get_parameter);
|
||||||
|
|
||||||
|
ClassDB::bind_method(D_METHOD("get_header_parameter", "key"), &WebServerRequest::get_header_parameter);
|
||||||
|
ClassDB::bind_method(D_METHOD("set_header_parameter", "key", "value"), &WebServerRequest::set_header_parameter);
|
||||||
|
|
||||||
ClassDB::bind_method(D_METHOD("get_status_code"), &WebServerRequest::get_status_code);
|
ClassDB::bind_method(D_METHOD("get_status_code"), &WebServerRequest::get_status_code);
|
||||||
ClassDB::bind_method(D_METHOD("set_status_code", "val"), &WebServerRequest::set_status_code);
|
ClassDB::bind_method(D_METHOD("set_status_code", "val"), &WebServerRequest::set_status_code);
|
||||||
ADD_PROPERTY(PropertyInfo(Variant::INT, "status_code"), "set_status_code", "get_status_code");
|
ADD_PROPERTY(PropertyInfo(Variant::INT, "status_code"), "set_status_code", "get_status_code");
|
||||||
|
@ -125,6 +125,9 @@ public:
|
|||||||
virtual void set_post_parameter(const String &key, const String &value);
|
virtual void set_post_parameter(const String &key, const String &value);
|
||||||
virtual void set_get_parameter(const String &key, const String &value);
|
virtual void set_get_parameter(const String &key, const String &value);
|
||||||
|
|
||||||
|
virtual String get_header_parameter(const String &key) const;
|
||||||
|
virtual void set_header_parameter(const String &key, const String &value);
|
||||||
|
|
||||||
HTTPServerEnums::HTTPStatusCode get_status_code() const;
|
HTTPServerEnums::HTTPStatusCode get_status_code() const;
|
||||||
void set_status_code(const HTTPServerEnums::HTTPStatusCode status_code);
|
void set_status_code(const HTTPServerEnums::HTTPStatusCode status_code);
|
||||||
|
|
||||||
|
@ -85,6 +85,13 @@ void WebServerRequestScriptable::set_get_parameter(const String &key, const Stri
|
|||||||
call("_set_get_parameter", key, value);
|
call("_set_get_parameter", key, value);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
String WebServerRequestScriptable::get_header_parameter(const String &key) const {
|
||||||
|
return const_cast<WebServerRequestScriptable *>(this)->call("_get_header_parameter", key);
|
||||||
|
}
|
||||||
|
void WebServerRequestScriptable::set_header_parameter(const String &key, const String &value) {
|
||||||
|
call("_set_header_parameter", key, value);
|
||||||
|
}
|
||||||
|
|
||||||
void WebServerRequestScriptable::send_redirect(const String &location, const HTTPServerEnums::HTTPStatusCode status_code) {
|
void WebServerRequestScriptable::send_redirect(const String &location, const HTTPServerEnums::HTTPStatusCode status_code) {
|
||||||
call("_send_redirect", location, status_code);
|
call("_send_redirect", location, status_code);
|
||||||
}
|
}
|
||||||
@ -128,7 +135,7 @@ void WebServerRequestScriptable::update() {
|
|||||||
// script virtuals
|
// script virtuals
|
||||||
|
|
||||||
String WebServerRequestScriptable::_get_cookie(const String &key) {
|
String WebServerRequestScriptable::_get_cookie(const String &key) {
|
||||||
return "";
|
return String();
|
||||||
}
|
}
|
||||||
|
|
||||||
HTTPServerEnums::HTTPMethod WebServerRequestScriptable::_get_method() const {
|
HTTPServerEnums::HTTPMethod WebServerRequestScriptable::_get_method() const {
|
||||||
@ -141,10 +148,10 @@ int WebServerRequestScriptable::_get_file_count() const {
|
|||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
String WebServerRequestScriptable::_get_file_file_name(const int index) const {
|
String WebServerRequestScriptable::_get_file_file_name(const int index) const {
|
||||||
return "";
|
return String();
|
||||||
}
|
}
|
||||||
String WebServerRequestScriptable::_get_file_key(const int index) const {
|
String WebServerRequestScriptable::_get_file_key(const int index) const {
|
||||||
return "";
|
return String();
|
||||||
}
|
}
|
||||||
int WebServerRequestScriptable::_get_file_length(const int index) const {
|
int WebServerRequestScriptable::_get_file_length(const int index) const {
|
||||||
return 0;
|
return 0;
|
||||||
@ -153,19 +160,19 @@ PoolByteArray WebServerRequestScriptable::_get_file_data(const int index) const
|
|||||||
return PoolByteArray();
|
return PoolByteArray();
|
||||||
}
|
}
|
||||||
String WebServerRequestScriptable::_get_file_data_str(const int index) const {
|
String WebServerRequestScriptable::_get_file_data_str(const int index) const {
|
||||||
return "";
|
return String();
|
||||||
}
|
}
|
||||||
|
|
||||||
String WebServerRequestScriptable::_get_parameter(const String &key) const {
|
String WebServerRequestScriptable::_get_parameter(const String &key) const {
|
||||||
return "";
|
return String();
|
||||||
}
|
}
|
||||||
|
|
||||||
String WebServerRequestScriptable::_get_post_parameter(const String &key) const {
|
String WebServerRequestScriptable::_get_post_parameter(const String &key) const {
|
||||||
return "";
|
return String();
|
||||||
}
|
}
|
||||||
|
|
||||||
String WebServerRequestScriptable::_get_get_parameter(const String &key) const {
|
String WebServerRequestScriptable::_get_get_parameter(const String &key) const {
|
||||||
return "";
|
return String();
|
||||||
}
|
}
|
||||||
|
|
||||||
void WebServerRequestScriptable::_set_post_parameter(const String &key, const String &value) {
|
void WebServerRequestScriptable::_set_post_parameter(const String &key, const String &value) {
|
||||||
@ -173,6 +180,12 @@ void WebServerRequestScriptable::_set_post_parameter(const String &key, const St
|
|||||||
void WebServerRequestScriptable::_set_get_parameter(const String &key, const String &value) {
|
void WebServerRequestScriptable::_set_get_parameter(const String &key, const String &value) {
|
||||||
}
|
}
|
||||||
|
|
||||||
|
String WebServerRequestScriptable::_get_header_parameter(const String &key) const {
|
||||||
|
return String();
|
||||||
|
}
|
||||||
|
void WebServerRequestScriptable::_set_header_parameter(const String &key, const String &value) {
|
||||||
|
}
|
||||||
|
|
||||||
void WebServerRequestScriptable::_send_redirect(const String &location, const HTTPServerEnums::HTTPStatusCode status_code) {
|
void WebServerRequestScriptable::_send_redirect(const String &location, const HTTPServerEnums::HTTPStatusCode status_code) {
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -224,7 +237,7 @@ void WebServerRequestScriptable::_send_error(int error_code) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
String WebServerRequestScriptable::_parser_get_path() {
|
String WebServerRequestScriptable::_parser_get_path() {
|
||||||
return "";
|
return String();
|
||||||
}
|
}
|
||||||
|
|
||||||
String WebServerRequestScriptable::_get_path_full() const {
|
String WebServerRequestScriptable::_get_path_full() const {
|
||||||
@ -232,7 +245,7 @@ String WebServerRequestScriptable::_get_path_full() const {
|
|||||||
}
|
}
|
||||||
|
|
||||||
String WebServerRequestScriptable::_get_host() const {
|
String WebServerRequestScriptable::_get_host() const {
|
||||||
return "";
|
return String();
|
||||||
}
|
}
|
||||||
|
|
||||||
void WebServerRequestScriptable::_update() {
|
void WebServerRequestScriptable::_update() {
|
||||||
@ -271,6 +284,9 @@ void WebServerRequestScriptable::_bind_methods() {
|
|||||||
BIND_VMETHOD(MethodInfo("_set_post_parameter", PropertyInfo(Variant::STRING, "key"), PropertyInfo(Variant::STRING, "value")));
|
BIND_VMETHOD(MethodInfo("_set_post_parameter", PropertyInfo(Variant::STRING, "key"), PropertyInfo(Variant::STRING, "value")));
|
||||||
BIND_VMETHOD(MethodInfo("_set_get_parameter", PropertyInfo(Variant::STRING, "key"), PropertyInfo(Variant::STRING, "value")));
|
BIND_VMETHOD(MethodInfo("_set_get_parameter", PropertyInfo(Variant::STRING, "key"), PropertyInfo(Variant::STRING, "value")));
|
||||||
|
|
||||||
|
BIND_VMETHOD(MethodInfo("_get_header_parameter", PropertyInfo(Variant::STRING, "key")));
|
||||||
|
BIND_VMETHOD(MethodInfo("_set_header_parameter", PropertyInfo(Variant::STRING, "key"), PropertyInfo(Variant::STRING, "value")));
|
||||||
|
|
||||||
BIND_VMETHOD(MethodInfo("_send_redirect", PropertyInfo(Variant::STRING, "location"), PropertyInfo(Variant::INT, "status_code")));
|
BIND_VMETHOD(MethodInfo("_send_redirect", PropertyInfo(Variant::STRING, "location"), PropertyInfo(Variant::INT, "status_code")));
|
||||||
|
|
||||||
BIND_VMETHOD(MethodInfo("_compile_body"));
|
BIND_VMETHOD(MethodInfo("_compile_body"));
|
||||||
@ -304,6 +320,9 @@ void WebServerRequestScriptable::_bind_methods() {
|
|||||||
ClassDB::bind_method(D_METHOD("_set_post_parameter", "key", "value"), &WebServerRequestScriptable::_set_post_parameter);
|
ClassDB::bind_method(D_METHOD("_set_post_parameter", "key", "value"), &WebServerRequestScriptable::_set_post_parameter);
|
||||||
ClassDB::bind_method(D_METHOD("_set_get_parameter", "key", "value"), &WebServerRequestScriptable::_set_get_parameter);
|
ClassDB::bind_method(D_METHOD("_set_get_parameter", "key", "value"), &WebServerRequestScriptable::_set_get_parameter);
|
||||||
|
|
||||||
|
ClassDB::bind_method(D_METHOD("_get_header_parameter", "key"), &WebServerRequestScriptable::_get_header_parameter);
|
||||||
|
ClassDB::bind_method(D_METHOD("_set_header_parameter", "key", "value"), &WebServerRequestScriptable::_set_header_parameter);
|
||||||
|
|
||||||
ClassDB::bind_method(D_METHOD("_send_redirect", "location", "status_code"), &WebServerRequestScriptable::_send_redirect);
|
ClassDB::bind_method(D_METHOD("_send_redirect", "location", "status_code"), &WebServerRequestScriptable::_send_redirect);
|
||||||
|
|
||||||
ClassDB::bind_method(D_METHOD("_compile_body"), &WebServerRequestScriptable::_compile_body);
|
ClassDB::bind_method(D_METHOD("_compile_body"), &WebServerRequestScriptable::_compile_body);
|
||||||
|
@ -72,6 +72,9 @@ public:
|
|||||||
virtual void set_post_parameter(const String &key, const String &value);
|
virtual void set_post_parameter(const String &key, const String &value);
|
||||||
virtual void set_get_parameter(const String &key, const String &value);
|
virtual void set_get_parameter(const String &key, const String &value);
|
||||||
|
|
||||||
|
virtual String get_header_parameter(const String &key) const;
|
||||||
|
virtual void set_header_parameter(const String &key, const String &value);
|
||||||
|
|
||||||
virtual void send_redirect(const String &location, const HTTPServerEnums::HTTPStatusCode status_code = HTTPServerEnums::HTTP_STATUS_CODE_302_FOUND);
|
virtual void send_redirect(const String &location, const HTTPServerEnums::HTTPStatusCode status_code = HTTPServerEnums::HTTP_STATUS_CODE_302_FOUND);
|
||||||
virtual void compile_body();
|
virtual void compile_body();
|
||||||
virtual void compile_and_send_body();
|
virtual void compile_and_send_body();
|
||||||
@ -105,6 +108,9 @@ public:
|
|||||||
virtual void _set_post_parameter(const String &key, const String &value);
|
virtual void _set_post_parameter(const String &key, const String &value);
|
||||||
virtual void _set_get_parameter(const String &key, const String &value);
|
virtual void _set_get_parameter(const String &key, const String &value);
|
||||||
|
|
||||||
|
virtual String _get_header_parameter(const String &key) const;
|
||||||
|
virtual void _set_header_parameter(const String &key, const String &value);
|
||||||
|
|
||||||
void _send_redirect(const String &location, const HTTPServerEnums::HTTPStatusCode status_code);
|
void _send_redirect(const String &location, const HTTPServerEnums::HTTPStatusCode status_code);
|
||||||
void _compile_body();
|
void _compile_body();
|
||||||
void _compile_and_send_body();
|
void _compile_and_send_body();
|
||||||
|
Loading…
Reference in New Issue
Block a user