public void DeployExtension(sDeployedExtension ext) { lock (_cachedMessageCount) { _cachedMessageCount.Remove(ext.Number + "@" + ext.DomainName); } }
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(); } } }
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); }