Отказ от ограничений доступа к форуму по "загрузке сервера", из-за некорректной отработки данных ограничений с кроном, из-за некорректной работы данных ограничений на слабых серверах и в целом из-за достаточно большого числа багов с этим связанным. Окончательный отказ от PHP 5.2 (теоретическая невозможность установки форумных cookies, приводящая к неработоспособности форума). Подготовка к введению уровня пользователя "правообладатель" из-за законодательных изменений в РФ. Для обновления таблиц выполнить команду (не забывая про бекап): ALTER TABLE bb_users DROP ignore_srv_load git-svn-id: https://torrentpier2.googlecode.com/svn/trunk@537 a8ac35ab-4ca4-ca47-4c2d-a49a94f06293
This commit is contained in:
glix08 2013-08-05 21:01:22 +00:00
commit a763f0339a
15 changed files with 19 additions and 238 deletions

View file

@ -1455,7 +1455,6 @@ CREATE TABLE IF NOT EXISTS `bb_users` (
`user_interests` varchar(255) NOT NULL DEFAULT '', `user_interests` varchar(255) NOT NULL DEFAULT '',
`user_actkey` varchar(32) NOT NULL DEFAULT '', `user_actkey` varchar(32) NOT NULL DEFAULT '',
`user_newpasswd` varchar(32) NOT NULL DEFAULT '', `user_newpasswd` varchar(32) NOT NULL DEFAULT '',
`ignore_srv_load` tinyint(1) NOT NULL DEFAULT '0',
`autologin_id` varchar(12) CHARACTER SET utf8 COLLATE utf8_bin NOT NULL DEFAULT '', `autologin_id` varchar(12) CHARACTER SET utf8 COLLATE utf8_bin NOT NULL DEFAULT '',
`user_newest_pm_id` mediumint(8) NOT NULL DEFAULT '0', `user_newest_pm_id` mediumint(8) NOT NULL DEFAULT '0',
`user_points` float(16,2) NOT NULL DEFAULT '0.00', `user_points` float(16,2) NOT NULL DEFAULT '0.00',

View file

@ -118,18 +118,13 @@ switch ($field)
case 'user_regdate': case 'user_regdate':
case 'user_lastvisit': case 'user_lastvisit':
$tz = TIMENOW + (3600 * $bb_cfg['board_timezone']); $tz = TIMENOW + (3600 * $bb_cfg['board_timezone']);
if (($value = strtotime($value, $tz)) < $bb_cfg['board_startdate'] OR $value > TIMENOW) if (($value = strtotime($value, $tz)) < $bb_cfg['board_startdate'] OR $value > TIMENOW)
{ {
$this->ajax_die($lang['INVALID_DATE'] . $this->request['value']); $this->ajax_die($lang['INVALID_DATE'] . $this->request['value']);
} }
$value = $value - (3600 * -1); $value = $value - (3600 * -1);
$this->response['new_value'] = bb_date($value); $this->response['new_value'] = bb_date($value);
break;
case 'ignore_srv_load':
$value = ($this->request['value']) ? 0 : 1;
$this->response['new_value'] = ($profiledata['user_level'] != USER || $value) ? $lang['NO'] : $lang['YES'];
break; break;
case 'u_up_total': case 'u_up_total':

View file

@ -2265,24 +2265,5 @@ else if (defined('IN_TRACKER'))
{ {
dummy_exit(mt_rand(1200, 2400)); # die('d14:failure reason20:temporarily disablede'); dummy_exit(mt_rand(1200, 2400)); # die('d14:failure reason20:temporarily disablede');
} }
// Limit server load
if ($bb_cfg['max_srv_load'] || $bb_cfg['tr_working_second'])
{
if ((!empty($_GET['uploaded']) || !empty($_GET['downloaded'])) && (!isset($_GET['event']) || $_GET['event'] === 'started'))
{
if ($bb_cfg['tr_working_second'] && (TIMENOW % $bb_cfg['tr_working_second']))
{
tr_drop_request('wrk_sec');
}
else if ($bb_cfg['max_srv_load'] && LOADAVG)
{
if (LOADAVG > $bb_cfg['max_srv_load'])
{
tr_drop_request('load');
}
}
}
}
} }
} }

View file

@ -19,7 +19,6 @@
* Templates * Templates
* Cookie * Cookie
* Server * Server
- Server load
- Backup - Backup
- GZip - GZip
* Sessions * Sessions
@ -56,8 +55,8 @@ $domain_name = (!empty($_SERVER['SERVER_NAME'])) ? $_SERVER['SERVER_NAME'] : $do
// Increase number of revision after update // Increase number of revision after update
$bb_cfg['tp_version'] = '2.5 (unstable)'; $bb_cfg['tp_version'] = '2.5 (unstable)';
$bb_cfg['tp_release_date'] = '03-08-2013'; $bb_cfg['tp_release_date'] = '06-08-2013';
$bb_cfg['tp_release_state'] = 'R536'; $bb_cfg['tp_release_state'] = 'R537';
// Database // Database
$charset = 'utf8'; $charset = 'utf8';
@ -109,17 +108,12 @@ $bb_cfg['server_name'] = $domain_name; // The domain name from whic
$bb_cfg['server_port'] = (!empty($_SERVER['SERVER_PORT'])) ? $_SERVER['SERVER_PORT'] : 80; // The port your server is running on $bb_cfg['server_port'] = (!empty($_SERVER['SERVER_PORT'])) ? $_SERVER['SERVER_PORT'] : 80; // The port your server is running on
$bb_cfg['script_path'] = '/'; // The path where FORUM is located relative to the domain name $bb_cfg['script_path'] = '/'; // The path where FORUM is located relative to the domain name
// Server load
$bb_cfg['max_srv_load'] = 0; // 0 - disable
$bb_cfg['tr_working_second'] = 0; // 0 - disable
// Increase number after changing js or css // Increase number after changing js or css
$bb_cfg['js_ver'] = 1; $bb_cfg['js_ver'] = 1;
$bb_cfg['css_ver'] = 1; $bb_cfg['css_ver'] = 1;
// Information messages // Information messages
$bb_cfg['board_disabled_msg'] = 'форум временно отключен'; // 'forums temporarily disabled'; // show this msg if board has been disabled via ON/OFF trigger $bb_cfg['board_disabled_msg'] = 'форум временно отключен'; // 'forums temporarily disabled'; // show this msg if board has been disabled via ON/OFF trigger
$bb_cfg['srv_overloaded_msg'] = "Извините, в данный момент сервер перегружен\nПопробуйте повторить запрос через несколько минут";
// Backup // Backup
$bb_cfg['db_backup_shell_cmd'] = ''; // '/path/to/db_backup.sh 2>&1' $bb_cfg['db_backup_shell_cmd'] = ''; // '/path/to/db_backup.sh 2>&1'
@ -301,7 +295,6 @@ $bb_cfg['user_session_duration'] = 1800; // sec
$bb_cfg['admin_session_duration'] = 6*3600; // sec $bb_cfg['admin_session_duration'] = 6*3600; // sec
$bb_cfg['user_session_gc_ttl'] = 1800; // number of seconds that a staled session entry may remain in sessions table $bb_cfg['user_session_gc_ttl'] = 1800; // number of seconds that a staled session entry may remain in sessions table
$bb_cfg['session_cache_gc_ttl'] = 1200; // sec $bb_cfg['session_cache_gc_ttl'] = 1200; // sec
$bb_cfg['max_reg_users_online'] = 0; // 0 - unlimited
$bb_cfg['max_last_visit_days'] = 14; // days $bb_cfg['max_last_visit_days'] = 14; // days
$bb_cfg['last_visit_update_intrv'] = 3600; // sec $bb_cfg['last_visit_update_intrv'] = 3600; // sec

View file

@ -15,5 +15,4 @@ $prev = @$_GET['prev'] ? $_GET['prev'] : 15;
$next = @$_GET['next'] ? $_GET['next'] : 15; $next = @$_GET['next'] ? $_GET['next'] : 15;
require('./dbg_header.php'); require('./dbg_header.php');
echo showSource($file, $line, $prev, $next); echo showSource($file, $line, $prev, $next);

View file

@ -53,10 +53,9 @@ $del_ids = DB('cap')->fetch_rowset("SELECT cap_id FROM ". BB_CAPTCHA ." WHERE ca
foreach ($del_ids as $del_id) foreach ($del_ids as $del_id)
{ {
$cap_img_path = CAPTCHA()->get_img_path(abs($del_id)); $cap_img_path = CAPTCHA()->get_img_path(abs($del_id));
if(@fopen($cap_img_path, 'r')) if (@fopen($cap_img_path, 'r'))
{ {
unlink($cap_img_path); unlink($cap_img_path);
} }
DB('cap')->query("DELETE FROM ". BB_CAPTCHA ." WHERE cap_id = $del_id LIMIT 1"); DB('cap')->query("DELETE FROM ". BB_CAPTCHA ." WHERE cap_id = $del_id LIMIT 1");
} }

View file

@ -1,11 +1,6 @@
<?php <?php
##### LOG #####
# bb_log(' ', 'hits/'. date('m-d') .'/'. date('H-') .'bb');
### LOG END ###
if (!defined('BB_ROOT')) die(basename(__FILE__)); if (!defined('BB_ROOT')) die(basename(__FILE__));
if (!defined('BB_SCRIPT')) define('BB_SCRIPT', 'undefined'); if (!defined('BB_SCRIPT')) define('BB_SCRIPT', 'undefined');
// Exit if board is disabled via ON/OFF trigger // Exit if board is disabled via ON/OFF trigger
@ -101,18 +96,12 @@ if (!defined('IN_AJAX'))
if (DEBUG === true) if (DEBUG === true)
{ {
require(DEV_DIR .'init_debug.php'); require(DEV_DIR .'init_debug.php');
# if ($a);
# trigger_error("error handler test", E_USER_ERROR);
} }
// Config options
define('TPL_LIMIT_LOAD_EXIT', TEMPLATES_DIR .'limit_load_exit.php');
// Cookie params // Cookie params
$c = $bb_cfg['cookie_prefix']; $c = $bb_cfg['cookie_prefix'];
define('COOKIE_DATA', $c .'data'); define('COOKIE_DATA', $c .'data');
define('COOKIE_FORUM', $c .'f'); define('COOKIE_FORUM', $c .'f');
define('COOKIE_LOAD', $c .'isl');
define('COOKIE_MARK', $c .'mark_read'); define('COOKIE_MARK', $c .'mark_read');
define('COOKIE_TOPIC', $c .'t'); define('COOKIE_TOPIC', $c .'t');
unset($c); unset($c);
@ -126,19 +115,7 @@ define('COOKIE_MAX_TRACKS', 90);
function bb_setcookie ($name, $val, $lifetime = COOKIE_PERSIST, $httponly = false) function bb_setcookie ($name, $val, $lifetime = COOKIE_PERSIST, $httponly = false)
{ {
global $bb_cfg; global $bb_cfg;
return setcookie($name, $val, $lifetime, $bb_cfg['cookie_path'], $bb_cfg['cookie_domain'], $bb_cfg['cookie_secure'], $httponly);
$domain = $bb_cfg['cookie_domain'];
if (PHP_VERSION < 5.2)
{
// HttpOnly hack by Matt Mecham [http://blog.mattmecham.com/archives/2006/09/http_only_cookies_without_php.html]
$domain .= ($httponly) ? '; HttpOnly' : '';
return setcookie($name, $val, $lifetime, $bb_cfg['cookie_path'], $domain, $bb_cfg['cookie_secure']);
}
else
{
return setcookie($name, $val, $lifetime, $bb_cfg['cookie_path'], $domain, $bb_cfg['cookie_secure'], $httponly);
}
} }
// Debug options // Debug options
@ -150,11 +127,12 @@ if (DBG_USER)
define('DELETED', -1); define('DELETED', -1);
// User Levels <- Do not change the values of USER or ADMIN // User Levels
define('USER', 0); define('USER', 0);
define('ADMIN', 1); define('ADMIN', 1);
define('MOD', 2); define('MOD', 2);
define('GROUP_MEMBER', 20); define('GROUP_MEMBER', 20);
define('CP_HOLDER', 25);
$excluded_users = array( $excluded_users = array(
ANONYMOUS, ANONYMOUS,
@ -463,23 +441,10 @@ if (!empty($banned_user_agents))
{ {
if (strstr(USER_AGENT, $agent)) if (strstr(USER_AGENT, $agent))
{ {
/*##### LOG #####
$file = 'ban/user_agents_'. date('m-d');
$str = array();
$str[] = date('H:i:s');
$str[] = @$_SERVER['HTTP_USER_AGENT'];
$str[] = @$_SERVER['REMOTE_ADDR'];
$str[] = @$_SERVER['REQUEST_URI'];
$str[] = @$_SERVER['HTTP_REFERER'];
bb_log($str, $file);
### LOG END ###*/
$filename = 'Skachivajte fajly brauzerom (скачивайте файлы браузером)'; $filename = 'Skachivajte fajly brauzerom (скачивайте файлы браузером)';
$output = '@'; $output = '@';
header('Content-Type: text/plain'); header('Content-Type: text/plain');
header('Content-Disposition: attachment; filename="'. $filename .'"'); header('Content-Disposition: attachment; filename="'. $filename .'"');
die($output); die($output);
} }
} }
@ -504,18 +469,6 @@ function bb_exit ($output = '')
exit; exit;
} }
// Exit if server overloaded
if (!(defined('IN_PROFILE') || defined('IN_LOGIN') || defined('IN_ADMIN') || defined('IN_AJAX') || defined('IN_SERVICE')) && BB_ROOT == './')
{
if ($bb_cfg['max_srv_load'] && empty($_POST['message']) && !empty($_COOKIE[COOKIE_LOAD]) && LOADAVG)
{
if (LOADAVG > $bb_cfg['max_srv_load'] && (TIMENOW - $_COOKIE[COOKIE_LOAD]) > $bb_cfg['user_session_duration'])
{
require(TPL_LIMIT_LOAD_EXIT);
}
}
}
function prn_r ($var, $title = '', $print = true) function prn_r ($var, $title = '', $print = true)
{ {
$r = '<pre>'. (($title) ? "<b>$title</b>\n\n" : '') . htmlspecialchars(print_r($var, true)) .'</pre>'; $r = '<pre>'. (($title) ? "<b>$title</b>\n\n" : '') . htmlspecialchars(print_r($var, true)) .'</pre>';

View file

@ -28,7 +28,6 @@ $online = $online_short = array('userlist' => '');
$sql = " $sql = "
SELECT SELECT
u.username, u.user_id, u.user_opt, u.user_rank, u.user_level, u.username, u.user_id, u.user_opt, u.user_rank, u.user_level,
u.ignore_srv_load,
s.session_logged_in, s.session_ip, (s.session_time - s.session_start) AS ses_len, COUNT(s.session_id) AS sessions, COUNT(DISTINCT s.session_ip) AS ips s.session_logged_in, s.session_ip, (s.session_time - s.session_start) AS ses_len, COUNT(s.session_id) AS sessions, COUNT(DISTINCT s.session_ip) AS ips
FROM ". BB_SESSIONS ." s, ". BB_USERS ." u FROM ". BB_SESSIONS ." s, ". BB_USERS ." u
WHERE s.session_time > $time_online WHERE s.session_time > $time_online

View file

@ -58,9 +58,8 @@ if ($show_dbg_info)
for ($i=0; $i < 3; $i++) for ($i=0; $i < 3; $i++)
{ {
$l[$i] = round($l[$i], 1); $l[$i] = round($l[$i], 1);
$l[$i] = (IS_ADMIN && $bb_cfg['max_srv_load'] && $l[$i] > ($bb_cfg['max_srv_load'] + 4)) ? "<span style='color: red'><b>$l[$i]</b></span>" : $l[$i];
} }
$stat .= " &nbsp;|&nbsp; <span title='". $lang['LIMIT'] ." {$bb_cfg['max_srv_load']}'>". $lang['LIMIT'] ." $l[0] $l[1] $l[2]</span>"; $stat .= " &nbsp;|&nbsp; ". $lang['LIMIT'] ." $l[0] $l[1] $l[2]";
} }
$stat .= ' &nbsp;]'; $stat .= ' &nbsp;]';

View file

@ -235,11 +235,6 @@ class user_common
$user_id = (int) $this->data['user_id']; $user_id = (int) $this->data['user_id'];
$mod_admin_session = ($this->data['user_level'] == ADMIN || $this->data['user_level'] == MOD); $mod_admin_session = ($this->data['user_level'] == ADMIN || $this->data['user_level'] == MOD);
if (($bb_cfg['max_srv_load'] || $bb_cfg['max_reg_users_online']) && $login && $is_user && !$this->data['ignore_srv_load'])
{
$this->limit_srv_load();
}
// Initial ban check against user_id or IP address // Initial ban check against user_id or IP address
if ($is_user) if ($is_user)
{ {
@ -486,7 +481,6 @@ class user_common
{ {
$delete_cookies = array( $delete_cookies = array(
COOKIE_DATA, COOKIE_DATA,
COOKIE_LOAD,
COOKIE_DBG, COOKIE_DBG,
'torhelp', 'torhelp',
'explain', 'explain',
@ -502,7 +496,7 @@ class user_common
} }
} }
} }
else else
{ {
$c_sdata_resv = !empty($_COOKIE[COOKIE_DATA]) ? $_COOKIE[COOKIE_DATA] : null; $c_sdata_resv = !empty($_COOKIE[COOKIE_DATA]) ? $_COOKIE[COOKIE_DATA] : null;
$c_sdata_curr = ($this->sessiondata) ? serialize($this->sessiondata) : ''; $c_sdata_curr = ($this->sessiondata) ? serialize($this->sessiondata) : '';
@ -511,16 +505,6 @@ class user_common
{ {
bb_setcookie(COOKIE_DATA, $c_sdata_curr, COOKIE_PERSIST, true); bb_setcookie(COOKIE_DATA, $c_sdata_curr, COOKIE_PERSIST, true);
} }
if ($bb_cfg['max_srv_load'])
{
$c_isl_resv = isset($_COOKIE[COOKIE_LOAD]) ? intval($_COOKIE[COOKIE_LOAD]) : null;
$c_isl_curr = ($this->data['user_level'] == USER && !$this->data['ignore_srv_load']) ? TIMENOW : 0;
if ($c_isl_curr !== $c_isl_resv)
{
bb_setcookie(COOKIE_LOAD, $c_isl_curr);
}
}
if (isset($bb_cfg['dbg_users'][$this->data['user_id']]) && !isset($_COOKIE[COOKIE_DBG])) if (isset($bb_cfg['dbg_users'][$this->data['user_id']]) && !isset($_COOKIE[COOKIE_DBG]))
{ {
bb_setcookie(COOKIE_DBG, 1, COOKIE_SESSION); bb_setcookie(COOKIE_DBG, 1, COOKIE_SESSION);
@ -572,36 +556,6 @@ class user_common
return $autologin_id; return $autologin_id;
} }
/**
* Limit server load
*/
function limit_srv_load ()
{
global $bb_cfg;
if (!empty($_POST['message'])) return;
$srv_overloaded = false;
if (LOADAVG)
{
$srv_overloaded = (LOADAVG > $bb_cfg['max_srv_load']);
}
if (!$srv_overloaded && $bb_cfg['max_reg_users_online'])
{
$sql = "SELECT COUNT(DISTINCT session_user_id) AS users_count FROM ". BB_SESSIONS ." WHERE session_time > ". (TIMENOW - 300);
if ($row = DB()->fetch_row($sql))
{
$srv_overloaded = ($row['users_count'] > $bb_cfg['max_reg_users_online']);
}
}
if ($srv_overloaded)
{
require(TPL_LIMIT_LOAD_EXIT);
}
}
/** /**
* Initialise user settings * Initialise user settings
*/ */

View file

@ -214,12 +214,6 @@ else
)); ));
} }
$template->assign_vars(array(
'SHOW_ACCESS_PRIVILEGE' => IS_ADMIN,
'IGNORE_SRV_LOAD' => ($profiledata['user_level'] != USER || $profiledata['ignore_srv_load']) ? $lang['NO'] : $lang['YES'],
'IGNORE_SRV_LOAD_EDIT' => ($profiledata['user_level'] == USER),
));
if (IS_ADMIN) if (IS_ADMIN)
{ {
$template->assign_vars(array( $template->assign_vars(array(

View file

@ -1396,8 +1396,6 @@ $lang['ONLY_FOR_MOD'] = 'This option only for moderators';
$lang['ONLY_FOR_ADMIN'] = 'This option only for admins'; $lang['ONLY_FOR_ADMIN'] = 'This option only for admins';
$lang['ONLY_FOR_SUPER_ADMIN'] = 'This option only for super admins'; $lang['ONLY_FOR_SUPER_ADMIN'] = 'This option only for super admins';
$lang['ACCESS'] = 'Access';
$lang['ACCESS_SRV_LOAD'] = 'Depend on server load';
$lang['LOGS'] = 'Topic history'; $lang['LOGS'] = 'Topic history';
$lang['FORUM_LOGS'] = 'History Forum'; $lang['FORUM_LOGS'] = 'History Forum';
$lang['AUTOCLEAN'] = 'Autoclean:'; $lang['AUTOCLEAN'] = 'Autoclean:';

View file

@ -1398,8 +1398,6 @@ $lang['ONLY_FOR_MOD'] = 'Эта опция доступна только мод
$lang['ONLY_FOR_ADMIN'] = 'Эта опция доступна только администраторам'; $lang['ONLY_FOR_ADMIN'] = 'Эта опция доступна только администраторам';
$lang['ONLY_FOR_SUPER_ADMIN'] = 'Эта опция доступна только суперадминистраторам'; $lang['ONLY_FOR_SUPER_ADMIN'] = 'Эта опция доступна только суперадминистраторам';
$lang['ACCESS'] = 'Доступ';
$lang['ACCESS_SRV_LOAD'] = 'Зависит от загрузки сервера';
$lang['LOGS'] = 'История темы'; $lang['LOGS'] = 'История темы';
$lang['FORUM_LOGS'] = 'История форума'; $lang['FORUM_LOGS'] = 'История форума';
$lang['AUTOCLEAN'] = 'Автоочистка:'; $lang['AUTOCLEAN'] = 'Автоочистка:';

View file

@ -82,10 +82,6 @@ $(document).ready(function(){
<var class="ajax-params">{action: "edit_user_profile", id: "user_skype"}</var> <var class="ajax-params">{action: "edit_user_profile", id: "user_skype"}</var>
<var class="ajax-params">{action: "edit_user_profile", id: "user_gender", editableType: "yesno-gender"}</var> <var class="ajax-params">{action: "edit_user_profile", id: "user_gender", editableType: "yesno-gender"}</var>
<var class="ajax-params">{action: "edit_user_profile", id: "user_birthday"}</var> <var class="ajax-params">{action: "edit_user_profile", id: "user_birthday"}</var>
<!-- IF IGNORE_SRV_LOAD_EDIT -->
<var class="ajax-params">{action: "edit_user_profile", id: "ignore_srv_load", editableType: "yesno-radio"}</var>
<!-- ENDIF -->
<var class="ajax-params">{action: "edit_user_profile", id: "u_up_total"}</var> <var class="ajax-params">{action: "edit_user_profile", id: "u_up_total"}</var>
<var class="ajax-params">{action: "edit_user_profile", id: "u_down_total"}</var> <var class="ajax-params">{action: "edit_user_profile", id: "u_down_total"}</var>
<var class="ajax-params">{action: "edit_user_profile", id: "u_up_release"}</var> <var class="ajax-params">{action: "edit_user_profile", id: "u_up_release"}</var>
@ -409,12 +405,6 @@ ajax.callback.view_profile = function(data) {
<td><b>{AGE}</b></td> <td><b>{AGE}</b></td>
</tr> </tr>
<!-- ENDIF --> <!-- ENDIF -->
<!-- IF SHOW_ACCESS_PRIVILEGE -->
<tr>
<th>{L_ACCESS}:</th>
<td id="ignore_srv_load">{L_ACCESS_SRV_LOAD}: <b class="editable">{IGNORE_SRV_LOAD}</b></td>
</tr>
<!-- ENDIF -->
<!-- IF SHOW_DRAFT --> <!-- IF SHOW_DRAFT -->
<tr> <tr>
<th>{L_DRAFTS}:</th> <th>{L_DRAFTS}:</th>

View file

@ -1,70 +0,0 @@
<?php
if (!defined('IN_FORUM')) die(basename(__FILE__));
global $DBS;
if (!empty($DBS))
{
DB()->close();
}
send_no_cache_headers();
$redirect_url = !empty($_POST['redirect']) ? $_POST['redirect'] : $_SERVER['REQUEST_URI'];
// LOG
global $userdata;
if ($userdata['username'])
{
$name = html_entity_decode($userdata['username']);
}
else if (!empty($_POST['login_username']))
{
$name = $_POST['login_username'];
}
else
{
$name = '';
}
$file = 'load/load-'. date('m-d');
$str = array();
$str[] = date('H:i:s');
$str[] = sprintf('%-5s', floatval(LOADAVG));
$str[] = sprintf('%-15s', $_SERVER['REMOTE_ADDR']);
$str[] = sprintf('%-20s', $name);
$str[] = $redirect_url;
$str = join(LOG_SEPR, $str) . LOG_LF;
bb_log($str, $file);
?><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<meta http-equiv="Content-Style-Type" content="text/css">
<title><?php echo $bb_cfg['sitename']?></title>
<style type="text/css">
body { min-width: 760px; color: #000000; background: #E3E3E3; font: 16px Verdana; }
.msg { margin: 20%; text-align: center; background: #EFEFEF; border: 1px solid #B7C0C5; }
</style>
</head>
<body>
<form action="login.php" method="post">
<input type="hidden" name="redirect" value="<?php echo $redirect_url ?>" />
<div class="msg">
<p style="margin: 1em 0;">Извините, в данный момент сервер перегружен.</p>
<p style="margin: 1em 0;">Попробуйте зайти через несколько минут.</p>
<p style="margin: 1.5em 0;"><input type="submit" name="enter" value="Вход" /></p>
</div>
</form>
</body>
</html>
<?php exit; ?>