diff --git a/BosMon-Webserver/BosMon-Webserver.csproj b/BosMon-Webserver/BosMon-Webserver.csproj index f881a76..92cdb33 100644 --- a/BosMon-Webserver/BosMon-Webserver.csproj +++ b/BosMon-Webserver/BosMon-Webserver.csproj @@ -25,9 +25,9 @@ AnyCPU pdbonly - true + false bin\Release\ - TRACE + DEBUG;TRACE prompt 4 diff --git a/BosMon-Webserver/POCSAG.cs b/BosMon-Webserver/POCSAG.cs index 260ad3c..a0a4ce9 100644 --- a/BosMon-Webserver/POCSAG.cs +++ b/BosMon-Webserver/POCSAG.cs @@ -1,9 +1,9 @@ using System; using System.Collections.Generic; using System.Linq; +using System.Net; using System.Text; using System.Threading.Tasks; -using System.Web; namespace BlubbFish.BosMon.Webserver { class POCSAG { @@ -52,7 +52,7 @@ namespace BlubbFish.BosMon.Webserver { internal String ToXML() { String ret = "\r\n"; ret += ""+this.Function+ "\r\n"; - ret += ""+ HttpUtility.HtmlEncode(this.Message) + "\r\n"; + ret += ""+ WebUtility.HtmlEncode(this.Message) + "\r\n"; ret += "3\r\n"; ret += "
"+this.Address.ToString("D7")+ "
\r\n"; ret += ""+((DateTimeOffset)this.Time).ToUnixTimeMilliseconds()+ "\r\n"; diff --git a/BosMon-Webserver/XMLWebserver.cs b/BosMon-Webserver/XMLWebserver.cs index a86318c..3b6268d 100644 --- a/BosMon-Webserver/XMLWebserver.cs +++ b/BosMon-Webserver/XMLWebserver.cs @@ -38,7 +38,7 @@ namespace BlubbFish.BosMon.Webserver { ctx.Response.OutputStream.Close(); ctx.Response.Close(); } catch(Exception e) { - Helper.WriteError("Context Exception: " + e.Message +""+e.Source+ "\n\n" + e.StackTrace); + Helper.WriteError("Context Exception: " + e.Message + " " + e.Source + "\n" + e.StackTrace); } }, this._listener.GetContext()); } @@ -49,35 +49,40 @@ namespace BlubbFish.BosMon.Webserver { } private void SendResponse(HttpListenerContext ctx) { - if (this.CheckAuth(ctx.Request)) { - ctx.Response.ContentType = "text/xml"; - ctx.Response.Headers.Add(HttpResponseHeader.Server, "BM Webserver 1.3"); - ctx.Response.SendChunked = true; - ctx.Response.Headers.Add(HttpResponseHeader.Date, DateTime.Now.ToString("ddd, dd MMM yyy HH':'mm':'ss 'GMT'")); - ctx.Response.Headers.Add(HttpResponseHeader.Connection, "close"); - Byte[] start = Encoding.UTF8.GetBytes("\r\n\r\n"); - ctx.Response.OutputStream.Write(start, 0, start.Length); - ctx.Response.OutputStream.Flush(); - start = Encoding.UTF8.GetBytes("" + ((DateTimeOffset)DateTime.Now).ToUnixTimeMilliseconds() + "\r\n"); - ctx.Response.OutputStream.Write(start, 0, start.Length); - ctx.Response.OutputStream.Flush(); - while (true) { - List submit = new List(); - while (this.pOCSAGs.Count > 0) { - submit.Add(this.pOCSAGs.Dequeue()); + try { + if (this.CheckAuth(ctx.Request)) { + ctx.Response.ContentType = "text/xml"; + ctx.Response.Headers.Add(HttpResponseHeader.Server, "BM Webserver 1.3"); + ctx.Response.SendChunked = true; + ctx.Response.Headers.Add(HttpResponseHeader.Date, DateTime.Now.ToString("ddd, dd MMM yyy HH':'mm':'ss 'GMT'")); + ctx.Response.Headers.Add(HttpResponseHeader.Connection, "close"); + Byte[] start = Encoding.UTF8.GetBytes("\r\n\r\n"); + ctx.Response.OutputStream.Write(start, 0, start.Length); + ctx.Response.OutputStream.Flush(); + start = Encoding.UTF8.GetBytes("" + ((DateTimeOffset)DateTime.Now).ToUnixTimeMilliseconds() + "\r\n"); + ctx.Response.OutputStream.Write(start, 0, start.Length); + ctx.Response.OutputStream.Flush(); + while (true) { + List submit = new List(); + while (this.pOCSAGs.Count > 0) { + submit.Add(this.pOCSAGs.Dequeue()); + } + if (submit.Count > 0) { + Console.WriteLine("<- Send " + submit.Count + " Items"); + } + foreach (POCSAG item in submit) { + Byte[] buf = Encoding.UTF8.GetBytes(item.ToXML()); + ctx.Response.OutputStream.Write(buf, 0, buf.Length); + ctx.Response.OutputStream.Flush(); + } + Thread.Sleep(100); } - if (submit.Count > 0) { - Console.WriteLine("<- Send " + submit.Count + " Items"); - } - foreach (POCSAG item in submit) { - Byte[] buf = Encoding.UTF8.GetBytes(item.ToXML()); - ctx.Response.OutputStream.Write(buf, 0, buf.Length); - ctx.Response.OutputStream.Flush(); - } - Thread.Sleep(100); } + ctx.Response.StatusCode = 403; + } + catch(Exception e) { + Helper.WriteError("Send Response Exception: " + e.Message + " " + e.Source + "\n" + e.StackTrace); } - ctx.Response.StatusCode = 403; } private void ParseInput(HttpListenerContext request) { @@ -91,7 +96,7 @@ namespace BlubbFish.BosMon.Webserver { foreach (String item in items) { String[] kv = item.Split('='); if (kv.Length == 2) { - kv[1] = HttpUtility.UrlDecode(kv[1]); + kv[1] = WebUtility.UrlDecode(kv[1]); input.Add(kv[0], kv[1]); } } diff --git a/BosMon-Webserver/bin/Release/BosMon-Webserver.exe b/BosMon-Webserver/bin/Release/BosMon-Webserver.exe index 0f5b14b..8de02f1 100644 Binary files a/BosMon-Webserver/bin/Release/BosMon-Webserver.exe and b/BosMon-Webserver/bin/Release/BosMon-Webserver.exe differ diff --git a/BosMon-Webserver/bin/Release/Utils.dll b/BosMon-Webserver/bin/Release/Utils.dll index a28cada..d54cf28 100644 Binary files a/BosMon-Webserver/bin/Release/Utils.dll and b/BosMon-Webserver/bin/Release/Utils.dll differ diff --git a/BosMon-Webserver/dpkg/bmweb.service b/BosMon-Webserver/dpkg/bmweb.service index d747a16..a0c670e 100644 --- a/BosMon-Webserver/dpkg/bmweb.service +++ b/BosMon-Webserver/dpkg/bmweb.service @@ -13,7 +13,7 @@ ExecStartPre=/bin/rm /var/log/bmweb.log ExecStartPre=/bin/touch /var/log/bmweb.log ExecStartPre=/bin/chown bmweb:bmweb /var/log/bmweb.log ExecStartPre=/bin/chmod 644 /var/log/bmweb.log -ExecStart=/usr/bin/mono /usr/local/bin/bmweb/BosMon-Webserver.exe +ExecStart=/usr/bin/mono --debug /usr/local/bin/bmweb/BosMon-Webserver.exe KillMode=control-group TimeoutStopSec=5 Restart=on-failure diff --git a/BosMon-Webserver/dpkg/control b/BosMon-Webserver/dpkg/control index 892523e..85e41df 100644 --- a/BosMon-Webserver/dpkg/control +++ b/BosMon-Webserver/dpkg/control @@ -3,7 +3,7 @@ Version: x.x-x Section: base Priority: optional Architecture: any -Depends: mono-runtime (>= 5.16.0), libmono-system-web4.0-cil (>= 5.16.0) +Depends: mono-runtime (>= 5.16.0) Maintainer: BlubbFish Description: Bosmon-Webserver A Webserver for Bosmon Telegrafs