private void OnNewConnection(IAsyncResult asyncResult) { System.Net.Sockets.Socket client; try { client = _listenerSocket.EndAccept(asyncResult); } catch (ObjectDisposedException) { // ignore, happens during shutdown return; } client.NoDelay = true; _listenerSocket.BeginAccept(OnNewConnection, this); switch (_sessionType) { case EnumSessionType.Telnet: { _logger.Info($"Accepting incoming Telnet connection from {client.RemoteEndPoint}..."); var session = new TelnetSession(_host, _logger, client, _configuration, _textVariableService); _host.AddSession(session); session.Start(); break; } case EnumSessionType.Rlogin: { if (((IPEndPoint)client.RemoteEndPoint).Address.ToString() != _configuration.RloginRemoteIP) { _logger.Info( $"Rejecting incoming Rlogin connection from unauthorized Remote Host: {client.RemoteEndPoint}"); client.Close(); return; } _logger.Info($"Accepting incoming Rlogin connection from {client.RemoteEndPoint}..."); var session = new RloginSession(_host, _logger, client, _channelDictionary, _configuration, _textVariableService, _moduleIdentifier); _host.AddSession(session); session.Start(); break; } default: throw new ArgumentOutOfRangeException(); } }
private void OnNewConnection(IAsyncResult asyncResult) { System.Net.Sockets.Socket client = _listenerSocket.EndAccept(asyncResult); client.NoDelay = true; _listenerSocket.BeginAccept(OnNewConnection, this); switch (_sessionType) { case EnumSessionType.Telnet: { _logger.Info($"Accepting incoming Telnet connection from {client.RemoteEndPoint}..."); var telnetSession = new TelnetSession(client); break; } case EnumSessionType.Rlogin: { if (((IPEndPoint)client.RemoteEndPoint).Address.ToString() != _configuration["Rlogin.RemoteIP"]) { _logger.Info( $"Rejecting incoming Rlogin connection from unauthorized Remote Host: {client.RemoteEndPoint}"); client.Close(); client.Dispose(); return; } _logger.Info($"Accepting incoming Rlogin connection from {client.RemoteEndPoint}..."); var rloginSession = new RloginSession(client, _moduleIdentifier); break; } default: throw new ArgumentOutOfRangeException(); } }