예제 #1
0
        static void mlist_onClientConnect(ClientWebRequest request)
        {
            try
            {
            engine.NtfyConnection(request);
            }
            catch (Exception er)
            {

                MemoryStream errstream = new MemoryStream();
                StreamWriter mwriter = new StreamWriter(errstream);
                mwriter.Write("<html><head><title>An error has occured</title></head><body><pre><h2>Whoops! We've had a 500 Internal Server Error! To the embarassment of the developer, the full error is shown below</h2><hr />"+er.ToString()+"</pre></body></html>");
                mwriter.Flush();
                errstream.Position = 0;
                ClientHttpResponse response = new ClientHttpResponse();
                response.len = errstream.Length;
                response.StatusCode = "500 Internal Server Error";
                response.ContentType = "text/html";
                response.WriteHeader(request.stream);
                response.WriteStream(errstream, request.stream, 16384);
                try {
                request.stream.Dispose();
                }catch(Exception err) {

                }
            }
        }
예제 #2
0
        public string ProfilePicture(ClientWebRequest request)
        {
            SessionInformation session = sessions[request.QueryString["sessionID"]];
            if(request.QueryString.ContainsKey("GetProfilePic")) {
            foreach(string et in session.fs.OpenDir(request.QueryString["GetProfilePic"]).Files) {
            if(et == "pic") {
                    Bitmap tmap = new Bitmap(32,32);
                        Graphics aix = Graphics.FromImage(tmap);
                        Bitmap amage = new Bitmap(session.fs.OpenDir(request.QueryString["GetProfilePic"]).OpenFile("pic"));
                    aix.DrawImage(amage,new Rectangle(0,0,32,32));
                        aix.Dispose();
                        amage.Dispose();
                        MemoryStream ystream = new MemoryStream();
                        tmap.Save(ystream,System.Drawing.Imaging.ImageFormat.Jpeg);
                        ystream.Position = 0;
                        tmap.Dispose();
                        ClientHttpResponse _response = new ClientHttpResponse();
                        _response.len = ystream.Length;
                        _response.ContentType = "image/jpg";
                        _response.WriteHeader(request.stream);
                        _response.WriteStream(ystream,request.stream,16384);

                    }
            }
                Bitmap mmap = new Bitmap(32,32);
                Graphics mfix = Graphics.FromImage(mmap);
                        mfix.DrawLine(Pens.Red,new Point(0,0),new Point(32,32));
                mfix.DrawLine(Pens.Red,new Point(0,32),new Point(32,0));
                mfix.Dispose();
                MemoryStream mstream = new MemoryStream();
                mmap.Save(mstream,System.Drawing.Imaging.ImageFormat.Jpeg);
                mmap.Dispose();
                mstream.Position = 0;
                ClientHttpResponse response = new ClientHttpResponse();
                response.len = mstream.Length;
                response.ContentType = "image/jpg";
                response.WriteHeader(request.stream);
                response.WriteStream(mstream,request.stream,16384);
                request.ContinueProcessing = false;
                return "";
            }
            return "profile.html?GetProfilePic="+session.UserName+"&sessionID="+request.QueryString["sessionID"];
        }
예제 #3
0
        public void onRequest(ClientWebRequest request)
        {
            try {
            if(request.UnsanitizedRelativeURI.Contains("transparent.png")) {
            if(transparentBitmap == null) {
                Bitmap mmap = new Bitmap(4,4);
                    Graphics mfix = Graphics.FromImage(mmap);
                    mfix.Clear(Color.FromArgb(106,0,0,255));
                    mfix.Dispose();
                    MemoryStream mstream = new MemoryStream();
                    mmap.Save(mstream,ImageFormat.Png);
                    mstream.Position = 0;
                    transparentBitmap = mstream.ToArray();
                    mstream.Dispose();
                    mmap.Dispose();
                }
                ClientHttpResponse response = new ClientHttpResponse();
                response.ContentType = "image/png";
                response.len = transparentBitmap.Length;
                response.StatusCode = "200 OK";
                response.WriteHeader(request.stream);
                request.stream.Write(transparentBitmap,0,transparentBitmap.Length);

            }
            if(request.UnsanitizedRelativeURI.Contains("backgroundImg.jpg")) {
            if(bitmapData == null) {
                Bitmap mmap = new Bitmap(1024,1024);
                Graphics mfix = Graphics.FromImage(mmap);
                mfix.Clear(Color.Black);
                mfix.FillRectangle(new LinearGradientBrush(new Point(0,0),new Point(0,512),Color.Blue,Color.Black),new Rectangle(0,0,1024,512));
                mfix.DrawString("OpenServer 2012 - Administration Console\nApplication startup time: "+DateTime.Now.ToString(),new Font(FontFamily.GenericMonospace,24),Brushes.White,new Point(0,0));
                    mfix.Dispose();

                    MemoryStream mstream = new MemoryStream();
                    mmap.Save(mstream,ImageFormat.Jpeg);
                    mstream.Position = 0;
                    bitmapData = mstream.ToArray();
                    mstream.Dispose();

                }

                ClientHttpResponse response = new ClientHttpResponse();
                response.ContentType = "image/jpeg";
                response.len = bitmapData.Length;
                response.StatusCode = "200 OK";
                response.WriteHeader(request.stream);
                request.stream.Write(bitmapData,0,bitmapData.Length);
                request.stream.Flush();
                return;
            }
            string path = Environment.CurrentDirectory+request.UnsanitizedRelativeURI.Replace("/",Path.DirectorySeparatorChar.ToString());
            if(path.IndexOf("?")>1) {
            path = path.Substring(0,path.IndexOf("?"));
            }
            if(File.Exists(path)) {

            using(Stream fstr = File.Open(path,FileMode.Open,FileAccess.Read,FileShare.ReadWrite)) {

                string mimetype;
                string str = path.Substring(path.LastIndexOf("."));
                if(engine.mimetypes.ContainsKey(str)) {
                mimetype = engine.mimetypes[str];
                }else {
                mimetype = "application/octet-stream";
                }

                    if(mimetype == "text/html") {
                    StreamReader mreader = new StreamReader(fstr);
                        string httext = mreader.ReadToEnd();
                        reqManager.ParseHTMLDocument(ref httext,request);
                        MemoryStream mstream = new MemoryStream();
                        StreamWriter mwriter = new StreamWriter(mstream);
                        mwriter.Write(httext);
                        mwriter.Flush();
                        mstream.Position = 0;
                        if(request.ContinueProcessing) {
                        ClientHttpResponse response = new ClientHttpResponse();
                            response.ContentType = mimetype;
                            response.len = mstream.Length;
                            response.StatusCode = "200 OK";
                            response.WriteHeader(request.stream);
                            response.WriteStream(mstream,request.stream,16384);
                        }else {
                        return;
                        }
                    }else {

                ClientHttpResponse response = new ClientHttpResponse();
                response.ContentType = mimetype;
                response.len = fstr.Length;
                        response.StatusCode = "200 OK";
                    response.WriteHeader(request.stream);
                    response.WriteStream(fstr,request.stream,16384);

                    }
                }
            }else {
            ClientHttpResponse response = new ClientHttpResponse();
                response.ContentType = "text/html";
                response.len = notfoundpage.Length;
                response.StatusCode = "404 Not Found";
                response.WriteHeader(request.stream);
                request.stream.Write(notfoundpage,0,notfoundpage.Length);
                request.stream.Flush();

            }
            }catch(Exception er) {
            Console.WriteLine(er);
            }
        }