Vergleich admin/index.php - 1.6.0 - 1.6.12

  Keine Änderungen   Hinzugefügt   Modifiziert   Entfernt
Zeile 6Zeile 6
 * Website: http://mybb.com
* License: http://mybb.com/about/license
*

 * Website: http://mybb.com
* License: http://mybb.com/about/license
*

 * $Id: index.php 5156 2010-07-31 22:58:56Z RyanGordon $

 * $Id$

 */

define("IN_MYBB", 1);

 */

define("IN_MYBB", 1);

Zeile 62Zeile 62
unset($user);

// Load Admin CP style

unset($user);

// Load Admin CP style

if(!$cp_style)

if(!isset($cp_style))

{
if(!empty($mybb->settings['cpstyle']) && file_exists(MYBB_ADMIN_DIR."/styles/".$mybb->settings['cpstyle']."/main.css"))
{

{
if(!empty($mybb->settings['cpstyle']) && file_exists(MYBB_ADMIN_DIR."/styles/".$mybb->settings['cpstyle']."/main.css"))
{

Zeile 80Zeile 80
$fail_check = 0;
$post_verify = true;


$fail_check = 0;
$post_verify = true;


if($mybb->input['action'] == "logout")

foreach(array('action', 'do', 'module') as $input)

{

{

	// Delete session from the database
$db->delete_query("adminsessions", "sid='".$db->escape_string($mybb->cookies['adminsid'])."'");
my_setcookie("adminsid", "");
$logged_out = true;

	if(!isset($mybb->input[$input]))
{
$mybb->input[$input] = '';
}

}

}

elseif($mybb->input['action'] == "unlock")



if($mybb->input['action'] == "unlock")

{
$user = array();

{
$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']))."'");
$user = $db->fetch_array($query);
if(!$user['uid'])
{
$error[] = $lang->error_invalid_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'])
{
$error = $lang->error_invalid_username;
}

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

	}
else if($mybb->input['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");
}
else
{

			admin_redirect("index.php");
}
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")

{	

{

	$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 147Zeile 164
		}

$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 158Zeile 175
			"ip" => $db->escape_string(get_ip()),
"dateline" => TIME_NOW,
"lastactive" => TIME_NOW,

			"ip" => $db->escape_string(get_ip()),
"dateline" => TIME_NOW,
"lastactive" => TIME_NOW,

			"data" => "",

			"data" => serialize(array()),

		);
$db->insert_query("adminsessions", $admin_session);

		);
$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);
my_setcookie('acploginattempts', 0);
$post_verify = false;

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

// Now we look for any paramters passed in $_SERVER['QUERY_STRING']
if($_SERVER['QUERY_STRING'])
{
$qstring = '?'.preg_replace('#adminsid=(.{32})#i', '', $_SERVER['QUERY_STRING']);
$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);

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

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

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

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

	}
else
{

	}
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'])."'", 1, 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 attempted too many times?
if($loginattempts['loginattempts'] > 0)
{

Zeile 188Zeile 255
			{
$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'])."'", 1);
}

			
// 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 200Zeile 267
					"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 228Zeile 295
		// 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->invalid_admin_session;

			$login_message = $lang->error_invalid_admin_session;

		}
else
{

		}
else
{

Zeile 271Zeile 338
							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 279Zeile 346
						unset($mybb->user);
}
}

						unset($mybb->user);
}
}

			}
}
}
}











			}
}
}
}

if($mybb->input['action'] == "logout" && $mybb->user)
{
if(verify_post_check($mybb->input['my_post_key']))
{
$db->delete_query("adminsessions", "sid='".$db->escape_string($mybb->cookies['adminsid'])."'");
my_unsetcookie('adminsid');
$logged_out = true;
}
}





if(!$mybb->user['usergroup'])

if(!isset($mybb->user['usergroup']))

{
$mybbgroups = 1;
}
else
{
$mybbgroups = $mybb->user['usergroup'].",".$mybb->user['additionalgroups'];

{
$mybbgroups = 1;
}
else
{
$mybbgroups = $mybb->user['usergroup'].",".$mybb->user['additionalgroups'];

}

}

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

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





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

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

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






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

	unset($mybb->user);

	unset($mybb->user);

	my_setcookie("adminsid", "");

	my_unsetcookie('adminsid');

}

}





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

if($mybb->user['uid'])
{
$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"))
{

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

		$page->style = $cp_style = $admin_options['cpstyle'];

		$cp_style = $admin_options['cpstyle'];

	}

// Update the session information in the DB

	}

// Update the session information in the DB

Zeile 349Zeile 431
$page->style = $cp_style;

// Do not have a valid Admin user, throw back to login page.

$page->style = $cp_style;

// Do not have a valid Admin user, throw back to login page.

if(!$mybb->user['uid'] || $logged_out == true)
{

if(!isset($mybb->user['uid']) || $logged_out == true)
{

	if($logged_out == true)
{
$page->show_login($lang->success_logged_out);
}
elseif($fail_check == 1)

	if($logged_out == true)
{
$page->show_login($lang->success_logged_out);
}
elseif($fail_check == 1)

	{

	{

		$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

		$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

		if($mybb->input['ajax'] == 1)

		if(isset($mybb->input['ajax']) && $mybb->input['ajax'] == 1)

		{
echo "<error>login</error>";
die;

		{
echo "<error>login</error>";
die;

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

// Begin dealing with the modules

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

// 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 381Zeile 465
	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"))

		{
if(isset($mybb->admin['permissions'][$module]))

		{
if(isset($mybb->admin['permissions'][$module]) || $is_super_admin == true)

			{
$has_permission = true;

			{
$has_permission = true;

			}
}

			}
}

		// This module doesn't support permissions
else
{
$has_permission = true;

		// This module doesn't support permissions
else
{
$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 416Zeile 500
	}
}


	}
}


$plugins->run_hooks_by_ref("admin_tabs", $modules);

$modules = $plugins->run_hooks("admin_tabs", $modules);


closedir($dir);

if(strpos($mybb->input['module'], "/") !== false)


closedir($dir);

if(strpos($mybb->input['module'], "/") !== false)

{

{

	$current_module = explode("/", $mybb->input['module'], 2);
}
else
{
$current_module = explode("-", $mybb->input['module'], 2);

	$current_module = explode("/", $mybb->input['module'], 2);
}
else
{
$current_module = explode("-", $mybb->input['module'], 2);

}






}

if(!isset($current_module[1]))
{
$current_module[1] = 'home';
}


if($mybb->input['module'] && isset($modules[$current_module[0]]))
{
$run_module = $current_module[0];


if($mybb->input['module'] && isset($modules[$current_module[0]]))
{
$run_module = $current_module[0];

}

}

else
{
$run_module = "home";

else
{
$run_module = "home";

}


}


$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")


if($run_module != "home")

{

{

	check_admin_permissions(array('module' => $page->active_module, 'action' => $page->active_action));
}

	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.
$post_check_ignores = array(
"example/page" => array("action")
); // An array of modules/actions to ignore POST checks for.

// 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.





if($mybb->request_method == "post")
{
if(in_array($mybb->input['module'], $post_check_ignores))

if($mybb->request_method == "post")
{
if(in_array($mybb->input['module'], $post_check_ignores))

Zeile 464Zeile 553
			$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