some testing for get web gui requests

This commit is contained in:
Madpeter 2020-05-12 00:10:30 +01:00
parent cf73689e02
commit 95729fdaba

View file

@ -96,7 +96,7 @@ namespace BetterSecondBot.HttpServer
webui myUI = new webui(Config,Bot); webui myUI = new webui(Config,Bot);
while (Bot.KillMe == false) while (Bot.KillMe == false)
{ {
HttpListenerContext ctx = await listener.GetContextAsync(); HttpListenerContext ctx = await listener.GetContextAsync().ConfigureAwait(true);
HttpListenerRequest req = ctx.Request; HttpListenerRequest req = ctx.Request;
HttpListenerResponse resp = ctx.Response; HttpListenerResponse resp = ctx.Response;
string test = req.Url.AbsolutePath.Substring(1); string test = req.Url.AbsolutePath.Substring(1);
@ -110,13 +110,24 @@ namespace BetterSecondBot.HttpServer
resp.ContentType = "text/html"; resp.ContentType = "text/html";
if (req.HttpMethod == "GET") if (req.HttpMethod == "GET")
{ {
KeyValuePair<string, byte[]> replydata = myUI.process(http_args, req.Cookies); KeyValuePair<string, byte[]> replydata = myUI.Get_Process(http_args, req.Cookies);
if (replydata.Value != null)
{
resp.ContentType = replydata.Key; resp.ContentType = replydata.Key;
data = replydata.Value; data = replydata.Value;
resp.ContentLength64 = data.LongLength; resp.ContentLength64 = data.LongLength;
await resp.OutputStream.WriteAsync(data, 0, data.Length); await resp.OutputStream.WriteAsync(data, 0, data.Length).ConfigureAwait(true);
resp.Close(); resp.Close();
} }
else
{
data = Encoding.UTF8.GetBytes("error with service");
resp.ContentLength64 = data.LongLength;
resp.ContentType = "text/html";
await resp.OutputStream.WriteAsync(data, 0, data.Length).ConfigureAwait(true);
resp.Close();
}
}
else if (req.HttpMethod == "POST") else if (req.HttpMethod == "POST")
{ {
string text; string text;
@ -136,13 +147,23 @@ namespace BetterSecondBot.HttpServer
} }
} }
resp.StatusCode = 200;
KeyValuePair<bool, string> UI_process = myUI.Post_process(http_args,post_args);
if (UI_process.Key == false)
{
data = Encoding.UTF8.GetBytes(UI_process.Value);
resp.ContentLength64 = data.LongLength;
await resp.OutputStream.WriteAsync(data, 0, data.Length).ConfigureAwait(true);
}
else
{
bool accept_request = false; bool accept_request = false;
string why_request_failed = "Bad signing request"; string why_request_failed = "Bad signing request";
string command = ""; string command = "";
string arg = ""; string arg = "";
string signing_code; string signing_code;
resp.StatusCode = 200;
if (post_args.ContainsKey("command") == true) if (post_args.ContainsKey("command") == true)
{ {
command = post_args["command"]; command = post_args["command"];
@ -180,6 +201,8 @@ namespace BetterSecondBot.HttpServer
} }
resp.ContentLength64 = data.LongLength; resp.ContentLength64 = data.LongLength;
await resp.OutputStream.WriteAsync(data, 0, data.Length); await resp.OutputStream.WriteAsync(data, 0, data.Length);
}
resp.Close(); resp.Close();
} }
} }
@ -203,11 +226,18 @@ namespace BetterSecondBot.HttpServer
ConsoleLog.Crit("if running on windows please check: https://docs.microsoft.com/en-us/dotnet/framework/wcf/feature-details/configuring-http-and-https?redirectedfrom=MSDN"); ConsoleLog.Crit("if running on windows please check: https://docs.microsoft.com/en-us/dotnet/framework/wcf/feature-details/configuring-http-and-https?redirectedfrom=MSDN");
} }
if (ok == true) if (ok == true)
{
try
{ {
ConsoleLog.Status("Listening for connections on " + url + ""); ConsoleLog.Status("Listening for connections on " + url + "");
Task listenTask = HandleIncomingConnections(); Task listenTask = HandleIncomingConnections();
listenTask.GetAwaiter().GetResult(); listenTask.GetAwaiter().GetResult();
} }
catch(Exception e)
{
ConsoleLog.Status("Http interface killed itself: "+e.ToString()+"");
}
}
listener.Close(); listener.Close();
}) })
{ {