public static void EventSink_AccountLogin( AccountLoginEventArgs e ) { if ( !IPLimiter.SocketBlock && !IPLimiter.Verify( e.State.Address ) ) { e.Accepted = false; e.RejectReason = ALRReason.InUse; Console.WriteLine( "Login: {0}: Past IP limit threshold", e.State ); using ( StreamWriter op = new StreamWriter( "ipLimits.log", true ) ) op.WriteLine( "{0}\tPast IP limit threshold\t{1}", e.State, DateTime.Now ); return; } string un = e.Username; string pw = e.Password; e.Accepted = false; Account acct = Accounts.GetAccount( un ) as Account; if ( acct == null ) { if ( AutoAccountCreation && un.Trim().Length > 0 ) //To prevent someone from making an account of just '' or a bunch of meaningless spaces { e.State.Account = acct = CreateAccount( e.State, un, pw ); e.Accepted = acct == null ? false : acct.CheckAccess( e.State ); if ( !e.Accepted ) e.RejectReason = ALRReason.BadComm; } else { Console.WriteLine( "Login: {0}: Invalid username '{1}'", e.State, un ); e.RejectReason = ALRReason.Invalid; } } else if ( !acct.HasAccess( e.State ) ) { Console.WriteLine( "Login: {0}: Access denied for '{1}'", e.State, un ); e.RejectReason = ( m_LockdownLevel > AccessLevel.Player ? ALRReason.BadComm : ALRReason.BadPass ); } else if ( !acct.CheckPassword( pw ) ) { Console.WriteLine( "Login: {0}: Invalid password for '{1}'", e.State, un ); e.RejectReason = ALRReason.BadPass; } else if ( acct.Banned ) { Console.WriteLine( "Login: {0}: Banned account '{1}'", e.State, un ); e.RejectReason = ALRReason.Blocked; } else { Console.WriteLine( "Login: {0}: Valid credentials for '{1}'", e.State, un ); e.State.Account = acct; e.Accepted = true; acct.LogAccess( e.State ); } if ( !e.Accepted ) AccountAttackLimiter.RegisterInvalidAccess( e.State ); }
public static void InvokeAccountLogin( AccountLoginEventArgs e ) { if ( AccountLogin != null ) AccountLogin( e ); }
public static void EventSink_AccountLogin( AccountLoginEventArgs e ) { e.Accepted = false; e.RejectReason = ALRReason.BadComm; return; /*if ( !IPLimiter.SocketBlock && !IPLimiter.Verify( e.State.Address ) ) { e.Accepted = false; e.RejectReason = ALRReason.InUse; Console.WriteLine( "Login: {0}: Past IP limit threshold", e.State ); using ( StreamWriter op = new StreamWriter( "ipLimits.log", true ) ) op.WriteLine( "{0}\tPast IP limit threshold\t{1}", e.State, DateTime.Now ); return; } string un = e.Username; string pw = e.Password; e.Accepted = false; Account acct = Accounts.GetAccount( un ); if ( acct == null ) { if ( AutoAccountCreation ) { e.State.Account = acct = CreateAccount( e.State, un, pw ); e.Accepted = acct == null ? false : acct.CheckAccess( e.State ); //e.CityInfo = StartingCities; //I forgot to add this line, Thanks to eva42 for pointing it out to me. } else { Console.WriteLine( "Login: {0}: Invalid username '{1}'", e.State, un ); e.RejectReason = ALRReason.Invalid; } } else if ( !acct.HasAccess( e.State ) ) { Console.WriteLine( "Login: {0}: Access denied for '{1}'", e.State, un ); e.RejectReason = ( m_LockdownLevel > AccessLevel.Player ? ALRReason.BadComm : ALRReason.BadPass ); } else if ( !acct.CheckPassword( pw ) ) { Console.WriteLine( "Login: {0}: Invalid password for '{1}'", e.State, un ); e.RejectReason = ALRReason.BadPass; } else if ( acct.Banned ) { Console.WriteLine( "Login: {0}: Banned account '{1}'", e.State, un ); e.RejectReason = ALRReason.Blocked; } else { Console.WriteLine( "Login: {0}: Valid credentials for '{1}'", e.State, un ); e.State.Account = acct; e.Accepted = true; acct.LogAccess( e.State ); } if ( !e.Accepted ) AccountAttackLimiter.RegisterInvalidAccess( e.State );*/ }
public static void EventSink_AccountLogin( AccountLoginEventArgs e ) { if ( !IPLimiter.SocketBlock && !IPLimiter.Verify( e.State.Address ) ) { e.Accepted = false; e.RejectReason = ALRReason.InUse; log.Info(String.Format("Login: {0}: Past IP limit threshold", e.State)); return; } string un = e.Username; string pw = e.Password; e.Accepted = false; Account acct = Accounts.GetAccount( un ); if ( acct == null ) { if ( AutoAccountCreation ) { e.State.Account = acct = CreateAccount( e.State, un, pw ); e.Accepted = acct == null ? false : acct.CheckAccess( e.State ); if ( !e.Accepted ) e.RejectReason = ALRReason.BadComm; } else { log.Warn(String.Format("Login: {0}: Invalid username '{1}'", e.State, un)); e.RejectReason = ALRReason.Invalid; } } else if ( !acct.HasAccess( e.State ) ) { log.Error(String.Format("Login: {0}: Access denied for '{1}'", e.State, un)); e.RejectReason = ( m_LockdownLevel > AccessLevel.Player ? ALRReason.BadComm : ALRReason.BadPass ); } else if ( !acct.CheckPassword( pw ) ) { log.Error(String.Format("Login: {0}: Invalid password for '{1}'", e.State, un)); e.RejectReason = ALRReason.BadPass; } else if ( acct.Banned ) { log.Error(String.Format("Login: {0}: Banned account '{1}'", e.State, un)); e.RejectReason = ALRReason.Blocked; } else { log.Info(String.Format("Login: {0}: Valid credentials for '{1}'", e.State, un)); e.State.Account = acct; e.Accepted = true; acct.LogAccess( e.State ); } if ( !e.Accepted ) AccountAttackLimiter.RegisterInvalidAccess( e.State ); }
public static void EventSink_AccountLogin( AccountLoginEventArgs e ) { /* e.Accepted = false; return; */ if ( !IPLimiter.SocketBlock && !IPLimiter.Verify( e.State.Address ) ) { e.Accepted = false; e.RejectReason = ALRReason.InUse; Console.WriteLine( "Login: {0}: Past IP limit threshold", e.State ); using ( StreamWriter op = new StreamWriter( "ipLimits.log", true ) ) op.WriteLine( "{0}\tPast IP limit threshold\t{1}", e.State, DateTime.Now ); return; } string un = e.Username; string pw = e.Password; e.Accepted = false; Account acct = Accounts.GetAccount( un ) as Account; /*** BEGIN ADDED CODE ***/ if (acct == null) { Console.WriteLine("pulling {0}", un); System.Reflection.Assembly[] assemblies = System.AppDomain.CurrentDomain.GetAssemblies(); foreach (System.Reflection.Assembly assembly in assemblies) { try { Type syncdb = assembly.GetType("Server.Accounting.SyncDB"); if (syncdb != null) { Console.WriteLine("found type SyncDB {0} in {1}", syncdb, assembly); syncdb.InvokeMember("PullAccount", System.Reflection.BindingFlags.InvokeMethod | System.Reflection.BindingFlags.Static | System.Reflection.BindingFlags.Public, null, null, new Object[]{ un }); Console.WriteLine("after PullAccount"); break; } } catch (Exception ex) { Console.WriteLine("during PullAccount: {0}", ex); } } acct = Accounts.GetAccount( un ) as Account; } /*** END ADDED CODE ***/ if ( acct == null ) { if ( AutoAccountCreation && un.Trim().Length > 0 ) //To prevent someone from making an account of just '' or a bunch of meaningless spaces { e.State.Account = acct = CreateAccount( e.State, un, pw ); e.Accepted = acct == null ? false : acct.CheckAccess( e.State ); if ( !e.Accepted ) e.RejectReason = ALRReason.BadComm; } else { Console.WriteLine( "Login: {0}: Invalid username '{1}'", e.State, un ); e.RejectReason = ALRReason.Invalid; } } else if ( !acct.HasAccess( e.State ) ) { Console.WriteLine( "Login: {0}: Access denied for '{1}'", e.State, un ); e.RejectReason = ( m_LockdownLevel > AccessLevel.Player ? ALRReason.BadComm : ALRReason.BadPass ); } else if ( !acct.CheckPassword( pw ) ) { Console.WriteLine( "Login: {0}: Invalid password for '{1}'", e.State, un ); e.RejectReason = ALRReason.BadPass; } else if ( acct.Banned ) { Console.WriteLine( "Login: {0}: Banned account '{1}'", e.State, un ); e.RejectReason = ALRReason.Blocked; } else { Console.WriteLine( "Login: {0}: Valid credentials for '{1}'", e.State, un ); e.State.Account = acct; e.Accepted = true; acct.LogAccess( e.State ); } if ( !e.Accepted ) AccountAttackLimiter.RegisterInvalidAccess( e.State ); }
public static void InvokeAccountLogin(AccountLoginEventArgs e) { if (AccountLogin != null) { foreach (AccountLoginEventHandler currentDelegate in AccountLogin.GetInvocationList()) { try { currentDelegate.Invoke(e); } catch (Exception ex) { // Log an exception EventSink.InvokeLogException(new LogExceptionEventArgs(ex)); } } } }
public static void EventSink_AccountLogin(AccountLoginEventArgs e) { if (!IPLimiter.SocketBlock && !IPLimiter.Verify(e.State.Address)) { e.Accepted = false; e.RejectReason = ALRReason.InUse; Console.WriteLine("Login: {0}: Past IP limit threshold", e.State); using (StreamWriter op = new StreamWriter("ipLimits.log", true)) op.WriteLine("{0}\tPast IP limit threshold\t{1}", e.State, DateTime.Now); // tell other accounts on this IP what's going on IPLimiter.Notify(e.State.Address); return; } string un = e.Username; string pw = e.Password; e.Accepted = false; Account acct = Accounts.GetAccount(un); if (acct == null) { if (AutoAccountCreation) { e.State.Account = acct = CreateAccount(e.State, un, pw); e.Accepted = acct == null ? false : acct.CheckAccess(e.State); if (!e.Accepted) e.RejectReason = ALRReason.BadComm; } else { Console.WriteLine("Login: {0}: Invalid username '{1}'", e.State, un); e.RejectReason = ALRReason.Invalid; } } else if (IPLimiter.IPStillHot(acct, e.State.Address)) { Console.WriteLine("Login: {0}: Access denied for '{1}'. IP too hot", e.State, un); e.RejectReason = ALRReason.InUse; } else if (!acct.HasAccess(e.State)) { Console.WriteLine("Login: {0}: Access denied for '{1}'", e.State, un); e.RejectReason = (m_LockdownLevel > AccessLevel.Player ? ALRReason.BadComm : ALRReason.BadPass); } else if (!acct.CheckPassword(pw)) { Console.WriteLine("Login: {0}: Invalid password for '{1}'", e.State, un); e.RejectReason = ALRReason.BadPass; } else if (acct.Banned) { Console.WriteLine("Login: {0}: Banned account '{1}'", e.State, un); e.RejectReason = ALRReason.Blocked; } else { Console.WriteLine("Login: {0}: Valid credentials for '{1}'", e.State, un); e.State.Account = acct; e.Accepted = true; acct.LogAccess(e.State); acct.LastLogin = DateTime.Now; } if (!e.Accepted) AccountAttackLimiter.RegisterInvalidAccess(e.State); }