Exemplo n.º 1
0
 public void DeployExtension(sDeployedExtension ext)
 {
     lock (_cachedMessageCount)
     {
         _cachedMessageCount.Remove(ext.Number + "@" + ext.DomainName);
     }
 }
Exemplo n.º 2
0
        public static void RegenerateExtensionFiles(string extensionNumber, Domain domain)
        {
            if (!IsDomainDeployed(domain.Name))
            {
                Log.Trace("Creating domain " + domain.Name + " to produce an extension");
                RegenerateDomainFile(domain);
            }
            Extension ext = Extension.Load(extensionNumber, domain);

            if (ext == null)
            {
                Lock();
                List <sDeployedExtension> exts = extensions;
                for (int x = 0; x < exts.Count; x++)
                {
                    if ((exts[x].Number == extensionNumber) || (exts[x].DomainName == domain.Name))
                    {
                        exts.RemoveAt(x);
                        break;
                    }
                }
                extensions = exts;
                UnLock();
                _deployer.DestroyExtension(domain.Name, extensionNumber);
                EventController.TriggerEvent(new ExtensionDestroyedEvent(extensionNumber, domain.Name));
            }
            else
            {
                sDeployedExtension sext = new sDeployedExtension(ext);
                Lock();
                List <sDeployedExtension> exts = extensions;
                bool add = true;
                for (int x = 0; x < exts.Count; x++)
                {
                    if ((exts[x].Number == extensionNumber) && (exts[x].DomainName == domain.Name))
                    {
                        exts[x] = sext;
                        add     = false;
                        break;
                    }
                }
                if (add)
                {
                    exts.Add(sext);
                }
                extensions = exts;
                UnLock();
                _deployer.DeployExtension(sext);
                EventController.TriggerEvent(new ExtensionDeploymentEvent(sext));
                Log.Trace("Config file for extension " + extensionNumber + " has been successfully created");
                Extension ex = Extension.Load(extensionNumber, domain);
                VoiceMail vm = VoiceMail.Load(ex.Number, ex.Context);
                if ((vm != null) && vm.ResetVMPassword)
                {
                    vm.ResetVMPassword = false;
                    vm.Update();
                }
            }
        }
Exemplo n.º 3
0
        public void DeployExtension(sDeployedExtension extension)
        {
            DirectoryInfo di = new DirectoryInfo(Settings.Current[Constants.BASE_PATH_NAME].ToString() + Path.DirectorySeparatorChar + Constants.DEFAULT_CONF_DIR +
                                                 Path.DirectorySeparatorChar + Constants.DEFAULT_EXTENSIONS_DIRECTORY + Path.DirectorySeparatorChar + extension.DomainName);
            string str = Utility.ReadEmbeddedResource("Org.Reddragonit.FreeSwitchConfig.DataCore.Generators.resources.Extension.st");

            Log.Trace("Generating config file for extension " + extension.Number);
            Template st = new Template(str);

            st.SetAttribute("ext", extension);
            FileStream fs = new FileStream(di.FullName + Path.DirectorySeparatorChar + extension.Number + ".xml", FileMode.Create, FileAccess.Write, FileShare.None);

            st.WriteToStream(fs);
            fs.Close();
        }
        private void ProcessDirectoryRequest(HttpRequest request)
        {
            switch (request.Parameters["Event-Name"])
            {
            case "REQUEST_PARAMS":
                if (request.Parameters["purpose"] != null)
                {
                    switch (request.Parameters["purpose"])
                    {
                    case "gateways":
                        Template st = new Template(Utility.ReadEmbeddedResource("Org.Reddragonit.FreeSwitchConfig.UserModules.XmlCurl.resources.domain.st"));
                        CoreGenerator.Lock();
                        st.SetAttribute("domains", CoreGenerator.Domains);
                        st.SetAttribute("section", request.Parameters["section"]);
                        request.ResponseWriter.Write(st.ToString());
                        CoreGenerator.UnLock();
                        break;

                    default:
                        request.ResponseWriter.WriteLine(NOT_FOUND_RESPONSE);
                        break;
                    }
                }
                else
                {
                    sDeployedExtension ext = null;
                    sDeployedDomain    dom = null;
                    switch (request.Parameters["action"])
                    {
                    case "sip_auth":
                        CoreGenerator.Lock();
                        for (var x = 0; x < CoreGenerator.Extensions.Count; x++)
                        {
                            if ((CoreGenerator.Extensions[x].Number == request.Parameters["user"]) &&
                                (CoreGenerator.Extensions[x].DomainName == request.Parameters["domain"]))
                            {
                                ext = CoreGenerator.Extensions[x];
                                break;
                            }
                        }
                        if (ext != null)
                        {
                            for (int x = 0; x < CoreGenerator.Domains.Count; x++)
                            {
                                if (CoreGenerator.Domains[x].Name == ext.DomainName)
                                {
                                    dom = CoreGenerator.Domains[x];
                                    break;
                                }
                            }
                        }
                        CoreGenerator.UnLock();
                        if (ext == null)
                        {
                            request.ResponseWriter.WriteLine(NOT_FOUND_RESPONSE);
                        }
                        else
                        {
                            Template st = new Template(Utility.ReadEmbeddedResource("Org.Reddragonit.FreeSwitchConfig.UserModules.XmlCurl.resources.Extension.st"));
                            st.SetAttribute("ext", ext);
                            st.SetAttribute("domain", dom);
                            st.SetAttribute("section", request.Parameters["section"]);
                            request.ResponseWriter.Write(st.ToString());
                        }
                        break;

                    case "reverse-auth-lookup":
                        CoreGenerator.Lock();
                        for (var x = 0; x < CoreGenerator.Extensions.Count; x++)
                        {
                            if ((CoreGenerator.Extensions[x].Number == request.Parameters["user"]) &&
                                (CoreGenerator.Extensions[x].DomainName == request.Parameters["domain"]))
                            {
                                ext = CoreGenerator.Extensions[x];
                                break;
                            }
                        }
                        CoreGenerator.UnLock();
                        if (ext == null)
                        {
                            request.ResponseWriter.WriteLine(NOT_FOUND_RESPONSE);
                        }
                        else
                        {
                            Template st = new Template(Utility.ReadEmbeddedResource("Org.Reddragonit.FreeSwitchConfig.UserModules.XmlCurl.resources.ReverseAuth.st"));
                            st.SetAttribute("extension", ext);
                            st.SetAttribute("section", request.Parameters["section"]);
                            request.ResponseWriter.Write(st.ToString());
                        }
                        break;

                    default:
                        request.ResponseWriter.WriteLine(NOT_FOUND_RESPONSE);
                        break;
                    }
                }
                break;

            case "GENERAL":
                if (request.Parameters["action"] == "message-count")
                {
                    string mcont = VirtualConfigDeployer.GetCachedMessageCount(request.Parameters["user"], request.Parameters["domain"]);
                    if (mcont != null)
                    {
                        request.ResponseWriter.Write(mcont);
                    }
                    else
                    {
                        sDeployedExtension ext = null;
                        sDeployedDomain    dom = null;
                        CoreGenerator.Lock();
                        for (var x = 0; x < CoreGenerator.Extensions.Count; x++)
                        {
                            if ((CoreGenerator.Extensions[x].Number == request.Parameters["user"]) &&
                                (CoreGenerator.Extensions[x].DomainName == request.Parameters["domain"]))
                            {
                                ext = CoreGenerator.Extensions[x];
                                break;
                            }
                        }
                        if (ext != null)
                        {
                            for (int x = 0; x < CoreGenerator.Domains.Count; x++)
                            {
                                if (CoreGenerator.Domains[x].Name == ext.DomainName)
                                {
                                    dom = CoreGenerator.Domains[x];
                                    break;
                                }
                            }
                        }
                        CoreGenerator.UnLock();
                        if (ext == null)
                        {
                            request.ResponseWriter.WriteLine(NOT_FOUND_RESPONSE);
                        }
                        else
                        {
                            Template st = new Template(Utility.ReadEmbeddedResource("Org.Reddragonit.FreeSwitchConfig.UserModules.XmlCurl.resources.MessageCount.st"));
                            st.SetAttribute("ext", ext);
                            st.SetAttribute("domain", dom);
                            st.SetAttribute("section", request.Parameters["section"]);
                            request.ResponseWriter.Write(st.ToString());
                            VirtualConfigDeployer.CacheMessageCount(ext.Number, dom.Name, st.ToString());
                        }
                    }
                }
                else
                {
                    request.ResponseWriter.WriteLine(NOT_FOUND_RESPONSE);
                }
                break;

            default:
                request.ResponseWriter.WriteLine(NOT_FOUND_RESPONSE);
                break;
            }
        }
 internal ExtensionDeploymentEvent(sDeployedExtension extension)
 {
     _pars.Add("Extension", extension);
 }