Vergleich admin/index.php - 1.6.10 - 1.6.17

  Keine Änderungen   Hinzugefügt   Modifiziert   Entfernt
Zeile 91Zeile 91
if($mybb->input['action'] == "unlock")
{
$user = array();

if($mybb->input['action'] == "unlock")
{
$user = array();

 
	$error = '';

	if($mybb->input['username'])
{

	if($mybb->input['username'])
{

		$query = $db->simple_select("users", "*", "LOWER(username)='".$db->escape_string(my_strtolower($mybb->input['username']))."'");
















		$username = $db->escape_string(my_strtolower($mybb->input['username']));
switch($mybb->settings['username_method'])
{
case 0:
$query = $db->simple_select("users", "*", "LOWER(username)='".$username."'", array('limit' => 1));
break;
case 1:
$query = $db->simple_select("users", "*", "LOWER(email)='".$username."'", array('limit' => 1));
break;
case 2:
$query = $db->simple_select("users", "*", "LOWER(username)='".$username."' OR LOWER(email)='".$username."'", array('limit' => 1));
break;
default:
$query = $db->simple_select("users", "*", "LOWER(username)='".$username."'", array('limit' => 1));
break;
}

		$user = $db->fetch_array($query);
if(!$user['uid'])
{

		$user = $db->fetch_array($query);
if(!$user['uid'])
{

			$error[] = $lang->error_invalid_username;

			$error = $lang->error_invalid_username;

		}
}
else if($mybb->input['uid'])

		}
}
else if($mybb->input['uid'])

Zeile 105Zeile 121
		$query = $db->simple_select("users", "*", "uid='".intval($mybb->input['uid'])."'");
$user = $db->fetch_array($query);
if(!$user['uid'])

		$query = $db->simple_select("users", "*", "uid='".intval($mybb->input['uid'])."'");
$user = $db->fetch_array($query);
if(!$user['uid'])

		{
$error[] = $lang->error_invalid_uid;
}

		{
$error = $lang->error_invalid_uid;
}

	}

	}

	



	// Do we have the token? If so let's process it
if($mybb->input['token'] && $user['uid'])

	// Do we have the token? If so let's process it
if($mybb->input['token'] && $user['uid'])

	{		

	{

		$query = $db->simple_select("awaitingactivation", "COUNT(aid) AS num", "uid='".intval($user['uid'])."' AND code='".$db->escape_string($mybb->input['token'])."' AND type='l'");

		$query = $db->simple_select("awaitingactivation", "COUNT(aid) AS num", "uid='".intval($user['uid'])."' AND code='".$db->escape_string($mybb->input['token'])."' AND type='l'");

		



		// If we're good to go
if($db->fetch_field($query, "num") > 0)
{
$db->delete_query("awaitingactivation", "uid='".intval($user['uid'])."' AND code='".$db->escape_string($mybb->input['token'])."' AND type='l'");
$db->update_query("adminoptions", array('loginlockoutexpiry' => 0, 'loginattempts' => 0), "uid='".intval($user['uid'])."'");

		// If we're good to go
if($db->fetch_field($query, "num") > 0)
{
$db->delete_query("awaitingactivation", "uid='".intval($user['uid'])."' AND code='".$db->escape_string($mybb->input['token'])."' AND type='l'");
$db->update_query("adminoptions", array('loginlockoutexpiry' => 0, 'loginattempts' => 0), "uid='".intval($user['uid'])."'");

			
admin_redirect("index.php");
}


admin_redirect("index.php");
}

		else
{

		else
{

			$error[] = $lang->error_invalid_token;

			$error = $lang->error_invalid_token;

		}
}

		}
}

	
$default_page->show_lockout_unlock();


$default_page->show_lockout_unlock($error, 'error');

}
elseif($mybb->input['do'] == "login")

}
elseif($mybb->input['do'] == "login")

{	















{
// We have an adminsid cookie?
if(isset($mybb->cookies['adminsid']))
{
// Check admin session
$query = $db->simple_select("adminsessions", "sid", "sid='".$db->escape_string($mybb->cookies['adminsid'])."'");
$admin_session = $db->fetch_field($query, 'sid');

// Session found: redirect to index
if($admin_session)
{
admin_redirect("index.php");
}
}


	$user = validate_password_from_username($mybb->input['username'], $mybb->input['password']);
if($user['uid'])
{

	$user = validate_password_from_username($mybb->input['username'], $mybb->input['password']);
if($user['uid'])
{

Zeile 148Zeile 178
		}

$db->delete_query("adminsessions", "uid='{$mybb->user['uid']}'");

		}

$db->delete_query("adminsessions", "uid='{$mybb->user['uid']}'");

		



		$sid = md5(uniqid(microtime(true)));

		$sid = md5(uniqid(microtime(true)));

		



		// Create a new admin session for this user
$admin_session = array(
"sid" => $sid,

		// Create a new admin session for this user
$admin_session = array(
"sid" => $sid,

Zeile 163Zeile 193
		);
$db->insert_query("adminsessions", $admin_session);
$admin_session['data'] = array();

		);
$db->insert_query("adminsessions", $admin_session);
$admin_session['data'] = array();

		$db->update_query("adminoptions", array("loginattempts" => 0, "loginlockoutexpiry" => 0), "uid='".intval($mybb->user['uid'])."'", 1);
my_setcookie("adminsid", $sid);

		$db->update_query("adminoptions", array("loginattempts" => 0, "loginlockoutexpiry" => 0), "uid='".intval($mybb->user['uid'])."'");
my_setcookie("adminsid", $sid, '', true);

		my_setcookie('acploginattempts', 0);
$post_verify = false;

		my_setcookie('acploginattempts', 0);
$post_verify = false;

	



		$mybb->request_method = "get";

		$mybb->request_method = "get";

		



		if(!empty($mybb->input['module']))
{
// $query_string should contain the module
$query_string = '?module='.htmlspecialchars_uni($mybb->input['module']);

		if(!empty($mybb->input['module']))
{
// $query_string should contain the module
$query_string = '?module='.htmlspecialchars_uni($mybb->input['module']);

			



			// Now we look for any paramters passed in $_SERVER['QUERY_STRING']
if($_SERVER['QUERY_STRING'])
{

			// Now we look for any paramters passed in $_SERVER['QUERY_STRING']
if($_SERVER['QUERY_STRING'])
{

Zeile 182Zeile 212
				$qstring = str_replace('action=logout', '', $qstring);
$qstring = preg_replace('#&+#', '&', $qstring);
$qstring = str_replace('?&', '?', $qstring);

				$qstring = str_replace('action=logout', '', $qstring);
$qstring = preg_replace('#&+#', '&', $qstring);
$qstring = str_replace('?&', '?', $qstring);

				



				// So what do we do? We know that parameters are devided by ampersands
// That means we must get to work!
$parameters = explode('&', $qstring);

				// So what do we do? We know that parameters are devided by ampersands
// That means we must get to work!
$parameters = explode('&', $qstring);

				



				// Remove our first member if it's for the module
if(substr($parameters[0], 0, 8) == '?module=')

				// Remove our first member if it's for the module
if(substr($parameters[0], 0, 8) == '?module=')

				{

				{

					unset($parameters[0]);
}

					unset($parameters[0]);
}

				



				foreach($parameters as $key => $param)
{
$params = explode("=", $param);

				foreach($parameters as $key => $param)
{
$params = explode("=", $param);

					



					$query_string .= '&'.htmlspecialchars_uni($params[0])."=".htmlspecialchars_uni($params[1]);
}
}

					$query_string .= '&'.htmlspecialchars_uni($params[0])."=".htmlspecialchars_uni($params[1]);
}
}

		



			admin_redirect("index.php".$query_string);
}
}
else
{

			admin_redirect("index.php".$query_string);
}
}
else
{

		$query = $db->simple_select("users", "uid,email", "LOWER(username) = '".$db->escape_string(my_strtolower($mybb->input['username']))."'");
















		$username = $db->escape_string(my_strtolower($mybb->input['username']));
switch($mybb->settings['username_method'])
{
case 0:
$query = $db->simple_select("users", "uid,email", "LOWER(username)='".$username."'", array('limit' => 1));
break;
case 1:
$query = $db->simple_select("users", "uid,email", "LOWER(email)='".$username."'", array('limit' => 1));
break;
case 2:
$query = $db->simple_select("users", "uid,email", "LOWER(username)='".$username."' OR LOWER(email)='".$username."'", array('limit' => 1));
break;
default:
$query = $db->simple_select("users", "uid,email", "LOWER(username)='".$username."'", array('limit' => 1));
break;
}

		$login_user = $db->fetch_array($query);

		$login_user = $db->fetch_array($query);

		



		if($login_user['uid'] > 0)
{

		if($login_user['uid'] > 0)
{

			$db->update_query("adminoptions", array("loginattempts" => "loginattempts+1"), "uid='".intval($login_user['uid'])."'", 1, true);

			$db->update_query("adminoptions", array("loginattempts" => "loginattempts+1"), "uid='".intval($login_user['uid'])."'", '', true);

		}

		}

		



		$loginattempts = login_attempt_check_acp($login_user['uid'], true);

		$loginattempts = login_attempt_check_acp($login_user['uid'], true);

		



		// Have we attempted too many times?
if($loginattempts['loginattempts'] > 0)
{
// Have we set an expiry yet?
if($loginattempts['loginlockoutexpiry'] == 0)
{

		// Have we attempted too many times?
if($loginattempts['loginattempts'] > 0)
{
// Have we set an expiry yet?
if($loginattempts['loginlockoutexpiry'] == 0)
{

				$db->update_query("adminoptions", array("loginlockoutexpiry" => TIME_NOW+(intval($mybb->settings['loginattemptstimeout'])*60)), "uid='".intval($login_user['uid'])."'", 1);

				$db->update_query("adminoptions", array("loginlockoutexpiry" => TIME_NOW+(intval($mybb->settings['loginattemptstimeout'])*60)), "uid='".intval($login_user['uid'])."'");

			}

			}

			
// Did we hit lockout for the first time? Send the unlock email to the administrator


// Did we hit lockout for the first time? Send the unlock email to the administrator

			if($loginattempts['loginattempts'] == $mybb->settings['maxloginattempts'])

			if($loginattempts['loginattempts'] == $mybb->settings['maxloginattempts'])

			{				

			{

				$db->delete_query("awaitingactivation", "uid='".intval($login_user['uid'])."' AND type='l'");
$lockout_array = array(
"uid" => $login_user['uid'],

				$db->delete_query("awaitingactivation", "uid='".intval($login_user['uid'])."' AND type='l'");
$lockout_array = array(
"uid" => $login_user['uid'],

Zeile 236Zeile 281
					"type" => "l"
);
$db->insert_query("awaitingactivation", $lockout_array);

					"type" => "l"
);
$db->insert_query("awaitingactivation", $lockout_array);

				



				$subject = $lang->sprintf($lang->locked_out_subject, $mybb->settings['bbname']);

				$subject = $lang->sprintf($lang->locked_out_subject, $mybb->settings['bbname']);

				$message = $lang->sprintf($lang->locked_out_message, htmlspecialchars_uni($mybb->input['username']), $mybb->settings['bbname'], $mybb->settings['maxloginattempts'], $mybb->settings['bburl'], $mybb->config['admin_dir'], $lockout_array['code']);

				$message = $lang->sprintf($lang->locked_out_message, htmlspecialchars_uni($mybb->input['username']), $mybb->settings['bbname'], $mybb->settings['maxloginattempts'], $mybb->settings['bburl'], $mybb->config['admin_dir'], $lockout_array['code'], $lockout_array['uid']);

				my_mail($login_user['email'], $subject, $message);
}

				my_mail($login_user['email'], $subject, $message);
}

			



			$default_page->show_lockedout();
}

			$default_page->show_lockedout();
}

		



		$fail_check = 1;
}
}

		$fail_check = 1;
}
}

Zeile 252Zeile 297
{
// No admin session - show message on the login screen
if(!isset($mybb->cookies['adminsid']))

{
// No admin session - show message on the login screen
if(!isset($mybb->cookies['adminsid']))

	{

	{

		$login_message = "";
}
// Otherwise, check admin session

		$login_message = "";
}
// Otherwise, check admin session

Zeile 263Zeile 308

// No matching admin session found - show message on login screen
if(!$admin_session['sid'])


// No matching admin session found - show message on login screen
if(!$admin_session['sid'])

		{

		{

			$login_message = $lang->error_invalid_admin_session;
}
else

			$login_message = $lang->error_invalid_admin_session;
}
else

Zeile 273Zeile 318
			// Fetch the user from the admin session
$query = $db->simple_select("users", "*", "uid='{$admin_session['uid']}'");
$mybb->user = $db->fetch_array($query);

			// Fetch the user from the admin session
$query = $db->simple_select("users", "*", "uid='{$admin_session['uid']}'");
$mybb->user = $db->fetch_array($query);





			// Login key has changed - force logout
if(!$mybb->user['uid'] || $mybb->user['loginkey'] != $admin_session['loginkey'])
{

			// Login key has changed - force logout
if(!$mybb->user['uid'] || $mybb->user['loginkey'] != $admin_session['loginkey'])
{

Zeile 298Zeile 343
					for($i = 0; $i < ADMIN_IP_SEGMENTS; ++$i)
{
if($exploded_ip[$i] == $exploded_admin_ip[$i])

					for($i = 0; $i < ADMIN_IP_SEGMENTS; ++$i)
{
if($exploded_ip[$i] == $exploded_admin_ip[$i])

						{

						{

							++$matches;
}
if($matches == ADMIN_IP_SEGMENTS)

							++$matches;
}
if($matches == ADMIN_IP_SEGMENTS)

Zeile 307Zeile 352
							break;
}
}

							break;
}
}

					



					// IP doesn't match properly - show message on logon screen
if(!$valid_ip)
{

					// IP doesn't match properly - show message on logon screen
if(!$valid_ip)
{

Zeile 340Zeile 385
}
$mybb->usergroup = usergroup_permissions($mybbgroups);


}
$mybb->usergroup = usergroup_permissions($mybbgroups);


if($mybb->usergroup['cancp'] != 1 || !$mybb->user['uid'])



$is_super_admin = is_super_admin($mybb->user['uid']);

if($mybb->usergroup['cancp'] != 1 && !$is_super_admin || !$mybb->user['uid'])

{
$uid = 0;
if(isset($mybb->user['uid']))

{
$uid = 0;
if(isset($mybb->user['uid']))

Zeile 356Zeile 403
{
$query = $db->simple_select("adminoptions", "*", "uid='".$mybb->user['uid']."'");
$admin_options = $db->fetch_array($query);

{
$query = $db->simple_select("adminoptions", "*", "uid='".$mybb->user['uid']."'");
$admin_options = $db->fetch_array($query);

	



	if(!empty($admin_options['cpstyle']) && file_exists(MYBB_ADMIN_DIR."/styles/{$admin_options['cpstyle']}/main.css"))
{
$cp_style = $admin_options['cpstyle'];

	if(!empty($admin_options['cpstyle']) && file_exists(MYBB_ADMIN_DIR."/styles/{$admin_options['cpstyle']}/main.css"))
{
$cp_style = $admin_options['cpstyle'];

Zeile 401Zeile 448

// Do not have a valid Admin user, throw back to login page.
if(!isset($mybb->user['uid']) || $logged_out == true)


// Do not have a valid Admin user, throw back to login page.
if(!isset($mybb->user['uid']) || $logged_out == true)

{	

{

	if($logged_out == true)

	if($logged_out == true)

	{

	{

		$page->show_login($lang->success_logged_out);

		$page->show_login($lang->success_logged_out);

	}

	}

	elseif($fail_check == 1)

	elseif($fail_check == 1)

	{

	{

		$page->show_login($lang->error_invalid_username_password, "error");

		$page->show_login($lang->error_invalid_username_password, "error");

	}

	}

	else
{
// If we have this error while retreiving it from an AJAX request, then send back a nice error

	else
{
// If we have this error while retreiving it from an AJAX request, then send back a nice error

Zeile 419Zeile 466
			die;
}
$page->show_login($login_message, "error");

			die;
}
$page->show_login($login_message, "error");

	}
}

$page->add_breadcrumb_item($lang->home, "index.php");

	}
}

$page->add_breadcrumb_item($lang->home, "index.php");


// Begin dealing with the modules


// Begin dealing with the modules

$is_super_admin = is_super_admin($mybb->user['uid']);


 
$modules_dir = MYBB_ADMIN_DIR."modules";
$dir = opendir($modules_dir);
while(($module = readdir($dir)) !== false)

$modules_dir = MYBB_ADMIN_DIR."modules";
$dir = opendir($modules_dir);
while(($module = readdir($dir)) !== false)

Zeile 434Zeile 479
	if(is_dir($modules_dir."/".$module) && !in_array($module, array(".", "..")) && file_exists($modules_dir."/".$module."/module_meta.php"))
{
require_once $modules_dir."/".$module."/module_meta.php";

	if(is_dir($modules_dir."/".$module) && !in_array($module, array(".", "..")) && file_exists($modules_dir."/".$module."/module_meta.php"))
{
require_once $modules_dir."/".$module."/module_meta.php";

		



		// Need to always load it for admin permissions / quick access
$lang->load($module."_module_meta", false, true);

		// Need to always load it for admin permissions / quick access
$lang->load($module."_module_meta", false, true);

		



		$has_permission = false;
if(function_exists($module."_admin_permissions"))
{

		$has_permission = false;
if(function_exists($module."_admin_permissions"))
{

Zeile 451Zeile 496
		{
$has_permission = true;
}

		{
$has_permission = true;
}

			



		// Do we have permissions to run this module (Note: home is accessible by all)
if($module == "home" || $has_permission == true)
{

		// Do we have permissions to run this module (Note: home is accessible by all)
if($module == "home" || $has_permission == true)
{

Zeile 498Zeile 543

$action_handler = $run_module."_action_handler";
$action_file = $action_handler($current_module[1]);


$action_handler = $run_module."_action_handler";
$action_file = $action_handler($current_module[1]);

 

// Set our POST validation code here
$mybb->post_code = generate_post_check();


if($run_module != "home")
{
check_admin_permissions(array('module' => $page->active_module, 'action' => $page->active_action));
}


if($run_module != "home")
{
check_admin_permissions(array('module' => $page->active_module, 'action' => $page->active_action));
}


// Set our POST validation code here
$mybb->post_code = generate_post_check();

// Only POST actions with a valid post code can modify information. Here we check if the incoming request is a POST and if that key is valid.


// Only POST actions with a valid post code can modify information. Here we check if the incoming request is a POST and if that key is valid.




$post_check_ignores = array(
"example/page" => array("action")
); // An array of modules/actions to ignore POST checks for.

$post_check_ignores = array(
"example/page" => array("action")
); // An array of modules/actions to ignore POST checks for.

Zeile 522Zeile 567
			$post_verify = false;
}
}

			$post_verify = false;
}
}

	



	if($post_verify == true)
{
// If the post key does not match we switch the action to GET and set a message to show the user

	if($post_verify == true)
{
// If the post key does not match we switch the action to GET and set a message to show the user