Ignore:
Timestamp:
Sep 9, 2014, 9:52:41 PM (10 years ago)
Author:
alloc
Message:

fixes

Location:
binary-improvements/7dtd-server-fixes/src/NetConnections/Servers/Telnet
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • binary-improvements/7dtd-server-fixes/src/NetConnections/Servers/Telnet/Telnet.cs

    r183 r184  
    3939                }
    4040
     41                public void FailedLogins ()
     42                {
     43                }
     44
    4145                private void AcceptClient (IAsyncResult asyncResult)
    4246                {
    4347                        if (listener.Server.IsBound) {
    44                                 TelnetConnection c = new TelnetConnection (listener.EndAcceptTcpClient (asyncResult), authEnabled);
     48                                TelnetConnection c = new TelnetConnection (this, listener.EndAcceptTcpClient (asyncResult), authEnabled);
    4549                                connections.Add (c);
    4650                                listener.BeginAcceptTcpClient (new AsyncCallback (AcceptClient), null);
  • binary-improvements/7dtd-server-fixes/src/NetConnections/Servers/Telnet/TelnetConnection.cs

    r183 r184  
    1111        public class TelnetConnection : IConnection
    1212        {
    13                 BlockingQueue<string> toClientQueue = new BlockingQueue<string> ();
    14                 private Thread receiveThread = null;
    15                 private Thread sendThread = null;
     13                private readonly BlockingQueue<string> toClientQueue = new BlockingQueue<string> ();
     14                private readonly Telnet owner;
     15                private readonly Thread receiveThread = null;
     16                private readonly Thread sendThread = null;
     17                private int authTries = 0;
    1618                private bool authenticated = false;
    17                 private bool authEnabled;
     19                private readonly bool authEnabled;
    1820                private TcpClient client;
    19                 private NetworkStream stream;
    20                 private EndPoint endpoint;
     21                private readonly NetworkStream stream;
     22                private readonly EndPoint endpoint;
     23                private readonly int endpointAddressHash;
    2124
    22                 public TelnetConnection (TcpClient client, bool authEnabled)
     25                public TelnetConnection (Telnet owner, TcpClient client, bool authEnabled)
    2326                {
     27                        this.owner = owner;
    2428                        this.authEnabled = authEnabled;
    2529                        this.client = client;
     
    3337                        sendThread = ThreadMaster.Create ("TelnetClientSend", new ThreadStart (SendThread));
    3438                        sendThread.Start ();
     39
     40                        if (endpoint is IPEndPoint) {
     41                                endpointAddressHash = ((IPEndPoint)endpoint).Address.GetHashCode();
     42                                Log.Out ("Hash: " + endpointAddressHash);
     43                        } else {
     44                                Log.Out ("EndPoint is not an IPEndPoint but: " + endpoint.GetType().ToString());
     45                        }
    3546
    3647                        if (authEnabled) {
     
    8091                                                                        LoginMessage ();
    8192                                                                } else {
    82                                                                         WriteLine ("Password incorrect, please enter password:");
     93                                                                        authTries++;
     94                                                                        // TODO: check if IP has more login attempts by now
     95                                                                        if (authTries < 3) {
     96                                                                                WriteLine ("Password incorrect, please enter password:");
     97                                                                        } else {
     98                                                                                WriteLine ("Too many failed login attempts!");
     99                                                                                Log.Out ("Telnet connection closed for too many login attempts: " + endpoint);
     100                                                                                //TODO: owner.FailedLogins();
     101                                                                                Close ();
     102                                                                                break;
     103                                                                        }
    83104                                                                }
    84105                                                        } else {
Note: See TracChangeset for help on using the changeset viewer.