Beispiel #1
0
		public override void OnResponse(ref HTTPRequestStruct rq, ref HTTPResponseStruct rp)
		{
			if (rq.Headers["MS-ASProtocolVersion"] != null)
			{
				rp.Headers[""] = "";
			}
			if (rq.URL.Equals("/Microsoft-Server-ActiveSync"))
			{
				if (rq.Method == "OPTIONS")
				{
					rp.Headers["MS-Server-ActiveSync"] = "6.5.7638.1";
					rp.Headers["MS-ASProtocolVersions"] = "1.0,2.0,2.1,2.5";
					rp.Headers["MS-ASProtocolCommands"] = "Sync,Provision,Search,Ping";
					rp.Headers["Content-Length"] = "0";
					rp.Headers["Allow"] = "OPTIONS,POST";
					rp.Headers["Public"] = "OPTIONS,POST";
					rp.Headers["Connection"] = "close";
					rp.Headers["Pragma"] = "no-cache";
					rp.Headers["X-Powered-By"] = "ASP.NET";

				}
			}

			return;

			string path = this.Folder + "\\" + rq.URL.Replace("/","\\");

			if (Directory.Exists(path))
			{
				if (File.Exists(path + "default.htm"))
					path += "\\default.htm";
				else
				{
					string[] dirs = Directory.GetDirectories(path);
					string[] files = Directory.GetFiles(path);

					string bodyStr = "<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.0 Transitional//EN\">\n";
					bodyStr += "<HTML><HEAD>\n";
					bodyStr += "<META http-equiv=Content-Type content=\"text/html; charset=windows-1252\">\n";
					bodyStr += "</HEAD>\n";
					bodyStr += "<BODY><p>Folder listing, to do not see this add a 'default.htm' document\n<p>\n";
					for ( int i = 0; i<dirs.Length; i++)
						bodyStr += "<br><a href = \"" + rq.URL + Path.GetFileName ( dirs[i] ) + "/\">[" +  Path.GetFileName( dirs[i] ) + "]</a>\n"; 
					for ( int i = 0; i<files.Length; i++)
						bodyStr += "<br><a href = \"" + rq.URL + Path.GetFileName( files[i] ) + "\">" +  Path.GetFileName( files[i] ) + "</a>\n"; 
					bodyStr += "</BODY></HTML>\n";

					rp.BodyData = Encoding.ASCII.GetBytes(bodyStr);
					return;
				}
			}

			if (File.Exists(path))
			{
				RegistryKey rk = Registry.ClassesRoot.OpenSubKey(Path.GetExtension(path), true);

				// Get the data from a specified item in the key.
				String s = (String)rk.GetValue("Content Type");

				// Open the stream and read it back.
				rp.fs = File.Open(path, FileMode.Open);
				if ( s != "")
					rp.Headers["Content-type"] = s;
			}
			else
			{
                
				rp.status = (int)RespState.NOT_FOUND;

				string bodyStr = "<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.0 Transitional//EN\">\n";
				bodyStr += "<HTML><HEAD>\n";
				bodyStr += "<META http-equiv=Content-Type content=\"text/html; charset=windows-1252\">\n";
				bodyStr += "</HEAD>\n";
				bodyStr += "<BODY>File not found!!</BODY></HTML>\n";

				rp.BodyData = Encoding.ASCII.GetBytes(bodyStr);

			}

		}
Beispiel #2
0
		public abstract void OnResponse(ref HTTPRequestStruct rq, ref HTTPResponseStruct rp);