public bool Connect()
        {
            _loggerProvider.Write("Connecting...");
            ConnectionStatusChanged?.Invoke(ConnectionStatus.Connecting);
            _connectInfo = PrepareConnectionInfo();

            _client = new SshClient(_connectInfo);
            _client.ErrorOccurred += OnErrorHandler;

            try
            {
                _client.Connect();

                foreach (var p in _ports)
                {
                    p.Init();
                    _client.AddForwardedPort(p.NativePort);
                    p.Start();
                }
            }
            catch (Exception e)
            {
                _loggerProvider.Write("Connection error: " + e);
                return(false);
            }

            _loggerProvider.Write("Connection established.");
            ConnectionStatusChanged?.Invoke(ConnectionStatus.Established);

            return(_client.IsConnected);
        }
Beispiel #2
0
        public MainWindowViewModel(ISecureShellTunnelProvider secureShellTunnelProvider, ILoggerProvider loggerProvider, Settings settings)
        {
            _settings       = settings;
            _loggerProvider = loggerProvider;

            _secureShellTunnelProvider = secureShellTunnelProvider;

            _loggerProvider.Write("App started.");
            _secureShellTunnelProvider.SubscribeToConnectionStatus(ConnectionStatusChanged);

            SelectedProxy  = ProxyTypes.None;
            SelectedTunnel = TunnelTypes.Local;

            //Try open config
            _settings.Load();

            ForwardedPorts = _settings.Ports.ToBindableCollection();

            EnableProxy = _settings.ProxySettings.UseProxy;

            ConnectionStatus      = Helpers.ConnectionStatus.Disconnected.ToString();
            _connectionStatusType = Helpers.ConnectionStatus.Disconnected;
        }