//from steve's project private void DirectoryWalk(DirectoryInfo dir, string keyFix) { if (IngoreDirectory.Contains(dir.Name.ToUpper()) == true) { Console.WriteLine(" /" + dir.Name.ToUpper() + " - Ignoring Directory "); return; } FileInfo[] files = dir.EnumerateFiles(SearchPattern).ToArray(); foreach (FileInfo file in files) { string key = keyFix + "/" + file.Name; DictInfo info = ProcessFile(file); var keyarray = Encoding.UTF8.GetBytes(key); NoDisk.Utils.ByteArray.Uppercase(keyarray, keyarray.Length); _kvdict.Add(keyarray, info); //_kvdict.Add(key.ToLower(), info); Console.WriteLine(" " + Encoding.UTF8.GetString(keyarray)); } DirectoryInfo[] dirs = dir.EnumerateDirectories().ToArray(); foreach (DirectoryInfo ndir in dirs) { DirectoryWalk(ndir, keyFix + "/" + ndir.Name); } }
public IRequest InsertFile(IRequest request) { var rtnRequest = request; var FullPath = request.URL; DictInfo info = null; //most likely the request is good. if (_kvdict.TryGetValue(FullPath, out info) == true) { rtnRequest.FileData = info.data; return(rtnRequest); } //check for a / if (FullPath[FullPath.Length - 1] == (byte)'/') { //check for safest option first byte[] indx = new byte[] { (byte)'I', (byte)'N', (byte)'D', (byte)'E', (byte)'X', (byte)'.', (byte)'H', (byte)'T', (byte)'M', (byte)'L' }; byte[] index = new byte[FullPath.Length + "index.htm".Length]; Array.Copy(FullPath, index, FullPath.Length); Array.Copy(indx, 0, index, FullPath.Length, indx.Length - 1); //INDEX.HTM if (_kvdict.TryGetValue(index, out info) == true) { rtnRequest.FileData = info.data; rtnRequest.FileExt = NoDisk.Utils.ByteArray.extHTM; return(rtnRequest); } index = new byte[FullPath.Length + "index.html".Length]; Array.Copy(FullPath, index, FullPath.Length); Array.Copy(indx, 0, index, FullPath.Length, indx.Length); //INDEX.HTML if (_kvdict.TryGetValue(index, out info) == true) { rtnRequest.FileData = info.data; rtnRequest.FileExt = NoDisk.Utils.ByteArray.extHTML; return(rtnRequest); } //INDEX.PHP indx[indx.Length - 2] = (byte)'P'; indx[indx.Length - 3] = (byte)'H'; indx[indx.Length - 4] = (byte)'P'; index = new byte[FullPath.Length + "index.php".Length]; Array.Copy(FullPath, index, FullPath.Length); Array.Copy(indx, 0, index, FullPath.Length, indx.Length - 1); if (_kvdict.TryGetValue(index, out info) == true) { rtnRequest.FileData = info.data; rtnRequest.FileExt = NoDisk.Utils.ByteArray.extPHP; return(rtnRequest); } } rtnRequest.FileData = null; return(rtnRequest); }
private DictInfo ProcessFile(FileInfo file) { DictInfo info = new DictInfo(); info.data = ReadFileBinary(file); info.filename = file.Name.ToLower(); info.extention = file.Extension.ToLower(); //info.IsServerSideScript = false; byte[] header = null; switch (info.extention) { case (".php"): info.IsServerSideScript = true; break; case (".bmp"): info.IsServerSideScript = false; header = addheader("image/bmp"); break; case (".jpg"): case (".jpeg"): info.IsServerSideScript = false; header = addheader("image/jpeg"); break; case (".png"): info.IsServerSideScript = false; header = addheader("image/png"); break; case (".css"): info.IsServerSideScript = false; header = addheader("text/css"); break; case (".htm"): case (".js"): case (".html"): info.IsServerSideScript = false; header = addheader("text/html"); break; default: //unknown file type info.IsServerSideScript = false; header = addheader("text/html"); info.data = Encoding.UTF8.GetBytes("<html>server error - unknown file type " + file.Extension + " </html>"); break; } //combine header and data for completedly processed response if (info.IsServerSideScript == false) { byte[] total = new byte[header.Length + info.data.Length]; Array.Copy(header, total, header.Length); Array.Copy(info.data, 0, total, header.Length, info.data.Length); info.data = total; } return(info); }
private DictInfo ProcessFile(FileInfo file) { DictInfo info = new DictInfo(); info.data = ReadFileBinary(file); info.filename = file.Name.ToLower(); info.extention = file.Extension.ToLower(); //info.IsServerSideScript = false; byte[] header = null; switch(info.extention){ case (".php"): info.IsServerSideScript = true; break; case (".bmp"): info.IsServerSideScript = false; header = addheader("image/bmp"); break; case(".jpg"): case(".jpeg"): info.IsServerSideScript = false; header = addheader("image/jpeg"); break; case(".png"): info.IsServerSideScript = false; header = addheader("image/png"); break; case (".css"): info.IsServerSideScript = false; header = addheader("text/css"); break; case(".htm"): case (".js"): case(".html"): info.IsServerSideScript = false; header = addheader("text/html"); break; default://unknown file type info.IsServerSideScript = false; header = addheader("text/html"); info.data = Encoding.UTF8.GetBytes("<html>server error - unknown file type "+file.Extension+" </html>"); break; } //combine header and data for completedly processed response if (info.IsServerSideScript == false) { byte[] total = new byte[header.Length + info.data.Length]; Array.Copy(header, total, header.Length); Array.Copy(info.data, 0, total, header.Length, info.data.Length); info.data = total; } return info; }