public void HandleRequest(HttpRequest request, Site site) { XmlDocument doc = new XmlDocument(); doc.LoadXml(request.Parameters[""]); foreach (XmlElement elem in doc.GetElementsByTagName("cdr")) EventController.TriggerEvent(new HttpCDREvent(elem)); }
internal void SetTimeout(Site site) { _connection.ClearTimer(); if (_timer!=null) _timer.Change(site.RequestTimeout, Timeout.Infinite); _requestTimeout = _requestStart.AddMilliseconds(site.RequestTimeout); }
//Checks through the list of embedded files from the site definition to //see if any of the files available match the requested url bool IRequestHandler.CanProcessRequest(HttpRequest request, Site site) { if (site.EmbeddedFiles != null) { return site.EmbeddedFiles.ContainsKey(request.URL.AbsolutePath); } return false; }
//adds a site to listen for public void AttachSite(Site site,sIPPortPair ipp) { if (UseSSL || ipp.UseSSL) new BoundMultipleSSLException(new sIPPortPair(_ip, _port, false)); if ((ipp.Address == IPAddress.Any)||((IP!=IPAddress.Any)&&(ipp.Address!=_ip))) _ip = IPAddress.Any; _sites.Add(site); }
public bool CanProcessRequest(HttpRequest request, Org.Reddragonit.EmbeddedWebServer.Interfaces.Site site) { return(request.URL.AbsolutePath == "/resources/scripts/core.js" || request.URL.AbsolutePath == "/resources/scripts/setup.js" || request.URL.AbsolutePath == "/resources/scripts/user.js" || request.URL.AbsolutePath == "/resources/styles/core.css" || request.URL.AbsolutePath == "/resources/styles/setup.css" || request.URL.AbsolutePath == "/resources/styles/user.css"); }
void IRequestHandler.ProcessRequest(HttpRequest request, Site site) { FileInfo fi = new FileInfo(site.BaseSitePath + Path.DirectorySeparatorChar.ToString() + TranslateURLPath(request.URL.AbsolutePath)); request.ResponseHeaders.ContentType = HttpUtility.GetContentTypeForExtension(fi.Extension); BinaryReader br = new BinaryReader(new FileStream(fi.FullName, FileMode.Open, FileAccess.Read, FileShare.ReadWrite)); while (br.BaseStream.Position < br.BaseStream.Length) { byte[] buffer = br.ReadBytes(1024); request.ResponseWriter.BaseStream.Write(buffer, 0, buffer.Length); } br.Close(); }
/* * This function is used to process a call made to an embedded service. * It loads the embedded service specified then invokes the request. */ private void ProcessEmbeddedServiceCall(HttpRequest request, Site site) { string type = request.URL.AbsolutePath.Substring(0, request.URL.AbsolutePath.LastIndexOf("/")); if (_pathMaps.ContainsKey(type)) { request.ResponseHeaders.ContentType="application/json"; Type t = Utility.LocateType(_pathMaps[type]); EmbeddedService es = (EmbeddedService)t.GetConstructor(Type.EmptyTypes).Invoke(new object[0]); es.Invoke(request, site); } else request.ResponseStatus = HttpStatusCodes.Not_Found; }
public void ProcessRequest(HttpRequest request, ISite site) { string[] tmp = new string[request.UploadedFiles.Count]; request.UploadedFiles.Keys.CopyTo(tmp, 0); BinaryReader br = new BinaryReader(request.UploadedFiles[tmp[0]].Stream); MemoryStream ms = new MemoryStream(); BinaryWriter bw = new BinaryWriter(ms); while (br.BaseStream.Position < br.BaseStream.Length) { bw.Write(br.ReadBytes(1024)); } br.Close(); bw.Flush(); request.ResponseWriter.Write(FileCache.CacheFile(ms.ToArray())); bw.Close(); }
public bool CanProcessRequest(HttpRequest request, Site site) { if (request.URL.AbsolutePath == _fileIconPath) return true; else if (request.URL.AbsolutePath == _folderIconPath) return true; else if (request.URL.AbsolutePath == _downloadIconPath) return true; bool ret = false; lock (_paths) { foreach (string str in _paths.Keys) { if (request.URL.AbsolutePath.StartsWith(str)) { ret = true; request["IFolder"] = _paths[str]; request["IFolderPath"] = str; break; } } } return ret; }
bool IRequestHandler.CanProcessRequest(HttpRequest request, Site site) { if (request.URL.AbsolutePath.StartsWith(BASE_PATH)) { IEmbeddedHandler hand = null; Dictionary<string, IEmbeddedHandler> handlers = null; Monitor.Enter(_lock); handlers = _handlers; Monitor.Exit(_lock); if (handlers != null) { if (handlers.ContainsKey(request.URL.AbsolutePath.Substring(BASE_PATH.Length))) hand = handlers[request.URL.AbsolutePath.Substring(BASE_PATH.Length)]; } if (hand == null) { if (handlers != null) { foreach (string str in handlers.Keys) { if (str.EndsWith("*")) { if (request.URL.AbsolutePath.Substring(BASE_PATH.Length).StartsWith(str.Substring(0, str.Length - 1))) { hand = handlers[str]; break; } } } } } request[CACHE_ID] = hand; return hand != null; } return false; }
public bool CanProcessRequest(HttpRequest request, sSite site) { return(RequestHandler.HandlesURL(request.URL, request.Method)); }
//creates a new instance of a tcp port listener for a given site public PortListener(Site site,sIPPortPair ipp) { _rand = new MT19937(DateTime.Now.Ticks); _sites = new List<Site>(); _sites.Add(site); _port = ipp.Port; _ip = ipp.Address; _useSSL = ipp.UseSSL; _idleSeonds = (long)Math.Min(_idleSeonds, ipp.IdleSeconds); _totalRunSeconds = (long)Math.Min(_totalRunSeconds, ipp.TotalRunSeconds); _backLog = (int)Math.Min(_backLog, ipp.BackLog); }
internal void UseDefaultPath(Site site) { _url = new Uri("http://" + _url.Host + site.DefaultPage(IsMobile) + _url.Query); }
//returns true if the requested url is for an embedded service or to generate javascript public bool CanProcessRequest(HttpRequest request, Site site) { Monitor.Enter(_lock); if (_pathMaps == null) Init(); Monitor.Exit(_lock); return _pathMaps.ContainsKey(request.URL.AbsolutePath.Substring(0,request.URL.AbsolutePath.LastIndexOf("/")))||(request.URL.AbsolutePath.EndsWith("EmbeddedJSGenerator.js") && (request.Parameters["TYPE"] != null)); }
/* * searches through all methods of the requested name, without * checking parameters as that will delay things and they cannot get passed back. * If any method with that name requires the session state, then return true to create * a session within the request. */ public bool RequiresSessionForRequest(HttpRequest request, Site site) { Monitor.Enter(_lock); if (_pathMaps == null) Init(); Monitor.Exit(_lock); string type = request.URL.AbsolutePath.Substring(0, request.URL.AbsolutePath.LastIndexOf("/")); if (_pathMaps.ContainsKey(type)) { Type t = Utility.LocateType(_pathMaps[type]); EmbeddedService es = (EmbeddedService)t.GetConstructor(Type.EmptyTypes).Invoke(new object[0]); es.GetMethodForRequest(request, site); if (request[EmbeddedService.CONTEXT_METHOD_VARIABLE] != null) { return ((WebMethod)((MethodInfo)request[EmbeddedService.CONTEXT_METHOD_VARIABLE]).GetCustomAttributes(typeof(WebMethod), true)[0]).UseSession; } } return false; }
//always returns false as sessions are never necessary bool IRequestHandler.RequiresSessionForRequest(HttpRequest request, Site site) { return false; }
/* * This function processes a given request for an embedded file. * It finds the file from the list, sets the response type appropriately. * If its uncompresssed css or js, checks the cache, if not compresses it, * and caches it. It then writes the given file out to the response stream. */ void IRequestHandler.ProcessRequest(HttpRequest request, Site site) { request.ResponseHeaders["Cache-Control"] = "Private"; if (request.Headers["If-Modified-Since"] != null && DateTime.Parse(request.Headers["If-Modified-Since"]) >= site.StartTimestamp) request.ResponseStatus = HttpStatusCodes.Not_Modified; else { sEmbeddedFile file = site.EmbeddedFiles[request.URL.AbsolutePath]; Stream str = null; switch (file.FileType) { case EmbeddedFileTypes.Compressed_Css: string comCss = Utility.ReadEmbeddedResource(file.DLLPath); if (comCss == null) request.ResponseStatus = HttpStatusCodes.Not_Found; else { request.ResponseHeaders.ContentType = "text/css"; request.ResponseWriter.Write(comCss); } break; case EmbeddedFileTypes.Compressed_Javascript: string comJs = Utility.ReadEmbeddedResource(file.DLLPath); if (comJs == null) request.ResponseStatus = HttpStatusCodes.Not_Found; else { request.ResponseHeaders.ContentType = "text/javascript"; request.ResponseWriter.Write(comJs); } break; case EmbeddedFileTypes.Css: bool loadCss = true; Monitor.Enter(_lock); if (_compressedCache.ContainsKey(file.DLLPath)) { loadCss = false; request.ResponseHeaders.ContentType = "text/css"; request.ResponseWriter.Write(_compressedCache[file.DLLPath].Value); } Monitor.Exit(_lock); if (loadCss) { string css = Utility.ReadEmbeddedResource(file.DLLPath); if (css == null) request.ResponseStatus = HttpStatusCodes.Not_Found; else { request.ResponseHeaders.ContentType = "text/css"; Monitor.Enter(_lock); if (site.CompressCSS) css = CSSMinifier.Minify(css); if (!_compressedCache.ContainsKey(file.DLLPath)) { _compressedCache.Add(file.DLLPath, new CachedItemContainer(css)); } Monitor.Exit(_lock); request.ResponseWriter.Write(css); } } break; case EmbeddedFileTypes.Javascript: bool loadJS = true; Monitor.Enter(_lock); if (_compressedCache.ContainsKey(file.DLLPath)) { loadJS = false; request.ResponseHeaders.ContentType = "text/javascript"; request.ResponseWriter.Write(_compressedCache[file.DLLPath].Value); } Monitor.Exit(_lock); if (loadJS) { string js = Utility.ReadEmbeddedResource(file.DLLPath); if (js == null) request.ResponseStatus = HttpStatusCodes.Not_Found; else { request.ResponseHeaders.ContentType = "text/javascript"; if (site.CompressJS) js = JSMinifier.Minify(js); Monitor.Enter(_lock); if (!_compressedCache.ContainsKey(file.DLLPath)) { _compressedCache.Add(file.DLLPath, new CachedItemContainer(js)); } Monitor.Exit(_lock); request.ResponseWriter.Write(js); } } break; case EmbeddedFileTypes.Image: str = Utility.LocateEmbededResource(file.DLLPath); if (str == null) request.ResponseStatus = HttpStatusCodes.Not_Found; else { request.ResponseHeaders.ContentType = "image/" + file.ImageType.Value.ToString(); request.UseResponseStream(str); } break; case EmbeddedFileTypes.Text: str = Utility.LocateEmbededResource(file.DLLPath); if (str == null) request.ResponseStatus = HttpStatusCodes.Not_Found; else request.UseResponseStream(str); break; } } }
public bool RequiresSessionForRequest(HttpRequest request, ISite site) { return(false); }
public void ProcessRequest(HttpRequest request, Org.Reddragonit.EmbeddedWebServer.Interfaces.Site site) { request.SetTimeout(20 * 60 * 1000); if (request.Parameters["FileType"] == "Backup") { string fileName = DateTime.Now.ToString("yyyy_MM_dd_HH_mm") + "_"; switch (request.Parameters["Level"]) { case "Database": fileName += "database"; break; case "Voicemail": fileName += "voicemail"; break; case "Recordings": fileName += "recordings"; break; case "Sounds": fileName += "sounds"; break; case "Script": fileName += "scripts"; break; default: fileName += "complete"; break; } request.ResponseHeaders.ContentType = "application/octet-stream"; request.ResponseHeaders["content-disposition"] = "attachment; filename=" + fileName + ".fscbak"; ZipFile zf = new ZipFile(fileName); DirectoryInfo di; byte[] tmp; if ((request.Parameters["Level"] == "Database") || (request.Parameters["Level"] == "Complete")) { Stream ms = new MemoryStream(); Org.Reddragonit.Dbpro.Backup.BackupManager.BackupDataToStream(Org.Reddragonit.Dbpro.Connections.ConnectionPoolManager.GetPool(typeof(Org.Reddragonit.FreeSwitchConfig.DataCore.DB.Phones.Extension)), ref ms); zf.AddFile("database.rdpbk", ((MemoryStream)ms).ToArray()); } //backup voicemail if ((request.Parameters["Level"] == "Voicemail") || (request.Parameters["Level"] == "Complete")) { di = new DirectoryInfo(Settings.Current[Constants.BASE_PATH_NAME].ToString() + Path.DirectorySeparatorChar + Constants.DEFAULT_VOICEMAIL_PATH); ImportZipDirectory("voicemail", zf, di); Log.Trace("Issueing voicemail backup command..."); StringBuilder sb = new StringBuilder(); sb.AppendLine("DELETE FROM voicemail_msgs;"); foreach (Dictionary <string, string> row in Utility.SelectFromFreeswitchDB(VM_DB, VM_SELECT_QUERY)) { sb.Append("INSERT INTO voicemail_msgs VALUES("); sb.Append("'" + row["created_epoch"] + "',"); sb.Append("'" + row["read_epoch"] + "',"); sb.Append("'" + row["username"] + "',"); sb.Append("'" + row["domain"] + "',"); sb.Append("'" + row["uuid"] + "',"); sb.Append("'" + row["cid_name"] + "',"); sb.Append("'" + row["cid_number"] + "',"); sb.Append("'" + row["in_folder"] + "',"); sb.Append("'" + row["file_path"] + "',"); sb.Append("'" + row["message_len"] + "',"); sb.Append("'" + row["flags"] + "',"); if (row.ContainsKey("read_flags") && row["read_flags"] != null) { sb.Append("'" + row["read_flags"] + "',"); } else { sb.Append("null,"); } if (row.ContainsKey("forwarded_by") && row["forwarded_by"] != null) { sb.Append("'" + row["forwarded_by"] + "'"); } else { sb.Append("null"); } sb.AppendLine(");"); } zf.AddFile("voicemail_restore.sql", ASCIIEncoding.ASCII.GetBytes(sb.ToString())); } //backup scripts if ((request.Parameters["Level"] == "Script") || (request.Parameters["Level"] == "Complete")) { di = new DirectoryInfo(Settings.Current[Constants.BASE_PATH_NAME].ToString() + Path.DirectorySeparatorChar + Constants.DEFAULT_SCRIPTS_DIRECTORY); ImportZipDirectory("scripts", zf, di); } //backup sounds if ((request.Parameters["Level"] == "Sounds") || (request.Parameters["Level"] == "Complete")) { di = new DirectoryInfo(Settings.Current[Constants.BASE_PATH_NAME].ToString() + Path.DirectorySeparatorChar + Constants.DEFAULT_SOUNDS_DIRECTORY); ImportZipDirectory("sounds", zf, di); } //backup recordings if ((request.Parameters["Level"] == "Recordings") || (request.Parameters["Level"] == "Complete")) { di = new DirectoryInfo(Settings.Current[Constants.BASE_PATH_NAME].ToString() + Path.DirectorySeparatorChar + Constants.DEFAULT_RECORDINGS_DIRECTORY); ImportZipDirectory("recordings", zf, di); } //flush and close the final zip stream request.UseResponseStream(zf.ToStream()); } else if (request.Parameters["clazz"] != null) { Type t = Org.Reddragonit.FreeSwitchConfig.DataCore.Utility.LocateType(request.Parameters["clazz"]); if (t != null) { System.Reflection.MethodInfo mi = null; foreach (System.Reflection.MethodInfo m in t.GetMethods(System.Reflection.BindingFlags.Public | System.Reflection.BindingFlags.Static)) { if (m.Name == request.Parameters["MethodName"] && m.GetParameters().Length == 0) { mi = m; break; } } if (mi == null) { request.ResponseStatus = HttpStatusCodes.Not_Found; request.ResponseWriter.Write("Unable to locate static public method " + request.Parameters["MethodName"] + " in class type " + request.Parameters["clazz"]); } else { mi.Invoke(null, new object[0]); } } else { request.ResponseStatus = HttpStatusCodes.Not_Found; request.ResponseWriter.Write("Unable to locate clazz type " + request.Parameters["clazz"]); } } else { request.ResponseStatus = HttpStatusCodes.Not_Found; } }
public void ProcessRequest(HttpRequest request, Org.Reddragonit.EmbeddedWebServer.Interfaces.Site site) { request.ResponseHeaders["Cache-Control"] = "max-age = " + (60 * 60).ToString(); List <string> paths = new List <string>(); string ext = request.URL.AbsolutePath.Substring(request.URL.AbsolutePath.LastIndexOf(".")); string bPath = "scripts"; if (ext == ".css") { bPath = "styles"; } switch (request.URL.AbsolutePath) { case "/resources/scripts/core.js": case "/resources/styles/core.css": paths.AddRange(_CORE_PATHS); break; case "/resources/scripts/setup.js": case "/resources/styles/setup.css": paths.AddRange(_SETUP_PATHS); break; case "/resources/scripts/user.js": paths.AddRange(_USER_PATHS); foreach (MainMenuItem mmi in MainMenuItem.LoadAll()) { if (mmi.JavascriptURLs != null) { paths.AddRange(mmi.JavascriptURLs); } if (mmi.CombinedURLs != null) { paths.AddRange(mmi.CombinedURLs); } if (mmi.SubMenuItems != null) { foreach (SubMenuItem smi in mmi.SubMenuItems) { if (smi.JavascriptURLs != null) { paths.AddRange(smi.JavascriptURLs); } if (smi.CombinedURLs != null) { paths.AddRange(smi.CombinedURLs); } } } foreach (IHomePageComponent ihp in parts) { if (ihp.JSUrls != null) { paths.AddRange(ihp.JSUrls); } } } break; case "/resources/styles/user.css": paths.AddRange(_USER_PATHS); foreach (MainMenuItem mmi in MainMenuItem.LoadAll()) { if (mmi.CssURLs != null) { paths.AddRange(mmi.CssURLs); } if (mmi.CombinedURLs != null) { paths.AddRange(mmi.CombinedURLs); } if (mmi.SubMenuItems != null) { foreach (SubMenuItem smi in mmi.SubMenuItems) { if (smi.CssURLs != null) { paths.AddRange(smi.CssURLs); } if (smi.CombinedURLs != null) { paths.AddRange(smi.CombinedURLs); } } } foreach (IHomePageComponent ihp in parts) { if (ihp.CSSUrls != null) { paths.AddRange(ihp.CSSUrls); } } } break; } request.ResponseHeaders.ContentType = HttpUtility.GetContentTypeForExtension(request.URL.AbsolutePath.Substring(request.URL.AbsolutePath.LastIndexOf("."))); foreach (string str in paths) { if (str.StartsWith("TYPE=") || str.StartsWith("/EmbeddedJSGenerator.js?TYPE=")) { if (ext != ".css") { request.ResponseWriter.WriteLine("/* " + str + " */"); foreach (IRequestHandler irh in site.Handlers) { if (irh is EmbeddedServiceHandler) { request.ResponseWriter.WriteLine(((EmbeddedServiceHandler)irh).GenerateJSForServiceType(str.Substring(str.IndexOf("=") + 1))); } } } } else { List <string> tpaths = new List <string>(); if (str.StartsWith("/")) { if (str.EndsWith(".min" + ext)) { tpaths.Add(str); tpaths.Add(str.Substring(0, str.LastIndexOf(".min")) + ext); } else { tpaths.Add(str); tpaths.Add(str.Substring(0, str.LastIndexOf(ext)) + ".min" + ext); } } else { tpaths.AddRange(new string[] { "/resources/" + bPath + "/" + str.Replace(".", "/") + ext, "/resources/" + bPath + "/base/" + str.Replace(".", "/") + ext, "/resources/" + bPath + "/" + (request.IsMobile ? "mobile" : "desktop") + "/" + str.Replace(".", "/") + ext, "Org.Reddragonit.FreeSwitchConfig.Site." + bPath + ".base." + str + ext, "Org.Reddragonit.FreeSwitchConfig.Site." + bPath + "." + (request.IsMobile ? "mobile" : "desktop") + "." + str + ext, "/resources/" + bPath + "/" + str.Replace(".", "/") + ".min" + ext, "/resources/" + bPath + "/base/" + str.Replace(".", "/") + ".min" + ext, "/resources/" + bPath + "/" + (request.IsMobile ? "mobile" : "desktop") + "/" + str.Replace(".", "/") + ".min" + ext, "Org.Reddragonit.FreeSwitchConfig.Site." + bPath + ".base." + str + ".min" + ext, "Org.Reddragonit.FreeSwitchConfig.Site." + bPath + "." + (request.IsMobile ? "mobile" : "desktop") + "." + str + ".min" + ext }); } foreach (string path in tpaths) { if (path.StartsWith("/")) { request.ResponseWriter.WriteLine("/* " + path + " */"); VirtualMappedRequest vmp = new VirtualMappedRequest(new Uri("http://" + request.URL.Host + ":" + request.URL.Port.ToString() + path), request.Headers["Accept-Language"]); Org.Reddragonit.BackBoneDotNet.RequestHandler.HandleRequest(vmp); request.ResponseWriter.WriteLine(vmp.ToString()); if (site.EmbeddedFiles != null) { if (site.EmbeddedFiles.ContainsKey(path)) { if (ModelHandler.CompressJS) { request.ResponseWriter.WriteLine((request.URL.AbsolutePath.EndsWith(".js") ? JSMinifier.Minify(Utility.ReadEmbeddedResource(site.EmbeddedFiles[path].DLLPath)) : CSSMinifier.Minify(Utility.ReadEmbeddedResource(site.EmbeddedFiles[path].DLLPath)))); } else { request.ResponseWriter.WriteLine(Utility.ReadEmbeddedResource(site.EmbeddedFiles[path].DLLPath)); } } } string tmpStr = Utility.ReadEmbeddedResource(_ReverseURL(path)); if (tmpStr != null) { if (ModelHandler.CompressJS) { request.ResponseWriter.WriteLine((request.URL.AbsolutePath.EndsWith(".js") ? JSMinifier.Minify(tmpStr) : CSSMinifier.Minify(tmpStr))); } else { request.ResponseWriter.WriteLine(tmpStr); } } } else { request.ResponseWriter.WriteLine("/* " + _ExtractURL(path) + " */"); request.ResponseWriter.WriteLine(Utility.ReadEmbeddedResource(path)); } } } } if (request.URL.AbsolutePath == "/resources/scripts/core.js") { _WriteConstants(request); } else if (request.URL.AbsolutePath == "/resources/scripts/setup.js") { } else if (request.URL.AbsolutePath == "/resources/scripts/user.js") { Template st = new Template(Utility.ReadEmbeddedResource("Org.Reddragonit.FreeSwitchConfig.Site.Deployments.home.js")); st.SetAttribute("components", parts); request.ResponseWriter.WriteLine(st.ToString()); } }
public bool RequiresSessionForRequest(HttpRequest request, Org.Reddragonit.EmbeddedWebServer.Interfaces.Site site) { return(true); }
public bool RequiresSessionForRequest(HttpRequest request, sSite site) { return(true); }
/* * This function is the main portion of the class. It parses out the parameters, * locates the apprporiate function and then proceeds to invoke it, all assuming * that the security check passes. */ public void Invoke(HttpRequest request, Site website) { _request = request; _site = website; MethodInfo mi = (MethodInfo)request[CONTEXT_METHOD_VARIABLE]; if (!IsValidAccess(mi.Name)) { request.ResponseStatus = HttpStatusCodes.Forbidden; request.ResponseWriter.Write(string.Format(Messages.Current["Org.Reddragonit.EmbeddedWebServer.Interfaces.EmbeddedService.Errors.InvalidAccess"],this.GetType().FullName, mi.Name)); return; } if (mi.ReturnType.Name == "void") mi.Invoke(this, (object[])request[CONTEXT_PARS_VARIABLE]); else request.ResponseWriter.Write(JSON.JsonEncode(mi.Invoke(this, (object[])request[CONTEXT_PARS_VARIABLE]))); }
bool IRequestHandler.CanProcessRequest(HttpRequest request, Site site) { if (site.BaseSitePath != null) return new FileInfo(site.BaseSitePath + Path.DirectorySeparatorChar.ToString() + TranslateURLPath(request.URL.AbsolutePath)).Exists; return false; }
private static void AppendMessageToFile(Site site,HttpConnection conn,HttpRequest request, DiagnosticsLevels logLevel, string Message) { Monitor.Enter(_lock); _messages.Enqueue(_FormatDiagnosticsMessage(site,conn,request, logLevel, Message)); Monitor.Exit(_lock); }
public void ProcessRequest(HttpRequest request, sSite site) { RequestHandler.HandleRequest(new MappedRequest(request)); }
//formats a diagnostics message using the appropriate date time format as well as site and log level information private static string _FormatDiagnosticsMessage(Site site,HttpConnection conn,HttpRequest request, DiagnosticsLevels logLevel, string Message) { string sfs = "UNKNOWN"; if (request != null) sfs = "HttpRequest[" + request.ID.ToString() + "]"; else if (conn != null) sfs = "HttpConnection[" + conn.ID.ToString() + "]"; else if (BackgroundOperationRun.Current != null) sfs = "BackgroundRunThread[" + BackgroundOperationRun.Current.ID.ToString() + "][" + BackgroundOperationRun.Current.Call.type.FullName + "." + BackgroundOperationRun.Current.Call.Method.Name + "]"; else { try { sfs = "Thread[" + Thread.CurrentThread.Name + "]"; } catch (Exception e) { } } if (site != null) { if (Settings.UseServerNameInLogging) { if (site.ServerName != null) return DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss") + "|" + logLevel.ToString() + "|" + site.ServerName+"|"+sfs+"|" + Message; else if (conn!=null) return DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss") + "|" + logLevel.ToString() + "|" + conn.Listener.IP.ToString() + ":" + conn.Listener.Port.ToString() + "|" + sfs + "|" + Message; else return DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss") + "|" + logLevel.ToString() + "|" + site.ListenOn[0].Address.ToString() + ":" + site.ListenOn[0].Port.ToString() + "|" + sfs + "|" + Message; }else return DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss") + "|" + logLevel.ToString() + "|" + sfs + "|" + Message; } else if (conn != null) { if (Settings.UseServerNameInLogging) return DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss") + "|" + logLevel.ToString() + "|" + conn.Listener.IP.ToString() + ":" + conn.Listener.Port.ToString() + "|" + sfs + "|" + Message; } return DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss") + "|" + logLevel.ToString() + "|null|" + sfs + "|" + Message; }
public bool CanProcessRequest(HttpRequest request, ISite site) { return(request.URL.AbsolutePath == "/FileUpload.ashx"); }
public void ProcessRequest(HttpRequest request, Org.Reddragonit.EmbeddedWebServer.Interfaces.Site site) { request.ResponseHeaders.ContentType = "text/html"; request.ResponseWriter.WriteLine(string.Format(_INDEX_PAGE_CODE, (request.IsMobile ? "<meta name=\"viewport\" content=\"width=device-width, height=device-height, initial-scale=1.0, user-scalable=no\">" : "") + (!Utility.IsSiteSetup ? "<script src=\"/resources/scripts/setup.js\" type=\"text/javascript\"/></script>\n<link type=\"text/css\" href=\"/resources/styles/setup.css\" rel=\"Stylesheet\" />" : "<link type=\"text/css\" href=\"/resources/styles/user.css\" rel=\"Stylesheet\" />\n<script src=\"/resources/scripts/user.js\" type=\"text/javascript\"></script>"), (Utility.IsSiteSetup ? @"function Logout() { FreeswitchConfig.Services.UserService.Logout( function(msg) { location.href = msg; } ); }" : "") + "\nvar ready=false;" + @"$(document).on('pageinit ready',function(){ if (!ready){ ready=true; FreeswitchConfig.Site.InitPage(); FreeswitchConfig.Site.Modals.ShowLoading(); if (FreeswitchConfig.Site.PreloadImages().length > 0) { var images = []; for (i = 0; i < FreeswitchConfig.Site.PreloadImages().length; ++i) { images[i] = new Image(); images[i].src = FreeswitchConfig.Site.PreloadImages()[i]; } }" + "\n" + (!Utility.IsSiteSetup ? @"FreeswitchConfig.Site.TitleContainer().html('Initial Setup'); FreeswitchConfig.Web.Setup.GeneratePage(FreeswitchConfig.Site.MainContainer());" : @"FreeswitchConfig.Services.UserService.GetAvailbleUserDomains( function(msg) { var sel = $('<select id=""selDomain""></select>'); for(var x=0;x<msg.length;x++){ sel.append('<option value=""'+msg[x]+'"">'+msg[x]+'</option>'); } sel.bind('change',function(){ var sel = $('#selDomain'); FreeswitchConfig.Site.Modals.ShowLoading(); FreeswitchConfig.Services.UserService.ChangeDomain( sel.val(), function(msg){ FreeswitchConfig.Site.Modals.HideLoading(); if (msg){ FreeswitchConfig.CurrentDomain=FreeswitchConfig.Core.Domain.CurrentDomain(); FreeswitchConfig.CurrentDomain.fetch({async:false}); FreeswitchConfig.CurrentDomain = FreeswitchConfig.CurrentDomain.at(0); FreeswitchConfig.Site.triggerDomainChange(); }else{ alert('An error occured attempting to change the current domain.'); } }, function(){ FreeswitchConfig.Site.Modals.HideLoading(); alert('An error occured attempting to change the current domain.'); }); }); $(document.body).append(sel);" + (Domain.Current == null ? @" FreeswitchConfig.Services.UserService.GetCurrentDomain( function(msg){ if (msg==null){ $('#selDomain').trigger('change'); } }, null, null, true );" : "FreeswitchConfig.CurrentDomain=FreeswitchConfig.Core.Domain.CurrentDomain();FreeswitchConfig.CurrentDomain.fetch({async:false});FreeswitchConfig.CurrentDomain = FreeswitchConfig.CurrentDomain.at(0);") + @" }, null, null, true ); FreeswitchConfig.Site.MainMenuItem.SetupMenu();") + "}});")); }
/* * This function is used to process a call made to get the javascript * to access a given service. It appends code to add jquery or json * libraries if necessary. It scans through the type specified * finding all methods that are tagged as web methods and generates * code to handle each method. */ private void ProcessJSGeneration(HttpRequest request, Site site) { string js = GenerateJSForServiceType(request.Parameters["TYPE"]); if (js == null) request.ResponseStatus = HttpStatusCodes.Not_Found; else { request.ResponseHeaders.ContentType = "text/javascript"; if (site.AddJqueryJavascript) { request.ResponseWriter.WriteLine("if (document.getElementsByName(\"jqueryScriptTag\").length==0){"); request.ResponseWriter.WriteLine("var e=window.document.createElement('script');"); request.ResponseWriter.WriteLine("e.setAttribute('src','/jquery.js');"); request.ResponseWriter.WriteLine("e.setAttribute('name','jqueryScriptTag');"); request.ResponseWriter.WriteLine("document.getElementsByTagName('head')[0].insertBefore(e,document.getElementsByTagName('head')[0].childNodes[0]);}"); } if (site.AddJsonJavascript) { request.ResponseWriter.WriteLine("if (document.getElementsByName(\"jsonScriptTag\").length==0){"); request.ResponseWriter.WriteLine("var e=window.document.createElement('script');"); request.ResponseWriter.WriteLine("e.setAttribute('src','/json.js');"); request.ResponseWriter.WriteLine("e.setAttribute('name','jsonScriptTag');"); request.ResponseWriter.WriteLine("document.getElementsByTagName('head')[0].insertBefore(e,document.getElementsByTagName('head')[0].childNodes[0]);}"); } request.ResponseWriter.WriteLine(js); } request.SendResponse(); }
public bool CanProcessRequest(HttpRequest request, Site site) { return request.URL.AbsolutePath == "/timeout.html"; }
//processes the reuqest as to whether or not it should generate javascript //or perform the given operation public void ProcessRequest(HttpRequest request, Site site) { Monitor.Enter(_lock); if (_pathMaps == null) Init(); Monitor.Exit(_lock); if (request.URL.AbsolutePath.EndsWith("EmbeddedJSGenerator.js")) ProcessJSGeneration(request, site); else ProcessEmbeddedServiceCall(request, site); }
public void ProcessRequest(HttpRequest request, Site site) { Thread.Sleep(site.RequestTimeout * 2); request.ResponseWriter.WriteLine("<h1>If you can read this the timeout failed.</h1>"); }
public bool CanProcessRequest(HttpRequest request, Org.Reddragonit.EmbeddedWebServer.Interfaces.Site site) { return(request.URL.AbsolutePath == _URL_PATH && !Utility.IsSiteSetup); }
internal void GetMethodForRequest(HttpRequest request, Site website) { string functionName = request.URL.AbsolutePath.Substring(request.URL.AbsolutePath.LastIndexOf("/") + 1); MethodInfo mi = null; List<MethodInfo> methods = new List<MethodInfo>(); foreach (MethodInfo m in GetType().GetMethods()) { if (m.Name == functionName) methods.Add(m); } if (methods.Count == 0) { throw new Exception(string.Format(Messages.Current["Org.Reddragonit.EmbeddedWebServer.Interfaces.EmbeddedService.Errors.UnableToLocateFunction"], functionName, GetType().FullName)); } object val = request.JSONParameter; if (val == null) { foreach (MethodInfo m in methods) { if (m.GetParameters().Length == 0) { mi = m; break; } } if (mi == null) { throw new Exception(string.Format(Messages.Current["Org.Reddragonit.EmbeddedWebServer.Interfaces.EmbeddedService.Errors.UnableToLocateFunctionWithParameters"], new object[] { functionName, GetType().FullName, "none" })); } request[CONTEXT_PARS_VARIABLE] = new object[0]; } else { List<string> pars = new List<string>(); foreach (string str in ((Hashtable)val).Keys) { pars.Add(str); } foreach (MethodInfo m in methods) { bool containsAll = true; foreach (string str in pars) { bool found = false; foreach (ParameterInfo pi in m.GetParameters()) { if (pi.Name == str) { found = true; break; } } if (!found) { containsAll = false; break; } } if (pars.Count != m.GetParameters().Length) containsAll = false; if (containsAll) { mi = m; break; } } if ((mi == null) && (methods.Count == 1)) { foreach (ParameterInfo pi in methods[0].GetParameters()) { if (!pars.Contains(pi.Name)) { pars.Add(pi.Name); ((Hashtable)val).Add(pi.Name, null); } } mi = methods[0]; } if (mi == null) { string epars = ""; foreach (string par in pars) epars += par + ","; epars = epars.Substring(0, epars.Length - 1); throw new Exception(string.Format(Messages.Current["Org.Reddragonit.EmbeddedWebServer.Interfaces.EmbeddedService.Errors.UnableToLocateFunctionWithParameters"], new object[] { functionName, GetType().FullName, epars })); } object[] funcPars = new object[pars.Count]; for (int x = 0; x < funcPars.Length; x++) { ParameterInfo pi = mi.GetParameters()[x]; funcPars[x] = ConvertObjectToType(((Hashtable)val)[pi.Name], pi.ParameterType); } request[CONTEXT_PARS_VARIABLE] = funcPars; } request[CONTEXT_METHOD_VARIABLE] = mi; }
public bool CanProcessRequest(HttpRequest request, Org.Reddragonit.EmbeddedWebServer.Interfaces.Site site) { return(request.URL.AbsolutePath == "/FileDownloader.ashx"); }
public void ProcessRequest(HttpRequest request, Org.Reddragonit.EmbeddedWebServer.Interfaces.Site site) { bool isComplete = false; try { if (Domain.AllDomainNames.Count == 0) { throw new Exception("No Domains have been created"); } if (Context.AllContextNames.Count < 2) { throw new Exception("You need a minimum of 2 contexts"); } if (SipProfile.AllSipProfileNames.Count < 2) { throw new Exception("You need a minimum of 2 sip profiles"); } User usr = User.Create(request.Parameters["UserName"], request.Parameters["FirstName"], request.Parameters["LastName"], request.Parameters["Password"], null, null, UserRight.All.ToArray()); if (usr == null) { throw new Exception("Unable to create primary user"); } else { usr.AllowedDomains = Domain.LoadAll().ToArray(); usr.Update(); } foreach (string c in Context.AllContextNames) { CoreGenerator.RegenerateContextFile(c); } foreach (SipProfile sp in SipProfile.LoadAll()) { CoreGenerator.RegenerateSIPProfile(sp); } foreach (Domain d in Domain.LoadAll()) { CoreGenerator.RegenerateDomainFile(d); } isComplete = true; } catch (Exception e) { request.ResponseWriter.WriteLine(e.Message); } if (!isComplete) { request.ResponseStatus = HttpStatusCodes.Forbidden; } else { request.ResponseStatus = HttpStatusCodes.OK; EventController.TriggerEvent(new SetupCompleteEvent()); } request.SendResponse(); }
public bool CanProcessRequest(HttpRequest request, sSite site) { return RequestHandler.HandlesURL(request.URL, request.Method); }
void IRequestHandler.ProcessRequest(HttpRequest request, Site site) { Log.Trace("Attempting to run embedded Handler for " + request.URL.AbsolutePath + " by searching for a handler of " + request.URL.AbsolutePath.Substring(BASE_PATH.Length)); IEmbeddedHandler hand = (IEmbeddedHandler)request[CACHE_ID]; if (hand != null) { Log.Trace("Found embedded handler of type " + hand.GetType().FullName + " for path " + request.URL.AbsolutePath.Substring(BASE_PATH.Length)); hand.HandleRequest(request,site); } else { request.ResponseStatus = HttpStatusCodes.Not_Found; request.ResponseWriter.Write("Embedded Handler not found."); } }
public bool RequiresSessionForRequest(HttpRequest request, sSite site) { return true; }
bool IRequestHandler.RequiresSessionForRequest(HttpRequest request, Site site) { return ((IEmbeddedHandler)request[CACHE_ID]).RequiresSessionForRequest(request, site); }
public bool RequiresSessionForRequest(HttpRequest request, Site site) { return false; }
public bool CanProcessRequest(HttpRequest request, Org.Reddragonit.EmbeddedWebServer.Interfaces.Site site) { return(request.URL.AbsolutePath == "/" || request.URL.AbsolutePath == "/index.html"); }