GIF89a;
| Direktori : /home/serb/www/chat/admin/ |
| Current File : /home/serb/www/chat/admin/cnf_general.php |
<?php
//-------------------------------------------------
//redirect_inst
//-------------------------------------------------
function redirect_inst($url)
{
echo '<script language="JavaScript" type="text/javascript">
<!--// redirect_inst
window.location.href = "'.$url.'";
//-->
</script>
';
die;
}
//all necessary fields on page
include_once('cnf_values.php');
// process form submit
//----------
if( $_POST['submit'] )
{
$disabledIRCFor_arr=$_POST['fld_3008'];
$disabledIRC_arr=$_POST['fld_15'];
$mods_arr=$_POST['fld_16'];
$mods_rest_arr=$_POST['fld_17'];
$fld = getPOSTfields('fld_');
if($fld['ins'][31] == "'defaultCMS'")
{
for($i = 0; $i < 3; $i++)
{
switch($i)
{
case 0:
$username = 'admin';
break;
case 1:
$username = 'moderator';
break;
case 2:
$username = 'spy';
break;
}
$stmt = new Statement('SELECT * FROM '.$GLOBALS['fc_config']['db']['pref'].'users WHERE password = ?',145);
$rs = $stmt->process($fld['ins'][36 + $i]);
$stmt = new Statement('SELECT * FROM '.$GLOBALS['fc_config']['db']['pref'].'users WHERE password = ?',145);
$rsMd5 = $stmt->process(md5($fld['ins'][36 + $i]));
if($rs->numRows <= 0 && $rsMd5->numRows <= 0)
{
$stmt = new Statement('INSERT INTO '.$GLOBALS['fc_config']['db']['pref'].'users (login,password,roles,instance_id) VALUES (?,?,?,?)',113);
if($fld['ins'][33] == "'1'")
{
$password = md5($fld['ins'][36 + $i]);
} else {
$password = $fld['ins'][36 + $i];
}
$stmt->process($username, $password, ($i + 2), $_SESSION['session_inst']);
} else {
if($fld['ins'][33] == "'1'" && $_POST['encPassOld'] == '0')
{
if(md5($fld['ins'][36 + $i]) != $rs->result[0]['login'])
{
$password = md5($fld['ins'][36 + $i]);
}
$stmt = new Statement('UPDATE '.$GLOBALS['fc_config']['db']['pref'].'users SET login=?, password=?, roles=? WHERE id=?',142);
$stmt->process($rs->result[0]['login'], $password, $rs->result[0]['roles'], $rs->result[0]['id']);
}
}
}
}
if(count($disabledIRCFor_arr) > 0)
{
$fld['ins'][3008] = "'".implode(',', $disabledIRCFor_arr)."'";
$fld['err'][3008]['value'] = implode(',', $disabledIRCFor_arr);
$fld['upd'][3008] = "3008 = '".implode(',', $disabledIRCFor_arr)."'";
} else {
$fld['ins'][3008] = "''";
$fld['err'][3008]['value'] = '';
$fld['upd'][3008] = "3008 = ''";
}
if(count($disabledIRC_arr) > 0)
{
$fld['ins'][15] = "'".implode(',', $disabledIRC_arr)."'";
$fld['err'][15]['value'] = implode(',', $disabledIRC_arr);
$fld['upd'][15] = "15 = '".implode(',', $disabledIRC_arr)."'";
} else {
$fld['ins'][15] = "''";
$fld['err'][15]['value'] = '';
$fld['upd'][15] = "15 = ''";
}
if(count($mods_arr) > 0)
{
$fld['ins'][16] = "'".implode(',', $mods_arr)."'";
$fld['err'][16]['value'] = implode(',', $mods_arr);
$fld['upd'][16] = "16 = '".implode(',', $mods_arr)."'";
} else {
$fld['ins'][16] = "''";
$fld['err'][16]['value'] = '';
$fld['upd'][16] = "16 = ''";
}
if(count($mods_rest_arr) > 0)
{
$fld['ins'][17] = "'".implode(',', $mods_rest_arr)."'";
$fld['err'][17]['value'] = implode(',', $mods_rest_arr);
$fld['upd'][17] = "17 = '".implode(',', $mods_rest_arr)."'";
} else {
$fld['ins'][17] = "''";
$fld['err'][17]['value'] = '';
$fld['upd'][17] = "17 = ''";
}
//validator rule
//greate array $valid_rule
//validator rule
$valid_rule = array();
foreach($fld['err'] as $k => $v)
{
if ( $fld['err'][$k]['type'] == 'integer')
{
$valid_rule[$k][0] = 'number';
$valid_rule[$k][1] = 1;
$valid_rule[$k][2] = $fld['err'][$k]['name'];
}
if ( $fld['err'][$k]['type'] == 'double')
{
$valid_rule[$k][0] = 'float';
$valid_rule[$k][1] = 1;
$valid_rule[$k][2] = $fld['err'][$k]['name'];
}
switch($fld['err'][$k]['field'])//special rules
{
case 'timeOffset':
$valid_rule[$k][0] = '^-{0,1}[0-9]+$';
$valid_rule[$k][1] = 1;
$valid_rule[$k][2] = $fld['err'][$k]['name'];
break;
case 'version':
$valid_rule[$k][0] = '^[0-9]+(\.[0-9]+)*$';
$valid_rule[$k][1] = 1;
$valid_rule[$k][2] = $fld['err'][$k]['name'];
break;
case 'bot_ip':
$valid_rule[$k][0] = '^(([1-2][0-5]{0,2})|([0-9])).(([1-2][0-5]{0,2})|([0-9])).(([1-2][0-5]{0,2})|([0-9])).(([1-2][0-5]{0,2})|([0-9]))$';
$valid_rule[$k][1] = 1;
$valid_rule[$k][2] = $fld['err'][$k]['name'];
break;
case 'allowFileExt':
$valid_rule[$k][0] = '^[a-z0-9]+(\,([a-z0-9])+)*$';
$valid_rule[$k][1] = 1;
$valid_rule[$k][2] = $fld['err'][$k]['name'];
break;
case 'anchor':
$valid_rule[$k][0] = '(-1)|(0)|(1)|(2)|(3)|(4)';
$valid_rule[$k][1] = 1;
$valid_rule[$k][2] = $fld['err'][$k]['name'];
break;
case 'CMSsystem':
$CMS_value = $fld['err'][$k]['value'];
$CMS_id = $k;
$valid_rule[$k][0] = 'CMS';
$valid_rule[$k][1] = 0;
$valid_rule[$k][2] = $fld['err'][$k]['name'];
break;
}
}
//--CMS----------------------------------------
$errMsg = '';
$selectedCms = $CMS_value;
$f_cms = INC_DIR . 'cmses/' . $CMS_value . '.php';
if ( $module == 'general' )
if( !file_exists($f_cms) || !is_file($f_cms) )
{
$CMS_value = 'false';
//redirect_inst('cnf_config.php?module=general&cmserr=1');
die;
}
else
{
if (!('defaultUsrExtCMS' == $GLOBALS['fc_config']['CMSsystem'] && 'defaultCMS' == $selectedCms)) {
include_once( $f_cms );
}
$dbname = $GLOBALS['fc_config']['db']['base'];
$dbuser = $GLOBALS['fc_config']['db']['user'];
$dbhost = $GLOBALS['fc_config']['db']['host'];
if( $dbname == '' || $dbuser == '' || $dbhost == '' )
{
$CMS_value = 'false';
redirect_inst('cnf_config.php?module=general&cmserr=1');
die;
}
}
//---------------------------------------------
reset($fld);
foreach($fld['err'] as $k => $v)
{
if( isset($valid_rule[$k]) )
{
if($errMsg != '')
break;
$errMsg = value_validator($v['value'],$valid_rule[$k],$valid_rule[$k]['name']);
}
}
if( $errMsg == '' )
{
foreach($fld['ins'] as $k => $v){
if ('combineCMS' == $fld['err'][$k]['field'] && "'1'" == $v) {
require_once('../inc/tables_default.php');
fb('creating');
$str = $db_tables['users'].' AUTO_INCREMENT=1000000';
$str = str_replace('{dbpref}', $GLOBALS['fc_config']['db']['pref'], $str);
@mysql_query($str) or fb(mysql_error());
}
$query = 'UPDATE '.$GLOBALS['fc_config']['db']['pref'].'config_values SET value=? WHERE config_id=?
AND instance_id = ? LIMIT 1';
$stmt = new Statement($query, 403);
$stmt->process($v, $k, $_SESSION['session_inst']);
}
}
@unlink(APPDATA_DIR.'config_'.$_SESSION['session_inst'].'.php');
}
//-------------------------------
$query = 'SELECT '.$GLOBALS['fc_config']['db']['pref'].'config.*, '.$GLOBALS['fc_config']['db']['pref'].'config_values.value
FROM '.$GLOBALS['fc_config']['db']['pref'].'config, '.$GLOBALS['fc_config']['db']['pref'].'config_values
WHERE '.$GLOBALS['fc_config']['db']['pref'].'config.parent_page = ? AND
'.$GLOBALS['fc_config']['db']['pref'].'config.id = '.$GLOBALS['fc_config']['db']['pref'].'config_values.config_id AND
'.$GLOBALS['fc_config']['db']['pref'].'config_values.instance_id = ?
ORDER BY _order';
$stmt = new Statement($query, 401);
$f = $stmt->process($module, $_SESSION['session_inst']);
//populate array with values
$fields = array();
$mods_selected=array();
$mods_rest_selected=array();
$disabledIRC_selected=array();
$disabledIRCFor_selected=array();
while($v = $f->next())
{
if (in_array($v['level_0'], array('combineCMS', 'guestPrefix')) && $GLOBALS['fc_config']['cacheType'] == 2) {
continue;
}
$fields[$v['id']] = $v;
$fields[$v['id']]['comment'] = addslashes($fields[$v['id']]['comment']);
$fields[$v['id']]['info'] = addslashes(htmlentities($fields[$v['id']]['info']));
if($v['level_0']=='mods') $mods_selected=explode(",", $v['value']);
if($v['level_0']=='modsAdminRestrictions') $mods_rest_selected=explode(",", $v['value']);
if($v['level_0']=='disabledIRC') $disabledIRC_selected=explode(",", $v['value']);
if($v['level_0']=='disabledIRCFor') $disabledIRCFor_selected=explode(",", $v['value']);
if ( $_POST['submit'] && $errMsg != '' )
{
$fields[$v["id"]]['value'] = $_REQUEST['val_'.$v["id"]];
if( isset($_SESSION['error_name']) && $_SESSION['error_name']==$_REQUEST['name_'.$v["id"]] )
{
$fields[$v["id"]]['value'] = '';
unset($_SESSION['error_name']);
}
}
}
if( $_GET['cmserr'] == 1)
{
$errMsg = "Please use CMS installed on your system.";
}
$stmt = new Statement('SELECT * FROM '.$GLOBALS['fc_config']['db']['pref'].'rooms WHERE instance_id=? ORDER BY ispermanent',56);
$rs = $stmt->process($_SESSION['session_inst']);
//changed on 090706 for chat instances
$rooms = array();
while($rec = $rs->next())
{
$value['defaultRoom'][$rec['id']] = $rec['name'];
}
$value['cacheType'][0] = 'no caching';
$value['cacheType'][1] = 'limited caching';
$value['cacheType'][2] = 'full caching';
$mod_rest = array("configuration", "messages", "chats", "users", "rooms", "connections", "bans", "ignores", "bots", "un-install");
$mods = array("addbot", "removebot", "startbot", "killbot", "kick", "alert", "showbans", "kickout", "motd", "teach");
$disabledIRC =
array(
'who', 'whois', 'whowas', 'showignores', 'showbans', 'rooms', 'welcome',
'status', 'topic', 'names', 'sos', 'kickroom', 'motd', 'reban',
'msg', 'move', 'unban', 'query', 'kickout', 'unignore', 'profile',
'boot', 'ban', 'broadcast', 'gag', 'ungag', 'clear', 'me', 'query',
"addbot", "removebot", "startbot", "killbot", "kick", "alert", "teach"
);
$mods_tmp=array();
foreach($mods_selected as $k => $v)
{
if(in_array($v, $mods))
{
$key = array_search($v, $mods);
$mods_tmp[$key] = $v;
}
}
$mods_selected = $mods_tmp;
foreach($mods as $k => $v)
{
if($v == $mods_selected[$k]) $mods[$k] = '#';
}
$mods_tmp = array();
foreach($mods_rest_selected as $k => $v)
{
if(in_array($v, $mod_rest))
{
$key = array_search($v, $mod_rest);
$mods_tmp[$key] = $v;
}
}
$mods_rest_selected = $mods_tmp;
foreach($mod_rest as $k => $v)
{
if($v == $mods_rest_selected[$k]) $mod_rest[$k] = '#';
}
$disabledIRC_tmp=array();
foreach($disabledIRC_selected as $k => $v)
{
if(in_array($v, $disabledIRC))
{
$key=array_search($v, $disabledIRC);
$disabledIRC_tmp[$key]=$v;
}
}
$disabledIRC_selected = $disabledIRC_tmp;
foreach($disabledIRC as $k => $v)
{
if($v == $disabledIRC_selected[$k]) $disabledIRC[$k]="#";
}
foreach($fields as $k => $v)
{
$lang_title = $GLOBALS['fc_config']['languages_admin'][$_COOKIE['language']]['cnf_'.$module]['t'.$k]['value'];
$lang_info = $GLOBALS['fc_config']['languages_admin'][$_COOKIE['language']]['cnf_'.$module]['t'.$k]['hint'];
if($lang_title != '') $fields[$k]['title'] = $lang_title;
if($lang_info != '') $fields[$k]['info'] = $lang_info;
}
$roles[]['value'] = 1;
$roles[]['value'] = 2;
$roles[]['value'] = 3;
$roles[]['value'] = 4;
$roles[]['value'] = 8;
getROLE($roles);
foreach ($roles as $k=>$role) {
$roles[$k]['selected'] = (in_array($role['value'], $disabledIRCFor_selected));
}
//--- assign Smarty values
$smarty->assign('cnf_langs', $GLOBALS['fc_config']['languages_admin'][$_COOKIE['language']]['cnf_list']);
$smarty->assign('cnff_langs', $GLOBALS['fc_config']['languages_admin'][$_COOKIE['language']]['cnf_filesharing']);
$smarty->assign('cnfo_langs', $GLOBALS['fc_config']['languages_admin'][$_COOKIE['language']]['cnf_other']);
$smarty->assign('value', $value);
$smarty->assign('fields', $fields);
$smarty->assign('errMsg', $errMsg);
$smarty->assign('mod_rest', $mod_rest);
$smarty->assign('mods', $mods);
$smarty->assign('roles', $roles);
$smarty->assign('disabledIRC', $disabledIRC);
$smarty->assign('disabledIRC_selected', $disabledIRC_selected);
$smarty->assign('mods_rest_selected', $mods_rest_selected);
$smarty->assign('mods_selected', $mods_selected);
?>