Пример #1
0
        internal void OnHTTPDataReceived(HttpListenerContext context)
        {
            var evtargs = new HTTPDataReceivedEventArgs();

            evtargs.Filename = this.context.Request.Url.LocalPath.ToLowerInvariant();
            evtargs.Arguments = this.context.Request.QueryString;
            evtargs.ContentType = this.context.Request.ContentType;
            evtargs.Headers = this.context.Request.Headers;
            evtargs.Method = this.context.Request.HttpMethod;

            if (this.HTTPDataReceived != null)
                this.HTTPDataReceived(this, evtargs);
        }
Пример #2
0
        internal void DataReceived(object source, HTTPDataReceivedEventArgs e)
        {
            var length = 0L;
            var statuscode = 200;
            var description = "OK";
            var url = this.ParseRequest(e.Filename != null ? e.Filename : "/", e.Arguments, out length);

            if (string.IsNullOrEmpty(url))
                return;

            if (!Filesystem.Exist(url) && e.Method == "GET")
            {
                this.Send(new byte[0], 404, "File not Found!");
                return;
            }

            var data = new byte[length];
            var bytesRead = 0;

            Files.Read(url, ref data, out bytesRead);

            if (url.EndsWith(".htm") || url.EndsWith(".html") || url.EndsWith(".js") || url.EndsWith(".css"))
            {
                var pagecontent = string.Empty;
                if (url.EndsWith(".htm") || url.EndsWith(".html"))
                {
                    pagecontent += this.HTML_header(Settings.Charset);

                    if (url.EndsWith("index.html"))
                    {
                        pagecontent += "\t\t<div id=\"page\">\n";

                        pagecontent += "\t\t\t<nav>\n";
                        pagecontent += this.Generate_head_bar("index", "link");
                        pagecontent += "\t\t\t</nav>\n";

                        pagecontent += "\t\t<header>\n";
                        pagecontent += "\t\t<h2></h2>\n";
                        pagecontent += "\t\t</header>\n";
                    }

                    pagecontent += "\t<script type=\"text/javascript\">\n";
                    pagecontent += "\tdocument.getElementById('anchor_summary').click();\n";
                    pagecontent += "\t</script>\n";
                    pagecontent += "\t\t\t<main>\n";
                }

                pagecontent += Encoding.UTF8.GetString(data, 0, data.Length);

                if (url.EndsWith(".htm") || url.EndsWith(".html"))
                {
                    pagecontent = pagecontent.Replace("[[DESIGN]]", Settings.Design);

                    pagecontent = pagecontent.Replace("[[SERVER_INFO_BLOCK]]", this.Gen_ServerInfo());

                    pagecontent = pagecontent.Replace("[[SERVER_SETTINGS_BLOCK]]", this.Gen_settings_page());

                    pagecontent = pagecontent.Replace("[[SERVERNAME]]", Settings.ServerName);

                    if (pagecontent.Contains("[[CLIENT_BOOTP_OVERVIEW_LIST]]") && e.Headers.HasKeys() && e.Headers["Needs"] == "bootp")
                    {
                        var bootp_clients = this.Gen_BOOTP_client_list();
                        if (bootp_clients == null)
                        {
                            statuscode = 800;
                            description = "Keine Clients gefunden";
                        }
                        else
                            pagecontent = pagecontent.Replace("[[CLIENT_BOOTP_OVERVIEW_LIST]]", bootp_clients);
                    }

                    if (pagecontent.Contains("[[CLIENT_TFTP_OVERVIEW_LIST]]") && e.Headers.HasKeys() && e.Headers["Needs"] == "tftp")
                    {
                        var tftp_clients = this.Gen_TFTP_client_list();
                        if (tftp_clients == null)
                        {
                            statuscode = 800;
                            description = "Keine aktiven TFTP-Sitzungen";
                        }
                        else
                            pagecontent = pagecontent.Replace("[[CLIENT_TFTP_OVERVIEW_LIST]]", tftp_clients);
                    }

                    pagecontent += "\t\t\t</main>\n";
                    pagecontent += "\t\t</div>\n";
                    pagecontent += this.HTML_footer();
                }

                if (statuscode == 800)
                    pagecontent = string.Empty;

                data = Encoding.UTF8.GetBytes(pagecontent);
                pagecontent = null;
            }

            this.Send(data, statuscode, description);
            Array.Clear(data, 0, data.Length);
        }