Exemple #1
0
        /// <summary>
        /// Appends a new message to the log file.
        /// </summary>
        /// <param name="message">The LogMessage</param>
        public void AppendToLogFile(LogMessage message)
        {
            if (WriteToLog)
            {
                StringBuilder sb = new StringBuilder();
                sb.AppendLine();
                sb.Append(DateTime.Now.ToString());
                sb.Append(",");
                sb.Append(message.Status);
                sb.Append(",");
                sb.Append("Header: ");
                sb.Append(message.Header);
                sb.Append(",");
                sb.Append(message.Message);
                sb.Append(",");
                sb.Append(message.Method);
                sb.AppendLine();
                sb.AppendLine();

                //do
                //{
                //    Thread.Sleep(1000);
                //} while (CheckIfLogIsBeingUsed(Location));

                // Append our message to the log.
                lock (lockObj)
                {
                    File.AppendAllText(Location, sb.ToString());
                    Thread.Sleep(100);
                }
            }
        }
Exemple #2
0
        /// <summary>
        /// Sends the header to our socket.
        /// </summary>
        /// <param name="httpVersion">HTTP Version we are using</param>
        /// <param name="mimeHeader">Mime header</param>
        /// <param name="toBytes"></param>
        /// <param name="statusCode">Status code we are sending</param>
        /// <param name="socket">Socket to the receiver</param>
        private void SendHeader(string httpVersion, string mimeHeader, int toBytes, string statusCode, ref Socket socket, DateTime lastWriteTime)
        {
            string buffer = string.Empty;
            if (mimeHeader.Length == 0)
            {
                mimeHeader = "text/html";
            }

            buffer = buffer + httpVersion + statusCode + "\r\n";
            buffer = buffer + "Server: WQN1010\r\n";
            buffer = buffer + "Content-Type: " + mimeHeader + "\r\n";
            buffer = buffer + "Accept-Ranges: bytes\r\n";
            DateTime time = DateTime.Now;
            string format = "ddd, d MMM yyyy HH:mm:ss";
            Console.WriteLine(time.ToString(format));
            buffer = buffer + "Date: " + time.ToString(format) + "\r\n";
            buffer = buffer + "Last-Modified: " + lastWriteTime.ToString(format) + "\r\n";
            buffer = buffer + "Content-Length: " + toBytes + "\r\n\r\n";
            byte[] data = Encoding.ASCII.GetBytes(buffer);
            SendData(data, ref socket);

            // Set up and write a log message about the header we just sent.
            LogMessage message = new LogMessage();
            message.Message = "Sending header...";
            message.Status = State.INFO;
            message.Header = buffer;
            message.Method = "HttpServer.SendHeader";
            LogInformation(message);
        }
Exemple #3
0
 /// <summary>
 /// Logs the specified information to the log file.
 /// </summary>
 private void LogInformation(LogMessage message)
 {
     Log.AppendToLogFile(message);
 }
Exemple #4
0
        /// <summary>
        /// Gets the type of MIME we are using for the request.
        ///   - Searches our Hashtable for the requested file's extension.
        /// </summary>
        /// <param name="requestedFile"></param>
        /// <returns></returns>
        private string GetMimeType(string requestedFile)
        {
            string fileExt = string.Empty;
            requestedFile = requestedFile.ToLower();
            int startPos = requestedFile.IndexOf(".");
            fileExt = requestedFile.Substring(startPos);
            if (MimeTypes.Contains(fileExt))
            {
                return MimeTypes[fileExt].ToString();
            }
            else
            {
                LogMessage message = new LogMessage();
                message.Status = State.ERROR;
                message.Message = "Unknown MIME type, or not supported.";
                LogInformation(message);
            }

            return string.Empty;
        }
Exemple #5
0
        /// <summary>
        /// Initializes and sets up the server.
        /// </summary>
        public void Initialize()
        {
            LogMessage message = new LogMessage(State.INFO, "Initializing the server.", "HttpServer.Initialize()");
            LogInformation(message);
            Console.WriteLine("Attempting to start Server..."+
                              "\n\tPort:\t\t"+Port+
                              "\n\tLogfile:\t"+Log.Location+
                              "\n\tRoot:\t\t"+RootDirectory);
            // Create our MIME types Hashtable.
            MimeTypes = new Hashtable();
            MimeTypes.Add(".html", "text/html");        // HTML files
            MimeTypes.Add(".htm", "text/html");         // HTM files
            MimeTypes.Add(".bmp", "image/bmp");         // Bitmaps
            MimeTypes.Add(".jpg", "image/jpg");         // JPEGs
            MimeTypes.Add(".pdf", "application/pdf");   // PDFs
            try
            {
                Listener = new TcpListener(IPAddress.Any, Port);
                Listener.Start();
                Console.WriteLine("Server is running..." + Port);

                // Creates a new main thread. Further threading is done within the StartListen function.
                Thread thread = new Thread(new ThreadStart(StartListen));
                thread.Start();
            }
            catch (Exception e)
            {
                LogInformation(new LogMessage(State.ERROR, "Unable to start server. " + e.Message, "HttpServer.Initialize()"));
            }
        }