예제 #1
0
 internal HttpResponse(HttpRequest request)
 {
     _request = request;
     _outStream = new MemoryStream();
     string encoding = "ascii";
     _enc = Encoding.ASCII;
     if (request.Headers.CharSet != null)
     {
         switch (request.Headers.CharSet.ToLower())
         {
             case "utf-7":
                 encoding = "utf-7";
                 _enc = Encoding.UTF7;
                 break;
             case "utf-8":
                 encoding = "utf-8";
                 _enc = Encoding.UTF8;
                 break;
             case "utf-32":
                 encoding = "utf-32";
                 _enc = Encoding.UTF32;
                 break;
         }
     }
     _responseWriter = new HttpStreamWriter(_outStream,_enc);
     _responseHeaders = new HeaderCollection();
     _responseHeaders["Server"] = Messages.Current["Org.Reddragonit.EmbeddedWebServer.DefaultHeaders.Server"];
     _responseHeaders.CharSet = encoding;
     _responseStatus = HttpStatusCodes.OK;
     _responseCookie = new CookieCollection();
     _isResponseSent = false;
 }
예제 #2
0
 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));
 }
 //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;
 }
 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";
 }
 /*
  * 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;
 }
예제 #6
0
 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();
 }
        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();
        }
예제 #8
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();
 }
 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, 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;
 }
 /*
  * 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, Org.Reddragonit.EmbeddedWebServer.Interfaces.Site site)
 {
     return false;
 }
 private void _WriteConstants(HttpRequest request)
 {
     StringBuilder js = new StringBuilder();
     js.AppendLine("var DIRECTORY_SEPERATOR = '" + _EscapeCode(Path.DirectorySeparatorChar.ToString()) + "';");
     js.AppendLine("var HELP_CLASS= 'help';");
     js.AppendLine("var NPANXX_HELP='N = [2-9]<br/>Z = [1-9]<br/>X = [0-9]<br/>. = \\d+<br/>| = ignore on output, bracket in the validation';");
     js.AppendLine("var CURRENT_OS=" + JSON.JsonEncode(Utility.OperatingSystem) + ";");
     js.AppendLine("var PORT_RANGE_REGEX = '" + Constants.PORT_RANGE_REGEX + "';");
     js.AppendLine("var IS_SETUP = " + Utility.IsSiteSetup.ToString().ToLower() + ";");
     if (JavascriptConstants.Current.Count > 0)
     {
         foreach (string str in JavascriptConstants.Current.Keys)
         {
             js.AppendLine("var " + str + " = '" + _EscapeCode(JavascriptConstants.Current[str]) + "';");
         }
     }
     js.AppendLine("Backbone=_.extend(Backbone,{HasConfigurationChangesToMake:" + ConfigurationController.HasChangesToMake.ToString().ToLower() + "});");
     request.ResponseWriter.WriteLine(JSMinifier.Minify(js.ToString()));
 }
 public bool CanProcessRequest(HttpRequest request, Org.Reddragonit.EmbeddedWebServer.Interfaces.Site site)
 {
     return request.URL.AbsolutePath == "/" || request.URL.AbsolutePath == "/index.html";
 }
 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();") +
         "}});"));
 }
 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 HttpRequestRecievedEvent(HttpRequest request)
 {
     _pars.Add("Request", request);
 }
 public HttpRequestErrorEvent(HttpRequest request,Exception error)
 {
     _pars.Add("Request", request);
     _pars.Add("Error", error);
 }
 /*
  * 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;
 }
예제 #20
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);
 }
예제 #21
0
 public void ProcessRequest(HttpRequest request, sSite site)
 {
     RequestHandler.HandleRequest(new MappedRequest(request));
 }
 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());
     }
 }
예제 #23
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;
 }
 //always returns false as sessions are never necessary
 bool IRequestHandler.RequiresSessionForRequest(HttpRequest request, Site site)
 {
     return false;
 }
예제 #25
0
 public bool CanProcessRequest(HttpRequest request, sSite site)
 {
     return RequestHandler.HandlesURL(request.URL, request.Method);
 }
 /*
  * 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();
 }
예제 #27
0
 public bool RequiresSessionForRequest(HttpRequest request, sSite site)
 {
     return true;
 }
 //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));
 }
예제 #29
0
 public bool RequiresSessionForRequest(HttpRequest request, Site site)
 {
     return false;
 }
 //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);
 }