Advertisement
Guest User

Untitled

a guest
May 21st, 2017
135
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
PHP 7.81 KB | None | 0 0
  1. <?php
  2. if(!global_include()) { die(); }
  3.  
  4.  
  5.  
  6. class Page_Login
  7. {
  8.     protected static $error;
  9.     public static function Build()
  10.     {
  11.         // Handle Login Counter
  12.         if(!is_numeric(Session::get('LOGIN_EXPIRY_COUNT')))
  13.         {
  14.             Session::set('LOGIN_EXPIRY_COUNT',0);
  15.         }
  16.        
  17.         if(!isset($_POST['_cmd'])) { $_POST['_cmd'] = "x"; }
  18.        
  19.         // Handle Login
  20.         if($_POST['_cmd'] == 'login') {
  21.             return self::doLogin();
  22.         }
  23.         elseif($_GET['act'] == 'logout') {
  24.             return self::doLogout();
  25.         }
  26.         else {
  27.             return self::loginForm();
  28.         }
  29.     }
  30.     protected static function registerError($error)
  31.     {
  32.         self::$error = $error;
  33.         return self::loginForm();
  34.     }
  35.     protected static function handleRedirect($url)
  36.     {
  37.         echo Style::head(Config::$config['server']['name'].' - Redirecting...');
  38.             echo Style::subhead('Redirecting...');
  39.                 Main::redirect($url,0);
  40.             echo Style::endsubhead();
  41.         echo Style::endhead();
  42.         return;
  43.     }
  44.     protected static function loginForm()
  45.     {
  46.         if(Session::get('loggedin')) {
  47.             return self::handleRedirect(Main::getRootHTTP()."/player/?id=1");
  48.         }
  49.        
  50.         echo Style::head(Config::$config['server']['name'].' - Authentication Required');
  51.             echo Style::subhead('Authentication Required');
  52.            
  53.                 if(!empty(self::$error)) {
  54.                     echo '<div class="error">'.self::$error.'</div>';
  55.                 }
  56.        
  57.        
  58.             // Jesper was here
  59.             if(!isset($_POST['_redirect'])) { $_POST['_redirect'] = ""; }
  60.             if(!isset($_GET['referrer'])) { $_GET['referrer'] = ""; }
  61.             if(!isset($_POST['username'])) { $_POST['username'] = ""; }
  62.            
  63.                 echo '
  64.                 <form name="login" id="login" method="POST" action="../main/?act=login">
  65.                     <input type="hidden" name="_cmd" value="login" />
  66.                     <input type="hidden" name="_redirect" value="'.$_POST['_redirect'].'" />
  67.                     <input type="hidden" name="referrer" value="'.htmlentities($_GET['referrer']).'" />
  68.                     <table border="0" width="100%">
  69.                         <tr>
  70.                             <td width="30%">Account:</td>
  71.                             <td width="70%"><input type="text" name="username" style="width:99%" value="'.htmlentities($_POST['username']).'" class="tbox"  /></td>
  72.                         <tr>
  73.                         <tr>
  74.                             <td>Password:</td>
  75.                             <td><input type="password" name="password" style="width:99%" value="" class="tbox"  /></td>
  76.                         </tr>
  77.                         <tr>
  78.                             <td colspan="2"><input type="submit" value="Log In!" style="width:99%" class="button" /></td>
  79.                         </tr>
  80.                     </table>
  81.                 </form>
  82.                 <div align="right">
  83.                     <sub><a href="../main/?act=password" id="forgot_password_link">Forgot Password?</a> | <a href="../main/?act=register">Register</a></sub>
  84.                 </div>
  85.                 ';
  86.             echo Style::endsubhead();
  87.         echo Style::endhead();
  88.     }
  89.     protected static function doLogin()
  90.     {  
  91.         // Process Brute-Force Prevention
  92.         if(Session::get('LOGIN_EXPIRY_COUNT') > 5)
  93.         {
  94.             if((time() - Session::get('LOGIN_EXPIRY_TIMES')) > 600)
  95.             {
  96.                 Session::set('LOGIN_EXPIRY_COUNT',0);
  97.                 Session::set('LOGIN_EXPIRY_TIMES',time());
  98.             }
  99.             return self::registerError("You have used all 5 login attempts. You may try again in 10 minutes.");
  100.         }
  101.        
  102.         // Process Login
  103.         MySQL::Open('L');
  104.         $username = mysql_real_escape_string($_POST['username']);
  105.         $password = mysql_real_escape_string($_POST['password']);
  106.         //$encryptedpassword = sha1(strtoupper($username).":".strtoupper($password));
  107.         $encryptedpassword = $password;
  108.         // ^ Fuck off, go less-security! - Jesper
  109.        
  110.         // Check Variables
  111.         if(empty($username) || empty($password))
  112.         {
  113.             return self::registerError("You must fill out all fields.");
  114.         }
  115.        
  116.         // Check IP Locks
  117.         if(!empty($iplock_add[strtoupper($username)]))
  118.         {
  119.             if($iplock_add[strtoupper($username)] != $_SERVER['REMOTE_ADDR'])
  120.             {
  121.                 Log::Write('48',$username." is IP Locked!");
  122.                 return self::registerError("This account has restricted access.");
  123.             }
  124.         }
  125.        
  126.         // Check Account Information
  127.         //$q = mysql_query("SELECT * FROM `accounts` WHERE `login` = '".$username."' AND (`password` = '".$password."' OR `encrypted_password` = '".$encryptedpassword."') LIMIT 1;") or die(mysql_error());
  128.         $q = mysql_query("SELECT * FROM `accounts` WHERE `login` = '".$username."' AND `password` = '".$encryptedpassword."' LIMIT 1;") or die(mysql_error());
  129.        
  130.         // Error: Account not exist, Password wrong, Username wrong
  131.         if(mysql_num_rows($q) != 1) {
  132.             Session::set('LOGIN_EXPIRY_COUNT',(Session::get('LOGIN_EXPIRY_COUNT') + 1));
  133.             Session::set('LOGIN_EXPIRY_TIMES',time());
  134.             return self::registerError("You entered an incorrect username and/or password.");
  135.         }
  136.        
  137.         $data = mysql_fetch_array($q,MYSQL_ASSOC);
  138.        
  139.         // Error: Account is banned
  140.         if($data['banned'] == 1) {
  141.             return self::registerError("The account "".htmlentities(ucfirst($username))."" is banned.");
  142.         }
  143.        
  144.         // Check User Data Information
  145.         $q2 = mysql_query("SELECT * FROM `e_userdata` WHERE `guid` = '".mysql_real_escape_string($data['acct'])."' LIMIT 1;");
  146.         if(mysql_num_rows($q2) == 0)
  147.         {
  148.             // Create Missing Record
  149.             mysql_query("INSERT INTO `e_userdata` (`guid`) VALUES ('".mysql_real_escape_string($data['acct'])."');") or die(mysql_error());
  150.             $q2 = mysql_query("SELECT * FROM `e_userdata` WHERE `guid` = '".mysql_real_escape_string($data['acct'])."' LIMIT 1;");
  151.            
  152.         }
  153.         $data2 = mysql_fetch_array($q2,MYSQL_ASSOC);
  154.        
  155.         // Clean Variables
  156.         if(empty($data2['donor_points'])) { $data2['donor_points'] = 0; }
  157.         if(empty($data2['voter_points'])) { $data2['voter_points'] = 0; }
  158.        
  159.         // Handle Account Forced Permissions
  160.         $i = 1;
  161.         foreach(Config::$config['realms'] as $id => $vars)
  162.         {
  163.             MySQL::Open('C',$id);
  164.            
  165.             $q3 = mysql_query("SELECT * FROM `account_forced_permissions` WHERE `login` LIKE '".mysql_real_escape_string(Session::get('login'))."';") or die(mysql_error());
  166.            
  167.             if(mysql_num_rows($q3) > 0)
  168.             {
  169.                 $rowassoc = mysql_fetch_array($q3,MYSQL_ASSOC);
  170.                 Session::set('gm_flags_realm_'.$id,$rowassoc['permissions']);
  171.             }
  172.             else
  173.             {
  174.                 Session::set('gm_flags_realm_'.$id,$data['gm']);
  175.             }
  176.            
  177.             $i++;
  178.         }
  179.        
  180.         // Set Session Variables
  181.         Session::set('donor_points',$data2['donor_points']);
  182.         Session::set('voter_points',$data2['voter_points']);
  183.         Session::set('doncp_id',$data2['id']);
  184.         Session::set('lastvote',$data2['vote_lasttime']);
  185.         Session::set('votes',$data2['vote_total']);
  186.         Session::set('purchased_titles',$data2['purchased_titles']);
  187.         Session::set('flink_userid',$data2['flink_userid']);
  188.         Session::set('flink_usernm',$data2['flink_usernm']);
  189.         Session::set('secret_question',$data2['secret_question']);
  190.         Session::set('secret_answer',$data2['secret_answer']);
  191.         Session::set('acct',$data['acct']);
  192.         Session::set('flags',$data['flags']);
  193.         Session::set('email',$data['email']);
  194.         Session::set('login',$data['login']);
  195.         Session::set('password',$data['password']);
  196.         //Session::set('encrypted_password',$data['encrypted_password']);
  197.         Session::set('gm_flags_global',$data['gm']);
  198.         Session::set('banned',$data['banned']);
  199.         Session::set('lastlogin',$data['lastlogin']);
  200.         Session::set('lastip',$data['lastip']);
  201.         Session::set('muted',$data['muted']);
  202.         Session::set('loggedin',true);
  203.         Session::set('LOGIN_EXPIRY_COUNT',0);
  204.         Session::UpdatePrivelages();
  205.        
  206.         // Log Administrator Logins
  207.         if($data['gm'] == 'az') {
  208.             Log::Write('46',$data['login']);
  209.         }
  210.        
  211.         // Write Session Lock
  212.         $handle = fopen('../data/cache/locks/lock_'.$data['acct'].'.php', 'w');
  213.         fwrite($handle, "<?php \$account_lock = '".$_SERVER['REMOTE_ADDR']."'; ?>");
  214.        
  215.         // Redirect
  216.         if(!empty($_POST['_redirect']))
  217.         {
  218.             return self::handleRedirect($_POST['_redirect']);
  219.         }
  220.         return self::handleRedirect("../player/?id=1");
  221.     }
  222.     protected static function doLogout()
  223.     {
  224.        
  225.         if(!Session::get('loggedin')) {
  226.             return self::loginForm();
  227.         }
  228.        
  229.         if(Session::get('admin')) {
  230.             Log::Write('47',Session::get('login'));
  231.         }
  232.        
  233.         Session::Reset();
  234.                
  235.         return self::handleRedirect("../main/?act=login");
  236.     }
  237. }
  238. Page_Login::Build();
  239. ?>
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement