diff --git a/MCServer/Plugins/APIDump/APIDesc.lua b/MCServer/Plugins/APIDump/APIDesc.lua index b4424203c..2224c549d 100644 --- a/MCServer/Plugins/APIDump/APIDesc.lua +++ b/MCServer/Plugins/APIDump/APIDesc.lua @@ -2171,15 +2171,6 @@ local CompressedString = cStringCompression.CompressStringGZIP("DataToCompress") Inherits = "cEntity", }, - cWebAdmin = - { - Desc = "", - Functions = - { - GetHTMLEscapedString = { Params = "string", Return = "string", Notes = "Gets the HTML escaped representation of a requested string. This is useful for user input and game data that is not guaranteed to be escaped already." }, - }, - }, -- cWebAdmin - cWebPlugin = { Desc = "", @@ -2502,39 +2493,6 @@ World:ForEachEntity( }, -- AdditionalInfo }, -- cWorld - HTTPFormData = - { - Desc = "This class stores data for one form element for a {{HTTPRequest|HTTP request}}.", - Variables = - { - Name = { Type = "string", Notes = "Name of the form element" }, - Type = { Type = "string", Notes = "Type of the data (usually empty)" }, - Value = { Type = "string", Notes = "Value of the form element. Contains the raw data as sent by the browser." }, - }, - }, -- HTTPFormData - - HTTPRequest = - { - Desc = [[ - This class encapsulates all the data that is sent to the WebAdmin through one HTTP request. Plugins - receive this class as a parameter to the function handling the web requests, as registered in the - FIXME: {{cPluginLua}}:AddWebPage(). - ]], - Constants = - { - FormData = { Notes = "Array-table of {{HTTPFormData}}, contains the values of individual form elements submitted by the client" }, - Params = { Notes = "Map-table of parameters given to the request in the URL (?param=value); if a form uses GET method, this is the same as FormData. For each parameter given as \"param=value\", there is an entry in the table with \"param\" as its key and \"value\" as its value." }, - PostParams = { Notes = "Map-table of data posted through a FORM - either a GET or POST method. Logically the same as FormData, but in a map-table format (for each parameter given as \"param=value\", there is an entry in the table with \"param\" as its key and \"value\" as its value)." }, - }, - - Variables = - { - Method = { Type = "string", Notes = "The HTTP method used to make the request. Usually GET or POST." }, - Path = { Type = "string", Notes = "The Path part of the URL (excluding the parameters)" }, - Username = { Type = "string", Notes = "Name of the logged-in user." }, - }, - }, -- HTTPRequest - ItemCategory = { Desc = [[ diff --git a/MCServer/Plugins/APIDump/Classes/WebAdmin.lua b/MCServer/Plugins/APIDump/Classes/WebAdmin.lua new file mode 100644 index 000000000..808335aea --- /dev/null +++ b/MCServer/Plugins/APIDump/Classes/WebAdmin.lua @@ -0,0 +1,51 @@ +return +{ + cWebAdmin = + { + Desc = "", + Functions = + { + GetHTMLEscapedString = { Params = "string", Return = "string", Notes = "(STATIC) Gets the HTML-escaped representation of a requested string. This is useful for user input and game data that is not guaranteed to be escaped already." }, + }, + }, -- cWebAdmin + + + HTTPFormData = + { + Desc = "This class stores data for one form element for a {{HTTPRequest|HTTP request}}.", + Variables = + { + Name = { Type = "string", Notes = "Name of the form element" }, + Type = { Type = "string", Notes = "Type of the data (usually empty)" }, + Value = { Type = "string", Notes = "Value of the form element. Contains the raw data as sent by the browser." }, + }, + }, -- HTTPFormData + + + HTTPRequest = + { + Desc = [[ + This class encapsulates all the data that is sent to the WebAdmin through one HTTP request. Plugins + receive this class as a parameter to the function handling the web requests, as registered in the + {{cPluginLua}}:AddWebPage(). + ]], + Constants = + { + FormData = { Notes = "Array-table of {{HTTPFormData}}, contains the values of individual form elements submitted by the client" }, + Params = { Notes = "Map-table of parameters given to the request in the URL (?param=value); if a form uses GET method, this is the same as FormData. For each parameter given as \"param=value\", there is an entry in the table with \"param\" as its key and \"value\" as its value." }, + PostParams = { Notes = "Map-table of data posted through a FORM - either a GET or POST method. Logically the same as FormData, but in a map-table format (for each parameter given as \"param=value\", there is an entry in the table with \"param\" as its key and \"value\" as its value)." }, + }, + + Variables = + { + Method = { Type = "string", Notes = "The HTTP method used to make the request. Usually GET or POST." }, + Path = { Type = "string", Notes = "The Path part of the URL (excluding the parameters)" }, + URL = { Type = "string", Notes = "The entire URL used for the request." }, + Username = { Type = "string", Notes = "Name of the logged-in user." }, + }, + }, -- HTTPRequest +} + + + + diff --git a/src/WebAdmin.cpp b/src/WebAdmin.cpp index aff3b4710..484626de3 100644 --- a/src/WebAdmin.cpp +++ b/src/WebAdmin.cpp @@ -234,7 +234,7 @@ void cWebAdmin::HandleWebadminRequest(cHTTPConnection & a_Connection, cHTTPReque bool ShouldWrapInTemplate = ((BareURL.length() > 1) && (BareURL[1] != '~')); // Retrieve the request data: - cWebadminRequestData * Data = (cWebadminRequestData *)(a_Request.GetUserData()); + cWebadminRequestData * Data = reinterpret_cast(a_Request.GetUserData()); if (Data == nullptr) { a_Connection.SendStatusAndReason(500, "Bad UserData"); @@ -244,6 +244,7 @@ void cWebAdmin::HandleWebadminRequest(cHTTPConnection & a_Connection, cHTTPReque // Wrap it all up for the Lua call: AString Template; HTTPTemplateRequest TemplateRequest; + TemplateRequest.Request.URL = a_Request.GetURL(); TemplateRequest.Request.Username = a_Request.GetAuthUsername(); TemplateRequest.Request.Method = a_Request.GetMethod(); TemplateRequest.Request.Path = BareURL.substr(1); diff --git a/src/WebAdmin.h b/src/WebAdmin.h index 1e1a9bfa9..4dbcc57a6 100644 --- a/src/WebAdmin.h +++ b/src/WebAdmin.h @@ -50,9 +50,18 @@ struct HTTPRequest typedef std::map< std::string, std::string > StringStringMap; typedef std::map< std::string, HTTPFormData > FormDataMap; + /** The entire URL presented to the HTTP server. */ + AString URL; + + /** HTTP method used for the request ("GET", "POST" etc.) */ AString Method; + + /** The Path part of the request's URL (excluding GET params). */ AString Path; + + /** Name of the logged-in user. Empty if not logged in. */ AString Username; + // tolua_end /** Parameters given in the URL, after the questionmark */