Zeile 62 | Zeile 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 79 | Zeile 79 |
---|
$logged_out = false; $fail_check = 0; $post_verify = true;
|
$logged_out = false; $fail_check = 0; $post_verify = true;
|
| foreach(array('action', 'do', 'module') as $input) { if(!isset($mybb->input[$input])) { $mybb->input[$input] = ''; } }
|
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']))."'"); $user = $db->fetch_array($query);
| { $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']) {
|
if(!$user['uid']) {
|
$error[] = $lang->error_invalid_username;
| $error = $lang->error_invalid_username;
|
} } else if($mybb->input['uid'])
|
} } else if($mybb->input['uid'])
|
{
| {
|
$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)
|
// 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'])."'");
|
$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 135 | Zeile 159 |
---|
if($mybb->user['uid']) { if(login_attempt_check_acp($mybb->user['uid']) == true)
|
if($mybb->user['uid']) { if(login_attempt_check_acp($mybb->user['uid']) == true)
|
{ $default_page->show_lockedout(); }
| { $default_page->show_lockedout(); }
|
$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 155 | Zeile 179 |
---|
); $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);
| $db->update_query("adminoptions", array("loginattempts" => 0, "loginlockoutexpiry" => 0), "uid='".intval($mybb->user['uid'])."'");
|
my_setcookie("adminsid", $sid); my_setcookie('acploginattempts', 0); $post_verify = false;
|
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
|
if(!empty($mybb->input['module'])) { // $query_string should contain the module
|
$query_string = '?module='.htmlspecialchars($mybb->input['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 174 | Zeile 198 |
---|
$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($params[0])."=".htmlspecialchars($params[1]);
| $query_string .= '&'.htmlspecialchars_uni($params[0])."=".htmlspecialchars_uni($params[1]);
|
} }
|
} }
|
|
|
admin_redirect("index.php".$query_string);
|
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'])."'", '', 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 228 | Zeile 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 255 | Zeile 294 |
---|
// 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 { $admin_session['data'] = @unserialize($admin_session['data']);
| else { $admin_session['data'] = @unserialize($admin_session['data']);
|
Zeile 268 | Zeile 307 |
---|
// 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'])
|
{
| {
|
unset($mybb->user); } else
| unset($mybb->user); } else
|
Zeile 299 | Zeile 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 317 | Zeile 356 |
---|
if(verify_post_check($mybb->input['my_post_key'])) { $db->delete_query("adminsessions", "sid='".$db->escape_string($mybb->cookies['adminsid'])."'");
|
if(verify_post_check($mybb->input['my_post_key'])) { $db->delete_query("adminsessions", "sid='".$db->escape_string($mybb->cookies['adminsid'])."'");
|
my_setcookie("adminsid", "");
| my_unsetcookie('adminsid');
|
$logged_out = true; } }
|
$logged_out = true; } }
|
if(!$mybb->user['usergroup'])
| if(!isset($mybb->user['usergroup']))
|
{ $mybbgroups = 1; }
| { $mybbgroups = 1; }
|
Zeile 332 | Zeile 371 |
---|
} $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'])
|
{
|
{
|
$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 if($admin_session['sid'])
| // Update the session information in the DB if($admin_session['sid'])
|
Zeile 357 | Zeile 403 |
---|
// Fetch administrator permissions $mybb->admin['permissions'] = get_admin_permissions($mybb->user['uid']);
|
// Fetch administrator permissions $mybb->admin['permissions'] = get_admin_permissions($mybb->user['uid']);
|
}
| }
|
// Include the layout generation class overrides for this style if(file_exists(MYBB_ADMIN_DIR."/styles/{$cp_style}/style.php")) { require_once MYBB_ADMIN_DIR."/styles/{$cp_style}/style.php";
|
// Include the layout generation class overrides for this style if(file_exists(MYBB_ADMIN_DIR."/styles/{$cp_style}/style.php")) { require_once MYBB_ADMIN_DIR."/styles/{$cp_style}/style.php";
|
}
| }
|
// Check if any of the layout generation classes we can override exist in the style file $classes = array( "Page" => "DefaultPage",
| // Check if any of the layout generation classes we can override exist in the style file $classes = array( "Page" => "DefaultPage",
|
Zeile 387 | Zeile 433 |
---|
$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);
| if($logged_out == true) { $page->show_login($lang->success_logged_out);
|
Zeile 400 | Zeile 446 |
---|
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
|
if($mybb->input['ajax'] == 1)
| if(isset($mybb->input['ajax']) && $mybb->input['ajax'] == 1)
|
{ echo "<error>login</error>"; die; } $page->show_login($login_message, "error");
|
{ echo "<error>login</error>"; die; } $page->show_login($login_message, "error");
|
} }
| } }
|
$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 421 | Zeile 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")) { if(isset($mybb->admin['permissions'][$module]) || $is_super_admin == true)
|
$has_permission = false; if(function_exists($module."_admin_permissions")) { if(isset($mybb->admin['permissions'][$module]) || $is_super_admin == true)
|
{
| {
|
$has_permission = true; } } // This module doesn't support permissions
|
$has_permission = true; } } // This module doesn't support permissions
|
else {
| else {
|
$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 452 | Zeile 496 |
---|
else { $modules[$module] = 0;
|
else { $modules[$module] = 0;
|
} } }
$modules = $plugins->run_hooks("admin_tabs", $modules);
| } } }
$modules = $plugins->run_hooks("admin_tabs", $modules);
|
closedir($dir);
if(strpos($mybb->input['module'], "/") !== false) { $current_module = explode("/", $mybb->input['module'], 2);
|
closedir($dir);
if(strpos($mybb->input['module'], "/") !== false) { $current_module = explode("/", $mybb->input['module'], 2);
|
}
| }
|
else
|
else
|
{
| {
|
$current_module = explode("-", $mybb->input['module'], 2);
|
$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]]))
| }
if($mybb->input['module'] && isset($modules[$current_module[0]]))
|
Zeile 480 | Zeile 529 |
---|
$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. $post_check_ignores = array(
| // 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(
|
Zeile 504 | Zeile 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
|