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();
 }
Example #9
0
        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;
 }
Example #12
0
 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;
         }
     }
 }
Example #19
0
 public bool RequiresSessionForRequest(HttpRequest request, ISite site)
 {
     return(false);
 }
Example #20
0
        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());
            }
        }
Example #22
0
 public bool RequiresSessionForRequest(HttpRequest request, Org.Reddragonit.EmbeddedWebServer.Interfaces.Site site)
 {
     return(true);
 }
Example #23
0
 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;
 }
Example #26
0
 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));
 }
Example #28
0
 //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;
 }
Example #29
0
 public void ProcessRequest(HttpRequest request, sSite site)
 {
     RequestHandler.HandleRequest(new MappedRequest(request));
 }
Example #30
0
 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>");
 }
Example #36
0
 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;
        }
Example #38
0
 public bool CanProcessRequest(HttpRequest request, Org.Reddragonit.EmbeddedWebServer.Interfaces.Site site)
 {
     return(request.URL.AbsolutePath == "/FileDownloader.ashx");
 }
Example #39
0
        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");
 }