Esempio n. 1
0
        private static void asyncHTTPCallback(IAsyncResult result)
        {
            try
            {
                HttpListener listener = (HttpListener)result.AsyncState;

                HttpListenerContext context = listener.EndGetContext(result);

                string responseText = new ServerInfo(Settings.settingsStore).GetJSON();

                byte[] buffer = Encoding.UTF8.GetBytes(responseText);
                context.Response.ContentLength64 = buffer.LongLength;
                context.Response.OutputStream.Write(buffer, 0, buffer.Length);
                context.Response.OutputStream.Close();

                listener.BeginGetContext(asyncHTTPCallback, listener);
            }
            catch (Exception e)
            {
                //Ignore the EngGetContext throw while shutting down the HTTP server.
                if (Server.serverRunning)
                {
                    DarkLog.Error("Exception while listening to HTTP server!, Exception:\n" + e);
                }
            }
        }
Esempio n. 2
0
        private static void asyncHTTPCallback(IAsyncResult result)
        {
            try
            {
                HttpListener listener = (HttpListener)result.AsyncState;

                HttpListenerContext context = listener.EndGetContext(result);
                string responseText = "";
                bool handled = false;

                if (context.Request.Url.PathAndQuery.StartsWith("/modcontrol"))
                {
                    if (!File.Exists(modFile))
                    {
                        GenerateNewModFile();
                    }
                    responseText = File.ReadAllText(modFile);
                    handled = true;
                }
                if (!handled)
                {
                    responseText = new ServerInfo(Settings.settingsStore).GetJSON();
                }

                byte[] buffer = Encoding.UTF8.GetBytes(responseText);
                context.Response.ContentLength64 = buffer.LongLength;
                context.Response.OutputStream.Write(buffer, 0, buffer.Length);
                context.Response.OutputStream.Close();

                listener.BeginGetContext(asyncHTTPCallback, listener);
            }
            catch (Exception e)
            {
                //Ignore the EngGetContext throw while shutting down the HTTP server.
                if (Server.serverRunning)
                {
                    DarkLog.Error("Exception while listening to HTTP server!, Exception:\n" + e);
                    Thread.Sleep(1000);
                    httpListener.BeginGetContext(asyncHTTPCallback, httpListener);
                }
            }
        }