diff --git a/Bot-Utils/Properties/AssemblyInfo.cs b/Bot-Utils/Properties/AssemblyInfo.cs index ec95c98..ade0c45 100644 --- a/Bot-Utils/Properties/AssemblyInfo.cs +++ b/Bot-Utils/Properties/AssemblyInfo.cs @@ -6,12 +6,12 @@ using System.Runtime.InteropServices; // Attribute gesteuert. Ändern Sie diese Attributwerte, um die Informationen zu ändern, // die einer Assembly zugeordnet sind. [assembly: AssemblyTitle("Bot-Utils")] -[assembly: AssemblyDescription("")] +[assembly: AssemblyDescription("Bot-Utils are helpers for programming a bot")] [assembly: AssemblyConfiguration("")] -[assembly: AssemblyCompany("")] +[assembly: AssemblyCompany("BlubbFish")] [assembly: AssemblyProduct("Bot-Utils")] -[assembly: AssemblyCopyright("Copyright © 2018 - 17.02.2019")] -[assembly: AssemblyTrademark("")] +[assembly: AssemblyCopyright("Copyright © 2018 - 09.03.2019")] +[assembly: AssemblyTrademark("© BlubbFish")] [assembly: AssemblyCulture("")] // Durch Festlegen von ComVisible auf FALSE werden die Typen in dieser Assembly @@ -32,11 +32,12 @@ using System.Runtime.InteropServices; // Sie können alle Werte angeben oder Standardwerte für die Build- und Revisionsnummern verwenden, // indem Sie "*" wie unten gezeigt eingeben: // [assembly: AssemblyVersion("1.0.*")] -[assembly: AssemblyVersion("1.1.2")] -[assembly: AssemblyFileVersion("1.1.2")] +[assembly: AssemblyVersion("1.1.3")] +[assembly: AssemblyFileVersion("1.1.3")] /* * 1.1.0 Remove Helper from Bot-Utils * 1.1.1 Update to local librarys * 1.1.2 Fixing bug for Contenttype + * 1.1.3 Variables parsing now as a String */ diff --git a/Bot-Utils/Webserver.cs b/Bot-Utils/Webserver.cs index 26e29ec..e18b2b3 100644 --- a/Bot-Utils/Webserver.cs +++ b/Bot-Utils/Webserver.cs @@ -1,103 +1,103 @@ -using BlubbFish.Utils.IoT.Connector; -using BlubbFish.Utils.IoT.Events; -using System; -using System.Collections.Generic; -using System.IO; -using System.Linq; -using System.Net; -using System.Text; -using System.Threading; -using System.Threading.Tasks; - -namespace BlubbFish.Utils.IoT.Bots -{ - public abstract class Webserver - { - protected Dictionary config; - protected InIReader requests; - protected HttpListener httplistener; - - public Webserver(ABackend backend, Dictionary settings, InIReader requests) { - this.config = settings; - this.requests = requests; - backend.MessageIncomming += this.Backend_MessageIncomming; - this.httplistener = new HttpListener(); - this.httplistener.Prefixes.Add(this.config["prefix"]); - this.httplistener.Start(); - ThreadPool.QueueUserWorkItem((o) => { - Console.WriteLine("Webserver is Running..."); - try { - while (this.httplistener.IsListening) { - ThreadPool.QueueUserWorkItem((state) => { - HttpListenerContext httplistenercontext = state as HttpListenerContext; - try { - this.SendResponse(httplistenercontext); - } catch { } finally { - httplistenercontext.Response.OutputStream.Close(); - } - }, this.httplistener.GetContext()); - } - } catch { }; - }); - } - - protected virtual void SendResponse(HttpListenerContext cont) { - String restr = cont.Request.Url.PathAndQuery; - if (restr.StartsWith("/")) { - if(restr.IndexOf("?") != -1) { - restr = restr.Substring(1, restr.IndexOf("?")-1); - } else { - restr = restr.Substring(1); - } - if(restr == "") { - restr = "index.html"; - } - String end = restr.IndexOf('.') != -1 ? restr.Substring(restr.IndexOf('.')+1) : ""; - if (File.Exists("resources/"+ restr)) { - try { - if (end == "png" || end == "jpg" || end == "jpeg" || end == "ico") { - Byte[] output = File.ReadAllBytes("resources/" + restr); +using BlubbFish.Utils.IoT.Connector; +using BlubbFish.Utils.IoT.Events; +using System; +using System.Collections.Generic; +using System.IO; +using System.Linq; +using System.Net; +using System.Text; +using System.Threading; +using System.Threading.Tasks; + +namespace BlubbFish.Utils.IoT.Bots +{ + public abstract class Webserver + { + protected Dictionary config; + protected InIReader requests; + protected HttpListener httplistener; + + public Webserver(ABackend backend, Dictionary settings, InIReader requests) { + this.config = settings; + this.requests = requests; + backend.MessageIncomming += this.Backend_MessageIncomming; + this.httplistener = new HttpListener(); + this.httplistener.Prefixes.Add(this.config["prefix"]); + this.httplistener.Start(); + ThreadPool.QueueUserWorkItem((o) => { + Console.WriteLine("Webserver is Running..."); + try { + while (this.httplistener.IsListening) { + ThreadPool.QueueUserWorkItem((state) => { + HttpListenerContext httplistenercontext = state as HttpListenerContext; + try { + this.SendResponse(httplistenercontext); + } catch { } finally { + httplistenercontext.Response.OutputStream.Close(); + } + }, this.httplistener.GetContext()); + } + } catch { }; + }); + } + + protected virtual void SendResponse(HttpListenerContext cont) { + String restr = cont.Request.Url.PathAndQuery; + if (restr.StartsWith("/")) { + if(restr.IndexOf("?") != -1) { + restr = restr.Substring(1, restr.IndexOf("?")-1); + } else { + restr = restr.Substring(1); + } + if(restr == "") { + restr = "index.html"; + } + String end = restr.IndexOf('.') != -1 ? restr.Substring(restr.IndexOf('.')+1) : ""; + if (File.Exists("resources/"+ restr)) { + try { + if (end == "png" || end == "jpg" || end == "jpeg" || end == "ico") { + Byte[] output = File.ReadAllBytes("resources/" + restr); switch(end) { case "ico": cont.Response.ContentType = "image/x-ico"; break; - } - cont.Response.OutputStream.Write(output, 0, output.Length); - return; - } else { - String file = File.ReadAllText("resources/" + restr); - if (this.requests.GetSections(false).Contains(restr)) { - Dictionary vars = this.requests.GetSection(restr); - foreach (KeyValuePair item in vars) { - file = file.Replace("{%" + item.Key.ToUpper() + "%}", item.Value); - } - } - file = file.Replace("{%REQUEST_URL_HOST%}", cont.Request.Url.Host); - Byte[] buf = Encoding.UTF8.GetBytes(file); - cont.Response.ContentLength64 = buf.Length; + } + cont.Response.OutputStream.Write(output, 0, output.Length); + return; + } else { + String file = File.ReadAllText("resources/" + restr); + if (this.requests.GetSections(false).Contains(restr)) { + Dictionary vars = this.requests.GetSection(restr); + foreach (KeyValuePair item in vars) { + file = file.Replace("\"{%" + item.Key.ToUpper() + "%}\"", item.Value); + } + } + file = file.Replace("{%REQUEST_URL_HOST%}", cont.Request.Url.Host); + Byte[] buf = Encoding.UTF8.GetBytes(file); + cont.Response.ContentLength64 = buf.Length; switch(end) { case "css": cont.Response.ContentType = "text/css"; break; - } - cont.Response.OutputStream.Write(buf, 0, buf.Length); - Console.WriteLine("200 - " + cont.Request.Url.PathAndQuery); - return; - } - } catch(Exception e) { - Helper.WriteError("500 - " + e.Message); - cont.Response.StatusCode = 500; - return; - } - } - Helper.WriteError("404 - " + cont.Request.Url.PathAndQuery + " not found!"); - cont.Response.StatusCode = 404; - return; - } - return; - } - - public void Dispose() { - this.httplistener.Stop(); - this.httplistener.Close(); - } - - protected abstract void Backend_MessageIncomming(Object sender, BackendEvent e); - } -} + } + cont.Response.OutputStream.Write(buf, 0, buf.Length); + Console.WriteLine("200 - " + cont.Request.Url.PathAndQuery); + return; + } + } catch(Exception e) { + Helper.WriteError("500 - " + e.Message); + cont.Response.StatusCode = 500; + return; + } + } + Helper.WriteError("404 - " + cont.Request.Url.PathAndQuery + " not found!"); + cont.Response.StatusCode = 404; + return; + } + return; + } + + public void Dispose() { + this.httplistener.Stop(); + this.httplistener.Close(); + } + + protected abstract void Backend_MessageIncomming(Object sender, BackendEvent e); + } +}