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);
        }
Beispiel #2
0
        public void Setup()
        {
            _mocker = new AutoMocker();

            _settings = _mocker.GetMock <ISettings>();


            _configurator = _mocker.CreateInstance <ClientInitializer>();
        }
Beispiel #3
0
        private void InitializeClient(bool loopback)
        {
            var excludedPlugins = Settings.Current.Plugins
                                  .Where(s => !s.Enabled)
                                  .Select(s => s.Name)
                                  .ToArray();

            var initializer = new ClientInitializer
            {
                Nick      = Settings.Current.Nick,
                NickColor = Settings.Current.NickColor,

                PluginsPath     = Path.Combine(AppDomain.CurrentDomain.BaseDirectory, "plugins"),
                ExcludedPlugins = excludedPlugins
            };

            ClientModel.Init(initializer);

            try
            {
                ClientModel.Player.SetOptions(Settings.Current.OutputAudioDevice);
                ClientModel.Recorder.SetOptions(Settings.Current.InputAudioDevice, new AudioQuality(1, Settings.Current.Bits, Settings.Current.Frequency));
            }
            catch (ModelException me)
            {
                ClientModel.Player.Dispose();
                ClientModel.Recorder.Dispose();

                if (me.Code != ErrorCode.AudioNotEnabled)
                {
                    throw;
                }
                else
                {
                    var msg = Localizer.Instance.Localize(AudioInitializationFailedKey);
                    MessageBox.Show(msg, ProgramName, MessageBoxButton.OK, MessageBoxImage.Warning);
                }
            }

            IPAddress address = loopback
        ? Settings.Current.StateOfIPv6Protocol ? IPAddress.IPv6Loopback : IPAddress.Loopback
        : IPAddress.Parse(Settings.Current.Address);

            ClientModel.Client.Connect(new IPEndPoint(address, Settings.Current.Port));
        }
Beispiel #4
0
 public ChannelInboundHandlerAdapterAnonymousInnerClass(ClientInitializer outerInstance)
 {
     this.outerInstance = outerInstance;
 }
        private void Connect(object obj)
        {
            //if(true)
            var dialog = new ConnectDialog();

            if (dialog.ShowDialog() == true)
            {
                try
                {
                    var trustedCertitifcatesPath = Settings.Current.TrustedCertificatesPath;
                    var outputAudioDevice        = Settings.Current.OutputAudioDevice;
                    var inputAudioDevice         = Settings.Current.InputAudioDevice;
                    var bits            = Settings.Current.Bits;
                    var frequency       = Settings.Current.Frequency;
                    var excludedPlugins = Settings.Current.Plugins
                                          .Where(s => !s.Enabled)
                                          .Select(s => s.Name)
                                          .ToArray();
                    var path = AppDomain.CurrentDomain.BaseDirectory + "TrustedCertificates\\c.pfx";
                    //var path = "E:\\5th Semester\\CN Lab\\Project\\Abdullah Farooq\\c.pfx";
                    SecureString password    = new NetworkCredential("", "1234").SecurePassword;
                    var          initializer = new ClientInitializer
                    {
                        Nick        = dialog.Nick,
                        NickColor   = dialog.NickColor,
                        Certificate = new X509Certificate2(dialog.CertificatePath, dialog.CertificatePassword),
                        //Nick = "Server",
                        //          NickColor = Color.Red,

                        //Certificate = new X509Certificate2(path, password),
                        TrustedCertificatesPath = trustedCertitifcatesPath,

                        PluginsPath     = Path.Combine(AppDomain.CurrentDomain.BaseDirectory, PluginsDirectoryName),
                        ExcludedPlugins = excludedPlugins
                    };

                    ClientModel.Init(initializer);

                    try
                    {
                        ClientModel.Player.SetOptions(outputAudioDevice);
                        ClientModel.Recorder.SetOptions(inputAudioDevice, new AudioQuality(1, bits, frequency));
                    }
                    catch (ModelException me)
                    {
                        ClientModel.Player.Dispose();
                        ClientModel.Recorder.Dispose();

                        if (me.Code != ErrorCode.AudioNotEnabled)
                        {
                            throw;
                        }
                        else
                        {
                            var msg = Localizer.Instance.Localize(AudioInitializationFailedKey);
                            MessageBox.Show(msg, ProgramName, MessageBoxButton.OK, MessageBoxImage.Warning);
                        }
                    }

                    var serverUri = Connection.CreateTcpchatUri(dialog.Address);
                    ClientModel.Client.Connect(serverUri);

                    dialog.SaveSettings();
                }
                catch (Exception e)
                {
                    SelectedRoom.AddSystemMessage(Localizer.Instance.Localize(ParamsErrorKey));

                    if (ClientModel.IsInited)
                    {
                        ClientModel.Reset();
                    }
                }
            }
        }
Beispiel #6
0
        private void Connect(object obj)
        {
            var dialog = new ConnectDialog();

            if (dialog.ShowDialog() == true)
            {
                try
                {
                    var trustedCertitifcatesPath = Settings.Current.TrustedCertificatesPath;
                    var outputAudioDevice        = Settings.Current.OutputAudioDevice;
                    var inputAudioDevice         = Settings.Current.InputAudioDevice;
                    var bits            = Settings.Current.Bits;
                    var frequency       = Settings.Current.Frequency;
                    var excludedPlugins = Settings.Current.Plugins
                                          .Where(s => !s.Enabled)
                                          .Select(s => s.Name)
                                          .ToArray();

                    var initializer = new ClientInitializer
                    {
                        Nick                    = dialog.Nick,
                        NickColor               = dialog.NickColor,
                        Certificate             = new X509Certificate2(dialog.CertificatePath, dialog.CertificatePassword),
                        TrustedCertificatesPath = trustedCertitifcatesPath,

                        PluginsPath     = Path.Combine(AppDomain.CurrentDomain.BaseDirectory, PluginsDirectoryName),
                        ExcludedPlugins = excludedPlugins
                    };

                    ClientModel.Init(initializer);

                    try
                    {
                        ClientModel.Player.SetOptions(outputAudioDevice);
                        ClientModel.Recorder.SetOptions(inputAudioDevice, new AudioQuality(1, bits, frequency));
                    }
                    catch (ModelException me)
                    {
                        ClientModel.Player.Dispose();
                        ClientModel.Recorder.Dispose();

                        if (me.Code != ErrorCode.AudioNotEnabled)
                        {
                            throw;
                        }
                        else
                        {
                            var msg = Localizer.Instance.Localize(AudioInitializationFailedKey);
                            MessageBox.Show(msg, ProgramName, MessageBoxButton.OK, MessageBoxImage.Warning);
                        }
                    }

                    var serverUri = Connection.CreateTcpchatUri(dialog.Address);
                    ClientModel.Client.Connect(serverUri);

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

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