Beispiel #1
0
        static void Main(string[] args)
        {
            try
            {
                logger.Debug("SIP Notifier starting");

                m_sipNotifierStorageType    = (AppState.GetConfigSetting(m_storageTypeKey) != null) ? StorageTypesConverter.GetStorageType(AppState.GetConfigSetting(m_storageTypeKey)) : StorageTypes.Unknown;;
                m_sipNotifierStorageConnStr = AppState.GetConfigSetting(m_connStrKey);

                if (m_sipNotifierStorageType == StorageTypes.Unknown || m_sipNotifierStorageConnStr.IsNullOrBlank())
                {
                    throw new ApplicationException("The SIP Notifier cannot start with no persistence settings.");
                }

                if (m_sipNotifierStorageType == StorageTypes.XML && !Directory.Exists(m_sipNotifierStorageConnStr))
                {
                    throw new ApplicationException("Directory " + m_sipNotifierStorageConnStr + " does not exist for XML persistor.");
                }

                SIPAssetPersistor <Customer> customerPersistor = SIPAssetPersistorFactory <Customer> .CreateSIPAssetPersistor(m_sipNotifierStorageType, m_sipNotifierStorageConnStr, m_customersXMLFilename);

                SIPAssetPersistor <SIPAccount> sipAccountsPersistor = SIPAssetPersistorFactory <SIPAccount> .CreateSIPAssetPersistor(m_sipNotifierStorageType, m_sipNotifierStorageConnStr, m_sipAccountsXMLFilename);

                SIPAssetPersistor <SIPRegistrarBinding> sipRegistrarBindingsPersistor = SIPAssetPersistorFactory <SIPRegistrarBinding> .CreateSIPAssetPersistor(m_sipNotifierStorageType, m_sipNotifierStorageConnStr, m_registrarBindingsXMLFilename);

                SIPAssetPersistor <SIPDialogueAsset> sipDialoguePersistor = SIPAssetPersistorFactory <SIPDialogueAsset> .CreateSIPAssetPersistor(m_sipNotifierStorageType, m_sipNotifierStorageConnStr, m_sipDialoguesXMLFilename);

                SIPDomainManager sipDomainManager = new SIPDomainManager(m_sipNotifierStorageType, m_sipNotifierStorageConnStr);

                SIPNotifierDaemon daemon = new SIPNotifierDaemon(
                    customerPersistor.Get,
                    sipDialoguePersistor.Get,
                    sipDialoguePersistor.Get,
                    sipDomainManager.GetDomain,
                    sipAccountsPersistor,
                    sipRegistrarBindingsPersistor.Get,
                    sipAccountsPersistor.Get,
                    sipRegistrarBindingsPersistor.Count,
                    SIPRequestAuthenticator.AuthenticateSIPRequest,
                    null);

                if (args != null && args.Length == 1 && args[0].StartsWith("-c"))
                {
                    Thread daemonThread = new Thread(daemon.Start);
                    daemonThread.Start();
                    m_notifierUp.WaitOne();
                }
                else
                {
                    System.ServiceProcess.ServiceBase[] ServicesToRun;
                    ServicesToRun = new System.ServiceProcess.ServiceBase[] { new Service(daemon) };
                    System.ServiceProcess.ServiceBase.Run(ServicesToRun);
                }
            }
            catch (Exception excp)
            {
                Console.WriteLine("Exception Main. " + excp.Message);
                logger.Error("Exception Main. " + excp.Message);
            }
        }
Beispiel #2
0
        public SIPSorceryPersistor(StorageTypes storageType, string storageConnectionStr)
        {
            if (storageType == StorageTypes.XML)
            {
                if (!storageConnectionStr.Contains(":"))
                {
                    // Relative path.
                    storageConnectionStr = AppDomain.CurrentDomain.BaseDirectory + storageConnectionStr;
                }

                if (!storageConnectionStr.EndsWith(@"\"))
                {
                    storageConnectionStr += @"\";
                }

                if (!Directory.Exists(storageConnectionStr))
                {
                    throw new ApplicationException("Directory " + storageConnectionStr +
                                                   " does not exist for XML persistor.");
                }
            }

            m_sipAccountsPersistor =
                SIPAssetPersistorFactory <SIPAccount> .CreateSIPAssetPersistor(storageType, storageConnectionStr,
                                                                               m_sipAccountsXMLFilename);

            m_dialPlanPersistor =
                SIPAssetPersistorFactory <SIPDialPlan> .CreateSIPAssetPersistor(storageType, storageConnectionStr,
                                                                                m_sipDialplansXMLFilename);

            m_sipProvidersPersistor =
                SIPAssetPersistorFactory <SIPProvider> .CreateSIPAssetPersistor(storageType, storageConnectionStr,
                                                                                m_sipProvidersXMLFilename);

            m_sipProviderBindingsPersistor =
                SIPAssetPersistorFactory <SIPProviderBinding> .CreateSIPAssetPersistor(storageType, storageConnectionStr,
                                                                                       m_sipProviderBindingsXMLFilename);

            var sipDomainAssetPersistor =
                SIPAssetPersistorFactory <SIPDomain> .CreateSIPAssetPersistor(storageType, storageConnectionStr,
                                                                              m_sipProvidersXMLFilename);

            m_sipDomainManager             = new SIPDomainManager(sipDomainAssetPersistor);
            m_sipRegistrarBindingPersistor =
                SIPAssetPersistorFactory <SIPRegistrarBinding> .CreateSIPAssetPersistor(storageType, storageConnectionStr,
                                                                                        m_sipRegistrarBindingsXMLFilename);

            m_sipDialoguePersistor =
                SIPAssetPersistorFactory <SIPDialogueAsset> .CreateSIPAssetPersistor(storageType, storageConnectionStr,
                                                                                     m_sipDialoguesXMLFilename);

            m_sipCDRPersistor =
                SIPAssetPersistorFactory <SIPCDRAsset> .CreateSIPAssetPersistor(storageType, storageConnectionStr,
                                                                                m_sipCDRsXMLFilename);

            //if (m_sipCDRPersistor != null)
            //{
            //    ThreadPool.QueueUserWorkItem(delegate { WriteCDRs(); });
            //}
        }
 public ProvisioningServiceInstanceProvider(
     SIPAssetPersistor <SIPAccount> sipAccountPersistor,
     SIPAssetPersistor <SIPDialPlan> sipDialPlanPersistor,
     SIPAssetPersistor <SIPProvider> sipProviderPersistor,
     SIPAssetPersistor <SIPProviderBinding> sipProviderBindingsPersistor,
     SIPAssetPersistor <SIPRegistrarBinding> sipRegistrarBindingsPersistor,
     SIPAssetPersistor <SIPDialogueAsset> sipDialoguePersistor,
     SIPAssetPersistor <SIPCDRAsset> sipCDRPersistor,
     CustomerSessionManager crmSessionManager,
     SIPDomainManager sipDomainManager,
     SIPMonitorLogDelegate log,
     int newCustomersAllowedLimit,
     bool inviteCodeRequired)
 {
     m_sipAccountPersistor           = sipAccountPersistor;
     m_sipDialPlanPersistor          = sipDialPlanPersistor;
     m_sipProviderPersistor          = sipProviderPersistor;
     m_sipProviderBindingsPersistor  = sipProviderBindingsPersistor;
     m_sipRegistrarBindingsPersistor = sipRegistrarBindingsPersistor;
     m_sipDialoguePersistor          = sipDialoguePersistor;
     m_sipCDRPersistor          = sipCDRPersistor;
     m_crmCustomerPersistor     = crmSessionManager.CustomerPersistor;
     m_crmSessionManager        = crmSessionManager;
     m_sipDomainManager         = sipDomainManager;
     m_logDelegate              = log;
     m_newCustomersAllowedLimit = newCustomersAllowedLimit;
     m_inviteCodeRequired       = inviteCodeRequired;
 }
        public SIPProvisioningWebService(
            SIPAssetPersistor <SIPAccount> sipAccountPersistor,
            SIPAssetPersistor <SIPDialPlan> sipDialPlanPersistor,
            SIPAssetPersistor <SIPProvider> sipProviderPersistor,
            SIPAssetPersistor <SIPProviderBinding> sipProviderBindingsPersistor,
            SIPAssetPersistor <SIPRegistrarBinding> sipRegistrarBindingsPersistor,
            SIPAssetPersistor <SIPDialogueAsset> sipDialoguePersistor,
            SIPAssetPersistor <SIPCDRAsset> sipCDRPersistor,
            CustomerSessionManager crmSessionManager,
            SIPDomainManager sipDomainManager,
            SIPMonitorLogDelegate log,
            int newCustomersAllowedLimit,
            bool inviteCodeRequired) :
            base(crmSessionManager)
        {
            SIPAccountPersistor           = sipAccountPersistor;
            DialPlanPersistor             = sipDialPlanPersistor;
            SIPProviderPersistor          = sipProviderPersistor;
            SIPProviderBindingsPersistor  = sipProviderBindingsPersistor;
            SIPRegistrarBindingsPersistor = sipRegistrarBindingsPersistor;
            SIPDialoguePersistor          = sipDialoguePersistor;
            SIPCDRPersistor            = sipCDRPersistor;
            SIPDomainManager           = sipDomainManager;
            LogDelegate_External       = log;
            m_newCustomersAllowedLimit = newCustomersAllowedLimit;
            m_inviteCodeRequired       = inviteCodeRequired;

            if (!String.IsNullOrEmpty(m_providerRegistrationsDisabled))
            {
                Boolean.TryParse(m_providerRegistrationsDisabled, out m_providerRegDisabled);
            }

            //SIPSorcery.Entities.Services.SIPEntitiesDomainService domainSvc = new Entities.Services.SIPEntitiesDomainService();
        }
 public SIPProvisioningWebService(
     SIPAssetPersistor <SIPAccount> sipAccountPersistor,
     SIPAssetPersistor <SIPDialPlan> sipDialPlanPersistor,
     SIPAssetPersistor <SIPProvider> sipProviderPersistor,
     SIPAssetPersistor <SIPProviderBinding> sipProviderBindingsPersistor,
     SIPAssetPersistor <SIPRegistrarBinding> sipRegistrarBindingsPersistor,
     SIPAssetPersistor <SIPDialogueAsset> sipDialoguePersistor,
     SIPAssetPersistor <SIPCDRAsset> sipCDRPersistor,
     CustomerSessionManager crmSessionManager,
     SIPDomainManager sipDomainManager,
     SIPMonitorLogDelegate log,
     int newCustomersAllowedLimit)
 {
     SIPAccountPersistor           = sipAccountPersistor;
     DialPlanPersistor             = sipDialPlanPersistor;
     SIPProviderPersistor          = sipProviderPersistor;
     SIPProviderBindingsPersistor  = sipProviderBindingsPersistor;
     SIPRegistrarBindingsPersistor = sipRegistrarBindingsPersistor;
     SIPDialoguePersistor          = sipDialoguePersistor;
     SIPCDRPersistor            = sipCDRPersistor;
     CRMCustomerPersistor       = crmSessionManager.CustomerPersistor;
     CRMSessionManager          = crmSessionManager;
     SIPDomainManager           = sipDomainManager;
     LogDelegate_External       = log;
     m_newCustomersAllowedLimit = newCustomersAllowedLimit;
 }
Beispiel #6
0
        private void btnStart_Click(object sender, EventArgs e)
        {
            SIPAssetPersistor <SIPAccount> sipAccountsPersistor = SIPAssetPersistorFactory <SIPAccount> .CreateSIPAssetPersistor(m_sipRegistrarStorageType, m_sipRegistrarStorageConnStr, m_sipAccountsXMLFilename);

            SIPDomainManager sipDomainManager = new SIPDomainManager(m_sipRegistrarStorageType, m_sipRegistrarStorageConnStr);

            daemon            = new SIPRegistrarDaemon(sipDomainManager.GetDomain, sipAccountsPersistor.Get, SIPRequestAuthenticator.AuthenticateSIPRequest, _deviceList);
            lblInit.Text      = "sip服务已启动,等待初始化。。。";
            lblInit.ForeColor = Color.Blue;
            Thread daemonThread = new Thread(daemon.Start);

            daemonThread.Start();
            daemon.m_registrarCore.CatalogHandler += daemon_CatalogHandler;
            foreach (KeyValuePair <string, SipMonitorCore> monitorCore in daemon.m_registrarCore.MonitorItems)
            {
                monitorCore.Value.SipStatusHandler += monitorCore_SipStatusHandler;
            }
        }