Пример #1
0
 function assignVariables()
 {
     $settings = array('info' => array(), 'required' => array(), 'recommended' => array());
     $safe_mode = ini_get('safe_mode');
     $open_basedir = ini_get('open_basedir');
     /*
      * Info Settings
      */
     $settings['info']['server_software'] = $_SERVER['SERVER_SOFTWARE'];
     $settings['info']['server_api'] = PHP_SAPI;
     $settings['info']['server_os'] = PHP_OS . ' ' . php_uname('r') . ' ' . ilang('on') . ' ' . php_uname('m');
     if (extension_loaded_or('apache2handler')) {
         $settings['info']['mod_security'] = getApacheModules('mod_security') ? ilang('on') : ilang('off');
     }
     /*
      * Required Settings
      */
     list($minimum, $recommended) = getTestValues('php_version');
     $settings['recommended'][] = testIntegerMask(0, ilang('test_error_estrict'), 'error_reporting', E_STRICT, ilang('test_estrict_failed'), true, true, false);
     if (defined('E_DEPRECATED')) {
         $settings['recommended'][] = testIntegerMask(0, ilang('test_error_edeprecated'), 'error_reporting', E_DEPRECATED, ilang('test_edeprecated_failed'), true, true, false);
     }
     $settings['required'][] = testVersionRange(1, ilang('test_check_php', $minimum) . '<br />' . ilang('test_min_recommend', $minimum, $recommended), phpversion(), ilang('test_requires_php_version', phpversion(), $recommended), $minimum, $recommended, false);
     $settings['required'][] = testBoolean(1, ilang('test_check_md5_func'), function_exists('md5'), '', false, false, 'Function_md5_disabled');
     list($minimum, $recommended) = getTestValues('gd_version');
     $settings['required'][] = testGDVersion(1, ilang('test_check_gd'), $minimum, ilang('test_check_gd_failed'), 'min_GD_version');
     $settings['required'][] = testFileWritable(1, ilang('test_check_write') . ' config.php', CONFIG_FILE_LOCATION, ilang('test_may_not_exist'), $this->debug);
     $settings['required'][] = testBoolean(1, ilang('test_check_tempnam'), function_exists('tempnam'), '', false, false, 'Function_tempnam_disabled');
     $settings['required'][] = testBoolean(1, ilang('test_check_magic_quotes_runtime'), 'magic_quotes_runtime', ilang('test_check_magic_quotes_runtime_failed'), true, true, 'magic_quotes_runtime_On');
     $settings['required'][] = testSupportedDatabase(1, ilang('test_check_db_drivers'), false, ilang('test_check_db_drivers_failed'));
     if ('1' != $safe_mode && !isset($_SESSION['allowsafemode'])) {
         $settings['required'][] = testCreateDirAndFile(1, ilang('test_create_dir_and_file'), ilang('info_create_dir_and_file'), $this->debug);
     }
     /*
      * Recommended Settings
      */
     list($minimum, $recommended) = getTestValues('memory_limit');
     $settings['recommended'][] = testRange(0, ilang('test_check_memory') . '<br />' . ilang('test_min_recommend', $minimum, $recommended), 'memory_limit', ilang('test_check_memory_failed'), $minimum, $recommended, true, true, null, 'memory_limit_range');
     list($minimum, $recommended) = getTestValues('max_execution_time');
     $settings['recommended'][] = testRange(0, ilang('test_check_time_limit') . '<br />' . ilang('test_min_recommend', $minimum, $recommended), 'max_execution_time', ilang('test_check_time_limit_failed'), $minimum, $recommended, true, false, 0, 'max_execution_time_range');
     $settings['recommended'][] = testBoolean(0, ilang('test_check_register_globals'), 'register_globals', ilang('test_check_register_globals_failed'), true, true, 'register_globals_enabled');
     $settings['recommended'][] = testInteger(0, ilang('test_check_output_buffering'), 'output_buffering', ilang('test_check_output_buffering_failed'), true, true, 'output_buffering_disabled');
     $settings['recommended'][] = testString(0, ilang('test_check_disable_functions'), 'disable_functions', ilang('test_check_disable_functions_failed'), true, 'green', 'yellow', 'disable_functions_not_empty');
     if (!isset($_SESSION['allowsafemode'])) {
         $settings['recommended'][] = testBoolean(0, ilang('test_check_safe_mode'), 'safe_mode', ilang('test_check_safe_mode_failed'), true, true, 'safe_mode_enabled');
     }
     $settings['recommended'][] = testString(0, ilang('test_check_open_basedir'), $open_basedir, ilang('test_check_open_basedir_failed'), false, 'green', 'yellow', 'open_basedir_enabled');
     if (!isset($_SESSION['skipremote'])) {
         $settings['recommended'][] = testRemoteFile(0, ilang('test_remote_url'), '', ilang('test_remote_url_failed'), $this->debug);
     }
     $settings['recommended'][] = testBoolean(0, ilang('test_check_file_upload'), 'file_uploads', ilang('test_check_file_failed'), true, false, 'Function_file_uploads_disabled');
     list($minimum, $recommended) = getTestValues('post_max_size');
     $settings['recommended'][] = testRange(0, ilang('test_check_post_max') . '<br />' . ilang('test_min_recommend', $minimum, $recommended), 'post_max_size', ilang('test_check_post_max_failed'), $minimum, $recommended, true, true, null, 'min_post_max_size');
     list($minimum, $recommended) = getTestValues('upload_max_filesize');
     $settings['recommended'][] = testRange(0, ilang('test_check_upload_max') . '<br />' . ilang('test_min_recommend', $minimum, $recommended), 'upload_max_filesize', ilang('test_check_upload_max_failed'), $minimum, $recommended, true, true, null, 'min_upload_max_filesize');
     $f = cms_join_path(CMS_BASE, 'uploads');
     $settings['recommended'][] = testDirWrite(0, ilang('test_check_writable', $f), $f, ilang('test_check_upload_failed'), 0, $this->debug);
     $f = cms_join_path(CMS_BASE, 'uploads' . DIRECTORY_SEPARATOR . 'images');
     $settings['recommended'][] = testDirWrite(0, ilang('test_check_writable', $f), $f, ilang('test_check_images_failed'), 0, $this->debug);
     $f = cms_join_path(CMS_BASE, 'modules');
     $settings['recommended'][] = testDirWrite(0, ilang('test_check_writable', $f), $f, ilang('test_check_modules_failed'), 0, $this->debug);
     $session_save_path = testSessionSavePath('');
     if (empty($session_save_path)) {
         $settings['recommended'][] = testDummy(ilang('test_check_session_save_path'), '', 'yellow', ilang('test_empty_session_save_path'), 'session_save_path_empty', '');
     } elseif (!empty($open_basedir)) {
         $settings['recommended'][] = testDummy(ilang('test_check_session_save_path'), '', 'yellow', ilang('test_open_basedir_session_save_path'), 'No_check_session_save_path_with_open_basedir', '');
     } else {
         $settings['recommended'][] = testDirWrite(0, ilang('test_check_session_save_path'), $session_save_path, ilang('test_check_session_save_path_failed', $session_save_path), 1, $this->debug);
     }
     $settings['recommended'][] = testBoolean(0, 'session.use_cookies', 'session.use_cookies', ilang('session_use_cookies'));
     $settings['recommended'][] = testBoolean(0, ilang('test_check_xml_func'), extension_loaded_or('xml'), ilang('test_check_xml_failed'), false, false, 'Function_xml_disabled');
     $settings['recommended'][] = testBoolean(0, ilang('test_xmlreader_class'), class_exists('XMLReader', false), ilang('test_xmlreader_failed'), false, false, 'class_xmlreader_unavailable');
     $settings['recommended'][] = testBoolean(0, ilang('test_check_file_get_contents'), function_exists('file_get_contents'), ilang('test_check_file_get_contents_failed'), false, false, 'Function_file_get_content_disabled');
     #		$settings['recommended'][] =
     #			testBoolean(0, ilang('test_check_magic_quotes_gpc'),
     #				'magic_quotes_gpc', ilang('test_check_magic_quotes_gpc_failed'), true, true, 'magic_quotes_gpc_On');
     $_log_errors_max_len = ini_get('log_errors_max_len') ? ini_get('log_errors_max_len') . '0' : '99';
     ini_set('log_errors_max_len', $_log_errors_max_len);
     $result = ini_get('log_errors_max_len') == $_log_errors_max_len;
     $settings['recommended'][] = testBoolean(0, ilang('test_check_ini_set'), $result, ilang('test_check_ini_set_failed'), false, false, 'ini_set_disabled');
     // assign settings
     list($this->continueon, $this->special_failed) = testGlobal(array(true, false), true);
     $this->smarty->assign('settings', $settings);
     $this->smarty->assign('special_failed', $this->special_failed);
     if (isset($_SESSION['advanceduser'])) {
         $this->smarty->assign('continueon', true);
     } else {
         $this->smarty->assign('continueon', $this->continueon);
     }
     $this->smarty->assign('phpinfo', getEmbedPhpInfo(INFO_CONFIGURATION | INFO_MODULES));
     $this->smarty->assign('errors', $this->errors);
 }
Пример #2
0
 static function usersWithPerm($set, $perm, $explicit = false)
 {
     $set = str_replace("com_fss.", "", $set);
     // doesnt use the assets inherited permissions
     $key = "{$set}-{$perm}-" . (int) $explicit;
     //echo "Key : $key<br>";
     if (empty(self::$misc_perms[$key])) {
         self::$misc_perms[$key] = array();
         $db = JFactory::getDBO();
         $qry = "SELECT lft, rgt FROM #__assets WHERE name = 'com_fss.{$set}'";
         $db->setQuery($qry);
         $asset = $db->loadObject();
         $assets = array();
         if ($asset) {
             // need to load in all parent groups and merge in the rules F**K!
             $qry = "SELECT * FROM #__assets WHERE lft <= {$asset->lft} AND rgt >= {$asset->rgt} ORDER BY level DESC";
             $db->setQuery($qry);
             $assets = $db->loadObjectList();
         }
         if (!$assets) {
             $assets = array();
         }
         $groups = array();
         $denied = array();
         foreach ($assets as $asset) {
             //echo "Sub Asset : {$asset->name}<br >";
             $arules = json_decode($asset->rules);
             if (isset($arules->{$perm})) {
                 foreach ($arules->{$perm} as $gid => $allowed) {
                     if ($allowed) {
                         $groups[$gid] = $gid;
                     } else {
                         $denied[$gid] = $gid;
                     }
                 }
             }
         }
         foreach ($denied as $gid) {
             unset($groups[$gid]);
         }
         $uids = array();
         $final_gids = array();
         // need to load in all child groups for the groups in the list!
         $qry = "SELECT * FROM #__usergroups";
         $db->setQuery($qry);
         $all_groups = $db->loadObjectList('id');
         if (count($groups) > 0) {
             foreach ($groups as $gid) {
                 $final_gids[$gid] = $gid;
                 $this_group = $all_groups[$gid];
                 //echo "Group : {$this_group->title} - {$this_group->lft} -> {$this_group->rgt}<br>";
                 foreach ($all_groups as $child_group) {
                     if (testRange($child_group->lft, $this_group->lft, $this_group->rgt) && testRange($child_group->rgt, $this_group->lft, $this_group->rgt)) {
                         //echo "Adding {$child_group->id} as child of $gid<br>";
                         $final_gids[$child_group->id] = $child_group->id;
                     }
                 }
             }
         }
         // Not sure if to include super users in this or not? They wont have auto assign set
         if (!$explicit) {
             foreach ($all_groups as $group) {
                 if ($group->title == "Super Users") {
                     $final_gids[$group->id] = $group->id;
                 }
             }
         }
         if (isset($final_gids[0])) {
             unset($final_gids[0]);
         }
         if (count($final_gids) > 0) {
             $qry = "SELECT user_id FROM #__user_usergroup_map WHERE group_id IN (" . implode(", ", $final_gids) . ")";
             $db->setQuery($qry);
             $result = $db->loadObjectList();
             foreach ($result as $row) {
                 $uids[$row->user_id] = $row->user_id;
             }
         }
         $qry = "SELECT user_id, rules FROM #__fss_users WHERE rules != ''";
         $db->setQuery($qry);
         $users = $db->loadObjectList();
         foreach ($users as $user) {
             $user->rules = json_decode($user->rules);
             if (isset($user->rules->{$set}->{$perm}) && $user->rules->{$set}->{$perm}) {
                 $uids[$user->user_id] = $user->user_id;
             }
         }
         if (count($uids) > 0) {
             $qry = "  SELECT u.id, u.name, u.username, u.email, f.settings, f.rules, f.user_id ";
             $qry .= " FROM #__users as u";
             $qry .= " LEFT JOIN #__fss_users as f ON u.id = f.user_id ";
             $qry .= " WHERE u.id IN (" . implode(", ", $uids) . ") AND u.block = 0";
             $db->setQuery($qry);
             $objs = $db->loadObjectList();
             foreach ($objs as $obj) {
                 if ($obj->settings == "") {
                     $obj->settings = self::BlankSettings();
                 } else {
                     $obj->settings = json_decode($obj->settings);
                 }
                 $obj->rules = json_decode($obj->rules);
                 if (isset($obj->rules->{$set}->{$perm}) && !$obj->rules->{$set}->{$perm}) {
                     continue;
                 }
                 self::$users[$obj->id] = $obj;
                 self::$misc_perms[$key][$obj->id] = $obj;
             }
         }
     }
     return self::$misc_perms[$key];
 }
<?php

/**
 * Created by maxfine<*****@*****.**>
 * Date: 2015/9/10
 * Time: 15:50
 *
 * php数组函数练习dome
 */
testRange(10, 20);
function testRange($firstNum = 1, $secondNum = 10)
{
    var_dump(range($firstNum, $secondNum));
}
Пример #4
0
$tmp[1]['register_globals'] = testBoolean(0, lang('register_globals'), 'register_globals', '', true, true, 'register_globals_enabled');
$ob = ini_get('output_buffering');
if (strtolower($ob) == 'off' || strtolower($ob) == 'on') {
    $tmp[0]['output_buffering'] = testBoolean(0, lang('output_buffering'), 'output_buffering', '', true, false, 'output_buffering_disabled');
} else {
    $tmp[0]['output_buffering'] = testInteger(0, lang('output_buffering'), 'output_buffering', '', true, true, 'output_buffering_disabled');
}
$tmp[1]['disable_functions'] = testString(0, lang('disable_functions'), 'disable_functions', '', true, 'green', 'yellow', 'disable_functions_not_empty');
$tmp[0]['safe_mode'] = testBoolean(0, 'safe_mode', 'safe_mode', '', true, true, 'safe_mode_enabled');
$tmp[1]['open_basedir'] = testString(0, lang('open_basedir'), $open_basedir, '', false, 'green', 'yellow', 'open_basedir_enabled');
$tmp[1]['test_remote_url'] = testRemoteFile(0, 'test_remote_url', '', lang('test_remote_url_failed'));
$tmp[0]['file_uploads'] = testBoolean(0, 'file_uploads', 'file_uploads', '', true, false, 'Function_file_uploads_disabled');
list($minimum, $recommended) = getTestValues('post_max_size');
$tmp[0]['post_max_size'] = testRange(0, 'post_max_size', 'post_max_size', '', $minimum, $recommended, true, true, null, 'min_post_max_size');
list($minimum, $recommended) = getTestValues('upload_max_filesize');
$tmp[0]['upload_max_filesize'] = testRange(0, 'upload_max_filesize', 'upload_max_filesize', '', $minimum, $recommended, true, true, null, 'min_upload_max_filesize');
$session_save_path = testSessionSavePath('');
if (empty($session_save_path)) {
    $tmp[0]['session_save_path'] = testDummy('session_save_path', lang('os_session_save_path'), 'yellow', '', 'session_save_path_empty', '');
} elseif (!empty($open_basedir)) {
    $tmp[0]['session_save_path'] = testDummy('session_save_path', lang('open_basedir_active'), 'yellow', '', 'No_check_session_save_path_with_open_basedir', '');
} else {
    $tmp[0]['session_save_path'] = testDirWrite(0, lang('session_save_path'), $session_save_path, $session_save_path, 1);
}
$tmp[0]['session_use_cookies'] = testBoolean(0, 'session.use_cookies', 'session.use_cookies');
$tmp[0]['xml_function'] = testBoolean(1, 'xml_function', extension_loaded_or('xml'), '', false, false, 'Function_xml_disabled');
$tmp[0]['xmlreader_class'] = testBoolean(1, 'xmlreader_class', class_exists('XMLReader', false), '', false, false, 'class_xmlreader_unavailable');
#$tmp[1]['file_get_contents'] = testBoolean(0, 'file_get_contents', function_exists('file_get_contents'), '', false, false, 'Function_file_get_content_disabled');
$_log_errors_max_len = ini_get('log_errors_max_len') ? ini_get('log_errors_max_len') . '0' : '99';
ini_set('log_errors_max_len', $_log_errors_max_len);
$result = ini_get('log_errors_max_len') == $_log_errors_max_len;
Пример #5
0
check_bucket_cache_values(3, 1, 2, 3, 4, 5, 6, $errors);
// Smoke tests
if (set_bucket_cache_info(-1, 1, 2, 3, 4, 5, 6) !== FALSE) {
    error("FALSE was expected when setting a invalid cluster_id -1", $errors);
}
if (set_bucket_cache_info(10, 1, 2, 3, 4, 5, 6) !== FALSE) {
    error("FALSE was expected when setting a invalid cluster_id 10", $errors);
}
if (set_bucket_cache_info(4, 524289, 2, 3, 4, 5, 6) !== FALSE) {
    error("FALSE was expected when setting a invalid bucket_id 524289", $errors);
}
if (set_bucket_cache_info(4, -1, 2, 3, 4, 5, 6) !== FALSE) {
    error("FALSE was expected when setting a invalid bucket_id -1", $errors);
}
// Testing with some load
testRange(30, 500000, $errors);
// TTL testing
$ttl = 10;
$stale = 5;
$extra_ttl = 7;
set_bucket_and_store_error(1, 1, 2, 3, 4, 5, 6, $errors);
// Should be ok
check_bucket_cache_values(1, 1, 2, 3, 4, 5, 6, $errors);
sleep(2);
check_bucket_cache_values(1, 1, 2, 3, 4, 5, 6, $errors);
// Sleep ttl seconds and check for expiration (only first request)
sleep($ttl);
check_bucket_cache_values(1, 1, 2, 3, 4, 5, 6, $errors, FALSE);
// Now we expect TRUE (due to stale data reusing)
check_bucket_cache_values(1, 1, 2, 3, 4, 5, 6, $errors);
sleep(1);
Пример #6
0
foreach ($wrong_partition_ids as $partitionId) {
    if (set_tuenti_user_partition(1, $partitionId) !== FALSE) {
        $errors[] = 'FALSE was expected when setting a invalid partition (' . $partitionId . ')';
    }
}
$wrong_user_ids = array(-1, 150000, 160000000);
foreach ($wrong_user_ids as $userId) {
    if (set_tuenti_user_partition($userId, 1) !== FALSE) {
        $errors[] = 'FALSE was expected when setting a new partition for an invalid user id (' . $userId . ')';
    }
    if (get_tuenti_user_partition($userId) !== FALSE) {
        $errors[] = 'FALSE was expected when getting a partition for an invalid user id (' . $userId . ')';
    }
}
testRange(2, 100000, $errors);
testRange(60000000, 61000000, $errors);
function testRange($start, $end, &$errors)
{
    for ($i = $start; $i < $end; $i++) {
        set_tuenti_user_partition($i, $i % 52 + 1);
    }
    for ($i = $start; $i < $end; $i++) {
        $user_partition = get_tuenti_user_partition($i);
        if ($user_partition !== $i % 52 + 1) {
            $errors[] = 'Wrong partition recovered for ' . $i . '. Was ' . $user_partition . ' expected ' . ($i % 52 + 1);
            break;
        }
    }
}
if (sizeof($errors) > 0) {
    echo "*** ERRORS ***\n";