コード例 #1
0
        private void InitializeXcapPathParser()
        {
            if (pathParser == null)
            {
                pathParser = new XcapUriParser();
            }

            pathParser.SetDefaultValue();
        }
コード例 #2
0
        static void Main(string[] args)
        {
            var exePath = System.IO.Path.GetDirectoryName(System.Reflection.Assembly.GetExecutingAssembly().Location);

            /////////////////////////////////////////////////////////////////////////

            serversManager = new ServersManager <HttpConnection>(new ServersManagerConfig());

            serversManager.Bind(new ProtocolPort()
            {
                Protocol = ServerProtocol.Tcp, Port = 8080,
            });
            serversManager.ServerAdded   += ServersManager_ServerAdded;
            serversManager.ServerRemoved += ServersManager_ServerRemoved;
            serversManager.ServerInfo    += ServersManager_ServerInfo;
            serversManager.NewConnection += ServersManager_NewConnection;
            serversManager.EndConnection += ServersManager_EndConnection;

            serversManager.Received += ServersManager_Received;
            serversManager.Sent     += ServersManager_Sent;

            serversManager.Logger.Enable(exePath + @"\Log.pcap");

            /////////////////////////////////////////////////////////////////////////

            HttpMessage.BufferManager = new BufferManagerProxy();

            /////////////////////////////////////////////////////////////////////////

            Console.WriteLine(@"Loading DFA table...");

            HttpMessageReader.LoadTables(exePath + @"\Http.Message.dfa");
            XcapUriParser.LoadTables(exePath);

            /////////////////////////////////////////////////////////////////////////

            xcapServer = new XcapServer();
            xcapServer.AddHandler(new ResourceListsHandlerExample());
            //xcapServer.AddHandler(new RlsServicesHandler());

            /////////////////////////////////////////////////////////////////////////

            httpServer           = new HttpServer();
            httpServer.SendAsync = serversManager.SendAsync;
            (httpServer as IHttpServerAgentRegistrar).Register(xcapServer, 0, true);

            /////////////////////////////////////////////////////////////////////////

            Console.WriteLine(@"Starting...");

            try
            {
                serversManager.Start();
                Console.WriteLine(@"Started!");
            }
            catch (Exception ex)
            {
                Console.WriteLine(@"Failed to start");
                Console.WriteLine(@"Error: {0}", ex.Message);
            }

            /////////////////////////////////////////////////////////////////////////

            Console.WriteLine(@"Press any key to stop server...");
            Console.ReadKey(true);
            Console.WriteLine();
        }
コード例 #3
0
        public Server()
        {
#if !DEBUG
            crashHandler = new CrashHandler();
#endif
            HttpMessage.BufferManager = SipMessage.BufferManager = new BufferManagerProxy();

            LoadConfiguration();

            var configuration = SipServerConfigurationSection.GetSection();

            if (configuration.AddToWindowsFirewall)
            {
                AddFirewallException();
            }

            if (BufferManager.IsInitialized() == false)
            {
                BufferManager.Initialize(Math.Min((int)(GetTotalMemoryInBytes() / (1024 * 1024) / 2), 2048));
            }

            if (Directory.Exists(configuration.AccountsPath) == false)
            {
                Directory.CreateDirectory(configuration.AccountsPath);
            }

            var initializer = new Initializer(ConfigurationMonitor_Changed);

            initializer.GetResults(
                out transportLayer,
                out transactionLayer,
                out locationService,
                out wcfService,
                out configurationMonitor,
                out trunkManager,
                out authorization,
                out userz,
                out adUsers,
                out mras,
                out httpServer,
                out accounts,
                out restapi,
                out proxyServerTU);

            if (configuration.IsActiveDirectoryEnabled)
            {
                accounts.ForEach((account) =>
                {
                    SetSpn(@"sip/" + account.DomainName);
                });
            }

            RestapiUriParser.LoadTables(configuration.ExePath);
            XcapUriParser.LoadTables(configuration.ExePath);

            Http.Message.HttpMessageReader.InitializeAsync(
                (ms1) =>
            {
                Sip.Message.SipMessageReader.InitializeAsync(
                    (ms2) =>
                {
                    Tracer.WriteImportant(@"JIT-compilation Http.Message.dll " + (ms1 / 1000).ToString() + ", Sip.Message.dll: " + (ms2 / 1000).ToString() + " seconds.");

                    try
                    {
                        transportLayer.Start();
                        Tracer.WriteImportant(@"Server started.");
                    }
                    catch (Exception ex)
                    {
                        Tracer.WriteException(@"Failed to start Servers Manager.", ex);
                    }

                    Initializer.ConfigureVoipProviders(trunkManager, configuration);
                });
            });
        }