static void Main(string[] args)
        {
            ServerInitializer initializer = new ServerInitializer();

            initializer.StartServer();
            Console.ReadKey();
        }
        void Run(ServerBootstrap sb, Bootstrap cb)
        {
            var serverInitializer = new ServerInitializer();

            sb.ChildHandler(serverInitializer);

            var clientInitializer = new ClientInitializer();

            cb.Handler(clientInitializer);

            // start server
            Task <IChannel> task = sb.BindAsync(LoopbackAnyPort);

            Assert.True(task.Wait(DefaultTimeout), "Server bind timed out");
            this.serverChannel = task.Result;
            Assert.NotNull(this.serverChannel.LocalAddress);
            var endPoint = (IPEndPoint)this.serverChannel.LocalAddress;

            // connect to server
            task = cb.ConnectAsync(endPoint);
            Assert.True(task.Wait(DefaultTimeout), "Connect to server timed out");
            this.clientChannel = task.Result;
            Assert.NotNull(this.clientChannel.LocalAddress);

            Assert.True(serverInitializer.Initialized.Wait(DefaultTimeout), "Channel initialize timed out");
            Assert.True(serverInitializer.Close());

            // Server connection closed will cause the client
            // to receive EOF and the channel should go inactive
            Assert.True(clientInitializer.Inactive.Wait(DefaultTimeout), "TcpChannel should fire Inactive if the server connection is closed.");
            Assert.Null(clientInitializer.ErrorCaught);
        }
Example #3
0
        static void Main(string[] args)
        {
            string password;
            int    serverPort;
            int    servicePort;
            bool   usingIpV6;

            if (args.Length < 4)
            {
                WriteHelp();
                return;
            }

            password = args[0];

            if (!int.TryParse(args[1], out serverPort))
            {
                WriteHelp();
                return;
            }

            if (!int.TryParse(args[2], out servicePort))
            {
                WriteHelp();
                return;
            }

            if (!bool.TryParse(args[3], out usingIpV6))
            {
                WriteHelp();
                return;
            }

            var initializer = new ServerInitializer
            {
                AdminPassword   = password,
                PluginsPath     = Path.Combine(AppDomain.CurrentDomain.BaseDirectory, "plugins"),
                ExcludedPlugins = new string[0]
            };

            ServerModel.Init(initializer);
            ServerModel.Server.Start(serverPort, servicePort, usingIpV6);

            Console.WriteLine("Enter \"exit\" for server stop");

            while (true)
            {
                var command = Console.ReadLine();
                if (string.Equals(command, "exit", StringComparison.OrdinalIgnoreCase))
                {
                    break;
                }
            }

            ServerModel.Reset();
        }
Example #4
0
        public WorkflowBuilder Build()
        {
            this._workflow.MapHandlers(this._client);

            this._client.LoginAsync(TokenType.Bot, this._token).Wait();
            this._client.StartAsync().Wait();

            ServerInitializer.Initialize(this._client, this._context);
            return(this);
        }
Example #5
0
        static void Main(string[] argsRaw)
        {
            var args = new ArgsParser(argsRaw, WriteHelp);

            var serverAddresss      = args.Get(ServerAddressName);
            var p2pServicePort      = args.Get <int>(ServicePortName, int.TryParse);
            var certificatePath     = args.Get(CertificatePathName);
            var certificatePassword = args.GetOrDefault(CertificatePasswordName, null);
            var adminPassword       = args.Get(AdminPasswordName);

            if (!File.Exists(certificatePath))
            {
                Console.WriteLine("File not found: {0}", certificatePath);
                WriteHelp();
                return;
            }

            AppDomain.CurrentDomain.UnhandledException += (sender, e) =>
            {
                var error = e.ExceptionObject as Exception;
                if (error == null)
                {
                    return;
                }

                var logger = new Logger(AppDomain.CurrentDomain.BaseDirectory + "/UnhandledError.log");
                logger.Write(error);
            };

            var initializer = new ServerInitializer
            {
                AdminPassword   = adminPassword,
                PluginsPath     = Path.Combine(AppDomain.CurrentDomain.BaseDirectory, "plugins"),
                ExcludedPlugins = new string[0],
                Certificate     = new X509Certificate2(certificatePath, CreateSecureString(certificatePassword))
            };

            ServerModel.Init(initializer);
            var serverUri = Connection.CreateTcpchatUri(serverAddresss);

            ServerModel.Server.Start(serverUri, p2pServicePort);

            Console.WriteLine("Enter \"exit\" for server stop");

            while (true)
            {
                var command = Console.ReadLine();
                if (string.Equals(command, "exit", StringComparison.OrdinalIgnoreCase))
                {
                    break;
                }
            }

            ServerModel.Reset();
        }
Example #6
0
        public WorkflowBuilder Build()
        {
            _workflow.Initialize();
            _workflow.MapHandlers(_client);

            _client.LoginAsync(TokenType.Bot, _token).Wait();
            _client.StartAsync().Wait();

            ServerInitializer.Initialize(_client);
            return(this);
        }
Example #7
0
        private void EnableServer(object obj)
        {
            var dialog = new ServerDialog();

            if (dialog.ShowDialog() != true)
            {
                return;
            }

            try
            {
                var excludedPlugins = Settings.Current.Plugins
                                      .Where(s => !s.Enabled)
                                      .Select(s => s.Name)
                                      .ToArray();

                var initializer = new ServerInitializer
                {
                    AdminPassword   = Settings.Current.AdminPassword,
                    PluginsPath     = Path.Combine(AppDomain.CurrentDomain.BaseDirectory, "plugins"),
                    ExcludedPlugins = excludedPlugins
                };

                ServerModel.Init(initializer);
                ServerModel.Server.Start(Settings.Current.Port, Settings.Current.ServicePort, Settings.Current.StateOfIPv6Protocol);

                InitializeClient(true);
            }
            catch (ArgumentException)
            {
                SelectedRoom.AddSystemMessage(Localizer.Instance.Localize(ParamsErrorKey));

                if (ClientModel.IsInited)
                {
                    ClientModel.Reset();
                }

                if (ServerModel.IsInited)
                {
                    ServerModel.Reset();
                }
            }
        }
Example #8
0
        private void EnableServer(object obj)
        {
            var dialog = new ServerDialog();

            if (dialog.ShowDialog() == true)
            {
                try
                {
                    var adminPassword   = Settings.Current.AdminPassword;
                    var p2pPort         = Settings.Current.ServerStartP2PPort;
                    var excludedPlugins = Settings.Current.Plugins
                                          .Where(s => !s.Enabled)
                                          .Select(s => s.Name)
                                          .ToArray();

                    var initializer = new ServerInitializer
                    {
                        AdminPassword   = adminPassword,
                        PluginsPath     = Path.Combine(AppDomain.CurrentDomain.BaseDirectory, PluginsDirectoryName),
                        ExcludedPlugins = excludedPlugins,
                        Certificate     = new X509Certificate2(dialog.CertificatePath, dialog.CertificatePassword),
                    };

                    ServerModel.Init(initializer);

                    var serverStartUri = Connection.CreateTcpchatUri(dialog.ServerAddress);
                    ServerModel.Server.Start(serverStartUri, p2pPort);

                    dialog.SaveSettings();
                }
                catch (Exception e)
                {
                    var errorMessage = Localizer.Instance.Localize(ParamsErrorKey);
                    SelectedRoom.AddSystemMessage($"{errorMessage}\r\n{e.Message}");

                    if (ServerModel.IsInited)
                    {
                        ServerModel.Reset();
                    }
                }
            }
        }
Example #9
0
 static ServerInitializer()       // called by Unity.
 {
     initializer = new ServerInitializer();
 }
Example #10
0
    protected override void OnOpen()
    {
        Send("Log:---------- connected to Unity:" + DateTime.Now + " ----------");

        ServerInitializer.Initialized(this.SendToBrowser);
    }