diff --git a/.gitignore b/.gitignore deleted file mode 100644 index a61be9f..0000000 --- a/.gitignore +++ /dev/null @@ -1,49 +0,0 @@ -/db -hack.php -post.html -astra-config.php -workspace.xml -/.idea -czar-A9EC79EC9B9113CAF4A4EBD5E04AFBC9.html -/.vscode -libraries/plugins/astra-gk -tests - -# Compiled source # -################### -*.com -*.class -*.dll -*.exe -*.o -*.so - -# Packages # -############ -# it's better to unpack these files and commit the raw source -# git has its own built in compression methods -*.7z -*.dmg -*.gz -*.iso -*.jar -*.rar -*.tar -*.zip -*.db - -# Logs and databases # -###################### -*.log -*.sql -*.sqlite - -# OS generated files # -###################### -.DS_Store -.DS_Store? -._* -.Spotlight-V100 -.Trashes -ehthumbs.db -Thumbs.db \ No newline at end of file diff --git a/.gitlab/issue_templates/Bug.md b/.gitlab/issue_templates/Bug.md deleted file mode 100644 index c7dd307..0000000 --- a/.gitlab/issue_templates/Bug.md +++ /dev/null @@ -1,26 +0,0 @@ - - -## Description - - -## Expected Behavior - - -## Actual Behavior - - -## Possible Fix - - -## Steps to Reproduce - - -1. -2. -3. -4. - -## Context - - -/label ~Bug \ No newline at end of file diff --git a/.gitlab/issue_templates/Feature.md b/.gitlab/issue_templates/Feature.md deleted file mode 100644 index 42cffb1..0000000 --- a/.gitlab/issue_templates/Feature.md +++ /dev/null @@ -1,13 +0,0 @@ - - -## Detailed Description - - -## Context - - - -## Possible Implementation - - -/label ~Feature \ No newline at end of file diff --git a/.gitlab/merge_request_templates/Bugfix.md b/.gitlab/merge_request_templates/Bugfix.md deleted file mode 100644 index 79bdb05..0000000 --- a/.gitlab/merge_request_templates/Bugfix.md +++ /dev/null @@ -1,32 +0,0 @@ - -# Bugfix - - -## Description - - -## Motivation and Context - - - -## How Has This Been Tested? - - - - -## Screenshots (if appropriate): - -## Types of changes - -- [ ] Bug fix (non-breaking change which fixes an issue) -- [ ] New feature (non-breaking change which adds functionality) -- [ ] Breaking change (fix or feature that would cause existing functionality to not work as expected) - -## Checklist: - - -- [ ] My code follows the code style of this project. -- [ ] My change requires a change to the documentation. -- [ ] I have updated the documentation accordingly. - -/label ~Bugfix \ No newline at end of file diff --git a/.gitlab/merge_request_templates/DevelopToMaster.md b/.gitlab/merge_request_templates/DevelopToMaster.md deleted file mode 100644 index 7d888b3..0000000 --- a/.gitlab/merge_request_templates/DevelopToMaster.md +++ /dev/null @@ -1,35 +0,0 @@ - -# Develop -> Master - - -## Issue(s) - - -## Description - - -## Motivation and Context - - - -## How Has This Been Tested? - - - - -## Screenshots (if appropriate): - -## Types of changes - -- [ ] Bug fix (non-breaking change which fixes an issue) -- [ ] New feature (non-breaking change which adds functionality) -- [ ] Breaking change (fix or feature that would cause existing functionality to not work as expected) - -## Checklist: - - -- [ ] My code follows the code style of this project. -- [ ] My change requires a change to the documentation. -- [ ] I have updated the documentation accordingly. - -/label ~Feature \ No newline at end of file diff --git a/.gitlab/merge_request_templates/Feature.md b/.gitlab/merge_request_templates/Feature.md deleted file mode 100644 index 90cc578..0000000 --- a/.gitlab/merge_request_templates/Feature.md +++ /dev/null @@ -1,32 +0,0 @@ - -# Feature - - -## Description - - -## Motivation and Context - - - -## How Has This Been Tested? - - - - -## Screenshots (if appropriate): - -## Types of changes - -- [ ] Bug fix (non-breaking change which fixes an issue) -- [ ] New feature (non-breaking change which adds functionality) -- [ ] Breaking change (fix or feature that would cause existing functionality to not work as expected) - -## Checklist: - - -- [ ] My code follows the code style of this project. -- [ ] My change requires a change to the documentation. -- [ ] I have updated the documentation accordingly. - -/label ~Feature \ No newline at end of file diff --git a/.gitlab/merge_request_templates/Hotfix.md b/.gitlab/merge_request_templates/Hotfix.md deleted file mode 100644 index a1c587d..0000000 --- a/.gitlab/merge_request_templates/Hotfix.md +++ /dev/null @@ -1,32 +0,0 @@ - -# Hotfix - - -## Description - - -## Motivation and Context - - - -## How Has This Been Tested? - - - - -## Screenshots (if appropriate): - -## Types of changes - -- [ ] Bug fix (non-breaking change which fixes an issue) -- [ ] New feature (non-breaking change which adds functionality) -- [ ] Breaking change (fix or feature that would cause existing functionality to not work as expected) - -## Checklist: - - -- [ ] My code follows the code style of this project. -- [ ] My change requires a change to the documentation. -- [ ] I have updated the documentation accordingly. - -/label ~Hotfix \ No newline at end of file diff --git a/Astra.php b/Astra.php deleted file mode 100644 index 022c338..0000000 --- a/Astra.php +++ /dev/null @@ -1,419 +0,0 @@ -' . $str . "

\r\n"; - } - } - - public function __construct() - { - - require_once(ASTRAPATH . 'astra-config.php'); - require_once(ASTRAPATH . 'libraries/Config_options.php'); - - if (!defined('CZ_DB_PATH')) { - define('CZ_DB_PATH', dirname(__FILE__) . '/'); - } - - echo_debug('Astra Constuctor Loaded'); - echo_debug('Astra version - v' . CZ_ASTRA_CLIENT_VERSION . ' and PHP version - ' . PHP_VERSION); - if (!$this->meets_requirements()) { - echo_debug('Requirements not met'); - return FALSE; - } else { - echo_debug('Meets all Requirements'); - } - - self::$_config = new AstraConfig(); - - if (CZ_ASTRA_ACTIVE) { - - echo_debug('Astra Active'); - require_once(ASTRAPATH . 'libraries/Astra_ip.php'); - - $client_ip = new Astra_ip(); - - self::$_ip = $client_ip->get_ip_address(); - if (trim(self::$_ip) == "") { - self::$_ip = '103.16.70.12'; - } - - self::$_user_agent = !empty($_SERVER['HTTP_USER_AGENT']) ? $_SERVER['HTTP_USER_AGENT'] : ''; - - if (!empty($cz_lvl)) { - self::$cz_lvl = $cz_lvl; - } else { - self::$cz_lvl = get_cz_lvl(); - $cz_lvl = self::$cz_lvl; - } - - echo_debug('Current IP: ' . self::$_ip); - echo_debug('Current UA: ' . self::$_user_agent); - echo_debug(self::$cz_lvl); - echo_debug($cz_lvl); - - $this->check_search_engine(); - - if (CZ_SETUP) { - echo_debug('Has been Setup'); - $this->init(); - } else { - echo_debug('NOT been Setup'); - if (isset($_SERVER['HTTP_HOST']) && $this->setup()) { - echo_debug('Setup Complete'); - $this->init(); - } - } - } else { - echo_debug('Astra not active'); - show_astra_debug_log(); - return; - } - - show_astra_debug_log(); - } - - protected function meets_requirements() - { - if (!defined('PDO::ATTR_DRIVER_NAME')) { - echo_debug('PDO Driver Missing'); - return FALSE; - } else { - echo_debug('PDO Loaded'); - } - - if (!in_array('sqlite', PDO::getAvailableDrivers(), TRUE)) { - echo_debug('sqlite3 extension not loaded'); - return false; - } else { - echo_debug('SQLite loaded'); - } - - if (!file_exists(CZ_DB_PATH . 'db/' . CZ_DATABASE_NAME . '.db')) { - echo_debug('Updating DB'); - $this->update_db(); - } else { - /* - unlink(ASTRAPATH . 'db/' . CZ_DATABASE_NAME . '.db'); - echo_debug('Updating DB'); - $this->update_db(); - * - */ - } - return TRUE; - } - - public function init() - { - echo_debug('Initializing'); - self::connect_db(); - $this->run(); - } - - public static function connect_db() - { - require_once(ASTRAPATH . 'libraries/SQLite_db.php'); - self::$_db = new SQLiteWrapper(self::$cz_lvl); - } - - private function update_db() - { - require_once(ASTRAPATH . 'libraries/Update_DB.php'); - $update_db = new Update_DB(); - } - - public function setup() - { - - if (empty($_SERVER)) { - return false; - } - - // Added for TC - if (!defined("CZ_SECRET_KEY") || (defined("CZ_SECRET_KEY") && strlen(CZ_SECRET_KEY) < 2)) { - echo_debug('Enc keys not set'); - return false; - } - - /* - if (file_exists(CZ_DB_PATH . 'db/' . CZ_DATABASE_NAME . 'db')) { - if (unlink(CZ_DB_PATH . 'db/' . CZ_DATABASE_NAME . 'db')) { - echo_debug('Deletd Already Set Database'); - } else { - echo_debug('Unable to Delete Database'); - return FALSE; - } - } - */ - - require_once(ASTRAPATH . 'libraries/Astra_setup.php'); - $astraSetup = new Astra_setup(); - $astraSetup->createAstraFiles(); - $rootApiUri = $astraSetup->getRootApiFileUri(); - - require_once(ASTRAPATH . 'libraries/API_connect.php'); - $connect = new API_connect(); - - $connect->setRootApiUri($rootApiUri); - - if (!$connect->setup()) { - return FALSE; - } - - require_once(ASTRAPATH . 'libraries/Update_DB.php'); - $update_db = new Update_DB(); - - if (!$update_db) { - return FALSE; - } - - require_once(ASTRAPATH . 'libraries/Update_config.php'); - $update_config_file = Update_config('CZ_SETUP', base64_encode('TRUE'), FALSE); - - return $update_config_file; - - } - - public function run() - { - echo_debug('About to run'); - - $blocked_or_trusted = self::$_db->is_blocked_or_trusted(self::$_ip, false, self::$_config); - - if ($blocked_or_trusted == "blocked" && !self::$_is_search_engine) { - self::show_block_page(); - } - - if ($blocked_or_trusted == "trusted" || self::is_whitelisted_url() || self::$_is_search_engine) { - echo_debug("Is trusted or whitelisted or a search engine"); - if (self::$_is_search_engine) { - $is_trusted = self::$_db->edit_ip_exception('add', 'trusted', self::$_ip); - } - return TRUE; - } - - $is_bad_bot = $this->is_bad_bot(); - - if ($blocked_or_trusted == "blocked" || $is_bad_bot || self::$_is_fake_search_engine_bot) { - echo_debug('You have been blocked'); - require_once(ASTRAPATH . 'libraries/API_connect.php'); - $connect = new API_connect(); - if ($is_bad_bot || self::$_is_fake_search_engine_bot) { - // self::$_db->log_hit(self::$_ip); - self::$_db->edit_ip_exception('add', 'blocked', self::$_ip); - - echo_debug('You are a badbot'); - $connect->send_request("badbot", array()); - echo_debug('Reported Blackbot status'); - } - self::show_block_page(); - } - - $this->run_upload_scan(); - $this->run_IDS(); - $this->run_patches(); - - if (!self::$_is_search_engine) { - $this->run_token_bucket(); - } - - } - - protected function is_whitelisted_url() - { - if (!empty($_SERVER['REQUEST_URI'])) { - $url = $_SERVER['REQUEST_URI']; - - - $db_params = self::$_db->get_custom_params(); - - $db_allowed_urls = $db_params['url']; - - $allowed_urls = array('/admin/', '/wp-admin', 'checkout', 'paypal', '/ipn.php', '/transaction', 'callback', 'contact-form-7', 'wc-ajax=', '/wc-api', '/wp-json', 'api/soap', 'api/v2_soap'); - - $merge = array_merge($allowed_urls, $db_allowed_urls); - - //print_r($merge); - - foreach ($merge as $allowed_url) { - if (strpos($url, $allowed_url) !== false) { - return TRUE; - } - } - } - - return FALSE; - } - - public static function show_block_page($attack_param = null) - { - if (defined('CZ_ASTRA_MODE') && CZ_ASTRA_MODE == 'monitor') { - return TRUE; - } - - if (!headers_sent()) { - header('HTTP/1.0 403 Forbidden'); - } - echo_debug('About to show block page'); - - if (file_exists(ASTRAPATH . 'block-page-custom.php')) { - $block_page_path = ASTRAPATH . 'block-page-custom.php'; - } else { - $block_page_path = ASTRAPATH . 'block-page.php'; - } - - if (!headers_sent()) { - header('X-XSS-Protection: 1; mode=block'); - header('X-Frame-Options: deny'); - header('X-Content-Type-Options: nosniff'); - - /* No cache headers */ - header('X-LiteSpeed-Cache-Control: no-cache'); - header("Expires: Tue, 03 Jul 2001 06:00:00 GMT"); - header("Last-Modified: " . gmdate("D, d M Y H:i:s") . " GMT"); - header("Cache-Control: no-store, no-cache, must-revalidate, max-age=0"); - header("Cache-Control: post-check=0, pre-check=0", false); - header("Pragma: no-cache"); - header("Connection: close"); - } - - if (file_exists($block_page_path)) { - include($block_page_path); - exit; - die(); - } - - if (!headers_sent()) { - header("Location: " . CZ_BLOCK_PAGE_URL); /* Redirect browser */ - } else { - echo ''; - } - die("You are blocked"); - exit(); - } - - protected function run_upload_scan() - { - - if (empty($_FILES)) { - return true; - } - - if (version_compare(PHP_VERSION, '5.4.0') >= 0) { - echo_debug('Including mussel'); - $config = new AstraConfig(); - $data['key'] = 'file_uploads'; - $musselResult = $config->get_config($data); - if ($musselResult) { - $phpMusselConfig = json_decode($musselResult, true); - if ($phpMusselConfig['status'] == 'TRUE') { - require_once(ASTRAPATH . 'libraries/plugins/phpMussel/loader.php'); - } else { - return false; - } - } else { // Run upload scan by default - require_once(ASTRAPATH . 'libraries/plugins/phpMussel/loader.php'); - } - - } else { - echo_debug('PHP version (' . PHP_VERSION . ') < 5.4.0 so not including Mussel'); - } - - } - - protected function run_ids() - { - require_once(ASTRAPATH . 'libraries/PHPIDS.php'); - echo_debug('Including IDS'); - $phpids = new PHPIDS(self::$_db, self::$_ip); - } - - protected function run_patches() - { - require_once(ASTRAPATH . 'libraries/Virtual_patches.php'); - $patches = new Astra_virtual_patches(); - $patches->apply(); - - $applied_patches = $patches->get_applied_patches(); - - if (count($applied_patches) > 0) { - self::$_db->log_hit(self::$_ip); - self::show_block_page(); - } - } - - protected function is_bad_bot() - { - $db = self::$_db->is_bad_bot(self::$_user_agent); - - if ($db && !self::$_is_search_engine) { - return TRUE; - } - - return FALSE; - } - - protected function check_search_engine() - { - require_once(ASTRAPATH . 'libraries/Bad_bots.php'); - $bot = new Bad_bots(self::$_user_agent, self::$_ip); - - self::$_is_search_engine = $bot->is_search_engine(); - self::$_is_fake_search_engine_bot = $bot->is_fake_bot(); - - return true; - } - - function get_sso_token() - { - $time = strtolower(gmdate("FYhiA")); - $str = CZ_CLIENT_KEY . '|' . CZ_ACCESS_KEY . '|' . $time; - $token = hash_hmac('sha256', $str, CZ_SECRET_KEY, false); - return $token; - } - - protected function run_token_bucket() - { - return TRUE; - require_once(ASTRAPATH . 'libraries/Token_bucket.php'); - Token_bucket::run(); - } - - } - -} \ No newline at end of file diff --git a/ak.php b/ak.php deleted file mode 100644 index 7082cfa..0000000 --- a/ak.php +++ /dev/null @@ -1,74 +0,0 @@ -get_sso_key(); - - $stored = $this->get_session_key(); - - if ($stored === $expected || $rcvd === $expected) { - $this->store_key($expected); - unset($_GET['key']); - return true; - } - header("HTTP/1.0 404 Not Found"); - exit; - } - - protected function get_session_key() - { - - if (function_exists('session_status')) { - if (session_status() === PHP_SESSION_NONE) { - session_start(); - } - } else { - if (session_id() == '') { - session_start(); - } - } - - $key = !empty($_SESSION['astra_ak_key']) ? $_SESSION['astra_ak_key'] : ""; - - return $key; - } - - protected function store_key($key) - { - $_SESSION['astra_ak_key'] = $key; - } - - protected function get_sso_key() - { - define("CZ_DEBUG", TRUE); - require_once __DIR__ . '/astra-config.php'; - $time = strtolower(gmdate("FYhiA")); - $str = CZ_CLIENT_KEY . '|' . CZ_ACCESS_KEY . '|' . $time; - $token = hash_hmac('sha256', $str, CZ_SECRET_KEY, false); - return $token; - } - - public function __construct() - { - if ($this->auth()) { - $this->load(); - } - } - - function load() - { - require __DIR__ . '/Astra.php'; - $astra = new Astra(); - } - } - - new Astra_ak; -} \ No newline at end of file diff --git a/api.php b/api.php deleted file mode 100644 index 9de9d55..0000000 --- a/api.php +++ /dev/null @@ -1,417 +0,0 @@ -run(); - } - - protected function respond($code, $msg = "", $slug = "") - { - $this->response['origin'] = 'client'; - $this->response['code'] = $code; - $this->response['slug'] = $slug; - if ($msg == "") { - switch ($code) { - case 0: - $msg = "failed"; - break; - case 1: - $msg = "success"; - break; - default: - $msg = "error"; - break; - } - } - - $this->response['msg'] = $msg; - - if (empty($this->response['errors'])) { - $this->response['errors'] = array(); - } - - header('Content-Type: application/json'); - echo json_encode($this->response); - - die(); - } - - protected function addError($slug, $msg) - { - $this->response['errors'][$slug] = $msg; - } - - protected function authenticate() - { - $accessResponse = !empty($_POST['access_code']) ? $_POST['access_code'] : ''; - - if ($accessResponse != CZ_ACCESS_KEY) - $this->respond(-1, "Access Code doesn't match", 'access_code_missing'); - - $encResponse = $_POST['encRequest']; - - $crypto = new Astra_crypto(); - $this->receivedResponse = @unserialize($crypto->decrypt($encResponse, CZ_SECRET_KEY)); - - //echo $this->receivedResponse['client_key'] . "-" . CZ_CLIENT_KEY; - if (($this->receivedResponse == false) || ($this->receivedResponse['client_key'] != CZ_CLIENT_KEY)) - $this->respond(-1, "Secret/Client Key Mismatch"); - - return TRUE; - } - - public function bad_bots_update() - { - require_once(ASTRAPATH . 'libraries\Update_bad_bots.php'); - if (update_bad_bots()) - $this->respond(1); - else - $this->respond(0, "Unable to respond"); - } - - protected function filters_update() - { - require_once(ASTRAPATH . 'libraries\Crypto.php'); - - $dataArray['client_key'] = CZ_CLIENT_KEY; - $dataArray['api'] = "get_filters"; - $str = serialize($dataArray); - - $crypto = new Astra_crypto(); - $encrypted_data = $crypto->encrypt($str, CZ_SECRET_KEY); - - $postdata = http_build_query( - array( - 'encRequest' => $encrypted_data, - 'access_code' => CZ_ACCESS_KEY, - ) - ); - - $opts = array('http' => - array( - 'method' => 'POST', - 'header' => 'Content-type: application/x-www-form-urlencoded', - 'content' => $postdata - ) - ); - $context = stream_context_create($opts); - - $server_reply = file_get_contents(CZ_API_URL, FALSE, $context); - - $filter_file_path = 'libraries/plugins/IDS/default_filter.xml'; - - if (!empty($server_reply)) { - if (is_writeable(dirname(ASTRAPATH . $filter_file_path))) { - $dlHandler = fopen(ASTRAPATH . $filter_file_path, 'w'); - if (!fwrite($dlHandler, $server_reply)) { - $this->respond(0, "Unable to write"); - exit(); - } - fclose($dlHandler); - $this->respond(1); - } else { - $this->respond(0, "Directory not writable"); - } - } else { - $this->respond(0, "Empty Response"); - } - - $this->respond(0); - } - - protected function astra_update() - { - require_once(ASTRAPATH . 'libraries/Updater.php'); - - echo_debug("API Call received"); - echo_debug($this->receivedResponse); - - $server_version = $this->receivedResponse['version']; - - $platform = isset($this->receivedResponse['platform']) ? $this->receivedResponse['platform'] : 'php'; - - echo_debug("Loading updater"); - - $updater = new Astra_updater($server_version); - - if ($updater->is_update()) { - if ($updater->download_file()) { - sleep(1); - if ($updater->update($platform)) { - sleep(1); - $updater->delete(); - - ## Initialize the Setup Process - require_once('libraries/API_connect.php'); - $connect = new API_connect(); - if (!$connect->report_update()) { - $this->respond(-1, "Unable to report update"); - } - } - - $this->response['errors'] = $updater->get_errors(); - $this->respond(1); - } - } - - $this->response['errors'] = $updater->get_errors(); - $this->respond(-1, "Noting to update"); - } - - protected function update_config() - { - require_once(ASTRAPATH . 'libraries/Update_config.php'); - - if (isset($this->receivedResponse['constant_check_for_quotes'])) { - $quotes = $this->receivedResponse['constant_check_for_quotes']; - } else - $quotes = FALSE; - - if (update_config($this->receivedResponse['constant_name'], $this->receivedResponse['constant_value'], $quotes)) { - $this->respond(1); - } else { - $this->respond(0); - } - } - - protected function get_version() - { - $ret = explode(".", CZ_ASTRA_CLIENT_VERSION); - $this->response['version'] = array('major' => $ret[0], 'minor' => $ret[1], 'patch' => $ret[2]); - $this->respond(1); - } - - protected function valid_param($val) - { - if ($this->receivedResponse['rule_type'] === "url") { - return true; - } - - $val = strtolower($val); - $allowed = array('get.', 'post.', 'request.', 'cookie.', 'session.'); - - foreach ($allowed as $a) { - if (substr($val, 0, strlen($a)) == $a) - return TRUE; - } - return FALSE; - } - - protected function whitelist_url() - { - ASTRA::connect_db(); - - $action = $this->receivedResponse['rule_action']; - $val = $this->receivedResponse['rule_val']; - - $allowed_rule_action = array('add', 'delete'); - - if (in_array($action, $allowed_rule_action)) { - switch ($action) { - case 'add': - $result = ASTRA::$_db->add_whitelist_url($val); - break; - case 'delete': - $result = ASTRA::$_db->delete_whitelist_url($val); - break; - } - - if ($result == TRUE) { - $this->respond(1); - } else { - $this->respond(0, "Unable to update db"); - } - - } else { - $this->respond('0', 'Not a valid action'); - } - - } - - protected function custom_rule() - { - //rule_action = add, delete - //rule_type = "trusted", "blocked", "exception", "html" ,"json" - - ASTRA::connect_db(); - - $action = $this->receivedResponse['rule_action']; - $type = $this->receivedResponse['rule_type']; - $val = $this->receivedResponse['rule_val']; - - $allowed_rule_action = array('add', 'delete', 'update'); - - $ip_check = array('trusted', 'blocked'); - $param_check = array('exception', 'html', 'json', 'url',); - $allowed_rule_type = array_merge($ip_check, $param_check); - - if (in_array($action, $allowed_rule_action) && in_array($type, $allowed_rule_type)) { - if (in_array($type, $ip_check) && is_string($val) && strlen($val) == 2) { - if ($type == "blocked") { - $config_data = array( - "key" => "country_blocked", - "value" => $val, - "autoload" => 1, - ); - } elseif ($type == "trusted") { - $config_data = array( - "key" => "country_trusted", - "value" => $val, - "autoload" => 1, - ); - } - switch ($action) { - case 'add': - $this->config_actions("add_config", $config_data); - break; - case 'delete': - $this->config_actions("delete_config", $config_data); - break; - case 'update': - $this->config_actions("update_country", $config_data); - break; - } - } elseif (in_array($type, $ip_check) && filter_var($val, FILTER_VALIDATE_IP) !== TRUE) { - if (ASTRA::$_db->edit_ip_exception($action, $type, $val)) { - $this->respond(1); - } else { - $this->respond('0', 'Unable to set custom IP rule'); - } - } elseif (in_array($type, $param_check) && $this->valid_param($val)) { - if (ASTRA::$_db->edit_param_exception($action, $type, $val)) { - $this->respond(1); - } else { - $this->respond(0, "Couldn't edit exception"); - } - } else { - $this->respond('0', 'Could not validate'); - } - } else { - $this->respond('0', 'Not Allowed'); - } - } - - protected function is_value_exist($_config_option, $config_data) - { - $blocked_countries = json_decode($_config_option->get_config(array("key" => "country_blocked"))); - $trusted_countries = json_decode($_config_option->get_config(array("key" => "country_trusted"))); - - if (!empty($trusted_countries) && !empty($blocked_countries)) { - if (is_array($blocked_countries)) { - return in_array($config_data['value'], $blocked_countries); - } else { - return ($config_data['value'] == $blocked_countries) ? true : false; - } - - if (is_array($trusted_countries)) { - return in_array($config_data['value'], $trusted_countries); - } else { - return ($config_data['value'] == $trusted_countries) ? true : false; - } - } else - return false; - } - - protected function config_actions($func_name, $data) - { - $config = new AstraConfig(); - $result = null; - switch ($func_name) { - case "get_config": - $result = $config->get_config($data); - break; - case "add_config": - $_is_exist = $this->is_value_exist($config, $data); - $result = (!$_is_exist) ? $config->add_config($data) : true; - break; - case "delete_config": - $result = $config->delete_config($data); - break; - case "update_config": - $result = $config->update_config($data); - break; - case "update_country": - $result = $config->update_country($data); - break; - } - if ($result) - $this->respond(1); - else - $this->respond(0, 'Unable to update configuration'); - } - - public function run() - { - - if (!$this->authenticate()) { - $this->respond(-1, "Invalid API Call"); - } - - echo_debug($this->receivedResponse); - - $api = $this->receivedResponse['api']; - - switch ($api) { - case "ping": - $this->respond(1); - break; - case "version": - $this->get_version(); - break; - case "update": - $this->astra_update(); - break; - case "update_bad_bots": - $this->bad_bots_update(); - break; - case "update_filters": - $this->filters_update(); - break; - case "custom_rule": - $this->custom_rule(); - break; - case "update_config": - $this->update_config(); - break; - default: - echo "ping"; - } - } - - } - -} - -if (class_exists('Api')) { - $astra_api = new Api(); -} \ No newline at end of file diff --git a/astra-inc.php b/astra-inc.php deleted file mode 100644 index f8f2d10..0000000 --- a/astra-inc.php +++ /dev/null @@ -1,16 +0,0 @@ - \ No newline at end of file diff --git a/blackhole.php b/blackhole.php deleted file mode 100644 index b0c6af7..0000000 --- a/blackhole.php +++ /dev/null @@ -1,12 +0,0 @@ -get_ip_address(); - -ASTRA::$_db->block_bot($ip_address); -ASTRA::show_block_page(); -die(); \ No newline at end of file diff --git a/block-page.php b/block-page.php deleted file mode 100644 index 5e91767..0000000 --- a/block-page.php +++ /dev/null @@ -1,459 +0,0 @@ -get_ip_address(); -$formCheck = false; -if($_POST){ - $formCheck = true; -} -?> - - - - - Attention! - - - - "+d+""'; - $script = "eval(\"" . str_replace(array("\\", '"'), array("\\\\", '\"'), $script) . "\")"; - $script = ''; - return '[javascript protected email address]' . $script; - } - - $support_email = hide_email('help@getastra.com'); - ?> - - - -
- What ASTRA Means -
-

Sorry, this is not allowed.

-

Thank you for visiting our website, unfortunately our website protection system has detected an issue with your IP - address and wont let you proceed any further.

-

If you feel this is an error, please submit a support request. Thank you for your patience.

-

- https://www.getastra.com/ -

- -
-

Go to Homepage

-
- - - - - - - \ No newline at end of file diff --git a/czar-89FC3CFA43E356C42382A941A99E4386.html b/czar-89FC3CFA43E356C42382A941A99E4386.html deleted file mode 100644 index 397e989..0000000 --- a/czar-89FC3CFA43E356C42382A941A99E4386.html +++ /dev/null @@ -1 +0,0 @@ -89FC3CFA43E356C42382A941A99E4386 \ No newline at end of file diff --git a/gk.php b/gk.php deleted file mode 100644 index b471548..0000000 --- a/gk.php +++ /dev/null @@ -1,13 +0,0 @@ - - * @date 2019-04-07 - */ - -$path_to_ms = __DIR__ . "/libraries/plugins/astra-gk/index.php"; - -if(file_exists($path_to_ms)){ - include_once $path_to_ms; -} \ No newline at end of file diff --git a/install-astra.php b/install-astra.php deleted file mode 100644 index 10e9cfa..0000000 --- a/install-astra.php +++ /dev/null @@ -1,735 +0,0 @@ -data_path = "astra-install.json"; - - $this->response = array( - 'success' => false, - 'msg' => "", - ); - - $this->log = ""; - - $this->run(); - } - - function __destruct() - { - //$this->print_log(); - } - - protected function log($msg) - { - - $this->log .= "

" . $msg . "

\r\n"; - $this->log_count++; - } - - public function getLogs() - { - return $this->log; - } - - public function getInstalled(){ - return file_exists('astra/astra-inc.php') || $this->installed; - } - - protected function print_log() - { - echo $this->log; - } - - protected function respond($success, $msg = '') - { - $this->response['success'] = $success; - if (!empty($msg)) { - $this->response['msg'] = $msg; - } - - header('Content-Type: application/json'); - echo json_encode($this->response, JSON_PRETTY_PRINT); - exit; - } - - protected function load_json() - { - if (file_exists($this->data_path)) { - $string = file_get_contents($this->data_path); - $json_data = json_decode($string, true); - } - - if (!empty($json_data) && is_array($json_data)) { - return $json_data; - } - - return array(); - } - - protected function save_json() - { - return true; - $saved = file_put_contents($this->data_path, json_encode($this->websites)); - return is_int($saved); - } - - public function is_astra_installed($path) - { - return file_exists($path . 'astra'); - } - - protected function clean_install($path) - { - $zip_path = $this->get_astra_zip_path($path); - unlink($zip_path); - - $this->log('Deleting the ZIP file.'); - - return !file_exists($zip_path); - } - - protected function do_install($path = '') - { - - $key = 0; - $this->websites[$key]['installed_astra'] = FALSE; - - if ($this->is_astra_installed($path)) { - $this->log("Astra already installed. Nothing to do! :)"); - return $this->websites[$key]; - } - - - $this->log("-----------"); - $this->log("Installing for " . $_SERVER['HTTP_HOST']); - - - $function_name = "install_default"; - if (method_exists($this, $function_name)) { - $installed = $this->$function_name($path); - if ($installed == true) { - $this->websites[$key]['installed_astra'] = TRUE; - - $this->log("Installed for $path"); - - //$this->respond(true, 'Installed for ' . $website['user']); - } else { - $this->websites[$key]['installed_astra'] = FALSE; - $this->websites[$key]['reason_for_failure'] = $installed; - $this->log("Unable to install. Please email help@getastra.com if you need help"); - //$this->respond(false, 'Unable to install for ' . $website['user']); - } - - - } - - return $this->websites[$key]; - } - - - protected function meets_requirements() { - if (!defined('PDO::ATTR_DRIVER_NAME')) { - $this->log('PDO Driver Missing. Please install or enable in cPanel.'); - return FALSE; - } - - if(!class_exists('ZipArchive')){ - $this->log('ZipArchive Default Class is missing. Please install or enable in cPanel.'); - return FALSE; - } - - if (!extension_loaded('sqlite3')) { - $this->log('sqlite3 extension not loaded. Please install or enable in cPanel. Find installation guides here.'); - return FALSE; - } - - $pdo_drivers = PDO::getAvailableDrivers(); - - if(!is_array($pdo_drivers) || !in_array('sqlite', $pdo_drivers)){ - $this->log('pdo_sqlite extension not loaded. Please install or enable in cPanel. Find installation guides here.'); - } - - return TRUE; - } - - protected function is_astra_included_in_user_ini($file_path) - { - if (!file_exists($file_path)) { - return false; - } - - $contents = file_get_contents($file_path); - - if (strpos($contents, 'astra-inc') !== false) { - return true; - } - - return false; - } - - protected function update_user_ini($path, $astra_inc_path) - { - $path_user_ini = $path . '.user.ini'; - - if ($this->is_astra_included_in_user_ini($path_user_ini)) { - return true; - } - - $file_content = "auto_prepend_file=$astra_inc_path\n\r"; - - $write = false; - - - if (!file_exists($path_user_ini)) { - $write = file_put_contents($path_user_ini, $file_content); - } else { - $old_contents = file_get_contents($path_user_ini); - $file_content .= "\r\n" . $old_contents; - $write = file_put_contents($path_user_ini, $file_content); - $this->log("Updated existing .user.ini"); - } - - return $write; - } - - protected function install_default($path, $plugin_folder_path = '') - { - if (empty($plugin_folder_path)) { - $plugin_folder_path = $path; - } - - $plugin_zip_path = $this->get_astra_zip_path($path); - $username = ""; - - if (file_exists($plugin_zip_path . 'astra')) { - $this->log("Astra is already installed"); - return false; - } - - if (file_exists($plugin_folder_path) && is_writable($plugin_folder_path)) { - - if (!empty($plugin_zip_path) && file_exists($plugin_zip_path)) { - if ($this->is_valid_zip($plugin_zip_path)) { - $extracted = $this->extract_zip($plugin_zip_path, $plugin_folder_path); - - if ($extracted) { - if ($this->update_user_ini($path, $plugin_folder_path . 'astra/astra-inc.php')) { - return true; - } else { - $this->log("Unable to update the .user.ini file for $path"); - return false; - } - } else { - $this->log( "Unable to extract the ZIP."); - return false; - } - } else { - $this->log($this->response['msg']); - return false; - } - } else { - $this->log("Astra ZIP does (secure-*.zip) not exist.
Can you please check?"); - return false; - } - } else { - $this->log( "Folder does not exist or isn't writable ($plugin_folder_path)"); - return false; - } - } - - protected function get_astra_zip_path($path) - { - $matches = glob($path . 'secure-*.zip'); - - $file_name = ""; - if (!empty($matches[0])) { - $file_name = str_replace("./", "/", $matches[0]); - } - - //$this->log("ZIP file path: " . $file_name); - - return $file_name; - } - - protected function extract_zip($zip_path, $extract_to) - { - $zip = new ZipArchive; - if ($zip->open($zip_path) === TRUE) { - $extracted = $zip->extractTo($extract_to); - $zip->close(); - - return $extracted; - } - return FALSE; - } - - protected function is_valid_zip($filename) - { - - $zip = new ZipArchive; - - $res = $zip->open($filename, ZipArchive::CHECKCONS); - - if ($res !== TRUE) { - switch ($res) { - case ZipArchive::ER_NOZIP : - $ret = FALSE; - $this->response['msg'] = "Invalid ZIP - Not a zip archive"; - case ZipArchive::ER_INCONS : - $ret = FALSE; - $this->response['msg'] = "Invalid ZIP - Consistency check failed"; - case ZipArchive::ER_CRC : - $this->response['msg'] = "Invalid ZIP - Error with CRC"; - $ret = FALSE; - default : - $this->response['msg'] = "Invalid ZIP - Checksum failed"; - $ret = FALSE; - } - - if ($ret) { - $zip->close(); - } - return $ret; - } else { - return TRUE; - } - } - - function run() - { - $path = getcwd() . "/"; - $this->log("Path to be secured: " . $path); - - $should_install = isset($_GET['complete']); - - if ($should_install && $this->meets_requirements()) { - $website = $this->do_install($path); - - if ($website['installed_astra'] === true) { - $this->clean_install($path); - $this->log('Deleting Installer'); - $this->installed = true; - unlink(__FILE__); - } - } - - } -} - -$deploy = new Deploy(); -$installed = $deploy->getInstalled(); -$logs = $deploy->getLogs(); -?> - - - - - Astra Installer - - - - -
-
-
- - -
-
-
-
-
-
- -

>_

-
- -

- -
- - " - class="btn btn-lg btn-submit btn-success"/> - PHP Version: -
- -

Installation complete!

- -
-
-
- - \ No newline at end of file diff --git a/libraries/API_connect.php b/libraries/API_connect.php deleted file mode 100644 index 4e63924..0000000 --- a/libraries/API_connect.php +++ /dev/null @@ -1,292 +0,0 @@ -api_url = CZ_API_URL; - } else { - $this->api_url = $url; - } - } - - public function ping() - { - $dataArray = array(); - return $this->send_request("ping", $dataArray); - } - - public function report_update() - { - return true; - $ak = $this->get_end_point_url(FALSE); - - $ch = curl_init(); - curl_setopt($ch, CURLOPT_URL, $ak . 'ak.php'); - curl_setopt($ch, CURLOPT_POST, FALSE); - curl_setopt($ch, CURLOPT_HTTPHEADER, array('Cz-Setup: true')); - curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); - - $output = curl_exec($ch); - echo_debug('cURL Executed'); - - echo_debug('cURL Error >> ' . curl_error($ch)); - echo_debug("
$output
"); - - curl_close($ch); - echo_debug('cURLd'); - - $resp = $output; - $resp = json_decode($resp); - - if (isset($resp->code) && $resp->code == 1) { - return TRUE; - } else { - return FALSE; - } - } - - protected function get_end_point_url($api = TRUE) - { - - $current_url = $this->getHttpsPrefix(); - - $current_url .= str_replace(realpath($_SERVER["DOCUMENT_ROOT"]), $_SERVER['HTTP_HOST'], realpath(dirname(dirname(__FILE__)))); - - if ($api) { - $current_url .= '/api.php'; - } else { - $current_url .= '/'; - } - - $current_url = rtrim($current_url, '/'); - - return $current_url; - - } - - public function setRootApiUri($rootApiUri) - { - if ($rootApiUri == false) { - return false; - } - - $subFolderIfAny = str_replace($_SERVER['DOCUMENT_ROOT'], '', $rootApiUri); - - - $current_url = $this->getHttpsPrefix(); - - $current_url .= rtrim($_SERVER['HTTP_HOST'], '/') . '/' . ltrim($subFolderIfAny, '/'); - $this->rootApiUri = $current_url; - - return; - - } - - protected function getHttpsPrefix(){ - if (@$_SERVER['HTTPS'] == 'on' || @$_SERVER['SERVER_PORT'] == '443' || (isset($_SERVER['HTTP_X_FORWARDED_PROTO']) && $_SERVER['HTTP_X_FORWARDED_PROTO'] == 'https')) { - return "https://"; - } else { - return "http://"; - } - } - - protected function is_request_from_astra() - { - $user_agent = isset($_SERVER['HTTP_USER_AGENT']) ? strtolower($_SERVER['HTTP_USER_AGENT']) : "empty"; - - if (strpos($user_agent, "astra") !== false) { - return true; - } - - return false; - } - - public function setup() - { - - $res = explode(".", CZ_ASTRA_CLIENT_VERSION); - - $version['major'] = $res[0]; - $version['minor'] = $res[1]; - $version['patch'] = $res[2]; - - $client_api_url = !empty($this->rootApiUri) ? $this->rootApiUri : $this->get_end_point_url(); - - $dataArray = array( - "version" => $version, - "client_api_url" => $client_api_url, - "platform" => CZ_PLATFORM, - ); - - /* print_r($dataArray); */ - echo_debug('SETUP API Send Request'); - echo_debug(serialize($dataArray)); - - return $this->send_request("setup", $dataArray); - } - - public function custom_rule($action, $type, $ip_address = "") - { - $dataArray['rule_action'] = $action; - $dataArray['rule_type'] = $type; - $dataArray['ip_address'] = $ip_address; - return $this->send_request("custom_rule", $dataArray); - } - - /* - public function custom_rule($action, $type, $ip_address = "") { - - } - * - */ - - public function hook_has_loggedin($dataArray = array()) - { - - if ($dataArray[0]['success'] === 1) { - return false; - } - - require_once(__DIR__ . '/../Astra.php'); - $astra = new Astra(); - ASTRA::$_db->log_hit(ASTRA::$_ip); - - $dataArray[0]['blocking'] = (ASTRA::$_db->is_blocked_or_trusted(ASTRA::$_ip, false, ASTRA::$_config) == "blocked") ? 1 : 0; - - return true; - } - - public function send_request($api = "", $dataArray = array(), $platform = "php") - { - - if ($this->is_request_from_astra()) { - return false; - } - - $callback = array($this, 'hook_' . $api); - - if (is_callable($callback)) { - $hookResponse = call_user_func($callback, array($dataArray)); - if (is_array($hookResponse)) { - $dataArray = $hookResponse; - } - } - - - $dataArray['client_key'] = CZ_CLIENT_KEY; - $dataArray['api'] = $api; - - //$dataArray['site'] = $_SERVER['SERVER_NAME']; - $dataArray['site'] = $_SERVER['SERVER_NAME']; - if (!isset($dataArray['version'])) { - $dataArray['version'] = CZ_ASTRA_CLIENT_VERSION; - } - - $browser = new Browser_Astra(); - $browser_info['useragent'] = $browser->getUserAgent(); - $browser_info['browser_name'] = $browser->getBrowser(); - $browser_info['version'] = $browser->getVersion(); - $browser_info['platform'] = $browser->getPlatform(); - $browser_info['isMobile'] = $browser->isMobile(); - $browser_info['isTablet'] = $browser->isTablet(); - - $dataArray['ip'] = ASTRA::$_ip; - - if ($dataArray['ip'] == "") { - $dataArray['ip'] = "::1"; - return false; - } - - $dataArray['browser'] = $browser_info; - $dataArray['attack_url'] = htmlspecialchars($_SERVER['REQUEST_URI'], ENT_QUOTES, 'UTF-8'); - - echo_debug($this->api_url); - echo_debug($dataArray); - - $str = serialize($dataArray); - - $crypto = new Astra_crypto(); - $encrypted_data = $crypto->encrypt($str, CZ_SECRET_KEY); - - if ($platform == "wordpress") { - $post_param = array( - "encRequest" => $encrypted_data, - "access_code" => CZ_ACCESS_KEY, - ); - $response = wp_remote_post($this->api_url, array( - 'method' => 'POST', - 'timeout' => 5, - 'redirection' => 5, - 'httpversion' => '1.0', - 'blocking' => true, - 'headers' => array(), - 'body' => $post_param, - 'cookies' => array() - ) - ); - - if (is_wp_error($response) || (isset($response['body']) && is_wp_error($response['body']))) { - return true; - } - - $resp = $response['body']; - } else { - echo_debug('cURLing'); - $ch = curl_init(); - curl_setopt($ch, CURLOPT_URL, $this->api_url); - curl_setopt($ch, CURLOPT_POST, true); - curl_setopt($ch, CURLOPT_POSTFIELDS, "encRequest=" . $encrypted_data . "&access_code=" . CZ_ACCESS_KEY); - curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); - curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, 5); - curl_setopt($ch, CURLOPT_TIMEOUT, 5); //timeout in seconds - curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, false); - curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false); - - $output = curl_exec($ch); - echo_debug('cURL Executed'); - - echo_debug('cURL Error >> ' . curl_error($ch)); - echo_debug("
$output
"); - - if (curl_error($ch)) { - $error_msg = curl_error($ch); - } - - curl_close($ch); - echo_debug('cURLd'); - $resp = $output; - - } - - - $resp = json_decode($resp); - - if (isset($error_msg)) { - //echo $error_msg; - } - - //var_dump($output); - - - if (isset($resp->code) && $resp->code == 1) { - return TRUE; - } else { - return FALSE; - } - } - -} - -/* End of file api_connect.php */ -?> \ No newline at end of file diff --git a/libraries/Astra_country.php b/libraries/Astra_country.php deleted file mode 100644 index b678e2d..0000000 --- a/libraries/Astra_country.php +++ /dev/null @@ -1,45 +0,0 @@ -get_country_cf($ip_address); - - if($country_cf !== false){ - return $country_cf; - } - - - $ignore_ips = array("0.0.0.0", "0.255.255.255"); - if(!in_array($ip_address, $ignore_ips) ){ - require_once(ASTRAPATH . 'libraries/plugins/MaxMind-DB-Reader/autoload.php'); - $reader = new Reader(ASTRAPATH . 'libraries/plugins/MaxMind-DB-Reader/GeoLite2-Country.mmdb'); - - if(isset($reader->get($ip_address)['country']['iso_code'])){ - return strtoupper($reader->get($ip_address)['country']['iso_code']); - } - } - return 'US'; - } - - - protected function get_country_cf($ip_address){ - if(isset($_SERVER["HTTP_CF_IPCOUNTRY"]) && strlen($_SERVER["HTTP_CF_IPCOUNTRY"]) == 2 && is_string($_SERVER["HTTP_CF_IPCOUNTRY"])){ - return strtoupper($_SERVER["HTTP_CF_IPCOUNTRY"]); - } - - return false; - } - - } -} \ No newline at end of file diff --git a/libraries/Astra_ip.php b/libraries/Astra_ip.php deleted file mode 100644 index f047424..0000000 --- a/libraries/Astra_ip.php +++ /dev/null @@ -1,61 +0,0 @@ -validate_ip($ip) || $this->validate_ipv6($ip)) && $ip !== $serverIp) { - return $ip; - } - } - } - } - return isset($_SERVER['REMOTE_ADDR']) ? $_SERVER['REMOTE_ADDR'] : false; - } - - /** - * Ensures an ip address is both a valid IP and does not fall within - * a private network range. - */ - - function validate_ipv6($ip) - { - if (filter_var($ip, FILTER_VALIDATE_IP, FILTER_FLAG_IPV6)) { - return true; - } - - return false; - } - - function validate_ip($ip) - { - if (filter_var($ip, FILTER_VALIDATE_IP, FILTER_FLAG_IPV4 | FILTER_FLAG_NO_PRIV_RANGE | FILTER_FLAG_NO_RES_RANGE) === false) { - return false; - } - return true; - } - - - } -} \ No newline at end of file diff --git a/libraries/Astra_setup.php b/libraries/Astra_setup.php deleted file mode 100644 index c3c125c..0000000 --- a/libraries/Astra_setup.php +++ /dev/null @@ -1,150 +0,0 @@ - - * @date 2019-04-15 - */ - -class Astra_setup -{ - - private $basePath; - private $filesCreated = false; - - public function getFilesCreated() - { - return $this->filesCreated; - } - - public function createAstraFiles() - { - $folderPath = $this->getBasePath(); - - if ($folderPath == false || !file_exists($folderPath)) { - return false; - } - - $astraPath = rtrim($folderPath, DIRECTORY_SEPARATOR) . DIRECTORY_SEPARATOR . 'astra' . DIRECTORY_SEPARATOR; - - if (!file_exists($astraPath) && !is_dir($astraPath) && is_writable($folderPath)) { - mkdir($astraPath, 0755); - } - - if (file_exists($astraPath)) { - $this->createFiles($folderPath, $astraPath); - } - - - } - - public function getRootApiFilePath() - { - $folderPath = $this->getBasePath(); - - if ($folderPath == false || !file_exists($folderPath)) { - return false; - } - - $astraPath = rtrim($folderPath, DIRECTORY_SEPARATOR) . DIRECTORY_SEPARATOR . 'astra' . DIRECTORY_SEPARATOR; - return $astraPath . 'api.php'; - } - - public function getRootApiFileUri() - { - $folderPath = $this->getBasePath(); - - if ($folderPath == false || !file_exists($folderPath)) { - return false; - } - - $astraPath = rtrim($folderPath, DIRECTORY_SEPARATOR) . DIRECTORY_SEPARATOR . 'astra' . DIRECTORY_SEPARATOR; - $astraPath = str_replace('\\', '/', $astraPath); - - return $astraPath . 'api.php'; - } - - public function getRealApiFileUri(){ - - } - - public function createFiles($folderPath, $astraPath) - { - - $dir = $this->processPath(dirname(__DIR__)); - - $files = array('api.php', 'ak.php', 'gk.php'); - $relPath = $this->getRelativePluginFolderPath(); - - foreach ($files as $file) { - $content = ""; - $content = <<filesCreated = true; - } - - } - } - - public function getRelativePluginFolderPath() - { - $base = $this->getBasePath(); - $dir = $this->processPath(__DIR__); - $rel = dirname(str_replace($base, "", $dir)); - - return $rel; - } - - protected function processPath($path) - { - $isBitnami = strpos($path, "bitnami") !== false; - $isOpt = strpos($path, "/opt/") !== false; - - if ($isBitnami && !$isOpt) { - return DIRECTORY_SEPARATOR . 'opt' . DIRECTORY_SEPARATOR . ltrim($path, DIRECTORY_SEPARATOR); - } - - return $path; - } - - public function getBasePath() - { - - if (!empty($basePath)) { - return $basePath; - } - - $path = $this->processPath(__FILE__); - - $basePath = ""; - $possibleBreakWords = array('/wp-content/', '/catalog/controller/extension/', '/sites/all/modules/', '/modules/', '/app/code/', '/astra/'); - - foreach ($possibleBreakWords as $word) { - if (strpos($path, $word) !== false) { - $basePath = strstr($path, $word, true) . DIRECTORY_SEPARATOR; - break; - } - } - - if (empty($basePath)) { - $basePath = false; - } - - $this->basePath = $basePath; - - return $basePath; - } - -} \ No newline at end of file diff --git a/libraries/Bad_bots.php b/libraries/Bad_bots.php deleted file mode 100644 index 333513f..0000000 --- a/libraries/Bad_bots.php +++ /dev/null @@ -1,108 +0,0 @@ -user_agent = $ua; - $this->ip_address = $ip; - $this->search_engine = array( - 'google' => false, - 'bing' => false, - ); - } - - public function is_search_engine(){ - - return $this->is_google_bot() || $this->is_bing_bot(); - } - - public function is_bing_bot(){ - if(!strstr(strtolower($this->user_agent), "bingbot")){ - return FALSE; - } - - if(filter_var($this->ip_address, FILTER_VALIDATE_IP) === false){ - return FALSE; - } - - - $host = gethostbyaddr($this->ip_address); - - $allowed_domains = array("msn.com"); - $domain = $this->get_host($host); - - if(!in_array($domain, $allowed_domains)){ - $this->is_fake_bot = TRUE; - return FALSE; - } - - $forward_ip = gethostbyname($host); - - if($forward_ip === $this->ip_address){ - return TRUE; - } - - return FALSE; - - } - - public function is_google_bot(){ - //Mozilla/5.0 (compatible; Googlebot/2.1; +http://www.google.com/bot.html) - if(!strstr(strtolower($this->user_agent), "googlebot")){ - return FALSE; - } - - return $this->verify_google_bot(); - } - - public function is_fake_bot(){ - return $this->is_fake_bot; - } - - protected function verify_google_bot(){ - - if(filter_var($this->ip_address, FILTER_VALIDATE_IP) === false){ - return FALSE; - } - - $host = gethostbyaddr($this->ip_address); - - $allowed_domains = array("google.com", "googlebot.com", "googleusercontent.com"); - $domain = $this->get_host($host); - - if(!in_array($domain, $allowed_domains)){ - //ip-returns-other-domain - $this->is_fake_bot = TRUE; - return FALSE; - } - - $forward_ip = gethostbyname($host); - - if($forward_ip === $this->ip_address){ - return TRUE; - } - - return FALSE; - } - - protected function get_host($host_with_subdomain) { - $array = explode(".", $host_with_subdomain); - return (array_key_exists(count($array) - 2, $array) ? $array[count($array) - 2] : "").".".$array[count($array) - 1]; - } - - public function run() { - - } - } -} -?> \ No newline at end of file diff --git a/libraries/Config_file.php b/libraries/Config_file.php deleted file mode 100644 index d9c7755..0000000 --- a/libraries/Config_file.php +++ /dev/null @@ -1,18 +0,0 @@ -_autoload_config(); - } - - protected function _autoload_config() - { - $rows = ASTRA::$_db->get_config_autoload(); - foreach($rows as $row){ - $this->_config[$row['config_key']] = $row['config_value']; - } - } - - function get_config($data) - { - if(isset($this->_config[$data['key']])){ - return $this->_config[$data['key']]; - } - - $key_value = ASTRA::$_db->get_config($data['key']); - - $this->_config[$data['key']] = $key_value; - return $key_value; - } - - function add_config($data) - { - $key_value = ASTRA::$_db->add_config($data['key'],$data['value'],$data['autoload']); - - return $key_value; - } - - function add_config_value($data) - { - $key_value = ASTRA::$_db->add_config_value($data['key'],$data['value']); - - return $key_value; - } - - function delete_config($data) - { - - $key_value = ASTRA::$_db->delete_config($data['key'],$data['value']); - - return $key_value; - } - - function delete_config_value($data) - { - - $key_value = ASTRA::$_db->delete_config_value($data['key'],$data['value']); - - return $key_value; - } - - function update_config($data) - { - $key_value = ASTRA::$_db->update_config($data['key'],$data['value'],$data['autoload']); - - return $key_value; - } - - function update_country($data) - { - $key_value = ASTRA::$_db->update_country($data['key'],$data['value']); - - return $key_value; - } - } -} \ No newline at end of file diff --git a/libraries/Crypto.php b/libraries/Crypto.php deleted file mode 100644 index c56e1a5..0000000 --- a/libraries/Crypto.php +++ /dev/null @@ -1,71 +0,0 @@ -pkcs5_pad($plainText, $ivsize); - $secretKey = $this->hextobin(md5($key)); - $initVector = pack("C*", 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 0x08, 0x09, 0x0a, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f); - - $ciphertext = openssl_encrypt( - $plainPad, - 'AES-128-CBC', - $secretKey, - OPENSSL_RAW_DATA | OPENSSL_ZERO_PADDING, - $initVector - ); - - return bin2hex($ciphertext); - - } - - function decrypt($encryptedText, $key) - { - $secretKey = $this->hextobin(md5($key)); - $initVector = pack("C*", 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 0x08, 0x09, 0x0a, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f); - $encryptedText = $this->hextobin($encryptedText); - - $decryptedText = openssl_decrypt( - $encryptedText, - 'AES-128-CBC', - $secretKey, - OPENSSL_RAW_DATA | OPENSSL_ZERO_PADDING, - $initVector - ); - - - $decryptedText = rtrim($decryptedText, "\0"); - return $decryptedText; - } - - //*********** Padding Function ********************* - - protected function pkcs5_pad($plainText, $blockSize) - { - $pad = $blockSize - (strlen($plainText) % $blockSize); - return $plainText . str_repeat(chr($pad), $pad); - } - -//********** Hexadecimal to Binary function for php 4.0 version ******** - - protected function hextobin($hexString) - { - $length = strlen($hexString); - $binString = ""; - $count = 0; - while ($count < $length) { - $subString = substr($hexString, $count, 2); - $packedString = pack("H*", $subString); - if ($count == 0) { - $binString = $packedString; - } else { - $binString .= $packedString; - } - - $count += 2; - } - return $binString; - } -} \ No newline at end of file diff --git a/libraries/PHPIDS.php b/libraries/PHPIDS.php deleted file mode 100644 index a7f05fd..0000000 --- a/libraries/PHPIDS.php +++ /dev/null @@ -1,276 +0,0 @@ -run(); - } - - - protected function encode_items(&$item, $key) - { - $orig = $item; - - //$item = iconv("UTF-8", "ASCII//IGNORE", $item); - $item = iconv("UTF-8", "ISO-8859-1//IGNORE", $item); - - - if ($orig !== $item) { - $item = preg_replace('/[^a-zA-Z0-9]/', '', $item); - $item = str_replace("--", "", $item); - } - } - - protected function get_scan_array() - { - $keys_to_scan = defined('CZ_SCAN_ARRAYS') ? explode(',', CZ_SCAN_ARRAYS) : array('GET', 'POST'); - - $request = array(); - - if (in_array('GET', $keys_to_scan)) { - $request['GET'] = $_GET; - } - - if (in_array('POST', $keys_to_scan)) { - $request['POST'] = $_POST; - } - - if (in_array('REQUEST', $keys_to_scan)) { - $request['REQUEST'] = $_REQUEST; - } - - if (in_array('COOKIE', $keys_to_scan)) { - $request['COOKIE'] = $_COOKIE; - } - - return $request; - } - - protected function is_monitoring_mode($keys_to_scan, $param) - { - $which_key = strtok($param, '.'); - return !in_array($which_key, $keys_to_scan); - } - - public function run() - { - if (file_exists(dirname(__FILE__) . '/plugins/IDS/Init.php')) { - require_once(dirname(__FILE__) . '/plugins/IDS/Init.php'); - require_once(dirname(__FILE__) . '/plugins/IDS/Monitor.php'); - } else { - return FALSE; - } - - try { - - $request = $this->get_scan_array(); - -// $request = array( -// 'GET' => $_GET, -// 'POST' => $_POST, -// ); - - if (defined('CZ_ALLOW_FOREIGN_CHARS') && CZ_ALLOW_FOREIGN_CHARS == TRUE) { - array_walk_recursive($request, array($this, 'encode_items')); - } - - $tmpFolderPath = ASTRAPATH . 'libraries/plugins/IDS/Config/Config.ini.php'; - - if (!is_writable($tmpFolderPath)) { - //chmod($tmpFolderPath, 0775); - } - - $init = IDS_Init::init(ASTRAPATH . 'libraries/plugins/IDS/Config/Config.ini.php'); - $init->config['General']['base_path'] = ASTRAPATH . 'libraries/plugins/IDS/'; - $init->config['General']['use_base_path'] = true; - $init->config['Caching']['caching'] = 'none'; - - $exceptions = $this->get_exceptions($request); - - $ids = new IDS_Monitor($request, $init); - $ids->setExceptions($exceptions['exceptions']); - $ids->setHtml($exceptions['html']); - $ids->setJson($exceptions['json']); - echo_debug('IDS Initialized'); - $result = $ids->run(); - echo_debug('IDS has run'); - - if (!$result->isEmpty()) { - - if ($result->getImpact() < 10) { - return true; - } - - echo_debug('IDS found issues. Will do +1 now.'); - //Increment Hack Attempt Count - - $str_tags = ""; - $dataArray = array(); - - foreach ($result->getTags() as $tag) - $str_tags .= '|' . $tag; - - $iterator = $result->getIterator(); - - $param = ""; - $attack_param = null; - - $is_monitoring = true; - -// $keys_to_scan = defined('CZ_SCAN_ARRAYS') ? explode(',', CZ_SCAN_ARRAYS) : array('GET', 'POST'); - - foreach ($iterator as $threat) { - - $param = urlencode($threat->getName()); - - /*if (!$this->is_monitoring_mode($keys_to_scan, $param)) { - $is_monitoring = false; - }*/ - - if (CZ_ASTRA_MODE == 'monitor') { - $is_monitoring = TRUE; - } else { - $is_monitoring = FALSE; - } - - $attack_param[] = urlencode($threat->getName()); - $param .= "p=" . urlencode($threat->getName()) . "|v=" . urlencode($threat->getValue()); - $param .= "|id="; - - foreach ($threat->getFilters() as $filter) { - $param .= $filter->getId() . ","; - } - $param = rtrim($param, ',') . "#"; - } - - if ($is_monitoring) { - $dataArray['blocking'] = 3; - } else { - ASTRA::$_db->log_hit(ASTRA::$_ip); - $dataArray['blocking'] = (ASTRA::$_db->is_blocked_or_trusted(ASTRA::$_ip, false, ASTRA::$_config) == "blocked") ? 2 : 1; - } - - $param = rtrim($param, '#'); - $dataArray['i'] = $result->getImpact(); - $dataArray["tags"] = $str_tags; - $dataArray['param'] = $param; - - require_once(ASTRAPATH . 'libraries/API_connect.php'); - $connect = new API_connect(); - $connect->send_request("ids", $dataArray); - - if (!$is_monitoring) { - ASTRA::show_block_page($attack_param); - } - - } else { - echo_debug('IDS says all is okay'); - } - } catch (Exception $e) { - printf('An error occured: %s', $e->getMessage()); - } - } - - protected function get_exceptions($request = array()) - { - - $data = array('exceptions' => array(), 'json' => array(), 'html' => array()); - $db_params = ASTRA::$_db->get_custom_params(); - - $default_exceptions = array( - 'REQUEST._pk_ref_3_913b', - 'COOKIE._pk_ref_3_913b', - 'REQUEST._lf', - 'REQUEST.comment', - 'POST.comment', - 'REQUEST.permalink_structure', - 'POST.permalink_structure', - 'REQUEST.selection', - 'POST.selection', - 'REQUEST.content', - 'POST.content', - 'REQUEST.__utmz', - 'COOKIE.__utmz', - 'REQUEST.s_pers', - 'COOKIE.s_pers', - 'REQUEST.user_pass', - 'POST.user_pass', - 'REQUEST.pass1', - 'POST.pass1', - 'REQUEST.pass2', - 'POST.pass2', - 'REQUEST.password', - 'POST.password', - 'GET.gclid', - 'GET.access_token', - 'POST.customize', - 'POST.post_data', - 'POST.mail.body', - 'POST.mail.subject', - 'POST.mail.sender', - 'POST.form', - 'POST.customized', - 'POST.partials', - 'GET.mc_id', - 'POST.shortcode', - 'POST.mail_2.body', - 'POST.mail_2.subject', - 'POST.enquiry', - 'POST.pwd', - 'POST.g-recaptcha-response', - 'POST.g-recaptcha-res', - '/POST.state_([0-999]*)$/', - '/POST.input_([0-999]*)$/', - 'POST.form_token', - 'GET.fbclid', - 'POST.itsec_two_factor_on_board_data', - 'GET.mainwpsignature', - 'POST.wp_statistics_hit', - 'POST.customize_messenger_channel', - 'POST.product.media_gallery.values', - 'GET.utm_source', - 'GET.utm_medium', - 'GET.utm_campaign', - 'POST.fl_builder_data.data.settings.content', - '/POST.fl_builder_data.node_preview.items.([0-999]*)$/', - 'POST.fl_builder_data.settings.text', - '/POST.fl_builder_data.*/', - - ); - - - $data['exceptions'] = array_merge($default_exceptions, $db_params['exception']); - $data['html'] = $db_params['html']; - - //if (!defined('CZ_JSON_EXCLUDE_ALL') || CZ_JSON_EXCLUDE_ALL === FALSE) { - // $data['json'] = $db_params['json']; - //} else { - $data['json'] = array(); - - foreach ($request as $array => $keys) { - foreach ($keys as $k => $par) { - $data['json'][] = "$array.$k"; - } - } - - //} - - return $data; - } - -} diff --git a/libraries/SQLite_db.php b/libraries/SQLite_db.php deleted file mode 100644 index eba806a..0000000 --- a/libraries/SQLite_db.php +++ /dev/null @@ -1,1289 +0,0 @@ -_blocking_threshold = $cz_lvl[CZ_CONFIG_LVL]['ip_blocking']['count']; - $this->_blocking_duration = $cz_lvl[CZ_CONFIG_LVL]['ip_blocking']['duration']; - }else{ - $this->_blocking_threshold = 5; - $this->_blocking_duration = 200; - } - - $this->error_logging = CZ_DB_PATH . 'db/logging.err'; - $this->_open_connection(); - } - - private function _open_connection() - { - if ($this->_is_open) { - return; - } - - $this->_db_name = CZ_DB_PATH . 'db/' . CZ_DATABASE_NAME . '.db'; - - echo_debug($this->_db_name); - if (!file_exists($this->_db_name)) { - $create_tables = TRUE; - echo_debug('Creating SQL Tables'); - } else { - $create_tables = FALSE; - echo_debug('Tables have to be created'); - } - - try { - $this->_db = new PDO('sqlite:' . $this->_db_name); - echo_debug('PDO Init'); - if ($create_tables) { - $this->_create_tables(); - } - $this->_is_open = true; - return; - } catch (PDOException $e) { - echo_debug('Unable to init DB'); - file_put_contents($this->error_logging, "cannot initialize database\n", LOCK_EX | FILE_APPEND); - $this->_is_open = false; - $this->_db = null; - return; - } - } - - /** - * - * @return bool - */ - private function _create_tables() - { - try { - $query = array(); - - $query[] = "CREATE TABLE IF NOT EXISTS ip_logs ( - id INTEGER PRIMARY KEY, - ip_address TEXT UNIQUE, - request_count INTEGER DEFAULT 0, - request_count_since_blocking INTEGER DEFAULT 0, - blocked_by_ids INTEGER DEFAULT 0, - blocked_by_user INTEGER DEFAULT 0, - trusted_by_user INTEGER DEFAULT 0, - is_range INTEGER DEFAULT 0, - timestamp INTEGER - );"; - - $query[] = "CREATE TABLE IF NOT EXISTS exception_params ( - id INTEGER PRIMARY KEY, - param TEXT UNIQUE, - type TEXT, - timestamp INTEGER - );"; - - $query[] = "CREATE TABLE IF NOT EXISTS exception_url ( - id INTEGER PRIMARY KEY, - url TEXT UNIQUE, - timestamp INTEGER - );"; - - $query[] = "CREATE TABLE IF NOT EXISTS exception_ip_ranges ( - id INTEGER PRIMARY KEY, - ip_range TEXT UNIQUE, - trusted_by_user INTEGER DEFAULT 0, - timestamp INTEGER - );"; - - $query[] = "CREATE TABLE IF NOT EXISTS bad_bots ( - id INTEGER PRIMARY KEY, - bot TEXT UNIQUE, - from_honeypot INTEGER DEFAULT 0, - timestamp INTEGER - );"; - - $query[] = "CREATE TABLE IF NOT EXISTS token_bucket ( - id INTEGER PRIMARY KEY, - ip_address TEXT UNIQUE, - last_api_request TEXT, - throttle_minute TEXT, - reported INTEGER DEFAULT 0 - );"; - - $query[] = "CREATE TABLE config_options ( - id INTEGER PRIMARY KEY, - config_key TEXT UNIQUE NOT NULL, - config_value TEXT NOT NULL, - autoload INTEGER DEFAULT 0 - );"; - - foreach ($query as $q) - $this->_db->exec($q); - - echo_debug('.htaccess file created'); - return true; - } catch (PDOException $e) { - file_put_contents($this->error_logging, "cannot create tables in db", LOCK_EX | FILE_APPEND); - return false; - } - } - - private function _close_connection() - { - $this->_db = null; - $this->_is_open = false; - echo_debug('Closing connection'); - } - - /** - * @return null - */ - function insert_into_ip_logs($data) - { - if (isset($data)) { - if (!$this->_is_open) { - $this->_open_connection(); - } - - if (isset($data['trusted_by_user'])) { - $query = "INSERT INTO ip_logs (ip_address, request_count, request_count_since_blocking, blocked_by_ids, - blocked_by_user, trusted_by_user, timestamp,is_range) VALUES (:ip_address, :request_count, :request_count_since_blocking, - :blocked_by_ids, :blocked_by_user, :trusted_by_user, strftime('%s', 'now'), :is_range);"; - } else { - $query = "INSERT INTO ip_logs (ip_address, request_count, request_count_since_blocking, blocked_by_ids, - blocked_by_user, timestamp,is_range) VALUES (:ip_address, :request_count, :request_count_since_blocking, - :blocked_by_ids, :blocked_by_user, strftime('%s', 'now'), :is_range);"; - } - //$this->_db->setAttribute( PDO::ATTR_ERRMODE, PDO::ERRMODE_WARNING ); - - $statement = $this->_db->prepare($query); - if (!$statement->execute($data)) { - //var_dump($this->_db->errorInfo()); - file_put_contents($this->error_logging, "\n\ncannot execute query: {$query} {$this->_db->errorInfo()}", LOCK_EX | FILE_APPEND); - return false; - } - - $this->_close_connection(); - return true; - } - } - - function get_ip_log($ip_address) - { - if (isset($ip_address)) { - if (!$this->_is_open) { - $this->_open_connection(); - } - $query = "SELECT * FROM ip_logs WHERE ip_address = :ip_address LIMIT 1;"; - $statement = $this->_db->prepare($query); - $statement->execute(array('ip_address' => $ip_address)); - $statement->setFetchMode(PDO::FETCH_ASSOC); - $result_row = $statement->fetch(); - return $result_row; - } - } - - function unblock_ip($ip_address, $by_user = false, $by_ids = false, $trusted = false) - { - if (isset($ip_address)) { - if (!$this->_is_open) { - $this->_open_connection(); - } - - if ($by_user) { - - if ($trusted) { - $update = ',trusted_by_user = 0'; - } else { - $update = ",blocked_by_user = 0"; - } - } - if ($by_ids) { - $update = ",blocked_by_ids = 0"; - } - - $query = "UPDATE ip_logs SET timestamp = 0 {$update}, request_count = 0 WHERE ip_address = '{$ip_address}';"; - - if (!$this->_db->exec($query)) { - $row = $this->get_ip_log($ip_address); - if (empty($row)) { - return true; - } - - file_put_contents($this->error_logging, "unblock_ip - cannot execute query: {$query}", LOCK_EX | FILE_APPEND); - return false; - } - - $this->_close_connection(); - return TRUE; - } - - return TRUE; - } - - - function is_blocked_or_trusted($ip_address, $is_bot = FALSE, $_config) - { - $this->_config = $_config; - - require_once(ASTRAPATH . 'libraries/plugins/ip_address/ip-lib.php'); - if (isset($ip_address)) { - if (!$this->_is_open) { - $this->_open_connection(); - } - - $query = "SELECT * FROM ip_logs WHERE ip_address = :ip_address;"; - $statement = $this->_db->prepare($query); - - if(!is_object($statement)){ - return ""; - } - - $statement->execute(array('ip_address' => $ip_address)); - $statement->setFetchMode(PDO::FETCH_ASSOC); - $result = $statement->fetch(); // this returns false in case of no rows matched. - - if(empty($result) || ($result['blocked_by_ids'] == '0' && $result['blocked_by_user'] == '0' && $result['trusted_by_user'] == '0')) - { - $rangeQuery = "select * from ip_logs where is_range = 1"; - $rangeStatement = $this->_db->prepare($rangeQuery); - $rangeStatement->execute(); - $rangeStatement->setFetchMode(PDO::FETCH_ASSOC); - $rangeResult = $rangeStatement->fetchAll(); - - if(!empty($rangeResult)) - { - return $this->range_blocking($ip_address, $is_bot,$rangeResult); - } - - return $this->country_blocking($ip_address); - } - else - { - return $this->ip_blocking($ip_address, $is_bot,$result); - } - } - } - - function ip_blocking($ip_address, $is_bot,$result) - { - if ($result['trusted_by_user'] == 1) - return "trusted"; - - if ($result['blocked_by_user'] == 1) { - return "blocked"; - } - - //$this->_blocking_duration = 0.1; - - if ($is_bot) { - $duration = 200; - } else { - $duration = $this->_blocking_duration; - } - - if ($result['blocked_by_ids'] == 1) { - if (time() - $result['timestamp'] >= $duration * 60) { - $this->unblock_ip($ip_address, false, true); - return "unblocked"; - } - return "blocked"; - } - - // Country blocking checks - $this->country_blocking($ip_address); - } - - protected function country_blocking($ip_address) - { - $blocked_countries = json_decode($this->_config->get_config(array('key' => 'country_blocked'))); - $trusted_countries = json_decode($this->_config->get_config(array('key' => 'country_trusted'))); - - if(!empty($blocked_countries) || !empty($trusted_countries)) - { - require_once(ASTRAPATH . 'libraries/Astra_country.php'); - $country_library = new Astra_country(); - - $visitor_country = $country_library->get_country($ip_address); - - if(is_array($blocked_countries)) - { - if(in_array($visitor_country,$blocked_countries)) - return "blocked"; - } - else - { - if($visitor_country == $blocked_countries) - return "blocked"; - } - - if(is_array($trusted_countries)) - { - if(in_array($visitor_country,$trusted_countries)) - return "trusted"; - } - else - { - if($visitor_country == $trusted_countries) - return "trusted"; - } - } - } - - function range_blocking($ip_address, $is_bot, $result) - { - $_ip = \IPLib\Factory::addressFromString($ip_address); - $contained = null; - foreach($result as $data) - { - $_range = \IPLib\Factory::rangeFromString($data['ip_address']); - $contained = $_ip->matches($_range); // returns false if the range is ipv6 and ip is of ipv4 and vice-versa - if($contained) - { - return $this->ip_blocking($ip_address, $is_bot,$data); - } - } - } - - function is_bad_bot($user_agent) - { - if (isset($user_agent)) { - if (!$this->_is_open) { - $this->_open_connection(); - } - - try { - $query = "SELECT * FROM bad_bots WHERE '{$user_agent}' LIKE '%' || bot || '%';"; - - $statement = $this->_db->prepare($query); - - if(!is_object($statement)){ - return false; - } - - if ($statement->execute()) { - $statement->setFetchMode(PDO::FETCH_ASSOC); - $result = $statement->fetch(); - //print_r($result); - - if (!empty($result)) { - return TRUE; - } - } - return FALSE; - } catch (PDOException $e) { - return FALSE; - } - } - } - - protected function truncate_table($table_name) - { - try { - - $this->_db->beginTransaction(); - - $query = array(); - $query[] = "DELETE from {$table_name};"; - $query[] = "VACUUM;"; - - foreach ($query as $q) { - $stmt = $this->_db->prepare($q); - $stmt->execute(); - } - - $this->_db->commit(); - - return TRUE; - } catch (PDOException $e) { - return FALSE; - } - } - - function update_bad_bots($bots) - { - if (isset($bots)) { - echo_debug('Bots are set'); - if (!$this->_is_open) { - $this->_open_connection(); - } - - try { - - if ($this->truncate_table('bad_bots')) { - - $this->_db->beginTransaction(); - $query = $this->_db->prepare("INSERT INTO bad_bots (bot, timestamp) VALUES (?, strftime('%s', 'now'))"); - foreach ($bots as $bot) { - $query->bindParam(1, $bot); - $query->execute(); - } - $this->_db->commit(); - echo_debug('BOTS Updated'); - return TRUE; - } else { - echo_debug('Unable to truncate BOTS Table'); - return FALSE; - } - } catch (PDOException $e) { - echo_debug('PDO Error while updating BOTS'); - return FALSE; - } - } else { - echo_debug('Bots not set'); - } - } - - function update_custom_params($params) - { - if (isset($params)) { - if (!$this->_is_open) { - $this->_open_connection(); - } - - if (empty($params)) { - return TRUE; - } - try { - - if ($this->truncate_table('exception_params')) { - - $this->_db->beginTransaction(); - $query = $this->_db->prepare("INSERT INTO exception_params (param, type, timestamp) VALUES (?, ?, strftime('%s', 'now'))"); - foreach ($params as $p) { - $query->bindParam(1, $p[1]); - $query->bindParam(2, $p[0]); - $query->execute(); - } - $this->_db->commit(); - - return TRUE; - } else { - return FALSE; - } - } catch (PDOException $e) { - return FALSE; - } - } else { - return FALSE; - } - } - - function update_custom_ip($ips) - { - if (isset($ips)) { - if (!$this->_is_open) { - $this->_open_connection(); - } - try { - - if (!empty($ips)) { - //$this->_db->beginTransaction(); - foreach ($ips as $ip) { - $type_bool = ($ip[0] == "trusted") ? TRUE : FALSE; - $this->update_ip_logs($ip[1], TRUE, $type_bool); - } - //$this->_db->commit(); - return TRUE; - } else { - return TRUE; - } - } catch (PDOException $e) { - return FALSE; - } - } - } - - function update_ip_logs($ip_address, $user = false, $trusted = FALSE, $is_bot = FALSE) - { - require_once(ASTRAPATH . 'libraries/plugins/ip_address/ip-lib.php'); - if (isset($ip_address)) { - if (!$this->_is_open) { - $this->_open_connection(); - } - - $data = array('ip_address' => $ip_address); - - if ($is_bot) { - $threshold = $cz_lvl[CZ_CONFIG_LVL]['bot_blocking']['count']; - } else { - $threshold = $this->_blocking_threshold; - } - - $field = "blocked_by_ids"; - $conditions = "AND request_count >={$threshold}"; - $_range = $this->is_valid_range($ip_address); - - if ($user) { - $row = $this->get_ip_log($ip_address); - if (empty($row)) { - $data = array( - 'ip_address' => $ip_address, - 'request_count' => 0, - 'request_count_since_blocking' => 0, - 'blocked_by_ids' => 0, - 'blocked_by_user' => ($trusted) ? 0 : 1, - 'trusted_by_user' => (int)$trusted, - 'is_range' => ($_range == false)? 0:1 - ); - return $this->insert_into_ip_logs($data); - } - - if (!$trusted) { - $field = "trusted_by_user=0, blocked_by_user"; - $conditions = ""; - } else { - $field = "blocked_by_user=0, trusted_by_user"; - $conditions = ""; - } - } - - $query = "UPDATE ip_logs SET {$field} = 1, timestamp = strftime('%s', 'now'), request_count_since_blocking=request_count_since_blocking+1 WHERE ip_address = :ip_address {$conditions};"; - - - $statement = $this->_db->prepare($query); - - if ($statement->execute($data)) { - $this->_close_connection(); - return TRUE; - } else { - file_put_contents($this->error_logging, "cannot execute query: {$query}", LOCK_EX | FILE_APPEND); - return FALSE; - } - } - } - - function is_valid_range($ip_address) - { - require_once(ASTRAPATH . 'libraries/plugins/ip_address/ip-lib.php'); - - $_range = \IPLib\Factory::rangeFromString($ip_address); - - if(!is_object($_range)){ - return false; - } - - if((string)$_range->getStartAddress() === (string)$_range->getEndAddress()) - $_range = false; - else - $_range = true; - - return $_range; - } - - function log_hit($ip_address, $blocked = false) - { - if (isset($ip_address)) { - $_range = $this->is_valid_range($ip_address); - $row = $this->get_ip_log($ip_address); - if (empty($row)) { - $data = array( - 'ip_address' => $ip_address, - 'request_count' => 0, - 'request_count_since_blocking' => 0, - 'blocked_by_ids' => 0, - 'blocked_by_user' => 0, - 'is_range' => ($_range == false)? 0:1 - ); - $this->insert_into_ip_logs($data); - } - - if (!$this->_is_open) { - $this->_open_connection(); - } - - if ($blocked) { - $field = "request_count_since_blocking"; - } else { - $field = "request_count"; - } - - $query = "UPDATE ip_logs SET {$field} = {$field} + 1 WHERE ip_address = '{$ip_address}'"; - $statement = $this->_db->prepare($query); - - if ($statement->execute()) { - $this->update_ip_logs($ip_address); - $this->_close_connection(); - return true; - } else { - file_put_contents($this->error_logging, "cannot execute update query: {$query}", LOCK_EX | FILE_APPEND); - return false; - } - } - } - - function insert_into_table($table_name, $data, $timestamp = TRUE) - { - if (isset($data)) { - if (!$this->_is_open) { - $this->_open_connection(); - } - - - try { - $columns = ""; - $values = ""; - foreach ($data as $key => $val) { - $columns .= $key . ', '; - $values .= ':' . $key . ', '; - } - - if ($timestamp) { - $query = "INSERT INTO {$table_name} ({$columns}timestamp) VALUES ({$values}strftime('%s', 'now'));"; - } else { - $columns = rtrim($columns, ', '); - $values = rtrim($values, ', '); - $query = "INSERT INTO {$table_name} ({$columns}) VALUES ({$values});"; - } - - echo_debug($query); - - //echo $query; - - $statement = $this->_db->prepare($query); - - $statement->execute($data); - } catch (PDOException $e) { - if ($e->errorInfo[1] == 1062) { - return TRUE; - } - - file_put_contents($this->error_logging, "cannot execute query: {$query}", LOCK_EX | FILE_APPEND); - return false; - } - $this->_close_connection(); - return true; - } - } - - function delete_from_table($table_name, $data) - { - if (!empty($data)) { - if (!$this->_is_open) { - $this->_open_connection(); - } - - - try { - $where = ""; - foreach ($data as $key => $val) { - $where .= "$key='$val' AND "; - } - - $where = rtrim($where, ' AND '); - echo_debug($where); - - $query = "DELETE FROM {$table_name} WHERE {$where};"; - - echo_debug($query); - - $statement = $this->_db->prepare($query); - $res = $statement->execute(array()); - echo_debug('RES=' . $res . ';'); - if ($res) { - return true; - } else { - return false; - } - } catch (PDOException $e) { - if ($e->errorInfo[1] == 1062) { - return TRUE; - } - - file_put_contents($this->error_logging, "cannot execute query: {$query}", LOCK_EX | FILE_APPEND); - return false; - } - $this->_close_connection(); - return true; - } - } - - function edit_ip_exception($action, $type, $ip) - { -//update_ip_logs($ip_address, $user = false, $trusted = FALSE) { - - $type_bool = ($type == "trusted") ? TRUE : FALSE; - - if ($action == "add") { - return $this->update_ip_logs($ip, TRUE, $type_bool); -//function update_ip_logs($ip_address, $user = false, $trusted = FALSE) { - } elseif ($action == "delete") { - return $this->unblock_ip($ip, TRUE, FALSE, $type_bool); - } else { - return FALSE; - } - } - - function edit_param_exception($action, $type, $val) - { - //$type_bool = ($type == "trusted") ? TRUE : FALSE; - - if ($action == "add") { - $data = array( - 'type' => $type, - 'param' => $val, - ); - - return $this->insert_into_table('exception_params', $data); - } elseif ($action == "delete") { - echo_debug(json_encode($this->get_custom_params())); - $data = array( - 'type' => $type, - 'param' => $val, - ); - return $this->delete_from_table('exception_params', $data); - } else { - return FALSE; - } - } - - function get_api_request($ip_address) - { - if (isset($ip_address)) { - if (!$this->_is_open) { - $this->_open_connection(); - } - - $query = "SELECT * FROM token_bucket WHERE ip_address = :ip_address LIMIT 1;"; - $statement = $this->_db->prepare($query); - $statement->execute(array('ip_address' => $ip_address)); - $statement->setFetchMode(PDO::FETCH_ASSOC); - $result_row = $statement->fetch(); - - if (empty($result_row)) { - $ret = array( - 'last_api_request' => time(), - 'throttle_minute' => 0, - 'ip_address' => $ip_address, - 'reported' => 0 - ); - - $this->insert_into_table('token_bucket', $ret, FALSE); - - return $ret; - } else { - return $result_row; - } - } - return FALSE; - } - - function save_api_request($ip_address, $last_api_request, $throttle_minute, $reported) - { - if (isset($ip_address) && isset($last_api_request) && isset($throttle_minute) && isset($reported)) { - if (!$this->_is_open) { - $this->_open_connection(); - } - - $query = "UPDATE token_bucket SET last_api_request = :last_api_request, throttle_minute=:throttle_minute, reported=:reported WHERE ip_address = :ip_address;"; - - $data = array( - 'ip_address' => $ip_address, - 'last_api_request' => $last_api_request, - 'throttle_minute' => $throttle_minute, - 'reported' => $reported, - ); - - $statement = $this->_db->prepare($query); - - if (!$statement->execute($data)) { - file_put_contents($this->error_logging, "Save_api_request - cannot execute query: {$query}", LOCK_EX | FILE_APPEND); - return false; - } - $this->_close_connection(); - return TRUE; - } - } - - function block_bot($ip_address) - { - if (isset($ip_address)) { - return $this->update_ip_logs($ip_address, FALSE, FALSE, TRUE); - } - return FALSE; - } - - function get_exception_urls() - { - if (!$this->_is_open) { - $this->_open_connection(); - } - - $query = "SELECT * FROM exception_url;"; - - $statement = $this->_db->prepare($query); - $statement->execute(); - $statement->setFetchMode(PDO::FETCH_ASSOC); - - $result_rows = $statement->fetchAll(); - - $ret = array(); - - foreach ($result_rows as $row) { - $ret[] = $row['url']; - } - - return $ret; - } - - function get_custom_params() - { - if (!$this->_is_open) { - $this->_open_connection(); - } - - $query = "SELECT type, param FROM exception_params;"; - - $statement = $this->_db->prepare($query); - $statement->execute(); - $statement->setFetchMode(PDO::FETCH_ASSOC); - - $result_rows = $statement->fetchAll(); - - $ret = array( - 'html' => array(), - 'json' => array(), - 'exception' => array(), - 'url' => array(), - ); - - foreach ($result_rows as $row) { - $ret[$row['type']][] = $row['param']; - } - - return $ret; - } - - function get_config($key = '') - { - if (!$this->_is_open) { - $this->_open_connection(); - } - - if(empty($key)) - { - $query = "SELECT * FROM config_options"; - } - else - { - $query = "SELECT config_value FROM config_options where config_key = :config_key"; - $data = array('config_key' => $key); - } - - $statement = $this->_db->prepare($query); - $statement->setFetchMode(PDO::FETCH_ASSOC); - - if(empty($key)) - { - $statement->execute(); - $result_rows = $statement->fetchAll(); - } - else - { - $statement->execute($data); - $result_rows = $statement->fetch(); - } - - if($result_rows == false) - return false; - - return $result_rows['config_value']; - } - - function get_config_autoload() - { - if (!$this->_is_open) { - $this->_open_connection(); - } - - $query = "SELECT * FROM config_options WHERE autoload = 1"; - - $statement = $this->_db->prepare($query); - - if(!is_object($statement)){ - return array(); - } - - $statement->setFetchMode(PDO::FETCH_ASSOC); - - $statement->execute(); - $result_rows = $statement->fetchAll(); - - if($result_rows == false) - return array(); - - return $result_rows; - } - - function add_config($key,$value,$autoload) - { - if (!$this->_is_open) { - $this->_open_connection(); - } - $key_data = null; - $temp_data = null; - - $_is_key_exist = $this->get_config($key); - - if($_is_key_exist !== false) - { - return $this->add_config_value($key,$value); - } - elseif($_is_key_exist == false) - { - $query = "INSERT INTO config_options (config_key, config_value, autoload) VALUES (:config_key, :config_value, :autoload);"; - $data = array( - "config_key" => $key, - "config_value" => json_encode($value), - "autoload" => $autoload - ); - $statement = $this->_db->prepare($query); - $exe_query = $statement->execute($data); - if (!$exe_query) { - file_put_contents($this->error_logging, "\n\ncannot execute query: {$query} {$this->_db->errorInfo()}", LOCK_EX | FILE_APPEND); - return false; - } - $this->_close_connection(); - return true; - } - } - - function is_value_exist($key,$value) - { - if (!$this->_is_open) { - $this->_open_connection(); - } - - $query = "SELECT config_value FROM config_options where config_key = :config_key"; - $data = array( - 'config_key' => $key - ); - $statement = $this->_db->prepare($query); - $statement->setFetchMode(PDO::FETCH_ASSOC); - $statement->execute($data); - $result_rows = $statement->fetch(); - - // $this->_db->setAttribute( PDO::ATTR_ERRMODE, PDO::ERRMODE_WARNING ); - // var_dump($this->_db->errorInfo()); - - if($result_rows == false) - return false; - else - { - $config_value = json_decode($result_rows['config_value']); - if(is_array($config_value)) - { - foreach($config_value as $item) - { - if($value == $item) - { - return true; - } - } - return false; - } - else - { - if($value == $config_value) - return true; - else - return false; - } - } - } - - function add_config_value($key,$value) - { - $key_value_array = null; - $temp_data = null; - $update_data = null; - - if($this->is_value_exist($key,$value)) - return true; - else - $key_data = $this->get_config($key); - - $decode_data = json_decode($key_data); - - if(empty($decode_data)) - { - $query = "Update config_options set config_value = :config_value where config_key = :config_key"; - $update_data = array( - "config_key" => $key, - "config_value" => json_encode($value) - ); - } - else - { - $key_value_array = json_decode($key_data); - - if(is_array($value)) - { - if(is_array($key_value_array)) - { - foreach($value as $item) - { - if(!in_array($item,$key_value_array)) - $key_value_array[] = $item; - } - } - else - { - $temp_data[] = $key_value_array; - foreach($value as $item) - { - $temp_data[] = $item; - } - } - unset($key_value_array); - $key_value_array = $temp_data; - } - else - { - if(is_array($key_value_array)) - { - $key_value_array[] = $value; - } - else - { - $temp_data[] = $key_value_array; - $temp_data[] = $value; - unset($key_value_array); - $key_value_array = $temp_data; - } - } - - $query = "Update config_options set config_value = :config_value where config_key = :config_key"; - $update_data = array( - "config_key" => $key, - "config_value" => json_encode($key_value_array) - ); - } - - $statement = $this->_db->prepare($query); - $exe_query = $statement->execute($update_data); - if (!$exe_query) { - file_put_contents($this->error_logging, "\n\ncannot execute query: {$query} {$this->_db->errorInfo()}", LOCK_EX | FILE_APPEND); - return false; - } - $this->_close_connection(); - return true; - - } - - function delete_config($key,$value) - { - if (!$this->_is_open) { - $this->_open_connection(); - } - - $key_data = $this->get_config($key); - if($key_data == false) - { - return false; - } - elseif(empty($value)) - { - $query = "DELETE from config_options where config_key = :config_key"; - $data = array( - "config_key" => $key - ); - - $statement = $this->_db->prepare($query); - $exe_query = $statement->execute($data); - if (!$exe_query) { - file_put_contents($this->error_logging, "\n\ncannot execute query: {$query} {$this->_db->errorInfo()}", LOCK_EX | FILE_APPEND); - return false; - } - } - else - { - $this->delete_config_value($key,$value); - } - $this->_close_connection(); - return true; - } - - function delete_config_value($key,$value) - { - $query = "SELECT config_value FROM config_options where config_key = :config_key"; - $data = array('config_key' => $key); - - $statement = $this->_db->prepare($query); - $exe_query_select = $statement->execute($data); - $result_rows = $statement->fetch(); - - $config_value = json_decode($result_rows['config_value'],true); - if(is_array($config_value)) - { - $delete_key = array_search($value,$config_value); - unset($config_value[$delete_key]); - $data = array( - "config_key" => $key, - "config_value" => json_encode(array_values($config_value)) - ); - } - else - { - $config_value = ""; - $data = array( - "config_key" => $key, - "config_value" => json_encode($config_value) - ); - } - - if(!$exe_query_select) - { - file_put_contents($this->error_logging, "\n\ncannot execute query: {$query} {$this->_db->errorInfo()}", LOCK_EX | FILE_APPEND); - return false; - } - else - { - $query = "Update config_options set config_value = :config_value where config_key = :config_key"; - $statement = $this->_db->prepare($query); - $exe_query_update = $statement->execute($data); - - if (!$exe_query_update) { - file_put_contents($this->error_logging, "\n\ncannot execute query: {$query} {$this->_db->errorInfo()}", LOCK_EX | FILE_APPEND); - return false; - } - } - $this->_close_connection(); - return true; - - } - - function update_config($key,$newkey,$autoload) - { - if (!$this->_is_open) { - $this->_open_connection(); - } - - $key_data = $this->get_config($key); - if($key_data == false) - { - return false; - } - else - { - if(empty($newkey)) - { - $query = "update config_options set autoload = :autoload where config_key = :config_key"; - $data = array( - 'autoload' => $autoload, - 'config_key' => $key - ); - } - else - { - $query = "update config_options set config_key = :config_new_key,autoload = :autoload where config_key = :config_key"; - $data = array( - 'config_new_key' => $newkey, - 'config_key' => $key, - 'autoload' => $autoload - ); - } - - // $this->_db->setAttribute( PDO::ATTR_ERRMODE, PDO::ERRMODE_WARNING ); - - $statement = $this->_db->prepare($query); - $exe_query = $statement->execute($data); - if (!$exe_query) { - file_put_contents($this->error_logging, "\n\ncannot execute query: {$query} {$this->_db->errorInfo()}", LOCK_EX | FILE_APPEND); - return false; - } - $this->_close_connection(); - return true; - } - } - - function update_country($key,$value) - { - if (!$this->_is_open) { - $this->_open_connection(); - } - - if($key == "country_trusted") - { - $delete_key = $this->delete_config_value("country_blocked",$value); - - if($delete_key) - { - return $this->add_config_value("country_trusted",$value); - } - else - return $delete_key; - } - elseif($key == "country_blocked") - { - $delete_key = $this->delete_config_value("country_trusted",$value); - - if($delete_key) - { - return $this->add_config_value("country_blocked",$value); - } - else - return $delete_key; - } - } - } - -} \ No newline at end of file diff --git a/libraries/Token_bucket.php b/libraries/Token_bucket.php deleted file mode 100644 index fc9ac93..0000000 --- a/libraries/Token_bucket.php +++ /dev/null @@ -1,76 +0,0 @@ -get_api_request(ASTRA::$_ip); - - //print_r($get_api_request); - - $last_api_request = $get_api_request['last_api_request']; # get from the DB; in epoch seconds - $last_api_diff = time() - $last_api_request; # in seconds - $minute_throttle = $get_api_request['throttle_minute']; # get from the DB - $reported = isset($get_api_request['reported']) ? $get_api_request['reported'] : 0; - - if (is_null(self::$_minute_limit)) { - $new_minute_throttle = 0; - } else { - $new_minute_throttle = $minute_throttle - $last_api_diff; - $new_minute_throttle = $new_minute_throttle < 0 ? 0 : $new_minute_throttle; - $new_minute_throttle += self::$_minute / self::$_minute_limit; - $minute_hits_remaining = floor(( self::$_minute - $new_minute_throttle ) * self::$_minute_limit / self::$_minute); - # can output this value with the request if desired: - $minute_hits_remaining = $minute_hits_remaining >= 0 ? $minute_hits_remaining : 0; - $reported = 0; - } - - if ($new_minute_throttle > self::$_minute) { - $wait = ceil($new_minute_throttle - self::$_minute); - if (!$reported) { - /* Send API hit */ - require_once(ASTRAPATH . 'libraries/API_connect.php'); - $connect = new API_connect(); - $reported = (int) $connect->send_request("token_bucket", array('blocking' => 2)); - } - usleep(250000); - /**/ - - die('The one-minute Request limit of ' . self::$_minute_limit . ' requests has been exceeded. Please wait ' . $wait . ' seconds before attempting again.'); - } - - # Save the values back to the database. - $data = array( - 'last_api_request' => time(), - ); - - ASTRA::$_db->save_api_request(ASTRA::$_ip, time(), $new_minute_throttle, $reported); - } - - } - -} \ No newline at end of file diff --git a/libraries/Update_DB.php b/libraries/Update_DB.php deleted file mode 100644 index 15ee810..0000000 --- a/libraries/Update_DB.php +++ /dev/null @@ -1,111 +0,0 @@ -run(); - echo_debug('Constructor DB'); - } - - protected function is_request_from_astra(){ - $user_agent = isset($_SERVER['HTTP_USER_AGENT']) ? strtolower($_SERVER['HTTP_USER_AGENT']) : "empty"; - - if(strpos($user_agent, "astra") !== false){ - return true; - } - - if(file_exists(ASTRAPATH . 'db/astra-setup.flag')){ - return true; - } - - return false; - } - - protected function make_request() { - - - if($this->is_request_from_astra()){ - return false; - } - - require_once(ASTRAPATH . 'libraries/Crypto.php'); - - echo_debug('cURLing to ' . CZ_API_URL); - - $dataArray['client_key'] = CZ_CLIENT_KEY; - $dataArray['api'] = "get_db"; - - $str = serialize($dataArray); - $crypto = new Astra_crypto(); - $encrypted_data = $crypto->encrypt($str, CZ_SECRET_KEY); - - $ch = curl_init(); - curl_setopt($ch, CURLOPT_URL, CZ_API_URL); - curl_setopt($ch, CURLOPT_POST, true); - curl_setopt($ch, CURLOPT_POSTFIELDS, "encRequest=" . $encrypted_data . "&access_code=" . CZ_ACCESS_KEY); - curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); - curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, false); - curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false); - - $output = curl_exec($ch); - echo_debug('cURL Executed'); - - echo_debug('cURL Error >> ' . curl_error($ch)); - echo_debug("
$output
"); - - $errors = curl_error($ch); - curl_close($ch); - - if ($errors) { - return FALSE; - } else { - return $output; - } - } - - function run() { - - $server_reply = $this->make_request(); - - if ($server_reply === FALSE) { - echo_debug('Update False'); - return FALSE; - } else { - $server_reply = json_decode($server_reply); - echo_debug('JSON Decoded'); - } - - if ($server_reply->code == 1) { - echo_debug('Valid Response'); - $bots = json_decode($server_reply->bots); - $custom_rules = json_decode($server_reply->custom_rules); - } - else{ - echo_debug('Not a valid Response'); - echo_debug(json_encode($server_reply)); - } - - //print_r($bots); - //print_r($custom_rules); - - echo_debug('Connecting DB'); - ASTRA::connect_db(); - echo_debug('DB Connected'); - - $update_bad_bots = ASTRA::$_db->update_bad_bots($bots); - - $update_custom_params = ASTRA::$_db->update_custom_params($custom_rules->params); - $update_custom_ip = ASTRA::$_db->update_custom_ip($custom_rules->ip); - - if ($update_bad_bots && $update_custom_params && $update_custom_ip) { - return TRUE; - } else { - return FALSE; - } - } - - } - -} \ No newline at end of file diff --git a/libraries/Update_config.php b/libraries/Update_config.php deleted file mode 100644 index d9a7707..0000000 --- a/libraries/Update_config.php +++ /dev/null @@ -1,91 +0,0 @@ - $line) { - $line_trim = trim($line); - $str_define = strpos($line_trim, 'define("'); - - if ($str_define === false || $str_define != 0) - continue; - - $line_temp = str_replace('define(', '', $line_trim); - $line_temp = str_replace(');', '', $line_temp); - - $matches = explode(",", $line_temp); - $constant = $matches[0]; - $padding = $matches[1]; - - $constant = str_replace('"', "", $constant); - - json_decode(substr($str_replace, 1, -1)); - if (json_last_error() == 0) { - $data['key'] = 'file_uploads'; - $config = new AstraConfig(); - if($config->get_config($data)){ - $data['value'] = ""; - $config->delete_config($data); - $data['value'] = json_decode(substr($str_replace, 1, -1)); - $data['autoload'] = 1; - $config->add_config($data); - }else{ - $data['value'] = json_decode(substr($str_replace, 1, -1)); - $data['autoload'] = 1; - $config->add_config($data); - } - - - }else{ - - if ($constant == $str_constant) { - $config_file[$line_num] = 'define("' . $constant . '", ' . $str_replace . ');' . "\r\n"; - break; - } else { - - } - - } - } - - $handle = fopen($path_to_astra_config, 'w'); - foreach ($config_file as $line) { - fwrite($handle, rtrim($line) . "\r\n"); - } - fclose($handle); - chmod($path_to_astra_config, 0666); - - return TRUE; - } - -} \ No newline at end of file diff --git a/libraries/Updater.php b/libraries/Updater.php deleted file mode 100644 index c2ff668..0000000 --- a/libraries/Updater.php +++ /dev/null @@ -1,235 +0,0 @@ -server_version = $server_version; - $this->paths['local_path'] = dirname(dirname(__FILE__)) . '/updates/'; - echo_debug("Local path: " . $this->paths['local_path']); - } - - public function is_update() - { - if (1 == 1 || version_compare($this->server_version, CZ_ASTRA_CLIENT_VERSION) > 0) { - $this->update_file_name = 'astra-' . trim($this->server_version) . '.zip'; - echo_debug("Needs to be updated: " . $this->update_file_name); - return TRUE; - } else { - echo_debug("Update not required as:"); - echo_debug(array("Server Version" => $this->server_version, "Client Version" => CZ_ASTRA_CLIENT_VERSION)); - $this->add_error('update_not_required', 'Update not required. Latest version as per server is ' . $this->server_version . ' and client version is ' . CZ_ASTRA_CLIENT_VERSION); - return FALSE; - } - } - - public function get_errors() - { - return $this->errors; - } - - public function add_error($error_code, $error_message) - { - $this->errors[$error_code] = $error_message; - return true; - } - - protected function is_valid_zip() - { - - $zip = new ZipArchive; - - $res = $zip->open($this->paths['local_path'] . $this->update_file_name, ZipArchive::CHECKCONS); - - if ($res !== TRUE) { - switch ($res) { - case ZipArchive::ER_NOZIP : - echo_debug("Not a ZIP"); - $this->add_error('zip_nozip', "The update zip is invalid"); - $ret = FALSE; - /* Not a zip archive */ - case ZipArchive::ER_INCONS : - echo_debug("Consistency check failed"); - $this->add_error('zip_incons', "Failed to download update zip"); - $ret = FALSE; - /* die('consistency check failed'); */ - case ZipArchive::ER_CRC : - echo_debug("Error with CRC"); - $this->add_error('zip_crc', "Update zip CRC failed"); - $ret = FALSE; - default : - echo_debug("Checksum Failed"); - $this->add_error('zip_checksum', "Update zip checksum failed"); - $ret = FALSE; - } - - if ($ret) { - $zip->close(); - } - return $ret; - } else { - echo_debug("Update file is a valid ZIP"); - return TRUE; - } - } - - public function download_file() - { - - $download_filename = $this->paths['local_path'] . $this->update_file_name; - if (file_exists($download_filename) && filesize($download_filename) < 5) { - unlink($download_filename); - } - - if (!is_file($download_filename)) { - - /* Download the File */ - require_once(ASTRAPATH . 'libraries/Crypto.php'); - - $dataArray['client_key'] = CZ_CLIENT_KEY; - $dataArray['api'] = "download_package"; - - $str = serialize($dataArray); - $crypto = new Astra_crypto(); - $encrypted_data = $crypto->encrypt($str, CZ_SECRET_KEY); - - if (!is_dir($this->paths['local_path'])) { - echo_debug("Making updates directory"); - mkdir($this->paths['local_path']); - } - - if (is_writable(dirname($this->paths['local_path'] . $this->update_file_name))) { - $dlHandler = fopen($this->paths['local_path'] . $this->update_file_name, 'w'); - - $ch = curl_init(); - curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, 0); - curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, 0); - curl_setopt($ch, CURLOPT_POSTFIELDS, "encRequest=" . $encrypted_data . "&access_code=" . CZ_ACCESS_KEY); - curl_setopt($ch, CURLOPT_URL, CZ_API_URL); - curl_setopt($ch, CURLOPT_FILE, $dlHandler); - curl_setopt($ch, CURLOPT_HEADER, false); - curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true); - - curl_setopt($ch, CURLOPT_HTTPHEADER, array( - 'Content-type: application/x-www-form-urlencoded', - )); - - - $result = curl_exec($ch); - curl_close($ch); - - fclose($dlHandler); - - if ($this->is_valid_zip()) { - return TRUE; - } else { - /* - unlink($this->paths['local_path'] . $this->update_file_name); - echo_debug("Deleted ZIP file since it was not a valid."); - * - */ - return FALSE; - } - } else { - $this->add_error('update_folder_not_writable', 'Please ensure the following path is writable: ' . dirname($this->paths['local_path'] . $this->update_file_name)); - return false; - } - } else { - echo_debug("Unable to write the file since the file probably exists"); - return TRUE; - } - } - - protected function migration() - { - if (file_exists(ASTRAPATH . 'upgrade.php')) { - echo_debug("Upgrade file exists and will be executed"); - $output = shell_exec('php ' . ASTRAPATH . 'upgrade.php'); - echo_debug($output); - unlink(ASTRAPATH . 'upgrade.php'); - echo_debug("Upgrade file deleted"); - return TRUE; - } - - if (!strpos(__FILE__, 'xampp')) { - - } else { - echo_debug("We are in local"); - $fp = dirname(dirname(dirname(__FILE__))) . '/astra/' . 'upgrade.php'; - echo_debug($fp); - if (file_exists($fp)) { - echo_debug("Upgrade file exists and will be executed"); - $output = shell_exec('php ' . $fp); - echo_debug($output); - unlink($fp); - echo_debug("Upgrade file deleted"); - return TRUE; - } - } - - echo_debug('Upgrade file does not exist'); - return TRUE; - } - - public function update($platform = 'php') - { - $zip = new ZipArchive; - if ($zip->open($this->paths['local_path'] . $this->update_file_name) === TRUE) { - if ($platform == 'php') { - $extract_to = dirname(ASTRAPATH); - } else { - $extract_to = dirname(dirname(ASTRAPATH)); - } - echo_debug("Will extract Update to: " . $extract_to); - $extracted = $zip->extractTo($extract_to); - $zip->close(); - $this->migration(); - - if ($extracted) { - echo_debug("ZIP successfully extracted"); - return TRUE; - } else { - $this->add_error('zip_extract_error', 'Failed to extract the update file'); - echo_debug("ZIP extraction not successful"); - return FALSE; - } - } - - $this->add_error('zip_open_error', 'Failed to open the update file'); - echo_debug("Unable to open Update ZIP File"); - return FALSE; - } - - public function delete() - { - if (file_exists($this->paths['local_path'] . $this->update_file_name)) { - if (unlink($this->paths['local_path'] . $this->update_file_name)) { - echo_debug("Just deleted: " . $this->paths['local_path'] . $this->update_file_name); - return TRUE; - } else { - echo_debug("File Exists but unable to delete: " . $this->paths['local_path'] . $this->update_file_name); - return FALSE; - } - } else { - $this->add_error('zip_delete_error', 'Failed to delete update file: ' . $this->paths['local_path'] . $this->update_file_name); - echo_debug("Unable to delete: " . $this->paths['local_path'] . $this->update_file_name); - } - } - - } - -} \ No newline at end of file diff --git a/libraries/Virtual_patches.php b/libraries/Virtual_patches.php deleted file mode 100644 index e31dd3e..0000000 --- a/libraries/Virtual_patches.php +++ /dev/null @@ -1,67 +0,0 @@ - - * @date 12/5/19 - */ - -if (!class_exists('Astra_virtual_patches')) { - - class Astra_virtual_patches - { - - protected $url; - protected $applied_patches = array(); - - function __construct() - { - if (!empty($_SERVER['REQUEST_URI'])) { - $this->url = $_SERVER['REQUEST_URI']; - } - } - - function apply() - { - - $methods = preg_grep('/^patch_/', get_class_methods($this)); - foreach ($methods as $method) { - $is_applied = $this->{$method}(); - if ($is_applied === TRUE) { - $this->applied_patches[] = $method; - } - } - - //print_r($this->applied_patches); - } - - function get_applied_patches() - { - return $this->applied_patches; - } - - function url_contains($slug = '') - { - return (false !== strpos($this->url, $slug)) ? TRUE : FALSE; - } - - function string_after($haystack, $needle) - { - return substr($haystack, strpos($haystack, $needle) + strlen($needle)); - } - - function patch_magento_smartwave_quickview() - { - - if (!$this->url_contains('quickview/index/view/path')) { - return false; - } - - $string_after = $this->string_after($this->url, 'quickview/index/view/path'); - if ($this->url_contains(';') || strlen($string_after) > 3) { - return true; - } - - } - } -} \ No newline at end of file diff --git a/libraries/browser.php b/libraries/browser.php deleted file mode 100644 index eb99c78..0000000 --- a/libraries/browser.php +++ /dev/null @@ -1,1730 +0,0 @@ -getBrowser() == Browser::BROWSER_FIREFOX && $browser->getVersion() >= 2 ) { - * echo 'You have FireFox version 2 or greater'; - * } - * - * User Agents Sampled from: http://www.useragentstring.com/ - * - * This implementation is based on the original work from Gary White - * http://apptools.com/phptools/browser/ - * - */ - -if (!class_exists('Browser_Astra')) { - class Browser_Astra - { - private $_agent = ''; - private $_browser_name = ''; - private $_version = ''; - private $_platform = ''; - private $_os = ''; - private $_is_aol = false; - private $_is_mobile = false; - private $_is_tablet = false; - private $_is_robot = false; - private $_is_facebook = false; - private $_aol_version = ''; - - const BROWSER_UNKNOWN = 'unknown'; - const VERSION_UNKNOWN = 'unknown'; - - const BROWSER_OPERA = 'Opera'; // http://www.opera.com/ - const BROWSER_OPERA_MINI = 'Opera Mini'; // http://www.opera.com/mini/ - const BROWSER_WEBTV = 'WebTV'; // http://www.webtv.net/pc/ - const BROWSER_EDGE = 'Edge'; // https://www.microsoft.com/edge - const BROWSER_IE = 'Internet Explorer'; // http://www.microsoft.com/ie/ - const BROWSER_POCKET_IE = 'Pocket Internet Explorer'; // http://en.wikipedia.org/wiki/Internet_Explorer_Mobile - const BROWSER_KONQUEROR = 'Konqueror'; // http://www.konqueror.org/ - const BROWSER_ICAB = 'iCab'; // http://www.icab.de/ - const BROWSER_OMNIWEB = 'OmniWeb'; // http://www.omnigroup.com/applications/omniweb/ - const BROWSER_FIREBIRD = 'Firebird'; // http://www.ibphoenix.com/ - const BROWSER_FIREFOX = 'Firefox'; // http://www.mozilla.com/en-US/firefox/firefox.html - const BROWSER_ICEWEASEL = 'Iceweasel'; // http://www.geticeweasel.org/ - const BROWSER_SHIRETOKO = 'Shiretoko'; // http://wiki.mozilla.org/Projects/shiretoko - const BROWSER_MOZILLA = 'Mozilla'; // http://www.mozilla.com/en-US/ - const BROWSER_AMAYA = 'Amaya'; // http://www.w3.org/Amaya/ - const BROWSER_LYNX = 'Lynx'; // http://en.wikipedia.org/wiki/Lynx - const BROWSER_SAFARI = 'Safari'; // http://apple.com - const BROWSER_IPHONE = 'iPhone'; // http://apple.com - const BROWSER_IPOD = 'iPod'; // http://apple.com - const BROWSER_IPAD = 'iPad'; // http://apple.com - const BROWSER_CHROME = 'Chrome'; // http://www.google.com/chrome - const BROWSER_ANDROID = 'Android'; // http://www.android.com/ - const BROWSER_GOOGLEBOT = 'GoogleBot'; // http://en.wikipedia.org/wiki/Googlebot - - const BROWSER_YANDEXBOT = 'YandexBot'; // http://yandex.com/bots - const BROWSER_YANDEXIMAGERESIZER_BOT = 'YandexImageResizer'; // http://yandex.com/bots - const BROWSER_YANDEXIMAGES_BOT = 'YandexImages'; // http://yandex.com/bots - const BROWSER_YANDEXVIDEO_BOT = 'YandexVideo'; // http://yandex.com/bots - const BROWSER_YANDEXMEDIA_BOT = 'YandexMedia'; // http://yandex.com/bots - const BROWSER_YANDEXBLOGS_BOT = 'YandexBlogs'; // http://yandex.com/bots - const BROWSER_YANDEXFAVICONS_BOT = 'YandexFavicons'; // http://yandex.com/bots - const BROWSER_YANDEXWEBMASTER_BOT = 'YandexWebmaster'; // http://yandex.com/bots - const BROWSER_YANDEXDIRECT_BOT = 'YandexDirect'; // http://yandex.com/bots - const BROWSER_YANDEXMETRIKA_BOT = 'YandexMetrika'; // http://yandex.com/bots - const BROWSER_YANDEXNEWS_BOT = 'YandexNews'; // http://yandex.com/bots - const BROWSER_YANDEXCATALOG_BOT = 'YandexCatalog'; // http://yandex.com/bots - - const BROWSER_SLURP = 'Yahoo! Slurp'; // http://en.wikipedia.org/wiki/Yahoo!_Slurp - const BROWSER_W3CVALIDATOR = 'W3C Validator'; // http://validator.w3.org/ - const BROWSER_BLACKBERRY = 'BlackBerry'; // http://www.blackberry.com/ - const BROWSER_ICECAT = 'IceCat'; // http://en.wikipedia.org/wiki/GNU_IceCat - const BROWSER_NOKIA_S60 = 'Nokia S60 OSS Browser'; // http://en.wikipedia.org/wiki/Web_Browser_for_S60 - const BROWSER_NOKIA = 'Nokia Browser'; // * all other WAP-based browsers on the Nokia Platform - const BROWSER_MSN = 'MSN Browser'; // http://explorer.msn.com/ - const BROWSER_MSNBOT = 'MSN Bot'; // http://search.msn.com/msnbot.htm - const BROWSER_BINGBOT = 'Bing Bot'; // http://en.wikipedia.org/wiki/Bingbot - const BROWSER_VIVALDI = 'Vivalidi'; // https://vivaldi.com/ - const BROWSER_YANDEX = 'Yandex'; // https://browser.yandex.ua/ - - const BROWSER_NETSCAPE_NAVIGATOR = 'Netscape Navigator'; // http://browser.netscape.com/ (DEPRECATED) - const BROWSER_GALEON = 'Galeon'; // http://galeon.sourceforge.net/ (DEPRECATED) - const BROWSER_NETPOSITIVE = 'NetPositive'; // http://en.wikipedia.org/wiki/NetPositive (DEPRECATED) - const BROWSER_PHOENIX = 'Phoenix'; // http://en.wikipedia.org/wiki/History_of_Mozilla_Firefox (DEPRECATED) - const BROWSER_PLAYSTATION = "PlayStation"; - const BROWSER_SAMSUNG = "SamsungBrowser"; - const BROWSER_SILK = "Silk"; - const BROWSER_I_FRAME = "Iframely"; - const BROWSER_COCOA = "CocoaRestClient"; - - const PLATFORM_UNKNOWN = 'unknown'; - const PLATFORM_WINDOWS = 'Windows'; - const PLATFORM_WINDOWS_CE = 'Windows CE'; - const PLATFORM_APPLE = 'Apple'; - const PLATFORM_LINUX = 'Linux'; - const PLATFORM_OS2 = 'OS/2'; - const PLATFORM_BEOS = 'BeOS'; - const PLATFORM_IPHONE = 'iPhone'; - const PLATFORM_IPOD = 'iPod'; - const PLATFORM_IPAD = 'iPad'; - const PLATFORM_BLACKBERRY = 'BlackBerry'; - const PLATFORM_NOKIA = 'Nokia'; - const PLATFORM_FREEBSD = 'FreeBSD'; - const PLATFORM_OPENBSD = 'OpenBSD'; - const PLATFORM_NETBSD = 'NetBSD'; - const PLATFORM_SUNOS = 'SunOS'; - const PLATFORM_OPENSOLARIS = 'OpenSolaris'; - const PLATFORM_ANDROID = 'Android'; - const PLATFORM_PLAYSTATION = "Sony PlayStation"; - const PLATFORM_ROKU = "Roku"; - const PLATFORM_APPLE_TV = "Apple TV"; - const PLATFORM_TERMINAL = "Terminal"; - const PLATFORM_FIRE_OS = "Fire OS"; - const PLATFORM_SMART_TV = "SMART-TV"; - const PLATFORM_CHROME_OS = "Chrome OS"; - const PLATFORM_JAVA_ANDROID = "Java/Android"; - const PLATFORM_POSTMAN = "Postman"; - const PLATFORM_I_FRAME = "Iframely"; - - const OPERATING_SYSTEM_UNKNOWN = 'unknown'; - - /** - * Class constructor - */ - public function __construct($userAgent = "") - { - $this->reset(); - if ($userAgent != "") { - $this->setUserAgent($userAgent); - } else { - $this->determine(); - } - } - - /** - * Reset all properties - */ - public function reset() - { - $this->_agent = isset($_SERVER['HTTP_USER_AGENT']) ? $_SERVER['HTTP_USER_AGENT'] : ""; - $this->_browser_name = self::BROWSER_UNKNOWN; - $this->_version = self::VERSION_UNKNOWN; - $this->_platform = self::PLATFORM_UNKNOWN; - $this->_os = self::OPERATING_SYSTEM_UNKNOWN; - $this->_is_aol = false; - $this->_is_mobile = false; - $this->_is_tablet = false; - $this->_is_robot = false; - $this->_is_facebook = false; - $this->_aol_version = self::VERSION_UNKNOWN; - } - - /** - * Check to see if the specific browser is valid - * @param string $browserName - * @return bool True if the browser is the specified browser - */ - function isBrowser($browserName) - { - return (0 == strcasecmp($this->_browser_name, trim($browserName))); - } - - /** - * The name of the browser. All return types are from the class contants - * @return string Name of the browser - */ - public function getBrowser() - { - return $this->_browser_name; - } - - /** - * Set the name of the browser - * @param $browser string The name of the Browser - */ - public function setBrowser($browser) - { - $this->_browser_name = $browser; - } - - /** - * The name of the platform. All return types are from the class contants - * @return string Name of the browser - */ - public function getPlatform() - { - return $this->_platform; - } - - /** - * Set the name of the platform - * @param string $platform The name of the Platform - */ - public function setPlatform($platform) - { - $this->_platform = $platform; - } - - /** - * The version of the browser. - * @return string Version of the browser (will only contain alpha-numeric characters and a period) - */ - public function getVersion() - { - return $this->_version; - } - - /** - * Set the version of the browser - * @param string $version The version of the Browser - */ - public function setVersion($version) - { - $this->_version = preg_replace('/[^0-9,.,a-z,A-Z-]/', '', $version); - } - - /** - * The version of AOL. - * @return string Version of AOL (will only contain alpha-numeric characters and a period) - */ - public function getAolVersion() - { - return $this->_aol_version; - } - - /** - * Set the version of AOL - * @param string $version The version of AOL - */ - public function setAolVersion($version) - { - $this->_aol_version = preg_replace('/[^0-9,.,a-z,A-Z]/', '', $version); - } - - /** - * Is the browser from AOL? - * @return boolean True if the browser is from AOL otherwise false - */ - public function isAol() - { - return $this->_is_aol; - } - - /** - * Is the browser from a mobile device? - * @return boolean True if the browser is from a mobile device otherwise false - */ - public function isMobile() - { - return $this->_is_mobile; - } - - /** - * Is the browser from a tablet device? - * @return boolean True if the browser is from a tablet device otherwise false - */ - public function isTablet() - { - return $this->_is_tablet; - } - - /** - * Is the browser from a robot (ex Slurp,GoogleBot)? - * @return boolean True if the browser is from a robot otherwise false - */ - public function isRobot() - { - return $this->_is_robot; - } - - /** - * Is the browser from facebook? - * @return boolean True if the browser is from facebook otherwise false - */ - public function isFacebook() - { - return $this->_is_facebook; - } - - /** - * Set the browser to be from AOL - * @param $isAol - */ - public function setAol($isAol) - { - $this->_is_aol = $isAol; - } - - /** - * Set the Browser to be mobile - * @param boolean $value is the browser a mobile browser or not - */ - protected function setMobile($value = true) - { - $this->_is_mobile = $value; - } - - /** - * Set the Browser to be tablet - * @param boolean $value is the browser a tablet browser or not - */ - protected function setTablet($value = true) - { - $this->_is_tablet = $value; - } - - /** - * Set the Browser to be a robot - * @param boolean $value is the browser a robot or not - */ - protected function setRobot($value = true) - { - $this->_is_robot = $value; - } - - /** - * Set the Browser to be a Facebook request - * @param boolean $value is the browser a robot or not - */ - protected function setFacebook($value = true) - { - $this->_is_facebook = $value; - } - - /** - * Get the user agent value in use to determine the browser - * @return string The user agent from the HTTP header - */ - public function getUserAgent() - { - return $this->_agent; - } - - /** - * Set the user agent value (the construction will use the HTTP header value - this will overwrite it) - * @param string $agent_string The value for the User Agent - */ - public function setUserAgent($agent_string) - { - $this->reset(); - $this->_agent = $agent_string; - $this->determine(); - } - - /** - * Used to determine if the browser is actually "chromeframe" - * @since 1.7 - * @return boolean True if the browser is using chromeframe - */ - public function isChromeFrame() - { - return (strpos($this->_agent, "chromeframe") !== false); - } - - /** - * Returns a formatted string with a summary of the details of the browser. - * @return string formatted string with a summary of the browser - */ - public function __toString() - { - return "Browser Name: {$this->getBrowser()}
\n" . - "Browser Version: {$this->getVersion()}
\n" . - "Browser User Agent String: {$this->getUserAgent()}
\n" . - "Platform: {$this->getPlatform()}
"; - } - - /** - * Protected routine to calculate and determine what the browser is in use (including platform) - */ - protected function determine() - { - $this->checkPlatform(); - $this->checkBrowsers(); - $this->checkForAol(); - } - - /** - * Protected routine to determine the browser type - * @return boolean True if the browser was detected otherwise false - */ - protected function checkBrowsers() - { - return ( - // well-known, well-used - // Special Notes: - // (1) Opera must be checked before FireFox due to the odd - // user agents used in some older versions of Opera - // (2) WebTV is strapped onto Internet Explorer so we must - // check for WebTV before IE - // (3) (deprecated) Galeon is based on Firefox and needs to be - // tested before Firefox is tested - // (4) OmniWeb is based on Safari so OmniWeb check must occur - // before Safari - // (5) Netscape 9+ is based on Firefox so Netscape checks - // before FireFox are necessary - // (6) Vivalid is UA contains both Firefox and Chrome so Vivalid checks - // before Firefox and Chrome - $this->checkBrowserWebTv() || - $this->checkBrowserEdge() || - $this->checkBrowserInternetExplorer() || - $this->checkBrowserOpera() || - $this->checkBrowserGaleon() || - $this->checkBrowserNetscapeNavigator9Plus() || - $this->checkBrowserVivaldi() || - $this->checkBrowserYandex() || - $this->checkBrowserFirefox() || - $this->checkBrowserChrome() || - $this->checkBrowserOmniWeb() || - - // common mobile - $this->checkBrowserAndroid() || - $this->checkBrowseriPad() || - $this->checkBrowseriPod() || - $this->checkBrowseriPhone() || - $this->checkBrowserBlackBerry() || - $this->checkBrowserNokia() || - - // common bots - $this->checkBrowserGoogleBot() || - $this->checkBrowserMSNBot() || - $this->checkBrowserBingBot() || - $this->checkBrowserSlurp() || - - // Yandex bots - $this->checkBrowserYandexBot() || - $this->checkBrowserYandexImageResizerBot() || - $this->checkBrowserYandexBlogsBot() || - $this->checkBrowserYandexCatalogBot() || - $this->checkBrowserYandexDirectBot() || - $this->checkBrowserYandexFaviconsBot() || - $this->checkBrowserYandexImagesBot() || - $this->checkBrowserYandexMediaBot() || - $this->checkBrowserYandexMetrikaBot() || - $this->checkBrowserYandexNewsBot() || - $this->checkBrowserYandexVideoBot() || - $this->checkBrowserYandexWebmasterBot() || - - // check for facebook external hit when loading URL - $this->checkFacebookExternalHit() || - - // WebKit base check (post mobile and others) - $this->checkBrowserSamsung() || - $this->checkBrowserSilk() || - $this->checkBrowserSafari() || - - // everyone else - $this->checkBrowserNetPositive() || - $this->checkBrowserFirebird() || - $this->checkBrowserKonqueror() || - $this->checkBrowserIcab() || - $this->checkBrowserPhoenix() || - $this->checkBrowserAmaya() || - $this->checkBrowserLynx() || - $this->checkBrowserShiretoko() || - $this->checkBrowserIceCat() || - $this->checkBrowserIceweasel() || - $this->checkBrowserW3CValidator() || - $this->checkBrowserPlayStation() || - $this->checkBrowserIframely() || - $this->checkBrowserCocoa() || - $this->checkBrowserMozilla() /* Mozilla is such an open standard that you must check it last */ - - - ); - } - - /** - * Determine if the user is using a BlackBerry (last updated 1.7) - * @return boolean True if the browser is the BlackBerry browser otherwise false - */ - protected function checkBrowserBlackBerry() - { - if (stripos($this->_agent, 'blackberry') !== false) { - $aresult = explode("/", stristr($this->_agent, "BlackBerry")); - if (isset($aresult[1])) { - $aversion = explode(' ', $aresult[1]); - $this->setVersion($aversion[0]); - $this->_browser_name = self::BROWSER_BLACKBERRY; - $this->setMobile(true); - return true; - } - } - return false; - } - - /** - * Determine if the user is using an AOL User Agent (last updated 1.7) - * @return boolean True if the browser is from AOL otherwise false - */ - protected function checkForAol() - { - $this->setAol(false); - $this->setAolVersion(self::VERSION_UNKNOWN); - - if (stripos($this->_agent, 'aol') !== false) { - $aversion = explode(' ', stristr($this->_agent, 'AOL')); - if (isset($aversion[1])) { - $this->setAol(true); - $this->setAolVersion(preg_replace('/[^0-9\.a-z]/i', '', $aversion[1])); - return true; - } - } - return false; - } - - /** - * Determine if the browser is the GoogleBot or not (last updated 1.7) - * @return boolean True if the browser is the GoogletBot otherwise false - */ - protected function checkBrowserGoogleBot() - { - if (stripos($this->_agent, 'googlebot') !== false) { - $aresult = explode('/', stristr($this->_agent, 'googlebot')); - if (isset($aresult[1])) { - $aversion = explode(' ', $aresult[1]); - $this->setVersion(str_replace(';', '', $aversion[0])); - $this->_browser_name = self::BROWSER_GOOGLEBOT; - $this->setRobot(true); - return true; - } - } - return false; - } - - /** - * Determine if the browser is the YandexBot or not - * @return boolean True if the browser is the YandexBot otherwise false - */ - protected function checkBrowserYandexBot() - { - if (stripos($this->_agent, 'YandexBot') !== false) { - $aresult = explode('/', stristr($this->_agent, 'YandexBot')); - if (isset($aresult[1])) { - $aversion = explode(' ', $aresult[1]); - $this->setVersion(str_replace(';', '', $aversion[0])); - $this->_browser_name = self::BROWSER_YANDEXBOT; - $this->setRobot(true); - return true; - } - } - return false; - } - - /** - * Determine if the browser is the YandexImageResizer or not - * @return boolean True if the browser is the YandexImageResizer otherwise false - */ - protected function checkBrowserYandexImageResizerBot() - { - if (stripos($this->_agent, 'YandexImageResizer') !== false) { - $aresult = explode('/', stristr($this->_agent, 'YandexImageResizer')); - if (isset($aresult[1])) { - $aversion = explode(' ', $aresult[1]); - $this->setVersion(str_replace(';', '', $aversion[0])); - $this->_browser_name = self::BROWSER_YANDEXIMAGERESIZER_BOT; - $this->setRobot(true); - return true; - } - } - return false; - } - - /** - * Determine if the browser is the YandexCatalog or not - * @return boolean True if the browser is the YandexCatalog otherwise false - */ - protected function checkBrowserYandexCatalogBot() - { - if (stripos($this->_agent, 'YandexCatalog') !== false) { - $aresult = explode('/', stristr($this->_agent, 'YandexCatalog')); - if (isset($aresult[1])) { - $aversion = explode(' ', $aresult[1]); - $this->setVersion(str_replace(';', '', $aversion[0])); - $this->_browser_name = self::BROWSER_YANDEXCATALOG_BOT; - $this->setRobot(true); - return true; - } - } - return false; - } - - /** - * Determine if the browser is the YandexNews or not - * @return boolean True if the browser is the YandexNews otherwise false - */ - protected function checkBrowserYandexNewsBot() - { - if (stripos($this->_agent, 'YandexNews') !== false) { - $aresult = explode('/', stristr($this->_agent, 'YandexNews')); - if (isset($aresult[1])) { - $aversion = explode(' ', $aresult[1]); - $this->setVersion(str_replace(';', '', $aversion[0])); - $this->_browser_name = self::BROWSER_YANDEXNEWS_BOT; - $this->setRobot(true); - return true; - } - } - return false; - } - - /** - * Determine if the browser is the YandexMetrika or not - * @return boolean True if the browser is the YandexMetrika otherwise false - */ - protected function checkBrowserYandexMetrikaBot() - { - if (stripos($this->_agent, 'YandexMetrika') !== false) { - $aresult = explode('/', stristr($this->_agent, 'YandexMetrika')); - if (isset($aresult[1])) { - $aversion = explode(' ', $aresult[1]); - $this->setVersion(str_replace(';', '', $aversion[0])); - $this->_browser_name = self::BROWSER_YANDEXMETRIKA_BOT; - $this->setRobot(true); - return true; - } - } - return false; - } - - /** - * Determine if the browser is the YandexDirect or not - * @return boolean True if the browser is the YandexDirect otherwise false - */ - protected function checkBrowserYandexDirectBot() - { - if (stripos($this->_agent, 'YandexDirect') !== false) { - $aresult = explode('/', stristr($this->_agent, 'YandexDirect')); - if (isset($aresult[1])) { - $aversion = explode(' ', $aresult[1]); - $this->setVersion(str_replace(';', '', $aversion[0])); - $this->_browser_name = self::BROWSER_YANDEXDIRECT_BOT; - $this->setRobot(true); - return true; - } - } - return false; - } - - /** - * Determine if the browser is the YandexWebmaster or not - * @return boolean True if the browser is the YandexWebmaster otherwise false - */ - protected function checkBrowserYandexWebmasterBot() - { - if (stripos($this->_agent, 'YandexWebmaster') !== false) { - $aresult = explode('/', stristr($this->_agent, 'YandexWebmaster')); - if (isset($aresult[1])) { - $aversion = explode(' ', $aresult[1]); - $this->setVersion(str_replace(';', '', $aversion[0])); - $this->_browser_name = self::BROWSER_YANDEXWEBMASTER_BOT; - $this->setRobot(true); - return true; - } - } - return false; - } - - /** - * Determine if the browser is the YandexFavicons or not - * @return boolean True if the browser is the YandexFavicons otherwise false - */ - protected function checkBrowserYandexFaviconsBot() - { - if (stripos($this->_agent, 'YandexFavicons') !== false) { - $aresult = explode('/', stristr($this->_agent, 'YandexFavicons')); - if (isset($aresult[1])) { - $aversion = explode(' ', $aresult[1]); - $this->setVersion(str_replace(';', '', $aversion[0])); - $this->_browser_name = self::BROWSER_YANDEXFAVICONS_BOT; - $this->setRobot(true); - return true; - } - } - return false; - } - - /** - * Determine if the browser is the YandexBlogs or not - * @return boolean True if the browser is the YandexBlogs otherwise false - */ - protected function checkBrowserYandexBlogsBot() - { - if (stripos($this->_agent, 'YandexBlogs') !== false) { - $aresult = explode('/', stristr($this->_agent, 'YandexBlogs')); - if (isset($aresult[1])) { - $aversion = explode(' ', $aresult[1]); - $this->setVersion(str_replace(';', '', $aversion[0])); - $this->_browser_name = self::BROWSER_YANDEXBLOGS_BOT; - $this->setRobot(true); - return true; - } - } - return false; - } - - /** - * Determine if the browser is the YandexMedia or not - * @return boolean True if the browser is the YandexMedia otherwise false - */ - protected function checkBrowserYandexMediaBot() - { - if (stripos($this->_agent, 'YandexMedia') !== false) { - $aresult = explode('/', stristr($this->_agent, 'YandexMedia')); - if (isset($aresult[1])) { - $aversion = explode(' ', $aresult[1]); - $this->setVersion(str_replace(';', '', $aversion[0])); - $this->_browser_name = self::BROWSER_YANDEXMEDIA_BOT; - $this->setRobot(true); - return true; - } - } - return false; - } - - /** - * Determine if the browser is the YandexVideo or not - * @return boolean True if the browser is the YandexVideo otherwise false - */ - protected function checkBrowserYandexVideoBot() - { - if (stripos($this->_agent, 'YandexVideo') !== false) { - $aresult = explode('/', stristr($this->_agent, 'YandexVideo')); - if (isset($aresult[1])) { - $aversion = explode(' ', $aresult[1]); - $this->setVersion(str_replace(';', '', $aversion[0])); - $this->_browser_name = self::BROWSER_YANDEXVIDEO_BOT; - $this->setRobot(true); - return true; - } - } - return false; - } - - /** - * Determine if the browser is the YandexImages or not - * @return boolean True if the browser is the YandexImages otherwise false - */ - protected function checkBrowserYandexImagesBot() - { - if (stripos($this->_agent, 'YandexImages') !== false) { - $aresult = explode('/', stristr($this->_agent, 'YandexImages')); - if (isset($aresult[1])) { - $aversion = explode(' ', $aresult[1]); - $this->setVersion(str_replace(';', '', $aversion[0])); - $this->_browser_name = self::BROWSER_YANDEXIMAGES_BOT; - $this->setRobot(true); - return true; - } - } - return false; - } - - /** - * Determine if the browser is the MSNBot or not (last updated 1.9) - * @return boolean True if the browser is the MSNBot otherwise false - */ - protected function checkBrowserMSNBot() - { - if (stripos($this->_agent, "msnbot") !== false) { - $aresult = explode("/", stristr($this->_agent, "msnbot")); - if (isset($aresult[1])) { - $aversion = explode(" ", $aresult[1]); - $this->setVersion(str_replace(";", "", $aversion[0])); - $this->_browser_name = self::BROWSER_MSNBOT; - $this->setRobot(true); - return true; - } - } - return false; - } - - /** - * Determine if the browser is the BingBot or not (last updated 1.9) - * @return boolean True if the browser is the BingBot otherwise false - */ - protected function checkBrowserBingBot() - { - if (stripos($this->_agent, "bingbot") !== false) { - $aresult = explode("/", stristr($this->_agent, "bingbot")); - if (isset($aresult[1])) { - $aversion = explode(" ", $aresult[1]); - $this->setVersion(str_replace(";", "", $aversion[0])); - $this->_browser_name = self::BROWSER_BINGBOT; - $this->setRobot(true); - return true; - } - } - return false; - } - - /** - * Determine if the browser is the W3C Validator or not (last updated 1.7) - * @return boolean True if the browser is the W3C Validator otherwise false - */ - protected function checkBrowserW3CValidator() - { - if (stripos($this->_agent, 'W3C-checklink') !== false) { - $aresult = explode('/', stristr($this->_agent, 'W3C-checklink')); - if (isset($aresult[1])) { - $aversion = explode(' ', $aresult[1]); - $this->setVersion($aversion[0]); - $this->_browser_name = self::BROWSER_W3CVALIDATOR; - return true; - } - } else if (stripos($this->_agent, 'W3C_Validator') !== false) { - // Some of the Validator versions do not delineate w/ a slash - add it back in - $ua = str_replace("W3C_Validator ", "W3C_Validator/", $this->_agent); - $aresult = explode('/', stristr($ua, 'W3C_Validator')); - if (isset($aresult[1])) { - $aversion = explode(' ', $aresult[1]); - $this->setVersion($aversion[0]); - $this->_browser_name = self::BROWSER_W3CVALIDATOR; - return true; - } - } else if (stripos($this->_agent, 'W3C-mobileOK') !== false) { - $this->_browser_name = self::BROWSER_W3CVALIDATOR; - $this->setMobile(true); - return true; - } - return false; - } - - /** - * Determine if the browser is the Yahoo! Slurp Robot or not (last updated 1.7) - * @return boolean True if the browser is the Yahoo! Slurp Robot otherwise false - */ - protected function checkBrowserSlurp() - { - if (stripos($this->_agent, 'slurp') !== false) { - $aresult = explode('/', stristr($this->_agent, 'Slurp')); - if (isset($aresult[1])) { - $aversion = explode(' ', $aresult[1]); - $this->setVersion($aversion[0]); - $this->_browser_name = self::BROWSER_SLURP; - $this->setRobot(true); - $this->setMobile(false); - return true; - } - } - return false; - } - - /** - * Determine if the browser is Edge or not - * @return boolean True if the browser is Edge otherwise false - */ - protected function checkBrowserEdge() - { - if (stripos($this->_agent, 'Edge/') !== false) { - $aresult = explode('/', stristr($this->_agent, 'Edge')); - if (isset($aresult[1])) { - $aversion = explode(' ', $aresult[1]); - $this->setVersion($aversion[0]); - $this->setBrowser(self::BROWSER_EDGE); - if (stripos($this->_agent, 'Windows Phone') !== false || stripos($this->_agent, 'Android') !== false) { - $this->setMobile(true); - } - return true; - } - } - return false; - } - - /** - * Determine if the browser is Internet Explorer or not (last updated 1.7) - * @return boolean True if the browser is Internet Explorer otherwise false - */ - protected function checkBrowserInternetExplorer() - { - // Test for IE11 - if (stripos($this->_agent, 'Trident/7.0; rv:11.0') !== false) { - $this->setBrowser(self::BROWSER_IE); - $this->setVersion('11.0'); - return true; - } // Test for v1 - v1.5 IE - else if (stripos($this->_agent, 'microsoft internet explorer') !== false) { - $this->setBrowser(self::BROWSER_IE); - $this->setVersion('1.0'); - $aresult = stristr($this->_agent, '/'); - if (preg_match('/308|425|426|474|0b1/i', $aresult)) { - $this->setVersion('1.5'); - } - return true; - } // Test for versions > 1.5 - else if (stripos($this->_agent, 'msie') !== false && stripos($this->_agent, 'opera') === false) { - // See if the browser is the odd MSN Explorer - if (stripos($this->_agent, 'msnb') !== false) { - $aresult = explode(' ', stristr(str_replace(';', '; ', $this->_agent), 'MSN')); - if (isset($aresult[1])) { - $this->setBrowser(self::BROWSER_MSN); - $this->setVersion(str_replace(array('(', ')', ';'), '', $aresult[1])); - return true; - } - } - $aresult = explode(' ', stristr(str_replace(';', '; ', $this->_agent), 'msie')); - if (isset($aresult[1])) { - $this->setBrowser(self::BROWSER_IE); - $this->setVersion(str_replace(array('(', ')', ';'), '', $aresult[1])); - if (preg_match('#trident/([0-9\.]+);#i', $this->_agent, $aresult)) { - if ($aresult[1] == '3.1') { - $this->setVersion('7.0'); - } else if ($aresult[1] == '4.0') { - $this->setVersion('8.0'); - } else if ($aresult[1] == '5.0') { - $this->setVersion('9.0'); - } else if ($aresult[1] == '6.0') { - $this->setVersion('10.0'); - } else if ($aresult[1] == '7.0') { - $this->setVersion('11.0'); - } else if ($aresult[1] == '8.0') { - $this->setVersion('11.0'); - } - } - if (stripos($this->_agent, 'IEMobile') !== false) { - $this->setBrowser(self::BROWSER_POCKET_IE); - $this->setMobile(true); - } - return true; - } - } // Test for versions > IE 10 - else if (stripos($this->_agent, 'trident') !== false) { - $this->setBrowser(self::BROWSER_IE); - $result = explode('rv:', $this->_agent); - if (isset($result[1])) { - $this->setVersion(preg_replace('/[^0-9.]+/', '', $result[1])); - $this->_agent = str_replace(array("Mozilla", "Gecko"), "MSIE", $this->_agent); - } - } // Test for Pocket IE - else if (stripos($this->_agent, 'mspie') !== false || stripos($this->_agent, 'pocket') !== false) { - $aresult = explode(' ', stristr($this->_agent, 'mspie')); - if (isset($aresult[1])) { - $this->setPlatform(self::PLATFORM_WINDOWS_CE); - $this->setBrowser(self::BROWSER_POCKET_IE); - $this->setMobile(true); - - if (stripos($this->_agent, 'mspie') !== false) { - $this->setVersion($aresult[1]); - } else { - $aversion = explode('/', $this->_agent); - if (isset($aversion[1])) { - $this->setVersion($aversion[1]); - } - } - return true; - } - } - return false; - } - - /** - * Determine if the browser is Opera or not (last updated 1.7) - * @return boolean True if the browser is Opera otherwise false - */ - protected function checkBrowserOpera() - { - if (stripos($this->_agent, 'opera mini') !== false) { - $resultant = stristr($this->_agent, 'opera mini'); - if (preg_match('/\//', $resultant)) { - $aresult = explode('/', $resultant); - if (isset($aresult[1])) { - $aversion = explode(' ', $aresult[1]); - $this->setVersion($aversion[0]); - } - } else { - $aversion = explode(' ', stristr($resultant, 'opera mini')); - if (isset($aversion[1])) { - $this->setVersion($aversion[1]); - } - } - $this->_browser_name = self::BROWSER_OPERA_MINI; - $this->setMobile(true); - return true; - } else if (stripos($this->_agent, 'opera') !== false) { - $resultant = stristr($this->_agent, 'opera'); - if (preg_match('/Version\/(1*.*)$/', $resultant, $matches)) { - $this->setVersion($matches[1]); - } else if (preg_match('/\//', $resultant)) { - $aresult = explode('/', str_replace("(", " ", $resultant)); - if (isset($aresult[1])) { - $aversion = explode(' ', $aresult[1]); - $this->setVersion($aversion[0]); - } - } else { - $aversion = explode(' ', stristr($resultant, 'opera')); - $this->setVersion(isset($aversion[1]) ? $aversion[1] : ""); - } - if (stripos($this->_agent, 'Opera Mobi') !== false) { - $this->setMobile(true); - } - $this->_browser_name = self::BROWSER_OPERA; - return true; - } else if (stripos($this->_agent, 'OPR') !== false) { - $resultant = stristr($this->_agent, 'OPR'); - if (preg_match('/\//', $resultant)) { - $aresult = explode('/', str_replace("(", " ", $resultant)); - if (isset($aresult[1])) { - $aversion = explode(' ', $aresult[1]); - $this->setVersion($aversion[0]); - } - } - if (stripos($this->_agent, 'Mobile') !== false) { - $this->setMobile(true); - } - $this->_browser_name = self::BROWSER_OPERA; - return true; - } - return false; - } - - /** - * Determine if the browser is Chrome or not (last updated 1.7) - * @return boolean True if the browser is Chrome otherwise false - */ - protected function checkBrowserChrome() - { - if (stripos($this->_agent, 'Chrome') !== false) { - $aresult = explode('/', stristr($this->_agent, 'Chrome')); - if (isset($aresult[1])) { - $aversion = explode(' ', $aresult[1]); - $this->setVersion($aversion[0]); - $this->setBrowser(self::BROWSER_CHROME); - //Chrome on Android - if (stripos($this->_agent, 'Android') !== false) { - if (stripos($this->_agent, 'Mobile') !== false) { - $this->setMobile(true); - } else { - $this->setTablet(true); - } - } - return true; - } - } - return false; - } - - - /** - * Determine if the browser is WebTv or not (last updated 1.7) - * @return boolean True if the browser is WebTv otherwise false - */ - protected function checkBrowserWebTv() - { - if (stripos($this->_agent, 'webtv') !== false) { - $aresult = explode('/', stristr($this->_agent, 'webtv')); - if (isset($aresult[1])) { - $aversion = explode(' ', $aresult[1]); - $this->setVersion($aversion[0]); - $this->setBrowser(self::BROWSER_WEBTV); - return true; - } - } - return false; - } - - /** - * Determine if the browser is NetPositive or not (last updated 1.7) - * @return boolean True if the browser is NetPositive otherwise false - */ - protected function checkBrowserNetPositive() - { - if (stripos($this->_agent, 'NetPositive') !== false) { - $aresult = explode('/', stristr($this->_agent, 'NetPositive')); - if (isset($aresult[1])) { - $aversion = explode(' ', $aresult[1]); - $this->setVersion(str_replace(array('(', ')', ';'), '', $aversion[0])); - $this->setBrowser(self::BROWSER_NETPOSITIVE); - return true; - } - } - return false; - } - - /** - * Determine if the browser is Galeon or not (last updated 1.7) - * @return boolean True if the browser is Galeon otherwise false - */ - protected function checkBrowserGaleon() - { - if (stripos($this->_agent, 'galeon') !== false) { - $aresult = explode(' ', stristr($this->_agent, 'galeon')); - $aversion = explode('/', $aresult[0]); - if (isset($aversion[1])) { - $this->setVersion($aversion[1]); - $this->setBrowser(self::BROWSER_GALEON); - return true; - } - } - return false; - } - - /** - * Determine if the browser is Konqueror or not (last updated 1.7) - * @return boolean True if the browser is Konqueror otherwise false - */ - protected function checkBrowserKonqueror() - { - if (stripos($this->_agent, 'Konqueror') !== false) { - $aresult = explode(' ', stristr($this->_agent, 'Konqueror')); - $aversion = explode('/', $aresult[0]); - if (isset($aversion[1])) { - $this->setVersion($aversion[1]); - $this->setBrowser(self::BROWSER_KONQUEROR); - return true; - } - } - return false; - } - - /** - * Determine if the browser is iCab or not (last updated 1.7) - * @return boolean True if the browser is iCab otherwise false - */ - protected function checkBrowserIcab() - { - if (stripos($this->_agent, 'icab') !== false) { - $aversion = explode(' ', stristr(str_replace('/', ' ', $this->_agent), 'icab')); - if (isset($aversion[1])) { - $this->setVersion($aversion[1]); - $this->setBrowser(self::BROWSER_ICAB); - return true; - } - } - return false; - } - - /** - * Determine if the browser is OmniWeb or not (last updated 1.7) - * @return boolean True if the browser is OmniWeb otherwise false - */ - protected function checkBrowserOmniWeb() - { - if (stripos($this->_agent, 'omniweb') !== false) { - $aresult = explode('/', stristr($this->_agent, 'omniweb')); - $aversion = explode(' ', isset($aresult[1]) ? $aresult[1] : ""); - $this->setVersion($aversion[0]); - $this->setBrowser(self::BROWSER_OMNIWEB); - return true; - } - return false; - } - - /** - * Determine if the browser is Phoenix or not (last updated 1.7) - * @return boolean True if the browser is Phoenix otherwise false - */ - protected function checkBrowserPhoenix() - { - if (stripos($this->_agent, 'Phoenix') !== false) { - $aversion = explode('/', stristr($this->_agent, 'Phoenix')); - if (isset($aversion[1])) { - $this->setVersion($aversion[1]); - $this->setBrowser(self::BROWSER_PHOENIX); - return true; - } - } - return false; - } - - /** - * Determine if the browser is Firebird or not (last updated 1.7) - * @return boolean True if the browser is Firebird otherwise false - */ - protected function checkBrowserFirebird() - { - if (stripos($this->_agent, 'Firebird') !== false) { - $aversion = explode('/', stristr($this->_agent, 'Firebird')); - if (isset($aversion[1])) { - $this->setVersion($aversion[1]); - $this->setBrowser(self::BROWSER_FIREBIRD); - return true; - } - } - return false; - } - - /** - * Determine if the browser is Netscape Navigator 9+ or not (last updated 1.7) - * NOTE: (http://browser.netscape.com/ - Official support ended on March 1st, 2008) - * @return boolean True if the browser is Netscape Navigator 9+ otherwise false - */ - protected function checkBrowserNetscapeNavigator9Plus() - { - if (stripos($this->_agent, 'Firefox') !== false && preg_match('/Navigator\/([^ ]*)/i', $this->_agent, $matches)) { - $this->setVersion($matches[1]); - $this->setBrowser(self::BROWSER_NETSCAPE_NAVIGATOR); - return true; - } else if (stripos($this->_agent, 'Firefox') === false && preg_match('/Netscape6?\/([^ ]*)/i', $this->_agent, $matches)) { - $this->setVersion($matches[1]); - $this->setBrowser(self::BROWSER_NETSCAPE_NAVIGATOR); - return true; - } - return false; - } - - /** - * Determine if the browser is Shiretoko or not (https://wiki.mozilla.org/Projects/shiretoko) (last updated 1.7) - * @return boolean True if the browser is Shiretoko otherwise false - */ - protected function checkBrowserShiretoko() - { - if (stripos($this->_agent, 'Mozilla') !== false && preg_match('/Shiretoko\/([^ ]*)/i', $this->_agent, $matches)) { - $this->setVersion($matches[1]); - $this->setBrowser(self::BROWSER_SHIRETOKO); - return true; - } - return false; - } - - /** - * Determine if the browser is Ice Cat or not (http://en.wikipedia.org/wiki/GNU_IceCat) (last updated 1.7) - * @return boolean True if the browser is Ice Cat otherwise false - */ - protected function checkBrowserIceCat() - { - if (stripos($this->_agent, 'Mozilla') !== false && preg_match('/IceCat\/([^ ]*)/i', $this->_agent, $matches)) { - $this->setVersion($matches[1]); - $this->setBrowser(self::BROWSER_ICECAT); - return true; - } - return false; - } - - /** - * Determine if the browser is Nokia or not (last updated 1.7) - * @return boolean True if the browser is Nokia otherwise false - */ - protected function checkBrowserNokia() - { - if (preg_match("/Nokia([^\/]+)\/([^ SP]+)/i", $this->_agent, $matches)) { - $this->setVersion($matches[2]); - if (stripos($this->_agent, 'Series60') !== false || strpos($this->_agent, 'S60') !== false) { - $this->setBrowser(self::BROWSER_NOKIA_S60); - } else { - $this->setBrowser(self::BROWSER_NOKIA); - } - $this->setMobile(true); - return true; - } - return false; - } - - /** - * Determine if the browser is Firefox or not (last updated 1.7) - * @return boolean True if the browser is Firefox otherwise false - */ - protected function checkBrowserFirefox() - { - if (stripos($this->_agent, 'safari') === false) { - if (preg_match("/Firefox[\/ \(]([^ ;\)]+)/i", $this->_agent, $matches)) { - $this->setVersion($matches[1]); - $this->setBrowser(self::BROWSER_FIREFOX); - //Firefox on Android - if (stripos($this->_agent, 'Android') !== false) { - if (stripos($this->_agent, 'Mobile') !== false) { - $this->setMobile(true); - } else { - $this->setTablet(true); - } - } - return true; - } else if (preg_match("/Firefox$/i", $this->_agent, $matches)) { - $this->setVersion(""); - $this->setBrowser(self::BROWSER_FIREFOX); - return true; - } - } - return false; - } - - /** - * Determine if the browser is Firefox or not (last updated 1.7) - * @return boolean True if the browser is Firefox otherwise false - */ - protected function checkBrowserIceweasel() - { - if (stripos($this->_agent, 'Iceweasel') !== false) { - $aresult = explode('/', stristr($this->_agent, 'Iceweasel')); - if (isset($aresult[1])) { - $aversion = explode(' ', $aresult[1]); - $this->setVersion($aversion[0]); - $this->setBrowser(self::BROWSER_ICEWEASEL); - return true; - } - } - return false; - } - - /** - * Determine if the browser is Mozilla or not (last updated 1.7) - * @return boolean True if the browser is Mozilla otherwise false - */ - protected function checkBrowserMozilla() - { - if (stripos($this->_agent, 'mozilla') !== false && preg_match('/rv:[0-9].[0-9][a-b]?/i', $this->_agent) && stripos($this->_agent, 'netscape') === false) { - $aversion = explode(' ', stristr($this->_agent, 'rv:')); - preg_match('/rv:[0-9].[0-9][a-b]?/i', $this->_agent, $aversion); - $this->setVersion(str_replace('rv:', '', $aversion[0])); - $this->setBrowser(self::BROWSER_MOZILLA); - return true; - } else if (stripos($this->_agent, 'mozilla') !== false && preg_match('/rv:[0-9]\.[0-9]/i', $this->_agent) && stripos($this->_agent, 'netscape') === false) { - $aversion = explode('', stristr($this->_agent, 'rv:')); - $this->setVersion(str_replace('rv:', '', $aversion[0])); - $this->setBrowser(self::BROWSER_MOZILLA); - return true; - } else if (stripos($this->_agent, 'mozilla') !== false && preg_match('/mozilla\/([^ ]*)/i', $this->_agent, $matches) && stripos($this->_agent, 'netscape') === false) { - $this->setVersion($matches[1]); - $this->setBrowser(self::BROWSER_MOZILLA); - return true; - } - return false; - } - - /** - * Determine if the browser is Lynx or not (last updated 1.7) - * @return boolean True if the browser is Lynx otherwise false - */ - protected function checkBrowserLynx() - { - if (stripos($this->_agent, 'lynx') !== false) { - $aresult = explode('/', stristr($this->_agent, 'Lynx')); - $aversion = explode(' ', (isset($aresult[1]) ? $aresult[1] : "")); - $this->setVersion($aversion[0]); - $this->setBrowser(self::BROWSER_LYNX); - return true; - } - return false; - } - - /** - * Determine if the browser is Amaya or not (last updated 1.7) - * @return boolean True if the browser is Amaya otherwise false - */ - protected function checkBrowserAmaya() - { - if (stripos($this->_agent, 'amaya') !== false) { - $aresult = explode('/', stristr($this->_agent, 'Amaya')); - if (isset($aresult[1])) { - $aversion = explode(' ', $aresult[1]); - $this->setVersion($aversion[0]); - $this->setBrowser(self::BROWSER_AMAYA); - return true; - } - } - return false; - } - - /** - * Determine if the browser is Safari or not (last updated 1.7) - * @return boolean True if the browser is Safari otherwise false - */ - protected function checkBrowserSafari() - { - if (stripos($this->_agent, 'Safari') !== false - && stripos($this->_agent, 'iPhone') === false - && stripos($this->_agent, 'iPod') === false - ) { - - $aresult = explode('/', stristr($this->_agent, 'Version')); - if (isset($aresult[1])) { - $aversion = explode(' ', $aresult[1]); - $this->setVersion($aversion[0]); - } else { - $this->setVersion(self::VERSION_UNKNOWN); - } - $this->setBrowser(self::BROWSER_SAFARI); - return true; - } - return false; - } - - protected function checkBrowserSamsung() - { - if (stripos($this->_agent, 'SamsungBrowser') !== false) { - - $aresult = explode('/', stristr($this->_agent, 'SamsungBrowser')); - if (isset($aresult[1])) { - $aversion = explode(' ', $aresult[1]); - $this->setVersion($aversion[0]); - } else { - $this->setVersion(self::VERSION_UNKNOWN); - } - $this->setBrowser(self::BROWSER_SAMSUNG); - return true; - } - return false; - } - - protected function checkBrowserSilk() - { - if (stripos($this->_agent, 'Silk') !== false) { - $aresult = explode('/', stristr($this->_agent, 'Silk')); - if (isset($aresult[1])) { - $aversion = explode(' ', $aresult[1]); - $this->setVersion($aversion[0]); - } else { - $this->setVersion(self::VERSION_UNKNOWN); - } - $this->setBrowser(self::BROWSER_SILK); - return true; - } - return false; - } - - protected function checkBrowserIframely() - { - if (stripos($this->_agent, 'Iframely') !== false) { - $aresult = explode('/', stristr($this->_agent, 'Iframely')); - if (isset($aresult[1])) { - $aversion = explode(' ', $aresult[1]); - $this->setVersion($aversion[0]); - } else { - $this->setVersion(self::VERSION_UNKNOWN); - } - $this->setBrowser(self::BROWSER_I_FRAME); - return true; - } - return false; - } - - protected function checkBrowserCocoa() - { - if (stripos($this->_agent, 'CocoaRestClient') !== false) { - $aresult = explode('/', stristr($this->_agent, 'CocoaRestClient')); - if (isset($aresult[1])) { - $aversion = explode(' ', $aresult[1]); - $this->setVersion($aversion[0]); - } else { - $this->setVersion(self::VERSION_UNKNOWN); - } - $this->setBrowser(self::BROWSER_COCOA); - return true; - } - return false; - } - - /** - * Detect if URL is loaded from FacebookExternalHit - * @return boolean True if it detects FacebookExternalHit otherwise false - */ - protected function checkFacebookExternalHit() - { - if (stristr($this->_agent, 'FacebookExternalHit')) { - $this->setRobot(true); - $this->setFacebook(true); - return true; - } - return false; - } - - /** - * Detect if URL is being loaded from internal Facebook browser - * @return boolean True if it detects internal Facebook browser otherwise false - */ - protected function checkForFacebookIos() - { - if (stristr($this->_agent, 'FBIOS')) { - $this->setFacebook(true); - return true; - } - return false; - } - - /** - * Detect Version for the Safari browser on iOS devices - * @return boolean True if it detects the version correctly otherwise false - */ - protected function getSafariVersionOnIos() - { - $aresult = explode('/', stristr($this->_agent, 'Version')); - if (isset($aresult[1])) { - $aversion = explode(' ', $aresult[1]); - $this->setVersion($aversion[0]); - return true; - } - return false; - } - - /** - * Detect Version for the Chrome browser on iOS devices - * @return boolean True if it detects the version correctly otherwise false - */ - protected function getChromeVersionOnIos() - { - $aresult = explode('/', stristr($this->_agent, 'CriOS')); - if (isset($aresult[1])) { - $aversion = explode(' ', $aresult[1]); - $this->setVersion($aversion[0]); - $this->setBrowser(self::BROWSER_CHROME); - return true; - } - return false; - } - - /** - * Determine if the browser is iPhone or not (last updated 1.7) - * @return boolean True if the browser is iPhone otherwise false - */ - protected function checkBrowseriPhone() - { - if (stripos($this->_agent, 'iPhone') !== false) { - $this->setVersion(self::VERSION_UNKNOWN); - $this->setBrowser(self::BROWSER_IPHONE); - $this->getSafariVersionOnIos(); - $this->getChromeVersionOnIos(); - $this->checkForFacebookIos(); - $this->setMobile(true); - return true; - - } - return false; - } - - /** - * Determine if the browser is iPad or not (last updated 1.7) - * @return boolean True if the browser is iPad otherwise false - */ - protected function checkBrowseriPad() - { - if (stripos($this->_agent, 'iPad') !== false) { - $this->setVersion(self::VERSION_UNKNOWN); - $this->setBrowser(self::BROWSER_IPAD); - $this->getSafariVersionOnIos(); - $this->getChromeVersionOnIos(); - $this->checkForFacebookIos(); - $this->setTablet(true); - return true; - } - return false; - } - - /** - * Determine if the browser is iPod or not (last updated 1.7) - * @return boolean True if the browser is iPod otherwise false - */ - protected function checkBrowseriPod() - { - if (stripos($this->_agent, 'iPod') !== false) { - $this->setVersion(self::VERSION_UNKNOWN); - $this->setBrowser(self::BROWSER_IPOD); - $this->getSafariVersionOnIos(); - $this->getChromeVersionOnIos(); - $this->checkForFacebookIos(); - $this->setMobile(true); - return true; - } - return false; - } - - /** - * Determine if the browser is Android or not (last updated 1.7) - * @return boolean True if the browser is Android otherwise false - */ - protected function checkBrowserAndroid() - { - if (stripos($this->_agent, 'Android') !== false) { - $aresult = explode(' ', stristr($this->_agent, 'Android')); - if (isset($aresult[1])) { - $aversion = explode(' ', $aresult[1]); - $this->setVersion($aversion[0]); - } else { - $this->setVersion(self::VERSION_UNKNOWN); - } - if (stripos($this->_agent, 'Mobile') !== false) { - $this->setMobile(true); - } else { - $this->setTablet(true); - } - $this->setBrowser(self::BROWSER_ANDROID); - return true; - } - return false; - } - - /** - * Determine if the browser is Vivaldi - * @return boolean True if the browser is Vivaldi otherwise false - */ - protected function checkBrowserVivaldi() - { - if (stripos($this->_agent, 'Vivaldi') !== false) { - $aresult = explode('/', stristr($this->_agent, 'Vivaldi')); - if (isset($aresult[1])) { - $aversion = explode(' ', $aresult[1]); - $this->setVersion($aversion[0]); - $this->setBrowser(self::BROWSER_VIVALDI); - return true; - } - } - return false; - } - - /** - * Determine if the browser is Yandex - * @return boolean True if the browser is Yandex otherwise false - */ - protected function checkBrowserYandex() - { - if (stripos($this->_agent, 'YaBrowser') !== false) { - $aresult = explode('/', stristr($this->_agent, 'YaBrowser')); - if (isset($aresult[1])) { - $aversion = explode(' ', $aresult[1]); - $this->setVersion($aversion[0]); - $this->setBrowser(self::BROWSER_YANDEX); - - if (stripos($this->_agent, 'iPad') !== false) { - $this->setTablet(true); - } elseif (stripos($this->_agent, 'Mobile') !== false) { - $this->setMobile(true); - } elseif (stripos($this->_agent, 'Android') !== false) { - $this->setTablet(true); - } - - return true; - } - } - - return false; - } - - /** - * Determine if the browser is a PlayStation - * @return boolean True if the browser is PlayStation otherwise false - */ - protected function checkBrowserPlayStation() - { - if (stripos($this->_agent, 'PlayStation ') !== false) { - $aresult = explode(' ', stristr($this->_agent, 'PlayStation ')); - $this->setBrowser(self::BROWSER_PLAYSTATION); - if (isset($aresult[0])) { - $aversion = explode(')', $aresult[2]); - $this->setVersion($aversion[0]); - if (stripos($this->_agent, 'Portable)') !== false || stripos($this->_agent, 'Vita') !== false) { - $this->setMobile(true); - } - return true; - } - } - return false; - } - - /** - * Determine the user's platform (last updated 2.0) - */ - protected function checkPlatform() - { - if (stripos($this->_agent, 'windows') !== false) { - $this->_platform = self::PLATFORM_WINDOWS; - } else if (stripos($this->_agent, 'iPad') !== false) { - $this->_platform = self::PLATFORM_IPAD; - } else if (stripos($this->_agent, 'iPod') !== false) { - $this->_platform = self::PLATFORM_IPOD; - } else if (stripos($this->_agent, 'iPhone') !== false) { - $this->_platform = self::PLATFORM_IPHONE; - } elseif (stripos($this->_agent, 'mac') !== false) { - $this->_platform = self::PLATFORM_APPLE; - } elseif (stripos($this->_agent, 'android') !== false) { - $this->_platform = self::PLATFORM_ANDROID; - } elseif (stripos($this->_agent, 'Silk') !== false) { - $this->_platform = self::PLATFORM_FIRE_OS; - } elseif (stripos($this->_agent, 'linux') !== false && stripos($this->_agent, 'SMART-TV') !== false) { - $this->_platform = self::PLATFORM_LINUX . '/' . self::PLATFORM_SMART_TV; - } elseif (stripos($this->_agent, 'linux') !== false) { - $this->_platform = self::PLATFORM_LINUX; - } else if (stripos($this->_agent, 'Nokia') !== false) { - $this->_platform = self::PLATFORM_NOKIA; - } else if (stripos($this->_agent, 'BlackBerry') !== false) { - $this->_platform = self::PLATFORM_BLACKBERRY; - } elseif (stripos($this->_agent, 'FreeBSD') !== false) { - $this->_platform = self::PLATFORM_FREEBSD; - } elseif (stripos($this->_agent, 'OpenBSD') !== false) { - $this->_platform = self::PLATFORM_OPENBSD; - } elseif (stripos($this->_agent, 'NetBSD') !== false) { - $this->_platform = self::PLATFORM_NETBSD; - } elseif (stripos($this->_agent, 'OpenSolaris') !== false) { - $this->_platform = self::PLATFORM_OPENSOLARIS; - } elseif (stripos($this->_agent, 'SunOS') !== false) { - $this->_platform = self::PLATFORM_SUNOS; - } elseif (stripos($this->_agent, 'OS\/2') !== false) { - $this->_platform = self::PLATFORM_OS2; - } elseif (stripos($this->_agent, 'BeOS') !== false) { - $this->_platform = self::PLATFORM_BEOS; - } elseif (stripos($this->_agent, 'win') !== false) { - $this->_platform = self::PLATFORM_WINDOWS; - } elseif (stripos($this->_agent, 'Playstation') !== false) { - $this->_platform = self::PLATFORM_PLAYSTATION; - } elseif (stripos($this->_agent, 'Roku') !== false) { - $this->_platform = self::PLATFORM_ROKU; - } elseif (stripos($this->_agent, 'iOS') !== false) { - $this->_platform = self::PLATFORM_IPHONE . '/' . self::PLATFORM_IPAD; - } elseif (stripos($this->_agent, 'tvOS') !== false) { - $this->_platform = self::PLATFORM_APPLE_TV; - } elseif (stripos($this->_agent, 'curl') !== false) { - $this->_platform = self::PLATFORM_TERMINAL; - } elseif (stripos($this->_agent, 'CrOS') !== false) { - $this->_platform = self::PLATFORM_CHROME_OS; - } elseif (stripos($this->_agent, 'okhttp') !== false) { - $this->_platform = self::PLATFORM_JAVA_ANDROID; - } elseif (stripos($this->_agent, 'PostmanRuntime') !== false) { - $this->_platform = self::PLATFORM_POSTMAN; - } elseif (stripos($this->_agent, 'Iframely') !== false) { - $this->_platform = self::PLATFORM_I_FRAME; - } - - } - } -} \ No newline at end of file diff --git a/libraries/index.html b/libraries/index.html deleted file mode 100644 index 566549b..0000000 --- a/libraries/index.html +++ /dev/null @@ -1,10 +0,0 @@ - - - - - Title - - - - - \ No newline at end of file diff --git a/libraries/plugins/IDS/.htaccess b/libraries/plugins/IDS/.htaccess deleted file mode 100644 index 878d02a..0000000 --- a/libraries/plugins/IDS/.htaccess +++ /dev/null @@ -1,5 +0,0 @@ -# in case PHPIDS is placed in the web-root -deny from all - -# silence is golden -php_flag display_errors off \ No newline at end of file diff --git a/libraries/plugins/IDS/Caching/Apc.php b/libraries/plugins/IDS/Caching/Apc.php deleted file mode 100644 index 405aca3..0000000 --- a/libraries/plugins/IDS/Caching/Apc.php +++ /dev/null @@ -1,151 +0,0 @@ -. - * - * PHP version 5.1.6+ - * - * @category Security - * @package PHPIDS - * @author Mario Heiderich - * @author Christian Matthies - * @author Lars Strojny - * @license http://www.gnu.org/licenses/lgpl.html LGPL - * @link http://php-ids.org/ - */ - -require_once 'IDS/Caching/Interface.php'; - -/** - * APC caching wrapper - * - * This class inhabits functionality to get and set cache via memcached. - * - * @category Security - * @package PHPIDS - * @author Yves Berkholz - * @copyright 2007-2009 The PHPIDS Groupoup - * @license http://www.gnu.org/licenses/lgpl.html LGPL - * @version Release: $Id$ - * @link http://php-ids.org/ - * @since Version 0.6.5 - */ -class IDS_Caching_Apc implements IDS_Caching_Interface -{ - - /** - * Caching type - * - * @var string - */ - private $type = null; - - /** - * Cache configuration - * - * @var array - */ - private $config = null; - - /** - * Flag if the filter storage has been found in memcached - * - * @var boolean - */ - private $isCached = false; - - /** - * Holds an instance of this class - * - * @var object - */ - private static $cachingInstance = null; - - - /** - * Constructor - * - * @param string $type caching type - * @param array $init the IDS_Init object - * - * @return void - */ - public function __construct($type, $init) - { - - $this->type = $type; - $this->config = $init->config['Caching']; - } - - /** - * Returns an instance of this class - * - * @param string $type caching type - * @param object $init the IDS_Init object - * - * @return object $this - */ - public static function getInstance($type, $init) - { - - if (!self::$cachingInstance) { - self::$cachingInstance = new IDS_Caching_Apc($type, $init); - } - - return self::$cachingInstance; - } - - /** - * Writes cache data - * - * @param array $data the caching data - * - * @return object $this - */ - public function setCache(array $data) - { - if(!$this->isCached) - apc_store($this->config['key_prefix'] . '.storage', - $data, $this->config['expiration_time']); - return $this; - } - - /** - * Returns the cached data - * - * Note that this method returns false if either type or file cache is - * not set - * - * @return mixed cache data or false - */ - public function getCache() - { - $data = apc_fetch($this->config['key_prefix'] . '.storage'); - $this->isCached = !empty($data); - return $data; - } -} - -/** - * Local variables: - * tab-width: 4 - * c-basic-offset: 4 - * End: - * vim600: sw=4 ts=4 expandtab - */ diff --git a/libraries/plugins/IDS/Caching/Database.php b/libraries/plugins/IDS/Caching/Database.php deleted file mode 100644 index 86b7498..0000000 --- a/libraries/plugins/IDS/Caching/Database.php +++ /dev/null @@ -1,291 +0,0 @@ -. - * - * PHP version 5.1.6+ - * - * @category Security - * @package PHPIDS - * @author Mario Heiderich - * @author Christian Matthies - * @author Lars Strojny - * @license http://www.gnu.org/licenses/lgpl.html LGPL - * @link http://php-ids.org/ - */ - -require_once 'IDS/Caching/Interface.php'; - -/** - * Needed SQL: - * - - #create the database - - CREATE DATABASE IF NOT EXISTS `phpids` DEFAULT CHARACTER - SET utf8 COLLATE utf8_general_ci; - DROP TABLE IF EXISTS `cache`; - - #now select the created datbase and create the table - - CREATE TABLE `cache` ( - `type` VARCHAR( 32 ) NOT null , - `data` TEXT NOT null , - `created` DATETIME NOT null , - `modified` DATETIME NOT null - ) ENGINE = MYISAM ; - */ - -/** - * Database caching wrapper - * - * This class inhabits functionality to get and set cache via a database. - * - * @category Security - * @package PHPIDS - * @author Christian Matthies - * @author Mario Heiderich - * @author Lars Strojny - * @copyright 2007-2009 The PHPIDS Groupup - * @license http://www.gnu.org/licenses/lgpl.html LGPL - * @version Release: $Id:Database.php 517 2007-09-15 15:04:13Z mario $ - * @link http://php-ids.org/ - * @since Version 0.4 - */ -class IDS_Caching_Database implements IDS_Caching_Interface -{ - - /** - * Caching type - * - * @var string - */ - private $type = null; - - /** - * Cache configuration - * - * @var array - */ - private $config = null; - - /** - * DBH - * - * @var object - */ - private $handle = null; - - /** - * Holds an instance of this class - * - * @var object - */ - private static $cachingInstance = null; - - /** - * Constructor - * - * Connects to database. - * - * @param string $type caching type - * @param object $init the IDS_Init object - * - * @return void - */ - public function __construct($type, $init) - { - - $this->type = $type; - $this->config = $init->config['Caching']; - $this->handle = $this->_connect(); - } - - /** - * Returns an instance of this class - * - * @static - * @param string $type caching type - * @param object $init the IDS_Init object - * - * @return object $this - */ - public static function getInstance($type, $init) - { - - if (!self::$cachingInstance) { - self::$cachingInstance = new IDS_Caching_Database($type, $init); - } - return self::$cachingInstance; - } - - /** - * Writes cache data into the database - * - * @param array $data the caching data - * - * @throws PDOException if a db error occurred - * @return object $this - */ - public function setCache(array $data) - { - - $handle = $this->handle; - - $rows = $handle->query('SELECT created FROM `' . - $this->config['table'].'`'); - - if (!$rows || $rows->rowCount() === 0) { - - $this->_write($handle, $data); - } else { - - foreach ($rows as $row) { - - if ((time()-strtotime($row['created'])) > - $this->config['expiration_time']) { - - $this->_write($handle, $data); - } - } - } - - return $this; - } - - /** - * Returns the cached data - * - * Note that this method returns false if either type or file cache is - * not set - * - * @throws PDOException if a db error occurred - * @return mixed cache data or false - */ - public function getCache() - { - - try{ - $handle = $this->handle; - $result = $handle->prepare('SELECT * FROM `' . - $this->config['table'] . - '` where type=?'); - $result->execute(array($this->type)); - - foreach ($result as $row) { - return unserialize($row['data']); - } - - } catch (PDOException $e) { - throw new PDOException('PDOException: ' . $e->getMessage()); - } - return false; - } - - /** - * Connect to database and return a handle - * - * @return object PDO - * @throws Exception if connection parameters are faulty - * @throws PDOException if a db error occurred - */ - private function _connect() - { - - // validate connection parameters - if (!$this->config['wrapper'] - || !$this->config['user'] - || !$this->config['password'] - || !$this->config['table']) { - - throw new Exception(' - Insufficient connection parameters' - ); - } - - // try to connect - try { - $handle = new PDO( - $this->config['wrapper'], - $this->config['user'], - $this->config['password'] - ); - $handle->setAttribute( - PDO::MYSQL_ATTR_USE_BUFFERED_QUERY, true - ); - - } catch (PDOException $e) { - throw new PDOException('PDOException: ' . $e->getMessage()); - } - return $handle; - } - - /** - * Write the cache data to the table - * - * @param object $handle the database handle - * @param array $data the caching data - * - * @return object PDO - * @throws PDOException if a db error occurred - */ - private function _write($handle, $data) - { - - try { - $handle->query('TRUNCATE ' . - $this->config['table'].''); - $statement = $handle->prepare(' - INSERT INTO `' . - $this->config['table'].'` ( - type, - data, - created, - modified - ) - VALUES ( - :type, - :data, - now(), - now() - ) - '); - - $statement->bindParam('type', - $handle->quote($this->type)); - $statement->bindParam('data', serialize($data)); - - if (!$statement->execute()) { - throw new PDOException($statement->errorCode()); - } - - } catch (PDOException $e) { - throw new PDOException('PDOException: ' . $e->getMessage()); - } - } -} - -/** - * Local variables: - * tab-width: 4 - * c-basic-offset: 4 - * End: - * vim600: sw=4 ts=4 expandtab - */ diff --git a/libraries/plugins/IDS/Caching/Factory.php b/libraries/plugins/IDS/Caching/Factory.php deleted file mode 100644 index 1711acb..0000000 --- a/libraries/plugins/IDS/Caching/Factory.php +++ /dev/null @@ -1,94 +0,0 @@ -. - * - * PHP version 5.1.6+ - * - * @category Security - * @package PHPIDS - * @author Mario Heiderich - * @author Christian Matthies - * @author Lars Strojny - * @license http://www.gnu.org/licenses/lgpl.html LGPL - * @link http://php-ids.org/ - */ - -/** - * Caching factory - * - * This class is used as a factory to load the correct concrete caching - * implementation. - * - * @category Security - * @package PHPIDS - * @author Christian Matthies - * @author Mario Heiderich - * @author Lars Strojny - * @copyright 2007-2009 The PHPIDS Group - * @license http://www.gnu.org/licenses/lgpl.html LGPL - * @version Release: $Id:Factory.php 517 2007-09-15 15:04:13Z mario $ - * @link http://php-ids.org/ - * @since Version 0.4 - */ -class IDS_Caching -{ - - /** - * Factory method - * - * @param object $init the IDS_Init object - * @param string $type the caching type - * - * @return object the caching facility - */ - public static function factory($init, $type) - { - - $object = false; - $wrapper = preg_replace( - '/\W+/m', - null, - ucfirst($init->config['Caching']['caching']) - ); - $class = 'IDS_Caching_' . $wrapper; - $path = dirname(__FILE__) . DIRECTORY_SEPARATOR . - $wrapper . '.php'; - - if (file_exists($path)) { - include_once $path; - - if (class_exists($class)) { - $object = call_user_func(array($class, 'getInstance'), - $type, $init); - } - } - - return $object; - } -} - -/** - * Local variables: - * tab-width: 4 - * c-basic-offset: 4 - * End: - * vim600: sw=4 ts=4 expandtab - */ diff --git a/libraries/plugins/IDS/Caching/File.php b/libraries/plugins/IDS/Caching/File.php deleted file mode 100644 index 5ed3986..0000000 --- a/libraries/plugins/IDS/Caching/File.php +++ /dev/null @@ -1,187 +0,0 @@ -. - * - * PHP version 5.1.6+ - * - * @category Security - * @package PHPIDS - * @author Mario Heiderich - * @author Christian Matthies - * @author Lars Strojny - * @license http://www.gnu.org/licenses/lgpl.html LGPL - * @link http://php-ids.org/ - */ - -require_once 'IDS/Caching/Interface.php'; - -/** - * File caching wrapper - * - * This class inhabits functionality to get and set cache via a static flatfile. - * - * @category Security - * @package PHPIDS - * @author Christian Matthies - * @author Mario Heiderich - * @author Lars Strojny - * @copyright 2007-2009 The PHPIDS Group - * @license http://www.gnu.org/licenses/lgpl.html LGPL - * @version Release: $Id:File.php 517 2007-09-15 15:04:13Z mario $ - * @link http://php-ids.org/ - * @since Version 0.4 - */ -class IDS_Caching_File implements IDS_Caching_Interface -{ - - /** - * Caching type - * - * @var string - */ - private $type = null; - - /** - * Cache configuration - * - * @var array - */ - private $config = null; - - /** - * Path to cache file - * - * @var string - */ - private $path = null; - - /** - * Holds an instance of this class - * - * @var object - */ - private static $cachingInstance = null; - - /** - * Constructor - * - * @param string $type caching type - * @param object $init the IDS_Init object - * - * @return void - */ - public function __construct($type, $init) - { - - $this->type = $type; - $this->config = $init->config['Caching']; - $this->path = $init->getBasePath() . $this->config['path']; - - if (file_exists($this->path) && !is_writable($this->path)) { - throw new Exception('Make sure all files in ' . - htmlspecialchars($this->path, ENT_QUOTES, 'UTF-8') . - 'are writeable!'); - } - } - - /** - * Returns an instance of this class - * - * @param string $type caching type - * @param object $init the IDS_Init object - * - * @return object $this - */ - public static function getInstance($type, $init) - { - if (!self::$cachingInstance) { - self::$cachingInstance = new IDS_Caching_File($type, $init); - } - - return self::$cachingInstance; - } - - /** - * Writes cache data into the file - * - * @param array $data the cache data - * - * @throws Exception if cache file couldn't be created - * @return object $this - */ - public function setCache(array $data) - { - - if (!is_writable(preg_replace('/[\/][^\/]+\.[^\/]++$/', null, - $this->path))) { - throw new Exception('Temp directory ' . - htmlspecialchars($this->path, ENT_QUOTES, 'UTF-8') . - ' seems not writable'); - } - - if ((!file_exists($this->path) || (time()-filectime($this->path)) > - $this->config['expiration_time'])) { - $handle = @fopen($this->path, 'w+'); - $serialized = @serialize($data); - - if (!$handle) { - throw new Exception("Cache file couldn't be created"); - } - if (!$serialized) { - throw new Exception("Cache data couldn't be serialized"); - } - - fwrite($handle, $serialized); - fclose($handle); - } - - return $this; - } - - /** - * Returns the cached data - * - * Note that this method returns false if either type or file cache is - * not set - * - * @return mixed cache data or false - */ - public function getCache() - { - - // make sure filters are parsed again if cache expired - if (file_exists($this->path) && (time()-filectime($this->path)) < - $this->config['expiration_time']) { - $data = unserialize(file_get_contents($this->path)); - return $data; - } - - return false; - } -} - -/** - * Local variables: - * tab-width: 4 - * c-basic-offset: 4 - * End: - * vim600: sw=4 ts=4 expandtab - */ diff --git a/libraries/plugins/IDS/Caching/Interface.php b/libraries/plugins/IDS/Caching/Interface.php deleted file mode 100644 index d9558e8..0000000 --- a/libraries/plugins/IDS/Caching/Interface.php +++ /dev/null @@ -1,73 +0,0 @@ -. - * - * PHP version 5.1.6+ - * - * @category Security - * @package PHPIDS - * @author Mario Heiderich - * @author Christian Matthies - * @author Lars Strojny - * @license http://www.gnu.org/licenses/lgpl.html LGPL - * @link http://php-ids.org/ - */ - -/** - * Caching wrapper interface - * - * @category Security - * @package PHPIDS - * @author Christian Matthies - * @author Mario Heiderich - * @author Lars Strojny - * @copyright 2007-2009 The PHPIDS Group - * @version SVN: $Id:Interface.php 517 2007-09-15 15:04:13Z mario $ - * @license http://www.gnu.org/licenses/lgpl.html LGPL - * @since Version 0.4 - * @link http://php-ids.org/ - */ -interface IDS_Caching_Interface -{ - /** - * Interface method - * - * @param array $data the cache data - * - * @return void - */ - public function setCache(array $data); - - /** - * Interface method - * - * @return void - */ - public function getCache(); -} - -/** - * Local variables: - * tab-width: 4 - * c-basic-offset: 4 - * End: - * vim600: sw=4 ts=4 expandtab - */ diff --git a/libraries/plugins/IDS/Caching/Memcached.php b/libraries/plugins/IDS/Caching/Memcached.php deleted file mode 100644 index 1d09296..0000000 --- a/libraries/plugins/IDS/Caching/Memcached.php +++ /dev/null @@ -1,195 +0,0 @@ -. - * - * PHP version 5.1.6+ - * - * @category Security - * @package PHPIDS - * @author Mario Heiderich - * @author Christian Matthies - * @author Lars Strojny - * @license http://www.gnu.org/licenses/lgpl.html LGPL - * @link http://php-ids.org/ - */ - -require_once 'IDS/Caching/Interface.php'; - -/** - * File caching wrapper - * - * This class inhabits functionality to get and set cache via memcached. - * - * @category Security - * @package PHPIDS - * @author Christian Matthies - * @author Mario Heiderich - * @author Lars Strojny - * @copyright 2007-2009 The PHPIDS Groupoup - * @license http://www.gnu.org/licenses/lgpl.html LGPL - * @version Release: $Id:Memcached.php 517 2007-09-15 15:04:13Z mario $ - * @link http://php-ids.org/ - * @since Version 0.4 - */ -class IDS_Caching_Memcached implements IDS_Caching_Interface -{ - - /** - * Caching type - * - * @var string - */ - private $type = null; - - /** - * Cache configuration - * - * @var array - */ - private $config = null; - - /** - * Flag if the filter storage has been found in memcached - * - * @var boolean - */ - private $isCached = false; - - /** - * Memcache object - * - * @var object - */ - private $memcache = null; - - /** - * Holds an instance of this class - * - * @var object - */ - private static $cachingInstance = null; - - - /** - * Constructor - * - * @param string $type caching type - * @param array $init the IDS_Init object - * - * @return void - */ - public function __construct($type, $init) - { - - $this->type = $type; - $this->config = $init->config['Caching']; - - $this->_connect(); - } - - /** - * Returns an instance of this class - * - * @param string $type caching type - * @param object $init the IDS_Init object - * - * @return object $this - */ - public static function getInstance($type, $init) - { - - if (!self::$cachingInstance) { - self::$cachingInstance = new IDS_Caching_Memcached($type, $init); - } - - return self::$cachingInstance; - } - - /** - * Writes cache data - * - * @param array $data the caching data - * - * @return object $this - */ - public function setCache(array $data) - { - - if(!$this->isCached) { - $this->memcache->set( - $this->config['key_prefix'] . '.storage', - $data, false, $this->config['expiration_time'] - ); - } - - return $this; - } - - /** - * Returns the cached data - * - * Note that this method returns false if either type or file cache is - * not set - * - * @return mixed cache data or false - */ - public function getCache() - { - - $data = $this->memcache->get( - $this->config['key_prefix'] . - '.storage' - ); - $this->isCached = !empty($data); - - return $data; - } - - /** - * Connect to the memcached server - * - * @throws Exception if connection parameters are insufficient - * @return void - */ - private function _connect() - { - - if ($this->config['host'] && $this->config['port']) { - // establish the memcache connection - $this->memcache = new Memcache; - $this->memcache->pconnect( - $this->config['host'], - $this->config['port'] - ); - - } else { - throw new Exception('Insufficient connection parameters'); - } - } -} - -/** - * Local variables: - * tab-width: 4 - * c-basic-offset: 4 - * End: - * vim600: sw=4 ts=4 expandtab - */ diff --git a/libraries/plugins/IDS/Caching/Session.php b/libraries/plugins/IDS/Caching/Session.php deleted file mode 100644 index aab81f7..0000000 --- a/libraries/plugins/IDS/Caching/Session.php +++ /dev/null @@ -1,146 +0,0 @@ -. - * - * PHP version 5.1.6+ - * - * @category Security - * @package PHPIDS - * @author Mario Heiderich - * @author Christian Matthies - * @author Lars Strojny - * @license http://www.gnu.org/licenses/lgpl.html LGPL - * @link http://php-ids.org/ - */ - -require_once 'IDS/Caching/Interface.php'; - -/** - * File caching wrapper - * - * This class inhabits functionality to get and set cache via session. - * - * @category Security - * @package PHPIDS - * @author Christian Matthies - * @author Mario Heiderich - * @author Lars Strojny - * @copyright 2007-2009 The PHPIDS Group - * @license http://www.gnu.org/licenses/lgpl.html LGPL - * @version Release: $Id:Session.php 517 2007-09-15 15:04:13Z mario $ - * @link http://php-ids.org/ - * @since Version 0.4 - */ -class IDS_Caching_Session implements IDS_Caching_Interface -{ - - /** - * Caching type - * - * @var string - */ - private $type = null; - - /** - * Cache configuration - * - * @var array - */ - private $config = null; - - /** - * Holds an instance of this class - * - * @var object - */ - private static $cachingInstance = null; - - /** - * Constructor - * - * @param string $type caching type - * @param object $init the IDS_Init object - * - * @return void - */ - public function __construct($type, $init) - { - $this->type = $type; - $this->config = $init->config['Caching']; - } - - /** - * Returns an instance of this class - * - * @param string $type caching type - * @param object $init the IDS_Init object - * - * @return object $this - */ - public static function getInstance($type, $init) - { - - if (!self::$cachingInstance) { - self::$cachingInstance = new IDS_Caching_Session($type, $init); - } - - return self::$cachingInstance; - } - - /** - * Writes cache data into the session - * - * @param array $data the caching data - * - * @return object $this - */ - public function setCache(array $data) - { - - $_SESSION['PHPIDS'][$this->type] = $data; - return $this; - } - - /** - * Returns the cached data - * - * Note that this method returns false if either type or file cache is not set - * - * @return mixed cache data or false - */ - public function getCache() - { - - if ($this->type && $_SESSION['PHPIDS'][$this->type]) { - return $_SESSION['PHPIDS'][$this->type]; - } - - return false; - } -} - -/** - * Local variables: - * tab-width: 4 - * c-basic-offset: 4 - * End: - * vim600: sw=4 ts=4 expandtab - */ diff --git a/libraries/plugins/IDS/Config/Config.ini.php b/libraries/plugins/IDS/Config/Config.ini.php deleted file mode 100644 index 1480a62..0000000 --- a/libraries/plugins/IDS/Config/Config.ini.php +++ /dev/null @@ -1,89 +0,0 @@ -; - -; PHPIDS Config.ini - -; General configuration settings - - -[General] - - ; basic settings - customize to make the PHPIDS work at all - filter_type = xml - - base_path = /full/path/to/IDS/ - use_base_path = false - - filter_path = default_filter.xml - tmp_path = tmp - scan_keys = false - - ; in case you want to use a different HTMLPurifier source, specify it here - ; By default, those files are used that are being shipped with PHPIDS - HTML_Purifier_Path = vendors/htmlpurifier/HTMLPurifier.auto.php - HTML_Purifier_Cache = vendors/htmlpurifier/HTMLPurifier/DefinitionCache/Serializer - - ; define which fields contain html and need preparation before - ; hitting the PHPIDS rules (new in PHPIDS 0.5) - ;html[] = POST.__wysiwyg - - ; define which fields contain JSON data and should be treated as such - ; for fewer false positives (new in PHPIDS 0.5.3) - ;json[] = POST.__jsondata - - ; define which fields shouldn't be monitored (a[b]=c should be referenced via a.b) - exceptions[] = GET.__utmz - exceptions[] = GET.__utmc - - ; you can use regular expressions for wildcard exceptions - example: /.*foo/i - - ; PHPIDS should run with PHP 5.1.2 but this is untested - set - ; this value to force compatibilty with minor versions - min_php_version = 5.1.6 - -; If you use the PHPIDS logger you can define specific configuration here - -[Logging] - - ; file logging - path = tmp/phpids_log.txt - - ; email logging - - ; note that enabling safemode you can prevent spam attempts, - ; see documentation - recipients[] = test@test.com.invalid - subject = "PHPIDS detected an intrusion attempt!" - header = "From: info@phpids.org" - envelope = "" - safemode = true - urlencode = true - allowed_rate = 15 - - ; database logging - - wrapper = "mysql:host=localhost;port=3306;dbname=phpids" - user = phpids_user - password = 123456 - table = intrusions - -; If you would like to use other methods than file caching you can configure them here - -[Caching] - - ; caching: session|file|database|memcached|none - caching = file - expiration_time = 600 - - ; file cache - path = tmp/default_filter.cache - - ; database cache - wrapper = "mysql:host=localhost;port=3306;dbname=phpids" - user = phpids_user - password = 123456 - table = cache - - ; memcached - ;host = localhost - ;port = 11211 - ;key_prefix = PHPIDS diff --git a/libraries/plugins/IDS/Converter.php b/libraries/plugins/IDS/Converter.php deleted file mode 100644 index 4f38725..0000000 --- a/libraries/plugins/IDS/Converter.php +++ /dev/null @@ -1,750 +0,0 @@ -. - * - * PHP version 5.1.6+ - * - * @category Security - * @package PHPIDS - * @author Mario Heiderich - * @author Christian Matthies - * @author Lars Strojny - * @license http://www.gnu.org/licenses/lgpl.html LGPL - * @link http://php-ids.org/ - */ - -/** - * PHPIDS specific utility class to convert charsets manually - * - * Note that if you make use of IDS_Converter::runAll(), existing class - * methods will be executed in the same order as they are implemented in the - * class tree! - * - * @category Security - * @package PHPIDS - * @author Christian Matthies - * @author Mario Heiderich - * @author Lars Strojny - * @copyright 2007-2009 The PHPIDS Group - * @license http://www.gnu.org/licenses/lgpl.html LGPL - * @version Release: $Id:Converter.php 517 2007-09-15 15:04:13Z mario $ - * @link http://php-ids.org/ - */ -class IDS_Converter -{ - /** - * Runs all converter functions - * - * Note that if you make use of IDS_Converter::runAll(), existing class - * methods will be executed in the same order as they are implemented in the - * class tree! - * - * @param string $value the value to convert - * - * @static - * @return string - */ - public static function runAll($value) - { - foreach (get_class_methods(__CLASS__) as $method) { - - if (strpos($method, 'run') === 0) { - continue; - } - $value = self::$method($value); - } - - return $value; - } - - /** - * Check for comments and erases them if available - * - * @param string $value the value to convert - * - * @static - * @return string - */ - public static function convertFromCommented($value) - { - // check for existing comments - if (preg_match('/(?:\|\/\*|\*\/|\/\/\W*\w+\s*$)|' . - '(?:--[^-]*-)/ms', $value)) { - - $pattern = array( - '/(?:(?:))/ms', - '/(?:(?:\/\*\/*[^\/\*]*)+\*\/)/ms', - '/(?:--[^-]*-)/ms' - ); - - $converted = preg_replace($pattern, ';', $value); - $value .= "\n" . $converted; - } - - //make sure inline comments are detected and converted correctly - $value = preg_replace('/(<\w+)\/+(\w+=?)/m', '$1/$2', $value); - $value = preg_replace('/[^\\\:]\/\/(.*)$/m', '/**/$1', $value); - $value = preg_replace('/([^\-&])#.*[\r\n\v\f]/m', '$1', $value); - $value = preg_replace('/([^&\-])#.*\n/m', '$1 ', $value); - $value = preg_replace('/^#.*\n/m', ' ', $value); - - return $value; - } - - /** - * Strip newlines - * - * @param string $value the value to convert - * - * @static - * @return string - */ - public static function convertFromWhiteSpace($value) - { - //check for inline linebreaks - $search = array('\r', '\n', '\f', '\t', '\v'); - $value = str_replace($search, ';', $value); - - // replace replacement characters regular spaces - $value = str_replace('�', ' ', $value); - - //convert real linebreaks - return preg_replace('/(?:\n|\r|\v)/m', ' ', $value); - } - - /** - * Checks for common charcode pattern and decodes them - * - * @param string $value the value to convert - * - * @static - * @return string - */ - public static function convertFromJSCharcode($value) - { - $matches = array(); - - // check if value matches typical charCode pattern - if (preg_match_all('/(?:[\d+-=\/\* ]+(?:\s?,\s?[\d+-=\/\* ]+)){4,}/ms', - $value, $matches)) { - - $converted = ''; - $string = implode(',', $matches[0]); - $string = preg_replace('/\s/', '', $string); - $string = preg_replace('/\w+=/', '', $string); - $charcode = explode(',', $string); - - foreach ($charcode as $char) { - $char = preg_replace('/\W0/s', '', $char); - - if (preg_match_all('/\d*[+-\/\* ]\d+/', $char, $matches)) { - $match = preg_split('/(\W?\d+)/', - (implode('', $matches[0])), - null, - PREG_SPLIT_DELIM_CAPTURE); - - if (array_sum($match) >= 20 && array_sum($match) <= 127) { - $converted .= chr(array_sum($match)); - } - - } elseif (!empty($char) && $char >= 20 && $char <= 127) { - $converted .= chr($char); - } - } - - $value .= "\n" . $converted; - } - - // check for octal charcode pattern - if (preg_match_all('/(?:(?:[\\\]+\d+[ \t]*){8,})/ims', $value, $matches)) { - - $converted = ''; - $charcode = explode('\\', preg_replace('/\s/', '', implode(',', - $matches[0]))); - - foreach ($charcode as $char) { - if (!empty($char)) { - if (octdec($char) >= 20 && octdec($char) <= 127) { - $converted .= chr(octdec($char)); - } - } - } - $value .= "\n" . $converted; - } - - // check for hexadecimal charcode pattern - if (preg_match_all('/(?:(?:[\\\]+\w+\s*){8,})/ims', $value, $matches)) { - - $converted = ''; - $charcode = explode('\\', preg_replace('/[ux]/', '', implode(',', - $matches[0]))); - - foreach ($charcode as $char) { - if (!empty($char)) { - if (hexdec($char) >= 20 && hexdec($char) <= 127) { - $converted .= chr(hexdec($char)); - } - } - } - $value .= "\n" . $converted; - } - - return $value; - } - - /** - * Eliminate JS regex modifiers - * - * @param string $value the value to convert - * - * @static - * @return string - */ - public static function convertJSRegexModifiers($value) - { - $value = preg_replace('/\/[gim]+/', '/', $value); - - return $value; - } - - /** - * Converts from hex/dec entities - * - * @param string $value the value to convert - * - * @static - * @return string - */ - public static function convertEntities($value) - { - $converted = null; - - //deal with double encoded payload - $value = preg_replace('/&/', '&', $value); - - if (preg_match('/&#x?[\w]+/ms', $value)) { - $converted = preg_replace('/(&#x?[\w]{2}\d?);?/ms', '$1;', $value); - $converted = html_entity_decode($converted, ENT_QUOTES, 'UTF-8'); - $value .= "\n" . str_replace(';;', ';', $converted); - } - // normalize obfuscated protocol handlers - $value = preg_replace( - '/(?:j\s*a\s*v\s*a\s*s\s*c\s*r\s*i\s*p\s*t\s*:)|(d\s*a\s*t\s*a\s*:)/ms', - 'javascript:', $value - ); - - return $value; - } - - /** - * Normalize quotes - * - * @param string $value the value to convert - * - * @static - * @return string - */ - public static function convertQuotes($value) - { - // normalize different quotes to " - $pattern = array('\'', '`', '´', '’', '‘'); - $value = str_replace($pattern, '"', $value); - - //make sure harmless quoted strings don't generate false alerts - $value = preg_replace('/^"([^"=\\!><~]+)"$/', '$1', $value); - - return $value; - } - - /** - * Converts SQLHEX to plain text - * - * @param string $value the value to convert - * - * @static - * @return string - */ - public static function convertFromSQLHex($value) - { - $matches = array(); - if(preg_match_all('/(?:(?:\A|[^\d])0x[a-f\d]{3,}[a-f\d]*)+/im', $value, $matches)) { - foreach($matches[0] as $match) { - $converted = ''; - foreach(str_split($match, 2) as $hex_index) { - if(preg_match('/[a-f\d]{2,3}/i', $hex_index)) { - $converted .= chr(hexdec($hex_index)); - } - } - $value = str_replace($match, $converted, $value); - } - } - // take care of hex encoded ctrl chars - $value = preg_replace('/0x\d+/m', ' 1 ', $value); - - return $value; - } - - /** - * Converts basic SQL keywords and obfuscations - * - * @param string $value the value to convert - * - * @static - * @return string - */ - public static function convertFromSQLKeywords($value) - { - $pattern = array('/(?:is\s+null)|(like\s+null)|' . - '(?:(?:^|\W)in[+\s]*\([\s\d"]+[^()]*\))/ims'); - $value = preg_replace($pattern, '"=0', $value); - - $value = preg_replace('/[^\w\)]+\s*like\s*[^\w\s]+/ims', '1" OR "1"', $value); - $value = preg_replace('/null([,"\s])/ims', '0$1', $value); - $value = preg_replace('/\d+\./ims', ' 1', $value); - $value = preg_replace('/,null/ims', ',0', $value); - $value = preg_replace('/(?:between)/ims', 'or', $value); - $value = preg_replace('/(?:and\s+\d+\.?\d*)/ims', '', $value); - $value = preg_replace('/(?:\s+and\s+)/ims', ' or ', $value); - - $pattern = array('/(?:not\s+between)|(?:is\s+not)|(?:not\s+in)|' . - '(?:xor|<>|rlike(?:\s+binary)?)|' . - '(?:regexp\s+binary)|' . - '(?:sounds\s+like)/ims'); - $value = preg_replace($pattern, '!', $value); - $value = preg_replace('/"\s+\d/', '"', $value); - $value = preg_replace('/(\W)div(\W)/ims', '$1 OR $2', $value); - $value = preg_replace('/\/(?:\d+|null)/', null, $value); - - return $value; - } - - /** - * Detects nullbytes and controls chars via ord() - * - * @param string $value the value to convert - * - * @static - * @return string - */ - public static function convertFromControlChars($value) - { - // critical ctrl values - $search = array( - chr(0), chr(1), chr(2), chr(3), chr(4), chr(5), - chr(6), chr(7), chr(8), chr(11), chr(12), chr(14), - chr(15), chr(16), chr(17), chr(18), chr(19), chr(24), - chr(25), chr(192), chr(193), chr(238), chr(255), '\\0' - ); - - $value = str_replace($search, '%00', $value); - - //take care for malicious unicode characters - $value = urldecode(preg_replace('/(?:%E(?:2|3)%8(?:0|1)%(?:A|8|9)' . - '\w|%EF%BB%BF|%EF%BF%BD)|(?:&#(?:65|8)\d{3};?)/i', null, - urlencode($value))); - $value = urldecode( - preg_replace('/(?:%F0%80%BE)/i', '>', urlencode($value))); - $value = urldecode( - preg_replace('/(?:%F0%80%BC)/i', '<', urlencode($value))); - $value = urldecode( - preg_replace('/(?:%F0%80%A2)/i', '"', urlencode($value))); - $value = urldecode( - preg_replace('/(?:%F0%80%A7)/i', '\'', urlencode($value))); - - $value = preg_replace('/(?:%ff1c)/', '<', $value); - $value = preg_replace( - '/(?:&[#x]*(200|820|200|820|zwn?j|lrm|rlm)\w?;?)/i', null,$value - ); - $value = preg_replace('/(?:&#(?:65|8)\d{3};?)|' . - '(?:&#(?:56|7)3\d{2};?)|' . - '(?:&#x(?:fe|20)\w{2};?)|' . - '(?:&#x(?:d[c-f])\w{2};?)/i', null, - $value); - - $value = str_replace( - array('«', '〈', '<', '‹', '〈', '⟨'), '<', $value - ); - $value = str_replace( - array('»', '〉', '>', '›', '〉', '⟩'), '>', $value - ); - - return $value; - } - - /** - * This method matches and translates base64 strings and fragments - * used in data URIs - * - * @param string $value the value to convert - * - * @static - * @return string - */ - public static function convertFromNestedBase64($value) - { - $matches = array(); - preg_match_all('/(?:^|[,&?])\s*([a-z0-9]{30,}=*)(?:\W|$)/im', - $value, - $matches); - - foreach ($matches[1] as $item) { - if (isset($item) && !preg_match('/[a-f0-9]{32}/i', $item)) { - $base64_item = base64_decode($item); - $value = str_replace($item, $base64_item, $value); - } - } - - return $value; - } - - /** - * Detects nullbytes and controls chars via ord() - * - * @param string $value the value to convert - * - * @static - * @return string - */ - public static function convertFromOutOfRangeChars($value) - { - $values = str_split($value); - foreach ($values as $item) { - if (ord($item) >= 127) { - $value = str_replace($item, ' ', $value); - } - } - - return $value; - } - - /** - * Strip XML patterns - * - * @param string $value the value to convert - * - * @static - * @return string - */ - public static function convertFromXML($value) - { - $converted = strip_tags($value); - - if ($converted && ($converted != $value)) { - return $value . "\n" . $converted; - } - return $value; - } - - /** - * This method converts JS unicode code points to - * regular characters - * - * @param string $value the value to convert - * - * @static - * @return string - */ - public static function convertFromJSUnicode($value) - { - $matches = array(); - - preg_match_all('/\\\u[0-9a-f]{4}/ims', $value, $matches); - - if (!empty($matches[0])) { - foreach ($matches[0] as $match) { - $chr = chr(hexdec(substr($match, 2, 4))); - $value = str_replace($match, $chr, $value); - } - $value .= "\n\u0001"; - } - - return $value; - } - - /** - * Converts relevant UTF-7 tags to UTF-8 - * - * @param string $value the value to convert - * - * @static - * @return string - */ - public static function convertFromUTF7($value) - { - if(preg_match('/\+A\w+-?/m', $value)) { - if (function_exists('mb_convert_encoding')) { - if(version_compare(PHP_VERSION, '5.2.8', '<')) { - $tmp_chars = str_split($value); - $value = ''; - foreach($tmp_chars as $char) { - if(ord($char) <= 127) { - $value .= $char; - } - } - } - $value .= "\n" . mb_convert_encoding($value, 'UTF-8', 'UTF-7'); - } else { - //list of all critical UTF7 codepoints - $schemes = array( - '+ACI-' => '"', - '+ADw-' => '<', - '+AD4-' => '>', - '+AFs-' => '[', - '+AF0-' => ']', - '+AHs-' => '{', - '+AH0-' => '}', - '+AFw-' => '\\', - '+ADs-' => ';', - '+ACM-' => '#', - '+ACY-' => '&', - '+ACU-' => '%', - '+ACQ-' => '$', - '+AD0-' => '=', - '+AGA-' => '`', - '+ALQ-' => '"', - '+IBg-' => '"', - '+IBk-' => '"', - '+AHw-' => '|', - '+ACo-' => '*', - '+AF4-' => '^', - '+ACIAPg-' => '">', - '+ACIAPgA8-' => '">' - ); - - $value = str_ireplace(array_keys($schemes), - array_values($schemes), $value); - } - } - return $value; - } - - /** - * Converts basic concatenations - * - * @param string $value the value to convert - * - * @static - * @return string - */ - public static function convertFromConcatenated($value) - { - //normalize remaining backslashes - if ($value != preg_replace('/(\w)\\\/', "$1", $value)) { - $value .= preg_replace('/(\w)\\\/', "$1", $value); - } - - $compare = stripslashes($value); - - $pattern = array('/(?:<\/\w+>\+<\w+>)/s', - '/(?:":\d+[^"[]+")/s', - '/(?:"?"\+\w+\+")/s', - '/(?:"\s*;[^"]+")|(?:";[^"]+:\s*")/s', - '/(?:"\s*(?:;|\+).{8,18}:\s*")/s', - '/(?:";\w+=)|(?:!""&&")|(?:~)/s', - '/(?:"?"\+""?\+?"?)|(?:;\w+=")|(?:"[|&]{2,})/s', - '/(?:"\s*\W+")/s', - '/(?:";\w\s*\+=\s*\w?\s*")/s', - '/(?:"[|&;]+\s*[^|&\n]*[|&]+\s*"?)/s', - '/(?:";\s*\w+\W+\w*\s*[|&]*")/s', - '/(?:"\s*"\s*\.)/s', - '/(?:\s*new\s+\w+\s*[+",])/', - '/(?:(?:^|\s+)(?:do|else)\s+)/', - '/(?:[{(]\s*new\s+\w+\s*[)}])/', - '/(?:(this|self)\.)/', - '/(?:undefined)/', - '/(?:in\s+)/'); - - // strip out concatenations - $converted = preg_replace($pattern, null, $compare); - - //strip object traversal - $converted = preg_replace('/\w(\.\w\()/', "$1", $converted); - - // normalize obfuscated method calls - $converted = preg_replace('/\)\s*\+/', ")", $converted); - - //convert JS special numbers - $converted = preg_replace('/(?:\(*[.\d]e[+-]*[^a-z\W]+\)*)' . - '|(?:NaN|Infinity)\W/ims', 1, $converted); - - if ($converted && ($compare != $converted)) { - $value .= "\n" . $converted; - } - - return $value; - } - - /** - * This method collects and decodes proprietary encoding types - * - * @param string $value the value to convert - * - * @static - * @return string - */ - public static function convertFromProprietaryEncodings($value) { - - //Xajax error reportings - $value = preg_replace('//im', '$1', $value); - - //strip false alert triggering apostrophes - $value = preg_replace('/(\w)\"(s)/m', '$1$2', $value); - - //strip quotes within typical search patterns - $value = preg_replace('/^"([^"=\\!><~]+)"$/', '$1', $value); - - //OpenID login tokens - $value = preg_replace('/{[\w-]{8,9}\}(?:\{[\w=]{8}\}){2}/', null, $value); - - //convert Content and \sdo\s to null - $value = preg_replace('/Content|\Wdo\s/', null, $value); - - //strip emoticons - $value = preg_replace( - '/(?:\s[:;]-[)\/PD]+)|(?:\s;[)PD]+)|(?:\s:[)PD]+)|-\.-|\^\^/m', - null, - $value - ); - - //normalize separation char repetion - $value = preg_replace('/([.+~=*_\-;])\1{2,}/m', '$1', $value); - - //normalize multiple single quotes - $value = preg_replace('/"{2,}/m', '"', $value); - - //normalize quoted numerical values and asterisks - $value = preg_replace('/"(\d+)"/m', '$1', $value); - - //normalize pipe separated request parameters - $value = preg_replace('/\|(\w+=\w+)/m', '&$1', $value); - - //normalize ampersand listings - $value = preg_replace('/(\w\s)&\s(\w)/', '$1$2', $value); - - //normalize escaped RegExp modifiers - $value = preg_replace('/\/\\\(\w)/', '/$1', $value); - - return $value; - } - - /** - * This method is the centrifuge prototype - * - * @param string $value the value to convert - * @param IDS_Monitor $monitor the monitor object - * - * @static - * @return string - */ - public static function runCentrifuge($value, IDS_Monitor $monitor = null) - { - $threshold = 3.49; - if (strlen($value) > 25) { - - //strip padding - $tmp_value = preg_replace('/\s{4}|==$/m', null, $value); - $tmp_value = preg_replace( - '/\s{4}|[\p{L}\d\+\-=,.%()]{8,}/m', - 'aaa', - $tmp_value - ); - - // Check for the attack char ratio - $tmp_value = preg_replace('/([*.!?+-])\1{1,}/m', '$1', $tmp_value); - $tmp_value = preg_replace('/"[\p{L}\d\s]+"/m', null, $tmp_value); - - $stripped_length = strlen(preg_replace('/[\d\s\p{L}\.:,%&\/><\-)!|]+/m', - null, $tmp_value)); - $overall_length = strlen( - preg_replace('/([\d\s\p{L}:,\.]{3,})+/m', 'aaa', - preg_replace('/\s{2,}/m', null, $tmp_value)) - ); - - if ($stripped_length != 0 - && $overall_length/$stripped_length <= $threshold) { - - $monitor->centrifuge['ratio'] = - $overall_length/$stripped_length; - $monitor->centrifuge['threshold'] = - $threshold; - - $value .= "\n$[!!!]"; - } - } - - if (strlen($value) > 40) { - // Replace all non-special chars - $converted = preg_replace('/[\w\s\p{L},.:!]/', null, $value); - - // Split string into an array, unify and sort - $array = str_split($converted); - $array = array_unique($array); - asort($array); - - // Normalize certain tokens - $schemes = array( - '~' => '+', - '^' => '+', - '|' => '+', - '*' => '+', - '%' => '+', - '&' => '+', - '/' => '+' - ); - - $converted = implode($array); - - $_keys = array_keys($schemes); - $_values = array_values($schemes); - - $converted = str_replace($_keys, $_values, $converted); - - $converted = preg_replace('/[+-]\s*\d+/', '+', $converted); - $converted = preg_replace('/[()[\]{}]/', '(', $converted); - $converted = preg_replace('/[!?:=]/', ':', $converted); - $converted = preg_replace('/[^:(+]/', null, stripslashes($converted)); - - // Sort again and implode - $array = str_split($converted); - asort($array); - - $converted = implode($array); - - if (preg_match('/(?:\({2,}\+{2,}:{2,})|(?:\({2,}\+{2,}:+)|' . - '(?:\({3,}\++:{2,})/', $converted)) { - - $monitor->centrifuge['converted'] = $converted; - - return $value . "\n" . $converted; - } - } - - return $value; - } -} - -/** - * Local variables: - * tab-width: 4 - * c-basic-offset: 4 - * End: - * vim600: sw=4 ts=4 expandtab - */ diff --git a/libraries/plugins/IDS/Event.php b/libraries/plugins/IDS/Event.php deleted file mode 100644 index 547d69c..0000000 --- a/libraries/plugins/IDS/Event.php +++ /dev/null @@ -1,235 +0,0 @@ -. - * - * PHP version 5.1.6+ - * - * @category Security - * @package PHPIDS - * @author Mario Heiderich - * @author Christian Matthies - * @author Lars Strojny - * @license http://www.gnu.org/licenses/lgpl.html LGPL - * @link http://php-ids.org/ - */ - -/** - * PHPIDS event object - * - * This class represents a certain event that occured while applying the filters - * to the supplied data. It aggregates a bunch of IDS_Filter implementations and - * is a assembled in IDS_Report. - * - * Note that this class implements both Countable and IteratorAggregate - * - * @category Security - * @package PHPIDS - * @author Christian Matthies - * @author Mario Heiderich - * @author Lars Strojny - * @copyright 2007-2009 The PHPIDS Group - * @license http://www.gnu.org/licenses/lgpl.html LGPL - * @version Release: $Id:Event.php 517 2007-09-15 15:04:13Z mario $ - * @link http://php-ids.org/ - */ -class IDS_Event implements Countable, IteratorAggregate -{ - - /** - * Event name - * - * @var scalar - */ - protected $name = null; - - /** - * Value of the event - * - * @var scalar - */ - protected $value = null; - - /** - * List of filter objects - * - * Filter objects in this array are those that matched the events value - * - * @var array - */ - protected $filters = array(); - - /** - * Calculated impact - * - * Total impact of the event - * - * @var integer - */ - protected $impact = 0; - - /** - * Affecte tags - * - * @var array - */ - protected $tags = array(); - - /** - * Constructor - * - * Fills event properties - * - * @param scalar $name the event name - * @param scalar $value the event value - * @param array $filters the corresponding filters - * - * @return void - */ - public function __construct($name, $value, Array $filters) - { - if (!is_scalar($name)) { - throw new InvalidArgumentException( - 'Expected $name to be a scalar,' . gettype($name) . ' given' - ); - } - - if (!is_scalar($value)) { - throw new InvalidArgumentException(' - Expected $value to be a scalar,' . gettype($value) . ' given' - ); - } - - $this->name = $name; - $this->value = $value; - - foreach ($filters as $filter) { - if (!$filter instanceof IDS_Filter) { - throw new InvalidArgumentException( - 'Filter must be derived from IDS_Filter' - ); - } - - $this->filters[] = $filter; - } - } - - /** - * Returns event name - * - * The name of the event usually is the key of the variable that was - * considered to be malicious - * - * @return scalar - */ - public function getName() - { - return $this->name; - } - - /** - * Returns event value - * - * @return scalar - */ - public function getValue() - { - return $this->value; - } - - /** - * Returns calculated impact - * - * @return integer - */ - public function getImpact() - { - if (!$this->impact) { - $this->impact = 0; - foreach ($this->filters as $filter) { - $this->impact += $filter->getImpact(); - } - } - - return $this->impact; - } - - /** - * Returns affected tags - * - * @return array - */ - public function getTags() - { - $filters = $this->getFilters(); - - foreach ($filters as $filter) { - $this->tags = array_merge($this->tags, - $filter->getTags()); - } - - $this->tags = array_values(array_unique($this->tags)); - - return $this->tags; - } - - /** - * Returns list of filter objects - * - * @return array - */ - public function getFilters() - { - return $this->filters; - } - - /** - * Returns number of filters - * - * To implement interface Countable this returns the number of filters - * appended. - * - * @return integer - */ - public function count() - { - return count($this->getFilters()); - } - - /** - * IteratorAggregate iterator getter - * - * Returns an iterator to iterate over the appended filters. - * - * @return ArrayObject the filter collection - */ - public function getIterator() - { - return new ArrayObject($this->getFilters()); - } -} - -/** - * Local variables: - * tab-width: 4 - * c-basic-offset: 4 - * End: - * vim600: sw=4 ts=4 expandtab - */ diff --git a/libraries/plugins/IDS/Filter.php b/libraries/plugins/IDS/Filter.php deleted file mode 100644 index 9c427c0..0000000 --- a/libraries/plugins/IDS/Filter.php +++ /dev/null @@ -1,179 +0,0 @@ -. - * - * PHP version 5.1.6+ - * - * @category Security - * @package PHPIDS - * @author Mario Heiderich - * @author Christian Matthies - * @author Lars Strojny - * @license http://www.gnu.org/licenses/lgpl.html LGPL - * @link http://php-ids.org/ - */ - -/** - * PHPIDS Filter object - * - * Each object of this class serves as a container for a specific filter. The - * object provides methods to get information about this particular filter and - * also to match an arbitrary string against it. - * - * @category Security - * @package PHPIDS - * @author Christian Matthies - * @author Mario Heiderich - * @author Lars Strojny - * @copyright 2007-2009 The PHPIDS Group - * @license http://www.gnu.org/licenses/lgpl.html LGPL - * @version Release: $Id:Filter.php 517 2007-09-15 15:04:13Z mario $ - * @link http://php-ids.org/ - * @since Version 0.4 - */ -class IDS_Filter { - - /** - * Filter rule - * - * @var string - */ - protected $rule; - - /** - * List of tags of the filter - * - * @var array - */ - protected $tags = array(); - - /** - * Filter impact level - * - * @var integer - */ - protected $impact = 0; - - /** - * Filter description - * - * @var string - */ - protected $description = null; - - /** - * Constructor - * - * @param integer $id filter id - * @param mixed $rule filter rule - * @param string $description filter description - * @param array $tags list of tags - * @param integer $impact filter impact level - * - * @return void - */ - public function __construct($id, $rule, $description, array $tags, $impact) { - $this->id = $id; - $this->rule = $rule; - $this->tags = $tags; - $this->impact = $impact; - $this->description = $description; - } - - /** - * Matches a string against current filter - * - * Matches given string against the filter rule the specific object of this - * class represents - * - * @param string $string the string to match - * - * @throws InvalidArgumentException if argument is no string - * @return boolean - */ - public function match($string) { - if (!is_string($string)) { - throw new InvalidArgumentException(' - Invalid argument. Expected a string, received ' . gettype($string) - ); - } - return (bool) preg_match( - '/' . $this->getRule() . '/ms', strtolower($string) - ); - } - - /** - * Returns filter description - * - * @return string - */ - public function getDescription() { - return $this->description; - } - - /** - * Return list of affected tags - * - * Each filter rule is concerned with a certain kind of attack vectors. - * This method returns those affected kinds. - * - * @return array - */ - public function getTags() { - return $this->tags; - } - - /** - * Returns filter rule - * - * @return string - */ - public function getRule() { - return $this->rule; - } - - /** - * Get filter impact level - * - * @return integer - */ - public function getImpact() { - return $this->impact; - } - - /** - * Get filter ID - * - * @return integer - */ - public function getId() { - return $this->id; - } - -} - -/** - * Local variables: - * tab-width: 4 - * c-basic-offset: 4 - * End: - * vim600: sw=4 ts=4 expandtab - */ diff --git a/libraries/plugins/IDS/Filter/Storage.php b/libraries/plugins/IDS/Filter/Storage.php deleted file mode 100644 index f1a6406..0000000 --- a/libraries/plugins/IDS/Filter/Storage.php +++ /dev/null @@ -1,381 +0,0 @@ -. - * - * PHP version 5.1.6+ - * - * @category Security - * @package PHPIDS - * @author Mario Heiderich - * @author Christian Matthies - * @author Lars Strojny - * @license http://www.gnu.org/licenses/lgpl.html LGPL - * @link http://php-ids.org/ - */ - -/** - * Filter Storage - * - * This class provides various default functions for gathering filter patterns - * to be used later on by the detection mechanism. You might extend this class - * to your requirements. - * - * @category Security - * @package PHPIDS - * @author Christian Matthies - * @author Mario Heiderich - * @author Lars Strojny - * @copyright 2007-2009 The PHPIDS Group - * @license http://www.gnu.org/licenses/lgpl.html LGPL - * @version Release: $Id:Storage.php 517 2007-09-15 15:04:13Z mario $ - * @link http://php-ids.org/ - */ -class IDS_Filter_Storage -{ - - /** - * Filter source file - * - * @var string - */ - protected $source = null; - - /** - * Holds caching settings - * - * @var array - */ - protected $cacheSettings = null; - - /** - * Cache container - * - * @var object IDS_Caching wrapper - */ - protected $cache = null; - - /** - * Filter container - * - * @var array - */ - protected $filterSet = array(); - - /** - * Constructor - * - * Loads filters based on provided IDS_Init settings. - * - * @param object $init IDS_Init instance - * - * @throws Exception if unsupported filter type is given - * @return void - */ - public final function __construct(IDS_Init $init) - { - if ($init->config) { - - $caching = isset($init->config['Caching']['caching']) ? - $init->config['Caching']['caching'] : 'none'; - - $type = $init->config['General']['filter_type']; - $this->source = $init->getBasePath() - . $init->config['General']['filter_path']; - - if ($caching && $caching != 'none') { - $this->cacheSettings = $init->config['Caching']; - include_once 'IDS/Caching/Factory.php'; - $this->cache = IDS_Caching::factory($init, 'storage'); - } - - switch ($type) { - case 'xml' : - $this->getFilterFromXML(); - break; - case 'json' : - $this->getFilterFromJson(); - break; - default : - throw new Exception('Unsupported filter type.'); - } - } - } - - /** - * Sets the filter array - * - * @param array $filterSet array containing multiple IDS_Filter instances - * - * @return object $this - */ - public final function setFilterSet($filterSet) - { - foreach ($filterSet as $filter) { - $this->addFilter($filter); - } - - return $this; - } - - /** - * Returns registered filters - * - * @return array - */ - public final function getFilterSet() - { - return $this->filterSet; - } - - /** - * Adds a filter - * - * @param object $filter IDS_Filter instance - * - * @return object $this - */ - public final function addFilter(IDS_Filter $filter) - { - $this->filterSet[] = $filter; - return $this; - } - - /** - * Checks if any filters are cached - * - * @return mixed $filters cached filters or false - */ - private function _isCached() - { - $filters = false; - - if ($this->cacheSettings) { - - if ($this->cache) { - $filters = $this->cache->getCache(); - } - } - - return $filters; - } - - /** - * Loads filters from XML using SimpleXML - * - * This function parses the provided source file and stores the result. - * If caching mode is enabled the result will be cached to increase - * the performance. - * - * @throws Exception if problems with fetching the XML data occur - * @return object $this - */ - public function getFilterFromXML() - { - - if (extension_loaded('SimpleXML')) { - - /* - * See if filters are already available in the cache - */ - $filters = $this->_isCached(); - - /* - * If they aren't, parse the source file - */ - if (!$filters) { - if (file_exists($this->source)) { - if (LIBXML_VERSION >= 20621) { - $filters = simplexml_load_file($this->source, - null, - LIBXML_COMPACT); - } else { - $filters = simplexml_load_file($this->source); - } - } - } - - /* - * In case we still don't have any filters loaded and exception - * will be thrown - */ - if (empty($filters)) { - throw new Exception( - 'XML data could not be loaded.' . - ' Make sure you specified the correct path.' - ); - } - - /* - * Now the storage will be filled with IDS_Filter objects - */ - $data = array(); - $nocache = $filters instanceof SimpleXMLElement; - $filters = $nocache ? $filters->filter : $filters; - - include_once 'IDS/Filter.php'; - - foreach ($filters as $filter) { - - $id = $nocache ? (string) $filter->id : - $filter['id']; - $rule = $nocache ? (string) $filter->rule : - $filter['rule']; - $impact = $nocache ? (string) $filter->impact : - $filter['impact']; - $tags = $nocache ? array_values((array) $filter->tags) : - $filter['tags']; - $description = $nocache ? (string) $filter->description : - $filter['description']; - - $this->addFilter(new IDS_Filter($id, - $rule, - $description, - (array) $tags[0], - (int) $impact)); - - $data[] = array( - 'id' => $id, - 'rule' => $rule, - 'impact' => $impact, - 'tags' => $tags, - 'description' => $description - ); - } - - /* - * If caching is enabled, the fetched data will be cached - */ - if ($this->cacheSettings) { - - $this->cache->setCache($data); - } - - } else { - throw new Exception( - 'SimpleXML not loaded.' - ); - } - - return $this; - } - - /** - * Loads filters from Json file using ext/Json - * - * This function parses the provided source file and stores the result. - * If caching mode is enabled the result will be cached to increase - * the performance. - * - * @throws Exception if problems with fetching the JSON data occur - * @return object $this - */ - public function getFilterFromJson() - { - - if (extension_loaded('Json')) { - - /* - * See if filters are already available in the cache - */ - $filters = $this->_isCached(); - - /* - * If they aren't, parse the source file - */ - if (!$filters) { - if (file_exists($this->source)) { - $filters = json_decode(file_get_contents($this->source)); - } else { - throw new Exception( - 'JSON data could not be loaded.' . - ' Make sure you specified the correct path.' - ); - } - } - - if (!$filters) { - throw new Exception( - 'JSON data could not be loaded.' . - ' Make sure you specified the correct path.' - ); - } - - /* - * Now the storage will be filled with IDS_Filter objects - */ - $data = array(); - $nocache = !is_array($filters); - $filters = $nocache ? $filters->filters->filter : $filters; - - include_once 'IDS/Filter.php'; - - foreach ($filters as $filter) { - - $id = $nocache ? (string) $filter->id : - $filter['id']; - $rule = $nocache ? (string) $filter->rule : - $filter['rule']; - $impact = $nocache ? (string) $filter->impact : - $filter['impact']; - $tags = $nocache ? array_values((array) $filter->tags) : - $filter['tags']; - $description = $nocache ? (string) $filter->description : - $filter['description']; - - $this->addFilter(new IDS_Filter($id, - $rule, - $description, - (array) $tags[0], - (int) $impact)); - - $data[] = array( - 'id' => $id, - 'rule' => $rule, - 'impact' => $impact, - 'tags' => $tags, - 'description' => $description - ); - } - - /* - * If caching is enabled, the fetched data will be cached - */ - if ($this->cacheSettings) { - $this->cache->setCache($data); - } - - } else { - throw new Exception( - 'ext/json not loaded.' - ); - } - - return $this; - } -} - -/** - * Local variables: - * tab-width: 4 - * c-basic-offset: 4 - * End: - * vim600: sw=4 ts=4 expandtab - */ diff --git a/libraries/plugins/IDS/Init.php b/libraries/plugins/IDS/Init.php deleted file mode 100644 index 3a2f099..0000000 --- a/libraries/plugins/IDS/Init.php +++ /dev/null @@ -1,240 +0,0 @@ -. - * - * PHP version 5.1.6+ - * - * @category Security - * @package PHPIDS - * @author Mario Heiderich - * @author Christian Matthies - * @author Lars Strojny - * @license http://www.gnu.org/licenses/lgpl.html LGPL - * @link http://php-ids.org/ - */ - -/** - * Framework initiation - * - * This class is used for the purpose to initiate the framework and inhabits - * functionality to parse the needed configuration file. - * - * @category Security - * @package PHPIDS - * @author Christian Matthies - * @author Mario Heiderich - * @author Lars Strojny - * @copyright 2007-2009 The PHPIDS Groupup - * @license http://www.gnu.org/licenses/lgpl.html LGPL - * @version Release: $Id:Init.php 517 2007-09-15 15:04:13Z mario $ - * @link http://php-ids.org/ - * @since Version 0.4 - */ -class IDS_Init -{ - - /** - * Holds config settings - * - * @var array - */ - public $config = array(); - - /** - * Instance of this class depending on the supplied config file - * - * @var array - * @static - */ - private static $instances = array(); - - /** - * Path to the config file - * - * @var string - */ - private $configPath = null; - - /** - * Constructor - * - * Includes needed classes and parses the configuration file - * - * @param string $configPath the path to the config file - * - * @return object $this - */ - private function __construct($configPath = null) - { - include_once 'IDS/Monitor.php'; - include_once 'IDS/Filter/Storage.php'; - - if ($configPath) { - $this->setConfigPath($configPath); - - if (function_exists('parse_ini_file')) { - $this->config = parse_ini_file($this->configPath, true); - } else { - $configContent = file_get_contents($this->configPath); - $this->config = parse_ini_string($configContent, true); - } - - } - } - - /** - * Permitting to clone this object - * - * For the sake of correctness of a singleton pattern, this is necessary - * - * @return void - */ - public final function __clone() - { - } - - /** - * Returns an instance of this class. Also a PHP version check - * is being performed to avoid compatibility problems with PHP < 5.1.6 - * - * @param string $configPath the path to the config file - * - * @return object - */ - public static function init($configPath = null) - { - if (!isset(self::$instances[$configPath])) { - self::$instances[$configPath] = new IDS_Init($configPath); - } - - return self::$instances[$configPath]; - } - - /** - * Sets the path to the configuration file - * - * @param string $path the path to the config - * - * @throws Exception if file not found - * @return void - */ - public function setConfigPath($path) - { - if (file_exists($path)) { - $this->configPath = $path; - } else { - throw new Exception( - 'Configuration file could not be found at ' . - htmlspecialchars($path, ENT_QUOTES, 'UTF-8') - ); - } - } - - /** - * Returns path to configuration file - * - * @return string the config path - */ - public function getConfigPath() - { - return $this->configPath; - } - - /** - * This method checks if a base path is given and usage is set to true. - * If all that tests succeed the base path will be returned as a string - - * else null will be returned. - * - * @return string the base path or null - */ - public function getBasePath() - { - - return ((isset($this->config['General']['base_path']) - && $this->config['General']['base_path'] - && isset($this->config['General']['use_base_path']) - && $this->config['General']['use_base_path']) - ? $this->config['General']['base_path'] : null); - } - - /** - * Merges new settings into the exsiting ones or overwrites them - * - * @param array $config the config array - * @param boolean $overwrite config overwrite flag - * - * @return void - */ - public function setConfig(array $config, $overwrite = false) - { - if ($overwrite) { - $this->config = $this->_mergeConfig($this->config, $config); - } else { - $this->config = $this->_mergeConfig($config, $this->config); - } - } - - /** - * Merge config hashes recursivly - * - * The algorithm merges configuration arrays recursively. If an element is - * an array in both, the values will be appended. If it is a scalar in both, - * the value will be replaced. - * - * @param array $current The legacy hash - * @param array $successor The hash which values count more when in doubt - * @return array Merged hash - */ - protected function _mergeConfig($current, $successor) - { - if (is_array($current) and is_array($successor)) { - foreach ($successor as $key => $value) { - if (isset($current[$key]) - and is_array($value) - and is_array($current[$key])) { - - $current[$key] = $this->_mergeConfig($current[$key], $value); - } else { - $current[$key] = $successor[$key]; - } - } - } - return $current; - } - - /** - * Returns the config array - * - * @return array the config array - */ - public function getConfig() - { - return $this->config; - } -} - -/** - * Local variables: - * tab-width: 4 - * c-basic-offset: 4 - * End: - * vim600: sw=4 ts=4 expandtab - */ diff --git a/libraries/plugins/IDS/Ips.php b/libraries/plugins/IDS/Ips.php deleted file mode 100644 index 1a8a864..0000000 --- a/libraries/plugins/IDS/Ips.php +++ /dev/null @@ -1,224 +0,0 @@ - - * @license http://www.gnu.org/licenses/lgpl.html LGPL - * @version Release: $Id:Ips.php 517 2011-07-29 15:04:13Z bernieberg $ - */ -class IDS_Ips -{ - /** - * Holds the data from the log file - * - * @var array - */ - private $data = array(); - - /** - * how long an ip will be blocked from their last hit - * - * @var int - */ - private $blocked_duration = 7200; - - /** - * How many negative hits until they are blocked - * - * @var int - */ - private $blocked_count = 5; - - /** - * location of the ip log file - * - * @var string - */ - private $ip_file = null; - - - /** - * Constructor - * - * Sets up the object with the passed arguments - * - * @param string $ip_file location of the ip log file - * @param int $duration how long, in seconds, to keep an ip blocked - * @param int $count how many hits until be block this ip - * - * @return void - */ - public function __construct($ip_file, $duration = 7200, $count = 5) - { - $this->blocked_duration = $duration; - $this->blocked_count = $count; - $this->ip_file = $ip_file; - - if (!file_exists($ip_file)) { - $this->data = array(); - return; - } - - // 0 = ip address - // 1 = count - // 2 = last date - // 3 = ban count - - $handle = fopen($ip_file, "r"); - $good_data = array(); - - while (($data = fgetcsv($handle, 0, ",")) !== FALSE) { - $good_data[$data[0]] = $data; - } - fclose($handle); - - $this->data = $good_data; - } - - public function tempBlock($ip_address) - { - - if (!array_key_exists($ip_address, $this->data)) { - $this->data[$ip_address] = array($ip_address, $this->blocked_count + 1, time(), 0, false); - } else { - $this->data[$ip_address][1] += $this->blocked_count; - $this->data[$ip_address][2] = time(); - } - - $this->writeLog(); - return true; - } - - /** - * isBlocked - * - * Is the passed ip address blocked? - * - * @param string $ip_address ip we are checking - * - * @return boolean - */ - public function isBlocked($ip_address) - { - - if (!array_key_exists($ip_address, $this->data)) { - return array(false, 0); - } - - $blocked_time = time()-$this->blocked_duration; - $ip_data = $this->data[$ip_address]; - - //print_r($ip_data); - - if ($ip_data[1]>=$this->blocked_count && $ip_data[2]>=$blocked_time) { - $this->incCount($ip_address); - $this->writeLog(); - return array(true, $ip_data[3]); - } - elseif($ip_data[2] <= $blocked_time && $ip_data[4] == 1) - { - //$this->unBlock($ip_address); - $this->resetCount($ip_address); - $this->writeLog(); - } - - return array(false, 0); - } - - /** - * blockCount - * - * increase ban count, you should run writeLog after this - * - * @param string $ip_address ip we are checking - * - * @return void - */ - public function resetCount($ip_address) - { - if (array_key_exists($ip_address, $this->data)) { - //unset($this->data[$ip_address]); - $this->data[$ip_address][1] = 0; - $this->data[$ip_address][4] = false; - } - } - - /** - * blockCount - * - * increase ban count, you should run writeLog after this - * - * @param string $ip_address ip we are checking - * - * @return void - */ - public function incCount($ip_address) - { - if (array_key_exists($ip_address, $this->data) && $this->data[$ip_address][4] == false) { - $this->data[$ip_address][3]++; - $this->data[$ip_address][4] = true; - } - } - - /** - * unBlock - * - * remove the passed ip address, you should run writeLog after this - * - * @param string $ip_address ip we are checking - * - * @return void - */ - public function unBlock($ip_address) - { - echo "UNBLOCKED !"; - if (array_key_exists($ip_address, $this->data)) { - unset($this->data[$ip_address]); - } - } - - /** - * logHit - * - * log and increment a negative hit for this ip address - * - * @param string $ip_address ip we are checking - * - * @return void - */ - public function logHit($ip_address) - { - if (!array_key_exists($ip_address, $this->data)) { - $this->data[$ip_address] = array($ip_address, 1, time(), 0, false); - } else { - $this->data[$ip_address][1]++; - $this->data[$ip_address][2] = time(); - } - } - - /** - * writeLog - * - * write the ip log file - * - * @return void - */ - public function writeLog() - { - $fp = fopen($this->ip_file, 'w'); - - foreach ($this->data as $fields) { - fputcsv($fp, $fields); - } - - fclose($fp); - - return true; - } -} - -?> \ No newline at end of file diff --git a/libraries/plugins/IDS/LICENSE.txt b/libraries/plugins/IDS/LICENSE.txt deleted file mode 100644 index 3f9959f..0000000 --- a/libraries/plugins/IDS/LICENSE.txt +++ /dev/null @@ -1,165 +0,0 @@ - GNU LESSER GENERAL PUBLIC LICENSE - Version 3, 29 June 2007 - - Copyright (C) 2007 Free Software Foundation, Inc. - Everyone is permitted to copy and distribute verbatim copies - of this license document, but changing it is not allowed. - - - This version of the GNU Lesser General Public License incorporates -the terms and conditions of version 3 of the GNU General Public -License, supplemented by the additional permissions listed below. - - 0. Additional Definitions. - - As used herein, "this License" refers to version 3 of the GNU Lesser -General Public License, and the "GNU GPL" refers to version 3 of the GNU -General Public License. - - "The Library" refers to a covered work governed by this License, -other than an Application or a Combined Work as defined below. - - An "Application" is any work that makes use of an interface provided -by the Library, but which is not otherwise based on the Library. -Defining a subclass of a class defined by the Library is deemed a mode -of using an interface provided by the Library. - - A "Combined Work" is a work produced by combining or linking an -Application with the Library. The particular version of the Library -with which the Combined Work was made is also called the "Linked -Version". - - The "Minimal Corresponding Source" for a Combined Work means the -Corresponding Source for the Combined Work, excluding any source code -for portions of the Combined Work that, considered in isolation, are -based on the Application, and not on the Linked Version. - - The "Corresponding Application Code" for a Combined Work means the -object code and/or source code for the Application, including any data -and utility programs needed for reproducing the Combined Work from the -Application, but excluding the System Libraries of the Combined Work. - - 1. Exception to Section 3 of the GNU GPL. - - You may convey a covered work under sections 3 and 4 of this License -without being bound by section 3 of the GNU GPL. - - 2. Conveying Modified Versions. - - If you modify a copy of the Library, and, in your modifications, a -facility refers to a function or data to be supplied by an Application -that uses the facility (other than as an argument passed when the -facility is invoked), then you may convey a copy of the modified -version: - - a) under this License, provided that you make a good faith effort to - ensure that, in the event an Application does not supply the - function or data, the facility still operates, and performs - whatever part of its purpose remains meaningful, or - - b) under the GNU GPL, with none of the additional permissions of - this License applicable to that copy. - - 3. Object Code Incorporating Material from Library Header Files. - - The object code form of an Application may incorporate material from -a header file that is part of the Library. You may convey such object -code under terms of your choice, provided that, if the incorporated -material is not limited to numerical parameters, data structure -layouts and accessors, or small macros, inline functions and templates -(ten or fewer lines in length), you do both of the following: - - a) Give prominent notice with each copy of the object code that the - Library is used in it and that the Library and its use are - covered by this License. - - b) Accompany the object code with a copy of the GNU GPL and this license - document. - - 4. Combined Works. - - You may convey a Combined Work under terms of your choice that, -taken together, effectively do not restrict modification of the -portions of the Library contained in the Combined Work and reverse -engineering for debugging such modifications, if you also do each of -the following: - - a) Give prominent notice with each copy of the Combined Work that - the Library is used in it and that the Library and its use are - covered by this License. - - b) Accompany the Combined Work with a copy of the GNU GPL and this license - document. - - c) For a Combined Work that displays copyright notices during - execution, include the copyright notice for the Library among - these notices, as well as a reference directing the user to the - copies of the GNU GPL and this license document. - - d) Do one of the following: - - 0) Convey the Minimal Corresponding Source under the terms of this - License, and the Corresponding Application Code in a form - suitable for, and under terms that permit, the user to - recombine or relink the Application with a modified version of - the Linked Version to produce a modified Combined Work, in the - manner specified by section 6 of the GNU GPL for conveying - Corresponding Source. - - 1) Use a suitable shared library mechanism for linking with the - Library. A suitable mechanism is one that (a) uses at run time - a copy of the Library already present on the user's computer - system, and (b) will operate properly with a modified version - of the Library that is interface-compatible with the Linked - Version. - - e) Provide Installation Information, but only if you would otherwise - be required to provide such information under section 6 of the - GNU GPL, and only to the extent that such information is - necessary to install and execute a modified version of the - Combined Work produced by recombining or relinking the - Application with a modified version of the Linked Version. (If - you use option 4d0, the Installation Information must accompany - the Minimal Corresponding Source and Corresponding Application - Code. If you use option 4d1, you must provide the Installation - Information in the manner specified by section 6 of the GNU GPL - for conveying Corresponding Source.) - - 5. Combined Libraries. - - You may place library facilities that are a work based on the -Library side by side in a single library together with other library -facilities that are not Applications and are not covered by this -License, and convey such a combined library under terms of your -choice, if you do both of the following: - - a) Accompany the combined library with a copy of the same work based - on the Library, uncombined with any other library facilities, - conveyed under the terms of this License. - - b) Give prominent notice with the combined library that part of it - is a work based on the Library, and explaining where to find the - accompanying uncombined form of the same work. - - 6. Revised Versions of the GNU Lesser General Public License. - - The Free Software Foundation may publish revised and/or new versions -of the GNU Lesser General Public License from time to time. Such new -versions will be similar in spirit to the present version, but may -differ in detail to address new problems or concerns. - - Each version is given a distinguishing version number. If the -Library as you received it specifies that a certain numbered version -of the GNU Lesser General Public License "or any later version" -applies to it, you have the option of following the terms and -conditions either of that published version or of any later version -published by the Free Software Foundation. If the Library as you -received it does not specify a version number of the GNU Lesser -General Public License, you may choose any version of the GNU Lesser -General Public License ever published by the Free Software Foundation. - - If the Library as you received it specifies that a proxy can decide -whether future versions of the GNU Lesser General Public License shall -apply, that proxy's public statement of acceptance of any version is -permanent authorization for you to choose that version for the -Library. \ No newline at end of file diff --git a/libraries/plugins/IDS/Log/Api.php b/libraries/plugins/IDS/Log/Api.php deleted file mode 100644 index 8f8f2f5..0000000 --- a/libraries/plugins/IDS/Log/Api.php +++ /dev/null @@ -1,229 +0,0 @@ -. - * - * PHP version 5.1.6+ - * - * @category Security - * @package PHPIDS - * @author Mario Heiderich - * @author Christian Matthies - * @author Lars Strojny - * @license http://www.gnu.org/licenses/lgpl.html LGPL - * @link http://php-ids.org/ - */ - -require_once 'IDS/Log/Interface.php'; - -/** - * File logging wrapper - * - * The file wrapper is designed to store data into a flatfile. It implements the - * singleton pattern. - * - * @category Security - * @package PHPIDS - * @author Christian Matthies - * @author Mario Heiderich - * @author Lars Strojny - * @copyright 2007-2009 The PHPIDS Group - * @license http://www.gnu.org/licenses/lgpl.html LGPL - * @version Release: $Id:File.php 517 2007-09-15 15:04:13Z mario $ - * @link http://php-ids.org/ - */ -class IDS_Log_Api implements IDS_Log_Interface -{ - - /** - * Path to the log file - * - * @var string - */ - private $logfile = null; - - /** - * Instance container - * - * Due to the singleton pattern this class allows to initiate only one - * instance for each file. - * - * @var array - */ - private static $instances = array(); - - /** - * Holds current remote address - * - * @var string - */ - private $ip = 'local/unknown'; - - /** - * Constructor - * - * @param string $logfile path to the log file - * - * @return void - */ - protected function __construct($logfile) - { - - // determine correct IP address and concat them if necessary - $this->ip = $_SERVER['REMOTE_ADDR'] . - (isset($_SERVER['HTTP_X_FORWARDED_FOR']) ? - ' (' . $_SERVER['HTTP_X_FORWARDED_FOR'] . ')' : ''); - - $this->logfile = $logfile; - } - - /** - * Returns an instance of this class - * - * This method allows the passed argument to be either an instance of - * IDS_Init or a path to a log file. Due to the singleton pattern only one - * instance for each file can be initiated. - * - * @param mixed $config IDS_Init or path to a file - * @param string $classname the class name to use - * - * @return object $this - */ - public static function getInstance($config, $classname = 'IDS_Log_Api') - { - if ($config instanceof IDS_Init) { - $logfile = $config->getBasePath() . $config->config['Logging']['path']; - } elseif (is_string($config)) { - $logfile = $config; - } - - if (!isset(self::$instances[$logfile])) { - self::$instances[$logfile] = new $classname($logfile); - } - - return self::$instances[$logfile]; - } - - /** - * Permitting to clone this object - * - * For the sake of correctness of a singleton pattern, this is necessary - * - * @return void - */ - private function __clone() - { - } - - /** - * Prepares data - * - * Converts given data into a format that can be stored into a file. - * You might edit this method to your requirements. - * - * @param mixed $data incoming report data - * - * @return string - */ - protected function prepareData($data) - { - - $format = '"%s",%s,%d,"%s","%s","%s","%s"'; - - $attackedParameters = ''; - foreach ($data as $event) { - $attackedParameters .= $event->getName() . '=' . - rawurlencode($event->getValue()) . ' '; - } - - $dataString = sprintf($format, - urlencode($this->ip), - date('c'), - $data->getImpact(), - join(' ', $data->getTags()), - urlencode(trim($attackedParameters)), - urlencode($_SERVER['REQUEST_URI']), - $_SERVER['SERVER_ADDR'] - ); - - return $dataString; - } - - /** - * Stores given data into a file - * - * @param object $data IDS_Report - * - * @throws Exception if the logfile isn't writeable - * @return boolean - */ - public function execute(IDS_Report $data) - { - - /* - * In case the data has been modified before it might be necessary - * to convert it to string since we can't store array or object - * into a file - */ - $data = $this->prepareData($data); - - if (is_string($data)) { - - if (file_exists($this->logfile)) { - $data = trim($data); - - if (!empty($data)) { - if (is_writable($this->logfile)) { - - $handle = fopen($this->logfile, 'a'); - fwrite($handle, trim($data) . "\n"); - fclose($handle); - - } else { - throw new Exception( - 'Please make sure that ' . $this->logfile . - ' is writeable.' - ); - } - } - } else { - throw new Exception( - 'Given file does not exist. Please make sure the - logfile is present in the given directory.' - ); - } - } else { - throw new Exception( - 'Please make sure that data returned by - IDS_Log_File::prepareData() is a string.' - ); - } - - return true; - } -} - -/** - * Local variables: - * tab-width: 4 - * c-basic-offset: 4 - * End: - * vim600: sw=4 ts=4 expandtab - */ diff --git a/libraries/plugins/IDS/Log/Composite.php b/libraries/plugins/IDS/Log/Composite.php deleted file mode 100644 index fcd2a7c..0000000 --- a/libraries/plugins/IDS/Log/Composite.php +++ /dev/null @@ -1,136 +0,0 @@ -. - * - * PHP version 5.1.6+ - * - * @category Security - * @package PHPIDS - * @author Mario Heiderich - * @author Christian Matthies - * @author Lars Strojny - * @license http://www.gnu.org/licenses/lgpl.html LGPL - * @link http://php-ids.org/ - */ - -require_once 'IDS/Log/Interface.php'; - -/** - * Log Composite - * - * This class implements the composite pattern to allow to work with multiple - * logging wrappers at once. - * - * @category Security - * @package PHPIDS - * @author Christian Matthies - * @author Mario Heiderich - * @author Lars Strojny - * @copyright 2007-2009 The PHPIDS Group - * @license http://www.gnu.org/licenses/lgpl.html LGPL - * @version Release: $Id:Composite.php 517 2007-09-15 15:04:13Z mario $ - * @link http://php-ids.org/ - */ -class IDS_Log_Composite -{ - - /** - * Holds registered logging wrapper - * - * @var array - */ - public $loggers = array(); - - /** - * Iterates through registered loggers and executes them - * - * @param object $data IDS_Report object - * - * @return void - */ - public function execute(IDS_Report $data) - { - // make sure request uri is set right on IIS - if (!isset($_SERVER['REQUEST_URI'])) { - $_SERVER['REQUEST_URI'] = substr($_SERVER['PHP_SELF'], 1); - if (isset($_SERVER['QUERY_STRING']) && $_SERVER['QUERY_STRING']) { - $_SERVER['REQUEST_URI'] .= '?' . $_SERVER['QUERY_STRING']; - } - } - - // make sure server address is set right on IIS - if (isset($_SERVER['LOCAL_ADDR'])) { - $_SERVER['SERVER_ADDR'] = $_SERVER['LOCAL_ADDR']; - } - - foreach ($this->loggers as $logger) { - $logger->execute($data); - } - } - - /** - * Registers a new logging wrapper - * - * Only valid IDS_Log_Interface instances passed to this function will be - * registered - * - * @return void - */ - public function addLogger() - { - - $args = func_get_args(); - - foreach ($args as $class) { - if (!in_array($class, $this->loggers) && - ($class instanceof IDS_Log_Interface)) { - $this->loggers[] = $class; - } - } - } - - /** - * Removes a logger - * - * @param object $logger IDS_Log_Interface object - * - * @return boolean - */ - public function removeLogger(IDS_Log_Interface $logger) - { - $key = array_search($logger, $this->loggers); - - if (isset($this->loggers[$key])) { - unset($this->loggers[$key]); - return true; - } - - return false; - } -} - -/** - * Local variables: - * tab-width: 4 - * c-basic-offset: 4 - * End: - * vim600: sw=4 ts=4 expandtab - */ diff --git a/libraries/plugins/IDS/Log/Database.php b/libraries/plugins/IDS/Log/Database.php deleted file mode 100644 index 4728379..0000000 --- a/libraries/plugins/IDS/Log/Database.php +++ /dev/null @@ -1,300 +0,0 @@ -. - * - * PHP version 5.1.6+ - * - * @category Security - * @package PHPIDS - * @author Mario Heiderich - * @author Christian Matthies - * @author Lars Strojny - * @license http://www.gnu.org/licenses/lgpl.html LGPL - * @link http://php-ids.org/ - */ - -require_once 'IDS/Log/Interface.php'; - -/* - * Needed SQL: - * - CREATE DATABASE IF NOT EXISTS `phpids` DEFAULT CHARACTER - SET utf8 COLLATE utf8_general_ci; - DROP TABLE IF EXISTS `intrusions`; - CREATE TABLE IF NOT EXISTS `intrusions` ( - `id` int(11) unsigned NOT null auto_increment, - `name` varchar(128) NOT null, - `value` text NOT null, - `page` varchar(255) NOT null, - `tags` varchar(128) NOT null, - `ip` varchar(15) NOT null, - `ip2` varchar(15) NOT null, - `impact` int(11) unsigned NOT null, - `origin` varchar(15) NOT null, - `created` datetime NOT null, - PRIMARY KEY (`id`) - ) ENGINE=MyISAM ; - * - * - * - */ - -/** - * Database logging wrapper - * - * The database wrapper is designed to store reports into an sql database. It - * implements the singleton pattern and is based in PDO, supporting - * different database types. - * - * @category Security - * @package PHPIDS - * @author Christian Matthies - * @author Mario Heiderich - * @author Lars Strojny - * @copyright 2007-2009 The PHPIDS Group - * @license http://www.gnu.org/licenses/lgpl.html LGPL - * @version Release: $Id:Database.php 517 2007-09-15 15:04:13Z mario $ - * @link http://php-ids.org/ - */ -class IDS_Log_Database implements IDS_Log_Interface -{ - - /** - * Database wrapper - * - * @var string - */ - private $wrapper = null; - - /** - * Database user - * - * @var string - */ - private $user = null; - - /** - * Database password - * - * @var string - */ - private $password = null; - - /** - * Database table - * - * @var string - */ - private $table = null; - - /** - * Database handle - * - * @var object PDO instance - */ - private $handle = null; - - /** - * Prepared SQL statement - * - * @var string - */ - private $statement = null; - - /** - * Holds current remote address - * - * @var string - */ - private $ip = 'local/unknown'; - - /** - * Instance container - * - * Due to the singleton pattern this class allows to initiate only one instance - * for each database wrapper. - * - * @var array - */ - private static $instances = array(); - - /** - * Constructor - * - * Prepares the SQL statement - * - * @param mixed $config IDS_Init instance | array - * - * @return void - * @throws PDOException if a db error occurred - */ - protected function __construct($config) - { - - if ($config instanceof IDS_Init) { - $this->wrapper = $config->config['Logging']['wrapper']; - $this->user = $config->config['Logging']['user']; - $this->password = $config->config['Logging']['password']; - $this->table = $config->config['Logging']['table']; - - } elseif (is_array($config)) { - $this->wrapper = $config['wrapper']; - $this->user = $config['user']; - $this->password = $config['password']; - $this->table = $config['table']; - } - - // determine correct IP address and concat them if necessary - $this->ip = $_SERVER['REMOTE_ADDR']; - $this->ip2 = isset($_SERVER['HTTP_X_FORWARDED_FOR']) - ? $_SERVER['HTTP_X_FORWARDED_FOR'] - : ''; - - try { - $this->handle = new PDO( - $this->wrapper, - $this->user, - $this->password - ); - - $this->statement = $this->handle->prepare(' - INSERT INTO ' . $this->table . ' ( - name, - value, - page, - tags, - ip, - ip2, - impact, - origin, - created - ) - VALUES ( - :name, - :value, - :page, - :tags, - :ip, - :ip2, - :impact, - :origin, - now() - ) - '); - - } catch (PDOException $e) { - throw new PDOException('PDOException: ' . $e->getMessage()); - } - } - - /** - * Returns an instance of this class - * - * This method allows the passed argument to be either an instance of IDS_Init or - * an array. - * - * @param mixed $config IDS_Init | array - * @param string $classname the class name to use - * - * @return object $this - */ - public static function getInstance($config, $classname = 'IDS_Log_Database') - { - if ($config instanceof IDS_Init) { - $wrapper = $config->config['Logging']['wrapper']; - } elseif (is_array($config)) { - $wrapper = $config['wrapper']; - } - - if (!isset(self::$instances[$wrapper])) { - self::$instances[$wrapper] = new $classname($config); - } - - return self::$instances[$wrapper]; - } - - /** - * Permitting to clone this object - * - * For the sake of correctness of a singleton pattern, this is necessary - * - * @return void - */ - private function __clone() - { - } - - /** - * Stores given data into the database - * - * @param object $data IDS_Report instance - * - * @throws Exception if db error occurred - * @return boolean - */ - public function execute(IDS_Report $data) - { - if (!isset($_SERVER['REQUEST_URI'])) { - $_SERVER['REQUEST_URI'] = substr($_SERVER['PHP_SELF'], 1); - if (isset($_SERVER['QUERY_STRING']) && $_SERVER['QUERY_STRING']) { - $_SERVER['REQUEST_URI'] .= '?' . $_SERVER['QUERY_STRING']; - } - } - - foreach ($data as $event) { - $page = isset($_SERVER['REQUEST_URI']) ? $_SERVER['REQUEST_URI'] : ''; - $ip = $this->ip; - $ip2 = $this->ip2; - - $name = $event->getName(); - $value = $event->getValue(); - $impact = $event->getImpact(); - $tags = implode(', ', $event->getTags()); - - $this->statement->bindParam('name', $name); - $this->statement->bindParam('value', $value); - $this->statement->bindParam('page', $page); - $this->statement->bindParam('tags', $tags); - $this->statement->bindParam('ip', $ip); - $this->statement->bindParam('ip2', $ip2); - $this->statement->bindParam('impact', $impact); - $this->statement->bindParam('origin', $_SERVER['SERVER_ADDR']); - - if (!$this->statement->execute()) { - - $info = $this->statement->errorInfo(); - throw new Exception( - $this->statement->errorCode() . ', ' . $info[1] . ', ' . $info[2] - ); - } - } - - return true; - } -} - -/** - * Local variables: - * tab-width: 4 - * c-basic-offset: 4 - * End: - * vim600: sw=4 ts=4 expandtab - */ diff --git a/libraries/plugins/IDS/Log/Email.php b/libraries/plugins/IDS/Log/Email.php deleted file mode 100644 index ec4c1f0..0000000 --- a/libraries/plugins/IDS/Log/Email.php +++ /dev/null @@ -1,400 +0,0 @@ -. - * - * PHP version 5.1.6+ - * - * @category Security - * @package PHPIDS - * @author Mario Heiderich - * @author Christian Matthies - * @author Lars Strojny - * @license http://www.gnu.org/licenses/lgpl.html LGPL - * @link http://php-ids.org/ - */ - -require_once 'IDS/Log/Interface.php'; - -/** - * Email logging wrapper - * - * The Email wrapper is designed to send reports via email. It implements the - * singleton pattern. - * - * @category Security - * @package PHPIDS - * @author Christian Matthies - * @author Mario Heiderich - * @author Lars Strojny - * @copyright 2007-2009 The PHPIDS Group - * @license http://www.gnu.org/licenses/lgpl.html LGPL - * @version Release: $Id:Email.php 517 2007-09-15 15:04:13Z mario $ - * @link http://php-ids.org/ - */ -class IDS_Log_Email implements IDS_Log_Interface -{ - - /** - * Recipient container - * - * @var array - */ - protected $recipients = array(); - - /** - * Mail subject - * - * @var string - */ - protected $subject = null; - - /** - * Additional mail headers - * - * @var string - */ - protected $headers = null; - - /** - * Safemode switch - * - * Using this switch it is possible to enable safemode, which is a spam - * protection based on the alert frequency. - * - * @var boolean - */ - protected $safemode = true; - - /** - * Urlencode for result strings - * - * This switch is true by default. Setting it to false removes - * the 'better safe than sorry' urlencoding for the result string in - * the report mails. Enhances readability but maybe XSSes email clients. - * - * @var boolean - */ - protected $urlencode = true; - - /** - * Send rate - * - * If safemode is enabled, this property defines how often reports will be - * sent out. Default value is 15, which means that a mail will be sent on - * condition that the last email has not been sent earlier than 15 seconds ago. - * - * @var integer - */ - protected $allowed_rate = 15; - - /** - * PHPIDS temp directory - * - * When safemod is enabled, a path to a temp directory is needed to - * store some information. Default is IDS/tmp/ - * - * @var string - */ - protected $tmp_path = 'IDS/tmp/'; - - /** - * File prefix for tmp files - * - * @var string - */ - protected $file_prefix = 'PHPIDS_Log_Email_'; - - /** - * Holds current remote address - * - * @var string - */ - protected $ip = 'local/unknown'; - - /** - * Instance container - * - * @var array - */ - protected static $instance = array(); - - /** - * Constructor - * - * @param mixed $config IDS_Init instance | array - * - * @return void - */ - protected function __construct($config) - { - - if ($config instanceof IDS_Init) { - $this->recipients = $config->config['Logging']['recipients']; - $this->subject = $config->config['Logging']['subject']; - $this->headers = $config->config['Logging']['header']; - $this->envelope = $config->config['Logging']['envelope']; - $this->safemode = $config->config['Logging']['safemode']; - $this->urlencode = $config->config['Logging']['urlencode']; - $this->allowed_rate = $config->config['Logging']['allowed_rate']; - $this->tmp_path = $config->getBasePath() - . $config->config['General']['tmp_path']; - - } elseif (is_array($config)) { - $this->recipients[] = $config['recipients']; - $this->subject = $config['subject']; - $this->additionalHeaders = $config['header']; - } - - // determine correct IP address and concat them if necessary - $this->ip = $_SERVER['REMOTE_ADDR'] . - (isset($_SERVER['HTTP_X_FORWARDED_FOR']) ? - ' (' . $_SERVER['HTTP_X_FORWARDED_FOR'] . ')' : ''); - } - - /** - * Returns an instance of this class - * - * This method allows the passed argument to be either an instance of - * IDS_Init or an array. - * - * @param mixed $config IDS_Init | array - * @param string $classname the class name to use - * - * @return object $this - */ - public static function getInstance($config, $classname = 'IDS_Log_Email') - { - if (!self::$instance) { - self::$instance = new $classname($config); - } - - return self::$instance; - } - - /** - * Permitting to clone this object - * - * For the sake of correctness of a singleton pattern, this is necessary - * - * @return void - */ - private function __clone() - { - } - - /** - * Detects spam attempts - * - * To avoid mail spam through this logging class this function is used - * to detect such attempts based on the alert frequency. - * - * @return boolean - */ - protected function isSpamAttempt() - { - - /* - * loop through all files in the tmp directory and - * delete garbage files - */ - $dir = $this->tmp_path; - $numPrefixChars = strlen($this->file_prefix); - $files = scandir($dir); - foreach ($files as $file) { - if (is_file($dir . DIRECTORY_SEPARATOR . $file)) { - if (substr($file, 0, $numPrefixChars) == $this->file_prefix) { - $lastModified = filemtime($dir . DIRECTORY_SEPARATOR . $file); - if ((time() - $lastModified) > 3600) { - unlink($dir . DIRECTORY_SEPARATOR . $file); - } - } - } - } - - /* - * end deleting garbage files - */ - $remoteAddr = $this->ip; - $userAgent = $_SERVER['HTTP_USER_AGENT']; - $filename = $this->file_prefix . md5($remoteAddr.$userAgent) . '.tmp'; - $file = $dir . DIRECTORY_SEPARATOR . $filename; - - if (!file_exists($file)) { - $handle = fopen($file, 'w'); - fwrite($handle, time()); - fclose($handle); - - return false; - } - - $lastAttack = file_get_contents($file); - $difference = time() - $lastAttack; - if ($difference > $this->allowed_rate) { - unlink($file); - } else { - return true; - } - - return false; - } - - /** - * Prepares data - * - * Converts given data into a format that can be read in an email. - * You might edit this method to your requirements. - * - * @param mixed $data the report data - * - * @return string - */ - protected function prepareData($data) - { - - $format = "The following attack has been detected by PHPIDS\n\n"; - $format .= "IP: %s \n"; - $format .= "Date: %s \n"; - $format .= "Impact: %d \n"; - $format .= "Affected tags: %s \n"; - - $attackedParameters = ''; - foreach ($data as $event) { - $attackedParameters .= $event->getName() . '=' . - ((!isset($this->urlencode) ||$this->urlencode) - ? urlencode($event->getValue()) - : $event->getValue()) . ", "; - } - - $format .= "Affected parameters: %s \n"; - $format .= "Request URI: %s \n"; - $format .= "Origin: %s \n"; - - return sprintf($format, - $this->ip, - date('c'), - $data->getImpact(), - join(' ', $data->getTags()), - trim($attackedParameters), - htmlspecialchars($_SERVER['REQUEST_URI'], ENT_QUOTES, 'UTF-8'), - $_SERVER['SERVER_ADDR']); - } - - /** - * Sends the report to registered recipients - * - * @param object $data IDS_Report instance - * - * @throws Exception if data is no string - * @return boolean - */ - public function execute(IDS_Report $data) - { - - if ($this->safemode) { - if ($this->isSpamAttempt()) { - return false; - } - } - - /* - * In case the data has been modified before it might - * be necessary to convert it to string since it's pretty - * senseless to send array or object via e-mail - */ - $data = $this->prepareData($data); - - if (is_string($data)) { - $data = trim($data); - - // if headers are passed as array, we need to make a string of it - if (is_array($this->headers)) { - $headers = ""; - foreach ($this->headers as $header) { - $headers .= $header . "\r\n"; - } - } else { - $headers = $this->headers; - } - - if (!empty($this->recipients)) { - if (is_array($this->recipients)) { - foreach ($this->recipients as $address) { - $this->send( - $address, - $data, - $headers, - $this->envelope - ); - } - } else { - $this->send( - $this->recipients, - $data, - $headers, - $this->envelope - ); - } - } - - } else { - throw new Exception( - 'Please make sure that data returned by - IDS_Log_Email::prepareData() is a string.' - ); - } - - return true; - } - - /** - * Sends an email - * - * @param string $address email address - * @param string $data the report data - * @param string $headers the mail headers - * @param string $envelope the optional envelope string - * - * @return boolean - */ - protected function send($address, $data, $headers, $envelope = null) - { - if (!$envelope || strpos(ini_get('sendmail_path'),' -f') !== false) { - return mail($address, - $this->subject, - $data, - $headers); - } else { - return mail($address, - $this->subject, - $data, - $headers, - '-f' . $envelope); - } - } -} - -/** - * Local variables: - * tab-width: 4 - * c-basic-offset: 4 - * End: - * vim600: sw=4 ts=4 expandtab - */ diff --git a/libraries/plugins/IDS/Log/File.php b/libraries/plugins/IDS/Log/File.php deleted file mode 100644 index 76be418..0000000 --- a/libraries/plugins/IDS/Log/File.php +++ /dev/null @@ -1,229 +0,0 @@ -. - * - * PHP version 5.1.6+ - * - * @category Security - * @package PHPIDS - * @author Mario Heiderich - * @author Christian Matthies - * @author Lars Strojny - * @license http://www.gnu.org/licenses/lgpl.html LGPL - * @link http://php-ids.org/ - */ - -require_once 'IDS/Log/Interface.php'; - -/** - * File logging wrapper - * - * The file wrapper is designed to store data into a flatfile. It implements the - * singleton pattern. - * - * @category Security - * @package PHPIDS - * @author Christian Matthies - * @author Mario Heiderich - * @author Lars Strojny - * @copyright 2007-2009 The PHPIDS Group - * @license http://www.gnu.org/licenses/lgpl.html LGPL - * @version Release: $Id:File.php 517 2007-09-15 15:04:13Z mario $ - * @link http://php-ids.org/ - */ -class IDS_Log_File implements IDS_Log_Interface -{ - - /** - * Path to the log file - * - * @var string - */ - private $logfile = null; - - /** - * Instance container - * - * Due to the singleton pattern this class allows to initiate only one - * instance for each file. - * - * @var array - */ - private static $instances = array(); - - /** - * Holds current remote address - * - * @var string - */ - private $ip = 'local/unknown'; - - /** - * Constructor - * - * @param string $logfile path to the log file - * - * @return void - */ - protected function __construct($logfile) - { - - // determine correct IP address and concat them if necessary - $this->ip = $_SERVER['REMOTE_ADDR'] . - (isset($_SERVER['HTTP_X_FORWARDED_FOR']) ? - ' (' . $_SERVER['HTTP_X_FORWARDED_FOR'] . ')' : ''); - - $this->logfile = $logfile; - } - - /** - * Returns an instance of this class - * - * This method allows the passed argument to be either an instance of - * IDS_Init or a path to a log file. Due to the singleton pattern only one - * instance for each file can be initiated. - * - * @param mixed $config IDS_Init or path to a file - * @param string $classname the class name to use - * - * @return object $this - */ - public static function getInstance($config, $classname = 'IDS_Log_File') - { - if ($config instanceof IDS_Init) { - $logfile = $config->getBasePath() . $config->config['Logging']['path']; - } elseif (is_string($config)) { - $logfile = $config; - } - - if (!isset(self::$instances[$logfile])) { - self::$instances[$logfile] = new $classname($logfile); - } - - return self::$instances[$logfile]; - } - - /** - * Permitting to clone this object - * - * For the sake of correctness of a singleton pattern, this is necessary - * - * @return void - */ - private function __clone() - { - } - - /** - * Prepares data - * - * Converts given data into a format that can be stored into a file. - * You might edit this method to your requirements. - * - * @param mixed $data incoming report data - * - * @return string - */ - protected function prepareData($data) - { - - $format = '"%s",%s,%d,"%s","%s","%s","%s"'; - - $attackedParameters = ''; - foreach ($data as $event) { - $attackedParameters .= $event->getName() . '=' . - rawurlencode($event->getValue()) . ' '; - } - - $dataString = sprintf($format, - urlencode($this->ip), - date('c'), - $data->getImpact(), - join(' ', $data->getTags()), - urlencode(trim($attackedParameters)), - urlencode($_SERVER['REQUEST_URI']), - $_SERVER['SERVER_ADDR'] - ); - - return $dataString; - } - - /** - * Stores given data into a file - * - * @param object $data IDS_Report - * - * @throws Exception if the logfile isn't writeable - * @return boolean - */ - public function execute(IDS_Report $data) - { - - /* - * In case the data has been modified before it might be necessary - * to convert it to string since we can't store array or object - * into a file - */ - $data = $this->prepareData($data); - - if (is_string($data)) { - - if (file_exists($this->logfile)) { - $data = trim($data); - - if (!empty($data)) { - if (is_writable($this->logfile)) { - - $handle = fopen($this->logfile, 'a'); - fwrite($handle, trim($data) . "\n"); - fclose($handle); - - } else { - throw new Exception( - 'Please make sure that ' . $this->logfile . - ' is writeable.' - ); - } - } - } else { - throw new Exception( - 'Given file does not exist. Please make sure the - logfile is present in the given directory.' - ); - } - } else { - throw new Exception( - 'Please make sure that data returned by - IDS_Log_File::prepareData() is a string.' - ); - } - - return true; - } -} - -/** - * Local variables: - * tab-width: 4 - * c-basic-offset: 4 - * End: - * vim600: sw=4 ts=4 expandtab - */ diff --git a/libraries/plugins/IDS/Log/Interface.php b/libraries/plugins/IDS/Log/Interface.php deleted file mode 100644 index 551532f..0000000 --- a/libraries/plugins/IDS/Log/Interface.php +++ /dev/null @@ -1,65 +0,0 @@ -. - * - * PHP version 5.1.6+ - * - * @category Security - * @package PHPIDS - * @author Mario Heiderich - * @author Christian Matthies - * @author Lars Strojny - * @license http://www.gnu.org/licenses/lgpl.html LGPL - * @link http://php-ids.org/ - */ - -/** - * Interface for logging wrappers - * - * @category Security - * @package PHPIDS - * @author Christian Matthies - * @author Mario Heiderich - * @author Lars Strojny - * @copyright 2007-2009 The PHPIDS Group - * @version Release: $Id:Interface.php 517 2007-09-15 15:04:13Z mario $ - * @license http://www.gnu.org/licenses/lgpl.html LGPL - * @link http://php-ids.org/ - */ -interface IDS_Log_Interface -{ - /** - * Interface method - * - * @param IDS_Report $data the report data - * - * @return void - */ - public function execute(IDS_Report $data); -} - -/** - * Local variables: - * tab-width: 4 - * c-basic-offset: 4 - * End: - * vim600: sw=4 ts=4 expandtab - */ diff --git a/libraries/plugins/IDS/Monitor.php b/libraries/plugins/IDS/Monitor.php deleted file mode 100644 index ee5cf97..0000000 --- a/libraries/plugins/IDS/Monitor.php +++ /dev/null @@ -1,778 +0,0 @@ -. - * - * PHP version 5.1.6+ - * - * @category Security - * @package PHPIDS - * @author Mario Heiderich - * @author Christian Matthies - * @author Lars Strojny - * @license http://www.gnu.org/licenses/lgpl.html LGPL - * @link http://php-ids.org/ - */ - -/** - * Monitoring engine - * - * This class represents the core of the frameworks attack detection mechanism - * and provides functions to scan incoming data for malicious appearing script - * fragments. - * - * @category Security - * @package PHPIDS - * @author Christian Matthies - * @author Mario Heiderich - * @author Lars Strojny - * @copyright 2007-2009 The PHPIDS Group - * @license http://www.gnu.org/licenses/lgpl.html LGPL - * @version Release: $Id:Monitor.php 949 2008-06-28 01:26:03Z christ1an $ - * @link http://php-ids.org/ - */ -class IDS_Monitor -{ - - /** - * Tags to define what to search for - * - * Accepted values are xss, csrf, sqli, dt, id, lfi, rfe, spam, dos - * - * @var array - */ - private $tags = null; - - /** - * Request array - * - * Array containing raw data to search in - * - * @var array - */ - private $request = null; - - /** - * Container for filter rules - * - * Holds an instance of IDS_Filter_Storage - * - * @var object - */ - private $storage = null; - - /** - * Results - * - * Holds an instance of IDS_Report which itself provides an API to - * access the detected results - * - * @var object - */ - private $report = null; - - /** - * Scan keys switch - * - * Enabling this property will cause the monitor to scan both the key and - * the value of variables - * - * @var boolean - */ - public $scanKeys = false; - - /** - * Exception container - * - * Using this array it is possible to define variables that must not be - * scanned. Per default, utmz google analytics parameters are permitted. - * - * @var array - */ - private $exceptions = array(); - - /** - * Html container - * - * Using this array it is possible to define variables that legally - * contain html and have to be prepared before hitting the rules to - * avoid too many false alerts - * - * @var array - */ - private $html = array(); - - /** - * JSON container - * - * Using this array it is possible to define variables that contain - * JSON data - and should be treated as such - * - * @var array - */ - private $json = array(); - - /** - * Holds HTMLPurifier object - * - * @var object - */ - private $htmlpurifier = NULL; - - /** - * Path to HTMLPurifier source - * - * This path might be changed in case one wishes to make use of a - * different HTMLPurifier source file e.g. if already used in the - * application PHPIDS is protecting - * - * @var string - */ - private $pathToHTMLPurifier = ''; - - /** - * HTMLPurifier cache directory - * - * @var string - */ - private $HTMLPurifierCache = ''; - - /** - * This property holds the tmp JSON string from the - * _jsonDecodeValues() callback - * - * @var string - */ - private $tmpJsonString = ''; - - - /** - * Constructor - * - * @param array $request array to scan - * @param object $init instance of IDS_Init - * @param array $tags list of tags to which filters should be applied - * - * @return void - */ - public function __construct(array $request, IDS_Init $init, array $tags = null) - { - $version = isset($init->config['General']['min_php_version']) - ? $init->config['General']['min_php_version'] : '5.1.6'; - - if (version_compare(PHP_VERSION, $version, '<')) { - throw new Exception( - 'PHP version has to be equal or higher than ' . $version . ' or - PHP version couldn\'t be determined' - ); - } - - - if (!empty($request)) { - $this->storage = new IDS_Filter_Storage($init); - $this->request = $request; - $this->tags = $tags; - - $this->scanKeys = $init->config['General']['scan_keys']; - - $this->exceptions = isset($init->config['General']['exceptions']) - ? $init->config['General']['exceptions'] : false; - - $this->html = isset($init->config['General']['html']) - ? $init->config['General']['html'] : false; - - $this->json = isset($init->config['General']['json']) - ? $init->config['General']['json'] : false; - - if(isset($init->config['General']['HTML_Purifier_Path']) - && isset($init->config['General']['HTML_Purifier_Cache'])) { - - $this->pathToHTMLPurifier = - $init->config['General']['HTML_Purifier_Path']; - - $this->HTMLPurifierCache = $init->getBasePath() - . $init->config['General']['HTML_Purifier_Cache']; - } - - } - - if (!is_writeable($init->getBasePath() - . $init->config['General']['tmp_path'])) { - throw new Exception( - 'Please make sure the ' . - htmlspecialchars($init->getBasePath() . - $init->config['General']['tmp_path'], ENT_QUOTES, 'UTF-8') . - ' folder is writable' - ); - } - - include_once 'IDS/Report.php'; - $this->report = new IDS_Report; - } - - /** - * Starts the scan mechanism - * - * @return object IDS_Report - */ - public function run() - { - - if (!empty($this->request)) { - foreach ($this->request as $key => $value) { - $this->_iterate($key, $value); - } - } - - return $this->getReport(); - } - - /** - * Iterates through given data and delegates it to IDS_Monitor::_detect() in - * order to check for malicious appearing fragments - * - * @param mixed $key the former array key - * @param mixed $value the former array value - * - * @return void - */ - private function _iterate($key, $value) - { - - if (!is_array($value)) { - if (is_string($value)) { - - if ($filter = $this->_detect($key, $value)) { - include_once 'IDS/Event.php'; - $this->report->addEvent( - new IDS_Event( - $key, - $value, - $filter - ) - ); - } - } - } else { - foreach ($value as $subKey => $subValue) { - $this->_iterate($key . '.' . $subKey, $subValue); - } - } - } - - /** - * Checks whether given value matches any of the supplied filter patterns - * - * @param mixed $key the key of the value to scan - * @param mixed $value the value to scan - * - * @return bool|array false or array of filter(s) that matched the value - */ - private function _detect($key, $value) - { - - // define the pre-filter - $prefilter = '/[^\w\s\/@!?\.]+|(?:\.\/)|(?:@@\w+)' - . '|(?:\+ADw)|(?:union\s+select)/i'; - - // to increase performance, only start detection if value - // isn't alphanumeric - if (!$this->scanKeys - && (!$value || !preg_match($prefilter, $value))) { - return false; - } elseif($this->scanKeys) { - if((!$key || !preg_match($prefilter, $key)) - && (!$value || !preg_match($prefilter, $value))) { - return false; - } - } - - // check if this field is part of the exceptions - if (is_array($this->exceptions)) { - foreach($this->exceptions as $exception) { - $matches = array(); - if(preg_match('/(\/.*\/[^eE]*)$/', $exception, $matches)) { - if(isset($matches[1]) && preg_match($matches[1], $key)) { - return false; - } - } else { - if($exception === $key) { - return false; - } - } - } - } - - // check for magic quotes and remove them if necessary - if (function_exists('get_magic_quotes_gpc') - && get_magic_quotes_gpc()) { - $value = stripslashes($value); - } - if(function_exists('get_magic_quotes_gpc') - && !get_magic_quotes_gpc() - && version_compare(PHP_VERSION, '5.3.0', '>=')) { - $value = preg_replace('/\\\(["\'\/])/im', '$1', $value); - } - - // if html monitoring is enabled for this field - then do it! - if (is_array($this->html) && in_array($key, $this->html, true)) { - list($key, $value) = $this->_purifyValues($key, $value); - } - - // check if json monitoring is enabled for this field - if (is_array($this->json) && in_array($key, $this->json, true)) { - list($key, $value) = $this->_jsonDecodeValues($key, $value); - } - - // use the converter - include_once 'IDS/Converter.php'; - $value = IDS_Converter::runAll($value); - $value = IDS_Converter::runCentrifuge($value, $this); - - // scan keys if activated via config - $key = $this->scanKeys ? IDS_Converter::runAll($key) - : $key; - $key = $this->scanKeys ? IDS_Converter::runCentrifuge($key, $this) - : $key; - - $filters = array(); - $filterSet = $this->storage->getFilterSet(); - foreach ($filterSet as $filter) { - - /* - * in case we have a tag array specified the IDS will only - * use those filters that are meant to detect any of the - * defined tags - */ - if (is_array($this->tags)) { - if (array_intersect($this->tags, $filter->getTags())) { - if ($this->_match($key, $value, $filter)) { - $filters[] = $filter; - } - } - } else { - if ($this->_match($key, $value, $filter)) { - $filters[] = $filter; - } - } - } - - return empty($filters) ? false : $filters; - } - - - /** - * Purifies given key and value variables using HTMLPurifier - * - * This function is needed whenever there is variables for which HTML - * might be allowed like e.g. WYSIWYG post bodies. It will dectect malicious - * code fragments and leaves harmless parts untouched. - * - * @param mixed $key - * @param mixed $value - * @since 0.5 - * @throws Exception - * - * @return array - */ - private function _purifyValues($key, $value) - { - /* - * Perform a pre-check if string is valid for purification - */ - if(!$this->_purifierPreCheck($key, $value)) { - return array($key, $value); - } - - include_once $this->pathToHTMLPurifier; - - if (!is_writeable($this->HTMLPurifierCache)) { - throw new Exception( - $this->HTMLPurifierCache . ' must be writeable'); - } - - if (class_exists('HTMLPurifier')) { - $config = HTMLPurifier_Config::createDefault(); - $config->set('Attr.EnableID', true); - $config->set('Cache.SerializerPath', $this->HTMLPurifierCache); - $config->set('Output.Newline', "\n"); - $this->htmlpurifier = new HTMLPurifier($config); - } else { - throw new Exception( - 'HTMLPurifier class could not be found - ' . - 'make sure the purifier files are valid and' . - ' the path is correct' - ); - } - - $value = preg_replace('/[\x0b-\x0c]/', ' ', $value); - $key = preg_replace('/[\x0b-\x0c]/', ' ', $key); - - $purified_value = $this->htmlpurifier->purify($value); - $purified_key = $this->htmlpurifier->purify($key); - - $redux_value = strip_tags($value); - $redux_key = strip_tags($key); - - if ($value != $purified_value || $redux_value) { - $value = $this->_diff($value, $purified_value, $redux_value); - } else { - $value = NULL; - } - if ($key != $purified_key) { - $key = $this->_diff($key, $purified_key, $redux_key); - } else { - $key = NULL; - } - - return array($key, $value); - } - - /** - * This method makes sure no dangerous markup can be smuggled in - * attributes when HTML mode is switched on. - * - * If the precheck considers the string too dangerous for - * purification false is being returned. - * - * @param mixed $key - * @param mixed $value - * @since 0.6 - * - * @return boolean - */ - private function _purifierPreCheck($key = '', $value = '') - { - /* - * Remove control chars before pre-check - */ - $tmp_value = preg_replace('/\p{C}/', null, $value); - $tmp_key = preg_replace('/\p{C}/', null, $key); - - $precheck = '/<(script|iframe|applet|object)\W/i'; - if(preg_match($precheck, $tmp_key) - || preg_match($precheck, $tmp_value)) { - - return false; - } - return true; - } - - - /** - * This method calculates the difference between the original - * and the purified markup strings. - * - * @param string $original the original markup - * @param string $purified the purified markup - * @param string $redux the string without html - * @since 0.5 - * - * @return string the difference between the strings - */ - private function _diff($original, $purified, $redux) - { - /* - * deal with over-sensitive alt-attribute addition of the purifier - * and other common html formatting problems - */ - $purified = preg_replace('/\s+alt="[^"]*"/m', null, $purified); - $purified = preg_replace('/=?\s*"\s*"/m', null, $purified); - $original = preg_replace('/\s+alt="[^"]*"/m', null, $original); - $original = preg_replace('/=?\s*"\s*"/m', null, $original); - $original = preg_replace('/style\s*=\s*([^"])/m', 'style = "$1', $original); - - # deal with oversensitive CSS normalization - $original = preg_replace('/(?:([\w\-]+:)+\s*([^;]+;\s*))/m', '$1$2', $original); - - # strip whitespace between tags - $original = trim(preg_replace('/>\s*<', $original)); - $purified = trim(preg_replace('/>\s*<', $purified)); - - $original = preg_replace( - '/(=\s*(["\'`])[^>"\'`]*>[^>"\'`]*["\'`])/m', 'alt$1', $original - ); - - // no purified html is left - if (!$purified) { - return $original; - } - - // calculate the diff length - $length = mb_strlen($original) - mb_strlen($purified); - - /* - * Calculate the difference between the original html input - * and the purified string. - */ - $array_1 = preg_split('/(? $value) { - if (!isset($array_2[$key]) || $value !== $array_2[$key]) { - $differences[] = $value; - } - } - - // return the diff - ready to hit the converter and the rules - if(intval($length) <= 10) { - $diff = trim(join('', $differences)); - } else { - $diff = mb_substr(trim(join('', $differences)), 0, strlen($original)); - } - - // clean up spaces between tag delimiters - $diff = preg_replace('/>\s*<', $diff); - - // correct over-sensitively stripped bad html elements - $diff = preg_replace('/[^<](iframe|script|embed|object' . - '|applet|base|img|style)/m', '<$1', $diff); - - if (mb_strlen($diff) < 4) { - return null; - } - - return $diff . $redux; - } - - /** - * This method prepares incoming JSON data for the PHPIDS detection - * process. It utilizes _jsonConcatContents() as callback and returns a - * string version of the JSON data structures. - * - * @param mixed $key - * @param mixed $value - * @since 0.5.3 - * - * @return array - */ - private function _jsonDecodeValues($key, $value) { - - $tmp_key = json_decode($key); - $tmp_value = json_decode($value); - - if($tmp_value && is_array($tmp_value) || is_object($tmp_value)) { - array_walk_recursive($tmp_value, array($this, '_jsonConcatContents')); - $value = $this->tmpJsonString; - } else { - $this->tmpJsonString .= " " . $tmp_value . "\n"; - } - - if($tmp_key && is_array($tmp_key) || is_object($tmp_key)) { - array_walk_recursive($tmp_key, array($this, '_jsonConcatContents')); - $key = $this->tmpJsonString; - } else { - $this->tmpJsonString .= " " . $tmp_key . "\n"; - } - - return array($key, $value); - } - - /** - * This is the callback used in _jsonDecodeValues(). The method - * concatenates key and value and stores them in $this->tmpJsonString. - * - * @param mixed $key - * @param mixed $value - * @since 0.5.3 - * - * @return void - */ - private function _jsonConcatContents($key, $value) { - - if(is_string($key) && is_string($value)) { - $this->tmpJsonString .= $key . " " . $value . "\n"; - } else { - $this->_jsonDecodeValues( - json_encode($key), json_encode($value) - ); - } - } - - /** - * Matches given value and/or key against given filter - * - * @param mixed $key the key to optionally scan - * @param mixed $value the value to scan - * @param object $filter the filter object - * - * @return boolean - */ - private function _match($key, $value, $filter) - { - if ($this->scanKeys) { - if ($filter->match($key)) { - return true; - } - } - - if ($filter->match($value)) { - return true; - } - - return false; - } - - /** - * Sets exception array - * - * @param mixed $exceptions the thrown exceptions - * - * @return void - */ - public function setExceptions($exceptions) - { - if (!is_array($exceptions)) { - $exceptions = array($exceptions); - } - - $this->exceptions = $exceptions; - } - - /** - * Returns exception array - * - * @return array - */ - public function getExceptions() - { - return $this->exceptions; - } - - /** - * Sets html array - * - * @param mixed $html the fields containing html - * @since 0.5 - * - * @return void - */ - public function setHtml($html) - { - if (!is_array($html)) { - $html = array($html); - } - - $this->html = $html; - } - - /** - * Adds a value to the html array - * - * @since 0.5 - * - * @return void - */ - public function addHtml($value) - { - $this->html[] = $value; - } - - /** - * Returns html array - * - * @since 0.5 - * - * @return array the fields that contain allowed html - */ - public function getHtml() - { - return $this->html; - } - - /** - * Sets json array - * - * @param mixed $json the fields containing json - * @since 0.5.3 - * - * @return void - */ - public function setJson($json) - { - if (!is_array($json)) { - $json = array($json); - } - - $this->json = $json; - } - - /** - * Adds a value to the json array - * - * @param string the value containing JSON data - * @since 0.5.3 - * - * @return void - */ - public function addJson($value) - { - $this->json[] = $value; - } - - /** - * Returns json array - * - * @since 0.5.3 - * - * @return array the fields that contain json - */ - public function getJson() - { - return $this->json; - } - - /** - * Returns storage container - * - * @return array - */ - public function getStorage() - { - return $this->storage; - } - - /** - * Returns report object providing various functions to work with - * detected results. Also the centrifuge data is being set as property - * of the report object. - * - * @return object IDS_Report - */ - public function getReport() - { - if (isset($this->centrifuge) && $this->centrifuge) { - $this->report->setCentrifuge($this->centrifuge); - } - - return $this->report; - } - -} - -/** - * Local variables: - * tab-width: 4 - * c-basic-offset: 4 - * End: - * vim600: sw=4 ts=4 expandtab - */ diff --git a/libraries/plugins/IDS/Report.php b/libraries/plugins/IDS/Report.php deleted file mode 100644 index 675b976..0000000 --- a/libraries/plugins/IDS/Report.php +++ /dev/null @@ -1,341 +0,0 @@ -. - * - * PHP version 5.1.6+ - * - * @category Security - * @package PHPIDS - * @author Mario Heiderich - * @author Christian Matthies - * @author Lars Strojny - * @license http://www.gnu.org/licenses/lgpl.html LGPL - * @link http://php-ids.org/ - */ - -/** - * PHPIDS report object - * - * The report objects collects a number of events and thereby presents the - * detected results. It provides a convenient API to work with the results. - * - * Note that this class implements Countable, IteratorAggregate and - * a __toString() method - * - * @category Security - * @package PHPIDS - * @author Christian Matthies - * @author Mario Heiderich - * @author Lars Strojny - * @copyright 2007-2009 The PHPIDS Group - * @license http://www.gnu.org/licenses/lgpl.html LGPL - * @version Release: $Id:Report.php 517 2007-09-15 15:04:13Z mario $ - * @link http://php-ids.org/ - */ -class IDS_Report implements Countable, IteratorAggregate -{ - - /** - * Event container - * - * @var array - */ - protected $events = array(); - - /** - * List of affected tags - * - * This list of tags is collected from the collected event objects on - * demand when IDS_Report->getTags() is called - * - * @var array - */ - protected $tags = array(); - - /** - * Impact level - * - * The impact level is calculated on demand by adding the results of the - * event objects on IDS_Report->getImpact() - * - * @var integer - */ - protected $impact = 0; - - /** - * Centrifuge data - * - * This variable - initiated as an empty array - carries all information - * about the centrifuge data if available - * - * @var array - */ - protected $centrifuge = array(); - - /** - * Constructor - * - * @param array $events the events the report should include - * - * @return void - */ - public function __construct(array $events = null) - { - if ($events) { - foreach ($events as $event) { - $this->addEvent($event); - } - } - } - - /** - * Adds an IDS_Event object to the report - * - * @param object $event IDS_Event - * - * @return object $this - */ - public function addEvent(IDS_Event $event) - { - $this->clear(); - $this->events[$event->getName()] = $event; - - return $this; - } - - /** - * Get event by name - * - * In most cases an event is identified by the key of the variable that - * contained maliciously appearing content - * - * @param scalar $name the event name - * - * @throws InvalidArgumentException if argument is invalid - * @return mixed IDS_Event object or false if the event does not exist - */ - public function getEvent($name) - { - if (!is_scalar($name)) { - throw new InvalidArgumentException( - 'Invalid argument type given' - ); - } - - if ($this->hasEvent($name)) { - return $this->events[$name]; - } - - return false; - } - - /** - * Returns list of affected tags - * - * @return array - */ - public function getTags() - { - if (!$this->tags) { - $this->tags = array(); - - foreach ($this->events as $event) { - $this->tags = array_merge($this->tags, - $event->getTags()); - } - - $this->tags = array_values(array_unique($this->tags)); - } - - return $this->tags; - } - - /** - * Returns total impact - * - * Each stored IDS_Event object and its IDS_Filter sub-object are called - * to calculate the overall impact level of this request - * - * @return integer - */ - public function getImpact() - { - if (!$this->impact) { - $this->impact = 0; - foreach ($this->events as $event) { - $this->impact += $event->getImpact(); - } - } - - return $this->impact; - } - - /** - * Checks if a specific event with given name exists - * - * @param scalar $name the event name - * - * @throws InvalidArgumentException if argument is illegal - * - * @return boolean - */ - public function hasEvent($name) - { - if (!is_scalar($name)) { - throw new InvalidArgumentException('Invalid argument given'); - } - - return isset($this->events[$name]); - } - - /** - * Returns total amount of events - * - * @return integer - */ - public function count() - { - return count($this->events); - } - - /** - * Return iterator object - * - * In order to provide the possibility to directly iterate over the - * IDS_Event object the IteratorAggregate is implemented. One can easily - * use foreach() to iterate through all stored IDS_Event objects. - * - * @return ArrayObject the event collection - */ - public function getIterator() - { - return new ArrayObject($this->events); - } - - /** - * Checks if any events are registered - * - * @return boolean - */ - public function isEmpty() - { - return empty($this->events); - } - - /** - * Clears calculated/collected values - * - * @return void - */ - protected function clear() - { - $this->impact = 0; - $this->tags = array(); - } - - /** - * This method returns the centrifuge property or null if not - * filled with data - * - * @return array/null - */ - public function getCentrifuge() - { - return ($this->centrifuge && count($this->centrifuge) > 0) - ? $this->centrifuge : null; - } - - /** - * This method sets the centrifuge property - * - * @param array $centrifuge the centrifuge data - * - * @throws InvalidArgumentException if argument is illegal - * - * @return boolean true is arguments were valid - */ - public function setCentrifuge($centrifuge = array()) - { - if (is_array($centrifuge) && $centrifuge) { - $this->centrifuge = $centrifuge; - return true; - } - throw new InvalidArgumentException('Invalid argument given'); - } - - /** - * Directly outputs all available information - * - * @return string - */ - public function __toString() - { - if (!$this->isEmpty()) { - $output = ''; - $output .= 'Total impact: ' . $this->getImpact() . "
\n"; - $output .= 'Affected tags: ' . join(', ', $this->getTags()) . - "
\n"; - - foreach ($this->events as $event) { - $output .= "
\nVariable: " . - htmlspecialchars($event->getName()) . ' | Value: ' . - htmlspecialchars($event->getValue()) . "
\n"; - $output .= 'Impact: ' . $event->getImpact() . ' | Tags: ' . - join(', ', $event->getTags()) . "
\n"; - - foreach ($event as $filter) { - $output .= 'Description: ' . $filter->getDescription() . - ' | '; - $output .= 'Tags: ' . join(', ', $filter->getTags()) . - ' | '; - $output .= 'ID: ' . $filter->getId() . - "
\n"; - } - } - - $output .= '
'; - - if ($centrifuge = $this->getCentrifuge()) { - $output .= 'Centrifuge detection data'; - $output .= '
Threshold: ' . - ((isset($centrifuge['threshold'])&&$centrifuge['threshold']) ? - $centrifuge['threshold'] : '---'); - $output .= '
Ratio: ' . - ((isset($centrifuge['ratio'])&&$centrifuge['ratio']) ? - $centrifuge['ratio'] : '---'); - if(isset($centrifuge['converted'])) { - $output .= '
Converted: ' . $centrifuge['converted']; - } - $output .= "

\n"; - } - } - - return isset($output) ? $output : ''; - } -} - -/** - * Local variables: - * tab-width: 4 - * c-basic-offset: 4 - * End: - * vim600: sw=4 ts=4 expandtab - */ diff --git a/libraries/plugins/IDS/Version.php b/libraries/plugins/IDS/Version.php deleted file mode 100644 index 094551f..0000000 --- a/libraries/plugins/IDS/Version.php +++ /dev/null @@ -1,49 +0,0 @@ -. - * - * PHP version 5.1.6+ - * - * @category Security - * @package PHPIDS - * @author Mario Heiderich - * @author Christian Matthies - * @author Lars Strojny - * @license http://www.gnu.org/licenses/lgpl.html LGPL - * @link http://php-ids.org/ - */ - -/** - * PHPIDS version class - * - * @category Security - * @package PHPIDS - * @author Christian Matthies - * @author Mario Heiderich - * @author Lars Strojny - * @copyright 2007-2009 The PHPIDS Group - * @license http://www.gnu.org/licenses/lgpl.html LGPL - * @version Release: $Id:Converter.php 517 2007-09-15 15:04:13Z mario $ - * @link http://php-ids.org/ - */ -abstract class IDS_Version -{ - const VERSION = '@@phpIdsVersion@@'; -} diff --git a/libraries/plugins/IDS/default_filter.json b/libraries/plugins/IDS/default_filter.json deleted file mode 100644 index 0e68fa0..0000000 --- a/libraries/plugins/IDS/default_filter.json +++ /dev/null @@ -1 +0,0 @@ -{"filters":{"filter":[{"id":"1","rule":"(?:\"[^\"]*[^-]?>)|(?:[^\\w\\s]\\s*\\\/>)|(?:>\")","description":"finds html breaking injections including whitespace attacks","tags":{"tag":["xss","csrf"]},"impact":"4"},{"id":"2","rule":"(?:\"+.*[<=]\\s*\"[^\"]+\")|(?:\"\\s*\\w+\\s*=)|(?:>\\w=\\\/)|(?:#.+\\)[\"\\s]*>)|(?:\"\\s*(?:src|style|on\\w+)\\s*=\\s*\")|(?:[^\"]?\"[,;\\s]+\\w*[\\[\\(])","description":"finds attribute breaking injections including whitespace attacks","tags":{"tag":["xss","csrf"]},"impact":"4"},{"id":"3","rule":"(?:^>[\\w\\s]*<\\\/?\\w{2,}>)","description":"finds unquoted attribute breaking injections","tags":{"tag":["xss","csrf"]},"impact":"2"},{"id":"4","rule":"(?:[+\\\/]\\s*name[\\W\\d]*[)+])|(?:;\\W*url\\s*=)|(?:[^\\w\\s\\\/?:>]\\s*(?:location|referrer|name)\\s*[^\\\/\\w\\s-])","description":"Detects url-, name-, JSON, and referrer-contained payload attacks","tags":{"tag":["xss","csrf"]},"impact":"5"},{"id":"5","rule":"(?:\\W\\s*hash\\s*[^\\w\\s-])|(?:\\w+=\\W*[^,]*,[^\\s(]\\s*\\()|(?:\\?\"[^\\s\"]\":)|(?:(?]*)t(?!rong))|(?:\\)|(?:[^*]\\\/\\*|\\*\\\/[^*])|(?:(?:[\\W\\d]#|--|{)$)|(?:\\\/{3,}.*$)|(?:)","description":"Detects common comment types","tags":{"tag":["xss","csrf","id"]},"impact":"3"},{"id":"37","rule":"(?:\\~])","description":"Detects conditional SQL injection attempts","tags":{"tag":["sqli","id","lfi"]},"impact":"6"},{"id":"42","rule":"(?:\"\\s*or\\s*\"?\\d)|(?:\\\\x(?:23|27|3d))|(?:^.?\"$)|(?:(?:^[\"\\\\]*(?:[\\d\"]+|[^\"]+\"))+\\s*(?:n?and|x?or|not|\\|\\||\\&\\&)\\s*[\\w\"[+&!@(),.-])|(?:[^\\w\\s]\\w+\\s*[|-]\\s*\"\\s*\\w)|(?:@\\w+\\s+(and|or)\\s*[\"\\d]+)|(?:@[\\w-]+\\s(and|or)\\s*[^\\w\\s])|(?:[^\\w\\s:]\\s*\\d\\W+[^\\w\\s]\\s*\".)|(?:\\Winformation_schema|table_name\\W)","description":"Detects classic SQL injection probings 1\/2","tags":{"tag":["sqli","id","lfi"]},"impact":"6"},{"id":"43","rule":"(?:\"\\s*\\*.+(?:or|id)\\W*\"\\d)|(?:\\^\")|(?:^[\\w\\s\"-]+(?<=and\\s)(?<=or\\s)(?<=xor\\s)(?<=nand\\s)(?<=not\\s)(?<=\\|\\|)(?<=\\&\\&)\\w+\\()|(?:\"[\\s\\d]*[^\\w\\s]+\\W*\\d\\W*.*[\"\\d])|(?:\"\\s*[^\\w\\s?]+\\s*[^\\w\\s]+\\s*\")|(?:\"\\s*[^\\w\\s]+\\s*[\\W\\d].*(?:#|--))|(?:\".*\\*\\s*\\d)|(?:\"\\s*or\\s[^\\d]+[\\w-]+.*\\d)|(?:[()*<>%+-][\\w-]+[^\\w\\s]+\"[^,])","description":"Detects classic SQL injection probings 2\/2","tags":{"tag":["sqli","id","lfi"]},"impact":"6"},{"id":"44","rule":"(?:\\d\"\\s+\"\\s+\\d)|(?:^admin\\s*\"|(\\\/\\*)+\"+\\s?(?:--|#|\\\/\\*|{)?)|(?:\"\\s*or[\\w\\s-]+\\s*[+<>=(),-]\\s*[\\d\"])|(?:\"\\s*[^\\w\\s]?=\\s*\")|(?:\"\\W*[+=]+\\W*\")|(?:\"\\s*[!=|][\\d\\s!=+-]+.*[\"(].*$)|(?:\"\\s*[!=|][\\d\\s!=]+.*\\d+$)|(?:\"\\s*like\\W+[\\w\"(])|(?:\\sis\\s*0\\W)|(?:where\\s[\\s\\w\\.,-]+\\s=)|(?:\"[<>~]+\")","description":"Detects basic SQL authentication bypass attempts 1\/3","tags":{"tag":["sqli","id","lfi"]},"impact":"7"},{"id":"45","rule":"(?:union\\s*(?:all|distinct|[(!@]*)?\\s*[([]*\\s*select)|(?:\\w+\\s+like\\s+\\\")|(?:like\\s*\"\\%)|(?:\"\\s*like\\W*[\"\\d])|(?:\"\\s*(?:n?and|x?or|not |\\|\\||\\&\\&)\\s+[\\s\\w]+=\\s*\\w+\\s*having)|(?:\"\\s*\\*\\s*\\w+\\W+\")|(?:\"\\s*[^?\\w\\s=.,;)(]+\\s*[(@\"]*\\s*\\w+\\W+\\w)|(?:select\\s*[\\[\\]()\\s\\w\\.,\"-]+from)|(?:find_in_set\\s*\\()","description":"Detects basic SQL authentication bypass attempts 2\/3","tags":{"tag":["sqli","id","lfi"]},"impact":"7"},{"id":"46","rule":"(?:in\\s*\\(+\\s*select)|(?:(?:n?and|x?or|not |\\|\\||\\&\\&)\\s+[\\s\\w+]+(?:regexp\\s*\\(|sounds\\s+like\\s*\"|[=\\d]+x))|(\"\\s*\\d\\s*(?:--|#))|(?:\"[%&<>^=]+\\d\\s*(=|or))|(?:\"\\W+[\\w+-]+\\s*=\\s*\\d\\W+\")|(?:\"\\s*is\\s*\\d.+\"?\\w)|(?:\"\\|?[\\w-]{3,}[^\\w\\s.,]+\")|(?:\"\\s*is\\s*[\\d.]+\\s*\\W.*\")","description":"Detects basic SQL authentication bypass attempts 3\/3","tags":{"tag":["sqli","id","lfi"]},"impact":"7"},{"id":"47","rule":"(?:[\\d\\W]\\s+as\\s*[\"\\w]+\\s*from)|(?:^[\\W\\d]+\\s*(?:union|select|create|rename|truncate|load|alter|delete|update|insert|desc))|(?:(?:select|create|rename|truncate|load|alter|delete|update|insert|desc)\\s+(?:(?:group_)concat|char|load_file)\\s?\\(?)|(?:end\\s*\\);)|(\"\\s+regexp\\W)|(?:[\\s(]load_file\\s*\\()","description":"Detects concatenated basic SQL injection and SQLLFI attempts","tags":{"tag":["sqli","id","lfi"]},"impact":"5"},{"id":"48","rule":"(?:@.+=\\s*\\(\\s*select)|(?:\\d+\\s*or\\s*\\d+\\s*[\\-+])|(?:\\\/\\w+;?\\s+(?:having|and|or|select)\\W)|(?:\\d\\s+group\\s+by.+\\()|(?:(?:;|#|--)\\s*(?:drop|alter))|(?:(?:;|#|--)\\s*(?:update|insert)\\s*\\w{2,})|(?:[^\\w]SET\\s*@\\w+)|(?:(?:n?and|x?or|not |\\|\\||\\&\\&)[\\s(]+\\w+[\\s)]*[!=+]+[\\s\\d]*[\"=()])","description":"Detects chained SQL injection attempts 1\/2","tags":{"tag":["sqli","id"]},"impact":"6"},{"id":"49","rule":"(?:\"\\s+and\\s*=\\W)|(?:\\(\\s*select\\s*\\w+\\s*\\()|(?:\\*\\\/from)|(?:\\+\\s*\\d+\\s*\\+\\s*@)|(?:\\w\"\\s*(?:[-+=|@]+\\s*)+[\\d(])|(?:coalesce\\s*\\(|@@\\w+\\s*[^\\w\\s])|(?:\\W!+\"\\w)|(?:\";\\s*(?:if|while|begin))|(?:\"[\\s\\d]+=\\s*\\d)|(?:order\\s+by\\s+if\\w*\\s*\\()|(?:[\\s(]+case\\d*\\W.+[tw]hen[\\s(])","description":"Detects chained SQL injection attempts 2\/2","tags":{"tag":["sqli","id"]},"impact":"6"},{"id":"50","rule":"(?:(select|;)\\s+(?:benchmark|if|sleep)\\s*?\\(\\s*\\(?\\s*\\w+)","description":"Detects SQL benchmark and sleep injection attempts including conditional queries","tags":{"tag":["sqli","id"]},"impact":"4"},{"id":"51","rule":"(?:create\\s+function\\s+\\w+\\s+returns)|(?:;\\s*(?:select|create|rename|truncate|load|alter|delete|update|insert|desc)\\s*[\\[(]?\\w{2,})","description":"Detects MySQL UDF injection and other data\/structure manipulation attempts","tags":{"tag":["sqli","id"]},"impact":"6"},{"id":"52","rule":"(?:alter\\s*\\w+.*character\\s+set\\s+\\w+)|(\";\\s*waitfor\\s+time\\s+\")|(?:\";.*:\\s*goto)","description":"Detects MySQL charset switch and MSSQL DoS attempts","tags":{"tag":["sqli","id"]},"impact":"6"},{"id":"53","rule":"(?:procedure\\s+analyse\\s*\\()|(?:;\\s*(declare|open)\\s+[\\w-]+)|(?:create\\s+(procedure|function)\\s*\\w+\\s*\\(\\s*\\)\\s*-)|(?:declare[^\\w]+[@#]\\s*\\w+)|(exec\\s*\\(\\s*@)","description":"Detects MySQL and PostgreSQL stored procedure\/function injections","tags":{"tag":["sqli","id"]},"impact":"7"},{"id":"54","rule":"(?:select\\s*pg_sleep)|(?:waitfor\\s*delay\\s?\"+\\s?\\d)|(?:;\\s*shutdown\\s*(?:;|--|#|\\\/\\*|{))","description":"Detects Postgres pg_sleep injection, waitfor delay attacks and database shutdown attempts","tags":{"tag":["sqli","id"]},"impact":"5"},{"id":"55","rule":"(?:\\sexec\\s+xp_cmdshell)|(?:\"\\s*!\\s*[\"\\w])|(?:from\\W+information_schema\\W)|(?:(?:(?:current_)?user|database|schema|connection_id)\\s*\\([^\\)]*)|(?:\";?\\s*(?:select|union|having)\\s*[^\\s])|(?:\\wiif\\s*\\()|(?:exec\\s+master\\.)|(?:union select @)|(?:union[\\w(\\s]*select)|(?:select.*\\w?user\\()|(?:into[\\s+]+(?:dump|out)file\\s*\")","description":"Detects MSSQL code execution and information gathering attempts","tags":{"tag":["sqli","id"]},"impact":"5"},{"id":"56","rule":"(?:merge.*using\\s*\\()|(execute\\s*immediate\\s*\")|(?:\\W+\\d*\\s*having\\s*[^\\s\\-])|(?:match\\s*[\\w(),+-]+\\s*against\\s*\\()","description":"Detects MATCH AGAINST, MERGE, EXECUTE IMMEDIATE and HAVING injections","tags":{"tag":["sqli","id"]},"impact":"5"},{"id":"57","rule":"(?:,.*[)\\da-f\"]\"(?:\".*\"|\\Z|[^\"]+))|(?:\\Wselect.+\\W*from)|((?:select|create|rename|truncate|load|alter|delete|update|insert|desc)\\s*\\(\\s*space\\s*\\()","description":"Detects MySQL comment-\/space-obfuscated injections and backtick termination","tags":{"tag":["sqli","id"]},"impact":"5"},{"id":"58","rule":"(?:@[\\w-]+\\s*\\()|(?:]\\s*\\(\\s*[\"!]\\s*\\w)|(?:<[?%](?:php)?.*(?:[?%]>)?)|(?:;[\\s\\w|]*\\$\\w+\\s*=)|(?:\\$\\w+\\s*=(?:(?:\\s*\\$?\\w+\\s*[(;])|\\s*\".*\"))|(?:;\\s*\\{\\W*\\w+\\s*\\()","description":"Detects code injection attempts 1\/3","tags":{"tag":["id","rfe","lfi"]},"impact":"7"},{"id":"59","rule":"(?:(?:[;]+|(<[?%](?:php)?)).*(?:define|eval|file_get_contents|include|require|require_once|set|shell_exec|phpinfo|system|passthru|preg_\\w+|execute)\\s*[\"(@])","description":"Detects code injection attempts 2\/3","tags":{"tag":["id","rfe","lfi"]},"impact":"7"},{"id":"60","rule":"(?:(?:[;]+|(<[?%](?:php)?)).*[^\\w](?:echo|print|print_r|var_dump|[fp]open))|(?:;\\s*rm\\s+-\\w+\\s+)|(?:;.*{.*\\$\\w+\\s*=)|(?:\\$\\w+\\s*\\[\\]\\s*=\\s*)","description":"Detects code injection attempts 3\/3","tags":{"tag":["id","rfe","lfi"]},"impact":"7"},{"id":"61","rule":"(?:\\w+]?(?))","description":"Finds attribute breaking injections including obfuscated attributes","tags":{"tag":["xss","csrf"]},"impact":"4"},{"id":"69","rule":"(?:(?:msgbox|eval)\\s*\\+|(?:language\\s*=\\*vbscript))","description":"Finds basic VBScript injection attempts","tags":{"tag":["xss","csrf"]},"impact":"4"},{"id":"70","rule":"(?:\\[\\$(?:ne|eq|lte?|gte?|n?in|mod|all|size|exists|type|slice|or)\\])","description":"Finds basic MongoDB SQL injection attempts","tags":{"tag":"sqli"},"impact":"4"},{"id":"71","rule":"(?:[\\s\\d\\\/\"]+(?:on\\w+|style|poster|background)=[$\"\\w])|(?:-type\\s*:\\s*multipart)","description":"finds malicious attribute injection attempts and MHTML attacks","tags":{"tag":["xss","csrf"]},"impact":"6"},{"id":"72","rule":"(?:(sleep\\((\\s*)(\\d*)(\\s*)\\)|benchmark\\((.*)\\,(.*)\\)))","description":"Detects blind sqli tests using sleep() or benchmark().","tags":{"tag":["sqli","id"]},"impact":"4"},{"id":"73","rule":"(?i:(\\%SYSTEMROOT\\%))","description":"An attacker is trying to locate a file to read or write.","tags":{"tag":["files","id"]},"impact":"4"},{"id":"74","rule":"(?i:(ping(.*)[\\-(.*)\\w|\\w(.*)\\-]))","description":"Detects remote code exectuion tests. Will match \"ping -n 3 localhost\" and \"ping localhost -n 3\"","tags":{"tag":["Command Execution","id"]},"impact":"5"},{"id":"75","rule":"(?:(((.*)\\%[c|d|i|e|f|g|o|s|u|x|p|n]){8}))","description":"Looking for a format string attack","tags":{"tag":"format string"},"impact":"4"},{"id":"76","rule":"(?:(union(.*)select(.*)from))","description":"Looking for basic sql injection. Common attack string for mysql, oracle and others.","tags":{"tag":["sqli","id"]},"impact":"3"},{"id":"77","rule":"(?:^(-0000023456|4294967295|4294967296|2147483648|2147483647|0000012345|-2147483648|-2147483649|0000023456|2.2250738585072007e-308|1e309)$)","description":"Looking for intiger overflow attacks, these are taken from skipfish, except 2.2250738585072007e-308 is the \"magic number\" crash","tags":{"tag":["sqli","id"]},"impact":"3"}]}} \ No newline at end of file diff --git a/libraries/plugins/IDS/default_filter.xml b/libraries/plugins/IDS/default_filter.xml deleted file mode 100644 index 0a6bc5a..0000000 --- a/libraries/plugins/IDS/default_filter.xml +++ /dev/null @@ -1,930 +0,0 @@ - - - 1 - )|(?:[^\w\s]\s*\/>)|(?:>")]]> - Finds Html Breaking Injections Including Whitespace Attacks - - xss - csrf - - 4 - - - 2 - \w=\/)|(?:#.+\)["\s]*>)|(?:"\s*(?:src|style|on\w+)\s*=\s*")|(?:[^"]?"[,;\s]+\w*[\[\(])]]> - Finds Attribute Breaking Injections Including Whitespace Attacks - - xss - csrf - - 4 - - - 3 - [\w\s]*<\/?\w{2,}>)]]> - Finds Unquoted Attribute Breaking Injections - - xss - csrf - - 2 - - - 4 - ]\s*(?:location|referrer|name)\s*[^\/\w\s-])]]> - Detects Url-, Name-, JSON, And Referrer-contained Payload Attacks - - xss - csrf - - 5 - - - 5 - - Detects Hash-contained Xss Payload Attacks, Setter Usage And Property Overloading - - xss - csrf - - 5 - - - 6 - - Detects Self Contained Xss Via With(), Common Loops And Regex To String Conversion - - xss - csrf - - 5 - - - 7 - - Detects JavaScript With(), Ternary Operators And XML Predicate Attacks - - xss - csrf - - 5 - - - 8 - - Detects Self-executing JavaScript Functions - - xss - csrf - - 5 - - - 9 - - Detects The IE Octal, Hex And Unicode Entities - - xss - csrf - - 2 - - - 10 - - Detects Basic Directory Traversal - - dt - id - lfi - - 5 - - - 11 - - Detects Specific Directory And Path Traversal - - dt - id - lfi - - 5 - - - 12 - - Detects Etc/passwd Inclusion Attempts - - dt - id - lfi - - 5 - - - 13 - - Detects Halfwidth/fullwidth Encoded Unicode HTML Breaking Attempts - - xss - csrf - - 3 - - - 14 - - Detects Possible Includes, VBSCript/JScript Encodeed And Packed Functions - - xss - csrf - id - rfe - - 5 - - - 15 - - Detects JavaScript DOM/miscellaneous Properties And Methods - - xss - csrf - id - rfe - - 6 - - - 16 - - Detects Possible Includes And Typical Script Methods - - xss - csrf - id - rfe - - 5 - - - 17 - - Detects JavaScript Object Properties And Methods - - xss - csrf - id - rfe - - 4 - - - 18 - - Detects JavaScript Array Properties And Methods - - xss - csrf - id - rfe - - 4 - - - 19 - - Detects JavaScript String Properties And Methods - - xss - csrf - id - rfe - - 4 - - - 20 - - Detects JavaScript Language Constructs - - xss - csrf - id - rfe - - 4 - - - 21 - - Detects Very Basic XSS Probings - - xss - csrf - id - rfe - - 3 - - - 22 - - Detects Advanced XSS Probings Via Script(), RexExp, Constructors And XML Namespaces - - xss - csrf - id - rfe - - 5 - - - 23 - - Detects JavaScript Location/document Property Access And Window Access Obfuscation - - xss - csrf - - 5 - - - 24 - - Detects Basic Obfuscated JavaScript Script Injections - - xss - csrf - - 5 - - - 25 - - Detects Obfuscated JavaScript Script Injections - - xss - csrf - - 5 - - - 26 - - Detects JavaScript Cookie Stealing And Redirection Attempts - - xss - csrf - - 4 - - - 27 - - Detects Data: URL Injections, VBS Injections And Common URI Schemes - - xss - rfe - - 5 - - - 28 - - Detects IE Firefoxurl Injections, Cache Poisoning Attempts And Local File Inclusion/execution - - xss - rfe - lfi - csrf - - 5 - - - 29 - - Detects Bindings And Behavior Injections - - xss - csrf - rfe - - 4 - - - 30 - - Detects Common XSS Concatenation Patterns 1/2 - - xss - csrf - id - rfe - - 4 - - - 31 - - Detects Common XSS Concatenation Patterns 2/2 - - xss - csrf - id - rfe - - 4 - - - 32 - - Detects Possible Event Handlers - - xss - csrf - - 4 - - - 33 - ]*)t(?!rong))|(?:\ - Detects Obfuscated Script Tags And XML Wrapped HTML - - xss - - 4 - - - 34 - - Detects Attributes In Closing Tags And Conditional Compilation Tokens - - xss - csrf - - 4 - - - 35 - )|(?:[^*]\/\*|\*\/[^*])|(?:(?:[\W\d]#|--|{)$)|(?:\/{3,}.*$)|(?:)]]> - Detects Common Comment Types - - xss - csrf - id - - 3 - - - 36 - - Detects Base Href Injections And XML Entity Injections - - xss - csrf - id - - 5 - - - 37 - - Detects Possibly Malicious Html Elements Including Some Attributes - - xss - csrf - id - rfe - lfi - - 4 - - - 39 - - Detects MySQL Comments, Conditions And Ch(a)r Injections - - sqli - id - lfi - - 6 - - - 40 - ~])]]> - Detects Conditional SQL Injection Attempts - - sqli - id - lfi - - 6 - - - 41 - - Detects Conditional SQL Injection Attempts - - sqli - id - lfi - - 0 - - - 42 - %+-][\w-]+[^\w\s]+"[^,])]]> - Detects Classic SQL Injection Probings 2/2 - - sqli - id - lfi - - 6 - - - 43 - =(),-]\s*[\d"])|(?:"\s*[^\w\s]?=\s*")|(?:"\W*[+=]+\W*")|(?:"\s*[!=|][\d\s!=+-]+.*["(].*$)|(?:"\s*[!=|][\d\s!=]+.*\d+$)|(?:"\s*like\W+[\w"(])|(?:\sis\s*0\W)|(?:where\s[\s\w\.,-]+\s=)|(?:"[<>~]+")]]> - Detects Basic SQL Authentication Bypass Attempts 1/3 - - sqli - id - lfi - - 7 - - - 44 - - Detects Basic SQL Authentication Bypass Attempts 2/3 - - sqli - id - lfi - - 7 - - - 45 - ^=]+\d\s*(=|or))|(?:"\W+[\w+-]+\s*=\s*\d\W+")|(?:"\s*is\s*\d.+"?\w)|(?:"\|?[\w-]{3,}[^\w\s.,]+")|(?:"\s*is\s*[\d.]+\s*\W.*")]]> - Detects Basic SQL Authentication Bypass Attempts 3/3 - - sqli - id - lfi - - 7 - - - 46 - - Detects Concatenated Basic SQL Injection And SQLLFI Attempts - - sqli - id - lfi - - 5 - - - 47 - - Detects Chained SQL Injection Attempts 1/2 - - sqli - id - - 6 - - - 48 - - Detects Chained SQL Injection Attempts 2/2 - - sqli - id - - 6 - - - 49 - - Detects SQL Benchmark And Sleep Injection Attempts Including Conditional Queries - - sqli - id - - 4 - - - 50 - - Detects MySQL UDF Injection And Other Data/structure Manipulation Attempts - - sqli - id - - 6 - - - 51 - - Detects MySQL Charset Switch And MSSQL DoS Attempts - - sqli - id - - 6 - - - 52 - - Detects MySQL And PostgreSQL Stored Procedure/function Injections - - sqli - id - - 7 - - - 53 - - Detects Postgres Pg_sleep Injection, Waitfor Delay Attacks And Database Shutdown Attempts - - sqli - id - - 5 - - - 54 - - Detects MSSQL Code Execution And Information Gathering Attempts - - sqli - id - - 5 - - - 55 - - Detects MATCH AGAINST, MERGE, EXECUTE IMMEDIATE And HAVING Injections - - sqli - id - - 5 - - - 56 - - Detects MySQL Comment-/space-obfuscated Injections And Backtick Termination - - sqli - id - - 5 - - - 57 - )?)|(?:;[\s\w|]*\$\w+\s*=)|(?:\$\w+\s*=(?:(?:\s*\$?\w+\s*[(;])|\s*".*"))|(?:;\s*\{\W*\w+\s*\()]]> - Detects Code Injection Attempts 1/3 - - id - rfe - lfi - - 7 - - - 58 - - Detects Code Injection Attempts 2/3 - - id - rfe - lfi - - 7 - - - 59 - - Detects Code Injection Attempts 3/3 - - id - rfe - lfi - - 7 - - - 60 - - Detects Url Injections And RFE Attempts - - id - rfe - lfi - - 5 - - - 61 - - Detects Common Function Declarations And Special JS Operators - - id - rfe - lfi - - 5 - - - 62 - - Detects Common Mail Header Injections - - id - spam - - 5 - - - 63 - - Detects Perl Echo Shellcode Injection And LDAP Vectors - - lfi - rfe - - 5 - - - 64 - - Detects Basic XSS DoS Attempts - - rfe - dos - - 5 - - - 65 - - Detects Unknown Attack Vectors Based On PHPIDS Centrifuge Detection - - xss - csrf - id - rfe - lfi - - 7 - - - 66 - ))]]> - Finds Attribute Breaking Injections Including Obfuscated Attributes - - xss - csrf - - 4 - - - 67 - - Finds Basic VBScript Injection Attempts - - xss - csrf - - 4 - - - 68 - - Finds Basic MongoDB SQL Injection Attempts - - sqli - - 4 - - - 69 - - Finds Malicious Attribute Injection Attempts And MHTML Attacks - - xss - csrf - - 6 - - - 70 - - Detects Blind Sqli Tests Using Sleep() Or Benchmark(). - - sqli - id - - 4 - - - 71 - - An Attacker Is Trying To Locate A File To Read Or Write. - - files - id - - 4 - - - 73 - - Looking For A Format String Attack - - format string - - 4 - - - 74 - - Looking For Basic Sql Injection. Common Attack String For Mysql, Oracle And Others. - - sqli - id - - 3 - - - 75 - - Looking For Integer Overflow Attacks, These Are Taken From Skipfish, Except 2.2250738585072007e-308 Is The "magic Number" Crash - - sqli - id - - 3 - - - 76 - - Rate Limit Of Requests Exceeded - - DoS - - 3 - - - 77 - - Suspicious Bots Scanners - - DoS - - 1 - - - 78 - - Shellshock Vulnerability (CVE-2014-6271) - - none - - 3 - - - 79 - - ]]> - SSI Command Injection - - none - - 2 - - - 80 - - TimThumb WebShot Remote Code Execution (0-day) - - none - - 3 - - - 81 - - Joomla 1.5-3.4.5 Object Injection Remote Command Execution - - none - - 3 - - - 82 - \/\\\\*\\x60] - ]]> - SQL Injection (username) - - none - - 3 - - - 83 - - SQL Injection (time-based) - - none - - 2 - - - 84 - - Malformed Host Header - - none - - 2 - - - 85 - - Attempt To Access Phpinfo.php - - none - - 1 - - - 86 - \\s*\/dev\/(?:tc|ud)p\/[^\/]{5,255}\/\\d{1,5}\\b - ]]> - Dev TCP UDP Device File Access (possible Reverse Shell) - - none - - 3 - - - 87 - - Shell Backdoor - - none - - 3 - - - 88 - - Shell Backdoor (img) - - none - - 3 - - - 89 - - Shell Backdoor (p) - - none - - 3 - - \ No newline at end of file diff --git a/libraries/plugins/IDS/default_filter_orig.xml b/libraries/plugins/IDS/default_filter_orig.xml deleted file mode 100644 index 1799e8b..0000000 --- a/libraries/plugins/IDS/default_filter_orig.xml +++ /dev/null @@ -1,798 +0,0 @@ - - - 1 - )|(?:[^\w\s]\s*\/>)|(?:>")]]> - finds html breaking injections including whitespace attacks - - xss - csrf - - 4 - - - 2 - \w=\/)|(?:#.+\)["\s]*>)|(?:"\s*(?:src|style|on\w+)\s*=\s*")|(?:[^"]?"[,;\s]+\w*[\[\(])]]> - finds attribute breaking injections including whitespace attacks - - xss - csrf - - 4 - - - 3 - [\w\s]*<\/?\w{2,}>)]]> - finds unquoted attribute breaking injections - - xss - csrf - - 2 - - - 4 - ]\s*(?:location|referrer|name)\s*[^\/\w\s-])]]> - Detects url-, name-, JSON, and referrer-contained payload attacks - - xss - csrf - - 5 - - - 5 - - Detects hash-contained xss payload attacks, setter usage and property overloading - - xss - csrf - - 5 - - - 6 - - Detects self contained xss via with(), common loops and regex to string conversion - - xss - csrf - - 5 - - - 7 - - Detects JavaScript with(), ternary operators and XML predicate attacks - - xss - csrf - - 5 - - - 8 - - Detects self-executing JavaScript functions - - xss - csrf - - 5 - - - 9 - - Detects the IE octal, hex and unicode entities - - xss - csrf - - 2 - - - 10 - - Detects basic directory traversal - - dt - id - lfi - - 5 - - - 11 - - Detects specific directory and path traversal - - dt - id - lfi - - 5 - - - 12 - - Detects etc/passwd inclusion attempts - - dt - id - lfi - - 5 - - - 13 - - Detects halfwidth/fullwidth encoded unicode HTML breaking attempts - - xss - csrf - - 3 - - - 14 - - Detects possible includes, VBSCript/JScript encodeed and packed functions - - xss - csrf - id - rfe - - 5 - - - 15 - - Detects JavaScript DOM/miscellaneous properties and methods - - xss - csrf - id - rfe - - 6 - - - 16 - - Detects possible includes and typical script methods - - xss - csrf - id - rfe - - 5 - - - 17 - - Detects JavaScript object properties and methods - - xss - csrf - id - rfe - - 4 - - - 18 - - Detects JavaScript array properties and methods - - xss - csrf - id - rfe - - 4 - - - 19 - - Detects JavaScript string properties and methods - - xss - csrf - id - rfe - - 4 - - - 20 - - Detects JavaScript language constructs - - xss - csrf - id - rfe - - 4 - - - 21 - - Detects very basic XSS probings - - xss - csrf - id - rfe - - 3 - - - 22 - - Detects advanced XSS probings via Script(), RexExp, constructors and XML namespaces - - xss - csrf - id - rfe - - 5 - - - 23 - - Detects JavaScript location/document property access and window access obfuscation - - xss - csrf - - 5 - - - 24 - - Detects basic obfuscated JavaScript script injections - - xss - csrf - - 5 - - - 25 - - Detects obfuscated JavaScript script injections - - xss - csrf - - 5 - - - 26 - - Detects JavaScript cookie stealing and redirection attempts - - xss - csrf - - 4 - - - 27 - - Detects data: URL injections, VBS injections and common URI schemes - - xss - rfe - - 5 - - - 28 - - Detects IE firefoxurl injections, cache poisoning attempts and local file inclusion/execution - - xss - rfe - lfi - csrf - - 5 - - - 29 - - Detects bindings and behavior injections - - xss - csrf - rfe - - 4 - - - 30 - - Detects common XSS concatenation patterns 1/2 - - xss - csrf - id - rfe - - 4 - - - 31 - - Detects common XSS concatenation patterns 2/2 - - xss - csrf - id - rfe - - 4 - - - 32 - - Detects possible event handlers - - xss - csrf - - 4 - - - 33 - ]*)t(?!rong))|(?:\ - Detects obfuscated script tags and XML wrapped HTML - - xss - - 4 - - - 34 - - Detects attributes in closing tags and conditional compilation tokens - - xss - csrf - - 4 - - - 35 - )|(?:[^*]\/\*|\*\/[^*])|(?:(?:[\W\d]#|--|{)$)|(?:\/{3,}.*$)|(?:)]]> - Detects common comment types - - xss - csrf - id - - 3 - - - 37 - - Detects base href injections and XML entity injections - - xss - csrf - id - - 5 - - - 38 - - Detects possibly malicious html elements including some attributes - - xss - csrf - id - rfe - lfi - - 4 - - - 39 - - Detects nullbytes and other dangerous characters - - id - rfe - xss - - 5 - - - 40 - - Detects MySQL comments, conditions and ch(a)r injections - - sqli - id - lfi - - 6 - - - 41 - ~])]]> - Detects conditional SQL injection attempts - - sqli - id - lfi - - 6 - - - 42 - - Detects conditional SQL injection attempts - - sqli - id - lfi - - - - 43 - %+-][\w-]+[^\w\s]+"[^,])]]> - Detects classic SQL injection probings 2/2 - - sqli - id - lfi - - 6 - - - 44 - =(),-]\s*[\d"])|(?:"\s*[^\w\s]?=\s*")|(?:"\W*[+=]+\W*")|(?:"\s*[!=|][\d\s!=+-]+.*["(].*$)|(?:"\s*[!=|][\d\s!=]+.*\d+$)|(?:"\s*like\W+[\w"(])|(?:\sis\s*0\W)|(?:where\s[\s\w\.,-]+\s=)|(?:"[<>~]+")]]> - Detects basic SQL authentication bypass attempts 1/3 - - sqli - id - lfi - - 7 - - - 45 - - Detects basic SQL authentication bypass attempts 2/3 - - sqli - id - lfi - - 7 - - - 46 - ^=]+\d\s*(=|or))|(?:"\W+[\w+-]+\s*=\s*\d\W+")|(?:"\s*is\s*\d.+"?\w)|(?:"\|?[\w-]{3,}[^\w\s.,]+")|(?:"\s*is\s*[\d.]+\s*\W.*")]]> - Detects basic SQL authentication bypass attempts 3/3 - - sqli - id - lfi - - 7 - - - 47 - - Detects concatenated basic SQL injection and SQLLFI attempts - - sqli - id - lfi - - 5 - - - 48 - - Detects chained SQL injection attempts 1/2 - - sqli - id - - 6 - - - 49 - - Detects chained SQL injection attempts 2/2 - - sqli - id - - 6 - - - 50 - - Detects SQL benchmark and sleep injection attempts including conditional queries - - sqli - id - - 4 - - - 51 - - Detects MySQL UDF injection and other data/structure manipulation attempts - - sqli - id - - 6 - - - 52 - - Detects MySQL charset switch and MSSQL DoS attempts - - sqli - id - - 6 - - - 53 - - Detects MySQL and PostgreSQL stored procedure/function injections - - sqli - id - - 7 - - - 54 - - Detects Postgres pg_sleep injection, waitfor delay attacks and database shutdown attempts - - sqli - id - - 5 - - - 55 - - Detects MSSQL code execution and information gathering attempts - - sqli - id - - 5 - - - 56 - - Detects MATCH AGAINST, MERGE, EXECUTE IMMEDIATE and HAVING injections - - sqli - id - - 5 - - - 57 - - Detects MySQL comment-/space-obfuscated injections and backtick termination - - sqli - id - - 5 - - - 58 - )?)|(?:;[\s\w|]*\$\w+\s*=)|(?:\$\w+\s*=(?:(?:\s*\$?\w+\s*[(;])|\s*".*"))|(?:;\s*\{\W*\w+\s*\()]]> - Detects code injection attempts 1/3 - - id - rfe - lfi - - 7 - - - 59 - - Detects code injection attempts 2/3 - - id - rfe - lfi - - 7 - - - 60 - - Detects code injection attempts 3/3 - - id - rfe - lfi - - 7 - - - 61 - - Detects url injections and RFE attempts - - id - rfe - lfi - - 5 - - - 62 - - Detects common function declarations and special JS operators - - id - rfe - lfi - - 5 - - - 63 - - Detects common mail header injections - - id - spam - - 5 - - - 64 - - Detects perl echo shellcode injection and LDAP vectors - - lfi - rfe - - 5 - - - 65 - - Detects basic XSS DoS attempts - - rfe - dos - - 5 - - - 67 - - Detects unknown attack vectors based on PHPIDS Centrifuge detection - - xss - csrf - id - rfe - lfi - - 7 - - - 68 - ))]]> - Finds attribute breaking injections including obfuscated attributes - - xss - csrf - - 4 - - - 69 - - Finds basic VBScript injection attempts - - xss - csrf - - 4 - - - 70 - - Finds basic MongoDB SQL injection attempts - - sqli - - 4 - - - 71 - - finds malicious attribute injection attempts and MHTML attacks - - xss - csrf - - 6 - - - 72 - - Detects blind sqli tests using sleep() or benchmark(). - - sqli - id - - 4 - - - 73 - - An attacker is trying to locate a file to read or write. - - files - id - - 4 - - - 74 - - Detects remote code exectuion tests. Will match "ping -n 3 localhost" and "ping localhost -n 3" - - Command Execution - id - - 5 - - - 75 - - Looking for a format string attack - - format string - - 4 - - - 76 - - Looking for basic sql injection. Common attack string for mysql, oracle and others. - - sqli - id - - 3 - - - 77 - - Looking for integer overflow attacks, these are taken from skipfish, except 2.2250738585072007e-308 is the "magic number" crash - - sqli - id - - 3 - - \ No newline at end of file diff --git a/libraries/plugins/IDS/tmp/bad_bots.txt b/libraries/plugins/IDS/tmp/bad_bots.txt deleted file mode 100644 index aa08a0a..0000000 --- a/libraries/plugins/IDS/tmp/bad_bots.txt +++ /dev/null @@ -1 +0,0 @@ -@nonymouse|ADSARobot|Advanced\ Email\ Extractor|ah-ha|aktuelles|almaden|amzn_assoc|Anarchie|Art-Online|AspiWeb|ASPSeek|ASSORT|ATHENS|Atomz|attach|attache|autoemailspider|BackWeb|Bandit|BatchFTP|bdfetch|big\.brother|BlackWidow|bmclient|Boston\ Project|Bot\ mailto:craftbot@yahoo\.com|BravoBrian\ SpiderEngine\ MarcoPolo|Buddy|Bullseye|bumblebee|capture|CherryPicker|ChinaClaw|CICC|clipping|Crescent\ Internet\ ToolPack|cURL|Custo|cyberalert|Deweb|diagem|Digger|Digimarc|DIIbot|DirectUpdate|DISCo|Drip|DSurf15a|DTS\.Agent|EasyDL|eCatch|echo\ extense|ecollector|efp@gmx\.net|EirGrabber|Email\ Extractor|EmailCollector|EmailSiphon|EmailWolf|Express\ WebPictures|ExtractorPro|EyeNetIE|fastlwspider|FavOrg|Favorites\ Sweeper|Fetch\ API\ Request|FEZhead|FileHound|FlashGet|FlickBot|fluffy|frontpage|GalaxyBot|Generic|Getleft|GetSmart|GetWeb!|GetWebPage|gigabaz|Girafabot|Go!Zilla|Go-Ahead-Got-It|GornKer|Grabber|GrabNet|Grafula|Green\ Research|Harvest|hhjhj@yahoo|hloader|HMView|HomePageSearch|http\ generic|HTTPConnect|httpdown|HTTrack|IBM_Planetwide|Image\ Stripper|Image\ Sucker|imagefetch|IncyWincy|Indy\ Library|informant|Ingelin|InterGET|Internet\ Ninja|InternetLinkAgent|InternetSeer\.com|iOpus|IPiumBot\ laurion(dot)com|Iria|Irvine|Jakarta|JBH*Agent|JetCar|JustView|Kapere|KWebGet|Lachesis|larbin|LeechFTP|LexiBot|lftp|libwww|likse|Link*Sleuth|LINKS\ ARoMATIZED|LinkWalker|lwp-trivial|Mac\ Finder|Mag-Net|Magnet|Mass\ Downloader|MCspider|MemoWeb|Microsoft\ URL\ Control|MIDown\ tool|minibot\(NaverRobot\)|Missigua\ Locator|Mister\ PiX|MMMtoCrawl\/UrlDispatcherLLL|MSProxy|multithreaddb|nationaldirectory|Navroad|NearSite|Net\ Vampire|NetAnts|NetCarta|netcraft|netfactual|NetMechanic|netprospector|NetResearchServer|NetSpider|NetZIP|NEWT|nicerspro|NPBot|Octopus|Offline\ Explorer|Offline\ Navigator|OpaL|Openfind|OpenTextSiteCrawler|OutWit|PackRat|PageGrabber|Papa\ Foto|pavuk|pcBrowser|PersonaPilot|PingALink|Pockey|Program\ Shareware|psbot|PSurf|puf|Pump|PushSite|QRVA|QuepasaCreep|RealDownload|Reaper|Recorder|ReGet|replacer|RepoMonkey|Robozilla|Rover|RPT-HTTPClient|Rsync|SearchExpress|searchhippo|searchterms\.it|Second\ Street\ Research|Shai|sitecheck|SiteMapper|SiteSnagger|SlySearch|SmartDownload|snagger|SpaceBison|Spegla|SpiderBot|SqWorm|Star\ Downloader|Stripper|Sucker|SuperBot|SuperHTTP|Surfbot|SurfWalker|Szukacz|tAkeOut|tarspider|Teleport\ Pro|Telesoft|Templeton|traffixer|TrueRobot|TuringOS|TurnitinBot|TV33_Mercator|UIowaCrawler|URL_Spider_Pro|UtilMind|Vacuum|vagabondo|vayala|visibilitygap|vobsub|VoidEYE|vspider|w3mir|Web\ Data\ Extractor|Web\ Downloader|Web\ Image\ Collector|Web\ Sucker|web\.by\.mail|WebAuto|webbandit|Webclipping|webcollage|webcollector|WebCopier|webcraft@bea|WebDAV|webdevil|webdownloader|Webdup|WebEmailExtractor|WebFetch|WebGo\ IS|WebHook|Webinator|WebLeacher|WebMiner|WebMirror|webmole|WebReaper|WebSauger|WEBsaver|Website\ eXtractor|Website\ Quester|WebSnake|Webster|WebStripper|websucker|webvac|webwalk|webweasel|WebWhacker|WebZIP|Wget|whizbang|WhosTalking|Widow|WISEbot|WUMPUS|Wweb|WWWOFFLE|Wysigot|x-Tractor|Xaldon\ WebSpider|XGET \ No newline at end of file diff --git a/libraries/plugins/IDS/tmp/cookie_ips.txt b/libraries/plugins/IDS/tmp/cookie_ips.txt deleted file mode 100644 index 3fb3cf7..0000000 --- a/libraries/plugins/IDS/tmp/cookie_ips.txt +++ /dev/null @@ -1,2 +0,0 @@ -172.19.20.122,2,1429360837,14, -::1,0,1430174122,16, diff --git a/libraries/plugins/IDS/tmp/custom_rules.txt b/libraries/plugins/IDS/tmp/custom_rules.txt deleted file mode 100644 index e6e3202..0000000 --- a/libraries/plugins/IDS/tmp/custom_rules.txt +++ /dev/null @@ -1 +0,0 @@ -a:5:{s:7:"trusted";a:0:{}s:7:"blocked";a:0:{}s:9:"exception";a:1:{i:0;s:10:"COOKIE.lol";}s:4:"html";a:0:{}s:4:"json";a:0:{}} \ No newline at end of file diff --git a/libraries/plugins/IDS/tmp/ips.txt b/libraries/plugins/IDS/tmp/ips.txt deleted file mode 100644 index 2fcf5f7..0000000 --- a/libraries/plugins/IDS/tmp/ips.txt +++ /dev/null @@ -1,2 +0,0 @@ -172.19.13.36,0,1426076415,3, -::1,0,1428069894,5, diff --git a/libraries/plugins/IDS/tmp/phpids_log.txt b/libraries/plugins/IDS/tmp/phpids_log.txt deleted file mode 100644 index 3932af9..0000000 --- a/libraries/plugins/IDS/tmp/phpids_log.txt +++ /dev/null @@ -1,804 +0,0 @@ -"local/unknown",2008-08-18T18:00:29+02:00,36,"xss csrf id rfe lfi sqli","test=%5C%22%3E%3Cscript%3Eeval%28window.name%29%3C%2Fscript%3E","%2Fphp-ids.org%2Ftrunk%2Fdocs%2Fexamples%2Fexample.php%3Ftest%3D%2522%253E%253Cscript%253Eeval%28window.name%29%253C%2Fscript%253E" -"local/unknown",2008-08-18T18:00:32+02:00,36,"xss csrf id rfe lfi sqli","test=%5C%22%3E%3Cscript%3Eeval%28window.name%29%3C%2Fscript%3E","%2Fphp-ids.org%2Ftrunk%2Fdocs%2Fexamples%2Fexample.php%3Ftest%3D%2522%253E%253Cscript%253Eeval%28window.name%29%253C%2Fscript%253E" -"local/unknown",2008-08-18T18:00:46+02:00,36,"xss csrf id rfe lfi sqli","test=%5C%22%3E%3Cscript%3Eeval%28window.name%29%3C%2Fscript%3E","%2Fphp-ids.org%2Ftrunk%2Fdocs%2Fexamples%2Fexample.php%3Ftest%3D%2522%253E%253Cscript%253Eeval%28window.name%29%253C%2Fscript%253E" -"local/unknown",2008-08-18T18:27:34+02:00,36,"xss csrf id rfe lfi sqli","test=%5C%22%3E%3Cscript%3Eeval%28window.name%29%3C%2Fscript%3E","%2Fphp-ids.org%2Ftrunk%2Fdocs%2Fexamples%2Fexample.php%3Ftest%3D%2522%253E%253Cscript%253Eeval%28window.name%29%253C%2Fscript%253E" -"local/unknown",2009-06-24T12:58:37+02:00,36,"xss csrf id rfe lfi sqli","REQUEST.test=%5C%22%3E%3Cscript%3Eeval%28window.name%29%3C%2Fscript%3E GET.test=%5C%22%3E%3Cscript%3Eeval%28window.name%29%3C%2Fscript%3E","%2Fphp-ids.org%2Ftrunk%2Fdocs%2Fexamples%2Fexample.php%3Ftest%3D%2522%253E%253Cscript%253Eeval%28window.name%29%253C%2Fscript%253E","127.0.0.1" -"local/unknown",2009-06-24T12:59:27+02:00,36,"xss csrf id rfe lfi sqli","REQUEST.test=%5C%22%3E%3Cscript%3Eeval%28window.name%29%3C%2Fscript%3E GET.test=%5C%22%3E%3Cscript%3Eeval%28window.name%29%3C%2Fscript%3E","%2Fphp-ids.org%2Ftrunk%2Fdocs%2Fexamples%2Fexample.php%3Ftest%3D%2522%253E%253Cscript%253Eeval%28window.name%29%253C%2Fscript%253E","127.0.0.1" -"local/unknown",2009-06-24T12:59:29+02:00,36,"xss csrf id rfe lfi sqli","REQUEST.test=%5C%22%3E%3Cscript%3Eeval%28window.name%29%3C%2Fscript%3E GET.test=%5C%22%3E%3Cscript%3Eeval%28window.name%29%3C%2Fscript%3E","%2Fphp-ids.org%2Ftrunk%2Fdocs%2Fexamples%2Fexample.php%3Ftest%3D%2522%253E%253Cscript%253Eeval%28window.name%29%253C%2Fscript%253E","127.0.0.1" -"local/unknown",2009-06-24T12:59:42+02:00,36,"xss csrf id rfe lfi sqli","REQUEST.__wysiwyg=%5C%22%3E%3Cscript%3Eeval%28window.name%29%3C%2Fscript%3E GET.__wysiwyg=%5C%22%3E%3Cscript%3Eeval%28window.name%29%3C%2Fscript%3E","%2Fphp-ids.org%2Ftrunk%2Fdocs%2Fexamples%2Fexample.php%3F__wysiwyg%3D%2522%253E%253Cscript%253Eeval%28window.name%29%253C%2Fscript%253E","127.0.0.1" -"local/unknown",2009-06-24T13:00:01+02:00,36,"xss csrf id rfe lfi sqli","REQUEST.__wysiwyg=%5C%22%3E%3Cscript%3Eeval%28window.name%29%3C%2Fscript%3E GET.__wysiwyg=%5C%22%3E%3Cscript%3Eeval%28window.name%29%3C%2Fscript%3E","%2Fphp-ids.org%2Ftrunk%2Fdocs%2Fexamples%2Fexample.php%3F__wysiwyg%3D%2522%253E%253Cscript%253Eeval%28window.name%29%253C%2Fscript%253E","127.0.0.1" -"local/unknown",2009-06-24T13:00:21+02:00,15,"xss csrf sqli id lfi","REQUEST.__wysiwyg=%3Ca%20href%3D%5C%22http%3A%2F%2Fwww.foo.de%2F%3Fbar%5C%22%3Efoobar%3C%2Fa%3E GET.__wysiwyg=%3Ca%20href%3D%5C%22http%3A%2F%2Fwww.foo.de%2F%3Fbar%5C%22%3Efoobar%3C%2Fa%3E","%2Fphp-ids.org%2Ftrunk%2Fdocs%2Fexamples%2Fexample.php%3F__wysiwyg%3D%253Ca%2520href%3D%2522http%3A%2F%2Fwww.foo.de%2F%3Fbar%2522%253Efoobar%253C%2Fa%253E","127.0.0.1" -"local/unknown",2009-06-24T13:00:27+02:00,15,"xss csrf sqli id lfi","REQUEST.__wysiwygx=%3Ca%20href%3D%5C%22http%3A%2F%2Fwww.foo.de%2F%3Fbar%5C%22%3Efoobar%3C%2Fa%3E GET.__wysiwygx=%3Ca%20href%3D%5C%22http%3A%2F%2Fwww.foo.de%2F%3Fbar%5C%22%3Efoobar%3C%2Fa%3E","%2Fphp-ids.org%2Ftrunk%2Fdocs%2Fexamples%2Fexample.php%3F__wysiwygx%3D%253Ca%2520href%3D%2522http%3A%2F%2Fwww.foo.de%2F%3Fbar%2522%253Efoobar%253C%2Fa%253E","127.0.0.1" -"local/unknown",2009-06-24T13:00:31+02:00,15,"xss csrf sqli id lfi","REQUEST.__wysiwyg=%3Ca%20href%3D%5C%22http%3A%2F%2Fwww.foo.de%2F%3Fbar%5C%22%3Efoobar%3C%2Fa%3E GET.__wysiwyg=%3Ca%20href%3D%5C%22http%3A%2F%2Fwww.foo.de%2F%3Fbar%5C%22%3Efoobar%3C%2Fa%3E","%2Fphp-ids.org%2Ftrunk%2Fdocs%2Fexamples%2Fexample.php%3F__wysiwyg%3D%253Ca%2520href%3D%2522http%3A%2F%2Fwww.foo.de%2F%3Fbar%2522%253Efoobar%253C%2Fa%253E","127.0.0.1" -"local/unknown",2009-06-24T13:01:48+02:00,15,"xss csrf sqli id lfi","REQUEST.__wysiwyg=%3Ca%20href%3D%5C%22http%3A%2F%2Fwww.foo.de%2F%3Fbar%5C%22%3Efoobar%3C%2Fa%3E GET.__wysiwyg=%3Ca%20href%3D%5C%22http%3A%2F%2Fwww.foo.de%2F%3Fbar%5C%22%3Efoobar%3C%2Fa%3E","%2Fphp-ids.org%2Ftrunk%2Fdocs%2Fexamples%2Fexample.php%3F__wysiwyg%3D%253Ca%2520href%3D%2522http%3A%2F%2Fwww.foo.de%2F%3Fbar%2522%253Efoobar%253C%2Fa%253E","127.0.0.1" -"local/unknown",2009-06-24T13:01:49+02:00,15,"xss csrf sqli id lfi","REQUEST.__wysiwyg=%3Ca%20href%3D%5C%22http%3A%2F%2Fwww.foo.de%2F%3Fbar%5C%22%3Efoobar%3C%2Fa%3E GET.__wysiwyg=%3Ca%20href%3D%5C%22http%3A%2F%2Fwww.foo.de%2F%3Fbar%5C%22%3Efoobar%3C%2Fa%3E","%2Fphp-ids.org%2Ftrunk%2Fdocs%2Fexamples%2Fexample.php%3F__wysiwyg%3D%253Ca%2520href%3D%2522http%3A%2F%2Fwww.foo.de%2F%3Fbar%2522%253Efoobar%253C%2Fa%253E","127.0.0.1" -"local/unknown",2009-06-24T13:01:51+02:00,15,"xss csrf sqli id lfi","REQUEST.__wysiwyg=%3Ca%20href%3D%5C%22http%3A%2F%2Fwww.foo.de%2F%3Fbar%5C%22%3Efoobar%3C%2Fa%3E GET.__wysiwyg=%3Ca%20href%3D%5C%22http%3A%2F%2Fwww.foo.de%2F%3Fbar%5C%22%3Efoobar%3C%2Fa%3E","%2Fphp-ids.org%2Ftrunk%2Fdocs%2Fexamples%2Fexample.php%3F__wysiwyg%3D%253Ca%2520href%3D%2522http%3A%2F%2Fwww.foo.de%2F%3Fbar%2522%253Efoobar%253C%2Fa%253E","127.0.0.1" -"local/unknown",2009-06-24T13:04:46+02:00,15,"xss csrf sqli id lfi","REQUEST.__wysiwyg=%3Ca%20href%3D%5C%22http%3A%2F%2Fwww.foo.de%2F%3Fbar%5C%22%3Efoobar%3C%2Fa%3E","%2Fphp-ids.org%2Ftrunk%2Fdocs%2Fexamples%2Fexample.php%3F__wysiwyg%3D%253Ca%2520href%3D%2522http%3A%2F%2Fwww.foo.de%2F%3Fbar%2522%253Efoobar%253C%2Fa%253E","127.0.0.1" -"local/unknown",2009-06-24T13:05:48+02:00,15,"xss csrf sqli id lfi","REQUEST.__wysiwyg=%3Ca%20href%3D%5C%22http%3A%2F%2Fwww.foo.de%2F%3Fbar%5C%22%3Efoobar%3C%2Fa%3E GET.__wysiwyg=%3Ca%20href%3D%5C%22http%3A%2F%2Fwww.foo.de%2F%3Fbar%5C%22%3Efoobar%3C%2Fa%3E","%2Fphp-ids.org%2Ftrunk%2Fdocs%2Fexamples%2Fexample.php%3F__wysiwyg%3D%253Ca%2520href%3D%2522http%3A%2F%2Fwww.foo.de%2F%3Fbar%2522%253Efoobar%253C%2Fa%253E","127.0.0.1" -"%3A%3A1",2014-11-14T21:41:41+01:00,72,"xss csrf id rfe lfi sqli","REQUEST.test%3D%2522%253E%253Cscript%253Eeval%2528window.name%2529%253C%252Fscript%253E+GET.test%3D%2522%253E%253Cscript%253Eeval%2528window.name%2529%253C%252Fscript%253E","%2Fczar%2Fplayground%2Fphpids%2Fdocs%2Fexamples%2Fexample.php%3Ftest%3D%2522%253E%253Cscript%253Eeval%28window.name%29%253C%2Fscript%253E","::1" -"%3A%3A1",2014-11-14T21:41:58+01:00,12,"sqli id lfi","REQUEST.test%3D1%2527+GET.test%3D1%2527","%2Fczar%2Fplayground%2Fphpids%2Fdocs%2Fexamples%2Fexample.php%3Ftest%3D1%2527","::1" -"%3A%3A1",2014-11-14T21:51:04+01:00,72,"xss csrf id rfe lfi sqli","REQUEST.test%3D%2522%253E%253Cscript%253Eeval%2528window.name%2529%253C%252Fscript%253E+GET.test%3D%2522%253E%253Cscript%253Eeval%2528window.name%2529%253C%252Fscript%253E","%2Fczar%2Fplayground%2Fdvwa%2F%3Ftest%3D%2522%253E%253Cscript%253Eeval%28window.name%29%253C%2Fscript%253E","::1" -"%3A%3A1",2014-11-14T21:51:13+01:00,12,"sqli id lfi","REQUEST.id%3D1%2527+GET.id%3D1%2527","%2Fczar%2Fplayground%2Fdvwa%2Fvulnerabilities%2Fsqli%2F%3Fid%3D1%2527%26Submit%3DSubmit","::1" -"%3A%3A1",2014-11-14T21:51:39+01:00,12,"sqli id lfi","REQUEST.id%3D1%2527+GET.id%3D1%2527","%2Fczar%2Fplayground%2Fdvwa%2Fvulnerabilities%2Fsqli%2F%3Fid%3D1%2527%26Submit%3DSubmit","::1" -"%3A%3A1",2014-11-14T21:51:56+01:00,12,"sqli id lfi","REQUEST.id%3D1%2527+GET.id%3D1%2527","%2Fczar%2Fplayground%2Fdvwa%2Fvulnerabilities%2Fsqli%2F%3Fid%3D1%2527%26Submit%3DSubmit","::1" -"%3A%3A1",2014-11-14T21:52:06+01:00,12,"sqli id lfi","REQUEST.id%3D1%2527+GET.id%3D1%2527","%2Fczar%2Fplayground%2Fdvwa%2Fvulnerabilities%2Fsqli%2F%3Fid%3D1%2527%26Submit%3DSubmit","::1" -"%3A%3A1",2014-11-14T21:53:03+01:00,42,"xss csrf id rfe lfi","REQUEST.id%3D%253Cscript%253Ealert%2528%252F0%252F%2529%253C%252Fscript%253E+GET.id%3D%253Cscript%253Ealert%2528%252F0%252F%2529%253C%252Fscript%253E","%2Fczar%2Fplayground%2Fdvwa%2Fvulnerabilities%2Fsqli%2F%3Fid%3D%253Cscript%253Ealert%2528%252F0%252F%2529%253C%252Fscript%253E%26Submit%3DSubmit","::1" -"%3A%3A1",2014-11-14T21:53:11+01:00,42,"xss csrf id rfe lfi","REQUEST.id%3D%253Cscript%253Ealert%2528%252F0%252F%2529%253C%252Fscript%253E+GET.id%3D%253Cscript%253Ealert%2528%252F0%252F%2529%253C%252Fscript%253E","%2Fczar%2Fplayground%2Fdvwa%2Fvulnerabilities%2Fsqli%2F%3Fid%3D%253Cscript%253Ealert%2528%252F0%252F%2529%253C%252Fscript%253E%26Submit%3DSubmit","::1" -"%3A%3A1",2014-11-14T21:54:16+01:00,42,"xss csrf id rfe lfi","REQUEST.id%3D%253Cscript%253Ealert%2528%252F0%252F%2529%253C%252Fscript%253E+GET.id%3D%253Cscript%253Ealert%2528%252F0%252F%2529%253C%252Fscript%253E","%2Fczar%2Fplayground%2Fdvwa%2Fvulnerabilities%2Fsqli%2F%3Fid%3D%253Cscript%253Ealert%2528%252F0%252F%2529%253C%252Fscript%253E%26Submit%3DSubmit","::1" -"%3A%3A1",2014-11-14T21:54:17+01:00,42,"xss csrf id rfe lfi","REQUEST.id%3D%253Cscript%253Ealert%2528%252F0%252F%2529%253C%252Fscript%253E+GET.id%3D%253Cscript%253Ealert%2528%252F0%252F%2529%253C%252Fscript%253E","%2Fczar%2Fplayground%2Fdvwa%2Fvulnerabilities%2Fsqli%2F%3Fid%3D%253Cscript%253Ealert%2528%252F0%252F%2529%253C%252Fscript%253E%26Submit%3DSubmit","::1" -"%3A%3A1",2014-11-14T21:55:13+01:00,42,"xss csrf id rfe lfi","REQUEST.id%3D%253Cscript%253Ealert%2528%252F0%252F%2529%253C%252Fscript%253E+GET.id%3D%253Cscript%253Ealert%2528%252F0%252F%2529%253C%252Fscript%253E","%2Fczar%2Fplayground%2Fdvwa%2Fvulnerabilities%2Fsqli%2F%3Fid%3D%253Cscript%253Ealert%2528%252F0%252F%2529%253C%252Fscript%253E%26Submit%3DSubmit","::1" -"%3A%3A1",2014-11-14T21:55:25+01:00,42,"xss csrf id rfe lfi","REQUEST.id%3D%253Cscript%253Ealert%2528%252F0%252F%2529%253C%252Fscript%253E+GET.id%3D%253Cscript%253Ealert%2528%252F0%252F%2529%253C%252Fscript%253E","%2Fczar%2Fplayground%2Fdvwa%2Fvulnerabilities%2Fsqli%2F%3Fid%3D%253Cscript%253Ealert%2528%252F0%252F%2529%253C%252Fscript%253E%26Submit%3DSubmit","::1" -"%3A%3A1",2014-11-15T13:42:51+01:00,16,"xss csrf id rfe","REQUEST.id%3Dalert%2528%2529+GET.id%3Dalert%2528%2529","%2Fczar%2Fplayground%2Fdvwa%2Fvulnerabilities%2Fsqli%2F%3Fid%3Dalert%2528%2529%26Submit%3DSubmit","::1" -"%3A%3A1",2014-11-15T13:45:45+01:00,10,"Command Execution id","REQUEST.id%3Dping%2520-n%25203%2520localhost+GET.id%3Dping%2520-n%25203%2520localhost","%2Fczar%2Fplayground%2Fdvwa%2Fvulnerabilities%2Fsqli%2F%3Fid%3Dping%2B-n%2B3%2Blocalhost%26Submit%3DSubmit","::1" -"%3A%3A1",2014-11-15T13:46:48+01:00,10,"Command Execution id","REQUEST.chootid%3Dping%2520-n%25203%2520localhost+GET.chootid%3Dping%2520-n%25203%2520localhost","%2Fczar%2Fplayground%2Fdvwa%2Fvulnerabilities%2Fsqli%2F%3Fid%3Dhi%26Submit%3DSubmit%26chootid%3Dping%2B-n%2B3%2Blocalhost","::1" -"%3A%3A1",2014-11-15T13:47:38+01:00,12,"sqli id lfi","REQUEST.id%3D1%2527+GET.id%3D1%2527","%2Fczar%2Fplayground%2Fdvwa%2Fvulnerabilities%2Fsqli%2F%3Fid%3D1%2527%26Submit%3DSubmit","::1" -"%3A%3A1",2014-11-15T13:48:05+01:00,12,"sqli id lfi","REQUEST.id%3D1%2527+GET.id%3D1%2527","%2Fczar%2Fplayground%2Fdvwa%2Fvulnerabilities%2Fsqli%2F%3Fid%3D1%2527%26Submit%3DSubmit","::1" -"%3A%3A1",2014-11-15T13:55:09+01:00,86,"xss csrf id rfe sqli lfi","REQUEST.name%3D%2527%2527%253B%2521--%2522%253CXSS%253E%253D%2526%257B%2528%2529%257D+GET.name%3D%2527%2527%253B%2521--%2522%253CXSS%253E%253D%2526%257B%2528%2529%257D","%2Fczar%2Fplayground%2Fdvwa%2Fvulnerabilities%2Fxss_r%2F%3Fname%3D%2527%2527%253B%2521--%2522%253CXSS%253E%253D%2526%257B%2528%2529%257D","::1" -"%3A%3A1",2014-11-15T13:55:38+01:00,70,"xss csrf id rfe lfi","REQUEST.name%3D%253CIMG%2520SRC%253Djavascript%253Aalert%2528%2527XSS%2527%2529%253E+GET.name%3D%253CIMG%2520SRC%253Djavascript%253Aalert%2528%2527XSS%2527%2529%253E","%2Fczar%2Fplayground%2Fdvwa%2Fvulnerabilities%2Fxss_r%2F%3Fname%3D%253CIMG%2BSRC%253Djavascript%253Aalert%2528%2527XSS%2527%2529%253E","::1" -"%3A%3A1",2014-11-15T13:55:45+01:00,70,"xss csrf id rfe lfi","REQUEST.name%3D%253CIMG%2520SRC%253Djavascript%253Aalert%2528%2522XSS%2522%2529%253E+GET.name%3D%253CIMG%2520SRC%253Djavascript%253Aalert%2528%2522XSS%2522%2529%253E","%2Fczar%2Fplayground%2Fdvwa%2Fvulnerabilities%2Fxss_r%2F%3Fname%3D%253CIMG%2BSRC%253Djavascript%253Aalert%2528%2522XSS%2522%2529%253E","::1" -"%3A%3A1",2014-11-15T13:56:01+01:00,88,"xss csrf id rfe lfi","REQUEST.name%3D%253CIMG%2520SRC%253Djavascript%253Aalert%2528String.fromCharCode%252888%252C83%252C83%2529%2529%253E+GET.name%3D%253CIMG%2520SRC%253Djavascript%253Aalert%2528String.fromCharCode%252888%252C83%252C83%2529%2529%253E","%2Fczar%2Fplayground%2Fdvwa%2Fvulnerabilities%2Fxss_r%2F%3Fname%3D%253CIMG%2BSRC%253Djavascript%253Aalert%2528String.fromCharCode%252888%252C83%252C83%2529%2529%253E","::1" -"%3A%3A1",2014-11-15T13:56:12+01:00,18,"xss csrf id rfe lfi","REQUEST.name%3D%253CIMG%2520SRC%253D%2526%25230000106%2526%25230000097%2526%25230000118%2526%25230000097%2526%25230000115%2526%25230000099%2526%25230000114%2526%25230000105%2526%25230000112%2526%25230000116%2526%25230000058%2526%25230000097%2526%2520%25230000108%2526%25230000101%2526%25230000114%2526%25230000116%2526%25230000040%2526%25230000039%2526%25230000088%2526%25230000083%2526%25230000083%2526%25230000039%2526%25230000041%253E+GET.name%3D%253CIMG%2520SRC%253D%2526%25230000106%2526%25230000097%2526%25230000118%2526%25230000097%2526%25230000115%2526%25230000099%2526%25230000114%2526%25230000105%2526%25230000112%2526%25230000116%2526%25230000058%2526%25230000097%2526%2520%25230000108%2526%25230000101%2526%25230000114%2526%25230000116%2526%25230000040%2526%25230000039%2526%25230000088%2526%25230000083%2526%25230000083%2526%25230000039%2526%25230000041%253E","%2Fczar%2Fplayground%2Fdvwa%2Fvulnerabilities%2Fxss_r%2F%3Fname%3D%253CIMG%2BSRC%253D%2526%25230000106%2526%25230000097%2526%25230000118%2526%25230000097%2526%25230000115%2526%25230000099%2526%25230000114%2526%25230000105%2526%25230000112%2526%25230000116%2526%25230000058%2526%25230000097%2526%2B%25230000108%2526%25230000101%2526%25230000114%2526%25230000116%2526%25230000040%2526%25230000039%2526%25230000088%2526%25230000083%2526%25230000083%2526%25230000039%2526%25230000041%253E","::1" -"%3A%3A1",2014-11-16T18:11:58+01:00,12,"sqli id lfi","REQUEST.name%3D1%2527+GET.name%3D1%2527","%2Fczar%2Fplayground%2Fdvwa%2Fvulnerabilities%2Fxss_r%2F%3Fname%3D1%2527","::1" -"%3A%3A1",2014-11-16T18:13:49+01:00,12,"sqli id lfi","REQUEST.name%3D1%2527+GET.name%3D1%2527","%2Fczar%2Fplayground%2Fdvwa%2Fvulnerabilities%2Fxss_r%2F%3Fname%3D1%2527","::1" -"%3A%3A1",2014-11-16T18:16:01+01:00,12,"sqli id lfi","REQUEST.name%3D1%2527+GET.name%3D1%2527","%2Fczar%2Fplayground%2Fdvwa%2Fvulnerabilities%2Fxss_r%2F%3Fname%3D1%2527","::1" -"%3A%3A1",2014-11-16T18:16:03+01:00,12,"sqli id lfi","REQUEST.name%3D1%2527+GET.name%3D1%2527","%2Fczar%2Fplayground%2Fdvwa%2Fvulnerabilities%2Fxss_r%2F%3Fname%3D1%2527","::1" -"%3A%3A1",2014-11-16T18:16:10+01:00,12,"sqli id lfi","REQUEST.name%3D1%2527+GET.name%3D1%2527","%2Fczar%2Fplayground%2Fdvwa%2Fvulnerabilities%2Fxss_r%2F%3Fname%3D1%2527","::1" -"%3A%3A1",2014-11-16T18:23:22+01:00,12,"sqli id lfi","REQUEST.name%3D1%2527+GET.name%3D1%2527","%2Fczar%2Fplayground%2Fdvwa%2Fvulnerabilities%2Fxss_r%2F%3Fname%3D1%2527","::1" -"%3A%3A1",2014-11-16T18:23:23+01:00,12,"sqli id lfi","REQUEST.name%3D1%2527+GET.name%3D1%2527","%2Fczar%2Fplayground%2Fdvwa%2Fvulnerabilities%2Fxss_r%2F%3Fname%3D1%2527","::1" -"%3A%3A1",2014-11-16T18:23:24+01:00,12,"sqli id lfi","REQUEST.name%3D1%2527+GET.name%3D1%2527","%2Fczar%2Fplayground%2Fdvwa%2Fvulnerabilities%2Fxss_r%2F%3Fname%3D1%2527","::1" -"%3A%3A1",2014-11-16T18:38:09+01:00,12,"sqli id lfi","REQUEST.name%3D1%2527+GET.name%3D1%2527","%2Fczar%2Fplayground%2Fdvwa%2Fvulnerabilities%2Fxss_r%2F%3Fname%3D1%2527","::1" -"%3A%3A1",2014-11-16T18:38:56+01:00,12,"sqli id lfi","REQUEST.name%3D1%2527+GET.name%3D1%2527","%2Fczar%2Fplayground%2Fdvwa%2Fvulnerabilities%2Fxss_r%2F%3Fname%3D1%2527","::1" -"%3A%3A1",2014-11-16T18:38:57+01:00,12,"sqli id lfi","REQUEST.name%3D1%2527+GET.name%3D1%2527","%2Fczar%2Fplayground%2Fdvwa%2Fvulnerabilities%2Fxss_r%2F%3Fname%3D1%2527","::1" -"%3A%3A1",2014-11-16T18:39:04+01:00,12,"sqli id lfi","REQUEST.name%3D1%2527+GET.name%3D1%2527","%2Fczar%2Fplayground%2Fdvwa%2Fvulnerabilities%2Fxss_r%2F%3Fname%3D1%2527","::1" -"%3A%3A1",2014-11-22T10:43:21+01:00,12,"sqli id lfi","REQUEST.id%3D1%2527+GET.id%3D1%2527","%2Fczar%2Fplayground%2Fdvwa%2Fvulnerabilities%2Fsqli%2F%3Fid%3D1%2527%26Submit%3DSubmit","::1" -"%3A%3A1",2014-11-23T11:44:54+01:00,12,"sqli id lfi","REQUEST.id%3D1%2527+GET.id%3D1%2527","%2Fczar%2Fplayground%2Fdvwa%2Fvulnerabilities%2Fsqli%2F%3Fid%3D1%2527%26Submit%3DSubmit","::1" -"%3A%3A1",2014-11-23T11:53:26+01:00,12,"sqli id lfi","REQUEST.id%3D1%2527+GET.id%3D1%2527","%2Fczar%2Fplayground%2Fdvwa%2Fvulnerabilities%2Fsqli%2F%3Fid%3D1%2527%26Submit%3DSubmit","::1" -"%3A%3A1",2014-11-23T11:53:36+01:00,12,"sqli id lfi","REQUEST.id%3D1%2527+GET.id%3D1%2527","%2Fczar%2Fplayground%2Fdvwa%2Fvulnerabilities%2Fsqli%2F%3Fid%3D1%2527%26Submit%3DSubmit","::1" -"%3A%3A1",2014-11-23T11:53:45+01:00,12,"sqli id lfi","REQUEST.id%3D1%2527+GET.id%3D1%2527","%2Fczar%2Fplayground%2Fdvwa%2Fvulnerabilities%2Fsqli%2F%3Fid%3D1%2527%26Submit%3DSubmit","::1" -"%3A%3A1",2014-11-23T11:53:51+01:00,12,"sqli id lfi","REQUEST.id%3D1%2527+GET.id%3D1%2527","%2Fczar%2Fplayground%2Fdvwa%2Fvulnerabilities%2Fsqli%2F%3Fid%3D1%2527%26Submit%3DSubmit","::1" -"%3A%3A1",2014-11-23T11:54:07+01:00,12,"sqli id lfi","REQUEST.id%3D1%2527+GET.id%3D1%2527","%2Fczar%2Fplayground%2Fdvwa%2Fvulnerabilities%2Fsqli%2F%3Fid%3D1%2527%26Submit%3DSubmit","::1" -"%3A%3A1",2014-11-23T11:54:10+01:00,12,"sqli id lfi","REQUEST.id%3D1%2527+GET.id%3D1%2527","%2Fczar%2Fplayground%2Fdvwa%2Fvulnerabilities%2Fsqli%2F%3Fid%3D1%2527%26Submit%3DSubmit","::1" -"%3A%3A1",2014-11-23T11:54:12+01:00,12,"sqli id lfi","REQUEST.id%3D1%2527+GET.id%3D1%2527","%2Fczar%2Fplayground%2Fdvwa%2Fvulnerabilities%2Fsqli%2F%3Fid%3D1%2527%26Submit%3DSubmit","::1" -"%3A%3A1",2014-11-23T11:57:49+01:00,12,"sqli id lfi","REQUEST.id%3D1%2527+GET.id%3D1%2527","%2Fczar%2Fplayground%2Fdvwa%2Fvulnerabilities%2Fsqli%2F%3Fid%3D1%2527%26Submit%3DSubmit","::1" -"%3A%3A1",2014-11-23T11:57:51+01:00,12,"sqli id lfi","REQUEST.id%3D1%2527+GET.id%3D1%2527","%2Fczar%2Fplayground%2Fdvwa%2Fvulnerabilities%2Fsqli%2F%3Fid%3D1%2527%26Submit%3DSubmit","::1" -"%3A%3A1",2014-11-23T11:59:49+01:00,12,"sqli id lfi","REQUEST.id%3D1%2527+GET.id%3D1%2527","%2Fczar%2Fplayground%2Fdvwa%2Fvulnerabilities%2Fsqli%2F%3Fid%3D1%2527%26Submit%3DSubmit","::1" -"%3A%3A1",2014-11-23T12:00:01+01:00,12,"sqli id lfi","REQUEST.id%3D1%2527+GET.id%3D1%2527","%2Fczar%2Fplayground%2Fdvwa%2Fvulnerabilities%2Fsqli%2F%3Fid%3D1%2527%26Submit%3DSubmit","::1" -"%3A%3A1",2014-11-23T12:00:17+01:00,12,"sqli id lfi","REQUEST.id%3D1%2527+GET.id%3D1%2527","%2Fczar%2Fplayground%2Fdvwa%2Fvulnerabilities%2Fsqli%2F%3Fid%3D1%2527%26Submit%3DSubmit","::1" -"%3A%3A1",2014-11-23T12:02:06+01:00,12,"sqli id lfi","REQUEST.id%3D1%2527+GET.id%3D1%2527","%2Fczar%2Fplayground%2Fdvwa%2Fvulnerabilities%2Fsqli%2F%3Fid%3D1%2527%26Submit%3DSubmit","::1" -"%3A%3A1",2014-11-23T12:02:07+01:00,12,"sqli id lfi","REQUEST.id%3D1%2527+GET.id%3D1%2527","%2Fczar%2Fplayground%2Fdvwa%2Fvulnerabilities%2Fsqli%2F%3Fid%3D1%2527%26Submit%3DSubmit","::1" -"%3A%3A1",2014-11-23T12:57:45+01:00,12,"sqli id lfi","REQUEST.id%3D1%2527+GET.id%3D1%2527","%2Fczar%2Fplayground%2Fdvwa%2Fvulnerabilities%2Fsqli%2F%3Fid%3D1%2527%26Submit%3DSubmit","::1" -"%3A%3A1",2014-11-23T12:57:47+01:00,12,"sqli id lfi","REQUEST.id%3D1%2527+GET.id%3D1%2527","%2Fczar%2Fplayground%2Fdvwa%2Fvulnerabilities%2Fsqli%2F%3Fid%3D1%2527%26Submit%3DSubmit","::1" -"%3A%3A1",2014-11-23T12:57:59+01:00,12,"sqli id lfi","REQUEST.id%3D1%2527+GET.id%3D1%2527","%2Fczar%2Fplayground%2Fdvwa%2Fvulnerabilities%2Fsqli%2F%3Fid%3D1%2527%26Submit%3DSubmit","::1" -"%3A%3A1",2014-11-23T12:58:18+01:00,12,"sqli id lfi","REQUEST.id%3D1%2527+GET.id%3D1%2527","%2Fczar%2Fplayground%2Fdvwa%2Fvulnerabilities%2Fsqli%2F%3Fid%3D1%2527%26Submit%3DSubmit","::1" -"%3A%3A1",2014-11-23T12:58:22+01:00,12,"sqli id lfi","REQUEST.id%3D1%2527+GET.id%3D1%2527","%2Fczar%2Fplayground%2Fdvwa%2Fvulnerabilities%2Fsqli%2F%3Fid%3D1%2527%26Submit%3DSubmit","::1" -"%3A%3A1",2014-11-23T12:59:17+01:00,12,"sqli id lfi","REQUEST.id%3D1%2527+GET.id%3D1%2527","%2Fczar%2Fplayground%2Fdvwa%2Fvulnerabilities%2Fsqli%2F%3Fid%3D1%2527%26Submit%3DSubmit","::1" -"%3A%3A1",2014-11-23T12:59:20+01:00,12,"sqli id lfi","REQUEST.id%3D1%2527+GET.id%3D1%2527","%2Fczar%2Fplayground%2Fdvwa%2Fvulnerabilities%2Fsqli%2F%3Fid%3D1%2527%26Submit%3DSubmit","::1" -"%3A%3A1",2014-11-23T12:59:21+01:00,12,"sqli id lfi","REQUEST.id%3D1%2527+GET.id%3D1%2527","%2Fczar%2Fplayground%2Fdvwa%2Fvulnerabilities%2Fsqli%2F%3Fid%3D1%2527%26Submit%3DSubmit","::1" -"%3A%3A1",2014-11-23T12:59:22+01:00,12,"sqli id lfi","REQUEST.id%3D1%2527+GET.id%3D1%2527","%2Fczar%2Fplayground%2Fdvwa%2Fvulnerabilities%2Fsqli%2F%3Fid%3D1%2527%26Submit%3DSubmit","::1" -"%3A%3A1",2014-11-23T12:59:51+01:00,12,"sqli id lfi","REQUEST.id%3D1%2527+GET.id%3D1%2527","%2Fczar%2Fplayground%2Fdvwa%2Fvulnerabilities%2Fsqli%2F%3Fid%3D1%2527%26Submit%3DSubmit","::1" -"%3A%3A1",2014-11-23T12:59:54+01:00,12,"sqli id lfi","REQUEST.id%3D1%2527+GET.id%3D1%2527","%2Fczar%2Fplayground%2Fdvwa%2Fvulnerabilities%2Fsqli%2F%3Fid%3D1%2527%26Submit%3DSubmit","::1" -"%3A%3A1",2014-11-23T12:59:59+01:00,12,"sqli id lfi","REQUEST.id%3D1%2527+GET.id%3D1%2527","%2Fczar%2Fplayground%2Fdvwa%2Fvulnerabilities%2Fsqli%2F%3Fid%3D1%2527%26Submit%3DSubmit","::1" -"%3A%3A1",2014-11-23T13:00:28+01:00,12,"sqli id lfi","REQUEST.id%3D1%2527+GET.id%3D1%2527","%2Fczar%2Fplayground%2Fdvwa%2Fvulnerabilities%2Fsqli%2F%3Fid%3D1%2527%26Submit%3DSubmit","::1" -"%3A%3A1",2014-11-23T13:00:30+01:00,12,"sqli id lfi","REQUEST.id%3D1%2527+GET.id%3D1%2527","%2Fczar%2Fplayground%2Fdvwa%2Fvulnerabilities%2Fsqli%2F%3Fid%3D1%2527%26Submit%3DSubmit","::1" -"%3A%3A1",2014-11-23T13:00:45+01:00,12,"sqli id lfi","REQUEST.id%3D1%2527+GET.id%3D1%2527","%2Fczar%2Fplayground%2Fdvwa%2Fvulnerabilities%2Fsqli%2F%3Fid%3D1%2527%26Submit%3DSubmit","::1" -"%3A%3A1",2014-11-23T13:01:36+01:00,12,"sqli id lfi","REQUEST.id%3D1%2527+GET.id%3D1%2527","%2Fczar%2Fplayground%2Fdvwa%2Fvulnerabilities%2Fsqli%2F%3Fid%3D1%2527%26Submit%3DSubmit","::1" -"%3A%3A1",2014-11-23T13:02:01+01:00,12,"sqli id lfi","REQUEST.id%3D1%2527+GET.id%3D1%2527","%2Fczar%2Fplayground%2Fdvwa%2Fvulnerabilities%2Fsqli%2F%3Fid%3D1%2527%26Submit%3DSubmit","::1" -"%3A%3A1",2014-11-23T13:02:09+01:00,12,"sqli id lfi","REQUEST.id%3D1%2527+GET.id%3D1%2527","%2Fczar%2Fplayground%2Fdvwa%2Fvulnerabilities%2Fsqli%2F%3Fid%3D1%2527%26Submit%3DSubmit","::1" -"%3A%3A1",2014-11-23T13:02:19+01:00,12,"sqli id lfi","REQUEST.id%3D1%2527+GET.id%3D1%2527","%2Fczar%2Fplayground%2Fdvwa%2Fvulnerabilities%2Fsqli%2F%3Fid%3D1%2527%26Submit%3DSubmit","::1" -"%3A%3A1",2014-11-23T13:02:27+01:00,12,"sqli id lfi","REQUEST.id%3D1%2527+GET.id%3D1%2527","%2Fczar%2Fplayground%2Fdvwa%2Fvulnerabilities%2Fsqli%2F%3Fid%3D1%2527%26Submit%3DSubmit","::1" -"%3A%3A1",2014-11-23T13:02:44+01:00,12,"sqli id lfi","REQUEST.id%3D1%2527+GET.id%3D1%2527","%2Fczar%2Fplayground%2Fdvwa%2Fvulnerabilities%2Fsqli%2F%3Fid%3D1%2527%26Submit%3DSubmit","::1" -"%3A%3A1",2014-11-23T13:02:45+01:00,12,"sqli id lfi","REQUEST.id%3D1%2527+GET.id%3D1%2527","%2Fczar%2Fplayground%2Fdvwa%2Fvulnerabilities%2Fsqli%2F%3Fid%3D1%2527%26Submit%3DSubmit","::1" -"%3A%3A1",2014-11-23T13:02:45+01:00,12,"sqli id lfi","REQUEST.id%3D1%2527+GET.id%3D1%2527","%2Fczar%2Fplayground%2Fdvwa%2Fvulnerabilities%2Fsqli%2F%3Fid%3D1%2527%26Submit%3DSubmit","::1" -"%3A%3A1",2014-11-23T13:02:46+01:00,12,"sqli id lfi","REQUEST.id%3D1%2527+GET.id%3D1%2527","%2Fczar%2Fplayground%2Fdvwa%2Fvulnerabilities%2Fsqli%2F%3Fid%3D1%2527%26Submit%3DSubmit","::1" -"%3A%3A1",2014-11-23T13:02:48+01:00,12,"sqli id lfi","REQUEST.id%3D1%2527+GET.id%3D1%2527","%2Fczar%2Fplayground%2Fdvwa%2Fvulnerabilities%2Fsqli%2F%3Fid%3D1%2527%26Submit%3DSubmit","::1" -"%3A%3A1",2014-11-23T13:02:50+01:00,12,"sqli id lfi","REQUEST.id%3D1%2527+GET.id%3D1%2527","%2Fczar%2Fplayground%2Fdvwa%2Fvulnerabilities%2Fsqli%2F%3Fid%3D1%2527%26Submit%3DSubmit","::1" -"%3A%3A1",2014-11-23T13:03:44+01:00,12,"sqli id lfi","REQUEST.id%3D1%2527+GET.id%3D1%2527","%2Fczar%2Fplayground%2Fdvwa%2Fvulnerabilities%2Fsqli%2F%3Fid%3D1%2527%26Submit%3DSubmit","::1" -"%3A%3A1",2014-11-23T13:03:50+01:00,12,"sqli id lfi","REQUEST.id%3D1%2527+GET.id%3D1%2527","%2Fczar%2Fplayground%2Fdvwa%2Fvulnerabilities%2Fsqli%2F%3Fid%3D1%2527%26Submit%3DSubmit","::1" -"%3A%3A1",2014-11-23T13:04:12+01:00,6,"sqli id lfi","GET.id%3D1%2527","%2Fczar%2Fplayground%2Fdvwa%2Fvulnerabilities%2Fsqli%2F%3Fid%3D1%2527%26Submit%3DSubmit","::1" -"%3A%3A1",2014-11-23T13:04:16+01:00,12,"sqli id lfi","REQUEST.id%3D1%2527+GET.id%3D1%2527","%2Fczar%2Fplayground%2Fdvwa%2Fvulnerabilities%2Fsqli%2F%3Fid%3D1%2527%26Submit%3DSubmit","::1" -"%3A%3A1",2014-11-23T13:04:44+01:00,12,"sqli id lfi","REQUEST.id%3D1%2527+GET.id%3D1%2527","%2Fczar%2Fplayground%2Fdvwa%2Fvulnerabilities%2Fsqli%2F%3Fid%3D1%2527%26Submit%3DSubmit","::1" -"%3A%3A1",2014-11-23T13:05:46+01:00,12,"sqli id lfi","REQUEST.id%3D1%2527+GET.id%3D1%2527","%2Fczar%2Fplayground%2Fdvwa%2Fvulnerabilities%2Fsqli%2F%3Fid%3D1%2527%26Submit%3DSubmit","::1" -"%3A%3A1",2014-11-23T13:07:22+01:00,12,"sqli id lfi","REQUEST.id%3D1%2527+GET.id%3D1%2527","%2Fczar%2Fplayground%2Fdvwa%2Fvulnerabilities%2Fsqli%2F%3Fid%3D1%2527%26Submit%3DSubmit","::1" -"%3A%3A1",2014-11-23T13:07:24+01:00,12,"sqli id lfi","REQUEST.id%3D1%2527+GET.id%3D1%2527","%2Fczar%2Fplayground%2Fdvwa%2Fvulnerabilities%2Fsqli%2F%3Fid%3D1%2527%26Submit%3DSubmit","::1" -"%3A%3A1",2014-11-23T13:07:26+01:00,12,"sqli id lfi","REQUEST.id%3D1%2527+GET.id%3D1%2527","%2Fczar%2Fplayground%2Fdvwa%2Fvulnerabilities%2Fsqli%2F%3Fid%3D1%2527%26Submit%3DSubmit","::1" -"%3A%3A1",2014-11-23T13:10:27+01:00,12,"sqli id lfi","REQUEST.id%3D1%2527+GET.id%3D1%2527","%2Fczar%2Fplayground%2Fdvwa%2Fvulnerabilities%2Fsqli%2F%3Fid%3D1%2527%26Submit%3DSubmit","::1" -"%3A%3A1",2014-11-23T13:11:01+01:00,12,"sqli id lfi","REQUEST.id%3D1%2527+GET.id%3D1%2527","%2Fczar%2Fplayground%2Fdvwa%2Fvulnerabilities%2Fsqli%2F%3Fid%3D1%2527%26Submit%3DSubmit","::1" -"%3A%3A1",2014-11-23T13:11:02+01:00,12,"sqli id lfi","REQUEST.id%3D1%2527+GET.id%3D1%2527","%2Fczar%2Fplayground%2Fdvwa%2Fvulnerabilities%2Fsqli%2F%3Fid%3D1%2527%26Submit%3DSubmit","::1" -"%3A%3A1",2014-11-23T13:11:39+01:00,12,"sqli id lfi","REQUEST.id%3D1%2527+GET.id%3D1%2527","%2Fczar%2Fplayground%2Fdvwa%2Fvulnerabilities%2Fsqli%2F%3Fid%3D1%2527%26Submit%3DSubmit","::1" -"%3A%3A1",2014-11-23T13:13:12+01:00,12,"sqli id lfi","REQUEST.id%3D1%2527+GET.id%3D1%2527","%2Fczar%2Fplayground%2Fdvwa%2Fvulnerabilities%2Fsqli%2F%3Fid%3D1%2527%26Submit%3DSubmit","::1" -"%3A%3A1",2014-11-23T13:14:22+01:00,12,"sqli id lfi","REQUEST.id%3D1%2527+GET.id%3D1%2527","%2Fczar%2Fplayground%2Fdvwa%2Fvulnerabilities%2Fsqli%2F%3Fid%3D1%2527%26Submit%3DSubmit","::1" -"%3A%3A1",2014-11-23T13:14:55+01:00,12,"sqli id lfi","REQUEST.id%3D1%2527+GET.id%3D1%2527","%2Fczar%2Fplayground%2Fdvwa%2Fvulnerabilities%2Fsqli%2F%3Fid%3D1%2527%26Submit%3DSubmit","::1" -"%3A%3A1",2014-11-23T13:15:29+01:00,12,"sqli id lfi","REQUEST.id%3D1%2527+GET.id%3D1%2527","%2Fczar%2Fplayground%2Fdvwa%2Fvulnerabilities%2Fsqli%2F%3Fid%3D1%2527%26Submit%3DSubmit","::1" -"%3A%3A1",2014-11-23T13:15:51+01:00,12,"sqli id lfi","REQUEST.id%3D1%2527+GET.id%3D1%2527","%2Fczar%2Fplayground%2Fdvwa%2Fvulnerabilities%2Fsqli%2F%3Fid%3D1%2527%26Submit%3DSubmit","::1" -"%3A%3A1",2014-11-23T13:18:21+01:00,12,"sqli id lfi","REQUEST.id%3D1%2527+GET.id%3D1%2527","%2Fczar%2Fplayground%2Fdvwa%2Fvulnerabilities%2Fsqli%2F%3Fid%3D1%2527%26Submit%3DSubmit","::1" -"%3A%3A1",2014-11-23T13:18:23+01:00,12,"sqli id lfi","REQUEST.id%3D1%2527+GET.id%3D1%2527","%2Fczar%2Fplayground%2Fdvwa%2Fvulnerabilities%2Fsqli%2F%3Fid%3D1%2527%26Submit%3DSubmit","::1" -"%3A%3A1",2014-11-23T13:18:24+01:00,12,"sqli id lfi","REQUEST.id%3D1%2527+GET.id%3D1%2527","%2Fczar%2Fplayground%2Fdvwa%2Fvulnerabilities%2Fsqli%2F%3Fid%3D1%2527%26Submit%3DSubmit","::1" -"%3A%3A1",2014-11-23T13:18:25+01:00,12,"sqli id lfi","REQUEST.id%3D1%2527+GET.id%3D1%2527","%2Fczar%2Fplayground%2Fdvwa%2Fvulnerabilities%2Fsqli%2F%3Fid%3D1%2527%26Submit%3DSubmit","::1" -"%3A%3A1",2014-11-23T13:18:26+01:00,12,"sqli id lfi","REQUEST.id%3D1%2527+GET.id%3D1%2527","%2Fczar%2Fplayground%2Fdvwa%2Fvulnerabilities%2Fsqli%2F%3Fid%3D1%2527%26Submit%3DSubmit","::1" -"%3A%3A1",2014-11-23T13:18:27+01:00,12,"sqli id lfi","REQUEST.id%3D1%2527+GET.id%3D1%2527","%2Fczar%2Fplayground%2Fdvwa%2Fvulnerabilities%2Fsqli%2F%3Fid%3D1%2527%26Submit%3DSubmit","::1" -"%3A%3A1",2014-11-23T13:19:15+01:00,12,"sqli id lfi","REQUEST.id%3D1%2527+GET.id%3D1%2527","%2Fczar%2Fplayground%2Fdvwa%2Fvulnerabilities%2Fsqli%2F%3Fid%3D1%2527%26Submit%3DSubmit","::1" -"%3A%3A1",2014-11-23T13:19:27+01:00,12,"sqli id lfi","REQUEST.id%3D1%2527+GET.id%3D1%2527","%2Fczar%2Fplayground%2Fdvwa%2Fvulnerabilities%2Fsqli%2F%3Fid%3D1%2527%26Submit%3DSubmit","::1" -"%3A%3A1",2014-11-23T13:19:33+01:00,12,"sqli id lfi","REQUEST.id%3D1%2527+GET.id%3D1%2527","%2Fczar%2Fplayground%2Fdvwa%2Fvulnerabilities%2Fsqli%2F%3Fid%3D1%2527%26Submit%3DSubmit","::1" -"%3A%3A1",2014-11-23T13:19:46+01:00,12,"sqli id lfi","REQUEST.id%3D1%2527+GET.id%3D1%2527","%2Fczar%2Fplayground%2Fdvwa%2Fvulnerabilities%2Fsqli%2F%3Fid%3D1%2527%26Submit%3DSubmit","::1" -"%3A%3A1",2014-11-23T13:20:02+01:00,12,"sqli id lfi","REQUEST.id%3D1%2527+GET.id%3D1%2527","%2Fczar%2Fplayground%2Fdvwa%2Fvulnerabilities%2Fsqli%2F%3Fid%3D1%2527%26Submit%3DSubmit","::1" -"%3A%3A1",2014-11-23T13:20:57+01:00,12,"sqli id lfi","REQUEST.id%3D1%2527+GET.id%3D1%2527","%2Fczar%2Fplayground%2Fdvwa%2Fvulnerabilities%2Fsqli%2F%3Fid%3D1%2527%26Submit%3DSubmit","::1" -"%3A%3A1",2014-11-23T13:21:04+01:00,12,"sqli id lfi","REQUEST.id%3D1%2527+GET.id%3D1%2527","%2Fczar%2Fplayground%2Fdvwa%2Fvulnerabilities%2Fsqli%2F%3Fid%3D1%2527%26Submit%3DSubmit","::1" -"%3A%3A1",2014-11-23T13:21:22+01:00,12,"sqli id lfi","REQUEST.id%3D1%2527+GET.id%3D1%2527","%2Fczar%2Fplayground%2Fdvwa%2Fvulnerabilities%2Fsqli%2F%3Fid%3D1%2527%26Submit%3DSubmit","::1" -"%3A%3A1",2014-11-23T13:21:48+01:00,12,"sqli id lfi","REQUEST.id%3D1%2527+GET.id%3D1%2527","%2Fczar%2Fplayground%2Fdvwa%2Fvulnerabilities%2Fsqli%2F%3Fid%3D1%2527%26Submit%3DSubmit","::1" -"%3A%3A1",2014-11-23T13:23:08+01:00,12,"sqli id lfi","REQUEST.id%3D1%2527+GET.id%3D1%2527","%2Fczar%2Fplayground%2Fdvwa%2Fvulnerabilities%2Fsqli%2F%3Fid%3D1%2527%26Submit%3DSubmit","::1" -"%3A%3A1",2014-11-23T13:24:21+01:00,12,"sqli id lfi","REQUEST.id%3D1%2527+GET.id%3D1%2527","%2Fczar%2Fplayground%2Fdvwa%2Fvulnerabilities%2Fsqli%2F%3Fid%3D1%2527%26Submit%3DSubmit","::1" -"%3A%3A1",2014-11-23T13:24:56+01:00,12,"sqli id lfi","REQUEST.id%3D1%2527+GET.id%3D1%2527","%2Fczar%2Fplayground%2Fdvwa%2Fvulnerabilities%2Fsqli%2F%3Fid%3D1%2527%26Submit%3DSubmit","::1" -"%3A%3A1",2014-11-23T13:25:01+01:00,12,"sqli id lfi","REQUEST.id%3D1%2527+GET.id%3D1%2527","%2Fczar%2Fplayground%2Fdvwa%2Fvulnerabilities%2Fsqli%2F%3Fid%3D1%2527%26Submit%3DSubmit","::1" -"%3A%3A1",2014-11-23T13:25:03+01:00,12,"sqli id lfi","REQUEST.id%3D1%2527+GET.id%3D1%2527","%2Fczar%2Fplayground%2Fdvwa%2Fvulnerabilities%2Fsqli%2F%3Fid%3D1%2527%26Submit%3DSubmit","::1" -"%3A%3A1",2014-11-23T13:30:36+01:00,12,"sqli id lfi","REQUEST.id%3D1%2527+GET.id%3D1%2527","%2Fczar%2Fplayground%2Fdvwa%2Fvulnerabilities%2Fsqli%2F%3Fid%3D1%2527%26Submit%3DSubmit","::1" -"%3A%3A1",2014-11-23T13:47:22+01:00,12,"sqli id lfi","REQUEST.id%3D1%2527+GET.id%3D1%2527","%2Fczar%2Fplayground%2Fdvwa%2Fvulnerabilities%2Fsqli%2F%3Fid%3D1%2527%26Submit%3DSubmit","::1" -"%3A%3A1",2014-11-23T13:47:45+01:00,12,"sqli id lfi","REQUEST.id%3D1%2527+GET.id%3D1%2527","%2Fczar%2Fplayground%2Fdvwa%2Fvulnerabilities%2Fsqli%2F%3Fid%3D1%2527%26Submit%3DSubmit","::1" -"%3A%3A1",2014-11-23T14:36:25+01:00,12,"sqli id lfi","REQUEST.id%3D1%2527+GET.id%3D1%2527","%2Fczar%2Fplayground%2Fdvwa%2Fvulnerabilities%2Fsqli%2F%3Fid%3D1%2527%26Submit%3DSubmit","::1" -"%3A%3A1",2014-11-23T14:37:19+01:00,12,"sqli id lfi","REQUEST.id%3D1%2527+GET.id%3D1%2527","%2Fczar%2Fplayground%2Fdvwa%2Fvulnerabilities%2Fsqli%2F%3Fid%3D1%2527%26Submit%3DSubmit","::1" -"%3A%3A1",2014-11-23T14:37:26+01:00,12,"sqli id lfi","REQUEST.id%3D1%2527+GET.id%3D1%2527","%2Fczar%2Fplayground%2Fdvwa%2Fvulnerabilities%2Fsqli%2F%3Fid%3D1%2527%26Submit%3DSubmit","::1" -"%3A%3A1",2014-11-23T14:38:26+01:00,12,"sqli id lfi","REQUEST.id%3D1%2527+GET.id%3D1%2527","%2Fczar%2Fplayground%2Fdvwa%2Fvulnerabilities%2Fsqli%2F%3Fid%3D1%2527%26Submit%3DSubmit","::1" -"%3A%3A1",2014-11-23T14:42:13+01:00,24,"sqli id lfi","REQUEST.username%3D1%2527+REQUEST.password%3D1%2527+GET.username%3D1%2527+GET.password%3D1%2527","%2Fczar%2Fplayground%2Fdvwa%2Fvulnerabilities%2Fbrute%2F%3Fusername%3D1%2527%26password%3D1%2527%26Login%3DLogin","::1" -"%3A%3A1",2014-11-23T14:42:39+01:00,24,"sqli id lfi","REQUEST.username%3D1%2527+REQUEST.password%3D1%2527+GET.username%3D1%2527+GET.password%3D1%2527","%2Fczar%2Fplayground%2Fdvwa%2Fvulnerabilities%2Fbrute%2F%3Fusername%3D1%2527%26password%3D1%2527%26Login%3DLogin","::1" -"%3A%3A1",2014-11-23T14:47:23+01:00,24,"sqli id lfi","REQUEST.username%3D1%2527+REQUEST.password%3D1%2527+GET.username%3D1%2527+GET.password%3D1%2527","%2Fczar%2Fplayground%2Fdvwa%2Fvulnerabilities%2Fbrute%2F%3Fusername%3D1%2527%26password%3D1%2527%26Login%3DLogin","::1" -"%3A%3A1",2014-11-23T14:51:48+01:00,24,"sqli id lfi","REQUEST.username%3D1%2527+REQUEST.password%3D1%2527+GET.username%3D1%2527+GET.password%3D1%2527","%2Fczar%2Fplayground%2Fdvwa%2Fvulnerabilities%2Fbrute%2F%3Fusername%3D1%2527%26password%3D1%2527%26Login%3DLogin","::1" -"%3A%3A1",2014-11-23T14:56:02+01:00,24,"sqli id lfi","REQUEST.username%3D1%2527+REQUEST.password%3D1%2527+GET.username%3D1%2527+GET.password%3D1%2527","%2Fczar%2Fplayground%2Fdvwa%2Fvulnerabilities%2Fbrute%2F%3Fusername%3D1%2527%26password%3D1%2527%26Login%3DLogin","::1" -"%3A%3A1",2014-11-23T15:44:39+01:00,12,"sqli id lfi","REQUEST.id%3D1%2527+GET.id%3D1%2527","%2Fczar%2Fplayground%2Fdvwa%2Fvulnerabilities%2Fsqli%2F%3Fid%3D1%2527%26Submit%3DSubmit","::1" -"%3A%3A1",2014-11-23T15:55:55+01:00,12,"sqli id lfi","REQUEST.id%3D1%2527+GET.id%3D1%2527","%2Fczar%2Fplayground%2Fdvwa%2Fvulnerabilities%2Fsqli%2F%3Fid%3D1%2527%26Submit%3DSubmit","::1" -"%3A%3A1",2014-11-23T16:07:00+01:00,12,"sqli id lfi","REQUEST.id%3D1%2527+GET.id%3D1%2527","%2Fczar%2Fplayground%2Fdvwa%2Fvulnerabilities%2Fsqli%2F%3Fid%3D1%2527%26Submit%3DSubmit","::1" -"%3A%3A1",2014-11-23T16:11:41+01:00,12,"sqli id lfi","REQUEST.id%3D1%2527+GET.id%3D1%2527","%2Fczar%2Fplayground%2Fdvwa%2Fvulnerabilities%2Fsqli%2F%3Fid%3D1%2527%26Submit%3DSubmit","::1" -"%3A%3A1",2014-11-23T16:13:40+01:00,12,"sqli id lfi","REQUEST.id%3D1%2527+GET.id%3D1%2527","%2Fczar%2Fplayground%2Fdvwa%2Fvulnerabilities%2Fsqli%2F%3Fid%3D1%2527%26Submit%3DSubmit","::1" -"%3A%3A1",2014-11-23T16:14:38+01:00,12,"sqli id lfi","REQUEST.id%3D1%2527+GET.id%3D1%2527","%2Fczar%2Fplayground%2Fdvwa%2Fvulnerabilities%2Fsqli%2F%3Fid%3D1%2527%26Submit%3DSubmit","::1" -"%3A%3A1",2014-11-23T16:15:06+01:00,12,"sqli id lfi","REQUEST.id%3D1%2527+GET.id%3D1%2527","%2Fczar%2Fplayground%2Fdvwa%2Fvulnerabilities%2Fsqli%2F%3Fid%3D1%2527%26Submit%3DSubmit","::1" -"%3A%3A1",2014-11-23T16:19:52+01:00,12,"sqli id lfi","REQUEST.id%3D1%2527+GET.id%3D1%2527","%2Fczar%2Fplayground%2Fdvwa%2Fvulnerabilities%2Fsqli%2F%3Fid%3D1%2527%26Submit%3DSubmit","::1" -"%3A%3A1",2014-11-23T16:24:22+01:00,6,"xss csrf id","REQUEST.id%3D%25201%253D1--+GET.id%3D%25201%253D1--","%2Fczar%2Fplayground%2Fdvwa%2Fvulnerabilities%2Fsqli%2F%3Fid%3D%2B1%253D1--%26Submit%3DSubmit","::1" -"%3A%3A1",2014-11-24T05:30:10+01:00,12,"sqli id lfi","REQUEST.id%3D1%2527+GET.id%3D1%2527","%2Fczar%2Fplayground%2Fdvwa%2Fvulnerabilities%2Fsqli%2F%3Fid%3D1%2527%26Submit%3DSubmit","::1" -"%3A%3A1",2014-11-24T05:30:14+01:00,12,"sqli id lfi","REQUEST.id%3D1%2527+GET.id%3D1%2527","%2Fczar%2Fplayground%2Fdvwa%2Fvulnerabilities%2Fsqli%2F%3Fid%3D1%2527%26Submit%3DSubmit","::1" -"%3A%3A1",2014-11-24T05:30:14+01:00,12,"sqli id lfi","REQUEST.id%3D1%2527+GET.id%3D1%2527","%2Fczar%2Fplayground%2Fdvwa%2Fvulnerabilities%2Fsqli%2F%3Fid%3D1%2527%26Submit%3DSubmit","::1" -"%3A%3A1",2014-11-24T12:43:21+01:00,12,"sqli id lfi","REQUEST.name%3D1%2527+GET.name%3D1%2527","%2Fczar%2Fplayground%2Fdvwa%2Fvulnerabilities%2Fxss_r%2F%3Fname%3D1%2527","::1" -"%3A%3A1",2014-11-24T20:00:16+01:00,30,"sqli id lfi","REQUEST.name%3D1%2527+GET.name%3D1%2527+COOKIE.ci_session%3Da%253A5%253A%257Bs%253A10%253A%2522session_id%2522%253Bs%253A32%253A%25226676b3b07a4d838d925143494b678f00%2522%253Bs%253A10%253A%2522ip_address%2522%253Bs%253A3%253A%2522%253A%253A1%2522%253Bs%253A10%253A%2522user_agent%2522%253Bs%253A113%253A%2522Mozilla%252F5.0%2520%2528Windows%2520NT%25206.1%253B%2520Win64%253B%2520x64%2529%2520AppleWebKit%252F537.36%2520%2528KHTML%252C%2520like%2520Gecko%2529%2520Chrome%252F39.0.2171.65%2520Safari%252F537.36%2522%253Bs%253A13%253A%2522last_activity%2522%253Bi%253A1416854864%253Bs%253A9%253A%2522user_data%2522%253Bs%253A0%253A%2522%2522%253B%257D8ca15a722b54589b619b94c750442da596d29f1f","%2Fczar%2Fplayground%2Fdvwa%2Fvulnerabilities%2Fxss_r%2F%3Fname%3D1%2527","::1" -"%3A%3A1",2014-11-24T20:00:50+01:00,30,"sqli id lfi","REQUEST.name%3D1%2527+GET.name%3D1%2527+COOKIE.ci_session%3Da%253A5%253A%257Bs%253A10%253A%2522session_id%2522%253Bs%253A32%253A%25226676b3b07a4d838d925143494b678f00%2522%253Bs%253A10%253A%2522ip_address%2522%253Bs%253A3%253A%2522%253A%253A1%2522%253Bs%253A10%253A%2522user_agent%2522%253Bs%253A113%253A%2522Mozilla%252F5.0%2520%2528Windows%2520NT%25206.1%253B%2520Win64%253B%2520x64%2529%2520AppleWebKit%252F537.36%2520%2528KHTML%252C%2520like%2520Gecko%2529%2520Chrome%252F39.0.2171.65%2520Safari%252F537.36%2522%253Bs%253A13%253A%2522last_activity%2522%253Bi%253A1416854864%253Bs%253A9%253A%2522user_data%2522%253Bs%253A0%253A%2522%2522%253B%257D8ca15a722b54589b619b94c750442da596d29f1f","%2Fczar%2Fplayground%2Fdvwa%2Fvulnerabilities%2Fxss_r%2F%3Fname%3D1%2527","::1" -"%3A%3A1",2014-11-24T20:02:59+01:00,30,"sqli id lfi","REQUEST.name%3D1%2527+GET.name%3D1%2527+COOKIE.ci_session%3Da%253A5%253A%257Bs%253A10%253A%2522session_id%2522%253Bs%253A32%253A%25226676b3b07a4d838d925143494b678f00%2522%253Bs%253A10%253A%2522ip_address%2522%253Bs%253A3%253A%2522%253A%253A1%2522%253Bs%253A10%253A%2522user_agent%2522%253Bs%253A113%253A%2522Mozilla%252F5.0%2520%2528Windows%2520NT%25206.1%253B%2520Win64%253B%2520x64%2529%2520AppleWebKit%252F537.36%2520%2528KHTML%252C%2520like%2520Gecko%2529%2520Chrome%252F39.0.2171.65%2520Safari%252F537.36%2522%253Bs%253A13%253A%2522last_activity%2522%253Bi%253A1416854864%253Bs%253A9%253A%2522user_data%2522%253Bs%253A0%253A%2522%2522%253B%257D8ca15a722b54589b619b94c750442da596d29f1f","%2Fczar%2Fplayground%2Fdvwa%2Fvulnerabilities%2Fxss_r%2F%3Fname%3D1%2527","::1" -"%3A%3A1",2014-11-24T20:26:01+01:00,30,"sqli id lfi","REQUEST.id%3D1%2527+GET.id%3D1%2527+COOKIE.ci_session%3Da%253A5%253A%257Bs%253A10%253A%2522session_id%2522%253Bs%253A32%253A%25226676b3b07a4d838d925143494b678f00%2522%253Bs%253A10%253A%2522ip_address%2522%253Bs%253A3%253A%2522%253A%253A1%2522%253Bs%253A10%253A%2522user_agent%2522%253Bs%253A113%253A%2522Mozilla%252F5.0%2520%2528Windows%2520NT%25206.1%253B%2520Win64%253B%2520x64%2529%2520AppleWebKit%252F537.36%2520%2528KHTML%252C%2520like%2520Gecko%2529%2520Chrome%252F39.0.2171.65%2520Safari%252F537.36%2522%253Bs%253A13%253A%2522last_activity%2522%253Bi%253A1416854864%253Bs%253A9%253A%2522user_data%2522%253Bs%253A0%253A%2522%2522%253B%257D8ca15a722b54589b619b94c750442da596d29f1f","%2Fczar%2Fplayground%2Fdvwa%2Fvulnerabilities%2Fsqli%2F%3Fid%3D1%2527%26Submit%3DSubmit","::1" -"%3A%3A1",2014-11-24T20:27:29+01:00,30,"sqli id lfi","REQUEST.id%3D1%2527+GET.id%3D1%2527+COOKIE.ci_session%3Da%253A5%253A%257Bs%253A10%253A%2522session_id%2522%253Bs%253A32%253A%25226676b3b07a4d838d925143494b678f00%2522%253Bs%253A10%253A%2522ip_address%2522%253Bs%253A3%253A%2522%253A%253A1%2522%253Bs%253A10%253A%2522user_agent%2522%253Bs%253A113%253A%2522Mozilla%252F5.0%2520%2528Windows%2520NT%25206.1%253B%2520Win64%253B%2520x64%2529%2520AppleWebKit%252F537.36%2520%2528KHTML%252C%2520like%2520Gecko%2529%2520Chrome%252F39.0.2171.65%2520Safari%252F537.36%2522%253Bs%253A13%253A%2522last_activity%2522%253Bi%253A1416854864%253Bs%253A9%253A%2522user_data%2522%253Bs%253A0%253A%2522%2522%253B%257D8ca15a722b54589b619b94c750442da596d29f1f","%2Fczar%2Fplayground%2Fdvwa%2Fvulnerabilities%2Fsqli%2F%3Fid%3D1%2527%26Submit%3DSubmit","::1" -"%3A%3A1",2014-11-24T20:27:41+01:00,30,"sqli id lfi","REQUEST.id%3D1%2527+GET.id%3D1%2527+COOKIE.ci_session%3Da%253A5%253A%257Bs%253A10%253A%2522session_id%2522%253Bs%253A32%253A%25226676b3b07a4d838d925143494b678f00%2522%253Bs%253A10%253A%2522ip_address%2522%253Bs%253A3%253A%2522%253A%253A1%2522%253Bs%253A10%253A%2522user_agent%2522%253Bs%253A113%253A%2522Mozilla%252F5.0%2520%2528Windows%2520NT%25206.1%253B%2520Win64%253B%2520x64%2529%2520AppleWebKit%252F537.36%2520%2528KHTML%252C%2520like%2520Gecko%2529%2520Chrome%252F39.0.2171.65%2520Safari%252F537.36%2522%253Bs%253A13%253A%2522last_activity%2522%253Bi%253A1416854864%253Bs%253A9%253A%2522user_data%2522%253Bs%253A0%253A%2522%2522%253B%257D8ca15a722b54589b619b94c750442da596d29f1f","%2Fczar%2Fplayground%2Fdvwa%2Fvulnerabilities%2Fsqli%2F%3Fid%3D1%2527%26Submit%3DSubmit","::1" -"%3A%3A1",2014-11-24T20:27:46+01:00,18,"sqli id lfi","REQUEST.id%3D1%2527+GET.id%3D1%2527+COOKIE.ci_session%3Da%253A5%253A%257Bs%253A10%253A%2522session_id%2522%253Bs%253A32%253A%25226676b3b07a4d838d925143494b678f00%2522%253Bs%253A10%253A%2522ip_address%2522%253Bs%253A3%253A%2522%253A%253A1%2522%253Bs%253A10%253A%2522user_agent%2522%253Bs%253A113%253A%2522Mozilla%252F5.0%2520%2528Windows%2520NT%25206.1%253B%2520Win64%253B%2520x64%2529%2520AppleWebKit%252F537.36%2520%2528KHTML%252C%2520like%2520Gecko%2529%2520Chrome%252F39.0.2171.65%2520Safari%252F537.36%2522%253Bs%253A13%253A%2522last_activity%2522%253Bi%253A1416854864%253Bs%253A9%253A%2522user_data%2522%253Bs%253A0%253A%2522%2522%253B%257D8ca15a722b54589b619b94c750442da596d29f1f","%2Fczar%2Fplayground%2Fdvwa%2Fvulnerabilities%2Fsqli%2F%3Fid%3D1%2527%26Submit%3DSubmit","::1" -"%3A%3A1",2014-12-02T11:19:57+01:00,18,"sqli id lfi","COOKIE.ci_session%3Da%253A10%253A%257Bs%253A10%253A%2522session_id%2522%253Bs%253A32%253A%2522a34d080e23eb0a1bf4e6f9a52d36a125%2522%253Bs%253A10%253A%2522ip_address%2522%253Bs%253A3%253A%2522%253A%253A1%2522%253Bs%253A10%253A%2522user_agent%2522%253Bs%253A113%253A%2522Mozilla%252F5.0%2520%2528Windows%2520NT%25206.1%253B%2520Win64%253B%2520x64%2529%2520AppleWebKit%252F537.36%2520%2528KHTML%252C%2520like%2520Gecko%2529%2520Chrome%252F39.0.2171.71%2520Safari%252F537.36%2522%253Bs%253A13%253A%2522last_activity%2522%253Bi%253A1417514309%253Bs%253A9%253A%2522user_data%2522%253Bs%253A0%253A%2522%2522%253Bs%253A8%253A%2522identity%2522%253Bs%253A15%253A%2522admin%2540admin.com%2522%253Bs%253A8%253A%2522username%2522%253Bs%253A13%253A%2522administrator%2522%253Bs%253A5%253A%2522email%2522%253Bs%253A15%253A%2522admin%2540admin.com%2522%253Bs%253A7%253A%2522user_id%2522%253Bs%253A1%253A%25221%2522%253Bs%253A14%253A%2522old_last_login%2522%253Bs%253A10%253A%25221417329311%2522%253B%257D5b27f6a690947255067006681e74cad507ad69a3","%2Fczar%2Fplayground%2Fdvwa%2Flogin.php","::1" -"%3A%3A1",2014-12-02T11:20:58+01:00,0,"","REQUEST.id%3D1%2527+GET.id%3D1%2527","%2Fczar%2Fplayground%2Fdvwa%2Fvulnerabilities%2Fsqli%2F%3Fid%3D1%2527%26Submit%3DSubmit","::1" -"%3A%3A1",2014-12-02T11:21:25+01:00,0,"","REQUEST.id%3D1%2527+GET.id%3D1%2527","%2Fczar%2Fplayground%2Fdvwa%2Fvulnerabilities%2Fsqli%2F%3Fid%3D1%2527%26Submit%3DSubmit","::1" -"%3A%3A1",2014-12-02T11:21:41+01:00,0,"","REQUEST.id%3D1%2527+GET.id%3D1%2527","%2Fczar%2Fplayground%2Fdvwa%2Fvulnerabilities%2Fsqli%2F%3Fid%3D1%2527%26Submit%3DSubmit","::1" -"%3A%3A1",2014-12-09T10:22:27+01:00,0,"","REQUEST.name%3D1%2527+GET.name%3D1%2527","%2Fczar%2Fplayground%2Fdvwa%2Fvulnerabilities%2Fxss_r%2F%3Fname%3D1%2527","::1" -"%3A%3A1",2014-12-09T10:34:03+01:00,0,"","REQUEST.name%3D1%2527+GET.name%3D1%2527","%2Fczar%2Fplayground%2Fdvwa%2Fvulnerabilities%2Fxss_r%2F%3Fname%3D1%2527","::1" -"%3A%3A1",2014-12-09T19:03:29+01:00,0,"","REQUEST.name%3D1%2527+GET.name%3D1%2527","%2Fczar%2Fplayground%2Fdvwa%2Fvulnerabilities%2Fxss_r%2F%3Fname%3D1%2527","::1" -"%3A%3A1",2014-12-09T19:14:48+01:00,0,"","REQUEST.name%3D1%2527+GET.name%3D1%2527","%2Fczar%2Fplayground%2Fdvwa%2Fvulnerabilities%2Fxss_r%2F%3Fname%3D1%2527","::1" -"%3A%3A1",2014-12-09T19:50:58+01:00,0,"","REQUEST.name%3D1%2527+GET.name%3D1%2527","%2Fczar%2Fplayground%2Fdvwa%2Fvulnerabilities%2Fxss_r%2F%3Fname%3D1%2527","::1" -"%3A%3A1",2014-12-09T21:22:30+01:00,40,"sqli id lfi","REQUEST.name%3DSELECT%2520column_name%2528s%2529%2520FROM%2520table1%2520UNION%2520ALL%2520SELECT%2520column_name%2528s%2529%2520FROM%2520table2%253B+GET.name%3DSELECT%2520column_name%2528s%2529%2520FROM%2520table1%2520UNION%2520ALL%2520SELECT%2520column_name%2528s%2529%2520FROM%2520table2%253B","%2Fczar%2Fplayground%2Fdvwa%2Fvulnerabilities%2Fxss_r%2F%3Fname%3DSELECT%2Bcolumn_name%2528s%2529%2BFROM%2Btable1%2BUNION%2BALL%2BSELECT%2Bcolumn_name%2528s%2529%2BFROM%2Btable2%253B","::1" -"%3A%3A1",2014-12-09T22:31:15+01:00,40,"sqli id lfi","REQUEST.name%3DSELECT%2520column_name%2528s%2529%2520FROM%2520table1%2520UNION%2520ALL%2520SELECT%2520column_name%2528s%2529%2520FROM%2520table2%253B+GET.name%3DSELECT%2520column_name%2528s%2529%2520FROM%2520table1%2520UNION%2520ALL%2520SELECT%2520column_name%2528s%2529%2520FROM%2520table2%253B","%2Fczar%2Fplayground%2Fdvwa%2Fvulnerabilities%2Fxss_r%2F%3Fname%3DSELECT%2Bcolumn_name%2528s%2529%2BFROM%2Btable1%2BUNION%2BALL%2BSELECT%2Bcolumn_name%2528s%2529%2BFROM%2Btable2%253B","::1" -"%3A%3A1",2014-12-12T18:14:53+01:00,0,"","REQUEST.name%3D1%2527+GET.name%3D1%2527","%2Fczar%2Fplayground%2Fdvwa%2Fvulnerabilities%2Fxss_r%2F%3Fname%3D1%2527","::1" -"%3A%3A1",2014-12-13T12:00:33+01:00,0,"","REQUEST.name%3D1%2527+GET.name%3D1%2527","%2Fczar%2Fplayground%2Fdvwa%2Fvulnerabilities%2Fxss_r%2F%3Fname%3D1%2527","::1" -"%3A%3A1",2014-12-13T16:46:16+01:00,40,"sqli id lfi","REQUEST.name%3DSELECT%2520City%2520FROM%2520Customers%2520UNION%2520ALL%2520SELECT%2520City%2520FROM%2520Suppliers%2520ORDER%2520BY%2520City%253B+GET.name%3DSELECT%2520City%2520FROM%2520Customers%2520UNION%2520ALL%2520SELECT%2520City%2520FROM%2520Suppliers%2520ORDER%2520BY%2520City%253B","%2Fczar%2Fplayground%2Fdvwa%2Fvulnerabilities%2Fxss_r%2F%3Fname%3DSELECT%2BCity%2BFROM%2BCustomers%2BUNION%2BALL%2BSELECT%2BCity%2BFROM%2BSuppliers%2BORDER%2BBY%2BCity%253B","::1" -"%3A%3A1",2014-12-15T10:43:24+01:00,0,"","REQUEST.name%3D1%2527+GET.name%3D1%2527","%2Fczar%2Fplayground%2Fdvwa%2Fvulnerabilities%2Fxss_r%2F%3Fname%3D1%2527","::1" -"%3A%3A1",2015-01-18T11:20:37+01:00,0,"","REQUEST.id%3D1%2527+GET.id%3D1%2527","%2Fczar%2Fplayground%2Fdvwa%2Fvulnerabilities%2Fsqli%2F%3Fid%3D1%2527%26Submit%3DSubmit","::1" -"%3A%3A1",2015-01-18T11:26:31+01:00,42,"xss csrf id rfe lfi","REQUEST.id%3D%253Cscript%253Ealert%2528%252F0%252F%2529%253C%252Fscript%253E+GET.id%3D%253Cscript%253Ealert%2528%252F0%252F%2529%253C%252Fscript%253E","%2Fczar%2Fplayground%2Fdvwa%2Fvulnerabilities%2Fsqli%2F%3Fid%3D%253Cscript%253Ealert%2528%252F0%252F%2529%253C%252Fscript%253E%26Submit%3DSubmit","::1" -"%3A%3A1",2015-01-18T11:34:37+01:00,0,"","REQUEST.id%3D1%2527+GET.id%3D1%2527","%2Fczar%2Fplayground%2Fdvwa%2Fvulnerabilities%2Fsqli%2F%3Fid%3D1%2527%26Submit%3DSubmit","::1" -"%3A%3A1",2015-01-18T11:48:51+01:00,0,"","REQUEST.id%3D1%2527+GET.id%3D1%2527","%2Fczar%2Fplayground%2Fdvwa%2Fvulnerabilities%2Fsqli%2F%3Fid%3D1%2527%26Submit%3DSubmit","::1" -"%3A%3A1",2015-03-11T05:30:23+01:00,0,"","REQUEST.id%3D1%2527+GET.id%3D1%2527","%2Fczar%2Fplayground%2Fdvwa%2Fvulnerabilities%2Fsqli%2F%3Fid%3D1%2527%26Submit%3DSubmit","::1" -"%3A%3A1",2015-03-11T05:53:27+01:00,0,"","REQUEST.id%3D1%2527+GET.id%3D1%2527","%2Fczar%2Fplayground%2Fdvwa%2Fvulnerabilities%2Fsqli%2F%3Fid%3D1%2527%26Submit%3DSubmit","::1" -"%3A%3A1",2015-03-11T05:53:30+01:00,0,"","REQUEST.id%3D1%2527+GET.id%3D1%2527","%2Fczar%2Fplayground%2Fdvwa%2Fvulnerabilities%2Fsqli%2F%3Fid%3D1%2527%26Submit%3DSubmit","::1" -"%3A%3A1",2015-03-11T05:53:32+01:00,0,"","REQUEST.id%3D1%2527+GET.id%3D1%2527","%2Fczar%2Fplayground%2Fdvwa%2Fvulnerabilities%2Fsqli%2F%3Fid%3D1%2527%26Submit%3DSubmit","::1" -"%3A%3A1",2015-03-11T05:53:33+01:00,0,"","REQUEST.id%3D1%2527+GET.id%3D1%2527","%2Fczar%2Fplayground%2Fdvwa%2Fvulnerabilities%2Fsqli%2F%3Fid%3D1%2527%26Submit%3DSubmit","::1" -"%3A%3A1",2015-03-11T05:53:33+01:00,0,"","REQUEST.id%3D1%2527+GET.id%3D1%2527","%2Fczar%2Fplayground%2Fdvwa%2Fvulnerabilities%2Fsqli%2F%3Fid%3D1%2527%26Submit%3DSubmit","::1" -"%3A%3A1",2015-03-11T05:53:34+01:00,0,"","REQUEST.id%3D1%2527+GET.id%3D1%2527","%2Fczar%2Fplayground%2Fdvwa%2Fvulnerabilities%2Fsqli%2F%3Fid%3D1%2527%26Submit%3DSubmit","::1" -"%3A%3A1",2015-03-11T05:53:34+01:00,0,"","REQUEST.id%3D1%2527+GET.id%3D1%2527","%2Fczar%2Fplayground%2Fdvwa%2Fvulnerabilities%2Fsqli%2F%3Fid%3D1%2527%26Submit%3DSubmit","::1" -"%3A%3A1",2015-03-11T05:53:34+01:00,0,"","REQUEST.id%3D1%2527+GET.id%3D1%2527","%2Fczar%2Fplayground%2Fdvwa%2Fvulnerabilities%2Fsqli%2F%3Fid%3D1%2527%26Submit%3DSubmit","::1" -"%3A%3A1",2015-03-11T05:53:35+01:00,0,"","REQUEST.id%3D1%2527+GET.id%3D1%2527","%2Fczar%2Fplayground%2Fdvwa%2Fvulnerabilities%2Fsqli%2F%3Fid%3D1%2527%26Submit%3DSubmit","::1" -"%3A%3A1",2015-03-11T05:53:35+01:00,0,"","REQUEST.id%3D1%2527+GET.id%3D1%2527","%2Fczar%2Fplayground%2Fdvwa%2Fvulnerabilities%2Fsqli%2F%3Fid%3D1%2527%26Submit%3DSubmit","::1" -"%3A%3A1",2015-03-11T05:53:35+01:00,0,"","REQUEST.id%3D1%2527+GET.id%3D1%2527","%2Fczar%2Fplayground%2Fdvwa%2Fvulnerabilities%2Fsqli%2F%3Fid%3D1%2527%26Submit%3DSubmit","::1" -"%3A%3A1",2015-03-11T05:53:35+01:00,0,"","REQUEST.id%3D1%2527+GET.id%3D1%2527","%2Fczar%2Fplayground%2Fdvwa%2Fvulnerabilities%2Fsqli%2F%3Fid%3D1%2527%26Submit%3DSubmit","::1" -"%3A%3A1",2015-03-11T05:53:35+01:00,0,"","REQUEST.id%3D1%2527+GET.id%3D1%2527","%2Fczar%2Fplayground%2Fdvwa%2Fvulnerabilities%2Fsqli%2F%3Fid%3D1%2527%26Submit%3DSubmit","::1" -"%3A%3A1",2015-03-11T05:53:36+01:00,0,"","REQUEST.id%3D1%2527+GET.id%3D1%2527","%2Fczar%2Fplayground%2Fdvwa%2Fvulnerabilities%2Fsqli%2F%3Fid%3D1%2527%26Submit%3DSubmit","::1" -"%3A%3A1",2015-03-11T05:53:36+01:00,0,"","REQUEST.id%3D1%2527+GET.id%3D1%2527","%2Fczar%2Fplayground%2Fdvwa%2Fvulnerabilities%2Fsqli%2F%3Fid%3D1%2527%26Submit%3DSubmit","::1" -"%3A%3A1",2015-03-11T05:53:54+01:00,0,"","REQUEST.id%3D1%2527+GET.id%3D1%2527","%2Fczar%2Fplayground%2Fdvwa%2Fvulnerabilities%2Fsqli%2F%3Fid%3D1%2527%26Submit%3DSubmit","::1" -"%3A%3A1",2015-03-11T05:55:03+01:00,0,"","REQUEST.id%3D1%2527+GET.id%3D1%2527","%2Fczar%2Fplayground%2Fdvwa%2Fvulnerabilities%2Fsqli%2F%3Fid%3D1%2527%26Submit%3DSubmit","::1" -"%3A%3A1",2015-03-11T05:55:09+01:00,0,"","REQUEST.id%3D1%2527+GET.id%3D1%2527","%2Fczar%2Fplayground%2Fdvwa%2Fvulnerabilities%2Fsqli%2F%3Fid%3D1%2527%26Submit%3DSubmit","::1" -"%3A%3A1",2015-03-11T05:55:10+01:00,0,"","REQUEST.id%3D1%2527+GET.id%3D1%2527","%2Fczar%2Fplayground%2Fdvwa%2Fvulnerabilities%2Fsqli%2F%3Fid%3D1%2527%26Submit%3DSubmit","::1" -"%3A%3A1",2015-03-11T05:55:11+01:00,0,"","REQUEST.id%3D1%2527+GET.id%3D1%2527","%2Fczar%2Fplayground%2Fdvwa%2Fvulnerabilities%2Fsqli%2F%3Fid%3D1%2527%26Submit%3DSubmit","::1" -"%3A%3A1",2015-03-11T05:55:13+01:00,0,"","REQUEST.id%3D1%2527+GET.id%3D1%2527","%2Fczar%2Fplayground%2Fdvwa%2Fvulnerabilities%2Fsqli%2F%3Fid%3D1%2527%26Submit%3DSubmit","::1" -"%3A%3A1",2015-03-11T05:55:14+01:00,0,"","REQUEST.id%3D1%2527+GET.id%3D1%2527","%2Fczar%2Fplayground%2Fdvwa%2Fvulnerabilities%2Fsqli%2F%3Fid%3D1%2527%26Submit%3DSubmit","::1" -"%3A%3A1",2015-03-11T05:55:35+01:00,0,"","REQUEST.id%3D1%2527+GET.id%3D1%2527","%2Fczar%2Fplayground%2Fdvwa%2Fvulnerabilities%2Fsqli%2F%3Fid%3D1%2527%26Submit%3DSubmit","::1" -"%3A%3A1",2015-03-11T05:55:54+01:00,0,"","REQUEST.id%3D1%2527+GET.id%3D1%2527","%2Fczar%2Fplayground%2Fdvwa%2Fvulnerabilities%2Fsqli%2F%3Fid%3D1%2527%26Submit%3DSubmit","::1" -"%3A%3A1",2015-03-11T05:56:36+01:00,0,"","REQUEST.id%3D1%2527+GET.id%3D1%2527","%2Fczar%2Fplayground%2Fdvwa%2Fvulnerabilities%2Fsqli%2F%3Fid%3D1%2527%26Submit%3DSubmit","::1" -"%3A%3A1",2015-03-11T05:57:15+01:00,0,"","REQUEST.id%3D1%2527+GET.id%3D1%2527","%2Fczar%2Fplayground%2Fdvwa%2Fvulnerabilities%2Fsqli%2F%3Fid%3D1%2527%26Submit%3DSubmit","::1" -"%3A%3A1",2015-03-11T05:57:15+01:00,0,"","REQUEST.id%3D1%2527+GET.id%3D1%2527","%2Fczar%2Fplayground%2Fdvwa%2Fvulnerabilities%2Fsqli%2F%3Fid%3D1%2527%26Submit%3DSubmit","::1" -"%3A%3A1",2015-03-11T05:57:16+01:00,0,"","REQUEST.id%3D1%2527+GET.id%3D1%2527","%2Fczar%2Fplayground%2Fdvwa%2Fvulnerabilities%2Fsqli%2F%3Fid%3D1%2527%26Submit%3DSubmit","::1" -"%3A%3A1",2015-03-11T05:57:54+01:00,0,"","REQUEST.id%3D1%2527+GET.id%3D1%2527","%2Fczar%2Fplayground%2Fdvwa%2Fvulnerabilities%2Fsqli%2F%3Fid%3D1%2527%26Submit%3DSubmit","::1" -"%3A%3A1",2015-03-11T05:58:26+01:00,0,"","REQUEST.id%3D1%2527+GET.id%3D1%2527","%2Fczar%2Fplayground%2Fdvwa%2Fvulnerabilities%2Fsqli%2F%3Fid%3D1%2527%26Submit%3DSubmit","::1" -"%3A%3A1",2015-03-11T05:58:37+01:00,0,"","REQUEST.id%3D1%2527+GET.id%3D1%2527","%2Fczar%2Fplayground%2Fdvwa%2Fvulnerabilities%2Fsqli%2F%3Fid%3D1%2527%26Submit%3DSubmit","::1" -"%3A%3A1",2015-03-11T05:58:38+01:00,0,"","REQUEST.id%3D1%2527+GET.id%3D1%2527","%2Fczar%2Fplayground%2Fdvwa%2Fvulnerabilities%2Fsqli%2F%3Fid%3D1%2527%26Submit%3DSubmit","::1" -"%3A%3A1",2015-03-11T05:59:58+01:00,0,"","REQUEST.id%3D1%2527+GET.id%3D1%2527","%2Fczar%2Fplayground%2Fdvwa%2Fvulnerabilities%2Fsqli%2F%3Fid%3D1%2527%26Submit%3DSubmit","::1" -"%3A%3A1",2015-03-11T06:00:03+01:00,0,"","REQUEST.id%3D1%2527+GET.id%3D1%2527","%2Fczar%2Fplayground%2Fdvwa%2Fvulnerabilities%2Fsqli%2F%3Fid%3D1%2527%26Submit%3DSubmit","::1" -"%3A%3A1",2015-03-11T06:00:04+01:00,0,"","REQUEST.id%3D1%2527+GET.id%3D1%2527","%2Fczar%2Fplayground%2Fdvwa%2Fvulnerabilities%2Fsqli%2F%3Fid%3D1%2527%26Submit%3DSubmit","::1" -"%3A%3A1",2015-03-11T06:00:04+01:00,0,"","REQUEST.id%3D1%2527+GET.id%3D1%2527","%2Fczar%2Fplayground%2Fdvwa%2Fvulnerabilities%2Fsqli%2F%3Fid%3D1%2527%26Submit%3DSubmit","::1" -"%3A%3A1",2015-03-11T06:00:20+01:00,0,"","REQUEST.id%3D1%2527+GET.id%3D1%2527","%2Fczar%2Fplayground%2Fdvwa%2Fvulnerabilities%2Fsqli%2F%3Fid%3D1%2527%26Submit%3DSubmit","::1" -"%3A%3A1",2015-03-11T06:00:38+01:00,0,"","REQUEST.id%3D1%2527+GET.id%3D1%2527","%2Fczar%2Fplayground%2Fdvwa%2Fvulnerabilities%2Fsqli%2F%3Fid%3D1%2527%26Submit%3DSubmit","::1" -"%3A%3A1",2015-03-11T06:00:39+01:00,0,"","REQUEST.id%3D1%2527+GET.id%3D1%2527","%2Fczar%2Fplayground%2Fdvwa%2Fvulnerabilities%2Fsqli%2F%3Fid%3D1%2527%26Submit%3DSubmit","::1" -"%3A%3A1",2015-03-11T06:01:06+01:00,0,"","REQUEST.id%3D1%2527+GET.id%3D1%2527","%2Fczar%2Fplayground%2Fdvwa%2Fvulnerabilities%2Fsqli%2F%3Fid%3D1%2527%26Submit%3DSubmit","::1" -"%3A%3A1",2015-03-11T06:01:36+01:00,0,"","REQUEST.id%3D1%2527+GET.id%3D1%2527","%2Fczar%2Fplayground%2Fdvwa%2Fvulnerabilities%2Fsqli%2F%3Fid%3D1%2527%26Submit%3DSubmit","::1" -"%3A%3A1",2015-03-11T06:02:14+01:00,0,"","REQUEST.id%3D1%2527+GET.id%3D1%2527","%2Fczar%2Fplayground%2Fdvwa%2Fvulnerabilities%2Fsqli%2F%3Fid%3D1%2527%26Submit%3DSubmit","::1" -"%3A%3A1",2015-03-11T06:02:15+01:00,0,"","REQUEST.id%3D1%2527+GET.id%3D1%2527","%2Fczar%2Fplayground%2Fdvwa%2Fvulnerabilities%2Fsqli%2F%3Fid%3D1%2527%26Submit%3DSubmit","::1" -"%3A%3A1",2015-03-11T06:02:16+01:00,0,"","REQUEST.id%3D1%2527+GET.id%3D1%2527","%2Fczar%2Fplayground%2Fdvwa%2Fvulnerabilities%2Fsqli%2F%3Fid%3D1%2527%26Submit%3DSubmit","::1" -"%3A%3A1",2015-03-11T06:04:26+01:00,0,"","REQUEST.id%3D1%2527+GET.id%3D1%2527","%2Fczar%2Fplayground%2Fdvwa%2Fvulnerabilities%2Fsqli%2F%3Fid%3D1%2527%26Submit%3DSubmit","::1" -"%3A%3A1",2015-03-11T06:04:37+01:00,0,"","REQUEST.id%3D1%2527+GET.id%3D1%2527","%2Fczar%2Fplayground%2Fdvwa%2Fvulnerabilities%2Fsqli%2F%3Fid%3D1%2527%26Submit%3DSubmit","::1" -"%3A%3A1",2015-03-11T06:04:38+01:00,0,"","REQUEST.id%3D1%2527+GET.id%3D1%2527","%2Fczar%2Fplayground%2Fdvwa%2Fvulnerabilities%2Fsqli%2F%3Fid%3D1%2527%26Submit%3DSubmit","::1" -"%3A%3A1",2015-03-11T06:04:38+01:00,0,"","REQUEST.id%3D1%2527+GET.id%3D1%2527","%2Fczar%2Fplayground%2Fdvwa%2Fvulnerabilities%2Fsqli%2F%3Fid%3D1%2527%26Submit%3DSubmit","::1" -"%3A%3A1",2015-03-11T06:04:38+01:00,0,"","REQUEST.id%3D1%2527+GET.id%3D1%2527","%2Fczar%2Fplayground%2Fdvwa%2Fvulnerabilities%2Fsqli%2F%3Fid%3D1%2527%26Submit%3DSubmit","::1" -"%3A%3A1",2015-03-11T06:07:10+01:00,0,"","REQUEST.id%3D1%2527+GET.id%3D1%2527","%2Fczar%2Fplayground%2Fdvwa%2Fvulnerabilities%2Fsqli%2F%3Fid%3D1%2527%26Submit%3DSubmit","::1" -"%3A%3A1",2015-03-11T06:07:13+01:00,0,"","REQUEST.id%3D1%2527+GET.id%3D1%2527","%2Fczar%2Fplayground%2Fdvwa%2Fvulnerabilities%2Fsqli%2F%3Fid%3D1%2527%26Submit%3DSubmit","::1" -"%3A%3A1",2015-03-11T06:07:23+01:00,0,"","REQUEST.id%3D1%2527+GET.id%3D1%2527","%2Fczar%2Fplayground%2Fdvwa%2Fvulnerabilities%2Fsqli%2F%3Fid%3D1%2527%26Submit%3DSubmit","::1" -"%3A%3A1",2015-03-11T06:07:24+01:00,0,"","REQUEST.id%3D1%2527+GET.id%3D1%2527","%2Fczar%2Fplayground%2Fdvwa%2Fvulnerabilities%2Fsqli%2F%3Fid%3D1%2527%26Submit%3DSubmit","::1" -"%3A%3A1",2015-03-11T06:07:24+01:00,0,"","REQUEST.id%3D1%2527+GET.id%3D1%2527","%2Fczar%2Fplayground%2Fdvwa%2Fvulnerabilities%2Fsqli%2F%3Fid%3D1%2527%26Submit%3DSubmit","::1" -"%3A%3A1",2015-03-11T06:40:44+01:00,0,"","REQUEST.id%3D1%2527+GET.id%3D1%2527","%2Fczar%2Fplayground%2Fdvwa%2Fvulnerabilities%2Fsqli%2F%3Fid%3D1%2527%26Submit%3DSubmit","::1" -"%3A%3A1",2015-03-11T06:40:44+01:00,0,"","REQUEST.id%3D1%2527+GET.id%3D1%2527","%2Fczar%2Fplayground%2Fdvwa%2Fvulnerabilities%2Fsqli%2F%3Fid%3D1%2527%26Submit%3DSubmit","::1" -"%3A%3A1",2015-03-11T06:40:45+01:00,0,"","REQUEST.id%3D1%2527+GET.id%3D1%2527","%2Fczar%2Fplayground%2Fdvwa%2Fvulnerabilities%2Fsqli%2F%3Fid%3D1%2527%26Submit%3DSubmit","::1" -"%3A%3A1",2015-03-11T06:40:45+01:00,0,"","REQUEST.id%3D1%2527+GET.id%3D1%2527","%2Fczar%2Fplayground%2Fdvwa%2Fvulnerabilities%2Fsqli%2F%3Fid%3D1%2527%26Submit%3DSubmit","::1" -"%3A%3A1",2015-03-11T06:40:45+01:00,0,"","REQUEST.id%3D1%2527+GET.id%3D1%2527","%2Fczar%2Fplayground%2Fdvwa%2Fvulnerabilities%2Fsqli%2F%3Fid%3D1%2527%26Submit%3DSubmit","::1" -"%3A%3A1",2015-03-11T06:55:04+01:00,0,"","REQUEST.id%3D1%2527+GET.id%3D1%2527","%2Fczar%2Fplayground%2Fdvwa%2Fvulnerabilities%2Fsqli%2F%3Fid%3D1%2527%26Submit%3DSubmit","::1" -"%3A%3A1",2015-03-11T06:55:48+01:00,0,"","REQUEST.id%3D1%2527+GET.id%3D1%2527","%2Fczar%2Fplayground%2Fdvwa%2Fvulnerabilities%2Fsqli%2F%3Fid%3D1%2527%26Submit%3DSubmit","::1" -"%3A%3A1",2015-03-11T06:56:04+01:00,0,"","REQUEST.id%3D1%2527+GET.id%3D1%2527","%2Fczar%2Fplayground%2Fdvwa%2Fvulnerabilities%2Fsqli%2F%3Fid%3D1%2527%26Submit%3DSubmit","::1" -"%3A%3A1",2015-03-11T06:56:09+01:00,0,"","REQUEST.id%3D1%2527+GET.id%3D1%2527","%2Fczar%2Fplayground%2Fdvwa%2Fvulnerabilities%2Fsqli%2F%3Fid%3D1%2527%26Submit%3DSubmit","::1" -"%3A%3A1",2015-03-11T06:56:10+01:00,0,"","REQUEST.id%3D1%2527+GET.id%3D1%2527","%2Fczar%2Fplayground%2Fdvwa%2Fvulnerabilities%2Fsqli%2F%3Fid%3D1%2527%26Submit%3DSubmit","::1" -"%3A%3A1",2015-03-11T06:56:11+01:00,0,"","REQUEST.id%3D1%2527+GET.id%3D1%2527","%2Fczar%2Fplayground%2Fdvwa%2Fvulnerabilities%2Fsqli%2F%3Fid%3D1%2527%26Submit%3DSubmit","::1" -"%3A%3A1",2015-03-11T06:57:21+01:00,0,"","REQUEST.id%3D1%2527+GET.id%3D1%2527","%2Fczar%2Fplayground%2Fdvwa%2Fvulnerabilities%2Fsqli%2F%3Fid%3D1%2527%26Submit%3DSubmit","::1" -"%3A%3A1",2015-03-11T06:57:36+01:00,0,"","REQUEST.id%3D1%2527+GET.id%3D1%2527","%2Fczar%2Fplayground%2Fdvwa%2Fvulnerabilities%2Fsqli%2F%3Fid%3D1%2527%26Submit%3DSubmit","::1" -"%3A%3A1",2015-03-11T06:58:00+01:00,0,"","REQUEST.id%3D1%2527+GET.id%3D1%2527","%2Fczar%2Fplayground%2Fdvwa%2Fvulnerabilities%2Fsqli%2F%3Fid%3D1%2527%26Submit%3DSubmit","::1" -"%3A%3A1",2015-03-11T07:53:23+01:00,0,"","REQUEST.id%3D1%2527+GET.id%3D1%2527","%2Fczar%2Fplayground%2Fdvwa%2Fvulnerabilities%2Fsqli%2F%3Fid%3D1%2527%26Submit%3DSubmit","::1" -"%3A%3A1",2015-03-11T07:54:37+01:00,0,"","REQUEST.id%3D1%2527+GET.id%3D1%2527","%2Fczar%2Fplayground%2Fdvwa%2Fvulnerabilities%2Fsqli%2F%3Fid%3D1%2527%26Submit%3DSubmit","::1" -"%3A%3A1",2015-03-11T07:55:03+01:00,0,"","REQUEST.id%3D1%2527+GET.id%3D1%2527","%2Fczar%2Fplayground%2Fdvwa%2Fvulnerabilities%2Fsqli%2F%3Fid%3D1%2527%26Submit%3DSubmit","::1" -"%3A%3A1",2015-03-11T07:55:05+01:00,0,"","REQUEST.id%3D1%2527+GET.id%3D1%2527","%2Fczar%2Fplayground%2Fdvwa%2Fvulnerabilities%2Fsqli%2F%3Fid%3D1%2527%26Submit%3DSubmit","::1" -"%3A%3A1",2015-03-11T07:55:06+01:00,0,"","REQUEST.id%3D1%2527+GET.id%3D1%2527","%2Fczar%2Fplayground%2Fdvwa%2Fvulnerabilities%2Fsqli%2F%3Fid%3D1%2527%26Submit%3DSubmit","::1" -"%3A%3A1",2015-03-11T07:55:06+01:00,0,"","REQUEST.id%3D1%2527+GET.id%3D1%2527","%2Fczar%2Fplayground%2Fdvwa%2Fvulnerabilities%2Fsqli%2F%3Fid%3D1%2527%26Submit%3DSubmit","::1" -"%3A%3A1",2015-03-11T08:08:07+01:00,0,"","REQUEST.id%3D1%2527+GET.id%3D1%2527","%2Fczar%2Fplayground%2Fdvwa%2Fvulnerabilities%2Fsqli%2F%3Fid%3D1%2527%26Submit%3DSubmit","::1" -"%3A%3A1",2015-03-11T08:13:40+01:00,0,"","REQUEST.id%3D1%2527+GET.id%3D1%2527","%2Fczar%2Fplayground%2Fdvwa%2Fvulnerabilities%2Fsqli%2F%3Fid%3D1%2527%26Submit%3DSubmit","::1" -"%3A%3A1",2015-03-11T08:18:26+01:00,0,"","REQUEST.id%3D1%2527+GET.id%3D1%2527","%2Fczar%2Fplayground%2Fdvwa%2Fvulnerabilities%2Fsqli%2F%3Fid%3D1%2527%26Submit%3DSubmit","::1" -"%3A%3A1",2015-03-11T08:18:37+01:00,0,"","REQUEST.id%3D1%2527+GET.id%3D1%2527","%2Fczar%2Fplayground%2Fdvwa%2Fvulnerabilities%2Fsqli%2F%3Fid%3D1%2527%26Submit%3DSubmit","::1" -"%3A%3A1",2015-03-11T08:20:51+01:00,0,"","REQUEST.id%3D1%2527+GET.id%3D1%2527","%2Fczar%2Fplayground%2Fdvwa%2Fvulnerabilities%2Fsqli%2F%3Fid%3D1%2527%26Submit%3DSubmit","::1" -"%3A%3A1",2015-03-11T08:21:53+01:00,0,"","REQUEST.id%3D1%2527+GET.id%3D1%2527","%2Fczar%2Fplayground%2Fdvwa%2Fvulnerabilities%2Fsqli%2F%3Fid%3D1%2527%26Submit%3DSubmit","::1" -"%3A%3A1",2015-03-11T08:21:58+01:00,0,"","REQUEST.id%3D1%2527+GET.id%3D1%2527","%2Fczar%2Fplayground%2Fdvwa%2Fvulnerabilities%2Fsqli%2F%3Fid%3D1%2527%26Submit%3DSubmit","::1" -"%3A%3A1",2015-03-11T08:21:58+01:00,0,"","REQUEST.id%3D1%2527+GET.id%3D1%2527","%2Fczar%2Fplayground%2Fdvwa%2Fvulnerabilities%2Fsqli%2F%3Fid%3D1%2527%26Submit%3DSubmit","::1" -"%3A%3A1",2015-03-11T08:22:05+01:00,0,"","REQUEST.id%3D1%2527+GET.id%3D1%2527","%2Fczar%2Fplayground%2Fdvwa%2Fvulnerabilities%2Fsqli%2F%3Fid%3D1%2527%26Submit%3DSubmit","::1" -"%3A%3A1",2015-03-11T08:23:15+01:00,0,"","REQUEST.id%3D1%2527+GET.id%3D1%2527","%2Fczar%2Fplayground%2Fdvwa%2Fvulnerabilities%2Fsqli%2F%3Fid%3D1%2527%26Submit%3DSubmit","::1" -"%3A%3A1",2015-03-11T08:24:13+01:00,0,"","REQUEST.id%3D1%2527+GET.id%3D1%2527","%2Fczar%2Fplayground%2Fdvwa%2Fvulnerabilities%2Fsqli%2F%3Fid%3D1%2527%26Submit%3DSubmit","::1" -"%3A%3A1",2015-03-11T08:24:13+01:00,0,"","REQUEST.id%3D1%2527+GET.id%3D1%2527","%2Fczar%2Fplayground%2Fdvwa%2Fvulnerabilities%2Fsqli%2F%3Fid%3D1%2527%26Submit%3DSubmit","::1" -"%3A%3A1",2015-03-11T08:24:21+01:00,0,"","REQUEST.id%3D1%2527+GET.id%3D1%2527","%2Fczar%2Fplayground%2Fdvwa%2Fvulnerabilities%2Fsqli%2F%3Fid%3D1%2527%26Submit%3DSubmit","::1" -"%3A%3A1",2015-03-11T08:24:22+01:00,0,"","REQUEST.id%3D1%2527+GET.id%3D1%2527","%2Fczar%2Fplayground%2Fdvwa%2Fvulnerabilities%2Fsqli%2F%3Fid%3D1%2527%26Submit%3DSubmit","::1" -"%3A%3A1",2015-03-11T08:24:23+01:00,0,"","REQUEST.id%3D1%2527+GET.id%3D1%2527","%2Fczar%2Fplayground%2Fdvwa%2Fvulnerabilities%2Fsqli%2F%3Fid%3D1%2527%26Submit%3DSubmit","::1" -"%3A%3A1",2015-03-11T08:25:09+01:00,0,"","REQUEST.id%3D1%2527+GET.id%3D1%2527","%2Fczar%2Fplayground%2Fdvwa%2Fvulnerabilities%2Fsqli%2F%3Fid%3D1%2527%26Submit%3DSubmit","::1" -"%3A%3A1",2015-03-11T08:25:14+01:00,0,"","REQUEST.id%3D1%2527+GET.id%3D1%2527","%2Fczar%2Fplayground%2Fdvwa%2Fvulnerabilities%2Fsqli%2F%3Fid%3D1%2527%26Submit%3DSubmit","::1" -"%3A%3A1",2015-03-11T08:25:15+01:00,0,"","REQUEST.id%3D1%2527+GET.id%3D1%2527","%2Fczar%2Fplayground%2Fdvwa%2Fvulnerabilities%2Fsqli%2F%3Fid%3D1%2527%26Submit%3DSubmit","::1" -"%3A%3A1",2015-03-11T08:25:15+01:00,0,"","REQUEST.id%3D1%2527+GET.id%3D1%2527","%2Fczar%2Fplayground%2Fdvwa%2Fvulnerabilities%2Fsqli%2F%3Fid%3D1%2527%26Submit%3DSubmit","::1" -"%3A%3A1",2015-03-11T08:25:16+01:00,0,"","REQUEST.id%3D1%2527+GET.id%3D1%2527","%2Fczar%2Fplayground%2Fdvwa%2Fvulnerabilities%2Fsqli%2F%3Fid%3D1%2527%26Submit%3DSubmit","::1" -"%3A%3A1",2015-03-11T08:26:41+01:00,0,"","REQUEST.id%3D1%2527+GET.id%3D1%2527","%2Fczar%2Fplayground%2Fdvwa%2Fvulnerabilities%2Fsqli%2F%3Fid%3D1%2527%26Submit%3DSubmit","::1" -"%3A%3A1",2015-03-11T08:29:11+01:00,0,"","REQUEST.id%3D1%2527+GET.id%3D1%2527","%2Fczar%2Fplayground%2Fdvwa%2Fvulnerabilities%2Fsqli%2F%3Fid%3D1%2527%26Submit%3DSubmit","::1" -"%3A%3A1",2015-03-11T08:36:30+01:00,0,"","REQUEST.id%3D1%2527+GET.id%3D1%2527","%2Fczar%2Fplayground%2Fdvwa%2Fvulnerabilities%2Fsqli%2F%3Fid%3D1%2527%26Submit%3DSubmit","::1" -"%3A%3A1",2015-03-11T08:36:35+01:00,0,"","REQUEST.id%3D1%2527+GET.id%3D1%2527","%2Fczar%2Fplayground%2Fdvwa%2Fvulnerabilities%2Fsqli%2F%3Fid%3D1%2527%26Submit%3DSubmit","::1" -"%3A%3A1",2015-03-11T08:36:36+01:00,0,"","REQUEST.id%3D1%2527+GET.id%3D1%2527","%2Fczar%2Fplayground%2Fdvwa%2Fvulnerabilities%2Fsqli%2F%3Fid%3D1%2527%26Submit%3DSubmit","::1" -"%3A%3A1",2015-03-11T08:36:36+01:00,0,"","REQUEST.id%3D1%2527+GET.id%3D1%2527","%2Fczar%2Fplayground%2Fdvwa%2Fvulnerabilities%2Fsqli%2F%3Fid%3D1%2527%26Submit%3DSubmit","::1" -"%3A%3A1",2015-03-11T08:36:37+01:00,0,"","REQUEST.id%3D1%2527+GET.id%3D1%2527","%2Fczar%2Fplayground%2Fdvwa%2Fvulnerabilities%2Fsqli%2F%3Fid%3D1%2527%26Submit%3DSubmit","::1" -"%3A%3A1",2015-03-11T08:45:41+01:00,0,"","REQUEST.id%3D1%2527+GET.id%3D1%2527","%2Fczar%2Fplayground%2Fdvwa%2Fvulnerabilities%2Fsqli%2F%3Fid%3D1%2527%26Submit%3DSubmit","::1" -"%3A%3A1",2015-03-11T08:45:55+01:00,0,"","REQUEST.id%3D1%2527+GET.id%3D1%2527","%2Fczar%2Fplayground%2Fdvwa%2Fvulnerabilities%2Fsqli%2F%3Fid%3D1%2527%26Submit%3DSubmit","::1" -"%3A%3A1",2015-03-11T08:46:05+01:00,0,"","REQUEST.id%3D1%2527+GET.id%3D1%2527","%2Fczar%2Fplayground%2Fdvwa%2Fvulnerabilities%2Fsqli%2F%3Fid%3D1%2527%26Submit%3DSubmit","::1" -"%3A%3A1",2015-03-11T08:46:06+01:00,0,"","REQUEST.id%3D1%2527+GET.id%3D1%2527","%2Fczar%2Fplayground%2Fdvwa%2Fvulnerabilities%2Fsqli%2F%3Fid%3D1%2527%26Submit%3DSubmit","::1" -"%3A%3A1",2015-03-11T08:46:07+01:00,0,"","REQUEST.id%3D1%2527+GET.id%3D1%2527","%2Fczar%2Fplayground%2Fdvwa%2Fvulnerabilities%2Fsqli%2F%3Fid%3D1%2527%26Submit%3DSubmit","::1" -"%3A%3A1",2015-03-11T10:38:53+01:00,0,"","REQUEST.id%3D1%2527+GET.id%3D1%2527","%2Fczar%2Fplayground%2Fdvwa%2Fvulnerabilities%2Fsqli%2F%3Fid%3D1%2527%26Submit%3DSubmit","::1" -"%3A%3A1",2015-03-11T10:39:05+01:00,0,"","REQUEST.id%3D1%2527+GET.id%3D1%2527","%2Fczar%2Fplayground%2Fdvwa%2Fvulnerabilities%2Fsqli%2F%3Fid%3D1%2527%26Submit%3DSubmit","::1" -"%3A%3A1",2015-03-11T10:42:42+01:00,0,"","REQUEST.id%3D1%2527+GET.id%3D1%2527","%2Fczar%2Fplayground%2Fdvwa%2Fvulnerabilities%2Fsqli%2F%3Fid%3D1%2527%26Submit%3DSubmit","::1" -"%3A%3A1",2015-03-11T10:42:48+01:00,0,"","REQUEST.id%3D1%2527+GET.id%3D1%2527","%2Fczar%2Fplayground%2Fdvwa%2Fvulnerabilities%2Fsqli%2F%3Fid%3D1%2527%26Submit%3DSubmit","::1" -"%3A%3A1",2015-03-11T10:42:52+01:00,0,"","REQUEST.id%3D1%2527+GET.id%3D1%2527","%2Fczar%2Fplayground%2Fdvwa%2Fvulnerabilities%2Fsqli%2F%3Fid%3D1%2527%26Submit%3DSubmit","::1" -"%3A%3A1",2015-03-11T10:42:56+01:00,0,"","REQUEST.id%3D1%2527+GET.id%3D1%2527","%2Fczar%2Fplayground%2Fdvwa%2Fvulnerabilities%2Fsqli%2F%3Fid%3D1%2527%26Submit%3DSubmit","::1" -"%3A%3A1",2015-03-11T10:43:00+01:00,0,"","REQUEST.id%3D1%2527+GET.id%3D1%2527","%2Fczar%2Fplayground%2Fdvwa%2Fvulnerabilities%2Fsqli%2F%3Fid%3D1%2527%26Submit%3DSubmit","::1" -"%3A%3A1",2015-03-11T10:43:11+01:00,0,"","REQUEST.id%3D1%2527+GET.id%3D1%2527","%2Fczar%2Fplayground%2Fdvwa%2Fvulnerabilities%2Fsqli%2F%3Fid%3D1%2527%26Submit%3DSubmit","::1" -"%3A%3A1",2015-03-11T10:43:11+01:00,0,"","REQUEST.id%3D1%2527+GET.id%3D1%2527","%2Fczar%2Fplayground%2Fdvwa%2Fvulnerabilities%2Fsqli%2F%3Fid%3D1%2527%26Submit%3DSubmit","::1" -"%3A%3A1",2015-03-11T10:43:11+01:00,0,"","REQUEST.id%3D1%2527+GET.id%3D1%2527","%2Fczar%2Fplayground%2Fdvwa%2Fvulnerabilities%2Fsqli%2F%3Fid%3D1%2527%26Submit%3DSubmit","::1" -"%3A%3A1",2015-03-11T10:43:11+01:00,0,"","REQUEST.id%3D1%2527+GET.id%3D1%2527","%2Fczar%2Fplayground%2Fdvwa%2Fvulnerabilities%2Fsqli%2F%3Fid%3D1%2527%26Submit%3DSubmit","::1" -"%3A%3A1",2015-03-11T10:43:24+01:00,0,"","REQUEST.id%3D1%2527+GET.id%3D1%2527","%2Fczar%2Fplayground%2Fdvwa%2Fvulnerabilities%2Fsqli%2F%3Fid%3D1%2527%26Submit%3DSubmit","::1" -"%3A%3A1",2015-03-11T10:43:24+01:00,0,"","REQUEST.id%3D1%2527+GET.id%3D1%2527","%2Fczar%2Fplayground%2Fdvwa%2Fvulnerabilities%2Fsqli%2F%3Fid%3D1%2527%26Submit%3DSubmit","::1" -"%3A%3A1",2015-03-11T10:43:25+01:00,0,"","REQUEST.id%3D1%2527+GET.id%3D1%2527","%2Fczar%2Fplayground%2Fdvwa%2Fvulnerabilities%2Fsqli%2F%3Fid%3D1%2527%26Submit%3DSubmit","::1" -"%3A%3A1",2015-03-11T10:43:25+01:00,0,"","REQUEST.id%3D1%2527+GET.id%3D1%2527","%2Fczar%2Fplayground%2Fdvwa%2Fvulnerabilities%2Fsqli%2F%3Fid%3D1%2527%26Submit%3DSubmit","::1" -"%3A%3A1",2015-03-11T10:43:25+01:00,0,"","REQUEST.id%3D1%2527+GET.id%3D1%2527","%2Fczar%2Fplayground%2Fdvwa%2Fvulnerabilities%2Fsqli%2F%3Fid%3D1%2527%26Submit%3DSubmit","::1" -"%3A%3A1",2015-03-11T10:46:23+01:00,0,"","REQUEST.id%3D1%2527+GET.id%3D1%2527","%2Fczar%2Fplayground%2Fdvwa%2Fvulnerabilities%2Fsqli%2F%3Fid%3D1%2527%26Submit%3DSubmit","::1" -"%3A%3A1",2015-03-11T10:46:29+01:00,0,"","REQUEST.id%3D1%2527+GET.id%3D1%2527","%2Fczar%2Fplayground%2Fdvwa%2Fvulnerabilities%2Fsqli%2F%3Fid%3D1%2527%26Submit%3DSubmit","::1" -"%3A%3A1",2015-03-11T10:46:29+01:00,0,"","REQUEST.id%3D1%2527+GET.id%3D1%2527","%2Fczar%2Fplayground%2Fdvwa%2Fvulnerabilities%2Fsqli%2F%3Fid%3D1%2527%26Submit%3DSubmit","::1" -"%3A%3A1",2015-03-11T10:46:30+01:00,0,"","REQUEST.id%3D1%2527+GET.id%3D1%2527","%2Fczar%2Fplayground%2Fdvwa%2Fvulnerabilities%2Fsqli%2F%3Fid%3D1%2527%26Submit%3DSubmit","::1" -"%3A%3A1",2015-03-11T10:46:30+01:00,0,"","REQUEST.id%3D1%2527+GET.id%3D1%2527","%2Fczar%2Fplayground%2Fdvwa%2Fvulnerabilities%2Fsqli%2F%3Fid%3D1%2527%26Submit%3DSubmit","::1" -"%3A%3A1",2015-03-11T10:46:46+01:00,0,"","REQUEST.id%3D1%2527+GET.id%3D1%2527","%2Fczar%2Fplayground%2Fdvwa%2Fvulnerabilities%2Fsqli%2F%3Fid%3D1%2527%26Submit%3DSubmit","::1" -"%3A%3A1",2015-03-11T11:58:22+01:00,0,"","REQUEST.id%3D1%2527+GET.id%3D1%2527","%2Fczar%2Fplayground%2Fdvwa%2Fvulnerabilities%2Fsqli%2F%3Fid%3D1%2527%26Submit%3DSubmit","::1" -"%3A%3A1",2015-03-11T12:10:52+01:00,0,"","REQUEST.id%3D1%2527+GET.id%3D1%2527","%2Fczar%2Fplayground%2Fdvwa%2Fvulnerabilities%2Fsqli%2F%3Fid%3D1%2527%26Submit%3DSubmit","::1" -"%3A%3A1",2015-03-11T12:14:14+01:00,0,"","REQUEST.id%3D1%2527+GET.id%3D1%2527","%2Fczar%2Fplayground%2Fdvwa%2Fvulnerabilities%2Fsqli%2F%3Fid%3D1%2527%26Submit%3DSubmit","::1" -"%3A%3A1",2015-03-11T12:17:11+01:00,0,"","REQUEST.id%3D1%2527+GET.id%3D1%2527","%2Fczar%2Fplayground%2Fdvwa%2Fvulnerabilities%2Fsqli%2F%3Fid%3D1%2527%26Submit%3DSubmit","::1" -"%3A%3A1",2015-03-11T12:17:12+01:00,0,"","REQUEST.id%3D1%2527+GET.id%3D1%2527","%2Fczar%2Fplayground%2Fdvwa%2Fvulnerabilities%2Fsqli%2F%3Fid%3D1%2527%26Submit%3DSubmit","::1" -"%3A%3A1",2015-03-11T12:17:20+01:00,0,"","REQUEST.id%3D1%2527+GET.id%3D1%2527","%2Fczar%2Fplayground%2Fdvwa%2Fvulnerabilities%2Fsqli%2F%3Fid%3D1%2527%26Submit%3DSubmit","::1" -"%3A%3A1",2015-03-11T12:17:21+01:00,0,"","REQUEST.id%3D1%2527+GET.id%3D1%2527","%2Fczar%2Fplayground%2Fdvwa%2Fvulnerabilities%2Fsqli%2F%3Fid%3D1%2527%26Submit%3DSubmit","::1" -"%3A%3A1",2015-03-11T12:17:21+01:00,0,"","REQUEST.id%3D1%2527+GET.id%3D1%2527","%2Fczar%2Fplayground%2Fdvwa%2Fvulnerabilities%2Fsqli%2F%3Fid%3D1%2527%26Submit%3DSubmit","::1" -"%3A%3A1",2015-03-11T12:17:21+01:00,0,"","REQUEST.id%3D1%2527+GET.id%3D1%2527","%2Fczar%2Fplayground%2Fdvwa%2Fvulnerabilities%2Fsqli%2F%3Fid%3D1%2527%26Submit%3DSubmit","::1" -"%3A%3A1",2015-03-11T12:17:22+01:00,0,"","REQUEST.id%3D1%2527+GET.id%3D1%2527","%2Fczar%2Fplayground%2Fdvwa%2Fvulnerabilities%2Fsqli%2F%3Fid%3D1%2527%26Submit%3DSubmit","::1" -"%3A%3A1",2015-03-11T12:17:36+01:00,0,"","REQUEST.id%3D1%2527+GET.id%3D1%2527","%2Fczar%2Fplayground%2Fdvwa%2Fvulnerabilities%2Fsqli%2F%3Fid%3D1%2527%26Submit%3DSubmit","::1" -"%3A%3A1",2015-03-11T12:17:37+01:00,0,"","REQUEST.id%3D1%2527+GET.id%3D1%2527","%2Fczar%2Fplayground%2Fdvwa%2Fvulnerabilities%2Fsqli%2F%3Fid%3D1%2527%26Submit%3DSubmit","::1" -"%3A%3A1",2015-03-11T12:17:37+01:00,0,"","REQUEST.id%3D1%2527+GET.id%3D1%2527","%2Fczar%2Fplayground%2Fdvwa%2Fvulnerabilities%2Fsqli%2F%3Fid%3D1%2527%26Submit%3DSubmit","::1" -"%3A%3A1",2015-03-11T12:17:37+01:00,0,"","REQUEST.id%3D1%2527+GET.id%3D1%2527","%2Fczar%2Fplayground%2Fdvwa%2Fvulnerabilities%2Fsqli%2F%3Fid%3D1%2527%26Submit%3DSubmit","::1" -"%3A%3A1",2015-03-11T12:17:37+01:00,0,"","REQUEST.id%3D1%2527+GET.id%3D1%2527","%2Fczar%2Fplayground%2Fdvwa%2Fvulnerabilities%2Fsqli%2F%3Fid%3D1%2527%26Submit%3DSubmit","::1" -"%3A%3A1",2015-03-11T12:17:47+01:00,0,"","REQUEST.id%3D1%2527+GET.id%3D1%2527","%2Fczar%2Fplayground%2Fdvwa%2Fvulnerabilities%2Fsqli%2F%3Fid%3D1%2527%26Submit%3DSubmit","::1" -"%3A%3A1",2015-03-11T12:17:56+01:00,0,"","REQUEST.id%3D1%2527+GET.id%3D1%2527","%2Fczar%2Fplayground%2Fdvwa%2Fvulnerabilities%2Fsqli%2F%3Fid%3D1%2527%26Submit%3DSubmit","::1" -"%3A%3A1",2015-03-11T12:17:56+01:00,0,"","REQUEST.id%3D1%2527+GET.id%3D1%2527","%2Fczar%2Fplayground%2Fdvwa%2Fvulnerabilities%2Fsqli%2F%3Fid%3D1%2527%26Submit%3DSubmit","::1" -"%3A%3A1",2015-03-11T12:17:56+01:00,0,"","REQUEST.id%3D1%2527+GET.id%3D1%2527","%2Fczar%2Fplayground%2Fdvwa%2Fvulnerabilities%2Fsqli%2F%3Fid%3D1%2527%26Submit%3DSubmit","::1" -"%3A%3A1",2015-03-11T12:17:57+01:00,0,"","REQUEST.id%3D1%2527+GET.id%3D1%2527","%2Fczar%2Fplayground%2Fdvwa%2Fvulnerabilities%2Fsqli%2F%3Fid%3D1%2527%26Submit%3DSubmit","::1" -"%3A%3A1",2015-03-11T12:17:57+01:00,0,"","REQUEST.id%3D1%2527+GET.id%3D1%2527","%2Fczar%2Fplayground%2Fdvwa%2Fvulnerabilities%2Fsqli%2F%3Fid%3D1%2527%26Submit%3DSubmit","::1" -"%3A%3A1",2015-03-11T12:18:15+01:00,0,"","REQUEST.id%3D1%2527+GET.id%3D1%2527","%2Fczar%2Fplayground%2Fdvwa%2Fvulnerabilities%2Fsqli%2F%3Fid%3D1%2527%26Submit%3DSubmit","::1" -"%3A%3A1",2015-03-11T12:18:16+01:00,0,"","REQUEST.id%3D1%2527+GET.id%3D1%2527","%2Fczar%2Fplayground%2Fdvwa%2Fvulnerabilities%2Fsqli%2F%3Fid%3D1%2527%26Submit%3DSubmit","::1" -"%3A%3A1",2015-03-11T12:18:17+01:00,0,"","REQUEST.id%3D1%2527+GET.id%3D1%2527","%2Fczar%2Fplayground%2Fdvwa%2Fvulnerabilities%2Fsqli%2F%3Fid%3D1%2527%26Submit%3DSubmit","::1" -"%3A%3A1",2015-03-11T12:18:18+01:00,0,"","REQUEST.id%3D1%2527+GET.id%3D1%2527","%2Fczar%2Fplayground%2Fdvwa%2Fvulnerabilities%2Fsqli%2F%3Fid%3D1%2527%26Submit%3DSubmit","::1" -"%3A%3A1",2015-03-11T12:18:18+01:00,0,"","REQUEST.id%3D1%2527+GET.id%3D1%2527","%2Fczar%2Fplayground%2Fdvwa%2Fvulnerabilities%2Fsqli%2F%3Fid%3D1%2527%26Submit%3DSubmit","::1" -"%3A%3A1",2015-03-11T12:18:24+01:00,0,"","REQUEST.id%3D1%2527+GET.id%3D1%2527","%2Fczar%2Fplayground%2Fdvwa%2Fvulnerabilities%2Fsqli%2F%3Fid%3D1%2527%26Submit%3DSubmit","::1" -"%3A%3A1",2015-03-11T12:18:24+01:00,0,"","REQUEST.id%3D1%2527+GET.id%3D1%2527","%2Fczar%2Fplayground%2Fdvwa%2Fvulnerabilities%2Fsqli%2F%3Fid%3D1%2527%26Submit%3DSubmit","::1" -"%3A%3A1",2015-03-11T12:18:25+01:00,0,"","REQUEST.id%3D1%2527+GET.id%3D1%2527","%2Fczar%2Fplayground%2Fdvwa%2Fvulnerabilities%2Fsqli%2F%3Fid%3D1%2527%26Submit%3DSubmit","::1" -"%3A%3A1",2015-03-11T12:18:25+01:00,0,"","REQUEST.id%3D1%2527+GET.id%3D1%2527","%2Fczar%2Fplayground%2Fdvwa%2Fvulnerabilities%2Fsqli%2F%3Fid%3D1%2527%26Submit%3DSubmit","::1" -"%3A%3A1",2015-03-11T12:18:25+01:00,0,"","REQUEST.id%3D1%2527+GET.id%3D1%2527","%2Fczar%2Fplayground%2Fdvwa%2Fvulnerabilities%2Fsqli%2F%3Fid%3D1%2527%26Submit%3DSubmit","::1" -"%3A%3A1",2015-03-11T12:19:38+01:00,0,"","REQUEST.id%3D1%2527+GET.id%3D1%2527","%2Fczar%2Fplayground%2Fdvwa%2Fvulnerabilities%2Fsqli%2F%3Fid%3D1%2527%26Submit%3DSubmit","::1" -"%3A%3A1",2015-03-11T12:19:40+01:00,0,"","REQUEST.id%3D1%2527+GET.id%3D1%2527","%2Fczar%2Fplayground%2Fdvwa%2Fvulnerabilities%2Fsqli%2F%3Fid%3D1%2527%26Submit%3DSubmit","::1" -"%3A%3A1",2015-03-11T12:19:42+01:00,0,"","REQUEST.id%3D1%2527+GET.id%3D1%2527","%2Fczar%2Fplayground%2Fdvwa%2Fvulnerabilities%2Fsqli%2F%3Fid%3D1%2527%26Submit%3DSubmit","::1" -"%3A%3A1",2015-03-11T12:19:43+01:00,0,"","REQUEST.id%3D1%2527+GET.id%3D1%2527","%2Fczar%2Fplayground%2Fdvwa%2Fvulnerabilities%2Fsqli%2F%3Fid%3D1%2527%26Submit%3DSubmit","::1" -"%3A%3A1",2015-03-11T12:19:43+01:00,0,"","REQUEST.id%3D1%2527+GET.id%3D1%2527","%2Fczar%2Fplayground%2Fdvwa%2Fvulnerabilities%2Fsqli%2F%3Fid%3D1%2527%26Submit%3DSubmit","::1" -"%3A%3A1",2015-03-11T12:19:49+01:00,0,"","REQUEST.id%3D1%2527+GET.id%3D1%2527","%2Fczar%2Fplayground%2Fdvwa%2Fvulnerabilities%2Fsqli%2F%3Fid%3D1%2527%26Submit%3DSubmit","::1" -"%3A%3A1",2015-03-11T12:19:50+01:00,0,"","REQUEST.id%3D1%2527+GET.id%3D1%2527","%2Fczar%2Fplayground%2Fdvwa%2Fvulnerabilities%2Fsqli%2F%3Fid%3D1%2527%26Submit%3DSubmit","::1" -"%3A%3A1",2015-03-11T12:19:51+01:00,0,"","REQUEST.id%3D1%2527+GET.id%3D1%2527","%2Fczar%2Fplayground%2Fdvwa%2Fvulnerabilities%2Fsqli%2F%3Fid%3D1%2527%26Submit%3DSubmit","::1" -"%3A%3A1",2015-03-11T12:19:51+01:00,0,"","REQUEST.id%3D1%2527+GET.id%3D1%2527","%2Fczar%2Fplayground%2Fdvwa%2Fvulnerabilities%2Fsqli%2F%3Fid%3D1%2527%26Submit%3DSubmit","::1" -"%3A%3A1",2015-03-11T12:20:30+01:00,0,"","REQUEST.id%3D1%2527+GET.id%3D1%2527","%2Fczar%2Fplayground%2Fdvwa%2Fvulnerabilities%2Fsqli%2F%3Fid%3D1%2527%26Submit%3DSubmit","::1" -"%3A%3A1",2015-03-11T12:20:30+01:00,0,"","REQUEST.id%3D1%2527+GET.id%3D1%2527","%2Fczar%2Fplayground%2Fdvwa%2Fvulnerabilities%2Fsqli%2F%3Fid%3D1%2527%26Submit%3DSubmit","::1" -"%3A%3A1",2015-03-11T12:20:31+01:00,0,"","REQUEST.id%3D1%2527+GET.id%3D1%2527","%2Fczar%2Fplayground%2Fdvwa%2Fvulnerabilities%2Fsqli%2F%3Fid%3D1%2527%26Submit%3DSubmit","::1" -"%3A%3A1",2015-03-11T12:20:31+01:00,0,"","REQUEST.id%3D1%2527+GET.id%3D1%2527","%2Fczar%2Fplayground%2Fdvwa%2Fvulnerabilities%2Fsqli%2F%3Fid%3D1%2527%26Submit%3DSubmit","::1" -"%3A%3A1",2015-03-11T12:20:32+01:00,0,"","REQUEST.id%3D1%2527+GET.id%3D1%2527","%2Fczar%2Fplayground%2Fdvwa%2Fvulnerabilities%2Fsqli%2F%3Fid%3D1%2527%26Submit%3DSubmit","::1" -"%3A%3A1",2015-03-11T12:20:40+01:00,0,"","REQUEST.id%3D1%2527+GET.id%3D1%2527","%2Fczar%2Fplayground%2Fdvwa%2Fvulnerabilities%2Fsqli%2F%3Fid%3D1%2527%26Submit%3DSubmit","::1" -"%3A%3A1",2015-03-11T12:20:41+01:00,0,"","REQUEST.id%3D1%2527+GET.id%3D1%2527","%2Fczar%2Fplayground%2Fdvwa%2Fvulnerabilities%2Fsqli%2F%3Fid%3D1%2527%26Submit%3DSubmit","::1" -"%3A%3A1",2015-03-11T12:20:53+01:00,0,"","REQUEST.id%3D1%2527+GET.id%3D1%2527","%2Fczar%2Fplayground%2Fdvwa%2Fvulnerabilities%2Fsqli%2F%3Fid%3D1%2527%26Submit%3DSubmit","::1" -"%3A%3A1",2015-03-11T12:20:54+01:00,0,"","REQUEST.id%3D1%2527+GET.id%3D1%2527","%2Fczar%2Fplayground%2Fdvwa%2Fvulnerabilities%2Fsqli%2F%3Fid%3D1%2527%26Submit%3DSubmit","::1" -"%3A%3A1",2015-03-11T12:23:28+01:00,0,"","REQUEST.id%3D1%2527+GET.id%3D1%2527","%2Fczar%2Fplayground%2Fdvwa%2Fvulnerabilities%2Fsqli%2F%3Fid%3D1%2527%26Submit%3DSubmit","::1" -"%3A%3A1",2015-03-11T12:23:36+01:00,0,"","REQUEST.id%3D1%2527+GET.id%3D1%2527","%2Fczar%2Fplayground%2Fdvwa%2Fvulnerabilities%2Fsqli%2F%3Fid%3D1%2527%26Submit%3DSubmit","::1" -"%3A%3A1",2015-03-11T12:23:44+01:00,0,"","REQUEST.id%3D1%2527+GET.id%3D1%2527","%2Fczar%2Fplayground%2Fdvwa%2Fvulnerabilities%2Fsqli%2F%3Fid%3D1%2527%26Submit%3DSubmit","::1" -"%3A%3A1",2015-03-11T12:23:46+01:00,0,"","REQUEST.id%3D1%2527+GET.id%3D1%2527","%2Fczar%2Fplayground%2Fdvwa%2Fvulnerabilities%2Fsqli%2F%3Fid%3D1%2527%26Submit%3DSubmit","::1" -"%3A%3A1",2015-03-11T12:23:47+01:00,0,"","REQUEST.id%3D1%2527+GET.id%3D1%2527","%2Fczar%2Fplayground%2Fdvwa%2Fvulnerabilities%2Fsqli%2F%3Fid%3D1%2527%26Submit%3DSubmit","::1" -"%3A%3A1",2015-03-11T12:23:53+01:00,0,"","REQUEST.id%3D1%2527+GET.id%3D1%2527","%2Fczar%2Fplayground%2Fdvwa%2Fvulnerabilities%2Fsqli%2F%3Fid%3D1%2527%26Submit%3DSubmit","::1" -"%3A%3A1",2015-03-11T12:23:54+01:00,0,"","REQUEST.id%3D1%2527+GET.id%3D1%2527","%2Fczar%2Fplayground%2Fdvwa%2Fvulnerabilities%2Fsqli%2F%3Fid%3D1%2527%26Submit%3DSubmit","::1" -"%3A%3A1",2015-03-11T12:23:54+01:00,0,"","REQUEST.id%3D1%2527+GET.id%3D1%2527","%2Fczar%2Fplayground%2Fdvwa%2Fvulnerabilities%2Fsqli%2F%3Fid%3D1%2527%26Submit%3DSubmit","::1" -"%3A%3A1",2015-03-11T12:23:54+01:00,0,"","REQUEST.id%3D1%2527+GET.id%3D1%2527","%2Fczar%2Fplayground%2Fdvwa%2Fvulnerabilities%2Fsqli%2F%3Fid%3D1%2527%26Submit%3DSubmit","::1" -"%3A%3A1",2015-03-11T12:23:55+01:00,0,"","REQUEST.id%3D1%2527+GET.id%3D1%2527","%2Fczar%2Fplayground%2Fdvwa%2Fvulnerabilities%2Fsqli%2F%3Fid%3D1%2527%26Submit%3DSubmit","::1" -"%3A%3A1",2015-03-11T12:24:04+01:00,0,"","REQUEST.id%3D1%2527+GET.id%3D1%2527","%2Fczar%2Fplayground%2Fdvwa%2Fvulnerabilities%2Fsqli%2F%3Fid%3D1%2527%26Submit%3DSubmit","::1" -"%3A%3A1",2015-03-11T12:24:08+01:00,0,"","REQUEST.id%3D1%2527+GET.id%3D1%2527","%2Fczar%2Fplayground%2Fdvwa%2Fvulnerabilities%2Fsqli%2F%3Fid%3D1%2527%26Submit%3DSubmit","::1" -"%3A%3A1",2015-03-11T12:24:11+01:00,0,"","REQUEST.id%3D1%2527+GET.id%3D1%2527","%2Fczar%2Fplayground%2Fdvwa%2Fvulnerabilities%2Fsqli%2F%3Fid%3D1%2527%26Submit%3DSubmit","::1" -"%3A%3A1",2015-03-11T12:24:12+01:00,0,"","REQUEST.id%3D1%2527+GET.id%3D1%2527","%2Fczar%2Fplayground%2Fdvwa%2Fvulnerabilities%2Fsqli%2F%3Fid%3D1%2527%26Submit%3DSubmit","::1" -"%3A%3A1",2015-03-11T12:24:12+01:00,0,"","REQUEST.id%3D1%2527+GET.id%3D1%2527","%2Fczar%2Fplayground%2Fdvwa%2Fvulnerabilities%2Fsqli%2F%3Fid%3D1%2527%26Submit%3DSubmit","::1" -"%3A%3A1",2015-03-11T12:24:22+01:00,0,"","REQUEST.id%3D1%2527+GET.id%3D1%2527","%2Fczar%2Fplayground%2Fdvwa%2Fvulnerabilities%2Fsqli%2F%3Fid%3D1%2527%26Submit%3DSubmit","::1" -"%3A%3A1",2015-03-11T12:24:23+01:00,0,"","REQUEST.id%3D1%2527+GET.id%3D1%2527","%2Fczar%2Fplayground%2Fdvwa%2Fvulnerabilities%2Fsqli%2F%3Fid%3D1%2527%26Submit%3DSubmit","::1" -"%3A%3A1",2015-03-11T12:24:23+01:00,0,"","REQUEST.id%3D1%2527+GET.id%3D1%2527","%2Fczar%2Fplayground%2Fdvwa%2Fvulnerabilities%2Fsqli%2F%3Fid%3D1%2527%26Submit%3DSubmit","::1" -"%3A%3A1",2015-03-11T12:24:23+01:00,0,"","REQUEST.id%3D1%2527+GET.id%3D1%2527","%2Fczar%2Fplayground%2Fdvwa%2Fvulnerabilities%2Fsqli%2F%3Fid%3D1%2527%26Submit%3DSubmit","::1" -"%3A%3A1",2015-03-11T12:24:24+01:00,0,"","REQUEST.id%3D1%2527+GET.id%3D1%2527","%2Fczar%2Fplayground%2Fdvwa%2Fvulnerabilities%2Fsqli%2F%3Fid%3D1%2527%26Submit%3DSubmit","::1" -"%3A%3A1",2015-03-11T12:24:32+01:00,0,"","REQUEST.id%3D1%2527+GET.id%3D1%2527","%2Fczar%2Fplayground%2Fdvwa%2Fvulnerabilities%2Fsqli%2F%3Fid%3D1%2527%26Submit%3DSubmit","::1" -"%3A%3A1",2015-03-11T12:24:34+01:00,0,"","REQUEST.id%3D1%2527+GET.id%3D1%2527","%2Fczar%2Fplayground%2Fdvwa%2Fvulnerabilities%2Fsqli%2F%3Fid%3D1%2527%26Submit%3DSubmit","::1" -"%3A%3A1",2015-03-11T12:24:35+01:00,0,"","REQUEST.id%3D1%2527+GET.id%3D1%2527","%2Fczar%2Fplayground%2Fdvwa%2Fvulnerabilities%2Fsqli%2F%3Fid%3D1%2527%26Submit%3DSubmit","::1" -"%3A%3A1",2015-03-11T12:24:35+01:00,0,"","REQUEST.id%3D1%2527+GET.id%3D1%2527","%2Fczar%2Fplayground%2Fdvwa%2Fvulnerabilities%2Fsqli%2F%3Fid%3D1%2527%26Submit%3DSubmit","::1" -"%3A%3A1",2015-03-11T12:24:35+01:00,0,"","REQUEST.id%3D1%2527+GET.id%3D1%2527","%2Fczar%2Fplayground%2Fdvwa%2Fvulnerabilities%2Fsqli%2F%3Fid%3D1%2527%26Submit%3DSubmit","::1" -"%3A%3A1",2015-03-11T12:24:44+01:00,0,"","REQUEST.id%3D1%2527+GET.id%3D1%2527","%2Fczar%2Fplayground%2Fdvwa%2Fvulnerabilities%2Fsqli%2F%3Fid%3D1%2527%26Submit%3DSubmit","::1" -"%3A%3A1",2015-03-11T12:24:44+01:00,0,"","REQUEST.id%3D1%2527+GET.id%3D1%2527","%2Fczar%2Fplayground%2Fdvwa%2Fvulnerabilities%2Fsqli%2F%3Fid%3D1%2527%26Submit%3DSubmit","::1" -"%3A%3A1",2015-03-11T12:24:45+01:00,0,"","REQUEST.id%3D1%2527+GET.id%3D1%2527","%2Fczar%2Fplayground%2Fdvwa%2Fvulnerabilities%2Fsqli%2F%3Fid%3D1%2527%26Submit%3DSubmit","::1" -"%3A%3A1",2015-03-11T12:24:45+01:00,0,"","REQUEST.id%3D1%2527+GET.id%3D1%2527","%2Fczar%2Fplayground%2Fdvwa%2Fvulnerabilities%2Fsqli%2F%3Fid%3D1%2527%26Submit%3DSubmit","::1" -"%3A%3A1",2015-03-11T12:24:45+01:00,0,"","REQUEST.id%3D1%2527+GET.id%3D1%2527","%2Fczar%2Fplayground%2Fdvwa%2Fvulnerabilities%2Fsqli%2F%3Fid%3D1%2527%26Submit%3DSubmit","::1" -"%3A%3A1",2015-03-11T12:24:54+01:00,0,"","REQUEST.id%3D1%2527+GET.id%3D1%2527","%2Fczar%2Fplayground%2Fdvwa%2Fvulnerabilities%2Fsqli%2F%3Fid%3D1%2527%26Submit%3DSubmit","::1" -"%3A%3A1",2015-03-11T12:24:54+01:00,0,"","REQUEST.id%3D1%2527+GET.id%3D1%2527","%2Fczar%2Fplayground%2Fdvwa%2Fvulnerabilities%2Fsqli%2F%3Fid%3D1%2527%26Submit%3DSubmit","::1" -"%3A%3A1",2015-03-11T12:24:55+01:00,0,"","REQUEST.id%3D1%2527+GET.id%3D1%2527","%2Fczar%2Fplayground%2Fdvwa%2Fvulnerabilities%2Fsqli%2F%3Fid%3D1%2527%26Submit%3DSubmit","::1" -"%3A%3A1",2015-03-11T12:24:55+01:00,0,"","REQUEST.id%3D1%2527+GET.id%3D1%2527","%2Fczar%2Fplayground%2Fdvwa%2Fvulnerabilities%2Fsqli%2F%3Fid%3D1%2527%26Submit%3DSubmit","::1" -"%3A%3A1",2015-03-11T12:24:55+01:00,0,"","REQUEST.id%3D1%2527+GET.id%3D1%2527","%2Fczar%2Fplayground%2Fdvwa%2Fvulnerabilities%2Fsqli%2F%3Fid%3D1%2527%26Submit%3DSubmit","::1" -"%3A%3A1",2015-03-11T12:28:42+01:00,0,"","REQUEST.id%3D1%2527+GET.id%3D1%2527","%2Fczar%2Fplayground%2Fdvwa%2Fvulnerabilities%2Fsqli%2F%3Fid%3D1%2527%26Submit%3DSubmit","::1" -"%3A%3A1",2015-03-11T12:34:07+01:00,0,"","REQUEST.id%3D1%2527+GET.id%3D1%2527","%2Fczar%2Fplayground%2Fdvwa%2Fvulnerabilities%2Fsqli%2F%3Fid%3D1%2527%26Submit%3DSubmit","::1" -"%3A%3A1",2015-03-11T12:34:11+01:00,0,"","REQUEST.id%3D1%2527+GET.id%3D1%2527","%2Fczar%2Fplayground%2Fdvwa%2Fvulnerabilities%2Fsqli%2F%3Fid%3D1%2527%26Submit%3DSubmit","::1" -"%3A%3A1",2015-03-11T12:34:11+01:00,0,"","REQUEST.id%3D1%2527+GET.id%3D1%2527","%2Fczar%2Fplayground%2Fdvwa%2Fvulnerabilities%2Fsqli%2F%3Fid%3D1%2527%26Submit%3DSubmit","::1" -"%3A%3A1",2015-03-11T12:34:12+01:00,0,"","REQUEST.id%3D1%2527+GET.id%3D1%2527","%2Fczar%2Fplayground%2Fdvwa%2Fvulnerabilities%2Fsqli%2F%3Fid%3D1%2527%26Submit%3DSubmit","::1" -"%3A%3A1",2015-03-11T12:34:12+01:00,0,"","REQUEST.id%3D1%2527+GET.id%3D1%2527","%2Fczar%2Fplayground%2Fdvwa%2Fvulnerabilities%2Fsqli%2F%3Fid%3D1%2527%26Submit%3DSubmit","::1" -"%3A%3A1",2015-03-11T12:38:24+01:00,0,"","REQUEST.id%3D1%2527+GET.id%3D1%2527","%2Fczar%2Fplayground%2Fdvwa%2Fvulnerabilities%2Fsqli%2F%3Fid%3D1%2527%26Submit%3DSubmit","::1" -"%3A%3A1",2015-03-11T12:38:25+01:00,0,"","REQUEST.id%3D1%2527+GET.id%3D1%2527","%2Fczar%2Fplayground%2Fdvwa%2Fvulnerabilities%2Fsqli%2F%3Fid%3D1%2527%26Submit%3DSubmit","::1" -"%3A%3A1",2015-03-11T12:38:26+01:00,0,"","REQUEST.id%3D1%2527+GET.id%3D1%2527","%2Fczar%2Fplayground%2Fdvwa%2Fvulnerabilities%2Fsqli%2F%3Fid%3D1%2527%26Submit%3DSubmit","::1" -"%3A%3A1",2015-03-11T12:38:27+01:00,0,"","REQUEST.id%3D1%2527+GET.id%3D1%2527","%2Fczar%2Fplayground%2Fdvwa%2Fvulnerabilities%2Fsqli%2F%3Fid%3D1%2527%26Submit%3DSubmit","::1" -"%3A%3A1",2015-03-11T12:38:28+01:00,0,"","REQUEST.id%3D1%2527+GET.id%3D1%2527","%2Fczar%2Fplayground%2Fdvwa%2Fvulnerabilities%2Fsqli%2F%3Fid%3D1%2527%26Submit%3DSubmit","::1" -"%3A%3A1",2015-03-11T12:39:45+01:00,0,"","REQUEST.id%3D1%2527+GET.id%3D1%2527","%2Fczar%2Fplayground%2Fdvwa%2Fvulnerabilities%2Fsqli%2F%3Fid%3D1%2527%26Submit%3DSubmit","::1" -"%3A%3A1",2015-03-11T12:40:10+01:00,0,"","REQUEST.id%3D1%2527+GET.id%3D1%2527","%2Fczar%2Fplayground%2Fdvwa%2Fvulnerabilities%2Fsqli%2F%3Fid%3D1%2527%26Submit%3DSubmit","::1" -"%3A%3A1",2015-03-11T12:40:11+01:00,0,"","REQUEST.id%3D1%2527+GET.id%3D1%2527","%2Fczar%2Fplayground%2Fdvwa%2Fvulnerabilities%2Fsqli%2F%3Fid%3D1%2527%26Submit%3DSubmit","::1" -"%3A%3A1",2015-03-11T12:40:11+01:00,0,"","REQUEST.id%3D1%2527+GET.id%3D1%2527","%2Fczar%2Fplayground%2Fdvwa%2Fvulnerabilities%2Fsqli%2F%3Fid%3D1%2527%26Submit%3DSubmit","::1" -"%3A%3A1",2015-03-11T12:40:12+01:00,0,"","REQUEST.id%3D1%2527+GET.id%3D1%2527","%2Fczar%2Fplayground%2Fdvwa%2Fvulnerabilities%2Fsqli%2F%3Fid%3D1%2527%26Submit%3DSubmit","::1" -"%3A%3A1",2015-03-11T12:40:12+01:00,0,"","REQUEST.id%3D1%2527+GET.id%3D1%2527","%2Fczar%2Fplayground%2Fdvwa%2Fvulnerabilities%2Fsqli%2F%3Fid%3D1%2527%26Submit%3DSubmit","::1" -"%3A%3A1",2015-03-11T12:43:16+01:00,0,"","REQUEST.id%3D1%2527+GET.id%3D1%2527","%2Fczar%2Fplayground%2Fdvwa%2Fvulnerabilities%2Fsqli%2F%3Fid%3D1%2527%26Submit%3DSubmit","::1" -"%3A%3A1",2015-03-11T12:44:01+01:00,0,"","REQUEST.id%3D1%2527+GET.id%3D1%2527","%2Fczar%2Fplayground%2Fdvwa%2Fvulnerabilities%2Fsqli%2F%3Fid%3D1%2527%26Submit%3DSubmit","::1" -"%3A%3A1",2015-03-11T12:44:02+01:00,0,"","REQUEST.id%3D1%2527+GET.id%3D1%2527","%2Fczar%2Fplayground%2Fdvwa%2Fvulnerabilities%2Fsqli%2F%3Fid%3D1%2527%26Submit%3DSubmit","::1" -"%3A%3A1",2015-03-11T12:44:03+01:00,0,"","REQUEST.id%3D1%2527+GET.id%3D1%2527","%2Fczar%2Fplayground%2Fdvwa%2Fvulnerabilities%2Fsqli%2F%3Fid%3D1%2527%26Submit%3DSubmit","::1" -"%3A%3A1",2015-03-11T12:44:03+01:00,0,"","REQUEST.id%3D1%2527+GET.id%3D1%2527","%2Fczar%2Fplayground%2Fdvwa%2Fvulnerabilities%2Fsqli%2F%3Fid%3D1%2527%26Submit%3DSubmit","::1" -"%3A%3A1",2015-03-11T12:44:04+01:00,0,"","REQUEST.id%3D1%2527+GET.id%3D1%2527","%2Fczar%2Fplayground%2Fdvwa%2Fvulnerabilities%2Fsqli%2F%3Fid%3D1%2527%26Submit%3DSubmit","::1" -"%3A%3A1",2015-03-11T12:44:44+01:00,0,"","REQUEST.id%3D1%2527+GET.id%3D1%2527","%2Fczar%2Fplayground%2Fdvwa%2Fvulnerabilities%2Fsqli%2F%3Fid%3D1%2527%26Submit%3DSubmit","::1" -"%3A%3A1",2015-03-11T12:44:57+01:00,0,"","REQUEST.id%3D1%2527+GET.id%3D1%2527","%2Fczar%2Fplayground%2Fdvwa%2Fvulnerabilities%2Fsqli%2F%3Fid%3D1%2527%26Submit%3DSubmit","::1" -"%3A%3A1",2015-03-11T12:44:57+01:00,0,"","REQUEST.id%3D1%2527+GET.id%3D1%2527","%2Fczar%2Fplayground%2Fdvwa%2Fvulnerabilities%2Fsqli%2F%3Fid%3D1%2527%26Submit%3DSubmit","::1" -"%3A%3A1",2015-03-11T12:44:58+01:00,0,"","REQUEST.id%3D1%2527+GET.id%3D1%2527","%2Fczar%2Fplayground%2Fdvwa%2Fvulnerabilities%2Fsqli%2F%3Fid%3D1%2527%26Submit%3DSubmit","::1" -"%3A%3A1",2015-03-11T12:44:59+01:00,0,"","REQUEST.id%3D1%2527+GET.id%3D1%2527","%2Fczar%2Fplayground%2Fdvwa%2Fvulnerabilities%2Fsqli%2F%3Fid%3D1%2527%26Submit%3DSubmit","::1" -"%3A%3A1",2015-03-11T12:45:00+01:00,0,"","REQUEST.id%3D1%2527+GET.id%3D1%2527","%2Fczar%2Fplayground%2Fdvwa%2Fvulnerabilities%2Fsqli%2F%3Fid%3D1%2527%26Submit%3DSubmit","::1" -"%3A%3A1",2015-03-11T12:46:08+01:00,0,"","REQUEST.id%3D1%2527+GET.id%3D1%2527","%2Fczar%2Fplayground%2Fdvwa%2Fvulnerabilities%2Fsqli%2F%3Fid%3D1%2527%26Submit%3DSubmit","::1" -"%3A%3A1",2015-03-11T12:46:10+01:00,0,"","REQUEST.id%3D1%2527+GET.id%3D1%2527","%2Fczar%2Fplayground%2Fdvwa%2Fvulnerabilities%2Fsqli%2F%3Fid%3D1%2527%26Submit%3DSubmit","::1" -"%3A%3A1",2015-03-11T12:46:11+01:00,0,"","REQUEST.id%3D1%2527+GET.id%3D1%2527","%2Fczar%2Fplayground%2Fdvwa%2Fvulnerabilities%2Fsqli%2F%3Fid%3D1%2527%26Submit%3DSubmit","::1" -"%3A%3A1",2015-03-11T12:46:11+01:00,0,"","REQUEST.id%3D1%2527+GET.id%3D1%2527","%2Fczar%2Fplayground%2Fdvwa%2Fvulnerabilities%2Fsqli%2F%3Fid%3D1%2527%26Submit%3DSubmit","::1" -"%3A%3A1",2015-03-11T12:46:12+01:00,0,"","REQUEST.id%3D1%2527+GET.id%3D1%2527","%2Fczar%2Fplayground%2Fdvwa%2Fvulnerabilities%2Fsqli%2F%3Fid%3D1%2527%26Submit%3DSubmit","::1" -"%3A%3A1",2015-03-11T12:46:23+01:00,0,"","REQUEST.id%3D1%2527+GET.id%3D1%2527","%2Fczar%2Fplayground%2Fdvwa%2Fvulnerabilities%2Fsqli%2F%3Fid%3D1%2527%26Submit%3DSubmit","::1" -"%3A%3A1",2015-03-11T12:46:24+01:00,0,"","REQUEST.id%3D1%2527+GET.id%3D1%2527","%2Fczar%2Fplayground%2Fdvwa%2Fvulnerabilities%2Fsqli%2F%3Fid%3D1%2527%26Submit%3DSubmit","::1" -"%3A%3A1",2015-03-11T12:46:24+01:00,0,"","REQUEST.id%3D1%2527+GET.id%3D1%2527","%2Fczar%2Fplayground%2Fdvwa%2Fvulnerabilities%2Fsqli%2F%3Fid%3D1%2527%26Submit%3DSubmit","::1" -"%3A%3A1",2015-03-11T12:46:25+01:00,0,"","REQUEST.id%3D1%2527+GET.id%3D1%2527","%2Fczar%2Fplayground%2Fdvwa%2Fvulnerabilities%2Fsqli%2F%3Fid%3D1%2527%26Submit%3DSubmit","::1" -"%3A%3A1",2015-03-11T12:46:26+01:00,0,"","REQUEST.id%3D1%2527+GET.id%3D1%2527","%2Fczar%2Fplayground%2Fdvwa%2Fvulnerabilities%2Fsqli%2F%3Fid%3D1%2527%26Submit%3DSubmit","::1" -"%3A%3A1",2015-03-11T12:46:32+01:00,0,"","REQUEST.id%3D1%2527+GET.id%3D1%2527","%2Fczar%2Fplayground%2Fdvwa%2Fvulnerabilities%2Fsqli%2F%3Fid%3D1%2527%26Submit%3DSubmit","::1" -"%3A%3A1",2015-03-11T12:46:32+01:00,0,"","REQUEST.id%3D1%2527+GET.id%3D1%2527","%2Fczar%2Fplayground%2Fdvwa%2Fvulnerabilities%2Fsqli%2F%3Fid%3D1%2527%26Submit%3DSubmit","::1" -"%3A%3A1",2015-03-11T12:46:33+01:00,0,"","REQUEST.id%3D1%2527+GET.id%3D1%2527","%2Fczar%2Fplayground%2Fdvwa%2Fvulnerabilities%2Fsqli%2F%3Fid%3D1%2527%26Submit%3DSubmit","::1" -"%3A%3A1",2015-03-11T12:46:33+01:00,0,"","REQUEST.id%3D1%2527+GET.id%3D1%2527","%2Fczar%2Fplayground%2Fdvwa%2Fvulnerabilities%2Fsqli%2F%3Fid%3D1%2527%26Submit%3DSubmit","::1" -"%3A%3A1",2015-03-11T12:46:34+01:00,0,"","REQUEST.id%3D1%2527+GET.id%3D1%2527","%2Fczar%2Fplayground%2Fdvwa%2Fvulnerabilities%2Fsqli%2F%3Fid%3D1%2527%26Submit%3DSubmit","::1" -"%3A%3A1",2015-03-11T12:46:43+01:00,0,"","REQUEST.id%3D1%2527+GET.id%3D1%2527","%2Fczar%2Fplayground%2Fdvwa%2Fvulnerabilities%2Fsqli%2F%3Fid%3D1%2527%26Submit%3DSubmit","::1" -"%3A%3A1",2015-03-11T12:46:43+01:00,0,"","REQUEST.id%3D1%2527+GET.id%3D1%2527","%2Fczar%2Fplayground%2Fdvwa%2Fvulnerabilities%2Fsqli%2F%3Fid%3D1%2527%26Submit%3DSubmit","::1" -"%3A%3A1",2015-03-11T12:46:44+01:00,0,"","REQUEST.id%3D1%2527+GET.id%3D1%2527","%2Fczar%2Fplayground%2Fdvwa%2Fvulnerabilities%2Fsqli%2F%3Fid%3D1%2527%26Submit%3DSubmit","::1" -"%3A%3A1",2015-03-11T12:46:44+01:00,0,"","REQUEST.id%3D1%2527+GET.id%3D1%2527","%2Fczar%2Fplayground%2Fdvwa%2Fvulnerabilities%2Fsqli%2F%3Fid%3D1%2527%26Submit%3DSubmit","::1" -"%3A%3A1",2015-03-11T12:46:44+01:00,0,"","REQUEST.id%3D1%2527+GET.id%3D1%2527","%2Fczar%2Fplayground%2Fdvwa%2Fvulnerabilities%2Fsqli%2F%3Fid%3D1%2527%26Submit%3DSubmit","::1" -"%3A%3A1",2015-03-11T12:50:52+01:00,0,"","REQUEST.id%3D1%2527+GET.id%3D1%2527","%2Fczar%2Fplayground%2Fdvwa%2Fvulnerabilities%2Fsqli%2F%3Fid%3D1%2527%26Submit%3DSubmit","::1" -"%3A%3A1",2015-03-11T12:50:53+01:00,0,"","REQUEST.id%3D1%2527+GET.id%3D1%2527","%2Fczar%2Fplayground%2Fdvwa%2Fvulnerabilities%2Fsqli%2F%3Fid%3D1%2527%26Submit%3DSubmit","::1" -"%3A%3A1",2015-03-11T12:50:53+01:00,0,"","REQUEST.id%3D1%2527+GET.id%3D1%2527","%2Fczar%2Fplayground%2Fdvwa%2Fvulnerabilities%2Fsqli%2F%3Fid%3D1%2527%26Submit%3DSubmit","::1" -"%3A%3A1",2015-03-11T12:50:54+01:00,0,"","REQUEST.id%3D1%2527+GET.id%3D1%2527","%2Fczar%2Fplayground%2Fdvwa%2Fvulnerabilities%2Fsqli%2F%3Fid%3D1%2527%26Submit%3DSubmit","::1" -"%3A%3A1",2015-03-11T12:50:54+01:00,0,"","REQUEST.id%3D1%2527+GET.id%3D1%2527","%2Fczar%2Fplayground%2Fdvwa%2Fvulnerabilities%2Fsqli%2F%3Fid%3D1%2527%26Submit%3DSubmit","::1" -"%3A%3A1",2015-03-11T12:51:41+01:00,0,"","REQUEST.id%3D1%2527+GET.id%3D1%2527","%2Fczar%2Fplayground%2Fdvwa%2Fvulnerabilities%2Fsqli%2F%3Fid%3D1%2527%26Submit%3DSubmit","::1" -"%3A%3A1",2015-03-11T12:51:42+01:00,0,"","REQUEST.id%3D1%2527+GET.id%3D1%2527","%2Fczar%2Fplayground%2Fdvwa%2Fvulnerabilities%2Fsqli%2F%3Fid%3D1%2527%26Submit%3DSubmit","::1" -"%3A%3A1",2015-03-11T12:51:43+01:00,0,"","REQUEST.id%3D1%2527+GET.id%3D1%2527","%2Fczar%2Fplayground%2Fdvwa%2Fvulnerabilities%2Fsqli%2F%3Fid%3D1%2527%26Submit%3DSubmit","::1" -"%3A%3A1",2015-03-11T12:51:43+01:00,0,"","REQUEST.id%3D1%2527+GET.id%3D1%2527","%2Fczar%2Fplayground%2Fdvwa%2Fvulnerabilities%2Fsqli%2F%3Fid%3D1%2527%26Submit%3DSubmit","::1" -"%3A%3A1",2015-03-11T12:51:44+01:00,0,"","REQUEST.id%3D1%2527+GET.id%3D1%2527","%2Fczar%2Fplayground%2Fdvwa%2Fvulnerabilities%2Fsqli%2F%3Fid%3D1%2527%26Submit%3DSubmit","::1" -"%3A%3A1",2015-03-11T12:51:51+01:00,0,"","REQUEST.id%3D1%2527+GET.id%3D1%2527","%2Fczar%2Fplayground%2Fdvwa%2Fvulnerabilities%2Fsqli%2F%3Fid%3D1%2527%26Submit%3DSubmit","::1" -"%3A%3A1",2015-03-11T12:51:51+01:00,0,"","REQUEST.id%3D1%2527+GET.id%3D1%2527","%2Fczar%2Fplayground%2Fdvwa%2Fvulnerabilities%2Fsqli%2F%3Fid%3D1%2527%26Submit%3DSubmit","::1" -"%3A%3A1",2015-03-11T12:51:52+01:00,0,"","REQUEST.id%3D1%2527+GET.id%3D1%2527","%2Fczar%2Fplayground%2Fdvwa%2Fvulnerabilities%2Fsqli%2F%3Fid%3D1%2527%26Submit%3DSubmit","::1" -"%3A%3A1",2015-03-11T12:51:53+01:00,0,"","REQUEST.id%3D1%2527+GET.id%3D1%2527","%2Fczar%2Fplayground%2Fdvwa%2Fvulnerabilities%2Fsqli%2F%3Fid%3D1%2527%26Submit%3DSubmit","::1" -"%3A%3A1",2015-03-11T12:51:53+01:00,0,"","REQUEST.id%3D1%2527+GET.id%3D1%2527","%2Fczar%2Fplayground%2Fdvwa%2Fvulnerabilities%2Fsqli%2F%3Fid%3D1%2527%26Submit%3DSubmit","::1" -"%3A%3A1",2015-03-11T12:52:06+01:00,0,"","REQUEST.id%3D1%2527+GET.id%3D1%2527","%2Fczar%2Fplayground%2Fdvwa%2Fvulnerabilities%2Fsqli%2F%3Fid%3D1%2527%26Submit%3DSubmit","::1" -"%3A%3A1",2015-03-11T12:52:06+01:00,0,"","REQUEST.id%3D1%2527+GET.id%3D1%2527","%2Fczar%2Fplayground%2Fdvwa%2Fvulnerabilities%2Fsqli%2F%3Fid%3D1%2527%26Submit%3DSubmit","::1" -"%3A%3A1",2015-03-11T12:52:07+01:00,0,"","REQUEST.id%3D1%2527+GET.id%3D1%2527","%2Fczar%2Fplayground%2Fdvwa%2Fvulnerabilities%2Fsqli%2F%3Fid%3D1%2527%26Submit%3DSubmit","::1" -"%3A%3A1",2015-03-11T12:52:07+01:00,0,"","REQUEST.id%3D1%2527+GET.id%3D1%2527","%2Fczar%2Fplayground%2Fdvwa%2Fvulnerabilities%2Fsqli%2F%3Fid%3D1%2527%26Submit%3DSubmit","::1" -"%3A%3A1",2015-03-11T12:52:07+01:00,0,"","REQUEST.id%3D1%2527+GET.id%3D1%2527","%2Fczar%2Fplayground%2Fdvwa%2Fvulnerabilities%2Fsqli%2F%3Fid%3D1%2527%26Submit%3DSubmit","::1" -"%3A%3A1",2015-03-11T12:52:19+01:00,0,"","REQUEST.id%3D1%2527+GET.id%3D1%2527","%2Fczar%2Fplayground%2Fdvwa%2Fvulnerabilities%2Fsqli%2F%3Fid%3D1%2527%26Submit%3DSubmit","::1" -"%3A%3A1",2015-03-11T12:52:19+01:00,0,"","REQUEST.id%3D1%2527+GET.id%3D1%2527","%2Fczar%2Fplayground%2Fdvwa%2Fvulnerabilities%2Fsqli%2F%3Fid%3D1%2527%26Submit%3DSubmit","::1" -"%3A%3A1",2015-03-11T12:52:20+01:00,0,"","REQUEST.id%3D1%2527+GET.id%3D1%2527","%2Fczar%2Fplayground%2Fdvwa%2Fvulnerabilities%2Fsqli%2F%3Fid%3D1%2527%26Submit%3DSubmit","::1" -"%3A%3A1",2015-03-11T12:52:20+01:00,0,"","REQUEST.id%3D1%2527+GET.id%3D1%2527","%2Fczar%2Fplayground%2Fdvwa%2Fvulnerabilities%2Fsqli%2F%3Fid%3D1%2527%26Submit%3DSubmit","::1" -"%3A%3A1",2015-03-11T12:52:21+01:00,0,"","REQUEST.id%3D1%2527+GET.id%3D1%2527","%2Fczar%2Fplayground%2Fdvwa%2Fvulnerabilities%2Fsqli%2F%3Fid%3D1%2527%26Submit%3DSubmit","::1" -"%3A%3A1",2015-03-11T12:52:43+01:00,0,"","REQUEST.id%3D1%2527+GET.id%3D1%2527","%2Fczar%2Fplayground%2Fdvwa%2Fvulnerabilities%2Fsqli%2F%3Fid%3D1%2527%26Submit%3DSubmit","::1" -"%3A%3A1",2015-03-11T12:52:44+01:00,0,"","REQUEST.id%3D1%2527+GET.id%3D1%2527","%2Fczar%2Fplayground%2Fdvwa%2Fvulnerabilities%2Fsqli%2F%3Fid%3D1%2527%26Submit%3DSubmit","::1" -"%3A%3A1",2015-03-11T12:52:45+01:00,0,"","REQUEST.id%3D1%2527+GET.id%3D1%2527","%2Fczar%2Fplayground%2Fdvwa%2Fvulnerabilities%2Fsqli%2F%3Fid%3D1%2527%26Submit%3DSubmit","::1" -"%3A%3A1",2015-03-11T12:52:45+01:00,0,"","REQUEST.id%3D1%2527+GET.id%3D1%2527","%2Fczar%2Fplayground%2Fdvwa%2Fvulnerabilities%2Fsqli%2F%3Fid%3D1%2527%26Submit%3DSubmit","::1" -"%3A%3A1",2015-03-11T12:52:46+01:00,0,"","REQUEST.id%3D1%2527+GET.id%3D1%2527","%2Fczar%2Fplayground%2Fdvwa%2Fvulnerabilities%2Fsqli%2F%3Fid%3D1%2527%26Submit%3DSubmit","::1" -"%3A%3A1",2015-03-11T12:52:58+01:00,0,"","REQUEST.id%3D1%2527+GET.id%3D1%2527","%2Fczar%2Fplayground%2Fdvwa%2Fvulnerabilities%2Fsqli%2F%3Fid%3D1%2527%26Submit%3DSubmit","::1" -"%3A%3A1",2015-03-11T12:52:59+01:00,0,"","REQUEST.id%3D1%2527+GET.id%3D1%2527","%2Fczar%2Fplayground%2Fdvwa%2Fvulnerabilities%2Fsqli%2F%3Fid%3D1%2527%26Submit%3DSubmit","::1" -"%3A%3A1",2015-03-11T12:53:00+01:00,0,"","REQUEST.id%3D1%2527+GET.id%3D1%2527","%2Fczar%2Fplayground%2Fdvwa%2Fvulnerabilities%2Fsqli%2F%3Fid%3D1%2527%26Submit%3DSubmit","::1" -"%3A%3A1",2015-03-11T12:55:21+01:00,0,"","REQUEST.id%3D1%2527+GET.id%3D1%2527","%2Fczar%2Fplayground%2Fdvwa%2Fvulnerabilities%2Fsqli%2F%3Fid%3D1%2527%26Submit%3DSubmit","::1" -"%3A%3A1",2015-03-11T12:55:33+01:00,0,"","REQUEST.id%3D1%2527+GET.id%3D1%2527","%2Fczar%2Fplayground%2Fdvwa%2Fvulnerabilities%2Fsqli%2F%3Fid%3D1%2527%26Submit%3DSubmit","::1" -"%3A%3A1",2015-03-11T12:55:34+01:00,0,"","REQUEST.id%3D1%2527+GET.id%3D1%2527","%2Fczar%2Fplayground%2Fdvwa%2Fvulnerabilities%2Fsqli%2F%3Fid%3D1%2527%26Submit%3DSubmit","::1" -"%3A%3A1",2015-03-11T12:55:34+01:00,0,"","REQUEST.id%3D1%2527+GET.id%3D1%2527","%2Fczar%2Fplayground%2Fdvwa%2Fvulnerabilities%2Fsqli%2F%3Fid%3D1%2527%26Submit%3DSubmit","::1" -"%3A%3A1",2015-03-11T12:55:35+01:00,0,"","REQUEST.id%3D1%2527+GET.id%3D1%2527","%2Fczar%2Fplayground%2Fdvwa%2Fvulnerabilities%2Fsqli%2F%3Fid%3D1%2527%26Submit%3DSubmit","::1" -"%3A%3A1",2015-03-11T12:55:39+01:00,0,"","REQUEST.id%3D1%2527+GET.id%3D1%2527","%2Fczar%2Fplayground%2Fdvwa%2Fvulnerabilities%2Fsqli%2F%3Fid%3D1%2527%26Submit%3DSubmit","::1" -"%3A%3A1",2015-03-11T12:56:17+01:00,0,"","REQUEST.id%3D1%2527+GET.id%3D1%2527","%2Fczar%2Fplayground%2Fdvwa%2Fvulnerabilities%2Fsqli%2F%3Fid%3D1%2527%26Submit%3DSubmit","::1" -"%3A%3A1",2015-03-11T12:56:18+01:00,0,"","REQUEST.id%3D1%2527+GET.id%3D1%2527","%2Fczar%2Fplayground%2Fdvwa%2Fvulnerabilities%2Fsqli%2F%3Fid%3D1%2527%26Submit%3DSubmit","::1" -"%3A%3A1",2015-03-11T12:56:19+01:00,0,"","REQUEST.id%3D1%2527+GET.id%3D1%2527","%2Fczar%2Fplayground%2Fdvwa%2Fvulnerabilities%2Fsqli%2F%3Fid%3D1%2527%26Submit%3DSubmit","::1" -"%3A%3A1",2015-03-11T12:56:19+01:00,0,"","REQUEST.id%3D1%2527+GET.id%3D1%2527","%2Fczar%2Fplayground%2Fdvwa%2Fvulnerabilities%2Fsqli%2F%3Fid%3D1%2527%26Submit%3DSubmit","::1" -"%3A%3A1",2015-03-11T12:56:20+01:00,0,"","REQUEST.id%3D1%2527+GET.id%3D1%2527","%2Fczar%2Fplayground%2Fdvwa%2Fvulnerabilities%2Fsqli%2F%3Fid%3D1%2527%26Submit%3DSubmit","::1" -"%3A%3A1",2015-03-11T12:56:30+01:00,0,"","REQUEST.id%3D1%2527+GET.id%3D1%2527","%2Fczar%2Fplayground%2Fdvwa%2Fvulnerabilities%2Fsqli%2F%3Fid%3D1%2527%26Submit%3DSubmit","::1" -"%3A%3A1",2015-03-11T12:56:31+01:00,0,"","REQUEST.id%3D1%2527+GET.id%3D1%2527","%2Fczar%2Fplayground%2Fdvwa%2Fvulnerabilities%2Fsqli%2F%3Fid%3D1%2527%26Submit%3DSubmit","::1" -"%3A%3A1",2015-03-11T12:56:31+01:00,0,"","REQUEST.id%3D1%2527+GET.id%3D1%2527","%2Fczar%2Fplayground%2Fdvwa%2Fvulnerabilities%2Fsqli%2F%3Fid%3D1%2527%26Submit%3DSubmit","::1" -"%3A%3A1",2015-03-11T12:56:31+01:00,0,"","REQUEST.id%3D1%2527+GET.id%3D1%2527","%2Fczar%2Fplayground%2Fdvwa%2Fvulnerabilities%2Fsqli%2F%3Fid%3D1%2527%26Submit%3DSubmit","::1" -"%3A%3A1",2015-03-11T12:56:32+01:00,0,"","REQUEST.id%3D1%2527+GET.id%3D1%2527","%2Fczar%2Fplayground%2Fdvwa%2Fvulnerabilities%2Fsqli%2F%3Fid%3D1%2527%26Submit%3DSubmit","::1" -"%3A%3A1",2015-03-11T12:56:47+01:00,0,"","REQUEST.id%3D1%2527+GET.id%3D1%2527","%2Fczar%2Fplayground%2Fdvwa%2Fvulnerabilities%2Fsqli%2F%3Fid%3D1%2527%26Submit%3DSubmit","::1" -"%3A%3A1",2015-03-11T12:56:47+01:00,0,"","REQUEST.id%3D1%2527+GET.id%3D1%2527","%2Fczar%2Fplayground%2Fdvwa%2Fvulnerabilities%2Fsqli%2F%3Fid%3D1%2527%26Submit%3DSubmit","::1" -"%3A%3A1",2015-03-11T12:56:48+01:00,0,"","REQUEST.id%3D1%2527+GET.id%3D1%2527","%2Fczar%2Fplayground%2Fdvwa%2Fvulnerabilities%2Fsqli%2F%3Fid%3D1%2527%26Submit%3DSubmit","::1" -"%3A%3A1",2015-03-11T12:56:48+01:00,0,"","REQUEST.id%3D1%2527+GET.id%3D1%2527","%2Fczar%2Fplayground%2Fdvwa%2Fvulnerabilities%2Fsqli%2F%3Fid%3D1%2527%26Submit%3DSubmit","::1" -"%3A%3A1",2015-03-11T12:56:48+01:00,0,"","REQUEST.id%3D1%2527+GET.id%3D1%2527","%2Fczar%2Fplayground%2Fdvwa%2Fvulnerabilities%2Fsqli%2F%3Fid%3D1%2527%26Submit%3DSubmit","::1" -"%3A%3A1",2015-03-11T12:57:05+01:00,0,"","REQUEST.id%3D1%2527+GET.id%3D1%2527","%2Fczar%2Fplayground%2Fdvwa%2Fvulnerabilities%2Fsqli%2F%3Fid%3D1%2527%26Submit%3DSubmit","::1" -"%3A%3A1",2015-03-11T12:57:05+01:00,0,"","REQUEST.id%3D1%2527+GET.id%3D1%2527","%2Fczar%2Fplayground%2Fdvwa%2Fvulnerabilities%2Fsqli%2F%3Fid%3D1%2527%26Submit%3DSubmit","::1" -"%3A%3A1",2015-03-11T12:57:06+01:00,0,"","REQUEST.id%3D1%2527+GET.id%3D1%2527","%2Fczar%2Fplayground%2Fdvwa%2Fvulnerabilities%2Fsqli%2F%3Fid%3D1%2527%26Submit%3DSubmit","::1" -"%3A%3A1",2015-03-11T12:57:06+01:00,0,"","REQUEST.id%3D1%2527+GET.id%3D1%2527","%2Fczar%2Fplayground%2Fdvwa%2Fvulnerabilities%2Fsqli%2F%3Fid%3D1%2527%26Submit%3DSubmit","::1" -"%3A%3A1",2015-03-11T12:57:07+01:00,0,"","REQUEST.id%3D1%2527+GET.id%3D1%2527","%2Fczar%2Fplayground%2Fdvwa%2Fvulnerabilities%2Fsqli%2F%3Fid%3D1%2527%26Submit%3DSubmit","::1" -"%3A%3A1",2015-03-11T12:57:42+01:00,0,"","REQUEST.id%3D1%2527+GET.id%3D1%2527","%2Fczar%2Fplayground%2Fdvwa%2Fvulnerabilities%2Fsqli%2F%3Fid%3D1%2527%26Submit%3DSubmit","::1" -"%3A%3A1",2015-03-11T12:57:44+01:00,0,"","REQUEST.id%3D1%2527+GET.id%3D1%2527","%2Fczar%2Fplayground%2Fdvwa%2Fvulnerabilities%2Fsqli%2F%3Fid%3D1%2527%26Submit%3DSubmit","::1" -"%3A%3A1",2015-03-11T12:57:45+01:00,0,"","REQUEST.id%3D1%2527+GET.id%3D1%2527","%2Fczar%2Fplayground%2Fdvwa%2Fvulnerabilities%2Fsqli%2F%3Fid%3D1%2527%26Submit%3DSubmit","::1" -"%3A%3A1",2015-03-11T12:57:45+01:00,0,"","REQUEST.id%3D1%2527+GET.id%3D1%2527","%2Fczar%2Fplayground%2Fdvwa%2Fvulnerabilities%2Fsqli%2F%3Fid%3D1%2527%26Submit%3DSubmit","::1" -"%3A%3A1",2015-03-11T12:57:45+01:00,0,"","REQUEST.id%3D1%2527+GET.id%3D1%2527","%2Fczar%2Fplayground%2Fdvwa%2Fvulnerabilities%2Fsqli%2F%3Fid%3D1%2527%26Submit%3DSubmit","::1" -"%3A%3A1",2015-03-11T13:00:06+01:00,0,"","REQUEST.id%3D1%2527+GET.id%3D1%2527","%2Fczar%2Fplayground%2Fdvwa%2Fvulnerabilities%2Fsqli%2F%3Fid%3D1%2527%26Submit%3DSubmit","::1" -"%3A%3A1",2015-03-11T13:00:14+01:00,0,"","REQUEST.id%3D1%2527+GET.id%3D1%2527","%2Fczar%2Fplayground%2Fdvwa%2Fvulnerabilities%2Fsqli%2F%3Fid%3D1%2527%26Submit%3DSubmit","::1" -"%3A%3A1",2015-03-11T13:00:14+01:00,0,"","REQUEST.id%3D1%2527+GET.id%3D1%2527","%2Fczar%2Fplayground%2Fdvwa%2Fvulnerabilities%2Fsqli%2F%3Fid%3D1%2527%26Submit%3DSubmit","::1" -"%3A%3A1",2015-03-11T13:00:15+01:00,0,"","REQUEST.id%3D1%2527+GET.id%3D1%2527","%2Fczar%2Fplayground%2Fdvwa%2Fvulnerabilities%2Fsqli%2F%3Fid%3D1%2527%26Submit%3DSubmit","::1" -"%3A%3A1",2015-03-11T13:00:15+01:00,0,"","REQUEST.id%3D1%2527+GET.id%3D1%2527","%2Fczar%2Fplayground%2Fdvwa%2Fvulnerabilities%2Fsqli%2F%3Fid%3D1%2527%26Submit%3DSubmit","::1" -"%3A%3A1",2015-03-11T13:00:20+01:00,0,"","REQUEST.id%3D1%2527+GET.id%3D1%2527","%2Fczar%2Fplayground%2Fdvwa%2Fvulnerabilities%2Fsqli%2F%3Fid%3D1%2527%26Submit%3DSubmit","::1" -"%3A%3A1",2015-03-11T13:00:29+01:00,0,"","REQUEST.id%3D1%2527+GET.id%3D1%2527","%2Fczar%2Fplayground%2Fdvwa%2Fvulnerabilities%2Fsqli%2F%3Fid%3D1%2527%26Submit%3DSubmit","::1" -"%3A%3A1",2015-03-11T13:00:29+01:00,0,"","REQUEST.id%3D1%2527+GET.id%3D1%2527","%2Fczar%2Fplayground%2Fdvwa%2Fvulnerabilities%2Fsqli%2F%3Fid%3D1%2527%26Submit%3DSubmit","::1" -"%3A%3A1",2015-03-11T13:00:30+01:00,0,"","REQUEST.id%3D1%2527+GET.id%3D1%2527","%2Fczar%2Fplayground%2Fdvwa%2Fvulnerabilities%2Fsqli%2F%3Fid%3D1%2527%26Submit%3DSubmit","::1" -"%3A%3A1",2015-03-11T13:00:30+01:00,0,"","REQUEST.id%3D1%2527+GET.id%3D1%2527","%2Fczar%2Fplayground%2Fdvwa%2Fvulnerabilities%2Fsqli%2F%3Fid%3D1%2527%26Submit%3DSubmit","::1" -"%3A%3A1",2015-03-11T13:00:30+01:00,0,"","REQUEST.id%3D1%2527+GET.id%3D1%2527","%2Fczar%2Fplayground%2Fdvwa%2Fvulnerabilities%2Fsqli%2F%3Fid%3D1%2527%26Submit%3DSubmit","::1" -"%3A%3A1",2015-03-11T13:02:00+01:00,0,"","REQUEST.id%3D1%2527+GET.id%3D1%2527","%2Fczar%2Fplayground%2Fdvwa%2Fvulnerabilities%2Fsqli%2F%3Fid%3D1%2527%26Submit%3DSubmit","::1" -"%3A%3A1",2015-03-11T13:02:05+01:00,0,"","REQUEST.id%3D1%2527+GET.id%3D1%2527","%2Fczar%2Fplayground%2Fdvwa%2Fvulnerabilities%2Fsqli%2F%3Fid%3D1%2527%26Submit%3DSubmit","::1" -"%3A%3A1",2015-03-11T13:02:06+01:00,0,"","REQUEST.id%3D1%2527+GET.id%3D1%2527","%2Fczar%2Fplayground%2Fdvwa%2Fvulnerabilities%2Fsqli%2F%3Fid%3D1%2527%26Submit%3DSubmit","::1" -"%3A%3A1",2015-03-11T13:02:06+01:00,0,"","REQUEST.id%3D1%2527+GET.id%3D1%2527","%2Fczar%2Fplayground%2Fdvwa%2Fvulnerabilities%2Fsqli%2F%3Fid%3D1%2527%26Submit%3DSubmit","::1" -"%3A%3A1",2015-03-11T13:02:07+01:00,0,"","REQUEST.id%3D1%2527+GET.id%3D1%2527","%2Fczar%2Fplayground%2Fdvwa%2Fvulnerabilities%2Fsqli%2F%3Fid%3D1%2527%26Submit%3DSubmit","::1" -"%3A%3A1",2015-03-11T13:02:15+01:00,0,"","REQUEST.id%3D1%2527+GET.id%3D1%2527","%2Fczar%2Fplayground%2Fdvwa%2Fvulnerabilities%2Fsqli%2F%3Fid%3D1%2527%26Submit%3DSubmit","::1" -"%3A%3A1",2015-03-11T13:04:00+01:00,0,"","REQUEST.id%3D1%2527+GET.id%3D1%2527","%2Fczar%2Fplayground%2Fdvwa%2Fvulnerabilities%2Fsqli%2F%3Fid%3D1%2527%26Submit%3DSubmit","::1" -"%3A%3A1",2015-03-11T13:04:00+01:00,0,"","REQUEST.id%3D1%2527+GET.id%3D1%2527","%2Fczar%2Fplayground%2Fdvwa%2Fvulnerabilities%2Fsqli%2F%3Fid%3D1%2527%26Submit%3DSubmit","::1" -"%3A%3A1",2015-03-11T13:04:01+01:00,0,"","REQUEST.id%3D1%2527+GET.id%3D1%2527","%2Fczar%2Fplayground%2Fdvwa%2Fvulnerabilities%2Fsqli%2F%3Fid%3D1%2527%26Submit%3DSubmit","::1" -"%3A%3A1",2015-03-11T13:04:01+01:00,0,"","REQUEST.id%3D1%2527+GET.id%3D1%2527","%2Fczar%2Fplayground%2Fdvwa%2Fvulnerabilities%2Fsqli%2F%3Fid%3D1%2527%26Submit%3DSubmit","::1" -"%3A%3A1",2015-03-11T13:04:22+01:00,0,"","REQUEST.id%3D1%2527+GET.id%3D1%2527","%2Fczar%2Fplayground%2Fdvwa%2Fvulnerabilities%2Fsqli%2F%3Fid%3D1%2527%26Submit%3DSubmit","::1" -"%3A%3A1",2015-03-11T13:05:50+01:00,0,"","REQUEST.id%3D1%2527+GET.id%3D1%2527","%2Fczar%2Fplayground%2Fdvwa%2Fvulnerabilities%2Fsqli%2F%3Fid%3D1%2527%26Submit%3DSubmit","::1" -"%3A%3A1",2015-03-11T13:05:51+01:00,0,"","REQUEST.id%3D1%2527+GET.id%3D1%2527","%2Fczar%2Fplayground%2Fdvwa%2Fvulnerabilities%2Fsqli%2F%3Fid%3D1%2527%26Submit%3DSubmit","::1" -"%3A%3A1",2015-03-11T13:05:51+01:00,0,"","REQUEST.id%3D1%2527+GET.id%3D1%2527","%2Fczar%2Fplayground%2Fdvwa%2Fvulnerabilities%2Fsqli%2F%3Fid%3D1%2527%26Submit%3DSubmit","::1" -"%3A%3A1",2015-03-11T13:05:52+01:00,0,"","REQUEST.id%3D1%2527+GET.id%3D1%2527","%2Fczar%2Fplayground%2Fdvwa%2Fvulnerabilities%2Fsqli%2F%3Fid%3D1%2527%26Submit%3DSubmit","::1" -"%3A%3A1",2015-03-11T13:05:52+01:00,0,"","REQUEST.id%3D1%2527+GET.id%3D1%2527","%2Fczar%2Fplayground%2Fdvwa%2Fvulnerabilities%2Fsqli%2F%3Fid%3D1%2527%26Submit%3DSubmit","::1" -"%3A%3A1",2015-03-11T13:06:02+01:00,0,"","REQUEST.id%3D1%2527+GET.id%3D1%2527","%2Fczar%2Fplayground%2Fdvwa%2Fvulnerabilities%2Fsqli%2F%3Fid%3D1%2527%26Submit%3DSubmit","::1" -"%3A%3A1",2015-03-11T13:06:03+01:00,0,"","REQUEST.id%3D1%2527+GET.id%3D1%2527","%2Fczar%2Fplayground%2Fdvwa%2Fvulnerabilities%2Fsqli%2F%3Fid%3D1%2527%26Submit%3DSubmit","::1" -"%3A%3A1",2015-03-11T13:06:04+01:00,0,"","REQUEST.id%3D1%2527+GET.id%3D1%2527","%2Fczar%2Fplayground%2Fdvwa%2Fvulnerabilities%2Fsqli%2F%3Fid%3D1%2527%26Submit%3DSubmit","::1" -"%3A%3A1",2015-03-11T13:06:04+01:00,0,"","REQUEST.id%3D1%2527+GET.id%3D1%2527","%2Fczar%2Fplayground%2Fdvwa%2Fvulnerabilities%2Fsqli%2F%3Fid%3D1%2527%26Submit%3DSubmit","::1" -"%3A%3A1",2015-03-11T13:06:05+01:00,0,"","REQUEST.id%3D1%2527+GET.id%3D1%2527","%2Fczar%2Fplayground%2Fdvwa%2Fvulnerabilities%2Fsqli%2F%3Fid%3D1%2527%26Submit%3DSubmit","::1" -"%3A%3A1",2015-03-11T13:06:15+01:00,0,"","REQUEST.id%3D1%2527+GET.id%3D1%2527","%2Fczar%2Fplayground%2Fdvwa%2Fvulnerabilities%2Fsqli%2F%3Fid%3D1%2527%26Submit%3DSubmit","::1" -"%3A%3A1",2015-03-11T13:06:16+01:00,0,"","REQUEST.id%3D1%2527+GET.id%3D1%2527","%2Fczar%2Fplayground%2Fdvwa%2Fvulnerabilities%2Fsqli%2F%3Fid%3D1%2527%26Submit%3DSubmit","::1" -"%3A%3A1",2015-03-11T13:06:16+01:00,0,"","REQUEST.id%3D1%2527+GET.id%3D1%2527","%2Fczar%2Fplayground%2Fdvwa%2Fvulnerabilities%2Fsqli%2F%3Fid%3D1%2527%26Submit%3DSubmit","::1" -"%3A%3A1",2015-03-11T13:06:16+01:00,0,"","REQUEST.id%3D1%2527+GET.id%3D1%2527","%2Fczar%2Fplayground%2Fdvwa%2Fvulnerabilities%2Fsqli%2F%3Fid%3D1%2527%26Submit%3DSubmit","::1" -"%3A%3A1",2015-03-11T13:06:17+01:00,0,"","REQUEST.id%3D1%2527+GET.id%3D1%2527","%2Fczar%2Fplayground%2Fdvwa%2Fvulnerabilities%2Fsqli%2F%3Fid%3D1%2527%26Submit%3DSubmit","::1" -"%3A%3A1",2015-03-11T13:06:25+01:00,0,"","REQUEST.id%3D1%2527+GET.id%3D1%2527","%2Fczar%2Fplayground%2Fdvwa%2Fvulnerabilities%2Fsqli%2F%3Fid%3D1%2527%26Submit%3DSubmit","::1" -"%3A%3A1",2015-03-11T13:06:26+01:00,0,"","REQUEST.id%3D1%2527+GET.id%3D1%2527","%2Fczar%2Fplayground%2Fdvwa%2Fvulnerabilities%2Fsqli%2F%3Fid%3D1%2527%26Submit%3DSubmit","::1" -"%3A%3A1",2015-03-11T13:06:27+01:00,0,"","REQUEST.id%3D1%2527+GET.id%3D1%2527","%2Fczar%2Fplayground%2Fdvwa%2Fvulnerabilities%2Fsqli%2F%3Fid%3D1%2527%26Submit%3DSubmit","::1" -"%3A%3A1",2015-03-11T13:06:27+01:00,0,"","REQUEST.id%3D1%2527+GET.id%3D1%2527","%2Fczar%2Fplayground%2Fdvwa%2Fvulnerabilities%2Fsqli%2F%3Fid%3D1%2527%26Submit%3DSubmit","::1" -"%3A%3A1",2015-03-11T13:06:27+01:00,0,"","REQUEST.id%3D1%2527+GET.id%3D1%2527","%2Fczar%2Fplayground%2Fdvwa%2Fvulnerabilities%2Fsqli%2F%3Fid%3D1%2527%26Submit%3DSubmit","::1" -"%3A%3A1",2015-03-11T13:06:35+01:00,0,"","REQUEST.id%3D1%2527+GET.id%3D1%2527","%2Fczar%2Fplayground%2Fdvwa%2Fvulnerabilities%2Fsqli%2F%3Fid%3D1%2527%26Submit%3DSubmit","::1" -"%3A%3A1",2015-03-11T13:06:35+01:00,0,"","REQUEST.id%3D1%2527+GET.id%3D1%2527","%2Fczar%2Fplayground%2Fdvwa%2Fvulnerabilities%2Fsqli%2F%3Fid%3D1%2527%26Submit%3DSubmit","::1" -"%3A%3A1",2015-03-11T13:06:36+01:00,0,"","REQUEST.id%3D1%2527+GET.id%3D1%2527","%2Fczar%2Fplayground%2Fdvwa%2Fvulnerabilities%2Fsqli%2F%3Fid%3D1%2527%26Submit%3DSubmit","::1" -"%3A%3A1",2015-03-11T13:06:36+01:00,0,"","REQUEST.id%3D1%2527+GET.id%3D1%2527","%2Fczar%2Fplayground%2Fdvwa%2Fvulnerabilities%2Fsqli%2F%3Fid%3D1%2527%26Submit%3DSubmit","::1" -"%3A%3A1",2015-03-11T13:06:36+01:00,0,"","REQUEST.id%3D1%2527+GET.id%3D1%2527","%2Fczar%2Fplayground%2Fdvwa%2Fvulnerabilities%2Fsqli%2F%3Fid%3D1%2527%26Submit%3DSubmit","::1" -"%3A%3A1",2015-03-11T13:06:58+01:00,0,"","REQUEST.id%3D1%2527+GET.id%3D1%2527","%2Fczar%2Fplayground%2Fdvwa%2Fvulnerabilities%2Fsqli%2F%3Fid%3D1%2527%26Submit%3DSubmit","::1" -"%3A%3A1",2015-03-11T13:06:58+01:00,0,"","REQUEST.id%3D1%2527+GET.id%3D1%2527","%2Fczar%2Fplayground%2Fdvwa%2Fvulnerabilities%2Fsqli%2F%3Fid%3D1%2527%26Submit%3DSubmit","::1" -"%3A%3A1",2015-03-11T13:06:59+01:00,0,"","REQUEST.id%3D1%2527+GET.id%3D1%2527","%2Fczar%2Fplayground%2Fdvwa%2Fvulnerabilities%2Fsqli%2F%3Fid%3D1%2527%26Submit%3DSubmit","::1" -"%3A%3A1",2015-03-11T13:06:59+01:00,0,"","REQUEST.id%3D1%2527+GET.id%3D1%2527","%2Fczar%2Fplayground%2Fdvwa%2Fvulnerabilities%2Fsqli%2F%3Fid%3D1%2527%26Submit%3DSubmit","::1" -"%3A%3A1",2015-03-11T13:06:59+01:00,0,"","REQUEST.id%3D1%2527+GET.id%3D1%2527","%2Fczar%2Fplayground%2Fdvwa%2Fvulnerabilities%2Fsqli%2F%3Fid%3D1%2527%26Submit%3DSubmit","::1" -"%3A%3A1",2015-03-11T13:07:58+01:00,0,"","REQUEST.id%3D1%2527+GET.id%3D1%2527","%2Fczar%2Fplayground%2Fdvwa%2Fvulnerabilities%2Fsqli%2F%3Fid%3D1%2527%26Submit%3DSubmit","::1" -"%3A%3A1",2015-03-11T13:07:59+01:00,0,"","REQUEST.id%3D1%2527+GET.id%3D1%2527","%2Fczar%2Fplayground%2Fdvwa%2Fvulnerabilities%2Fsqli%2F%3Fid%3D1%2527%26Submit%3DSubmit","::1" -"%3A%3A1",2015-03-11T13:07:59+01:00,0,"","REQUEST.id%3D1%2527+GET.id%3D1%2527","%2Fczar%2Fplayground%2Fdvwa%2Fvulnerabilities%2Fsqli%2F%3Fid%3D1%2527%26Submit%3DSubmit","::1" -"%3A%3A1",2015-03-11T13:07:59+01:00,0,"","REQUEST.id%3D1%2527+GET.id%3D1%2527","%2Fczar%2Fplayground%2Fdvwa%2Fvulnerabilities%2Fsqli%2F%3Fid%3D1%2527%26Submit%3DSubmit","::1" -"%3A%3A1",2015-03-11T13:07:59+01:00,0,"","REQUEST.id%3D1%2527+GET.id%3D1%2527","%2Fczar%2Fplayground%2Fdvwa%2Fvulnerabilities%2Fsqli%2F%3Fid%3D1%2527%26Submit%3DSubmit","::1" -"%3A%3A1",2015-03-11T13:08:10+01:00,0,"","REQUEST.id%3D1%2527+GET.id%3D1%2527","%2Fczar%2Fplayground%2Fdvwa%2Fvulnerabilities%2Fsqli%2F%3Fid%3D1%2527%26Submit%3DSubmit","::1" -"%3A%3A1",2015-03-11T13:08:10+01:00,0,"","REQUEST.id%3D1%2527+GET.id%3D1%2527","%2Fczar%2Fplayground%2Fdvwa%2Fvulnerabilities%2Fsqli%2F%3Fid%3D1%2527%26Submit%3DSubmit","::1" -"%3A%3A1",2015-03-11T13:08:11+01:00,0,"","REQUEST.id%3D1%2527+GET.id%3D1%2527","%2Fczar%2Fplayground%2Fdvwa%2Fvulnerabilities%2Fsqli%2F%3Fid%3D1%2527%26Submit%3DSubmit","::1" -"%3A%3A1",2015-03-11T13:08:11+01:00,0,"","REQUEST.id%3D1%2527+GET.id%3D1%2527","%2Fczar%2Fplayground%2Fdvwa%2Fvulnerabilities%2Fsqli%2F%3Fid%3D1%2527%26Submit%3DSubmit","::1" -"%3A%3A1",2015-03-11T13:08:11+01:00,0,"","REQUEST.id%3D1%2527+GET.id%3D1%2527","%2Fczar%2Fplayground%2Fdvwa%2Fvulnerabilities%2Fsqli%2F%3Fid%3D1%2527%26Submit%3DSubmit","::1" -"%3A%3A1",2015-03-11T13:08:20+01:00,0,"","REQUEST.id%3D1%2527+GET.id%3D1%2527","%2Fczar%2Fplayground%2Fdvwa%2Fvulnerabilities%2Fsqli%2F%3Fid%3D1%2527%26Submit%3DSubmit","::1" -"%3A%3A1",2015-03-11T13:08:20+01:00,0,"","REQUEST.id%3D1%2527+GET.id%3D1%2527","%2Fczar%2Fplayground%2Fdvwa%2Fvulnerabilities%2Fsqli%2F%3Fid%3D1%2527%26Submit%3DSubmit","::1" -"%3A%3A1",2015-03-11T13:08:21+01:00,0,"","REQUEST.id%3D1%2527+GET.id%3D1%2527","%2Fczar%2Fplayground%2Fdvwa%2Fvulnerabilities%2Fsqli%2F%3Fid%3D1%2527%26Submit%3DSubmit","::1" -"%3A%3A1",2015-03-11T13:08:21+01:00,0,"","REQUEST.id%3D1%2527+GET.id%3D1%2527","%2Fczar%2Fplayground%2Fdvwa%2Fvulnerabilities%2Fsqli%2F%3Fid%3D1%2527%26Submit%3DSubmit","::1" -"%3A%3A1",2015-03-11T13:08:21+01:00,0,"","REQUEST.id%3D1%2527+GET.id%3D1%2527","%2Fczar%2Fplayground%2Fdvwa%2Fvulnerabilities%2Fsqli%2F%3Fid%3D1%2527%26Submit%3DSubmit","::1" -"%3A%3A1",2015-03-11T13:08:36+01:00,0,"","REQUEST.id%3D1%2527+GET.id%3D1%2527","%2Fczar%2Fplayground%2Fdvwa%2Fvulnerabilities%2Fsqli%2F%3Fid%3D1%2527%26Submit%3DSubmit","::1" -"%3A%3A1",2015-03-11T13:08:36+01:00,0,"","REQUEST.id%3D1%2527+GET.id%3D1%2527","%2Fczar%2Fplayground%2Fdvwa%2Fvulnerabilities%2Fsqli%2F%3Fid%3D1%2527%26Submit%3DSubmit","::1" -"%3A%3A1",2015-03-11T13:08:37+01:00,0,"","REQUEST.id%3D1%2527+GET.id%3D1%2527","%2Fczar%2Fplayground%2Fdvwa%2Fvulnerabilities%2Fsqli%2F%3Fid%3D1%2527%26Submit%3DSubmit","::1" -"%3A%3A1",2015-03-11T13:08:37+01:00,0,"","REQUEST.id%3D1%2527+GET.id%3D1%2527","%2Fczar%2Fplayground%2Fdvwa%2Fvulnerabilities%2Fsqli%2F%3Fid%3D1%2527%26Submit%3DSubmit","::1" -"%3A%3A1",2015-03-11T13:08:38+01:00,0,"","REQUEST.id%3D1%2527+GET.id%3D1%2527","%2Fczar%2Fplayground%2Fdvwa%2Fvulnerabilities%2Fsqli%2F%3Fid%3D1%2527%26Submit%3DSubmit","::1" -"%3A%3A1",2015-03-11T13:08:59+01:00,0,"","REQUEST.id%3D1%2527+GET.id%3D1%2527","%2Fczar%2Fplayground%2Fdvwa%2Fvulnerabilities%2Fsqli%2F%3Fid%3D1%2527%26Submit%3DSubmit","::1" -"%3A%3A1",2015-03-11T13:09:00+01:00,0,"","REQUEST.id%3D1%2527+GET.id%3D1%2527","%2Fczar%2Fplayground%2Fdvwa%2Fvulnerabilities%2Fsqli%2F%3Fid%3D1%2527%26Submit%3DSubmit","::1" -"%3A%3A1",2015-03-11T13:09:01+01:00,0,"","REQUEST.id%3D1%2527+GET.id%3D1%2527","%2Fczar%2Fplayground%2Fdvwa%2Fvulnerabilities%2Fsqli%2F%3Fid%3D1%2527%26Submit%3DSubmit","::1" -"%3A%3A1",2015-03-11T13:09:01+01:00,0,"","REQUEST.id%3D1%2527+GET.id%3D1%2527","%2Fczar%2Fplayground%2Fdvwa%2Fvulnerabilities%2Fsqli%2F%3Fid%3D1%2527%26Submit%3DSubmit","::1" -"%3A%3A1",2015-03-11T13:09:01+01:00,0,"","REQUEST.id%3D1%2527+GET.id%3D1%2527","%2Fczar%2Fplayground%2Fdvwa%2Fvulnerabilities%2Fsqli%2F%3Fid%3D1%2527%26Submit%3DSubmit","::1" -"%3A%3A1",2015-03-11T13:11:32+01:00,0,"","REQUEST.id%3D1%2527+GET.id%3D1%2527","%2Fczar%2Fplayground%2Fdvwa%2Fvulnerabilities%2Fsqli%2F%3Fid%3D1%2527%26Submit%3DSubmit","::1" -"%3A%3A1",2015-03-11T13:11:33+01:00,0,"","REQUEST.id%3D1%2527+GET.id%3D1%2527","%2Fczar%2Fplayground%2Fdvwa%2Fvulnerabilities%2Fsqli%2F%3Fid%3D1%2527%26Submit%3DSubmit","::1" -"%3A%3A1",2015-03-11T13:11:35+01:00,0,"","REQUEST.id%3D1%2527+GET.id%3D1%2527","%2Fczar%2Fplayground%2Fdvwa%2Fvulnerabilities%2Fsqli%2F%3Fid%3D1%2527%26Submit%3DSubmit","::1" -"%3A%3A1",2015-03-11T13:11:35+01:00,0,"","REQUEST.id%3D1%2527+GET.id%3D1%2527","%2Fczar%2Fplayground%2Fdvwa%2Fvulnerabilities%2Fsqli%2F%3Fid%3D1%2527%26Submit%3DSubmit","::1" -"%3A%3A1",2015-03-11T13:11:36+01:00,0,"","REQUEST.id%3D1%2527+GET.id%3D1%2527","%2Fczar%2Fplayground%2Fdvwa%2Fvulnerabilities%2Fsqli%2F%3Fid%3D1%2527%26Submit%3DSubmit","::1" -"%3A%3A1",2015-03-11T13:11:47+01:00,0,"","REQUEST.id%3D1%2527+GET.id%3D1%2527","%2Fczar%2Fplayground%2Fdvwa%2Fvulnerabilities%2Fsqli%2F%3Fid%3D1%2527%26Submit%3DSubmit","::1" -"%3A%3A1",2015-03-11T13:11:48+01:00,0,"","REQUEST.id%3D1%2527+GET.id%3D1%2527","%2Fczar%2Fplayground%2Fdvwa%2Fvulnerabilities%2Fsqli%2F%3Fid%3D1%2527%26Submit%3DSubmit","::1" -"%3A%3A1",2015-03-11T13:11:48+01:00,0,"","REQUEST.id%3D1%2527+GET.id%3D1%2527","%2Fczar%2Fplayground%2Fdvwa%2Fvulnerabilities%2Fsqli%2F%3Fid%3D1%2527%26Submit%3DSubmit","::1" -"%3A%3A1",2015-03-11T13:11:48+01:00,0,"","REQUEST.id%3D1%2527+GET.id%3D1%2527","%2Fczar%2Fplayground%2Fdvwa%2Fvulnerabilities%2Fsqli%2F%3Fid%3D1%2527%26Submit%3DSubmit","::1" -"%3A%3A1",2015-03-11T13:11:49+01:00,0,"","REQUEST.id%3D1%2527+GET.id%3D1%2527","%2Fczar%2Fplayground%2Fdvwa%2Fvulnerabilities%2Fsqli%2F%3Fid%3D1%2527%26Submit%3DSubmit","::1" -"%3A%3A1",2015-03-11T13:11:58+01:00,0,"","REQUEST.id%3D1%2527+GET.id%3D1%2527","%2Fczar%2Fplayground%2Fdvwa%2Fvulnerabilities%2Fsqli%2F%3Fid%3D1%2527%26Submit%3DSubmit","::1" -"%3A%3A1",2015-03-11T13:11:59+01:00,0,"","REQUEST.id%3D1%2527+GET.id%3D1%2527","%2Fczar%2Fplayground%2Fdvwa%2Fvulnerabilities%2Fsqli%2F%3Fid%3D1%2527%26Submit%3DSubmit","::1" -"%3A%3A1",2015-03-11T13:11:59+01:00,0,"","REQUEST.id%3D1%2527+GET.id%3D1%2527","%2Fczar%2Fplayground%2Fdvwa%2Fvulnerabilities%2Fsqli%2F%3Fid%3D1%2527%26Submit%3DSubmit","::1" -"%3A%3A1",2015-03-11T13:12:00+01:00,0,"","REQUEST.id%3D1%2527+GET.id%3D1%2527","%2Fczar%2Fplayground%2Fdvwa%2Fvulnerabilities%2Fsqli%2F%3Fid%3D1%2527%26Submit%3DSubmit","::1" -"%3A%3A1",2015-03-11T13:12:00+01:00,0,"","REQUEST.id%3D1%2527+GET.id%3D1%2527","%2Fczar%2Fplayground%2Fdvwa%2Fvulnerabilities%2Fsqli%2F%3Fid%3D1%2527%26Submit%3DSubmit","::1" -"%3A%3A1",2015-03-11T13:12:08+01:00,0,"","REQUEST.id%3D1%2527+GET.id%3D1%2527","%2Fczar%2Fplayground%2Fdvwa%2Fvulnerabilities%2Fsqli%2F%3Fid%3D1%2527%26Submit%3DSubmit","::1" -"%3A%3A1",2015-03-11T13:12:08+01:00,0,"","REQUEST.id%3D1%2527+GET.id%3D1%2527","%2Fczar%2Fplayground%2Fdvwa%2Fvulnerabilities%2Fsqli%2F%3Fid%3D1%2527%26Submit%3DSubmit","::1" -"%3A%3A1",2015-03-11T13:12:08+01:00,0,"","REQUEST.id%3D1%2527+GET.id%3D1%2527","%2Fczar%2Fplayground%2Fdvwa%2Fvulnerabilities%2Fsqli%2F%3Fid%3D1%2527%26Submit%3DSubmit","::1" -"%3A%3A1",2015-03-11T13:12:09+01:00,0,"","REQUEST.id%3D1%2527+GET.id%3D1%2527","%2Fczar%2Fplayground%2Fdvwa%2Fvulnerabilities%2Fsqli%2F%3Fid%3D1%2527%26Submit%3DSubmit","::1" -"%3A%3A1",2015-03-11T13:12:09+01:00,0,"","REQUEST.id%3D1%2527+GET.id%3D1%2527","%2Fczar%2Fplayground%2Fdvwa%2Fvulnerabilities%2Fsqli%2F%3Fid%3D1%2527%26Submit%3DSubmit","::1" -"%3A%3A1",2015-03-11T13:12:17+01:00,0,"","REQUEST.id%3D1%2527+GET.id%3D1%2527","%2Fczar%2Fplayground%2Fdvwa%2Fvulnerabilities%2Fsqli%2F%3Fid%3D1%2527%26Submit%3DSubmit","::1" -"%3A%3A1",2015-03-11T13:12:18+01:00,0,"","REQUEST.id%3D1%2527+GET.id%3D1%2527","%2Fczar%2Fplayground%2Fdvwa%2Fvulnerabilities%2Fsqli%2F%3Fid%3D1%2527%26Submit%3DSubmit","::1" -"%3A%3A1",2015-03-11T13:12:18+01:00,0,"","REQUEST.id%3D1%2527+GET.id%3D1%2527","%2Fczar%2Fplayground%2Fdvwa%2Fvulnerabilities%2Fsqli%2F%3Fid%3D1%2527%26Submit%3DSubmit","::1" -"%3A%3A1",2015-03-11T13:12:19+01:00,0,"","REQUEST.id%3D1%2527+GET.id%3D1%2527","%2Fczar%2Fplayground%2Fdvwa%2Fvulnerabilities%2Fsqli%2F%3Fid%3D1%2527%26Submit%3DSubmit","::1" -"%3A%3A1",2015-03-11T13:12:19+01:00,0,"","REQUEST.id%3D1%2527+GET.id%3D1%2527","%2Fczar%2Fplayground%2Fdvwa%2Fvulnerabilities%2Fsqli%2F%3Fid%3D1%2527%26Submit%3DSubmit","::1" -"%3A%3A1",2015-03-11T13:12:39+01:00,0,"","REQUEST.id%3D1%2527+GET.id%3D1%2527","%2Fczar%2Fplayground%2Fdvwa%2Fvulnerabilities%2Fsqli%2F%3Fid%3D1%2527%26Submit%3DSubmit","::1" -"%3A%3A1",2015-03-11T13:12:40+01:00,0,"","REQUEST.id%3D1%2527+GET.id%3D1%2527","%2Fczar%2Fplayground%2Fdvwa%2Fvulnerabilities%2Fsqli%2F%3Fid%3D1%2527%26Submit%3DSubmit","::1" -"%3A%3A1",2015-03-11T13:12:40+01:00,0,"","REQUEST.id%3D1%2527+GET.id%3D1%2527","%2Fczar%2Fplayground%2Fdvwa%2Fvulnerabilities%2Fsqli%2F%3Fid%3D1%2527%26Submit%3DSubmit","::1" -"%3A%3A1",2015-03-11T13:12:41+01:00,0,"","REQUEST.id%3D1%2527+GET.id%3D1%2527","%2Fczar%2Fplayground%2Fdvwa%2Fvulnerabilities%2Fsqli%2F%3Fid%3D1%2527%26Submit%3DSubmit","::1" -"%3A%3A1",2015-03-11T13:12:41+01:00,0,"","REQUEST.id%3D1%2527+GET.id%3D1%2527","%2Fczar%2Fplayground%2Fdvwa%2Fvulnerabilities%2Fsqli%2F%3Fid%3D1%2527%26Submit%3DSubmit","::1" -"%3A%3A1",2015-03-11T13:13:27+01:00,0,"","REQUEST.id%3D1%2527+GET.id%3D1%2527","%2Fczar%2Fplayground%2Fdvwa%2Fvulnerabilities%2Fsqli%2F%3Fid%3D1%2527%26Submit%3DSubmit","::1" -"%3A%3A1",2015-03-11T13:13:28+01:00,0,"","REQUEST.id%3D1%2527+GET.id%3D1%2527","%2Fczar%2Fplayground%2Fdvwa%2Fvulnerabilities%2Fsqli%2F%3Fid%3D1%2527%26Submit%3DSubmit","::1" -"%3A%3A1",2015-03-11T13:13:28+01:00,0,"","REQUEST.id%3D1%2527+GET.id%3D1%2527","%2Fczar%2Fplayground%2Fdvwa%2Fvulnerabilities%2Fsqli%2F%3Fid%3D1%2527%26Submit%3DSubmit","::1" -"%3A%3A1",2015-03-11T13:13:28+01:00,0,"","REQUEST.id%3D1%2527+GET.id%3D1%2527","%2Fczar%2Fplayground%2Fdvwa%2Fvulnerabilities%2Fsqli%2F%3Fid%3D1%2527%26Submit%3DSubmit","::1" -"%3A%3A1",2015-03-11T13:13:28+01:00,0,"","REQUEST.id%3D1%2527+GET.id%3D1%2527","%2Fczar%2Fplayground%2Fdvwa%2Fvulnerabilities%2Fsqli%2F%3Fid%3D1%2527%26Submit%3DSubmit","::1" -"%3A%3A1",2015-03-11T13:13:40+01:00,0,"","REQUEST.id%3D1%2527+GET.id%3D1%2527","%2Fczar%2Fplayground%2Fdvwa%2Fvulnerabilities%2Fsqli%2F%3Fid%3D1%2527%26Submit%3DSubmit","::1" -"%3A%3A1",2015-03-11T13:13:40+01:00,0,"","REQUEST.id%3D1%2527+GET.id%3D1%2527","%2Fczar%2Fplayground%2Fdvwa%2Fvulnerabilities%2Fsqli%2F%3Fid%3D1%2527%26Submit%3DSubmit","::1" -"%3A%3A1",2015-03-11T13:13:41+01:00,0,"","REQUEST.id%3D1%2527+GET.id%3D1%2527","%2Fczar%2Fplayground%2Fdvwa%2Fvulnerabilities%2Fsqli%2F%3Fid%3D1%2527%26Submit%3DSubmit","::1" -"%3A%3A1",2015-03-11T13:13:41+01:00,0,"","REQUEST.id%3D1%2527+GET.id%3D1%2527","%2Fczar%2Fplayground%2Fdvwa%2Fvulnerabilities%2Fsqli%2F%3Fid%3D1%2527%26Submit%3DSubmit","::1" -"%3A%3A1",2015-03-11T13:13:41+01:00,0,"","REQUEST.id%3D1%2527+GET.id%3D1%2527","%2Fczar%2Fplayground%2Fdvwa%2Fvulnerabilities%2Fsqli%2F%3Fid%3D1%2527%26Submit%3DSubmit","::1" -"%3A%3A1",2015-03-11T13:13:49+01:00,0,"","REQUEST.id%3D1%2527+GET.id%3D1%2527","%2Fczar%2Fplayground%2Fdvwa%2Fvulnerabilities%2Fsqli%2F%3Fid%3D1%2527%26Submit%3DSubmit","::1" -"%3A%3A1",2015-03-11T13:13:49+01:00,0,"","REQUEST.id%3D1%2527+GET.id%3D1%2527","%2Fczar%2Fplayground%2Fdvwa%2Fvulnerabilities%2Fsqli%2F%3Fid%3D1%2527%26Submit%3DSubmit","::1" -"%3A%3A1",2015-03-11T13:13:50+01:00,0,"","REQUEST.id%3D1%2527+GET.id%3D1%2527","%2Fczar%2Fplayground%2Fdvwa%2Fvulnerabilities%2Fsqli%2F%3Fid%3D1%2527%26Submit%3DSubmit","::1" -"%3A%3A1",2015-03-11T13:13:50+01:00,0,"","REQUEST.id%3D1%2527+GET.id%3D1%2527","%2Fczar%2Fplayground%2Fdvwa%2Fvulnerabilities%2Fsqli%2F%3Fid%3D1%2527%26Submit%3DSubmit","::1" -"%3A%3A1",2015-03-11T13:13:50+01:00,0,"","REQUEST.id%3D1%2527+GET.id%3D1%2527","%2Fczar%2Fplayground%2Fdvwa%2Fvulnerabilities%2Fsqli%2F%3Fid%3D1%2527%26Submit%3DSubmit","::1" -"%3A%3A1",2015-03-11T13:14:11+01:00,0,"","REQUEST.id%3D1%2527+GET.id%3D1%2527","%2Fczar%2Fplayground%2Fdvwa%2Fvulnerabilities%2Fsqli%2F%3Fid%3D1%2527%26Submit%3DSubmit","::1" -"%3A%3A1",2015-03-11T13:14:11+01:00,0,"","REQUEST.id%3D1%2527+GET.id%3D1%2527","%2Fczar%2Fplayground%2Fdvwa%2Fvulnerabilities%2Fsqli%2F%3Fid%3D1%2527%26Submit%3DSubmit","::1" -"%3A%3A1",2015-03-11T13:14:11+01:00,0,"","REQUEST.id%3D1%2527+GET.id%3D1%2527","%2Fczar%2Fplayground%2Fdvwa%2Fvulnerabilities%2Fsqli%2F%3Fid%3D1%2527%26Submit%3DSubmit","::1" -"%3A%3A1",2015-03-11T13:14:11+01:00,0,"","REQUEST.id%3D1%2527+GET.id%3D1%2527","%2Fczar%2Fplayground%2Fdvwa%2Fvulnerabilities%2Fsqli%2F%3Fid%3D1%2527%26Submit%3DSubmit","::1" -"%3A%3A1",2015-03-11T13:14:12+01:00,0,"","REQUEST.id%3D1%2527+GET.id%3D1%2527","%2Fczar%2Fplayground%2Fdvwa%2Fvulnerabilities%2Fsqli%2F%3Fid%3D1%2527%26Submit%3DSubmit","::1" -"%3A%3A1",2015-03-11T13:14:28+01:00,0,"","REQUEST.id%3D1%2527+GET.id%3D1%2527","%2Fczar%2Fplayground%2Fdvwa%2Fvulnerabilities%2Fsqli%2F%3Fid%3D1%2527%26Submit%3DSubmit","::1" -"%3A%3A1",2015-03-11T13:14:29+01:00,0,"","REQUEST.id%3D1%2527+GET.id%3D1%2527","%2Fczar%2Fplayground%2Fdvwa%2Fvulnerabilities%2Fsqli%2F%3Fid%3D1%2527%26Submit%3DSubmit","::1" -"%3A%3A1",2015-03-11T13:14:29+01:00,0,"","REQUEST.id%3D1%2527+GET.id%3D1%2527","%2Fczar%2Fplayground%2Fdvwa%2Fvulnerabilities%2Fsqli%2F%3Fid%3D1%2527%26Submit%3DSubmit","::1" -"%3A%3A1",2015-03-11T13:14:29+01:00,0,"","REQUEST.id%3D1%2527+GET.id%3D1%2527","%2Fczar%2Fplayground%2Fdvwa%2Fvulnerabilities%2Fsqli%2F%3Fid%3D1%2527%26Submit%3DSubmit","::1" -"%3A%3A1",2015-03-11T13:14:30+01:00,0,"","REQUEST.id%3D1%2527+GET.id%3D1%2527","%2Fczar%2Fplayground%2Fdvwa%2Fvulnerabilities%2Fsqli%2F%3Fid%3D1%2527%26Submit%3DSubmit","::1" -"%3A%3A1",2015-03-11T13:14:46+01:00,0,"","REQUEST.id%3D1%2527+GET.id%3D1%2527","%2Fczar%2Fplayground%2Fdvwa%2Fvulnerabilities%2Fsqli%2F%3Fid%3D1%2527%26Submit%3DSubmit","::1" -"%3A%3A1",2015-03-11T13:14:47+01:00,0,"","REQUEST.id%3D1%2527+GET.id%3D1%2527","%2Fczar%2Fplayground%2Fdvwa%2Fvulnerabilities%2Fsqli%2F%3Fid%3D1%2527%26Submit%3DSubmit","::1" -"%3A%3A1",2015-03-11T13:14:47+01:00,0,"","REQUEST.id%3D1%2527+GET.id%3D1%2527","%2Fczar%2Fplayground%2Fdvwa%2Fvulnerabilities%2Fsqli%2F%3Fid%3D1%2527%26Submit%3DSubmit","::1" -"%3A%3A1",2015-03-11T13:14:47+01:00,0,"","REQUEST.id%3D1%2527+GET.id%3D1%2527","%2Fczar%2Fplayground%2Fdvwa%2Fvulnerabilities%2Fsqli%2F%3Fid%3D1%2527%26Submit%3DSubmit","::1" -"%3A%3A1",2015-03-11T13:14:47+01:00,0,"","REQUEST.id%3D1%2527+GET.id%3D1%2527","%2Fczar%2Fplayground%2Fdvwa%2Fvulnerabilities%2Fsqli%2F%3Fid%3D1%2527%26Submit%3DSubmit","::1" -"%3A%3A1",2015-03-11T13:15:46+01:00,0,"","REQUEST.id%3D1%2527+GET.id%3D1%2527","%2Fczar%2Fplayground%2Fdvwa%2Fvulnerabilities%2Fsqli%2F%3Fid%3D1%2527%26Submit%3DSubmit","::1" -"%3A%3A1",2015-03-11T13:15:46+01:00,0,"","REQUEST.id%3D1%2527+GET.id%3D1%2527","%2Fczar%2Fplayground%2Fdvwa%2Fvulnerabilities%2Fsqli%2F%3Fid%3D1%2527%26Submit%3DSubmit","::1" -"%3A%3A1",2015-03-11T13:15:46+01:00,0,"","REQUEST.id%3D1%2527+GET.id%3D1%2527","%2Fczar%2Fplayground%2Fdvwa%2Fvulnerabilities%2Fsqli%2F%3Fid%3D1%2527%26Submit%3DSubmit","::1" -"%3A%3A1",2015-03-11T13:15:47+01:00,0,"","REQUEST.id%3D1%2527+GET.id%3D1%2527","%2Fczar%2Fplayground%2Fdvwa%2Fvulnerabilities%2Fsqli%2F%3Fid%3D1%2527%26Submit%3DSubmit","::1" -"%3A%3A1",2015-03-11T13:15:47+01:00,0,"","REQUEST.id%3D1%2527+GET.id%3D1%2527","%2Fczar%2Fplayground%2Fdvwa%2Fvulnerabilities%2Fsqli%2F%3Fid%3D1%2527%26Submit%3DSubmit","::1" -"%3A%3A1",2015-03-11T13:15:56+01:00,0,"","REQUEST.id%3D1%2527+GET.id%3D1%2527","%2Fczar%2Fplayground%2Fdvwa%2Fvulnerabilities%2Fsqli%2F%3Fid%3D1%2527%26Submit%3DSubmit","::1" -"%3A%3A1",2015-03-11T13:15:57+01:00,0,"","REQUEST.id%3D1%2527+GET.id%3D1%2527","%2Fczar%2Fplayground%2Fdvwa%2Fvulnerabilities%2Fsqli%2F%3Fid%3D1%2527%26Submit%3DSubmit","::1" -"%3A%3A1",2015-03-11T13:15:57+01:00,0,"","REQUEST.id%3D1%2527+GET.id%3D1%2527","%2Fczar%2Fplayground%2Fdvwa%2Fvulnerabilities%2Fsqli%2F%3Fid%3D1%2527%26Submit%3DSubmit","::1" -"%3A%3A1",2015-03-11T13:15:57+01:00,0,"","REQUEST.id%3D1%2527+GET.id%3D1%2527","%2Fczar%2Fplayground%2Fdvwa%2Fvulnerabilities%2Fsqli%2F%3Fid%3D1%2527%26Submit%3DSubmit","::1" -"%3A%3A1",2015-03-11T13:15:58+01:00,0,"","REQUEST.id%3D1%2527+GET.id%3D1%2527","%2Fczar%2Fplayground%2Fdvwa%2Fvulnerabilities%2Fsqli%2F%3Fid%3D1%2527%26Submit%3DSubmit","::1" -"%3A%3A1",2015-03-11T13:16:10+01:00,0,"","REQUEST.id%3D1%2527+GET.id%3D1%2527","%2Fczar%2Fplayground%2Fdvwa%2Fvulnerabilities%2Fsqli%2F%3Fid%3D1%2527%26Submit%3DSubmit","::1" -"%3A%3A1",2015-03-11T13:16:21+01:00,0,"","REQUEST.id%3D1%2527+GET.id%3D1%2527","%2Fczar%2Fplayground%2Fdvwa%2Fvulnerabilities%2Fsqli%2F%3Fid%3D1%2527%26Submit%3DSubmit","::1" -"%3A%3A1",2015-03-11T13:16:21+01:00,0,"","REQUEST.id%3D1%2527+GET.id%3D1%2527","%2Fczar%2Fplayground%2Fdvwa%2Fvulnerabilities%2Fsqli%2F%3Fid%3D1%2527%26Submit%3DSubmit","::1" -"%3A%3A1",2015-03-11T13:16:21+01:00,0,"","REQUEST.id%3D1%2527+GET.id%3D1%2527","%2Fczar%2Fplayground%2Fdvwa%2Fvulnerabilities%2Fsqli%2F%3Fid%3D1%2527%26Submit%3DSubmit","::1" -"%3A%3A1",2015-03-11T13:16:21+01:00,0,"","REQUEST.id%3D1%2527+GET.id%3D1%2527","%2Fczar%2Fplayground%2Fdvwa%2Fvulnerabilities%2Fsqli%2F%3Fid%3D1%2527%26Submit%3DSubmit","::1" -"%3A%3A1",2015-03-11T13:16:39+01:00,0,"","REQUEST.id%3D1%2527+GET.id%3D1%2527","%2Fczar%2Fplayground%2Fdvwa%2Fvulnerabilities%2Fsqli%2F%3Fid%3D1%2527%26Submit%3DSubmit","::1" -"%3A%3A1",2015-03-11T13:16:39+01:00,0,"","REQUEST.id%3D1%2527+GET.id%3D1%2527","%2Fczar%2Fplayground%2Fdvwa%2Fvulnerabilities%2Fsqli%2F%3Fid%3D1%2527%26Submit%3DSubmit","::1" -"%3A%3A1",2015-03-11T13:16:40+01:00,0,"","REQUEST.id%3D1%2527+GET.id%3D1%2527","%2Fczar%2Fplayground%2Fdvwa%2Fvulnerabilities%2Fsqli%2F%3Fid%3D1%2527%26Submit%3DSubmit","::1" -"%3A%3A1",2015-03-11T13:16:40+01:00,0,"","REQUEST.id%3D1%2527+GET.id%3D1%2527","%2Fczar%2Fplayground%2Fdvwa%2Fvulnerabilities%2Fsqli%2F%3Fid%3D1%2527%26Submit%3DSubmit","::1" -"%3A%3A1",2015-03-11T13:16:40+01:00,0,"","REQUEST.id%3D1%2527+GET.id%3D1%2527","%2Fczar%2Fplayground%2Fdvwa%2Fvulnerabilities%2Fsqli%2F%3Fid%3D1%2527%26Submit%3DSubmit","::1" -"%3A%3A1",2015-03-11T13:16:59+01:00,0,"","REQUEST.id%3D1%2527+GET.id%3D1%2527","%2Fczar%2Fplayground%2Fdvwa%2Fvulnerabilities%2Fsqli%2F%3Fid%3D1%2527%26Submit%3DSubmit","::1" -"%3A%3A1",2015-03-11T13:16:59+01:00,0,"","REQUEST.id%3D1%2527+GET.id%3D1%2527","%2Fczar%2Fplayground%2Fdvwa%2Fvulnerabilities%2Fsqli%2F%3Fid%3D1%2527%26Submit%3DSubmit","::1" -"%3A%3A1",2015-03-11T13:17:00+01:00,0,"","REQUEST.id%3D1%2527+GET.id%3D1%2527","%2Fczar%2Fplayground%2Fdvwa%2Fvulnerabilities%2Fsqli%2F%3Fid%3D1%2527%26Submit%3DSubmit","::1" -"%3A%3A1",2015-03-11T13:17:00+01:00,0,"","REQUEST.id%3D1%2527+GET.id%3D1%2527","%2Fczar%2Fplayground%2Fdvwa%2Fvulnerabilities%2Fsqli%2F%3Fid%3D1%2527%26Submit%3DSubmit","::1" -"%3A%3A1",2015-03-11T13:17:00+01:00,0,"","REQUEST.id%3D1%2527+GET.id%3D1%2527","%2Fczar%2Fplayground%2Fdvwa%2Fvulnerabilities%2Fsqli%2F%3Fid%3D1%2527%26Submit%3DSubmit","::1" -"%3A%3A1",2015-03-11T13:17:55+01:00,0,"","REQUEST.id%3D1%2527+GET.id%3D1%2527","%2Fczar%2Fplayground%2Fdvwa%2Fvulnerabilities%2Fsqli%2F%3Fid%3D1%2527%26Submit%3DSubmit","::1" -"%3A%3A1",2015-03-11T13:17:56+01:00,0,"","REQUEST.id%3D1%2527+GET.id%3D1%2527","%2Fczar%2Fplayground%2Fdvwa%2Fvulnerabilities%2Fsqli%2F%3Fid%3D1%2527%26Submit%3DSubmit","::1" -"%3A%3A1",2015-03-11T13:17:56+01:00,0,"","REQUEST.id%3D1%2527+GET.id%3D1%2527","%2Fczar%2Fplayground%2Fdvwa%2Fvulnerabilities%2Fsqli%2F%3Fid%3D1%2527%26Submit%3DSubmit","::1" -"%3A%3A1",2015-03-11T13:17:56+01:00,0,"","REQUEST.id%3D1%2527+GET.id%3D1%2527","%2Fczar%2Fplayground%2Fdvwa%2Fvulnerabilities%2Fsqli%2F%3Fid%3D1%2527%26Submit%3DSubmit","::1" -"%3A%3A1",2015-03-11T13:17:57+01:00,0,"","REQUEST.id%3D1%2527+GET.id%3D1%2527","%2Fczar%2Fplayground%2Fdvwa%2Fvulnerabilities%2Fsqli%2F%3Fid%3D1%2527%26Submit%3DSubmit","::1" -"%3A%3A1",2015-03-11T13:18:06+01:00,0,"","REQUEST.id%3D1%2527+GET.id%3D1%2527","%2Fczar%2Fplayground%2Fdvwa%2Fvulnerabilities%2Fsqli%2F%3Fid%3D1%2527%26Submit%3DSubmit","::1" -"%3A%3A1",2015-03-11T13:18:06+01:00,0,"","REQUEST.id%3D1%2527+GET.id%3D1%2527","%2Fczar%2Fplayground%2Fdvwa%2Fvulnerabilities%2Fsqli%2F%3Fid%3D1%2527%26Submit%3DSubmit","::1" -"%3A%3A1",2015-03-11T13:18:07+01:00,0,"","REQUEST.id%3D1%2527+GET.id%3D1%2527","%2Fczar%2Fplayground%2Fdvwa%2Fvulnerabilities%2Fsqli%2F%3Fid%3D1%2527%26Submit%3DSubmit","::1" -"%3A%3A1",2015-03-11T13:18:07+01:00,0,"","REQUEST.id%3D1%2527+GET.id%3D1%2527","%2Fczar%2Fplayground%2Fdvwa%2Fvulnerabilities%2Fsqli%2F%3Fid%3D1%2527%26Submit%3DSubmit","::1" -"%3A%3A1",2015-03-11T13:18:07+01:00,0,"","REQUEST.id%3D1%2527+GET.id%3D1%2527","%2Fczar%2Fplayground%2Fdvwa%2Fvulnerabilities%2Fsqli%2F%3Fid%3D1%2527%26Submit%3DSubmit","::1" -"%3A%3A1",2015-03-11T13:18:16+01:00,0,"","REQUEST.id%3D1%2527+GET.id%3D1%2527","%2Fczar%2Fplayground%2Fdvwa%2Fvulnerabilities%2Fsqli%2F%3Fid%3D1%2527%26Submit%3DSubmit","::1" -"%3A%3A1",2015-03-11T13:18:17+01:00,0,"","REQUEST.id%3D1%2527+GET.id%3D1%2527","%2Fczar%2Fplayground%2Fdvwa%2Fvulnerabilities%2Fsqli%2F%3Fid%3D1%2527%26Submit%3DSubmit","::1" -"%3A%3A1",2015-03-11T13:18:17+01:00,0,"","REQUEST.id%3D1%2527+GET.id%3D1%2527","%2Fczar%2Fplayground%2Fdvwa%2Fvulnerabilities%2Fsqli%2F%3Fid%3D1%2527%26Submit%3DSubmit","::1" -"%3A%3A1",2015-03-11T13:18:17+01:00,0,"","REQUEST.id%3D1%2527+GET.id%3D1%2527","%2Fczar%2Fplayground%2Fdvwa%2Fvulnerabilities%2Fsqli%2F%3Fid%3D1%2527%26Submit%3DSubmit","::1" -"%3A%3A1",2015-03-11T13:18:17+01:00,0,"","REQUEST.id%3D1%2527+GET.id%3D1%2527","%2Fczar%2Fplayground%2Fdvwa%2Fvulnerabilities%2Fsqli%2F%3Fid%3D1%2527%26Submit%3DSubmit","::1" -"%3A%3A1",2015-03-11T13:18:25+01:00,0,"","REQUEST.id%3D1%2527+GET.id%3D1%2527","%2Fczar%2Fplayground%2Fdvwa%2Fvulnerabilities%2Fsqli%2F%3Fid%3D1%2527%26Submit%3DSubmit","::1" -"%3A%3A1",2015-03-11T13:18:26+01:00,0,"","REQUEST.id%3D1%2527+GET.id%3D1%2527","%2Fczar%2Fplayground%2Fdvwa%2Fvulnerabilities%2Fsqli%2F%3Fid%3D1%2527%26Submit%3DSubmit","::1" -"%3A%3A1",2015-03-11T13:18:26+01:00,0,"","REQUEST.id%3D1%2527+GET.id%3D1%2527","%2Fczar%2Fplayground%2Fdvwa%2Fvulnerabilities%2Fsqli%2F%3Fid%3D1%2527%26Submit%3DSubmit","::1" -"%3A%3A1",2015-03-11T13:18:27+01:00,0,"","REQUEST.id%3D1%2527+GET.id%3D1%2527","%2Fczar%2Fplayground%2Fdvwa%2Fvulnerabilities%2Fsqli%2F%3Fid%3D1%2527%26Submit%3DSubmit","::1" -"%3A%3A1",2015-03-11T13:18:27+01:00,0,"","REQUEST.id%3D1%2527+GET.id%3D1%2527","%2Fczar%2Fplayground%2Fdvwa%2Fvulnerabilities%2Fsqli%2F%3Fid%3D1%2527%26Submit%3DSubmit","::1" -"%3A%3A1",2015-03-11T13:18:37+01:00,0,"","REQUEST.id%3D1%2527+GET.id%3D1%2527","%2Fczar%2Fplayground%2Fdvwa%2Fvulnerabilities%2Fsqli%2F%3Fid%3D1%2527%26Submit%3DSubmit","::1" -"%3A%3A1",2015-03-11T13:18:37+01:00,0,"","REQUEST.id%3D1%2527+GET.id%3D1%2527","%2Fczar%2Fplayground%2Fdvwa%2Fvulnerabilities%2Fsqli%2F%3Fid%3D1%2527%26Submit%3DSubmit","::1" -"%3A%3A1",2015-03-11T13:18:38+01:00,0,"","REQUEST.id%3D1%2527+GET.id%3D1%2527","%2Fczar%2Fplayground%2Fdvwa%2Fvulnerabilities%2Fsqli%2F%3Fid%3D1%2527%26Submit%3DSubmit","::1" -"%3A%3A1",2015-03-11T13:18:38+01:00,0,"","REQUEST.id%3D1%2527+GET.id%3D1%2527","%2Fczar%2Fplayground%2Fdvwa%2Fvulnerabilities%2Fsqli%2F%3Fid%3D1%2527%26Submit%3DSubmit","::1" -"%3A%3A1",2015-03-11T13:18:38+01:00,0,"","REQUEST.id%3D1%2527+GET.id%3D1%2527","%2Fczar%2Fplayground%2Fdvwa%2Fvulnerabilities%2Fsqli%2F%3Fid%3D1%2527%26Submit%3DSubmit","::1" -"%3A%3A1",2015-03-11T13:19:00+01:00,0,"","REQUEST.id%3D1%2527+GET.id%3D1%2527","%2Fczar%2Fplayground%2Fdvwa%2Fvulnerabilities%2Fsqli%2F%3Fid%3D1%2527%26Submit%3DSubmit","::1" -"%3A%3A1",2015-03-11T13:19:00+01:00,0,"","REQUEST.id%3D1%2527+GET.id%3D1%2527","%2Fczar%2Fplayground%2Fdvwa%2Fvulnerabilities%2Fsqli%2F%3Fid%3D1%2527%26Submit%3DSubmit","::1" -"%3A%3A1",2015-03-11T13:19:01+01:00,0,"","REQUEST.id%3D1%2527+GET.id%3D1%2527","%2Fczar%2Fplayground%2Fdvwa%2Fvulnerabilities%2Fsqli%2F%3Fid%3D1%2527%26Submit%3DSubmit","::1" -"%3A%3A1",2015-03-11T13:19:01+01:00,0,"","REQUEST.id%3D1%2527+GET.id%3D1%2527","%2Fczar%2Fplayground%2Fdvwa%2Fvulnerabilities%2Fsqli%2F%3Fid%3D1%2527%26Submit%3DSubmit","::1" -"%3A%3A1",2015-03-11T13:19:01+01:00,0,"","REQUEST.id%3D1%2527+GET.id%3D1%2527","%2Fczar%2Fplayground%2Fdvwa%2Fvulnerabilities%2Fsqli%2F%3Fid%3D1%2527%26Submit%3DSubmit","::1" -"%3A%3A1",2015-03-11T13:19:27+01:00,0,"","REQUEST.id%3D1%2527+GET.id%3D1%2527","%2Fczar%2Fplayground%2Fdvwa%2Fvulnerabilities%2Fsqli%2F%3Fid%3D1%2527%26Submit%3DSubmit","::1" -"%3A%3A1",2015-03-11T13:19:28+01:00,0,"","REQUEST.id%3D1%2527+GET.id%3D1%2527","%2Fczar%2Fplayground%2Fdvwa%2Fvulnerabilities%2Fsqli%2F%3Fid%3D1%2527%26Submit%3DSubmit","::1" -"%3A%3A1",2015-03-11T13:19:28+01:00,0,"","REQUEST.id%3D1%2527+GET.id%3D1%2527","%2Fczar%2Fplayground%2Fdvwa%2Fvulnerabilities%2Fsqli%2F%3Fid%3D1%2527%26Submit%3DSubmit","::1" -"%3A%3A1",2015-03-11T13:19:28+01:00,0,"","REQUEST.id%3D1%2527+GET.id%3D1%2527","%2Fczar%2Fplayground%2Fdvwa%2Fvulnerabilities%2Fsqli%2F%3Fid%3D1%2527%26Submit%3DSubmit","::1" -"%3A%3A1",2015-03-11T13:19:29+01:00,0,"","REQUEST.id%3D1%2527+GET.id%3D1%2527","%2Fczar%2Fplayground%2Fdvwa%2Fvulnerabilities%2Fsqli%2F%3Fid%3D1%2527%26Submit%3DSubmit","::1" -"%3A%3A1",2015-03-11T13:19:47+01:00,0,"","REQUEST.id%3D1%2527+GET.id%3D1%2527","%2Fczar%2Fplayground%2Fdvwa%2Fvulnerabilities%2Fsqli%2F%3Fid%3D1%2527%26Submit%3DSubmit","::1" -"%3A%3A1",2015-03-11T13:19:48+01:00,0,"","REQUEST.id%3D1%2527+GET.id%3D1%2527","%2Fczar%2Fplayground%2Fdvwa%2Fvulnerabilities%2Fsqli%2F%3Fid%3D1%2527%26Submit%3DSubmit","::1" -"%3A%3A1",2015-03-11T13:19:48+01:00,0,"","REQUEST.id%3D1%2527+GET.id%3D1%2527","%2Fczar%2Fplayground%2Fdvwa%2Fvulnerabilities%2Fsqli%2F%3Fid%3D1%2527%26Submit%3DSubmit","::1" -"%3A%3A1",2015-03-11T13:19:48+01:00,0,"","REQUEST.id%3D1%2527+GET.id%3D1%2527","%2Fczar%2Fplayground%2Fdvwa%2Fvulnerabilities%2Fsqli%2F%3Fid%3D1%2527%26Submit%3DSubmit","::1" -"%3A%3A1",2015-03-11T13:19:48+01:00,0,"","REQUEST.id%3D1%2527+GET.id%3D1%2527","%2Fczar%2Fplayground%2Fdvwa%2Fvulnerabilities%2Fsqli%2F%3Fid%3D1%2527%26Submit%3DSubmit","::1" -"%3A%3A1",2015-03-11T13:20:01+01:00,0,"","REQUEST.id%3D1%2527+GET.id%3D1%2527","%2Fczar%2Fplayground%2Fdvwa%2Fvulnerabilities%2Fsqli%2F%3Fid%3D1%2527%26Submit%3DSubmit","::1" -"%3A%3A1",2015-03-11T13:20:01+01:00,0,"","REQUEST.id%3D1%2527+GET.id%3D1%2527","%2Fczar%2Fplayground%2Fdvwa%2Fvulnerabilities%2Fsqli%2F%3Fid%3D1%2527%26Submit%3DSubmit","::1" -"%3A%3A1",2015-03-11T13:20:02+01:00,0,"","REQUEST.id%3D1%2527+GET.id%3D1%2527","%2Fczar%2Fplayground%2Fdvwa%2Fvulnerabilities%2Fsqli%2F%3Fid%3D1%2527%26Submit%3DSubmit","::1" -"%3A%3A1",2015-03-11T13:20:02+01:00,0,"","REQUEST.id%3D1%2527+GET.id%3D1%2527","%2Fczar%2Fplayground%2Fdvwa%2Fvulnerabilities%2Fsqli%2F%3Fid%3D1%2527%26Submit%3DSubmit","::1" -"%3A%3A1",2015-03-11T13:20:02+01:00,0,"","REQUEST.id%3D1%2527+GET.id%3D1%2527","%2Fczar%2Fplayground%2Fdvwa%2Fvulnerabilities%2Fsqli%2F%3Fid%3D1%2527%26Submit%3DSubmit","::1" -"%3A%3A1",2015-03-11T13:20:08+01:00,0,"","REQUEST.id%3D1%2527+GET.id%3D1%2527","%2Fczar%2Fplayground%2Fdvwa%2Fvulnerabilities%2Fsqli%2F%3Fid%3D1%2527%26Submit%3DSubmit","::1" -"%3A%3A1",2015-03-11T13:20:08+01:00,0,"","REQUEST.id%3D1%2527+GET.id%3D1%2527","%2Fczar%2Fplayground%2Fdvwa%2Fvulnerabilities%2Fsqli%2F%3Fid%3D1%2527%26Submit%3DSubmit","::1" -"%3A%3A1",2015-03-11T13:20:08+01:00,0,"","REQUEST.id%3D1%2527+GET.id%3D1%2527","%2Fczar%2Fplayground%2Fdvwa%2Fvulnerabilities%2Fsqli%2F%3Fid%3D1%2527%26Submit%3DSubmit","::1" -"%3A%3A1",2015-03-11T13:20:09+01:00,0,"","REQUEST.id%3D1%2527+GET.id%3D1%2527","%2Fczar%2Fplayground%2Fdvwa%2Fvulnerabilities%2Fsqli%2F%3Fid%3D1%2527%26Submit%3DSubmit","::1" -"%3A%3A1",2015-03-11T13:20:14+01:00,0,"","REQUEST.id%3D1%2527+GET.id%3D1%2527","%2Fczar%2Fplayground%2Fdvwa%2Fvulnerabilities%2Fsqli%2F%3Fid%3D1%2527%26Submit%3DSubmit","::1" -"%3A%3A1",2015-03-11T18:42:13+01:00,0,"","REQUEST.id%3D1%2527+GET.id%3D1%2527","%2Fczar%2Fplayground%2Fdvwa%2Fvulnerabilities%2Fsqli%2F%3Fid%3D1%2527%26Submit%3DSubmit","::1" -"%3A%3A1",2015-03-11T18:43:25+01:00,0,"","REQUEST.id%3D1%2527+GET.id%3D1%2527","%2Fczar%2Fplayground%2Fdvwa%2Fvulnerabilities%2Fsqli%2F%3Fid%3D1%2527%26Submit%3DSubmit","::1" -"%3A%3A1",2015-03-11T18:44:29+01:00,0,"","REQUEST.id%3D1%2527+GET.id%3D1%2527","%2Fczar%2Fplayground%2Fdvwa%2Fvulnerabilities%2Fsqli%2F%3Fid%3D1%2527%26Submit%3DSubmit","::1" -"%3A%3A1",2015-03-11T18:45:26+01:00,0,"","REQUEST.id%3D1%2527+GET.id%3D1%2527","%2Fczar%2Fplayground%2Fdvwa%2Fvulnerabilities%2Fsqli%2F%3Fid%3D1%2527%26Submit%3DSubmit","::1" -"%3A%3A1",2015-03-11T18:45:37+01:00,0,"","REQUEST.id%3D1%2527+GET.id%3D1%2527","%2Fczar%2Fplayground%2Fdvwa%2Fvulnerabilities%2Fsqli%2F%3Fid%3D1%2527%26Submit%3DSubmit","::1" -"%3A%3A1",2015-03-11T18:52:37+01:00,0,"","REQUEST.id%3D1%2527+GET.id%3D1%2527","%2Fczar%2Fplayground%2Fdvwa%2Fvulnerabilities%2Fsqli%2F%3Fid%3D1%2527%26Submit%3DSubmit","::1" -"%3A%3A1",2015-03-11T19:00:03+01:00,0,"","REQUEST.id%3D1%2527+GET.id%3D1%2527","%2Fczar%2Fplayground%2Fdvwa%2Fvulnerabilities%2Fsqli%2F%3Fid%3D1%2527%26Submit%3DSubmit","::1" -"%3A%3A1",2015-03-11T19:00:09+01:00,0,"","REQUEST.id%3D1%2527+GET.id%3D1%2527","%2Fczar%2Fplayground%2Fdvwa%2Fvulnerabilities%2Fsqli%2F%3Fid%3D1%2527%26Submit%3DSubmit","::1" -"%3A%3A1",2015-03-11T19:00:52+01:00,42,"xss csrf id rfe lfi","REQUEST.id%3D%253Cscript%253Ealert%2528%252F0%252F%2529%253C%252Fscript%253E+GET.id%3D%253Cscript%253Ealert%2528%252F0%252F%2529%253C%252Fscript%253E","%2Fczar%2Fplayground%2Fdvwa%2Fvulnerabilities%2Fsqli%2F%3Fid%3D%253Cscript%253Ealert%2528%252F0%252F%2529%253C%252Fscript%253E%26Submit%3DSubmit","::1" -"%3A%3A1",2015-03-11T19:48:24+01:00,42,"xss csrf id rfe lfi","REQUEST.id%3D%253Cscript%253Ealert%2528%252F0%252F%2529%253C%252Fscript%253E+GET.id%3D%253Cscript%253Ealert%2528%252F0%252F%2529%253C%252Fscript%253E","%2Fczar%2Fplayground%2Fdvwa%2Fvulnerabilities%2Fsqli%2F%3Fid%3D%253Cscript%253Ealert%2528%252F0%252F%2529%253C%252Fscript%253E%26Submit%3DSubmit","::1" -"%3A%3A1",2015-03-11T19:48:47+01:00,42,"xss csrf id rfe lfi","REQUEST.id%3D%253Cscript%253Ealert%2528%252F0%252F%2529%253C%252Fscript%253E+GET.id%3D%253Cscript%253Ealert%2528%252F0%252F%2529%253C%252Fscript%253E","%2Fczar%2Fplayground%2Fdvwa%2Fvulnerabilities%2Fsqli%2F%3Fid%3D%253Cscript%253Ealert%2528%252F0%252F%2529%253C%252Fscript%253E%26Submit%3DSubmit","::1" -"%3A%3A1",2015-03-11T21:46:29+01:00,42,"xss csrf id rfe lfi","REQUEST.id%3D%253Cscript%253Ealert%2528%252F0%252F%2529%253C%252Fscript%253E+GET.id%3D%253Cscript%253Ealert%2528%252F0%252F%2529%253C%252Fscript%253E","%2Fczar%2Fplayground%2Fdvwa%2Fvulnerabilities%2Fsqli%2F%3Fid%3D%253Cscript%253Ealert%2528%252F0%252F%2529%253C%252Fscript%253E%26Submit%3DSubmit","::1" -"%3A%3A1",2015-03-11T21:58:05+01:00,42,"xss csrf id rfe lfi","REQUEST.id%3D%253Cscript%253Ealert%2528%252F0%252F%2529%253C%252Fscript%253E+GET.id%3D%253Cscript%253Ealert%2528%252F0%252F%2529%253C%252Fscript%253E","%2Fczar%2Fplayground%2Fdvwa%2Fvulnerabilities%2Fsqli%2F%3Fid%3D%253Cscript%253Ealert%2528%252F0%252F%2529%253C%252Fscript%253E%26Submit%3DSubmit","::1" -"%3A%3A1",2015-03-12T05:20:46+01:00,42,"xss csrf id rfe lfi","REQUEST.id%3D%253Cscript%253Ealert%2528%252F0%252F%2529%253C%252Fscript%253E+GET.id%3D%253Cscript%253Ealert%2528%252F0%252F%2529%253C%252Fscript%253E","%2Fczar%2Fplayground%2Fdvwa%2Fvulnerabilities%2Fsqli%2F%3Fid%3D%253Cscript%253Ealert%2528%252F0%252F%2529%253C%252Fscript%253E%26Submit%3DSubmit","::1" -"%3A%3A1",2015-03-12T05:43:22+01:00,0,"","REQUEST.id%3D1%2527+GET.id%3D1%2527","%2Fczar%2Fplayground%2Fdvwa%2Fvulnerabilities%2Fsqli%2F%3Fid%3D1%2527%26Submit%3DSubmit","::1" -"%3A%3A1",2015-03-12T05:43:58+01:00,0,"","REQUEST.id%3D1%2527+GET.id%3D1%2527","%2Fczar%2Fplayground%2Fdvwa%2Fvulnerabilities%2Fsqli%2F%3Fid%3D1%2527%26Submit%3DSubmit","::1" -"%3A%3A1",2015-03-12T06:40:28+01:00,20,"dt id lfi","REQUEST.id%3D..%252F..%252F..%252F..%252F..%252Fetc%252Fpassword+GET.id%3D..%252F..%252F..%252F..%252F..%252Fetc%252Fpassword","%2Fczar%2Fplayground%2Fdvwa%2Fvulnerabilities%2Fsqli%2F%3Fid%3D..%252F..%252F..%252F..%252F..%252Fetc%252Fpassword%26Submit%3DSubmit","::1" -"%3A%3A1",2015-03-12T17:20:08+01:00,0,"","REQUEST.id%3D1%2527+GET.id%3D1%2527","%2Fczar%2Fplayground%2Fdvwa%2Fvulnerabilities%2Fsqli%2F%3Fid%3D1%2527%26Submit%3DSubmit","::1" -"%3A%3A1",2015-03-12T17:20:35+01:00,0,"","REQUEST.id%3D1%2527+GET.id%3D1%2527","%2Fczar%2Fplayground%2Fdvwa%2Fvulnerabilities%2Fsqli%2F%3Fid%3D1%2527%26Submit%3DSubmit","::1" -"%3A%3A1",2015-03-12T17:26:45+01:00,0,"","REQUEST.id%3D1%2527+GET.id%3D1%2527","%2Fczar%2Fplayground%2Fdvwa%2Fvulnerabilities%2Fsqli%2F%3Fid%3D1%2527%26Submit%3DSubmit","::1" -"%3A%3A1",2015-03-12T17:26:54+01:00,0,"","REQUEST.id%3D1%2527+GET.id%3D1%2527","%2Fczar%2Fplayground%2Fdvwa%2Fvulnerabilities%2Fsqli%2F%3Fid%3D1%2527%26Submit%3DSubmit","::1" -"%3A%3A1",2015-03-12T17:27:39+01:00,0,"","REQUEST.id%3D1%2527+GET.id%3D1%2527","%2Fczar%2Fplayground%2Fdvwa%2Fvulnerabilities%2Fsqli%2F%3Fid%3D1%2527%26Submit%3DSubmit","::1" -"%3A%3A1",2015-03-13T09:41:22+01:00,0,"","REQUEST.id%3D1%2527+GET.id%3D1%2527","%2Fczar%2Fplayground%2Fdvwa%2Fvulnerabilities%2Fsqli%2F%3Fid%3D1%2527%26Submit%3DSubmit","::1" -"%3A%3A1",2015-03-13T09:42:09+01:00,0,"","REQUEST.id%3D1%2527+GET.id%3D1%2527","%2Fczar%2Fplayground%2Fdvwa%2Fvulnerabilities%2Fsqli%2F%3Fid%3D1%2527%26Submit%3DSubmit","::1" -"%3A%3A1",2015-03-13T14:23:25+01:00,0,"","GET.id%3D1%2527","%2Fczar%2Fplayground%2Fdvwa%2Fvulnerabilities%2Fsqli%2F%3Fid%3D1%2527%26Submit%3DSubmit","::1" -"%3A%3A1",2015-03-13T14:23:49+01:00,0,"","GET.id%3D1%2527","%2Fczar%2Fplayground%2Fdvwa%2Fvulnerabilities%2Fsqli%2F%3Fid%3D1%2527%26Submit%3DSubmit","::1" -"%3A%3A1",2015-03-13T14:24:23+01:00,0,"","GET.id%3D1%2527","%2Fczar%2Fplayground%2Fdvwa%2Fvulnerabilities%2Fsqli%2F%3Fid%3D1%2527%26Submit%3DSubmit","::1" -"%3A%3A1",2015-03-13T18:28:38+01:00,0,"","GET.id%3D1%2527","%2Fczar%2Fplayground%2Fdvwa%2Fvulnerabilities%2Fsqli%2F%3Fid%3D1%2527%26Submit%3DSubmit","::1" -"%3A%3A1",2015-03-13T18:47:53+01:00,0,"","GET.id%3D1%2527","%2Fczar%2Fplayground%2Fdvwa%2Fvulnerabilities%2Fsqli%2F%3Fid%3D1%2527%26Submit%3DSubmit","::1" -"%3A%3A1",2015-03-13T20:04:35+01:00,0,"","GET.id%3D1%2527","%2Fczar%2Fplayground%2Fdvwa%2Fvulnerabilities%2Fsqli%2F%3Fid%3D1%2527%26Submit%3DSubmit","::1" -"%3A%3A1",2015-03-13T20:20:49+01:00,21,"xss csrf id rfe lfi","GET.id%3D%253Cscript%253Ealert%2528%252Fmaagi%252F%2529%253C%252Fscript%253E","%2Fczar%2Fplayground%2Fdvwa%2Fvulnerabilities%2Fsqli%2F%3Fid%3D%253Cscript%253Ealert%2528%252Fmaagi%252F%2529%253C%252Fscript%253E%26Submit%3DSubmit","::1" -"%3A%3A1",2015-03-14T12:22:05+01:00,0,"","GET.id%3D1%2527","%2Fczar%2Fplayground%2Fdvwa%2Fvulnerabilities%2Fsqli%2F%3Fid%3D1%2527%26Submit%3DSubmit","::1" -"%3A%3A1",2015-03-14T12:23:17+01:00,21,"xss csrf id rfe lfi","GET.id%3D%253Cscript%253Ealert%2528%252F0%252F%2529%253C%252Fscript%253E","%2Fczar%2Fplayground%2Fdvwa%2Fvulnerabilities%2Fsqli%2F%3Fid%3D%253Cscript%253Ealert%2528%252F0%252F%2529%253C%252Fscript%253E%26Submit%3DSubmit","::1" -"%3A%3A1",2015-03-14T12:24:02+01:00,0,"","GET.id%3D1%2527","%2Fczar%2Fplayground%2Fdvwa%2Fvulnerabilities%2Fsqli%2F%3Fid%3D1%2527%26Submit%3DSubmit","::1" -"%3A%3A1",2015-03-14T14:28:36+01:00,0,"","GET.id%3D1%2527","%2Fczar%2Fplayground%2Fdvwa%2Fvulnerabilities%2Fsqli%2F%3Fid%3D1%2527%26Submit%3DSubmit","::1" -"%3A%3A1",2015-03-14T14:29:51+01:00,0,"","GET.id%3D1%2527","%2Fczar%2Fplayground%2Fdvwa%2Fvulnerabilities%2Fsqli%2F%3Fid%3D1%2527%26Submit%3DSubmit","::1" -"%3A%3A1",2015-03-14T16:04:46+01:00,0,"","GET.id%3D1%2527","%2Fczar%2Fplayground%2Fdvwa%2Fvulnerabilities%2Fsqli%2F%3Fid%3D1%2527%26Submit%3DSubmit","::1" -"%3A%3A1",2015-03-14T19:49:05+01:00,0,"","GET.id%3D1%2527","%2Fczar%2Fplayground%2Fdvwa%2Fvulnerabilities%2Fsqli%2F%3Fid%3D1%2527%26Submit%3DSubmit","::1" -"%3A%3A1",2015-03-24T09:58:24+01:00,0,"","GET.id%3D1%2527","%2Fczar%2Fplayground%2Fdvwa%2Fvulnerabilities%2Fsqli%2F%3Fid%3D1%2527%26Submit%3DSubmit","::1" -"%3A%3A1",2015-03-24T09:58:59+01:00,0,"","GET.id%3D1%2527","%2Fczar%2Fplayground%2Fdvwa%2Fvulnerabilities%2Fsqli%2F%3Fid%3D1%2527%26Submit%3DSubmit","::1" -"%3A%3A1",2015-03-24T10:31:10+01:00,21,"xss csrf id rfe lfi","GET.id%3D%253Cscript%253Ealert%2528%252F0%252F%2529%253C%252Fscript%253E","%2Fczar%2Fplayground%2Fdvwa%2Fvulnerabilities%2Fsqli_blind%2F%3Fid%3D%253Cscript%253Ealert%2528%252F0%252F%2529%253C%252Fscript%253E%26Submit%3DSubmit","::1" -"%3A%3A1",2015-03-25T08:49:45+01:00,0,"","GET.id%3D1%2527","%2Fczar%2Fplayground%2Fdvwa%2Fvulnerabilities%2Fsqli%2F%3Fid%3D1%2527%26Submit%3DSubmit","::1" -"%3A%3A1",2015-03-25T08:49:57+01:00,21,"xss csrf id rfe lfi","GET.id%3D%253Cscript%253Ealert%2528%252Fmaagi%252F%2529%253C%252Fscript%253E","%2Fczar%2Fplayground%2Fdvwa%2Fvulnerabilities%2Fsqli%2F%3Fid%3D%253Cscript%253Ealert%2528%252Fmaagi%252F%2529%253C%252Fscript%253E%26Submit%3DSubmit","::1" -"%3A%3A1",2015-03-28T12:24:15+01:00,0,"","GET.id%3D1%2527","%2Fczar%2Fplayground%2Fdvwa%2Fvulnerabilities%2Fsqli%2F%3Fid%3D1%2527%26Submit%3DSubmit","::1" -"%3A%3A1",2015-03-31T12:51:22+02:00,0,"","GET.id%3D1%2527","%2Fczar%2Fplayground%2Fdvwa%2Fvulnerabilities%2Fsqli%2F%3Fid%3D1%2527%26Submit%3DSubmit","::1" -"%3A%3A1",2015-04-03T11:51:21+02:00,33,"xss csrf id rfe lfi sqli","GET.id%3D%2527%2522%2528%2529%252526%2525251%253CScRiPt%2520%253Eprompt%2528910003%2529%253C%25252fScRiPt%253E","%2Fczar%2Fplayground%2Fdvwa%2Fvulnerabilities%2Fsqli%2F%3Fid%3D%2527%2522%2528%2529%252526%2525251%253CScRiPt%2B%253Eprompt%2528910003%2529%253C%25252fScRiPt%253E%26Submit%3DSubmit","::1" -"%3A%3A1",2015-04-03T15:55:48+02:00,0,"","GET.id%3D1%2527","%2Fczar%2Fplayground%2Fdvwa%2Fvulnerabilities%2Fsqli%2F%3Fid%3D1%2527%26Submit%3DSubmit","::1" -"%3A%3A1",2015-04-03T15:55:50+02:00,0,"","GET.id%3D1%2527","%2Fczar%2Fplayground%2Fdvwa%2Fvulnerabilities%2Fsqli%2F%3Fid%3D1%2527%26Submit%3DSubmit","::1" -"%3A%3A1",2015-04-03T15:55:50+02:00,0,"","GET.id%3D1%2527","%2Fczar%2Fplayground%2Fdvwa%2Fvulnerabilities%2Fsqli%2F%3Fid%3D1%2527%26Submit%3DSubmit","::1" -"%3A%3A1",2015-04-03T15:55:50+02:00,0,"","GET.id%3D1%2527","%2Fczar%2Fplayground%2Fdvwa%2Fvulnerabilities%2Fsqli%2F%3Fid%3D1%2527%26Submit%3DSubmit","::1" -"%3A%3A1",2015-04-03T15:55:50+02:00,0,"","GET.id%3D1%2527","%2Fczar%2Fplayground%2Fdvwa%2Fvulnerabilities%2Fsqli%2F%3Fid%3D1%2527%26Submit%3DSubmit","::1" -"%3A%3A1",2015-04-03T15:55:51+02:00,0,"","GET.id%3D1%2527","%2Fczar%2Fplayground%2Fdvwa%2Fvulnerabilities%2Fsqli%2F%3Fid%3D1%2527%26Submit%3DSubmit","::1" -"%3A%3A1",2015-04-03T15:55:51+02:00,0,"","GET.id%3D1%2527","%2Fczar%2Fplayground%2Fdvwa%2Fvulnerabilities%2Fsqli%2F%3Fid%3D1%2527%26Submit%3DSubmit","::1" -"%3A%3A1",2015-04-03T15:55:51+02:00,0,"","GET.id%3D1%2527","%2Fczar%2Fplayground%2Fdvwa%2Fvulnerabilities%2Fsqli%2F%3Fid%3D1%2527%26Submit%3DSubmit","::1" -"%3A%3A1",2015-04-03T15:55:52+02:00,0,"","GET.id%3D1%2527","%2Fczar%2Fplayground%2Fdvwa%2Fvulnerabilities%2Fsqli%2F%3Fid%3D1%2527%26Submit%3DSubmit","::1" -"%3A%3A1",2015-04-03T15:55:52+02:00,0,"","GET.id%3D1%2527","%2Fczar%2Fplayground%2Fdvwa%2Fvulnerabilities%2Fsqli%2F%3Fid%3D1%2527%26Submit%3DSubmit","::1" -"%3A%3A1",2015-04-03T15:56:02+02:00,0,"","GET.id%3D1%2527","%2Fczar%2Fplayground%2Fdvwa%2Fvulnerabilities%2Fsqli%2F%3Fid%3D1%2527%26Submit%3DSubmit","::1" -"%3A%3A1",2015-04-03T15:56:15+02:00,0,"","GET.id%3D1%2527","%2Fczar%2Fplayground%2Fdvwa%2Fvulnerabilities%2Fsqli%2F%3Fid%3D1%2527%26Submit%3DSubmit","::1" -"%3A%3A1",2015-04-03T15:57:53+02:00,0,"","GET.id%3D1%2527","%2Fczar%2Fplayground%2Fdvwa%2Fvulnerabilities%2Fsqli%2F%3Fid%3D1%2527%26Submit%3DSubmit","::1" -"%3A%3A1",2015-04-03T15:58:37+02:00,0,"","GET.id%3D1%2527","%2Fczar%2Fplayground%2Fdvwa%2Fvulnerabilities%2Fsqli%2F%3Fid%3D1%2527%26Submit%3DSubmit","::1" -"%3A%3A1",2015-04-03T15:58:41+02:00,0,"","GET.id%3D1%2527","%2Fczar%2Fplayground%2Fdvwa%2Fvulnerabilities%2Fsqli%2F%3Fid%3D1%2527%26Submit%3DSubmit","::1" -"%3A%3A1",2015-04-03T15:58:43+02:00,0,"","GET.id%3D1%2527","%2Fczar%2Fplayground%2Fdvwa%2Fvulnerabilities%2Fsqli%2F%3Fid%3D1%2527%26Submit%3DSubmit","::1" -"%3A%3A1",2015-04-03T15:58:46+02:00,0,"","GET.id%3D1%2527","%2Fczar%2Fplayground%2Fdvwa%2Fvulnerabilities%2Fsqli%2F%3Fid%3D1%2527%26Submit%3DSubmit","::1" -"%3A%3A1",2015-04-03T15:58:48+02:00,0,"","GET.id%3D1%2527","%2Fczar%2Fplayground%2Fdvwa%2Fvulnerabilities%2Fsqli%2F%3Fid%3D1%2527%26Submit%3DSubmit","::1" -"%3A%3A1",2015-04-03T15:58:51+02:00,0,"","GET.id%3D1%2527","%2Fczar%2Fplayground%2Fdvwa%2Fvulnerabilities%2Fsqli%2F%3Fid%3D1%2527%26Submit%3DSubmit","::1" -"%3A%3A1",2015-04-03T16:01:22+02:00,0,"","GET.id%3D1%2527","%2Fczar%2Fplayground%2Fdvwa%2Fvulnerabilities%2Fsqli%2F%3Fid%3D1%2527%26Submit%3DSubmit","::1" -"%3A%3A1",2015-04-03T16:01:25+02:00,0,"","GET.id%3D1%2527","%2Fczar%2Fplayground%2Fdvwa%2Fvulnerabilities%2Fsqli%2F%3Fid%3D1%2527%26Submit%3DSubmit","::1" -"%3A%3A1",2015-04-03T16:01:28+02:00,0,"","GET.id%3D1%2527","%2Fczar%2Fplayground%2Fdvwa%2Fvulnerabilities%2Fsqli%2F%3Fid%3D1%2527%26Submit%3DSubmit","::1" -"%3A%3A1",2015-04-03T16:01:29+02:00,0,"","GET.id%3D1%2527","%2Fczar%2Fplayground%2Fdvwa%2Fvulnerabilities%2Fsqli%2F%3Fid%3D1%2527%26Submit%3DSubmit","::1" -"%3A%3A1",2015-04-03T16:01:31+02:00,0,"","GET.id%3D1%2527","%2Fczar%2Fplayground%2Fdvwa%2Fvulnerabilities%2Fsqli%2F%3Fid%3D1%2527%26Submit%3DSubmit","::1" -"%3A%3A1",2015-04-03T19:37:32+02:00,21,"xss csrf id rfe lfi","GET.id%3D%253Cscript%253Ealert%2528%252Fmaagi%252F%2529%253C%252Fscript%253E","%2Fczar%2Fplayground%2Fdvwa%2Fvulnerabilities%2Fsqli%2F%3Fid%3D%253Cscript%253Ealert%2528%252Fmaagi%252F%2529%253C%252Fscript%253E%26Submit%3DSubmit","::1" -"%3A%3A1",2015-04-03T22:36:53+02:00,0,"","GET.id%3D1%2527","%2Fczar%2Fplayground%2Fdvwa%2Fvulnerabilities%2Fsqli%2F%3Fid%3D1%2527%26Submit%3DSubmit","::1" -"%3A%3A1",2015-04-04T06:17:25+02:00,0,"","GET.id%3D1%2527","%2Fczar%2Fplayground%2Fdvwa%2Fvulnerabilities%2Fsqli%2F%3Fid%3D1%2527%26Submit%3DSubmit","::1" -"%3A%3A1",2015-04-04T06:17:48+02:00,0,"","GET.id%3D1%2527","%2Fczar%2Fplayground%2Fdvwa%2Fvulnerabilities%2Fsqli%2F%3Fid%3D1%2527%26Submit%3DSubmit","::1" -"%3A%3A1",2015-04-04T06:18:17+02:00,0,"","GET.id%3D1%2527","%2Fczar%2Fplayground%2Fdvwa%2Fvulnerabilities%2Fsqli%2F%3Fid%3D1%2527%26Submit%3DSubmit","::1" -"%3A%3A1",2015-04-04T06:19:04+02:00,21,"xss csrf id rfe lfi","GET.id%3D%253Cscript%253Ealert%2528%252F0%252F%2529%253C%252Fscript%253E","%2Fczar%2Fplayground%2Fdvwa%2Fvulnerabilities%2Fsqli%2F%3Fid%3D%253Cscript%253Ealert%2528%252F0%252F%2529%253C%252Fscript%253E%26Submit%3DSubmit","::1" -"%3A%3A1",2015-04-04T06:20:37+02:00,21,"xss csrf id rfe lfi","GET.id%3D%253Cscript%253Ealert%2528%252F0%252F%2529%253C%252Fscript%253E","%2Fczar%2Fplayground%2Fdvwa%2Fvulnerabilities%2Fsqli%2F%3Fid%3D%253Cscript%253Ealert%2528%252F0%252F%2529%253C%252Fscript%253E%26Submit%3DSubmit","::1" -"%3A%3A1",2015-04-04T06:21:13+02:00,21,"xss csrf id rfe lfi","GET.id%3D%253Cscript%253Ealert%2528%252F0%252F%2529%253C%252Fscript%253E","%2Fczar%2Fplayground%2Fdvwa%2Fvulnerabilities%2Fsqli%2F%3Fid%3D%253Cscript%253Ealert%2528%252F0%252F%2529%253C%252Fscript%253E%26Submit%3DSubmit","::1" -"%3A%3A1",2015-04-07T10:43:08+02:00,36,"xss csrf id rfe lfi sqli","GET.test%3D%2522%253E%253Cscript%253Eeval%2528window.name%2529%253C%252Fscript%253E","%2Fczar%2Fplayground%2Fdvwa%2Fsecurity.php%3Ftest%3D%2522%253E%253Cscript%253Eeval%28window.name%29%253C%2Fscript%253E","::1" -"%3A%3A1",2015-04-09T15:58:24+00:00,21,"xss csrf id rfe lfi","GET.hi%3D%253Cscript%253Ealert%2528%252F0%252F%2529%253C%252Fscript%253E","%2Fczar%2Fplayground%2Fdemo%2Fwordpress%2F%3Fhi%3D%253Cscript%253Ealert%28%2F0%2F%29%253C%2Fscript%253E","::1" -"%3A%3A1",2015-04-09T16:41:38+00:00,24,"xss csrf id rfe lfi","GET.i%3D%253Cscript%253Ealert%2528%252F0%252F%252F%2529%253C%252Fscript%253E","%2Fczar%2Fplayground%2Fdemo%2Fwordpress%2F%3Fi%3D%253Cscript%253Ealert%28%2F0%2F%2F%29%253C%2Fscript%253E","::1" -"%3A%3A1",2015-04-10T19:19:30+02:00,0,"","REQUEST.id%3D1%2527+GET.id%3D1%2527","%2Fczar%2Fplayground%2Fdvwa%2Fvulnerabilities%2Fsqli%2F%3Fid%3D1%2527%26Submit%3DSubmit","::1" -"%3A%3A1",2015-04-10T19:19:52+02:00,0,"","REQUEST.id%3D1%2527+GET.id%3D1%2527","%2Fczar%2Fplayground%2Fdvwa%2Fvulnerabilities%2Fsqli%2F%3Fid%3D1%2527%26Submit%3DSubmit","::1" diff --git a/libraries/plugins/IDS/vendors/htmlpurifier/HTMLPurifier.auto.php b/libraries/plugins/IDS/vendors/htmlpurifier/HTMLPurifier.auto.php deleted file mode 100644 index 1960c39..0000000 --- a/libraries/plugins/IDS/vendors/htmlpurifier/HTMLPurifier.auto.php +++ /dev/null @@ -1,11 +0,0 @@ -purify($html, $config); -} - -// vim: et sw=4 sts=4 diff --git a/libraries/plugins/IDS/vendors/htmlpurifier/HTMLPurifier.includes.php b/libraries/plugins/IDS/vendors/htmlpurifier/HTMLPurifier.includes.php deleted file mode 100644 index b9baf8f..0000000 --- a/libraries/plugins/IDS/vendors/htmlpurifier/HTMLPurifier.includes.php +++ /dev/null @@ -1,214 +0,0 @@ - $attributes) { - $allowed_elements[$element] = true; - foreach ($attributes as $attribute => $x) { - $allowed_attributes["$element.$attribute"] = true; - } - } - $config->set('HTML.AllowedElements', $allowed_elements); - $config->set('HTML.AllowedAttributes', $allowed_attributes); - $allowed_schemes = array(); - if ($allowed_protocols !== null) { - $config->set('URI.AllowedSchemes', $allowed_protocols); - } - $purifier = new HTMLPurifier($config); - return $purifier->purify($string); -} - -// vim: et sw=4 sts=4 diff --git a/libraries/plugins/IDS/vendors/htmlpurifier/HTMLPurifier.path.php b/libraries/plugins/IDS/vendors/htmlpurifier/HTMLPurifier.path.php deleted file mode 100644 index 39b1b65..0000000 --- a/libraries/plugins/IDS/vendors/htmlpurifier/HTMLPurifier.path.php +++ /dev/null @@ -1,11 +0,0 @@ -config = HTMLPurifier_Config::create($config); - - $this->strategy = new HTMLPurifier_Strategy_Core(); - - } - - /** - * Adds a filter to process the output. First come first serve - * @param $filter HTMLPurifier_Filter object - */ - public function addFilter($filter) { - trigger_error('HTMLPurifier->addFilter() is deprecated, use configuration directives in the Filter namespace or Filter.Custom', E_USER_WARNING); - $this->filters[] = $filter; - } - - /** - * Filters an HTML snippet/document to be XSS-free and standards-compliant. - * - * @param $html String of HTML to purify - * @param $config HTMLPurifier_Config object for this operation, if omitted, - * defaults to the config object specified during this - * object's construction. The parameter can also be any type - * that HTMLPurifier_Config::create() supports. - * @return Purified HTML - */ - public function purify($html, $config = null) { - - // :TODO: make the config merge in, instead of replace - $config = $config ? HTMLPurifier_Config::create($config) : $this->config; - - // implementation is partially environment dependant, partially - // configuration dependant - $lexer = HTMLPurifier_Lexer::create($config); - - $context = new HTMLPurifier_Context(); - - // setup HTML generator - $this->generator = new HTMLPurifier_Generator($config, $context); - $context->register('Generator', $this->generator); - - // set up global context variables - if ($config->get('Core.CollectErrors')) { - // may get moved out if other facilities use it - $language_factory = HTMLPurifier_LanguageFactory::instance(); - $language = $language_factory->create($config, $context); - $context->register('Locale', $language); - - $error_collector = new HTMLPurifier_ErrorCollector($context); - $context->register('ErrorCollector', $error_collector); - } - - // setup id_accumulator context, necessary due to the fact that - // AttrValidator can be called from many places - $id_accumulator = HTMLPurifier_IDAccumulator::build($config, $context); - $context->register('IDAccumulator', $id_accumulator); - - $html = HTMLPurifier_Encoder::convertToUTF8($html, $config, $context); - - // setup filters - $filter_flags = $config->getBatch('Filter'); - $custom_filters = $filter_flags['Custom']; - unset($filter_flags['Custom']); - $filters = array(); - foreach ($filter_flags as $filter => $flag) { - if (!$flag) continue; - if (strpos($filter, '.') !== false) continue; - $class = "HTMLPurifier_Filter_$filter"; - $filters[] = new $class; - } - foreach ($custom_filters as $filter) { - // maybe "HTMLPurifier_Filter_$filter", but be consistent with AutoFormat - $filters[] = $filter; - } - $filters = array_merge($filters, $this->filters); - // maybe prepare(), but later - - for ($i = 0, $filter_size = count($filters); $i < $filter_size; $i++) { - $html = $filters[$i]->preFilter($html, $config, $context); - } - - // purified HTML - $html = - $this->generator->generateFromTokens( - // list of tokens - $this->strategy->execute( - // list of un-purified tokens - $lexer->tokenizeHTML( - // un-purified HTML - $html, $config, $context - ), - $config, $context - ) - ); - - for ($i = $filter_size - 1; $i >= 0; $i--) { - $html = $filters[$i]->postFilter($html, $config, $context); - } - - $html = HTMLPurifier_Encoder::convertFromUTF8($html, $config, $context); - $this->context =& $context; - return $html; - } - - /** - * Filters an array of HTML snippets - * @param $config Optional HTMLPurifier_Config object for this operation. - * See HTMLPurifier::purify() for more details. - * @return Array of purified HTML - */ - public function purifyArray($array_of_html, $config = null) { - $context_array = array(); - foreach ($array_of_html as $key => $html) { - $array_of_html[$key] = $this->purify($html, $config); - $context_array[$key] = $this->context; - } - $this->context = $context_array; - return $array_of_html; - } - - /** - * Singleton for enforcing just one HTML Purifier in your system - * @param $prototype Optional prototype HTMLPurifier instance to - * overload singleton with, or HTMLPurifier_Config - * instance to configure the generated version with. - */ - public static function instance($prototype = null) { - if (!self::$instance || $prototype) { - if ($prototype instanceof HTMLPurifier) { - self::$instance = $prototype; - } elseif ($prototype) { - self::$instance = new HTMLPurifier($prototype); - } else { - self::$instance = new HTMLPurifier(); - } - } - return self::$instance; - } - - /** - * @note Backwards compatibility, see instance() - */ - public static function getInstance($prototype = null) { - return HTMLPurifier::instance($prototype); - } - -} - -// vim: et sw=4 sts=4 diff --git a/libraries/plugins/IDS/vendors/htmlpurifier/HTMLPurifier.safe-includes.php b/libraries/plugins/IDS/vendors/htmlpurifier/HTMLPurifier.safe-includes.php deleted file mode 100644 index a5c0d5b..0000000 --- a/libraries/plugins/IDS/vendors/htmlpurifier/HTMLPurifier.safe-includes.php +++ /dev/null @@ -1,208 +0,0 @@ -attr_collections as $coll_i => $coll) { - if (!isset($this->info[$coll_i])) { - $this->info[$coll_i] = array(); - } - foreach ($coll as $attr_i => $attr) { - if ($attr_i === 0 && isset($this->info[$coll_i][$attr_i])) { - // merge in includes - $this->info[$coll_i][$attr_i] = array_merge( - $this->info[$coll_i][$attr_i], $attr); - continue; - } - $this->info[$coll_i][$attr_i] = $attr; - } - } - } - // perform internal expansions and inclusions - foreach ($this->info as $name => $attr) { - // merge attribute collections that include others - $this->performInclusions($this->info[$name]); - // replace string identifiers with actual attribute objects - $this->expandIdentifiers($this->info[$name], $attr_types); - } - } - - /** - * Takes a reference to an attribute associative array and performs - * all inclusions specified by the zero index. - * @param &$attr Reference to attribute array - */ - public function performInclusions(&$attr) { - if (!isset($attr[0])) return; - $merge = $attr[0]; - $seen = array(); // recursion guard - // loop through all the inclusions - for ($i = 0; isset($merge[$i]); $i++) { - if (isset($seen[$merge[$i]])) continue; - $seen[$merge[$i]] = true; - // foreach attribute of the inclusion, copy it over - if (!isset($this->info[$merge[$i]])) continue; - foreach ($this->info[$merge[$i]] as $key => $value) { - if (isset($attr[$key])) continue; // also catches more inclusions - $attr[$key] = $value; - } - if (isset($this->info[$merge[$i]][0])) { - // recursion - $merge = array_merge($merge, $this->info[$merge[$i]][0]); - } - } - unset($attr[0]); - } - - /** - * Expands all string identifiers in an attribute array by replacing - * them with the appropriate values inside HTMLPurifier_AttrTypes - * @param &$attr Reference to attribute array - * @param $attr_types HTMLPurifier_AttrTypes instance - */ - public function expandIdentifiers(&$attr, $attr_types) { - - // because foreach will process new elements we add, make sure we - // skip duplicates - $processed = array(); - - foreach ($attr as $def_i => $def) { - // skip inclusions - if ($def_i === 0) continue; - - if (isset($processed[$def_i])) continue; - - // determine whether or not attribute is required - if ($required = (strpos($def_i, '*') !== false)) { - // rename the definition - unset($attr[$def_i]); - $def_i = trim($def_i, '*'); - $attr[$def_i] = $def; - } - - $processed[$def_i] = true; - - // if we've already got a literal object, move on - if (is_object($def)) { - // preserve previous required - $attr[$def_i]->required = ($required || $attr[$def_i]->required); - continue; - } - - if ($def === false) { - unset($attr[$def_i]); - continue; - } - - if ($t = $attr_types->get($def)) { - $attr[$def_i] = $t; - $attr[$def_i]->required = $required; - } else { - unset($attr[$def_i]); - } - } - - } - -} - -// vim: et sw=4 sts=4 diff --git a/libraries/plugins/IDS/vendors/htmlpurifier/HTMLPurifier/AttrDef.php b/libraries/plugins/IDS/vendors/htmlpurifier/HTMLPurifier/AttrDef.php deleted file mode 100644 index b2e4f36..0000000 --- a/libraries/plugins/IDS/vendors/htmlpurifier/HTMLPurifier/AttrDef.php +++ /dev/null @@ -1,123 +0,0 @@ - by removing - * leading and trailing whitespace, ignoring line feeds, and replacing - * carriage returns and tabs with spaces. While most useful for HTML - * attributes specified as CDATA, it can also be applied to most CSS - * values. - * - * @note This method is not entirely standards compliant, as trim() removes - * more types of whitespace than specified in the spec. In practice, - * this is rarely a problem, as those extra characters usually have - * already been removed by HTMLPurifier_Encoder. - * - * @warning This processing is inconsistent with XML's whitespace handling - * as specified by section 3.3.3 and referenced XHTML 1.0 section - * 4.7. However, note that we are NOT necessarily - * parsing XML, thus, this behavior may still be correct. We - * assume that newlines have been normalized. - */ - public function parseCDATA($string) { - $string = trim($string); - $string = str_replace(array("\n", "\t", "\r"), ' ', $string); - return $string; - } - - /** - * Factory method for creating this class from a string. - * @param $string String construction info - * @return Created AttrDef object corresponding to $string - */ - public function make($string) { - // default implementation, return a flyweight of this object. - // If $string has an effect on the returned object (i.e. you - // need to overload this method), it is best - // to clone or instantiate new copies. (Instantiation is safer.) - return $this; - } - - /** - * Removes spaces from rgb(0, 0, 0) so that shorthand CSS properties work - * properly. THIS IS A HACK! - */ - protected function mungeRgb($string) { - return preg_replace('/rgb\((\d+)\s*,\s*(\d+)\s*,\s*(\d+)\)/', 'rgb(\1,\2,\3)', $string); - } - - /** - * Parses a possibly escaped CSS string and returns the "pure" - * version of it. - */ - protected function expandCSSEscape($string) { - // flexibly parse it - $ret = ''; - for ($i = 0, $c = strlen($string); $i < $c; $i++) { - if ($string[$i] === '\\') { - $i++; - if ($i >= $c) { - $ret .= '\\'; - break; - } - if (ctype_xdigit($string[$i])) { - $code = $string[$i]; - for ($a = 1, $i++; $i < $c && $a < 6; $i++, $a++) { - if (!ctype_xdigit($string[$i])) break; - $code .= $string[$i]; - } - // We have to be extremely careful when adding - // new characters, to make sure we're not breaking - // the encoding. - $char = HTMLPurifier_Encoder::unichr(hexdec($code)); - if (HTMLPurifier_Encoder::cleanUTF8($char) === '') continue; - $ret .= $char; - if ($i < $c && trim($string[$i]) !== '') $i--; - continue; - } - if ($string[$i] === "\n") continue; - } - $ret .= $string[$i]; - } - return $ret; - } - -} - -// vim: et sw=4 sts=4 diff --git a/libraries/plugins/IDS/vendors/htmlpurifier/HTMLPurifier/AttrDef/CSS.php b/libraries/plugins/IDS/vendors/htmlpurifier/HTMLPurifier/AttrDef/CSS.php deleted file mode 100644 index 953e706..0000000 --- a/libraries/plugins/IDS/vendors/htmlpurifier/HTMLPurifier/AttrDef/CSS.php +++ /dev/null @@ -1,87 +0,0 @@ -parseCDATA($css); - - $definition = $config->getCSSDefinition(); - - // we're going to break the spec and explode by semicolons. - // This is because semicolon rarely appears in escaped form - // Doing this is generally flaky but fast - // IT MIGHT APPEAR IN URIs, see HTMLPurifier_AttrDef_CSSURI - // for details - - $declarations = explode(';', $css); - $propvalues = array(); - - /** - * Name of the current CSS property being validated. - */ - $property = false; - $context->register('CurrentCSSProperty', $property); - - foreach ($declarations as $declaration) { - if (!$declaration) continue; - if (!strpos($declaration, ':')) continue; - list($property, $value) = explode(':', $declaration, 2); - $property = trim($property); - $value = trim($value); - $ok = false; - do { - if (isset($definition->info[$property])) { - $ok = true; - break; - } - if (ctype_lower($property)) break; - $property = strtolower($property); - if (isset($definition->info[$property])) { - $ok = true; - break; - } - } while(0); - if (!$ok) continue; - // inefficient call, since the validator will do this again - if (strtolower(trim($value)) !== 'inherit') { - // inherit works for everything (but only on the base property) - $result = $definition->info[$property]->validate( - $value, $config, $context ); - } else { - $result = 'inherit'; - } - if ($result === false) continue; - $propvalues[$property] = $result; - } - - $context->destroy('CurrentCSSProperty'); - - // procedure does not write the new CSS simultaneously, so it's - // slightly inefficient, but it's the only way of getting rid of - // duplicates. Perhaps config to optimize it, but not now. - - $new_declarations = ''; - foreach ($propvalues as $prop => $value) { - $new_declarations .= "$prop:$value;"; - } - - return $new_declarations ? $new_declarations : false; - - } - -} - -// vim: et sw=4 sts=4 diff --git a/libraries/plugins/IDS/vendors/htmlpurifier/HTMLPurifier/AttrDef/CSS/AlphaValue.php b/libraries/plugins/IDS/vendors/htmlpurifier/HTMLPurifier/AttrDef/CSS/AlphaValue.php deleted file mode 100644 index 292c040..0000000 --- a/libraries/plugins/IDS/vendors/htmlpurifier/HTMLPurifier/AttrDef/CSS/AlphaValue.php +++ /dev/null @@ -1,21 +0,0 @@ - 1.0) $result = '1'; - return $result; - } - -} - -// vim: et sw=4 sts=4 diff --git a/libraries/plugins/IDS/vendors/htmlpurifier/HTMLPurifier/AttrDef/CSS/Background.php b/libraries/plugins/IDS/vendors/htmlpurifier/HTMLPurifier/AttrDef/CSS/Background.php deleted file mode 100644 index 3a3d20c..0000000 --- a/libraries/plugins/IDS/vendors/htmlpurifier/HTMLPurifier/AttrDef/CSS/Background.php +++ /dev/null @@ -1,87 +0,0 @@ -getCSSDefinition(); - $this->info['background-color'] = $def->info['background-color']; - $this->info['background-image'] = $def->info['background-image']; - $this->info['background-repeat'] = $def->info['background-repeat']; - $this->info['background-attachment'] = $def->info['background-attachment']; - $this->info['background-position'] = $def->info['background-position']; - } - - public function validate($string, $config, $context) { - - // regular pre-processing - $string = $this->parseCDATA($string); - if ($string === '') return false; - - // munge rgb() decl if necessary - $string = $this->mungeRgb($string); - - // assumes URI doesn't have spaces in it - $bits = explode(' ', strtolower($string)); // bits to process - - $caught = array(); - $caught['color'] = false; - $caught['image'] = false; - $caught['repeat'] = false; - $caught['attachment'] = false; - $caught['position'] = false; - - $i = 0; // number of catches - $none = false; - - foreach ($bits as $bit) { - if ($bit === '') continue; - foreach ($caught as $key => $status) { - if ($key != 'position') { - if ($status !== false) continue; - $r = $this->info['background-' . $key]->validate($bit, $config, $context); - } else { - $r = $bit; - } - if ($r === false) continue; - if ($key == 'position') { - if ($caught[$key] === false) $caught[$key] = ''; - $caught[$key] .= $r . ' '; - } else { - $caught[$key] = $r; - } - $i++; - break; - } - } - - if (!$i) return false; - if ($caught['position'] !== false) { - $caught['position'] = $this->info['background-position']-> - validate($caught['position'], $config, $context); - } - - $ret = array(); - foreach ($caught as $value) { - if ($value === false) continue; - $ret[] = $value; - } - - if (empty($ret)) return false; - return implode(' ', $ret); - - } - -} - -// vim: et sw=4 sts=4 diff --git a/libraries/plugins/IDS/vendors/htmlpurifier/HTMLPurifier/AttrDef/CSS/BackgroundPosition.php b/libraries/plugins/IDS/vendors/htmlpurifier/HTMLPurifier/AttrDef/CSS/BackgroundPosition.php deleted file mode 100644 index fae82ea..0000000 --- a/libraries/plugins/IDS/vendors/htmlpurifier/HTMLPurifier/AttrDef/CSS/BackgroundPosition.php +++ /dev/null @@ -1,133 +0,0 @@ - | | left | center | right - ] - [ - | | top | center | bottom - ]? - ] | - [ // this signifies that the vertical and horizontal adjectives - // can be arbitrarily ordered, however, there can only be two, - // one of each, or none at all - [ - left | center | right - ] || - [ - top | center | bottom - ] - ] - top, left = 0% - center, (none) = 50% - bottom, right = 100% -*/ - -/* QuirksMode says: - keyword + length/percentage must be ordered correctly, as per W3C - - Internet Explorer and Opera, however, support arbitrary ordering. We - should fix it up. - - Minor issue though, not strictly necessary. -*/ - -// control freaks may appreciate the ability to convert these to -// percentages or something, but it's not necessary - -/** - * Validates the value of background-position. - */ -class HTMLPurifier_AttrDef_CSS_BackgroundPosition extends HTMLPurifier_AttrDef -{ - - protected $length; - protected $percentage; - - public function __construct() { - $this->length = new HTMLPurifier_AttrDef_CSS_Length(); - $this->percentage = new HTMLPurifier_AttrDef_CSS_Percentage(); - } - - public function validate($string, $config, $context) { - $string = $this->parseCDATA($string); - $bits = explode(' ', $string); - - $keywords = array(); - $keywords['h'] = false; // left, right - $keywords['v'] = false; // top, bottom - $keywords['ch'] = false; // center (first word) - $keywords['cv'] = false; // center (second word) - $measures = array(); - - $i = 0; - - $lookup = array( - 'top' => 'v', - 'bottom' => 'v', - 'left' => 'h', - 'right' => 'h', - 'center' => 'c' - ); - - foreach ($bits as $bit) { - if ($bit === '') continue; - - // test for keyword - $lbit = ctype_lower($bit) ? $bit : strtolower($bit); - if (isset($lookup[$lbit])) { - $status = $lookup[$lbit]; - if ($status == 'c') { - if ($i == 0) { - $status = 'ch'; - } else { - $status = 'cv'; - } - } - $keywords[$status] = $lbit; - $i++; - } - - // test for length - $r = $this->length->validate($bit, $config, $context); - if ($r !== false) { - $measures[] = $r; - $i++; - } - - // test for percentage - $r = $this->percentage->validate($bit, $config, $context); - if ($r !== false) { - $measures[] = $r; - $i++; - } - - } - - if (!$i) return false; // no valid values were caught - - $ret = array(); - - // first keyword - if ($keywords['h']) $ret[] = $keywords['h']; - elseif ($keywords['ch']) { - $ret[] = $keywords['ch']; - $keywords['cv'] = false; // prevent re-use: center = center center - } - elseif (count($measures)) $ret[] = array_shift($measures); - - if ($keywords['v']) $ret[] = $keywords['v']; - elseif ($keywords['cv']) $ret[] = $keywords['cv']; - elseif (count($measures)) $ret[] = array_shift($measures); - - if (empty($ret)) return false; - return implode(' ', $ret); - - } - -} - -// vim: et sw=4 sts=4 diff --git a/libraries/plugins/IDS/vendors/htmlpurifier/HTMLPurifier/AttrDef/CSS/Border.php b/libraries/plugins/IDS/vendors/htmlpurifier/HTMLPurifier/AttrDef/CSS/Border.php deleted file mode 100644 index 42a1d1b..0000000 --- a/libraries/plugins/IDS/vendors/htmlpurifier/HTMLPurifier/AttrDef/CSS/Border.php +++ /dev/null @@ -1,43 +0,0 @@ -getCSSDefinition(); - $this->info['border-width'] = $def->info['border-width']; - $this->info['border-style'] = $def->info['border-style']; - $this->info['border-top-color'] = $def->info['border-top-color']; - } - - public function validate($string, $config, $context) { - $string = $this->parseCDATA($string); - $string = $this->mungeRgb($string); - $bits = explode(' ', $string); - $done = array(); // segments we've finished - $ret = ''; // return value - foreach ($bits as $bit) { - foreach ($this->info as $propname => $validator) { - if (isset($done[$propname])) continue; - $r = $validator->validate($bit, $config, $context); - if ($r !== false) { - $ret .= $r . ' '; - $done[$propname] = true; - break; - } - } - } - return rtrim($ret); - } - -} - -// vim: et sw=4 sts=4 diff --git a/libraries/plugins/IDS/vendors/htmlpurifier/HTMLPurifier/AttrDef/CSS/Color.php b/libraries/plugins/IDS/vendors/htmlpurifier/HTMLPurifier/AttrDef/CSS/Color.php deleted file mode 100644 index 07f95a6..0000000 --- a/libraries/plugins/IDS/vendors/htmlpurifier/HTMLPurifier/AttrDef/CSS/Color.php +++ /dev/null @@ -1,78 +0,0 @@ -get('Core.ColorKeywords'); - - $color = trim($color); - if ($color === '') return false; - - $lower = strtolower($color); - if (isset($colors[$lower])) return $colors[$lower]; - - if (strpos($color, 'rgb(') !== false) { - // rgb literal handling - $length = strlen($color); - if (strpos($color, ')') !== $length - 1) return false; - $triad = substr($color, 4, $length - 4 - 1); - $parts = explode(',', $triad); - if (count($parts) !== 3) return false; - $type = false; // to ensure that they're all the same type - $new_parts = array(); - foreach ($parts as $part) { - $part = trim($part); - if ($part === '') return false; - $length = strlen($part); - if ($part[$length - 1] === '%') { - // handle percents - if (!$type) { - $type = 'percentage'; - } elseif ($type !== 'percentage') { - return false; - } - $num = (float) substr($part, 0, $length - 1); - if ($num < 0) $num = 0; - if ($num > 100) $num = 100; - $new_parts[] = "$num%"; - } else { - // handle integers - if (!$type) { - $type = 'integer'; - } elseif ($type !== 'integer') { - return false; - } - $num = (int) $part; - if ($num < 0) $num = 0; - if ($num > 255) $num = 255; - $new_parts[] = (string) $num; - } - } - $new_triad = implode(',', $new_parts); - $color = "rgb($new_triad)"; - } else { - // hexadecimal handling - if ($color[0] === '#') { - $hex = substr($color, 1); - } else { - $hex = $color; - $color = '#' . $color; - } - $length = strlen($hex); - if ($length !== 3 && $length !== 6) return false; - if (!ctype_xdigit($hex)) return false; - } - - return $color; - - } - -} - -// vim: et sw=4 sts=4 diff --git a/libraries/plugins/IDS/vendors/htmlpurifier/HTMLPurifier/AttrDef/CSS/Composite.php b/libraries/plugins/IDS/vendors/htmlpurifier/HTMLPurifier/AttrDef/CSS/Composite.php deleted file mode 100644 index de1289c..0000000 --- a/libraries/plugins/IDS/vendors/htmlpurifier/HTMLPurifier/AttrDef/CSS/Composite.php +++ /dev/null @@ -1,38 +0,0 @@ -defs = $defs; - } - - public function validate($string, $config, $context) { - foreach ($this->defs as $i => $def) { - $result = $this->defs[$i]->validate($string, $config, $context); - if ($result !== false) return $result; - } - return false; - } - -} - -// vim: et sw=4 sts=4 diff --git a/libraries/plugins/IDS/vendors/htmlpurifier/HTMLPurifier/AttrDef/CSS/DenyElementDecorator.php b/libraries/plugins/IDS/vendors/htmlpurifier/HTMLPurifier/AttrDef/CSS/DenyElementDecorator.php deleted file mode 100644 index 6599c5b..0000000 --- a/libraries/plugins/IDS/vendors/htmlpurifier/HTMLPurifier/AttrDef/CSS/DenyElementDecorator.php +++ /dev/null @@ -1,28 +0,0 @@ -def = $def; - $this->element = $element; - } - /** - * Checks if CurrentToken is set and equal to $this->element - */ - public function validate($string, $config, $context) { - $token = $context->get('CurrentToken', true); - if ($token && $token->name == $this->element) return false; - return $this->def->validate($string, $config, $context); - } -} - -// vim: et sw=4 sts=4 diff --git a/libraries/plugins/IDS/vendors/htmlpurifier/HTMLPurifier/AttrDef/CSS/Filter.php b/libraries/plugins/IDS/vendors/htmlpurifier/HTMLPurifier/AttrDef/CSS/Filter.php deleted file mode 100644 index 147894b..0000000 --- a/libraries/plugins/IDS/vendors/htmlpurifier/HTMLPurifier/AttrDef/CSS/Filter.php +++ /dev/null @@ -1,54 +0,0 @@ -intValidator = new HTMLPurifier_AttrDef_Integer(); - } - - public function validate($value, $config, $context) { - $value = $this->parseCDATA($value); - if ($value === 'none') return $value; - // if we looped this we could support multiple filters - $function_length = strcspn($value, '('); - $function = trim(substr($value, 0, $function_length)); - if ($function !== 'alpha' && - $function !== 'Alpha' && - $function !== 'progid:DXImageTransform.Microsoft.Alpha' - ) return false; - $cursor = $function_length + 1; - $parameters_length = strcspn($value, ')', $cursor); - $parameters = substr($value, $cursor, $parameters_length); - $params = explode(',', $parameters); - $ret_params = array(); - $lookup = array(); - foreach ($params as $param) { - list($key, $value) = explode('=', $param); - $key = trim($key); - $value = trim($value); - if (isset($lookup[$key])) continue; - if ($key !== 'opacity') continue; - $value = $this->intValidator->validate($value, $config, $context); - if ($value === false) continue; - $int = (int) $value; - if ($int > 100) $value = '100'; - if ($int < 0) $value = '0'; - $ret_params[] = "$key=$value"; - $lookup[$key] = true; - } - $ret_parameters = implode(',', $ret_params); - $ret_function = "$function($ret_parameters)"; - return $ret_function; - } - -} - -// vim: et sw=4 sts=4 diff --git a/libraries/plugins/IDS/vendors/htmlpurifier/HTMLPurifier/AttrDef/CSS/Font.php b/libraries/plugins/IDS/vendors/htmlpurifier/HTMLPurifier/AttrDef/CSS/Font.php deleted file mode 100644 index 699ee0b..0000000 --- a/libraries/plugins/IDS/vendors/htmlpurifier/HTMLPurifier/AttrDef/CSS/Font.php +++ /dev/null @@ -1,149 +0,0 @@ -getCSSDefinition(); - $this->info['font-style'] = $def->info['font-style']; - $this->info['font-variant'] = $def->info['font-variant']; - $this->info['font-weight'] = $def->info['font-weight']; - $this->info['font-size'] = $def->info['font-size']; - $this->info['line-height'] = $def->info['line-height']; - $this->info['font-family'] = $def->info['font-family']; - } - - public function validate($string, $config, $context) { - - static $system_fonts = array( - 'caption' => true, - 'icon' => true, - 'menu' => true, - 'message-box' => true, - 'small-caption' => true, - 'status-bar' => true - ); - - // regular pre-processing - $string = $this->parseCDATA($string); - if ($string === '') return false; - - // check if it's one of the keywords - $lowercase_string = strtolower($string); - if (isset($system_fonts[$lowercase_string])) { - return $lowercase_string; - } - - $bits = explode(' ', $string); // bits to process - $stage = 0; // this indicates what we're looking for - $caught = array(); // which stage 0 properties have we caught? - $stage_1 = array('font-style', 'font-variant', 'font-weight'); - $final = ''; // output - - for ($i = 0, $size = count($bits); $i < $size; $i++) { - if ($bits[$i] === '') continue; - switch ($stage) { - - // attempting to catch font-style, font-variant or font-weight - case 0: - foreach ($stage_1 as $validator_name) { - if (isset($caught[$validator_name])) continue; - $r = $this->info[$validator_name]->validate( - $bits[$i], $config, $context); - if ($r !== false) { - $final .= $r . ' '; - $caught[$validator_name] = true; - break; - } - } - // all three caught, continue on - if (count($caught) >= 3) $stage = 1; - if ($r !== false) break; - - // attempting to catch font-size and perhaps line-height - case 1: - $found_slash = false; - if (strpos($bits[$i], '/') !== false) { - list($font_size, $line_height) = - explode('/', $bits[$i]); - if ($line_height === '') { - // ooh, there's a space after the slash! - $line_height = false; - $found_slash = true; - } - } else { - $font_size = $bits[$i]; - $line_height = false; - } - $r = $this->info['font-size']->validate( - $font_size, $config, $context); - if ($r !== false) { - $final .= $r; - // attempt to catch line-height - if ($line_height === false) { - // we need to scroll forward - for ($j = $i + 1; $j < $size; $j++) { - if ($bits[$j] === '') continue; - if ($bits[$j] === '/') { - if ($found_slash) { - return false; - } else { - $found_slash = true; - continue; - } - } - $line_height = $bits[$j]; - break; - } - } else { - // slash already found - $found_slash = true; - $j = $i; - } - if ($found_slash) { - $i = $j; - $r = $this->info['line-height']->validate( - $line_height, $config, $context); - if ($r !== false) { - $final .= '/' . $r; - } - } - $final .= ' '; - $stage = 2; - break; - } - return false; - - // attempting to catch font-family - case 2: - $font_family = - implode(' ', array_slice($bits, $i, $size - $i)); - $r = $this->info['font-family']->validate( - $font_family, $config, $context); - if ($r !== false) { - $final .= $r . ' '; - // processing completed successfully - return rtrim($final); - } - return false; - } - } - return false; - } - -} - -// vim: et sw=4 sts=4 diff --git a/libraries/plugins/IDS/vendors/htmlpurifier/HTMLPurifier/AttrDef/CSS/FontFamily.php b/libraries/plugins/IDS/vendors/htmlpurifier/HTMLPurifier/AttrDef/CSS/FontFamily.php deleted file mode 100644 index 0d9a4e1..0000000 --- a/libraries/plugins/IDS/vendors/htmlpurifier/HTMLPurifier/AttrDef/CSS/FontFamily.php +++ /dev/null @@ -1,197 +0,0 @@ -mask = '- '; - for ($c = 'a'; $c <= 'z'; $c++) $this->mask .= $c; - for ($c = 'A'; $c <= 'Z'; $c++) $this->mask .= $c; - for ($c = '0'; $c <= '9'; $c++) $this->mask .= $c; // cast-y, but should be fine - // special bytes used by UTF-8 - for ($i = 0x80; $i <= 0xFF; $i++) { - // We don't bother excluding invalid bytes in this range, - // because the our restriction of well-formed UTF-8 will - // prevent these from ever occurring. - $this->mask .= chr($i); - } - - /* - PHP's internal strcspn implementation is - O(length of string * length of mask), making it inefficient - for large masks. However, it's still faster than - preg_match 8) - for (p = s1;;) { - spanp = s2; - do { - if (*spanp == c || p == s1_end) { - return p - s1; - } - } while (spanp++ < (s2_end - 1)); - c = *++p; - } - */ - // possible optimization: invert the mask. - } - - public function validate($string, $config, $context) { - static $generic_names = array( - 'serif' => true, - 'sans-serif' => true, - 'monospace' => true, - 'fantasy' => true, - 'cursive' => true - ); - $allowed_fonts = $config->get('CSS.AllowedFonts'); - - // assume that no font names contain commas in them - $fonts = explode(',', $string); - $final = ''; - foreach($fonts as $font) { - $font = trim($font); - if ($font === '') continue; - // match a generic name - if (isset($generic_names[$font])) { - if ($allowed_fonts === null || isset($allowed_fonts[$font])) { - $final .= $font . ', '; - } - continue; - } - // match a quoted name - if ($font[0] === '"' || $font[0] === "'") { - $length = strlen($font); - if ($length <= 2) continue; - $quote = $font[0]; - if ($font[$length - 1] !== $quote) continue; - $font = substr($font, 1, $length - 2); - } - - $font = $this->expandCSSEscape($font); - - // $font is a pure representation of the font name - - if ($allowed_fonts !== null && !isset($allowed_fonts[$font])) { - continue; - } - - if (ctype_alnum($font) && $font !== '') { - // very simple font, allow it in unharmed - $final .= $font . ', '; - continue; - } - - // bugger out on whitespace. form feed (0C) really - // shouldn't show up regardless - $font = str_replace(array("\n", "\t", "\r", "\x0C"), ' ', $font); - - // Here, there are various classes of characters which need - // to be treated differently: - // - Alphanumeric characters are essentially safe. We - // handled these above. - // - Spaces require quoting, though most parsers will do - // the right thing if there aren't any characters that - // can be misinterpreted - // - Dashes rarely occur, but they fairly unproblematic - // for parsing/rendering purposes. - // The above characters cover the majority of Western font - // names. - // - Arbitrary Unicode characters not in ASCII. Because - // most parsers give little thought to Unicode, treatment - // of these codepoints is basically uniform, even for - // punctuation-like codepoints. These characters can - // show up in non-Western pages and are supported by most - // major browsers, for example: "MS 明朝" is a - // legitimate font-name - // . See - // the CSS3 spec for more examples: - // - // You can see live samples of these on the Internet: - // - // However, most of these fonts have ASCII equivalents: - // for example, 'MS Mincho', and it's considered - // professional to use ASCII font names instead of - // Unicode font names. Thanks Takeshi Terada for - // providing this information. - // The following characters, to my knowledge, have not been - // used to name font names. - // - Single quote. While theoretically you might find a - // font name that has a single quote in its name (serving - // as an apostrophe, e.g. Dave's Scribble), I haven't - // been able to find any actual examples of this. - // Internet Explorer's cssText translation (which I - // believe is invoked by innerHTML) normalizes any - // quoting to single quotes, and fails to escape single - // quotes. (Note that this is not IE's behavior for all - // CSS properties, just some sort of special casing for - // font-family). So a single quote *cannot* be used - // safely in the font-family context if there will be an - // innerHTML/cssText translation. Note that Firefox 3.x - // does this too. - // - Double quote. In IE, these get normalized to - // single-quotes, no matter what the encoding. (Fun - // fact, in IE8, the 'content' CSS property gained - // support, where they special cased to preserve encoded - // double quotes, but still translate unadorned double - // quotes into single quotes.) So, because their - // fixpoint behavior is identical to single quotes, they - // cannot be allowed either. Firefox 3.x displays - // single-quote style behavior. - // - Backslashes are reduced by one (so \\ -> \) every - // iteration, so they cannot be used safely. This shows - // up in IE7, IE8 and FF3 - // - Semicolons, commas and backticks are handled properly. - // - The rest of the ASCII punctuation is handled properly. - // We haven't checked what browsers do to unadorned - // versions, but this is not important as long as the - // browser doesn't /remove/ surrounding quotes (as IE does - // for HTML). - // - // With these results in hand, we conclude that there are - // various levels of safety: - // - Paranoid: alphanumeric, spaces and dashes(?) - // - International: Paranoid + non-ASCII Unicode - // - Edgy: Everything except quotes, backslashes - // - NoJS: Standards compliance, e.g. sod IE. Note that - // with some judicious character escaping (since certain - // types of escaping doesn't work) this is theoretically - // OK as long as innerHTML/cssText is not called. - // We believe that international is a reasonable default - // (that we will implement now), and once we do more - // extensive research, we may feel comfortable with dropping - // it down to edgy. - - // Edgy: alphanumeric, spaces, dashes and Unicode. Use of - // str(c)spn assumes that the string was already well formed - // Unicode (which of course it is). - if (strspn($font, $this->mask) !== strlen($font)) { - continue; - } - - // Historical: - // In the absence of innerHTML/cssText, these ugly - // transforms don't pose a security risk (as \\ and \" - // might--these escapes are not supported by most browsers). - // We could try to be clever and use single-quote wrapping - // when there is a double quote present, but I have choosen - // not to implement that. (NOTE: you can reduce the amount - // of escapes by one depending on what quoting style you use) - // $font = str_replace('\\', '\\5C ', $font); - // $font = str_replace('"', '\\22 ', $font); - // $font = str_replace("'", '\\27 ', $font); - - // font possibly with spaces, requires quoting - $final .= "'$font', "; - } - $final = rtrim($final, ', '); - if ($final === '') return false; - return $final; - } - -} - -// vim: et sw=4 sts=4 diff --git a/libraries/plugins/IDS/vendors/htmlpurifier/HTMLPurifier/AttrDef/CSS/ImportantDecorator.php b/libraries/plugins/IDS/vendors/htmlpurifier/HTMLPurifier/AttrDef/CSS/ImportantDecorator.php deleted file mode 100644 index 4e6b35e..0000000 --- a/libraries/plugins/IDS/vendors/htmlpurifier/HTMLPurifier/AttrDef/CSS/ImportantDecorator.php +++ /dev/null @@ -1,40 +0,0 @@ -def = $def; - $this->allow = $allow; - } - /** - * Intercepts and removes !important if necessary - */ - public function validate($string, $config, $context) { - // test for ! and important tokens - $string = trim($string); - $is_important = false; - // :TODO: optimization: test directly for !important and ! important - if (strlen($string) >= 9 && substr($string, -9) === 'important') { - $temp = rtrim(substr($string, 0, -9)); - // use a temp, because we might want to restore important - if (strlen($temp) >= 1 && substr($temp, -1) === '!') { - $string = rtrim(substr($temp, 0, -1)); - $is_important = true; - } - } - $string = $this->def->validate($string, $config, $context); - if ($this->allow && $is_important) $string .= ' !important'; - return $string; - } -} - -// vim: et sw=4 sts=4 diff --git a/libraries/plugins/IDS/vendors/htmlpurifier/HTMLPurifier/AttrDef/CSS/Length.php b/libraries/plugins/IDS/vendors/htmlpurifier/HTMLPurifier/AttrDef/CSS/Length.php deleted file mode 100644 index a07ec58..0000000 --- a/libraries/plugins/IDS/vendors/htmlpurifier/HTMLPurifier/AttrDef/CSS/Length.php +++ /dev/null @@ -1,47 +0,0 @@ -min = $min !== null ? HTMLPurifier_Length::make($min) : null; - $this->max = $max !== null ? HTMLPurifier_Length::make($max) : null; - } - - public function validate($string, $config, $context) { - $string = $this->parseCDATA($string); - - // Optimizations - if ($string === '') return false; - if ($string === '0') return '0'; - if (strlen($string) === 1) return false; - - $length = HTMLPurifier_Length::make($string); - if (!$length->isValid()) return false; - - if ($this->min) { - $c = $length->compareTo($this->min); - if ($c === false) return false; - if ($c < 0) return false; - } - if ($this->max) { - $c = $length->compareTo($this->max); - if ($c === false) return false; - if ($c > 0) return false; - } - - return $length->toString(); - } - -} - -// vim: et sw=4 sts=4 diff --git a/libraries/plugins/IDS/vendors/htmlpurifier/HTMLPurifier/AttrDef/CSS/ListStyle.php b/libraries/plugins/IDS/vendors/htmlpurifier/HTMLPurifier/AttrDef/CSS/ListStyle.php deleted file mode 100644 index 4406868..0000000 --- a/libraries/plugins/IDS/vendors/htmlpurifier/HTMLPurifier/AttrDef/CSS/ListStyle.php +++ /dev/null @@ -1,78 +0,0 @@ -getCSSDefinition(); - $this->info['list-style-type'] = $def->info['list-style-type']; - $this->info['list-style-position'] = $def->info['list-style-position']; - $this->info['list-style-image'] = $def->info['list-style-image']; - } - - public function validate($string, $config, $context) { - - // regular pre-processing - $string = $this->parseCDATA($string); - if ($string === '') return false; - - // assumes URI doesn't have spaces in it - $bits = explode(' ', strtolower($string)); // bits to process - - $caught = array(); - $caught['type'] = false; - $caught['position'] = false; - $caught['image'] = false; - - $i = 0; // number of catches - $none = false; - - foreach ($bits as $bit) { - if ($i >= 3) return; // optimization bit - if ($bit === '') continue; - foreach ($caught as $key => $status) { - if ($status !== false) continue; - $r = $this->info['list-style-' . $key]->validate($bit, $config, $context); - if ($r === false) continue; - if ($r === 'none') { - if ($none) continue; - else $none = true; - if ($key == 'image') continue; - } - $caught[$key] = $r; - $i++; - break; - } - } - - if (!$i) return false; - - $ret = array(); - - // construct type - if ($caught['type']) $ret[] = $caught['type']; - - // construct image - if ($caught['image']) $ret[] = $caught['image']; - - // construct position - if ($caught['position']) $ret[] = $caught['position']; - - if (empty($ret)) return false; - return implode(' ', $ret); - - } - -} - -// vim: et sw=4 sts=4 diff --git a/libraries/plugins/IDS/vendors/htmlpurifier/HTMLPurifier/AttrDef/CSS/Multiple.php b/libraries/plugins/IDS/vendors/htmlpurifier/HTMLPurifier/AttrDef/CSS/Multiple.php deleted file mode 100644 index 4d62a40..0000000 --- a/libraries/plugins/IDS/vendors/htmlpurifier/HTMLPurifier/AttrDef/CSS/Multiple.php +++ /dev/null @@ -1,58 +0,0 @@ -single = $single; - $this->max = $max; - } - - public function validate($string, $config, $context) { - $string = $this->parseCDATA($string); - if ($string === '') return false; - $parts = explode(' ', $string); // parseCDATA replaced \r, \t and \n - $length = count($parts); - $final = ''; - for ($i = 0, $num = 0; $i < $length && $num < $this->max; $i++) { - if (ctype_space($parts[$i])) continue; - $result = $this->single->validate($parts[$i], $config, $context); - if ($result !== false) { - $final .= $result . ' '; - $num++; - } - } - if ($final === '') return false; - return rtrim($final); - } - -} - -// vim: et sw=4 sts=4 diff --git a/libraries/plugins/IDS/vendors/htmlpurifier/HTMLPurifier/AttrDef/CSS/Number.php b/libraries/plugins/IDS/vendors/htmlpurifier/HTMLPurifier/AttrDef/CSS/Number.php deleted file mode 100644 index 3f99e12..0000000 --- a/libraries/plugins/IDS/vendors/htmlpurifier/HTMLPurifier/AttrDef/CSS/Number.php +++ /dev/null @@ -1,69 +0,0 @@ -non_negative = $non_negative; - } - - /** - * @warning Some contexts do not pass $config, $context. These - * variables should not be used without checking HTMLPurifier_Length - */ - public function validate($number, $config, $context) { - - $number = $this->parseCDATA($number); - - if ($number === '') return false; - if ($number === '0') return '0'; - - $sign = ''; - switch ($number[0]) { - case '-': - if ($this->non_negative) return false; - $sign = '-'; - case '+': - $number = substr($number, 1); - } - - if (ctype_digit($number)) { - $number = ltrim($number, '0'); - return $number ? $sign . $number : '0'; - } - - // Period is the only non-numeric character allowed - if (strpos($number, '.') === false) return false; - - list($left, $right) = explode('.', $number, 2); - - if ($left === '' && $right === '') return false; - if ($left !== '' && !ctype_digit($left)) return false; - - $left = ltrim($left, '0'); - $right = rtrim($right, '0'); - - if ($right === '') { - return $left ? $sign . $left : '0'; - } elseif (!ctype_digit($right)) { - return false; - } - - return $sign . $left . '.' . $right; - - } - -} - -// vim: et sw=4 sts=4 diff --git a/libraries/plugins/IDS/vendors/htmlpurifier/HTMLPurifier/AttrDef/CSS/Percentage.php b/libraries/plugins/IDS/vendors/htmlpurifier/HTMLPurifier/AttrDef/CSS/Percentage.php deleted file mode 100644 index c34b8fc..0000000 --- a/libraries/plugins/IDS/vendors/htmlpurifier/HTMLPurifier/AttrDef/CSS/Percentage.php +++ /dev/null @@ -1,40 +0,0 @@ -number_def = new HTMLPurifier_AttrDef_CSS_Number($non_negative); - } - - public function validate($string, $config, $context) { - - $string = $this->parseCDATA($string); - - if ($string === '') return false; - $length = strlen($string); - if ($length === 1) return false; - if ($string[$length - 1] !== '%') return false; - - $number = substr($string, 0, $length - 1); - $number = $this->number_def->validate($number, $config, $context); - - if ($number === false) return false; - return "$number%"; - - } - -} - -// vim: et sw=4 sts=4 diff --git a/libraries/plugins/IDS/vendors/htmlpurifier/HTMLPurifier/AttrDef/CSS/TextDecoration.php b/libraries/plugins/IDS/vendors/htmlpurifier/HTMLPurifier/AttrDef/CSS/TextDecoration.php deleted file mode 100644 index 772c922..0000000 --- a/libraries/plugins/IDS/vendors/htmlpurifier/HTMLPurifier/AttrDef/CSS/TextDecoration.php +++ /dev/null @@ -1,38 +0,0 @@ - true, - 'overline' => true, - 'underline' => true, - ); - - $string = strtolower($this->parseCDATA($string)); - - if ($string === 'none') return $string; - - $parts = explode(' ', $string); - $final = ''; - foreach ($parts as $part) { - if (isset($allowed_values[$part])) { - $final .= $part . ' '; - } - } - $final = rtrim($final); - if ($final === '') return false; - return $final; - - } - -} - -// vim: et sw=4 sts=4 diff --git a/libraries/plugins/IDS/vendors/htmlpurifier/HTMLPurifier/AttrDef/CSS/URI.php b/libraries/plugins/IDS/vendors/htmlpurifier/HTMLPurifier/AttrDef/CSS/URI.php deleted file mode 100644 index c2f767e..0000000 --- a/libraries/plugins/IDS/vendors/htmlpurifier/HTMLPurifier/AttrDef/CSS/URI.php +++ /dev/null @@ -1,61 +0,0 @@ -parseCDATA($uri_string); - if (strpos($uri_string, 'url(') !== 0) return false; - $uri_string = substr($uri_string, 4); - $new_length = strlen($uri_string) - 1; - if ($uri_string[$new_length] != ')') return false; - $uri = trim(substr($uri_string, 0, $new_length)); - - if (!empty($uri) && ($uri[0] == "'" || $uri[0] == '"')) { - $quote = $uri[0]; - $new_length = strlen($uri) - 1; - if ($uri[$new_length] !== $quote) return false; - $uri = substr($uri, 1, $new_length - 1); - } - - $uri = $this->expandCSSEscape($uri); - - $result = parent::validate($uri, $config, $context); - - if ($result === false) return false; - - // extra sanity check; should have been done by URI - $result = str_replace(array('"', "\\", "\n", "\x0c", "\r"), "", $result); - - // suspicious characters are ()'; we're going to percent encode - // them for safety. - $result = str_replace(array('(', ')', "'"), array('%28', '%29', '%27'), $result); - - // there's an extra bug where ampersands lose their escaping on - // an innerHTML cycle, so a very unlucky query parameter could - // then change the meaning of the URL. Unfortunately, there's - // not much we can do about that... - - return "url(\"$result\")"; - - } - -} - -// vim: et sw=4 sts=4 diff --git a/libraries/plugins/IDS/vendors/htmlpurifier/HTMLPurifier/AttrDef/Enum.php b/libraries/plugins/IDS/vendors/htmlpurifier/HTMLPurifier/AttrDef/Enum.php deleted file mode 100644 index 5d603eb..0000000 --- a/libraries/plugins/IDS/vendors/htmlpurifier/HTMLPurifier/AttrDef/Enum.php +++ /dev/null @@ -1,65 +0,0 @@ -valid_values = array_flip($valid_values); - $this->case_sensitive = $case_sensitive; - } - - public function validate($string, $config, $context) { - $string = trim($string); - if (!$this->case_sensitive) { - // we may want to do full case-insensitive libraries - $string = ctype_lower($string) ? $string : strtolower($string); - } - $result = isset($this->valid_values[$string]); - - return $result ? $string : false; - } - - /** - * @param $string In form of comma-delimited list of case-insensitive - * valid values. Example: "foo,bar,baz". Prepend "s:" to make - * case sensitive - */ - public function make($string) { - if (strlen($string) > 2 && $string[0] == 's' && $string[1] == ':') { - $string = substr($string, 2); - $sensitive = true; - } else { - $sensitive = false; - } - $values = explode(',', $string); - return new HTMLPurifier_AttrDef_Enum($values, $sensitive); - } - -} - -// vim: et sw=4 sts=4 diff --git a/libraries/plugins/IDS/vendors/htmlpurifier/HTMLPurifier/AttrDef/HTML/Bool.php b/libraries/plugins/IDS/vendors/htmlpurifier/HTMLPurifier/AttrDef/HTML/Bool.php deleted file mode 100644 index e06987e..0000000 --- a/libraries/plugins/IDS/vendors/htmlpurifier/HTMLPurifier/AttrDef/HTML/Bool.php +++ /dev/null @@ -1,28 +0,0 @@ -name = $name;} - - public function validate($string, $config, $context) { - if (empty($string)) return false; - return $this->name; - } - - /** - * @param $string Name of attribute - */ - public function make($string) { - return new HTMLPurifier_AttrDef_HTML_Bool($string); - } - -} - -// vim: et sw=4 sts=4 diff --git a/libraries/plugins/IDS/vendors/htmlpurifier/HTMLPurifier/AttrDef/HTML/Class.php b/libraries/plugins/IDS/vendors/htmlpurifier/HTMLPurifier/AttrDef/HTML/Class.php deleted file mode 100644 index 370068d..0000000 --- a/libraries/plugins/IDS/vendors/htmlpurifier/HTMLPurifier/AttrDef/HTML/Class.php +++ /dev/null @@ -1,34 +0,0 @@ -getDefinition('HTML')->doctype->name; - if ($name == "XHTML 1.1" || $name == "XHTML 2.0") { - return parent::split($string, $config, $context); - } else { - return preg_split('/\s+/', $string); - } - } - protected function filter($tokens, $config, $context) { - $allowed = $config->get('Attr.AllowedClasses'); - $forbidden = $config->get('Attr.ForbiddenClasses'); - $ret = array(); - foreach ($tokens as $token) { - if ( - ($allowed === null || isset($allowed[$token])) && - !isset($forbidden[$token]) && - // We need this O(n) check because of PHP's array - // implementation that casts -0 to 0. - !in_array($token, $ret, true) - ) { - $ret[] = $token; - } - } - return $ret; - } -} diff --git a/libraries/plugins/IDS/vendors/htmlpurifier/HTMLPurifier/AttrDef/HTML/Color.php b/libraries/plugins/IDS/vendors/htmlpurifier/HTMLPurifier/AttrDef/HTML/Color.php deleted file mode 100644 index d01e204..0000000 --- a/libraries/plugins/IDS/vendors/htmlpurifier/HTMLPurifier/AttrDef/HTML/Color.php +++ /dev/null @@ -1,32 +0,0 @@ -get('Core.ColorKeywords'); - - $string = trim($string); - - if (empty($string)) return false; - if (isset($colors[$string])) return $colors[$string]; - if ($string[0] === '#') $hex = substr($string, 1); - else $hex = $string; - - $length = strlen($hex); - if ($length !== 3 && $length !== 6) return false; - if (!ctype_xdigit($hex)) return false; - if ($length === 3) $hex = $hex[0].$hex[0].$hex[1].$hex[1].$hex[2].$hex[2]; - - return "#$hex"; - - } - -} - -// vim: et sw=4 sts=4 diff --git a/libraries/plugins/IDS/vendors/htmlpurifier/HTMLPurifier/AttrDef/HTML/FrameTarget.php b/libraries/plugins/IDS/vendors/htmlpurifier/HTMLPurifier/AttrDef/HTML/FrameTarget.php deleted file mode 100644 index ae6ea7c..0000000 --- a/libraries/plugins/IDS/vendors/htmlpurifier/HTMLPurifier/AttrDef/HTML/FrameTarget.php +++ /dev/null @@ -1,21 +0,0 @@ -valid_values === false) $this->valid_values = $config->get('Attr.AllowedFrameTargets'); - return parent::validate($string, $config, $context); - } - -} - -// vim: et sw=4 sts=4 diff --git a/libraries/plugins/IDS/vendors/htmlpurifier/HTMLPurifier/AttrDef/HTML/ID.php b/libraries/plugins/IDS/vendors/htmlpurifier/HTMLPurifier/AttrDef/HTML/ID.php deleted file mode 100644 index 81d0376..0000000 --- a/libraries/plugins/IDS/vendors/htmlpurifier/HTMLPurifier/AttrDef/HTML/ID.php +++ /dev/null @@ -1,70 +0,0 @@ -get('Attr.EnableID')) return false; - - $id = trim($id); // trim it first - - if ($id === '') return false; - - $prefix = $config->get('Attr.IDPrefix'); - if ($prefix !== '') { - $prefix .= $config->get('Attr.IDPrefixLocal'); - // prevent re-appending the prefix - if (strpos($id, $prefix) !== 0) $id = $prefix . $id; - } elseif ($config->get('Attr.IDPrefixLocal') !== '') { - trigger_error('%Attr.IDPrefixLocal cannot be used unless '. - '%Attr.IDPrefix is set', E_USER_WARNING); - } - - //if (!$this->ref) { - $id_accumulator =& $context->get('IDAccumulator'); - if (isset($id_accumulator->ids[$id])) return false; - //} - - // we purposely avoid using regex, hopefully this is faster - - if (ctype_alpha($id)) { - $result = true; - } else { - if (!ctype_alpha(@$id[0])) return false; - $trim = trim( // primitive style of regexps, I suppose - $id, - 'A..Za..z0..9:-._' - ); - $result = ($trim === ''); - } - - $regexp = $config->get('Attr.IDBlacklistRegexp'); - if ($regexp && preg_match($regexp, $id)) { - return false; - } - - if (/*!$this->ref && */$result) $id_accumulator->add($id); - - // if no change was made to the ID, return the result - // else, return the new id if stripping whitespace made it - // valid, or return false. - return $result ? $id : false; - - } - -} - -// vim: et sw=4 sts=4 diff --git a/libraries/plugins/IDS/vendors/htmlpurifier/HTMLPurifier/AttrDef/HTML/Length.php b/libraries/plugins/IDS/vendors/htmlpurifier/HTMLPurifier/AttrDef/HTML/Length.php deleted file mode 100644 index a242f9c..0000000 --- a/libraries/plugins/IDS/vendors/htmlpurifier/HTMLPurifier/AttrDef/HTML/Length.php +++ /dev/null @@ -1,41 +0,0 @@ - 100) return '100%'; - - return ((string) $points) . '%'; - - } - -} - -// vim: et sw=4 sts=4 diff --git a/libraries/plugins/IDS/vendors/htmlpurifier/HTMLPurifier/AttrDef/HTML/LinkTypes.php b/libraries/plugins/IDS/vendors/htmlpurifier/HTMLPurifier/AttrDef/HTML/LinkTypes.php deleted file mode 100644 index 76d25ed..0000000 --- a/libraries/plugins/IDS/vendors/htmlpurifier/HTMLPurifier/AttrDef/HTML/LinkTypes.php +++ /dev/null @@ -1,53 +0,0 @@ - 'AllowedRel', - 'rev' => 'AllowedRev' - ); - if (!isset($configLookup[$name])) { - trigger_error('Unrecognized attribute name for link '. - 'relationship.', E_USER_ERROR); - return; - } - $this->name = $configLookup[$name]; - } - - public function validate($string, $config, $context) { - - $allowed = $config->get('Attr.' . $this->name); - if (empty($allowed)) return false; - - $string = $this->parseCDATA($string); - $parts = explode(' ', $string); - - // lookup to prevent duplicates - $ret_lookup = array(); - foreach ($parts as $part) { - $part = strtolower(trim($part)); - if (!isset($allowed[$part])) continue; - $ret_lookup[$part] = true; - } - - if (empty($ret_lookup)) return false; - $string = implode(' ', array_keys($ret_lookup)); - - return $string; - - } - -} - -// vim: et sw=4 sts=4 diff --git a/libraries/plugins/IDS/vendors/htmlpurifier/HTMLPurifier/AttrDef/HTML/MultiLength.php b/libraries/plugins/IDS/vendors/htmlpurifier/HTMLPurifier/AttrDef/HTML/MultiLength.php deleted file mode 100644 index c72fc76..0000000 --- a/libraries/plugins/IDS/vendors/htmlpurifier/HTMLPurifier/AttrDef/HTML/MultiLength.php +++ /dev/null @@ -1,41 +0,0 @@ -split($string, $config, $context); - $tokens = $this->filter($tokens, $config, $context); - if (empty($tokens)) return false; - return implode(' ', $tokens); - - } - - /** - * Splits a space separated list of tokens into its constituent parts. - */ - protected function split($string, $config, $context) { - // OPTIMIZABLE! - // do the preg_match, capture all subpatterns for reformulation - - // we don't support U+00A1 and up codepoints or - // escaping because I don't know how to do that with regexps - // and plus it would complicate optimization efforts (you never - // see that anyway). - $pattern = '/(?:(?<=\s)|\A)'. // look behind for space or string start - '((?:--|-?[A-Za-z_])[A-Za-z_\-0-9]*)'. - '(?:(?=\s)|\z)/'; // look ahead for space or string end - preg_match_all($pattern, $string, $matches); - return $matches[1]; - } - - /** - * Template method for removing certain tokens based on arbitrary criteria. - * @note If we wanted to be really functional, we'd do an array_filter - * with a callback. But... we're not. - */ - protected function filter($tokens, $config, $context) { - return $tokens; - } - -} - -// vim: et sw=4 sts=4 diff --git a/libraries/plugins/IDS/vendors/htmlpurifier/HTMLPurifier/AttrDef/HTML/Pixels.php b/libraries/plugins/IDS/vendors/htmlpurifier/HTMLPurifier/AttrDef/HTML/Pixels.php deleted file mode 100644 index 4cb2c1b..0000000 --- a/libraries/plugins/IDS/vendors/htmlpurifier/HTMLPurifier/AttrDef/HTML/Pixels.php +++ /dev/null @@ -1,48 +0,0 @@ -max = $max; - } - - public function validate($string, $config, $context) { - - $string = trim($string); - if ($string === '0') return $string; - if ($string === '') return false; - $length = strlen($string); - if (substr($string, $length - 2) == 'px') { - $string = substr($string, 0, $length - 2); - } - if (!is_numeric($string)) return false; - $int = (int) $string; - - if ($int < 0) return '0'; - - // upper-bound value, extremely high values can - // crash operating systems, see - // WARNING, above link WILL crash you if you're using Windows - - if ($this->max !== null && $int > $this->max) return (string) $this->max; - - return (string) $int; - - } - - public function make($string) { - if ($string === '') $max = null; - else $max = (int) $string; - $class = get_class($this); - return new $class($max); - } - -} - -// vim: et sw=4 sts=4 diff --git a/libraries/plugins/IDS/vendors/htmlpurifier/HTMLPurifier/AttrDef/Integer.php b/libraries/plugins/IDS/vendors/htmlpurifier/HTMLPurifier/AttrDef/Integer.php deleted file mode 100644 index d59738d..0000000 --- a/libraries/plugins/IDS/vendors/htmlpurifier/HTMLPurifier/AttrDef/Integer.php +++ /dev/null @@ -1,73 +0,0 @@ -negative = $negative; - $this->zero = $zero; - $this->positive = $positive; - } - - public function validate($integer, $config, $context) { - - $integer = $this->parseCDATA($integer); - if ($integer === '') return false; - - // we could possibly simply typecast it to integer, but there are - // certain fringe cases that must not return an integer. - - // clip leading sign - if ( $this->negative && $integer[0] === '-' ) { - $digits = substr($integer, 1); - if ($digits === '0') $integer = '0'; // rm minus sign for zero - } elseif( $this->positive && $integer[0] === '+' ) { - $digits = $integer = substr($integer, 1); // rm unnecessary plus - } else { - $digits = $integer; - } - - // test if it's numeric - if (!ctype_digit($digits)) return false; - - // perform scope tests - if (!$this->zero && $integer == 0) return false; - if (!$this->positive && $integer > 0) return false; - if (!$this->negative && $integer < 0) return false; - - return $integer; - - } - -} - -// vim: et sw=4 sts=4 diff --git a/libraries/plugins/IDS/vendors/htmlpurifier/HTMLPurifier/AttrDef/Lang.php b/libraries/plugins/IDS/vendors/htmlpurifier/HTMLPurifier/AttrDef/Lang.php deleted file mode 100644 index 10e6da5..0000000 --- a/libraries/plugins/IDS/vendors/htmlpurifier/HTMLPurifier/AttrDef/Lang.php +++ /dev/null @@ -1,73 +0,0 @@ - 8 || !ctype_alnum($subtags[1])) { - return $new_string; - } - if (!ctype_lower($subtags[1])) $subtags[1] = strtolower($subtags[1]); - - $new_string .= '-' . $subtags[1]; - if ($num_subtags == 2) return $new_string; - - // process all other subtags, index 2 and up - for ($i = 2; $i < $num_subtags; $i++) { - $length = strlen($subtags[$i]); - if ($length == 0 || $length > 8 || !ctype_alnum($subtags[$i])) { - return $new_string; - } - if (!ctype_lower($subtags[$i])) { - $subtags[$i] = strtolower($subtags[$i]); - } - $new_string .= '-' . $subtags[$i]; - } - - return $new_string; - - } - -} - -// vim: et sw=4 sts=4 diff --git a/libraries/plugins/IDS/vendors/htmlpurifier/HTMLPurifier/AttrDef/Switch.php b/libraries/plugins/IDS/vendors/htmlpurifier/HTMLPurifier/AttrDef/Switch.php deleted file mode 100644 index c9e3ed1..0000000 --- a/libraries/plugins/IDS/vendors/htmlpurifier/HTMLPurifier/AttrDef/Switch.php +++ /dev/null @@ -1,34 +0,0 @@ -tag = $tag; - $this->withTag = $with_tag; - $this->withoutTag = $without_tag; - } - - public function validate($string, $config, $context) { - $token = $context->get('CurrentToken', true); - if (!$token || $token->name !== $this->tag) { - return $this->withoutTag->validate($string, $config, $context); - } else { - return $this->withTag->validate($string, $config, $context); - } - } - -} - -// vim: et sw=4 sts=4 diff --git a/libraries/plugins/IDS/vendors/htmlpurifier/HTMLPurifier/AttrDef/Text.php b/libraries/plugins/IDS/vendors/htmlpurifier/HTMLPurifier/AttrDef/Text.php deleted file mode 100644 index c6216cc..0000000 --- a/libraries/plugins/IDS/vendors/htmlpurifier/HTMLPurifier/AttrDef/Text.php +++ /dev/null @@ -1,15 +0,0 @@ -parseCDATA($string); - } - -} - -// vim: et sw=4 sts=4 diff --git a/libraries/plugins/IDS/vendors/htmlpurifier/HTMLPurifier/AttrDef/URI.php b/libraries/plugins/IDS/vendors/htmlpurifier/HTMLPurifier/AttrDef/URI.php deleted file mode 100644 index 01a6d83..0000000 --- a/libraries/plugins/IDS/vendors/htmlpurifier/HTMLPurifier/AttrDef/URI.php +++ /dev/null @@ -1,77 +0,0 @@ -parser = new HTMLPurifier_URIParser(); - $this->embedsResource = (bool) $embeds_resource; - } - - public function make($string) { - $embeds = (bool) $string; - return new HTMLPurifier_AttrDef_URI($embeds); - } - - public function validate($uri, $config, $context) { - - if ($config->get('URI.Disable')) return false; - - $uri = $this->parseCDATA($uri); - - // parse the URI - $uri = $this->parser->parse($uri); - if ($uri === false) return false; - - // add embedded flag to context for validators - $context->register('EmbeddedURI', $this->embedsResource); - - $ok = false; - do { - - // generic validation - $result = $uri->validate($config, $context); - if (!$result) break; - - // chained filtering - $uri_def = $config->getDefinition('URI'); - $result = $uri_def->filter($uri, $config, $context); - if (!$result) break; - - // scheme-specific validation - $scheme_obj = $uri->getSchemeObj($config, $context); - if (!$scheme_obj) break; - if ($this->embedsResource && !$scheme_obj->browsable) break; - $result = $scheme_obj->validate($uri, $config, $context); - if (!$result) break; - - // Post chained filtering - $result = $uri_def->postFilter($uri, $config, $context); - if (!$result) break; - - // survived gauntlet - $ok = true; - - } while (false); - - $context->destroy('EmbeddedURI'); - if (!$ok) return false; - - // back to string - return $uri->toString(); - - } - -} - -// vim: et sw=4 sts=4 diff --git a/libraries/plugins/IDS/vendors/htmlpurifier/HTMLPurifier/AttrDef/URI/Email.php b/libraries/plugins/IDS/vendors/htmlpurifier/HTMLPurifier/AttrDef/URI/Email.php deleted file mode 100644 index bfee9d1..0000000 --- a/libraries/plugins/IDS/vendors/htmlpurifier/HTMLPurifier/AttrDef/URI/Email.php +++ /dev/null @@ -1,17 +0,0 @@ -" - // that needs more percent encoding to be done - if ($string == '') return false; - $string = trim($string); - $result = preg_match('/^[A-Z0-9._%-]+@[A-Z0-9.-]+\.[A-Z]{2,4}$/i', $string); - return $result ? $string : false; - } - -} - -// vim: et sw=4 sts=4 diff --git a/libraries/plugins/IDS/vendors/htmlpurifier/HTMLPurifier/AttrDef/URI/Host.php b/libraries/plugins/IDS/vendors/htmlpurifier/HTMLPurifier/AttrDef/URI/Host.php deleted file mode 100644 index feca469..0000000 --- a/libraries/plugins/IDS/vendors/htmlpurifier/HTMLPurifier/AttrDef/URI/Host.php +++ /dev/null @@ -1,68 +0,0 @@ -ipv4 = new HTMLPurifier_AttrDef_URI_IPv4(); - $this->ipv6 = new HTMLPurifier_AttrDef_URI_IPv6(); - } - - public function validate($string, $config, $context) { - $length = strlen($string); - // empty hostname is OK; it's usually semantically equivalent: - // the default host as defined by a URI scheme is used: - // - // If the URI scheme defines a default for host, then that - // default applies when the host subcomponent is undefined - // or when the registered name is empty (zero length). - if ($string === '') return ''; - if ($length > 1 && $string[0] === '[' && $string[$length-1] === ']') { - //IPv6 - $ip = substr($string, 1, $length - 2); - $valid = $this->ipv6->validate($ip, $config, $context); - if ($valid === false) return false; - return '['. $valid . ']'; - } - - // need to do checks on unusual encodings too - $ipv4 = $this->ipv4->validate($string, $config, $context); - if ($ipv4 !== false) return $ipv4; - - // A regular domain name. - - // This breaks I18N domain names, but we don't have proper IRI support, - // so force users to insert Punycode. If there's complaining we'll - // try to fix things into an international friendly form. - - // The productions describing this are: - $a = '[a-z]'; // alpha - $an = '[a-z0-9]'; // alphanum - $and = '[a-z0-9-]'; // alphanum | "-" - // domainlabel = alphanum | alphanum *( alphanum | "-" ) alphanum - $domainlabel = "$an($and*$an)?"; - // toplabel = alpha | alpha *( alphanum | "-" ) alphanum - $toplabel = "$a($and*$an)?"; - // hostname = *( domainlabel "." ) toplabel [ "." ] - $match = preg_match("/^($domainlabel\.)*$toplabel\.?$/i", $string); - if (!$match) return false; - - return $string; - } - -} - -// vim: et sw=4 sts=4 diff --git a/libraries/plugins/IDS/vendors/htmlpurifier/HTMLPurifier/AttrDef/URI/IPv4.php b/libraries/plugins/IDS/vendors/htmlpurifier/HTMLPurifier/AttrDef/URI/IPv4.php deleted file mode 100644 index ec4cf59..0000000 --- a/libraries/plugins/IDS/vendors/htmlpurifier/HTMLPurifier/AttrDef/URI/IPv4.php +++ /dev/null @@ -1,39 +0,0 @@ -ip4) $this->_loadRegex(); - - if (preg_match('#^' . $this->ip4 . '$#s', $aIP)) - { - return $aIP; - } - - return false; - - } - - /** - * Lazy load function to prevent regex from being stuffed in - * cache. - */ - protected function _loadRegex() { - $oct = '(?:25[0-5]|2[0-4][0-9]|1[0-9]{2}|[1-9][0-9]|[0-9])'; // 0-255 - $this->ip4 = "(?:{$oct}\\.{$oct}\\.{$oct}\\.{$oct})"; - } - -} - -// vim: et sw=4 sts=4 diff --git a/libraries/plugins/IDS/vendors/htmlpurifier/HTMLPurifier/AttrDef/URI/IPv6.php b/libraries/plugins/IDS/vendors/htmlpurifier/HTMLPurifier/AttrDef/URI/IPv6.php deleted file mode 100644 index 9454e9b..0000000 --- a/libraries/plugins/IDS/vendors/htmlpurifier/HTMLPurifier/AttrDef/URI/IPv6.php +++ /dev/null @@ -1,99 +0,0 @@ -ip4) $this->_loadRegex(); - - $original = $aIP; - - $hex = '[0-9a-fA-F]'; - $blk = '(?:' . $hex . '{1,4})'; - $pre = '(?:/(?:12[0-8]|1[0-1][0-9]|[1-9][0-9]|[0-9]))'; // /0 - /128 - - // prefix check - if (strpos($aIP, '/') !== false) - { - if (preg_match('#' . $pre . '$#s', $aIP, $find)) - { - $aIP = substr($aIP, 0, 0-strlen($find[0])); - unset($find); - } - else - { - return false; - } - } - - // IPv4-compatiblity check - if (preg_match('#(?<=:'.')' . $this->ip4 . '$#s', $aIP, $find)) - { - $aIP = substr($aIP, 0, 0-strlen($find[0])); - $ip = explode('.', $find[0]); - $ip = array_map('dechex', $ip); - $aIP .= $ip[0] . $ip[1] . ':' . $ip[2] . $ip[3]; - unset($find, $ip); - } - - // compression check - $aIP = explode('::', $aIP); - $c = count($aIP); - if ($c > 2) - { - return false; - } - elseif ($c == 2) - { - list($first, $second) = $aIP; - $first = explode(':', $first); - $second = explode(':', $second); - - if (count($first) + count($second) > 8) - { - return false; - } - - while(count($first) < 8) - { - array_push($first, '0'); - } - - array_splice($first, 8 - count($second), 8, $second); - $aIP = $first; - unset($first,$second); - } - else - { - $aIP = explode(':', $aIP[0]); - } - $c = count($aIP); - - if ($c != 8) - { - return false; - } - - // All the pieces should be 16-bit hex strings. Are they? - foreach ($aIP as $piece) - { - if (!preg_match('#^[0-9a-fA-F]{4}$#s', sprintf('%04s', $piece))) - { - return false; - } - } - - return $original; - - } - -} - -// vim: et sw=4 sts=4 diff --git a/libraries/plugins/IDS/vendors/htmlpurifier/HTMLPurifier/AttrTransform.php b/libraries/plugins/IDS/vendors/htmlpurifier/HTMLPurifier/AttrTransform.php deleted file mode 100644 index e61d3e0..0000000 --- a/libraries/plugins/IDS/vendors/htmlpurifier/HTMLPurifier/AttrTransform.php +++ /dev/null @@ -1,56 +0,0 @@ -confiscateAttr($attr, 'background'); - // some validation should happen here - - $this->prependCSS($attr, "background-image:url($background);"); - - return $attr; - - } - -} - -// vim: et sw=4 sts=4 diff --git a/libraries/plugins/IDS/vendors/htmlpurifier/HTMLPurifier/AttrTransform/BdoDir.php b/libraries/plugins/IDS/vendors/htmlpurifier/HTMLPurifier/AttrTransform/BdoDir.php deleted file mode 100644 index 4d1a056..0000000 --- a/libraries/plugins/IDS/vendors/htmlpurifier/HTMLPurifier/AttrTransform/BdoDir.php +++ /dev/null @@ -1,19 +0,0 @@ -get('Attr.DefaultTextDir'); - return $attr; - } - -} - -// vim: et sw=4 sts=4 diff --git a/libraries/plugins/IDS/vendors/htmlpurifier/HTMLPurifier/AttrTransform/BgColor.php b/libraries/plugins/IDS/vendors/htmlpurifier/HTMLPurifier/AttrTransform/BgColor.php deleted file mode 100644 index ad3916b..0000000 --- a/libraries/plugins/IDS/vendors/htmlpurifier/HTMLPurifier/AttrTransform/BgColor.php +++ /dev/null @@ -1,23 +0,0 @@ -confiscateAttr($attr, 'bgcolor'); - // some validation should happen here - - $this->prependCSS($attr, "background-color:$bgcolor;"); - - return $attr; - - } - -} - -// vim: et sw=4 sts=4 diff --git a/libraries/plugins/IDS/vendors/htmlpurifier/HTMLPurifier/AttrTransform/BoolToCSS.php b/libraries/plugins/IDS/vendors/htmlpurifier/HTMLPurifier/AttrTransform/BoolToCSS.php deleted file mode 100644 index 51159b6..0000000 --- a/libraries/plugins/IDS/vendors/htmlpurifier/HTMLPurifier/AttrTransform/BoolToCSS.php +++ /dev/null @@ -1,36 +0,0 @@ -attr = $attr; - $this->css = $css; - } - - public function transform($attr, $config, $context) { - if (!isset($attr[$this->attr])) return $attr; - unset($attr[$this->attr]); - $this->prependCSS($attr, $this->css); - return $attr; - } - -} - -// vim: et sw=4 sts=4 diff --git a/libraries/plugins/IDS/vendors/htmlpurifier/HTMLPurifier/AttrTransform/Border.php b/libraries/plugins/IDS/vendors/htmlpurifier/HTMLPurifier/AttrTransform/Border.php deleted file mode 100644 index 476b0b0..0000000 --- a/libraries/plugins/IDS/vendors/htmlpurifier/HTMLPurifier/AttrTransform/Border.php +++ /dev/null @@ -1,18 +0,0 @@ -confiscateAttr($attr, 'border'); - // some validation should happen here - $this->prependCSS($attr, "border:{$border_width}px solid;"); - return $attr; - } - -} - -// vim: et sw=4 sts=4 diff --git a/libraries/plugins/IDS/vendors/htmlpurifier/HTMLPurifier/AttrTransform/EnumToCSS.php b/libraries/plugins/IDS/vendors/htmlpurifier/HTMLPurifier/AttrTransform/EnumToCSS.php deleted file mode 100644 index 2a5b451..0000000 --- a/libraries/plugins/IDS/vendors/htmlpurifier/HTMLPurifier/AttrTransform/EnumToCSS.php +++ /dev/null @@ -1,58 +0,0 @@ -attr = $attr; - $this->enumToCSS = $enum_to_css; - $this->caseSensitive = (bool) $case_sensitive; - } - - public function transform($attr, $config, $context) { - - if (!isset($attr[$this->attr])) return $attr; - - $value = trim($attr[$this->attr]); - unset($attr[$this->attr]); - - if (!$this->caseSensitive) $value = strtolower($value); - - if (!isset($this->enumToCSS[$value])) { - return $attr; - } - - $this->prependCSS($attr, $this->enumToCSS[$value]); - - return $attr; - - } - -} - -// vim: et sw=4 sts=4 diff --git a/libraries/plugins/IDS/vendors/htmlpurifier/HTMLPurifier/AttrTransform/ImgRequired.php b/libraries/plugins/IDS/vendors/htmlpurifier/HTMLPurifier/AttrTransform/ImgRequired.php deleted file mode 100644 index 7f0e4b7..0000000 --- a/libraries/plugins/IDS/vendors/htmlpurifier/HTMLPurifier/AttrTransform/ImgRequired.php +++ /dev/null @@ -1,43 +0,0 @@ -get('Core.RemoveInvalidImg')) return $attr; - $attr['src'] = $config->get('Attr.DefaultInvalidImage'); - $src = false; - } - - if (!isset($attr['alt'])) { - if ($src) { - $alt = $config->get('Attr.DefaultImageAlt'); - if ($alt === null) { - // truncate if the alt is too long - $attr['alt'] = substr(basename($attr['src']),0,40); - } else { - $attr['alt'] = $alt; - } - } else { - $attr['alt'] = $config->get('Attr.DefaultInvalidImageAlt'); - } - } - - return $attr; - - } - -} - -// vim: et sw=4 sts=4 diff --git a/libraries/plugins/IDS/vendors/htmlpurifier/HTMLPurifier/AttrTransform/ImgSpace.php b/libraries/plugins/IDS/vendors/htmlpurifier/HTMLPurifier/AttrTransform/ImgSpace.php deleted file mode 100644 index fd84c10..0000000 --- a/libraries/plugins/IDS/vendors/htmlpurifier/HTMLPurifier/AttrTransform/ImgSpace.php +++ /dev/null @@ -1,44 +0,0 @@ - array('left', 'right'), - 'vspace' => array('top', 'bottom') - ); - - public function __construct($attr) { - $this->attr = $attr; - if (!isset($this->css[$attr])) { - trigger_error(htmlspecialchars($attr) . ' is not valid space attribute'); - } - } - - public function transform($attr, $config, $context) { - - if (!isset($attr[$this->attr])) return $attr; - - $width = $this->confiscateAttr($attr, $this->attr); - // some validation could happen here - - if (!isset($this->css[$this->attr])) return $attr; - - $style = ''; - foreach ($this->css[$this->attr] as $suffix) { - $property = "margin-$suffix"; - $style .= "$property:{$width}px;"; - } - - $this->prependCSS($attr, $style); - - return $attr; - - } - -} - -// vim: et sw=4 sts=4 diff --git a/libraries/plugins/IDS/vendors/htmlpurifier/HTMLPurifier/AttrTransform/Input.php b/libraries/plugins/IDS/vendors/htmlpurifier/HTMLPurifier/AttrTransform/Input.php deleted file mode 100644 index 1682955..0000000 --- a/libraries/plugins/IDS/vendors/htmlpurifier/HTMLPurifier/AttrTransform/Input.php +++ /dev/null @@ -1,40 +0,0 @@ -pixels = new HTMLPurifier_AttrDef_HTML_Pixels(); - } - - public function transform($attr, $config, $context) { - if (!isset($attr['type'])) $t = 'text'; - else $t = strtolower($attr['type']); - if (isset($attr['checked']) && $t !== 'radio' && $t !== 'checkbox') { - unset($attr['checked']); - } - if (isset($attr['maxlength']) && $t !== 'text' && $t !== 'password') { - unset($attr['maxlength']); - } - if (isset($attr['size']) && $t !== 'text' && $t !== 'password') { - $result = $this->pixels->validate($attr['size'], $config, $context); - if ($result === false) unset($attr['size']); - else $attr['size'] = $result; - } - if (isset($attr['src']) && $t !== 'image') { - unset($attr['src']); - } - if (!isset($attr['value']) && ($t === 'radio' || $t === 'checkbox')) { - $attr['value'] = ''; - } - return $attr; - } - -} - -// vim: et sw=4 sts=4 diff --git a/libraries/plugins/IDS/vendors/htmlpurifier/HTMLPurifier/AttrTransform/Lang.php b/libraries/plugins/IDS/vendors/htmlpurifier/HTMLPurifier/AttrTransform/Lang.php deleted file mode 100644 index 5869e7f..0000000 --- a/libraries/plugins/IDS/vendors/htmlpurifier/HTMLPurifier/AttrTransform/Lang.php +++ /dev/null @@ -1,28 +0,0 @@ -name = $name; - $this->cssName = $css_name ? $css_name : $name; - } - - public function transform($attr, $config, $context) { - if (!isset($attr[$this->name])) return $attr; - $length = $this->confiscateAttr($attr, $this->name); - if(ctype_digit($length)) $length .= 'px'; - $this->prependCSS($attr, $this->cssName . ":$length;"); - return $attr; - } - -} - -// vim: et sw=4 sts=4 diff --git a/libraries/plugins/IDS/vendors/htmlpurifier/HTMLPurifier/AttrTransform/Name.php b/libraries/plugins/IDS/vendors/htmlpurifier/HTMLPurifier/AttrTransform/Name.php deleted file mode 100644 index 15315bc..0000000 --- a/libraries/plugins/IDS/vendors/htmlpurifier/HTMLPurifier/AttrTransform/Name.php +++ /dev/null @@ -1,21 +0,0 @@ -get('HTML.Attr.Name.UseCDATA')) return $attr; - if (!isset($attr['name'])) return $attr; - $id = $this->confiscateAttr($attr, 'name'); - if ( isset($attr['id'])) return $attr; - $attr['id'] = $id; - return $attr; - } - -} - -// vim: et sw=4 sts=4 diff --git a/libraries/plugins/IDS/vendors/htmlpurifier/HTMLPurifier/AttrTransform/NameSync.php b/libraries/plugins/IDS/vendors/htmlpurifier/HTMLPurifier/AttrTransform/NameSync.php deleted file mode 100644 index a95638c..0000000 --- a/libraries/plugins/IDS/vendors/htmlpurifier/HTMLPurifier/AttrTransform/NameSync.php +++ /dev/null @@ -1,27 +0,0 @@ -idDef = new HTMLPurifier_AttrDef_HTML_ID(); - } - - public function transform($attr, $config, $context) { - if (!isset($attr['name'])) return $attr; - $name = $attr['name']; - if (isset($attr['id']) && $attr['id'] === $name) return $attr; - $result = $this->idDef->validate($name, $config, $context); - if ($result === false) unset($attr['name']); - else $attr['name'] = $result; - return $attr; - } - -} - -// vim: et sw=4 sts=4 diff --git a/libraries/plugins/IDS/vendors/htmlpurifier/HTMLPurifier/AttrTransform/Nofollow.php b/libraries/plugins/IDS/vendors/htmlpurifier/HTMLPurifier/AttrTransform/Nofollow.php deleted file mode 100644 index 573b42c..0000000 --- a/libraries/plugins/IDS/vendors/htmlpurifier/HTMLPurifier/AttrTransform/Nofollow.php +++ /dev/null @@ -1,41 +0,0 @@ -parser = new HTMLPurifier_URIParser(); - } - - public function transform($attr, $config, $context) { - - if (!isset($attr['href'])) { - return $attr; - } - - // XXX Kind of inefficient - $url = $this->parser->parse($attr['href']); - $scheme = $url->getSchemeObj($config, $context); - - if (!is_null($url->host) && $scheme !== false && $scheme->browsable) { - if (isset($attr['rel'])) { - $attr['rel'] .= ' nofollow'; - } else { - $attr['rel'] = 'nofollow'; - } - } - - return $attr; - - } - -} - -// vim: et sw=4 sts=4 diff --git a/libraries/plugins/IDS/vendors/htmlpurifier/HTMLPurifier/AttrTransform/SafeEmbed.php b/libraries/plugins/IDS/vendors/htmlpurifier/HTMLPurifier/AttrTransform/SafeEmbed.php deleted file mode 100644 index 4da4499..0000000 --- a/libraries/plugins/IDS/vendors/htmlpurifier/HTMLPurifier/AttrTransform/SafeEmbed.php +++ /dev/null @@ -1,15 +0,0 @@ -uri = new HTMLPurifier_AttrDef_URI(true); // embedded - $this->wmode = new HTMLPurifier_AttrDef_Enum(array('window', 'opaque', 'transparent')); - } - - public function transform($attr, $config, $context) { - // If we add support for other objects, we'll need to alter the - // transforms. - switch ($attr['name']) { - // application/x-shockwave-flash - // Keep this synchronized with Injector/SafeObject.php - case 'allowScriptAccess': - $attr['value'] = 'never'; - break; - case 'allowNetworking': - $attr['value'] = 'internal'; - break; - case 'allowFullScreen': - if ($config->get('HTML.FlashAllowFullScreen')) { - $attr['value'] = ($attr['value'] == 'true') ? 'true' : 'false'; - } else { - $attr['value'] = 'false'; - } - break; - case 'wmode': - $attr['value'] = $this->wmode->validate($attr['value'], $config, $context); - break; - case 'movie': - case 'src': - $attr['name'] = "movie"; - $attr['value'] = $this->uri->validate($attr['value'], $config, $context); - break; - case 'flashvars': - // we're going to allow arbitrary inputs to the SWF, on - // the reasoning that it could only hack the SWF, not us. - break; - // add other cases to support other param name/value pairs - default: - $attr['name'] = $attr['value'] = null; - } - return $attr; - } -} - -// vim: et sw=4 sts=4 diff --git a/libraries/plugins/IDS/vendors/htmlpurifier/HTMLPurifier/AttrTransform/ScriptRequired.php b/libraries/plugins/IDS/vendors/htmlpurifier/HTMLPurifier/AttrTransform/ScriptRequired.php deleted file mode 100644 index 4499050..0000000 --- a/libraries/plugins/IDS/vendors/htmlpurifier/HTMLPurifier/AttrTransform/ScriptRequired.php +++ /dev/null @@ -1,16 +0,0 @@ - - */ -class HTMLPurifier_AttrTransform_ScriptRequired extends HTMLPurifier_AttrTransform -{ - public function transform($attr, $config, $context) { - if (!isset($attr['type'])) { - $attr['type'] = 'text/javascript'; - } - return $attr; - } -} - -// vim: et sw=4 sts=4 diff --git a/libraries/plugins/IDS/vendors/htmlpurifier/HTMLPurifier/AttrTransform/Textarea.php b/libraries/plugins/IDS/vendors/htmlpurifier/HTMLPurifier/AttrTransform/Textarea.php deleted file mode 100644 index 81ac348..0000000 --- a/libraries/plugins/IDS/vendors/htmlpurifier/HTMLPurifier/AttrTransform/Textarea.php +++ /dev/null @@ -1,18 +0,0 @@ - - */ -class HTMLPurifier_AttrTransform_Textarea extends HTMLPurifier_AttrTransform -{ - - public function transform($attr, $config, $context) { - // Calculated from Firefox - if (!isset($attr['cols'])) $attr['cols'] = '22'; - if (!isset($attr['rows'])) $attr['rows'] = '3'; - return $attr; - } - -} - -// vim: et sw=4 sts=4 diff --git a/libraries/plugins/IDS/vendors/htmlpurifier/HTMLPurifier/AttrTypes.php b/libraries/plugins/IDS/vendors/htmlpurifier/HTMLPurifier/AttrTypes.php deleted file mode 100644 index fc2ea4e..0000000 --- a/libraries/plugins/IDS/vendors/htmlpurifier/HTMLPurifier/AttrTypes.php +++ /dev/null @@ -1,77 +0,0 @@ -info['Enum'] = new HTMLPurifier_AttrDef_Enum(); - $this->info['Bool'] = new HTMLPurifier_AttrDef_HTML_Bool(); - - $this->info['CDATA'] = new HTMLPurifier_AttrDef_Text(); - $this->info['ID'] = new HTMLPurifier_AttrDef_HTML_ID(); - $this->info['Length'] = new HTMLPurifier_AttrDef_HTML_Length(); - $this->info['MultiLength'] = new HTMLPurifier_AttrDef_HTML_MultiLength(); - $this->info['NMTOKENS'] = new HTMLPurifier_AttrDef_HTML_Nmtokens(); - $this->info['Pixels'] = new HTMLPurifier_AttrDef_HTML_Pixels(); - $this->info['Text'] = new HTMLPurifier_AttrDef_Text(); - $this->info['URI'] = new HTMLPurifier_AttrDef_URI(); - $this->info['LanguageCode'] = new HTMLPurifier_AttrDef_Lang(); - $this->info['Color'] = new HTMLPurifier_AttrDef_HTML_Color(); - - // unimplemented aliases - $this->info['ContentType'] = new HTMLPurifier_AttrDef_Text(); - $this->info['ContentTypes'] = new HTMLPurifier_AttrDef_Text(); - $this->info['Charsets'] = new HTMLPurifier_AttrDef_Text(); - $this->info['Character'] = new HTMLPurifier_AttrDef_Text(); - - // "proprietary" types - $this->info['Class'] = new HTMLPurifier_AttrDef_HTML_Class(); - - // number is really a positive integer (one or more digits) - // FIXME: ^^ not always, see start and value of list items - $this->info['Number'] = new HTMLPurifier_AttrDef_Integer(false, false, true); - } - - /** - * Retrieves a type - * @param $type String type name - * @return Object AttrDef for type - */ - public function get($type) { - - // determine if there is any extra info tacked on - if (strpos($type, '#') !== false) list($type, $string) = explode('#', $type, 2); - else $string = ''; - - if (!isset($this->info[$type])) { - trigger_error('Cannot retrieve undefined attribute type ' . $type, E_USER_ERROR); - return; - } - - return $this->info[$type]->make($string); - - } - - /** - * Sets a new implementation for a type - * @param $type String type name - * @param $impl Object AttrDef for type - */ - public function set($type, $impl) { - $this->info[$type] = $impl; - } -} - -// vim: et sw=4 sts=4 diff --git a/libraries/plugins/IDS/vendors/htmlpurifier/HTMLPurifier/AttrValidator.php b/libraries/plugins/IDS/vendors/htmlpurifier/HTMLPurifier/AttrValidator.php deleted file mode 100644 index 829a0f8..0000000 --- a/libraries/plugins/IDS/vendors/htmlpurifier/HTMLPurifier/AttrValidator.php +++ /dev/null @@ -1,162 +0,0 @@ -getHTMLDefinition(); - $e =& $context->get('ErrorCollector', true); - - // initialize IDAccumulator if necessary - $ok =& $context->get('IDAccumulator', true); - if (!$ok) { - $id_accumulator = HTMLPurifier_IDAccumulator::build($config, $context); - $context->register('IDAccumulator', $id_accumulator); - } - - // initialize CurrentToken if necessary - $current_token =& $context->get('CurrentToken', true); - if (!$current_token) $context->register('CurrentToken', $token); - - if ( - !$token instanceof HTMLPurifier_Token_Start && - !$token instanceof HTMLPurifier_Token_Empty - ) return $token; - - // create alias to global definition array, see also $defs - // DEFINITION CALL - $d_defs = $definition->info_global_attr; - - // don't update token until the very end, to ensure an atomic update - $attr = $token->attr; - - // do global transformations (pre) - // nothing currently utilizes this - foreach ($definition->info_attr_transform_pre as $transform) { - $attr = $transform->transform($o = $attr, $config, $context); - if ($e) { - if ($attr != $o) $e->send(E_NOTICE, 'AttrValidator: Attributes transformed', $o, $attr); - } - } - - // do local transformations only applicable to this element (pre) - // ex.

to

- foreach ($definition->info[$token->name]->attr_transform_pre as $transform) { - $attr = $transform->transform($o = $attr, $config, $context); - if ($e) { - if ($attr != $o) $e->send(E_NOTICE, 'AttrValidator: Attributes transformed', $o, $attr); - } - } - - // create alias to this element's attribute definition array, see - // also $d_defs (global attribute definition array) - // DEFINITION CALL - $defs = $definition->info[$token->name]->attr; - - $attr_key = false; - $context->register('CurrentAttr', $attr_key); - - // iterate through all the attribute keypairs - // Watch out for name collisions: $key has previously been used - foreach ($attr as $attr_key => $value) { - - // call the definition - if ( isset($defs[$attr_key]) ) { - // there is a local definition defined - if ($defs[$attr_key] === false) { - // We've explicitly been told not to allow this element. - // This is usually when there's a global definition - // that must be overridden. - // Theoretically speaking, we could have a - // AttrDef_DenyAll, but this is faster! - $result = false; - } else { - // validate according to the element's definition - $result = $defs[$attr_key]->validate( - $value, $config, $context - ); - } - } elseif ( isset($d_defs[$attr_key]) ) { - // there is a global definition defined, validate according - // to the global definition - $result = $d_defs[$attr_key]->validate( - $value, $config, $context - ); - } else { - // system never heard of the attribute? DELETE! - $result = false; - } - - // put the results into effect - if ($result === false || $result === null) { - // this is a generic error message that should replaced - // with more specific ones when possible - if ($e) $e->send(E_ERROR, 'AttrValidator: Attribute removed'); - - // remove the attribute - unset($attr[$attr_key]); - } elseif (is_string($result)) { - // generally, if a substitution is happening, there - // was some sort of implicit correction going on. We'll - // delegate it to the attribute classes to say exactly what. - - // simple substitution - $attr[$attr_key] = $result; - } else { - // nothing happens - } - - // we'd also want slightly more complicated substitution - // involving an array as the return value, - // although we're not sure how colliding attributes would - // resolve (certain ones would be completely overriden, - // others would prepend themselves). - } - - $context->destroy('CurrentAttr'); - - // post transforms - - // global (error reporting untested) - foreach ($definition->info_attr_transform_post as $transform) { - $attr = $transform->transform($o = $attr, $config, $context); - if ($e) { - if ($attr != $o) $e->send(E_NOTICE, 'AttrValidator: Attributes transformed', $o, $attr); - } - } - - // local (error reporting untested) - foreach ($definition->info[$token->name]->attr_transform_post as $transform) { - $attr = $transform->transform($o = $attr, $config, $context); - if ($e) { - if ($attr != $o) $e->send(E_NOTICE, 'AttrValidator: Attributes transformed', $o, $attr); - } - } - - $token->attr = $attr; - - // destroy CurrentToken if we made it ourselves - if (!$current_token) $context->destroy('CurrentToken'); - - } - - -} - -// vim: et sw=4 sts=4 diff --git a/libraries/plugins/IDS/vendors/htmlpurifier/HTMLPurifier/Bootstrap.php b/libraries/plugins/IDS/vendors/htmlpurifier/HTMLPurifier/Bootstrap.php deleted file mode 100644 index 607c5b1..0000000 --- a/libraries/plugins/IDS/vendors/htmlpurifier/HTMLPurifier/Bootstrap.php +++ /dev/null @@ -1,104 +0,0 @@ - -if (!defined('PHP_EOL')) { - switch (strtoupper(substr(PHP_OS, 0, 3))) { - case 'WIN': - define('PHP_EOL', "\r\n"); - break; - case 'DAR': - define('PHP_EOL', "\r"); - break; - default: - define('PHP_EOL', "\n"); - } -} - -/** - * Bootstrap class that contains meta-functionality for HTML Purifier such as - * the autoload function. - * - * @note - * This class may be used without any other files from HTML Purifier. - */ -class HTMLPurifier_Bootstrap -{ - - /** - * Autoload function for HTML Purifier - * @param $class Class to load - */ - public static function autoload($class) { - $file = HTMLPurifier_Bootstrap::getPath($class); - if (!$file) return false; - // Technically speaking, it should be ok and more efficient to - // just do 'require', but Antonio Parraga reports that with - // Zend extensions such as Zend debugger and APC, this invariant - // may be broken. Since we have efficient alternatives, pay - // the cost here and avoid the bug. - require_once HTMLPURIFIER_PREFIX . '/' . $file; - return true; - } - - /** - * Returns the path for a specific class. - */ - public static function getPath($class) { - if (strncmp('HTMLPurifier', $class, 12) !== 0) return false; - // Custom implementations - if (strncmp('HTMLPurifier_Language_', $class, 22) === 0) { - $code = str_replace('_', '-', substr($class, 22)); - $file = 'HTMLPurifier/Language/classes/' . $code . '.php'; - } else { - $file = str_replace('_', '/', $class) . '.php'; - } - if (!file_exists(HTMLPURIFIER_PREFIX . '/' . $file)) return false; - return $file; - } - - /** - * "Pre-registers" our autoloader on the SPL stack. - */ - public static function registerAutoload() { - $autoload = array('HTMLPurifier_Bootstrap', 'autoload'); - if ( ($funcs = spl_autoload_functions()) === false ) { - spl_autoload_register($autoload); - } elseif (function_exists('spl_autoload_unregister')) { - $buggy = version_compare(PHP_VERSION, '5.2.11', '<'); - $compat = version_compare(PHP_VERSION, '5.1.2', '<=') && - version_compare(PHP_VERSION, '5.1.0', '>='); - foreach ($funcs as $func) { - if ($buggy && is_array($func)) { - // :TRICKY: There are some compatibility issues and some - // places where we need to error out - $reflector = new ReflectionMethod($func[0], $func[1]); - if (!$reflector->isStatic()) { - throw new Exception(' - HTML Purifier autoloader registrar is not compatible - with non-static object methods due to PHP Bug #44144; - Please do not use HTMLPurifier.autoload.php (or any - file that includes this file); instead, place the code: - spl_autoload_register(array(\'HTMLPurifier_Bootstrap\', \'autoload\')) - after your own autoloaders. - '); - } - // Suprisingly, spl_autoload_register supports the - // Class::staticMethod callback format, although call_user_func doesn't - if ($compat) $func = implode('::', $func); - } - spl_autoload_unregister($func); - } - spl_autoload_register($autoload); - foreach ($funcs as $func) spl_autoload_register($func); - } - } - -} - -// vim: et sw=4 sts=4 diff --git a/libraries/plugins/IDS/vendors/htmlpurifier/HTMLPurifier/CSSDefinition.php b/libraries/plugins/IDS/vendors/htmlpurifier/HTMLPurifier/CSSDefinition.php deleted file mode 100644 index 91619f5..0000000 --- a/libraries/plugins/IDS/vendors/htmlpurifier/HTMLPurifier/CSSDefinition.php +++ /dev/null @@ -1,322 +0,0 @@ -info['text-align'] = new HTMLPurifier_AttrDef_Enum( - array('left', 'right', 'center', 'justify'), false); - - $border_style = - $this->info['border-bottom-style'] = - $this->info['border-right-style'] = - $this->info['border-left-style'] = - $this->info['border-top-style'] = new HTMLPurifier_AttrDef_Enum( - array('none', 'hidden', 'dotted', 'dashed', 'solid', 'double', - 'groove', 'ridge', 'inset', 'outset'), false); - - $this->info['border-style'] = new HTMLPurifier_AttrDef_CSS_Multiple($border_style); - - $this->info['clear'] = new HTMLPurifier_AttrDef_Enum( - array('none', 'left', 'right', 'both'), false); - $this->info['float'] = new HTMLPurifier_AttrDef_Enum( - array('none', 'left', 'right'), false); - $this->info['font-style'] = new HTMLPurifier_AttrDef_Enum( - array('normal', 'italic', 'oblique'), false); - $this->info['font-variant'] = new HTMLPurifier_AttrDef_Enum( - array('normal', 'small-caps'), false); - - $uri_or_none = new HTMLPurifier_AttrDef_CSS_Composite( - array( - new HTMLPurifier_AttrDef_Enum(array('none')), - new HTMLPurifier_AttrDef_CSS_URI() - ) - ); - - $this->info['list-style-position'] = new HTMLPurifier_AttrDef_Enum( - array('inside', 'outside'), false); - $this->info['list-style-type'] = new HTMLPurifier_AttrDef_Enum( - array('disc', 'circle', 'square', 'decimal', 'lower-roman', - 'upper-roman', 'lower-alpha', 'upper-alpha', 'none'), false); - $this->info['list-style-image'] = $uri_or_none; - - $this->info['list-style'] = new HTMLPurifier_AttrDef_CSS_ListStyle($config); - - $this->info['text-transform'] = new HTMLPurifier_AttrDef_Enum( - array('capitalize', 'uppercase', 'lowercase', 'none'), false); - $this->info['color'] = new HTMLPurifier_AttrDef_CSS_Color(); - - $this->info['background-image'] = $uri_or_none; - $this->info['background-repeat'] = new HTMLPurifier_AttrDef_Enum( - array('repeat', 'repeat-x', 'repeat-y', 'no-repeat') - ); - $this->info['background-attachment'] = new HTMLPurifier_AttrDef_Enum( - array('scroll', 'fixed') - ); - $this->info['background-position'] = new HTMLPurifier_AttrDef_CSS_BackgroundPosition(); - - $border_color = - $this->info['border-top-color'] = - $this->info['border-bottom-color'] = - $this->info['border-left-color'] = - $this->info['border-right-color'] = - $this->info['background-color'] = new HTMLPurifier_AttrDef_CSS_Composite(array( - new HTMLPurifier_AttrDef_Enum(array('transparent')), - new HTMLPurifier_AttrDef_CSS_Color() - )); - - $this->info['background'] = new HTMLPurifier_AttrDef_CSS_Background($config); - - $this->info['border-color'] = new HTMLPurifier_AttrDef_CSS_Multiple($border_color); - - $border_width = - $this->info['border-top-width'] = - $this->info['border-bottom-width'] = - $this->info['border-left-width'] = - $this->info['border-right-width'] = new HTMLPurifier_AttrDef_CSS_Composite(array( - new HTMLPurifier_AttrDef_Enum(array('thin', 'medium', 'thick')), - new HTMLPurifier_AttrDef_CSS_Length('0') //disallow negative - )); - - $this->info['border-width'] = new HTMLPurifier_AttrDef_CSS_Multiple($border_width); - - $this->info['letter-spacing'] = new HTMLPurifier_AttrDef_CSS_Composite(array( - new HTMLPurifier_AttrDef_Enum(array('normal')), - new HTMLPurifier_AttrDef_CSS_Length() - )); - - $this->info['word-spacing'] = new HTMLPurifier_AttrDef_CSS_Composite(array( - new HTMLPurifier_AttrDef_Enum(array('normal')), - new HTMLPurifier_AttrDef_CSS_Length() - )); - - $this->info['font-size'] = new HTMLPurifier_AttrDef_CSS_Composite(array( - new HTMLPurifier_AttrDef_Enum(array('xx-small', 'x-small', - 'small', 'medium', 'large', 'x-large', 'xx-large', - 'larger', 'smaller')), - new HTMLPurifier_AttrDef_CSS_Percentage(), - new HTMLPurifier_AttrDef_CSS_Length() - )); - - $this->info['line-height'] = new HTMLPurifier_AttrDef_CSS_Composite(array( - new HTMLPurifier_AttrDef_Enum(array('normal')), - new HTMLPurifier_AttrDef_CSS_Number(true), // no negatives - new HTMLPurifier_AttrDef_CSS_Length('0'), - new HTMLPurifier_AttrDef_CSS_Percentage(true) - )); - - $margin = - $this->info['margin-top'] = - $this->info['margin-bottom'] = - $this->info['margin-left'] = - $this->info['margin-right'] = new HTMLPurifier_AttrDef_CSS_Composite(array( - new HTMLPurifier_AttrDef_CSS_Length(), - new HTMLPurifier_AttrDef_CSS_Percentage(), - new HTMLPurifier_AttrDef_Enum(array('auto')) - )); - - $this->info['margin'] = new HTMLPurifier_AttrDef_CSS_Multiple($margin); - - // non-negative - $padding = - $this->info['padding-top'] = - $this->info['padding-bottom'] = - $this->info['padding-left'] = - $this->info['padding-right'] = new HTMLPurifier_AttrDef_CSS_Composite(array( - new HTMLPurifier_AttrDef_CSS_Length('0'), - new HTMLPurifier_AttrDef_CSS_Percentage(true) - )); - - $this->info['padding'] = new HTMLPurifier_AttrDef_CSS_Multiple($padding); - - $this->info['text-indent'] = new HTMLPurifier_AttrDef_CSS_Composite(array( - new HTMLPurifier_AttrDef_CSS_Length(), - new HTMLPurifier_AttrDef_CSS_Percentage() - )); - - $trusted_wh = new HTMLPurifier_AttrDef_CSS_Composite(array( - new HTMLPurifier_AttrDef_CSS_Length('0'), - new HTMLPurifier_AttrDef_CSS_Percentage(true), - new HTMLPurifier_AttrDef_Enum(array('auto')) - )); - $max = $config->get('CSS.MaxImgLength'); - - $this->info['width'] = - $this->info['height'] = - $max === null ? - $trusted_wh : - new HTMLPurifier_AttrDef_Switch('img', - // For img tags: - new HTMLPurifier_AttrDef_CSS_Composite(array( - new HTMLPurifier_AttrDef_CSS_Length('0', $max), - new HTMLPurifier_AttrDef_Enum(array('auto')) - )), - // For everyone else: - $trusted_wh - ); - - $this->info['text-decoration'] = new HTMLPurifier_AttrDef_CSS_TextDecoration(); - - $this->info['font-family'] = new HTMLPurifier_AttrDef_CSS_FontFamily(); - - // this could use specialized code - $this->info['font-weight'] = new HTMLPurifier_AttrDef_Enum( - array('normal', 'bold', 'bolder', 'lighter', '100', '200', '300', - '400', '500', '600', '700', '800', '900'), false); - - // MUST be called after other font properties, as it references - // a CSSDefinition object - $this->info['font'] = new HTMLPurifier_AttrDef_CSS_Font($config); - - // same here - $this->info['border'] = - $this->info['border-bottom'] = - $this->info['border-top'] = - $this->info['border-left'] = - $this->info['border-right'] = new HTMLPurifier_AttrDef_CSS_Border($config); - - $this->info['border-collapse'] = new HTMLPurifier_AttrDef_Enum(array( - 'collapse', 'separate')); - - $this->info['caption-side'] = new HTMLPurifier_AttrDef_Enum(array( - 'top', 'bottom')); - - $this->info['table-layout'] = new HTMLPurifier_AttrDef_Enum(array( - 'auto', 'fixed')); - - $this->info['vertical-align'] = new HTMLPurifier_AttrDef_CSS_Composite(array( - new HTMLPurifier_AttrDef_Enum(array('baseline', 'sub', 'super', - 'top', 'text-top', 'middle', 'bottom', 'text-bottom')), - new HTMLPurifier_AttrDef_CSS_Length(), - new HTMLPurifier_AttrDef_CSS_Percentage() - )); - - $this->info['border-spacing'] = new HTMLPurifier_AttrDef_CSS_Multiple(new HTMLPurifier_AttrDef_CSS_Length(), 2); - - // partial support - $this->info['white-space'] = new HTMLPurifier_AttrDef_Enum(array('nowrap')); - - if ($config->get('CSS.Proprietary')) { - $this->doSetupProprietary($config); - } - - if ($config->get('CSS.AllowTricky')) { - $this->doSetupTricky($config); - } - - if ($config->get('CSS.Trusted')) { - $this->doSetupTrusted($config); - } - - $allow_important = $config->get('CSS.AllowImportant'); - // wrap all attr-defs with decorator that handles !important - foreach ($this->info as $k => $v) { - $this->info[$k] = new HTMLPurifier_AttrDef_CSS_ImportantDecorator($v, $allow_important); - } - - $this->setupConfigStuff($config); - } - - protected function doSetupProprietary($config) { - // Internet Explorer only scrollbar colors - $this->info['scrollbar-arrow-color'] = new HTMLPurifier_AttrDef_CSS_Color(); - $this->info['scrollbar-base-color'] = new HTMLPurifier_AttrDef_CSS_Color(); - $this->info['scrollbar-darkshadow-color'] = new HTMLPurifier_AttrDef_CSS_Color(); - $this->info['scrollbar-face-color'] = new HTMLPurifier_AttrDef_CSS_Color(); - $this->info['scrollbar-highlight-color'] = new HTMLPurifier_AttrDef_CSS_Color(); - $this->info['scrollbar-shadow-color'] = new HTMLPurifier_AttrDef_CSS_Color(); - - // technically not proprietary, but CSS3, and no one supports it - $this->info['opacity'] = new HTMLPurifier_AttrDef_CSS_AlphaValue(); - $this->info['-moz-opacity'] = new HTMLPurifier_AttrDef_CSS_AlphaValue(); - $this->info['-khtml-opacity'] = new HTMLPurifier_AttrDef_CSS_AlphaValue(); - - // only opacity, for now - $this->info['filter'] = new HTMLPurifier_AttrDef_CSS_Filter(); - - } - - protected function doSetupTricky($config) { - $this->info['display'] = new HTMLPurifier_AttrDef_Enum(array( - 'inline', 'block', 'list-item', 'run-in', 'compact', - 'marker', 'table', 'inline-table', 'table-row-group', - 'table-header-group', 'table-footer-group', 'table-row', - 'table-column-group', 'table-column', 'table-cell', 'table-caption', 'none' - )); - $this->info['visibility'] = new HTMLPurifier_AttrDef_Enum(array( - 'visible', 'hidden', 'collapse' - )); - $this->info['overflow'] = new HTMLPurifier_AttrDef_Enum(array('visible', 'hidden', 'auto', 'scroll')); - } - - protected function doSetupTrusted($config) { - $this->info['position'] = new HTMLPurifier_AttrDef_Enum(array( - 'static', 'relative', 'absolute', 'fixed' - )); - $this->info['top'] = - $this->info['left'] = - $this->info['right'] = - $this->info['bottom'] = new HTMLPurifier_AttrDef_CSS_Composite(array( - new HTMLPurifier_AttrDef_CSS_Length(), - new HTMLPurifier_AttrDef_CSS_Percentage(), - new HTMLPurifier_AttrDef_Enum(array('auto')), - )); - $this->info['z-index'] = new HTMLPurifier_AttrDef_CSS_Composite(array( - new HTMLPurifier_AttrDef_Integer(), - new HTMLPurifier_AttrDef_Enum(array('auto')), - )); - } - - /** - * Performs extra config-based processing. Based off of - * HTMLPurifier_HTMLDefinition. - * @todo Refactor duplicate elements into common class (probably using - * composition, not inheritance). - */ - protected function setupConfigStuff($config) { - - // setup allowed elements - $support = "(for information on implementing this, see the ". - "support forums) "; - $allowed_properties = $config->get('CSS.AllowedProperties'); - if ($allowed_properties !== null) { - foreach ($this->info as $name => $d) { - if(!isset($allowed_properties[$name])) unset($this->info[$name]); - unset($allowed_properties[$name]); - } - // emit errors - foreach ($allowed_properties as $name => $d) { - // :TODO: Is this htmlspecialchars() call really necessary? - $name = htmlspecialchars($name); - trigger_error("Style attribute '$name' is not supported $support", E_USER_WARNING); - } - } - - $forbidden_properties = $config->get('CSS.ForbiddenProperties'); - if ($forbidden_properties !== null) { - foreach ($this->info as $name => $d) { - if (isset($forbidden_properties[$name])) { - unset($this->info[$name]); - } - } - } - - } -} - -// vim: et sw=4 sts=4 diff --git a/libraries/plugins/IDS/vendors/htmlpurifier/HTMLPurifier/ChildDef.php b/libraries/plugins/IDS/vendors/htmlpurifier/HTMLPurifier/ChildDef.php deleted file mode 100644 index c5d5216..0000000 --- a/libraries/plugins/IDS/vendors/htmlpurifier/HTMLPurifier/ChildDef.php +++ /dev/null @@ -1,48 +0,0 @@ -elements; - } - - /** - * Validates nodes according to definition and returns modification. - * - * @param $tokens_of_children Array of HTMLPurifier_Token - * @param $config HTMLPurifier_Config object - * @param $context HTMLPurifier_Context object - * @return bool true to leave nodes as is - * @return bool false to remove parent node - * @return array of replacement child tokens - */ - abstract public function validateChildren($tokens_of_children, $config, $context); -} - -// vim: et sw=4 sts=4 diff --git a/libraries/plugins/IDS/vendors/htmlpurifier/HTMLPurifier/ChildDef/Chameleon.php b/libraries/plugins/IDS/vendors/htmlpurifier/HTMLPurifier/ChildDef/Chameleon.php deleted file mode 100644 index 15c364e..0000000 --- a/libraries/plugins/IDS/vendors/htmlpurifier/HTMLPurifier/ChildDef/Chameleon.php +++ /dev/null @@ -1,48 +0,0 @@ -inline = new HTMLPurifier_ChildDef_Optional($inline); - $this->block = new HTMLPurifier_ChildDef_Optional($block); - $this->elements = $this->block->elements; - } - - public function validateChildren($tokens_of_children, $config, $context) { - if ($context->get('IsInline') === false) { - return $this->block->validateChildren( - $tokens_of_children, $config, $context); - } else { - return $this->inline->validateChildren( - $tokens_of_children, $config, $context); - } - } -} - -// vim: et sw=4 sts=4 diff --git a/libraries/plugins/IDS/vendors/htmlpurifier/HTMLPurifier/ChildDef/Custom.php b/libraries/plugins/IDS/vendors/htmlpurifier/HTMLPurifier/ChildDef/Custom.php deleted file mode 100644 index b68047b..0000000 --- a/libraries/plugins/IDS/vendors/htmlpurifier/HTMLPurifier/ChildDef/Custom.php +++ /dev/null @@ -1,90 +0,0 @@ -dtd_regex = $dtd_regex; - $this->_compileRegex(); - } - /** - * Compiles the PCRE regex from a DTD regex ($dtd_regex to $_pcre_regex) - */ - protected function _compileRegex() { - $raw = str_replace(' ', '', $this->dtd_regex); - if ($raw{0} != '(') { - $raw = "($raw)"; - } - $el = '[#a-zA-Z0-9_.-]+'; - $reg = $raw; - - // COMPLICATED! AND MIGHT BE BUGGY! I HAVE NO CLUE WHAT I'M - // DOING! Seriously: if there's problems, please report them. - - // collect all elements into the $elements array - preg_match_all("/$el/", $reg, $matches); - foreach ($matches[0] as $match) { - $this->elements[$match] = true; - } - - // setup all elements as parentheticals with leading commas - $reg = preg_replace("/$el/", '(,\\0)', $reg); - - // remove commas when they were not solicited - $reg = preg_replace("/([^,(|]\(+),/", '\\1', $reg); - - // remove all non-paranthetical commas: they are handled by first regex - $reg = preg_replace("/,\(/", '(', $reg); - - $this->_pcre_regex = $reg; - } - public function validateChildren($tokens_of_children, $config, $context) { - $list_of_children = ''; - $nesting = 0; // depth into the nest - foreach ($tokens_of_children as $token) { - if (!empty($token->is_whitespace)) continue; - - $is_child = ($nesting == 0); // direct - - if ($token instanceof HTMLPurifier_Token_Start) { - $nesting++; - } elseif ($token instanceof HTMLPurifier_Token_End) { - $nesting--; - } - - if ($is_child) { - $list_of_children .= $token->name . ','; - } - } - // add leading comma to deal with stray comma declarations - $list_of_children = ',' . rtrim($list_of_children, ','); - $okay = - preg_match( - '/^,?'.$this->_pcre_regex.'$/', - $list_of_children - ); - - return (bool) $okay; - } -} - -// vim: et sw=4 sts=4 diff --git a/libraries/plugins/IDS/vendors/htmlpurifier/HTMLPurifier/ChildDef/Empty.php b/libraries/plugins/IDS/vendors/htmlpurifier/HTMLPurifier/ChildDef/Empty.php deleted file mode 100644 index 13171f6..0000000 --- a/libraries/plugins/IDS/vendors/htmlpurifier/HTMLPurifier/ChildDef/Empty.php +++ /dev/null @@ -1,20 +0,0 @@ -whitespace) return $tokens_of_children; - else return array(); - } - return $result; - } -} - -// vim: et sw=4 sts=4 diff --git a/libraries/plugins/IDS/vendors/htmlpurifier/HTMLPurifier/ChildDef/Required.php b/libraries/plugins/IDS/vendors/htmlpurifier/HTMLPurifier/ChildDef/Required.php deleted file mode 100644 index 4889f24..0000000 --- a/libraries/plugins/IDS/vendors/htmlpurifier/HTMLPurifier/ChildDef/Required.php +++ /dev/null @@ -1,117 +0,0 @@ - $x) { - $elements[$i] = true; - if (empty($i)) unset($elements[$i]); // remove blank - } - } - $this->elements = $elements; - } - public $allow_empty = false; - public $type = 'required'; - public function validateChildren($tokens_of_children, $config, $context) { - // Flag for subclasses - $this->whitespace = false; - - // if there are no tokens, delete parent node - if (empty($tokens_of_children)) return false; - - // the new set of children - $result = array(); - - // current depth into the nest - $nesting = 0; - - // whether or not we're deleting a node - $is_deleting = false; - - // whether or not parsed character data is allowed - // this controls whether or not we silently drop a tag - // or generate escaped HTML from it - $pcdata_allowed = isset($this->elements['#PCDATA']); - - // a little sanity check to make sure it's not ALL whitespace - $all_whitespace = true; - - // some configuration - $escape_invalid_children = $config->get('Core.EscapeInvalidChildren'); - - // generator - $gen = new HTMLPurifier_Generator($config, $context); - - foreach ($tokens_of_children as $token) { - if (!empty($token->is_whitespace)) { - $result[] = $token; - continue; - } - $all_whitespace = false; // phew, we're not talking about whitespace - - $is_child = ($nesting == 0); - - if ($token instanceof HTMLPurifier_Token_Start) { - $nesting++; - } elseif ($token instanceof HTMLPurifier_Token_End) { - $nesting--; - } - - if ($is_child) { - $is_deleting = false; - if (!isset($this->elements[$token->name])) { - $is_deleting = true; - if ($pcdata_allowed && $token instanceof HTMLPurifier_Token_Text) { - $result[] = $token; - } elseif ($pcdata_allowed && $escape_invalid_children) { - $result[] = new HTMLPurifier_Token_Text( - $gen->generateFromToken($token) - ); - } - continue; - } - } - if (!$is_deleting || ($pcdata_allowed && $token instanceof HTMLPurifier_Token_Text)) { - $result[] = $token; - } elseif ($pcdata_allowed && $escape_invalid_children) { - $result[] = - new HTMLPurifier_Token_Text( - $gen->generateFromToken($token) - ); - } else { - // drop silently - } - } - if (empty($result)) return false; - if ($all_whitespace) { - $this->whitespace = true; - return false; - } - if ($tokens_of_children == $result) return true; - return $result; - } -} - -// vim: et sw=4 sts=4 diff --git a/libraries/plugins/IDS/vendors/htmlpurifier/HTMLPurifier/ChildDef/StrictBlockquote.php b/libraries/plugins/IDS/vendors/htmlpurifier/HTMLPurifier/ChildDef/StrictBlockquote.php deleted file mode 100644 index dfae8a6..0000000 --- a/libraries/plugins/IDS/vendors/htmlpurifier/HTMLPurifier/ChildDef/StrictBlockquote.php +++ /dev/null @@ -1,88 +0,0 @@ -init($config); - return $this->fake_elements; - } - - public function validateChildren($tokens_of_children, $config, $context) { - - $this->init($config); - - // trick the parent class into thinking it allows more - $this->elements = $this->fake_elements; - $result = parent::validateChildren($tokens_of_children, $config, $context); - $this->elements = $this->real_elements; - - if ($result === false) return array(); - if ($result === true) $result = $tokens_of_children; - - $def = $config->getHTMLDefinition(); - $block_wrap_start = new HTMLPurifier_Token_Start($def->info_block_wrapper); - $block_wrap_end = new HTMLPurifier_Token_End( $def->info_block_wrapper); - $is_inline = false; - $depth = 0; - $ret = array(); - - // assuming that there are no comment tokens - foreach ($result as $i => $token) { - $token = $result[$i]; - // ifs are nested for readability - if (!$is_inline) { - if (!$depth) { - if ( - ($token instanceof HTMLPurifier_Token_Text && !$token->is_whitespace) || - (!$token instanceof HTMLPurifier_Token_Text && !isset($this->elements[$token->name])) - ) { - $is_inline = true; - $ret[] = $block_wrap_start; - } - } - } else { - if (!$depth) { - // starting tokens have been inline text / empty - if ($token instanceof HTMLPurifier_Token_Start || $token instanceof HTMLPurifier_Token_Empty) { - if (isset($this->elements[$token->name])) { - // ended - $ret[] = $block_wrap_end; - $is_inline = false; - } - } - } - } - $ret[] = $token; - if ($token instanceof HTMLPurifier_Token_Start) $depth++; - if ($token instanceof HTMLPurifier_Token_End) $depth--; - } - if ($is_inline) $ret[] = $block_wrap_end; - return $ret; - } - - private function init($config) { - if (!$this->init) { - $def = $config->getHTMLDefinition(); - // allow all inline elements - $this->real_elements = $this->elements; - $this->fake_elements = $def->info_content_sets['Flow']; - $this->fake_elements['#PCDATA'] = true; - $this->init = true; - } - } -} - -// vim: et sw=4 sts=4 diff --git a/libraries/plugins/IDS/vendors/htmlpurifier/HTMLPurifier/ChildDef/Table.php b/libraries/plugins/IDS/vendors/htmlpurifier/HTMLPurifier/ChildDef/Table.php deleted file mode 100644 index 34f0227..0000000 --- a/libraries/plugins/IDS/vendors/htmlpurifier/HTMLPurifier/ChildDef/Table.php +++ /dev/null @@ -1,142 +0,0 @@ - true, 'tbody' => true, 'thead' => true, - 'tfoot' => true, 'caption' => true, 'colgroup' => true, 'col' => true); - public function __construct() {} - public function validateChildren($tokens_of_children, $config, $context) { - if (empty($tokens_of_children)) return false; - - // this ensures that the loop gets run one last time before closing - // up. It's a little bit of a hack, but it works! Just make sure you - // get rid of the token later. - $tokens_of_children[] = false; - - // only one of these elements is allowed in a table - $caption = false; - $thead = false; - $tfoot = false; - - // as many of these as you want - $cols = array(); - $content = array(); - - $nesting = 0; // current depth so we can determine nodes - $is_collecting = false; // are we globbing together tokens to package - // into one of the collectors? - $collection = array(); // collected nodes - $tag_index = 0; // the first node might be whitespace, - // so this tells us where the start tag is - - foreach ($tokens_of_children as $token) { - $is_child = ($nesting == 0); - - if ($token === false) { - // terminating sequence started - } elseif ($token instanceof HTMLPurifier_Token_Start) { - $nesting++; - } elseif ($token instanceof HTMLPurifier_Token_End) { - $nesting--; - } - - // handle node collection - if ($is_collecting) { - if ($is_child) { - // okay, let's stash the tokens away - // first token tells us the type of the collection - switch ($collection[$tag_index]->name) { - case 'tr': - case 'tbody': - $content[] = $collection; - break; - case 'caption': - if ($caption !== false) break; - $caption = $collection; - break; - case 'thead': - case 'tfoot': - // access the appropriate variable, $thead or $tfoot - $var = $collection[$tag_index]->name; - if ($$var === false) { - $$var = $collection; - } else { - // transmutate the first and less entries into - // tbody tags, and then put into content - $collection[$tag_index]->name = 'tbody'; - $collection[count($collection)-1]->name = 'tbody'; - $content[] = $collection; - } - break; - case 'colgroup': - $cols[] = $collection; - break; - } - $collection = array(); - $is_collecting = false; - $tag_index = 0; - } else { - // add the node to the collection - $collection[] = $token; - } - } - - // terminate - if ($token === false) break; - - if ($is_child) { - // determine what we're dealing with - if ($token->name == 'col') { - // the only empty tag in the possie, we can handle it - // immediately - $cols[] = array_merge($collection, array($token)); - $collection = array(); - $tag_index = 0; - continue; - } - switch($token->name) { - case 'caption': - case 'colgroup': - case 'thead': - case 'tfoot': - case 'tbody': - case 'tr': - $is_collecting = true; - $collection[] = $token; - continue; - default: - if (!empty($token->is_whitespace)) { - $collection[] = $token; - $tag_index++; - } - continue; - } - } - } - - if (empty($content)) return false; - - $ret = array(); - if ($caption !== false) $ret = array_merge($ret, $caption); - if ($cols !== false) foreach ($cols as $token_array) $ret = array_merge($ret, $token_array); - if ($thead !== false) $ret = array_merge($ret, $thead); - if ($tfoot !== false) $ret = array_merge($ret, $tfoot); - foreach ($content as $token_array) $ret = array_merge($ret, $token_array); - if (!empty($collection) && $is_collecting == false){ - // grab the trailing space - $ret = array_merge($ret, $collection); - } - - array_pop($tokens_of_children); // remove phantom token - - return ($ret === $tokens_of_children) ? true : $ret; - - } -} - -// vim: et sw=4 sts=4 diff --git a/libraries/plugins/IDS/vendors/htmlpurifier/HTMLPurifier/Config.php b/libraries/plugins/IDS/vendors/htmlpurifier/HTMLPurifier/Config.php deleted file mode 100644 index c6f2cea..0000000 --- a/libraries/plugins/IDS/vendors/htmlpurifier/HTMLPurifier/Config.php +++ /dev/null @@ -1,746 +0,0 @@ -defaultPlist; - $this->plist = new HTMLPurifier_PropertyList($parent); - $this->def = $definition; // keep a copy around for checking - $this->parser = new HTMLPurifier_VarParser_Flexible(); - } - - /** - * Convenience constructor that creates a config object based on a mixed var - * @param mixed $config Variable that defines the state of the config - * object. Can be: a HTMLPurifier_Config() object, - * an array of directives based on loadArray(), - * or a string filename of an ini file. - * @param HTMLPurifier_ConfigSchema Schema object - * @return Configured HTMLPurifier_Config object - */ - public static function create($config, $schema = null) - { - if ($config instanceof HTMLPurifier_Config) { - // pass-through - return $config; - } - if (!$schema) { - $ret = HTMLPurifier_Config::createDefault(); - } else { - $ret = new HTMLPurifier_Config($schema); - } - if (is_string($config)) $ret->loadIni($config); - elseif (is_array($config)) $ret->loadArray($config); - return $ret; - } - - /** - * Creates a new config object that inherits from a previous one. - * @param HTMLPurifier_Config $config Configuration object to inherit - * from. - * @return HTMLPurifier_Config object with $config as its parent. - */ - public static function inherit(HTMLPurifier_Config $config) - { - return new HTMLPurifier_Config($config->def, $config->plist); - } - - /** - * Convenience constructor that creates a default configuration object. - * @return Default HTMLPurifier_Config object. - */ - public static function createDefault() - { - $definition = HTMLPurifier_ConfigSchema::instance(); - $config = new HTMLPurifier_Config($definition); - return $config; - } - - /** - * Retreives a value from the configuration. - * @param $key String key - */ - public function get($key, $a = null) - { - if ($a !== null) { - $this->triggerError("Using deprecated API: use \$config->get('$key.$a') instead", E_USER_WARNING); - $key = "$key.$a"; - } - if (!$this->finalized) $this->autoFinalize(); - if (!isset($this->def->info[$key])) { - // can't add % due to SimpleTest bug - $this->triggerError('Cannot retrieve value of undefined directive ' . htmlspecialchars($key), - E_USER_WARNING); - return; - } - if (isset($this->def->info[$key]->isAlias)) { - $d = $this->def->info[$key]; - $this->triggerError('Cannot get value from aliased directive, use real name ' . $d->key, - E_USER_ERROR); - return; - } - if ($this->lock) { - list($ns) = explode('.', $key); - if ($ns !== $this->lock) { - $this->triggerError('Cannot get value of namespace ' . $ns . ' when lock for ' . $this->lock . ' is active, this probably indicates a Definition setup method is accessing directives that are not within its namespace', E_USER_ERROR); - return; - } - } - return $this->plist->get($key); - } - - /** - * Retreives an array of directives to values from a given namespace - * @param $namespace String namespace - */ - public function getBatch($namespace) - { - if (!$this->finalized) $this->autoFinalize(); - $full = $this->getAll(); - if (!isset($full[$namespace])) { - $this->triggerError('Cannot retrieve undefined namespace ' . htmlspecialchars($namespace), - E_USER_WARNING); - return; - } - return $full[$namespace]; - } - - /** - * Returns a md5 signature of a segment of the configuration object - * that uniquely identifies that particular configuration - * @note Revision is handled specially and is removed from the batch - * before processing! - * @param $namespace Namespace to get serial for - */ - public function getBatchSerial($namespace) - { - if (empty($this->serials[$namespace])) { - $batch = $this->getBatch($namespace); - unset($batch['DefinitionRev']); - $this->serials[$namespace] = md5(serialize($batch)); - } - return $this->serials[$namespace]; - } - - /** - * Returns a md5 signature for the entire configuration object - * that uniquely identifies that particular configuration - */ - public function getSerial() - { - if (empty($this->serial)) { - $this->serial = md5(serialize($this->getAll())); - } - return $this->serial; - } - - /** - * Retrieves all directives, organized by namespace - * @warning This is a pretty inefficient function, avoid if you can - */ - public function getAll() - { - if (!$this->finalized) $this->autoFinalize(); - $ret = array(); - foreach ($this->plist->squash() as $name => $value) { - list($ns, $key) = explode('.', $name, 2); - $ret[$ns][$key] = $value; - } - return $ret; - } - - /** - * Sets a value to configuration. - * @param $key String key - * @param $value Mixed value - */ - public function set($key, $value, $a = null) - { - if (strpos($key, '.') === false) { - $namespace = $key; - $directive = $value; - $value = $a; - $key = "$key.$directive"; - $this->triggerError("Using deprecated API: use \$config->set('$key', ...) instead", E_USER_NOTICE); - } else { - list($namespace) = explode('.', $key); - } - if ($this->isFinalized('Cannot set directive after finalization')) return; - if (!isset($this->def->info[$key])) { - $this->triggerError('Cannot set undefined directive ' . htmlspecialchars($key) . ' to value', - E_USER_WARNING); - return; - } - $def = $this->def->info[$key]; - - if (isset($def->isAlias)) { - if ($this->aliasMode) { - $this->triggerError('Double-aliases not allowed, please fix ' . - 'ConfigSchema bug with' . $key, E_USER_ERROR); - return; - } - $this->aliasMode = true; - $this->set($def->key, $value); - $this->aliasMode = false; - $this->triggerError("$key is an alias, preferred directive name is {$def->key}", E_USER_NOTICE); - return; - } - - // Raw type might be negative when using the fully optimized form - // of stdclass, which indicates allow_null == true - $rtype = is_int($def) ? $def : $def->type; - if ($rtype < 0) { - $type = -$rtype; - $allow_null = true; - } else { - $type = $rtype; - $allow_null = isset($def->allow_null); - } - - try { - $value = $this->parser->parse($value, $type, $allow_null); - } catch (HTMLPurifier_VarParserException $e) { - $this->triggerError('Value for ' . $key . ' is of invalid type, should be ' . HTMLPurifier_VarParser::getTypeName($type), E_USER_WARNING); - return; - } - if (is_string($value) && is_object($def)) { - // resolve value alias if defined - if (isset($def->aliases[$value])) { - $value = $def->aliases[$value]; - } - // check to see if the value is allowed - if (isset($def->allowed) && !isset($def->allowed[$value])) { - $this->triggerError('Value not supported, valid values are: ' . - $this->_listify($def->allowed), E_USER_WARNING); - return; - } - } - $this->plist->set($key, $value); - - // reset definitions if the directives they depend on changed - // this is a very costly process, so it's discouraged - // with finalization - if ($namespace == 'HTML' || $namespace == 'CSS' || $namespace == 'URI') { - $this->definitions[$namespace] = null; - } - - $this->serials[$namespace] = false; - } - - /** - * Convenience function for error reporting - */ - private function _listify($lookup) - { - $list = array(); - foreach ($lookup as $name => $b) $list[] = $name; - return implode(', ', $list); - } - - /** - * Retrieves object reference to the HTML definition. - * @param $raw Return a copy that has not been setup yet. Must be - * called before it's been setup, otherwise won't work. - * @param $optimized If true, this method may return null, to - * indicate that a cached version of the modified - * definition object is available and no further edits - * are necessary. Consider using - * maybeGetRawHTMLDefinition, which is more explicitly - * named, instead. - */ - public function getHTMLDefinition($raw = false, $optimized = false) - { - return $this->getDefinition('HTML', $raw, $optimized); - } - - /** - * Retrieves object reference to the CSS definition - * @param $raw Return a copy that has not been setup yet. Must be - * called before it's been setup, otherwise won't work. - * @param $optimized If true, this method may return null, to - * indicate that a cached version of the modified - * definition object is available and no further edits - * are necessary. Consider using - * maybeGetRawCSSDefinition, which is more explicitly - * named, instead. - */ - public function getCSSDefinition($raw = false, $optimized = false) - { - return $this->getDefinition('CSS', $raw, $optimized); - } - - /** - * Retrieves object reference to the URI definition - * @param $raw Return a copy that has not been setup yet. Must be - * called before it's been setup, otherwise won't work. - * @param $optimized If true, this method may return null, to - * indicate that a cached version of the modified - * definition object is available and no further edits - * are necessary. Consider using - * maybeGetRawURIDefinition, which is more explicitly - * named, instead. - */ - public function getURIDefinition($raw = false, $optimized = false) - { - return $this->getDefinition('URI', $raw, $optimized); - } - - /** - * Retrieves a definition - * @param $type Type of definition: HTML, CSS, etc - * @param $raw Whether or not definition should be returned raw - * @param $optimized Only has an effect when $raw is true. Whether - * or not to return null if the result is already present in - * the cache. This is off by default for backwards - * compatibility reasons, but you need to do things this - * way in order to ensure that caching is done properly. - * Check out enduser-customize.html for more details. - * We probably won't ever change this default, as much as the - * maybe semantics is the "right thing to do." - */ - public function getDefinition($type, $raw = false, $optimized = false) - { - if ($optimized && !$raw) { - throw new HTMLPurifier_Exception("Cannot set optimized = true when raw = false"); - } - if (!$this->finalized) $this->autoFinalize(); - // temporarily suspend locks, so we can handle recursive definition calls - $lock = $this->lock; - $this->lock = null; - $factory = HTMLPurifier_DefinitionCacheFactory::instance(); - $cache = $factory->create($type, $this); - $this->lock = $lock; - if (!$raw) { - // full definition - // --------------- - // check if definition is in memory - if (!empty($this->definitions[$type])) { - $def = $this->definitions[$type]; - // check if the definition is setup - if ($def->setup) { - return $def; - } else { - $def->setup($this); - if ($def->optimized) $cache->add($def, $this); - return $def; - } - } - // check if definition is in cache - $def = $cache->get($this); - if ($def) { - // definition in cache, save to memory and return it - $this->definitions[$type] = $def; - return $def; - } - // initialize it - $def = $this->initDefinition($type); - // set it up - $this->lock = $type; - $def->setup($this); - $this->lock = null; - // save in cache - $cache->add($def, $this); - // return it - return $def; - } else { - // raw definition - // -------------- - // check preconditions - $def = null; - if ($optimized) { - if (is_null($this->get($type . '.DefinitionID'))) { - // fatally error out if definition ID not set - throw new HTMLPurifier_Exception("Cannot retrieve raw version without specifying %$type.DefinitionID"); - } - } - if (!empty($this->definitions[$type])) { - $def = $this->definitions[$type]; - if ($def->setup && !$optimized) { - $extra = $this->chatty ? " (try moving this code block earlier in your initialization)" : ""; - throw new HTMLPurifier_Exception("Cannot retrieve raw definition after it has already been setup" . $extra); - } - if ($def->optimized === null) { - $extra = $this->chatty ? " (try flushing your cache)" : ""; - throw new HTMLPurifier_Exception("Optimization status of definition is unknown" . $extra); - } - if ($def->optimized !== $optimized) { - $msg = $optimized ? "optimized" : "unoptimized"; - $extra = $this->chatty ? " (this backtrace is for the first inconsistent call, which was for a $msg raw definition)" : ""; - throw new HTMLPurifier_Exception("Inconsistent use of optimized and unoptimized raw definition retrievals" . $extra); - } - } - // check if definition was in memory - if ($def) { - if ($def->setup) { - // invariant: $optimized === true (checked above) - return null; - } else { - return $def; - } - } - // if optimized, check if definition was in cache - // (because we do the memory check first, this formulation - // is prone to cache slamming, but I think - // guaranteeing that either /all/ of the raw - // setup code or /none/ of it is run is more important.) - if ($optimized) { - // This code path only gets run once; once we put - // something in $definitions (which is guaranteed by the - // trailing code), we always short-circuit above. - $def = $cache->get($this); - if ($def) { - // save the full definition for later, but don't - // return it yet - $this->definitions[$type] = $def; - return null; - } - } - // check invariants for creation - if (!$optimized) { - if (!is_null($this->get($type . '.DefinitionID'))) { - if ($this->chatty) { - $this->triggerError("Due to a documentation error in previous version of HTML Purifier, your definitions are not being cached. If this is OK, you can remove the %$type.DefinitionRev and %$type.DefinitionID declaration. Otherwise, modify your code to use maybeGetRawDefinition, and test if the returned value is null before making any edits (if it is null, that means that a cached version is available, and no raw operations are necessary). See Customize for more details", E_USER_WARNING); - } else { - $this->triggerError("Useless DefinitionID declaration", E_USER_WARNING); - } - } - } - // initialize it - $def = $this->initDefinition($type); - $def->optimized = $optimized; - return $def; - } - throw new HTMLPurifier_Exception("The impossible happened!"); - } - - private function initDefinition($type) - { - // quick checks failed, let's create the object - if ($type == 'HTML') { - $def = new HTMLPurifier_HTMLDefinition(); - } elseif ($type == 'CSS') { - $def = new HTMLPurifier_CSSDefinition(); - } elseif ($type == 'URI') { - $def = new HTMLPurifier_URIDefinition(); - } else { - throw new HTMLPurifier_Exception("Definition of $type type not supported"); - } - $this->definitions[$type] = $def; - return $def; - } - - public function maybeGetRawDefinition($name) - { - return $this->getDefinition($name, true, true); - } - - public function maybeGetRawHTMLDefinition() - { - return $this->getDefinition('HTML', true, true); - } - - public function maybeGetRawCSSDefinition() - { - return $this->getDefinition('CSS', true, true); - } - - public function maybeGetRawURIDefinition() - { - return $this->getDefinition('URI', true, true); - } - - /** - * Loads configuration values from an array with the following structure: - * Namespace.Directive => Value - * @param $config_array Configuration associative array - */ - public function loadArray($config_array) - { - if ($this->isFinalized('Cannot load directives after finalization')) return; - foreach ($config_array as $key => $value) { - $key = str_replace('_', '.', $key); - if (strpos($key, '.') !== false) { - $this->set($key, $value); - } else { - $namespace = $key; - $namespace_values = $value; - foreach ($namespace_values as $directive => $value) { - $this->set($namespace . '.' . $directive, $value); - } - } - } - } - - /** - * Returns a list of array(namespace, directive) for all directives - * that are allowed in a web-form context as per an allowed - * namespaces/directives list. - * @param $allowed List of allowed namespaces/directives - */ - public static function getAllowedDirectivesForForm($allowed, $schema = null) - { - if (!$schema) { - $schema = HTMLPurifier_ConfigSchema::instance(); - } - if ($allowed !== true) { - if (is_string($allowed)) $allowed = array($allowed); - $allowed_ns = array(); - $allowed_directives = array(); - $blacklisted_directives = array(); - foreach ($allowed as $ns_or_directive) { - if (strpos($ns_or_directive, '.') !== false) { - // directive - if ($ns_or_directive[0] == '-') { - $blacklisted_directives[substr($ns_or_directive, 1)] = true; - } else { - $allowed_directives[$ns_or_directive] = true; - } - } else { - // namespace - $allowed_ns[$ns_or_directive] = true; - } - } - } - $ret = array(); - foreach ($schema->info as $key => $def) { - list($ns, $directive) = explode('.', $key, 2); - if ($allowed !== true) { - if (isset($blacklisted_directives["$ns.$directive"])) continue; - if (!isset($allowed_directives["$ns.$directive"]) && !isset($allowed_ns[$ns])) continue; - } - if (isset($def->isAlias)) continue; - if ($directive == 'DefinitionID' || $directive == 'DefinitionRev') continue; - $ret[] = array($ns, $directive); - } - return $ret; - } - - /** - * Loads configuration values from $_GET/$_POST that were posted - * via ConfigForm - * @param $array $_GET or $_POST array to import - * @param $index Index/name that the config variables are in - * @param $allowed List of allowed namespaces/directives - * @param $mq_fix Boolean whether or not to enable magic quotes fix - * @param $schema Instance of HTMLPurifier_ConfigSchema to use, if not global copy - */ - public static function loadArrayFromForm($array, $index = false, $allowed = true, $mq_fix = true, $schema = null) - { - $ret = HTMLPurifier_Config::prepareArrayFromForm($array, $index, $allowed, $mq_fix, $schema); - $config = HTMLPurifier_Config::create($ret, $schema); - return $config; - } - - /** - * Merges in configuration values from $_GET/$_POST to object. NOT STATIC. - * @note Same parameters as loadArrayFromForm - */ - public function mergeArrayFromForm($array, $index = false, $allowed = true, $mq_fix = true) - { - $ret = HTMLPurifier_Config::prepareArrayFromForm($array, $index, $allowed, $mq_fix, $this->def); - $this->loadArray($ret); - } - - /** - * Prepares an array from a form into something usable for the more - * strict parts of HTMLPurifier_Config - */ - public static function prepareArrayFromForm($array, $index = false, $allowed = true, $mq_fix = true, $schema = null) - { - if ($index !== false) $array = (isset($array[$index]) && is_array($array[$index])) ? $array[$index] : array(); - $mq = $mq_fix && function_exists('get_magic_quotes_gpc') && get_magic_quotes_gpc(); - - $allowed = HTMLPurifier_Config::getAllowedDirectivesForForm($allowed, $schema); - $ret = array(); - foreach ($allowed as $key) { - list($ns, $directive) = $key; - $skey = "$ns.$directive"; - if (!empty($array["Null_$skey"])) { - $ret[$ns][$directive] = null; - continue; - } - if (!isset($array[$skey])) continue; - $value = $mq ? stripslashes($array[$skey]) : $array[$skey]; - $ret[$ns][$directive] = $value; - } - return $ret; - } - - /** - * Loads configuration values from an ini file - * @param $filename Name of ini file - */ - public function loadIni($filename) - { - if ($this->isFinalized('Cannot load directives after finalization')) return; - if (function_exists('parse_ini_file')) { - $array = parse_ini_file($filename, true); - } else { - $fileContent = file_get_contents($filename); - $array = parse_ini_string($fileContent, true); - } - - $this->loadArray($array); - } - - /** - * Checks whether or not the configuration object is finalized. - * @param $error String error message, or false for no error - */ - public function isFinalized($error = false) - { - if ($this->finalized && $error) { - $this->triggerError($error, E_USER_ERROR); - } - return $this->finalized; - } - - /** - * Finalizes configuration only if auto finalize is on and not - * already finalized - */ - public function autoFinalize() - { - if ($this->autoFinalize) { - $this->finalize(); - } else { - $this->plist->squash(true); - } - } - - /** - * Finalizes a configuration object, prohibiting further change - */ - public function finalize() - { - $this->finalized = true; - unset($this->parser); - } - - /** - * Produces a nicely formatted error message by supplying the - * stack frame information OUTSIDE of HTMLPurifier_Config. - */ - protected function triggerError($msg, $no) - { - // determine previous stack frame - $extra = ''; - if ($this->chatty) { - $trace = debug_backtrace(); - // zip(tail(trace), trace) -- but PHP is not Haskell har har - for ($i = 0, $c = count($trace); $i < $c - 1; $i++) { - if ($trace[$i + 1]['class'] === 'HTMLPurifier_Config') { - continue; - } - $frame = $trace[$i]; - $extra = " invoked on line {$frame['line']} in file {$frame['file']}"; - break; - } - } - trigger_error($msg . $extra, $no); - } - - /** - * Returns a serialized form of the configuration object that can - * be reconstituted. - */ - public function serialize() - { - $this->getDefinition('HTML'); - $this->getDefinition('CSS'); - $this->getDefinition('URI'); - return serialize($this); - } - -} - -// vim: et sw=4 sts=4 diff --git a/libraries/plugins/IDS/vendors/htmlpurifier/HTMLPurifier/ConfigDef.php b/libraries/plugins/IDS/vendors/htmlpurifier/HTMLPurifier/ConfigDef.php deleted file mode 100644 index fe35e7a..0000000 --- a/libraries/plugins/IDS/vendors/htmlpurifier/HTMLPurifier/ConfigDef.php +++ /dev/null @@ -1,9 +0,0 @@ -type = $type; - if ( $allow_null !== null) $this->allow_null = $allow_null; - if ( $allowed !== null) $this->allowed = $allowed; - if ( $aliases !== null) $this->aliases = $aliases; - } - - /** - * Allowed type of the directive. Values are: - * - string - * - istring (case insensitive string) - * - int - * - float - * - bool - * - lookup (array of value => true) - * - list (regular numbered index array) - * - hash (array of key => value) - * - mixed (anything goes) - */ - public $type = 'mixed'; - - /** - * Is null allowed? Has no effect for mixed type. - * @bool - */ - public $allow_null = false; - - /** - * Lookup table of allowed values of the element, bool true if all allowed. - */ - public $allowed = true; - - /** - * Hash of value aliases, i.e. values that are equivalent. - */ - public $aliases = array(); - -} - diff --git a/libraries/plugins/IDS/vendors/htmlpurifier/HTMLPurifier/ConfigDef/DirectiveAlias.php b/libraries/plugins/IDS/vendors/htmlpurifier/HTMLPurifier/ConfigDef/DirectiveAlias.php deleted file mode 100644 index 98b8edd..0000000 --- a/libraries/plugins/IDS/vendors/htmlpurifier/HTMLPurifier/ConfigDef/DirectiveAlias.php +++ /dev/null @@ -1,24 +0,0 @@ -namespace = $namespace; - $this->name = $name; - } -} - diff --git a/libraries/plugins/IDS/vendors/htmlpurifier/HTMLPurifier/ConfigDef/Namespace.php b/libraries/plugins/IDS/vendors/htmlpurifier/HTMLPurifier/ConfigDef/Namespace.php deleted file mode 100644 index f282065..0000000 --- a/libraries/plugins/IDS/vendors/htmlpurifier/HTMLPurifier/ConfigDef/Namespace.php +++ /dev/null @@ -1,10 +0,0 @@ - array( - * 'Directive' => new stdclass(), - * ) - * ) - * - * The stdclass may have the following properties: - * - * - If isAlias isn't set: - * - type: Integer type of directive, see HTMLPurifier_VarParser for definitions - * - allow_null: If set, this directive allows null values - * - aliases: If set, an associative array of value aliases to real values - * - allowed: If set, a lookup array of allowed (string) values - * - If isAlias is set: - * - namespace: Namespace this directive aliases to - * - name: Directive name this directive aliases to - * - * In certain degenerate cases, stdclass will actually be an integer. In - * that case, the value is equivalent to an stdclass with the type - * property set to the integer. If the integer is negative, type is - * equal to the absolute value of integer, and allow_null is true. - * - * This class is friendly with HTMLPurifier_Config. If you need introspection - * about the schema, you're better of using the ConfigSchema_Interchange, - * which uses more memory but has much richer information. - */ - public $info = array(); - - /** - * Application-wide singleton - */ - static protected $singleton; - - public function __construct() { - $this->defaultPlist = new HTMLPurifier_PropertyList(); - } - - /** - * Unserializes the default ConfigSchema. - */ - public static function makeFromSerial() { - $contents = file_get_contents(HTMLPURIFIER_PREFIX . '/HTMLPurifier/ConfigSchema/schema.ser'); - $r = unserialize($contents); - if (!$r) { - $hash = sha1($contents); - trigger_error("Unserialization of configuration schema failed, sha1 of file was $hash", E_USER_ERROR); - } - return $r; - } - - /** - * Retrieves an instance of the application-wide configuration definition. - */ - public static function instance($prototype = null) { - if ($prototype !== null) { - HTMLPurifier_ConfigSchema::$singleton = $prototype; - } elseif (HTMLPurifier_ConfigSchema::$singleton === null || $prototype === true) { - HTMLPurifier_ConfigSchema::$singleton = HTMLPurifier_ConfigSchema::makeFromSerial(); - } - return HTMLPurifier_ConfigSchema::$singleton; - } - - /** - * Defines a directive for configuration - * @warning Will fail of directive's namespace is defined. - * @warning This method's signature is slightly different from the legacy - * define() static method! Beware! - * @param $namespace Namespace the directive is in - * @param $name Key of directive - * @param $default Default value of directive - * @param $type Allowed type of the directive. See - * HTMLPurifier_DirectiveDef::$type for allowed values - * @param $allow_null Whether or not to allow null values - */ - public function add($key, $default, $type, $allow_null) { - $obj = new stdclass(); - $obj->type = is_int($type) ? $type : HTMLPurifier_VarParser::$types[$type]; - if ($allow_null) $obj->allow_null = true; - $this->info[$key] = $obj; - $this->defaults[$key] = $default; - $this->defaultPlist->set($key, $default); - } - - /** - * Defines a directive value alias. - * - * Directive value aliases are convenient for developers because it lets - * them set a directive to several values and get the same result. - * @param $namespace Directive's namespace - * @param $name Name of Directive - * @param $aliases Hash of aliased values to the real alias - */ - public function addValueAliases($key, $aliases) { - if (!isset($this->info[$key]->aliases)) { - $this->info[$key]->aliases = array(); - } - foreach ($aliases as $alias => $real) { - $this->info[$key]->aliases[$alias] = $real; - } - } - - /** - * Defines a set of allowed values for a directive. - * @warning This is slightly different from the corresponding static - * method definition. - * @param $namespace Namespace of directive - * @param $name Name of directive - * @param $allowed Lookup array of allowed values - */ - public function addAllowedValues($key, $allowed) { - $this->info[$key]->allowed = $allowed; - } - - /** - * Defines a directive alias for backwards compatibility - * @param $namespace - * @param $name Directive that will be aliased - * @param $new_namespace - * @param $new_name Directive that the alias will be to - */ - public function addAlias($key, $new_key) { - $obj = new stdclass; - $obj->key = $new_key; - $obj->isAlias = true; - $this->info[$key] = $obj; - } - - /** - * Replaces any stdclass that only has the type property with type integer. - */ - public function postProcess() { - foreach ($this->info as $key => $v) { - if (count((array) $v) == 1) { - $this->info[$key] = $v->type; - } elseif (count((array) $v) == 2 && isset($v->allow_null)) { - $this->info[$key] = -$v->type; - } - } - } - -} - -// vim: et sw=4 sts=4 diff --git a/libraries/plugins/IDS/vendors/htmlpurifier/HTMLPurifier/ConfigSchema/Builder/ConfigSchema.php b/libraries/plugins/IDS/vendors/htmlpurifier/HTMLPurifier/ConfigSchema/Builder/ConfigSchema.php deleted file mode 100644 index c05668a..0000000 --- a/libraries/plugins/IDS/vendors/htmlpurifier/HTMLPurifier/ConfigSchema/Builder/ConfigSchema.php +++ /dev/null @@ -1,44 +0,0 @@ -directives as $d) { - $schema->add( - $d->id->key, - $d->default, - $d->type, - $d->typeAllowsNull - ); - if ($d->allowed !== null) { - $schema->addAllowedValues( - $d->id->key, - $d->allowed - ); - } - foreach ($d->aliases as $alias) { - $schema->addAlias( - $alias->key, - $d->id->key - ); - } - if ($d->valueAliases !== null) { - $schema->addValueAliases( - $d->id->key, - $d->valueAliases - ); - } - } - $schema->postProcess(); - return $schema; - } - -} - -// vim: et sw=4 sts=4 diff --git a/libraries/plugins/IDS/vendors/htmlpurifier/HTMLPurifier/ConfigSchema/Builder/Xml.php b/libraries/plugins/IDS/vendors/htmlpurifier/HTMLPurifier/ConfigSchema/Builder/Xml.php deleted file mode 100644 index 244561a..0000000 --- a/libraries/plugins/IDS/vendors/htmlpurifier/HTMLPurifier/ConfigSchema/Builder/Xml.php +++ /dev/null @@ -1,106 +0,0 @@ -startElement('div'); - - $purifier = HTMLPurifier::getInstance(); - $html = $purifier->purify($html); - $this->writeAttribute('xmlns', 'http://www.w3.org/1999/xhtml'); - $this->writeRaw($html); - - $this->endElement(); // div - } - - protected function export($var) { - if ($var === array()) return 'array()'; - return var_export($var, true); - } - - public function build($interchange) { - // global access, only use as last resort - $this->interchange = $interchange; - - $this->setIndent(true); - $this->startDocument('1.0', 'UTF-8'); - $this->startElement('configdoc'); - $this->writeElement('title', $interchange->name); - - foreach ($interchange->directives as $directive) { - $this->buildDirective($directive); - } - - if ($this->namespace) $this->endElement(); // namespace - - $this->endElement(); // configdoc - $this->flush(); - } - - public function buildDirective($directive) { - - // Kludge, although I suppose having a notion of a "root namespace" - // certainly makes things look nicer when documentation is built. - // Depends on things being sorted. - if (!$this->namespace || $this->namespace !== $directive->id->getRootNamespace()) { - if ($this->namespace) $this->endElement(); // namespace - $this->namespace = $directive->id->getRootNamespace(); - $this->startElement('namespace'); - $this->writeAttribute('id', $this->namespace); - $this->writeElement('name', $this->namespace); - } - - $this->startElement('directive'); - $this->writeAttribute('id', $directive->id->toString()); - - $this->writeElement('name', $directive->id->getDirective()); - - $this->startElement('aliases'); - foreach ($directive->aliases as $alias) $this->writeElement('alias', $alias->toString()); - $this->endElement(); // aliases - - $this->startElement('constraints'); - if ($directive->version) $this->writeElement('version', $directive->version); - $this->startElement('type'); - if ($directive->typeAllowsNull) $this->writeAttribute('allow-null', 'yes'); - $this->text($directive->type); - $this->endElement(); // type - if ($directive->allowed) { - $this->startElement('allowed'); - foreach ($directive->allowed as $value => $x) $this->writeElement('value', $value); - $this->endElement(); // allowed - } - $this->writeElement('default', $this->export($directive->default)); - $this->writeAttribute('xml:space', 'preserve'); - if ($directive->external) { - $this->startElement('external'); - foreach ($directive->external as $project) $this->writeElement('project', $project); - $this->endElement(); - } - $this->endElement(); // constraints - - if ($directive->deprecatedVersion) { - $this->startElement('deprecated'); - $this->writeElement('version', $directive->deprecatedVersion); - $this->writeElement('use', $directive->deprecatedUse->toString()); - $this->endElement(); // deprecated - } - - $this->startElement('description'); - $this->writeHTMLDiv($directive->description); - $this->endElement(); // description - - $this->endElement(); // directive - } - -} - -// vim: et sw=4 sts=4 diff --git a/libraries/plugins/IDS/vendors/htmlpurifier/HTMLPurifier/ConfigSchema/Exception.php b/libraries/plugins/IDS/vendors/htmlpurifier/HTMLPurifier/ConfigSchema/Exception.php deleted file mode 100644 index 2671516..0000000 --- a/libraries/plugins/IDS/vendors/htmlpurifier/HTMLPurifier/ConfigSchema/Exception.php +++ /dev/null @@ -1,11 +0,0 @@ - array(directive info) - */ - public $directives = array(); - - /** - * Adds a directive array to $directives - */ - public function addDirective($directive) { - if (isset($this->directives[$i = $directive->id->toString()])) { - throw new HTMLPurifier_ConfigSchema_Exception("Cannot redefine directive '$i'"); - } - $this->directives[$i] = $directive; - } - - /** - * Convenience function to perform standard validation. Throws exception - * on failed validation. - */ - public function validate() { - $validator = new HTMLPurifier_ConfigSchema_Validator(); - return $validator->validate($this); - } - -} - -// vim: et sw=4 sts=4 diff --git a/libraries/plugins/IDS/vendors/htmlpurifier/HTMLPurifier/ConfigSchema/Interchange/Directive.php b/libraries/plugins/IDS/vendors/htmlpurifier/HTMLPurifier/ConfigSchema/Interchange/Directive.php deleted file mode 100644 index ac8be0d..0000000 --- a/libraries/plugins/IDS/vendors/htmlpurifier/HTMLPurifier/ConfigSchema/Interchange/Directive.php +++ /dev/null @@ -1,77 +0,0 @@ - true). - * Null if all values are allowed. - */ - public $allowed; - - /** - * List of aliases for the directive, - * e.g. array(new HTMLPurifier_ConfigSchema_Interchange_Id('Ns', 'Dir'))). - */ - public $aliases = array(); - - /** - * Hash of value aliases, e.g. array('alt' => 'real'). Null if value - * aliasing is disabled (necessary for non-scalar types). - */ - public $valueAliases; - - /** - * Version of HTML Purifier the directive was introduced, e.g. '1.3.1'. - * Null if the directive has always existed. - */ - public $version; - - /** - * ID of directive that supercedes this old directive, is an instance - * of HTMLPurifier_ConfigSchema_Interchange_Id. Null if not deprecated. - */ - public $deprecatedUse; - - /** - * Version of HTML Purifier this directive was deprecated. Null if not - * deprecated. - */ - public $deprecatedVersion; - - /** - * List of external projects this directive depends on, e.g. array('CSSTidy'). - */ - public $external = array(); - -} - -// vim: et sw=4 sts=4 diff --git a/libraries/plugins/IDS/vendors/htmlpurifier/HTMLPurifier/ConfigSchema/Interchange/Id.php b/libraries/plugins/IDS/vendors/htmlpurifier/HTMLPurifier/ConfigSchema/Interchange/Id.php deleted file mode 100644 index b9b3c6f..0000000 --- a/libraries/plugins/IDS/vendors/htmlpurifier/HTMLPurifier/ConfigSchema/Interchange/Id.php +++ /dev/null @@ -1,37 +0,0 @@ -key = $key; - } - - /** - * @warning This is NOT magic, to ensure that people don't abuse SPL and - * cause problems for PHP 5.0 support. - */ - public function toString() { - return $this->key; - } - - public function getRootNamespace() { - return substr($this->key, 0, strpos($this->key, ".")); - } - - public function getDirective() { - return substr($this->key, strpos($this->key, ".") + 1); - } - - public static function make($id) { - return new HTMLPurifier_ConfigSchema_Interchange_Id($id); - } - -} - -// vim: et sw=4 sts=4 diff --git a/libraries/plugins/IDS/vendors/htmlpurifier/HTMLPurifier/ConfigSchema/Interchange/Namespace.php b/libraries/plugins/IDS/vendors/htmlpurifier/HTMLPurifier/ConfigSchema/Interchange/Namespace.php deleted file mode 100644 index 3ffac0a..0000000 --- a/libraries/plugins/IDS/vendors/htmlpurifier/HTMLPurifier/ConfigSchema/Interchange/Namespace.php +++ /dev/null @@ -1,21 +0,0 @@ -varParser = $varParser ? $varParser : new HTMLPurifier_VarParser_Native(); - } - - public static function buildFromDirectory($dir = null) { - $builder = new HTMLPurifier_ConfigSchema_InterchangeBuilder(); - $interchange = new HTMLPurifier_ConfigSchema_Interchange(); - return $builder->buildDir($interchange, $dir); - } - - public function buildDir($interchange, $dir = null) { - if (!$dir) $dir = HTMLPURIFIER_PREFIX . '/HTMLPurifier/ConfigSchema/schema'; - if (file_exists($dir . '/info.ini')) { - $info = parse_ini_file($dir . '/info.ini'); - $interchange->name = $info['name']; - } - - $files = array(); - $dh = opendir($dir); - while (false !== ($file = readdir($dh))) { - if (!$file || $file[0] == '.' || strrchr($file, '.') !== '.txt') { - continue; - } - $files[] = $file; - } - closedir($dh); - - sort($files); - foreach ($files as $file) { - $this->buildFile($interchange, $dir . '/' . $file); - } - - return $interchange; - } - - public function buildFile($interchange, $file) { - $parser = new HTMLPurifier_StringHashParser(); - $this->build( - $interchange, - new HTMLPurifier_StringHash( $parser->parseFile($file) ) - ); - } - - /** - * Builds an interchange object based on a hash. - * @param $interchange HTMLPurifier_ConfigSchema_Interchange object to build - * @param $hash HTMLPurifier_ConfigSchema_StringHash source data - */ - public function build($interchange, $hash) { - if (!$hash instanceof HTMLPurifier_StringHash) { - $hash = new HTMLPurifier_StringHash($hash); - } - if (!isset($hash['ID'])) { - throw new HTMLPurifier_ConfigSchema_Exception('Hash does not have any ID'); - } - if (strpos($hash['ID'], '.') === false) { - if (count($hash) == 2 && isset($hash['DESCRIPTION'])) { - $hash->offsetGet('DESCRIPTION'); // prevent complaining - } else { - throw new HTMLPurifier_ConfigSchema_Exception('All directives must have a namespace'); - } - } else { - $this->buildDirective($interchange, $hash); - } - $this->_findUnused($hash); - } - - public function buildDirective($interchange, $hash) { - $directive = new HTMLPurifier_ConfigSchema_Interchange_Directive(); - - // These are required elements: - $directive->id = $this->id($hash->offsetGet('ID')); - $id = $directive->id->toString(); // convenience - - if (isset($hash['TYPE'])) { - $type = explode('/', $hash->offsetGet('TYPE')); - if (isset($type[1])) $directive->typeAllowsNull = true; - $directive->type = $type[0]; - } else { - throw new HTMLPurifier_ConfigSchema_Exception("TYPE in directive hash '$id' not defined"); - } - - if (isset($hash['DEFAULT'])) { - try { - $directive->default = $this->varParser->parse($hash->offsetGet('DEFAULT'), $directive->type, $directive->typeAllowsNull); - } catch (HTMLPurifier_VarParserException $e) { - throw new HTMLPurifier_ConfigSchema_Exception($e->getMessage() . " in DEFAULT in directive hash '$id'"); - } - } - - if (isset($hash['DESCRIPTION'])) { - $directive->description = $hash->offsetGet('DESCRIPTION'); - } - - if (isset($hash['ALLOWED'])) { - $directive->allowed = $this->lookup($this->evalArray($hash->offsetGet('ALLOWED'))); - } - - if (isset($hash['VALUE-ALIASES'])) { - $directive->valueAliases = $this->evalArray($hash->offsetGet('VALUE-ALIASES')); - } - - if (isset($hash['ALIASES'])) { - $raw_aliases = trim($hash->offsetGet('ALIASES')); - $aliases = preg_split('/\s*,\s*/', $raw_aliases); - foreach ($aliases as $alias) { - $directive->aliases[] = $this->id($alias); - } - } - - if (isset($hash['VERSION'])) { - $directive->version = $hash->offsetGet('VERSION'); - } - - if (isset($hash['DEPRECATED-USE'])) { - $directive->deprecatedUse = $this->id($hash->offsetGet('DEPRECATED-USE')); - } - - if (isset($hash['DEPRECATED-VERSION'])) { - $directive->deprecatedVersion = $hash->offsetGet('DEPRECATED-VERSION'); - } - - if (isset($hash['EXTERNAL'])) { - $directive->external = preg_split('/\s*,\s*/', trim($hash->offsetGet('EXTERNAL'))); - } - - $interchange->addDirective($directive); - } - - /** - * Evaluates an array PHP code string without array() wrapper - */ - protected function evalArray($contents) { - return eval('return array('. $contents .');'); - } - - /** - * Converts an array list into a lookup array. - */ - protected function lookup($array) { - $ret = array(); - foreach ($array as $val) $ret[$val] = true; - return $ret; - } - - /** - * Convenience function that creates an HTMLPurifier_ConfigSchema_Interchange_Id - * object based on a string Id. - */ - protected function id($id) { - return HTMLPurifier_ConfigSchema_Interchange_Id::make($id); - } - - /** - * Triggers errors for any unused keys passed in the hash; such keys - * may indicate typos, missing values, etc. - * @param $hash Instance of ConfigSchema_StringHash to check. - */ - protected function _findUnused($hash) { - $accessed = $hash->getAccessed(); - foreach ($hash as $k => $v) { - if (!isset($accessed[$k])) { - trigger_error("String hash key '$k' not used by builder", E_USER_NOTICE); - } - } - } - -} - -// vim: et sw=4 sts=4 diff --git a/libraries/plugins/IDS/vendors/htmlpurifier/HTMLPurifier/ConfigSchema/Validator.php b/libraries/plugins/IDS/vendors/htmlpurifier/HTMLPurifier/ConfigSchema/Validator.php deleted file mode 100644 index f374f6a..0000000 --- a/libraries/plugins/IDS/vendors/htmlpurifier/HTMLPurifier/ConfigSchema/Validator.php +++ /dev/null @@ -1,206 +0,0 @@ -parser = new HTMLPurifier_VarParser(); - } - - /** - * Validates a fully-formed interchange object. Throws an - * HTMLPurifier_ConfigSchema_Exception if there's a problem. - */ - public function validate($interchange) { - $this->interchange = $interchange; - $this->aliases = array(); - // PHP is a bit lax with integer <=> string conversions in - // arrays, so we don't use the identical !== comparison - foreach ($interchange->directives as $i => $directive) { - $id = $directive->id->toString(); - if ($i != $id) $this->error(false, "Integrity violation: key '$i' does not match internal id '$id'"); - $this->validateDirective($directive); - } - return true; - } - - /** - * Validates a HTMLPurifier_ConfigSchema_Interchange_Id object. - */ - public function validateId($id) { - $id_string = $id->toString(); - $this->context[] = "id '$id_string'"; - if (!$id instanceof HTMLPurifier_ConfigSchema_Interchange_Id) { - // handled by InterchangeBuilder - $this->error(false, 'is not an instance of HTMLPurifier_ConfigSchema_Interchange_Id'); - } - // keys are now unconstrained (we might want to narrow down to A-Za-z0-9.) - // we probably should check that it has at least one namespace - $this->with($id, 'key') - ->assertNotEmpty() - ->assertIsString(); // implicit assertIsString handled by InterchangeBuilder - array_pop($this->context); - } - - /** - * Validates a HTMLPurifier_ConfigSchema_Interchange_Directive object. - */ - public function validateDirective($d) { - $id = $d->id->toString(); - $this->context[] = "directive '$id'"; - $this->validateId($d->id); - - $this->with($d, 'description') - ->assertNotEmpty(); - - // BEGIN - handled by InterchangeBuilder - $this->with($d, 'type') - ->assertNotEmpty(); - $this->with($d, 'typeAllowsNull') - ->assertIsBool(); - try { - // This also tests validity of $d->type - $this->parser->parse($d->default, $d->type, $d->typeAllowsNull); - } catch (HTMLPurifier_VarParserException $e) { - $this->error('default', 'had error: ' . $e->getMessage()); - } - // END - handled by InterchangeBuilder - - if (!is_null($d->allowed) || !empty($d->valueAliases)) { - // allowed and valueAliases require that we be dealing with - // strings, so check for that early. - $d_int = HTMLPurifier_VarParser::$types[$d->type]; - if (!isset(HTMLPurifier_VarParser::$stringTypes[$d_int])) { - $this->error('type', 'must be a string type when used with allowed or value aliases'); - } - } - - $this->validateDirectiveAllowed($d); - $this->validateDirectiveValueAliases($d); - $this->validateDirectiveAliases($d); - - array_pop($this->context); - } - - /** - * Extra validation if $allowed member variable of - * HTMLPurifier_ConfigSchema_Interchange_Directive is defined. - */ - public function validateDirectiveAllowed($d) { - if (is_null($d->allowed)) return; - $this->with($d, 'allowed') - ->assertNotEmpty() - ->assertIsLookup(); // handled by InterchangeBuilder - if (is_string($d->default) && !isset($d->allowed[$d->default])) { - $this->error('default', 'must be an allowed value'); - } - $this->context[] = 'allowed'; - foreach ($d->allowed as $val => $x) { - if (!is_string($val)) $this->error("value $val", 'must be a string'); - } - array_pop($this->context); - } - - /** - * Extra validation if $valueAliases member variable of - * HTMLPurifier_ConfigSchema_Interchange_Directive is defined. - */ - public function validateDirectiveValueAliases($d) { - if (is_null($d->valueAliases)) return; - $this->with($d, 'valueAliases') - ->assertIsArray(); // handled by InterchangeBuilder - $this->context[] = 'valueAliases'; - foreach ($d->valueAliases as $alias => $real) { - if (!is_string($alias)) $this->error("alias $alias", 'must be a string'); - if (!is_string($real)) $this->error("alias target $real from alias '$alias'", 'must be a string'); - if ($alias === $real) { - $this->error("alias '$alias'", "must not be an alias to itself"); - } - } - if (!is_null($d->allowed)) { - foreach ($d->valueAliases as $alias => $real) { - if (isset($d->allowed[$alias])) { - $this->error("alias '$alias'", 'must not be an allowed value'); - } elseif (!isset($d->allowed[$real])) { - $this->error("alias '$alias'", 'must be an alias to an allowed value'); - } - } - } - array_pop($this->context); - } - - /** - * Extra validation if $aliases member variable of - * HTMLPurifier_ConfigSchema_Interchange_Directive is defined. - */ - public function validateDirectiveAliases($d) { - $this->with($d, 'aliases') - ->assertIsArray(); // handled by InterchangeBuilder - $this->context[] = 'aliases'; - foreach ($d->aliases as $alias) { - $this->validateId($alias); - $s = $alias->toString(); - if (isset($this->interchange->directives[$s])) { - $this->error("alias '$s'", 'collides with another directive'); - } - if (isset($this->aliases[$s])) { - $other_directive = $this->aliases[$s]; - $this->error("alias '$s'", "collides with alias for directive '$other_directive'"); - } - $this->aliases[$s] = $d->id->toString(); - } - array_pop($this->context); - } - - // protected helper functions - - /** - * Convenience function for generating HTMLPurifier_ConfigSchema_ValidatorAtom - * for validating simple member variables of objects. - */ - protected function with($obj, $member) { - return new HTMLPurifier_ConfigSchema_ValidatorAtom($this->getFormattedContext(), $obj, $member); - } - - /** - * Emits an error, providing helpful context. - */ - protected function error($target, $msg) { - if ($target !== false) $prefix = ucfirst($target) . ' in ' . $this->getFormattedContext(); - else $prefix = ucfirst($this->getFormattedContext()); - throw new HTMLPurifier_ConfigSchema_Exception(trim($prefix . ' ' . $msg)); - } - - /** - * Returns a formatted context string. - */ - protected function getFormattedContext() { - return implode(' in ', array_reverse($this->context)); - } - -} - -// vim: et sw=4 sts=4 diff --git a/libraries/plugins/IDS/vendors/htmlpurifier/HTMLPurifier/ConfigSchema/ValidatorAtom.php b/libraries/plugins/IDS/vendors/htmlpurifier/HTMLPurifier/ConfigSchema/ValidatorAtom.php deleted file mode 100644 index b95aea1..0000000 --- a/libraries/plugins/IDS/vendors/htmlpurifier/HTMLPurifier/ConfigSchema/ValidatorAtom.php +++ /dev/null @@ -1,66 +0,0 @@ -context = $context; - $this->obj = $obj; - $this->member = $member; - $this->contents =& $obj->$member; - } - - public function assertIsString() { - if (!is_string($this->contents)) $this->error('must be a string'); - return $this; - } - - public function assertIsBool() { - if (!is_bool($this->contents)) $this->error('must be a boolean'); - return $this; - } - - public function assertIsArray() { - if (!is_array($this->contents)) $this->error('must be an array'); - return $this; - } - - public function assertNotNull() { - if ($this->contents === null) $this->error('must not be null'); - return $this; - } - - public function assertAlnum() { - $this->assertIsString(); - if (!ctype_alnum($this->contents)) $this->error('must be alphanumeric'); - return $this; - } - - public function assertNotEmpty() { - if (empty($this->contents)) $this->error('must not be empty'); - return $this; - } - - public function assertIsLookup() { - $this->assertIsArray(); - foreach ($this->contents as $v) { - if ($v !== true) $this->error('must be a lookup array'); - } - return $this; - } - - protected function error($msg) { - throw new HTMLPurifier_ConfigSchema_Exception(ucfirst($this->member) . ' in ' . $this->context . ' ' . $msg); - } - -} - -// vim: et sw=4 sts=4 diff --git a/libraries/plugins/IDS/vendors/htmlpurifier/HTMLPurifier/ConfigSchema/schema.ser b/libraries/plugins/IDS/vendors/htmlpurifier/HTMLPurifier/ConfigSchema/schema.ser deleted file mode 100644 index 245ba5d..0000000 Binary files a/libraries/plugins/IDS/vendors/htmlpurifier/HTMLPurifier/ConfigSchema/schema.ser and /dev/null differ diff --git a/libraries/plugins/IDS/vendors/htmlpurifier/HTMLPurifier/ConfigSchema/schema/Attr.AllowedClasses.txt b/libraries/plugins/IDS/vendors/htmlpurifier/HTMLPurifier/ConfigSchema/schema/Attr.AllowedClasses.txt deleted file mode 100644 index 0517fed..0000000 --- a/libraries/plugins/IDS/vendors/htmlpurifier/HTMLPurifier/ConfigSchema/schema/Attr.AllowedClasses.txt +++ /dev/null @@ -1,8 +0,0 @@ -Attr.AllowedClasses -TYPE: lookup/null -VERSION: 4.0.0 -DEFAULT: null ---DESCRIPTION-- -List of allowed class values in the class attribute. By default, this is null, -which means all classes are allowed. ---# vim: et sw=4 sts=4 diff --git a/libraries/plugins/IDS/vendors/htmlpurifier/HTMLPurifier/ConfigSchema/schema/Attr.AllowedFrameTargets.txt b/libraries/plugins/IDS/vendors/htmlpurifier/HTMLPurifier/ConfigSchema/schema/Attr.AllowedFrameTargets.txt deleted file mode 100644 index 249edd6..0000000 --- a/libraries/plugins/IDS/vendors/htmlpurifier/HTMLPurifier/ConfigSchema/schema/Attr.AllowedFrameTargets.txt +++ /dev/null @@ -1,12 +0,0 @@ -Attr.AllowedFrameTargets -TYPE: lookup -DEFAULT: array() ---DESCRIPTION-- -Lookup table of all allowed link frame targets. Some commonly used link -targets include _blank, _self, _parent and _top. Values should be -lowercase, as validation will be done in a case-sensitive manner despite -W3C's recommendation. XHTML 1.0 Strict does not permit the target attribute -so this directive will have no effect in that doctype. XHTML 1.1 does not -enable the Target module by default, you will have to manually enable it -(see the module documentation for more details.) ---# vim: et sw=4 sts=4 diff --git a/libraries/plugins/IDS/vendors/htmlpurifier/HTMLPurifier/ConfigSchema/schema/Attr.AllowedRel.txt b/libraries/plugins/IDS/vendors/htmlpurifier/HTMLPurifier/ConfigSchema/schema/Attr.AllowedRel.txt deleted file mode 100644 index 9a8fa6a..0000000 --- a/libraries/plugins/IDS/vendors/htmlpurifier/HTMLPurifier/ConfigSchema/schema/Attr.AllowedRel.txt +++ /dev/null @@ -1,9 +0,0 @@ -Attr.AllowedRel -TYPE: lookup -VERSION: 1.6.0 -DEFAULT: array() ---DESCRIPTION-- -List of allowed forward document relationships in the rel attribute. Common -values may be nofollow or print. By default, this is empty, meaning that no -document relationships are allowed. ---# vim: et sw=4 sts=4 diff --git a/libraries/plugins/IDS/vendors/htmlpurifier/HTMLPurifier/ConfigSchema/schema/Attr.AllowedRev.txt b/libraries/plugins/IDS/vendors/htmlpurifier/HTMLPurifier/ConfigSchema/schema/Attr.AllowedRev.txt deleted file mode 100644 index b017883..0000000 --- a/libraries/plugins/IDS/vendors/htmlpurifier/HTMLPurifier/ConfigSchema/schema/Attr.AllowedRev.txt +++ /dev/null @@ -1,9 +0,0 @@ -Attr.AllowedRev -TYPE: lookup -VERSION: 1.6.0 -DEFAULT: array() ---DESCRIPTION-- -List of allowed reverse document relationships in the rev attribute. This -attribute is a bit of an edge-case; if you don't know what it is for, stay -away. ---# vim: et sw=4 sts=4 diff --git a/libraries/plugins/IDS/vendors/htmlpurifier/HTMLPurifier/ConfigSchema/schema/Attr.ClassUseCDATA.txt b/libraries/plugins/IDS/vendors/htmlpurifier/HTMLPurifier/ConfigSchema/schema/Attr.ClassUseCDATA.txt deleted file mode 100644 index e774b82..0000000 --- a/libraries/plugins/IDS/vendors/htmlpurifier/HTMLPurifier/ConfigSchema/schema/Attr.ClassUseCDATA.txt +++ /dev/null @@ -1,19 +0,0 @@ -Attr.ClassUseCDATA -TYPE: bool/null -DEFAULT: null -VERSION: 4.0.0 ---DESCRIPTION-- -If null, class will auto-detect the doctype and, if matching XHTML 1.1 or -XHTML 2.0, will use the restrictive NMTOKENS specification of class. Otherwise, -it will use a relaxed CDATA definition. If true, the relaxed CDATA definition -is forced; if false, the NMTOKENS definition is forced. To get behavior -of HTML Purifier prior to 4.0.0, set this directive to false. - -Some rational behind the auto-detection: -in previous versions of HTML Purifier, it was assumed that the form of -class was NMTOKENS, as specified by the XHTML Modularization (representing -XHTML 1.1 and XHTML 2.0). The DTDs for HTML 4.01 and XHTML 1.0, however -specify class as CDATA. HTML 5 effectively defines it as CDATA, but -with the additional constraint that each name should be unique (this is not -explicitly outlined in previous specifications). ---# vim: et sw=4 sts=4 diff --git a/libraries/plugins/IDS/vendors/htmlpurifier/HTMLPurifier/ConfigSchema/schema/Attr.DefaultImageAlt.txt b/libraries/plugins/IDS/vendors/htmlpurifier/HTMLPurifier/ConfigSchema/schema/Attr.DefaultImageAlt.txt deleted file mode 100644 index 533165e..0000000 --- a/libraries/plugins/IDS/vendors/htmlpurifier/HTMLPurifier/ConfigSchema/schema/Attr.DefaultImageAlt.txt +++ /dev/null @@ -1,11 +0,0 @@ -Attr.DefaultImageAlt -TYPE: string/null -DEFAULT: null -VERSION: 3.2.0 ---DESCRIPTION-- -This is the content of the alt tag of an image if the user had not -previously specified an alt attribute. This applies to all images without -a valid alt attribute, as opposed to %Attr.DefaultInvalidImageAlt, which -only applies to invalid images, and overrides in the case of an invalid image. -Default behavior with null is to use the basename of the src tag for the alt. ---# vim: et sw=4 sts=4 diff --git a/libraries/plugins/IDS/vendors/htmlpurifier/HTMLPurifier/ConfigSchema/schema/Attr.DefaultInvalidImage.txt b/libraries/plugins/IDS/vendors/htmlpurifier/HTMLPurifier/ConfigSchema/schema/Attr.DefaultInvalidImage.txt deleted file mode 100644 index 9eb7e38..0000000 --- a/libraries/plugins/IDS/vendors/htmlpurifier/HTMLPurifier/ConfigSchema/schema/Attr.DefaultInvalidImage.txt +++ /dev/null @@ -1,9 +0,0 @@ -Attr.DefaultInvalidImage -TYPE: string -DEFAULT: '' ---DESCRIPTION-- -This is the default image an img tag will be pointed to if it does not have -a valid src attribute. In future versions, we may allow the image tag to -be removed completely, but due to design issues, this is not possible right -now. ---# vim: et sw=4 sts=4 diff --git a/libraries/plugins/IDS/vendors/htmlpurifier/HTMLPurifier/ConfigSchema/schema/Attr.DefaultInvalidImageAlt.txt b/libraries/plugins/IDS/vendors/htmlpurifier/HTMLPurifier/ConfigSchema/schema/Attr.DefaultInvalidImageAlt.txt deleted file mode 100644 index 2f17bf4..0000000 --- a/libraries/plugins/IDS/vendors/htmlpurifier/HTMLPurifier/ConfigSchema/schema/Attr.DefaultInvalidImageAlt.txt +++ /dev/null @@ -1,8 +0,0 @@ -Attr.DefaultInvalidImageAlt -TYPE: string -DEFAULT: 'Invalid image' ---DESCRIPTION-- -This is the content of the alt tag of an invalid image if the user had not -previously specified an alt attribute. It has no effect when the image is -valid but there was no alt attribute present. ---# vim: et sw=4 sts=4 diff --git a/libraries/plugins/IDS/vendors/htmlpurifier/HTMLPurifier/ConfigSchema/schema/Attr.DefaultTextDir.txt b/libraries/plugins/IDS/vendors/htmlpurifier/HTMLPurifier/ConfigSchema/schema/Attr.DefaultTextDir.txt deleted file mode 100644 index 52654b5..0000000 --- a/libraries/plugins/IDS/vendors/htmlpurifier/HTMLPurifier/ConfigSchema/schema/Attr.DefaultTextDir.txt +++ /dev/null @@ -1,10 +0,0 @@ -Attr.DefaultTextDir -TYPE: string -DEFAULT: 'ltr' ---DESCRIPTION-- -Defines the default text direction (ltr or rtl) of the document being -parsed. This generally is the same as the value of the dir attribute in -HTML, or ltr if that is not specified. ---ALLOWED-- -'ltr', 'rtl' ---# vim: et sw=4 sts=4 diff --git a/libraries/plugins/IDS/vendors/htmlpurifier/HTMLPurifier/ConfigSchema/schema/Attr.EnableID.txt b/libraries/plugins/IDS/vendors/htmlpurifier/HTMLPurifier/ConfigSchema/schema/Attr.EnableID.txt deleted file mode 100644 index 6440d21..0000000 --- a/libraries/plugins/IDS/vendors/htmlpurifier/HTMLPurifier/ConfigSchema/schema/Attr.EnableID.txt +++ /dev/null @@ -1,16 +0,0 @@ -Attr.EnableID -TYPE: bool -DEFAULT: false -VERSION: 1.2.0 ---DESCRIPTION-- -Allows the ID attribute in HTML. This is disabled by default due to the -fact that without proper configuration user input can easily break the -validation of a webpage by specifying an ID that is already on the -surrounding HTML. If you don't mind throwing caution to the wind, enable -this directive, but I strongly recommend you also consider blacklisting IDs -you use (%Attr.IDBlacklist) or prefixing all user supplied IDs -(%Attr.IDPrefix). When set to true HTML Purifier reverts to the behavior of -pre-1.2.0 versions. ---ALIASES-- -HTML.EnableAttrID ---# vim: et sw=4 sts=4 diff --git a/libraries/plugins/IDS/vendors/htmlpurifier/HTMLPurifier/ConfigSchema/schema/Attr.ForbiddenClasses.txt b/libraries/plugins/IDS/vendors/htmlpurifier/HTMLPurifier/ConfigSchema/schema/Attr.ForbiddenClasses.txt deleted file mode 100644 index f31d226..0000000 --- a/libraries/plugins/IDS/vendors/htmlpurifier/HTMLPurifier/ConfigSchema/schema/Attr.ForbiddenClasses.txt +++ /dev/null @@ -1,8 +0,0 @@ -Attr.ForbiddenClasses -TYPE: lookup -VERSION: 4.0.0 -DEFAULT: array() ---DESCRIPTION-- -List of forbidden class values in the class attribute. By default, this is -empty, which means that no classes are forbidden. See also %Attr.AllowedClasses. ---# vim: et sw=4 sts=4 diff --git a/libraries/plugins/IDS/vendors/htmlpurifier/HTMLPurifier/ConfigSchema/schema/Attr.IDBlacklist.txt b/libraries/plugins/IDS/vendors/htmlpurifier/HTMLPurifier/ConfigSchema/schema/Attr.IDBlacklist.txt deleted file mode 100644 index 5f2b5e3..0000000 --- a/libraries/plugins/IDS/vendors/htmlpurifier/HTMLPurifier/ConfigSchema/schema/Attr.IDBlacklist.txt +++ /dev/null @@ -1,5 +0,0 @@ -Attr.IDBlacklist -TYPE: list -DEFAULT: array() -DESCRIPTION: Array of IDs not allowed in the document. ---# vim: et sw=4 sts=4 diff --git a/libraries/plugins/IDS/vendors/htmlpurifier/HTMLPurifier/ConfigSchema/schema/Attr.IDBlacklistRegexp.txt b/libraries/plugins/IDS/vendors/htmlpurifier/HTMLPurifier/ConfigSchema/schema/Attr.IDBlacklistRegexp.txt deleted file mode 100644 index 6f58245..0000000 --- a/libraries/plugins/IDS/vendors/htmlpurifier/HTMLPurifier/ConfigSchema/schema/Attr.IDBlacklistRegexp.txt +++ /dev/null @@ -1,9 +0,0 @@ -Attr.IDBlacklistRegexp -TYPE: string/null -VERSION: 1.6.0 -DEFAULT: NULL ---DESCRIPTION-- -PCRE regular expression to be matched against all IDs. If the expression is -matches, the ID is rejected. Use this with care: may cause significant -degradation. ID matching is done after all other validation. ---# vim: et sw=4 sts=4 diff --git a/libraries/plugins/IDS/vendors/htmlpurifier/HTMLPurifier/ConfigSchema/schema/Attr.IDPrefix.txt b/libraries/plugins/IDS/vendors/htmlpurifier/HTMLPurifier/ConfigSchema/schema/Attr.IDPrefix.txt deleted file mode 100644 index cc49d43..0000000 --- a/libraries/plugins/IDS/vendors/htmlpurifier/HTMLPurifier/ConfigSchema/schema/Attr.IDPrefix.txt +++ /dev/null @@ -1,12 +0,0 @@ -Attr.IDPrefix -TYPE: string -VERSION: 1.2.0 -DEFAULT: '' ---DESCRIPTION-- -String to prefix to IDs. If you have no idea what IDs your pages may use, -you may opt to simply add a prefix to all user-submitted ID attributes so -that they are still usable, but will not conflict with core page IDs. -Example: setting the directive to 'user_' will result in a user submitted -'foo' to become 'user_foo' Be sure to set %HTML.EnableAttrID to true -before using this. ---# vim: et sw=4 sts=4 diff --git a/libraries/plugins/IDS/vendors/htmlpurifier/HTMLPurifier/ConfigSchema/schema/Attr.IDPrefixLocal.txt b/libraries/plugins/IDS/vendors/htmlpurifier/HTMLPurifier/ConfigSchema/schema/Attr.IDPrefixLocal.txt deleted file mode 100644 index 2c5924a..0000000 --- a/libraries/plugins/IDS/vendors/htmlpurifier/HTMLPurifier/ConfigSchema/schema/Attr.IDPrefixLocal.txt +++ /dev/null @@ -1,14 +0,0 @@ -Attr.IDPrefixLocal -TYPE: string -VERSION: 1.2.0 -DEFAULT: '' ---DESCRIPTION-- -Temporary prefix for IDs used in conjunction with %Attr.IDPrefix. If you -need to allow multiple sets of user content on web page, you may need to -have a seperate prefix that changes with each iteration. This way, -seperately submitted user content displayed on the same page doesn't -clobber each other. Ideal values are unique identifiers for the content it -represents (i.e. the id of the row in the database). Be sure to add a -seperator (like an underscore) at the end. Warning: this directive will -not work unless %Attr.IDPrefix is set to a non-empty value! ---# vim: et sw=4 sts=4 diff --git a/libraries/plugins/IDS/vendors/htmlpurifier/HTMLPurifier/ConfigSchema/schema/Attr.txt b/libraries/plugins/IDS/vendors/htmlpurifier/HTMLPurifier/ConfigSchema/schema/Attr.txt deleted file mode 100644 index 2d72049..0000000 --- a/libraries/plugins/IDS/vendors/htmlpurifier/HTMLPurifier/ConfigSchema/schema/Attr.txt +++ /dev/null @@ -1,3 +0,0 @@ -Attr -DESCRIPTION: Features regarding attribute validation. ---# vim: et sw=4 sts=4 diff --git a/libraries/plugins/IDS/vendors/htmlpurifier/HTMLPurifier/ConfigSchema/schema/AutoFormat.AutoParagraph.txt b/libraries/plugins/IDS/vendors/htmlpurifier/HTMLPurifier/ConfigSchema/schema/AutoFormat.AutoParagraph.txt deleted file mode 100644 index d5caa1b..0000000 --- a/libraries/plugins/IDS/vendors/htmlpurifier/HTMLPurifier/ConfigSchema/schema/AutoFormat.AutoParagraph.txt +++ /dev/null @@ -1,31 +0,0 @@ -AutoFormat.AutoParagraph -TYPE: bool -VERSION: 2.0.1 -DEFAULT: false ---DESCRIPTION-- - -

- This directive turns on auto-paragraphing, where double newlines are - converted in to paragraphs whenever possible. Auto-paragraphing: -

-
    -
  • Always applies to inline elements or text in the root node,
  • -
  • Applies to inline elements or text with double newlines in nodes - that allow paragraph tags,
  • -
  • Applies to double newlines in paragraph tags
  • -
-

- p tags must be allowed for this directive to take effect. - We do not use br tags for paragraphing, as that is - semantically incorrect. -

-

- To prevent auto-paragraphing as a content-producer, refrain from using - double-newlines except to specify a new paragraph or in contexts where - it has special meaning (whitespace usually has no meaning except in - tags like pre, so this should not be difficult.) To prevent - the paragraphing of inline text adjacent to block elements, wrap them - in div tags (the behavior is slightly different outside of - the root node.) -

---# vim: et sw=4 sts=4 diff --git a/libraries/plugins/IDS/vendors/htmlpurifier/HTMLPurifier/ConfigSchema/schema/AutoFormat.Custom.txt b/libraries/plugins/IDS/vendors/htmlpurifier/HTMLPurifier/ConfigSchema/schema/AutoFormat.Custom.txt deleted file mode 100644 index 2a47648..0000000 --- a/libraries/plugins/IDS/vendors/htmlpurifier/HTMLPurifier/ConfigSchema/schema/AutoFormat.Custom.txt +++ /dev/null @@ -1,12 +0,0 @@ -AutoFormat.Custom -TYPE: list -VERSION: 2.0.1 -DEFAULT: array() ---DESCRIPTION-- - -

- This directive can be used to add custom auto-format injectors. - Specify an array of injector names (class name minus the prefix) - or concrete implementations. Injector class must exist. -

---# vim: et sw=4 sts=4 diff --git a/libraries/plugins/IDS/vendors/htmlpurifier/HTMLPurifier/ConfigSchema/schema/AutoFormat.DisplayLinkURI.txt b/libraries/plugins/IDS/vendors/htmlpurifier/HTMLPurifier/ConfigSchema/schema/AutoFormat.DisplayLinkURI.txt deleted file mode 100644 index 663064a..0000000 --- a/libraries/plugins/IDS/vendors/htmlpurifier/HTMLPurifier/ConfigSchema/schema/AutoFormat.DisplayLinkURI.txt +++ /dev/null @@ -1,11 +0,0 @@ -AutoFormat.DisplayLinkURI -TYPE: bool -VERSION: 3.2.0 -DEFAULT: false ---DESCRIPTION-- -

- This directive turns on the in-text display of URIs in <a> tags, and disables - those links. For example, example becomes - example (http://example.com). -

---# vim: et sw=4 sts=4 diff --git a/libraries/plugins/IDS/vendors/htmlpurifier/HTMLPurifier/ConfigSchema/schema/AutoFormat.Linkify.txt b/libraries/plugins/IDS/vendors/htmlpurifier/HTMLPurifier/ConfigSchema/schema/AutoFormat.Linkify.txt deleted file mode 100644 index 3a48ba9..0000000 --- a/libraries/plugins/IDS/vendors/htmlpurifier/HTMLPurifier/ConfigSchema/schema/AutoFormat.Linkify.txt +++ /dev/null @@ -1,12 +0,0 @@ -AutoFormat.Linkify -TYPE: bool -VERSION: 2.0.1 -DEFAULT: false ---DESCRIPTION-- - -

- This directive turns on linkification, auto-linking http, ftp and - https URLs. a tags with the href attribute - must be allowed. -

---# vim: et sw=4 sts=4 diff --git a/libraries/plugins/IDS/vendors/htmlpurifier/HTMLPurifier/ConfigSchema/schema/AutoFormat.PurifierLinkify.DocURL.txt b/libraries/plugins/IDS/vendors/htmlpurifier/HTMLPurifier/ConfigSchema/schema/AutoFormat.PurifierLinkify.DocURL.txt deleted file mode 100644 index db58b13..0000000 --- a/libraries/plugins/IDS/vendors/htmlpurifier/HTMLPurifier/ConfigSchema/schema/AutoFormat.PurifierLinkify.DocURL.txt +++ /dev/null @@ -1,12 +0,0 @@ -AutoFormat.PurifierLinkify.DocURL -TYPE: string -VERSION: 2.0.1 -DEFAULT: '#%s' -ALIASES: AutoFormatParam.PurifierLinkifyDocURL ---DESCRIPTION-- -

- Location of configuration documentation to link to, let %s substitute - into the configuration's namespace and directive names sans the percent - sign. -

---# vim: et sw=4 sts=4 diff --git a/libraries/plugins/IDS/vendors/htmlpurifier/HTMLPurifier/ConfigSchema/schema/AutoFormat.PurifierLinkify.txt b/libraries/plugins/IDS/vendors/htmlpurifier/HTMLPurifier/ConfigSchema/schema/AutoFormat.PurifierLinkify.txt deleted file mode 100644 index 7996488..0000000 --- a/libraries/plugins/IDS/vendors/htmlpurifier/HTMLPurifier/ConfigSchema/schema/AutoFormat.PurifierLinkify.txt +++ /dev/null @@ -1,12 +0,0 @@ -AutoFormat.PurifierLinkify -TYPE: bool -VERSION: 2.0.1 -DEFAULT: false ---DESCRIPTION-- - -

- Internal auto-formatter that converts configuration directives in - syntax %Namespace.Directive to links. a tags - with the href attribute must be allowed. -

---# vim: et sw=4 sts=4 diff --git a/libraries/plugins/IDS/vendors/htmlpurifier/HTMLPurifier/ConfigSchema/schema/AutoFormat.RemoveEmpty.RemoveNbsp.Exceptions.txt b/libraries/plugins/IDS/vendors/htmlpurifier/HTMLPurifier/ConfigSchema/schema/AutoFormat.RemoveEmpty.RemoveNbsp.Exceptions.txt deleted file mode 100644 index 35c393b..0000000 --- a/libraries/plugins/IDS/vendors/htmlpurifier/HTMLPurifier/ConfigSchema/schema/AutoFormat.RemoveEmpty.RemoveNbsp.Exceptions.txt +++ /dev/null @@ -1,11 +0,0 @@ -AutoFormat.RemoveEmpty.RemoveNbsp.Exceptions -TYPE: lookup -VERSION: 4.0.0 -DEFAULT: array('td' => true, 'th' => true) ---DESCRIPTION-- -

- When %AutoFormat.RemoveEmpty and %AutoFormat.RemoveEmpty.RemoveNbsp - are enabled, this directive defines what HTML elements should not be - removede if they have only a non-breaking space in them. -

---# vim: et sw=4 sts=4 diff --git a/libraries/plugins/IDS/vendors/htmlpurifier/HTMLPurifier/ConfigSchema/schema/AutoFormat.RemoveEmpty.RemoveNbsp.txt b/libraries/plugins/IDS/vendors/htmlpurifier/HTMLPurifier/ConfigSchema/schema/AutoFormat.RemoveEmpty.RemoveNbsp.txt deleted file mode 100644 index ca17eb1..0000000 --- a/libraries/plugins/IDS/vendors/htmlpurifier/HTMLPurifier/ConfigSchema/schema/AutoFormat.RemoveEmpty.RemoveNbsp.txt +++ /dev/null @@ -1,15 +0,0 @@ -AutoFormat.RemoveEmpty.RemoveNbsp -TYPE: bool -VERSION: 4.0.0 -DEFAULT: false ---DESCRIPTION-- -

- When enabled, HTML Purifier will treat any elements that contain only - non-breaking spaces as well as regular whitespace as empty, and remove - them when %AutoForamt.RemoveEmpty is enabled. -

-

- See %AutoFormat.RemoveEmpty.RemoveNbsp.Exceptions for a list of elements - that don't have this behavior applied to them. -

---# vim: et sw=4 sts=4 diff --git a/libraries/plugins/IDS/vendors/htmlpurifier/HTMLPurifier/ConfigSchema/schema/AutoFormat.RemoveEmpty.txt b/libraries/plugins/IDS/vendors/htmlpurifier/HTMLPurifier/ConfigSchema/schema/AutoFormat.RemoveEmpty.txt deleted file mode 100644 index 34657ba..0000000 --- a/libraries/plugins/IDS/vendors/htmlpurifier/HTMLPurifier/ConfigSchema/schema/AutoFormat.RemoveEmpty.txt +++ /dev/null @@ -1,46 +0,0 @@ -AutoFormat.RemoveEmpty -TYPE: bool -VERSION: 3.2.0 -DEFAULT: false ---DESCRIPTION-- -

- When enabled, HTML Purifier will attempt to remove empty elements that - contribute no semantic information to the document. The following types - of nodes will be removed: -

-
  • - Tags with no attributes and no content, and that are not empty - elements (remove <a></a> but not - <br />), and -
  • -
  • - Tags with no content, except for:
      -
    • The colgroup element, or
    • -
    • - Elements with the id or name attribute, - when those attributes are permitted on those elements. -
    • -
  • -
-

- Please be very careful when using this functionality; while it may not - seem that empty elements contain useful information, they can alter the - layout of a document given appropriate styling. This directive is most - useful when you are processing machine-generated HTML, please avoid using - it on regular user HTML. -

-

- Elements that contain only whitespace will be treated as empty. Non-breaking - spaces, however, do not count as whitespace. See - %AutoFormat.RemoveEmpty.RemoveNbsp for alternate behavior. -

-

- This algorithm is not perfect; you may still notice some empty tags, - particularly if a node had elements, but those elements were later removed - because they were not permitted in that context, or tags that, after - being auto-closed by another tag, where empty. This is for safety reasons - to prevent clever code from breaking validation. The general rule of thumb: - if a tag looked empty on the way in, it will get removed; if HTML Purifier - made it empty, it will stay. -

---# vim: et sw=4 sts=4 diff --git a/libraries/plugins/IDS/vendors/htmlpurifier/HTMLPurifier/ConfigSchema/schema/AutoFormat.RemoveSpansWithoutAttributes.txt b/libraries/plugins/IDS/vendors/htmlpurifier/HTMLPurifier/ConfigSchema/schema/AutoFormat.RemoveSpansWithoutAttributes.txt deleted file mode 100644 index dde990a..0000000 --- a/libraries/plugins/IDS/vendors/htmlpurifier/HTMLPurifier/ConfigSchema/schema/AutoFormat.RemoveSpansWithoutAttributes.txt +++ /dev/null @@ -1,11 +0,0 @@ -AutoFormat.RemoveSpansWithoutAttributes -TYPE: bool -VERSION: 4.0.1 -DEFAULT: false ---DESCRIPTION-- -

- This directive causes span tags without any attributes - to be removed. It will also remove spans that had all attributes - removed during processing. -

---# vim: et sw=4 sts=4 diff --git a/libraries/plugins/IDS/vendors/htmlpurifier/HTMLPurifier/ConfigSchema/schema/AutoFormat.txt b/libraries/plugins/IDS/vendors/htmlpurifier/HTMLPurifier/ConfigSchema/schema/AutoFormat.txt deleted file mode 100644 index 161a52e..0000000 --- a/libraries/plugins/IDS/vendors/htmlpurifier/HTMLPurifier/ConfigSchema/schema/AutoFormat.txt +++ /dev/null @@ -1,3 +0,0 @@ -AutoFormat -DESCRIPTION: Configuration for activating auto-formatting functionality (also known as Injectors) ---# vim: et sw=4 sts=4 diff --git a/libraries/plugins/IDS/vendors/htmlpurifier/HTMLPurifier/ConfigSchema/schema/AutoFormatParam.PurifierLinkifyDocURL.txt b/libraries/plugins/IDS/vendors/htmlpurifier/HTMLPurifier/ConfigSchema/schema/AutoFormatParam.PurifierLinkifyDocURL.txt deleted file mode 100644 index 3e8309e..0000000 --- a/libraries/plugins/IDS/vendors/htmlpurifier/HTMLPurifier/ConfigSchema/schema/AutoFormatParam.PurifierLinkifyDocURL.txt +++ /dev/null @@ -1,12 +0,0 @@ -AutoFormatParam.PurifierLinkifyDocURL -TYPE: string -VERSION: 2.0.1 -DEFAULT: '#%s' ---DESCRIPTION-- - -

- Location of configuration documentation to link to, let %s substitute - into the configuration's namespace and directive names sans the percent - sign. -

---# vim: et sw=4 sts=4 diff --git a/libraries/plugins/IDS/vendors/htmlpurifier/HTMLPurifier/ConfigSchema/schema/AutoFormatParam.txt b/libraries/plugins/IDS/vendors/htmlpurifier/HTMLPurifier/ConfigSchema/schema/AutoFormatParam.txt deleted file mode 100644 index 6097a55..0000000 --- a/libraries/plugins/IDS/vendors/htmlpurifier/HTMLPurifier/ConfigSchema/schema/AutoFormatParam.txt +++ /dev/null @@ -1,3 +0,0 @@ -AutoFormatParam -DESCRIPTION: Configuration for customizing auto-formatting functionality ---# vim: et sw=4 sts=4 diff --git a/libraries/plugins/IDS/vendors/htmlpurifier/HTMLPurifier/ConfigSchema/schema/CSS.AllowImportant.txt b/libraries/plugins/IDS/vendors/htmlpurifier/HTMLPurifier/ConfigSchema/schema/CSS.AllowImportant.txt deleted file mode 100644 index b324608..0000000 --- a/libraries/plugins/IDS/vendors/htmlpurifier/HTMLPurifier/ConfigSchema/schema/CSS.AllowImportant.txt +++ /dev/null @@ -1,8 +0,0 @@ -CSS.AllowImportant -TYPE: bool -DEFAULT: false -VERSION: 3.1.0 ---DESCRIPTION-- -This parameter determines whether or not !important cascade modifiers should -be allowed in user CSS. If false, !important will stripped. ---# vim: et sw=4 sts=4 diff --git a/libraries/plugins/IDS/vendors/htmlpurifier/HTMLPurifier/ConfigSchema/schema/CSS.AllowTricky.txt b/libraries/plugins/IDS/vendors/htmlpurifier/HTMLPurifier/ConfigSchema/schema/CSS.AllowTricky.txt deleted file mode 100644 index 748be0e..0000000 --- a/libraries/plugins/IDS/vendors/htmlpurifier/HTMLPurifier/ConfigSchema/schema/CSS.AllowTricky.txt +++ /dev/null @@ -1,11 +0,0 @@ -CSS.AllowTricky -TYPE: bool -DEFAULT: false -VERSION: 3.1.0 ---DESCRIPTION-- -This parameter determines whether or not to allow "tricky" CSS properties and -values. Tricky CSS properties/values can drastically modify page layout or -be used for deceptive practices but do not directly constitute a security risk. -For example, display:none; is considered a tricky property that -will only be allowed if this directive is set to true. ---# vim: et sw=4 sts=4 diff --git a/libraries/plugins/IDS/vendors/htmlpurifier/HTMLPurifier/ConfigSchema/schema/CSS.AllowedFonts.txt b/libraries/plugins/IDS/vendors/htmlpurifier/HTMLPurifier/ConfigSchema/schema/CSS.AllowedFonts.txt deleted file mode 100644 index 3fd4654..0000000 --- a/libraries/plugins/IDS/vendors/htmlpurifier/HTMLPurifier/ConfigSchema/schema/CSS.AllowedFonts.txt +++ /dev/null @@ -1,12 +0,0 @@ -CSS.AllowedFonts -TYPE: lookup/null -VERSION: 4.3.0 -DEFAULT: NULL ---DESCRIPTION-- -

- Allows you to manually specify a set of allowed fonts. If - NULL, all fonts are allowed. This directive - affects generic names (serif, sans-serif, monospace, cursive, - fantasy) as well as specific font families. -

---# vim: et sw=4 sts=4 diff --git a/libraries/plugins/IDS/vendors/htmlpurifier/HTMLPurifier/ConfigSchema/schema/CSS.AllowedProperties.txt b/libraries/plugins/IDS/vendors/htmlpurifier/HTMLPurifier/ConfigSchema/schema/CSS.AllowedProperties.txt deleted file mode 100644 index 460112e..0000000 --- a/libraries/plugins/IDS/vendors/htmlpurifier/HTMLPurifier/ConfigSchema/schema/CSS.AllowedProperties.txt +++ /dev/null @@ -1,18 +0,0 @@ -CSS.AllowedProperties -TYPE: lookup/null -VERSION: 3.1.0 -DEFAULT: NULL ---DESCRIPTION-- - -

- If HTML Purifier's style attributes set is unsatisfactory for your needs, - you can overload it with your own list of tags to allow. Note that this - method is subtractive: it does its job by taking away from HTML Purifier - usual feature set, so you cannot add an attribute that HTML Purifier never - supported in the first place. -

-

- Warning: If another directive conflicts with the - elements here, that directive will win and override. -

---# vim: et sw=4 sts=4 diff --git a/libraries/plugins/IDS/vendors/htmlpurifier/HTMLPurifier/ConfigSchema/schema/CSS.DefinitionRev.txt b/libraries/plugins/IDS/vendors/htmlpurifier/HTMLPurifier/ConfigSchema/schema/CSS.DefinitionRev.txt deleted file mode 100644 index 5cb7dda..0000000 --- a/libraries/plugins/IDS/vendors/htmlpurifier/HTMLPurifier/ConfigSchema/schema/CSS.DefinitionRev.txt +++ /dev/null @@ -1,11 +0,0 @@ -CSS.DefinitionRev -TYPE: int -VERSION: 2.0.0 -DEFAULT: 1 ---DESCRIPTION-- - -

- Revision identifier for your custom definition. See - %HTML.DefinitionRev for details. -

---# vim: et sw=4 sts=4 diff --git a/libraries/plugins/IDS/vendors/htmlpurifier/HTMLPurifier/ConfigSchema/schema/CSS.ForbiddenProperties.txt b/libraries/plugins/IDS/vendors/htmlpurifier/HTMLPurifier/ConfigSchema/schema/CSS.ForbiddenProperties.txt deleted file mode 100644 index f1f5c5f..0000000 --- a/libraries/plugins/IDS/vendors/htmlpurifier/HTMLPurifier/ConfigSchema/schema/CSS.ForbiddenProperties.txt +++ /dev/null @@ -1,13 +0,0 @@ -CSS.ForbiddenProperties -TYPE: lookup -VERSION: 4.2.0 -DEFAULT: array() ---DESCRIPTION-- -

- This is the logical inverse of %CSS.AllowedProperties, and it will - override that directive or any other directive. If possible, - %CSS.AllowedProperties is recommended over this directive, - because it can sometimes be difficult to tell whether or not you've - forbidden all of the CSS properties you truly would like to disallow. -

---# vim: et sw=4 sts=4 diff --git a/libraries/plugins/IDS/vendors/htmlpurifier/HTMLPurifier/ConfigSchema/schema/CSS.MaxImgLength.txt b/libraries/plugins/IDS/vendors/htmlpurifier/HTMLPurifier/ConfigSchema/schema/CSS.MaxImgLength.txt deleted file mode 100644 index 7a32914..0000000 --- a/libraries/plugins/IDS/vendors/htmlpurifier/HTMLPurifier/ConfigSchema/schema/CSS.MaxImgLength.txt +++ /dev/null @@ -1,16 +0,0 @@ -CSS.MaxImgLength -TYPE: string/null -DEFAULT: '1200px' -VERSION: 3.1.1 ---DESCRIPTION-- -

- This parameter sets the maximum allowed length on img tags, - effectively the width and height properties. - Only absolute units of measurement (in, pt, pc, mm, cm) and pixels (px) are allowed. This is - in place to prevent imagecrash attacks, disable with null at your own risk. - This directive is similar to %HTML.MaxImgLength, and both should be - concurrently edited, although there are - subtle differences in the input format (the CSS max is a number with - a unit). -

---# vim: et sw=4 sts=4 diff --git a/libraries/plugins/IDS/vendors/htmlpurifier/HTMLPurifier/ConfigSchema/schema/CSS.Proprietary.txt b/libraries/plugins/IDS/vendors/htmlpurifier/HTMLPurifier/ConfigSchema/schema/CSS.Proprietary.txt deleted file mode 100644 index 148eedb..0000000 --- a/libraries/plugins/IDS/vendors/htmlpurifier/HTMLPurifier/ConfigSchema/schema/CSS.Proprietary.txt +++ /dev/null @@ -1,10 +0,0 @@ -CSS.Proprietary -TYPE: bool -VERSION: 3.0.0 -DEFAULT: false ---DESCRIPTION-- - -

- Whether or not to allow safe, proprietary CSS values. -

---# vim: et sw=4 sts=4 diff --git a/libraries/plugins/IDS/vendors/htmlpurifier/HTMLPurifier/ConfigSchema/schema/CSS.Trusted.txt b/libraries/plugins/IDS/vendors/htmlpurifier/HTMLPurifier/ConfigSchema/schema/CSS.Trusted.txt deleted file mode 100644 index e733a61..0000000 --- a/libraries/plugins/IDS/vendors/htmlpurifier/HTMLPurifier/ConfigSchema/schema/CSS.Trusted.txt +++ /dev/null @@ -1,9 +0,0 @@ -CSS.Trusted -TYPE: bool -VERSION: 4.2.1 -DEFAULT: false ---DESCRIPTION-- -Indicates whether or not the user's CSS input is trusted or not. If the -input is trusted, a more expansive set of allowed properties. See -also %HTML.Trusted. ---# vim: et sw=4 sts=4 diff --git a/libraries/plugins/IDS/vendors/htmlpurifier/HTMLPurifier/ConfigSchema/schema/CSS.txt b/libraries/plugins/IDS/vendors/htmlpurifier/HTMLPurifier/ConfigSchema/schema/CSS.txt deleted file mode 100644 index d14b490..0000000 --- a/libraries/plugins/IDS/vendors/htmlpurifier/HTMLPurifier/ConfigSchema/schema/CSS.txt +++ /dev/null @@ -1,3 +0,0 @@ -CSS -DESCRIPTION: Configuration regarding allowed CSS. ---# vim: et sw=4 sts=4 diff --git a/libraries/plugins/IDS/vendors/htmlpurifier/HTMLPurifier/ConfigSchema/schema/Cache.DefinitionImpl.txt b/libraries/plugins/IDS/vendors/htmlpurifier/HTMLPurifier/ConfigSchema/schema/Cache.DefinitionImpl.txt deleted file mode 100644 index c486724..0000000 --- a/libraries/plugins/IDS/vendors/htmlpurifier/HTMLPurifier/ConfigSchema/schema/Cache.DefinitionImpl.txt +++ /dev/null @@ -1,14 +0,0 @@ -Cache.DefinitionImpl -TYPE: string/null -VERSION: 2.0.0 -DEFAULT: 'Serializer' ---DESCRIPTION-- - -This directive defines which method to use when caching definitions, -the complex data-type that makes HTML Purifier tick. Set to null -to disable caching (not recommended, as you will see a definite -performance degradation). - ---ALIASES-- -Core.DefinitionCache ---# vim: et sw=4 sts=4 diff --git a/libraries/plugins/IDS/vendors/htmlpurifier/HTMLPurifier/ConfigSchema/schema/Cache.SerializerPath.txt b/libraries/plugins/IDS/vendors/htmlpurifier/HTMLPurifier/ConfigSchema/schema/Cache.SerializerPath.txt deleted file mode 100644 index 5403650..0000000 --- a/libraries/plugins/IDS/vendors/htmlpurifier/HTMLPurifier/ConfigSchema/schema/Cache.SerializerPath.txt +++ /dev/null @@ -1,13 +0,0 @@ -Cache.SerializerPath -TYPE: string/null -VERSION: 2.0.0 -DEFAULT: NULL ---DESCRIPTION-- - -

- Absolute path with no trailing slash to store serialized definitions in. - Default is within the - HTML Purifier library inside DefinitionCache/Serializer. This - path must be writable by the webserver. -

---# vim: et sw=4 sts=4 diff --git a/libraries/plugins/IDS/vendors/htmlpurifier/HTMLPurifier/ConfigSchema/schema/Cache.SerializerPermissions.txt b/libraries/plugins/IDS/vendors/htmlpurifier/HTMLPurifier/ConfigSchema/schema/Cache.SerializerPermissions.txt deleted file mode 100644 index b2b83d9..0000000 --- a/libraries/plugins/IDS/vendors/htmlpurifier/HTMLPurifier/ConfigSchema/schema/Cache.SerializerPermissions.txt +++ /dev/null @@ -1,11 +0,0 @@ -Cache.SerializerPermissions -TYPE: int -VERSION: 4.3.0 -DEFAULT: 0755 ---DESCRIPTION-- - -

- Directory permissions of the files and directories created inside - the DefinitionCache/Serializer or other custom serializer path. -

---# vim: et sw=4 sts=4 diff --git a/libraries/plugins/IDS/vendors/htmlpurifier/HTMLPurifier/ConfigSchema/schema/Cache.txt b/libraries/plugins/IDS/vendors/htmlpurifier/HTMLPurifier/ConfigSchema/schema/Cache.txt deleted file mode 100644 index 57f3023..0000000 --- a/libraries/plugins/IDS/vendors/htmlpurifier/HTMLPurifier/ConfigSchema/schema/Cache.txt +++ /dev/null @@ -1,3 +0,0 @@ -Cache -DESCRIPTION: Configuration for DefinitionCache and related subclasses. ---# vim: et sw=4 sts=4 diff --git a/libraries/plugins/IDS/vendors/htmlpurifier/HTMLPurifier/ConfigSchema/schema/Core.AggressivelyFixLt.txt b/libraries/plugins/IDS/vendors/htmlpurifier/HTMLPurifier/ConfigSchema/schema/Core.AggressivelyFixLt.txt deleted file mode 100644 index 568cbf3..0000000 --- a/libraries/plugins/IDS/vendors/htmlpurifier/HTMLPurifier/ConfigSchema/schema/Core.AggressivelyFixLt.txt +++ /dev/null @@ -1,18 +0,0 @@ -Core.AggressivelyFixLt -TYPE: bool -VERSION: 2.1.0 -DEFAULT: true ---DESCRIPTION-- -

- This directive enables aggressive pre-filter fixes HTML Purifier can - perform in order to ensure that open angled-brackets do not get killed - during parsing stage. Enabling this will result in two preg_replace_callback - calls and at least two preg_replace calls for every HTML document parsed; - if your users make very well-formed HTML, you can set this directive false. - This has no effect when DirectLex is used. -

-

- Notice: This directive's default turned from false to true - in HTML Purifier 3.2.0. -

---# vim: et sw=4 sts=4 diff --git a/libraries/plugins/IDS/vendors/htmlpurifier/HTMLPurifier/ConfigSchema/schema/Core.CollectErrors.txt b/libraries/plugins/IDS/vendors/htmlpurifier/HTMLPurifier/ConfigSchema/schema/Core.CollectErrors.txt deleted file mode 100644 index d731791..0000000 --- a/libraries/plugins/IDS/vendors/htmlpurifier/HTMLPurifier/ConfigSchema/schema/Core.CollectErrors.txt +++ /dev/null @@ -1,12 +0,0 @@ -Core.CollectErrors -TYPE: bool -VERSION: 2.0.0 -DEFAULT: false ---DESCRIPTION-- - -Whether or not to collect errors found while filtering the document. This -is a useful way to give feedback to your users. Warning: -Currently this feature is very patchy and experimental, with lots of -possible error messages not yet implemented. It will not cause any -problems, but it may not help your users either. ---# vim: et sw=4 sts=4 diff --git a/libraries/plugins/IDS/vendors/htmlpurifier/HTMLPurifier/ConfigSchema/schema/Core.ColorKeywords.txt b/libraries/plugins/IDS/vendors/htmlpurifier/HTMLPurifier/ConfigSchema/schema/Core.ColorKeywords.txt deleted file mode 100644 index 08b381d..0000000 --- a/libraries/plugins/IDS/vendors/htmlpurifier/HTMLPurifier/ConfigSchema/schema/Core.ColorKeywords.txt +++ /dev/null @@ -1,28 +0,0 @@ -Core.ColorKeywords -TYPE: hash -VERSION: 2.0.0 ---DEFAULT-- -array ( - 'maroon' => '#800000', - 'red' => '#FF0000', - 'orange' => '#FFA500', - 'yellow' => '#FFFF00', - 'olive' => '#808000', - 'purple' => '#800080', - 'fuchsia' => '#FF00FF', - 'white' => '#FFFFFF', - 'lime' => '#00FF00', - 'green' => '#008000', - 'navy' => '#000080', - 'blue' => '#0000FF', - 'aqua' => '#00FFFF', - 'teal' => '#008080', - 'black' => '#000000', - 'silver' => '#C0C0C0', - 'gray' => '#808080', -) ---DESCRIPTION-- - -Lookup array of color names to six digit hexadecimal number corresponding -to color, with preceding hash mark. Used when parsing colors. ---# vim: et sw=4 sts=4 diff --git a/libraries/plugins/IDS/vendors/htmlpurifier/HTMLPurifier/ConfigSchema/schema/Core.ConvertDocumentToFragment.txt b/libraries/plugins/IDS/vendors/htmlpurifier/HTMLPurifier/ConfigSchema/schema/Core.ConvertDocumentToFragment.txt deleted file mode 100644 index 64b114f..0000000 --- a/libraries/plugins/IDS/vendors/htmlpurifier/HTMLPurifier/ConfigSchema/schema/Core.ConvertDocumentToFragment.txt +++ /dev/null @@ -1,14 +0,0 @@ -Core.ConvertDocumentToFragment -TYPE: bool -DEFAULT: true ---DESCRIPTION-- - -This parameter determines whether or not the filter should convert -input that is a full document with html and body tags to a fragment -of just the contents of a body tag. This parameter is simply something -HTML Purifier can do during an edge-case: for most inputs, this -processing is not necessary. - ---ALIASES-- -Core.AcceptFullDocuments ---# vim: et sw=4 sts=4 diff --git a/libraries/plugins/IDS/vendors/htmlpurifier/HTMLPurifier/ConfigSchema/schema/Core.DirectLexLineNumberSyncInterval.txt b/libraries/plugins/IDS/vendors/htmlpurifier/HTMLPurifier/ConfigSchema/schema/Core.DirectLexLineNumberSyncInterval.txt deleted file mode 100644 index 36f16e0..0000000 --- a/libraries/plugins/IDS/vendors/htmlpurifier/HTMLPurifier/ConfigSchema/schema/Core.DirectLexLineNumberSyncInterval.txt +++ /dev/null @@ -1,17 +0,0 @@ -Core.DirectLexLineNumberSyncInterval -TYPE: int -VERSION: 2.0.0 -DEFAULT: 0 ---DESCRIPTION-- - -

- Specifies the number of tokens the DirectLex line number tracking - implementations should process before attempting to resyncronize the - current line count by manually counting all previous new-lines. When - at 0, this functionality is disabled. Lower values will decrease - performance, and this is only strictly necessary if the counting - algorithm is buggy (in which case you should report it as a bug). - This has no effect when %Core.MaintainLineNumbers is disabled or DirectLex is - not being used. -

---# vim: et sw=4 sts=4 diff --git a/libraries/plugins/IDS/vendors/htmlpurifier/HTMLPurifier/ConfigSchema/schema/Core.Encoding.txt b/libraries/plugins/IDS/vendors/htmlpurifier/HTMLPurifier/ConfigSchema/schema/Core.Encoding.txt deleted file mode 100644 index 8bfb47c..0000000 --- a/libraries/plugins/IDS/vendors/htmlpurifier/HTMLPurifier/ConfigSchema/schema/Core.Encoding.txt +++ /dev/null @@ -1,15 +0,0 @@ -Core.Encoding -TYPE: istring -DEFAULT: 'utf-8' ---DESCRIPTION-- -If for some reason you are unable to convert all webpages to UTF-8, you can -use this directive as a stop-gap compatibility change to let HTML Purifier -deal with non UTF-8 input. This technique has notable deficiencies: -absolutely no characters outside of the selected character encoding will be -preserved, not even the ones that have been ampersand escaped (this is due -to a UTF-8 specific feature that automatically resolves all -entities), making it pretty useless for anything except the most I18N-blind -applications, although %Core.EscapeNonASCIICharacters offers fixes this -trouble with another tradeoff. This directive only accepts ISO-8859-1 if -iconv is not enabled. ---# vim: et sw=4 sts=4 diff --git a/libraries/plugins/IDS/vendors/htmlpurifier/HTMLPurifier/ConfigSchema/schema/Core.EscapeInvalidChildren.txt b/libraries/plugins/IDS/vendors/htmlpurifier/HTMLPurifier/ConfigSchema/schema/Core.EscapeInvalidChildren.txt deleted file mode 100644 index 4d5b505..0000000 --- a/libraries/plugins/IDS/vendors/htmlpurifier/HTMLPurifier/ConfigSchema/schema/Core.EscapeInvalidChildren.txt +++ /dev/null @@ -1,10 +0,0 @@ -Core.EscapeInvalidChildren -TYPE: bool -DEFAULT: false ---DESCRIPTION-- -When true, a child is found that is not allowed in the context of the -parent element will be transformed into text as if it were ASCII. When -false, that element and all internal tags will be dropped, though text will -be preserved. There is no option for dropping the element but preserving -child nodes. ---# vim: et sw=4 sts=4 diff --git a/libraries/plugins/IDS/vendors/htmlpurifier/HTMLPurifier/ConfigSchema/schema/Core.EscapeInvalidTags.txt b/libraries/plugins/IDS/vendors/htmlpurifier/HTMLPurifier/ConfigSchema/schema/Core.EscapeInvalidTags.txt deleted file mode 100644 index a7a5b24..0000000 --- a/libraries/plugins/IDS/vendors/htmlpurifier/HTMLPurifier/ConfigSchema/schema/Core.EscapeInvalidTags.txt +++ /dev/null @@ -1,7 +0,0 @@ -Core.EscapeInvalidTags -TYPE: bool -DEFAULT: false ---DESCRIPTION-- -When true, invalid tags will be written back to the document as plain text. -Otherwise, they are silently dropped. ---# vim: et sw=4 sts=4 diff --git a/libraries/plugins/IDS/vendors/htmlpurifier/HTMLPurifier/ConfigSchema/schema/Core.EscapeNonASCIICharacters.txt b/libraries/plugins/IDS/vendors/htmlpurifier/HTMLPurifier/ConfigSchema/schema/Core.EscapeNonASCIICharacters.txt deleted file mode 100644 index abb4999..0000000 --- a/libraries/plugins/IDS/vendors/htmlpurifier/HTMLPurifier/ConfigSchema/schema/Core.EscapeNonASCIICharacters.txt +++ /dev/null @@ -1,13 +0,0 @@ -Core.EscapeNonASCIICharacters -TYPE: bool -VERSION: 1.4.0 -DEFAULT: false ---DESCRIPTION-- -This directive overcomes a deficiency in %Core.Encoding by blindly -converting all non-ASCII characters into decimal numeric entities before -converting it to its native encoding. This means that even characters that -can be expressed in the non-UTF-8 encoding will be entity-ized, which can -be a real downer for encodings like Big5. It also assumes that the ASCII -repetoire is available, although this is the case for almost all encodings. -Anyway, use UTF-8! ---# vim: et sw=4 sts=4 diff --git a/libraries/plugins/IDS/vendors/htmlpurifier/HTMLPurifier/ConfigSchema/schema/Core.HiddenElements.txt b/libraries/plugins/IDS/vendors/htmlpurifier/HTMLPurifier/ConfigSchema/schema/Core.HiddenElements.txt deleted file mode 100644 index 915391e..0000000 --- a/libraries/plugins/IDS/vendors/htmlpurifier/HTMLPurifier/ConfigSchema/schema/Core.HiddenElements.txt +++ /dev/null @@ -1,19 +0,0 @@ -Core.HiddenElements -TYPE: lookup ---DEFAULT-- -array ( - 'script' => true, - 'style' => true, -) ---DESCRIPTION-- - -

- This directive is a lookup array of elements which should have their - contents removed when they are not allowed by the HTML definition. - For example, the contents of a script tag are not - normally shown in a document, so if script tags are to be removed, - their contents should be removed to. This is opposed to a b - tag, which defines some presentational changes but does not hide its - contents. -

---# vim: et sw=4 sts=4 diff --git a/libraries/plugins/IDS/vendors/htmlpurifier/HTMLPurifier/ConfigSchema/schema/Core.Language.txt b/libraries/plugins/IDS/vendors/htmlpurifier/HTMLPurifier/ConfigSchema/schema/Core.Language.txt deleted file mode 100644 index 233fca1..0000000 --- a/libraries/plugins/IDS/vendors/htmlpurifier/HTMLPurifier/ConfigSchema/schema/Core.Language.txt +++ /dev/null @@ -1,10 +0,0 @@ -Core.Language -TYPE: string -VERSION: 2.0.0 -DEFAULT: 'en' ---DESCRIPTION-- - -ISO 639 language code for localizable things in HTML Purifier to use, -which is mainly error reporting. There is currently only an English (en) -translation, so this directive is currently useless. ---# vim: et sw=4 sts=4 diff --git a/libraries/plugins/IDS/vendors/htmlpurifier/HTMLPurifier/ConfigSchema/schema/Core.LexerImpl.txt b/libraries/plugins/IDS/vendors/htmlpurifier/HTMLPurifier/ConfigSchema/schema/Core.LexerImpl.txt deleted file mode 100644 index 8983e2c..0000000 --- a/libraries/plugins/IDS/vendors/htmlpurifier/HTMLPurifier/ConfigSchema/schema/Core.LexerImpl.txt +++ /dev/null @@ -1,34 +0,0 @@ -Core.LexerImpl -TYPE: mixed/null -VERSION: 2.0.0 -DEFAULT: NULL ---DESCRIPTION-- - -

- This parameter determines what lexer implementation can be used. The - valid values are: -

-
-
null
-
- Recommended, the lexer implementation will be auto-detected based on - your PHP-version and configuration. -
-
string lexer identifier
-
- This is a slim way of manually overridding the implementation. - Currently recognized values are: DOMLex (the default PHP5 -implementation) - and DirectLex (the default PHP4 implementation). Only use this if - you know what you are doing: usually, the auto-detection will - manage things for cases you aren't even aware of. -
-
object lexer instance
-
- Super-advanced: you can specify your own, custom, implementation that - implements the interface defined by HTMLPurifier_Lexer. - I may remove this option simply because I don't expect anyone - to use it. -
-
---# vim: et sw=4 sts=4 diff --git a/libraries/plugins/IDS/vendors/htmlpurifier/HTMLPurifier/ConfigSchema/schema/Core.MaintainLineNumbers.txt b/libraries/plugins/IDS/vendors/htmlpurifier/HTMLPurifier/ConfigSchema/schema/Core.MaintainLineNumbers.txt deleted file mode 100644 index eb841a7..0000000 --- a/libraries/plugins/IDS/vendors/htmlpurifier/HTMLPurifier/ConfigSchema/schema/Core.MaintainLineNumbers.txt +++ /dev/null @@ -1,16 +0,0 @@ -Core.MaintainLineNumbers -TYPE: bool/null -VERSION: 2.0.0 -DEFAULT: NULL ---DESCRIPTION-- - -

- If true, HTML Purifier will add line number information to all tokens. - This is useful when error reporting is turned on, but can result in - significant performance degradation and should not be used when - unnecessary. This directive must be used with the DirectLex lexer, - as the DOMLex lexer does not (yet) support this functionality. - If the value is null, an appropriate value will be selected based - on other configuration. -

---# vim: et sw=4 sts=4 diff --git a/libraries/plugins/IDS/vendors/htmlpurifier/HTMLPurifier/ConfigSchema/schema/Core.NormalizeNewlines.txt b/libraries/plugins/IDS/vendors/htmlpurifier/HTMLPurifier/ConfigSchema/schema/Core.NormalizeNewlines.txt deleted file mode 100644 index d77f536..0000000 --- a/libraries/plugins/IDS/vendors/htmlpurifier/HTMLPurifier/ConfigSchema/schema/Core.NormalizeNewlines.txt +++ /dev/null @@ -1,11 +0,0 @@ -Core.NormalizeNewlines -TYPE: bool -VERSION: 4.2.0 -DEFAULT: true ---DESCRIPTION-- -

- Whether or not to normalize newlines to the operating - system default. When false, HTML Purifier - will attempt to preserve mixed newline files. -

---# vim: et sw=4 sts=4 diff --git a/libraries/plugins/IDS/vendors/htmlpurifier/HTMLPurifier/ConfigSchema/schema/Core.RemoveInvalidImg.txt b/libraries/plugins/IDS/vendors/htmlpurifier/HTMLPurifier/ConfigSchema/schema/Core.RemoveInvalidImg.txt deleted file mode 100644 index 4070c2a..0000000 --- a/libraries/plugins/IDS/vendors/htmlpurifier/HTMLPurifier/ConfigSchema/schema/Core.RemoveInvalidImg.txt +++ /dev/null @@ -1,12 +0,0 @@ -Core.RemoveInvalidImg -TYPE: bool -DEFAULT: true -VERSION: 1.3.0 ---DESCRIPTION-- - -

- This directive enables pre-emptive URI checking in img - tags, as the attribute validation strategy is not authorized to - remove elements from the document. Revert to pre-1.3.0 behavior by setting to false. -

---# vim: et sw=4 sts=4 diff --git a/libraries/plugins/IDS/vendors/htmlpurifier/HTMLPurifier/ConfigSchema/schema/Core.RemoveProcessingInstructions.txt b/libraries/plugins/IDS/vendors/htmlpurifier/HTMLPurifier/ConfigSchema/schema/Core.RemoveProcessingInstructions.txt deleted file mode 100644 index 3397d9f..0000000 --- a/libraries/plugins/IDS/vendors/htmlpurifier/HTMLPurifier/ConfigSchema/schema/Core.RemoveProcessingInstructions.txt +++ /dev/null @@ -1,11 +0,0 @@ -Core.RemoveProcessingInstructions -TYPE: bool -VERSION: 4.2.0 -DEFAULT: false ---DESCRIPTION-- -Instead of escaping processing instructions in the form <? ... -?>, remove it out-right. This may be useful if the HTML -you are validating contains XML processing instruction gunk, however, -it can also be user-unfriendly for people attempting to post PHP -snippets. ---# vim: et sw=4 sts=4 diff --git a/libraries/plugins/IDS/vendors/htmlpurifier/HTMLPurifier/ConfigSchema/schema/Core.RemoveScriptContents.txt b/libraries/plugins/IDS/vendors/htmlpurifier/HTMLPurifier/ConfigSchema/schema/Core.RemoveScriptContents.txt deleted file mode 100644 index a4cd966..0000000 --- a/libraries/plugins/IDS/vendors/htmlpurifier/HTMLPurifier/ConfigSchema/schema/Core.RemoveScriptContents.txt +++ /dev/null @@ -1,12 +0,0 @@ -Core.RemoveScriptContents -TYPE: bool/null -DEFAULT: NULL -VERSION: 2.0.0 -DEPRECATED-VERSION: 2.1.0 -DEPRECATED-USE: Core.HiddenElements ---DESCRIPTION-- -

- This directive enables HTML Purifier to remove not only script tags - but all of their contents. -

---# vim: et sw=4 sts=4 diff --git a/libraries/plugins/IDS/vendors/htmlpurifier/HTMLPurifier/ConfigSchema/schema/Core.txt b/libraries/plugins/IDS/vendors/htmlpurifier/HTMLPurifier/ConfigSchema/schema/Core.txt deleted file mode 100644 index 5edfe07..0000000 --- a/libraries/plugins/IDS/vendors/htmlpurifier/HTMLPurifier/ConfigSchema/schema/Core.txt +++ /dev/null @@ -1,3 +0,0 @@ -Core -DESCRIPTION: Core features that are always available. ---# vim: et sw=4 sts=4 diff --git a/libraries/plugins/IDS/vendors/htmlpurifier/HTMLPurifier/ConfigSchema/schema/Filter.Custom.txt b/libraries/plugins/IDS/vendors/htmlpurifier/HTMLPurifier/ConfigSchema/schema/Filter.Custom.txt deleted file mode 100644 index 3db50ef..0000000 --- a/libraries/plugins/IDS/vendors/htmlpurifier/HTMLPurifier/ConfigSchema/schema/Filter.Custom.txt +++ /dev/null @@ -1,11 +0,0 @@ -Filter.Custom -TYPE: list -VERSION: 3.1.0 -DEFAULT: array() ---DESCRIPTION-- -

- This directive can be used to add custom filters; it is nearly the - equivalent of the now deprecated HTMLPurifier->addFilter() - method. Specify an array of concrete implementations. -

---# vim: et sw=4 sts=4 diff --git a/libraries/plugins/IDS/vendors/htmlpurifier/HTMLPurifier/ConfigSchema/schema/Filter.ExtractStyleBlocks.Escaping.txt b/libraries/plugins/IDS/vendors/htmlpurifier/HTMLPurifier/ConfigSchema/schema/Filter.ExtractStyleBlocks.Escaping.txt deleted file mode 100644 index 16829bc..0000000 --- a/libraries/plugins/IDS/vendors/htmlpurifier/HTMLPurifier/ConfigSchema/schema/Filter.ExtractStyleBlocks.Escaping.txt +++ /dev/null @@ -1,14 +0,0 @@ -Filter.ExtractStyleBlocks.Escaping -TYPE: bool -VERSION: 3.0.0 -DEFAULT: true -ALIASES: Filter.ExtractStyleBlocksEscaping, FilterParam.ExtractStyleBlocksEscaping ---DESCRIPTION-- - -

- Whether or not to escape the dangerous characters <, > and & - as \3C, \3E and \26, respectively. This is can be safely set to false - if the contents of StyleBlocks will be placed in an external stylesheet, - where there is no risk of it being interpreted as HTML. -

---# vim: et sw=4 sts=4 diff --git a/libraries/plugins/IDS/vendors/htmlpurifier/HTMLPurifier/ConfigSchema/schema/Filter.ExtractStyleBlocks.Scope.txt b/libraries/plugins/IDS/vendors/htmlpurifier/HTMLPurifier/ConfigSchema/schema/Filter.ExtractStyleBlocks.Scope.txt deleted file mode 100644 index 7f95f54..0000000 --- a/libraries/plugins/IDS/vendors/htmlpurifier/HTMLPurifier/ConfigSchema/schema/Filter.ExtractStyleBlocks.Scope.txt +++ /dev/null @@ -1,29 +0,0 @@ -Filter.ExtractStyleBlocks.Scope -TYPE: string/null -VERSION: 3.0.0 -DEFAULT: NULL -ALIASES: Filter.ExtractStyleBlocksScope, FilterParam.ExtractStyleBlocksScope ---DESCRIPTION-- - -

- If you would like users to be able to define external stylesheets, but - only allow them to specify CSS declarations for a specific node and - prevent them from fiddling with other elements, use this directive. - It accepts any valid CSS selector, and will prepend this to any - CSS declaration extracted from the document. For example, if this - directive is set to #user-content and a user uses the - selector a:hover, the final selector will be - #user-content a:hover. -

-

- The comma shorthand may be used; consider the above example, with - #user-content, #user-content2, the final selector will - be #user-content a:hover, #user-content2 a:hover. -

-

- Warning: It is possible for users to bypass this measure - using a naughty + selector. This is a bug in CSS Tidy 1.3, not HTML - Purifier, and I am working to get it fixed. Until then, HTML Purifier - performs a basic check to prevent this. -

---# vim: et sw=4 sts=4 diff --git a/libraries/plugins/IDS/vendors/htmlpurifier/HTMLPurifier/ConfigSchema/schema/Filter.ExtractStyleBlocks.TidyImpl.txt b/libraries/plugins/IDS/vendors/htmlpurifier/HTMLPurifier/ConfigSchema/schema/Filter.ExtractStyleBlocks.TidyImpl.txt deleted file mode 100644 index 6c231b2..0000000 --- a/libraries/plugins/IDS/vendors/htmlpurifier/HTMLPurifier/ConfigSchema/schema/Filter.ExtractStyleBlocks.TidyImpl.txt +++ /dev/null @@ -1,16 +0,0 @@ -Filter.ExtractStyleBlocks.TidyImpl -TYPE: mixed/null -VERSION: 3.1.0 -DEFAULT: NULL -ALIASES: FilterParam.ExtractStyleBlocksTidyImpl ---DESCRIPTION-- -

- If left NULL, HTML Purifier will attempt to instantiate a csstidy - class to use for internal cleaning. This will usually be good enough. -

-

- However, for trusted user input, you can set this to false to - disable cleaning. In addition, you can supply your own concrete implementation - of Tidy's interface to use, although I don't know why you'd want to do that. -

---# vim: et sw=4 sts=4 diff --git a/libraries/plugins/IDS/vendors/htmlpurifier/HTMLPurifier/ConfigSchema/schema/Filter.ExtractStyleBlocks.txt b/libraries/plugins/IDS/vendors/htmlpurifier/HTMLPurifier/ConfigSchema/schema/Filter.ExtractStyleBlocks.txt deleted file mode 100644 index 078d087..0000000 --- a/libraries/plugins/IDS/vendors/htmlpurifier/HTMLPurifier/ConfigSchema/schema/Filter.ExtractStyleBlocks.txt +++ /dev/null @@ -1,74 +0,0 @@ -Filter.ExtractStyleBlocks -TYPE: bool -VERSION: 3.1.0 -DEFAULT: false -EXTERNAL: CSSTidy ---DESCRIPTION-- -

- This directive turns on the style block extraction filter, which removes - style blocks from input HTML, cleans them up with CSSTidy, - and places them in the StyleBlocks context variable, for further - use by you, usually to be placed in an external stylesheet, or a - style block in the head of your document. -

-

- Sample usage: -

-
';
-?>
-
-
-
-  Filter.ExtractStyleBlocks
-body {color:#F00;} Some text';
-
-    $config = HTMLPurifier_Config::createDefault();
-    $config->set('Filter', 'ExtractStyleBlocks', true);
-    $purifier = new HTMLPurifier($config);
-
-    $html = $purifier->purify($dirty);
-
-    // This implementation writes the stylesheets to the styles/ directory.
-    // You can also echo the styles inside the document, but it's a bit
-    // more difficult to make sure they get interpreted properly by
-    // browsers; try the usual CSS armoring techniques.
-    $styles = $purifier->context->get('StyleBlocks');
-    $dir = 'styles/';
-    if (!is_dir($dir)) mkdir($dir);
-    $hash = sha1($_GET['html']);
-    foreach ($styles as $i => $style) {
-        file_put_contents($name = $dir . $hash . "_$i");
-        echo '';
-    }
-?>
-
-
-  
- -
- - -]]>
-

- Warning: It is possible for a user to mount an - imagecrash attack using this CSS. Counter-measures are difficult; - it is not simply enough to limit the range of CSS lengths (using - relative lengths with many nesting levels allows for large values - to be attained without actually specifying them in the stylesheet), - and the flexible nature of selectors makes it difficult to selectively - disable lengths on image tags (HTML Purifier, however, does disable - CSS width and height in inline styling). There are probably two effective - counter measures: an explicit width and height set to auto in all - images in your document (unlikely) or the disabling of width and - height (somewhat reasonable). Whether or not these measures should be - used is left to the reader. -

---# vim: et sw=4 sts=4 diff --git a/libraries/plugins/IDS/vendors/htmlpurifier/HTMLPurifier/ConfigSchema/schema/Filter.YouTube.txt b/libraries/plugins/IDS/vendors/htmlpurifier/HTMLPurifier/ConfigSchema/schema/Filter.YouTube.txt deleted file mode 100644 index 321eaa2..0000000 --- a/libraries/plugins/IDS/vendors/htmlpurifier/HTMLPurifier/ConfigSchema/schema/Filter.YouTube.txt +++ /dev/null @@ -1,16 +0,0 @@ -Filter.YouTube -TYPE: bool -VERSION: 3.1.0 -DEFAULT: false ---DESCRIPTION-- -

- Warning: Deprecated in favor of %HTML.SafeObject and - %Output.FlashCompat (turn both on to allow YouTube videos and other - Flash content). -

-

- This directive enables YouTube video embedding in HTML Purifier. Check - this document - on embedding videos for more information on what this filter does. -

---# vim: et sw=4 sts=4 diff --git a/libraries/plugins/IDS/vendors/htmlpurifier/HTMLPurifier/ConfigSchema/schema/Filter.txt b/libraries/plugins/IDS/vendors/htmlpurifier/HTMLPurifier/ConfigSchema/schema/Filter.txt deleted file mode 100644 index f2d25a1..0000000 --- a/libraries/plugins/IDS/vendors/htmlpurifier/HTMLPurifier/ConfigSchema/schema/Filter.txt +++ /dev/null @@ -1,3 +0,0 @@ -Filter -DESCRIPTION: Directives for turning filters on and off, or specifying custom filters. ---# vim: et sw=4 sts=4 diff --git a/libraries/plugins/IDS/vendors/htmlpurifier/HTMLPurifier/ConfigSchema/schema/FilterParam.ExtractStyleBlocksEscaping.txt b/libraries/plugins/IDS/vendors/htmlpurifier/HTMLPurifier/ConfigSchema/schema/FilterParam.ExtractStyleBlocksEscaping.txt deleted file mode 100644 index d436ed0..0000000 --- a/libraries/plugins/IDS/vendors/htmlpurifier/HTMLPurifier/ConfigSchema/schema/FilterParam.ExtractStyleBlocksEscaping.txt +++ /dev/null @@ -1,14 +0,0 @@ -FilterParam.ExtractStyleBlocksEscaping -TYPE: bool -VERSION: 3.0.0 -DEFAULT: true -ALIASES: Filter.ExtractStyleBlocksEscaping ---DESCRIPTION-- - -

- Whether or not to escape the dangerous characters <, > and & - as \3C, \3E and \26, respectively. This is can be safely set to false - if the contents of StyleBlocks will be placed in an external stylesheet, - where there is no risk of it being interpreted as HTML. -

---# vim: et sw=4 sts=4 diff --git a/libraries/plugins/IDS/vendors/htmlpurifier/HTMLPurifier/ConfigSchema/schema/FilterParam.ExtractStyleBlocksScope.txt b/libraries/plugins/IDS/vendors/htmlpurifier/HTMLPurifier/ConfigSchema/schema/FilterParam.ExtractStyleBlocksScope.txt deleted file mode 100644 index 3943529..0000000 --- a/libraries/plugins/IDS/vendors/htmlpurifier/HTMLPurifier/ConfigSchema/schema/FilterParam.ExtractStyleBlocksScope.txt +++ /dev/null @@ -1,29 +0,0 @@ -FilterParam.ExtractStyleBlocksScope -TYPE: string/null -VERSION: 3.0.0 -DEFAULT: NULL -ALIASES: Filter.ExtractStyleBlocksScope ---DESCRIPTION-- - -

- If you would like users to be able to define external stylesheets, but - only allow them to specify CSS declarations for a specific node and - prevent them from fiddling with other elements, use this directive. - It accepts any valid CSS selector, and will prepend this to any - CSS declaration extracted from the document. For example, if this - directive is set to #user-content and a user uses the - selector a:hover, the final selector will be - #user-content a:hover. -

-

- The comma shorthand may be used; consider the above example, with - #user-content, #user-content2, the final selector will - be #user-content a:hover, #user-content2 a:hover. -

-

- Warning: It is possible for users to bypass this measure - using a naughty + selector. This is a bug in CSS Tidy 1.3, not HTML - Purifier, and I am working to get it fixed. Until then, HTML Purifier - performs a basic check to prevent this. -

---# vim: et sw=4 sts=4 diff --git a/libraries/plugins/IDS/vendors/htmlpurifier/HTMLPurifier/ConfigSchema/schema/FilterParam.ExtractStyleBlocksTidyImpl.txt b/libraries/plugins/IDS/vendors/htmlpurifier/HTMLPurifier/ConfigSchema/schema/FilterParam.ExtractStyleBlocksTidyImpl.txt deleted file mode 100644 index cafccf8..0000000 --- a/libraries/plugins/IDS/vendors/htmlpurifier/HTMLPurifier/ConfigSchema/schema/FilterParam.ExtractStyleBlocksTidyImpl.txt +++ /dev/null @@ -1,15 +0,0 @@ -FilterParam.ExtractStyleBlocksTidyImpl -TYPE: mixed/null -VERSION: 3.1.0 -DEFAULT: NULL ---DESCRIPTION-- -

- If left NULL, HTML Purifier will attempt to instantiate a csstidy - class to use for internal cleaning. This will usually be good enough. -

-

- However, for trusted user input, you can set this to false to - disable cleaning. In addition, you can supply your own concrete implementation - of Tidy's interface to use, although I don't know why you'd want to do that. -

---# vim: et sw=4 sts=4 diff --git a/libraries/plugins/IDS/vendors/htmlpurifier/HTMLPurifier/ConfigSchema/schema/FilterParam.txt b/libraries/plugins/IDS/vendors/htmlpurifier/HTMLPurifier/ConfigSchema/schema/FilterParam.txt deleted file mode 100644 index dff9784..0000000 --- a/libraries/plugins/IDS/vendors/htmlpurifier/HTMLPurifier/ConfigSchema/schema/FilterParam.txt +++ /dev/null @@ -1,3 +0,0 @@ -FilterParam -DESCRIPTION: Configuration for filters. ---# vim: et sw=4 sts=4 diff --git a/libraries/plugins/IDS/vendors/htmlpurifier/HTMLPurifier/ConfigSchema/schema/HTML.Allowed.txt b/libraries/plugins/IDS/vendors/htmlpurifier/HTMLPurifier/ConfigSchema/schema/HTML.Allowed.txt deleted file mode 100644 index 0b2c106..0000000 --- a/libraries/plugins/IDS/vendors/htmlpurifier/HTMLPurifier/ConfigSchema/schema/HTML.Allowed.txt +++ /dev/null @@ -1,25 +0,0 @@ -HTML.Allowed -TYPE: itext/null -VERSION: 2.0.0 -DEFAULT: NULL ---DESCRIPTION-- - -

- This is a preferred convenience directive that combines - %HTML.AllowedElements and %HTML.AllowedAttributes. - Specify elements and attributes that are allowed using: - element1[attr1|attr2],element2.... For example, - if you would like to only allow paragraphs and links, specify - a[href],p. You can specify attributes that apply - to all elements using an asterisk, e.g. *[lang]. - You can also use newlines instead of commas to separate elements. -

-

- Warning: - All of the constraints on the component directives are still enforced. - The syntax is a subset of TinyMCE's valid_elements - whitelist: directly copy-pasting it here will probably result in - broken whitelists. If %HTML.AllowedElements or %HTML.AllowedAttributes - are set, this directive has no effect. -

---# vim: et sw=4 sts=4 diff --git a/libraries/plugins/IDS/vendors/htmlpurifier/HTMLPurifier/ConfigSchema/schema/HTML.AllowedAttributes.txt b/libraries/plugins/IDS/vendors/htmlpurifier/HTMLPurifier/ConfigSchema/schema/HTML.AllowedAttributes.txt deleted file mode 100644 index fcf093f..0000000 --- a/libraries/plugins/IDS/vendors/htmlpurifier/HTMLPurifier/ConfigSchema/schema/HTML.AllowedAttributes.txt +++ /dev/null @@ -1,19 +0,0 @@ -HTML.AllowedAttributes -TYPE: lookup/null -VERSION: 1.3.0 -DEFAULT: NULL ---DESCRIPTION-- - -

- If HTML Purifier's attribute set is unsatisfactory, overload it! - The syntax is "tag.attr" or "*.attr" for the global attributes - (style, id, class, dir, lang, xml:lang). -

-

- Warning: If another directive conflicts with the - elements here, that directive will win and override. For - example, %HTML.EnableAttrID will take precedence over *.id in this - directive. You must set that directive to true before you can use - IDs at all. -

---# vim: et sw=4 sts=4 diff --git a/libraries/plugins/IDS/vendors/htmlpurifier/HTMLPurifier/ConfigSchema/schema/HTML.AllowedElements.txt b/libraries/plugins/IDS/vendors/htmlpurifier/HTMLPurifier/ConfigSchema/schema/HTML.AllowedElements.txt deleted file mode 100644 index 1d3fa79..0000000 --- a/libraries/plugins/IDS/vendors/htmlpurifier/HTMLPurifier/ConfigSchema/schema/HTML.AllowedElements.txt +++ /dev/null @@ -1,23 +0,0 @@ -HTML.AllowedElements -TYPE: lookup/null -VERSION: 1.3.0 -DEFAULT: NULL ---DESCRIPTION-- -

- If HTML Purifier's tag set is unsatisfactory for your needs, you can - overload it with your own list of tags to allow. If you change - this, you probably also want to change %HTML.AllowedAttributes; see - also %HTML.Allowed which lets you set allowed elements and - attributes at the same time. -

-

- If you attempt to allow an element that HTML Purifier does not know - about, HTML Purifier will raise an error. You will need to manually - tell HTML Purifier about this element by using the - advanced customization features. -

-

- Warning: If another directive conflicts with the - elements here, that directive will win and override. -

---# vim: et sw=4 sts=4 diff --git a/libraries/plugins/IDS/vendors/htmlpurifier/HTMLPurifier/ConfigSchema/schema/HTML.AllowedModules.txt b/libraries/plugins/IDS/vendors/htmlpurifier/HTMLPurifier/ConfigSchema/schema/HTML.AllowedModules.txt deleted file mode 100644 index 5a59a55..0000000 --- a/libraries/plugins/IDS/vendors/htmlpurifier/HTMLPurifier/ConfigSchema/schema/HTML.AllowedModules.txt +++ /dev/null @@ -1,20 +0,0 @@ -HTML.AllowedModules -TYPE: lookup/null -VERSION: 2.0.0 -DEFAULT: NULL ---DESCRIPTION-- - -

- A doctype comes with a set of usual modules to use. Without having - to mucking about with the doctypes, you can quickly activate or - disable these modules by specifying which modules you wish to allow - with this directive. This is most useful for unit testing specific - modules, although end users may find it useful for their own ends. -

-

- If you specify a module that does not exist, the manager will silently - fail to use it, so be careful! User-defined modules are not affected - by this directive. Modules defined in %HTML.CoreModules are not - affected by this directive. -

---# vim: et sw=4 sts=4 diff --git a/libraries/plugins/IDS/vendors/htmlpurifier/HTMLPurifier/ConfigSchema/schema/HTML.Attr.Name.UseCDATA.txt b/libraries/plugins/IDS/vendors/htmlpurifier/HTMLPurifier/ConfigSchema/schema/HTML.Attr.Name.UseCDATA.txt deleted file mode 100644 index 151fb7b..0000000 --- a/libraries/plugins/IDS/vendors/htmlpurifier/HTMLPurifier/ConfigSchema/schema/HTML.Attr.Name.UseCDATA.txt +++ /dev/null @@ -1,11 +0,0 @@ -HTML.Attr.Name.UseCDATA -TYPE: bool -DEFAULT: false -VERSION: 4.0.0 ---DESCRIPTION-- -The W3C specification DTD defines the name attribute to be CDATA, not ID, due -to limitations of DTD. In certain documents, this relaxed behavior is desired, -whether it is to specify duplicate names, or to specify names that would be -illegal IDs (for example, names that begin with a digit.) Set this configuration -directive to true to use the relaxed parsing rules. ---# vim: et sw=4 sts=4 diff --git a/libraries/plugins/IDS/vendors/htmlpurifier/HTMLPurifier/ConfigSchema/schema/HTML.BlockWrapper.txt b/libraries/plugins/IDS/vendors/htmlpurifier/HTMLPurifier/ConfigSchema/schema/HTML.BlockWrapper.txt deleted file mode 100644 index 45ae469..0000000 --- a/libraries/plugins/IDS/vendors/htmlpurifier/HTMLPurifier/ConfigSchema/schema/HTML.BlockWrapper.txt +++ /dev/null @@ -1,18 +0,0 @@ -HTML.BlockWrapper -TYPE: string -VERSION: 1.3.0 -DEFAULT: 'p' ---DESCRIPTION-- - -

- String name of element to wrap inline elements that are inside a block - context. This only occurs in the children of blockquote in strict mode. -

-

- Example: by default value, - <blockquote>Foo</blockquote> would become - <blockquote><p>Foo</p></blockquote>. - The <p> tags can be replaced with whatever you desire, - as long as it is a block level element. -

---# vim: et sw=4 sts=4 diff --git a/libraries/plugins/IDS/vendors/htmlpurifier/HTMLPurifier/ConfigSchema/schema/HTML.CoreModules.txt b/libraries/plugins/IDS/vendors/htmlpurifier/HTMLPurifier/ConfigSchema/schema/HTML.CoreModules.txt deleted file mode 100644 index 5246188..0000000 --- a/libraries/plugins/IDS/vendors/htmlpurifier/HTMLPurifier/ConfigSchema/schema/HTML.CoreModules.txt +++ /dev/null @@ -1,23 +0,0 @@ -HTML.CoreModules -TYPE: lookup -VERSION: 2.0.0 ---DEFAULT-- -array ( - 'Structure' => true, - 'Text' => true, - 'Hypertext' => true, - 'List' => true, - 'NonXMLCommonAttributes' => true, - 'XMLCommonAttributes' => true, - 'CommonAttributes' => true, -) ---DESCRIPTION-- - -

- Certain modularized doctypes (XHTML, namely), have certain modules - that must be included for the doctype to be an conforming document - type: put those modules here. By default, XHTML's core modules - are used. You can set this to a blank array to disable core module - protection, but this is not recommended. -

---# vim: et sw=4 sts=4 diff --git a/libraries/plugins/IDS/vendors/htmlpurifier/HTMLPurifier/ConfigSchema/schema/HTML.CustomDoctype.txt b/libraries/plugins/IDS/vendors/htmlpurifier/HTMLPurifier/ConfigSchema/schema/HTML.CustomDoctype.txt deleted file mode 100644 index a64e3d7..0000000 --- a/libraries/plugins/IDS/vendors/htmlpurifier/HTMLPurifier/ConfigSchema/schema/HTML.CustomDoctype.txt +++ /dev/null @@ -1,9 +0,0 @@ -HTML.CustomDoctype -TYPE: string/null -VERSION: 2.0.1 -DEFAULT: NULL ---DESCRIPTION-- - -A custom doctype for power-users who defined there own document -type. This directive only applies when %HTML.Doctype is blank. ---# vim: et sw=4 sts=4 diff --git a/libraries/plugins/IDS/vendors/htmlpurifier/HTMLPurifier/ConfigSchema/schema/HTML.DefinitionID.txt b/libraries/plugins/IDS/vendors/htmlpurifier/HTMLPurifier/ConfigSchema/schema/HTML.DefinitionID.txt deleted file mode 100644 index 103db75..0000000 --- a/libraries/plugins/IDS/vendors/htmlpurifier/HTMLPurifier/ConfigSchema/schema/HTML.DefinitionID.txt +++ /dev/null @@ -1,33 +0,0 @@ -HTML.DefinitionID -TYPE: string/null -DEFAULT: NULL -VERSION: 2.0.0 ---DESCRIPTION-- - -

- Unique identifier for a custom-built HTML definition. If you edit - the raw version of the HTMLDefinition, introducing changes that the - configuration object does not reflect, you must specify this variable. - If you change your custom edits, you should change this directive, or - clear your cache. Example: -

-
-$config = HTMLPurifier_Config::createDefault();
-$config->set('HTML', 'DefinitionID', '1');
-$def = $config->getHTMLDefinition();
-$def->addAttribute('a', 'tabindex', 'Number');
-
-

- In the above example, the configuration is still at the defaults, but - using the advanced API, an extra attribute has been added. The - configuration object normally has no way of knowing that this change - has taken place, so it needs an extra directive: %HTML.DefinitionID. - If someone else attempts to use the default configuration, these two - pieces of code will not clobber each other in the cache, since one has - an extra directive attached to it. -

-

- You must specify a value to this directive to use the - advanced API features. -

---# vim: et sw=4 sts=4 diff --git a/libraries/plugins/IDS/vendors/htmlpurifier/HTMLPurifier/ConfigSchema/schema/HTML.DefinitionRev.txt b/libraries/plugins/IDS/vendors/htmlpurifier/HTMLPurifier/ConfigSchema/schema/HTML.DefinitionRev.txt deleted file mode 100644 index 229ae02..0000000 --- a/libraries/plugins/IDS/vendors/htmlpurifier/HTMLPurifier/ConfigSchema/schema/HTML.DefinitionRev.txt +++ /dev/null @@ -1,16 +0,0 @@ -HTML.DefinitionRev -TYPE: int -VERSION: 2.0.0 -DEFAULT: 1 ---DESCRIPTION-- - -

- Revision identifier for your custom definition specified in - %HTML.DefinitionID. This serves the same purpose: uniquely identifying - your custom definition, but this one does so in a chronological - context: revision 3 is more up-to-date then revision 2. Thus, when - this gets incremented, the cache handling is smart enough to clean - up any older revisions of your definition as well as flush the - cache. -

---# vim: et sw=4 sts=4 diff --git a/libraries/plugins/IDS/vendors/htmlpurifier/HTMLPurifier/ConfigSchema/schema/HTML.Doctype.txt b/libraries/plugins/IDS/vendors/htmlpurifier/HTMLPurifier/ConfigSchema/schema/HTML.Doctype.txt deleted file mode 100644 index 9dab497..0000000 --- a/libraries/plugins/IDS/vendors/htmlpurifier/HTMLPurifier/ConfigSchema/schema/HTML.Doctype.txt +++ /dev/null @@ -1,11 +0,0 @@ -HTML.Doctype -TYPE: string/null -DEFAULT: NULL ---DESCRIPTION-- -Doctype to use during filtering. Technically speaking this is not actually -a doctype (as it does not identify a corresponding DTD), but we are using -this name for sake of simplicity. When non-blank, this will override any -older directives like %HTML.XHTML or %HTML.Strict. ---ALLOWED-- -'HTML 4.01 Transitional', 'HTML 4.01 Strict', 'XHTML 1.0 Transitional', 'XHTML 1.0 Strict', 'XHTML 1.1' ---# vim: et sw=4 sts=4 diff --git a/libraries/plugins/IDS/vendors/htmlpurifier/HTMLPurifier/ConfigSchema/schema/HTML.FlashAllowFullScreen.txt b/libraries/plugins/IDS/vendors/htmlpurifier/HTMLPurifier/ConfigSchema/schema/HTML.FlashAllowFullScreen.txt deleted file mode 100644 index 7878dc0..0000000 --- a/libraries/plugins/IDS/vendors/htmlpurifier/HTMLPurifier/ConfigSchema/schema/HTML.FlashAllowFullScreen.txt +++ /dev/null @@ -1,11 +0,0 @@ -HTML.FlashAllowFullScreen -TYPE: bool -VERSION: 4.2.0 -DEFAULT: false ---DESCRIPTION-- -

- Whether or not to permit embedded Flash content from - %HTML.SafeObject to expand to the full screen. Corresponds to - the allowFullScreen parameter. -

---# vim: et sw=4 sts=4 diff --git a/libraries/plugins/IDS/vendors/htmlpurifier/HTMLPurifier/ConfigSchema/schema/HTML.ForbiddenAttributes.txt b/libraries/plugins/IDS/vendors/htmlpurifier/HTMLPurifier/ConfigSchema/schema/HTML.ForbiddenAttributes.txt deleted file mode 100644 index 57358f9..0000000 --- a/libraries/plugins/IDS/vendors/htmlpurifier/HTMLPurifier/ConfigSchema/schema/HTML.ForbiddenAttributes.txt +++ /dev/null @@ -1,21 +0,0 @@ -HTML.ForbiddenAttributes -TYPE: lookup -VERSION: 3.1.0 -DEFAULT: array() ---DESCRIPTION-- -

- While this directive is similar to %HTML.AllowedAttributes, for - forwards-compatibility with XML, this attribute has a different syntax. Instead of - tag.attr, use tag@attr. To disallow href - attributes in a tags, set this directive to - a@href. You can also disallow an attribute globally with - attr or *@attr (either syntax is fine; the latter - is provided for consistency with %HTML.AllowedAttributes). -

-

- Warning: This directive complements %HTML.ForbiddenElements, - accordingly, check - out that directive for a discussion of why you - should think twice before using this directive. -

---# vim: et sw=4 sts=4 diff --git a/libraries/plugins/IDS/vendors/htmlpurifier/HTMLPurifier/ConfigSchema/schema/HTML.ForbiddenElements.txt b/libraries/plugins/IDS/vendors/htmlpurifier/HTMLPurifier/ConfigSchema/schema/HTML.ForbiddenElements.txt deleted file mode 100644 index 93a53e1..0000000 --- a/libraries/plugins/IDS/vendors/htmlpurifier/HTMLPurifier/ConfigSchema/schema/HTML.ForbiddenElements.txt +++ /dev/null @@ -1,20 +0,0 @@ -HTML.ForbiddenElements -TYPE: lookup -VERSION: 3.1.0 -DEFAULT: array() ---DESCRIPTION-- -

- This was, perhaps, the most requested feature ever in HTML - Purifier. Please don't abuse it! This is the logical inverse of - %HTML.AllowedElements, and it will override that directive, or any - other directive. -

-

- If possible, %HTML.Allowed is recommended over this directive, because it - can sometimes be difficult to tell whether or not you've forbidden all of - the behavior you would like to disallow. If you forbid img - with the expectation of preventing images on your site, you'll be in for - a nasty surprise when people start using the background-image - CSS property. -

---# vim: et sw=4 sts=4 diff --git a/libraries/plugins/IDS/vendors/htmlpurifier/HTMLPurifier/ConfigSchema/schema/HTML.MaxImgLength.txt b/libraries/plugins/IDS/vendors/htmlpurifier/HTMLPurifier/ConfigSchema/schema/HTML.MaxImgLength.txt deleted file mode 100644 index e424c38..0000000 --- a/libraries/plugins/IDS/vendors/htmlpurifier/HTMLPurifier/ConfigSchema/schema/HTML.MaxImgLength.txt +++ /dev/null @@ -1,14 +0,0 @@ -HTML.MaxImgLength -TYPE: int/null -DEFAULT: 1200 -VERSION: 3.1.1 ---DESCRIPTION-- -

- This directive controls the maximum number of pixels in the width and - height attributes in img tags. This is - in place to prevent imagecrash attacks, disable with null at your own risk. - This directive is similar to %CSS.MaxImgLength, and both should be - concurrently edited, although there are - subtle differences in the input format (the HTML max is an integer). -

---# vim: et sw=4 sts=4 diff --git a/libraries/plugins/IDS/vendors/htmlpurifier/HTMLPurifier/ConfigSchema/schema/HTML.Nofollow.txt b/libraries/plugins/IDS/vendors/htmlpurifier/HTMLPurifier/ConfigSchema/schema/HTML.Nofollow.txt deleted file mode 100644 index 700b309..0000000 --- a/libraries/plugins/IDS/vendors/htmlpurifier/HTMLPurifier/ConfigSchema/schema/HTML.Nofollow.txt +++ /dev/null @@ -1,7 +0,0 @@ -HTML.Nofollow -TYPE: bool -VERSION: 4.3.0 -DEFAULT: FALSE ---DESCRIPTION-- -If enabled, nofollow rel attributes are added to all outgoing links. ---# vim: et sw=4 sts=4 diff --git a/libraries/plugins/IDS/vendors/htmlpurifier/HTMLPurifier/ConfigSchema/schema/HTML.Parent.txt b/libraries/plugins/IDS/vendors/htmlpurifier/HTMLPurifier/ConfigSchema/schema/HTML.Parent.txt deleted file mode 100644 index 62e8e16..0000000 --- a/libraries/plugins/IDS/vendors/htmlpurifier/HTMLPurifier/ConfigSchema/schema/HTML.Parent.txt +++ /dev/null @@ -1,12 +0,0 @@ -HTML.Parent -TYPE: string -VERSION: 1.3.0 -DEFAULT: 'div' ---DESCRIPTION-- - -

- String name of element that HTML fragment passed to library will be - inserted in. An interesting variation would be using span as the - parent element, meaning that only inline tags would be allowed. -

---# vim: et sw=4 sts=4 diff --git a/libraries/plugins/IDS/vendors/htmlpurifier/HTMLPurifier/ConfigSchema/schema/HTML.Proprietary.txt b/libraries/plugins/IDS/vendors/htmlpurifier/HTMLPurifier/ConfigSchema/schema/HTML.Proprietary.txt deleted file mode 100644 index dfb7204..0000000 --- a/libraries/plugins/IDS/vendors/htmlpurifier/HTMLPurifier/ConfigSchema/schema/HTML.Proprietary.txt +++ /dev/null @@ -1,12 +0,0 @@ -HTML.Proprietary -TYPE: bool -VERSION: 3.1.0 -DEFAULT: false ---DESCRIPTION-- -

- Whether or not to allow proprietary elements and attributes in your - documents, as per HTMLPurifier_HTMLModule_Proprietary. - Warning: This can cause your documents to stop - validating! -

---# vim: et sw=4 sts=4 diff --git a/libraries/plugins/IDS/vendors/htmlpurifier/HTMLPurifier/ConfigSchema/schema/HTML.SafeEmbed.txt b/libraries/plugins/IDS/vendors/htmlpurifier/HTMLPurifier/ConfigSchema/schema/HTML.SafeEmbed.txt deleted file mode 100644 index cdda09a..0000000 --- a/libraries/plugins/IDS/vendors/htmlpurifier/HTMLPurifier/ConfigSchema/schema/HTML.SafeEmbed.txt +++ /dev/null @@ -1,13 +0,0 @@ -HTML.SafeEmbed -TYPE: bool -VERSION: 3.1.1 -DEFAULT: false ---DESCRIPTION-- -

- Whether or not to permit embed tags in documents, with a number of extra - security features added to prevent script execution. This is similar to - what websites like MySpace do to embed tags. Embed is a proprietary - element and will cause your website to stop validating; you should - see if you can use %Output.FlashCompat with %HTML.SafeObject instead - first.

---# vim: et sw=4 sts=4 diff --git a/libraries/plugins/IDS/vendors/htmlpurifier/HTMLPurifier/ConfigSchema/schema/HTML.SafeObject.txt b/libraries/plugins/IDS/vendors/htmlpurifier/HTMLPurifier/ConfigSchema/schema/HTML.SafeObject.txt deleted file mode 100644 index ceb342e..0000000 --- a/libraries/plugins/IDS/vendors/htmlpurifier/HTMLPurifier/ConfigSchema/schema/HTML.SafeObject.txt +++ /dev/null @@ -1,13 +0,0 @@ -HTML.SafeObject -TYPE: bool -VERSION: 3.1.1 -DEFAULT: false ---DESCRIPTION-- -

- Whether or not to permit object tags in documents, with a number of extra - security features added to prevent script execution. This is similar to - what websites like MySpace do to object tags. You should also enable - %Output.FlashCompat in order to generate Internet Explorer - compatibility code for your object tags. -

---# vim: et sw=4 sts=4 diff --git a/libraries/plugins/IDS/vendors/htmlpurifier/HTMLPurifier/ConfigSchema/schema/HTML.Strict.txt b/libraries/plugins/IDS/vendors/htmlpurifier/HTMLPurifier/ConfigSchema/schema/HTML.Strict.txt deleted file mode 100644 index a8b1de5..0000000 --- a/libraries/plugins/IDS/vendors/htmlpurifier/HTMLPurifier/ConfigSchema/schema/HTML.Strict.txt +++ /dev/null @@ -1,9 +0,0 @@ -HTML.Strict -TYPE: bool -VERSION: 1.3.0 -DEFAULT: false -DEPRECATED-VERSION: 1.7.0 -DEPRECATED-USE: HTML.Doctype ---DESCRIPTION-- -Determines whether or not to use Transitional (loose) or Strict rulesets. ---# vim: et sw=4 sts=4 diff --git a/libraries/plugins/IDS/vendors/htmlpurifier/HTMLPurifier/ConfigSchema/schema/HTML.TidyAdd.txt b/libraries/plugins/IDS/vendors/htmlpurifier/HTMLPurifier/ConfigSchema/schema/HTML.TidyAdd.txt deleted file mode 100644 index b4c271b..0000000 --- a/libraries/plugins/IDS/vendors/htmlpurifier/HTMLPurifier/ConfigSchema/schema/HTML.TidyAdd.txt +++ /dev/null @@ -1,8 +0,0 @@ -HTML.TidyAdd -TYPE: lookup -VERSION: 2.0.0 -DEFAULT: array() ---DESCRIPTION-- - -Fixes to add to the default set of Tidy fixes as per your level. ---# vim: et sw=4 sts=4 diff --git a/libraries/plugins/IDS/vendors/htmlpurifier/HTMLPurifier/ConfigSchema/schema/HTML.TidyLevel.txt b/libraries/plugins/IDS/vendors/htmlpurifier/HTMLPurifier/ConfigSchema/schema/HTML.TidyLevel.txt deleted file mode 100644 index 4186ccd..0000000 --- a/libraries/plugins/IDS/vendors/htmlpurifier/HTMLPurifier/ConfigSchema/schema/HTML.TidyLevel.txt +++ /dev/null @@ -1,24 +0,0 @@ -HTML.TidyLevel -TYPE: string -VERSION: 2.0.0 -DEFAULT: 'medium' ---DESCRIPTION-- - -

General level of cleanliness the Tidy module should enforce. -There are four allowed values:

-
-
none
-
No extra tidying should be done
-
light
-
Only fix elements that would be discarded otherwise due to - lack of support in doctype
-
medium
-
Enforce best practices
-
heavy
-
Transform all deprecated elements and attributes to standards - compliant equivalents
-
- ---ALLOWED-- -'none', 'light', 'medium', 'heavy' ---# vim: et sw=4 sts=4 diff --git a/libraries/plugins/IDS/vendors/htmlpurifier/HTMLPurifier/ConfigSchema/schema/HTML.TidyRemove.txt b/libraries/plugins/IDS/vendors/htmlpurifier/HTMLPurifier/ConfigSchema/schema/HTML.TidyRemove.txt deleted file mode 100644 index 996762b..0000000 --- a/libraries/plugins/IDS/vendors/htmlpurifier/HTMLPurifier/ConfigSchema/schema/HTML.TidyRemove.txt +++ /dev/null @@ -1,8 +0,0 @@ -HTML.TidyRemove -TYPE: lookup -VERSION: 2.0.0 -DEFAULT: array() ---DESCRIPTION-- - -Fixes to remove from the default set of Tidy fixes as per your level. ---# vim: et sw=4 sts=4 diff --git a/libraries/plugins/IDS/vendors/htmlpurifier/HTMLPurifier/ConfigSchema/schema/HTML.Trusted.txt b/libraries/plugins/IDS/vendors/htmlpurifier/HTMLPurifier/ConfigSchema/schema/HTML.Trusted.txt deleted file mode 100644 index 1db9237..0000000 --- a/libraries/plugins/IDS/vendors/htmlpurifier/HTMLPurifier/ConfigSchema/schema/HTML.Trusted.txt +++ /dev/null @@ -1,9 +0,0 @@ -HTML.Trusted -TYPE: bool -VERSION: 2.0.0 -DEFAULT: false ---DESCRIPTION-- -Indicates whether or not the user input is trusted or not. If the input is -trusted, a more expansive set of allowed tags and attributes will be used. -See also %CSS.Trusted. ---# vim: et sw=4 sts=4 diff --git a/libraries/plugins/IDS/vendors/htmlpurifier/HTMLPurifier/ConfigSchema/schema/HTML.XHTML.txt b/libraries/plugins/IDS/vendors/htmlpurifier/HTMLPurifier/ConfigSchema/schema/HTML.XHTML.txt deleted file mode 100644 index 2a47e38..0000000 --- a/libraries/plugins/IDS/vendors/htmlpurifier/HTMLPurifier/ConfigSchema/schema/HTML.XHTML.txt +++ /dev/null @@ -1,11 +0,0 @@ -HTML.XHTML -TYPE: bool -DEFAULT: true -VERSION: 1.1.0 -DEPRECATED-VERSION: 1.7.0 -DEPRECATED-USE: HTML.Doctype ---DESCRIPTION-- -Determines whether or not output is XHTML 1.0 or HTML 4.01 flavor. ---ALIASES-- -Core.XHTML ---# vim: et sw=4 sts=4 diff --git a/libraries/plugins/IDS/vendors/htmlpurifier/HTMLPurifier/ConfigSchema/schema/HTML.txt b/libraries/plugins/IDS/vendors/htmlpurifier/HTMLPurifier/ConfigSchema/schema/HTML.txt deleted file mode 100644 index f32ceb5..0000000 --- a/libraries/plugins/IDS/vendors/htmlpurifier/HTMLPurifier/ConfigSchema/schema/HTML.txt +++ /dev/null @@ -1,3 +0,0 @@ -HTML -DESCRIPTION: Configuration regarding allowed HTML. ---# vim: et sw=4 sts=4 diff --git a/libraries/plugins/IDS/vendors/htmlpurifier/HTMLPurifier/ConfigSchema/schema/Output.CommentScriptContents.txt b/libraries/plugins/IDS/vendors/htmlpurifier/HTMLPurifier/ConfigSchema/schema/Output.CommentScriptContents.txt deleted file mode 100644 index 08921fd..0000000 --- a/libraries/plugins/IDS/vendors/htmlpurifier/HTMLPurifier/ConfigSchema/schema/Output.CommentScriptContents.txt +++ /dev/null @@ -1,10 +0,0 @@ -Output.CommentScriptContents -TYPE: bool -VERSION: 2.0.0 -DEFAULT: true ---DESCRIPTION-- -Determines whether or not HTML Purifier should attempt to fix up the -contents of script tags for legacy browsers with comments. ---ALIASES-- -Core.CommentScriptContents ---# vim: et sw=4 sts=4 diff --git a/libraries/plugins/IDS/vendors/htmlpurifier/HTMLPurifier/ConfigSchema/schema/Output.FixInnerHTML.txt b/libraries/plugins/IDS/vendors/htmlpurifier/HTMLPurifier/ConfigSchema/schema/Output.FixInnerHTML.txt deleted file mode 100644 index d6f0d9f..0000000 --- a/libraries/plugins/IDS/vendors/htmlpurifier/HTMLPurifier/ConfigSchema/schema/Output.FixInnerHTML.txt +++ /dev/null @@ -1,15 +0,0 @@ -Output.FixInnerHTML -TYPE: bool -VERSION: 4.3.0 -DEFAULT: true ---DESCRIPTION-- -

- If true, HTML Purifier will protect against Internet Explorer's - mishandling of the innerHTML attribute by appending - a space to any attribute that does not contain angled brackets, spaces - or quotes, but contains a backtick. This slightly changes the - semantics of any given attribute, so if this is unacceptable and - you do not use innerHTML on any of your pages, you can - turn this directive off. -

---# vim: et sw=4 sts=4 diff --git a/libraries/plugins/IDS/vendors/htmlpurifier/HTMLPurifier/ConfigSchema/schema/Output.FlashCompat.txt b/libraries/plugins/IDS/vendors/htmlpurifier/HTMLPurifier/ConfigSchema/schema/Output.FlashCompat.txt deleted file mode 100644 index 93398e8..0000000 --- a/libraries/plugins/IDS/vendors/htmlpurifier/HTMLPurifier/ConfigSchema/schema/Output.FlashCompat.txt +++ /dev/null @@ -1,11 +0,0 @@ -Output.FlashCompat -TYPE: bool -VERSION: 4.1.0 -DEFAULT: false ---DESCRIPTION-- -

- If true, HTML Purifier will generate Internet Explorer compatibility - code for all object code. This is highly recommended if you enable - %HTML.SafeObject. -

---# vim: et sw=4 sts=4 diff --git a/libraries/plugins/IDS/vendors/htmlpurifier/HTMLPurifier/ConfigSchema/schema/Output.Newline.txt b/libraries/plugins/IDS/vendors/htmlpurifier/HTMLPurifier/ConfigSchema/schema/Output.Newline.txt deleted file mode 100644 index 79f8ad8..0000000 --- a/libraries/plugins/IDS/vendors/htmlpurifier/HTMLPurifier/ConfigSchema/schema/Output.Newline.txt +++ /dev/null @@ -1,13 +0,0 @@ -Output.Newline -TYPE: string/null -VERSION: 2.0.1 -DEFAULT: NULL ---DESCRIPTION-- - -

- Newline string to format final output with. If left null, HTML Purifier - will auto-detect the default newline type of the system and use that; - you can manually override it here. Remember, \r\n is Windows, \r - is Mac, and \n is Unix. -

---# vim: et sw=4 sts=4 diff --git a/libraries/plugins/IDS/vendors/htmlpurifier/HTMLPurifier/ConfigSchema/schema/Output.SortAttr.txt b/libraries/plugins/IDS/vendors/htmlpurifier/HTMLPurifier/ConfigSchema/schema/Output.SortAttr.txt deleted file mode 100644 index 232b023..0000000 --- a/libraries/plugins/IDS/vendors/htmlpurifier/HTMLPurifier/ConfigSchema/schema/Output.SortAttr.txt +++ /dev/null @@ -1,14 +0,0 @@ -Output.SortAttr -TYPE: bool -VERSION: 3.2.0 -DEFAULT: false ---DESCRIPTION-- -

- If true, HTML Purifier will sort attributes by name before writing them back - to the document, converting a tag like: <el b="" a="" c="" /> - to <el a="" b="" c="" />. This is a workaround for - a bug in FCKeditor which causes it to swap attributes order, adding noise - to text diffs. If you're not seeing this bug, chances are, you don't need - this directive. -

---# vim: et sw=4 sts=4 diff --git a/libraries/plugins/IDS/vendors/htmlpurifier/HTMLPurifier/ConfigSchema/schema/Output.TidyFormat.txt b/libraries/plugins/IDS/vendors/htmlpurifier/HTMLPurifier/ConfigSchema/schema/Output.TidyFormat.txt deleted file mode 100644 index 06bab00..0000000 --- a/libraries/plugins/IDS/vendors/htmlpurifier/HTMLPurifier/ConfigSchema/schema/Output.TidyFormat.txt +++ /dev/null @@ -1,25 +0,0 @@ -Output.TidyFormat -TYPE: bool -VERSION: 1.1.1 -DEFAULT: false ---DESCRIPTION-- -

- Determines whether or not to run Tidy on the final output for pretty - formatting reasons, such as indentation and wrap. -

-

- This can greatly improve readability for editors who are hand-editing - the HTML, but is by no means necessary as HTML Purifier has already - fixed all major errors the HTML may have had. Tidy is a non-default - extension, and this directive will silently fail if Tidy is not - available. -

-

- If you are looking to make the overall look of your page's source - better, I recommend running Tidy on the entire page rather than just - user-content (after all, the indentation relative to the containing - blocks will be incorrect). -

---ALIASES-- -Core.TidyFormat ---# vim: et sw=4 sts=4 diff --git a/libraries/plugins/IDS/vendors/htmlpurifier/HTMLPurifier/ConfigSchema/schema/Output.txt b/libraries/plugins/IDS/vendors/htmlpurifier/HTMLPurifier/ConfigSchema/schema/Output.txt deleted file mode 100644 index 7849d60..0000000 --- a/libraries/plugins/IDS/vendors/htmlpurifier/HTMLPurifier/ConfigSchema/schema/Output.txt +++ /dev/null @@ -1,3 +0,0 @@ -Output -DESCRIPTION: Configuration relating to the generation of (X)HTML. ---# vim: et sw=4 sts=4 diff --git a/libraries/plugins/IDS/vendors/htmlpurifier/HTMLPurifier/ConfigSchema/schema/Test.ForceNoIconv.txt b/libraries/plugins/IDS/vendors/htmlpurifier/HTMLPurifier/ConfigSchema/schema/Test.ForceNoIconv.txt deleted file mode 100644 index 071bc02..0000000 --- a/libraries/plugins/IDS/vendors/htmlpurifier/HTMLPurifier/ConfigSchema/schema/Test.ForceNoIconv.txt +++ /dev/null @@ -1,7 +0,0 @@ -Test.ForceNoIconv -TYPE: bool -DEFAULT: false ---DESCRIPTION-- -When set to true, HTMLPurifier_Encoder will act as if iconv does not exist -and use only pure PHP implementations. ---# vim: et sw=4 sts=4 diff --git a/libraries/plugins/IDS/vendors/htmlpurifier/HTMLPurifier/ConfigSchema/schema/Test.txt b/libraries/plugins/IDS/vendors/htmlpurifier/HTMLPurifier/ConfigSchema/schema/Test.txt deleted file mode 100644 index 5025f9d..0000000 --- a/libraries/plugins/IDS/vendors/htmlpurifier/HTMLPurifier/ConfigSchema/schema/Test.txt +++ /dev/null @@ -1,3 +0,0 @@ -Test -DESCRIPTION: Developer testing configuration for our unit tests. ---# vim: et sw=4 sts=4 diff --git a/libraries/plugins/IDS/vendors/htmlpurifier/HTMLPurifier/ConfigSchema/schema/URI.AllowedSchemes.txt b/libraries/plugins/IDS/vendors/htmlpurifier/HTMLPurifier/ConfigSchema/schema/URI.AllowedSchemes.txt deleted file mode 100644 index 666635a..0000000 --- a/libraries/plugins/IDS/vendors/htmlpurifier/HTMLPurifier/ConfigSchema/schema/URI.AllowedSchemes.txt +++ /dev/null @@ -1,17 +0,0 @@ -URI.AllowedSchemes -TYPE: lookup ---DEFAULT-- -array ( - 'http' => true, - 'https' => true, - 'mailto' => true, - 'ftp' => true, - 'nntp' => true, - 'news' => true, -) ---DESCRIPTION-- -Whitelist that defines the schemes that a URI is allowed to have. This -prevents XSS attacks from using pseudo-schemes like javascript or mocha. -There is also support for the data and file -URI schemes, but they are not enabled by default. ---# vim: et sw=4 sts=4 diff --git a/libraries/plugins/IDS/vendors/htmlpurifier/HTMLPurifier/ConfigSchema/schema/URI.Base.txt b/libraries/plugins/IDS/vendors/htmlpurifier/HTMLPurifier/ConfigSchema/schema/URI.Base.txt deleted file mode 100644 index 876f068..0000000 --- a/libraries/plugins/IDS/vendors/htmlpurifier/HTMLPurifier/ConfigSchema/schema/URI.Base.txt +++ /dev/null @@ -1,17 +0,0 @@ -URI.Base -TYPE: string/null -VERSION: 2.1.0 -DEFAULT: NULL ---DESCRIPTION-- - -

- The base URI is the URI of the document this purified HTML will be - inserted into. This information is important if HTML Purifier needs - to calculate absolute URIs from relative URIs, such as when %URI.MakeAbsolute - is on. You may use a non-absolute URI for this value, but behavior - may vary (%URI.MakeAbsolute deals nicely with both absolute and - relative paths, but forwards-compatibility is not guaranteed). - Warning: If set, the scheme on this URI - overrides the one specified by %URI.DefaultScheme. -

---# vim: et sw=4 sts=4 diff --git a/libraries/plugins/IDS/vendors/htmlpurifier/HTMLPurifier/ConfigSchema/schema/URI.DefaultScheme.txt b/libraries/plugins/IDS/vendors/htmlpurifier/HTMLPurifier/ConfigSchema/schema/URI.DefaultScheme.txt deleted file mode 100644 index 728e378..0000000 --- a/libraries/plugins/IDS/vendors/htmlpurifier/HTMLPurifier/ConfigSchema/schema/URI.DefaultScheme.txt +++ /dev/null @@ -1,10 +0,0 @@ -URI.DefaultScheme -TYPE: string -DEFAULT: 'http' ---DESCRIPTION-- - -

- Defines through what scheme the output will be served, in order to - select the proper object validator when no scheme information is present. -

---# vim: et sw=4 sts=4 diff --git a/libraries/plugins/IDS/vendors/htmlpurifier/HTMLPurifier/ConfigSchema/schema/URI.DefinitionID.txt b/libraries/plugins/IDS/vendors/htmlpurifier/HTMLPurifier/ConfigSchema/schema/URI.DefinitionID.txt deleted file mode 100644 index f05312b..0000000 --- a/libraries/plugins/IDS/vendors/htmlpurifier/HTMLPurifier/ConfigSchema/schema/URI.DefinitionID.txt +++ /dev/null @@ -1,11 +0,0 @@ -URI.DefinitionID -TYPE: string/null -VERSION: 2.1.0 -DEFAULT: NULL ---DESCRIPTION-- - -

- Unique identifier for a custom-built URI definition. If you want - to add custom URIFilters, you must specify this value. -

---# vim: et sw=4 sts=4 diff --git a/libraries/plugins/IDS/vendors/htmlpurifier/HTMLPurifier/ConfigSchema/schema/URI.DefinitionRev.txt b/libraries/plugins/IDS/vendors/htmlpurifier/HTMLPurifier/ConfigSchema/schema/URI.DefinitionRev.txt deleted file mode 100644 index 80cfea9..0000000 --- a/libraries/plugins/IDS/vendors/htmlpurifier/HTMLPurifier/ConfigSchema/schema/URI.DefinitionRev.txt +++ /dev/null @@ -1,11 +0,0 @@ -URI.DefinitionRev -TYPE: int -VERSION: 2.1.0 -DEFAULT: 1 ---DESCRIPTION-- - -

- Revision identifier for your custom definition. See - %HTML.DefinitionRev for details. -

---# vim: et sw=4 sts=4 diff --git a/libraries/plugins/IDS/vendors/htmlpurifier/HTMLPurifier/ConfigSchema/schema/URI.Disable.txt b/libraries/plugins/IDS/vendors/htmlpurifier/HTMLPurifier/ConfigSchema/schema/URI.Disable.txt deleted file mode 100644 index 71ce025..0000000 --- a/libraries/plugins/IDS/vendors/htmlpurifier/HTMLPurifier/ConfigSchema/schema/URI.Disable.txt +++ /dev/null @@ -1,14 +0,0 @@ -URI.Disable -TYPE: bool -VERSION: 1.3.0 -DEFAULT: false ---DESCRIPTION-- - -

- Disables all URIs in all forms. Not sure why you'd want to do that - (after all, the Internet's founded on the notion of a hyperlink). -

- ---ALIASES-- -Attr.DisableURI ---# vim: et sw=4 sts=4 diff --git a/libraries/plugins/IDS/vendors/htmlpurifier/HTMLPurifier/ConfigSchema/schema/URI.DisableExternal.txt b/libraries/plugins/IDS/vendors/htmlpurifier/HTMLPurifier/ConfigSchema/schema/URI.DisableExternal.txt deleted file mode 100644 index 13c122c..0000000 --- a/libraries/plugins/IDS/vendors/htmlpurifier/HTMLPurifier/ConfigSchema/schema/URI.DisableExternal.txt +++ /dev/null @@ -1,11 +0,0 @@ -URI.DisableExternal -TYPE: bool -VERSION: 1.2.0 -DEFAULT: false ---DESCRIPTION-- -Disables links to external websites. This is a highly effective anti-spam -and anti-pagerank-leech measure, but comes at a hefty price: nolinks or -images outside of your domain will be allowed. Non-linkified URIs will -still be preserved. If you want to be able to link to subdomains or use -absolute URIs, specify %URI.Host for your website. ---# vim: et sw=4 sts=4 diff --git a/libraries/plugins/IDS/vendors/htmlpurifier/HTMLPurifier/ConfigSchema/schema/URI.DisableExternalResources.txt b/libraries/plugins/IDS/vendors/htmlpurifier/HTMLPurifier/ConfigSchema/schema/URI.DisableExternalResources.txt deleted file mode 100644 index abcc1ef..0000000 --- a/libraries/plugins/IDS/vendors/htmlpurifier/HTMLPurifier/ConfigSchema/schema/URI.DisableExternalResources.txt +++ /dev/null @@ -1,13 +0,0 @@ -URI.DisableExternalResources -TYPE: bool -VERSION: 1.3.0 -DEFAULT: false ---DESCRIPTION-- -Disables the embedding of external resources, preventing users from -embedding things like images from other hosts. This prevents access -tracking (good for email viewers), bandwidth leeching, cross-site request -forging, goatse.cx posting, and other nasties, but also results in a loss -of end-user functionality (they can't directly post a pic they posted from -Flickr anymore). Use it if you don't have a robust user-content moderation -team. ---# vim: et sw=4 sts=4 diff --git a/libraries/plugins/IDS/vendors/htmlpurifier/HTMLPurifier/ConfigSchema/schema/URI.DisableResources.txt b/libraries/plugins/IDS/vendors/htmlpurifier/HTMLPurifier/ConfigSchema/schema/URI.DisableResources.txt deleted file mode 100644 index f891de4..0000000 --- a/libraries/plugins/IDS/vendors/htmlpurifier/HTMLPurifier/ConfigSchema/schema/URI.DisableResources.txt +++ /dev/null @@ -1,15 +0,0 @@ -URI.DisableResources -TYPE: bool -VERSION: 4.2.0 -DEFAULT: false ---DESCRIPTION-- -

- Disables embedding resources, essentially meaning no pictures. You can - still link to them though. See %URI.DisableExternalResources for why - this might be a good idea. -

-

- Note: While this directive has been available since 1.3.0, - it didn't actually start doing anything until 4.2.0. -

---# vim: et sw=4 sts=4 diff --git a/libraries/plugins/IDS/vendors/htmlpurifier/HTMLPurifier/ConfigSchema/schema/URI.Host.txt b/libraries/plugins/IDS/vendors/htmlpurifier/HTMLPurifier/ConfigSchema/schema/URI.Host.txt deleted file mode 100644 index ee83b12..0000000 --- a/libraries/plugins/IDS/vendors/htmlpurifier/HTMLPurifier/ConfigSchema/schema/URI.Host.txt +++ /dev/null @@ -1,19 +0,0 @@ -URI.Host -TYPE: string/null -VERSION: 1.2.0 -DEFAULT: NULL ---DESCRIPTION-- - -

- Defines the domain name of the server, so we can determine whether or - an absolute URI is from your website or not. Not strictly necessary, - as users should be using relative URIs to reference resources on your - website. It will, however, let you use absolute URIs to link to - subdomains of the domain you post here: i.e. example.com will allow - sub.example.com. However, higher up domains will still be excluded: - if you set %URI.Host to sub.example.com, example.com will be blocked. - Note: This directive overrides %URI.Base because - a given page may be on a sub-domain, but you wish HTML Purifier to be - more relaxed and allow some of the parent domains too. -

---# vim: et sw=4 sts=4 diff --git a/libraries/plugins/IDS/vendors/htmlpurifier/HTMLPurifier/ConfigSchema/schema/URI.HostBlacklist.txt b/libraries/plugins/IDS/vendors/htmlpurifier/HTMLPurifier/ConfigSchema/schema/URI.HostBlacklist.txt deleted file mode 100644 index 0b6df76..0000000 --- a/libraries/plugins/IDS/vendors/htmlpurifier/HTMLPurifier/ConfigSchema/schema/URI.HostBlacklist.txt +++ /dev/null @@ -1,9 +0,0 @@ -URI.HostBlacklist -TYPE: list -VERSION: 1.3.0 -DEFAULT: array() ---DESCRIPTION-- -List of strings that are forbidden in the host of any URI. Use it to kill -domain names of spam, etc. Note that it will catch anything in the domain, -so moo.com will catch moo.com.example.com. ---# vim: et sw=4 sts=4 diff --git a/libraries/plugins/IDS/vendors/htmlpurifier/HTMLPurifier/ConfigSchema/schema/URI.MakeAbsolute.txt b/libraries/plugins/IDS/vendors/htmlpurifier/HTMLPurifier/ConfigSchema/schema/URI.MakeAbsolute.txt deleted file mode 100644 index 4214900..0000000 --- a/libraries/plugins/IDS/vendors/htmlpurifier/HTMLPurifier/ConfigSchema/schema/URI.MakeAbsolute.txt +++ /dev/null @@ -1,13 +0,0 @@ -URI.MakeAbsolute -TYPE: bool -VERSION: 2.1.0 -DEFAULT: false ---DESCRIPTION-- - -

- Converts all URIs into absolute forms. This is useful when the HTML - being filtered assumes a specific base path, but will actually be - viewed in a different context (and setting an alternate base URI is - not possible). %URI.Base must be set for this directive to work. -

---# vim: et sw=4 sts=4 diff --git a/libraries/plugins/IDS/vendors/htmlpurifier/HTMLPurifier/ConfigSchema/schema/URI.Munge.txt b/libraries/plugins/IDS/vendors/htmlpurifier/HTMLPurifier/ConfigSchema/schema/URI.Munge.txt deleted file mode 100644 index 58c81dc..0000000 --- a/libraries/plugins/IDS/vendors/htmlpurifier/HTMLPurifier/ConfigSchema/schema/URI.Munge.txt +++ /dev/null @@ -1,83 +0,0 @@ -URI.Munge -TYPE: string/null -VERSION: 1.3.0 -DEFAULT: NULL ---DESCRIPTION-- - -

- Munges all browsable (usually http, https and ftp) - absolute URIs into another URI, usually a URI redirection service. - This directive accepts a URI, formatted with a %s where - the url-encoded original URI should be inserted (sample: - http://www.google.com/url?q=%s). -

-

- Uses for this directive: -

-
    -
  • - Prevent PageRank leaks, while being fairly transparent - to users (you may also want to add some client side JavaScript to - override the text in the statusbar). Notice: - Many security experts believe that this form of protection does not deter spam-bots. -
  • -
  • - Redirect users to a splash page telling them they are leaving your - website. While this is poor usability practice, it is often mandated - in corporate environments. -
  • -
-

- Prior to HTML Purifier 3.1.1, this directive also enabled the munging - of browsable external resources, which could break things if your redirection - script was a splash page or used meta tags. To revert to - previous behavior, please use %URI.MungeResources. -

-

- You may want to also use %URI.MungeSecretKey along with this directive - in order to enforce what URIs your redirector script allows. Open - redirector scripts can be a security risk and negatively affect the - reputation of your domain name. -

-

- Starting with HTML Purifier 3.1.1, there is also these substitutions: -

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
KeyDescriptionExample <a href="">
%r1 - The URI embeds a resource
(blank) - The URI is merely a link
%nThe name of the tag this URI came froma
%mThe name of the attribute this URI came fromhref
%pThe name of the CSS property this URI came from, or blank if irrelevant
-

- Admittedly, these letters are somewhat arbitrary; the only stipulation - was that they couldn't be a through f. r is for resource (I would have preferred - e, but you take what you can get), n is for name, m - was picked because it came after n (and I couldn't use a), p is for - property. -

---# vim: et sw=4 sts=4 diff --git a/libraries/plugins/IDS/vendors/htmlpurifier/HTMLPurifier/ConfigSchema/schema/URI.MungeResources.txt b/libraries/plugins/IDS/vendors/htmlpurifier/HTMLPurifier/ConfigSchema/schema/URI.MungeResources.txt deleted file mode 100644 index 6fce0fd..0000000 --- a/libraries/plugins/IDS/vendors/htmlpurifier/HTMLPurifier/ConfigSchema/schema/URI.MungeResources.txt +++ /dev/null @@ -1,17 +0,0 @@ -URI.MungeResources -TYPE: bool -VERSION: 3.1.1 -DEFAULT: false ---DESCRIPTION-- -

- If true, any URI munging directives like %URI.Munge - will also apply to embedded resources, such as <img src="">. - Be careful enabling this directive if you have a redirector script - that does not use the Location HTTP header; all of your images - and other embedded resources will break. -

-

- Warning: It is strongly advised you use this in conjunction - %URI.MungeSecretKey to mitigate the security risk of an open redirector. -

---# vim: et sw=4 sts=4 diff --git a/libraries/plugins/IDS/vendors/htmlpurifier/HTMLPurifier/ConfigSchema/schema/URI.MungeSecretKey.txt b/libraries/plugins/IDS/vendors/htmlpurifier/HTMLPurifier/ConfigSchema/schema/URI.MungeSecretKey.txt deleted file mode 100644 index 0d00f62..0000000 --- a/libraries/plugins/IDS/vendors/htmlpurifier/HTMLPurifier/ConfigSchema/schema/URI.MungeSecretKey.txt +++ /dev/null @@ -1,30 +0,0 @@ -URI.MungeSecretKey -TYPE: string/null -VERSION: 3.1.1 -DEFAULT: NULL ---DESCRIPTION-- -

- This directive enables secure checksum generation along with %URI.Munge. - It should be set to a secure key that is not shared with anyone else. - The checksum can be placed in the URI using %t. Use of this checksum - affords an additional level of protection by allowing a redirector - to check if a URI has passed through HTML Purifier with this line: -

- -
$checksum === sha1($secret_key . ':' . $url)
- -

- If the output is TRUE, the redirector script should accept the URI. -

- -

- Please note that it would still be possible for an attacker to procure - secure hashes en-mass by abusing your website's Preview feature or the - like, but this service affords an additional level of protection - that should be combined with website blacklisting. -

- -

- Remember this has no effect if %URI.Munge is not on. -

---# vim: et sw=4 sts=4 diff --git a/libraries/plugins/IDS/vendors/htmlpurifier/HTMLPurifier/ConfigSchema/schema/URI.OverrideAllowedSchemes.txt b/libraries/plugins/IDS/vendors/htmlpurifier/HTMLPurifier/ConfigSchema/schema/URI.OverrideAllowedSchemes.txt deleted file mode 100644 index 23331a4..0000000 --- a/libraries/plugins/IDS/vendors/htmlpurifier/HTMLPurifier/ConfigSchema/schema/URI.OverrideAllowedSchemes.txt +++ /dev/null @@ -1,9 +0,0 @@ -URI.OverrideAllowedSchemes -TYPE: bool -DEFAULT: true ---DESCRIPTION-- -If this is set to true (which it is by default), you can override -%URI.AllowedSchemes by simply registering a HTMLPurifier_URIScheme to the -registry. If false, you will also have to update that directive in order -to add more schemes. ---# vim: et sw=4 sts=4 diff --git a/libraries/plugins/IDS/vendors/htmlpurifier/HTMLPurifier/ConfigSchema/schema/URI.txt b/libraries/plugins/IDS/vendors/htmlpurifier/HTMLPurifier/ConfigSchema/schema/URI.txt deleted file mode 100644 index a13060f..0000000 --- a/libraries/plugins/IDS/vendors/htmlpurifier/HTMLPurifier/ConfigSchema/schema/URI.txt +++ /dev/null @@ -1,3 +0,0 @@ -URI -DESCRIPTION: Features regarding Uniform Resource Identifiers. ---# vim: et sw=4 sts=4 diff --git a/libraries/plugins/IDS/vendors/htmlpurifier/HTMLPurifier/ConfigSchema/schema/info.ini b/libraries/plugins/IDS/vendors/htmlpurifier/HTMLPurifier/ConfigSchema/schema/info.ini deleted file mode 100644 index 5de4505..0000000 --- a/libraries/plugins/IDS/vendors/htmlpurifier/HTMLPurifier/ConfigSchema/schema/info.ini +++ /dev/null @@ -1,3 +0,0 @@ -name = "HTML Purifier" - -; vim: et sw=4 sts=4 diff --git a/libraries/plugins/IDS/vendors/htmlpurifier/HTMLPurifier/ContentSets.php b/libraries/plugins/IDS/vendors/htmlpurifier/HTMLPurifier/ContentSets.php deleted file mode 100644 index 3b6e96f..0000000 --- a/libraries/plugins/IDS/vendors/htmlpurifier/HTMLPurifier/ContentSets.php +++ /dev/null @@ -1,155 +0,0 @@ - true) indexed by name. - * @note This is in HTMLPurifier_HTMLDefinition->info_content_sets - */ - public $lookup = array(); - - /** - * Synchronized list of defined content sets (keys of info) - */ - protected $keys = array(); - /** - * Synchronized list of defined content values (values of info) - */ - protected $values = array(); - - /** - * Merges in module's content sets, expands identifiers in the content - * sets and populates the keys, values and lookup member variables. - * @param $modules List of HTMLPurifier_HTMLModule - */ - public function __construct($modules) { - if (!is_array($modules)) $modules = array($modules); - // populate content_sets based on module hints - // sorry, no way of overloading - foreach ($modules as $module_i => $module) { - foreach ($module->content_sets as $key => $value) { - $temp = $this->convertToLookup($value); - if (isset($this->lookup[$key])) { - // add it into the existing content set - $this->lookup[$key] = array_merge($this->lookup[$key], $temp); - } else { - $this->lookup[$key] = $temp; - } - } - } - $old_lookup = false; - while ($old_lookup !== $this->lookup) { - $old_lookup = $this->lookup; - foreach ($this->lookup as $i => $set) { - $add = array(); - foreach ($set as $element => $x) { - if (isset($this->lookup[$element])) { - $add += $this->lookup[$element]; - unset($this->lookup[$i][$element]); - } - } - $this->lookup[$i] += $add; - } - } - - foreach ($this->lookup as $key => $lookup) { - $this->info[$key] = implode(' | ', array_keys($lookup)); - } - $this->keys = array_keys($this->info); - $this->values = array_values($this->info); - } - - /** - * Accepts a definition; generates and assigns a ChildDef for it - * @param $def HTMLPurifier_ElementDef reference - * @param $module Module that defined the ElementDef - */ - public function generateChildDef(&$def, $module) { - if (!empty($def->child)) return; // already done! - $content_model = $def->content_model; - if (is_string($content_model)) { - // Assume that $this->keys is alphanumeric - $def->content_model = preg_replace_callback( - '/\b(' . implode('|', $this->keys) . ')\b/', - array($this, 'generateChildDefCallback'), - $content_model - ); - //$def->content_model = str_replace( - // $this->keys, $this->values, $content_model); - } - $def->child = $this->getChildDef($def, $module); - } - - public function generateChildDefCallback($matches) { - return $this->info[$matches[0]]; - } - - /** - * Instantiates a ChildDef based on content_model and content_model_type - * member variables in HTMLPurifier_ElementDef - * @note This will also defer to modules for custom HTMLPurifier_ChildDef - * subclasses that need content set expansion - * @param $def HTMLPurifier_ElementDef to have ChildDef extracted - * @return HTMLPurifier_ChildDef corresponding to ElementDef - */ - public function getChildDef($def, $module) { - $value = $def->content_model; - if (is_object($value)) { - trigger_error( - 'Literal object child definitions should be stored in '. - 'ElementDef->child not ElementDef->content_model', - E_USER_NOTICE - ); - return $value; - } - switch ($def->content_model_type) { - case 'required': - return new HTMLPurifier_ChildDef_Required($value); - case 'optional': - return new HTMLPurifier_ChildDef_Optional($value); - case 'empty': - return new HTMLPurifier_ChildDef_Empty(); - case 'custom': - return new HTMLPurifier_ChildDef_Custom($value); - } - // defer to its module - $return = false; - if ($module->defines_child_def) { // save a func call - $return = $module->getChildDef($def); - } - if ($return !== false) return $return; - // error-out - trigger_error( - 'Could not determine which ChildDef class to instantiate', - E_USER_ERROR - ); - return false; - } - - /** - * Converts a string list of elements separated by pipes into - * a lookup array. - * @param $string List of elements - * @return Lookup array of elements - */ - protected function convertToLookup($string) { - $array = explode('|', str_replace(' ', '', $string)); - $ret = array(); - foreach ($array as $i => $k) { - $ret[$k] = true; - } - return $ret; - } - -} - -// vim: et sw=4 sts=4 diff --git a/libraries/plugins/IDS/vendors/htmlpurifier/HTMLPurifier/Context.php b/libraries/plugins/IDS/vendors/htmlpurifier/HTMLPurifier/Context.php deleted file mode 100644 index 9ddf0c5..0000000 --- a/libraries/plugins/IDS/vendors/htmlpurifier/HTMLPurifier/Context.php +++ /dev/null @@ -1,82 +0,0 @@ -_storage[$name])) { - trigger_error("Name $name produces collision, cannot re-register", - E_USER_ERROR); - return; - } - $this->_storage[$name] =& $ref; - } - - /** - * Retrieves a variable reference from the context. - * @param $name String name - * @param $ignore_error Boolean whether or not to ignore error - */ - public function &get($name, $ignore_error = false) { - if (!isset($this->_storage[$name])) { - if (!$ignore_error) { - trigger_error("Attempted to retrieve non-existent variable $name", - E_USER_ERROR); - } - $var = null; // so we can return by reference - return $var; - } - return $this->_storage[$name]; - } - - /** - * Destorys a variable in the context. - * @param $name String name - */ - public function destroy($name) { - if (!isset($this->_storage[$name])) { - trigger_error("Attempted to destroy non-existent variable $name", - E_USER_ERROR); - return; - } - unset($this->_storage[$name]); - } - - /** - * Checks whether or not the variable exists. - * @param $name String name - */ - public function exists($name) { - return isset($this->_storage[$name]); - } - - /** - * Loads a series of variables from an associative array - * @param $context_array Assoc array of variables to load - */ - public function loadArray($context_array) { - foreach ($context_array as $key => $discard) { - $this->register($key, $context_array[$key]); - } - } - -} - -// vim: et sw=4 sts=4 diff --git a/libraries/plugins/IDS/vendors/htmlpurifier/HTMLPurifier/Definition.php b/libraries/plugins/IDS/vendors/htmlpurifier/HTMLPurifier/Definition.php deleted file mode 100644 index c7f82eb..0000000 --- a/libraries/plugins/IDS/vendors/htmlpurifier/HTMLPurifier/Definition.php +++ /dev/null @@ -1,50 +0,0 @@ -setup) return; - $this->setup = true; - $this->doSetup($config); - } - -} - -// vim: et sw=4 sts=4 diff --git a/libraries/plugins/IDS/vendors/htmlpurifier/HTMLPurifier/DefinitionCache.php b/libraries/plugins/IDS/vendors/htmlpurifier/HTMLPurifier/DefinitionCache.php deleted file mode 100644 index c6e1e38..0000000 --- a/libraries/plugins/IDS/vendors/htmlpurifier/HTMLPurifier/DefinitionCache.php +++ /dev/null @@ -1,108 +0,0 @@ -type = $type; - } - - /** - * Generates a unique identifier for a particular configuration - * @param Instance of HTMLPurifier_Config - */ - public function generateKey($config) { - return $config->version . ',' . // possibly replace with function calls - $config->getBatchSerial($this->type) . ',' . - $config->get($this->type . '.DefinitionRev'); - } - - /** - * Tests whether or not a key is old with respect to the configuration's - * version and revision number. - * @param $key Key to test - * @param $config Instance of HTMLPurifier_Config to test against - */ - public function isOld($key, $config) { - if (substr_count($key, ',') < 2) return true; - list($version, $hash, $revision) = explode(',', $key, 3); - $compare = version_compare($version, $config->version); - // version mismatch, is always old - if ($compare != 0) return true; - // versions match, ids match, check revision number - if ( - $hash == $config->getBatchSerial($this->type) && - $revision < $config->get($this->type . '.DefinitionRev') - ) return true; - return false; - } - - /** - * Checks if a definition's type jives with the cache's type - * @note Throws an error on failure - * @param $def Definition object to check - * @return Boolean true if good, false if not - */ - public function checkDefType($def) { - if ($def->type !== $this->type) { - trigger_error("Cannot use definition of type {$def->type} in cache for {$this->type}"); - return false; - } - return true; - } - - /** - * Adds a definition object to the cache - */ - abstract public function add($def, $config); - - /** - * Unconditionally saves a definition object to the cache - */ - abstract public function set($def, $config); - - /** - * Replace an object in the cache - */ - abstract public function replace($def, $config); - - /** - * Retrieves a definition object from the cache - */ - abstract public function get($config); - - /** - * Removes a definition object to the cache - */ - abstract public function remove($config); - - /** - * Clears all objects from cache - */ - abstract public function flush($config); - - /** - * Clears all expired (older version or revision) objects from cache - * @note Be carefuly implementing this method as flush. Flush must - * not interfere with other Definition types, and cleanup() - * should not be repeatedly called by userland code. - */ - abstract public function cleanup($config); - -} - -// vim: et sw=4 sts=4 diff --git a/libraries/plugins/IDS/vendors/htmlpurifier/HTMLPurifier/DefinitionCache/Decorator.php b/libraries/plugins/IDS/vendors/htmlpurifier/HTMLPurifier/DefinitionCache/Decorator.php deleted file mode 100644 index b0fb6d0..0000000 --- a/libraries/plugins/IDS/vendors/htmlpurifier/HTMLPurifier/DefinitionCache/Decorator.php +++ /dev/null @@ -1,62 +0,0 @@ -copy(); - // reference is necessary for mocks in PHP 4 - $decorator->cache =& $cache; - $decorator->type = $cache->type; - return $decorator; - } - - /** - * Cross-compatible clone substitute - */ - public function copy() { - return new HTMLPurifier_DefinitionCache_Decorator(); - } - - public function add($def, $config) { - return $this->cache->add($def, $config); - } - - public function set($def, $config) { - return $this->cache->set($def, $config); - } - - public function replace($def, $config) { - return $this->cache->replace($def, $config); - } - - public function get($config) { - return $this->cache->get($config); - } - - public function remove($config) { - return $this->cache->remove($config); - } - - public function flush($config) { - return $this->cache->flush($config); - } - - public function cleanup($config) { - return $this->cache->cleanup($config); - } - -} - -// vim: et sw=4 sts=4 diff --git a/libraries/plugins/IDS/vendors/htmlpurifier/HTMLPurifier/DefinitionCache/Decorator/Cleanup.php b/libraries/plugins/IDS/vendors/htmlpurifier/HTMLPurifier/DefinitionCache/Decorator/Cleanup.php deleted file mode 100644 index d4cc35c..0000000 --- a/libraries/plugins/IDS/vendors/htmlpurifier/HTMLPurifier/DefinitionCache/Decorator/Cleanup.php +++ /dev/null @@ -1,43 +0,0 @@ -definitions[$this->generateKey($config)] = $def; - return $status; - } - - public function set($def, $config) { - $status = parent::set($def, $config); - if ($status) $this->definitions[$this->generateKey($config)] = $def; - return $status; - } - - public function replace($def, $config) { - $status = parent::replace($def, $config); - if ($status) $this->definitions[$this->generateKey($config)] = $def; - return $status; - } - - public function get($config) { - $key = $this->generateKey($config); - if (isset($this->definitions[$key])) return $this->definitions[$key]; - $this->definitions[$key] = parent::get($config); - return $this->definitions[$key]; - } - -} - -// vim: et sw=4 sts=4 diff --git a/libraries/plugins/IDS/vendors/htmlpurifier/HTMLPurifier/DefinitionCache/Decorator/Template.php.in b/libraries/plugins/IDS/vendors/htmlpurifier/HTMLPurifier/DefinitionCache/Decorator/Template.php.in deleted file mode 100644 index 21a8fcf..0000000 --- a/libraries/plugins/IDS/vendors/htmlpurifier/HTMLPurifier/DefinitionCache/Decorator/Template.php.in +++ /dev/null @@ -1,47 +0,0 @@ -checkDefType($def)) return; - $file = $this->generateFilePath($config); - if (file_exists($file)) return false; - if (!$this->_prepareDir($config)) return false; - return $this->_write($file, serialize($def), $config); - } - - public function set($def, $config) { - if (!$this->checkDefType($def)) return; - $file = $this->generateFilePath($config); - if (!$this->_prepareDir($config)) return false; - return $this->_write($file, serialize($def), $config); - } - - public function replace($def, $config) { - if (!$this->checkDefType($def)) return; - $file = $this->generateFilePath($config); - if (!file_exists($file)) return false; - if (!$this->_prepareDir($config)) return false; - return $this->_write($file, serialize($def), $config); - } - - public function get($config) { - $file = $this->generateFilePath($config); - if (!file_exists($file)) return false; - return unserialize(file_get_contents($file)); - } - - public function remove($config) { - $file = $this->generateFilePath($config); - if (!file_exists($file)) return false; - return unlink($file); - } - - public function flush($config) { - if (!$this->_prepareDir($config)) return false; - $dir = $this->generateDirectoryPath($config); - $dh = opendir($dir); - while (false !== ($filename = readdir($dh))) { - if (empty($filename)) continue; - if ($filename[0] === '.') continue; - unlink($dir . '/' . $filename); - } - } - - public function cleanup($config) { - if (!$this->_prepareDir($config)) return false; - $dir = $this->generateDirectoryPath($config); - $dh = opendir($dir); - while (false !== ($filename = readdir($dh))) { - if (empty($filename)) continue; - if ($filename[0] === '.') continue; - $key = substr($filename, 0, strlen($filename) - 4); - if ($this->isOld($key, $config)) unlink($dir . '/' . $filename); - } - } - - /** - * Generates the file path to the serial file corresponding to - * the configuration and definition name - * @todo Make protected - */ - public function generateFilePath($config) { - $key = $this->generateKey($config); - return $this->generateDirectoryPath($config) . '/' . $key . '.ser'; - } - - /** - * Generates the path to the directory contain this cache's serial files - * @note No trailing slash - * @todo Make protected - */ - public function generateDirectoryPath($config) { - $base = $this->generateBaseDirectoryPath($config); - return $base . '/' . $this->type; - } - - /** - * Generates path to base directory that contains all definition type - * serials - * @todo Make protected - */ - public function generateBaseDirectoryPath($config) { - $base = $config->get('Cache.SerializerPath'); - $base = is_null($base) ? HTMLPURIFIER_PREFIX . '/HTMLPurifier/DefinitionCache/Serializer' : $base; - return $base; - } - - /** - * Convenience wrapper function for file_put_contents - * @param $file File name to write to - * @param $data Data to write into file - * @param $config Config object - * @return Number of bytes written if success, or false if failure. - */ - private function _write($file, $data, $config) { - $result = file_put_contents($file, $data); - if ($result !== false) { - // set permissions of the new file (no execute) - $chmod = $config->get('Cache.SerializerPermissions'); - if (!$chmod) { - $chmod = 0644; // invalid config or simpletest - } - $chmod = $chmod & 0666; - chmod($file, $chmod); - } - return $result; - } - - /** - * Prepares the directory that this type stores the serials in - * @param $config Config object - * @return True if successful - */ - private function _prepareDir($config) { - $directory = $this->generateDirectoryPath($config); - $chmod = $config->get('Cache.SerializerPermissions'); - if (!$chmod) { - $chmod = 0755; // invalid config or simpletest - } - if (!is_dir($directory)) { - $base = $this->generateBaseDirectoryPath($config); - if (!is_dir($base)) { - trigger_error('Base directory '.$base.' does not exist, - please create or change using %Cache.SerializerPath', - E_USER_WARNING); - return false; - } elseif (!$this->_testPermissions($base, $chmod)) { - return false; - } - $old = umask(0000); - mkdir($directory, $chmod); - umask($old); - } elseif (!$this->_testPermissions($directory, $chmod)) { - return false; - } - return true; - } - - /** - * Tests permissions on a directory and throws out friendly - * error messages and attempts to chmod it itself if possible - * @param $dir Directory path - * @param $chmod Permissions - * @return True if directory writable - */ - private function _testPermissions($dir, $chmod) { - // early abort, if it is writable, everything is hunky-dory - if (is_writable($dir)) return true; - if (!is_dir($dir)) { - // generally, you'll want to handle this beforehand - // so a more specific error message can be given - trigger_error('Directory '.$dir.' does not exist', - E_USER_WARNING); - return false; - } - if (function_exists('posix_getuid')) { - // POSIX system, we can give more specific advice - if (fileowner($dir) === posix_getuid()) { - // we can chmod it ourselves - $chmod = $chmod | 0700; - if (chmod($dir, $chmod)) return true; - } elseif (filegroup($dir) === posix_getgid()) { - $chmod = $chmod | 0070; - } else { - // PHP's probably running as nobody, so we'll - // need to give global permissions - $chmod = $chmod | 0777; - } - trigger_error('Directory '.$dir.' not writable, '. - 'please chmod to ' . decoct($chmod), - E_USER_WARNING); - } else { - // generic error message - trigger_error('Directory '.$dir.' not writable, '. - 'please alter file permissions', - E_USER_WARNING); - } - return false; - } - -} - -// vim: et sw=4 sts=4 diff --git a/libraries/plugins/IDS/vendors/htmlpurifier/HTMLPurifier/DefinitionCache/Serializer/CSS/4.1.0,801ad73acbcf9d3127e1d01768d26453,1.ser b/libraries/plugins/IDS/vendors/htmlpurifier/HTMLPurifier/DefinitionCache/Serializer/CSS/4.1.0,801ad73acbcf9d3127e1d01768d26453,1.ser deleted file mode 100644 index 7af3bad..0000000 Binary files a/libraries/plugins/IDS/vendors/htmlpurifier/HTMLPurifier/DefinitionCache/Serializer/CSS/4.1.0,801ad73acbcf9d3127e1d01768d26453,1.ser and /dev/null differ diff --git a/libraries/plugins/IDS/vendors/htmlpurifier/HTMLPurifier/DefinitionCache/Serializer/HTML/4.1.0,ddc9b993d7fc8d4a185e8dbf5b9a0996,1.ser b/libraries/plugins/IDS/vendors/htmlpurifier/HTMLPurifier/DefinitionCache/Serializer/HTML/4.1.0,ddc9b993d7fc8d4a185e8dbf5b9a0996,1.ser deleted file mode 100644 index a58b3b2..0000000 Binary files a/libraries/plugins/IDS/vendors/htmlpurifier/HTMLPurifier/DefinitionCache/Serializer/HTML/4.1.0,ddc9b993d7fc8d4a185e8dbf5b9a0996,1.ser and /dev/null differ diff --git a/libraries/plugins/IDS/vendors/htmlpurifier/HTMLPurifier/DefinitionCache/Serializer/README b/libraries/plugins/IDS/vendors/htmlpurifier/HTMLPurifier/DefinitionCache/Serializer/README deleted file mode 100644 index 2e35c1c..0000000 --- a/libraries/plugins/IDS/vendors/htmlpurifier/HTMLPurifier/DefinitionCache/Serializer/README +++ /dev/null @@ -1,3 +0,0 @@ -This is a dummy file to prevent Git from ignoring this empty directory. - - vim: et sw=4 sts=4 diff --git a/libraries/plugins/IDS/vendors/htmlpurifier/HTMLPurifier/DefinitionCache/Serializer/URI/4.0.0,05c766101e813c246917b022f97b5e6e,1.ser b/libraries/plugins/IDS/vendors/htmlpurifier/HTMLPurifier/DefinitionCache/Serializer/URI/4.0.0,05c766101e813c246917b022f97b5e6e,1.ser deleted file mode 100644 index b0563a0..0000000 Binary files a/libraries/plugins/IDS/vendors/htmlpurifier/HTMLPurifier/DefinitionCache/Serializer/URI/4.0.0,05c766101e813c246917b022f97b5e6e,1.ser and /dev/null differ diff --git a/libraries/plugins/IDS/vendors/htmlpurifier/HTMLPurifier/DefinitionCacheFactory.php b/libraries/plugins/IDS/vendors/htmlpurifier/HTMLPurifier/DefinitionCacheFactory.php deleted file mode 100644 index a6ead62..0000000 --- a/libraries/plugins/IDS/vendors/htmlpurifier/HTMLPurifier/DefinitionCacheFactory.php +++ /dev/null @@ -1,91 +0,0 @@ - array()); - protected $implementations = array(); - protected $decorators = array(); - - /** - * Initialize default decorators - */ - public function setup() { - $this->addDecorator('Cleanup'); - } - - /** - * Retrieves an instance of global definition cache factory. - */ - public static function instance($prototype = null) { - static $instance; - if ($prototype !== null) { - $instance = $prototype; - } elseif ($instance === null || $prototype === true) { - $instance = new HTMLPurifier_DefinitionCacheFactory(); - $instance->setup(); - } - return $instance; - } - - /** - * Registers a new definition cache object - * @param $short Short name of cache object, for reference - * @param $long Full class name of cache object, for construction - */ - public function register($short, $long) { - $this->implementations[$short] = $long; - } - - /** - * Factory method that creates a cache object based on configuration - * @param $name Name of definitions handled by cache - * @param $config Instance of HTMLPurifier_Config - */ - public function create($type, $config) { - $method = $config->get('Cache.DefinitionImpl'); - if ($method === null) { - return new HTMLPurifier_DefinitionCache_Null($type); - } - if (!empty($this->caches[$method][$type])) { - return $this->caches[$method][$type]; - } - if ( - isset($this->implementations[$method]) && - class_exists($class = $this->implementations[$method], false) - ) { - $cache = new $class($type); - } else { - if ($method != 'Serializer') { - trigger_error("Unrecognized DefinitionCache $method, using Serializer instead", E_USER_WARNING); - } - $cache = new HTMLPurifier_DefinitionCache_Serializer($type); - } - foreach ($this->decorators as $decorator) { - $new_cache = $decorator->decorate($cache); - // prevent infinite recursion in PHP 4 - unset($cache); - $cache = $new_cache; - } - $this->caches[$method][$type] = $cache; - return $this->caches[$method][$type]; - } - - /** - * Registers a decorator to add to all new cache objects - * @param - */ - public function addDecorator($decorator) { - if (is_string($decorator)) { - $class = "HTMLPurifier_DefinitionCache_Decorator_$decorator"; - $decorator = new $class; - } - $this->decorators[$decorator->name] = $decorator; - } - -} - -// vim: et sw=4 sts=4 diff --git a/libraries/plugins/IDS/vendors/htmlpurifier/HTMLPurifier/Doctype.php b/libraries/plugins/IDS/vendors/htmlpurifier/HTMLPurifier/Doctype.php deleted file mode 100644 index 1e3c574..0000000 --- a/libraries/plugins/IDS/vendors/htmlpurifier/HTMLPurifier/Doctype.php +++ /dev/null @@ -1,60 +0,0 @@ -renderDoctype. - * If structure changes, please update that function. - */ -class HTMLPurifier_Doctype -{ - /** - * Full name of doctype - */ - public $name; - - /** - * List of standard modules (string identifiers or literal objects) - * that this doctype uses - */ - public $modules = array(); - - /** - * List of modules to use for tidying up code - */ - public $tidyModules = array(); - - /** - * Is the language derived from XML (i.e. XHTML)? - */ - public $xml = true; - - /** - * List of aliases for this doctype - */ - public $aliases = array(); - - /** - * Public DTD identifier - */ - public $dtdPublic; - - /** - * System DTD identifier - */ - public $dtdSystem; - - public function __construct($name = null, $xml = true, $modules = array(), - $tidyModules = array(), $aliases = array(), $dtd_public = null, $dtd_system = null - ) { - $this->name = $name; - $this->xml = $xml; - $this->modules = $modules; - $this->tidyModules = $tidyModules; - $this->aliases = $aliases; - $this->dtdPublic = $dtd_public; - $this->dtdSystem = $dtd_system; - } -} - -// vim: et sw=4 sts=4 diff --git a/libraries/plugins/IDS/vendors/htmlpurifier/HTMLPurifier/DoctypeRegistry.php b/libraries/plugins/IDS/vendors/htmlpurifier/HTMLPurifier/DoctypeRegistry.php deleted file mode 100644 index 86049e9..0000000 --- a/libraries/plugins/IDS/vendors/htmlpurifier/HTMLPurifier/DoctypeRegistry.php +++ /dev/null @@ -1,103 +0,0 @@ -doctypes[$doctype->name] = $doctype; - $name = $doctype->name; - // hookup aliases - foreach ($doctype->aliases as $alias) { - if (isset($this->doctypes[$alias])) continue; - $this->aliases[$alias] = $name; - } - // remove old aliases - if (isset($this->aliases[$name])) unset($this->aliases[$name]); - return $doctype; - } - - /** - * Retrieves reference to a doctype of a certain name - * @note This function resolves aliases - * @note When possible, use the more fully-featured make() - * @param $doctype Name of doctype - * @return Editable doctype object - */ - public function get($doctype) { - if (isset($this->aliases[$doctype])) $doctype = $this->aliases[$doctype]; - if (!isset($this->doctypes[$doctype])) { - trigger_error('Doctype ' . htmlspecialchars($doctype) . ' does not exist', E_USER_ERROR); - $anon = new HTMLPurifier_Doctype($doctype); - return $anon; - } - return $this->doctypes[$doctype]; - } - - /** - * Creates a doctype based on a configuration object, - * will perform initialization on the doctype - * @note Use this function to get a copy of doctype that config - * can hold on to (this is necessary in order to tell - * Generator whether or not the current document is XML - * based or not). - */ - public function make($config) { - return clone $this->get($this->getDoctypeFromConfig($config)); - } - - /** - * Retrieves the doctype from the configuration object - */ - public function getDoctypeFromConfig($config) { - // recommended test - $doctype = $config->get('HTML.Doctype'); - if (!empty($doctype)) return $doctype; - $doctype = $config->get('HTML.CustomDoctype'); - if (!empty($doctype)) return $doctype; - // backwards-compatibility - if ($config->get('HTML.XHTML')) { - $doctype = 'XHTML 1.0'; - } else { - $doctype = 'HTML 4.01'; - } - if ($config->get('HTML.Strict')) { - $doctype .= ' Strict'; - } else { - $doctype .= ' Transitional'; - } - return $doctype; - } - -} - -// vim: et sw=4 sts=4 diff --git a/libraries/plugins/IDS/vendors/htmlpurifier/HTMLPurifier/ElementDef.php b/libraries/plugins/IDS/vendors/htmlpurifier/HTMLPurifier/ElementDef.php deleted file mode 100644 index 5498d95..0000000 --- a/libraries/plugins/IDS/vendors/htmlpurifier/HTMLPurifier/ElementDef.php +++ /dev/null @@ -1,183 +0,0 @@ -setup(), this array may also - * contain an array at index 0 that indicates which attribute - * collections to load into the full array. It may also - * contain string indentifiers in lieu of HTMLPurifier_AttrDef, - * see HTMLPurifier_AttrTypes on how they are expanded during - * HTMLPurifier_HTMLDefinition->setup() processing. - */ - public $attr = array(); - - /** - * Indexed list of tag's HTMLPurifier_AttrTransform to be done before validation - */ - public $attr_transform_pre = array(); - - /** - * Indexed list of tag's HTMLPurifier_AttrTransform to be done after validation - */ - public $attr_transform_post = array(); - - /** - * HTMLPurifier_ChildDef of this tag. - */ - public $child; - - /** - * Abstract string representation of internal ChildDef rules. See - * HTMLPurifier_ContentSets for how this is parsed and then transformed - * into an HTMLPurifier_ChildDef. - * @warning This is a temporary variable that is not available after - * being processed by HTMLDefinition - */ - public $content_model; - - /** - * Value of $child->type, used to determine which ChildDef to use, - * used in combination with $content_model. - * @warning This must be lowercase - * @warning This is a temporary variable that is not available after - * being processed by HTMLDefinition - */ - public $content_model_type; - - - - /** - * Does the element have a content model (#PCDATA | Inline)*? This - * is important for chameleon ins and del processing in - * HTMLPurifier_ChildDef_Chameleon. Dynamically set: modules don't - * have to worry about this one. - */ - public $descendants_are_inline = false; - - /** - * List of the names of required attributes this element has. Dynamically - * populated by HTMLPurifier_HTMLDefinition::getElement - */ - public $required_attr = array(); - - /** - * Lookup table of tags excluded from all descendants of this tag. - * @note SGML permits exclusions for all descendants, but this is - * not possible with DTDs or XML Schemas. W3C has elected to - * use complicated compositions of content_models to simulate - * exclusion for children, but we go the simpler, SGML-style - * route of flat-out exclusions, which correctly apply to - * all descendants and not just children. Note that the XHTML - * Modularization Abstract Modules are blithely unaware of such - * distinctions. - */ - public $excludes = array(); - - /** - * This tag is explicitly auto-closed by the following tags. - */ - public $autoclose = array(); - - /** - * If a foreign element is found in this element, test if it is - * allowed by this sub-element; if it is, instead of closing the - * current element, place it inside this element. - */ - public $wrap; - - /** - * Whether or not this is a formatting element affected by the - * "Active Formatting Elements" algorithm. - */ - public $formatting; - - /** - * Low-level factory constructor for creating new standalone element defs - */ - public static function create($content_model, $content_model_type, $attr) { - $def = new HTMLPurifier_ElementDef(); - $def->content_model = $content_model; - $def->content_model_type = $content_model_type; - $def->attr = $attr; - return $def; - } - - /** - * Merges the values of another element definition into this one. - * Values from the new element def take precedence if a value is - * not mergeable. - */ - public function mergeIn($def) { - - // later keys takes precedence - foreach($def->attr as $k => $v) { - if ($k === 0) { - // merge in the includes - // sorry, no way to override an include - foreach ($v as $v2) { - $this->attr[0][] = $v2; - } - continue; - } - if ($v === false) { - if (isset($this->attr[$k])) unset($this->attr[$k]); - continue; - } - $this->attr[$k] = $v; - } - $this->_mergeAssocArray($this->attr_transform_pre, $def->attr_transform_pre); - $this->_mergeAssocArray($this->attr_transform_post, $def->attr_transform_post); - $this->_mergeAssocArray($this->excludes, $def->excludes); - - if(!empty($def->content_model)) { - $this->content_model = - str_replace("#SUPER", $this->content_model, $def->content_model); - $this->child = false; - } - if(!empty($def->content_model_type)) { - $this->content_model_type = $def->content_model_type; - $this->child = false; - } - if(!is_null($def->child)) $this->child = $def->child; - if(!is_null($def->formatting)) $this->formatting = $def->formatting; - if($def->descendants_are_inline) $this->descendants_are_inline = $def->descendants_are_inline; - - } - - /** - * Merges one array into another, removes values which equal false - * @param $a1 Array by reference that is merged into - * @param $a2 Array that merges into $a1 - */ - private function _mergeAssocArray(&$a1, $a2) { - foreach ($a2 as $k => $v) { - if ($v === false) { - if (isset($a1[$k])) unset($a1[$k]); - continue; - } - $a1[$k] = $v; - } - } - -} - -// vim: et sw=4 sts=4 diff --git a/libraries/plugins/IDS/vendors/htmlpurifier/HTMLPurifier/Encoder.php b/libraries/plugins/IDS/vendors/htmlpurifier/HTMLPurifier/Encoder.php deleted file mode 100644 index 2b3140c..0000000 --- a/libraries/plugins/IDS/vendors/htmlpurifier/HTMLPurifier/Encoder.php +++ /dev/null @@ -1,426 +0,0 @@ - under the - * LGPL license. Notes on what changed are inside, but in general, - * the original code transformed UTF-8 text into an array of integer - * Unicode codepoints. Understandably, transforming that back to - * a string would be somewhat expensive, so the function was modded to - * directly operate on the string. However, this discourages code - * reuse, and the logic enumerated here would be useful for any - * function that needs to be able to understand UTF-8 characters. - * As of right now, only smart lossless character encoding converters - * would need that, and I'm probably not going to implement them. - * Once again, PHP 6 should solve all our problems. - */ - public static function cleanUTF8($str, $force_php = false) { - - // UTF-8 validity is checked since PHP 4.3.5 - // This is an optimization: if the string is already valid UTF-8, no - // need to do PHP stuff. 99% of the time, this will be the case. - // The regexp matches the XML char production, as well as well as excluding - // non-SGML codepoints U+007F to U+009F - if (preg_match('/^[\x{9}\x{A}\x{D}\x{20}-\x{7E}\x{A0}-\x{D7FF}\x{E000}-\x{FFFD}\x{10000}-\x{10FFFF}]*$/Du', $str)) { - return $str; - } - - $mState = 0; // cached expected number of octets after the current octet - // until the beginning of the next UTF8 character sequence - $mUcs4 = 0; // cached Unicode character - $mBytes = 1; // cached expected number of octets in the current sequence - - // original code involved an $out that was an array of Unicode - // codepoints. Instead of having to convert back into UTF-8, we've - // decided to directly append valid UTF-8 characters onto a string - // $out once they're done. $char accumulates raw bytes, while $mUcs4 - // turns into the Unicode code point, so there's some redundancy. - - $out = ''; - $char = ''; - - $len = strlen($str); - for($i = 0; $i < $len; $i++) { - $in = ord($str{$i}); - $char .= $str[$i]; // append byte to char - if (0 == $mState) { - // When mState is zero we expect either a US-ASCII character - // or a multi-octet sequence. - if (0 == (0x80 & ($in))) { - // US-ASCII, pass straight through. - if (($in <= 31 || $in == 127) && - !($in == 9 || $in == 13 || $in == 10) // save \r\t\n - ) { - // control characters, remove - } else { - $out .= $char; - } - // reset - $char = ''; - $mBytes = 1; - } elseif (0xC0 == (0xE0 & ($in))) { - // First octet of 2 octet sequence - $mUcs4 = ($in); - $mUcs4 = ($mUcs4 & 0x1F) << 6; - $mState = 1; - $mBytes = 2; - } elseif (0xE0 == (0xF0 & ($in))) { - // First octet of 3 octet sequence - $mUcs4 = ($in); - $mUcs4 = ($mUcs4 & 0x0F) << 12; - $mState = 2; - $mBytes = 3; - } elseif (0xF0 == (0xF8 & ($in))) { - // First octet of 4 octet sequence - $mUcs4 = ($in); - $mUcs4 = ($mUcs4 & 0x07) << 18; - $mState = 3; - $mBytes = 4; - } elseif (0xF8 == (0xFC & ($in))) { - // First octet of 5 octet sequence. - // - // This is illegal because the encoded codepoint must be - // either: - // (a) not the shortest form or - // (b) outside the Unicode range of 0-0x10FFFF. - // Rather than trying to resynchronize, we will carry on - // until the end of the sequence and let the later error - // handling code catch it. - $mUcs4 = ($in); - $mUcs4 = ($mUcs4 & 0x03) << 24; - $mState = 4; - $mBytes = 5; - } elseif (0xFC == (0xFE & ($in))) { - // First octet of 6 octet sequence, see comments for 5 - // octet sequence. - $mUcs4 = ($in); - $mUcs4 = ($mUcs4 & 1) << 30; - $mState = 5; - $mBytes = 6; - } else { - // Current octet is neither in the US-ASCII range nor a - // legal first octet of a multi-octet sequence. - $mState = 0; - $mUcs4 = 0; - $mBytes = 1; - $char = ''; - } - } else { - // When mState is non-zero, we expect a continuation of the - // multi-octet sequence - if (0x80 == (0xC0 & ($in))) { - // Legal continuation. - $shift = ($mState - 1) * 6; - $tmp = $in; - $tmp = ($tmp & 0x0000003F) << $shift; - $mUcs4 |= $tmp; - - if (0 == --$mState) { - // End of the multi-octet sequence. mUcs4 now contains - // the final Unicode codepoint to be output - - // Check for illegal sequences and codepoints. - - // From Unicode 3.1, non-shortest form is illegal - if (((2 == $mBytes) && ($mUcs4 < 0x0080)) || - ((3 == $mBytes) && ($mUcs4 < 0x0800)) || - ((4 == $mBytes) && ($mUcs4 < 0x10000)) || - (4 < $mBytes) || - // From Unicode 3.2, surrogate characters = illegal - (($mUcs4 & 0xFFFFF800) == 0xD800) || - // Codepoints outside the Unicode range are illegal - ($mUcs4 > 0x10FFFF) - ) { - - } elseif (0xFEFF != $mUcs4 && // omit BOM - // check for valid Char unicode codepoints - ( - 0x9 == $mUcs4 || - 0xA == $mUcs4 || - 0xD == $mUcs4 || - (0x20 <= $mUcs4 && 0x7E >= $mUcs4) || - // 7F-9F is not strictly prohibited by XML, - // but it is non-SGML, and thus we don't allow it - (0xA0 <= $mUcs4 && 0xD7FF >= $mUcs4) || - (0x10000 <= $mUcs4 && 0x10FFFF >= $mUcs4) - ) - ) { - $out .= $char; - } - // initialize UTF8 cache (reset) - $mState = 0; - $mUcs4 = 0; - $mBytes = 1; - $char = ''; - } - } else { - // ((0xC0 & (*in) != 0x80) && (mState != 0)) - // Incomplete multi-octet sequence. - // used to result in complete fail, but we'll reset - $mState = 0; - $mUcs4 = 0; - $mBytes = 1; - $char =''; - } - } - } - return $out; - } - - /** - * Translates a Unicode codepoint into its corresponding UTF-8 character. - * @note Based on Feyd's function at - * , - * which is in public domain. - * @note While we're going to do code point parsing anyway, a good - * optimization would be to refuse to translate code points that - * are non-SGML characters. However, this could lead to duplication. - * @note This is very similar to the unichr function in - * maintenance/generate-entity-file.php (although this is superior, - * due to its sanity checks). - */ - - // +----------+----------+----------+----------+ - // | 33222222 | 22221111 | 111111 | | - // | 10987654 | 32109876 | 54321098 | 76543210 | bit - // +----------+----------+----------+----------+ - // | | | | 0xxxxxxx | 1 byte 0x00000000..0x0000007F - // | | | 110yyyyy | 10xxxxxx | 2 byte 0x00000080..0x000007FF - // | | 1110zzzz | 10yyyyyy | 10xxxxxx | 3 byte 0x00000800..0x0000FFFF - // | 11110www | 10wwzzzz | 10yyyyyy | 10xxxxxx | 4 byte 0x00010000..0x0010FFFF - // +----------+----------+----------+----------+ - // | 00000000 | 00011111 | 11111111 | 11111111 | Theoretical upper limit of legal scalars: 2097151 (0x001FFFFF) - // | 00000000 | 00010000 | 11111111 | 11111111 | Defined upper limit of legal scalar codes - // +----------+----------+----------+----------+ - - public static function unichr($code) { - if($code > 1114111 or $code < 0 or - ($code >= 55296 and $code <= 57343) ) { - // bits are set outside the "valid" range as defined - // by UNICODE 4.1.0 - return ''; - } - - $x = $y = $z = $w = 0; - if ($code < 128) { - // regular ASCII character - $x = $code; - } else { - // set up bits for UTF-8 - $x = ($code & 63) | 128; - if ($code < 2048) { - $y = (($code & 2047) >> 6) | 192; - } else { - $y = (($code & 4032) >> 6) | 128; - if($code < 65536) { - $z = (($code >> 12) & 15) | 224; - } else { - $z = (($code >> 12) & 63) | 128; - $w = (($code >> 18) & 7) | 240; - } - } - } - // set up the actual character - $ret = ''; - if($w) $ret .= chr($w); - if($z) $ret .= chr($z); - if($y) $ret .= chr($y); - $ret .= chr($x); - - return $ret; - } - - /** - * Converts a string to UTF-8 based on configuration. - */ - public static function convertToUTF8($str, $config, $context) { - $encoding = $config->get('Core.Encoding'); - if ($encoding === 'utf-8') return $str; - static $iconv = null; - if ($iconv === null) $iconv = function_exists('iconv'); - set_error_handler(array('HTMLPurifier_Encoder', 'muteErrorHandler')); - if ($iconv && !$config->get('Test.ForceNoIconv')) { - $str = iconv($encoding, 'utf-8//IGNORE', $str); - if ($str === false) { - // $encoding is not a valid encoding - restore_error_handler(); - trigger_error('Invalid encoding ' . $encoding, E_USER_ERROR); - return ''; - } - // If the string is bjorked by Shift_JIS or a similar encoding - // that doesn't support all of ASCII, convert the naughty - // characters to their true byte-wise ASCII/UTF-8 equivalents. - $str = strtr($str, HTMLPurifier_Encoder::testEncodingSupportsASCII($encoding)); - restore_error_handler(); - return $str; - } elseif ($encoding === 'iso-8859-1') { - $str = utf8_encode($str); - restore_error_handler(); - return $str; - } - trigger_error('Encoding not supported, please install iconv', E_USER_ERROR); - } - - /** - * Converts a string from UTF-8 based on configuration. - * @note Currently, this is a lossy conversion, with unexpressable - * characters being omitted. - */ - public static function convertFromUTF8($str, $config, $context) { - $encoding = $config->get('Core.Encoding'); - if ($encoding === 'utf-8') return $str; - static $iconv = null; - if ($iconv === null) $iconv = function_exists('iconv'); - if ($escape = $config->get('Core.EscapeNonASCIICharacters')) { - $str = HTMLPurifier_Encoder::convertToASCIIDumbLossless($str); - } - set_error_handler(array('HTMLPurifier_Encoder', 'muteErrorHandler')); - if ($iconv && !$config->get('Test.ForceNoIconv')) { - // Undo our previous fix in convertToUTF8, otherwise iconv will barf - $ascii_fix = HTMLPurifier_Encoder::testEncodingSupportsASCII($encoding); - if (!$escape && !empty($ascii_fix)) { - $clear_fix = array(); - foreach ($ascii_fix as $utf8 => $native) $clear_fix[$utf8] = ''; - $str = strtr($str, $clear_fix); - } - $str = strtr($str, array_flip($ascii_fix)); - // Normal stuff - $str = iconv('utf-8', $encoding . '//IGNORE', $str); - restore_error_handler(); - return $str; - } elseif ($encoding === 'iso-8859-1') { - $str = utf8_decode($str); - restore_error_handler(); - return $str; - } - trigger_error('Encoding not supported', E_USER_ERROR); - } - - /** - * Lossless (character-wise) conversion of HTML to ASCII - * @param $str UTF-8 string to be converted to ASCII - * @returns ASCII encoded string with non-ASCII character entity-ized - * @warning Adapted from MediaWiki, claiming fair use: this is a common - * algorithm. If you disagree with this license fudgery, - * implement it yourself. - * @note Uses decimal numeric entities since they are best supported. - * @note This is a DUMB function: it has no concept of keeping - * character entities that the projected character encoding - * can allow. We could possibly implement a smart version - * but that would require it to also know which Unicode - * codepoints the charset supported (not an easy task). - * @note Sort of with cleanUTF8() but it assumes that $str is - * well-formed UTF-8 - */ - public static function convertToASCIIDumbLossless($str) { - $bytesleft = 0; - $result = ''; - $working = 0; - $len = strlen($str); - for( $i = 0; $i < $len; $i++ ) { - $bytevalue = ord( $str[$i] ); - if( $bytevalue <= 0x7F ) { //0xxx xxxx - $result .= chr( $bytevalue ); - $bytesleft = 0; - } elseif( $bytevalue <= 0xBF ) { //10xx xxxx - $working = $working << 6; - $working += ($bytevalue & 0x3F); - $bytesleft--; - if( $bytesleft <= 0 ) { - $result .= "&#" . $working . ";"; - } - } elseif( $bytevalue <= 0xDF ) { //110x xxxx - $working = $bytevalue & 0x1F; - $bytesleft = 1; - } elseif( $bytevalue <= 0xEF ) { //1110 xxxx - $working = $bytevalue & 0x0F; - $bytesleft = 2; - } else { //1111 0xxx - $working = $bytevalue & 0x07; - $bytesleft = 3; - } - } - return $result; - } - - /** - * This expensive function tests whether or not a given character - * encoding supports ASCII. 7/8-bit encodings like Shift_JIS will - * fail this test, and require special processing. Variable width - * encodings shouldn't ever fail. - * - * @param string $encoding Encoding name to test, as per iconv format - * @param bool $bypass Whether or not to bypass the precompiled arrays. - * @return Array of UTF-8 characters to their corresponding ASCII, - * which can be used to "undo" any overzealous iconv action. - */ - public static function testEncodingSupportsASCII($encoding, $bypass = false) { - static $encodings = array(); - if (!$bypass) { - if (isset($encodings[$encoding])) return $encodings[$encoding]; - $lenc = strtolower($encoding); - switch ($lenc) { - case 'shift_jis': - return array("\xC2\xA5" => '\\', "\xE2\x80\xBE" => '~'); - case 'johab': - return array("\xE2\x82\xA9" => '\\'); - } - if (strpos($lenc, 'iso-8859-') === 0) return array(); - } - $ret = array(); - set_error_handler(array('HTMLPurifier_Encoder', 'muteErrorHandler')); - if (iconv('UTF-8', $encoding, 'a') === false) return false; - for ($i = 0x20; $i <= 0x7E; $i++) { // all printable ASCII chars - $c = chr($i); // UTF-8 char - $r = iconv('UTF-8', "$encoding//IGNORE", $c); // initial conversion - if ( - $r === '' || - // This line is needed for iconv implementations that do not - // omit characters that do not exist in the target character set - ($r === $c && iconv($encoding, 'UTF-8//IGNORE', $r) !== $c) - ) { - // Reverse engineer: what's the UTF-8 equiv of this byte - // sequence? This assumes that there's no variable width - // encoding that doesn't support ASCII. - $ret[iconv($encoding, 'UTF-8//IGNORE', $c)] = $c; - } - } - restore_error_handler(); - $encodings[$encoding] = $ret; - return $ret; - } - - -} - -// vim: et sw=4 sts=4 diff --git a/libraries/plugins/IDS/vendors/htmlpurifier/HTMLPurifier/EntityLookup.php b/libraries/plugins/IDS/vendors/htmlpurifier/HTMLPurifier/EntityLookup.php deleted file mode 100644 index b4dfce9..0000000 --- a/libraries/plugins/IDS/vendors/htmlpurifier/HTMLPurifier/EntityLookup.php +++ /dev/null @@ -1,44 +0,0 @@ -table = unserialize(file_get_contents($file)); - } - - /** - * Retrieves sole instance of the object. - * @param Optional prototype of custom lookup table to overload with. - */ - public static function instance($prototype = false) { - // no references, since PHP doesn't copy unless modified - static $instance = null; - if ($prototype) { - $instance = $prototype; - } elseif (!$instance) { - $instance = new HTMLPurifier_EntityLookup(); - $instance->setup(); - } - return $instance; - } - -} - -// vim: et sw=4 sts=4 diff --git a/libraries/plugins/IDS/vendors/htmlpurifier/HTMLPurifier/EntityLookup/entities.ser b/libraries/plugins/IDS/vendors/htmlpurifier/HTMLPurifier/EntityLookup/entities.ser deleted file mode 100644 index e8b0812..0000000 --- a/libraries/plugins/IDS/vendors/htmlpurifier/HTMLPurifier/EntityLookup/entities.ser +++ /dev/null @@ -1 +0,0 @@ -a:253:{s:4:"fnof";s:2:"ƒ";s:5:"Alpha";s:2:"Α";s:4:"Beta";s:2:"Β";s:5:"Gamma";s:2:"Γ";s:5:"Delta";s:2:"Δ";s:7:"Epsilon";s:2:"Ε";s:4:"Zeta";s:2:"Ζ";s:3:"Eta";s:2:"Η";s:5:"Theta";s:2:"Θ";s:4:"Iota";s:2:"Ι";s:5:"Kappa";s:2:"Κ";s:6:"Lambda";s:2:"Λ";s:2:"Mu";s:2:"Μ";s:2:"Nu";s:2:"Ν";s:2:"Xi";s:2:"Ξ";s:7:"Omicron";s:2:"Ο";s:2:"Pi";s:2:"Π";s:3:"Rho";s:2:"Ρ";s:5:"Sigma";s:2:"Σ";s:3:"Tau";s:2:"Τ";s:7:"Upsilon";s:2:"Υ";s:3:"Phi";s:2:"Φ";s:3:"Chi";s:2:"Χ";s:3:"Psi";s:2:"Ψ";s:5:"Omega";s:2:"Ω";s:5:"alpha";s:2:"α";s:4:"beta";s:2:"β";s:5:"gamma";s:2:"γ";s:5:"delta";s:2:"δ";s:7:"epsilon";s:2:"ε";s:4:"zeta";s:2:"ζ";s:3:"eta";s:2:"η";s:5:"theta";s:2:"θ";s:4:"iota";s:2:"ι";s:5:"kappa";s:2:"κ";s:6:"lambda";s:2:"λ";s:2:"mu";s:2:"μ";s:2:"nu";s:2:"ν";s:2:"xi";s:2:"ξ";s:7:"omicron";s:2:"ο";s:2:"pi";s:2:"π";s:3:"rho";s:2:"ρ";s:6:"sigmaf";s:2:"ς";s:5:"sigma";s:2:"σ";s:3:"tau";s:2:"τ";s:7:"upsilon";s:2:"υ";s:3:"phi";s:2:"φ";s:3:"chi";s:2:"χ";s:3:"psi";s:2:"ψ";s:5:"omega";s:2:"ω";s:8:"thetasym";s:2:"ϑ";s:5:"upsih";s:2:"ϒ";s:3:"piv";s:2:"ϖ";s:4:"bull";s:3:"•";s:6:"hellip";s:3:"…";s:5:"prime";s:3:"′";s:5:"Prime";s:3:"″";s:5:"oline";s:3:"‾";s:5:"frasl";s:3:"⁄";s:6:"weierp";s:3:"℘";s:5:"image";s:3:"ℑ";s:4:"real";s:3:"ℜ";s:5:"trade";s:3:"™";s:7:"alefsym";s:3:"ℵ";s:4:"larr";s:3:"←";s:4:"uarr";s:3:"↑";s:4:"rarr";s:3:"→";s:4:"darr";s:3:"↓";s:4:"harr";s:3:"↔";s:5:"crarr";s:3:"↵";s:4:"lArr";s:3:"⇐";s:4:"uArr";s:3:"⇑";s:4:"rArr";s:3:"⇒";s:4:"dArr";s:3:"⇓";s:4:"hArr";s:3:"⇔";s:6:"forall";s:3:"∀";s:4:"part";s:3:"∂";s:5:"exist";s:3:"∃";s:5:"empty";s:3:"∅";s:5:"nabla";s:3:"∇";s:4:"isin";s:3:"∈";s:5:"notin";s:3:"∉";s:2:"ni";s:3:"∋";s:4:"prod";s:3:"∏";s:3:"sum";s:3:"∑";s:5:"minus";s:3:"−";s:6:"lowast";s:3:"∗";s:5:"radic";s:3:"√";s:4:"prop";s:3:"∝";s:5:"infin";s:3:"∞";s:3:"ang";s:3:"∠";s:3:"and";s:3:"∧";s:2:"or";s:3:"∨";s:3:"cap";s:3:"∩";s:3:"cup";s:3:"∪";s:3:"int";s:3:"∫";s:6:"there4";s:3:"∴";s:3:"sim";s:3:"∼";s:4:"cong";s:3:"≅";s:5:"asymp";s:3:"≈";s:2:"ne";s:3:"≠";s:5:"equiv";s:3:"≡";s:2:"le";s:3:"≤";s:2:"ge";s:3:"≥";s:3:"sub";s:3:"⊂";s:3:"sup";s:3:"⊃";s:4:"nsub";s:3:"⊄";s:4:"sube";s:3:"⊆";s:4:"supe";s:3:"⊇";s:5:"oplus";s:3:"⊕";s:6:"otimes";s:3:"⊗";s:4:"perp";s:3:"⊥";s:4:"sdot";s:3:"⋅";s:5:"lceil";s:3:"⌈";s:5:"rceil";s:3:"⌉";s:6:"lfloor";s:3:"⌊";s:6:"rfloor";s:3:"⌋";s:4:"lang";s:3:"〈";s:4:"rang";s:3:"〉";s:3:"loz";s:3:"◊";s:6:"spades";s:3:"♠";s:5:"clubs";s:3:"♣";s:6:"hearts";s:3:"♥";s:5:"diams";s:3:"♦";s:4:"quot";s:1:""";s:3:"amp";s:1:"&";s:2:"lt";s:1:"<";s:2:"gt";s:1:">";s:4:"apos";s:1:"'";s:5:"OElig";s:2:"Œ";s:5:"oelig";s:2:"œ";s:6:"Scaron";s:2:"Š";s:6:"scaron";s:2:"š";s:4:"Yuml";s:2:"Ÿ";s:4:"circ";s:2:"ˆ";s:5:"tilde";s:2:"˜";s:4:"ensp";s:3:" ";s:4:"emsp";s:3:" ";s:6:"thinsp";s:3:" ";s:4:"zwnj";s:3:"‌";s:3:"zwj";s:3:"‍";s:3:"lrm";s:3:"‎";s:3:"rlm";s:3:"‏";s:5:"ndash";s:3:"–";s:5:"mdash";s:3:"—";s:5:"lsquo";s:3:"‘";s:5:"rsquo";s:3:"’";s:5:"sbquo";s:3:"‚";s:5:"ldquo";s:3:"“";s:5:"rdquo";s:3:"”";s:5:"bdquo";s:3:"„";s:6:"dagger";s:3:"†";s:6:"Dagger";s:3:"‡";s:6:"permil";s:3:"‰";s:6:"lsaquo";s:3:"‹";s:6:"rsaquo";s:3:"›";s:4:"euro";s:3:"€";s:4:"nbsp";s:2:" ";s:5:"iexcl";s:2:"¡";s:4:"cent";s:2:"¢";s:5:"pound";s:2:"£";s:6:"curren";s:2:"¤";s:3:"yen";s:2:"¥";s:6:"brvbar";s:2:"¦";s:4:"sect";s:2:"§";s:3:"uml";s:2:"¨";s:4:"copy";s:2:"©";s:4:"ordf";s:2:"ª";s:5:"laquo";s:2:"«";s:3:"not";s:2:"¬";s:3:"shy";s:2:"­";s:3:"reg";s:2:"®";s:4:"macr";s:2:"¯";s:3:"deg";s:2:"°";s:6:"plusmn";s:2:"±";s:4:"sup2";s:2:"²";s:4:"sup3";s:2:"³";s:5:"acute";s:2:"´";s:5:"micro";s:2:"µ";s:4:"para";s:2:"¶";s:6:"middot";s:2:"·";s:5:"cedil";s:2:"¸";s:4:"sup1";s:2:"¹";s:4:"ordm";s:2:"º";s:5:"raquo";s:2:"»";s:6:"frac14";s:2:"¼";s:6:"frac12";s:2:"½";s:6:"frac34";s:2:"¾";s:6:"iquest";s:2:"¿";s:6:"Agrave";s:2:"À";s:6:"Aacute";s:2:"Á";s:5:"Acirc";s:2:"Â";s:6:"Atilde";s:2:"Ã";s:4:"Auml";s:2:"Ä";s:5:"Aring";s:2:"Å";s:5:"AElig";s:2:"Æ";s:6:"Ccedil";s:2:"Ç";s:6:"Egrave";s:2:"È";s:6:"Eacute";s:2:"É";s:5:"Ecirc";s:2:"Ê";s:4:"Euml";s:2:"Ë";s:6:"Igrave";s:2:"Ì";s:6:"Iacute";s:2:"Í";s:5:"Icirc";s:2:"Î";s:4:"Iuml";s:2:"Ï";s:3:"ETH";s:2:"Ð";s:6:"Ntilde";s:2:"Ñ";s:6:"Ograve";s:2:"Ò";s:6:"Oacute";s:2:"Ó";s:5:"Ocirc";s:2:"Ô";s:6:"Otilde";s:2:"Õ";s:4:"Ouml";s:2:"Ö";s:5:"times";s:2:"×";s:6:"Oslash";s:2:"Ø";s:6:"Ugrave";s:2:"Ù";s:6:"Uacute";s:2:"Ú";s:5:"Ucirc";s:2:"Û";s:4:"Uuml";s:2:"Ü";s:6:"Yacute";s:2:"Ý";s:5:"THORN";s:2:"Þ";s:5:"szlig";s:2:"ß";s:6:"agrave";s:2:"à";s:6:"aacute";s:2:"á";s:5:"acirc";s:2:"â";s:6:"atilde";s:2:"ã";s:4:"auml";s:2:"ä";s:5:"aring";s:2:"å";s:5:"aelig";s:2:"æ";s:6:"ccedil";s:2:"ç";s:6:"egrave";s:2:"è";s:6:"eacute";s:2:"é";s:5:"ecirc";s:2:"ê";s:4:"euml";s:2:"ë";s:6:"igrave";s:2:"ì";s:6:"iacute";s:2:"í";s:5:"icirc";s:2:"î";s:4:"iuml";s:2:"ï";s:3:"eth";s:2:"ð";s:6:"ntilde";s:2:"ñ";s:6:"ograve";s:2:"ò";s:6:"oacute";s:2:"ó";s:5:"ocirc";s:2:"ô";s:6:"otilde";s:2:"õ";s:4:"ouml";s:2:"ö";s:6:"divide";s:2:"÷";s:6:"oslash";s:2:"ø";s:6:"ugrave";s:2:"ù";s:6:"uacute";s:2:"ú";s:5:"ucirc";s:2:"û";s:4:"uuml";s:2:"ü";s:6:"yacute";s:2:"ý";s:5:"thorn";s:2:"þ";s:4:"yuml";s:2:"ÿ";} \ No newline at end of file diff --git a/libraries/plugins/IDS/vendors/htmlpurifier/HTMLPurifier/EntityParser.php b/libraries/plugins/IDS/vendors/htmlpurifier/HTMLPurifier/EntityParser.php deleted file mode 100644 index 8c38447..0000000 --- a/libraries/plugins/IDS/vendors/htmlpurifier/HTMLPurifier/EntityParser.php +++ /dev/null @@ -1,144 +0,0 @@ - '"', - 38 => '&', - 39 => "'", - 60 => '<', - 62 => '>' - ); - - /** - * Stripped entity names to decimal conversion table for special entities. - */ - protected $_special_ent2dec = - array( - 'quot' => 34, - 'amp' => 38, - 'lt' => 60, - 'gt' => 62 - ); - - /** - * Substitutes non-special entities with their parsed equivalents. Since - * running this whenever you have parsed character is t3h 5uck, we run - * it before everything else. - * - * @param $string String to have non-special entities parsed. - * @returns Parsed string. - */ - public function substituteNonSpecialEntities($string) { - // it will try to detect missing semicolons, but don't rely on it - return preg_replace_callback( - $this->_substituteEntitiesRegex, - array($this, 'nonSpecialEntityCallback'), - $string - ); - } - - /** - * Callback function for substituteNonSpecialEntities() that does the work. - * - * @param $matches PCRE matches array, with 0 the entire match, and - * either index 1, 2 or 3 set with a hex value, dec value, - * or string (respectively). - * @returns Replacement string. - */ - - protected function nonSpecialEntityCallback($matches) { - // replaces all but big five - $entity = $matches[0]; - $is_num = (@$matches[0][1] === '#'); - if ($is_num) { - $is_hex = (@$entity[2] === 'x'); - $code = $is_hex ? hexdec($matches[1]) : (int) $matches[2]; - - // abort for special characters - if (isset($this->_special_dec2str[$code])) return $entity; - - return HTMLPurifier_Encoder::unichr($code); - } else { - if (isset($this->_special_ent2dec[$matches[3]])) return $entity; - if (!$this->_entity_lookup) { - $this->_entity_lookup = HTMLPurifier_EntityLookup::instance(); - } - if (isset($this->_entity_lookup->table[$matches[3]])) { - return $this->_entity_lookup->table[$matches[3]]; - } else { - return $entity; - } - } - } - - /** - * Substitutes only special entities with their parsed equivalents. - * - * @notice We try to avoid calling this function because otherwise, it - * would have to be called a lot (for every parsed section). - * - * @param $string String to have non-special entities parsed. - * @returns Parsed string. - */ - public function substituteSpecialEntities($string) { - return preg_replace_callback( - $this->_substituteEntitiesRegex, - array($this, 'specialEntityCallback'), - $string); - } - - /** - * Callback function for substituteSpecialEntities() that does the work. - * - * This callback has same syntax as nonSpecialEntityCallback(). - * - * @param $matches PCRE-style matches array, with 0 the entire match, and - * either index 1, 2 or 3 set with a hex value, dec value, - * or string (respectively). - * @returns Replacement string. - */ - protected function specialEntityCallback($matches) { - $entity = $matches[0]; - $is_num = (@$matches[0][1] === '#'); - if ($is_num) { - $is_hex = (@$entity[2] === 'x'); - $int = $is_hex ? hexdec($matches[1]) : (int) $matches[2]; - return isset($this->_special_dec2str[$int]) ? - $this->_special_dec2str[$int] : - $entity; - } else { - return isset($this->_special_ent2dec[$matches[3]]) ? - $this->_special_ent2dec[$matches[3]] : - $entity; - } - } - -} - -// vim: et sw=4 sts=4 diff --git a/libraries/plugins/IDS/vendors/htmlpurifier/HTMLPurifier/ErrorCollector.php b/libraries/plugins/IDS/vendors/htmlpurifier/HTMLPurifier/ErrorCollector.php deleted file mode 100644 index 6713eaf..0000000 --- a/libraries/plugins/IDS/vendors/htmlpurifier/HTMLPurifier/ErrorCollector.php +++ /dev/null @@ -1,209 +0,0 @@ -locale =& $context->get('Locale'); - $this->context = $context; - $this->_current =& $this->_stacks[0]; - $this->errors =& $this->_stacks[0]; - } - - /** - * Sends an error message to the collector for later use - * @param $severity int Error severity, PHP error style (don't use E_USER_) - * @param $msg string Error message text - * @param $subst1 string First substitution for $msg - * @param $subst2 string ... - */ - public function send($severity, $msg) { - - $args = array(); - if (func_num_args() > 2) { - $args = func_get_args(); - array_shift($args); - unset($args[0]); - } - - $token = $this->context->get('CurrentToken', true); - $line = $token ? $token->line : $this->context->get('CurrentLine', true); - $col = $token ? $token->col : $this->context->get('CurrentCol', true); - $attr = $this->context->get('CurrentAttr', true); - - // perform special substitutions, also add custom parameters - $subst = array(); - if (!is_null($token)) { - $args['CurrentToken'] = $token; - } - if (!is_null($attr)) { - $subst['$CurrentAttr.Name'] = $attr; - if (isset($token->attr[$attr])) $subst['$CurrentAttr.Value'] = $token->attr[$attr]; - } - - if (empty($args)) { - $msg = $this->locale->getMessage($msg); - } else { - $msg = $this->locale->formatMessage($msg, $args); - } - - if (!empty($subst)) $msg = strtr($msg, $subst); - - // (numerically indexed) - $error = array( - self::LINENO => $line, - self::SEVERITY => $severity, - self::MESSAGE => $msg, - self::CHILDREN => array() - ); - $this->_current[] = $error; - - - // NEW CODE BELOW ... - - $struct = null; - // Top-level errors are either: - // TOKEN type, if $value is set appropriately, or - // "syntax" type, if $value is null - $new_struct = new HTMLPurifier_ErrorStruct(); - $new_struct->type = HTMLPurifier_ErrorStruct::TOKEN; - if ($token) $new_struct->value = clone $token; - if (is_int($line) && is_int($col)) { - if (isset($this->lines[$line][$col])) { - $struct = $this->lines[$line][$col]; - } else { - $struct = $this->lines[$line][$col] = $new_struct; - } - // These ksorts may present a performance problem - ksort($this->lines[$line], SORT_NUMERIC); - } else { - if (isset($this->lines[-1])) { - $struct = $this->lines[-1]; - } else { - $struct = $this->lines[-1] = $new_struct; - } - } - ksort($this->lines, SORT_NUMERIC); - - // Now, check if we need to operate on a lower structure - if (!empty($attr)) { - $struct = $struct->getChild(HTMLPurifier_ErrorStruct::ATTR, $attr); - if (!$struct->value) { - $struct->value = array($attr, 'PUT VALUE HERE'); - } - } - if (!empty($cssprop)) { - $struct = $struct->getChild(HTMLPurifier_ErrorStruct::CSSPROP, $cssprop); - if (!$struct->value) { - // if we tokenize CSS this might be a little more difficult to do - $struct->value = array($cssprop, 'PUT VALUE HERE'); - } - } - - // Ok, structs are all setup, now time to register the error - $struct->addError($severity, $msg); - } - - /** - * Retrieves raw error data for custom formatter to use - * @param List of arrays in format of array(line of error, - * error severity, error message, - * recursive sub-errors array) - */ - public function getRaw() { - return $this->errors; - } - - /** - * Default HTML formatting implementation for error messages - * @param $config Configuration array, vital for HTML output nature - * @param $errors Errors array to display; used for recursion. - */ - public function getHTMLFormatted($config, $errors = null) { - $ret = array(); - - $this->generator = new HTMLPurifier_Generator($config, $this->context); - if ($errors === null) $errors = $this->errors; - - // 'At line' message needs to be removed - - // generation code for new structure goes here. It needs to be recursive. - foreach ($this->lines as $line => $col_array) { - if ($line == -1) continue; - foreach ($col_array as $col => $struct) { - $this->_renderStruct($ret, $struct, $line, $col); - } - } - if (isset($this->lines[-1])) { - $this->_renderStruct($ret, $this->lines[-1]); - } - - if (empty($errors)) { - return '

' . $this->locale->getMessage('ErrorCollector: No errors') . '

'; - } else { - return '
  • ' . implode('
  • ', $ret) . '
'; - } - - } - - private function _renderStruct(&$ret, $struct, $line = null, $col = null) { - $stack = array($struct); - $context_stack = array(array()); - while ($current = array_pop($stack)) { - $context = array_pop($context_stack); - foreach ($current->errors as $error) { - list($severity, $msg) = $error; - $string = ''; - $string .= '
'; - // W3C uses an icon to indicate the severity of the error. - $error = $this->locale->getErrorName($severity); - $string .= "$error "; - if (!is_null($line) && !is_null($col)) { - $string .= "Line $line, Column $col: "; - } else { - $string .= 'End of Document: '; - } - $string .= '' . $this->generator->escape($msg) . ' '; - $string .= '
'; - // Here, have a marker for the character on the column appropriate. - // Be sure to clip extremely long lines. - //$string .= '
';
-                //$string .= '';
-                //$string .= '
'; - $ret[] = $string; - } - foreach ($current->children as $type => $array) { - $context[] = $current; - $stack = array_merge($stack, array_reverse($array, true)); - for ($i = count($array); $i > 0; $i--) { - $context_stack[] = $context; - } - } - } - } - -} - -// vim: et sw=4 sts=4 diff --git a/libraries/plugins/IDS/vendors/htmlpurifier/HTMLPurifier/ErrorStruct.php b/libraries/plugins/IDS/vendors/htmlpurifier/HTMLPurifier/ErrorStruct.php deleted file mode 100644 index 9bc8996..0000000 --- a/libraries/plugins/IDS/vendors/htmlpurifier/HTMLPurifier/ErrorStruct.php +++ /dev/null @@ -1,60 +0,0 @@ -children[$type][$id])) { - $this->children[$type][$id] = new HTMLPurifier_ErrorStruct(); - $this->children[$type][$id]->type = $type; - } - return $this->children[$type][$id]; - } - - public function addError($severity, $message) { - $this->errors[] = array($severity, $message); - } - -} - -// vim: et sw=4 sts=4 diff --git a/libraries/plugins/IDS/vendors/htmlpurifier/HTMLPurifier/Exception.php b/libraries/plugins/IDS/vendors/htmlpurifier/HTMLPurifier/Exception.php deleted file mode 100644 index be85b4c..0000000 --- a/libraries/plugins/IDS/vendors/htmlpurifier/HTMLPurifier/Exception.php +++ /dev/null @@ -1,12 +0,0 @@ -preFilter, - * 2->preFilter, 3->preFilter, purify, 3->postFilter, 2->postFilter, - * 1->postFilter. - * - * @note Methods are not declared abstract as it is perfectly legitimate - * for an implementation not to want anything to happen on a step - */ - -class HTMLPurifier_Filter -{ - - /** - * Name of the filter for identification purposes - */ - public $name; - - /** - * Pre-processor function, handles HTML before HTML Purifier - */ - public function preFilter($html, $config, $context) { - return $html; - } - - /** - * Post-processor function, handles HTML after HTML Purifier - */ - public function postFilter($html, $config, $context) { - return $html; - } - -} - -// vim: et sw=4 sts=4 diff --git a/libraries/plugins/IDS/vendors/htmlpurifier/HTMLPurifier/Filter/ExtractStyleBlocks.php b/libraries/plugins/IDS/vendors/htmlpurifier/HTMLPurifier/Filter/ExtractStyleBlocks.php deleted file mode 100644 index bbf78a6..0000000 --- a/libraries/plugins/IDS/vendors/htmlpurifier/HTMLPurifier/Filter/ExtractStyleBlocks.php +++ /dev/null @@ -1,135 +0,0 @@ - blocks from input HTML, cleans them up - * using CSSTidy, and then places them in $purifier->context->get('StyleBlocks') - * so they can be used elsewhere in the document. - * - * @note - * See tests/HTMLPurifier/Filter/ExtractStyleBlocksTest.php for - * sample usage. - * - * @note - * This filter can also be used on stylesheets not included in the - * document--something purists would probably prefer. Just directly - * call HTMLPurifier_Filter_ExtractStyleBlocks->cleanCSS() - */ -class HTMLPurifier_Filter_ExtractStyleBlocks extends HTMLPurifier_Filter -{ - - public $name = 'ExtractStyleBlocks'; - private $_styleMatches = array(); - private $_tidy; - - public function __construct() { - $this->_tidy = new csstidy(); - } - - /** - * Save the contents of CSS blocks to style matches - * @param $matches preg_replace style $matches array - */ - protected function styleCallback($matches) { - $this->_styleMatches[] = $matches[1]; - } - - /** - * Removes inline #isU', array($this, 'styleCallback'), $html); - $style_blocks = $this->_styleMatches; - $this->_styleMatches = array(); // reset - $context->register('StyleBlocks', $style_blocks); // $context must not be reused - if ($this->_tidy) { - foreach ($style_blocks as &$style) { - $style = $this->cleanCSS($style, $config, $context); - } - } - return $html; - } - - /** - * Takes CSS (the stuff found in in a font-family prop). - if ($config->get('Filter.ExtractStyleBlocks.Escaping')) { - $css = str_replace( - array('<', '>', '&'), - array('\3C ', '\3E ', '\26 '), - $css - ); - } - return $css; - } - -} - -// vim: et sw=4 sts=4 diff --git a/libraries/plugins/IDS/vendors/htmlpurifier/HTMLPurifier/Filter/YouTube.php b/libraries/plugins/IDS/vendors/htmlpurifier/HTMLPurifier/Filter/YouTube.php deleted file mode 100644 index 23df221..0000000 --- a/libraries/plugins/IDS/vendors/htmlpurifier/HTMLPurifier/Filter/YouTube.php +++ /dev/null @@ -1,39 +0,0 @@ -]+>.+?'. - 'http://www.youtube.com/((?:v|cp)/[A-Za-z0-9\-_=]+).+?#s'; - $pre_replace = '\1'; - return preg_replace($pre_regex, $pre_replace, $html); - } - - public function postFilter($html, $config, $context) { - $post_regex = '#((?:v|cp)/[A-Za-z0-9\-_=]+)#'; - return preg_replace_callback($post_regex, array($this, 'postFilterCallback'), $html); - } - - protected function armorUrl($url) { - return str_replace('--', '--', $url); - } - - protected function postFilterCallback($matches) { - $url = $this->armorUrl($matches[1]); - return ''. - ''. - ''. - ''; - - } -} - -// vim: et sw=4 sts=4 diff --git a/libraries/plugins/IDS/vendors/htmlpurifier/HTMLPurifier/Generator.php b/libraries/plugins/IDS/vendors/htmlpurifier/HTMLPurifier/Generator.php deleted file mode 100644 index fee1a5f..0000000 --- a/libraries/plugins/IDS/vendors/htmlpurifier/HTMLPurifier/Generator.php +++ /dev/null @@ -1,254 +0,0 @@ - tags - */ - private $_scriptFix = false; - - /** - * Cache of HTMLDefinition during HTML output to determine whether or - * not attributes should be minimized. - */ - private $_def; - - /** - * Cache of %Output.SortAttr - */ - private $_sortAttr; - - /** - * Cache of %Output.FlashCompat - */ - private $_flashCompat; - - /** - * Cache of %Output.FixInnerHTML - */ - private $_innerHTMLFix; - - /** - * Stack for keeping track of object information when outputting IE - * compatibility code. - */ - private $_flashStack = array(); - - /** - * Configuration for the generator - */ - protected $config; - - /** - * @param $config Instance of HTMLPurifier_Config - * @param $context Instance of HTMLPurifier_Context - */ - public function __construct($config, $context) { - $this->config = $config; - $this->_scriptFix = $config->get('Output.CommentScriptContents'); - $this->_innerHTMLFix = $config->get('Output.FixInnerHTML'); - $this->_sortAttr = $config->get('Output.SortAttr'); - $this->_flashCompat = $config->get('Output.FlashCompat'); - $this->_def = $config->getHTMLDefinition(); - $this->_xhtml = $this->_def->doctype->xml; - } - - /** - * Generates HTML from an array of tokens. - * @param $tokens Array of HTMLPurifier_Token - * @param $config HTMLPurifier_Config object - * @return Generated HTML - */ - public function generateFromTokens($tokens) { - if (!$tokens) return ''; - - // Basic algorithm - $html = ''; - for ($i = 0, $size = count($tokens); $i < $size; $i++) { - if ($this->_scriptFix && $tokens[$i]->name === 'script' - && $i + 2 < $size && $tokens[$i+2] instanceof HTMLPurifier_Token_End) { - // script special case - // the contents of the script block must be ONE token - // for this to work. - $html .= $this->generateFromToken($tokens[$i++]); - $html .= $this->generateScriptFromToken($tokens[$i++]); - } - $html .= $this->generateFromToken($tokens[$i]); - } - - // Tidy cleanup - if (extension_loaded('tidy') && $this->config->get('Output.TidyFormat')) { - $tidy = new Tidy; - $tidy->parseString($html, array( - 'indent'=> true, - 'output-xhtml' => $this->_xhtml, - 'show-body-only' => true, - 'indent-spaces' => 2, - 'wrap' => 68, - ), 'utf8'); - $tidy->cleanRepair(); - $html = (string) $tidy; // explicit cast necessary - } - - // Normalize newlines to system defined value - if ($this->config->get('Core.NormalizeNewlines')) { - $nl = $this->config->get('Output.Newline'); - if ($nl === null) $nl = PHP_EOL; - if ($nl !== "\n") $html = str_replace("\n", $nl, $html); - } - return $html; - } - - /** - * Generates HTML from a single token. - * @param $token HTMLPurifier_Token object. - * @return Generated HTML - */ - public function generateFromToken($token) { - if (!$token instanceof HTMLPurifier_Token) { - trigger_error('Cannot generate HTML from non-HTMLPurifier_Token object', E_USER_WARNING); - return ''; - - } elseif ($token instanceof HTMLPurifier_Token_Start) { - $attr = $this->generateAttributes($token->attr, $token->name); - if ($this->_flashCompat) { - if ($token->name == "object") { - $flash = new stdclass(); - $flash->attr = $token->attr; - $flash->param = array(); - $this->_flashStack[] = $flash; - } - } - return '<' . $token->name . ($attr ? ' ' : '') . $attr . '>'; - - } elseif ($token instanceof HTMLPurifier_Token_End) { - $_extra = ''; - if ($this->_flashCompat) { - if ($token->name == "object" && !empty($this->_flashStack)) { - // doesn't do anything for now - } - } - return $_extra . 'name . '>'; - - } elseif ($token instanceof HTMLPurifier_Token_Empty) { - if ($this->_flashCompat && $token->name == "param" && !empty($this->_flashStack)) { - $this->_flashStack[count($this->_flashStack)-1]->param[$token->attr['name']] = $token->attr['value']; - } - $attr = $this->generateAttributes($token->attr, $token->name); - return '<' . $token->name . ($attr ? ' ' : '') . $attr . - ( $this->_xhtml ? ' /': '' ) //
v.
- . '>'; - - } elseif ($token instanceof HTMLPurifier_Token_Text) { - return $this->escape($token->data, ENT_NOQUOTES); - - } elseif ($token instanceof HTMLPurifier_Token_Comment) { - return ''; - } else { - return ''; - - } - } - - /** - * Special case processor for the contents of script tags - * @warning This runs into problems if there's already a literal - * --> somewhere inside the script contents. - */ - public function generateScriptFromToken($token) { - if (!$token instanceof HTMLPurifier_Token_Text) return $this->generateFromToken($token); - // Thanks - $data = preg_replace('#//\s*$#', '', $token->data); - return ''; - } - - /** - * Generates attribute declarations from attribute array. - * @note This does not include the leading or trailing space. - * @param $assoc_array_of_attributes Attribute array - * @param $element Name of element attributes are for, used to check - * attribute minimization. - * @return Generate HTML fragment for insertion. - */ - public function generateAttributes($assoc_array_of_attributes, $element = false) { - $html = ''; - if ($this->_sortAttr) ksort($assoc_array_of_attributes); - foreach ($assoc_array_of_attributes as $key => $value) { - if (!$this->_xhtml) { - // Remove namespaced attributes - if (strpos($key, ':') !== false) continue; - // Check if we should minimize the attribute: val="val" -> val - if ($element && !empty($this->_def->info[$element]->attr[$key]->minimized)) { - $html .= $key . ' '; - continue; - } - } - // Workaround for Internet Explorer innerHTML bug. - // Essentially, Internet Explorer, when calculating - // innerHTML, omits quotes if there are no instances of - // angled brackets, quotes or spaces. However, when parsing - // HTML (for example, when you assign to innerHTML), it - // treats backticks as quotes. Thus, - // `` - // becomes - // `` - // becomes - // - // Fortunately, all we need to do is trigger an appropriate - // quoting style, which we do by adding an extra space. - // This also is consistent with the W3C spec, which states - // that user agents may ignore leading or trailing - // whitespace (in fact, most don't, at least for attributes - // like alt, but an extra space at the end is barely - // noticeable). Still, we have a configuration knob for - // this, since this transformation is not necesary if you - // don't process user input with innerHTML or you don't plan - // on supporting Internet Explorer. - if ($this->_innerHTMLFix) { - if (strpos($value, '`') !== false) { - // check if correct quoting style would not already be - // triggered - if (strcspn($value, '"\' <>') === strlen($value)) { - // protect! - $value .= ' '; - } - } - } - $html .= $key.'="'.$this->escape($value).'" '; - } - return rtrim($html); - } - - /** - * Escapes raw text data. - * @todo This really ought to be protected, but until we have a facility - * for properly generating HTML here w/o using tokens, it stays - * public. - * @param $string String data to escape for HTML. - * @param $quote Quoting style, like htmlspecialchars. ENT_NOQUOTES is - * permissible for non-attribute output. - * @return String escaped data. - */ - public function escape($string, $quote = null) { - // Workaround for APC bug on Mac Leopard reported by sidepodcast - // http://htmlpurifier.org/phorum/read.php?3,4823,4846 - if ($quote === null) $quote = ENT_COMPAT; - return htmlspecialchars($string, $quote, 'UTF-8'); - } - -} - -// vim: et sw=4 sts=4 diff --git a/libraries/plugins/IDS/vendors/htmlpurifier/HTMLPurifier/HTMLDefinition.php b/libraries/plugins/IDS/vendors/htmlpurifier/HTMLPurifier/HTMLDefinition.php deleted file mode 100644 index 33bb38a..0000000 --- a/libraries/plugins/IDS/vendors/htmlpurifier/HTMLPurifier/HTMLDefinition.php +++ /dev/null @@ -1,425 +0,0 @@ -getAnonymousModule(); - if (!isset($module->info[$element_name])) { - $element = $module->addBlankElement($element_name); - } else { - $element = $module->info[$element_name]; - } - $element->attr[$attr_name] = $def; - } - - /** - * Adds a custom element to your HTML definition - * @note See HTMLPurifier_HTMLModule::addElement for detailed - * parameter and return value descriptions. - */ - public function addElement($element_name, $type, $contents, $attr_collections, $attributes = array()) { - $module = $this->getAnonymousModule(); - // assume that if the user is calling this, the element - // is safe. This may not be a good idea - $element = $module->addElement($element_name, $type, $contents, $attr_collections, $attributes); - return $element; - } - - /** - * Adds a blank element to your HTML definition, for overriding - * existing behavior - * @note See HTMLPurifier_HTMLModule::addBlankElement for detailed - * parameter and return value descriptions. - */ - public function addBlankElement($element_name) { - $module = $this->getAnonymousModule(); - $element = $module->addBlankElement($element_name); - return $element; - } - - /** - * Retrieves a reference to the anonymous module, so you can - * bust out advanced features without having to make your own - * module. - */ - public function getAnonymousModule() { - if (!$this->_anonModule) { - $this->_anonModule = new HTMLPurifier_HTMLModule(); - $this->_anonModule->name = 'Anonymous'; - } - return $this->_anonModule; - } - - private $_anonModule; - - - // PUBLIC BUT INTERNAL VARIABLES -------------------------------------- - - public $type = 'HTML'; - public $manager; /**< Instance of HTMLPurifier_HTMLModuleManager */ - - /** - * Performs low-cost, preliminary initialization. - */ - public function __construct() { - $this->manager = new HTMLPurifier_HTMLModuleManager(); - } - - protected function doSetup($config) { - $this->processModules($config); - $this->setupConfigStuff($config); - unset($this->manager); - - // cleanup some of the element definitions - foreach ($this->info as $k => $v) { - unset($this->info[$k]->content_model); - unset($this->info[$k]->content_model_type); - } - } - - /** - * Extract out the information from the manager - */ - protected function processModules($config) { - - if ($this->_anonModule) { - // for user specific changes - // this is late-loaded so we don't have to deal with PHP4 - // reference wonky-ness - $this->manager->addModule($this->_anonModule); - unset($this->_anonModule); - } - - $this->manager->setup($config); - $this->doctype = $this->manager->doctype; - - foreach ($this->manager->modules as $module) { - foreach($module->info_tag_transform as $k => $v) { - if ($v === false) unset($this->info_tag_transform[$k]); - else $this->info_tag_transform[$k] = $v; - } - foreach($module->info_attr_transform_pre as $k => $v) { - if ($v === false) unset($this->info_attr_transform_pre[$k]); - else $this->info_attr_transform_pre[$k] = $v; - } - foreach($module->info_attr_transform_post as $k => $v) { - if ($v === false) unset($this->info_attr_transform_post[$k]); - else $this->info_attr_transform_post[$k] = $v; - } - foreach ($module->info_injector as $k => $v) { - if ($v === false) unset($this->info_injector[$k]); - else $this->info_injector[$k] = $v; - } - } - - $this->info = $this->manager->getElements(); - $this->info_content_sets = $this->manager->contentSets->lookup; - - } - - /** - * Sets up stuff based on config. We need a better way of doing this. - */ - protected function setupConfigStuff($config) { - - $block_wrapper = $config->get('HTML.BlockWrapper'); - if (isset($this->info_content_sets['Block'][$block_wrapper])) { - $this->info_block_wrapper = $block_wrapper; - } else { - trigger_error('Cannot use non-block element as block wrapper', - E_USER_ERROR); - } - - $parent = $config->get('HTML.Parent'); - $def = $this->manager->getElement($parent, true); - if ($def) { - $this->info_parent = $parent; - $this->info_parent_def = $def; - } else { - trigger_error('Cannot use unrecognized element as parent', - E_USER_ERROR); - $this->info_parent_def = $this->manager->getElement($this->info_parent, true); - } - - // support template text - $support = "(for information on implementing this, see the ". - "support forums) "; - - // setup allowed elements ----------------------------------------- - - $allowed_elements = $config->get('HTML.AllowedElements'); - $allowed_attributes = $config->get('HTML.AllowedAttributes'); // retrieve early - - if (!is_array($allowed_elements) && !is_array($allowed_attributes)) { - $allowed = $config->get('HTML.Allowed'); - if (is_string($allowed)) { - list($allowed_elements, $allowed_attributes) = $this->parseTinyMCEAllowedList($allowed); - } - } - - if (is_array($allowed_elements)) { - foreach ($this->info as $name => $d) { - if(!isset($allowed_elements[$name])) unset($this->info[$name]); - unset($allowed_elements[$name]); - } - // emit errors - foreach ($allowed_elements as $element => $d) { - $element = htmlspecialchars($element); // PHP doesn't escape errors, be careful! - trigger_error("Element '$element' is not supported $support", E_USER_WARNING); - } - } - - // setup allowed attributes --------------------------------------- - - $allowed_attributes_mutable = $allowed_attributes; // by copy! - if (is_array($allowed_attributes)) { - - // This actually doesn't do anything, since we went away from - // global attributes. It's possible that userland code uses - // it, but HTMLModuleManager doesn't! - foreach ($this->info_global_attr as $attr => $x) { - $keys = array($attr, "*@$attr", "*.$attr"); - $delete = true; - foreach ($keys as $key) { - if ($delete && isset($allowed_attributes[$key])) { - $delete = false; - } - if (isset($allowed_attributes_mutable[$key])) { - unset($allowed_attributes_mutable[$key]); - } - } - if ($delete) unset($this->info_global_attr[$attr]); - } - - foreach ($this->info as $tag => $info) { - foreach ($info->attr as $attr => $x) { - $keys = array("$tag@$attr", $attr, "*@$attr", "$tag.$attr", "*.$attr"); - $delete = true; - foreach ($keys as $key) { - if ($delete && isset($allowed_attributes[$key])) { - $delete = false; - } - if (isset($allowed_attributes_mutable[$key])) { - unset($allowed_attributes_mutable[$key]); - } - } - if ($delete) { - if ($this->info[$tag]->attr[$attr]->required) { - trigger_error("Required attribute '$attr' in element '$tag' was not allowed, which means '$tag' will not be allowed either", E_USER_WARNING); - } - unset($this->info[$tag]->attr[$attr]); - } - } - } - // emit errors - foreach ($allowed_attributes_mutable as $elattr => $d) { - $bits = preg_split('/[.@]/', $elattr, 2); - $c = count($bits); - switch ($c) { - case 2: - if ($bits[0] !== '*') { - $element = htmlspecialchars($bits[0]); - $attribute = htmlspecialchars($bits[1]); - if (!isset($this->info[$element])) { - trigger_error("Cannot allow attribute '$attribute' if element '$element' is not allowed/supported $support"); - } else { - trigger_error("Attribute '$attribute' in element '$element' not supported $support", - E_USER_WARNING); - } - break; - } - // otherwise fall through - case 1: - $attribute = htmlspecialchars($bits[0]); - trigger_error("Global attribute '$attribute' is not ". - "supported in any elements $support", - E_USER_WARNING); - break; - } - } - - } - - // setup forbidden elements --------------------------------------- - - $forbidden_elements = $config->get('HTML.ForbiddenElements'); - $forbidden_attributes = $config->get('HTML.ForbiddenAttributes'); - - foreach ($this->info as $tag => $info) { - if (isset($forbidden_elements[$tag])) { - unset($this->info[$tag]); - continue; - } - foreach ($info->attr as $attr => $x) { - if ( - isset($forbidden_attributes["$tag@$attr"]) || - isset($forbidden_attributes["*@$attr"]) || - isset($forbidden_attributes[$attr]) - ) { - unset($this->info[$tag]->attr[$attr]); - continue; - } // this segment might get removed eventually - elseif (isset($forbidden_attributes["$tag.$attr"])) { - // $tag.$attr are not user supplied, so no worries! - trigger_error("Error with $tag.$attr: tag.attr syntax not supported for HTML.ForbiddenAttributes; use tag@attr instead", E_USER_WARNING); - } - } - } - foreach ($forbidden_attributes as $key => $v) { - if (strlen($key) < 2) continue; - if ($key[0] != '*') continue; - if ($key[1] == '.') { - trigger_error("Error with $key: *.attr syntax not supported for HTML.ForbiddenAttributes; use attr instead", E_USER_WARNING); - } - } - - // setup injectors ----------------------------------------------------- - foreach ($this->info_injector as $i => $injector) { - if ($injector->checkNeeded($config) !== false) { - // remove injector that does not have it's required - // elements/attributes present, and is thus not needed. - unset($this->info_injector[$i]); - } - } - } - - /** - * Parses a TinyMCE-flavored Allowed Elements and Attributes list into - * separate lists for processing. Format is element[attr1|attr2],element2... - * @warning Although it's largely drawn from TinyMCE's implementation, - * it is different, and you'll probably have to modify your lists - * @param $list String list to parse - * @param array($allowed_elements, $allowed_attributes) - * @todo Give this its own class, probably static interface - */ - public function parseTinyMCEAllowedList($list) { - - $list = str_replace(array(' ', "\t"), '', $list); - - $elements = array(); - $attributes = array(); - - $chunks = preg_split('/(,|[\n\r]+)/', $list); - foreach ($chunks as $chunk) { - if (empty($chunk)) continue; - // remove TinyMCE element control characters - if (!strpos($chunk, '[')) { - $element = $chunk; - $attr = false; - } else { - list($element, $attr) = explode('[', $chunk); - } - if ($element !== '*') $elements[$element] = true; - if (!$attr) continue; - $attr = substr($attr, 0, strlen($attr) - 1); // remove trailing ] - $attr = explode('|', $attr); - foreach ($attr as $key) { - $attributes["$element.$key"] = true; - } - } - - return array($elements, $attributes); - - } - - -} - -// vim: et sw=4 sts=4 diff --git a/libraries/plugins/IDS/vendors/htmlpurifier/HTMLPurifier/HTMLModule.php b/libraries/plugins/IDS/vendors/htmlpurifier/HTMLPurifier/HTMLModule.php deleted file mode 100644 index 072cf68..0000000 --- a/libraries/plugins/IDS/vendors/htmlpurifier/HTMLPurifier/HTMLModule.php +++ /dev/null @@ -1,244 +0,0 @@ -info, since the object's data is only info, - * with extra behavior associated with it. - */ - public $attr_collections = array(); - - /** - * Associative array of deprecated tag name to HTMLPurifier_TagTransform - */ - public $info_tag_transform = array(); - - /** - * List of HTMLPurifier_AttrTransform to be performed before validation. - */ - public $info_attr_transform_pre = array(); - - /** - * List of HTMLPurifier_AttrTransform to be performed after validation. - */ - public $info_attr_transform_post = array(); - - /** - * List of HTMLPurifier_Injector to be performed during well-formedness fixing. - * An injector will only be invoked if all of it's pre-requisites are met; - * if an injector fails setup, there will be no error; it will simply be - * silently disabled. - */ - public $info_injector = array(); - - /** - * Boolean flag that indicates whether or not getChildDef is implemented. - * For optimization reasons: may save a call to a function. Be sure - * to set it if you do implement getChildDef(), otherwise it will have - * no effect! - */ - public $defines_child_def = false; - - /** - * Boolean flag whether or not this module is safe. If it is not safe, all - * of its members are unsafe. Modules are safe by default (this might be - * slightly dangerous, but it doesn't make much sense to force HTML Purifier, - * which is based off of safe HTML, to explicitly say, "This is safe," even - * though there are modules which are "unsafe") - * - * @note Previously, safety could be applied at an element level granularity. - * We've removed this ability, so in order to add "unsafe" elements - * or attributes, a dedicated module with this property set to false - * must be used. - */ - public $safe = true; - - /** - * Retrieves a proper HTMLPurifier_ChildDef subclass based on - * content_model and content_model_type member variables of - * the HTMLPurifier_ElementDef class. There is a similar function - * in HTMLPurifier_HTMLDefinition. - * @param $def HTMLPurifier_ElementDef instance - * @return HTMLPurifier_ChildDef subclass - */ - public function getChildDef($def) {return false;} - - // -- Convenience ----------------------------------------------------- - - /** - * Convenience function that sets up a new element - * @param $element Name of element to add - * @param $type What content set should element be registered to? - * Set as false to skip this step. - * @param $contents Allowed children in form of: - * "$content_model_type: $content_model" - * @param $attr_includes What attribute collections to register to - * element? - * @param $attr What unique attributes does the element define? - * @note See ElementDef for in-depth descriptions of these parameters. - * @return Created element definition object, so you - * can set advanced parameters - */ - public function addElement($element, $type, $contents, $attr_includes = array(), $attr = array()) { - $this->elements[] = $element; - // parse content_model - list($content_model_type, $content_model) = $this->parseContents($contents); - // merge in attribute inclusions - $this->mergeInAttrIncludes($attr, $attr_includes); - // add element to content sets - if ($type) $this->addElementToContentSet($element, $type); - // create element - $this->info[$element] = HTMLPurifier_ElementDef::create( - $content_model, $content_model_type, $attr - ); - // literal object $contents means direct child manipulation - if (!is_string($contents)) $this->info[$element]->child = $contents; - return $this->info[$element]; - } - - /** - * Convenience function that creates a totally blank, non-standalone - * element. - * @param $element Name of element to create - * @return Created element - */ - public function addBlankElement($element) { - if (!isset($this->info[$element])) { - $this->elements[] = $element; - $this->info[$element] = new HTMLPurifier_ElementDef(); - $this->info[$element]->standalone = false; - } else { - trigger_error("Definition for $element already exists in module, cannot redefine"); - } - return $this->info[$element]; - } - - /** - * Convenience function that registers an element to a content set - * @param Element to register - * @param Name content set (warning: case sensitive, usually upper-case - * first letter) - */ - public function addElementToContentSet($element, $type) { - if (!isset($this->content_sets[$type])) $this->content_sets[$type] = ''; - else $this->content_sets[$type] .= ' | '; - $this->content_sets[$type] .= $element; - } - - /** - * Convenience function that transforms single-string contents - * into separate content model and content model type - * @param $contents Allowed children in form of: - * "$content_model_type: $content_model" - * @note If contents is an object, an array of two nulls will be - * returned, and the callee needs to take the original $contents - * and use it directly. - */ - public function parseContents($contents) { - if (!is_string($contents)) return array(null, null); // defer - switch ($contents) { - // check for shorthand content model forms - case 'Empty': - return array('empty', ''); - case 'Inline': - return array('optional', 'Inline | #PCDATA'); - case 'Flow': - return array('optional', 'Flow | #PCDATA'); - } - list($content_model_type, $content_model) = explode(':', $contents); - $content_model_type = strtolower(trim($content_model_type)); - $content_model = trim($content_model); - return array($content_model_type, $content_model); - } - - /** - * Convenience function that merges a list of attribute includes into - * an attribute array. - * @param $attr Reference to attr array to modify - * @param $attr_includes Array of includes / string include to merge in - */ - public function mergeInAttrIncludes(&$attr, $attr_includes) { - if (!is_array($attr_includes)) { - if (empty($attr_includes)) $attr_includes = array(); - else $attr_includes = array($attr_includes); - } - $attr[0] = $attr_includes; - } - - /** - * Convenience function that generates a lookup table with boolean - * true as value. - * @param $list List of values to turn into a lookup - * @note You can also pass an arbitrary number of arguments in - * place of the regular argument - * @return Lookup array equivalent of list - */ - public function makeLookup($list) { - if (is_string($list)) $list = func_get_args(); - $ret = array(); - foreach ($list as $value) { - if (is_null($value)) continue; - $ret[$value] = true; - } - return $ret; - } - - /** - * Lazy load construction of the module after determining whether - * or not it's needed, and also when a finalized configuration object - * is available. - * @param $config Instance of HTMLPurifier_Config - */ - public function setup($config) {} - -} - -// vim: et sw=4 sts=4 diff --git a/libraries/plugins/IDS/vendors/htmlpurifier/HTMLPurifier/HTMLModule/Bdo.php b/libraries/plugins/IDS/vendors/htmlpurifier/HTMLPurifier/HTMLModule/Bdo.php deleted file mode 100644 index 3d66f1b..0000000 --- a/libraries/plugins/IDS/vendors/htmlpurifier/HTMLPurifier/HTMLModule/Bdo.php +++ /dev/null @@ -1,31 +0,0 @@ - array('dir' => false) - ); - - public function setup($config) { - $bdo = $this->addElement( - 'bdo', 'Inline', 'Inline', array('Core', 'Lang'), - array( - 'dir' => 'Enum#ltr,rtl', // required - // The Abstract Module specification has the attribute - // inclusions wrong for bdo: bdo allows Lang - ) - ); - $bdo->attr_transform_post['required-dir'] = new HTMLPurifier_AttrTransform_BdoDir(); - - $this->attr_collections['I18N']['dir'] = 'Enum#ltr,rtl'; - } - -} - -// vim: et sw=4 sts=4 diff --git a/libraries/plugins/IDS/vendors/htmlpurifier/HTMLPurifier/HTMLModule/CommonAttributes.php b/libraries/plugins/IDS/vendors/htmlpurifier/HTMLPurifier/HTMLModule/CommonAttributes.php deleted file mode 100644 index 7c15da8..0000000 --- a/libraries/plugins/IDS/vendors/htmlpurifier/HTMLPurifier/HTMLModule/CommonAttributes.php +++ /dev/null @@ -1,26 +0,0 @@ - array( - 0 => array('Style'), - // 'xml:space' => false, - 'class' => 'Class', - 'id' => 'ID', - 'title' => 'CDATA', - ), - 'Lang' => array(), - 'I18N' => array( - 0 => array('Lang'), // proprietary, for xml:lang/lang - ), - 'Common' => array( - 0 => array('Core', 'I18N') - ) - ); - -} - -// vim: et sw=4 sts=4 diff --git a/libraries/plugins/IDS/vendors/htmlpurifier/HTMLPurifier/HTMLModule/Edit.php b/libraries/plugins/IDS/vendors/htmlpurifier/HTMLPurifier/HTMLModule/Edit.php deleted file mode 100644 index ff93690..0000000 --- a/libraries/plugins/IDS/vendors/htmlpurifier/HTMLPurifier/HTMLModule/Edit.php +++ /dev/null @@ -1,38 +0,0 @@ - 'URI', - // 'datetime' => 'Datetime', // not implemented - ); - $this->addElement('del', 'Inline', $contents, 'Common', $attr); - $this->addElement('ins', 'Inline', $contents, 'Common', $attr); - } - - // HTML 4.01 specifies that ins/del must not contain block - // elements when used in an inline context, chameleon is - // a complicated workaround to acheive this effect - - // Inline context ! Block context (exclamation mark is - // separator, see getChildDef for parsing) - - public $defines_child_def = true; - public function getChildDef($def) { - if ($def->content_model_type != 'chameleon') return false; - $value = explode('!', $def->content_model); - return new HTMLPurifier_ChildDef_Chameleon($value[0], $value[1]); - } - -} - -// vim: et sw=4 sts=4 diff --git a/libraries/plugins/IDS/vendors/htmlpurifier/HTMLPurifier/HTMLModule/Forms.php b/libraries/plugins/IDS/vendors/htmlpurifier/HTMLPurifier/HTMLModule/Forms.php deleted file mode 100644 index 44c22f6..0000000 --- a/libraries/plugins/IDS/vendors/htmlpurifier/HTMLPurifier/HTMLModule/Forms.php +++ /dev/null @@ -1,118 +0,0 @@ - 'Form', - 'Inline' => 'Formctrl', - ); - - public function setup($config) { - $form = $this->addElement('form', 'Form', - 'Required: Heading | List | Block | fieldset', 'Common', array( - 'accept' => 'ContentTypes', - 'accept-charset' => 'Charsets', - 'action*' => 'URI', - 'method' => 'Enum#get,post', - // really ContentType, but these two are the only ones used today - 'enctype' => 'Enum#application/x-www-form-urlencoded,multipart/form-data', - )); - $form->excludes = array('form' => true); - - $input = $this->addElement('input', 'Formctrl', 'Empty', 'Common', array( - 'accept' => 'ContentTypes', - 'accesskey' => 'Character', - 'alt' => 'Text', - 'checked' => 'Bool#checked', - 'disabled' => 'Bool#disabled', - 'maxlength' => 'Number', - 'name' => 'CDATA', - 'readonly' => 'Bool#readonly', - 'size' => 'Number', - 'src' => 'URI#embeds', - 'tabindex' => 'Number', - 'type' => 'Enum#text,password,checkbox,button,radio,submit,reset,file,hidden,image', - 'value' => 'CDATA', - )); - $input->attr_transform_post[] = new HTMLPurifier_AttrTransform_Input(); - - $this->addElement('select', 'Formctrl', 'Required: optgroup | option', 'Common', array( - 'disabled' => 'Bool#disabled', - 'multiple' => 'Bool#multiple', - 'name' => 'CDATA', - 'size' => 'Number', - 'tabindex' => 'Number', - )); - - $this->addElement('option', false, 'Optional: #PCDATA', 'Common', array( - 'disabled' => 'Bool#disabled', - 'label' => 'Text', - 'selected' => 'Bool#selected', - 'value' => 'CDATA', - )); - // It's illegal for there to be more than one selected, but not - // be multiple. Also, no selected means undefined behavior. This might - // be difficult to implement; perhaps an injector, or a context variable. - - $textarea = $this->addElement('textarea', 'Formctrl', 'Optional: #PCDATA', 'Common', array( - 'accesskey' => 'Character', - 'cols*' => 'Number', - 'disabled' => 'Bool#disabled', - 'name' => 'CDATA', - 'readonly' => 'Bool#readonly', - 'rows*' => 'Number', - 'tabindex' => 'Number', - )); - $textarea->attr_transform_pre[] = new HTMLPurifier_AttrTransform_Textarea(); - - $button = $this->addElement('button', 'Formctrl', 'Optional: #PCDATA | Heading | List | Block | Inline', 'Common', array( - 'accesskey' => 'Character', - 'disabled' => 'Bool#disabled', - 'name' => 'CDATA', - 'tabindex' => 'Number', - 'type' => 'Enum#button,submit,reset', - 'value' => 'CDATA', - )); - - // For exclusions, ideally we'd specify content sets, not literal elements - $button->excludes = $this->makeLookup( - 'form', 'fieldset', // Form - 'input', 'select', 'textarea', 'label', 'button', // Formctrl - 'a' // as per HTML 4.01 spec, this is omitted by modularization - ); - - // Extra exclusion: img usemap="" is not permitted within this element. - // We'll omit this for now, since we don't have any good way of - // indicating it yet. - - // This is HIGHLY user-unfriendly; we need a custom child-def for this - $this->addElement('fieldset', 'Form', 'Custom: (#WS?,legend,(Flow|#PCDATA)*)', 'Common'); - - $label = $this->addElement('label', 'Formctrl', 'Optional: #PCDATA | Inline', 'Common', array( - 'accesskey' => 'Character', - // 'for' => 'IDREF', // IDREF not implemented, cannot allow - )); - $label->excludes = array('label' => true); - - $this->addElement('legend', false, 'Optional: #PCDATA | Inline', 'Common', array( - 'accesskey' => 'Character', - )); - - $this->addElement('optgroup', false, 'Required: option', 'Common', array( - 'disabled' => 'Bool#disabled', - 'label*' => 'Text', - )); - - // Don't forget an injector for . This one's a little complex - // because it maps to multiple elements. - - } -} - -// vim: et sw=4 sts=4 diff --git a/libraries/plugins/IDS/vendors/htmlpurifier/HTMLPurifier/HTMLModule/Hypertext.php b/libraries/plugins/IDS/vendors/htmlpurifier/HTMLPurifier/HTMLModule/Hypertext.php deleted file mode 100644 index d7e9bdd..0000000 --- a/libraries/plugins/IDS/vendors/htmlpurifier/HTMLPurifier/HTMLModule/Hypertext.php +++ /dev/null @@ -1,31 +0,0 @@ -addElement( - 'a', 'Inline', 'Inline', 'Common', - array( - // 'accesskey' => 'Character', - // 'charset' => 'Charset', - 'href' => 'URI', - // 'hreflang' => 'LanguageCode', - 'rel' => new HTMLPurifier_AttrDef_HTML_LinkTypes('rel'), - 'rev' => new HTMLPurifier_AttrDef_HTML_LinkTypes('rev'), - // 'tabindex' => 'Number', - // 'type' => 'ContentType', - ) - ); - $a->formatting = true; - $a->excludes = array('a' => true); - } - -} - -// vim: et sw=4 sts=4 diff --git a/libraries/plugins/IDS/vendors/htmlpurifier/HTMLPurifier/HTMLModule/Image.php b/libraries/plugins/IDS/vendors/htmlpurifier/HTMLPurifier/HTMLModule/Image.php deleted file mode 100644 index 948d435..0000000 --- a/libraries/plugins/IDS/vendors/htmlpurifier/HTMLPurifier/HTMLModule/Image.php +++ /dev/null @@ -1,40 +0,0 @@ -get('HTML.MaxImgLength'); - $img = $this->addElement( - 'img', 'Inline', 'Empty', 'Common', - array( - 'alt*' => 'Text', - // According to the spec, it's Length, but percents can - // be abused, so we allow only Pixels. - 'height' => 'Pixels#' . $max, - 'width' => 'Pixels#' . $max, - 'longdesc' => 'URI', - 'src*' => new HTMLPurifier_AttrDef_URI(true), // embedded - ) - ); - if ($max === null || $config->get('HTML.Trusted')) { - $img->attr['height'] = - $img->attr['width'] = 'Length'; - } - - // kind of strange, but splitting things up would be inefficient - $img->attr_transform_pre[] = - $img->attr_transform_post[] = - new HTMLPurifier_AttrTransform_ImgRequired(); - } - -} - -// vim: et sw=4 sts=4 diff --git a/libraries/plugins/IDS/vendors/htmlpurifier/HTMLPurifier/HTMLModule/Legacy.php b/libraries/plugins/IDS/vendors/htmlpurifier/HTMLPurifier/HTMLModule/Legacy.php deleted file mode 100644 index df33927..0000000 --- a/libraries/plugins/IDS/vendors/htmlpurifier/HTMLPurifier/HTMLModule/Legacy.php +++ /dev/null @@ -1,143 +0,0 @@ -addElement('basefont', 'Inline', 'Empty', false, array( - 'color' => 'Color', - 'face' => 'Text', // extremely broad, we should - 'size' => 'Text', // tighten it - 'id' => 'ID' - )); - $this->addElement('center', 'Block', 'Flow', 'Common'); - $this->addElement('dir', 'Block', 'Required: li', 'Common', array( - 'compact' => 'Bool#compact' - )); - $this->addElement('font', 'Inline', 'Inline', array('Core', 'I18N'), array( - 'color' => 'Color', - 'face' => 'Text', // extremely broad, we should - 'size' => 'Text', // tighten it - )); - $this->addElement('menu', 'Block', 'Required: li', 'Common', array( - 'compact' => 'Bool#compact' - )); - - $s = $this->addElement('s', 'Inline', 'Inline', 'Common'); - $s->formatting = true; - - $strike = $this->addElement('strike', 'Inline', 'Inline', 'Common'); - $strike->formatting = true; - - $u = $this->addElement('u', 'Inline', 'Inline', 'Common'); - $u->formatting = true; - - // setup modifications to old elements - - $align = 'Enum#left,right,center,justify'; - - $address = $this->addBlankElement('address'); - $address->content_model = 'Inline | #PCDATA | p'; - $address->content_model_type = 'optional'; - $address->child = false; - - $blockquote = $this->addBlankElement('blockquote'); - $blockquote->content_model = 'Flow | #PCDATA'; - $blockquote->content_model_type = 'optional'; - $blockquote->child = false; - - $br = $this->addBlankElement('br'); - $br->attr['clear'] = 'Enum#left,all,right,none'; - - $caption = $this->addBlankElement('caption'); - $caption->attr['align'] = 'Enum#top,bottom,left,right'; - - $div = $this->addBlankElement('div'); - $div->attr['align'] = $align; - - $dl = $this->addBlankElement('dl'); - $dl->attr['compact'] = 'Bool#compact'; - - for ($i = 1; $i <= 6; $i++) { - $h = $this->addBlankElement("h$i"); - $h->attr['align'] = $align; - } - - $hr = $this->addBlankElement('hr'); - $hr->attr['align'] = $align; - $hr->attr['noshade'] = 'Bool#noshade'; - $hr->attr['size'] = 'Pixels'; - $hr->attr['width'] = 'Length'; - - $img = $this->addBlankElement('img'); - $img->attr['align'] = 'Enum#top,middle,bottom,left,right'; - $img->attr['border'] = 'Pixels'; - $img->attr['hspace'] = 'Pixels'; - $img->attr['vspace'] = 'Pixels'; - - // figure out this integer business - - $li = $this->addBlankElement('li'); - $li->attr['value'] = new HTMLPurifier_AttrDef_Integer(); - $li->attr['type'] = 'Enum#s:1,i,I,a,A,disc,square,circle'; - - $ol = $this->addBlankElement('ol'); - $ol->attr['compact'] = 'Bool#compact'; - $ol->attr['start'] = new HTMLPurifier_AttrDef_Integer(); - $ol->attr['type'] = 'Enum#s:1,i,I,a,A'; - - $p = $this->addBlankElement('p'); - $p->attr['align'] = $align; - - $pre = $this->addBlankElement('pre'); - $pre->attr['width'] = 'Number'; - - // script omitted - - $table = $this->addBlankElement('table'); - $table->attr['align'] = 'Enum#left,center,right'; - $table->attr['bgcolor'] = 'Color'; - - $tr = $this->addBlankElement('tr'); - $tr->attr['bgcolor'] = 'Color'; - - $th = $this->addBlankElement('th'); - $th->attr['bgcolor'] = 'Color'; - $th->attr['height'] = 'Length'; - $th->attr['nowrap'] = 'Bool#nowrap'; - $th->attr['width'] = 'Length'; - - $td = $this->addBlankElement('td'); - $td->attr['bgcolor'] = 'Color'; - $td->attr['height'] = 'Length'; - $td->attr['nowrap'] = 'Bool#nowrap'; - $td->attr['width'] = 'Length'; - - $ul = $this->addBlankElement('ul'); - $ul->attr['compact'] = 'Bool#compact'; - $ul->attr['type'] = 'Enum#square,disc,circle'; - - } - -} - -// vim: et sw=4 sts=4 diff --git a/libraries/plugins/IDS/vendors/htmlpurifier/HTMLPurifier/HTMLModule/List.php b/libraries/plugins/IDS/vendors/htmlpurifier/HTMLPurifier/HTMLModule/List.php deleted file mode 100644 index 74d4522..0000000 --- a/libraries/plugins/IDS/vendors/htmlpurifier/HTMLPurifier/HTMLModule/List.php +++ /dev/null @@ -1,37 +0,0 @@ - 'List'); - - public function setup($config) { - $ol = $this->addElement('ol', 'List', 'Required: li', 'Common'); - $ol->wrap = "li"; - $ul = $this->addElement('ul', 'List', 'Required: li', 'Common'); - $ul->wrap = "li"; - $this->addElement('dl', 'List', 'Required: dt | dd', 'Common'); - - $this->addElement('li', false, 'Flow', 'Common'); - - $this->addElement('dd', false, 'Flow', 'Common'); - $this->addElement('dt', false, 'Inline', 'Common'); - } - -} - -// vim: et sw=4 sts=4 diff --git a/libraries/plugins/IDS/vendors/htmlpurifier/HTMLPurifier/HTMLModule/Name.php b/libraries/plugins/IDS/vendors/htmlpurifier/HTMLPurifier/HTMLModule/Name.php deleted file mode 100644 index 05694b4..0000000 --- a/libraries/plugins/IDS/vendors/htmlpurifier/HTMLPurifier/HTMLModule/Name.php +++ /dev/null @@ -1,21 +0,0 @@ -addBlankElement($name); - $element->attr['name'] = 'CDATA'; - if (!$config->get('HTML.Attr.Name.UseCDATA')) { - $element->attr_transform_post['NameSync'] = new HTMLPurifier_AttrTransform_NameSync(); - } - } - } - -} - -// vim: et sw=4 sts=4 diff --git a/libraries/plugins/IDS/vendors/htmlpurifier/HTMLPurifier/HTMLModule/Nofollow.php b/libraries/plugins/IDS/vendors/htmlpurifier/HTMLPurifier/HTMLModule/Nofollow.php deleted file mode 100644 index 3aa6654..0000000 --- a/libraries/plugins/IDS/vendors/htmlpurifier/HTMLPurifier/HTMLModule/Nofollow.php +++ /dev/null @@ -1,19 +0,0 @@ -addBlankElement('a'); - $a->attr_transform_post[] = new HTMLPurifier_AttrTransform_Nofollow(); - } - -} - -// vim: et sw=4 sts=4 diff --git a/libraries/plugins/IDS/vendors/htmlpurifier/HTMLPurifier/HTMLModule/NonXMLCommonAttributes.php b/libraries/plugins/IDS/vendors/htmlpurifier/HTMLPurifier/HTMLModule/NonXMLCommonAttributes.php deleted file mode 100644 index 5f1b14a..0000000 --- a/libraries/plugins/IDS/vendors/htmlpurifier/HTMLPurifier/HTMLModule/NonXMLCommonAttributes.php +++ /dev/null @@ -1,14 +0,0 @@ - array( - 'lang' => 'LanguageCode', - ) - ); -} - -// vim: et sw=4 sts=4 diff --git a/libraries/plugins/IDS/vendors/htmlpurifier/HTMLPurifier/HTMLModule/Object.php b/libraries/plugins/IDS/vendors/htmlpurifier/HTMLPurifier/HTMLModule/Object.php deleted file mode 100644 index 193c101..0000000 --- a/libraries/plugins/IDS/vendors/htmlpurifier/HTMLPurifier/HTMLModule/Object.php +++ /dev/null @@ -1,47 +0,0 @@ - to cater to legacy browsers: this - * module does not allow this sort of behavior - */ -class HTMLPurifier_HTMLModule_Object extends HTMLPurifier_HTMLModule -{ - - public $name = 'Object'; - public $safe = false; - - public function setup($config) { - - $this->addElement('object', 'Inline', 'Optional: #PCDATA | Flow | param', 'Common', - array( - 'archive' => 'URI', - 'classid' => 'URI', - 'codebase' => 'URI', - 'codetype' => 'Text', - 'data' => 'URI', - 'declare' => 'Bool#declare', - 'height' => 'Length', - 'name' => 'CDATA', - 'standby' => 'Text', - 'tabindex' => 'Number', - 'type' => 'ContentType', - 'width' => 'Length' - ) - ); - - $this->addElement('param', false, 'Empty', false, - array( - 'id' => 'ID', - 'name*' => 'Text', - 'type' => 'Text', - 'value' => 'Text', - 'valuetype' => 'Enum#data,ref,object' - ) - ); - - } - -} - -// vim: et sw=4 sts=4 diff --git a/libraries/plugins/IDS/vendors/htmlpurifier/HTMLPurifier/HTMLModule/Presentation.php b/libraries/plugins/IDS/vendors/htmlpurifier/HTMLPurifier/HTMLModule/Presentation.php deleted file mode 100644 index 8ff0b5e..0000000 --- a/libraries/plugins/IDS/vendors/htmlpurifier/HTMLPurifier/HTMLModule/Presentation.php +++ /dev/null @@ -1,36 +0,0 @@ -addElement('hr', 'Block', 'Empty', 'Common'); - $this->addElement('sub', 'Inline', 'Inline', 'Common'); - $this->addElement('sup', 'Inline', 'Inline', 'Common'); - $b = $this->addElement('b', 'Inline', 'Inline', 'Common'); - $b->formatting = true; - $big = $this->addElement('big', 'Inline', 'Inline', 'Common'); - $big->formatting = true; - $i = $this->addElement('i', 'Inline', 'Inline', 'Common'); - $i->formatting = true; - $small = $this->addElement('small', 'Inline', 'Inline', 'Common'); - $small->formatting = true; - $tt = $this->addElement('tt', 'Inline', 'Inline', 'Common'); - $tt->formatting = true; - } - -} - -// vim: et sw=4 sts=4 diff --git a/libraries/plugins/IDS/vendors/htmlpurifier/HTMLPurifier/HTMLModule/Proprietary.php b/libraries/plugins/IDS/vendors/htmlpurifier/HTMLPurifier/HTMLModule/Proprietary.php deleted file mode 100644 index dd36a3d..0000000 --- a/libraries/plugins/IDS/vendors/htmlpurifier/HTMLPurifier/HTMLModule/Proprietary.php +++ /dev/null @@ -1,33 +0,0 @@ -addElement('marquee', 'Inline', 'Flow', 'Common', - array( - 'direction' => 'Enum#left,right,up,down', - 'behavior' => 'Enum#alternate', - 'width' => 'Length', - 'height' => 'Length', - 'scrolldelay' => 'Number', - 'scrollamount' => 'Number', - 'loop' => 'Number', - 'bgcolor' => 'Color', - 'hspace' => 'Pixels', - 'vspace' => 'Pixels', - ) - ); - - } - -} - -// vim: et sw=4 sts=4 diff --git a/libraries/plugins/IDS/vendors/htmlpurifier/HTMLPurifier/HTMLModule/Ruby.php b/libraries/plugins/IDS/vendors/htmlpurifier/HTMLPurifier/HTMLModule/Ruby.php deleted file mode 100644 index b26a0a3..0000000 --- a/libraries/plugins/IDS/vendors/htmlpurifier/HTMLPurifier/HTMLModule/Ruby.php +++ /dev/null @@ -1,27 +0,0 @@ -addElement('ruby', 'Inline', - 'Custom: ((rb, (rt | (rp, rt, rp))) | (rbc, rtc, rtc?))', - 'Common'); - $this->addElement('rbc', false, 'Required: rb', 'Common'); - $this->addElement('rtc', false, 'Required: rt', 'Common'); - $rb = $this->addElement('rb', false, 'Inline', 'Common'); - $rb->excludes = array('ruby' => true); - $rt = $this->addElement('rt', false, 'Inline', 'Common', array('rbspan' => 'Number')); - $rt->excludes = array('ruby' => true); - $this->addElement('rp', false, 'Optional: #PCDATA', 'Common'); - } - -} - -// vim: et sw=4 sts=4 diff --git a/libraries/plugins/IDS/vendors/htmlpurifier/HTMLPurifier/HTMLModule/SafeEmbed.php b/libraries/plugins/IDS/vendors/htmlpurifier/HTMLPurifier/HTMLModule/SafeEmbed.php deleted file mode 100644 index 9f3758a..0000000 --- a/libraries/plugins/IDS/vendors/htmlpurifier/HTMLPurifier/HTMLModule/SafeEmbed.php +++ /dev/null @@ -1,34 +0,0 @@ -get('HTML.MaxImgLength'); - $embed = $this->addElement( - 'embed', 'Inline', 'Empty', 'Common', - array( - 'src*' => 'URI#embedded', - 'type' => 'Enum#application/x-shockwave-flash', - 'width' => 'Pixels#' . $max, - 'height' => 'Pixels#' . $max, - 'allowscriptaccess' => 'Enum#never', - 'allownetworking' => 'Enum#internal', - 'flashvars' => 'Text', - 'wmode' => 'Enum#window,transparent,opaque', - 'name' => 'ID', - ) - ); - $embed->attr_transform_post[] = new HTMLPurifier_AttrTransform_SafeEmbed(); - - } - -} - -// vim: et sw=4 sts=4 diff --git a/libraries/plugins/IDS/vendors/htmlpurifier/HTMLPurifier/HTMLModule/SafeObject.php b/libraries/plugins/IDS/vendors/htmlpurifier/HTMLPurifier/HTMLModule/SafeObject.php deleted file mode 100644 index 00da342..0000000 --- a/libraries/plugins/IDS/vendors/htmlpurifier/HTMLPurifier/HTMLModule/SafeObject.php +++ /dev/null @@ -1,52 +0,0 @@ -get('HTML.MaxImgLength'); - $object = $this->addElement( - 'object', - 'Inline', - 'Optional: param | Flow | #PCDATA', - 'Common', - array( - // While technically not required by the spec, we're forcing - // it to this value. - 'type' => 'Enum#application/x-shockwave-flash', - 'width' => 'Pixels#' . $max, - 'height' => 'Pixels#' . $max, - 'data' => 'URI#embedded', - 'codebase' => new HTMLPurifier_AttrDef_Enum(array( - 'http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,40,0')), - ) - ); - $object->attr_transform_post[] = new HTMLPurifier_AttrTransform_SafeObject(); - - $param = $this->addElement('param', false, 'Empty', false, - array( - 'id' => 'ID', - 'name*' => 'Text', - 'value' => 'Text' - ) - ); - $param->attr_transform_post[] = new HTMLPurifier_AttrTransform_SafeParam(); - $this->info_injector[] = 'SafeObject'; - - } - -} - -// vim: et sw=4 sts=4 diff --git a/libraries/plugins/IDS/vendors/htmlpurifier/HTMLPurifier/HTMLModule/Scripting.php b/libraries/plugins/IDS/vendors/htmlpurifier/HTMLPurifier/HTMLModule/Scripting.php deleted file mode 100644 index cecdea6..0000000 --- a/libraries/plugins/IDS/vendors/htmlpurifier/HTMLPurifier/HTMLModule/Scripting.php +++ /dev/null @@ -1,54 +0,0 @@ - 'script | noscript', 'Inline' => 'script | noscript'); - public $safe = false; - - public function setup($config) { - // TODO: create custom child-definition for noscript that - // auto-wraps stray #PCDATA in a similar manner to - // blockquote's custom definition (we would use it but - // blockquote's contents are optional while noscript's contents - // are required) - - // TODO: convert this to new syntax, main problem is getting - // both content sets working - - // In theory, this could be safe, but I don't see any reason to - // allow it. - $this->info['noscript'] = new HTMLPurifier_ElementDef(); - $this->info['noscript']->attr = array( 0 => array('Common') ); - $this->info['noscript']->content_model = 'Heading | List | Block'; - $this->info['noscript']->content_model_type = 'required'; - - $this->info['script'] = new HTMLPurifier_ElementDef(); - $this->info['script']->attr = array( - 'defer' => new HTMLPurifier_AttrDef_Enum(array('defer')), - 'src' => new HTMLPurifier_AttrDef_URI(true), - 'type' => new HTMLPurifier_AttrDef_Enum(array('text/javascript')) - ); - $this->info['script']->content_model = '#PCDATA'; - $this->info['script']->content_model_type = 'optional'; - $this->info['script']->attr_transform_pre['type'] = - $this->info['script']->attr_transform_post['type'] = - new HTMLPurifier_AttrTransform_ScriptRequired(); - } -} - -// vim: et sw=4 sts=4 diff --git a/libraries/plugins/IDS/vendors/htmlpurifier/HTMLPurifier/HTMLModule/StyleAttribute.php b/libraries/plugins/IDS/vendors/htmlpurifier/HTMLPurifier/HTMLModule/StyleAttribute.php deleted file mode 100644 index eb78464..0000000 --- a/libraries/plugins/IDS/vendors/htmlpurifier/HTMLPurifier/HTMLModule/StyleAttribute.php +++ /dev/null @@ -1,24 +0,0 @@ - array('style' => false), // see constructor - 'Core' => array(0 => array('Style')) - ); - - public function setup($config) { - $this->attr_collections['Style']['style'] = new HTMLPurifier_AttrDef_CSS(); - } - -} - -// vim: et sw=4 sts=4 diff --git a/libraries/plugins/IDS/vendors/htmlpurifier/HTMLPurifier/HTMLModule/Tables.php b/libraries/plugins/IDS/vendors/htmlpurifier/HTMLPurifier/HTMLModule/Tables.php deleted file mode 100644 index f314ced..0000000 --- a/libraries/plugins/IDS/vendors/htmlpurifier/HTMLPurifier/HTMLModule/Tables.php +++ /dev/null @@ -1,66 +0,0 @@ -addElement('caption', false, 'Inline', 'Common'); - - $this->addElement('table', 'Block', - new HTMLPurifier_ChildDef_Table(), 'Common', - array( - 'border' => 'Pixels', - 'cellpadding' => 'Length', - 'cellspacing' => 'Length', - 'frame' => 'Enum#void,above,below,hsides,lhs,rhs,vsides,box,border', - 'rules' => 'Enum#none,groups,rows,cols,all', - 'summary' => 'Text', - 'width' => 'Length' - ) - ); - - // common attributes - $cell_align = array( - 'align' => 'Enum#left,center,right,justify,char', - 'charoff' => 'Length', - 'valign' => 'Enum#top,middle,bottom,baseline', - ); - - $cell_t = array_merge( - array( - 'abbr' => 'Text', - 'colspan' => 'Number', - 'rowspan' => 'Number', - ), - $cell_align - ); - $this->addElement('td', false, 'Flow', 'Common', $cell_t); - $this->addElement('th', false, 'Flow', 'Common', $cell_t); - - $this->addElement('tr', false, 'Required: td | th', 'Common', $cell_align); - - $cell_col = array_merge( - array( - 'span' => 'Number', - 'width' => 'MultiLength', - ), - $cell_align - ); - $this->addElement('col', false, 'Empty', 'Common', $cell_col); - $this->addElement('colgroup', false, 'Optional: col', 'Common', $cell_col); - - $this->addElement('tbody', false, 'Required: tr', 'Common', $cell_align); - $this->addElement('thead', false, 'Required: tr', 'Common', $cell_align); - $this->addElement('tfoot', false, 'Required: tr', 'Common', $cell_align); - - } - -} - -// vim: et sw=4 sts=4 diff --git a/libraries/plugins/IDS/vendors/htmlpurifier/HTMLPurifier/HTMLModule/Target.php b/libraries/plugins/IDS/vendors/htmlpurifier/HTMLPurifier/HTMLModule/Target.php deleted file mode 100644 index 2b844ec..0000000 --- a/libraries/plugins/IDS/vendors/htmlpurifier/HTMLPurifier/HTMLModule/Target.php +++ /dev/null @@ -1,23 +0,0 @@ -addBlankElement($name); - $e->attr = array( - 'target' => new HTMLPurifier_AttrDef_HTML_FrameTarget() - ); - } - } - -} - -// vim: et sw=4 sts=4 diff --git a/libraries/plugins/IDS/vendors/htmlpurifier/HTMLPurifier/HTMLModule/Text.php b/libraries/plugins/IDS/vendors/htmlpurifier/HTMLPurifier/HTMLModule/Text.php deleted file mode 100644 index ae77c71..0000000 --- a/libraries/plugins/IDS/vendors/htmlpurifier/HTMLPurifier/HTMLModule/Text.php +++ /dev/null @@ -1,71 +0,0 @@ - 'Heading | Block | Inline' - ); - - public function setup($config) { - - // Inline Phrasal ------------------------------------------------- - $this->addElement('abbr', 'Inline', 'Inline', 'Common'); - $this->addElement('acronym', 'Inline', 'Inline', 'Common'); - $this->addElement('cite', 'Inline', 'Inline', 'Common'); - $this->addElement('dfn', 'Inline', 'Inline', 'Common'); - $this->addElement('kbd', 'Inline', 'Inline', 'Common'); - $this->addElement('q', 'Inline', 'Inline', 'Common', array('cite' => 'URI')); - $this->addElement('samp', 'Inline', 'Inline', 'Common'); - $this->addElement('var', 'Inline', 'Inline', 'Common'); - - $em = $this->addElement('em', 'Inline', 'Inline', 'Common'); - $em->formatting = true; - - $strong = $this->addElement('strong', 'Inline', 'Inline', 'Common'); - $strong->formatting = true; - - $code = $this->addElement('code', 'Inline', 'Inline', 'Common'); - $code->formatting = true; - - // Inline Structural ---------------------------------------------- - $this->addElement('span', 'Inline', 'Inline', 'Common'); - $this->addElement('br', 'Inline', 'Empty', 'Core'); - - // Block Phrasal -------------------------------------------------- - $this->addElement('address', 'Block', 'Inline', 'Common'); - $this->addElement('blockquote', 'Block', 'Optional: Heading | Block | List', 'Common', array('cite' => 'URI') ); - $pre = $this->addElement('pre', 'Block', 'Inline', 'Common'); - $pre->excludes = $this->makeLookup( - 'img', 'big', 'small', 'object', 'applet', 'font', 'basefont' ); - $this->addElement('h1', 'Heading', 'Inline', 'Common'); - $this->addElement('h2', 'Heading', 'Inline', 'Common'); - $this->addElement('h3', 'Heading', 'Inline', 'Common'); - $this->addElement('h4', 'Heading', 'Inline', 'Common'); - $this->addElement('h5', 'Heading', 'Inline', 'Common'); - $this->addElement('h6', 'Heading', 'Inline', 'Common'); - - // Block Structural ----------------------------------------------- - $p = $this->addElement('p', 'Block', 'Inline', 'Common'); - $p->autoclose = array_flip(array("address", "blockquote", "center", "dir", "div", "dl", "fieldset", "ol", "p", "ul")); - - $this->addElement('div', 'Block', 'Flow', 'Common'); - - } - -} - -// vim: et sw=4 sts=4 diff --git a/libraries/plugins/IDS/vendors/htmlpurifier/HTMLPurifier/HTMLModule/Tidy.php b/libraries/plugins/IDS/vendors/htmlpurifier/HTMLPurifier/HTMLModule/Tidy.php deleted file mode 100644 index 21783f1..0000000 --- a/libraries/plugins/IDS/vendors/htmlpurifier/HTMLPurifier/HTMLModule/Tidy.php +++ /dev/null @@ -1,207 +0,0 @@ - 'none', 'light', 'medium', 'heavy'); - - /** - * Default level to place all fixes in. Disabled by default - */ - public $defaultLevel = null; - - /** - * Lists of fixes used by getFixesForLevel(). Format is: - * HTMLModule_Tidy->fixesForLevel[$level] = array('fix-1', 'fix-2'); - */ - public $fixesForLevel = array( - 'light' => array(), - 'medium' => array(), - 'heavy' => array() - ); - - /** - * Lazy load constructs the module by determining the necessary - * fixes to create and then delegating to the populate() function. - * @todo Wildcard matching and error reporting when an added or - * subtracted fix has no effect. - */ - public function setup($config) { - - // create fixes, initialize fixesForLevel - $fixes = $this->makeFixes(); - $this->makeFixesForLevel($fixes); - - // figure out which fixes to use - $level = $config->get('HTML.TidyLevel'); - $fixes_lookup = $this->getFixesForLevel($level); - - // get custom fix declarations: these need namespace processing - $add_fixes = $config->get('HTML.TidyAdd'); - $remove_fixes = $config->get('HTML.TidyRemove'); - - foreach ($fixes as $name => $fix) { - // needs to be refactored a little to implement globbing - if ( - isset($remove_fixes[$name]) || - (!isset($add_fixes[$name]) && !isset($fixes_lookup[$name])) - ) { - unset($fixes[$name]); - } - } - - // populate this module with necessary fixes - $this->populate($fixes); - - } - - /** - * Retrieves all fixes per a level, returning fixes for that specific - * level as well as all levels below it. - * @param $level String level identifier, see $levels for valid values - * @return Lookup up table of fixes - */ - public function getFixesForLevel($level) { - if ($level == $this->levels[0]) { - return array(); - } - $activated_levels = array(); - for ($i = 1, $c = count($this->levels); $i < $c; $i++) { - $activated_levels[] = $this->levels[$i]; - if ($this->levels[$i] == $level) break; - } - if ($i == $c) { - trigger_error( - 'Tidy level ' . htmlspecialchars($level) . ' not recognized', - E_USER_WARNING - ); - return array(); - } - $ret = array(); - foreach ($activated_levels as $level) { - foreach ($this->fixesForLevel[$level] as $fix) { - $ret[$fix] = true; - } - } - return $ret; - } - - /** - * Dynamically populates the $fixesForLevel member variable using - * the fixes array. It may be custom overloaded, used in conjunction - * with $defaultLevel, or not used at all. - */ - public function makeFixesForLevel($fixes) { - if (!isset($this->defaultLevel)) return; - if (!isset($this->fixesForLevel[$this->defaultLevel])) { - trigger_error( - 'Default level ' . $this->defaultLevel . ' does not exist', - E_USER_ERROR - ); - return; - } - $this->fixesForLevel[$this->defaultLevel] = array_keys($fixes); - } - - /** - * Populates the module with transforms and other special-case code - * based on a list of fixes passed to it - * @param $lookup Lookup table of fixes to activate - */ - public function populate($fixes) { - foreach ($fixes as $name => $fix) { - // determine what the fix is for - list($type, $params) = $this->getFixType($name); - switch ($type) { - case 'attr_transform_pre': - case 'attr_transform_post': - $attr = $params['attr']; - if (isset($params['element'])) { - $element = $params['element']; - if (empty($this->info[$element])) { - $e = $this->addBlankElement($element); - } else { - $e = $this->info[$element]; - } - } else { - $type = "info_$type"; - $e = $this; - } - // PHP does some weird parsing when I do - // $e->$type[$attr], so I have to assign a ref. - $f =& $e->$type; - $f[$attr] = $fix; - break; - case 'tag_transform': - $this->info_tag_transform[$params['element']] = $fix; - break; - case 'child': - case 'content_model_type': - $element = $params['element']; - if (empty($this->info[$element])) { - $e = $this->addBlankElement($element); - } else { - $e = $this->info[$element]; - } - $e->$type = $fix; - break; - default: - trigger_error("Fix type $type not supported", E_USER_ERROR); - break; - } - } - } - - /** - * Parses a fix name and determines what kind of fix it is, as well - * as other information defined by the fix - * @param $name String name of fix - * @return array(string $fix_type, array $fix_parameters) - * @note $fix_parameters is type dependant, see populate() for usage - * of these parameters - */ - public function getFixType($name) { - // parse it - $property = $attr = null; - if (strpos($name, '#') !== false) list($name, $property) = explode('#', $name); - if (strpos($name, '@') !== false) list($name, $attr) = explode('@', $name); - - // figure out the parameters - $params = array(); - if ($name !== '') $params['element'] = $name; - if (!is_null($attr)) $params['attr'] = $attr; - - // special case: attribute transform - if (!is_null($attr)) { - if (is_null($property)) $property = 'pre'; - $type = 'attr_transform_' . $property; - return array($type, $params); - } - - // special case: tag transform - if (is_null($property)) { - return array('tag_transform', $params); - } - - return array($property, $params); - - } - - /** - * Defines all fixes the module will perform in a compact - * associative array of fix name to fix implementation. - */ - public function makeFixes() {} - -} - -// vim: et sw=4 sts=4 diff --git a/libraries/plugins/IDS/vendors/htmlpurifier/HTMLPurifier/HTMLModule/Tidy/Name.php b/libraries/plugins/IDS/vendors/htmlpurifier/HTMLPurifier/HTMLModule/Tidy/Name.php deleted file mode 100644 index 61ff85c..0000000 --- a/libraries/plugins/IDS/vendors/htmlpurifier/HTMLPurifier/HTMLModule/Tidy/Name.php +++ /dev/null @@ -1,24 +0,0 @@ -content_model_type != 'strictblockquote') return parent::getChildDef($def); - return new HTMLPurifier_ChildDef_StrictBlockquote($def->content_model); - } -} - -// vim: et sw=4 sts=4 diff --git a/libraries/plugins/IDS/vendors/htmlpurifier/HTMLPurifier/HTMLModule/Tidy/Transitional.php b/libraries/plugins/IDS/vendors/htmlpurifier/HTMLPurifier/HTMLModule/Tidy/Transitional.php deleted file mode 100644 index 9960b1d..0000000 --- a/libraries/plugins/IDS/vendors/htmlpurifier/HTMLPurifier/HTMLModule/Tidy/Transitional.php +++ /dev/null @@ -1,9 +0,0 @@ - 'text-align:left;', - 'right' => 'text-align:right;', - 'top' => 'caption-side:top;', - 'bottom' => 'caption-side:bottom;' // not supported by IE - )); - - // @align for img ------------------------------------------------- - $r['img@align'] = - new HTMLPurifier_AttrTransform_EnumToCSS('align', array( - 'left' => 'float:left;', - 'right' => 'float:right;', - 'top' => 'vertical-align:top;', - 'middle' => 'vertical-align:middle;', - 'bottom' => 'vertical-align:baseline;', - )); - - // @align for table ----------------------------------------------- - $r['table@align'] = - new HTMLPurifier_AttrTransform_EnumToCSS('align', array( - 'left' => 'float:left;', - 'center' => 'margin-left:auto;margin-right:auto;', - 'right' => 'float:right;' - )); - - // @align for hr ----------------------------------------------- - $r['hr@align'] = - new HTMLPurifier_AttrTransform_EnumToCSS('align', array( - // we use both text-align and margin because these work - // for different browsers (IE and Firefox, respectively) - // and the melange makes for a pretty cross-compatible - // solution - 'left' => 'margin-left:0;margin-right:auto;text-align:left;', - 'center' => 'margin-left:auto;margin-right:auto;text-align:center;', - 'right' => 'margin-left:auto;margin-right:0;text-align:right;' - )); - - // @align for h1, h2, h3, h4, h5, h6, p, div ---------------------- - // {{{ - $align_lookup = array(); - $align_values = array('left', 'right', 'center', 'justify'); - foreach ($align_values as $v) $align_lookup[$v] = "text-align:$v;"; - // }}} - $r['h1@align'] = - $r['h2@align'] = - $r['h3@align'] = - $r['h4@align'] = - $r['h5@align'] = - $r['h6@align'] = - $r['p@align'] = - $r['div@align'] = - new HTMLPurifier_AttrTransform_EnumToCSS('align', $align_lookup); - - // @bgcolor for table, tr, td, th --------------------------------- - $r['table@bgcolor'] = - $r['td@bgcolor'] = - $r['th@bgcolor'] = - new HTMLPurifier_AttrTransform_BgColor(); - - // @border for img ------------------------------------------------ - $r['img@border'] = new HTMLPurifier_AttrTransform_Border(); - - // @clear for br -------------------------------------------------- - $r['br@clear'] = - new HTMLPurifier_AttrTransform_EnumToCSS('clear', array( - 'left' => 'clear:left;', - 'right' => 'clear:right;', - 'all' => 'clear:both;', - 'none' => 'clear:none;', - )); - - // @height for td, th --------------------------------------------- - $r['td@height'] = - $r['th@height'] = - new HTMLPurifier_AttrTransform_Length('height'); - - // @hspace for img ------------------------------------------------ - $r['img@hspace'] = new HTMLPurifier_AttrTransform_ImgSpace('hspace'); - - // @noshade for hr ------------------------------------------------ - // this transformation is not precise but often good enough. - // different browsers use different styles to designate noshade - $r['hr@noshade'] = - new HTMLPurifier_AttrTransform_BoolToCSS( - 'noshade', - 'color:#808080;background-color:#808080;border:0;' - ); - - // @nowrap for td, th --------------------------------------------- - $r['td@nowrap'] = - $r['th@nowrap'] = - new HTMLPurifier_AttrTransform_BoolToCSS( - 'nowrap', - 'white-space:nowrap;' - ); - - // @size for hr -------------------------------------------------- - $r['hr@size'] = new HTMLPurifier_AttrTransform_Length('size', 'height'); - - // @type for li, ol, ul ------------------------------------------- - // {{{ - $ul_types = array( - 'disc' => 'list-style-type:disc;', - 'square' => 'list-style-type:square;', - 'circle' => 'list-style-type:circle;' - ); - $ol_types = array( - '1' => 'list-style-type:decimal;', - 'i' => 'list-style-type:lower-roman;', - 'I' => 'list-style-type:upper-roman;', - 'a' => 'list-style-type:lower-alpha;', - 'A' => 'list-style-type:upper-alpha;' - ); - $li_types = $ul_types + $ol_types; - // }}} - - $r['ul@type'] = new HTMLPurifier_AttrTransform_EnumToCSS('type', $ul_types); - $r['ol@type'] = new HTMLPurifier_AttrTransform_EnumToCSS('type', $ol_types, true); - $r['li@type'] = new HTMLPurifier_AttrTransform_EnumToCSS('type', $li_types, true); - - // @vspace for img ------------------------------------------------ - $r['img@vspace'] = new HTMLPurifier_AttrTransform_ImgSpace('vspace'); - - // @width for hr, td, th ------------------------------------------ - $r['td@width'] = - $r['th@width'] = - $r['hr@width'] = new HTMLPurifier_AttrTransform_Length('width'); - - return $r; - - } - -} - -// vim: et sw=4 sts=4 diff --git a/libraries/plugins/IDS/vendors/htmlpurifier/HTMLPurifier/HTMLModule/XMLCommonAttributes.php b/libraries/plugins/IDS/vendors/htmlpurifier/HTMLPurifier/HTMLModule/XMLCommonAttributes.php deleted file mode 100644 index 9c0e031..0000000 --- a/libraries/plugins/IDS/vendors/htmlpurifier/HTMLPurifier/HTMLModule/XMLCommonAttributes.php +++ /dev/null @@ -1,14 +0,0 @@ - array( - 'xml:lang' => 'LanguageCode', - ) - ); -} - -// vim: et sw=4 sts=4 diff --git a/libraries/plugins/IDS/vendors/htmlpurifier/HTMLPurifier/HTMLModuleManager.php b/libraries/plugins/IDS/vendors/htmlpurifier/HTMLPurifier/HTMLModuleManager.php deleted file mode 100644 index 362e3b7..0000000 --- a/libraries/plugins/IDS/vendors/htmlpurifier/HTMLPurifier/HTMLModuleManager.php +++ /dev/null @@ -1,403 +0,0 @@ -attrTypes = new HTMLPurifier_AttrTypes(); - $this->doctypes = new HTMLPurifier_DoctypeRegistry(); - - // setup basic modules - $common = array( - 'CommonAttributes', 'Text', 'Hypertext', 'List', - 'Presentation', 'Edit', 'Bdo', 'Tables', 'Image', - 'StyleAttribute', - // Unsafe: - 'Scripting', 'Object', 'Forms', - // Sorta legacy, but present in strict: - 'Name', - ); - $transitional = array('Legacy', 'Target'); - $xml = array('XMLCommonAttributes'); - $non_xml = array('NonXMLCommonAttributes'); - - // setup basic doctypes - $this->doctypes->register( - 'HTML 4.01 Transitional', false, - array_merge($common, $transitional, $non_xml), - array('Tidy_Transitional', 'Tidy_Proprietary'), - array(), - '-//W3C//DTD HTML 4.01 Transitional//EN', - 'http://www.w3.org/TR/html4/loose.dtd' - ); - - $this->doctypes->register( - 'HTML 4.01 Strict', false, - array_merge($common, $non_xml), - array('Tidy_Strict', 'Tidy_Proprietary', 'Tidy_Name'), - array(), - '-//W3C//DTD HTML 4.01//EN', - 'http://www.w3.org/TR/html4/strict.dtd' - ); - - $this->doctypes->register( - 'XHTML 1.0 Transitional', true, - array_merge($common, $transitional, $xml, $non_xml), - array('Tidy_Transitional', 'Tidy_XHTML', 'Tidy_Proprietary', 'Tidy_Name'), - array(), - '-//W3C//DTD XHTML 1.0 Transitional//EN', - 'http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd' - ); - - $this->doctypes->register( - 'XHTML 1.0 Strict', true, - array_merge($common, $xml, $non_xml), - array('Tidy_Strict', 'Tidy_XHTML', 'Tidy_Strict', 'Tidy_Proprietary', 'Tidy_Name'), - array(), - '-//W3C//DTD XHTML 1.0 Strict//EN', - 'http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd' - ); - - $this->doctypes->register( - 'XHTML 1.1', true, - array_merge($common, $xml, array('Ruby')), - array('Tidy_Strict', 'Tidy_XHTML', 'Tidy_Proprietary', 'Tidy_Strict', 'Tidy_Name'), // Tidy_XHTML1_1 - array(), - '-//W3C//DTD XHTML 1.1//EN', - 'http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd' - ); - - } - - /** - * Registers a module to the recognized module list, useful for - * overloading pre-existing modules. - * @param $module Mixed: string module name, with or without - * HTMLPurifier_HTMLModule prefix, or instance of - * subclass of HTMLPurifier_HTMLModule. - * @param $overload Boolean whether or not to overload previous modules. - * If this is not set, and you do overload a module, - * HTML Purifier will complain with a warning. - * @note This function will not call autoload, you must instantiate - * (and thus invoke) autoload outside the method. - * @note If a string is passed as a module name, different variants - * will be tested in this order: - * - Check for HTMLPurifier_HTMLModule_$name - * - Check all prefixes with $name in order they were added - * - Check for literal object name - * - Throw fatal error - * If your object name collides with an internal class, specify - * your module manually. All modules must have been included - * externally: registerModule will not perform inclusions for you! - */ - public function registerModule($module, $overload = false) { - if (is_string($module)) { - // attempt to load the module - $original_module = $module; - $ok = false; - foreach ($this->prefixes as $prefix) { - $module = $prefix . $original_module; - if (class_exists($module)) { - $ok = true; - break; - } - } - if (!$ok) { - $module = $original_module; - if (!class_exists($module)) { - trigger_error($original_module . ' module does not exist', - E_USER_ERROR); - return; - } - } - $module = new $module(); - } - if (empty($module->name)) { - trigger_error('Module instance of ' . get_class($module) . ' must have name'); - return; - } - if (!$overload && isset($this->registeredModules[$module->name])) { - trigger_error('Overloading ' . $module->name . ' without explicit overload parameter', E_USER_WARNING); - } - $this->registeredModules[$module->name] = $module; - } - - /** - * Adds a module to the current doctype by first registering it, - * and then tacking it on to the active doctype - */ - public function addModule($module) { - $this->registerModule($module); - if (is_object($module)) $module = $module->name; - $this->userModules[] = $module; - } - - /** - * Adds a class prefix that registerModule() will use to resolve a - * string name to a concrete class - */ - public function addPrefix($prefix) { - $this->prefixes[] = $prefix; - } - - /** - * Performs processing on modules, after being called you may - * use getElement() and getElements() - * @param $config Instance of HTMLPurifier_Config - */ - public function setup($config) { - - $this->trusted = $config->get('HTML.Trusted'); - - // generate - $this->doctype = $this->doctypes->make($config); - $modules = $this->doctype->modules; - - // take out the default modules that aren't allowed - $lookup = $config->get('HTML.AllowedModules'); - $special_cases = $config->get('HTML.CoreModules'); - - if (is_array($lookup)) { - foreach ($modules as $k => $m) { - if (isset($special_cases[$m])) continue; - if (!isset($lookup[$m])) unset($modules[$k]); - } - } - - // custom modules - if ($config->get('HTML.Proprietary')) { - $modules[] = 'Proprietary'; - } - if ($config->get('HTML.SafeObject')) { - $modules[] = 'SafeObject'; - } - if ($config->get('HTML.SafeEmbed')) { - $modules[] = 'SafeEmbed'; - } - if ($config->get('HTML.Nofollow')) { - $modules[] = 'Nofollow'; - } - - // merge in custom modules - $modules = array_merge($modules, $this->userModules); - - foreach ($modules as $module) { - $this->processModule($module); - $this->modules[$module]->setup($config); - } - - foreach ($this->doctype->tidyModules as $module) { - $this->processModule($module); - $this->modules[$module]->setup($config); - } - - // prepare any injectors - foreach ($this->modules as $module) { - $n = array(); - foreach ($module->info_injector as $i => $injector) { - if (!is_object($injector)) { - $class = "HTMLPurifier_Injector_$injector"; - $injector = new $class; - } - $n[$injector->name] = $injector; - } - $module->info_injector = $n; - } - - // setup lookup table based on all valid modules - foreach ($this->modules as $module) { - foreach ($module->info as $name => $def) { - if (!isset($this->elementLookup[$name])) { - $this->elementLookup[$name] = array(); - } - $this->elementLookup[$name][] = $module->name; - } - } - - // note the different choice - $this->contentSets = new HTMLPurifier_ContentSets( - // content set assembly deals with all possible modules, - // not just ones deemed to be "safe" - $this->modules - ); - $this->attrCollections = new HTMLPurifier_AttrCollections( - $this->attrTypes, - // there is no way to directly disable a global attribute, - // but using AllowedAttributes or simply not including - // the module in your custom doctype should be sufficient - $this->modules - ); - } - - /** - * Takes a module and adds it to the active module collection, - * registering it if necessary. - */ - public function processModule($module) { - if (!isset($this->registeredModules[$module]) || is_object($module)) { - $this->registerModule($module); - } - $this->modules[$module] = $this->registeredModules[$module]; - } - - /** - * Retrieves merged element definitions. - * @return Array of HTMLPurifier_ElementDef - */ - public function getElements() { - - $elements = array(); - foreach ($this->modules as $module) { - if (!$this->trusted && !$module->safe) continue; - foreach ($module->info as $name => $v) { - if (isset($elements[$name])) continue; - $elements[$name] = $this->getElement($name); - } - } - - // remove dud elements, this happens when an element that - // appeared to be safe actually wasn't - foreach ($elements as $n => $v) { - if ($v === false) unset($elements[$n]); - } - - return $elements; - - } - - /** - * Retrieves a single merged element definition - * @param $name Name of element - * @param $trusted Boolean trusted overriding parameter: set to true - * if you want the full version of an element - * @return Merged HTMLPurifier_ElementDef - * @note You may notice that modules are getting iterated over twice (once - * in getElements() and once here). This - * is because - */ - public function getElement($name, $trusted = null) { - - if (!isset($this->elementLookup[$name])) { - return false; - } - - // setup global state variables - $def = false; - if ($trusted === null) $trusted = $this->trusted; - - // iterate through each module that has registered itself to this - // element - foreach($this->elementLookup[$name] as $module_name) { - - $module = $this->modules[$module_name]; - - // refuse to create/merge from a module that is deemed unsafe-- - // pretend the module doesn't exist--when trusted mode is not on. - if (!$trusted && !$module->safe) { - continue; - } - - // clone is used because, ideally speaking, the original - // definition should not be modified. Usually, this will - // make no difference, but for consistency's sake - $new_def = clone $module->info[$name]; - - if (!$def && $new_def->standalone) { - $def = $new_def; - } elseif ($def) { - // This will occur even if $new_def is standalone. In practice, - // this will usually result in a full replacement. - $def->mergeIn($new_def); - } else { - // :TODO: - // non-standalone definitions that don't have a standalone - // to merge into could be deferred to the end - continue; - } - - // attribute value expansions - $this->attrCollections->performInclusions($def->attr); - $this->attrCollections->expandIdentifiers($def->attr, $this->attrTypes); - - // descendants_are_inline, for ChildDef_Chameleon - if (is_string($def->content_model) && - strpos($def->content_model, 'Inline') !== false) { - if ($name != 'del' && $name != 'ins') { - // this is for you, ins/del - $def->descendants_are_inline = true; - } - } - - $this->contentSets->generateChildDef($def, $module); - } - - // This can occur if there is a blank definition, but no base to - // mix it in with - if (!$def) return false; - - // add information on required attributes - foreach ($def->attr as $attr_name => $attr_def) { - if ($attr_def->required) { - $def->required_attr[] = $attr_name; - } - } - - return $def; - - } - -} - -// vim: et sw=4 sts=4 diff --git a/libraries/plugins/IDS/vendors/htmlpurifier/HTMLPurifier/IDAccumulator.php b/libraries/plugins/IDS/vendors/htmlpurifier/HTMLPurifier/IDAccumulator.php deleted file mode 100644 index 7321529..0000000 --- a/libraries/plugins/IDS/vendors/htmlpurifier/HTMLPurifier/IDAccumulator.php +++ /dev/null @@ -1,53 +0,0 @@ -load($config->get('Attr.IDBlacklist')); - return $id_accumulator; - } - - /** - * Add an ID to the lookup table. - * @param $id ID to be added. - * @return Bool status, true if success, false if there's a dupe - */ - public function add($id) { - if (isset($this->ids[$id])) return false; - return $this->ids[$id] = true; - } - - /** - * Load a list of IDs into the lookup table - * @param $array_of_ids Array of IDs to load - * @note This function doesn't care about duplicates - */ - public function load($array_of_ids) { - foreach ($array_of_ids as $id) { - $this->ids[$id] = true; - } - } - -} - -// vim: et sw=4 sts=4 diff --git a/libraries/plugins/IDS/vendors/htmlpurifier/HTMLPurifier/Injector.php b/libraries/plugins/IDS/vendors/htmlpurifier/HTMLPurifier/Injector.php deleted file mode 100644 index 5922f81..0000000 --- a/libraries/plugins/IDS/vendors/htmlpurifier/HTMLPurifier/Injector.php +++ /dev/null @@ -1,239 +0,0 @@ -processToken() - * documentation. - * - * @todo Allow injectors to request a re-run on their output. This - * would help if an operation is recursive. - */ -abstract class HTMLPurifier_Injector -{ - - /** - * Advisory name of injector, this is for friendly error messages - */ - public $name; - - /** - * Instance of HTMLPurifier_HTMLDefinition - */ - protected $htmlDefinition; - - /** - * Reference to CurrentNesting variable in Context. This is an array - * list of tokens that we are currently "inside" - */ - protected $currentNesting; - - /** - * Reference to InputTokens variable in Context. This is an array - * list of the input tokens that are being processed. - */ - protected $inputTokens; - - /** - * Reference to InputIndex variable in Context. This is an integer - * array index for $this->inputTokens that indicates what token - * is currently being processed. - */ - protected $inputIndex; - - /** - * Array of elements and attributes this injector creates and therefore - * need to be allowed by the definition. Takes form of - * array('element' => array('attr', 'attr2'), 'element2') - */ - public $needed = array(); - - /** - * Index of inputTokens to rewind to. - */ - protected $rewind = false; - - /** - * Rewind to a spot to re-perform processing. This is useful if you - * deleted a node, and now need to see if this change affected any - * earlier nodes. Rewinding does not affect other injectors, and can - * result in infinite loops if not used carefully. - * @warning HTML Purifier will prevent you from fast-forwarding with this - * function. - */ - public function rewind($index) { - $this->rewind = $index; - } - - /** - * Retrieves rewind, and then unsets it. - */ - public function getRewind() { - $r = $this->rewind; - $this->rewind = false; - return $r; - } - - /** - * Prepares the injector by giving it the config and context objects: - * this allows references to important variables to be made within - * the injector. This function also checks if the HTML environment - * will work with the Injector (see checkNeeded()). - * @param $config Instance of HTMLPurifier_Config - * @param $context Instance of HTMLPurifier_Context - * @return Boolean false if success, string of missing needed element/attribute if failure - */ - public function prepare($config, $context) { - $this->htmlDefinition = $config->getHTMLDefinition(); - // Even though this might fail, some unit tests ignore this and - // still test checkNeeded, so be careful. Maybe get rid of that - // dependency. - $result = $this->checkNeeded($config); - if ($result !== false) return $result; - $this->currentNesting =& $context->get('CurrentNesting'); - $this->inputTokens =& $context->get('InputTokens'); - $this->inputIndex =& $context->get('InputIndex'); - return false; - } - - /** - * This function checks if the HTML environment - * will work with the Injector: if p tags are not allowed, the - * Auto-Paragraphing injector should not be enabled. - * @param $config Instance of HTMLPurifier_Config - * @param $context Instance of HTMLPurifier_Context - * @return Boolean false if success, string of missing needed element/attribute if failure - */ - public function checkNeeded($config) { - $def = $config->getHTMLDefinition(); - foreach ($this->needed as $element => $attributes) { - if (is_int($element)) $element = $attributes; - if (!isset($def->info[$element])) return $element; - if (!is_array($attributes)) continue; - foreach ($attributes as $name) { - if (!isset($def->info[$element]->attr[$name])) return "$element.$name"; - } - } - return false; - } - - /** - * Tests if the context node allows a certain element - * @param $name Name of element to test for - * @return True if element is allowed, false if it is not - */ - public function allowsElement($name) { - if (!empty($this->currentNesting)) { - $parent_token = array_pop($this->currentNesting); - $this->currentNesting[] = $parent_token; - $parent = $this->htmlDefinition->info[$parent_token->name]; - } else { - $parent = $this->htmlDefinition->info_parent_def; - } - if (!isset($parent->child->elements[$name]) || isset($parent->excludes[$name])) { - return false; - } - // check for exclusion - for ($i = count($this->currentNesting) - 2; $i >= 0; $i--) { - $node = $this->currentNesting[$i]; - $def = $this->htmlDefinition->info[$node->name]; - if (isset($def->excludes[$name])) return false; - } - return true; - } - - /** - * Iterator function, which starts with the next token and continues until - * you reach the end of the input tokens. - * @warning Please prevent previous references from interfering with this - * functions by setting $i = null beforehand! - * @param &$i Current integer index variable for inputTokens - * @param &$current Current token variable. Do NOT use $token, as that variable is also a reference - */ - protected function forward(&$i, &$current) { - if ($i === null) $i = $this->inputIndex + 1; - else $i++; - if (!isset($this->inputTokens[$i])) return false; - $current = $this->inputTokens[$i]; - return true; - } - - /** - * Similar to _forward, but accepts a third parameter $nesting (which - * should be initialized at 0) and stops when we hit the end tag - * for the node $this->inputIndex starts in. - */ - protected function forwardUntilEndToken(&$i, &$current, &$nesting) { - $result = $this->forward($i, $current); - if (!$result) return false; - if ($nesting === null) $nesting = 0; - if ($current instanceof HTMLPurifier_Token_Start) $nesting++; - elseif ($current instanceof HTMLPurifier_Token_End) { - if ($nesting <= 0) return false; - $nesting--; - } - return true; - } - - /** - * Iterator function, starts with the previous token and continues until - * you reach the beginning of input tokens. - * @warning Please prevent previous references from interfering with this - * functions by setting $i = null beforehand! - * @param &$i Current integer index variable for inputTokens - * @param &$current Current token variable. Do NOT use $token, as that variable is also a reference - */ - protected function backward(&$i, &$current) { - if ($i === null) $i = $this->inputIndex - 1; - else $i--; - if ($i < 0) return false; - $current = $this->inputTokens[$i]; - return true; - } - - /** - * Initializes the iterator at the current position. Use in a do {} while; - * loop to force the _forward and _backward functions to start at the - * current location. - * @warning Please prevent previous references from interfering with this - * functions by setting $i = null beforehand! - * @param &$i Current integer index variable for inputTokens - * @param &$current Current token variable. Do NOT use $token, as that variable is also a reference - */ - protected function current(&$i, &$current) { - if ($i === null) $i = $this->inputIndex; - $current = $this->inputTokens[$i]; - } - - /** - * Handler that is called when a text token is processed - */ - public function handleText(&$token) {} - - /** - * Handler that is called when a start or empty token is processed - */ - public function handleElement(&$token) {} - - /** - * Handler that is called when an end token is processed - */ - public function handleEnd(&$token) { - $this->notifyEnd($token); - } - - /** - * Notifier that is called when an end token is processed - * @note This differs from handlers in that the token is read-only - * @deprecated - */ - public function notifyEnd($token) {} - - -} - -// vim: et sw=4 sts=4 diff --git a/libraries/plugins/IDS/vendors/htmlpurifier/HTMLPurifier/Injector/AutoParagraph.php b/libraries/plugins/IDS/vendors/htmlpurifier/HTMLPurifier/Injector/AutoParagraph.php deleted file mode 100644 index afa7608..0000000 --- a/libraries/plugins/IDS/vendors/htmlpurifier/HTMLPurifier/Injector/AutoParagraph.php +++ /dev/null @@ -1,345 +0,0 @@ -armor['MakeWellFormed_TagClosedError'] = true; - return $par; - } - - public function handleText(&$token) { - $text = $token->data; - // Does the current parent allow

tags? - if ($this->allowsElement('p')) { - if (empty($this->currentNesting) || strpos($text, "\n\n") !== false) { - // Note that we have differing behavior when dealing with text - // in the anonymous root node, or a node inside the document. - // If the text as a double-newline, the treatment is the same; - // if it doesn't, see the next if-block if you're in the document. - - $i = $nesting = null; - if (!$this->forwardUntilEndToken($i, $current, $nesting) && $token->is_whitespace) { - // State 1.1: ... ^ (whitespace, then document end) - // ---- - // This is a degenerate case - } else { - if (!$token->is_whitespace || $this->_isInline($current)) { - // State 1.2: PAR1 - // ---- - - // State 1.3: PAR1\n\nPAR2 - // ------------ - - // State 1.4:

PAR1\n\nPAR2 (see State 2) - // ------------ - $token = array($this->_pStart()); - $this->_splitText($text, $token); - } else { - // State 1.5: \n
- // -- - } - } - } else { - // State 2:
PAR1... (similar to 1.4) - // ---- - - // We're in an element that allows paragraph tags, but we're not - // sure if we're going to need them. - if ($this->_pLookAhead()) { - // State 2.1:
PAR1PAR1\n\nPAR2 - // ---- - // Note: This will always be the first child, since any - // previous inline element would have triggered this very - // same routine, and found the double newline. One possible - // exception would be a comment. - $token = array($this->_pStart(), $token); - } else { - // State 2.2.1:
PAR1
- // ---- - - // State 2.2.2:
PAR1PAR1
- // ---- - } - } - // Is the current parent a

tag? - } elseif ( - !empty($this->currentNesting) && - $this->currentNesting[count($this->currentNesting)-1]->name == 'p' - ) { - // State 3.1: ...

PAR1 - // ---- - - // State 3.2: ...

PAR1\n\nPAR2 - // ------------ - $token = array(); - $this->_splitText($text, $token); - // Abort! - } else { - // State 4.1: ...PAR1 - // ---- - - // State 4.2: ...PAR1\n\nPAR2 - // ------------ - } - } - - public function handleElement(&$token) { - // We don't have to check if we're already in a

tag for block - // tokens, because the tag would have been autoclosed by MakeWellFormed. - if ($this->allowsElement('p')) { - if (!empty($this->currentNesting)) { - if ($this->_isInline($token)) { - // State 1:

... - // --- - - // Check if this token is adjacent to the parent token - // (seek backwards until token isn't whitespace) - $i = null; - $this->backward($i, $prev); - - if (!$prev instanceof HTMLPurifier_Token_Start) { - // Token wasn't adjacent - - if ( - $prev instanceof HTMLPurifier_Token_Text && - substr($prev->data, -2) === "\n\n" - ) { - // State 1.1.4:

PAR1

\n\n - // --- - - // Quite frankly, this should be handled by splitText - $token = array($this->_pStart(), $token); - } else { - // State 1.1.1:

PAR1

- // --- - - // State 1.1.2:

- // --- - - // State 1.1.3:
PAR - // --- - } - - } else { - // State 1.2.1:
- // --- - - // Lookahead to see if

is needed. - if ($this->_pLookAhead()) { - // State 1.3.1:

PAR1\n\nPAR2 - // --- - $token = array($this->_pStart(), $token); - } else { - // State 1.3.2:
PAR1
- // --- - - // State 1.3.3:
PAR1
\n\n
- // --- - } - } - } else { - // State 2.3: ...
- // ----- - } - } else { - if ($this->_isInline($token)) { - // State 3.1: - // --- - // This is where the {p} tag is inserted, not reflected in - // inputTokens yet, however. - $token = array($this->_pStart(), $token); - } else { - // State 3.2:
- // ----- - } - - $i = null; - if ($this->backward($i, $prev)) { - if ( - !$prev instanceof HTMLPurifier_Token_Text - ) { - // State 3.1.1: ...

{p} - // --- - - // State 3.2.1: ...

- // ----- - - if (!is_array($token)) $token = array($token); - array_unshift($token, new HTMLPurifier_Token_Text("\n\n")); - } else { - // State 3.1.2: ...

\n\n{p} - // --- - - // State 3.2.2: ...

\n\n
- // ----- - - // Note: PAR cannot occur because PAR would have been - // wrapped in

tags. - } - } - } - } else { - // State 2.2:

  • - // ---- - - // State 2.4:

    - // --- - } - } - - /** - * Splits up a text in paragraph tokens and appends them - * to the result stream that will replace the original - * @param $data String text data that will be processed - * into paragraphs - * @param $result Reference to array of tokens that the - * tags will be appended onto - * @param $config Instance of HTMLPurifier_Config - * @param $context Instance of HTMLPurifier_Context - */ - private function _splitText($data, &$result) { - $raw_paragraphs = explode("\n\n", $data); - $paragraphs = array(); // without empty paragraphs - $needs_start = false; - $needs_end = false; - - $c = count($raw_paragraphs); - if ($c == 1) { - // There were no double-newlines, abort quickly. In theory this - // should never happen. - $result[] = new HTMLPurifier_Token_Text($data); - return; - } - for ($i = 0; $i < $c; $i++) { - $par = $raw_paragraphs[$i]; - if (trim($par) !== '') { - $paragraphs[] = $par; - } else { - if ($i == 0) { - // Double newline at the front - if (empty($result)) { - // The empty result indicates that the AutoParagraph - // injector did not add any start paragraph tokens. - // This means that we have been in a paragraph for - // a while, and the newline means we should start a new one. - $result[] = new HTMLPurifier_Token_End('p'); - $result[] = new HTMLPurifier_Token_Text("\n\n"); - // However, the start token should only be added if - // there is more processing to be done (i.e. there are - // real paragraphs in here). If there are none, the - // next start paragraph tag will be handled by the - // next call to the injector - $needs_start = true; - } else { - // We just started a new paragraph! - // Reinstate a double-newline for presentation's sake, since - // it was in the source code. - array_unshift($result, new HTMLPurifier_Token_Text("\n\n")); - } - } elseif ($i + 1 == $c) { - // Double newline at the end - // There should be a trailing

    when we're finally done. - $needs_end = true; - } - } - } - - // Check if this was just a giant blob of whitespace. Move this earlier, - // perhaps? - if (empty($paragraphs)) { - return; - } - - // Add the start tag indicated by \n\n at the beginning of $data - if ($needs_start) { - $result[] = $this->_pStart(); - } - - // Append the paragraphs onto the result - foreach ($paragraphs as $par) { - $result[] = new HTMLPurifier_Token_Text($par); - $result[] = new HTMLPurifier_Token_End('p'); - $result[] = new HTMLPurifier_Token_Text("\n\n"); - $result[] = $this->_pStart(); - } - - // Remove trailing start token; Injector will handle this later if - // it was indeed needed. This prevents from needing to do a lookahead, - // at the cost of a lookbehind later. - array_pop($result); - - // If there is no need for an end tag, remove all of it and let - // MakeWellFormed close it later. - if (!$needs_end) { - array_pop($result); // removes \n\n - array_pop($result); // removes

    - } - - } - - /** - * Returns true if passed token is inline (and, ergo, allowed in - * paragraph tags) - */ - private function _isInline($token) { - return isset($this->htmlDefinition->info['p']->child->elements[$token->name]); - } - - /** - * Looks ahead in the token list and determines whether or not we need - * to insert a

    tag. - */ - private function _pLookAhead() { - $this->current($i, $current); - if ($current instanceof HTMLPurifier_Token_Start) $nesting = 1; - else $nesting = 0; - $ok = false; - while ($this->forwardUntilEndToken($i, $current, $nesting)) { - $result = $this->_checkNeedsP($current); - if ($result !== null) { - $ok = $result; - break; - } - } - return $ok; - } - - /** - * Determines if a particular token requires an earlier inline token - * to get a paragraph. This should be used with _forwardUntilEndToken - */ - private function _checkNeedsP($current) { - if ($current instanceof HTMLPurifier_Token_Start){ - if (!$this->_isInline($current)) { - //

    PAR1
    - // ---- - // Terminate early, since we hit a block element - return false; - } - } elseif ($current instanceof HTMLPurifier_Token_Text) { - if (strpos($current->data, "\n\n") !== false) { - //
    PAR1PAR1\n\nPAR2 - // ---- - return true; - } else { - //
    PAR1PAR1... - // ---- - } - } - return null; - } - -} - -// vim: et sw=4 sts=4 diff --git a/libraries/plugins/IDS/vendors/htmlpurifier/HTMLPurifier/Injector/DisplayLinkURI.php b/libraries/plugins/IDS/vendors/htmlpurifier/HTMLPurifier/Injector/DisplayLinkURI.php deleted file mode 100644 index 9dce9bd..0000000 --- a/libraries/plugins/IDS/vendors/htmlpurifier/HTMLPurifier/Injector/DisplayLinkURI.php +++ /dev/null @@ -1,26 +0,0 @@ -start->attr['href'])){ - $url = $token->start->attr['href']; - unset($token->start->attr['href']); - $token = array($token, new HTMLPurifier_Token_Text(" ($url)")); - } else { - // nothing to display - } - } -} - -// vim: et sw=4 sts=4 diff --git a/libraries/plugins/IDS/vendors/htmlpurifier/HTMLPurifier/Injector/Linkify.php b/libraries/plugins/IDS/vendors/htmlpurifier/HTMLPurifier/Injector/Linkify.php deleted file mode 100644 index 296dac2..0000000 --- a/libraries/plugins/IDS/vendors/htmlpurifier/HTMLPurifier/Injector/Linkify.php +++ /dev/null @@ -1,46 +0,0 @@ - array('href')); - - public function handleText(&$token) { - if (!$this->allowsElement('a')) return; - - if (strpos($token->data, '://') === false) { - // our really quick heuristic failed, abort - // this may not work so well if we want to match things like - // "google.com", but then again, most people don't - return; - } - - // there is/are URL(s). Let's split the string: - // Note: this regex is extremely permissive - $bits = preg_split('#((?:https?|ftp)://[^\s\'"<>()]+)#S', $token->data, -1, PREG_SPLIT_DELIM_CAPTURE); - - $token = array(); - - // $i = index - // $c = count - // $l = is link - for ($i = 0, $c = count($bits), $l = false; $i < $c; $i++, $l = !$l) { - if (!$l) { - if ($bits[$i] === '') continue; - $token[] = new HTMLPurifier_Token_Text($bits[$i]); - } else { - $token[] = new HTMLPurifier_Token_Start('a', array('href' => $bits[$i])); - $token[] = new HTMLPurifier_Token_Text($bits[$i]); - $token[] = new HTMLPurifier_Token_End('a'); - } - } - - } - -} - -// vim: et sw=4 sts=4 diff --git a/libraries/plugins/IDS/vendors/htmlpurifier/HTMLPurifier/Injector/PurifierLinkify.php b/libraries/plugins/IDS/vendors/htmlpurifier/HTMLPurifier/Injector/PurifierLinkify.php deleted file mode 100644 index ad2455a..0000000 --- a/libraries/plugins/IDS/vendors/htmlpurifier/HTMLPurifier/Injector/PurifierLinkify.php +++ /dev/null @@ -1,45 +0,0 @@ - array('href')); - - public function prepare($config, $context) { - $this->docURL = $config->get('AutoFormat.PurifierLinkify.DocURL'); - return parent::prepare($config, $context); - } - - public function handleText(&$token) { - if (!$this->allowsElement('a')) return; - if (strpos($token->data, '%') === false) return; - - $bits = preg_split('#%([a-z0-9]+\.[a-z0-9]+)#Si', $token->data, -1, PREG_SPLIT_DELIM_CAPTURE); - $token = array(); - - // $i = index - // $c = count - // $l = is link - for ($i = 0, $c = count($bits), $l = false; $i < $c; $i++, $l = !$l) { - if (!$l) { - if ($bits[$i] === '') continue; - $token[] = new HTMLPurifier_Token_Text($bits[$i]); - } else { - $token[] = new HTMLPurifier_Token_Start('a', - array('href' => str_replace('%s', $bits[$i], $this->docURL))); - $token[] = new HTMLPurifier_Token_Text('%' . $bits[$i]); - $token[] = new HTMLPurifier_Token_End('a'); - } - } - - } - -} - -// vim: et sw=4 sts=4 diff --git a/libraries/plugins/IDS/vendors/htmlpurifier/HTMLPurifier/Injector/RemoveEmpty.php b/libraries/plugins/IDS/vendors/htmlpurifier/HTMLPurifier/Injector/RemoveEmpty.php deleted file mode 100644 index 638bfca..0000000 --- a/libraries/plugins/IDS/vendors/htmlpurifier/HTMLPurifier/Injector/RemoveEmpty.php +++ /dev/null @@ -1,51 +0,0 @@ -config = $config; - $this->context = $context; - $this->removeNbsp = $config->get('AutoFormat.RemoveEmpty.RemoveNbsp'); - $this->removeNbspExceptions = $config->get('AutoFormat.RemoveEmpty.RemoveNbsp.Exceptions'); - $this->attrValidator = new HTMLPurifier_AttrValidator(); - } - - public function handleElement(&$token) { - if (!$token instanceof HTMLPurifier_Token_Start) return; - $next = false; - for ($i = $this->inputIndex + 1, $c = count($this->inputTokens); $i < $c; $i++) { - $next = $this->inputTokens[$i]; - if ($next instanceof HTMLPurifier_Token_Text) { - if ($next->is_whitespace) continue; - if ($this->removeNbsp && !isset($this->removeNbspExceptions[$token->name])) { - $plain = str_replace("\xC2\xA0", "", $next->data); - $isWsOrNbsp = $plain === '' || ctype_space($plain); - if ($isWsOrNbsp) continue; - } - } - break; - } - if (!$next || ($next instanceof HTMLPurifier_Token_End && $next->name == $token->name)) { - if ($token->name == 'colgroup') return; - $this->attrValidator->validateToken($token, $this->config, $this->context); - $token->armor['ValidateAttributes'] = true; - if (isset($token->attr['id']) || isset($token->attr['name'])) return; - $token = $i - $this->inputIndex + 1; - for ($b = $this->inputIndex - 1; $b > 0; $b--) { - $prev = $this->inputTokens[$b]; - if ($prev instanceof HTMLPurifier_Token_Text && $prev->is_whitespace) continue; - break; - } - // This is safe because we removed the token that triggered this. - $this->rewind($b - 1); - return; - } - } - -} - -// vim: et sw=4 sts=4 diff --git a/libraries/plugins/IDS/vendors/htmlpurifier/HTMLPurifier/Injector/RemoveSpansWithoutAttributes.php b/libraries/plugins/IDS/vendors/htmlpurifier/HTMLPurifier/Injector/RemoveSpansWithoutAttributes.php deleted file mode 100644 index b213134..0000000 --- a/libraries/plugins/IDS/vendors/htmlpurifier/HTMLPurifier/Injector/RemoveSpansWithoutAttributes.php +++ /dev/null @@ -1,60 +0,0 @@ -attrValidator = new HTMLPurifier_AttrValidator(); - $this->config = $config; - $this->context = $context; - return parent::prepare($config, $context); - } - - public function handleElement(&$token) { - if ($token->name !== 'span' || !$token instanceof HTMLPurifier_Token_Start) { - return; - } - - // We need to validate the attributes now since this doesn't normally - // happen until after MakeWellFormed. If all the attributes are removed - // the span needs to be removed too. - $this->attrValidator->validateToken($token, $this->config, $this->context); - $token->armor['ValidateAttributes'] = true; - - if (!empty($token->attr)) { - return; - } - - $nesting = 0; - $spanContentTokens = array(); - while ($this->forwardUntilEndToken($i, $current, $nesting)) {} - - if ($current instanceof HTMLPurifier_Token_End && $current->name === 'span') { - // Mark closing span tag for deletion - $current->markForDeletion = true; - // Delete open span tag - $token = false; - } - } - - public function handleEnd(&$token) { - if ($token->markForDeletion) { - $token = false; - } - } -} - -// vim: et sw=4 sts=4 diff --git a/libraries/plugins/IDS/vendors/htmlpurifier/HTMLPurifier/Injector/SafeObject.php b/libraries/plugins/IDS/vendors/htmlpurifier/HTMLPurifier/Injector/SafeObject.php deleted file mode 100644 index c1d8b04..0000000 --- a/libraries/plugins/IDS/vendors/htmlpurifier/HTMLPurifier/Injector/SafeObject.php +++ /dev/null @@ -1,91 +0,0 @@ - 'never', - 'allowNetworking' => 'internal', - ); - protected $allowedParam = array( - 'wmode' => true, - 'movie' => true, - 'flashvars' => true, - 'src' => true, - 'allowFullScreen' => true, // if omitted, assume to be 'false' - ); - - public function prepare($config, $context) { - parent::prepare($config, $context); - } - - public function handleElement(&$token) { - if ($token->name == 'object') { - $this->objectStack[] = $token; - $this->paramStack[] = array(); - $new = array($token); - foreach ($this->addParam as $name => $value) { - $new[] = new HTMLPurifier_Token_Empty('param', array('name' => $name, 'value' => $value)); - } - $token = $new; - } elseif ($token->name == 'param') { - $nest = count($this->currentNesting) - 1; - if ($nest >= 0 && $this->currentNesting[$nest]->name === 'object') { - $i = count($this->objectStack) - 1; - if (!isset($token->attr['name'])) { - $token = false; - return; - } - $n = $token->attr['name']; - // We need this fix because YouTube doesn't supply a data - // attribute, which we need if a type is specified. This is - // *very* Flash specific. - if (!isset($this->objectStack[$i]->attr['data']) && - ($token->attr['name'] == 'movie' || $token->attr['name'] == 'src')) { - $this->objectStack[$i]->attr['data'] = $token->attr['value']; - } - // Check if the parameter is the correct value but has not - // already been added - if ( - !isset($this->paramStack[$i][$n]) && - isset($this->addParam[$n]) && - $token->attr['name'] === $this->addParam[$n] - ) { - // keep token, and add to param stack - $this->paramStack[$i][$n] = true; - } elseif (isset($this->allowedParam[$n])) { - // keep token, don't do anything to it - // (could possibly check for duplicates here) - } else { - $token = false; - } - } else { - // not directly inside an object, DENY! - $token = false; - } - } - } - - public function handleEnd(&$token) { - // This is the WRONG way of handling the object and param stacks; - // we should be inserting them directly on the relevant object tokens - // so that the global stack handling handles it. - if ($token->name == 'object') { - array_pop($this->objectStack); - array_pop($this->paramStack); - } - } - -} - -// vim: et sw=4 sts=4 diff --git a/libraries/plugins/IDS/vendors/htmlpurifier/HTMLPurifier/Language.php b/libraries/plugins/IDS/vendors/htmlpurifier/HTMLPurifier/Language.php deleted file mode 100644 index 3e2be03..0000000 --- a/libraries/plugins/IDS/vendors/htmlpurifier/HTMLPurifier/Language.php +++ /dev/null @@ -1,163 +0,0 @@ -config = $config; - $this->context = $context; - } - - /** - * Loads language object with necessary info from factory cache - * @note This is a lazy loader - */ - public function load() { - if ($this->_loaded) return; - $factory = HTMLPurifier_LanguageFactory::instance(); - $factory->loadLanguage($this->code); - foreach ($factory->keys as $key) { - $this->$key = $factory->cache[$this->code][$key]; - } - $this->_loaded = true; - } - - /** - * Retrieves a localised message. - * @param $key string identifier of message - * @return string localised message - */ - public function getMessage($key) { - if (!$this->_loaded) $this->load(); - if (!isset($this->messages[$key])) return "[$key]"; - return $this->messages[$key]; - } - - /** - * Retrieves a localised error name. - * @param $int integer error number, corresponding to PHP's error - * reporting - * @return string localised message - */ - public function getErrorName($int) { - if (!$this->_loaded) $this->load(); - if (!isset($this->errorNames[$int])) return "[Error: $int]"; - return $this->errorNames[$int]; - } - - /** - * Converts an array list into a string readable representation - */ - public function listify($array) { - $sep = $this->getMessage('Item separator'); - $sep_last = $this->getMessage('Item separator last'); - $ret = ''; - for ($i = 0, $c = count($array); $i < $c; $i++) { - if ($i == 0) { - } elseif ($i + 1 < $c) { - $ret .= $sep; - } else { - $ret .= $sep_last; - } - $ret .= $array[$i]; - } - return $ret; - } - - /** - * Formats a localised message with passed parameters - * @param $key string identifier of message - * @param $args Parameters to substitute in - * @return string localised message - * @todo Implement conditionals? Right now, some messages make - * reference to line numbers, but those aren't always available - */ - public function formatMessage($key, $args = array()) { - if (!$this->_loaded) $this->load(); - if (!isset($this->messages[$key])) return "[$key]"; - $raw = $this->messages[$key]; - $subst = array(); - $generator = false; - foreach ($args as $i => $value) { - if (is_object($value)) { - if ($value instanceof HTMLPurifier_Token) { - // factor this out some time - if (!$generator) $generator = $this->context->get('Generator'); - if (isset($value->name)) $subst['$'.$i.'.Name'] = $value->name; - if (isset($value->data)) $subst['$'.$i.'.Data'] = $value->data; - $subst['$'.$i.'.Compact'] = - $subst['$'.$i.'.Serialized'] = $generator->generateFromToken($value); - // a more complex algorithm for compact representation - // could be introduced for all types of tokens. This - // may need to be factored out into a dedicated class - if (!empty($value->attr)) { - $stripped_token = clone $value; - $stripped_token->attr = array(); - $subst['$'.$i.'.Compact'] = $generator->generateFromToken($stripped_token); - } - $subst['$'.$i.'.Line'] = $value->line ? $value->line : 'unknown'; - } - continue; - } elseif (is_array($value)) { - $keys = array_keys($value); - if (array_keys($keys) === $keys) { - // list - $subst['$'.$i] = $this->listify($value); - } else { - // associative array - // no $i implementation yet, sorry - $subst['$'.$i.'.Keys'] = $this->listify($keys); - $subst['$'.$i.'.Values'] = $this->listify(array_values($value)); - } - continue; - } - $subst['$' . $i] = $value; - } - return strtr($raw, $subst); - } - -} - -// vim: et sw=4 sts=4 diff --git a/libraries/plugins/IDS/vendors/htmlpurifier/HTMLPurifier/Language/classes/en-x-test.php b/libraries/plugins/IDS/vendors/htmlpurifier/HTMLPurifier/Language/classes/en-x-test.php deleted file mode 100644 index d52fcb7..0000000 --- a/libraries/plugins/IDS/vendors/htmlpurifier/HTMLPurifier/Language/classes/en-x-test.php +++ /dev/null @@ -1,12 +0,0 @@ - 'HTML Purifier X' -); - -// vim: et sw=4 sts=4 diff --git a/libraries/plugins/IDS/vendors/htmlpurifier/HTMLPurifier/Language/messages/en-x-testmini.php b/libraries/plugins/IDS/vendors/htmlpurifier/HTMLPurifier/Language/messages/en-x-testmini.php deleted file mode 100644 index 806c83f..0000000 --- a/libraries/plugins/IDS/vendors/htmlpurifier/HTMLPurifier/Language/messages/en-x-testmini.php +++ /dev/null @@ -1,12 +0,0 @@ - 'HTML Purifier XNone' -); - -// vim: et sw=4 sts=4 diff --git a/libraries/plugins/IDS/vendors/htmlpurifier/HTMLPurifier/Language/messages/en.php b/libraries/plugins/IDS/vendors/htmlpurifier/HTMLPurifier/Language/messages/en.php deleted file mode 100644 index 8d7b573..0000000 --- a/libraries/plugins/IDS/vendors/htmlpurifier/HTMLPurifier/Language/messages/en.php +++ /dev/null @@ -1,63 +0,0 @@ - 'HTML Purifier', - -// for unit testing purposes -'LanguageFactoryTest: Pizza' => 'Pizza', -'LanguageTest: List' => '$1', -'LanguageTest: Hash' => '$1.Keys; $1.Values', - -'Item separator' => ', ', -'Item separator last' => ' and ', // non-Harvard style - -'ErrorCollector: No errors' => 'No errors detected. However, because error reporting is still incomplete, there may have been errors that the error collector was not notified of; please inspect the output HTML carefully.', -'ErrorCollector: At line' => ' at line $line', -'ErrorCollector: Incidental errors' => 'Incidental errors', - -'Lexer: Unclosed comment' => 'Unclosed comment', -'Lexer: Unescaped lt' => 'Unescaped less-than sign (<) should be <', -'Lexer: Missing gt' => 'Missing greater-than sign (>), previous less-than sign (<) should be escaped', -'Lexer: Missing attribute key' => 'Attribute declaration has no key', -'Lexer: Missing end quote' => 'Attribute declaration has no end quote', -'Lexer: Extracted body' => 'Removed document metadata tags', - -'Strategy_RemoveForeignElements: Tag transform' => '<$1> element transformed into $CurrentToken.Serialized', -'Strategy_RemoveForeignElements: Missing required attribute' => '$CurrentToken.Compact element missing required attribute $1', -'Strategy_RemoveForeignElements: Foreign element to text' => 'Unrecognized $CurrentToken.Serialized tag converted to text', -'Strategy_RemoveForeignElements: Foreign element removed' => 'Unrecognized $CurrentToken.Serialized tag removed', -'Strategy_RemoveForeignElements: Comment removed' => 'Comment containing "$CurrentToken.Data" removed', -'Strategy_RemoveForeignElements: Foreign meta element removed' => 'Unrecognized $CurrentToken.Serialized meta tag and all descendants removed', -'Strategy_RemoveForeignElements: Token removed to end' => 'Tags and text starting from $1 element where removed to end', -'Strategy_RemoveForeignElements: Trailing hyphen in comment removed' => 'Trailing hyphen(s) in comment removed', -'Strategy_RemoveForeignElements: Hyphens in comment collapsed' => 'Double hyphens in comments are not allowed, and were collapsed into single hyphens', - -'Strategy_MakeWellFormed: Unnecessary end tag removed' => 'Unnecessary $CurrentToken.Serialized tag removed', -'Strategy_MakeWellFormed: Unnecessary end tag to text' => 'Unnecessary $CurrentToken.Serialized tag converted to text', -'Strategy_MakeWellFormed: Tag auto closed' => '$1.Compact started on line $1.Line auto-closed by $CurrentToken.Compact', -'Strategy_MakeWellFormed: Tag carryover' => '$1.Compact started on line $1.Line auto-continued into $CurrentToken.Compact', -'Strategy_MakeWellFormed: Stray end tag removed' => 'Stray $CurrentToken.Serialized tag removed', -'Strategy_MakeWellFormed: Stray end tag to text' => 'Stray $CurrentToken.Serialized tag converted to text', -'Strategy_MakeWellFormed: Tag closed by element end' => '$1.Compact tag started on line $1.Line closed by end of $CurrentToken.Serialized', -'Strategy_MakeWellFormed: Tag closed by document end' => '$1.Compact tag started on line $1.Line closed by end of document', - -'Strategy_FixNesting: Node removed' => '$CurrentToken.Compact node removed', -'Strategy_FixNesting: Node excluded' => '$CurrentToken.Compact node removed due to descendant exclusion by ancestor element', -'Strategy_FixNesting: Node reorganized' => 'Contents of $CurrentToken.Compact node reorganized to enforce its content model', -'Strategy_FixNesting: Node contents removed' => 'Contents of $CurrentToken.Compact node removed', - -'AttrValidator: Attributes transformed' => 'Attributes on $CurrentToken.Compact transformed from $1.Keys to $2.Keys', -'AttrValidator: Attribute removed' => '$CurrentAttr.Name attribute on $CurrentToken.Compact removed', - -); - -$errorNames = array( - E_ERROR => 'Error', - E_WARNING => 'Warning', - E_NOTICE => 'Notice' -); - -// vim: et sw=4 sts=4 diff --git a/libraries/plugins/IDS/vendors/htmlpurifier/HTMLPurifier/LanguageFactory.php b/libraries/plugins/IDS/vendors/htmlpurifier/HTMLPurifier/LanguageFactory.php deleted file mode 100644 index 134ef8c..0000000 --- a/libraries/plugins/IDS/vendors/htmlpurifier/HTMLPurifier/LanguageFactory.php +++ /dev/null @@ -1,198 +0,0 @@ -cache[$language_code][$key] = $value - * @value array map - */ - public $cache; - - /** - * Valid keys in the HTMLPurifier_Language object. Designates which - * variables to slurp out of a message file. - * @value array list - */ - public $keys = array('fallback', 'messages', 'errorNames'); - - /** - * Instance of HTMLPurifier_AttrDef_Lang to validate language codes - * @value object HTMLPurifier_AttrDef_Lang - */ - protected $validator; - - /** - * Cached copy of dirname(__FILE__), directory of current file without - * trailing slash - * @value string filename - */ - protected $dir; - - /** - * Keys whose contents are a hash map and can be merged - * @value array lookup - */ - protected $mergeable_keys_map = array('messages' => true, 'errorNames' => true); - - /** - * Keys whose contents are a list and can be merged - * @value array lookup - */ - protected $mergeable_keys_list = array(); - - /** - * Retrieve sole instance of the factory. - * @param $prototype Optional prototype to overload sole instance with, - * or bool true to reset to default factory. - */ - public static function instance($prototype = null) { - static $instance = null; - if ($prototype !== null) { - $instance = $prototype; - } elseif ($instance === null || $prototype == true) { - $instance = new HTMLPurifier_LanguageFactory(); - $instance->setup(); - } - return $instance; - } - - /** - * Sets up the singleton, much like a constructor - * @note Prevents people from getting this outside of the singleton - */ - public function setup() { - $this->validator = new HTMLPurifier_AttrDef_Lang(); - $this->dir = HTMLPURIFIER_PREFIX . '/HTMLPurifier'; - } - - /** - * Creates a language object, handles class fallbacks - * @param $config Instance of HTMLPurifier_Config - * @param $context Instance of HTMLPurifier_Context - * @param $code Code to override configuration with. Private parameter. - */ - public function create($config, $context, $code = false) { - - // validate language code - if ($code === false) { - $code = $this->validator->validate( - $config->get('Core.Language'), $config, $context - ); - } else { - $code = $this->validator->validate($code, $config, $context); - } - if ($code === false) $code = 'en'; // malformed code becomes English - - $pcode = str_replace('-', '_', $code); // make valid PHP classname - static $depth = 0; // recursion protection - - if ($code == 'en') { - $lang = new HTMLPurifier_Language($config, $context); - } else { - $class = 'HTMLPurifier_Language_' . $pcode; - $file = $this->dir . '/Language/classes/' . $code . '.php'; - if (file_exists($file) || class_exists($class, false)) { - $lang = new $class($config, $context); - } else { - // Go fallback - $raw_fallback = $this->getFallbackFor($code); - $fallback = $raw_fallback ? $raw_fallback : 'en'; - $depth++; - $lang = $this->create($config, $context, $fallback); - if (!$raw_fallback) { - $lang->error = true; - } - $depth--; - } - } - - $lang->code = $code; - - return $lang; - - } - - /** - * Returns the fallback language for language - * @note Loads the original language into cache - * @param $code string language code - */ - public function getFallbackFor($code) { - $this->loadLanguage($code); - return $this->cache[$code]['fallback']; - } - - /** - * Loads language into the cache, handles message file and fallbacks - * @param $code string language code - */ - public function loadLanguage($code) { - static $languages_seen = array(); // recursion guard - - // abort if we've already loaded it - if (isset($this->cache[$code])) return; - - // generate filename - $filename = $this->dir . '/Language/messages/' . $code . '.php'; - - // default fallback : may be overwritten by the ensuing include - $fallback = ($code != 'en') ? 'en' : false; - - // load primary localisation - if (!file_exists($filename)) { - // skip the include: will rely solely on fallback - $filename = $this->dir . '/Language/messages/en.php'; - $cache = array(); - } else { - include $filename; - $cache = compact($this->keys); - } - - // load fallback localisation - if (!empty($fallback)) { - - // infinite recursion guard - if (isset($languages_seen[$code])) { - trigger_error('Circular fallback reference in language ' . - $code, E_USER_ERROR); - $fallback = 'en'; - } - $language_seen[$code] = true; - - // load the fallback recursively - $this->loadLanguage($fallback); - $fallback_cache = $this->cache[$fallback]; - - // merge fallback with current language - foreach ( $this->keys as $key ) { - if (isset($cache[$key]) && isset($fallback_cache[$key])) { - if (isset($this->mergeable_keys_map[$key])) { - $cache[$key] = $cache[$key] + $fallback_cache[$key]; - } elseif (isset($this->mergeable_keys_list[$key])) { - $cache[$key] = array_merge( $fallback_cache[$key], $cache[$key] ); - } - } else { - $cache[$key] = $fallback_cache[$key]; - } - } - - } - - // save to cache for later retrieval - $this->cache[$code] = $cache; - - return; - } - -} - -// vim: et sw=4 sts=4 diff --git a/libraries/plugins/IDS/vendors/htmlpurifier/HTMLPurifier/Length.php b/libraries/plugins/IDS/vendors/htmlpurifier/HTMLPurifier/Length.php deleted file mode 100644 index 8d2a46b..0000000 --- a/libraries/plugins/IDS/vendors/htmlpurifier/HTMLPurifier/Length.php +++ /dev/null @@ -1,115 +0,0 @@ - true, 'ex' => true, 'px' => true, 'in' => true, - 'cm' => true, 'mm' => true, 'pt' => true, 'pc' => true - ); - - /** - * @param number $n Magnitude - * @param string $u Unit - */ - public function __construct($n = '0', $u = false) { - $this->n = (string) $n; - $this->unit = $u !== false ? (string) $u : false; - } - - /** - * @param string $s Unit string, like '2em' or '3.4in' - * @warning Does not perform validation. - */ - static public function make($s) { - if ($s instanceof HTMLPurifier_Length) return $s; - $n_length = strspn($s, '1234567890.+-'); - $n = substr($s, 0, $n_length); - $unit = substr($s, $n_length); - if ($unit === '') $unit = false; - return new HTMLPurifier_Length($n, $unit); - } - - /** - * Validates the number and unit. - */ - protected function validate() { - // Special case: - if ($this->n === '+0' || $this->n === '-0') $this->n = '0'; - if ($this->n === '0' && $this->unit === false) return true; - if (!ctype_lower($this->unit)) $this->unit = strtolower($this->unit); - if (!isset(HTMLPurifier_Length::$allowedUnits[$this->unit])) return false; - // Hack: - $def = new HTMLPurifier_AttrDef_CSS_Number(); - $result = $def->validate($this->n, false, false); - if ($result === false) return false; - $this->n = $result; - return true; - } - - /** - * Returns string representation of number. - */ - public function toString() { - if (!$this->isValid()) return false; - return $this->n . $this->unit; - } - - /** - * Retrieves string numeric magnitude. - */ - public function getN() {return $this->n;} - - /** - * Retrieves string unit. - */ - public function getUnit() {return $this->unit;} - - /** - * Returns true if this length unit is valid. - */ - public function isValid() { - if ($this->isValid === null) $this->isValid = $this->validate(); - return $this->isValid; - } - - /** - * Compares two lengths, and returns 1 if greater, -1 if less and 0 if equal. - * @warning If both values are too large or small, this calculation will - * not work properly - */ - public function compareTo($l) { - if ($l === false) return false; - if ($l->unit !== $this->unit) { - $converter = new HTMLPurifier_UnitConverter(); - $l = $converter->convert($l, $this->unit); - if ($l === false) return false; - } - return $this->n - $l->n; - } - -} - -// vim: et sw=4 sts=4 diff --git a/libraries/plugins/IDS/vendors/htmlpurifier/HTMLPurifier/Lexer.php b/libraries/plugins/IDS/vendors/htmlpurifier/HTMLPurifier/Lexer.php deleted file mode 100644 index 9bdbbbb..0000000 --- a/libraries/plugins/IDS/vendors/htmlpurifier/HTMLPurifier/Lexer.php +++ /dev/null @@ -1,326 +0,0 @@ -get('Core.LexerImpl'); - } - - $needs_tracking = - $config->get('Core.MaintainLineNumbers') || - $config->get('Core.CollectErrors'); - - $inst = null; - if (is_object($lexer)) { - $inst = $lexer; - } else { - - if (is_null($lexer)) { do { - // auto-detection algorithm - - if ($needs_tracking) { - $lexer = 'DirectLex'; - break; - } - - if ( - class_exists('DOMDocument') && - method_exists('DOMDocument', 'loadHTML') && - !extension_loaded('domxml') - ) { - // check for DOM support, because while it's part of the - // core, it can be disabled compile time. Also, the PECL - // domxml extension overrides the default DOM, and is evil - // and nasty and we shan't bother to support it - $lexer = 'DOMLex'; - } else { - $lexer = 'DirectLex'; - } - - } while(0); } // do..while so we can break - - // instantiate recognized string names - switch ($lexer) { - case 'DOMLex': - $inst = new HTMLPurifier_Lexer_DOMLex(); - break; - case 'DirectLex': - $inst = new HTMLPurifier_Lexer_DirectLex(); - break; - case 'PH5P': - $inst = new HTMLPurifier_Lexer_PH5P(); - break; - default: - throw new HTMLPurifier_Exception("Cannot instantiate unrecognized Lexer type " . htmlspecialchars($lexer)); - } - } - - if (!$inst) throw new HTMLPurifier_Exception('No lexer was instantiated'); - - // once PHP DOM implements native line numbers, or we - // hack out something using XSLT, remove this stipulation - if ($needs_tracking && !$inst->tracksLineNumbers) { - throw new HTMLPurifier_Exception('Cannot use lexer that does not support line numbers with Core.MaintainLineNumbers or Core.CollectErrors (use DirectLex instead)'); - } - - return $inst; - - } - - // -- CONVENIENCE MEMBERS --------------------------------------------- - - public function __construct() { - $this->_entity_parser = new HTMLPurifier_EntityParser(); - } - - /** - * Most common entity to raw value conversion table for special entities. - */ - protected $_special_entity2str = - array( - '"' => '"', - '&' => '&', - '<' => '<', - '>' => '>', - ''' => "'", - ''' => "'", - ''' => "'" - ); - - /** - * Parses special entities into the proper characters. - * - * This string will translate escaped versions of the special characters - * into the correct ones. - * - * @warning - * You should be able to treat the output of this function as - * completely parsed, but that's only because all other entities should - * have been handled previously in substituteNonSpecialEntities() - * - * @param $string String character data to be parsed. - * @returns Parsed character data. - */ - public function parseData($string) { - - // following functions require at least one character - if ($string === '') return ''; - - // subtracts amps that cannot possibly be escaped - $num_amp = substr_count($string, '&') - substr_count($string, '& ') - - ($string[strlen($string)-1] === '&' ? 1 : 0); - - if (!$num_amp) return $string; // abort if no entities - $num_esc_amp = substr_count($string, '&'); - $string = strtr($string, $this->_special_entity2str); - - // code duplication for sake of optimization, see above - $num_amp_2 = substr_count($string, '&') - substr_count($string, '& ') - - ($string[strlen($string)-1] === '&' ? 1 : 0); - - if ($num_amp_2 <= $num_esc_amp) return $string; - - // hmm... now we have some uncommon entities. Use the callback. - $string = $this->_entity_parser->substituteSpecialEntities($string); - return $string; - } - - /** - * Lexes an HTML string into tokens. - * - * @param $string String HTML. - * @return HTMLPurifier_Token array representation of HTML. - */ - public function tokenizeHTML($string, $config, $context) { - trigger_error('Call to abstract class', E_USER_ERROR); - } - - /** - * Translates CDATA sections into regular sections (through escaping). - * - * @param $string HTML string to process. - * @returns HTML with CDATA sections escaped. - */ - protected static function escapeCDATA($string) { - return preg_replace_callback( - '//s', - array('HTMLPurifier_Lexer', 'CDATACallback'), - $string - ); - } - - /** - * Special CDATA case that is especially convoluted for )#si', - array($this, 'scriptCallback'), $html); - } - - $html = $this->normalize($html, $config, $context); - - $cursor = 0; // our location in the text - $inside_tag = false; // whether or not we're parsing the inside of a tag - $array = array(); // result array - - // This is also treated to mean maintain *column* numbers too - $maintain_line_numbers = $config->get('Core.MaintainLineNumbers'); - - if ($maintain_line_numbers === null) { - // automatically determine line numbering by checking - // if error collection is on - $maintain_line_numbers = $config->get('Core.CollectErrors'); - } - - if ($maintain_line_numbers) { - $current_line = 1; - $current_col = 0; - $length = strlen($html); - } else { - $current_line = false; - $current_col = false; - $length = false; - } - $context->register('CurrentLine', $current_line); - $context->register('CurrentCol', $current_col); - $nl = "\n"; - // how often to manually recalculate. This will ALWAYS be right, - // but it's pretty wasteful. Set to 0 to turn off - $synchronize_interval = $config->get('Core.DirectLexLineNumberSyncInterval'); - - $e = false; - if ($config->get('Core.CollectErrors')) { - $e =& $context->get('ErrorCollector'); - } - - // for testing synchronization - $loops = 0; - - while(++$loops) { - - // $cursor is either at the start of a token, or inside of - // a tag (i.e. there was a < immediately before it), as indicated - // by $inside_tag - - if ($maintain_line_numbers) { - - // $rcursor, however, is always at the start of a token. - $rcursor = $cursor - (int) $inside_tag; - - // Column number is cheap, so we calculate it every round. - // We're interested at the *end* of the newline string, so - // we need to add strlen($nl) == 1 to $nl_pos before subtracting it - // from our "rcursor" position. - $nl_pos = strrpos($html, $nl, $rcursor - $length); - $current_col = $rcursor - (is_bool($nl_pos) ? 0 : $nl_pos + 1); - - // recalculate lines - if ( - $synchronize_interval && // synchronization is on - $cursor > 0 && // cursor is further than zero - $loops % $synchronize_interval === 0 // time to synchronize! - ) { - $current_line = 1 + $this->substrCount($html, $nl, 0, $cursor); - } - - } - - $position_next_lt = strpos($html, '<', $cursor); - $position_next_gt = strpos($html, '>', $cursor); - - // triggers on "asdf" but not "asdf " - // special case to set up context - if ($position_next_lt === $cursor) { - $inside_tag = true; - $cursor++; - } - - if (!$inside_tag && $position_next_lt !== false) { - // We are not inside tag and there still is another tag to parse - $token = new - HTMLPurifier_Token_Text( - $this->parseData( - substr( - $html, $cursor, $position_next_lt - $cursor - ) - ) - ); - if ($maintain_line_numbers) { - $token->rawPosition($current_line, $current_col); - $current_line += $this->substrCount($html, $nl, $cursor, $position_next_lt - $cursor); - } - $array[] = $token; - $cursor = $position_next_lt + 1; - $inside_tag = true; - continue; - } elseif (!$inside_tag) { - // We are not inside tag but there are no more tags - // If we're already at the end, break - if ($cursor === strlen($html)) break; - // Create Text of rest of string - $token = new - HTMLPurifier_Token_Text( - $this->parseData( - substr( - $html, $cursor - ) - ) - ); - if ($maintain_line_numbers) $token->rawPosition($current_line, $current_col); - $array[] = $token; - break; - } elseif ($inside_tag && $position_next_gt !== false) { - // We are in tag and it is well formed - // Grab the internals of the tag - $strlen_segment = $position_next_gt - $cursor; - - if ($strlen_segment < 1) { - // there's nothing to process! - $token = new HTMLPurifier_Token_Text('<'); - $cursor++; - continue; - } - - $segment = substr($html, $cursor, $strlen_segment); - - if ($segment === false) { - // somehow, we attempted to access beyond the end of - // the string, defense-in-depth, reported by Nate Abele - break; - } - - // Check if it's a comment - if ( - substr($segment, 0, 3) === '!--' - ) { - // re-determine segment length, looking for --> - $position_comment_end = strpos($html, '-->', $cursor); - if ($position_comment_end === false) { - // uh oh, we have a comment that extends to - // infinity. Can't be helped: set comment - // end position to end of string - if ($e) $e->send(E_WARNING, 'Lexer: Unclosed comment'); - $position_comment_end = strlen($html); - $end = true; - } else { - $end = false; - } - $strlen_segment = $position_comment_end - $cursor; - $segment = substr($html, $cursor, $strlen_segment); - $token = new - HTMLPurifier_Token_Comment( - substr( - $segment, 3, $strlen_segment - 3 - ) - ); - if ($maintain_line_numbers) { - $token->rawPosition($current_line, $current_col); - $current_line += $this->substrCount($html, $nl, $cursor, $strlen_segment); - } - $array[] = $token; - $cursor = $end ? $position_comment_end : $position_comment_end + 3; - $inside_tag = false; - continue; - } - - // Check if it's an end tag - $is_end_tag = (strpos($segment,'/') === 0); - if ($is_end_tag) { - $type = substr($segment, 1); - $token = new HTMLPurifier_Token_End($type); - if ($maintain_line_numbers) { - $token->rawPosition($current_line, $current_col); - $current_line += $this->substrCount($html, $nl, $cursor, $position_next_gt - $cursor); - } - $array[] = $token; - $inside_tag = false; - $cursor = $position_next_gt + 1; - continue; - } - - // Check leading character is alnum, if not, we may - // have accidently grabbed an emoticon. Translate into - // text and go our merry way - if (!ctype_alpha($segment[0])) { - // XML: $segment[0] !== '_' && $segment[0] !== ':' - if ($e) $e->send(E_NOTICE, 'Lexer: Unescaped lt'); - $token = new HTMLPurifier_Token_Text('<'); - if ($maintain_line_numbers) { - $token->rawPosition($current_line, $current_col); - $current_line += $this->substrCount($html, $nl, $cursor, $position_next_gt - $cursor); - } - $array[] = $token; - $inside_tag = false; - continue; - } - - // Check if it is explicitly self closing, if so, remove - // trailing slash. Remember, we could have a tag like
    , so - // any later token processing scripts must convert improperly - // classified EmptyTags from StartTags. - $is_self_closing = (strrpos($segment,'/') === $strlen_segment-1); - if ($is_self_closing) { - $strlen_segment--; - $segment = substr($segment, 0, $strlen_segment); - } - - // Check if there are any attributes - $position_first_space = strcspn($segment, $this->_whitespace); - - if ($position_first_space >= $strlen_segment) { - if ($is_self_closing) { - $token = new HTMLPurifier_Token_Empty($segment); - } else { - $token = new HTMLPurifier_Token_Start($segment); - } - if ($maintain_line_numbers) { - $token->rawPosition($current_line, $current_col); - $current_line += $this->substrCount($html, $nl, $cursor, $position_next_gt - $cursor); - } - $array[] = $token; - $inside_tag = false; - $cursor = $position_next_gt + 1; - continue; - } - - // Grab out all the data - $type = substr($segment, 0, $position_first_space); - $attribute_string = - trim( - substr( - $segment, $position_first_space - ) - ); - if ($attribute_string) { - $attr = $this->parseAttributeString( - $attribute_string - , $config, $context - ); - } else { - $attr = array(); - } - - if ($is_self_closing) { - $token = new HTMLPurifier_Token_Empty($type, $attr); - } else { - $token = new HTMLPurifier_Token_Start($type, $attr); - } - if ($maintain_line_numbers) { - $token->rawPosition($current_line, $current_col); - $current_line += $this->substrCount($html, $nl, $cursor, $position_next_gt - $cursor); - } - $array[] = $token; - $cursor = $position_next_gt + 1; - $inside_tag = false; - continue; - } else { - // inside tag, but there's no ending > sign - if ($e) $e->send(E_WARNING, 'Lexer: Missing gt'); - $token = new - HTMLPurifier_Token_Text( - '<' . - $this->parseData( - substr($html, $cursor) - ) - ); - if ($maintain_line_numbers) $token->rawPosition($current_line, $current_col); - // no cursor scroll? Hmm... - $array[] = $token; - break; - } - break; - } - - $context->destroy('CurrentLine'); - $context->destroy('CurrentCol'); - return $array; - } - - /** - * PHP 5.0.x compatible substr_count that implements offset and length - */ - protected function substrCount($haystack, $needle, $offset, $length) { - static $oldVersion; - if ($oldVersion === null) { - $oldVersion = version_compare(PHP_VERSION, '5.1', '<'); - } - if ($oldVersion) { - $haystack = substr($haystack, $offset, $length); - return substr_count($haystack, $needle); - } else { - return substr_count($haystack, $needle, $offset, $length); - } - } - - /** - * Takes the inside of an HTML tag and makes an assoc array of attributes. - * - * @param $string Inside of tag excluding name. - * @returns Assoc array of attributes. - */ - public function parseAttributeString($string, $config, $context) { - $string = (string) $string; // quick typecast - - if ($string == '') return array(); // no attributes - - $e = false; - if ($config->get('Core.CollectErrors')) { - $e =& $context->get('ErrorCollector'); - } - - // let's see if we can abort as quickly as possible - // one equal sign, no spaces => one attribute - $num_equal = substr_count($string, '='); - $has_space = strpos($string, ' '); - if ($num_equal === 0 && !$has_space) { - // bool attribute - return array($string => $string); - } elseif ($num_equal === 1 && !$has_space) { - // only one attribute - list($key, $quoted_value) = explode('=', $string); - $quoted_value = trim($quoted_value); - if (!$key) { - if ($e) $e->send(E_ERROR, 'Lexer: Missing attribute key'); - return array(); - } - if (!$quoted_value) return array($key => ''); - $first_char = @$quoted_value[0]; - $last_char = @$quoted_value[strlen($quoted_value)-1]; - - $same_quote = ($first_char == $last_char); - $open_quote = ($first_char == '"' || $first_char == "'"); - - if ( $same_quote && $open_quote) { - // well behaved - $value = substr($quoted_value, 1, strlen($quoted_value) - 2); - } else { - // not well behaved - if ($open_quote) { - if ($e) $e->send(E_ERROR, 'Lexer: Missing end quote'); - $value = substr($quoted_value, 1); - } else { - $value = $quoted_value; - } - } - if ($value === false) $value = ''; - return array($key => $this->parseData($value)); - } - - // setup loop environment - $array = array(); // return assoc array of attributes - $cursor = 0; // current position in string (moves forward) - $size = strlen($string); // size of the string (stays the same) - - // if we have unquoted attributes, the parser expects a terminating - // space, so let's guarantee that there's always a terminating space. - $string .= ' '; - - while(true) { - - if ($cursor >= $size) { - break; - } - - $cursor += ($value = strspn($string, $this->_whitespace, $cursor)); - // grab the key - - $key_begin = $cursor; //we're currently at the start of the key - - // scroll past all characters that are the key (not whitespace or =) - $cursor += strcspn($string, $this->_whitespace . '=', $cursor); - - $key_end = $cursor; // now at the end of the key - - $key = substr($string, $key_begin, $key_end - $key_begin); - - if (!$key) { - if ($e) $e->send(E_ERROR, 'Lexer: Missing attribute key'); - $cursor += strcspn($string, $this->_whitespace, $cursor + 1); // prevent infinite loop - continue; // empty key - } - - // scroll past all whitespace - $cursor += strspn($string, $this->_whitespace, $cursor); - - if ($cursor >= $size) { - $array[$key] = $key; - break; - } - - // if the next character is an equal sign, we've got a regular - // pair, otherwise, it's a bool attribute - $first_char = @$string[$cursor]; - - if ($first_char == '=') { - // key="value" - - $cursor++; - $cursor += strspn($string, $this->_whitespace, $cursor); - - if ($cursor === false) { - $array[$key] = ''; - break; - } - - // we might be in front of a quote right now - - $char = @$string[$cursor]; - - if ($char == '"' || $char == "'") { - // it's quoted, end bound is $char - $cursor++; - $value_begin = $cursor; - $cursor = strpos($string, $char, $cursor); - $value_end = $cursor; - } else { - // it's not quoted, end bound is whitespace - $value_begin = $cursor; - $cursor += strcspn($string, $this->_whitespace, $cursor); - $value_end = $cursor; - } - - // we reached a premature end - if ($cursor === false) { - $cursor = $size; - $value_end = $cursor; - } - - $value = substr($string, $value_begin, $value_end - $value_begin); - if ($value === false) $value = ''; - $array[$key] = $this->parseData($value); - $cursor++; - - } else { - // boolattr - if ($key !== '') { - $array[$key] = $key; - } else { - // purely theoretical - if ($e) $e->send(E_ERROR, 'Lexer: Missing attribute key'); - } - - } - } - return $array; - } - -} - -// vim: et sw=4 sts=4 diff --git a/libraries/plugins/IDS/vendors/htmlpurifier/HTMLPurifier/Lexer/PEARSax3.php b/libraries/plugins/IDS/vendors/htmlpurifier/HTMLPurifier/Lexer/PEARSax3.php deleted file mode 100644 index 1d358c7..0000000 --- a/libraries/plugins/IDS/vendors/htmlpurifier/HTMLPurifier/Lexer/PEARSax3.php +++ /dev/null @@ -1,139 +0,0 @@ -tokens = array(); - $this->last_token_was_empty = false; - - $string = $this->normalize($string, $config, $context); - - $this->parent_handler = set_error_handler(array($this, 'muteStrictErrorHandler')); - - $parser = new XML_HTMLSax3(); - $parser->set_object($this); - $parser->set_element_handler('openHandler','closeHandler'); - $parser->set_data_handler('dataHandler'); - $parser->set_escape_handler('escapeHandler'); - - // doesn't seem to work correctly for attributes - $parser->set_option('XML_OPTION_ENTITIES_PARSED', 1); - - $parser->parse($string); - - restore_error_handler(); - - return $this->tokens; - - } - - /** - * Open tag event handler, interface is defined by PEAR package. - */ - public function openHandler(&$parser, $name, $attrs, $closed) { - // entities are not resolved in attrs - foreach ($attrs as $key => $attr) { - $attrs[$key] = $this->parseData($attr); - } - if ($closed) { - $this->tokens[] = new HTMLPurifier_Token_Empty($name, $attrs); - $this->last_token_was_empty = true; - } else { - $this->tokens[] = new HTMLPurifier_Token_Start($name, $attrs); - } - $this->stack[] = $name; - return true; - } - - /** - * Close tag event handler, interface is defined by PEAR package. - */ - public function closeHandler(&$parser, $name) { - // HTMLSax3 seems to always send empty tags an extra close tag - // check and ignore if you see it: - // [TESTME] to make sure it doesn't overreach - if ($this->last_token_was_empty) { - $this->last_token_was_empty = false; - return true; - } - $this->tokens[] = new HTMLPurifier_Token_End($name); - if (!empty($this->stack)) array_pop($this->stack); - return true; - } - - /** - * Data event handler, interface is defined by PEAR package. - */ - public function dataHandler(&$parser, $data) { - $this->last_token_was_empty = false; - $this->tokens[] = new HTMLPurifier_Token_Text($data); - return true; - } - - /** - * Escaped text handler, interface is defined by PEAR package. - */ - public function escapeHandler(&$parser, $data) { - if (strpos($data, '--') === 0) { - // remove trailing and leading double-dashes - $data = substr($data, 2); - if (strlen($data) >= 2 && substr($data, -2) == "--") { - $data = substr($data, 0, -2); - } - if (isset($this->stack[sizeof($this->stack) - 1]) && - $this->stack[sizeof($this->stack) - 1] == "style") { - $this->tokens[] = new HTMLPurifier_Token_Text($data); - } else { - $this->tokens[] = new HTMLPurifier_Token_Comment($data); - } - $this->last_token_was_empty = false; - } - // CDATA is handled elsewhere, but if it was handled here: - //if (strpos($data, '[CDATA[') === 0) { - // $this->tokens[] = new HTMLPurifier_Token_Text( - // substr($data, 7, strlen($data) - 9) ); - //} - return true; - } - - /** - * An error handler that mutes strict errors - */ - public function muteStrictErrorHandler($errno, $errstr, $errfile=null, $errline=null, $errcontext=null) { - if ($errno == E_STRICT) return; - return call_user_func($this->parent_handler, $errno, $errstr, $errfile, $errline, $errcontext); - } - -} - -// vim: et sw=4 sts=4 diff --git a/libraries/plugins/IDS/vendors/htmlpurifier/HTMLPurifier/Lexer/PH5P.php b/libraries/plugins/IDS/vendors/htmlpurifier/HTMLPurifier/Lexer/PH5P.php deleted file mode 100644 index faf00b8..0000000 --- a/libraries/plugins/IDS/vendors/htmlpurifier/HTMLPurifier/Lexer/PH5P.php +++ /dev/null @@ -1,3904 +0,0 @@ -normalize($html, $config, $context); - $new_html = $this->wrapHTML($new_html, $config, $context); - try { - $parser = new HTML5($new_html); - $doc = $parser->save(); - } catch (DOMException $e) { - // Uh oh, it failed. Punt to DirectLex. - $lexer = new HTMLPurifier_Lexer_DirectLex(); - $context->register('PH5PError', $e); // save the error, so we can detect it - return $lexer->tokenizeHTML($html, $config, $context); // use original HTML - } - $tokens = array(); - $this->tokenizeDOM( - $doc->getElementsByTagName('html')->item(0)-> // - getElementsByTagName('body')->item(0)-> // - getElementsByTagName('div')->item(0) //
    - , $tokens); - return $tokens; - } - -} - -/* - -Copyright 2007 Jeroen van der Meer - -Permission is hereby granted, free of charge, to any person obtaining a -copy of this software and associated documentation files (the -"Software"), to deal in the Software without restriction, including -without limitation the rights to use, copy, modify, merge, publish, -distribute, sublicense, and/or sell copies of the Software, and to -permit persons to whom the Software is furnished to do so, subject to -the following conditions: - -The above copyright notice and this permission notice shall be included -in all copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS -OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF -MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. -IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY -CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, -TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE -SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. - -*/ - -class HTML5 { - private $data; - private $char; - private $EOF; - private $state; - private $tree; - private $token; - private $content_model; - private $escape = false; - private $entities = array('AElig;','AElig','AMP;','AMP','Aacute;','Aacute', - 'Acirc;','Acirc','Agrave;','Agrave','Alpha;','Aring;','Aring','Atilde;', - 'Atilde','Auml;','Auml','Beta;','COPY;','COPY','Ccedil;','Ccedil','Chi;', - 'Dagger;','Delta;','ETH;','ETH','Eacute;','Eacute','Ecirc;','Ecirc','Egrave;', - 'Egrave','Epsilon;','Eta;','Euml;','Euml','GT;','GT','Gamma;','Iacute;', - 'Iacute','Icirc;','Icirc','Igrave;','Igrave','Iota;','Iuml;','Iuml','Kappa;', - 'LT;','LT','Lambda;','Mu;','Ntilde;','Ntilde','Nu;','OElig;','Oacute;', - 'Oacute','Ocirc;','Ocirc','Ograve;','Ograve','Omega;','Omicron;','Oslash;', - 'Oslash','Otilde;','Otilde','Ouml;','Ouml','Phi;','Pi;','Prime;','Psi;', - 'QUOT;','QUOT','REG;','REG','Rho;','Scaron;','Sigma;','THORN;','THORN', - 'TRADE;','Tau;','Theta;','Uacute;','Uacute','Ucirc;','Ucirc','Ugrave;', - 'Ugrave','Upsilon;','Uuml;','Uuml','Xi;','Yacute;','Yacute','Yuml;','Zeta;', - 'aacute;','aacute','acirc;','acirc','acute;','acute','aelig;','aelig', - 'agrave;','agrave','alefsym;','alpha;','amp;','amp','and;','ang;','apos;', - 'aring;','aring','asymp;','atilde;','atilde','auml;','auml','bdquo;','beta;', - 'brvbar;','brvbar','bull;','cap;','ccedil;','ccedil','cedil;','cedil', - 'cent;','cent','chi;','circ;','clubs;','cong;','copy;','copy','crarr;', - 'cup;','curren;','curren','dArr;','dagger;','darr;','deg;','deg','delta;', - 'diams;','divide;','divide','eacute;','eacute','ecirc;','ecirc','egrave;', - 'egrave','empty;','emsp;','ensp;','epsilon;','equiv;','eta;','eth;','eth', - 'euml;','euml','euro;','exist;','fnof;','forall;','frac12;','frac12', - 'frac14;','frac14','frac34;','frac34','frasl;','gamma;','ge;','gt;','gt', - 'hArr;','harr;','hearts;','hellip;','iacute;','iacute','icirc;','icirc', - 'iexcl;','iexcl','igrave;','igrave','image;','infin;','int;','iota;', - 'iquest;','iquest','isin;','iuml;','iuml','kappa;','lArr;','lambda;','lang;', - 'laquo;','laquo','larr;','lceil;','ldquo;','le;','lfloor;','lowast;','loz;', - 'lrm;','lsaquo;','lsquo;','lt;','lt','macr;','macr','mdash;','micro;','micro', - 'middot;','middot','minus;','mu;','nabla;','nbsp;','nbsp','ndash;','ne;', - 'ni;','not;','not','notin;','nsub;','ntilde;','ntilde','nu;','oacute;', - 'oacute','ocirc;','ocirc','oelig;','ograve;','ograve','oline;','omega;', - 'omicron;','oplus;','or;','ordf;','ordf','ordm;','ordm','oslash;','oslash', - 'otilde;','otilde','otimes;','ouml;','ouml','para;','para','part;','permil;', - 'perp;','phi;','pi;','piv;','plusmn;','plusmn','pound;','pound','prime;', - 'prod;','prop;','psi;','quot;','quot','rArr;','radic;','rang;','raquo;', - 'raquo','rarr;','rceil;','rdquo;','real;','reg;','reg','rfloor;','rho;', - 'rlm;','rsaquo;','rsquo;','sbquo;','scaron;','sdot;','sect;','sect','shy;', - 'shy','sigma;','sigmaf;','sim;','spades;','sub;','sube;','sum;','sup1;', - 'sup1','sup2;','sup2','sup3;','sup3','sup;','supe;','szlig;','szlig','tau;', - 'there4;','theta;','thetasym;','thinsp;','thorn;','thorn','tilde;','times;', - 'times','trade;','uArr;','uacute;','uacute','uarr;','ucirc;','ucirc', - 'ugrave;','ugrave','uml;','uml','upsih;','upsilon;','uuml;','uuml','weierp;', - 'xi;','yacute;','yacute','yen;','yen','yuml;','yuml','zeta;','zwj;','zwnj;'); - - const PCDATA = 0; - const RCDATA = 1; - const CDATA = 2; - const PLAINTEXT = 3; - - const DOCTYPE = 0; - const STARTTAG = 1; - const ENDTAG = 2; - const COMMENT = 3; - const CHARACTR = 4; - const EOF = 5; - - public function __construct($data) { - - $this->data = $data; - $this->char = -1; - $this->EOF = strlen($data); - $this->tree = new HTML5TreeConstructer; - $this->content_model = self::PCDATA; - - $this->state = 'data'; - - while($this->state !== null) { - $this->{$this->state.'State'}(); - } - } - - public function save() { - return $this->tree->save(); - } - - private function char() { - return ($this->char < $this->EOF) - ? $this->data[$this->char] - : false; - } - - private function character($s, $l = 0) { - if($s + $l < $this->EOF) { - if($l === 0) { - return $this->data[$s]; - } else { - return substr($this->data, $s, $l); - } - } - } - - private function characters($char_class, $start) { - return preg_replace('#^(['.$char_class.']+).*#s', '\\1', substr($this->data, $start)); - } - - private function dataState() { - // Consume the next input character - $this->char++; - $char = $this->char(); - - if($char === '&' && ($this->content_model === self::PCDATA || $this->content_model === self::RCDATA)) { - /* U+0026 AMPERSAND (&) - When the content model flag is set to one of the PCDATA or RCDATA - states: switch to the entity data state. Otherwise: treat it as per - the "anything else" entry below. */ - $this->state = 'entityData'; - - } elseif($char === '-') { - /* If the content model flag is set to either the RCDATA state or - the CDATA state, and the escape flag is false, and there are at - least three characters before this one in the input stream, and the - last four characters in the input stream, including this one, are - U+003C LESS-THAN SIGN, U+0021 EXCLAMATION MARK, U+002D HYPHEN-MINUS, - and U+002D HYPHEN-MINUS (""), - set the escape flag to false. */ - if(($this->content_model === self::RCDATA || - $this->content_model === self::CDATA) && $this->escape === true && - $this->character($this->char, 3) === '-->') { - $this->escape = false; - } - - /* In any case, emit the input character as a character token. - Stay in the data state. */ - $this->emitToken(array( - 'type' => self::CHARACTR, - 'data' => $char - )); - - } elseif($this->char === $this->EOF) { - /* EOF - Emit an end-of-file token. */ - $this->EOF(); - - } elseif($this->content_model === self::PLAINTEXT) { - /* When the content model flag is set to the PLAINTEXT state - THIS DIFFERS GREATLY FROM THE SPEC: Get the remaining characters of - the text and emit it as a character token. */ - $this->emitToken(array( - 'type' => self::CHARACTR, - 'data' => substr($this->data, $this->char) - )); - - $this->EOF(); - - } else { - /* Anything else - THIS DIFFERS GREATLY FROM THE SPEC: Get as many character that - otherwise would also be treated as a character token and emit it - as a single character token. Stay in the data state. */ - $len = strcspn($this->data, '<&', $this->char); - $char = substr($this->data, $this->char, $len); - $this->char += $len - 1; - - $this->emitToken(array( - 'type' => self::CHARACTR, - 'data' => $char - )); - - $this->state = 'data'; - } - } - - private function entityDataState() { - // Attempt to consume an entity. - $entity = $this->entity(); - - // If nothing is returned, emit a U+0026 AMPERSAND character token. - // Otherwise, emit the character token that was returned. - $char = (!$entity) ? '&' : $entity; - $this->emitToken(array( - 'type' => self::CHARACTR, - 'data' => $char - )); - - // Finally, switch to the data state. - $this->state = 'data'; - } - - private function tagOpenState() { - switch($this->content_model) { - case self::RCDATA: - case self::CDATA: - /* If the next input character is a U+002F SOLIDUS (/) character, - consume it and switch to the close tag open state. If the next - input character is not a U+002F SOLIDUS (/) character, emit a - U+003C LESS-THAN SIGN character token and switch to the data - state to process the next input character. */ - if($this->character($this->char + 1) === '/') { - $this->char++; - $this->state = 'closeTagOpen'; - - } else { - $this->emitToken(array( - 'type' => self::CHARACTR, - 'data' => '<' - )); - - $this->state = 'data'; - } - break; - - case self::PCDATA: - // If the content model flag is set to the PCDATA state - // Consume the next input character: - $this->char++; - $char = $this->char(); - - if($char === '!') { - /* U+0021 EXCLAMATION MARK (!) - Switch to the markup declaration open state. */ - $this->state = 'markupDeclarationOpen'; - - } elseif($char === '/') { - /* U+002F SOLIDUS (/) - Switch to the close tag open state. */ - $this->state = 'closeTagOpen'; - - } elseif(preg_match('/^[A-Za-z]$/', $char)) { - /* U+0041 LATIN LETTER A through to U+005A LATIN LETTER Z - Create a new start tag token, set its tag name to the lowercase - version of the input character (add 0x0020 to the character's code - point), then switch to the tag name state. (Don't emit the token - yet; further details will be filled in before it is emitted.) */ - $this->token = array( - 'name' => strtolower($char), - 'type' => self::STARTTAG, - 'attr' => array() - ); - - $this->state = 'tagName'; - - } elseif($char === '>') { - /* U+003E GREATER-THAN SIGN (>) - Parse error. Emit a U+003C LESS-THAN SIGN character token and a - U+003E GREATER-THAN SIGN character token. Switch to the data state. */ - $this->emitToken(array( - 'type' => self::CHARACTR, - 'data' => '<>' - )); - - $this->state = 'data'; - - } elseif($char === '?') { - /* U+003F QUESTION MARK (?) - Parse error. Switch to the bogus comment state. */ - $this->state = 'bogusComment'; - - } else { - /* Anything else - Parse error. Emit a U+003C LESS-THAN SIGN character token and - reconsume the current input character in the data state. */ - $this->emitToken(array( - 'type' => self::CHARACTR, - 'data' => '<' - )); - - $this->char--; - $this->state = 'data'; - } - break; - } - } - - private function closeTagOpenState() { - $next_node = strtolower($this->characters('A-Za-z', $this->char + 1)); - $the_same = count($this->tree->stack) > 0 && $next_node === end($this->tree->stack)->nodeName; - - if(($this->content_model === self::RCDATA || $this->content_model === self::CDATA) && - (!$the_same || ($the_same && (!preg_match('/[\t\n\x0b\x0c >\/]/', - $this->character($this->char + 1 + strlen($next_node))) || $this->EOF === $this->char)))) { - /* If the content model flag is set to the RCDATA or CDATA states then - examine the next few characters. If they do not match the tag name of - the last start tag token emitted (case insensitively), or if they do but - they are not immediately followed by one of the following characters: - * U+0009 CHARACTER TABULATION - * U+000A LINE FEED (LF) - * U+000B LINE TABULATION - * U+000C FORM FEED (FF) - * U+0020 SPACE - * U+003E GREATER-THAN SIGN (>) - * U+002F SOLIDUS (/) - * EOF - ...then there is a parse error. Emit a U+003C LESS-THAN SIGN character - token, a U+002F SOLIDUS character token, and switch to the data state - to process the next input character. */ - $this->emitToken(array( - 'type' => self::CHARACTR, - 'data' => 'state = 'data'; - - } else { - /* Otherwise, if the content model flag is set to the PCDATA state, - or if the next few characters do match that tag name, consume the - next input character: */ - $this->char++; - $char = $this->char(); - - if(preg_match('/^[A-Za-z]$/', $char)) { - /* U+0041 LATIN LETTER A through to U+005A LATIN LETTER Z - Create a new end tag token, set its tag name to the lowercase version - of the input character (add 0x0020 to the character's code point), then - switch to the tag name state. (Don't emit the token yet; further details - will be filled in before it is emitted.) */ - $this->token = array( - 'name' => strtolower($char), - 'type' => self::ENDTAG - ); - - $this->state = 'tagName'; - - } elseif($char === '>') { - /* U+003E GREATER-THAN SIGN (>) - Parse error. Switch to the data state. */ - $this->state = 'data'; - - } elseif($this->char === $this->EOF) { - /* EOF - Parse error. Emit a U+003C LESS-THAN SIGN character token and a U+002F - SOLIDUS character token. Reconsume the EOF character in the data state. */ - $this->emitToken(array( - 'type' => self::CHARACTR, - 'data' => 'char--; - $this->state = 'data'; - - } else { - /* Parse error. Switch to the bogus comment state. */ - $this->state = 'bogusComment'; - } - } - } - - private function tagNameState() { - // Consume the next input character: - $this->char++; - $char = $this->character($this->char); - - if(preg_match('/^[\t\n\x0b\x0c ]$/', $char)) { - /* U+0009 CHARACTER TABULATION - U+000A LINE FEED (LF) - U+000B LINE TABULATION - U+000C FORM FEED (FF) - U+0020 SPACE - Switch to the before attribute name state. */ - $this->state = 'beforeAttributeName'; - - } elseif($char === '>') { - /* U+003E GREATER-THAN SIGN (>) - Emit the current tag token. Switch to the data state. */ - $this->emitToken($this->token); - $this->state = 'data'; - - } elseif($this->char === $this->EOF) { - /* EOF - Parse error. Emit the current tag token. Reconsume the EOF - character in the data state. */ - $this->emitToken($this->token); - - $this->char--; - $this->state = 'data'; - - } elseif($char === '/') { - /* U+002F SOLIDUS (/) - Parse error unless this is a permitted slash. Switch to the before - attribute name state. */ - $this->state = 'beforeAttributeName'; - - } else { - /* Anything else - Append the current input character to the current tag token's tag name. - Stay in the tag name state. */ - $this->token['name'] .= strtolower($char); - $this->state = 'tagName'; - } - } - - private function beforeAttributeNameState() { - // Consume the next input character: - $this->char++; - $char = $this->character($this->char); - - if(preg_match('/^[\t\n\x0b\x0c ]$/', $char)) { - /* U+0009 CHARACTER TABULATION - U+000A LINE FEED (LF) - U+000B LINE TABULATION - U+000C FORM FEED (FF) - U+0020 SPACE - Stay in the before attribute name state. */ - $this->state = 'beforeAttributeName'; - - } elseif($char === '>') { - /* U+003E GREATER-THAN SIGN (>) - Emit the current tag token. Switch to the data state. */ - $this->emitToken($this->token); - $this->state = 'data'; - - } elseif($char === '/') { - /* U+002F SOLIDUS (/) - Parse error unless this is a permitted slash. Stay in the before - attribute name state. */ - $this->state = 'beforeAttributeName'; - - } elseif($this->char === $this->EOF) { - /* EOF - Parse error. Emit the current tag token. Reconsume the EOF - character in the data state. */ - $this->emitToken($this->token); - - $this->char--; - $this->state = 'data'; - - } else { - /* Anything else - Start a new attribute in the current tag token. Set that attribute's - name to the current input character, and its value to the empty string. - Switch to the attribute name state. */ - $this->token['attr'][] = array( - 'name' => strtolower($char), - 'value' => null - ); - - $this->state = 'attributeName'; - } - } - - private function attributeNameState() { - // Consume the next input character: - $this->char++; - $char = $this->character($this->char); - - if(preg_match('/^[\t\n\x0b\x0c ]$/', $char)) { - /* U+0009 CHARACTER TABULATION - U+000A LINE FEED (LF) - U+000B LINE TABULATION - U+000C FORM FEED (FF) - U+0020 SPACE - Stay in the before attribute name state. */ - $this->state = 'afterAttributeName'; - - } elseif($char === '=') { - /* U+003D EQUALS SIGN (=) - Switch to the before attribute value state. */ - $this->state = 'beforeAttributeValue'; - - } elseif($char === '>') { - /* U+003E GREATER-THAN SIGN (>) - Emit the current tag token. Switch to the data state. */ - $this->emitToken($this->token); - $this->state = 'data'; - - } elseif($char === '/' && $this->character($this->char + 1) !== '>') { - /* U+002F SOLIDUS (/) - Parse error unless this is a permitted slash. Switch to the before - attribute name state. */ - $this->state = 'beforeAttributeName'; - - } elseif($this->char === $this->EOF) { - /* EOF - Parse error. Emit the current tag token. Reconsume the EOF - character in the data state. */ - $this->emitToken($this->token); - - $this->char--; - $this->state = 'data'; - - } else { - /* Anything else - Append the current input character to the current attribute's name. - Stay in the attribute name state. */ - $last = count($this->token['attr']) - 1; - $this->token['attr'][$last]['name'] .= strtolower($char); - - $this->state = 'attributeName'; - } - } - - private function afterAttributeNameState() { - // Consume the next input character: - $this->char++; - $char = $this->character($this->char); - - if(preg_match('/^[\t\n\x0b\x0c ]$/', $char)) { - /* U+0009 CHARACTER TABULATION - U+000A LINE FEED (LF) - U+000B LINE TABULATION - U+000C FORM FEED (FF) - U+0020 SPACE - Stay in the after attribute name state. */ - $this->state = 'afterAttributeName'; - - } elseif($char === '=') { - /* U+003D EQUALS SIGN (=) - Switch to the before attribute value state. */ - $this->state = 'beforeAttributeValue'; - - } elseif($char === '>') { - /* U+003E GREATER-THAN SIGN (>) - Emit the current tag token. Switch to the data state. */ - $this->emitToken($this->token); - $this->state = 'data'; - - } elseif($char === '/' && $this->character($this->char + 1) !== '>') { - /* U+002F SOLIDUS (/) - Parse error unless this is a permitted slash. Switch to the - before attribute name state. */ - $this->state = 'beforeAttributeName'; - - } elseif($this->char === $this->EOF) { - /* EOF - Parse error. Emit the current tag token. Reconsume the EOF - character in the data state. */ - $this->emitToken($this->token); - - $this->char--; - $this->state = 'data'; - - } else { - /* Anything else - Start a new attribute in the current tag token. Set that attribute's - name to the current input character, and its value to the empty string. - Switch to the attribute name state. */ - $this->token['attr'][] = array( - 'name' => strtolower($char), - 'value' => null - ); - - $this->state = 'attributeName'; - } - } - - private function beforeAttributeValueState() { - // Consume the next input character: - $this->char++; - $char = $this->character($this->char); - - if(preg_match('/^[\t\n\x0b\x0c ]$/', $char)) { - /* U+0009 CHARACTER TABULATION - U+000A LINE FEED (LF) - U+000B LINE TABULATION - U+000C FORM FEED (FF) - U+0020 SPACE - Stay in the before attribute value state. */ - $this->state = 'beforeAttributeValue'; - - } elseif($char === '"') { - /* U+0022 QUOTATION MARK (") - Switch to the attribute value (double-quoted) state. */ - $this->state = 'attributeValueDoubleQuoted'; - - } elseif($char === '&') { - /* U+0026 AMPERSAND (&) - Switch to the attribute value (unquoted) state and reconsume - this input character. */ - $this->char--; - $this->state = 'attributeValueUnquoted'; - - } elseif($char === '\'') { - /* U+0027 APOSTROPHE (') - Switch to the attribute value (single-quoted) state. */ - $this->state = 'attributeValueSingleQuoted'; - - } elseif($char === '>') { - /* U+003E GREATER-THAN SIGN (>) - Emit the current tag token. Switch to the data state. */ - $this->emitToken($this->token); - $this->state = 'data'; - - } else { - /* Anything else - Append the current input character to the current attribute's value. - Switch to the attribute value (unquoted) state. */ - $last = count($this->token['attr']) - 1; - $this->token['attr'][$last]['value'] .= $char; - - $this->state = 'attributeValueUnquoted'; - } - } - - private function attributeValueDoubleQuotedState() { - // Consume the next input character: - $this->char++; - $char = $this->character($this->char); - - if($char === '"') { - /* U+0022 QUOTATION MARK (") - Switch to the before attribute name state. */ - $this->state = 'beforeAttributeName'; - - } elseif($char === '&') { - /* U+0026 AMPERSAND (&) - Switch to the entity in attribute value state. */ - $this->entityInAttributeValueState('double'); - - } elseif($this->char === $this->EOF) { - /* EOF - Parse error. Emit the current tag token. Reconsume the character - in the data state. */ - $this->emitToken($this->token); - - $this->char--; - $this->state = 'data'; - - } else { - /* Anything else - Append the current input character to the current attribute's value. - Stay in the attribute value (double-quoted) state. */ - $last = count($this->token['attr']) - 1; - $this->token['attr'][$last]['value'] .= $char; - - $this->state = 'attributeValueDoubleQuoted'; - } - } - - private function attributeValueSingleQuotedState() { - // Consume the next input character: - $this->char++; - $char = $this->character($this->char); - - if($char === '\'') { - /* U+0022 QUOTATION MARK (') - Switch to the before attribute name state. */ - $this->state = 'beforeAttributeName'; - - } elseif($char === '&') { - /* U+0026 AMPERSAND (&) - Switch to the entity in attribute value state. */ - $this->entityInAttributeValueState('single'); - - } elseif($this->char === $this->EOF) { - /* EOF - Parse error. Emit the current tag token. Reconsume the character - in the data state. */ - $this->emitToken($this->token); - - $this->char--; - $this->state = 'data'; - - } else { - /* Anything else - Append the current input character to the current attribute's value. - Stay in the attribute value (single-quoted) state. */ - $last = count($this->token['attr']) - 1; - $this->token['attr'][$last]['value'] .= $char; - - $this->state = 'attributeValueSingleQuoted'; - } - } - - private function attributeValueUnquotedState() { - // Consume the next input character: - $this->char++; - $char = $this->character($this->char); - - if(preg_match('/^[\t\n\x0b\x0c ]$/', $char)) { - /* U+0009 CHARACTER TABULATION - U+000A LINE FEED (LF) - U+000B LINE TABULATION - U+000C FORM FEED (FF) - U+0020 SPACE - Switch to the before attribute name state. */ - $this->state = 'beforeAttributeName'; - - } elseif($char === '&') { - /* U+0026 AMPERSAND (&) - Switch to the entity in attribute value state. */ - $this->entityInAttributeValueState(); - - } elseif($char === '>') { - /* U+003E GREATER-THAN SIGN (>) - Emit the current tag token. Switch to the data state. */ - $this->emitToken($this->token); - $this->state = 'data'; - - } else { - /* Anything else - Append the current input character to the current attribute's value. - Stay in the attribute value (unquoted) state. */ - $last = count($this->token['attr']) - 1; - $this->token['attr'][$last]['value'] .= $char; - - $this->state = 'attributeValueUnquoted'; - } - } - - private function entityInAttributeValueState() { - // Attempt to consume an entity. - $entity = $this->entity(); - - // If nothing is returned, append a U+0026 AMPERSAND character to the - // current attribute's value. Otherwise, emit the character token that - // was returned. - $char = (!$entity) - ? '&' - : $entity; - - $last = count($this->token['attr']) - 1; - $this->token['attr'][$last]['value'] .= $char; - } - - private function bogusCommentState() { - /* Consume every character up to the first U+003E GREATER-THAN SIGN - character (>) or the end of the file (EOF), whichever comes first. Emit - a comment token whose data is the concatenation of all the characters - starting from and including the character that caused the state machine - to switch into the bogus comment state, up to and including the last - consumed character before the U+003E character, if any, or up to the - end of the file otherwise. (If the comment was started by the end of - the file (EOF), the token is empty.) */ - $data = $this->characters('^>', $this->char); - $this->emitToken(array( - 'data' => $data, - 'type' => self::COMMENT - )); - - $this->char += strlen($data); - - /* Switch to the data state. */ - $this->state = 'data'; - - /* If the end of the file was reached, reconsume the EOF character. */ - if($this->char === $this->EOF) { - $this->char = $this->EOF - 1; - } - } - - private function markupDeclarationOpenState() { - /* If the next two characters are both U+002D HYPHEN-MINUS (-) - characters, consume those two characters, create a comment token whose - data is the empty string, and switch to the comment state. */ - if($this->character($this->char + 1, 2) === '--') { - $this->char += 2; - $this->state = 'comment'; - $this->token = array( - 'data' => null, - 'type' => self::COMMENT - ); - - /* Otherwise if the next seven chacacters are a case-insensitive match - for the word "DOCTYPE", then consume those characters and switch to the - DOCTYPE state. */ - } elseif(strtolower($this->character($this->char + 1, 7)) === 'doctype') { - $this->char += 7; - $this->state = 'doctype'; - - /* Otherwise, is is a parse error. Switch to the bogus comment state. - The next character that is consumed, if any, is the first character - that will be in the comment. */ - } else { - $this->char++; - $this->state = 'bogusComment'; - } - } - - private function commentState() { - /* Consume the next input character: */ - $this->char++; - $char = $this->char(); - - /* U+002D HYPHEN-MINUS (-) */ - if($char === '-') { - /* Switch to the comment dash state */ - $this->state = 'commentDash'; - - /* EOF */ - } elseif($this->char === $this->EOF) { - /* Parse error. Emit the comment token. Reconsume the EOF character - in the data state. */ - $this->emitToken($this->token); - $this->char--; - $this->state = 'data'; - - /* Anything else */ - } else { - /* Append the input character to the comment token's data. Stay in - the comment state. */ - $this->token['data'] .= $char; - } - } - - private function commentDashState() { - /* Consume the next input character: */ - $this->char++; - $char = $this->char(); - - /* U+002D HYPHEN-MINUS (-) */ - if($char === '-') { - /* Switch to the comment end state */ - $this->state = 'commentEnd'; - - /* EOF */ - } elseif($this->char === $this->EOF) { - /* Parse error. Emit the comment token. Reconsume the EOF character - in the data state. */ - $this->emitToken($this->token); - $this->char--; - $this->state = 'data'; - - /* Anything else */ - } else { - /* Append a U+002D HYPHEN-MINUS (-) character and the input - character to the comment token's data. Switch to the comment state. */ - $this->token['data'] .= '-'.$char; - $this->state = 'comment'; - } - } - - private function commentEndState() { - /* Consume the next input character: */ - $this->char++; - $char = $this->char(); - - if($char === '>') { - $this->emitToken($this->token); - $this->state = 'data'; - - } elseif($char === '-') { - $this->token['data'] .= '-'; - - } elseif($this->char === $this->EOF) { - $this->emitToken($this->token); - $this->char--; - $this->state = 'data'; - - } else { - $this->token['data'] .= '--'.$char; - $this->state = 'comment'; - } - } - - private function doctypeState() { - /* Consume the next input character: */ - $this->char++; - $char = $this->char(); - - if(preg_match('/^[\t\n\x0b\x0c ]$/', $char)) { - $this->state = 'beforeDoctypeName'; - - } else { - $this->char--; - $this->state = 'beforeDoctypeName'; - } - } - - private function beforeDoctypeNameState() { - /* Consume the next input character: */ - $this->char++; - $char = $this->char(); - - if(preg_match('/^[\t\n\x0b\x0c ]$/', $char)) { - // Stay in the before DOCTYPE name state. - - } elseif(preg_match('/^[a-z]$/', $char)) { - $this->token = array( - 'name' => strtoupper($char), - 'type' => self::DOCTYPE, - 'error' => true - ); - - $this->state = 'doctypeName'; - - } elseif($char === '>') { - $this->emitToken(array( - 'name' => null, - 'type' => self::DOCTYPE, - 'error' => true - )); - - $this->state = 'data'; - - } elseif($this->char === $this->EOF) { - $this->emitToken(array( - 'name' => null, - 'type' => self::DOCTYPE, - 'error' => true - )); - - $this->char--; - $this->state = 'data'; - - } else { - $this->token = array( - 'name' => $char, - 'type' => self::DOCTYPE, - 'error' => true - ); - - $this->state = 'doctypeName'; - } - } - - private function doctypeNameState() { - /* Consume the next input character: */ - $this->char++; - $char = $this->char(); - - if(preg_match('/^[\t\n\x0b\x0c ]$/', $char)) { - $this->state = 'AfterDoctypeName'; - - } elseif($char === '>') { - $this->emitToken($this->token); - $this->state = 'data'; - - } elseif(preg_match('/^[a-z]$/', $char)) { - $this->token['name'] .= strtoupper($char); - - } elseif($this->char === $this->EOF) { - $this->emitToken($this->token); - $this->char--; - $this->state = 'data'; - - } else { - $this->token['name'] .= $char; - } - - $this->token['error'] = ($this->token['name'] === 'HTML') - ? false - : true; - } - - private function afterDoctypeNameState() { - /* Consume the next input character: */ - $this->char++; - $char = $this->char(); - - if(preg_match('/^[\t\n\x0b\x0c ]$/', $char)) { - // Stay in the DOCTYPE name state. - - } elseif($char === '>') { - $this->emitToken($this->token); - $this->state = 'data'; - - } elseif($this->char === $this->EOF) { - $this->emitToken($this->token); - $this->char--; - $this->state = 'data'; - - } else { - $this->token['error'] = true; - $this->state = 'bogusDoctype'; - } - } - - private function bogusDoctypeState() { - /* Consume the next input character: */ - $this->char++; - $char = $this->char(); - - if($char === '>') { - $this->emitToken($this->token); - $this->state = 'data'; - - } elseif($this->char === $this->EOF) { - $this->emitToken($this->token); - $this->char--; - $this->state = 'data'; - - } else { - // Stay in the bogus DOCTYPE state. - } - } - - private function entity() { - $start = $this->char; - - // This section defines how to consume an entity. This definition is - // used when parsing entities in text and in attributes. - - // The behaviour depends on the identity of the next character (the - // one immediately after the U+0026 AMPERSAND character): - - switch($this->character($this->char + 1)) { - // U+0023 NUMBER SIGN (#) - case '#': - - // The behaviour further depends on the character after the - // U+0023 NUMBER SIGN: - switch($this->character($this->char + 1)) { - // U+0078 LATIN SMALL LETTER X - // U+0058 LATIN CAPITAL LETTER X - case 'x': - case 'X': - // Follow the steps below, but using the range of - // characters U+0030 DIGIT ZERO through to U+0039 DIGIT - // NINE, U+0061 LATIN SMALL LETTER A through to U+0066 - // LATIN SMALL LETTER F, and U+0041 LATIN CAPITAL LETTER - // A, through to U+0046 LATIN CAPITAL LETTER F (in other - // words, 0-9, A-F, a-f). - $char = 1; - $char_class = '0-9A-Fa-f'; - break; - - // Anything else - default: - // Follow the steps below, but using the range of - // characters U+0030 DIGIT ZERO through to U+0039 DIGIT - // NINE (i.e. just 0-9). - $char = 0; - $char_class = '0-9'; - break; - } - - // Consume as many characters as match the range of characters - // given above. - $this->char++; - $e_name = $this->characters($char_class, $this->char + $char + 1); - $entity = $this->character($start, $this->char); - $cond = strlen($e_name) > 0; - - // The rest of the parsing happens bellow. - break; - - // Anything else - default: - // Consume the maximum number of characters possible, with the - // consumed characters case-sensitively matching one of the - // identifiers in the first column of the entities table. - $e_name = $this->characters('0-9A-Za-z;', $this->char + 1); - $len = strlen($e_name); - - for($c = 1; $c <= $len; $c++) { - $id = substr($e_name, 0, $c); - $this->char++; - - if(in_array($id, $this->entities)) { - if ($e_name[$c-1] !== ';') { - if ($c < $len && $e_name[$c] == ';') { - $this->char++; // consume extra semicolon - } - } - $entity = $id; - break; - } - } - - $cond = isset($entity); - // The rest of the parsing happens bellow. - break; - } - - if(!$cond) { - // If no match can be made, then this is a parse error. No - // characters are consumed, and nothing is returned. - $this->char = $start; - return false; - } - - // Return a character token for the character corresponding to the - // entity name (as given by the second column of the entities table). - return html_entity_decode('&'.$entity.';', ENT_QUOTES, 'UTF-8'); - } - - private function emitToken($token) { - $emit = $this->tree->emitToken($token); - - if(is_int($emit)) { - $this->content_model = $emit; - - } elseif($token['type'] === self::ENDTAG) { - $this->content_model = self::PCDATA; - } - } - - private function EOF() { - $this->state = null; - $this->tree->emitToken(array( - 'type' => self::EOF - )); - } -} - -class HTML5TreeConstructer { - public $stack = array(); - - private $phase; - private $mode; - private $dom; - private $foster_parent = null; - private $a_formatting = array(); - - private $head_pointer = null; - private $form_pointer = null; - - private $scoping = array('button','caption','html','marquee','object','table','td','th'); - private $formatting = array('a','b','big','em','font','i','nobr','s','small','strike','strong','tt','u'); - private $special = array('address','area','base','basefont','bgsound', - 'blockquote','body','br','center','col','colgroup','dd','dir','div','dl', - 'dt','embed','fieldset','form','frame','frameset','h1','h2','h3','h4','h5', - 'h6','head','hr','iframe','image','img','input','isindex','li','link', - 'listing','menu','meta','noembed','noframes','noscript','ol','optgroup', - 'option','p','param','plaintext','pre','script','select','spacer','style', - 'tbody','textarea','tfoot','thead','title','tr','ul','wbr'); - - // The different phases. - const INIT_PHASE = 0; - const ROOT_PHASE = 1; - const MAIN_PHASE = 2; - const END_PHASE = 3; - - // The different insertion modes for the main phase. - const BEFOR_HEAD = 0; - const IN_HEAD = 1; - const AFTER_HEAD = 2; - const IN_BODY = 3; - const IN_TABLE = 4; - const IN_CAPTION = 5; - const IN_CGROUP = 6; - const IN_TBODY = 7; - const IN_ROW = 8; - const IN_CELL = 9; - const IN_SELECT = 10; - const AFTER_BODY = 11; - const IN_FRAME = 12; - const AFTR_FRAME = 13; - - // The different types of elements. - const SPECIAL = 0; - const SCOPING = 1; - const FORMATTING = 2; - const PHRASING = 3; - - const MARKER = 0; - - public function __construct() { - $this->phase = self::INIT_PHASE; - $this->mode = self::BEFOR_HEAD; - $this->dom = new DOMDocument; - - $this->dom->encoding = 'UTF-8'; - $this->dom->preserveWhiteSpace = true; - $this->dom->substituteEntities = true; - $this->dom->strictErrorChecking = false; - } - - // Process tag tokens - public function emitToken($token) { - switch($this->phase) { - case self::INIT_PHASE: return $this->initPhase($token); break; - case self::ROOT_PHASE: return $this->rootElementPhase($token); break; - case self::MAIN_PHASE: return $this->mainPhase($token); break; - case self::END_PHASE : return $this->trailingEndPhase($token); break; - } - } - - private function initPhase($token) { - /* Initially, the tree construction stage must handle each token - emitted from the tokenisation stage as follows: */ - - /* A DOCTYPE token that is marked as being in error - A comment token - A start tag token - An end tag token - A character token that is not one of one of U+0009 CHARACTER TABULATION, - U+000A LINE FEED (LF), U+000B LINE TABULATION, U+000C FORM FEED (FF), - or U+0020 SPACE - An end-of-file token */ - if((isset($token['error']) && $token['error']) || - $token['type'] === HTML5::COMMENT || - $token['type'] === HTML5::STARTTAG || - $token['type'] === HTML5::ENDTAG || - $token['type'] === HTML5::EOF || - ($token['type'] === HTML5::CHARACTR && isset($token['data']) && - !preg_match('/^[\t\n\x0b\x0c ]+$/', $token['data']))) { - /* This specification does not define how to handle this case. In - particular, user agents may ignore the entirety of this specification - altogether for such documents, and instead invoke special parse modes - with a greater emphasis on backwards compatibility. */ - - $this->phase = self::ROOT_PHASE; - return $this->rootElementPhase($token); - - /* A DOCTYPE token marked as being correct */ - } elseif(isset($token['error']) && !$token['error']) { - /* Append a DocumentType node to the Document node, with the name - attribute set to the name given in the DOCTYPE token (which will be - "HTML"), and the other attributes specific to DocumentType objects - set to null, empty lists, or the empty string as appropriate. */ - $doctype = new DOMDocumentType(null, null, 'HTML'); - - /* Then, switch to the root element phase of the tree construction - stage. */ - $this->phase = self::ROOT_PHASE; - - /* A character token that is one of one of U+0009 CHARACTER TABULATION, - U+000A LINE FEED (LF), U+000B LINE TABULATION, U+000C FORM FEED (FF), - or U+0020 SPACE */ - } elseif(isset($token['data']) && preg_match('/^[\t\n\x0b\x0c ]+$/', - $token['data'])) { - /* Append that character to the Document node. */ - $text = $this->dom->createTextNode($token['data']); - $this->dom->appendChild($text); - } - } - - private function rootElementPhase($token) { - /* After the initial phase, as each token is emitted from the tokenisation - stage, it must be processed as described in this section. */ - - /* A DOCTYPE token */ - if($token['type'] === HTML5::DOCTYPE) { - // Parse error. Ignore the token. - - /* A comment token */ - } elseif($token['type'] === HTML5::COMMENT) { - /* Append a Comment node to the Document object with the data - attribute set to the data given in the comment token. */ - $comment = $this->dom->createComment($token['data']); - $this->dom->appendChild($comment); - - /* A character token that is one of one of U+0009 CHARACTER TABULATION, - U+000A LINE FEED (LF), U+000B LINE TABULATION, U+000C FORM FEED (FF), - or U+0020 SPACE */ - } elseif($token['type'] === HTML5::CHARACTR && - preg_match('/^[\t\n\x0b\x0c ]+$/', $token['data'])) { - /* Append that character to the Document node. */ - $text = $this->dom->createTextNode($token['data']); - $this->dom->appendChild($text); - - /* A character token that is not one of U+0009 CHARACTER TABULATION, - U+000A LINE FEED (LF), U+000B LINE TABULATION, U+000C FORM FEED - (FF), or U+0020 SPACE - A start tag token - An end tag token - An end-of-file token */ - } elseif(($token['type'] === HTML5::CHARACTR && - !preg_match('/^[\t\n\x0b\x0c ]+$/', $token['data'])) || - $token['type'] === HTML5::STARTTAG || - $token['type'] === HTML5::ENDTAG || - $token['type'] === HTML5::EOF) { - /* Create an HTMLElement node with the tag name html, in the HTML - namespace. Append it to the Document object. Switch to the main - phase and reprocess the current token. */ - $html = $this->dom->createElement('html'); - $this->dom->appendChild($html); - $this->stack[] = $html; - - $this->phase = self::MAIN_PHASE; - return $this->mainPhase($token); - } - } - - private function mainPhase($token) { - /* Tokens in the main phase must be handled as follows: */ - - /* A DOCTYPE token */ - if($token['type'] === HTML5::DOCTYPE) { - // Parse error. Ignore the token. - - /* A start tag token with the tag name "html" */ - } elseif($token['type'] === HTML5::STARTTAG && $token['name'] === 'html') { - /* If this start tag token was not the first start tag token, then - it is a parse error. */ - - /* For each attribute on the token, check to see if the attribute - is already present on the top element of the stack of open elements. - If it is not, add the attribute and its corresponding value to that - element. */ - foreach($token['attr'] as $attr) { - if(!$this->stack[0]->hasAttribute($attr['name'])) { - $this->stack[0]->setAttribute($attr['name'], $attr['value']); - } - } - - /* An end-of-file token */ - } elseif($token['type'] === HTML5::EOF) { - /* Generate implied end tags. */ - $this->generateImpliedEndTags(); - - /* Anything else. */ - } else { - /* Depends on the insertion mode: */ - switch($this->mode) { - case self::BEFOR_HEAD: return $this->beforeHead($token); break; - case self::IN_HEAD: return $this->inHead($token); break; - case self::AFTER_HEAD: return $this->afterHead($token); break; - case self::IN_BODY: return $this->inBody($token); break; - case self::IN_TABLE: return $this->inTable($token); break; - case self::IN_CAPTION: return $this->inCaption($token); break; - case self::IN_CGROUP: return $this->inColumnGroup($token); break; - case self::IN_TBODY: return $this->inTableBody($token); break; - case self::IN_ROW: return $this->inRow($token); break; - case self::IN_CELL: return $this->inCell($token); break; - case self::IN_SELECT: return $this->inSelect($token); break; - case self::AFTER_BODY: return $this->afterBody($token); break; - case self::IN_FRAME: return $this->inFrameset($token); break; - case self::AFTR_FRAME: return $this->afterFrameset($token); break; - case self::END_PHASE: return $this->trailingEndPhase($token); break; - } - } - } - - private function beforeHead($token) { - /* Handle the token as follows: */ - - /* A character token that is one of one of U+0009 CHARACTER TABULATION, - U+000A LINE FEED (LF), U+000B LINE TABULATION, U+000C FORM FEED (FF), - or U+0020 SPACE */ - if($token['type'] === HTML5::CHARACTR && - preg_match('/^[\t\n\x0b\x0c ]+$/', $token['data'])) { - /* Append the character to the current node. */ - $this->insertText($token['data']); - - /* A comment token */ - } elseif($token['type'] === HTML5::COMMENT) { - /* Append a Comment node to the current node with the data attribute - set to the data given in the comment token. */ - $this->insertComment($token['data']); - - /* A start tag token with the tag name "head" */ - } elseif($token['type'] === HTML5::STARTTAG && $token['name'] === 'head') { - /* Create an element for the token, append the new element to the - current node and push it onto the stack of open elements. */ - $element = $this->insertElement($token); - - /* Set the head element pointer to this new element node. */ - $this->head_pointer = $element; - - /* Change the insertion mode to "in head". */ - $this->mode = self::IN_HEAD; - - /* A start tag token whose tag name is one of: "base", "link", "meta", - "script", "style", "title". Or an end tag with the tag name "html". - Or a character token that is not one of U+0009 CHARACTER TABULATION, - U+000A LINE FEED (LF), U+000B LINE TABULATION, U+000C FORM FEED (FF), - or U+0020 SPACE. Or any other start tag token */ - } elseif($token['type'] === HTML5::STARTTAG || - ($token['type'] === HTML5::ENDTAG && $token['name'] === 'html') || - ($token['type'] === HTML5::CHARACTR && !preg_match('/^[\t\n\x0b\x0c ]$/', - $token['data']))) { - /* Act as if a start tag token with the tag name "head" and no - attributes had been seen, then reprocess the current token. */ - $this->beforeHead(array( - 'name' => 'head', - 'type' => HTML5::STARTTAG, - 'attr' => array() - )); - - return $this->inHead($token); - - /* Any other end tag */ - } elseif($token['type'] === HTML5::ENDTAG) { - /* Parse error. Ignore the token. */ - } - } - - private function inHead($token) { - /* Handle the token as follows: */ - - /* A character token that is one of one of U+0009 CHARACTER TABULATION, - U+000A LINE FEED (LF), U+000B LINE TABULATION, U+000C FORM FEED (FF), - or U+0020 SPACE. - - THIS DIFFERS FROM THE SPEC: If the current node is either a title, style - or script element, append the character to the current node regardless - of its content. */ - if(($token['type'] === HTML5::CHARACTR && - preg_match('/^[\t\n\x0b\x0c ]+$/', $token['data'])) || ( - $token['type'] === HTML5::CHARACTR && in_array(end($this->stack)->nodeName, - array('title', 'style', 'script')))) { - /* Append the character to the current node. */ - $this->insertText($token['data']); - - /* A comment token */ - } elseif($token['type'] === HTML5::COMMENT) { - /* Append a Comment node to the current node with the data attribute - set to the data given in the comment token. */ - $this->insertComment($token['data']); - - } elseif($token['type'] === HTML5::ENDTAG && - in_array($token['name'], array('title', 'style', 'script'))) { - array_pop($this->stack); - return HTML5::PCDATA; - - /* A start tag with the tag name "title" */ - } elseif($token['type'] === HTML5::STARTTAG && $token['name'] === 'title') { - /* Create an element for the token and append the new element to the - node pointed to by the head element pointer, or, if that is null - (innerHTML case), to the current node. */ - if($this->head_pointer !== null) { - $element = $this->insertElement($token, false); - $this->head_pointer->appendChild($element); - - } else { - $element = $this->insertElement($token); - } - - /* Switch the tokeniser's content model flag to the RCDATA state. */ - return HTML5::RCDATA; - - /* A start tag with the tag name "style" */ - } elseif($token['type'] === HTML5::STARTTAG && $token['name'] === 'style') { - /* Create an element for the token and append the new element to the - node pointed to by the head element pointer, or, if that is null - (innerHTML case), to the current node. */ - if($this->head_pointer !== null) { - $element = $this->insertElement($token, false); - $this->head_pointer->appendChild($element); - - } else { - $this->insertElement($token); - } - - /* Switch the tokeniser's content model flag to the CDATA state. */ - return HTML5::CDATA; - - /* A start tag with the tag name "script" */ - } elseif($token['type'] === HTML5::STARTTAG && $token['name'] === 'script') { - /* Create an element for the token. */ - $element = $this->insertElement($token, false); - $this->head_pointer->appendChild($element); - - /* Switch the tokeniser's content model flag to the CDATA state. */ - return HTML5::CDATA; - - /* A start tag with the tag name "base", "link", or "meta" */ - } elseif($token['type'] === HTML5::STARTTAG && in_array($token['name'], - array('base', 'link', 'meta'))) { - /* Create an element for the token and append the new element to the - node pointed to by the head element pointer, or, if that is null - (innerHTML case), to the current node. */ - if($this->head_pointer !== null) { - $element = $this->insertElement($token, false); - $this->head_pointer->appendChild($element); - array_pop($this->stack); - - } else { - $this->insertElement($token); - } - - /* An end tag with the tag name "head" */ - } elseif($token['type'] === HTML5::ENDTAG && $token['name'] === 'head') { - /* If the current node is a head element, pop the current node off - the stack of open elements. */ - if($this->head_pointer->isSameNode(end($this->stack))) { - array_pop($this->stack); - - /* Otherwise, this is a parse error. */ - } else { - // k - } - - /* Change the insertion mode to "after head". */ - $this->mode = self::AFTER_HEAD; - - /* A start tag with the tag name "head" or an end tag except "html". */ - } elseif(($token['type'] === HTML5::STARTTAG && $token['name'] === 'head') || - ($token['type'] === HTML5::ENDTAG && $token['name'] !== 'html')) { - // Parse error. Ignore the token. - - /* Anything else */ - } else { - /* If the current node is a head element, act as if an end tag - token with the tag name "head" had been seen. */ - if($this->head_pointer->isSameNode(end($this->stack))) { - $this->inHead(array( - 'name' => 'head', - 'type' => HTML5::ENDTAG - )); - - /* Otherwise, change the insertion mode to "after head". */ - } else { - $this->mode = self::AFTER_HEAD; - } - - /* Then, reprocess the current token. */ - return $this->afterHead($token); - } - } - - private function afterHead($token) { - /* Handle the token as follows: */ - - /* A character token that is one of one of U+0009 CHARACTER TABULATION, - U+000A LINE FEED (LF), U+000B LINE TABULATION, U+000C FORM FEED (FF), - or U+0020 SPACE */ - if($token['type'] === HTML5::CHARACTR && - preg_match('/^[\t\n\x0b\x0c ]+$/', $token['data'])) { - /* Append the character to the current node. */ - $this->insertText($token['data']); - - /* A comment token */ - } elseif($token['type'] === HTML5::COMMENT) { - /* Append a Comment node to the current node with the data attribute - set to the data given in the comment token. */ - $this->insertComment($token['data']); - - /* A start tag token with the tag name "body" */ - } elseif($token['type'] === HTML5::STARTTAG && $token['name'] === 'body') { - /* Insert a body element for the token. */ - $this->insertElement($token); - - /* Change the insertion mode to "in body". */ - $this->mode = self::IN_BODY; - - /* A start tag token with the tag name "frameset" */ - } elseif($token['type'] === HTML5::STARTTAG && $token['name'] === 'frameset') { - /* Insert a frameset element for the token. */ - $this->insertElement($token); - - /* Change the insertion mode to "in frameset". */ - $this->mode = self::IN_FRAME; - - /* A start tag token whose tag name is one of: "base", "link", "meta", - "script", "style", "title" */ - } elseif($token['type'] === HTML5::STARTTAG && in_array($token['name'], - array('base', 'link', 'meta', 'script', 'style', 'title'))) { - /* Parse error. Switch the insertion mode back to "in head" and - reprocess the token. */ - $this->mode = self::IN_HEAD; - return $this->inHead($token); - - /* Anything else */ - } else { - /* Act as if a start tag token with the tag name "body" and no - attributes had been seen, and then reprocess the current token. */ - $this->afterHead(array( - 'name' => 'body', - 'type' => HTML5::STARTTAG, - 'attr' => array() - )); - - return $this->inBody($token); - } - } - - private function inBody($token) { - /* Handle the token as follows: */ - - switch($token['type']) { - /* A character token */ - case HTML5::CHARACTR: - /* Reconstruct the active formatting elements, if any. */ - $this->reconstructActiveFormattingElements(); - - /* Append the token's character to the current node. */ - $this->insertText($token['data']); - break; - - /* A comment token */ - case HTML5::COMMENT: - /* Append a Comment node to the current node with the data - attribute set to the data given in the comment token. */ - $this->insertComment($token['data']); - break; - - case HTML5::STARTTAG: - switch($token['name']) { - /* A start tag token whose tag name is one of: "script", - "style" */ - case 'script': case 'style': - /* Process the token as if the insertion mode had been "in - head". */ - return $this->inHead($token); - break; - - /* A start tag token whose tag name is one of: "base", "link", - "meta", "title" */ - case 'base': case 'link': case 'meta': case 'title': - /* Parse error. Process the token as if the insertion mode - had been "in head". */ - return $this->inHead($token); - break; - - /* A start tag token with the tag name "body" */ - case 'body': - /* Parse error. If the second element on the stack of open - elements is not a body element, or, if the stack of open - elements has only one node on it, then ignore the token. - (innerHTML case) */ - if(count($this->stack) === 1 || $this->stack[1]->nodeName !== 'body') { - // Ignore - - /* Otherwise, for each attribute on the token, check to see - if the attribute is already present on the body element (the - second element) on the stack of open elements. If it is not, - add the attribute and its corresponding value to that - element. */ - } else { - foreach($token['attr'] as $attr) { - if(!$this->stack[1]->hasAttribute($attr['name'])) { - $this->stack[1]->setAttribute($attr['name'], $attr['value']); - } - } - } - break; - - /* A start tag whose tag name is one of: "address", - "blockquote", "center", "dir", "div", "dl", "fieldset", - "listing", "menu", "ol", "p", "ul" */ - case 'address': case 'blockquote': case 'center': case 'dir': - case 'div': case 'dl': case 'fieldset': case 'listing': - case 'menu': case 'ol': case 'p': case 'ul': - /* If the stack of open elements has a p element in scope, - then act as if an end tag with the tag name p had been - seen. */ - if($this->elementInScope('p')) { - $this->emitToken(array( - 'name' => 'p', - 'type' => HTML5::ENDTAG - )); - } - - /* Insert an HTML element for the token. */ - $this->insertElement($token); - break; - - /* A start tag whose tag name is "form" */ - case 'form': - /* If the form element pointer is not null, ignore the - token with a parse error. */ - if($this->form_pointer !== null) { - // Ignore. - - /* Otherwise: */ - } else { - /* If the stack of open elements has a p element in - scope, then act as if an end tag with the tag name p - had been seen. */ - if($this->elementInScope('p')) { - $this->emitToken(array( - 'name' => 'p', - 'type' => HTML5::ENDTAG - )); - } - - /* Insert an HTML element for the token, and set the - form element pointer to point to the element created. */ - $element = $this->insertElement($token); - $this->form_pointer = $element; - } - break; - - /* A start tag whose tag name is "li", "dd" or "dt" */ - case 'li': case 'dd': case 'dt': - /* If the stack of open elements has a p element in scope, - then act as if an end tag with the tag name p had been - seen. */ - if($this->elementInScope('p')) { - $this->emitToken(array( - 'name' => 'p', - 'type' => HTML5::ENDTAG - )); - } - - $stack_length = count($this->stack) - 1; - - for($n = $stack_length; 0 <= $n; $n--) { - /* 1. Initialise node to be the current node (the - bottommost node of the stack). */ - $stop = false; - $node = $this->stack[$n]; - $cat = $this->getElementCategory($node->tagName); - - /* 2. If node is an li, dd or dt element, then pop all - the nodes from the current node up to node, including - node, then stop this algorithm. */ - if($token['name'] === $node->tagName || ($token['name'] !== 'li' - && ($node->tagName === 'dd' || $node->tagName === 'dt'))) { - for($x = $stack_length; $x >= $n ; $x--) { - array_pop($this->stack); - } - - break; - } - - /* 3. If node is not in the formatting category, and is - not in the phrasing category, and is not an address or - div element, then stop this algorithm. */ - if($cat !== self::FORMATTING && $cat !== self::PHRASING && - $node->tagName !== 'address' && $node->tagName !== 'div') { - break; - } - } - - /* Finally, insert an HTML element with the same tag - name as the token's. */ - $this->insertElement($token); - break; - - /* A start tag token whose tag name is "plaintext" */ - case 'plaintext': - /* If the stack of open elements has a p element in scope, - then act as if an end tag with the tag name p had been - seen. */ - if($this->elementInScope('p')) { - $this->emitToken(array( - 'name' => 'p', - 'type' => HTML5::ENDTAG - )); - } - - /* Insert an HTML element for the token. */ - $this->insertElement($token); - - return HTML5::PLAINTEXT; - break; - - /* A start tag whose tag name is one of: "h1", "h2", "h3", "h4", - "h5", "h6" */ - case 'h1': case 'h2': case 'h3': case 'h4': case 'h5': case 'h6': - /* If the stack of open elements has a p element in scope, - then act as if an end tag with the tag name p had been seen. */ - if($this->elementInScope('p')) { - $this->emitToken(array( - 'name' => 'p', - 'type' => HTML5::ENDTAG - )); - } - - /* If the stack of open elements has in scope an element whose - tag name is one of "h1", "h2", "h3", "h4", "h5", or "h6", then - this is a parse error; pop elements from the stack until an - element with one of those tag names has been popped from the - stack. */ - while($this->elementInScope(array('h1', 'h2', 'h3', 'h4', 'h5', 'h6'))) { - array_pop($this->stack); - } - - /* Insert an HTML element for the token. */ - $this->insertElement($token); - break; - - /* A start tag whose tag name is "a" */ - case 'a': - /* If the list of active formatting elements contains - an element whose tag name is "a" between the end of the - list and the last marker on the list (or the start of - the list if there is no marker on the list), then this - is a parse error; act as if an end tag with the tag name - "a" had been seen, then remove that element from the list - of active formatting elements and the stack of open - elements if the end tag didn't already remove it (it - might not have if the element is not in table scope). */ - $leng = count($this->a_formatting); - - for($n = $leng - 1; $n >= 0; $n--) { - if($this->a_formatting[$n] === self::MARKER) { - break; - - } elseif($this->a_formatting[$n]->nodeName === 'a') { - $this->emitToken(array( - 'name' => 'a', - 'type' => HTML5::ENDTAG - )); - break; - } - } - - /* Reconstruct the active formatting elements, if any. */ - $this->reconstructActiveFormattingElements(); - - /* Insert an HTML element for the token. */ - $el = $this->insertElement($token); - - /* Add that element to the list of active formatting - elements. */ - $this->a_formatting[] = $el; - break; - - /* A start tag whose tag name is one of: "b", "big", "em", "font", - "i", "nobr", "s", "small", "strike", "strong", "tt", "u" */ - case 'b': case 'big': case 'em': case 'font': case 'i': - case 'nobr': case 's': case 'small': case 'strike': - case 'strong': case 'tt': case 'u': - /* Reconstruct the active formatting elements, if any. */ - $this->reconstructActiveFormattingElements(); - - /* Insert an HTML element for the token. */ - $el = $this->insertElement($token); - - /* Add that element to the list of active formatting - elements. */ - $this->a_formatting[] = $el; - break; - - /* A start tag token whose tag name is "button" */ - case 'button': - /* If the stack of open elements has a button element in scope, - then this is a parse error; act as if an end tag with the tag - name "button" had been seen, then reprocess the token. (We don't - do that. Unnecessary.) */ - if($this->elementInScope('button')) { - $this->inBody(array( - 'name' => 'button', - 'type' => HTML5::ENDTAG - )); - } - - /* Reconstruct the active formatting elements, if any. */ - $this->reconstructActiveFormattingElements(); - - /* Insert an HTML element for the token. */ - $this->insertElement($token); - - /* Insert a marker at the end of the list of active - formatting elements. */ - $this->a_formatting[] = self::MARKER; - break; - - /* A start tag token whose tag name is one of: "marquee", "object" */ - case 'marquee': case 'object': - /* Reconstruct the active formatting elements, if any. */ - $this->reconstructActiveFormattingElements(); - - /* Insert an HTML element for the token. */ - $this->insertElement($token); - - /* Insert a marker at the end of the list of active - formatting elements. */ - $this->a_formatting[] = self::MARKER; - break; - - /* A start tag token whose tag name is "xmp" */ - case 'xmp': - /* Reconstruct the active formatting elements, if any. */ - $this->reconstructActiveFormattingElements(); - - /* Insert an HTML element for the token. */ - $this->insertElement($token); - - /* Switch the content model flag to the CDATA state. */ - return HTML5::CDATA; - break; - - /* A start tag whose tag name is "table" */ - case 'table': - /* If the stack of open elements has a p element in scope, - then act as if an end tag with the tag name p had been seen. */ - if($this->elementInScope('p')) { - $this->emitToken(array( - 'name' => 'p', - 'type' => HTML5::ENDTAG - )); - } - - /* Insert an HTML element for the token. */ - $this->insertElement($token); - - /* Change the insertion mode to "in table". */ - $this->mode = self::IN_TABLE; - break; - - /* A start tag whose tag name is one of: "area", "basefont", - "bgsound", "br", "embed", "img", "param", "spacer", "wbr" */ - case 'area': case 'basefont': case 'bgsound': case 'br': - case 'embed': case 'img': case 'param': case 'spacer': - case 'wbr': - /* Reconstruct the active formatting elements, if any. */ - $this->reconstructActiveFormattingElements(); - - /* Insert an HTML element for the token. */ - $this->insertElement($token); - - /* Immediately pop the current node off the stack of open elements. */ - array_pop($this->stack); - break; - - /* A start tag whose tag name is "hr" */ - case 'hr': - /* If the stack of open elements has a p element in scope, - then act as if an end tag with the tag name p had been seen. */ - if($this->elementInScope('p')) { - $this->emitToken(array( - 'name' => 'p', - 'type' => HTML5::ENDTAG - )); - } - - /* Insert an HTML element for the token. */ - $this->insertElement($token); - - /* Immediately pop the current node off the stack of open elements. */ - array_pop($this->stack); - break; - - /* A start tag whose tag name is "image" */ - case 'image': - /* Parse error. Change the token's tag name to "img" and - reprocess it. (Don't ask.) */ - $token['name'] = 'img'; - return $this->inBody($token); - break; - - /* A start tag whose tag name is "input" */ - case 'input': - /* Reconstruct the active formatting elements, if any. */ - $this->reconstructActiveFormattingElements(); - - /* Insert an input element for the token. */ - $element = $this->insertElement($token, false); - - /* If the form element pointer is not null, then associate the - input element with the form element pointed to by the form - element pointer. */ - $this->form_pointer !== null - ? $this->form_pointer->appendChild($element) - : end($this->stack)->appendChild($element); - - /* Pop that input element off the stack of open elements. */ - array_pop($this->stack); - break; - - /* A start tag whose tag name is "isindex" */ - case 'isindex': - /* Parse error. */ - // w/e - - /* If the form element pointer is not null, - then ignore the token. */ - if($this->form_pointer === null) { - /* Act as if a start tag token with the tag name "form" had - been seen. */ - $this->inBody(array( - 'name' => 'body', - 'type' => HTML5::STARTTAG, - 'attr' => array() - )); - - /* Act as if a start tag token with the tag name "hr" had - been seen. */ - $this->inBody(array( - 'name' => 'hr', - 'type' => HTML5::STARTTAG, - 'attr' => array() - )); - - /* Act as if a start tag token with the tag name "p" had - been seen. */ - $this->inBody(array( - 'name' => 'p', - 'type' => HTML5::STARTTAG, - 'attr' => array() - )); - - /* Act as if a start tag token with the tag name "label" - had been seen. */ - $this->inBody(array( - 'name' => 'label', - 'type' => HTML5::STARTTAG, - 'attr' => array() - )); - - /* Act as if a stream of character tokens had been seen. */ - $this->insertText('This is a searchable index. '. - 'Insert your search keywords here: '); - - /* Act as if a start tag token with the tag name "input" - had been seen, with all the attributes from the "isindex" - token, except with the "name" attribute set to the value - "isindex" (ignoring any explicit "name" attribute). */ - $attr = $token['attr']; - $attr[] = array('name' => 'name', 'value' => 'isindex'); - - $this->inBody(array( - 'name' => 'input', - 'type' => HTML5::STARTTAG, - 'attr' => $attr - )); - - /* Act as if a stream of character tokens had been seen - (see below for what they should say). */ - $this->insertText('This is a searchable index. '. - 'Insert your search keywords here: '); - - /* Act as if an end tag token with the tag name "label" - had been seen. */ - $this->inBody(array( - 'name' => 'label', - 'type' => HTML5::ENDTAG - )); - - /* Act as if an end tag token with the tag name "p" had - been seen. */ - $this->inBody(array( - 'name' => 'p', - 'type' => HTML5::ENDTAG - )); - - /* Act as if a start tag token with the tag name "hr" had - been seen. */ - $this->inBody(array( - 'name' => 'hr', - 'type' => HTML5::ENDTAG - )); - - /* Act as if an end tag token with the tag name "form" had - been seen. */ - $this->inBody(array( - 'name' => 'form', - 'type' => HTML5::ENDTAG - )); - } - break; - - /* A start tag whose tag name is "textarea" */ - case 'textarea': - $this->insertElement($token); - - /* Switch the tokeniser's content model flag to the - RCDATA state. */ - return HTML5::RCDATA; - break; - - /* A start tag whose tag name is one of: "iframe", "noembed", - "noframes" */ - case 'iframe': case 'noembed': case 'noframes': - $this->insertElement($token); - - /* Switch the tokeniser's content model flag to the CDATA state. */ - return HTML5::CDATA; - break; - - /* A start tag whose tag name is "select" */ - case 'select': - /* Reconstruct the active formatting elements, if any. */ - $this->reconstructActiveFormattingElements(); - - /* Insert an HTML element for the token. */ - $this->insertElement($token); - - /* Change the insertion mode to "in select". */ - $this->mode = self::IN_SELECT; - break; - - /* A start or end tag whose tag name is one of: "caption", "col", - "colgroup", "frame", "frameset", "head", "option", "optgroup", - "tbody", "td", "tfoot", "th", "thead", "tr". */ - case 'caption': case 'col': case 'colgroup': case 'frame': - case 'frameset': case 'head': case 'option': case 'optgroup': - case 'tbody': case 'td': case 'tfoot': case 'th': case 'thead': - case 'tr': - // Parse error. Ignore the token. - break; - - /* A start or end tag whose tag name is one of: "event-source", - "section", "nav", "article", "aside", "header", "footer", - "datagrid", "command" */ - case 'event-source': case 'section': case 'nav': case 'article': - case 'aside': case 'header': case 'footer': case 'datagrid': - case 'command': - // Work in progress! - break; - - /* A start tag token not covered by the previous entries */ - default: - /* Reconstruct the active formatting elements, if any. */ - $this->reconstructActiveFormattingElements(); - - $this->insertElement($token, true, true); - break; - } - break; - - case HTML5::ENDTAG: - switch($token['name']) { - /* An end tag with the tag name "body" */ - case 'body': - /* If the second element in the stack of open elements is - not a body element, this is a parse error. Ignore the token. - (innerHTML case) */ - if(count($this->stack) < 2 || $this->stack[1]->nodeName !== 'body') { - // Ignore. - - /* If the current node is not the body element, then this - is a parse error. */ - } elseif(end($this->stack)->nodeName !== 'body') { - // Parse error. - } - - /* Change the insertion mode to "after body". */ - $this->mode = self::AFTER_BODY; - break; - - /* An end tag with the tag name "html" */ - case 'html': - /* Act as if an end tag with tag name "body" had been seen, - then, if that token wasn't ignored, reprocess the current - token. */ - $this->inBody(array( - 'name' => 'body', - 'type' => HTML5::ENDTAG - )); - - return $this->afterBody($token); - break; - - /* An end tag whose tag name is one of: "address", "blockquote", - "center", "dir", "div", "dl", "fieldset", "listing", "menu", - "ol", "pre", "ul" */ - case 'address': case 'blockquote': case 'center': case 'dir': - case 'div': case 'dl': case 'fieldset': case 'listing': - case 'menu': case 'ol': case 'pre': case 'ul': - /* If the stack of open elements has an element in scope - with the same tag name as that of the token, then generate - implied end tags. */ - if($this->elementInScope($token['name'])) { - $this->generateImpliedEndTags(); - - /* Now, if the current node is not an element with - the same tag name as that of the token, then this - is a parse error. */ - // w/e - - /* If the stack of open elements has an element in - scope with the same tag name as that of the token, - then pop elements from this stack until an element - with that tag name has been popped from the stack. */ - for($n = count($this->stack) - 1; $n >= 0; $n--) { - if($this->stack[$n]->nodeName === $token['name']) { - $n = -1; - } - - array_pop($this->stack); - } - } - break; - - /* An end tag whose tag name is "form" */ - case 'form': - /* If the stack of open elements has an element in scope - with the same tag name as that of the token, then generate - implied end tags. */ - if($this->elementInScope($token['name'])) { - $this->generateImpliedEndTags(); - - } - - if(end($this->stack)->nodeName !== $token['name']) { - /* Now, if the current node is not an element with the - same tag name as that of the token, then this is a parse - error. */ - // w/e - - } else { - /* Otherwise, if the current node is an element with - the same tag name as that of the token pop that element - from the stack. */ - array_pop($this->stack); - } - - /* In any case, set the form element pointer to null. */ - $this->form_pointer = null; - break; - - /* An end tag whose tag name is "p" */ - case 'p': - /* If the stack of open elements has a p element in scope, - then generate implied end tags, except for p elements. */ - if($this->elementInScope('p')) { - $this->generateImpliedEndTags(array('p')); - - /* If the current node is not a p element, then this is - a parse error. */ - // k - - /* If the stack of open elements has a p element in - scope, then pop elements from this stack until the stack - no longer has a p element in scope. */ - for($n = count($this->stack) - 1; $n >= 0; $n--) { - if($this->elementInScope('p')) { - array_pop($this->stack); - - } else { - break; - } - } - } - break; - - /* An end tag whose tag name is "dd", "dt", or "li" */ - case 'dd': case 'dt': case 'li': - /* If the stack of open elements has an element in scope - whose tag name matches the tag name of the token, then - generate implied end tags, except for elements with the - same tag name as the token. */ - if($this->elementInScope($token['name'])) { - $this->generateImpliedEndTags(array($token['name'])); - - /* If the current node is not an element with the same - tag name as the token, then this is a parse error. */ - // w/e - - /* If the stack of open elements has an element in scope - whose tag name matches the tag name of the token, then - pop elements from this stack until an element with that - tag name has been popped from the stack. */ - for($n = count($this->stack) - 1; $n >= 0; $n--) { - if($this->stack[$n]->nodeName === $token['name']) { - $n = -1; - } - - array_pop($this->stack); - } - } - break; - - /* An end tag whose tag name is one of: "h1", "h2", "h3", "h4", - "h5", "h6" */ - case 'h1': case 'h2': case 'h3': case 'h4': case 'h5': case 'h6': - $elements = array('h1', 'h2', 'h3', 'h4', 'h5', 'h6'); - - /* If the stack of open elements has in scope an element whose - tag name is one of "h1", "h2", "h3", "h4", "h5", or "h6", then - generate implied end tags. */ - if($this->elementInScope($elements)) { - $this->generateImpliedEndTags(); - - /* Now, if the current node is not an element with the same - tag name as that of the token, then this is a parse error. */ - // w/e - - /* If the stack of open elements has in scope an element - whose tag name is one of "h1", "h2", "h3", "h4", "h5", or - "h6", then pop elements from the stack until an element - with one of those tag names has been popped from the stack. */ - while($this->elementInScope($elements)) { - array_pop($this->stack); - } - } - break; - - /* An end tag whose tag name is one of: "a", "b", "big", "em", - "font", "i", "nobr", "s", "small", "strike", "strong", "tt", "u" */ - case 'a': case 'b': case 'big': case 'em': case 'font': - case 'i': case 'nobr': case 's': case 'small': case 'strike': - case 'strong': case 'tt': case 'u': - /* 1. Let the formatting element be the last element in - the list of active formatting elements that: - * is between the end of the list and the last scope - marker in the list, if any, or the start of the list - otherwise, and - * has the same tag name as the token. - */ - while(true) { - for($a = count($this->a_formatting) - 1; $a >= 0; $a--) { - if($this->a_formatting[$a] === self::MARKER) { - break; - - } elseif($this->a_formatting[$a]->tagName === $token['name']) { - $formatting_element = $this->a_formatting[$a]; - $in_stack = in_array($formatting_element, $this->stack, true); - $fe_af_pos = $a; - break; - } - } - - /* If there is no such node, or, if that node is - also in the stack of open elements but the element - is not in scope, then this is a parse error. Abort - these steps. The token is ignored. */ - if(!isset($formatting_element) || ($in_stack && - !$this->elementInScope($token['name']))) { - break; - - /* Otherwise, if there is such a node, but that node - is not in the stack of open elements, then this is a - parse error; remove the element from the list, and - abort these steps. */ - } elseif(isset($formatting_element) && !$in_stack) { - unset($this->a_formatting[$fe_af_pos]); - $this->a_formatting = array_merge($this->a_formatting); - break; - } - - /* 2. Let the furthest block be the topmost node in the - stack of open elements that is lower in the stack - than the formatting element, and is not an element in - the phrasing or formatting categories. There might - not be one. */ - $fe_s_pos = array_search($formatting_element, $this->stack, true); - $length = count($this->stack); - - for($s = $fe_s_pos + 1; $s < $length; $s++) { - $category = $this->getElementCategory($this->stack[$s]->nodeName); - - if($category !== self::PHRASING && $category !== self::FORMATTING) { - $furthest_block = $this->stack[$s]; - } - } - - /* 3. If there is no furthest block, then the UA must - skip the subsequent steps and instead just pop all - the nodes from the bottom of the stack of open - elements, from the current node up to the formatting - element, and remove the formatting element from the - list of active formatting elements. */ - if(!isset($furthest_block)) { - for($n = $length - 1; $n >= $fe_s_pos; $n--) { - array_pop($this->stack); - } - - unset($this->a_formatting[$fe_af_pos]); - $this->a_formatting = array_merge($this->a_formatting); - break; - } - - /* 4. Let the common ancestor be the element - immediately above the formatting element in the stack - of open elements. */ - $common_ancestor = $this->stack[$fe_s_pos - 1]; - - /* 5. If the furthest block has a parent node, then - remove the furthest block from its parent node. */ - if($furthest_block->parentNode !== null) { - $furthest_block->parentNode->removeChild($furthest_block); - } - - /* 6. Let a bookmark note the position of the - formatting element in the list of active formatting - elements relative to the elements on either side - of it in the list. */ - $bookmark = $fe_af_pos; - - /* 7. Let node and last node be the furthest block. - Follow these steps: */ - $node = $furthest_block; - $last_node = $furthest_block; - - while(true) { - for($n = array_search($node, $this->stack, true) - 1; $n >= 0; $n--) { - /* 7.1 Let node be the element immediately - prior to node in the stack of open elements. */ - $node = $this->stack[$n]; - - /* 7.2 If node is not in the list of active - formatting elements, then remove node from - the stack of open elements and then go back - to step 1. */ - if(!in_array($node, $this->a_formatting, true)) { - unset($this->stack[$n]); - $this->stack = array_merge($this->stack); - - } else { - break; - } - } - - /* 7.3 Otherwise, if node is the formatting - element, then go to the next step in the overall - algorithm. */ - if($node === $formatting_element) { - break; - - /* 7.4 Otherwise, if last node is the furthest - block, then move the aforementioned bookmark to - be immediately after the node in the list of - active formatting elements. */ - } elseif($last_node === $furthest_block) { - $bookmark = array_search($node, $this->a_formatting, true) + 1; - } - - /* 7.5 If node has any children, perform a - shallow clone of node, replace the entry for - node in the list of active formatting elements - with an entry for the clone, replace the entry - for node in the stack of open elements with an - entry for the clone, and let node be the clone. */ - if($node->hasChildNodes()) { - $clone = $node->cloneNode(); - $s_pos = array_search($node, $this->stack, true); - $a_pos = array_search($node, $this->a_formatting, true); - - $this->stack[$s_pos] = $clone; - $this->a_formatting[$a_pos] = $clone; - $node = $clone; - } - - /* 7.6 Insert last node into node, first removing - it from its previous parent node if any. */ - if($last_node->parentNode !== null) { - $last_node->parentNode->removeChild($last_node); - } - - $node->appendChild($last_node); - - /* 7.7 Let last node be node. */ - $last_node = $node; - } - - /* 8. Insert whatever last node ended up being in - the previous step into the common ancestor node, - first removing it from its previous parent node if - any. */ - if($last_node->parentNode !== null) { - $last_node->parentNode->removeChild($last_node); - } - - $common_ancestor->appendChild($last_node); - - /* 9. Perform a shallow clone of the formatting - element. */ - $clone = $formatting_element->cloneNode(); - - /* 10. Take all of the child nodes of the furthest - block and append them to the clone created in the - last step. */ - while($furthest_block->hasChildNodes()) { - $child = $furthest_block->firstChild; - $furthest_block->removeChild($child); - $clone->appendChild($child); - } - - /* 11. Append that clone to the furthest block. */ - $furthest_block->appendChild($clone); - - /* 12. Remove the formatting element from the list - of active formatting elements, and insert the clone - into the list of active formatting elements at the - position of the aforementioned bookmark. */ - $fe_af_pos = array_search($formatting_element, $this->a_formatting, true); - unset($this->a_formatting[$fe_af_pos]); - $this->a_formatting = array_merge($this->a_formatting); - - $af_part1 = array_slice($this->a_formatting, 0, $bookmark - 1); - $af_part2 = array_slice($this->a_formatting, $bookmark, count($this->a_formatting)); - $this->a_formatting = array_merge($af_part1, array($clone), $af_part2); - - /* 13. Remove the formatting element from the stack - of open elements, and insert the clone into the stack - of open elements immediately after (i.e. in a more - deeply nested position than) the position of the - furthest block in that stack. */ - $fe_s_pos = array_search($formatting_element, $this->stack, true); - $fb_s_pos = array_search($furthest_block, $this->stack, true); - unset($this->stack[$fe_s_pos]); - - $s_part1 = array_slice($this->stack, 0, $fb_s_pos); - $s_part2 = array_slice($this->stack, $fb_s_pos + 1, count($this->stack)); - $this->stack = array_merge($s_part1, array($clone), $s_part2); - - /* 14. Jump back to step 1 in this series of steps. */ - unset($formatting_element, $fe_af_pos, $fe_s_pos, $furthest_block); - } - break; - - /* An end tag token whose tag name is one of: "button", - "marquee", "object" */ - case 'button': case 'marquee': case 'object': - /* If the stack of open elements has an element in scope whose - tag name matches the tag name of the token, then generate implied - tags. */ - if($this->elementInScope($token['name'])) { - $this->generateImpliedEndTags(); - - /* Now, if the current node is not an element with the same - tag name as the token, then this is a parse error. */ - // k - - /* Now, if the stack of open elements has an element in scope - whose tag name matches the tag name of the token, then pop - elements from the stack until that element has been popped from - the stack, and clear the list of active formatting elements up - to the last marker. */ - for($n = count($this->stack) - 1; $n >= 0; $n--) { - if($this->stack[$n]->nodeName === $token['name']) { - $n = -1; - } - - array_pop($this->stack); - } - - $marker = end(array_keys($this->a_formatting, self::MARKER, true)); - - for($n = count($this->a_formatting) - 1; $n > $marker; $n--) { - array_pop($this->a_formatting); - } - } - break; - - /* Or an end tag whose tag name is one of: "area", "basefont", - "bgsound", "br", "embed", "hr", "iframe", "image", "img", - "input", "isindex", "noembed", "noframes", "param", "select", - "spacer", "table", "textarea", "wbr" */ - case 'area': case 'basefont': case 'bgsound': case 'br': - case 'embed': case 'hr': case 'iframe': case 'image': - case 'img': case 'input': case 'isindex': case 'noembed': - case 'noframes': case 'param': case 'select': case 'spacer': - case 'table': case 'textarea': case 'wbr': - // Parse error. Ignore the token. - break; - - /* An end tag token not covered by the previous entries */ - default: - for($n = count($this->stack) - 1; $n >= 0; $n--) { - /* Initialise node to be the current node (the bottommost - node of the stack). */ - $node = end($this->stack); - - /* If node has the same tag name as the end tag token, - then: */ - if($token['name'] === $node->nodeName) { - /* Generate implied end tags. */ - $this->generateImpliedEndTags(); - - /* If the tag name of the end tag token does not - match the tag name of the current node, this is a - parse error. */ - // k - - /* Pop all the nodes from the current node up to - node, including node, then stop this algorithm. */ - for($x = count($this->stack) - $n; $x >= $n; $x--) { - array_pop($this->stack); - } - - } else { - $category = $this->getElementCategory($node); - - if($category !== self::SPECIAL && $category !== self::SCOPING) { - /* Otherwise, if node is in neither the formatting - category nor the phrasing category, then this is a - parse error. Stop this algorithm. The end tag token - is ignored. */ - return false; - } - } - } - break; - } - break; - } - } - - private function inTable($token) { - $clear = array('html', 'table'); - - /* A character token that is one of one of U+0009 CHARACTER TABULATION, - U+000A LINE FEED (LF), U+000B LINE TABULATION, U+000C FORM FEED (FF), - or U+0020 SPACE */ - if($token['type'] === HTML5::CHARACTR && - preg_match('/^[\t\n\x0b\x0c ]+$/', $token['data'])) { - /* Append the character to the current node. */ - $text = $this->dom->createTextNode($token['data']); - end($this->stack)->appendChild($text); - - /* A comment token */ - } elseif($token['type'] === HTML5::COMMENT) { - /* Append a Comment node to the current node with the data - attribute set to the data given in the comment token. */ - $comment = $this->dom->createComment($token['data']); - end($this->stack)->appendChild($comment); - - /* A start tag whose tag name is "caption" */ - } elseif($token['type'] === HTML5::STARTTAG && - $token['name'] === 'caption') { - /* Clear the stack back to a table context. */ - $this->clearStackToTableContext($clear); - - /* Insert a marker at the end of the list of active - formatting elements. */ - $this->a_formatting[] = self::MARKER; - - /* Insert an HTML element for the token, then switch the - insertion mode to "in caption". */ - $this->insertElement($token); - $this->mode = self::IN_CAPTION; - - /* A start tag whose tag name is "colgroup" */ - } elseif($token['type'] === HTML5::STARTTAG && - $token['name'] === 'colgroup') { - /* Clear the stack back to a table context. */ - $this->clearStackToTableContext($clear); - - /* Insert an HTML element for the token, then switch the - insertion mode to "in column group". */ - $this->insertElement($token); - $this->mode = self::IN_CGROUP; - - /* A start tag whose tag name is "col" */ - } elseif($token['type'] === HTML5::STARTTAG && - $token['name'] === 'col') { - $this->inTable(array( - 'name' => 'colgroup', - 'type' => HTML5::STARTTAG, - 'attr' => array() - )); - - $this->inColumnGroup($token); - - /* A start tag whose tag name is one of: "tbody", "tfoot", "thead" */ - } elseif($token['type'] === HTML5::STARTTAG && in_array($token['name'], - array('tbody', 'tfoot', 'thead'))) { - /* Clear the stack back to a table context. */ - $this->clearStackToTableContext($clear); - - /* Insert an HTML element for the token, then switch the insertion - mode to "in table body". */ - $this->insertElement($token); - $this->mode = self::IN_TBODY; - - /* A start tag whose tag name is one of: "td", "th", "tr" */ - } elseif($token['type'] === HTML5::STARTTAG && - in_array($token['name'], array('td', 'th', 'tr'))) { - /* Act as if a start tag token with the tag name "tbody" had been - seen, then reprocess the current token. */ - $this->inTable(array( - 'name' => 'tbody', - 'type' => HTML5::STARTTAG, - 'attr' => array() - )); - - return $this->inTableBody($token); - - /* A start tag whose tag name is "table" */ - } elseif($token['type'] === HTML5::STARTTAG && - $token['name'] === 'table') { - /* Parse error. Act as if an end tag token with the tag name "table" - had been seen, then, if that token wasn't ignored, reprocess the - current token. */ - $this->inTable(array( - 'name' => 'table', - 'type' => HTML5::ENDTAG - )); - - return $this->mainPhase($token); - - /* An end tag whose tag name is "table" */ - } elseif($token['type'] === HTML5::ENDTAG && - $token['name'] === 'table') { - /* If the stack of open elements does not have an element in table - scope with the same tag name as the token, this is a parse error. - Ignore the token. (innerHTML case) */ - if(!$this->elementInScope($token['name'], true)) { - return false; - - /* Otherwise: */ - } else { - /* Generate implied end tags. */ - $this->generateImpliedEndTags(); - - /* Now, if the current node is not a table element, then this - is a parse error. */ - // w/e - - /* Pop elements from this stack until a table element has been - popped from the stack. */ - while(true) { - $current = end($this->stack)->nodeName; - array_pop($this->stack); - - if($current === 'table') { - break; - } - } - - /* Reset the insertion mode appropriately. */ - $this->resetInsertionMode(); - } - - /* An end tag whose tag name is one of: "body", "caption", "col", - "colgroup", "html", "tbody", "td", "tfoot", "th", "thead", "tr" */ - } elseif($token['type'] === HTML5::ENDTAG && in_array($token['name'], - array('body', 'caption', 'col', 'colgroup', 'html', 'tbody', 'td', - 'tfoot', 'th', 'thead', 'tr'))) { - // Parse error. Ignore the token. - - /* Anything else */ - } else { - /* Parse error. Process the token as if the insertion mode was "in - body", with the following exception: */ - - /* If the current node is a table, tbody, tfoot, thead, or tr - element, then, whenever a node would be inserted into the current - node, it must instead be inserted into the foster parent element. */ - if(in_array(end($this->stack)->nodeName, - array('table', 'tbody', 'tfoot', 'thead', 'tr'))) { - /* The foster parent element is the parent element of the last - table element in the stack of open elements, if there is a - table element and it has such a parent element. If there is no - table element in the stack of open elements (innerHTML case), - then the foster parent element is the first element in the - stack of open elements (the html element). Otherwise, if there - is a table element in the stack of open elements, but the last - table element in the stack of open elements has no parent, or - its parent node is not an element, then the foster parent - element is the element before the last table element in the - stack of open elements. */ - for($n = count($this->stack) - 1; $n >= 0; $n--) { - if($this->stack[$n]->nodeName === 'table') { - $table = $this->stack[$n]; - break; - } - } - - if(isset($table) && $table->parentNode !== null) { - $this->foster_parent = $table->parentNode; - - } elseif(!isset($table)) { - $this->foster_parent = $this->stack[0]; - - } elseif(isset($table) && ($table->parentNode === null || - $table->parentNode->nodeType !== XML_ELEMENT_NODE)) { - $this->foster_parent = $this->stack[$n - 1]; - } - } - - $this->inBody($token); - } - } - - private function inCaption($token) { - /* An end tag whose tag name is "caption" */ - if($token['type'] === HTML5::ENDTAG && $token['name'] === 'caption') { - /* If the stack of open elements does not have an element in table - scope with the same tag name as the token, this is a parse error. - Ignore the token. (innerHTML case) */ - if(!$this->elementInScope($token['name'], true)) { - // Ignore - - /* Otherwise: */ - } else { - /* Generate implied end tags. */ - $this->generateImpliedEndTags(); - - /* Now, if the current node is not a caption element, then this - is a parse error. */ - // w/e - - /* Pop elements from this stack until a caption element has - been popped from the stack. */ - while(true) { - $node = end($this->stack)->nodeName; - array_pop($this->stack); - - if($node === 'caption') { - break; - } - } - - /* Clear the list of active formatting elements up to the last - marker. */ - $this->clearTheActiveFormattingElementsUpToTheLastMarker(); - - /* Switch the insertion mode to "in table". */ - $this->mode = self::IN_TABLE; - } - - /* A start tag whose tag name is one of: "caption", "col", "colgroup", - "tbody", "td", "tfoot", "th", "thead", "tr", or an end tag whose tag - name is "table" */ - } elseif(($token['type'] === HTML5::STARTTAG && in_array($token['name'], - array('caption', 'col', 'colgroup', 'tbody', 'td', 'tfoot', 'th', - 'thead', 'tr'))) || ($token['type'] === HTML5::ENDTAG && - $token['name'] === 'table')) { - /* Parse error. Act as if an end tag with the tag name "caption" - had been seen, then, if that token wasn't ignored, reprocess the - current token. */ - $this->inCaption(array( - 'name' => 'caption', - 'type' => HTML5::ENDTAG - )); - - return $this->inTable($token); - - /* An end tag whose tag name is one of: "body", "col", "colgroup", - "html", "tbody", "td", "tfoot", "th", "thead", "tr" */ - } elseif($token['type'] === HTML5::ENDTAG && in_array($token['name'], - array('body', 'col', 'colgroup', 'html', 'tbody', 'tfoot', 'th', - 'thead', 'tr'))) { - // Parse error. Ignore the token. - - /* Anything else */ - } else { - /* Process the token as if the insertion mode was "in body". */ - $this->inBody($token); - } - } - - private function inColumnGroup($token) { - /* A character token that is one of one of U+0009 CHARACTER TABULATION, - U+000A LINE FEED (LF), U+000B LINE TABULATION, U+000C FORM FEED (FF), - or U+0020 SPACE */ - if($token['type'] === HTML5::CHARACTR && - preg_match('/^[\t\n\x0b\x0c ]+$/', $token['data'])) { - /* Append the character to the current node. */ - $text = $this->dom->createTextNode($token['data']); - end($this->stack)->appendChild($text); - - /* A comment token */ - } elseif($token['type'] === HTML5::COMMENT) { - /* Append a Comment node to the current node with the data - attribute set to the data given in the comment token. */ - $comment = $this->dom->createComment($token['data']); - end($this->stack)->appendChild($comment); - - /* A start tag whose tag name is "col" */ - } elseif($token['type'] === HTML5::STARTTAG && $token['name'] === 'col') { - /* Insert a col element for the token. Immediately pop the current - node off the stack of open elements. */ - $this->insertElement($token); - array_pop($this->stack); - - /* An end tag whose tag name is "colgroup" */ - } elseif($token['type'] === HTML5::ENDTAG && - $token['name'] === 'colgroup') { - /* If the current node is the root html element, then this is a - parse error, ignore the token. (innerHTML case) */ - if(end($this->stack)->nodeName === 'html') { - // Ignore - - /* Otherwise, pop the current node (which will be a colgroup - element) from the stack of open elements. Switch the insertion - mode to "in table". */ - } else { - array_pop($this->stack); - $this->mode = self::IN_TABLE; - } - - /* An end tag whose tag name is "col" */ - } elseif($token['type'] === HTML5::ENDTAG && $token['name'] === 'col') { - /* Parse error. Ignore the token. */ - - /* Anything else */ - } else { - /* Act as if an end tag with the tag name "colgroup" had been seen, - and then, if that token wasn't ignored, reprocess the current token. */ - $this->inColumnGroup(array( - 'name' => 'colgroup', - 'type' => HTML5::ENDTAG - )); - - return $this->inTable($token); - } - } - - private function inTableBody($token) { - $clear = array('tbody', 'tfoot', 'thead', 'html'); - - /* A start tag whose tag name is "tr" */ - if($token['type'] === HTML5::STARTTAG && $token['name'] === 'tr') { - /* Clear the stack back to a table body context. */ - $this->clearStackToTableContext($clear); - - /* Insert a tr element for the token, then switch the insertion - mode to "in row". */ - $this->insertElement($token); - $this->mode = self::IN_ROW; - - /* A start tag whose tag name is one of: "th", "td" */ - } elseif($token['type'] === HTML5::STARTTAG && - ($token['name'] === 'th' || $token['name'] === 'td')) { - /* Parse error. Act as if a start tag with the tag name "tr" had - been seen, then reprocess the current token. */ - $this->inTableBody(array( - 'name' => 'tr', - 'type' => HTML5::STARTTAG, - 'attr' => array() - )); - - return $this->inRow($token); - - /* An end tag whose tag name is one of: "tbody", "tfoot", "thead" */ - } elseif($token['type'] === HTML5::ENDTAG && - in_array($token['name'], array('tbody', 'tfoot', 'thead'))) { - /* If the stack of open elements does not have an element in table - scope with the same tag name as the token, this is a parse error. - Ignore the token. */ - if(!$this->elementInScope($token['name'], true)) { - // Ignore - - /* Otherwise: */ - } else { - /* Clear the stack back to a table body context. */ - $this->clearStackToTableContext($clear); - - /* Pop the current node from the stack of open elements. Switch - the insertion mode to "in table". */ - array_pop($this->stack); - $this->mode = self::IN_TABLE; - } - - /* A start tag whose tag name is one of: "caption", "col", "colgroup", - "tbody", "tfoot", "thead", or an end tag whose tag name is "table" */ - } elseif(($token['type'] === HTML5::STARTTAG && in_array($token['name'], - array('caption', 'col', 'colgroup', 'tbody', 'tfoor', 'thead'))) || - ($token['type'] === HTML5::STARTTAG && $token['name'] === 'table')) { - /* If the stack of open elements does not have a tbody, thead, or - tfoot element in table scope, this is a parse error. Ignore the - token. (innerHTML case) */ - if(!$this->elementInScope(array('tbody', 'thead', 'tfoot'), true)) { - // Ignore. - - /* Otherwise: */ - } else { - /* Clear the stack back to a table body context. */ - $this->clearStackToTableContext($clear); - - /* Act as if an end tag with the same tag name as the current - node ("tbody", "tfoot", or "thead") had been seen, then - reprocess the current token. */ - $this->inTableBody(array( - 'name' => end($this->stack)->nodeName, - 'type' => HTML5::ENDTAG - )); - - return $this->mainPhase($token); - } - - /* An end tag whose tag name is one of: "body", "caption", "col", - "colgroup", "html", "td", "th", "tr" */ - } elseif($token['type'] === HTML5::ENDTAG && in_array($token['name'], - array('body', 'caption', 'col', 'colgroup', 'html', 'td', 'th', 'tr'))) { - /* Parse error. Ignore the token. */ - - /* Anything else */ - } else { - /* Process the token as if the insertion mode was "in table". */ - $this->inTable($token); - } - } - - private function inRow($token) { - $clear = array('tr', 'html'); - - /* A start tag whose tag name is one of: "th", "td" */ - if($token['type'] === HTML5::STARTTAG && - ($token['name'] === 'th' || $token['name'] === 'td')) { - /* Clear the stack back to a table row context. */ - $this->clearStackToTableContext($clear); - - /* Insert an HTML element for the token, then switch the insertion - mode to "in cell". */ - $this->insertElement($token); - $this->mode = self::IN_CELL; - - /* Insert a marker at the end of the list of active formatting - elements. */ - $this->a_formatting[] = self::MARKER; - - /* An end tag whose tag name is "tr" */ - } elseif($token['type'] === HTML5::ENDTAG && $token['name'] === 'tr') { - /* If the stack of open elements does not have an element in table - scope with the same tag name as the token, this is a parse error. - Ignore the token. (innerHTML case) */ - if(!$this->elementInScope($token['name'], true)) { - // Ignore. - - /* Otherwise: */ - } else { - /* Clear the stack back to a table row context. */ - $this->clearStackToTableContext($clear); - - /* Pop the current node (which will be a tr element) from the - stack of open elements. Switch the insertion mode to "in table - body". */ - array_pop($this->stack); - $this->mode = self::IN_TBODY; - } - - /* A start tag whose tag name is one of: "caption", "col", "colgroup", - "tbody", "tfoot", "thead", "tr" or an end tag whose tag name is "table" */ - } elseif($token['type'] === HTML5::STARTTAG && in_array($token['name'], - array('caption', 'col', 'colgroup', 'tbody', 'tfoot', 'thead', 'tr'))) { - /* Act as if an end tag with the tag name "tr" had been seen, then, - if that token wasn't ignored, reprocess the current token. */ - $this->inRow(array( - 'name' => 'tr', - 'type' => HTML5::ENDTAG - )); - - return $this->inCell($token); - - /* An end tag whose tag name is one of: "tbody", "tfoot", "thead" */ - } elseif($token['type'] === HTML5::ENDTAG && - in_array($token['name'], array('tbody', 'tfoot', 'thead'))) { - /* If the stack of open elements does not have an element in table - scope with the same tag name as the token, this is a parse error. - Ignore the token. */ - if(!$this->elementInScope($token['name'], true)) { - // Ignore. - - /* Otherwise: */ - } else { - /* Otherwise, act as if an end tag with the tag name "tr" had - been seen, then reprocess the current token. */ - $this->inRow(array( - 'name' => 'tr', - 'type' => HTML5::ENDTAG - )); - - return $this->inCell($token); - } - - /* An end tag whose tag name is one of: "body", "caption", "col", - "colgroup", "html", "td", "th" */ - } elseif($token['type'] === HTML5::ENDTAG && in_array($token['name'], - array('body', 'caption', 'col', 'colgroup', 'html', 'td', 'th', 'tr'))) { - /* Parse error. Ignore the token. */ - - /* Anything else */ - } else { - /* Process the token as if the insertion mode was "in table". */ - $this->inTable($token); - } - } - - private function inCell($token) { - /* An end tag whose tag name is one of: "td", "th" */ - if($token['type'] === HTML5::ENDTAG && - ($token['name'] === 'td' || $token['name'] === 'th')) { - /* If the stack of open elements does not have an element in table - scope with the same tag name as that of the token, then this is a - parse error and the token must be ignored. */ - if(!$this->elementInScope($token['name'], true)) { - // Ignore. - - /* Otherwise: */ - } else { - /* Generate implied end tags, except for elements with the same - tag name as the token. */ - $this->generateImpliedEndTags(array($token['name'])); - - /* Now, if the current node is not an element with the same tag - name as the token, then this is a parse error. */ - // k - - /* Pop elements from this stack until an element with the same - tag name as the token has been popped from the stack. */ - while(true) { - $node = end($this->stack)->nodeName; - array_pop($this->stack); - - if($node === $token['name']) { - break; - } - } - - /* Clear the list of active formatting elements up to the last - marker. */ - $this->clearTheActiveFormattingElementsUpToTheLastMarker(); - - /* Switch the insertion mode to "in row". (The current node - will be a tr element at this point.) */ - $this->mode = self::IN_ROW; - } - - /* A start tag whose tag name is one of: "caption", "col", "colgroup", - "tbody", "td", "tfoot", "th", "thead", "tr" */ - } elseif($token['type'] === HTML5::STARTTAG && in_array($token['name'], - array('caption', 'col', 'colgroup', 'tbody', 'td', 'tfoot', 'th', - 'thead', 'tr'))) { - /* If the stack of open elements does not have a td or th element - in table scope, then this is a parse error; ignore the token. - (innerHTML case) */ - if(!$this->elementInScope(array('td', 'th'), true)) { - // Ignore. - - /* Otherwise, close the cell (see below) and reprocess the current - token. */ - } else { - $this->closeCell(); - return $this->inRow($token); - } - - /* A start tag whose tag name is one of: "caption", "col", "colgroup", - "tbody", "td", "tfoot", "th", "thead", "tr" */ - } elseif($token['type'] === HTML5::STARTTAG && in_array($token['name'], - array('caption', 'col', 'colgroup', 'tbody', 'td', 'tfoot', 'th', - 'thead', 'tr'))) { - /* If the stack of open elements does not have a td or th element - in table scope, then this is a parse error; ignore the token. - (innerHTML case) */ - if(!$this->elementInScope(array('td', 'th'), true)) { - // Ignore. - - /* Otherwise, close the cell (see below) and reprocess the current - token. */ - } else { - $this->closeCell(); - return $this->inRow($token); - } - - /* An end tag whose tag name is one of: "body", "caption", "col", - "colgroup", "html" */ - } elseif($token['type'] === HTML5::ENDTAG && in_array($token['name'], - array('body', 'caption', 'col', 'colgroup', 'html'))) { - /* Parse error. Ignore the token. */ - - /* An end tag whose tag name is one of: "table", "tbody", "tfoot", - "thead", "tr" */ - } elseif($token['type'] === HTML5::ENDTAG && in_array($token['name'], - array('table', 'tbody', 'tfoot', 'thead', 'tr'))) { - /* If the stack of open elements does not have an element in table - scope with the same tag name as that of the token (which can only - happen for "tbody", "tfoot" and "thead", or, in the innerHTML case), - then this is a parse error and the token must be ignored. */ - if(!$this->elementInScope($token['name'], true)) { - // Ignore. - - /* Otherwise, close the cell (see below) and reprocess the current - token. */ - } else { - $this->closeCell(); - return $this->inRow($token); - } - - /* Anything else */ - } else { - /* Process the token as if the insertion mode was "in body". */ - $this->inBody($token); - } - } - - private function inSelect($token) { - /* Handle the token as follows: */ - - /* A character token */ - if($token['type'] === HTML5::CHARACTR) { - /* Append the token's character to the current node. */ - $this->insertText($token['data']); - - /* A comment token */ - } elseif($token['type'] === HTML5::COMMENT) { - /* Append a Comment node to the current node with the data - attribute set to the data given in the comment token. */ - $this->insertComment($token['data']); - - /* A start tag token whose tag name is "option" */ - } elseif($token['type'] === HTML5::STARTTAG && - $token['name'] === 'option') { - /* If the current node is an option element, act as if an end tag - with the tag name "option" had been seen. */ - if(end($this->stack)->nodeName === 'option') { - $this->inSelect(array( - 'name' => 'option', - 'type' => HTML5::ENDTAG - )); - } - - /* Insert an HTML element for the token. */ - $this->insertElement($token); - - /* A start tag token whose tag name is "optgroup" */ - } elseif($token['type'] === HTML5::STARTTAG && - $token['name'] === 'optgroup') { - /* If the current node is an option element, act as if an end tag - with the tag name "option" had been seen. */ - if(end($this->stack)->nodeName === 'option') { - $this->inSelect(array( - 'name' => 'option', - 'type' => HTML5::ENDTAG - )); - } - - /* If the current node is an optgroup element, act as if an end tag - with the tag name "optgroup" had been seen. */ - if(end($this->stack)->nodeName === 'optgroup') { - $this->inSelect(array( - 'name' => 'optgroup', - 'type' => HTML5::ENDTAG - )); - } - - /* Insert an HTML element for the token. */ - $this->insertElement($token); - - /* An end tag token whose tag name is "optgroup" */ - } elseif($token['type'] === HTML5::ENDTAG && - $token['name'] === 'optgroup') { - /* First, if the current node is an option element, and the node - immediately before it in the stack of open elements is an optgroup - element, then act as if an end tag with the tag name "option" had - been seen. */ - $elements_in_stack = count($this->stack); - - if($this->stack[$elements_in_stack - 1]->nodeName === 'option' && - $this->stack[$elements_in_stack - 2]->nodeName === 'optgroup') { - $this->inSelect(array( - 'name' => 'option', - 'type' => HTML5::ENDTAG - )); - } - - /* If the current node is an optgroup element, then pop that node - from the stack of open elements. Otherwise, this is a parse error, - ignore the token. */ - if($this->stack[$elements_in_stack - 1] === 'optgroup') { - array_pop($this->stack); - } - - /* An end tag token whose tag name is "option" */ - } elseif($token['type'] === HTML5::ENDTAG && - $token['name'] === 'option') { - /* If the current node is an option element, then pop that node - from the stack of open elements. Otherwise, this is a parse error, - ignore the token. */ - if(end($this->stack)->nodeName === 'option') { - array_pop($this->stack); - } - - /* An end tag whose tag name is "select" */ - } elseif($token['type'] === HTML5::ENDTAG && - $token['name'] === 'select') { - /* If the stack of open elements does not have an element in table - scope with the same tag name as the token, this is a parse error. - Ignore the token. (innerHTML case) */ - if(!$this->elementInScope($token['name'], true)) { - // w/e - - /* Otherwise: */ - } else { - /* Pop elements from the stack of open elements until a select - element has been popped from the stack. */ - while(true) { - $current = end($this->stack)->nodeName; - array_pop($this->stack); - - if($current === 'select') { - break; - } - } - - /* Reset the insertion mode appropriately. */ - $this->resetInsertionMode(); - } - - /* A start tag whose tag name is "select" */ - } elseif($token['name'] === 'select' && - $token['type'] === HTML5::STARTTAG) { - /* Parse error. Act as if the token had been an end tag with the - tag name "select" instead. */ - $this->inSelect(array( - 'name' => 'select', - 'type' => HTML5::ENDTAG - )); - - /* An end tag whose tag name is one of: "caption", "table", "tbody", - "tfoot", "thead", "tr", "td", "th" */ - } elseif(in_array($token['name'], array('caption', 'table', 'tbody', - 'tfoot', 'thead', 'tr', 'td', 'th')) && $token['type'] === HTML5::ENDTAG) { - /* Parse error. */ - // w/e - - /* If the stack of open elements has an element in table scope with - the same tag name as that of the token, then act as if an end tag - with the tag name "select" had been seen, and reprocess the token. - Otherwise, ignore the token. */ - if($this->elementInScope($token['name'], true)) { - $this->inSelect(array( - 'name' => 'select', - 'type' => HTML5::ENDTAG - )); - - $this->mainPhase($token); - } - - /* Anything else */ - } else { - /* Parse error. Ignore the token. */ - } - } - - private function afterBody($token) { - /* Handle the token as follows: */ - - /* A character token that is one of one of U+0009 CHARACTER TABULATION, - U+000A LINE FEED (LF), U+000B LINE TABULATION, U+000C FORM FEED (FF), - or U+0020 SPACE */ - if($token['type'] === HTML5::CHARACTR && - preg_match('/^[\t\n\x0b\x0c ]+$/', $token['data'])) { - /* Process the token as it would be processed if the insertion mode - was "in body". */ - $this->inBody($token); - - /* A comment token */ - } elseif($token['type'] === HTML5::COMMENT) { - /* Append a Comment node to the first element in the stack of open - elements (the html element), with the data attribute set to the - data given in the comment token. */ - $comment = $this->dom->createComment($token['data']); - $this->stack[0]->appendChild($comment); - - /* An end tag with the tag name "html" */ - } elseif($token['type'] === HTML5::ENDTAG && $token['name'] === 'html') { - /* If the parser was originally created in order to handle the - setting of an element's innerHTML attribute, this is a parse error; - ignore the token. (The element will be an html element in this - case.) (innerHTML case) */ - - /* Otherwise, switch to the trailing end phase. */ - $this->phase = self::END_PHASE; - - /* Anything else */ - } else { - /* Parse error. Set the insertion mode to "in body" and reprocess - the token. */ - $this->mode = self::IN_BODY; - return $this->inBody($token); - } - } - - private function inFrameset($token) { - /* Handle the token as follows: */ - - /* A character token that is one of one of U+0009 CHARACTER TABULATION, - U+000A LINE FEED (LF), U+000B LINE TABULATION, U+000C FORM FEED (FF), - U+000D CARRIAGE RETURN (CR), or U+0020 SPACE */ - if($token['type'] === HTML5::CHARACTR && - preg_match('/^[\t\n\x0b\x0c ]+$/', $token['data'])) { - /* Append the character to the current node. */ - $this->insertText($token['data']); - - /* A comment token */ - } elseif($token['type'] === HTML5::COMMENT) { - /* Append a Comment node to the current node with the data - attribute set to the data given in the comment token. */ - $this->insertComment($token['data']); - - /* A start tag with the tag name "frameset" */ - } elseif($token['name'] === 'frameset' && - $token['type'] === HTML5::STARTTAG) { - $this->insertElement($token); - - /* An end tag with the tag name "frameset" */ - } elseif($token['name'] === 'frameset' && - $token['type'] === HTML5::ENDTAG) { - /* If the current node is the root html element, then this is a - parse error; ignore the token. (innerHTML case) */ - if(end($this->stack)->nodeName === 'html') { - // Ignore - - } else { - /* Otherwise, pop the current node from the stack of open - elements. */ - array_pop($this->stack); - - /* If the parser was not originally created in order to handle - the setting of an element's innerHTML attribute (innerHTML case), - and the current node is no longer a frameset element, then change - the insertion mode to "after frameset". */ - $this->mode = self::AFTR_FRAME; - } - - /* A start tag with the tag name "frame" */ - } elseif($token['name'] === 'frame' && - $token['type'] === HTML5::STARTTAG) { - /* Insert an HTML element for the token. */ - $this->insertElement($token); - - /* Immediately pop the current node off the stack of open elements. */ - array_pop($this->stack); - - /* A start tag with the tag name "noframes" */ - } elseif($token['name'] === 'noframes' && - $token['type'] === HTML5::STARTTAG) { - /* Process the token as if the insertion mode had been "in body". */ - $this->inBody($token); - - /* Anything else */ - } else { - /* Parse error. Ignore the token. */ - } - } - - private function afterFrameset($token) { - /* Handle the token as follows: */ - - /* A character token that is one of one of U+0009 CHARACTER TABULATION, - U+000A LINE FEED (LF), U+000B LINE TABULATION, U+000C FORM FEED (FF), - U+000D CARRIAGE RETURN (CR), or U+0020 SPACE */ - if($token['type'] === HTML5::CHARACTR && - preg_match('/^[\t\n\x0b\x0c ]+$/', $token['data'])) { - /* Append the character to the current node. */ - $this->insertText($token['data']); - - /* A comment token */ - } elseif($token['type'] === HTML5::COMMENT) { - /* Append a Comment node to the current node with the data - attribute set to the data given in the comment token. */ - $this->insertComment($token['data']); - - /* An end tag with the tag name "html" */ - } elseif($token['name'] === 'html' && - $token['type'] === HTML5::ENDTAG) { - /* Switch to the trailing end phase. */ - $this->phase = self::END_PHASE; - - /* A start tag with the tag name "noframes" */ - } elseif($token['name'] === 'noframes' && - $token['type'] === HTML5::STARTTAG) { - /* Process the token as if the insertion mode had been "in body". */ - $this->inBody($token); - - /* Anything else */ - } else { - /* Parse error. Ignore the token. */ - } - } - - private function trailingEndPhase($token) { - /* After the main phase, as each token is emitted from the tokenisation - stage, it must be processed as described in this section. */ - - /* A DOCTYPE token */ - if($token['type'] === HTML5::DOCTYPE) { - // Parse error. Ignore the token. - - /* A comment token */ - } elseif($token['type'] === HTML5::COMMENT) { - /* Append a Comment node to the Document object with the data - attribute set to the data given in the comment token. */ - $comment = $this->dom->createComment($token['data']); - $this->dom->appendChild($comment); - - /* A character token that is one of one of U+0009 CHARACTER TABULATION, - U+000A LINE FEED (LF), U+000B LINE TABULATION, U+000C FORM FEED (FF), - or U+0020 SPACE */ - } elseif($token['type'] === HTML5::CHARACTR && - preg_match('/^[\t\n\x0b\x0c ]+$/', $token['data'])) { - /* Process the token as it would be processed in the main phase. */ - $this->mainPhase($token); - - /* A character token that is not one of U+0009 CHARACTER TABULATION, - U+000A LINE FEED (LF), U+000B LINE TABULATION, U+000C FORM FEED (FF), - or U+0020 SPACE. Or a start tag token. Or an end tag token. */ - } elseif(($token['type'] === HTML5::CHARACTR && - preg_match('/^[\t\n\x0b\x0c ]+$/', $token['data'])) || - $token['type'] === HTML5::STARTTAG || $token['type'] === HTML5::ENDTAG) { - /* Parse error. Switch back to the main phase and reprocess the - token. */ - $this->phase = self::MAIN_PHASE; - return $this->mainPhase($token); - - /* An end-of-file token */ - } elseif($token['type'] === HTML5::EOF) { - /* OMG DONE!! */ - } - } - - private function insertElement($token, $append = true, $check = false) { - // Proprietary workaround for libxml2's limitations with tag names - if ($check) { - // Slightly modified HTML5 tag-name modification, - // removing anything that's not an ASCII letter, digit, or hyphen - $token['name'] = preg_replace('/[^a-z0-9-]/i', '', $token['name']); - // Remove leading hyphens and numbers - $token['name'] = ltrim($token['name'], '-0..9'); - // In theory, this should ever be needed, but just in case - if ($token['name'] === '') $token['name'] = 'span'; // arbitrary generic choice - } - - $el = $this->dom->createElement($token['name']); - - foreach($token['attr'] as $attr) { - if(!$el->hasAttribute($attr['name'])) { - $el->setAttribute($attr['name'], $attr['value']); - } - } - - $this->appendToRealParent($el); - $this->stack[] = $el; - - return $el; - } - - private function insertText($data) { - $text = $this->dom->createTextNode($data); - $this->appendToRealParent($text); - } - - private function insertComment($data) { - $comment = $this->dom->createComment($data); - $this->appendToRealParent($comment); - } - - private function appendToRealParent($node) { - if($this->foster_parent === null) { - end($this->stack)->appendChild($node); - - } elseif($this->foster_parent !== null) { - /* If the foster parent element is the parent element of the - last table element in the stack of open elements, then the new - node must be inserted immediately before the last table element - in the stack of open elements in the foster parent element; - otherwise, the new node must be appended to the foster parent - element. */ - for($n = count($this->stack) - 1; $n >= 0; $n--) { - if($this->stack[$n]->nodeName === 'table' && - $this->stack[$n]->parentNode !== null) { - $table = $this->stack[$n]; - break; - } - } - - if(isset($table) && $this->foster_parent->isSameNode($table->parentNode)) - $this->foster_parent->insertBefore($node, $table); - else - $this->foster_parent->appendChild($node); - - $this->foster_parent = null; - } - } - - private function elementInScope($el, $table = false) { - if(is_array($el)) { - foreach($el as $element) { - if($this->elementInScope($element, $table)) { - return true; - } - } - - return false; - } - - $leng = count($this->stack); - - for($n = 0; $n < $leng; $n++) { - /* 1. Initialise node to be the current node (the bottommost node of - the stack). */ - $node = $this->stack[$leng - 1 - $n]; - - if($node->tagName === $el) { - /* 2. If node is the target node, terminate in a match state. */ - return true; - - } elseif($node->tagName === 'table') { - /* 3. Otherwise, if node is a table element, terminate in a failure - state. */ - return false; - - } elseif($table === true && in_array($node->tagName, array('caption', 'td', - 'th', 'button', 'marquee', 'object'))) { - /* 4. Otherwise, if the algorithm is the "has an element in scope" - variant (rather than the "has an element in table scope" variant), - and node is one of the following, terminate in a failure state. */ - return false; - - } elseif($node === $node->ownerDocument->documentElement) { - /* 5. Otherwise, if node is an html element (root element), terminate - in a failure state. (This can only happen if the node is the topmost - node of the stack of open elements, and prevents the next step from - being invoked if there are no more elements in the stack.) */ - return false; - } - - /* Otherwise, set node to the previous entry in the stack of open - elements and return to step 2. (This will never fail, since the loop - will always terminate in the previous step if the top of the stack - is reached.) */ - } - } - - private function reconstructActiveFormattingElements() { - /* 1. If there are no entries in the list of active formatting elements, - then there is nothing to reconstruct; stop this algorithm. */ - $formatting_elements = count($this->a_formatting); - - if($formatting_elements === 0) { - return false; - } - - /* 3. Let entry be the last (most recently added) element in the list - of active formatting elements. */ - $entry = end($this->a_formatting); - - /* 2. If the last (most recently added) entry in the list of active - formatting elements is a marker, or if it is an element that is in the - stack of open elements, then there is nothing to reconstruct; stop this - algorithm. */ - if($entry === self::MARKER || in_array($entry, $this->stack, true)) { - return false; - } - - for($a = $formatting_elements - 1; $a >= 0; true) { - /* 4. If there are no entries before entry in the list of active - formatting elements, then jump to step 8. */ - if($a === 0) { - $step_seven = false; - break; - } - - /* 5. Let entry be the entry one earlier than entry in the list of - active formatting elements. */ - $a--; - $entry = $this->a_formatting[$a]; - - /* 6. If entry is neither a marker nor an element that is also in - thetack of open elements, go to step 4. */ - if($entry === self::MARKER || in_array($entry, $this->stack, true)) { - break; - } - } - - while(true) { - /* 7. Let entry be the element one later than entry in the list of - active formatting elements. */ - if(isset($step_seven) && $step_seven === true) { - $a++; - $entry = $this->a_formatting[$a]; - } - - /* 8. Perform a shallow clone of the element entry to obtain clone. */ - $clone = $entry->cloneNode(); - - /* 9. Append clone to the current node and push it onto the stack - of open elements so that it is the new current node. */ - end($this->stack)->appendChild($clone); - $this->stack[] = $clone; - - /* 10. Replace the entry for entry in the list with an entry for - clone. */ - $this->a_formatting[$a] = $clone; - - /* 11. If the entry for clone in the list of active formatting - elements is not the last entry in the list, return to step 7. */ - if(end($this->a_formatting) !== $clone) { - $step_seven = true; - } else { - break; - } - } - } - - private function clearTheActiveFormattingElementsUpToTheLastMarker() { - /* When the steps below require the UA to clear the list of active - formatting elements up to the last marker, the UA must perform the - following steps: */ - - while(true) { - /* 1. Let entry be the last (most recently added) entry in the list - of active formatting elements. */ - $entry = end($this->a_formatting); - - /* 2. Remove entry from the list of active formatting elements. */ - array_pop($this->a_formatting); - - /* 3. If entry was a marker, then stop the algorithm at this point. - The list has been cleared up to the last marker. */ - if($entry === self::MARKER) { - break; - } - } - } - - private function generateImpliedEndTags($exclude = array()) { - /* When the steps below require the UA to generate implied end tags, - then, if the current node is a dd element, a dt element, an li element, - a p element, a td element, a th element, or a tr element, the UA must - act as if an end tag with the respective tag name had been seen and - then generate implied end tags again. */ - $node = end($this->stack); - $elements = array_diff(array('dd', 'dt', 'li', 'p', 'td', 'th', 'tr'), $exclude); - - while(in_array(end($this->stack)->nodeName, $elements)) { - array_pop($this->stack); - } - } - - private function getElementCategory($node) { - $name = $node->tagName; - if(in_array($name, $this->special)) - return self::SPECIAL; - - elseif(in_array($name, $this->scoping)) - return self::SCOPING; - - elseif(in_array($name, $this->formatting)) - return self::FORMATTING; - - else - return self::PHRASING; - } - - private function clearStackToTableContext($elements) { - /* When the steps above require the UA to clear the stack back to a - table context, it means that the UA must, while the current node is not - a table element or an html element, pop elements from the stack of open - elements. If this causes any elements to be popped from the stack, then - this is a parse error. */ - while(true) { - $node = end($this->stack)->nodeName; - - if(in_array($node, $elements)) { - break; - } else { - array_pop($this->stack); - } - } - } - - private function resetInsertionMode() { - /* 1. Let last be false. */ - $last = false; - $leng = count($this->stack); - - for($n = $leng - 1; $n >= 0; $n--) { - /* 2. Let node be the last node in the stack of open elements. */ - $node = $this->stack[$n]; - - /* 3. If node is the first node in the stack of open elements, then - set last to true. If the element whose innerHTML attribute is being - set is neither a td element nor a th element, then set node to the - element whose innerHTML attribute is being set. (innerHTML case) */ - if($this->stack[0]->isSameNode($node)) { - $last = true; - } - - /* 4. If node is a select element, then switch the insertion mode to - "in select" and abort these steps. (innerHTML case) */ - if($node->nodeName === 'select') { - $this->mode = self::IN_SELECT; - break; - - /* 5. If node is a td or th element, then switch the insertion mode - to "in cell" and abort these steps. */ - } elseif($node->nodeName === 'td' || $node->nodeName === 'th') { - $this->mode = self::IN_CELL; - break; - - /* 6. If node is a tr element, then switch the insertion mode to - "in row" and abort these steps. */ - } elseif($node->nodeName === 'tr') { - $this->mode = self::IN_ROW; - break; - - /* 7. If node is a tbody, thead, or tfoot element, then switch the - insertion mode to "in table body" and abort these steps. */ - } elseif(in_array($node->nodeName, array('tbody', 'thead', 'tfoot'))) { - $this->mode = self::IN_TBODY; - break; - - /* 8. If node is a caption element, then switch the insertion mode - to "in caption" and abort these steps. */ - } elseif($node->nodeName === 'caption') { - $this->mode = self::IN_CAPTION; - break; - - /* 9. If node is a colgroup element, then switch the insertion mode - to "in column group" and abort these steps. (innerHTML case) */ - } elseif($node->nodeName === 'colgroup') { - $this->mode = self::IN_CGROUP; - break; - - /* 10. If node is a table element, then switch the insertion mode - to "in table" and abort these steps. */ - } elseif($node->nodeName === 'table') { - $this->mode = self::IN_TABLE; - break; - - /* 11. If node is a head element, then switch the insertion mode - to "in body" ("in body"! not "in head"!) and abort these steps. - (innerHTML case) */ - } elseif($node->nodeName === 'head') { - $this->mode = self::IN_BODY; - break; - - /* 12. If node is a body element, then switch the insertion mode to - "in body" and abort these steps. */ - } elseif($node->nodeName === 'body') { - $this->mode = self::IN_BODY; - break; - - /* 13. If node is a frameset element, then switch the insertion - mode to "in frameset" and abort these steps. (innerHTML case) */ - } elseif($node->nodeName === 'frameset') { - $this->mode = self::IN_FRAME; - break; - - /* 14. If node is an html element, then: if the head element - pointer is null, switch the insertion mode to "before head", - otherwise, switch the insertion mode to "after head". In either - case, abort these steps. (innerHTML case) */ - } elseif($node->nodeName === 'html') { - $this->mode = ($this->head_pointer === null) - ? self::BEFOR_HEAD - : self::AFTER_HEAD; - - break; - - /* 15. If last is true, then set the insertion mode to "in body" - and abort these steps. (innerHTML case) */ - } elseif($last) { - $this->mode = self::IN_BODY; - break; - } - } - } - - private function closeCell() { - /* If the stack of open elements has a td or th element in table scope, - then act as if an end tag token with that tag name had been seen. */ - foreach(array('td', 'th') as $cell) { - if($this->elementInScope($cell, true)) { - $this->inCell(array( - 'name' => $cell, - 'type' => HTML5::ENDTAG - )); - - break; - } - } - } - - public function save() { - return $this->dom; - } -} -?> diff --git a/libraries/plugins/IDS/vendors/htmlpurifier/HTMLPurifier/PercentEncoder.php b/libraries/plugins/IDS/vendors/htmlpurifier/HTMLPurifier/PercentEncoder.php deleted file mode 100644 index a43c44f..0000000 --- a/libraries/plugins/IDS/vendors/htmlpurifier/HTMLPurifier/PercentEncoder.php +++ /dev/null @@ -1,98 +0,0 @@ -preserve[$i] = true; // digits - for ($i = 65; $i <= 90; $i++) $this->preserve[$i] = true; // upper-case - for ($i = 97; $i <= 122; $i++) $this->preserve[$i] = true; // lower-case - $this->preserve[45] = true; // Dash - - $this->preserve[46] = true; // Period . - $this->preserve[95] = true; // Underscore _ - $this->preserve[126]= true; // Tilde ~ - - // extra letters not to escape - if ($preserve !== false) { - for ($i = 0, $c = strlen($preserve); $i < $c; $i++) { - $this->preserve[ord($preserve[$i])] = true; - } - } - } - - /** - * Our replacement for urlencode, it encodes all non-reserved characters, - * as well as any extra characters that were instructed to be preserved. - * @note - * Assumes that the string has already been normalized, making any - * and all percent escape sequences valid. Percents will not be - * re-escaped, regardless of their status in $preserve - * @param $string String to be encoded - * @return Encoded string. - */ - public function encode($string) { - $ret = ''; - for ($i = 0, $c = strlen($string); $i < $c; $i++) { - if ($string[$i] !== '%' && !isset($this->preserve[$int = ord($string[$i])]) ) { - $ret .= '%' . sprintf('%02X', $int); - } else { - $ret .= $string[$i]; - } - } - return $ret; - } - - /** - * Fix up percent-encoding by decoding unreserved characters and normalizing. - * @warning This function is affected by $preserve, even though the - * usual desired behavior is for this not to preserve those - * characters. Be careful when reusing instances of PercentEncoder! - * @param $string String to normalize - */ - public function normalize($string) { - if ($string == '') return ''; - $parts = explode('%', $string); - $ret = array_shift($parts); - foreach ($parts as $part) { - $length = strlen($part); - if ($length < 2) { - $ret .= '%25' . $part; - continue; - } - $encoding = substr($part, 0, 2); - $text = substr($part, 2); - if (!ctype_xdigit($encoding)) { - $ret .= '%25' . $part; - continue; - } - $int = hexdec($encoding); - if (isset($this->preserve[$int])) { - $ret .= chr($int) . $text; - continue; - } - $encoding = strtoupper($encoding); - $ret .= '%' . $encoding . $text; - } - return $ret; - } - -} - -// vim: et sw=4 sts=4 diff --git a/libraries/plugins/IDS/vendors/htmlpurifier/HTMLPurifier/Printer.php b/libraries/plugins/IDS/vendors/htmlpurifier/HTMLPurifier/Printer.php deleted file mode 100644 index e7eb82e..0000000 --- a/libraries/plugins/IDS/vendors/htmlpurifier/HTMLPurifier/Printer.php +++ /dev/null @@ -1,176 +0,0 @@ -getAll(); - $context = new HTMLPurifier_Context(); - $this->generator = new HTMLPurifier_Generator($config, $context); - } - - /** - * Main function that renders object or aspect of that object - * @note Parameters vary depending on printer - */ - // function render() {} - - /** - * Returns a start tag - * @param $tag Tag name - * @param $attr Attribute array - */ - protected function start($tag, $attr = array()) { - return $this->generator->generateFromToken( - new HTMLPurifier_Token_Start($tag, $attr ? $attr : array()) - ); - } - - /** - * Returns an end teg - * @param $tag Tag name - */ - protected function end($tag) { - return $this->generator->generateFromToken( - new HTMLPurifier_Token_End($tag) - ); - } - - /** - * Prints a complete element with content inside - * @param $tag Tag name - * @param $contents Element contents - * @param $attr Tag attributes - * @param $escape Bool whether or not to escape contents - */ - protected function element($tag, $contents, $attr = array(), $escape = true) { - return $this->start($tag, $attr) . - ($escape ? $this->escape($contents) : $contents) . - $this->end($tag); - } - - protected function elementEmpty($tag, $attr = array()) { - return $this->generator->generateFromToken( - new HTMLPurifier_Token_Empty($tag, $attr) - ); - } - - protected function text($text) { - return $this->generator->generateFromToken( - new HTMLPurifier_Token_Text($text) - ); - } - - /** - * Prints a simple key/value row in a table. - * @param $name Key - * @param $value Value - */ - protected function row($name, $value) { - if (is_bool($value)) $value = $value ? 'On' : 'Off'; - return - $this->start('tr') . "\n" . - $this->element('th', $name) . "\n" . - $this->element('td', $value) . "\n" . - $this->end('tr') - ; - } - - /** - * Escapes a string for HTML output. - * @param $string String to escape - */ - protected function escape($string) { - $string = HTMLPurifier_Encoder::cleanUTF8($string); - $string = htmlspecialchars($string, ENT_COMPAT, 'UTF-8'); - return $string; - } - - /** - * Takes a list of strings and turns them into a single list - * @param $array List of strings - * @param $polite Bool whether or not to add an end before the last - */ - protected function listify($array, $polite = false) { - if (empty($array)) return 'None'; - $ret = ''; - $i = count($array); - foreach ($array as $value) { - $i--; - $ret .= $value; - if ($i > 0 && !($polite && $i == 1)) $ret .= ', '; - if ($polite && $i == 1) $ret .= 'and '; - } - return $ret; - } - - /** - * Retrieves the class of an object without prefixes, as well as metadata - * @param $obj Object to determine class of - * @param $prefix Further prefix to remove - */ - protected function getClass($obj, $sec_prefix = '') { - static $five = null; - if ($five === null) $five = version_compare(PHP_VERSION, '5', '>='); - $prefix = 'HTMLPurifier_' . $sec_prefix; - if (!$five) $prefix = strtolower($prefix); - $class = str_replace($prefix, '', get_class($obj)); - $lclass = strtolower($class); - $class .= '('; - switch ($lclass) { - case 'enum': - $values = array(); - foreach ($obj->valid_values as $value => $bool) { - $values[] = $value; - } - $class .= implode(', ', $values); - break; - case 'css_composite': - $values = array(); - foreach ($obj->defs as $def) { - $values[] = $this->getClass($def, $sec_prefix); - } - $class .= implode(', ', $values); - break; - case 'css_multiple': - $class .= $this->getClass($obj->single, $sec_prefix) . ', '; - $class .= $obj->max; - break; - case 'css_denyelementdecorator': - $class .= $this->getClass($obj->def, $sec_prefix) . ', '; - $class .= $obj->element; - break; - case 'css_importantdecorator': - $class .= $this->getClass($obj->def, $sec_prefix); - if ($obj->allow) $class .= ', !important'; - break; - } - $class .= ')'; - return $class; - } - -} - -// vim: et sw=4 sts=4 diff --git a/libraries/plugins/IDS/vendors/htmlpurifier/HTMLPurifier/Printer/CSSDefinition.php b/libraries/plugins/IDS/vendors/htmlpurifier/HTMLPurifier/Printer/CSSDefinition.php deleted file mode 100644 index 81f9865..0000000 --- a/libraries/plugins/IDS/vendors/htmlpurifier/HTMLPurifier/Printer/CSSDefinition.php +++ /dev/null @@ -1,38 +0,0 @@ -def = $config->getCSSDefinition(); - $ret = ''; - - $ret .= $this->start('div', array('class' => 'HTMLPurifier_Printer')); - $ret .= $this->start('table'); - - $ret .= $this->element('caption', 'Properties ($info)'); - - $ret .= $this->start('thead'); - $ret .= $this->start('tr'); - $ret .= $this->element('th', 'Property', array('class' => 'heavy')); - $ret .= $this->element('th', 'Definition', array('class' => 'heavy', 'style' => 'width:auto;')); - $ret .= $this->end('tr'); - $ret .= $this->end('thead'); - - ksort($this->def->info); - foreach ($this->def->info as $property => $obj) { - $name = $this->getClass($obj, 'AttrDef_'); - $ret .= $this->row($property, $name); - } - - $ret .= $this->end('table'); - $ret .= $this->end('div'); - - return $ret; - } - -} - -// vim: et sw=4 sts=4 diff --git a/libraries/plugins/IDS/vendors/htmlpurifier/HTMLPurifier/Printer/ConfigForm.css b/libraries/plugins/IDS/vendors/htmlpurifier/HTMLPurifier/Printer/ConfigForm.css deleted file mode 100644 index 3ff1a88..0000000 --- a/libraries/plugins/IDS/vendors/htmlpurifier/HTMLPurifier/Printer/ConfigForm.css +++ /dev/null @@ -1,10 +0,0 @@ - -.hp-config {} - -.hp-config tbody th {text-align:right; padding-right:0.5em;} -.hp-config thead, .hp-config .namespace {background:#3C578C; color:#FFF;} -.hp-config .namespace th {text-align:center;} -.hp-config .verbose {display:none;} -.hp-config .controls {text-align:center;} - -/* vim: et sw=4 sts=4 */ diff --git a/libraries/plugins/IDS/vendors/htmlpurifier/HTMLPurifier/Printer/ConfigForm.js b/libraries/plugins/IDS/vendors/htmlpurifier/HTMLPurifier/Printer/ConfigForm.js deleted file mode 100644 index cba00c9..0000000 --- a/libraries/plugins/IDS/vendors/htmlpurifier/HTMLPurifier/Printer/ConfigForm.js +++ /dev/null @@ -1,5 +0,0 @@ -function toggleWriteability(id_of_patient, checked) { - document.getElementById(id_of_patient).disabled = checked; -} - -// vim: et sw=4 sts=4 diff --git a/libraries/plugins/IDS/vendors/htmlpurifier/HTMLPurifier/Printer/ConfigForm.php b/libraries/plugins/IDS/vendors/htmlpurifier/HTMLPurifier/Printer/ConfigForm.php deleted file mode 100644 index 02aa656..0000000 --- a/libraries/plugins/IDS/vendors/htmlpurifier/HTMLPurifier/Printer/ConfigForm.php +++ /dev/null @@ -1,368 +0,0 @@ -docURL = $doc_url; - $this->name = $name; - $this->compress = $compress; - // initialize sub-printers - $this->fields[0] = new HTMLPurifier_Printer_ConfigForm_default(); - $this->fields[HTMLPurifier_VarParser::BOOL] = new HTMLPurifier_Printer_ConfigForm_bool(); - } - - /** - * Sets default column and row size for textareas in sub-printers - * @param $cols Integer columns of textarea, null to use default - * @param $rows Integer rows of textarea, null to use default - */ - public function setTextareaDimensions($cols = null, $rows = null) { - if ($cols) $this->fields['default']->cols = $cols; - if ($rows) $this->fields['default']->rows = $rows; - } - - /** - * Retrieves styling, in case it is not accessible by webserver - */ - public static function getCSS() { - return file_get_contents(HTMLPURIFIER_PREFIX . '/HTMLPurifier/Printer/ConfigForm.css'); - } - - /** - * Retrieves JavaScript, in case it is not accessible by webserver - */ - public static function getJavaScript() { - return file_get_contents(HTMLPURIFIER_PREFIX . '/HTMLPurifier/Printer/ConfigForm.js'); - } - - /** - * Returns HTML output for a configuration form - * @param $config Configuration object of current form state, or an array - * where [0] has an HTML namespace and [1] is being rendered. - * @param $allowed Optional namespace(s) and directives to restrict form to. - */ - public function render($config, $allowed = true, $render_controls = true) { - if (is_array($config) && isset($config[0])) { - $gen_config = $config[0]; - $config = $config[1]; - } else { - $gen_config = $config; - } - - $this->config = $config; - $this->genConfig = $gen_config; - $this->prepareGenerator($gen_config); - - $allowed = HTMLPurifier_Config::getAllowedDirectivesForForm($allowed, $config->def); - $all = array(); - foreach ($allowed as $key) { - list($ns, $directive) = $key; - $all[$ns][$directive] = $config->get($ns .'.'. $directive); - } - - $ret = ''; - $ret .= $this->start('table', array('class' => 'hp-config')); - $ret .= $this->start('thead'); - $ret .= $this->start('tr'); - $ret .= $this->element('th', 'Directive', array('class' => 'hp-directive')); - $ret .= $this->element('th', 'Value', array('class' => 'hp-value')); - $ret .= $this->end('tr'); - $ret .= $this->end('thead'); - foreach ($all as $ns => $directives) { - $ret .= $this->renderNamespace($ns, $directives); - } - if ($render_controls) { - $ret .= $this->start('tbody'); - $ret .= $this->start('tr'); - $ret .= $this->start('td', array('colspan' => 2, 'class' => 'controls')); - $ret .= $this->elementEmpty('input', array('type' => 'submit', 'value' => 'Submit')); - $ret .= '[Reset]'; - $ret .= $this->end('td'); - $ret .= $this->end('tr'); - $ret .= $this->end('tbody'); - } - $ret .= $this->end('table'); - return $ret; - } - - /** - * Renders a single namespace - * @param $ns String namespace name - * @param $directive Associative array of directives to values - */ - protected function renderNamespace($ns, $directives) { - $ret = ''; - $ret .= $this->start('tbody', array('class' => 'namespace')); - $ret .= $this->start('tr'); - $ret .= $this->element('th', $ns, array('colspan' => 2)); - $ret .= $this->end('tr'); - $ret .= $this->end('tbody'); - $ret .= $this->start('tbody'); - foreach ($directives as $directive => $value) { - $ret .= $this->start('tr'); - $ret .= $this->start('th'); - if ($this->docURL) { - $url = str_replace('%s', urlencode("$ns.$directive"), $this->docURL); - $ret .= $this->start('a', array('href' => $url)); - } - $attr = array('for' => "{$this->name}:$ns.$directive"); - - // crop directive name if it's too long - if (!$this->compress || (strlen($directive) < $this->compress)) { - $directive_disp = $directive; - } else { - $directive_disp = substr($directive, 0, $this->compress - 2) . '...'; - $attr['title'] = $directive; - } - - $ret .= $this->element( - 'label', - $directive_disp, - // component printers must create an element with this id - $attr - ); - if ($this->docURL) $ret .= $this->end('a'); - $ret .= $this->end('th'); - - $ret .= $this->start('td'); - $def = $this->config->def->info["$ns.$directive"]; - if (is_int($def)) { - $allow_null = $def < 0; - $type = abs($def); - } else { - $type = $def->type; - $allow_null = isset($def->allow_null); - } - if (!isset($this->fields[$type])) $type = 0; // default - $type_obj = $this->fields[$type]; - if ($allow_null) { - $type_obj = new HTMLPurifier_Printer_ConfigForm_NullDecorator($type_obj); - } - $ret .= $type_obj->render($ns, $directive, $value, $this->name, array($this->genConfig, $this->config)); - $ret .= $this->end('td'); - $ret .= $this->end('tr'); - } - $ret .= $this->end('tbody'); - return $ret; - } - -} - -/** - * Printer decorator for directives that accept null - */ -class HTMLPurifier_Printer_ConfigForm_NullDecorator extends HTMLPurifier_Printer { - /** - * Printer being decorated - */ - protected $obj; - /** - * @param $obj Printer to decorate - */ - public function __construct($obj) { - parent::__construct(); - $this->obj = $obj; - } - public function render($ns, $directive, $value, $name, $config) { - if (is_array($config) && isset($config[0])) { - $gen_config = $config[0]; - $config = $config[1]; - } else { - $gen_config = $config; - } - $this->prepareGenerator($gen_config); - - $ret = ''; - $ret .= $this->start('label', array('for' => "$name:Null_$ns.$directive")); - $ret .= $this->element('span', "$ns.$directive:", array('class' => 'verbose')); - $ret .= $this->text(' Null/Disabled'); - $ret .= $this->end('label'); - $attr = array( - 'type' => 'checkbox', - 'value' => '1', - 'class' => 'null-toggle', - 'name' => "$name"."[Null_$ns.$directive]", - 'id' => "$name:Null_$ns.$directive", - 'onclick' => "toggleWriteability('$name:$ns.$directive',checked)" // INLINE JAVASCRIPT!!!! - ); - if ($this->obj instanceof HTMLPurifier_Printer_ConfigForm_bool) { - // modify inline javascript slightly - $attr['onclick'] = "toggleWriteability('$name:Yes_$ns.$directive',checked);toggleWriteability('$name:No_$ns.$directive',checked)"; - } - if ($value === null) $attr['checked'] = 'checked'; - $ret .= $this->elementEmpty('input', $attr); - $ret .= $this->text(' or '); - $ret .= $this->elementEmpty('br'); - $ret .= $this->obj->render($ns, $directive, $value, $name, array($gen_config, $config)); - return $ret; - } -} - -/** - * Swiss-army knife configuration form field printer - */ -class HTMLPurifier_Printer_ConfigForm_default extends HTMLPurifier_Printer { - public $cols = 18; - public $rows = 5; - public function render($ns, $directive, $value, $name, $config) { - if (is_array($config) && isset($config[0])) { - $gen_config = $config[0]; - $config = $config[1]; - } else { - $gen_config = $config; - } - $this->prepareGenerator($gen_config); - // this should probably be split up a little - $ret = ''; - $def = $config->def->info["$ns.$directive"]; - if (is_int($def)) { - $type = abs($def); - } else { - $type = $def->type; - } - if (is_array($value)) { - switch ($type) { - case HTMLPurifier_VarParser::LOOKUP: - $array = $value; - $value = array(); - foreach ($array as $val => $b) { - $value[] = $val; - } - case HTMLPurifier_VarParser::ALIST: - $value = implode(PHP_EOL, $value); - break; - case HTMLPurifier_VarParser::HASH: - $nvalue = ''; - foreach ($value as $i => $v) { - $nvalue .= "$i:$v" . PHP_EOL; - } - $value = $nvalue; - break; - default: - $value = ''; - } - } - if ($type === HTMLPurifier_VarParser::MIXED) { - return 'Not supported'; - $value = serialize($value); - } - $attr = array( - 'name' => "$name"."[$ns.$directive]", - 'id' => "$name:$ns.$directive" - ); - if ($value === null) $attr['disabled'] = 'disabled'; - if (isset($def->allowed)) { - $ret .= $this->start('select', $attr); - foreach ($def->allowed as $val => $b) { - $attr = array(); - if ($value == $val) $attr['selected'] = 'selected'; - $ret .= $this->element('option', $val, $attr); - } - $ret .= $this->end('select'); - } elseif ( - $type === HTMLPurifier_VarParser::TEXT || - $type === HTMLPurifier_VarParser::ITEXT || - $type === HTMLPurifier_VarParser::ALIST || - $type === HTMLPurifier_VarParser::HASH || - $type === HTMLPurifier_VarParser::LOOKUP - ) { - $attr['cols'] = $this->cols; - $attr['rows'] = $this->rows; - $ret .= $this->start('textarea', $attr); - $ret .= $this->text($value); - $ret .= $this->end('textarea'); - } else { - $attr['value'] = $value; - $attr['type'] = 'text'; - $ret .= $this->elementEmpty('input', $attr); - } - return $ret; - } -} - -/** - * Bool form field printer - */ -class HTMLPurifier_Printer_ConfigForm_bool extends HTMLPurifier_Printer { - public function render($ns, $directive, $value, $name, $config) { - if (is_array($config) && isset($config[0])) { - $gen_config = $config[0]; - $config = $config[1]; - } else { - $gen_config = $config; - } - $this->prepareGenerator($gen_config); - $ret = ''; - $ret .= $this->start('div', array('id' => "$name:$ns.$directive")); - - $ret .= $this->start('label', array('for' => "$name:Yes_$ns.$directive")); - $ret .= $this->element('span', "$ns.$directive:", array('class' => 'verbose')); - $ret .= $this->text(' Yes'); - $ret .= $this->end('label'); - - $attr = array( - 'type' => 'radio', - 'name' => "$name"."[$ns.$directive]", - 'id' => "$name:Yes_$ns.$directive", - 'value' => '1' - ); - if ($value === true) $attr['checked'] = 'checked'; - if ($value === null) $attr['disabled'] = 'disabled'; - $ret .= $this->elementEmpty('input', $attr); - - $ret .= $this->start('label', array('for' => "$name:No_$ns.$directive")); - $ret .= $this->element('span', "$ns.$directive:", array('class' => 'verbose')); - $ret .= $this->text(' No'); - $ret .= $this->end('label'); - - $attr = array( - 'type' => 'radio', - 'name' => "$name"."[$ns.$directive]", - 'id' => "$name:No_$ns.$directive", - 'value' => '0' - ); - if ($value === false) $attr['checked'] = 'checked'; - if ($value === null) $attr['disabled'] = 'disabled'; - $ret .= $this->elementEmpty('input', $attr); - - $ret .= $this->end('div'); - - return $ret; - } -} - -// vim: et sw=4 sts=4 diff --git a/libraries/plugins/IDS/vendors/htmlpurifier/HTMLPurifier/Printer/HTMLDefinition.php b/libraries/plugins/IDS/vendors/htmlpurifier/HTMLPurifier/Printer/HTMLDefinition.php deleted file mode 100644 index 8a8f126..0000000 --- a/libraries/plugins/IDS/vendors/htmlpurifier/HTMLPurifier/Printer/HTMLDefinition.php +++ /dev/null @@ -1,272 +0,0 @@ -config =& $config; - - $this->def = $config->getHTMLDefinition(); - - $ret .= $this->start('div', array('class' => 'HTMLPurifier_Printer')); - - $ret .= $this->renderDoctype(); - $ret .= $this->renderEnvironment(); - $ret .= $this->renderContentSets(); - $ret .= $this->renderInfo(); - - $ret .= $this->end('div'); - - return $ret; - } - - /** - * Renders the Doctype table - */ - protected function renderDoctype() { - $doctype = $this->def->doctype; - $ret = ''; - $ret .= $this->start('table'); - $ret .= $this->element('caption', 'Doctype'); - $ret .= $this->row('Name', $doctype->name); - $ret .= $this->row('XML', $doctype->xml ? 'Yes' : 'No'); - $ret .= $this->row('Default Modules', implode($doctype->modules, ', ')); - $ret .= $this->row('Default Tidy Modules', implode($doctype->tidyModules, ', ')); - $ret .= $this->end('table'); - return $ret; - } - - - /** - * Renders environment table, which is miscellaneous info - */ - protected function renderEnvironment() { - $def = $this->def; - - $ret = ''; - - $ret .= $this->start('table'); - $ret .= $this->element('caption', 'Environment'); - - $ret .= $this->row('Parent of fragment', $def->info_parent); - $ret .= $this->renderChildren($def->info_parent_def->child); - $ret .= $this->row('Block wrap name', $def->info_block_wrapper); - - $ret .= $this->start('tr'); - $ret .= $this->element('th', 'Global attributes'); - $ret .= $this->element('td', $this->listifyAttr($def->info_global_attr),0,0); - $ret .= $this->end('tr'); - - $ret .= $this->start('tr'); - $ret .= $this->element('th', 'Tag transforms'); - $list = array(); - foreach ($def->info_tag_transform as $old => $new) { - $new = $this->getClass($new, 'TagTransform_'); - $list[] = "<$old> with $new"; - } - $ret .= $this->element('td', $this->listify($list)); - $ret .= $this->end('tr'); - - $ret .= $this->start('tr'); - $ret .= $this->element('th', 'Pre-AttrTransform'); - $ret .= $this->element('td', $this->listifyObjectList($def->info_attr_transform_pre)); - $ret .= $this->end('tr'); - - $ret .= $this->start('tr'); - $ret .= $this->element('th', 'Post-AttrTransform'); - $ret .= $this->element('td', $this->listifyObjectList($def->info_attr_transform_post)); - $ret .= $this->end('tr'); - - $ret .= $this->end('table'); - return $ret; - } - - /** - * Renders the Content Sets table - */ - protected function renderContentSets() { - $ret = ''; - $ret .= $this->start('table'); - $ret .= $this->element('caption', 'Content Sets'); - foreach ($this->def->info_content_sets as $name => $lookup) { - $ret .= $this->heavyHeader($name); - $ret .= $this->start('tr'); - $ret .= $this->element('td', $this->listifyTagLookup($lookup)); - $ret .= $this->end('tr'); - } - $ret .= $this->end('table'); - return $ret; - } - - /** - * Renders the Elements ($info) table - */ - protected function renderInfo() { - $ret = ''; - $ret .= $this->start('table'); - $ret .= $this->element('caption', 'Elements ($info)'); - ksort($this->def->info); - $ret .= $this->heavyHeader('Allowed tags', 2); - $ret .= $this->start('tr'); - $ret .= $this->element('td', $this->listifyTagLookup($this->def->info), array('colspan' => 2)); - $ret .= $this->end('tr'); - foreach ($this->def->info as $name => $def) { - $ret .= $this->start('tr'); - $ret .= $this->element('th', "<$name>", array('class'=>'heavy', 'colspan' => 2)); - $ret .= $this->end('tr'); - $ret .= $this->start('tr'); - $ret .= $this->element('th', 'Inline content'); - $ret .= $this->element('td', $def->descendants_are_inline ? 'Yes' : 'No'); - $ret .= $this->end('tr'); - if (!empty($def->excludes)) { - $ret .= $this->start('tr'); - $ret .= $this->element('th', 'Excludes'); - $ret .= $this->element('td', $this->listifyTagLookup($def->excludes)); - $ret .= $this->end('tr'); - } - if (!empty($def->attr_transform_pre)) { - $ret .= $this->start('tr'); - $ret .= $this->element('th', 'Pre-AttrTransform'); - $ret .= $this->element('td', $this->listifyObjectList($def->attr_transform_pre)); - $ret .= $this->end('tr'); - } - if (!empty($def->attr_transform_post)) { - $ret .= $this->start('tr'); - $ret .= $this->element('th', 'Post-AttrTransform'); - $ret .= $this->element('td', $this->listifyObjectList($def->attr_transform_post)); - $ret .= $this->end('tr'); - } - if (!empty($def->auto_close)) { - $ret .= $this->start('tr'); - $ret .= $this->element('th', 'Auto closed by'); - $ret .= $this->element('td', $this->listifyTagLookup($def->auto_close)); - $ret .= $this->end('tr'); - } - $ret .= $this->start('tr'); - $ret .= $this->element('th', 'Allowed attributes'); - $ret .= $this->element('td',$this->listifyAttr($def->attr), array(), 0); - $ret .= $this->end('tr'); - - if (!empty($def->required_attr)) { - $ret .= $this->row('Required attributes', $this->listify($def->required_attr)); - } - - $ret .= $this->renderChildren($def->child); - } - $ret .= $this->end('table'); - return $ret; - } - - /** - * Renders a row describing the allowed children of an element - * @param $def HTMLPurifier_ChildDef of pertinent element - */ - protected function renderChildren($def) { - $context = new HTMLPurifier_Context(); - $ret = ''; - $ret .= $this->start('tr'); - $elements = array(); - $attr = array(); - if (isset($def->elements)) { - if ($def->type == 'strictblockquote') { - $def->validateChildren(array(), $this->config, $context); - } - $elements = $def->elements; - } - if ($def->type == 'chameleon') { - $attr['rowspan'] = 2; - } elseif ($def->type == 'empty') { - $elements = array(); - } elseif ($def->type == 'table') { - $elements = array_flip(array('col', 'caption', 'colgroup', 'thead', - 'tfoot', 'tbody', 'tr')); - } - $ret .= $this->element('th', 'Allowed children', $attr); - - if ($def->type == 'chameleon') { - - $ret .= $this->element('td', - 'Block: ' . - $this->escape($this->listifyTagLookup($def->block->elements)),0,0); - $ret .= $this->end('tr'); - $ret .= $this->start('tr'); - $ret .= $this->element('td', - 'Inline: ' . - $this->escape($this->listifyTagLookup($def->inline->elements)),0,0); - - } elseif ($def->type == 'custom') { - - $ret .= $this->element('td', ''.ucfirst($def->type).': ' . - $def->dtd_regex); - - } else { - $ret .= $this->element('td', - ''.ucfirst($def->type).': ' . - $this->escape($this->listifyTagLookup($elements)),0,0); - } - $ret .= $this->end('tr'); - return $ret; - } - - /** - * Listifies a tag lookup table. - * @param $array Tag lookup array in form of array('tagname' => true) - */ - protected function listifyTagLookup($array) { - ksort($array); - $list = array(); - foreach ($array as $name => $discard) { - if ($name !== '#PCDATA' && !isset($this->def->info[$name])) continue; - $list[] = $name; - } - return $this->listify($list); - } - - /** - * Listifies a list of objects by retrieving class names and internal state - * @param $array List of objects - * @todo Also add information about internal state - */ - protected function listifyObjectList($array) { - ksort($array); - $list = array(); - foreach ($array as $discard => $obj) { - $list[] = $this->getClass($obj, 'AttrTransform_'); - } - return $this->listify($list); - } - - /** - * Listifies a hash of attributes to AttrDef classes - * @param $array Array hash in form of array('attrname' => HTMLPurifier_AttrDef) - */ - protected function listifyAttr($array) { - ksort($array); - $list = array(); - foreach ($array as $name => $obj) { - if ($obj === false) continue; - $list[] = "$name = " . $this->getClass($obj, 'AttrDef_') . ''; - } - return $this->listify($list); - } - - /** - * Creates a heavy header row - */ - protected function heavyHeader($text, $num = 1) { - $ret = ''; - $ret .= $this->start('tr'); - $ret .= $this->element('th', $text, array('colspan' => $num, 'class' => 'heavy')); - $ret .= $this->end('tr'); - return $ret; - } - -} - -// vim: et sw=4 sts=4 diff --git a/libraries/plugins/IDS/vendors/htmlpurifier/HTMLPurifier/PropertyList.php b/libraries/plugins/IDS/vendors/htmlpurifier/HTMLPurifier/PropertyList.php deleted file mode 100644 index 2b99fb7..0000000 --- a/libraries/plugins/IDS/vendors/htmlpurifier/HTMLPurifier/PropertyList.php +++ /dev/null @@ -1,86 +0,0 @@ -parent = $parent; - } - - /** - * Recursively retrieves the value for a key - */ - public function get($name) { - if ($this->has($name)) return $this->data[$name]; - // possible performance bottleneck, convert to iterative if necessary - if ($this->parent) return $this->parent->get($name); - throw new HTMLPurifier_Exception("Key '$name' not found"); - } - - /** - * Sets the value of a key, for this plist - */ - public function set($name, $value) { - $this->data[$name] = $value; - } - - /** - * Returns true if a given key exists - */ - public function has($name) { - return array_key_exists($name, $this->data); - } - - /** - * Resets a value to the value of it's parent, usually the default. If - * no value is specified, the entire plist is reset. - */ - public function reset($name = null) { - if ($name == null) $this->data = array(); - else unset($this->data[$name]); - } - - /** - * Squashes this property list and all of its property lists into a single - * array, and returns the array. This value is cached by default. - * @param $force If true, ignores the cache and regenerates the array. - */ - public function squash($force = false) { - if ($this->cache !== null && !$force) return $this->cache; - if ($this->parent) { - return $this->cache = array_merge($this->parent->squash($force), $this->data); - } else { - return $this->cache = $this->data; - } - } - - /** - * Returns the parent plist. - */ - public function getParent() { - return $this->parent; - } - - /** - * Sets the parent plist. - */ - public function setParent($plist) { - $this->parent = $plist; - } -} - -// vim: et sw=4 sts=4 diff --git a/libraries/plugins/IDS/vendors/htmlpurifier/HTMLPurifier/PropertyListIterator.php b/libraries/plugins/IDS/vendors/htmlpurifier/HTMLPurifier/PropertyListIterator.php deleted file mode 100644 index 8f25044..0000000 --- a/libraries/plugins/IDS/vendors/htmlpurifier/HTMLPurifier/PropertyListIterator.php +++ /dev/null @@ -1,32 +0,0 @@ -l = strlen($filter); - $this->filter = $filter; - } - - public function accept() { - $key = $this->getInnerIterator()->key(); - if( strncmp($key, $this->filter, $this->l) !== 0 ) { - return false; - } - return true; - } - -} - -// vim: et sw=4 sts=4 diff --git a/libraries/plugins/IDS/vendors/htmlpurifier/HTMLPurifier/Strategy.php b/libraries/plugins/IDS/vendors/htmlpurifier/HTMLPurifier/Strategy.php deleted file mode 100644 index 2462865..0000000 --- a/libraries/plugins/IDS/vendors/htmlpurifier/HTMLPurifier/Strategy.php +++ /dev/null @@ -1,26 +0,0 @@ -strategies as $strategy) { - $tokens = $strategy->execute($tokens, $config, $context); - } - return $tokens; - } - -} - -// vim: et sw=4 sts=4 diff --git a/libraries/plugins/IDS/vendors/htmlpurifier/HTMLPurifier/Strategy/Core.php b/libraries/plugins/IDS/vendors/htmlpurifier/HTMLPurifier/Strategy/Core.php deleted file mode 100644 index d90e158..0000000 --- a/libraries/plugins/IDS/vendors/htmlpurifier/HTMLPurifier/Strategy/Core.php +++ /dev/null @@ -1,18 +0,0 @@ -strategies[] = new HTMLPurifier_Strategy_RemoveForeignElements(); - $this->strategies[] = new HTMLPurifier_Strategy_MakeWellFormed(); - $this->strategies[] = new HTMLPurifier_Strategy_FixNesting(); - $this->strategies[] = new HTMLPurifier_Strategy_ValidateAttributes(); - } - -} - -// vim: et sw=4 sts=4 diff --git a/libraries/plugins/IDS/vendors/htmlpurifier/HTMLPurifier/Strategy/FixNesting.php b/libraries/plugins/IDS/vendors/htmlpurifier/HTMLPurifier/Strategy/FixNesting.php deleted file mode 100644 index f818023..0000000 --- a/libraries/plugins/IDS/vendors/htmlpurifier/HTMLPurifier/Strategy/FixNesting.php +++ /dev/null @@ -1,328 +0,0 @@ -getHTMLDefinition(); - - // insert implicit "parent" node, will be removed at end. - // DEFINITION CALL - $parent_name = $definition->info_parent; - array_unshift($tokens, new HTMLPurifier_Token_Start($parent_name)); - $tokens[] = new HTMLPurifier_Token_End($parent_name); - - // setup the context variable 'IsInline', for chameleon processing - // is 'false' when we are not inline, 'true' when it must always - // be inline, and an integer when it is inline for a certain - // branch of the document tree - $is_inline = $definition->info_parent_def->descendants_are_inline; - $context->register('IsInline', $is_inline); - - // setup error collector - $e =& $context->get('ErrorCollector', true); - - //####################################################################// - // Loop initialization - - // stack that contains the indexes of all parents, - // $stack[count($stack)-1] being the current parent - $stack = array(); - - // stack that contains all elements that are excluded - // it is organized by parent elements, similar to $stack, - // but it is only populated when an element with exclusions is - // processed, i.e. there won't be empty exclusions. - $exclude_stack = array(); - - // variable that contains the start token while we are processing - // nodes. This enables error reporting to do its job - $start_token = false; - $context->register('CurrentToken', $start_token); - - //####################################################################// - // Loop - - // iterate through all start nodes. Determining the start node - // is complicated so it has been omitted from the loop construct - for ($i = 0, $size = count($tokens) ; $i < $size; ) { - - //################################################################// - // Gather information on children - - // child token accumulator - $child_tokens = array(); - - // scroll to the end of this node, report number, and collect - // all children - for ($j = $i, $depth = 0; ; $j++) { - if ($tokens[$j] instanceof HTMLPurifier_Token_Start) { - $depth++; - // skip token assignment on first iteration, this is the - // token we currently are on - if ($depth == 1) continue; - } elseif ($tokens[$j] instanceof HTMLPurifier_Token_End) { - $depth--; - // skip token assignment on last iteration, this is the - // end token of the token we're currently on - if ($depth == 0) break; - } - $child_tokens[] = $tokens[$j]; - } - - // $i is index of start token - // $j is index of end token - - $start_token = $tokens[$i]; // to make token available via CurrentToken - - //################################################################// - // Gather information on parent - - // calculate parent information - if ($count = count($stack)) { - $parent_index = $stack[$count-1]; - $parent_name = $tokens[$parent_index]->name; - if ($parent_index == 0) { - $parent_def = $definition->info_parent_def; - } else { - $parent_def = $definition->info[$parent_name]; - } - } else { - // processing as if the parent were the "root" node - // unknown info, it won't be used anyway, in the future, - // we may want to enforce one element only (this is - // necessary for HTML Purifier to clean entire documents - $parent_index = $parent_name = $parent_def = null; - } - - // calculate context - if ($is_inline === false) { - // check if conditions make it inline - if (!empty($parent_def) && $parent_def->descendants_are_inline) { - $is_inline = $count - 1; - } - } else { - // check if we're out of inline - if ($count === $is_inline) { - $is_inline = false; - } - } - - //################################################################// - // Determine whether element is explicitly excluded SGML-style - - // determine whether or not element is excluded by checking all - // parent exclusions. The array should not be very large, two - // elements at most. - $excluded = false; - if (!empty($exclude_stack)) { - foreach ($exclude_stack as $lookup) { - if (isset($lookup[$tokens[$i]->name])) { - $excluded = true; - // no need to continue processing - break; - } - } - } - - //################################################################// - // Perform child validation - - if ($excluded) { - // there is an exclusion, remove the entire node - $result = false; - $excludes = array(); // not used, but good to initialize anyway - } else { - // DEFINITION CALL - if ($i === 0) { - // special processing for the first node - $def = $definition->info_parent_def; - } else { - $def = $definition->info[$tokens[$i]->name]; - - } - - if (!empty($def->child)) { - // have DTD child def validate children - $result = $def->child->validateChildren( - $child_tokens, $config, $context); - } else { - // weird, no child definition, get rid of everything - $result = false; - } - - // determine whether or not this element has any exclusions - $excludes = $def->excludes; - } - - // $result is now a bool or array - - //################################################################// - // Process result by interpreting $result - - if ($result === true || $child_tokens === $result) { - // leave the node as is - - // register start token as a parental node start - $stack[] = $i; - - // register exclusions if there are any - if (!empty($excludes)) $exclude_stack[] = $excludes; - - // move cursor to next possible start node - $i++; - - } elseif($result === false) { - // remove entire node - - if ($e) { - if ($excluded) { - $e->send(E_ERROR, 'Strategy_FixNesting: Node excluded'); - } else { - $e->send(E_ERROR, 'Strategy_FixNesting: Node removed'); - } - } - - // calculate length of inner tokens and current tokens - $length = $j - $i + 1; - - // perform removal - array_splice($tokens, $i, $length); - - // update size - $size -= $length; - - // there is no start token to register, - // current node is now the next possible start node - // unless it turns out that we need to do a double-check - - // this is a rought heuristic that covers 100% of HTML's - // cases and 99% of all other cases. A child definition - // that would be tricked by this would be something like: - // ( | a b c) where it's all or nothing. Fortunately, - // our current implementation claims that that case would - // not allow empty, even if it did - if (!$parent_def->child->allow_empty) { - // we need to do a double-check - $i = $parent_index; - array_pop($stack); - } - - // PROJECTED OPTIMIZATION: Process all children elements before - // reprocessing parent node. - - } else { - // replace node with $result - - // calculate length of inner tokens - $length = $j - $i - 1; - - if ($e) { - if (empty($result) && $length) { - $e->send(E_ERROR, 'Strategy_FixNesting: Node contents removed'); - } else { - $e->send(E_WARNING, 'Strategy_FixNesting: Node reorganized'); - } - } - - // perform replacement - array_splice($tokens, $i + 1, $length, $result); - - // update size - $size -= $length; - $size += count($result); - - // register start token as a parental node start - $stack[] = $i; - - // register exclusions if there are any - if (!empty($excludes)) $exclude_stack[] = $excludes; - - // move cursor to next possible start node - $i++; - - } - - //################################################################// - // Scroll to next start node - - // We assume, at this point, that $i is the index of the token - // that is the first possible new start point for a node. - - // Test if the token indeed is a start tag, if not, move forward - // and test again. - $size = count($tokens); - while ($i < $size and !$tokens[$i] instanceof HTMLPurifier_Token_Start) { - if ($tokens[$i] instanceof HTMLPurifier_Token_End) { - // pop a token index off the stack if we ended a node - array_pop($stack); - // pop an exclusion lookup off exclusion stack if - // we ended node and that node had exclusions - if ($i == 0 || $i == $size - 1) { - // use specialized var if it's the super-parent - $s_excludes = $definition->info_parent_def->excludes; - } else { - $s_excludes = $definition->info[$tokens[$i]->name]->excludes; - } - if ($s_excludes) { - array_pop($exclude_stack); - } - } - $i++; - } - - } - - //####################################################################// - // Post-processing - - // remove implicit parent tokens at the beginning and end - array_shift($tokens); - array_pop($tokens); - - // remove context variables - $context->destroy('IsInline'); - $context->destroy('CurrentToken'); - - //####################################################################// - // Return - - return $tokens; - - } - -} - -// vim: et sw=4 sts=4 diff --git a/libraries/plugins/IDS/vendors/htmlpurifier/HTMLPurifier/Strategy/MakeWellFormed.php b/libraries/plugins/IDS/vendors/htmlpurifier/HTMLPurifier/Strategy/MakeWellFormed.php deleted file mode 100644 index c7aa1bb..0000000 --- a/libraries/plugins/IDS/vendors/htmlpurifier/HTMLPurifier/Strategy/MakeWellFormed.php +++ /dev/null @@ -1,532 +0,0 @@ -getHTMLDefinition(); - - // local variables - $generator = new HTMLPurifier_Generator($config, $context); - $escape_invalid_tags = $config->get('Core.EscapeInvalidTags'); - // used for autoclose early abortion - $global_parent_allowed_elements = array(); - if (isset($definition->info[$definition->info_parent])) { - // may be unset under testing circumstances - $global_parent_allowed_elements = $definition->info[$definition->info_parent]->child->getAllowedElements($config); - } - $e = $context->get('ErrorCollector', true); - $t = false; // token index - $i = false; // injector index - $token = false; // the current token - $reprocess = false; // whether or not to reprocess the same token - $stack = array(); - - // member variables - $this->stack =& $stack; - $this->t =& $t; - $this->tokens =& $tokens; - $this->config = $config; - $this->context = $context; - - // context variables - $context->register('CurrentNesting', $stack); - $context->register('InputIndex', $t); - $context->register('InputTokens', $tokens); - $context->register('CurrentToken', $token); - - // -- begin INJECTOR -- - - $this->injectors = array(); - - $injectors = $config->getBatch('AutoFormat'); - $def_injectors = $definition->info_injector; - $custom_injectors = $injectors['Custom']; - unset($injectors['Custom']); // special case - foreach ($injectors as $injector => $b) { - // XXX: Fix with a legitimate lookup table of enabled filters - if (strpos($injector, '.') !== false) continue; - $injector = "HTMLPurifier_Injector_$injector"; - if (!$b) continue; - $this->injectors[] = new $injector; - } - foreach ($def_injectors as $injector) { - // assumed to be objects - $this->injectors[] = $injector; - } - foreach ($custom_injectors as $injector) { - if (!$injector) continue; - if (is_string($injector)) { - $injector = "HTMLPurifier_Injector_$injector"; - $injector = new $injector; - } - $this->injectors[] = $injector; - } - - // give the injectors references to the definition and context - // variables for performance reasons - foreach ($this->injectors as $ix => $injector) { - $error = $injector->prepare($config, $context); - if (!$error) continue; - array_splice($this->injectors, $ix, 1); // rm the injector - trigger_error("Cannot enable {$injector->name} injector because $error is not allowed", E_USER_WARNING); - } - - // -- end INJECTOR -- - - // a note on reprocessing: - // In order to reduce code duplication, whenever some code needs - // to make HTML changes in order to make things "correct", the - // new HTML gets sent through the purifier, regardless of its - // status. This means that if we add a start token, because it - // was totally necessary, we don't have to update nesting; we just - // punt ($reprocess = true; continue;) and it does that for us. - - // isset is in loop because $tokens size changes during loop exec - for ( - $t = 0; - $t == 0 || isset($tokens[$t - 1]); - // only increment if we don't need to reprocess - $reprocess ? $reprocess = false : $t++ - ) { - - // check for a rewind - if (is_int($i) && $i >= 0) { - // possibility: disable rewinding if the current token has a - // rewind set on it already. This would offer protection from - // infinite loop, but might hinder some advanced rewinding. - $rewind_to = $this->injectors[$i]->getRewind(); - if (is_int($rewind_to) && $rewind_to < $t) { - if ($rewind_to < 0) $rewind_to = 0; - while ($t > $rewind_to) { - $t--; - $prev = $tokens[$t]; - // indicate that other injectors should not process this token, - // but we need to reprocess it - unset($prev->skip[$i]); - $prev->rewind = $i; - if ($prev instanceof HTMLPurifier_Token_Start) array_pop($this->stack); - elseif ($prev instanceof HTMLPurifier_Token_End) $this->stack[] = $prev->start; - } - } - $i = false; - } - - // handle case of document end - if (!isset($tokens[$t])) { - // kill processing if stack is empty - if (empty($this->stack)) break; - - // peek - $top_nesting = array_pop($this->stack); - $this->stack[] = $top_nesting; - - // send error [TagClosedSuppress] - if ($e && !isset($top_nesting->armor['MakeWellFormed_TagClosedError'])) { - $e->send(E_NOTICE, 'Strategy_MakeWellFormed: Tag closed by document end', $top_nesting); - } - - // append, don't splice, since this is the end - $tokens[] = new HTMLPurifier_Token_End($top_nesting->name); - - // punt! - $reprocess = true; - continue; - } - - $token = $tokens[$t]; - - //echo '
    '; printTokens($tokens, $t); printTokens($this->stack); - //flush(); - - // quick-check: if it's not a tag, no need to process - if (empty($token->is_tag)) { - if ($token instanceof HTMLPurifier_Token_Text) { - foreach ($this->injectors as $i => $injector) { - if (isset($token->skip[$i])) continue; - if ($token->rewind !== null && $token->rewind !== $i) continue; - $injector->handleText($token); - $this->processToken($token, $i); - $reprocess = true; - break; - } - } - // another possibility is a comment - continue; - } - - if (isset($definition->info[$token->name])) { - $type = $definition->info[$token->name]->child->type; - } else { - $type = false; // Type is unknown, treat accordingly - } - - // quick tag checks: anything that's *not* an end tag - $ok = false; - if ($type === 'empty' && $token instanceof HTMLPurifier_Token_Start) { - // claims to be a start tag but is empty - $token = new HTMLPurifier_Token_Empty($token->name, $token->attr, $token->line, $token->col, $token->armor); - $ok = true; - } elseif ($type && $type !== 'empty' && $token instanceof HTMLPurifier_Token_Empty) { - // claims to be empty but really is a start tag - $this->swap(new HTMLPurifier_Token_End($token->name)); - $this->insertBefore(new HTMLPurifier_Token_Start($token->name, $token->attr, $token->line, $token->col, $token->armor)); - // punt (since we had to modify the input stream in a non-trivial way) - $reprocess = true; - continue; - } elseif ($token instanceof HTMLPurifier_Token_Empty) { - // real empty token - $ok = true; - } elseif ($token instanceof HTMLPurifier_Token_Start) { - // start tag - - // ...unless they also have to close their parent - if (!empty($this->stack)) { - - // Performance note: you might think that it's rather - // inefficient, recalculating the autoclose information - // for every tag that a token closes (since when we - // do an autoclose, we push a new token into the - // stream and then /process/ that, before - // re-processing this token.) But this is - // necessary, because an injector can make an - // arbitrary transformations to the autoclosing - // tokens we introduce, so things may have changed - // in the meantime. Also, doing the inefficient thing is - // "easy" to reason about (for certain perverse definitions - // of "easy") - - $parent = array_pop($this->stack); - $this->stack[] = $parent; - - if (isset($definition->info[$parent->name])) { - $elements = $definition->info[$parent->name]->child->getAllowedElements($config); - $autoclose = !isset($elements[$token->name]); - } else { - $autoclose = false; - } - - if ($autoclose && $definition->info[$token->name]->wrap) { - // Check if an element can be wrapped by another - // element to make it valid in a context (for - // example,
        needs a
      • in between) - $wrapname = $definition->info[$token->name]->wrap; - $wrapdef = $definition->info[$wrapname]; - $elements = $wrapdef->child->getAllowedElements($config); - $parent_elements = $definition->info[$parent->name]->child->getAllowedElements($config); - if (isset($elements[$token->name]) && isset($parent_elements[$wrapname])) { - $newtoken = new HTMLPurifier_Token_Start($wrapname); - $this->insertBefore($newtoken); - $reprocess = true; - continue; - } - } - - $carryover = false; - if ($autoclose && $definition->info[$parent->name]->formatting) { - $carryover = true; - } - - if ($autoclose) { - // check if this autoclose is doomed to fail - // (this rechecks $parent, which his harmless) - $autoclose_ok = isset($global_parent_allowed_elements[$token->name]); - if (!$autoclose_ok) { - foreach ($this->stack as $ancestor) { - $elements = $definition->info[$ancestor->name]->child->getAllowedElements($config); - if (isset($elements[$token->name])) { - $autoclose_ok = true; - break; - } - if ($definition->info[$token->name]->wrap) { - $wrapname = $definition->info[$token->name]->wrap; - $wrapdef = $definition->info[$wrapname]; - $wrap_elements = $wrapdef->child->getAllowedElements($config); - if (isset($wrap_elements[$token->name]) && isset($elements[$wrapname])) { - $autoclose_ok = true; - break; - } - } - } - } - if ($autoclose_ok) { - // errors need to be updated - $new_token = new HTMLPurifier_Token_End($parent->name); - $new_token->start = $parent; - if ($carryover) { - $element = clone $parent; - // [TagClosedAuto] - $element->armor['MakeWellFormed_TagClosedError'] = true; - $element->carryover = true; - $this->processToken(array($new_token, $token, $element)); - } else { - $this->insertBefore($new_token); - } - // [TagClosedSuppress] - if ($e && !isset($parent->armor['MakeWellFormed_TagClosedError'])) { - if (!$carryover) { - $e->send(E_NOTICE, 'Strategy_MakeWellFormed: Tag auto closed', $parent); - } else { - $e->send(E_NOTICE, 'Strategy_MakeWellFormed: Tag carryover', $parent); - } - } - } else { - $this->remove(); - } - $reprocess = true; - continue; - } - - } - $ok = true; - } - - if ($ok) { - foreach ($this->injectors as $i => $injector) { - if (isset($token->skip[$i])) continue; - if ($token->rewind !== null && $token->rewind !== $i) continue; - $injector->handleElement($token); - $this->processToken($token, $i); - $reprocess = true; - break; - } - if (!$reprocess) { - // ah, nothing interesting happened; do normal processing - $this->swap($token); - if ($token instanceof HTMLPurifier_Token_Start) { - $this->stack[] = $token; - } elseif ($token instanceof HTMLPurifier_Token_End) { - throw new HTMLPurifier_Exception('Improper handling of end tag in start code; possible error in MakeWellFormed'); - } - } - continue; - } - - // sanity check: we should be dealing with a closing tag - if (!$token instanceof HTMLPurifier_Token_End) { - throw new HTMLPurifier_Exception('Unaccounted for tag token in input stream, bug in HTML Purifier'); - } - - // make sure that we have something open - if (empty($this->stack)) { - if ($escape_invalid_tags) { - if ($e) $e->send(E_WARNING, 'Strategy_MakeWellFormed: Unnecessary end tag to text'); - $this->swap(new HTMLPurifier_Token_Text( - $generator->generateFromToken($token) - )); - } else { - $this->remove(); - if ($e) $e->send(E_WARNING, 'Strategy_MakeWellFormed: Unnecessary end tag removed'); - } - $reprocess = true; - continue; - } - - // first, check for the simplest case: everything closes neatly. - // Eventually, everything passes through here; if there are problems - // we modify the input stream accordingly and then punt, so that - // the tokens get processed again. - $current_parent = array_pop($this->stack); - if ($current_parent->name == $token->name) { - $token->start = $current_parent; - foreach ($this->injectors as $i => $injector) { - if (isset($token->skip[$i])) continue; - if ($token->rewind !== null && $token->rewind !== $i) continue; - $injector->handleEnd($token); - $this->processToken($token, $i); - $this->stack[] = $current_parent; - $reprocess = true; - break; - } - continue; - } - - // okay, so we're trying to close the wrong tag - - // undo the pop previous pop - $this->stack[] = $current_parent; - - // scroll back the entire nest, trying to find our tag. - // (feature could be to specify how far you'd like to go) - $size = count($this->stack); - // -2 because -1 is the last element, but we already checked that - $skipped_tags = false; - for ($j = $size - 2; $j >= 0; $j--) { - if ($this->stack[$j]->name == $token->name) { - $skipped_tags = array_slice($this->stack, $j); - break; - } - } - - // we didn't find the tag, so remove - if ($skipped_tags === false) { - if ($escape_invalid_tags) { - $this->swap(new HTMLPurifier_Token_Text( - $generator->generateFromToken($token) - )); - if ($e) $e->send(E_WARNING, 'Strategy_MakeWellFormed: Stray end tag to text'); - } else { - $this->remove(); - if ($e) $e->send(E_WARNING, 'Strategy_MakeWellFormed: Stray end tag removed'); - } - $reprocess = true; - continue; - } - - // do errors, in REVERSE $j order: a,b,c with - $c = count($skipped_tags); - if ($e) { - for ($j = $c - 1; $j > 0; $j--) { - // notice we exclude $j == 0, i.e. the current ending tag, from - // the errors... [TagClosedSuppress] - if (!isset($skipped_tags[$j]->armor['MakeWellFormed_TagClosedError'])) { - $e->send(E_NOTICE, 'Strategy_MakeWellFormed: Tag closed by element end', $skipped_tags[$j]); - } - } - } - - // insert tags, in FORWARD $j order: c,b,a with - $replace = array($token); - for ($j = 1; $j < $c; $j++) { - // ...as well as from the insertions - $new_token = new HTMLPurifier_Token_End($skipped_tags[$j]->name); - $new_token->start = $skipped_tags[$j]; - array_unshift($replace, $new_token); - if (isset($definition->info[$new_token->name]) && $definition->info[$new_token->name]->formatting) { - // [TagClosedAuto] - $element = clone $skipped_tags[$j]; - $element->carryover = true; - $element->armor['MakeWellFormed_TagClosedError'] = true; - $replace[] = $element; - } - } - $this->processToken($replace); - $reprocess = true; - continue; - } - - $context->destroy('CurrentNesting'); - $context->destroy('InputTokens'); - $context->destroy('InputIndex'); - $context->destroy('CurrentToken'); - - unset($this->injectors, $this->stack, $this->tokens, $this->t); - return $tokens; - } - - /** - * Processes arbitrary token values for complicated substitution patterns. - * In general: - * - * If $token is an array, it is a list of tokens to substitute for the - * current token. These tokens then get individually processed. If there - * is a leading integer in the list, that integer determines how many - * tokens from the stream should be removed. - * - * If $token is a regular token, it is swapped with the current token. - * - * If $token is false, the current token is deleted. - * - * If $token is an integer, that number of tokens (with the first token - * being the current one) will be deleted. - * - * @param $token Token substitution value - * @param $injector Injector that performed the substitution; default is if - * this is not an injector related operation. - */ - protected function processToken($token, $injector = -1) { - - // normalize forms of token - if (is_object($token)) $token = array(1, $token); - if (is_int($token)) $token = array($token); - if ($token === false) $token = array(1); - if (!is_array($token)) throw new HTMLPurifier_Exception('Invalid token type from injector'); - if (!is_int($token[0])) array_unshift($token, 1); - if ($token[0] === 0) throw new HTMLPurifier_Exception('Deleting zero tokens is not valid'); - - // $token is now an array with the following form: - // array(number nodes to delete, new node 1, new node 2, ...) - - $delete = array_shift($token); - $old = array_splice($this->tokens, $this->t, $delete, $token); - - if ($injector > -1) { - // determine appropriate skips - $oldskip = isset($old[0]) ? $old[0]->skip : array(); - foreach ($token as $object) { - $object->skip = $oldskip; - $object->skip[$injector] = true; - } - } - - } - - /** - * Inserts a token before the current token. Cursor now points to - * this token. You must reprocess after this. - */ - private function insertBefore($token) { - array_splice($this->tokens, $this->t, 0, array($token)); - } - - /** - * Removes current token. Cursor now points to new token occupying previously - * occupied space. You must reprocess after this. - */ - private function remove() { - array_splice($this->tokens, $this->t, 1); - } - - /** - * Swap current token with new token. Cursor points to new token (no - * change). You must reprocess after this. - */ - private function swap($token) { - $this->tokens[$this->t] = $token; - } - -} - -// vim: et sw=4 sts=4 diff --git a/libraries/plugins/IDS/vendors/htmlpurifier/HTMLPurifier/Strategy/RemoveForeignElements.php b/libraries/plugins/IDS/vendors/htmlpurifier/HTMLPurifier/Strategy/RemoveForeignElements.php deleted file mode 100644 index cf3a33e..0000000 --- a/libraries/plugins/IDS/vendors/htmlpurifier/HTMLPurifier/Strategy/RemoveForeignElements.php +++ /dev/null @@ -1,171 +0,0 @@ -getHTMLDefinition(); - $generator = new HTMLPurifier_Generator($config, $context); - $result = array(); - - $escape_invalid_tags = $config->get('Core.EscapeInvalidTags'); - $remove_invalid_img = $config->get('Core.RemoveInvalidImg'); - - // currently only used to determine if comments should be kept - $trusted = $config->get('HTML.Trusted'); - - $remove_script_contents = $config->get('Core.RemoveScriptContents'); - $hidden_elements = $config->get('Core.HiddenElements'); - - // remove script contents compatibility - if ($remove_script_contents === true) { - $hidden_elements['script'] = true; - } elseif ($remove_script_contents === false && isset($hidden_elements['script'])) { - unset($hidden_elements['script']); - } - - $attr_validator = new HTMLPurifier_AttrValidator(); - - // removes tokens until it reaches a closing tag with its value - $remove_until = false; - - // converts comments into text tokens when this is equal to a tag name - $textify_comments = false; - - $token = false; - $context->register('CurrentToken', $token); - - $e = false; - if ($config->get('Core.CollectErrors')) { - $e =& $context->get('ErrorCollector'); - } - - foreach($tokens as $token) { - if ($remove_until) { - if (empty($token->is_tag) || $token->name !== $remove_until) { - continue; - } - } - if (!empty( $token->is_tag )) { - // DEFINITION CALL - - // before any processing, try to transform the element - if ( - isset($definition->info_tag_transform[$token->name]) - ) { - $original_name = $token->name; - // there is a transformation for this tag - // DEFINITION CALL - $token = $definition-> - info_tag_transform[$token->name]-> - transform($token, $config, $context); - if ($e) $e->send(E_NOTICE, 'Strategy_RemoveForeignElements: Tag transform', $original_name); - } - - if (isset($definition->info[$token->name])) { - - // mostly everything's good, but - // we need to make sure required attributes are in order - if ( - ($token instanceof HTMLPurifier_Token_Start || $token instanceof HTMLPurifier_Token_Empty) && - $definition->info[$token->name]->required_attr && - ($token->name != 'img' || $remove_invalid_img) // ensure config option still works - ) { - $attr_validator->validateToken($token, $config, $context); - $ok = true; - foreach ($definition->info[$token->name]->required_attr as $name) { - if (!isset($token->attr[$name])) { - $ok = false; - break; - } - } - if (!$ok) { - if ($e) $e->send(E_ERROR, 'Strategy_RemoveForeignElements: Missing required attribute', $name); - continue; - } - $token->armor['ValidateAttributes'] = true; - } - - if (isset($hidden_elements[$token->name]) && $token instanceof HTMLPurifier_Token_Start) { - $textify_comments = $token->name; - } elseif ($token->name === $textify_comments && $token instanceof HTMLPurifier_Token_End) { - $textify_comments = false; - } - - } elseif ($escape_invalid_tags) { - // invalid tag, generate HTML representation and insert in - if ($e) $e->send(E_WARNING, 'Strategy_RemoveForeignElements: Foreign element to text'); - $token = new HTMLPurifier_Token_Text( - $generator->generateFromToken($token) - ); - } else { - // check if we need to destroy all of the tag's children - // CAN BE GENERICIZED - if (isset($hidden_elements[$token->name])) { - if ($token instanceof HTMLPurifier_Token_Start) { - $remove_until = $token->name; - } elseif ($token instanceof HTMLPurifier_Token_Empty) { - // do nothing: we're still looking - } else { - $remove_until = false; - } - if ($e) $e->send(E_ERROR, 'Strategy_RemoveForeignElements: Foreign meta element removed'); - } else { - if ($e) $e->send(E_ERROR, 'Strategy_RemoveForeignElements: Foreign element removed'); - } - continue; - } - } elseif ($token instanceof HTMLPurifier_Token_Comment) { - // textify comments in script tags when they are allowed - if ($textify_comments !== false) { - $data = $token->data; - $token = new HTMLPurifier_Token_Text($data); - } elseif ($trusted) { - // keep, but perform comment cleaning - if ($e) { - // perform check whether or not there's a trailing hyphen - if (substr($token->data, -1) == '-') { - $e->send(E_NOTICE, 'Strategy_RemoveForeignElements: Trailing hyphen in comment removed'); - } - } - $token->data = rtrim($token->data, '-'); - $found_double_hyphen = false; - while (strpos($token->data, '--') !== false) { - if ($e && !$found_double_hyphen) { - $e->send(E_NOTICE, 'Strategy_RemoveForeignElements: Hyphens in comment collapsed'); - } - $found_double_hyphen = true; // prevent double-erroring - $token->data = str_replace('--', '-', $token->data); - } - } else { - // strip comments - if ($e) $e->send(E_NOTICE, 'Strategy_RemoveForeignElements: Comment removed'); - continue; - } - } elseif ($token instanceof HTMLPurifier_Token_Text) { - } else { - continue; - } - $result[] = $token; - } - if ($remove_until && $e) { - // we removed tokens until the end, throw error - $e->send(E_ERROR, 'Strategy_RemoveForeignElements: Token removed to end', $remove_until); - } - - $context->destroy('CurrentToken'); - - return $result; - } - -} - -// vim: et sw=4 sts=4 diff --git a/libraries/plugins/IDS/vendors/htmlpurifier/HTMLPurifier/Strategy/ValidateAttributes.php b/libraries/plugins/IDS/vendors/htmlpurifier/HTMLPurifier/Strategy/ValidateAttributes.php deleted file mode 100644 index c3328a9..0000000 --- a/libraries/plugins/IDS/vendors/htmlpurifier/HTMLPurifier/Strategy/ValidateAttributes.php +++ /dev/null @@ -1,39 +0,0 @@ -register('CurrentToken', $token); - - foreach ($tokens as $key => $token) { - - // only process tokens that have attributes, - // namely start and empty tags - if (!$token instanceof HTMLPurifier_Token_Start && !$token instanceof HTMLPurifier_Token_Empty) continue; - - // skip tokens that are armored - if (!empty($token->armor['ValidateAttributes'])) continue; - - // note that we have no facilities here for removing tokens - $validator->validateToken($token, $config, $context); - - $tokens[$key] = $token; // for PHP 4 - } - $context->destroy('CurrentToken'); - - return $tokens; - } - -} - -// vim: et sw=4 sts=4 diff --git a/libraries/plugins/IDS/vendors/htmlpurifier/HTMLPurifier/StringHash.php b/libraries/plugins/IDS/vendors/htmlpurifier/HTMLPurifier/StringHash.php deleted file mode 100644 index 62085c5..0000000 --- a/libraries/plugins/IDS/vendors/htmlpurifier/HTMLPurifier/StringHash.php +++ /dev/null @@ -1,39 +0,0 @@ -accessed[$index] = true; - return parent::offsetGet($index); - } - - /** - * Returns a lookup array of all array indexes that have been accessed. - * @return Array in form array($index => true). - */ - public function getAccessed() { - return $this->accessed; - } - - /** - * Resets the access array. - */ - public function resetAccessed() { - $this->accessed = array(); - } -} - -// vim: et sw=4 sts=4 diff --git a/libraries/plugins/IDS/vendors/htmlpurifier/HTMLPurifier/StringHashParser.php b/libraries/plugins/IDS/vendors/htmlpurifier/HTMLPurifier/StringHashParser.php deleted file mode 100644 index f3e70c7..0000000 --- a/libraries/plugins/IDS/vendors/htmlpurifier/HTMLPurifier/StringHashParser.php +++ /dev/null @@ -1,110 +0,0 @@ - 'DefaultKeyValue', - * 'KEY' => 'Value', - * 'KEY2' => 'Value2', - * 'MULTILINE-KEY' => "Multiline\nvalue.\n", - * ) - * - * We use this as an easy to use file-format for configuration schema - * files, but the class itself is usage agnostic. - * - * You can use ---- to forcibly terminate parsing of a single string-hash; - * this marker is used in multi string-hashes to delimit boundaries. - */ -class HTMLPurifier_StringHashParser -{ - - public $default = 'ID'; - - /** - * Parses a file that contains a single string-hash. - */ - public function parseFile($file) { - if (!file_exists($file)) return false; - $fh = fopen($file, 'r'); - if (!$fh) return false; - $ret = $this->parseHandle($fh); - fclose($fh); - return $ret; - } - - /** - * Parses a file that contains multiple string-hashes delimited by '----' - */ - public function parseMultiFile($file) { - if (!file_exists($file)) return false; - $ret = array(); - $fh = fopen($file, 'r'); - if (!$fh) return false; - while (!feof($fh)) { - $ret[] = $this->parseHandle($fh); - } - fclose($fh); - return $ret; - } - - /** - * Internal parser that acepts a file handle. - * @note While it's possible to simulate in-memory parsing by using - * custom stream wrappers, if such a use-case arises we should - * factor out the file handle into its own class. - * @param $fh File handle with pointer at start of valid string-hash - * block. - */ - protected function parseHandle($fh) { - $state = false; - $single = false; - $ret = array(); - do { - $line = fgets($fh); - if ($line === false) break; - $line = rtrim($line, "\n\r"); - if (!$state && $line === '') continue; - if ($line === '----') break; - if (strncmp('--#', $line, 3) === 0) { - // Comment - continue; - } elseif (strncmp('--', $line, 2) === 0) { - // Multiline declaration - $state = trim($line, '- '); - if (!isset($ret[$state])) $ret[$state] = ''; - continue; - } elseif (!$state) { - $single = true; - if (strpos($line, ':') !== false) { - // Single-line declaration - list($state, $line) = explode(':', $line, 2); - $line = trim($line); - } else { - // Use default declaration - $state = $this->default; - } - } - if ($single) { - $ret[$state] = $line; - $single = false; - $state = false; - } else { - $ret[$state] .= "$line\n"; - } - } while (!feof($fh)); - return $ret; - } - -} - -// vim: et sw=4 sts=4 diff --git a/libraries/plugins/IDS/vendors/htmlpurifier/HTMLPurifier/TagTransform.php b/libraries/plugins/IDS/vendors/htmlpurifier/HTMLPurifier/TagTransform.php deleted file mode 100644 index 210a447..0000000 --- a/libraries/plugins/IDS/vendors/htmlpurifier/HTMLPurifier/TagTransform.php +++ /dev/null @@ -1,36 +0,0 @@ - 'xx-small', - '1' => 'xx-small', - '2' => 'small', - '3' => 'medium', - '4' => 'large', - '5' => 'x-large', - '6' => 'xx-large', - '7' => '300%', - '-1' => 'smaller', - '-2' => '60%', - '+1' => 'larger', - '+2' => '150%', - '+3' => '200%', - '+4' => '300%' - ); - - public function transform($tag, $config, $context) { - - if ($tag instanceof HTMLPurifier_Token_End) { - $new_tag = clone $tag; - $new_tag->name = $this->transform_to; - return $new_tag; - } - - $attr = $tag->attr; - $prepend_style = ''; - - // handle color transform - if (isset($attr['color'])) { - $prepend_style .= 'color:' . $attr['color'] . ';'; - unset($attr['color']); - } - - // handle face transform - if (isset($attr['face'])) { - $prepend_style .= 'font-family:' . $attr['face'] . ';'; - unset($attr['face']); - } - - // handle size transform - if (isset($attr['size'])) { - // normalize large numbers - if ($attr['size'] !== '') { - if ($attr['size']{0} == '+' || $attr['size']{0} == '-') { - $size = (int) $attr['size']; - if ($size < -2) $attr['size'] = '-2'; - if ($size > 4) $attr['size'] = '+4'; - } else { - $size = (int) $attr['size']; - if ($size > 7) $attr['size'] = '7'; - } - } - if (isset($this->_size_lookup[$attr['size']])) { - $prepend_style .= 'font-size:' . - $this->_size_lookup[$attr['size']] . ';'; - } - unset($attr['size']); - } - - if ($prepend_style) { - $attr['style'] = isset($attr['style']) ? - $prepend_style . $attr['style'] : - $prepend_style; - } - - $new_tag = clone $tag; - $new_tag->name = $this->transform_to; - $new_tag->attr = $attr; - - return $new_tag; - - } -} - -// vim: et sw=4 sts=4 diff --git a/libraries/plugins/IDS/vendors/htmlpurifier/HTMLPurifier/TagTransform/Simple.php b/libraries/plugins/IDS/vendors/htmlpurifier/HTMLPurifier/TagTransform/Simple.php deleted file mode 100644 index 0e36130..0000000 --- a/libraries/plugins/IDS/vendors/htmlpurifier/HTMLPurifier/TagTransform/Simple.php +++ /dev/null @@ -1,35 +0,0 @@ -transform_to = $transform_to; - $this->style = $style; - } - - public function transform($tag, $config, $context) { - $new_tag = clone $tag; - $new_tag->name = $this->transform_to; - if (!is_null($this->style) && - ($new_tag instanceof HTMLPurifier_Token_Start || $new_tag instanceof HTMLPurifier_Token_Empty) - ) { - $this->prependCSS($new_tag->attr, $this->style); - } - return $new_tag; - } - -} - -// vim: et sw=4 sts=4 diff --git a/libraries/plugins/IDS/vendors/htmlpurifier/HTMLPurifier/Token.php b/libraries/plugins/IDS/vendors/htmlpurifier/HTMLPurifier/Token.php deleted file mode 100644 index 7900e6c..0000000 --- a/libraries/plugins/IDS/vendors/htmlpurifier/HTMLPurifier/Token.php +++ /dev/null @@ -1,57 +0,0 @@ -line = $l; - $this->col = $c; - } - - /** - * Convenience function for DirectLex settings line/col position. - */ - public function rawPosition($l, $c) { - if ($c === -1) $l++; - $this->line = $l; - $this->col = $c; - } - -} - -// vim: et sw=4 sts=4 diff --git a/libraries/plugins/IDS/vendors/htmlpurifier/HTMLPurifier/Token/Comment.php b/libraries/plugins/IDS/vendors/htmlpurifier/HTMLPurifier/Token/Comment.php deleted file mode 100644 index dc6bdca..0000000 --- a/libraries/plugins/IDS/vendors/htmlpurifier/HTMLPurifier/Token/Comment.php +++ /dev/null @@ -1,22 +0,0 @@ -data = $data; - $this->line = $line; - $this->col = $col; - } -} - -// vim: et sw=4 sts=4 diff --git a/libraries/plugins/IDS/vendors/htmlpurifier/HTMLPurifier/Token/Empty.php b/libraries/plugins/IDS/vendors/htmlpurifier/HTMLPurifier/Token/Empty.php deleted file mode 100644 index 2a82b47..0000000 --- a/libraries/plugins/IDS/vendors/htmlpurifier/HTMLPurifier/Token/Empty.php +++ /dev/null @@ -1,11 +0,0 @@ -!empty($obj->is_tag) - * without having to use a function call is_a(). - */ - public $is_tag = true; - - /** - * The lower-case name of the tag, like 'a', 'b' or 'blockquote'. - * - * @note Strictly speaking, XML tags are case sensitive, so we shouldn't - * be lower-casing them, but these tokens cater to HTML tags, which are - * insensitive. - */ - public $name; - - /** - * Associative array of the tag's attributes. - */ - public $attr = array(); - - /** - * Non-overloaded constructor, which lower-cases passed tag name. - * - * @param $name String name. - * @param $attr Associative array of attributes. - */ - public function __construct($name, $attr = array(), $line = null, $col = null, $armor = array()) { - $this->name = ctype_lower($name) ? $name : strtolower($name); - foreach ($attr as $key => $value) { - // normalization only necessary when key is not lowercase - if (!ctype_lower($key)) { - $new_key = strtolower($key); - if (!isset($attr[$new_key])) { - $attr[$new_key] = $attr[$key]; - } - if ($new_key !== $key) { - unset($attr[$key]); - } - } - } - $this->attr = $attr; - $this->line = $line; - $this->col = $col; - $this->armor = $armor; - } -} - -// vim: et sw=4 sts=4 diff --git a/libraries/plugins/IDS/vendors/htmlpurifier/HTMLPurifier/Token/Text.php b/libraries/plugins/IDS/vendors/htmlpurifier/HTMLPurifier/Token/Text.php deleted file mode 100644 index 82efd82..0000000 --- a/libraries/plugins/IDS/vendors/htmlpurifier/HTMLPurifier/Token/Text.php +++ /dev/null @@ -1,33 +0,0 @@ -data = $data; - $this->is_whitespace = ctype_space($data); - $this->line = $line; - $this->col = $col; - } - -} - -// vim: et sw=4 sts=4 diff --git a/libraries/plugins/IDS/vendors/htmlpurifier/HTMLPurifier/TokenFactory.php b/libraries/plugins/IDS/vendors/htmlpurifier/HTMLPurifier/TokenFactory.php deleted file mode 100644 index 7cf48fb..0000000 --- a/libraries/plugins/IDS/vendors/htmlpurifier/HTMLPurifier/TokenFactory.php +++ /dev/null @@ -1,94 +0,0 @@ -p_start = new HTMLPurifier_Token_Start('', array()); - $this->p_end = new HTMLPurifier_Token_End(''); - $this->p_empty = new HTMLPurifier_Token_Empty('', array()); - $this->p_text = new HTMLPurifier_Token_Text(''); - $this->p_comment= new HTMLPurifier_Token_Comment(''); - } - - /** - * Creates a HTMLPurifier_Token_Start. - * @param $name Tag name - * @param $attr Associative array of attributes - * @return Generated HTMLPurifier_Token_Start - */ - public function createStart($name, $attr = array()) { - $p = clone $this->p_start; - $p->__construct($name, $attr); - return $p; - } - - /** - * Creates a HTMLPurifier_Token_End. - * @param $name Tag name - * @return Generated HTMLPurifier_Token_End - */ - public function createEnd($name) { - $p = clone $this->p_end; - $p->__construct($name); - return $p; - } - - /** - * Creates a HTMLPurifier_Token_Empty. - * @param $name Tag name - * @param $attr Associative array of attributes - * @return Generated HTMLPurifier_Token_Empty - */ - public function createEmpty($name, $attr = array()) { - $p = clone $this->p_empty; - $p->__construct($name, $attr); - return $p; - } - - /** - * Creates a HTMLPurifier_Token_Text. - * @param $data Data of text token - * @return Generated HTMLPurifier_Token_Text - */ - public function createText($data) { - $p = clone $this->p_text; - $p->__construct($data); - return $p; - } - - /** - * Creates a HTMLPurifier_Token_Comment. - * @param $data Data of comment token - * @return Generated HTMLPurifier_Token_Comment - */ - public function createComment($data) { - $p = clone $this->p_comment; - $p->__construct($data); - return $p; - } - -} - -// vim: et sw=4 sts=4 diff --git a/libraries/plugins/IDS/vendors/htmlpurifier/HTMLPurifier/URI.php b/libraries/plugins/IDS/vendors/htmlpurifier/HTMLPurifier/URI.php deleted file mode 100644 index efdfb2c..0000000 --- a/libraries/plugins/IDS/vendors/htmlpurifier/HTMLPurifier/URI.php +++ /dev/null @@ -1,204 +0,0 @@ -scheme = is_null($scheme) || ctype_lower($scheme) ? $scheme : strtolower($scheme); - $this->userinfo = $userinfo; - $this->host = $host; - $this->port = is_null($port) ? $port : (int) $port; - $this->path = $path; - $this->query = $query; - $this->fragment = $fragment; - } - - /** - * Retrieves a scheme object corresponding to the URI's scheme/default - * @param $config Instance of HTMLPurifier_Config - * @param $context Instance of HTMLPurifier_Context - * @return Scheme object appropriate for validating this URI - */ - public function getSchemeObj($config, $context) { - $registry = HTMLPurifier_URISchemeRegistry::instance(); - if ($this->scheme !== null) { - $scheme_obj = $registry->getScheme($this->scheme, $config, $context); - if (!$scheme_obj) return false; // invalid scheme, clean it out - } else { - // no scheme: retrieve the default one - $def = $config->getDefinition('URI'); - $scheme_obj = $registry->getScheme($def->defaultScheme, $config, $context); - if (!$scheme_obj) { - // something funky happened to the default scheme object - trigger_error( - 'Default scheme object "' . $def->defaultScheme . '" was not readable', - E_USER_WARNING - ); - return false; - } - } - return $scheme_obj; - } - - /** - * Generic validation method applicable for all schemes. May modify - * this URI in order to get it into a compliant form. - * @param $config Instance of HTMLPurifier_Config - * @param $context Instance of HTMLPurifier_Context - * @return True if validation/filtering succeeds, false if failure - */ - public function validate($config, $context) { - - // ABNF definitions from RFC 3986 - $chars_sub_delims = '!$&\'()*+,;='; - $chars_gen_delims = ':/?#[]@'; - $chars_pchar = $chars_sub_delims . ':@'; - - // validate host - if (!is_null($this->host)) { - $host_def = new HTMLPurifier_AttrDef_URI_Host(); - $this->host = $host_def->validate($this->host, $config, $context); - if ($this->host === false) $this->host = null; - } - - // validate scheme - // NOTE: It's not appropriate to check whether or not this - // scheme is in our registry, since a URIFilter may convert a - // URI that we don't allow into one we do. So instead, we just - // check if the scheme can be dropped because there is no host - // and it is our default scheme. - if (!is_null($this->scheme) && is_null($this->host) || $this->host === '') { - // support for relative paths is pretty abysmal when the - // scheme is present, so axe it when possible - $def = $config->getDefinition('URI'); - if ($def->defaultScheme === $this->scheme) { - $this->scheme = null; - } - } - - // validate username - if (!is_null($this->userinfo)) { - $encoder = new HTMLPurifier_PercentEncoder($chars_sub_delims . ':'); - $this->userinfo = $encoder->encode($this->userinfo); - } - - // validate port - if (!is_null($this->port)) { - if ($this->port < 1 || $this->port > 65535) $this->port = null; - } - - // validate path - $path_parts = array(); - $segments_encoder = new HTMLPurifier_PercentEncoder($chars_pchar . '/'); - if (!is_null($this->host)) { // this catches $this->host === '' - // path-abempty (hier and relative) - // http://www.example.com/my/path - // //www.example.com/my/path (looks odd, but works, and - // recognized by most browsers) - // (this set is valid or invalid on a scheme by scheme - // basis, so we'll deal with it later) - // file:///my/path - // ///my/path - $this->path = $segments_encoder->encode($this->path); - } elseif ($this->path !== '') { - if ($this->path[0] === '/') { - // path-absolute (hier and relative) - // http:/my/path - // /my/path - if (strlen($this->path) >= 2 && $this->path[1] === '/') { - // This could happen if both the host gets stripped - // out - // http://my/path - // //my/path - $this->path = ''; - } else { - $this->path = $segments_encoder->encode($this->path); - } - } elseif (!is_null($this->scheme)) { - // path-rootless (hier) - // http:my/path - // Short circuit evaluation means we don't need to check nz - $this->path = $segments_encoder->encode($this->path); - } else { - // path-noscheme (relative) - // my/path - // (once again, not checking nz) - $segment_nc_encoder = new HTMLPurifier_PercentEncoder($chars_sub_delims . '@'); - $c = strpos($this->path, '/'); - if ($c !== false) { - $this->path = - $segment_nc_encoder->encode(substr($this->path, 0, $c)) . - $segments_encoder->encode(substr($this->path, $c)); - } else { - $this->path = $segment_nc_encoder->encode($this->path); - } - } - } else { - // path-empty (hier and relative) - $this->path = ''; // just to be safe - } - - // qf = query and fragment - $qf_encoder = new HTMLPurifier_PercentEncoder($chars_pchar . '/?'); - - if (!is_null($this->query)) { - $this->query = $qf_encoder->encode($this->query); - } - - if (!is_null($this->fragment)) { - $this->fragment = $qf_encoder->encode($this->fragment); - } - - return true; - - } - - /** - * Convert URI back to string - * @return String URI appropriate for output - */ - public function toString() { - // reconstruct authority - $authority = null; - // there is a rendering difference between a null authority - // (http:foo-bar) and an empty string authority - // (http:///foo-bar). - if (!is_null($this->host)) { - $authority = ''; - if(!is_null($this->userinfo)) $authority .= $this->userinfo . '@'; - $authority .= $this->host; - if(!is_null($this->port)) $authority .= ':' . $this->port; - } - - // Reconstruct the result - // One might wonder about parsing quirks from browsers after - // this reconstruction. Unfortunately, parsing behavior depends - // on what *scheme* was employed (file:///foo is handled *very* - // differently than http:///foo), so unfortunately we have to - // defer to the schemes to do the right thing. - $result = ''; - if (!is_null($this->scheme)) $result .= $this->scheme . ':'; - if (!is_null($authority)) $result .= '//' . $authority; - $result .= $this->path; - if (!is_null($this->query)) $result .= '?' . $this->query; - if (!is_null($this->fragment)) $result .= '#' . $this->fragment; - - return $result; - } - -} - -// vim: et sw=4 sts=4 diff --git a/libraries/plugins/IDS/vendors/htmlpurifier/HTMLPurifier/URIDefinition.php b/libraries/plugins/IDS/vendors/htmlpurifier/HTMLPurifier/URIDefinition.php deleted file mode 100644 index ea2b8fe..0000000 --- a/libraries/plugins/IDS/vendors/htmlpurifier/HTMLPurifier/URIDefinition.php +++ /dev/null @@ -1,93 +0,0 @@ -registerFilter(new HTMLPurifier_URIFilter_DisableExternal()); - $this->registerFilter(new HTMLPurifier_URIFilter_DisableExternalResources()); - $this->registerFilter(new HTMLPurifier_URIFilter_HostBlacklist()); - $this->registerFilter(new HTMLPurifier_URIFilter_MakeAbsolute()); - $this->registerFilter(new HTMLPurifier_URIFilter_Munge()); - } - - public function registerFilter($filter) { - $this->registeredFilters[$filter->name] = $filter; - } - - public function addFilter($filter, $config) { - $r = $filter->prepare($config); - if ($r === false) return; // null is ok, for backwards compat - if ($filter->post) { - $this->postFilters[$filter->name] = $filter; - } else { - $this->filters[$filter->name] = $filter; - } - } - - protected function doSetup($config) { - $this->setupMemberVariables($config); - $this->setupFilters($config); - } - - protected function setupFilters($config) { - foreach ($this->registeredFilters as $name => $filter) { - $conf = $config->get('URI.' . $name); - if ($conf !== false && $conf !== null) { - $this->addFilter($filter, $config); - } - } - unset($this->registeredFilters); - } - - protected function setupMemberVariables($config) { - $this->host = $config->get('URI.Host'); - $base_uri = $config->get('URI.Base'); - if (!is_null($base_uri)) { - $parser = new HTMLPurifier_URIParser(); - $this->base = $parser->parse($base_uri); - $this->defaultScheme = $this->base->scheme; - if (is_null($this->host)) $this->host = $this->base->host; - } - if (is_null($this->defaultScheme)) $this->defaultScheme = $config->get('URI.DefaultScheme'); - } - - public function filter(&$uri, $config, $context) { - foreach ($this->filters as $name => $f) { - $result = $f->filter($uri, $config, $context); - if (!$result) return false; - } - return true; - } - - public function postFilter(&$uri, $config, $context) { - foreach ($this->postFilters as $name => $f) { - $result = $f->filter($uri, $config, $context); - if (!$result) return false; - } - return true; - } - -} - -// vim: et sw=4 sts=4 diff --git a/libraries/plugins/IDS/vendors/htmlpurifier/HTMLPurifier/URIFilter.php b/libraries/plugins/IDS/vendors/htmlpurifier/HTMLPurifier/URIFilter.php deleted file mode 100644 index c116f93..0000000 --- a/libraries/plugins/IDS/vendors/htmlpurifier/HTMLPurifier/URIFilter.php +++ /dev/null @@ -1,45 +0,0 @@ -getDefinition('URI')->host; - if ($our_host !== null) $this->ourHostParts = array_reverse(explode('.', $our_host)); - } - public function filter(&$uri, $config, $context) { - if (is_null($uri->host)) return true; - if ($this->ourHostParts === false) return false; - $host_parts = array_reverse(explode('.', $uri->host)); - foreach ($this->ourHostParts as $i => $x) { - if (!isset($host_parts[$i])) return false; - if ($host_parts[$i] != $this->ourHostParts[$i]) return false; - } - return true; - } -} - -// vim: et sw=4 sts=4 diff --git a/libraries/plugins/IDS/vendors/htmlpurifier/HTMLPurifier/URIFilter/DisableExternalResources.php b/libraries/plugins/IDS/vendors/htmlpurifier/HTMLPurifier/URIFilter/DisableExternalResources.php deleted file mode 100644 index 881abc4..0000000 --- a/libraries/plugins/IDS/vendors/htmlpurifier/HTMLPurifier/URIFilter/DisableExternalResources.php +++ /dev/null @@ -1,12 +0,0 @@ -get('EmbeddedURI', true)) return true; - return parent::filter($uri, $config, $context); - } -} - -// vim: et sw=4 sts=4 diff --git a/libraries/plugins/IDS/vendors/htmlpurifier/HTMLPurifier/URIFilter/DisableResources.php b/libraries/plugins/IDS/vendors/htmlpurifier/HTMLPurifier/URIFilter/DisableResources.php deleted file mode 100644 index 67538c7..0000000 --- a/libraries/plugins/IDS/vendors/htmlpurifier/HTMLPurifier/URIFilter/DisableResources.php +++ /dev/null @@ -1,11 +0,0 @@ -get('EmbeddedURI', true); - } -} - -// vim: et sw=4 sts=4 diff --git a/libraries/plugins/IDS/vendors/htmlpurifier/HTMLPurifier/URIFilter/HostBlacklist.php b/libraries/plugins/IDS/vendors/htmlpurifier/HTMLPurifier/URIFilter/HostBlacklist.php deleted file mode 100644 index 045aa09..0000000 --- a/libraries/plugins/IDS/vendors/htmlpurifier/HTMLPurifier/URIFilter/HostBlacklist.php +++ /dev/null @@ -1,21 +0,0 @@ -blacklist = $config->get('URI.HostBlacklist'); - return true; - } - public function filter(&$uri, $config, $context) { - foreach($this->blacklist as $blacklisted_host_fragment) { - if (strpos($uri->host, $blacklisted_host_fragment) !== false) { - return false; - } - } - return true; - } -} - -// vim: et sw=4 sts=4 diff --git a/libraries/plugins/IDS/vendors/htmlpurifier/HTMLPurifier/URIFilter/MakeAbsolute.php b/libraries/plugins/IDS/vendors/htmlpurifier/HTMLPurifier/URIFilter/MakeAbsolute.php deleted file mode 100644 index f46ab26..0000000 --- a/libraries/plugins/IDS/vendors/htmlpurifier/HTMLPurifier/URIFilter/MakeAbsolute.php +++ /dev/null @@ -1,114 +0,0 @@ -getDefinition('URI'); - $this->base = $def->base; - if (is_null($this->base)) { - trigger_error('URI.MakeAbsolute is being ignored due to lack of value for URI.Base configuration', E_USER_WARNING); - return false; - } - $this->base->fragment = null; // fragment is invalid for base URI - $stack = explode('/', $this->base->path); - array_pop($stack); // discard last segment - $stack = $this->_collapseStack($stack); // do pre-parsing - $this->basePathStack = $stack; - return true; - } - public function filter(&$uri, $config, $context) { - if (is_null($this->base)) return true; // abort early - if ( - $uri->path === '' && is_null($uri->scheme) && - is_null($uri->host) && is_null($uri->query) && is_null($uri->fragment) - ) { - // reference to current document - $uri = clone $this->base; - return true; - } - if (!is_null($uri->scheme)) { - // absolute URI already: don't change - if (!is_null($uri->host)) return true; - $scheme_obj = $uri->getSchemeObj($config, $context); - if (!$scheme_obj) { - // scheme not recognized - return false; - } - if (!$scheme_obj->hierarchical) { - // non-hierarchal URI with explicit scheme, don't change - return true; - } - // special case: had a scheme but always is hierarchical and had no authority - } - if (!is_null($uri->host)) { - // network path, don't bother - return true; - } - if ($uri->path === '') { - $uri->path = $this->base->path; - } elseif ($uri->path[0] !== '/') { - // relative path, needs more complicated processing - $stack = explode('/', $uri->path); - $new_stack = array_merge($this->basePathStack, $stack); - if ($new_stack[0] !== '' && !is_null($this->base->host)) { - array_unshift($new_stack, ''); - } - $new_stack = $this->_collapseStack($new_stack); - $uri->path = implode('/', $new_stack); - } else { - // absolute path, but still we should collapse - $uri->path = implode('/', $this->_collapseStack(explode('/', $uri->path))); - } - // re-combine - $uri->scheme = $this->base->scheme; - if (is_null($uri->userinfo)) $uri->userinfo = $this->base->userinfo; - if (is_null($uri->host)) $uri->host = $this->base->host; - if (is_null($uri->port)) $uri->port = $this->base->port; - return true; - } - - /** - * Resolve dots and double-dots in a path stack - */ - private function _collapseStack($stack) { - $result = array(); - $is_folder = false; - for ($i = 0; isset($stack[$i]); $i++) { - $is_folder = false; - // absorb an internally duplicated slash - if ($stack[$i] == '' && $i && isset($stack[$i+1])) continue; - if ($stack[$i] == '..') { - if (!empty($result)) { - $segment = array_pop($result); - if ($segment === '' && empty($result)) { - // error case: attempted to back out too far: - // restore the leading slash - $result[] = ''; - } elseif ($segment === '..') { - $result[] = '..'; // cannot remove .. with .. - } - } else { - // relative path, preserve the double-dots - $result[] = '..'; - } - $is_folder = true; - continue; - } - if ($stack[$i] == '.') { - // silently absorb - $is_folder = true; - continue; - } - $result[] = $stack[$i]; - } - if ($is_folder) $result[] = ''; - return $result; - } -} - -// vim: et sw=4 sts=4 diff --git a/libraries/plugins/IDS/vendors/htmlpurifier/HTMLPurifier/URIFilter/Munge.php b/libraries/plugins/IDS/vendors/htmlpurifier/HTMLPurifier/URIFilter/Munge.php deleted file mode 100644 index efa10a6..0000000 --- a/libraries/plugins/IDS/vendors/htmlpurifier/HTMLPurifier/URIFilter/Munge.php +++ /dev/null @@ -1,58 +0,0 @@ -target = $config->get('URI.' . $this->name); - $this->parser = new HTMLPurifier_URIParser(); - $this->doEmbed = $config->get('URI.MungeResources'); - $this->secretKey = $config->get('URI.MungeSecretKey'); - return true; - } - public function filter(&$uri, $config, $context) { - if ($context->get('EmbeddedURI', true) && !$this->doEmbed) return true; - - $scheme_obj = $uri->getSchemeObj($config, $context); - if (!$scheme_obj) return true; // ignore unknown schemes, maybe another postfilter did it - if (is_null($uri->host) || empty($scheme_obj->browsable)) { - return true; - } - // don't redirect if target host is our host - if ($uri->host === $config->getDefinition('URI')->host) { - return true; - } - - $this->makeReplace($uri, $config, $context); - $this->replace = array_map('rawurlencode', $this->replace); - - $new_uri = strtr($this->target, $this->replace); - $new_uri = $this->parser->parse($new_uri); - // don't redirect if the target host is the same as the - // starting host - if ($uri->host === $new_uri->host) return true; - $uri = $new_uri; // overwrite - return true; - } - - protected function makeReplace($uri, $config, $context) { - $string = $uri->toString(); - // always available - $this->replace['%s'] = $string; - $this->replace['%r'] = $context->get('EmbeddedURI', true); - $token = $context->get('CurrentToken', true); - $this->replace['%n'] = $token ? $token->name : null; - $this->replace['%m'] = $context->get('CurrentAttr', true); - $this->replace['%p'] = $context->get('CurrentCSSProperty', true); - // not always available - if ($this->secretKey) $this->replace['%t'] = sha1($this->secretKey . ':' . $string); - } - -} - -// vim: et sw=4 sts=4 diff --git a/libraries/plugins/IDS/vendors/htmlpurifier/HTMLPurifier/URIParser.php b/libraries/plugins/IDS/vendors/htmlpurifier/HTMLPurifier/URIParser.php deleted file mode 100644 index 7179e4a..0000000 --- a/libraries/plugins/IDS/vendors/htmlpurifier/HTMLPurifier/URIParser.php +++ /dev/null @@ -1,70 +0,0 @@ -percentEncoder = new HTMLPurifier_PercentEncoder(); - } - - /** - * Parses a URI. - * @param $uri string URI to parse - * @return HTMLPurifier_URI representation of URI. This representation has - * not been validated yet and may not conform to RFC. - */ - public function parse($uri) { - - $uri = $this->percentEncoder->normalize($uri); - - // Regexp is as per Appendix B. - // Note that ["<>] are an addition to the RFC's recommended - // characters, because they represent external delimeters. - $r_URI = '!'. - '(([^:/?#"<>]+):)?'. // 2. Scheme - '(//([^/?#"<>]*))?'. // 4. Authority - '([^?#"<>]*)'. // 5. Path - '(\?([^#"<>]*))?'. // 7. Query - '(#([^"<>]*))?'. // 8. Fragment - '!'; - - $matches = array(); - $result = preg_match($r_URI, $uri, $matches); - - if (!$result) return false; // *really* invalid URI - - // seperate out parts - $scheme = !empty($matches[1]) ? $matches[2] : null; - $authority = !empty($matches[3]) ? $matches[4] : null; - $path = $matches[5]; // always present, can be empty - $query = !empty($matches[6]) ? $matches[7] : null; - $fragment = !empty($matches[8]) ? $matches[9] : null; - - // further parse authority - if ($authority !== null) { - $r_authority = "/^((.+?)@)?(\[[^\]]+\]|[^:]*)(:(\d*))?/"; - $matches = array(); - preg_match($r_authority, $authority, $matches); - $userinfo = !empty($matches[1]) ? $matches[2] : null; - $host = !empty($matches[3]) ? $matches[3] : ''; - $port = !empty($matches[4]) ? (int) $matches[5] : null; - } else { - $port = $host = $userinfo = null; - } - - return new HTMLPurifier_URI( - $scheme, $userinfo, $host, $port, $path, $query, $fragment); - } - -} - -// vim: et sw=4 sts=4 diff --git a/libraries/plugins/IDS/vendors/htmlpurifier/HTMLPurifier/URIScheme.php b/libraries/plugins/IDS/vendors/htmlpurifier/HTMLPurifier/URIScheme.php deleted file mode 100644 index 25eb841..0000000 --- a/libraries/plugins/IDS/vendors/htmlpurifier/HTMLPurifier/URIScheme.php +++ /dev/null @@ -1,89 +0,0 @@ -, resolves edge cases - * with making relative URIs absolute - */ - public $hierarchical = false; - - /** - * Whether or not the URI may omit a hostname when the scheme is - * explicitly specified, ala file:///path/to/file. As of writing, - * 'file' is the only scheme that browsers support his properly. - */ - public $may_omit_host = false; - - /** - * Validates the components of a URI for a specific scheme. - * @param $uri Reference to a HTMLPurifier_URI object - * @param $config HTMLPurifier_Config object - * @param $context HTMLPurifier_Context object - * @return Bool success or failure - */ - public abstract function doValidate(&$uri, $config, $context); - - /** - * Public interface for validating components of a URI. Performs a - * bunch of default actions. Don't overload this method. - * @param $uri Reference to a HTMLPurifier_URI object - * @param $config HTMLPurifier_Config object - * @param $context HTMLPurifier_Context object - * @return Bool success or failure - */ - public function validate(&$uri, $config, $context) { - if ($this->default_port == $uri->port) $uri->port = null; - // kludge: browsers do funny things when the scheme but not the - // authority is set - if (!$this->may_omit_host && - // if the scheme is present, a missing host is always in error - (!is_null($uri->scheme) && ($uri->host === '' || is_null($uri->host))) || - // if the scheme is not present, a *blank* host is in error, - // since this translates into '///path' which most browsers - // interpret as being 'http://path'. - (is_null($uri->scheme) && $uri->host === '') - ) { - do { - if (is_null($uri->scheme)) { - if (substr($uri->path, 0, 2) != '//') { - $uri->host = null; - break; - } - // URI is '////path', so we cannot nullify the - // host to preserve semantics. Try expanding the - // hostname instead (fall through) - } - // first see if we can manually insert a hostname - $host = $config->get('URI.Host'); - if (!is_null($host)) { - $uri->host = $host; - } else { - // we can't do anything sensible, reject the URL. - return false; - } - } while (false); - } - return $this->doValidate($uri, $config, $context); - } - -} - -// vim: et sw=4 sts=4 diff --git a/libraries/plugins/IDS/vendors/htmlpurifier/HTMLPurifier/URIScheme/data.php b/libraries/plugins/IDS/vendors/htmlpurifier/HTMLPurifier/URIScheme/data.php deleted file mode 100644 index a5c4398..0000000 --- a/libraries/plugins/IDS/vendors/htmlpurifier/HTMLPurifier/URIScheme/data.php +++ /dev/null @@ -1,96 +0,0 @@ - true, - 'image/gif' => true, - 'image/png' => true, - ); - // this is actually irrelevant since we only write out the path - // component - public $may_omit_host = true; - - public function doValidate(&$uri, $config, $context) { - $result = explode(',', $uri->path, 2); - $is_base64 = false; - $charset = null; - $content_type = null; - if (count($result) == 2) { - list($metadata, $data) = $result; - // do some legwork on the metadata - $metas = explode(';', $metadata); - while(!empty($metas)) { - $cur = array_shift($metas); - if ($cur == 'base64') { - $is_base64 = true; - break; - } - if (substr($cur, 0, 8) == 'charset=') { - // doesn't match if there are arbitrary spaces, but - // whatever dude - if ($charset !== null) continue; // garbage - $charset = substr($cur, 8); // not used - } else { - if ($content_type !== null) continue; // garbage - $content_type = $cur; - } - } - } else { - $data = $result[0]; - } - if ($content_type !== null && empty($this->allowed_types[$content_type])) { - return false; - } - if ($charset !== null) { - // error; we don't allow plaintext stuff - $charset = null; - } - $data = rawurldecode($data); - if ($is_base64) { - $raw_data = base64_decode($data); - } else { - $raw_data = $data; - } - // XXX probably want to refactor this into a general mechanism - // for filtering arbitrary content types - $file = tempnam("/tmp", ""); - file_put_contents($file, $raw_data); - if (function_exists('exif_imagetype')) { - $image_code = exif_imagetype($file); - } elseif (function_exists('getimagesize')) { - set_error_handler(array($this, 'muteErrorHandler')); - $info = getimagesize($file); - restore_error_handler(); - if ($info == false) return false; - $image_code = $info[2]; - } else { - trigger_error("could not find exif_imagetype or getimagesize functions", E_USER_ERROR); - } - $real_content_type = image_type_to_mime_type($image_code); - if ($real_content_type != $content_type) { - // we're nice guys; if the content type is something else we - // support, change it over - if (empty($this->allowed_types[$real_content_type])) return false; - $content_type = $real_content_type; - } - // ok, it's kosher, rewrite what we need - $uri->userinfo = null; - $uri->host = null; - $uri->port = null; - $uri->fragment = null; - $uri->query = null; - $uri->path = "$content_type;base64," . base64_encode($raw_data); - return true; - } - - public function muteErrorHandler($errno, $errstr) {} - -} - diff --git a/libraries/plugins/IDS/vendors/htmlpurifier/HTMLPurifier/URIScheme/file.php b/libraries/plugins/IDS/vendors/htmlpurifier/HTMLPurifier/URIScheme/file.php deleted file mode 100644 index d74a3f1..0000000 --- a/libraries/plugins/IDS/vendors/htmlpurifier/HTMLPurifier/URIScheme/file.php +++ /dev/null @@ -1,32 +0,0 @@ -userinfo = null; - // file:// makes no provisions for accessing the resource - $uri->port = null; - // While it seems to work on Firefox, the querystring has - // no possible effect and is thus stripped. - $uri->query = null; - return true; - } - -} - -// vim: et sw=4 sts=4 diff --git a/libraries/plugins/IDS/vendors/htmlpurifier/HTMLPurifier/URIScheme/ftp.php b/libraries/plugins/IDS/vendors/htmlpurifier/HTMLPurifier/URIScheme/ftp.php deleted file mode 100644 index 0fb2abf..0000000 --- a/libraries/plugins/IDS/vendors/htmlpurifier/HTMLPurifier/URIScheme/ftp.php +++ /dev/null @@ -1,42 +0,0 @@ -query = null; - - // typecode check - $semicolon_pos = strrpos($uri->path, ';'); // reverse - if ($semicolon_pos !== false) { - $type = substr($uri->path, $semicolon_pos + 1); // no semicolon - $uri->path = substr($uri->path, 0, $semicolon_pos); - $type_ret = ''; - if (strpos($type, '=') !== false) { - // figure out whether or not the declaration is correct - list($key, $typecode) = explode('=', $type, 2); - if ($key !== 'type') { - // invalid key, tack it back on encoded - $uri->path .= '%3B' . $type; - } elseif ($typecode === 'a' || $typecode === 'i' || $typecode === 'd') { - $type_ret = ";type=$typecode"; - } - } else { - $uri->path .= '%3B' . $type; - } - $uri->path = str_replace(';', '%3B', $uri->path); - $uri->path .= $type_ret; - } - - return true; - } - -} - -// vim: et sw=4 sts=4 diff --git a/libraries/plugins/IDS/vendors/htmlpurifier/HTMLPurifier/URIScheme/http.php b/libraries/plugins/IDS/vendors/htmlpurifier/HTMLPurifier/URIScheme/http.php deleted file mode 100644 index 959b8da..0000000 --- a/libraries/plugins/IDS/vendors/htmlpurifier/HTMLPurifier/URIScheme/http.php +++ /dev/null @@ -1,19 +0,0 @@ -userinfo = null; - return true; - } - -} - -// vim: et sw=4 sts=4 diff --git a/libraries/plugins/IDS/vendors/htmlpurifier/HTMLPurifier/URIScheme/https.php b/libraries/plugins/IDS/vendors/htmlpurifier/HTMLPurifier/URIScheme/https.php deleted file mode 100644 index 29e3809..0000000 --- a/libraries/plugins/IDS/vendors/htmlpurifier/HTMLPurifier/URIScheme/https.php +++ /dev/null @@ -1,12 +0,0 @@ -userinfo = null; - $uri->host = null; - $uri->port = null; - // we need to validate path against RFC 2368's addr-spec - return true; - } - -} - -// vim: et sw=4 sts=4 diff --git a/libraries/plugins/IDS/vendors/htmlpurifier/HTMLPurifier/URIScheme/news.php b/libraries/plugins/IDS/vendors/htmlpurifier/HTMLPurifier/URIScheme/news.php deleted file mode 100644 index 84a6748..0000000 --- a/libraries/plugins/IDS/vendors/htmlpurifier/HTMLPurifier/URIScheme/news.php +++ /dev/null @@ -1,22 +0,0 @@ -userinfo = null; - $uri->host = null; - $uri->port = null; - $uri->query = null; - // typecode check needed on path - return true; - } - -} - -// vim: et sw=4 sts=4 diff --git a/libraries/plugins/IDS/vendors/htmlpurifier/HTMLPurifier/URIScheme/nntp.php b/libraries/plugins/IDS/vendors/htmlpurifier/HTMLPurifier/URIScheme/nntp.php deleted file mode 100644 index 4ccea0d..0000000 --- a/libraries/plugins/IDS/vendors/htmlpurifier/HTMLPurifier/URIScheme/nntp.php +++ /dev/null @@ -1,19 +0,0 @@ -userinfo = null; - $uri->query = null; - return true; - } - -} - -// vim: et sw=4 sts=4 diff --git a/libraries/plugins/IDS/vendors/htmlpurifier/HTMLPurifier/URISchemeRegistry.php b/libraries/plugins/IDS/vendors/htmlpurifier/HTMLPurifier/URISchemeRegistry.php deleted file mode 100644 index 576bf7b..0000000 --- a/libraries/plugins/IDS/vendors/htmlpurifier/HTMLPurifier/URISchemeRegistry.php +++ /dev/null @@ -1,68 +0,0 @@ -get('URI.AllowedSchemes'); - if (!$config->get('URI.OverrideAllowedSchemes') && - !isset($allowed_schemes[$scheme]) - ) { - return; - } - - if (isset($this->schemes[$scheme])) return $this->schemes[$scheme]; - if (!isset($allowed_schemes[$scheme])) return; - - $class = 'HTMLPurifier_URIScheme_' . $scheme; - if (!class_exists($class)) return; - $this->schemes[$scheme] = new $class(); - return $this->schemes[$scheme]; - } - - /** - * Registers a custom scheme to the cache, bypassing reflection. - * @param $scheme Scheme name - * @param $scheme_obj HTMLPurifier_URIScheme object - */ - public function register($scheme, $scheme_obj) { - $this->schemes[$scheme] = $scheme_obj; - } - -} - -// vim: et sw=4 sts=4 diff --git a/libraries/plugins/IDS/vendors/htmlpurifier/HTMLPurifier/UnitConverter.php b/libraries/plugins/IDS/vendors/htmlpurifier/HTMLPurifier/UnitConverter.php deleted file mode 100644 index 545d426..0000000 --- a/libraries/plugins/IDS/vendors/htmlpurifier/HTMLPurifier/UnitConverter.php +++ /dev/null @@ -1,254 +0,0 @@ - array( - 'px' => 3, // This is as per CSS 2.1 and Firefox. Your mileage may vary - 'pt' => 4, - 'pc' => 48, - 'in' => 288, - self::METRIC => array('pt', '0.352777778', 'mm'), - ), - self::METRIC => array( - 'mm' => 1, - 'cm' => 10, - self::ENGLISH => array('mm', '2.83464567', 'pt'), - ), - ); - - /** - * Minimum bcmath precision for output. - */ - protected $outputPrecision; - - /** - * Bcmath precision for internal calculations. - */ - protected $internalPrecision; - - /** - * Whether or not BCMath is available - */ - private $bcmath; - - public function __construct($output_precision = 4, $internal_precision = 10, $force_no_bcmath = false) { - $this->outputPrecision = $output_precision; - $this->internalPrecision = $internal_precision; - $this->bcmath = !$force_no_bcmath && function_exists('bcmul'); - } - - /** - * Converts a length object of one unit into another unit. - * @param HTMLPurifier_Length $length - * Instance of HTMLPurifier_Length to convert. You must validate() - * it before passing it here! - * @param string $to_unit - * Unit to convert to. - * @note - * About precision: This conversion function pays very special - * attention to the incoming precision of values and attempts - * to maintain a number of significant figure. Results are - * fairly accurate up to nine digits. Some caveats: - * - If a number is zero-padded as a result of this significant - * figure tracking, the zeroes will be eliminated. - * - If a number contains less than four sigfigs ($outputPrecision) - * and this causes some decimals to be excluded, those - * decimals will be added on. - */ - public function convert($length, $to_unit) { - - if (!$length->isValid()) return false; - - $n = $length->getN(); - $unit = $length->getUnit(); - - if ($n === '0' || $unit === false) { - return new HTMLPurifier_Length('0', false); - } - - $state = $dest_state = false; - foreach (self::$units as $k => $x) { - if (isset($x[$unit])) $state = $k; - if (isset($x[$to_unit])) $dest_state = $k; - } - if (!$state || !$dest_state) return false; - - // Some calculations about the initial precision of the number; - // this will be useful when we need to do final rounding. - $sigfigs = $this->getSigFigs($n); - if ($sigfigs < $this->outputPrecision) $sigfigs = $this->outputPrecision; - - // BCMath's internal precision deals only with decimals. Use - // our default if the initial number has no decimals, or increase - // it by how ever many decimals, thus, the number of guard digits - // will always be greater than or equal to internalPrecision. - $log = (int) floor(log(abs($n), 10)); - $cp = ($log < 0) ? $this->internalPrecision - $log : $this->internalPrecision; // internal precision - - for ($i = 0; $i < 2; $i++) { - - // Determine what unit IN THIS SYSTEM we need to convert to - if ($dest_state === $state) { - // Simple conversion - $dest_unit = $to_unit; - } else { - // Convert to the smallest unit, pending a system shift - $dest_unit = self::$units[$state][$dest_state][0]; - } - - // Do the conversion if necessary - if ($dest_unit !== $unit) { - $factor = $this->div(self::$units[$state][$unit], self::$units[$state][$dest_unit], $cp); - $n = $this->mul($n, $factor, $cp); - $unit = $dest_unit; - } - - // Output was zero, so bail out early. Shouldn't ever happen. - if ($n === '') { - $n = '0'; - $unit = $to_unit; - break; - } - - // It was a simple conversion, so bail out - if ($dest_state === $state) { - break; - } - - if ($i !== 0) { - // Conversion failed! Apparently, the system we forwarded - // to didn't have this unit. This should never happen! - return false; - } - - // Pre-condition: $i == 0 - - // Perform conversion to next system of units - $n = $this->mul($n, self::$units[$state][$dest_state][1], $cp); - $unit = self::$units[$state][$dest_state][2]; - $state = $dest_state; - - // One more loop around to convert the unit in the new system. - - } - - // Post-condition: $unit == $to_unit - if ($unit !== $to_unit) return false; - - // Useful for debugging: - //echo "
        n";
        -        //echo "$n\nsigfigs = $sigfigs\nnew_log = $new_log\nlog = $log\nrp = $rp\n
        \n"; - - $n = $this->round($n, $sigfigs); - if (strpos($n, '.') !== false) $n = rtrim($n, '0'); - $n = rtrim($n, '.'); - - return new HTMLPurifier_Length($n, $unit); - } - - /** - * Returns the number of significant figures in a string number. - * @param string $n Decimal number - * @return int number of sigfigs - */ - public function getSigFigs($n) { - $n = ltrim($n, '0+-'); - $dp = strpos($n, '.'); // decimal position - if ($dp === false) { - $sigfigs = strlen(rtrim($n, '0')); - } else { - $sigfigs = strlen(ltrim($n, '0.')); // eliminate extra decimal character - if ($dp !== 0) $sigfigs--; - } - return $sigfigs; - } - - /** - * Adds two numbers, using arbitrary precision when available. - */ - private function add($s1, $s2, $scale) { - if ($this->bcmath) return bcadd($s1, $s2, $scale); - else return $this->scale($s1 + $s2, $scale); - } - - /** - * Multiples two numbers, using arbitrary precision when available. - */ - private function mul($s1, $s2, $scale) { - if ($this->bcmath) return bcmul($s1, $s2, $scale); - else return $this->scale($s1 * $s2, $scale); - } - - /** - * Divides two numbers, using arbitrary precision when available. - */ - private function div($s1, $s2, $scale) { - if ($this->bcmath) return bcdiv($s1, $s2, $scale); - else return $this->scale($s1 / $s2, $scale); - } - - /** - * Rounds a number according to the number of sigfigs it should have, - * using arbitrary precision when available. - */ - private function round($n, $sigfigs) { - $new_log = (int) floor(log(abs($n), 10)); // Number of digits left of decimal - 1 - $rp = $sigfigs - $new_log - 1; // Number of decimal places needed - $neg = $n < 0 ? '-' : ''; // Negative sign - if ($this->bcmath) { - if ($rp >= 0) { - $n = bcadd($n, $neg . '0.' . str_repeat('0', $rp) . '5', $rp + 1); - $n = bcdiv($n, '1', $rp); - } else { - // This algorithm partially depends on the standardized - // form of numbers that comes out of bcmath. - $n = bcadd($n, $neg . '5' . str_repeat('0', $new_log - $sigfigs), 0); - $n = substr($n, 0, $sigfigs + strlen($neg)) . str_repeat('0', $new_log - $sigfigs + 1); - } - return $n; - } else { - return $this->scale(round($n, $sigfigs - $new_log - 1), $rp + 1); - } - } - - /** - * Scales a float to $scale digits right of decimal point, like BCMath. - */ - private function scale($r, $scale) { - if ($scale < 0) { - // The f sprintf type doesn't support negative numbers, so we - // need to cludge things manually. First get the string. - $r = sprintf('%.0f', (float) $r); - // Due to floating point precision loss, $r will more than likely - // look something like 4652999999999.9234. We grab one more digit - // than we need to precise from $r and then use that to round - // appropriately. - $precise = (string) round(substr($r, 0, strlen($r) + $scale), -1); - // Now we return it, truncating the zero that was rounded off. - return substr($precise, 0, -1) . str_repeat('0', -$scale + 1); - } - return sprintf('%.' . $scale . 'f', (float) $r); - } - -} - -// vim: et sw=4 sts=4 diff --git a/libraries/plugins/IDS/vendors/htmlpurifier/HTMLPurifier/VarParser.php b/libraries/plugins/IDS/vendors/htmlpurifier/HTMLPurifier/VarParser.php deleted file mode 100644 index 68e72ae..0000000 --- a/libraries/plugins/IDS/vendors/htmlpurifier/HTMLPurifier/VarParser.php +++ /dev/null @@ -1,154 +0,0 @@ - self::STRING, - 'istring' => self::ISTRING, - 'text' => self::TEXT, - 'itext' => self::ITEXT, - 'int' => self::INT, - 'float' => self::FLOAT, - 'bool' => self::BOOL, - 'lookup' => self::LOOKUP, - 'list' => self::ALIST, - 'hash' => self::HASH, - 'mixed' => self::MIXED - ); - - /** - * Lookup table of types that are string, and can have aliases or - * allowed value lists. - */ - static public $stringTypes = array( - self::STRING => true, - self::ISTRING => true, - self::TEXT => true, - self::ITEXT => true, - ); - - /** - * Validate a variable according to type. Throws - * HTMLPurifier_VarParserException if invalid. - * It may return NULL as a valid type if $allow_null is true. - * - * @param $var Variable to validate - * @param $type Type of variable, see HTMLPurifier_VarParser->types - * @param $allow_null Whether or not to permit null as a value - * @return Validated and type-coerced variable - */ - final public function parse($var, $type, $allow_null = false) { - if (is_string($type)) { - if (!isset(HTMLPurifier_VarParser::$types[$type])) { - throw new HTMLPurifier_VarParserException("Invalid type '$type'"); - } else { - $type = HTMLPurifier_VarParser::$types[$type]; - } - } - $var = $this->parseImplementation($var, $type, $allow_null); - if ($allow_null && $var === null) return null; - // These are basic checks, to make sure nothing horribly wrong - // happened in our implementations. - switch ($type) { - case (self::STRING): - case (self::ISTRING): - case (self::TEXT): - case (self::ITEXT): - if (!is_string($var)) break; - if ($type == self::ISTRING || $type == self::ITEXT) $var = strtolower($var); - return $var; - case (self::INT): - if (!is_int($var)) break; - return $var; - case (self::FLOAT): - if (!is_float($var)) break; - return $var; - case (self::BOOL): - if (!is_bool($var)) break; - return $var; - case (self::LOOKUP): - case (self::ALIST): - case (self::HASH): - if (!is_array($var)) break; - if ($type === self::LOOKUP) { - foreach ($var as $k) if ($k !== true) $this->error('Lookup table contains value other than true'); - } elseif ($type === self::ALIST) { - $keys = array_keys($var); - if (array_keys($keys) !== $keys) $this->error('Indices for list are not uniform'); - } - return $var; - case (self::MIXED): - return $var; - default: - $this->errorInconsistent(get_class($this), $type); - } - $this->errorGeneric($var, $type); - } - - /** - * Actually implements the parsing. Base implementation is to not - * do anything to $var. Subclasses should overload this! - */ - protected function parseImplementation($var, $type, $allow_null) { - return $var; - } - - /** - * Throws an exception. - */ - protected function error($msg) { - throw new HTMLPurifier_VarParserException($msg); - } - - /** - * Throws an inconsistency exception. - * @note This should not ever be called. It would be called if we - * extend the allowed values of HTMLPurifier_VarParser without - * updating subclasses. - */ - protected function errorInconsistent($class, $type) { - throw new HTMLPurifier_Exception("Inconsistency in $class: ".HTMLPurifier_VarParser::getTypeName($type)." not implemented"); - } - - /** - * Generic error for if a type didn't work. - */ - protected function errorGeneric($var, $type) { - $vtype = gettype($var); - $this->error("Expected type ".HTMLPurifier_VarParser::getTypeName($type).", got $vtype"); - } - - static public function getTypeName($type) { - static $lookup; - if (!$lookup) { - // Lazy load the alternative lookup table - $lookup = array_flip(HTMLPurifier_VarParser::$types); - } - if (!isset($lookup[$type])) return 'unknown'; - return $lookup[$type]; - } - -} - -// vim: et sw=4 sts=4 diff --git a/libraries/plugins/IDS/vendors/htmlpurifier/HTMLPurifier/VarParser/Flexible.php b/libraries/plugins/IDS/vendors/htmlpurifier/HTMLPurifier/VarParser/Flexible.php deleted file mode 100644 index 21b8767..0000000 --- a/libraries/plugins/IDS/vendors/htmlpurifier/HTMLPurifier/VarParser/Flexible.php +++ /dev/null @@ -1,103 +0,0 @@ - $j) $var[$i] = trim($j); - if ($type === self::HASH) { - // key:value,key2:value2 - $nvar = array(); - foreach ($var as $keypair) { - $c = explode(':', $keypair, 2); - if (!isset($c[1])) continue; - $nvar[trim($c[0])] = trim($c[1]); - } - $var = $nvar; - } - } - if (!is_array($var)) break; - $keys = array_keys($var); - if ($keys === array_keys($keys)) { - if ($type == self::ALIST) return $var; - elseif ($type == self::LOOKUP) { - $new = array(); - foreach ($var as $key) { - $new[$key] = true; - } - return $new; - } else break; - } - if ($type === self::ALIST) { - trigger_error("Array list did not have consecutive integer indexes", E_USER_WARNING); - return array_values($var); - } - if ($type === self::LOOKUP) { - foreach ($var as $key => $value) { - if ($value !== true) { - trigger_error("Lookup array has non-true value at key '$key'; maybe your input array was not indexed numerically", E_USER_WARNING); - } - $var[$key] = true; - } - } - return $var; - default: - $this->errorInconsistent(__CLASS__, $type); - } - $this->errorGeneric($var, $type); - } - -} - -// vim: et sw=4 sts=4 diff --git a/libraries/plugins/IDS/vendors/htmlpurifier/HTMLPurifier/VarParser/Native.php b/libraries/plugins/IDS/vendors/htmlpurifier/HTMLPurifier/VarParser/Native.php deleted file mode 100644 index b02a6de..0000000 --- a/libraries/plugins/IDS/vendors/htmlpurifier/HTMLPurifier/VarParser/Native.php +++ /dev/null @@ -1,26 +0,0 @@ -evalExpression($var); - } - - protected function evalExpression($expr) { - $var = null; - $result = eval("\$var = $expr;"); - if ($result === false) { - throw new HTMLPurifier_VarParserException("Fatal error in evaluated code"); - } - return $var; - } - -} - -// vim: et sw=4 sts=4 diff --git a/libraries/plugins/IDS/vendors/htmlpurifier/HTMLPurifier/VarParserException.php b/libraries/plugins/IDS/vendors/htmlpurifier/HTMLPurifier/VarParserException.php deleted file mode 100644 index 5df3414..0000000 --- a/libraries/plugins/IDS/vendors/htmlpurifier/HTMLPurifier/VarParserException.php +++ /dev/null @@ -1,11 +0,0 @@ -class. - * - * @param string $class - * the name of the class to load - */ -function mmdb_autoload($class) -{ - /* - * A project-specific mapping between the namespaces and where - * they're located. By convention, we include the trailing - * slashes. The one-element array here simply makes things easy - * to extend in the future if (for example) the test classes - * begin to use one another. - */ - $namespace_map = ['MaxMind\\Db\\' => __DIR__ . '/src/MaxMind/Db/']; - - foreach ($namespace_map as $prefix => $dir) { - /* First swap out the namespace prefix with a directory... */ - $path = str_replace($prefix, $dir, $class); - - /* replace the namespace separator with a directory separator... */ - $path = str_replace('\\', '/', $path); - - /* and finally, add the PHP file extension to the result. */ - $path = $path . '.php'; - - /* $path should now contain the path to a PHP file defining $class */ - if (file_exists($path)) { - include $path; - } - } -} - -spl_autoload_register('mmdb_autoload'); diff --git a/libraries/plugins/MaxMind-DB-Reader/composer.json b/libraries/plugins/MaxMind-DB-Reader/composer.json deleted file mode 100644 index dce4428..0000000 --- a/libraries/plugins/MaxMind-DB-Reader/composer.json +++ /dev/null @@ -1,34 +0,0 @@ -{ - "name": "maxmind-db/reader", - "description": "MaxMind DB Reader API", - "keywords": ["database", "geoip", "geoip2", "geolocation", "maxmind"], - "homepage": "https://github.com/maxmind/MaxMind-DB-Reader-php", - "type": "library", - "license": "Apache-2.0", - "authors": [ - { - "name": "Gregory J. Oschwald", - "email": "goschwald@maxmind.com", - "homepage": "http://www.maxmind.com/" - } - ], - "require": { - "php": ">=5.4" - }, - "suggest": { - "ext-bcmath": "bcmath or gmp is required for decoding larger integers with the pure PHP decoder", - "ext-gmp": "bcmath or gmp is required for decoding larger integers with the pure PHP decoder", - "ext-maxminddb": "A C-based database decoder that provides significantly faster lookups" - }, - "require-dev": { - "friendsofphp/php-cs-fixer": "2.*", - "phpunit/phpunit": "4.* || 5.*", - "satooshi/php-coveralls": "1.0.*", - "squizlabs/php_codesniffer": "3.*" - }, - "autoload": { - "psr-4": { - "MaxMind\\Db\\": "src/MaxMind/Db" - } - } -} diff --git a/libraries/plugins/MaxMind-DB-Reader/ext/config.m4 b/libraries/plugins/MaxMind-DB-Reader/ext/config.m4 deleted file mode 100644 index 675e00c..0000000 --- a/libraries/plugins/MaxMind-DB-Reader/ext/config.m4 +++ /dev/null @@ -1,40 +0,0 @@ -PHP_ARG_WITH(maxminddb, - [Whether to enable the MaxMind DB Reader extension], - [ --with-maxminddb Enable MaxMind DB Reader extension support]) - -PHP_ARG_ENABLE(maxminddb-debug, for MaxMind DB debug support, - [ --enable-maxminddb-debug Enable enable MaxMind DB deubg support], no, no) - -if test $PHP_MAXMINDDB != "no"; then - - AC_PATH_PROG(PKG_CONFIG, pkg-config, no) - - AC_MSG_CHECKING(for libmaxminddb) - if test -x "$PKG_CONFIG" && $PKG_CONFIG --exists libmaxminddb; then - dnl retrieve build options from pkg-config - if $PKG_CONFIG libmaxminddb --atleast-version 1.0.0; then - LIBMAXMINDDB_INC=`$PKG_CONFIG libmaxminddb --cflags` - LIBMAXMINDDB_LIB=`$PKG_CONFIG libmaxminddb --libs` - LIBMAXMINDDB_VER=`$PKG_CONFIG libmaxminddb --modversion` - AC_MSG_RESULT(found version $LIBMAXMINDDB_VER) - else - AC_MSG_ERROR(system libmaxminddb must be upgraded to version >= 1.0.0) - fi - PHP_EVAL_LIBLINE($LIBMAXMINDDB_LIB, MAXMINDDB_SHARED_LIBADD) - PHP_EVAL_INCLINE($LIBMAXMINDDB_INC) - else - AC_MSG_RESULT(pkg-config information missing) - AC_MSG_WARN(will use libmaxmxinddb from compiler default path) - - PHP_CHECK_LIBRARY(maxminddb, MMDB_open) - PHP_ADD_LIBRARY(maxminddb, 1, MAXMINDDB_SHARED_LIBADD) - fi - - if test $PHP_MAXMINDDB_DEBUG != "no"; then - CFLAGS="$CFLAGS -Wall -Wextra -Wno-unused-parameter -Wno-missing-field-initializers -Werror" - fi - - PHP_SUBST(MAXMINDDB_SHARED_LIBADD) - - PHP_NEW_EXTENSION(maxminddb, maxminddb.c, $ext_shared) -fi diff --git a/libraries/plugins/MaxMind-DB-Reader/ext/maxminddb.c b/libraries/plugins/MaxMind-DB-Reader/ext/maxminddb.c deleted file mode 100644 index 91fe8b6..0000000 --- a/libraries/plugins/MaxMind-DB-Reader/ext/maxminddb.c +++ /dev/null @@ -1,623 +0,0 @@ -/* MaxMind, Inc., licenses this file to you under the Apache License, Version - * 2.0 (the "License"); you may not use this file except in compliance with - * the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT - * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the - * License for the specific language governing permissions and limitations - * under the License. - */ - -#include "php_maxminddb.h" - -#ifdef HAVE_CONFIG_H -#include "config.h" -#endif - -#include -#include -#include "Zend/zend_exceptions.h" -#include "ext/standard/info.h" -#include - -#ifdef ZTS -#include -#endif - -#define __STDC_FORMAT_MACROS -#include - -#define PHP_MAXMINDDB_NS ZEND_NS_NAME("MaxMind", "Db") -#define PHP_MAXMINDDB_READER_NS ZEND_NS_NAME(PHP_MAXMINDDB_NS, "Reader") -#define PHP_MAXMINDDB_READER_EX_NS \ - ZEND_NS_NAME(PHP_MAXMINDDB_READER_NS, \ - "InvalidDatabaseException") - -#ifdef ZEND_ENGINE_3 -#define Z_MAXMINDDB_P(zv) php_maxminddb_fetch_object(Z_OBJ_P(zv)) -#define _ZVAL_STRING ZVAL_STRING -#define _ZVAL_STRINGL ZVAL_STRINGL -typedef size_t strsize_t; -typedef zend_object free_obj_t; -#else -#define Z_MAXMINDDB_P(zv) (maxminddb_obj *) zend_object_store_get_object(zv TSRMLS_CC) -#define _ZVAL_STRING(a, b) ZVAL_STRING(a, b, 1) -#define _ZVAL_STRINGL(a, b, c) ZVAL_STRINGL(a, b, c, 1) -typedef int strsize_t; -typedef void free_obj_t; -#endif - -#ifdef ZEND_ENGINE_3 -typedef struct _maxminddb_obj { - MMDB_s *mmdb; - zend_object std; -} maxminddb_obj; -#else -typedef struct _maxminddb_obj { - zend_object std; - MMDB_s *mmdb; -} maxminddb_obj; -#endif - -PHP_FUNCTION(maxminddb); - -static const MMDB_entry_data_list_s *handle_entry_data_list( - const MMDB_entry_data_list_s *entry_data_list, - zval *z_value - TSRMLS_DC); -static const MMDB_entry_data_list_s *handle_array( - const MMDB_entry_data_list_s *entry_data_list, - zval *z_value TSRMLS_DC); -static const MMDB_entry_data_list_s *handle_map( - const MMDB_entry_data_list_s *entry_data_list, - zval *z_value TSRMLS_DC); -static void handle_uint128(const MMDB_entry_data_list_s *entry_data_list, - zval *z_value TSRMLS_DC); -static void handle_uint64(const MMDB_entry_data_list_s *entry_data_list, - zval *z_value TSRMLS_DC); -static void handle_uint32(const MMDB_entry_data_list_s *entry_data_list, - zval *z_value TSRMLS_DC); -static zend_class_entry * lookup_class(const char *name TSRMLS_DC); - -#define CHECK_ALLOCATED(val) \ - if (!val ) { \ - zend_error(E_ERROR, "Out of memory"); \ - return; \ - } \ - -#define THROW_EXCEPTION(name, ... ) \ - { \ - zend_class_entry *exception_ce = lookup_class(name TSRMLS_CC); \ - zend_throw_exception_ex(exception_ce, 0 TSRMLS_CC, __VA_ARGS__); \ - } \ - - -#if PHP_VERSION_ID < 50399 -#define object_properties_init(zo, class_type) \ - { \ - zval *tmp; \ - zend_hash_copy((*zo).properties, \ - &class_type->default_properties, \ - (copy_ctor_func_t)zval_add_ref, \ - (void *)&tmp, \ - sizeof(zval *)); \ - } -#endif - -static zend_object_handlers maxminddb_obj_handlers; -static zend_class_entry *maxminddb_ce; - -static inline maxminddb_obj *php_maxminddb_fetch_object(zend_object *obj TSRMLS_DC){ -#ifdef ZEND_ENGINE_3 - return (maxminddb_obj *)((char*)(obj) - XtOffsetOf(maxminddb_obj, std)); -#else - return (maxminddb_obj *)obj; -#endif -} - -ZEND_BEGIN_ARG_INFO_EX(arginfo_maxmindbreader_construct, 0, 0, 1) - ZEND_ARG_INFO(0, db_file) -ZEND_END_ARG_INFO() - -PHP_METHOD(MaxMind_Db_Reader, __construct){ - char *db_file = NULL; - strsize_t name_len; - zval * _this_zval = NULL; - - if (zend_parse_method_parameters(ZEND_NUM_ARGS() TSRMLS_CC, getThis(), "Os", - &_this_zval, maxminddb_ce, &db_file, &name_len) == FAILURE) { - THROW_EXCEPTION("InvalidArgumentException", - "The constructor takes exactly one argument."); - return; - } - - if (0 != php_check_open_basedir(db_file TSRMLS_CC) || 0 != access(db_file, R_OK)) { - THROW_EXCEPTION("InvalidArgumentException", - "The file \"%s\" does not exist or is not readable.", - db_file); - return; - } - - MMDB_s *mmdb = (MMDB_s *)emalloc(sizeof(MMDB_s)); - uint16_t status = MMDB_open(db_file, MMDB_MODE_MMAP, mmdb); - - if (MMDB_SUCCESS != status) { - THROW_EXCEPTION( - PHP_MAXMINDDB_READER_EX_NS, - "Error opening database file (%s). Is this a valid MaxMind DB file?", - db_file); - efree(mmdb); - return; - } - - maxminddb_obj *mmdb_obj = Z_MAXMINDDB_P(getThis()); - mmdb_obj->mmdb = mmdb; -} - -ZEND_BEGIN_ARG_INFO_EX(arginfo_maxmindbreader_get, 0, 0, 1) - ZEND_ARG_INFO(0, ip_address) -ZEND_END_ARG_INFO() - -PHP_METHOD(MaxMind_Db_Reader, get){ - char *ip_address = NULL; - strsize_t name_len; - zval * _this_zval = NULL; - - if (zend_parse_method_parameters(ZEND_NUM_ARGS() TSRMLS_CC, getThis(), "Os", - &_this_zval, maxminddb_ce, &ip_address, &name_len) == FAILURE) { - THROW_EXCEPTION("InvalidArgumentException", - "Method takes exactly one argument."); - return; - } - - const maxminddb_obj *mmdb_obj = - (maxminddb_obj *)Z_MAXMINDDB_P(getThis()); - - MMDB_s *mmdb = mmdb_obj->mmdb; - - if (NULL == mmdb) { - THROW_EXCEPTION("BadMethodCallException", - "Attempt to read from a closed MaxMind DB."); - return; - } - - int gai_error = 0; - int mmdb_error = MMDB_SUCCESS; - MMDB_lookup_result_s result = - MMDB_lookup_string(mmdb, ip_address, &gai_error, - &mmdb_error); - - if (MMDB_SUCCESS != gai_error) { - THROW_EXCEPTION("InvalidArgumentException", - "The value \"%s\" is not a valid IP address.", - ip_address); - return; - } - - if (MMDB_SUCCESS != mmdb_error) { - char *exception_name; - if (MMDB_IPV6_LOOKUP_IN_IPV4_DATABASE_ERROR == mmdb_error) { - exception_name = "InvalidArgumentException"; - } else { - exception_name = PHP_MAXMINDDB_READER_EX_NS; - } - THROW_EXCEPTION(exception_name, - "Error looking up %s. %s", - ip_address, MMDB_strerror(mmdb_error)); - return; - } - - MMDB_entry_data_list_s *entry_data_list = NULL; - - if (!result.found_entry) { - RETURN_NULL(); - } - - int status = MMDB_get_entry_data_list(&result.entry, &entry_data_list); - - if (MMDB_SUCCESS != status) { - THROW_EXCEPTION(PHP_MAXMINDDB_READER_EX_NS, - "Error while looking up data for %s. %s", - ip_address, MMDB_strerror(status)); - MMDB_free_entry_data_list(entry_data_list); - return; - } else if (NULL == entry_data_list) { - THROW_EXCEPTION( - PHP_MAXMINDDB_READER_EX_NS, - "Error while looking up data for %s. Your database may be corrupt or you have found a bug in libmaxminddb.", - ip_address); - return; - } - - handle_entry_data_list(entry_data_list, return_value TSRMLS_CC); - MMDB_free_entry_data_list(entry_data_list); -} - -ZEND_BEGIN_ARG_INFO_EX(arginfo_maxmindbreader_void, 0, 0, 0) -ZEND_END_ARG_INFO() - -PHP_METHOD(MaxMind_Db_Reader, metadata){ - if (ZEND_NUM_ARGS() != 0) { - THROW_EXCEPTION("InvalidArgumentException", - "Method takes no arguments."); - return; - } - - const maxminddb_obj *const mmdb_obj = - (maxminddb_obj *)Z_MAXMINDDB_P(getThis()); - - if (NULL == mmdb_obj->mmdb) { - THROW_EXCEPTION("BadMethodCallException", - "Attempt to read from a closed MaxMind DB."); - return; - } - - const char *const name = ZEND_NS_NAME(PHP_MAXMINDDB_READER_NS, "Metadata"); - zend_class_entry *metadata_ce = lookup_class(name TSRMLS_CC); - - object_init_ex(return_value, metadata_ce); - -#ifdef ZEND_ENGINE_3 - zval _metadata_array; - zval *metadata_array = &_metadata_array; - ZVAL_NULL(metadata_array); -#else - zval *metadata_array; - ALLOC_INIT_ZVAL(metadata_array); -#endif - - MMDB_entry_data_list_s *entry_data_list; - MMDB_get_metadata_as_entry_data_list(mmdb_obj->mmdb, &entry_data_list); - - handle_entry_data_list(entry_data_list, metadata_array TSRMLS_CC); - MMDB_free_entry_data_list(entry_data_list); -#ifdef ZEND_ENGINE_3 - zend_call_method_with_1_params(return_value, metadata_ce, - &metadata_ce->constructor, - ZEND_CONSTRUCTOR_FUNC_NAME, - NULL, - metadata_array); - zval_ptr_dtor(metadata_array); -#else - zend_call_method_with_1_params(&return_value, metadata_ce, - &metadata_ce->constructor, - ZEND_CONSTRUCTOR_FUNC_NAME, - NULL, - metadata_array); - zval_ptr_dtor(&metadata_array); -#endif -} - -PHP_METHOD(MaxMind_Db_Reader, close){ - if (ZEND_NUM_ARGS() != 0) { - THROW_EXCEPTION("InvalidArgumentException", - "Method takes no arguments."); - return; - } - - maxminddb_obj *mmdb_obj = - (maxminddb_obj *)Z_MAXMINDDB_P(getThis()); - - if (NULL == mmdb_obj->mmdb) { - THROW_EXCEPTION("BadMethodCallException", - "Attempt to close a closed MaxMind DB."); - return; - } - MMDB_close(mmdb_obj->mmdb); - efree(mmdb_obj->mmdb); - mmdb_obj->mmdb = NULL; -} - -static const MMDB_entry_data_list_s *handle_entry_data_list( - const MMDB_entry_data_list_s *entry_data_list, - zval *z_value - TSRMLS_DC) -{ - switch (entry_data_list->entry_data.type) { - case MMDB_DATA_TYPE_MAP: - return handle_map(entry_data_list, z_value TSRMLS_CC); - case MMDB_DATA_TYPE_ARRAY: - return handle_array(entry_data_list, z_value TSRMLS_CC); - case MMDB_DATA_TYPE_UTF8_STRING: - _ZVAL_STRINGL(z_value, - (char *)entry_data_list->entry_data.utf8_string, - entry_data_list->entry_data.data_size); - break; - case MMDB_DATA_TYPE_BYTES: - _ZVAL_STRINGL(z_value, (char *)entry_data_list->entry_data.bytes, - entry_data_list->entry_data.data_size); - break; - case MMDB_DATA_TYPE_DOUBLE: - ZVAL_DOUBLE(z_value, entry_data_list->entry_data.double_value); - break; - case MMDB_DATA_TYPE_FLOAT: - ZVAL_DOUBLE(z_value, entry_data_list->entry_data.float_value); - break; - case MMDB_DATA_TYPE_UINT16: - ZVAL_LONG(z_value, entry_data_list->entry_data.uint16); - break; - case MMDB_DATA_TYPE_UINT32: - handle_uint32(entry_data_list, z_value TSRMLS_CC); - break; - case MMDB_DATA_TYPE_BOOLEAN: - ZVAL_BOOL(z_value, entry_data_list->entry_data.boolean); - break; - case MMDB_DATA_TYPE_UINT64: - handle_uint64(entry_data_list, z_value TSRMLS_CC); - break; - case MMDB_DATA_TYPE_UINT128: - handle_uint128(entry_data_list, z_value TSRMLS_CC); - break; - case MMDB_DATA_TYPE_INT32: - ZVAL_LONG(z_value, entry_data_list->entry_data.int32); - break; - default: - THROW_EXCEPTION(PHP_MAXMINDDB_READER_EX_NS, - "Invalid data type arguments: %d", - entry_data_list->entry_data.type); - return NULL; - } - return entry_data_list; -} - -static const MMDB_entry_data_list_s *handle_map( - const MMDB_entry_data_list_s *entry_data_list, - zval *z_value TSRMLS_DC) -{ - array_init(z_value); - const uint32_t map_size = entry_data_list->entry_data.data_size; - - uint i; - for (i = 0; i < map_size && entry_data_list; i++ ) { - entry_data_list = entry_data_list->next; - - char *key = - estrndup((char *)entry_data_list->entry_data.utf8_string, - entry_data_list->entry_data.data_size); - if (NULL == key) { - THROW_EXCEPTION(PHP_MAXMINDDB_READER_EX_NS, - "Invalid data type arguments"); - return NULL; - } - - entry_data_list = entry_data_list->next; -#ifdef ZEND_ENGINE_3 - zval _new_value; - zval * new_value = &_new_value; - ZVAL_NULL(new_value); -#else - zval *new_value; - ALLOC_INIT_ZVAL(new_value); -#endif - entry_data_list = handle_entry_data_list(entry_data_list, - new_value TSRMLS_CC); - add_assoc_zval(z_value, key, new_value); - efree(key); - } - return entry_data_list; -} - -static const MMDB_entry_data_list_s *handle_array( - const MMDB_entry_data_list_s *entry_data_list, - zval *z_value TSRMLS_DC) -{ - const uint32_t size = entry_data_list->entry_data.data_size; - - array_init(z_value); - - uint i; - for (i = 0; i < size && entry_data_list; i++) { - entry_data_list = entry_data_list->next; -#ifdef ZEND_ENGINE_3 - zval _new_value; - zval * new_value = &_new_value; - ZVAL_NULL(new_value); -#else - zval *new_value; - ALLOC_INIT_ZVAL(new_value); -#endif - entry_data_list = handle_entry_data_list(entry_data_list, - new_value TSRMLS_CC); - add_next_index_zval(z_value, new_value); - } - return entry_data_list; -} - -static void handle_uint128(const MMDB_entry_data_list_s *entry_data_list, - zval *z_value TSRMLS_DC) -{ - uint64_t high = 0; - uint64_t low = 0; -#if MMDB_UINT128_IS_BYTE_ARRAY - int i; - for (i = 0; i < 8; i++) { - high = (high << 8) | entry_data_list->entry_data.uint128[i]; - } - - for (i = 8; i < 16; i++) { - low = (low << 8) | entry_data_list->entry_data.uint128[i]; - } -#else - high = entry_data_list->entry_data.uint128 >> 64; - low = (uint64_t)entry_data_list->entry_data.uint128; -#endif - - char *num_str; - spprintf(&num_str, 0, "0x%016" PRIX64 "%016" PRIX64, high, low); - CHECK_ALLOCATED(num_str); - - _ZVAL_STRING(z_value, num_str); - efree(num_str); -} - -static void handle_uint32(const MMDB_entry_data_list_s *entry_data_list, - zval *z_value TSRMLS_DC) -{ - uint32_t val = entry_data_list->entry_data.uint32; - -#if LONG_MAX >= UINT32_MAX - ZVAL_LONG(z_value, val); - return; -#else - if (val <= LONG_MAX) { - ZVAL_LONG(z_value, val); - return; - } - - char *int_str; - spprintf(&int_str, 0, "%" PRIu32, val); - CHECK_ALLOCATED(int_str); - - _ZVAL_STRING(z_value, int_str); - efree(int_str); -#endif -} - - -static void handle_uint64(const MMDB_entry_data_list_s *entry_data_list, - zval *z_value TSRMLS_DC) -{ - uint64_t val = entry_data_list->entry_data.uint64; - -#if LONG_MAX >= UINT64_MAX - ZVAL_LONG(z_value, val); - return; -#else - if (val <= LONG_MAX) { - ZVAL_LONG(z_value, val); - return; - } - - char *int_str; - spprintf(&int_str, 0, "%" PRIu64, val); - CHECK_ALLOCATED(int_str); - - _ZVAL_STRING(z_value, int_str); - efree(int_str); -#endif -} - -static zend_class_entry *lookup_class(const char *name TSRMLS_DC) -{ -#ifdef ZEND_ENGINE_3 - zend_string *n = zend_string_init(name, strlen(name), 0); - zend_class_entry *ce = zend_lookup_class(n); - zend_string_release(n); - if( NULL == ce ) { - zend_error(E_ERROR, "Class %s not found", name); - } - return ce; -#else - zend_class_entry **ce; - if (FAILURE == - zend_lookup_class(name, strlen(name), - &ce TSRMLS_CC)) { - zend_error(E_ERROR, "Class %s not found", name); - } - return *ce; -#endif -} - -static void maxminddb_free_storage(free_obj_t *object TSRMLS_DC) -{ - maxminddb_obj *obj = php_maxminddb_fetch_object((zend_object *)object TSRMLS_CC); - if (obj->mmdb != NULL) { - MMDB_close(obj->mmdb); - efree(obj->mmdb); - } - - zend_object_std_dtor(&obj->std TSRMLS_CC); -#ifndef ZEND_ENGINE_3 - efree(object); -#endif -} - -#ifdef ZEND_ENGINE_3 -static zend_object *maxminddb_create_handler( - zend_class_entry *type TSRMLS_DC) -{ - maxminddb_obj *obj = (maxminddb_obj *)ecalloc(1, sizeof(maxminddb_obj)); - zend_object_std_init(&obj->std, type TSRMLS_CC); - object_properties_init(&(obj->std), type); - - obj->std.handlers = &maxminddb_obj_handlers; - - return &obj->std; -} -#else -static zend_object_value maxminddb_create_handler( - zend_class_entry *type TSRMLS_DC) -{ - zend_object_value retval; - - maxminddb_obj *obj = (maxminddb_obj *)ecalloc(1, sizeof(maxminddb_obj)); - zend_object_std_init(&obj->std, type TSRMLS_CC); - object_properties_init(&(obj->std), type); - - retval.handle = zend_objects_store_put(obj, NULL, - maxminddb_free_storage, - NULL TSRMLS_CC); - retval.handlers = &maxminddb_obj_handlers; - - return retval; -} -#endif - -/* *INDENT-OFF* */ -static zend_function_entry maxminddb_methods[] = { - PHP_ME(MaxMind_Db_Reader, __construct, arginfo_maxmindbreader_construct, - ZEND_ACC_PUBLIC | ZEND_ACC_CTOR) - PHP_ME(MaxMind_Db_Reader, close, arginfo_maxmindbreader_void, ZEND_ACC_PUBLIC) - PHP_ME(MaxMind_Db_Reader, get, arginfo_maxmindbreader_get, ZEND_ACC_PUBLIC) - PHP_ME(MaxMind_Db_Reader, metadata, arginfo_maxmindbreader_void, ZEND_ACC_PUBLIC) - { NULL, NULL, NULL } -}; -/* *INDENT-ON* */ - -PHP_MINIT_FUNCTION(maxminddb){ - zend_class_entry ce; - - INIT_CLASS_ENTRY(ce, PHP_MAXMINDDB_READER_NS, maxminddb_methods); - maxminddb_ce = zend_register_internal_class(&ce TSRMLS_CC); - maxminddb_ce->create_object = maxminddb_create_handler; - memcpy(&maxminddb_obj_handlers, - zend_get_std_object_handlers(), sizeof(zend_object_handlers)); - maxminddb_obj_handlers.clone_obj = NULL; -#ifdef ZEND_ENGINE_3 - maxminddb_obj_handlers.offset = XtOffsetOf(maxminddb_obj, std); - maxminddb_obj_handlers.free_obj = maxminddb_free_storage; -#endif - - return SUCCESS; -} - -static PHP_MINFO_FUNCTION(maxminddb) -{ - php_info_print_table_start(); - - php_info_print_table_row(2, "MaxMind DB Reader", "enabled"); - php_info_print_table_row(2, "maxminddb extension version", PHP_MAXMINDDB_VERSION); - php_info_print_table_row(2, "libmaxminddb library version", MMDB_lib_version()); - - php_info_print_table_end(); -} - -zend_module_entry maxminddb_module_entry = { - STANDARD_MODULE_HEADER, - PHP_MAXMINDDB_EXTNAME, - NULL, - PHP_MINIT(maxminddb), - NULL, - NULL, - NULL, - PHP_MINFO(maxminddb), - PHP_MAXMINDDB_VERSION, - STANDARD_MODULE_PROPERTIES -}; - -#ifdef COMPILE_DL_MAXMINDDB -ZEND_GET_MODULE(maxminddb) -#endif diff --git a/libraries/plugins/MaxMind-DB-Reader/ext/php_maxminddb.h b/libraries/plugins/MaxMind-DB-Reader/ext/php_maxminddb.h deleted file mode 100644 index ecb5b10..0000000 --- a/libraries/plugins/MaxMind-DB-Reader/ext/php_maxminddb.h +++ /dev/null @@ -1,24 +0,0 @@ -/* MaxMind, Inc., licenses this file to you under the Apache License, Version - * 2.0 (the "License"); you may not use this file except in compliance with - * the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT - * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the - * License for the specific language governing permissions and limitations - * under the License. - */ - -#include - -#ifndef PHP_MAXMINDDB_H -#define PHP_MAXMINDDB_H 1 -#define PHP_MAXMINDDB_VERSION "1.4.1" -#define PHP_MAXMINDDB_EXTNAME "maxminddb" - -extern zend_module_entry maxminddb_module_entry; -#define phpext_maxminddb_ptr &maxminddb_module_entry - -#endif diff --git a/libraries/plugins/MaxMind-DB-Reader/src/MaxMind/Db/Reader.php b/libraries/plugins/MaxMind-DB-Reader/src/MaxMind/Db/Reader.php deleted file mode 100644 index 745f7bb..0000000 --- a/libraries/plugins/MaxMind-DB-Reader/src/MaxMind/Db/Reader.php +++ /dev/null @@ -1,309 +0,0 @@ -get method. - */ -class Reader -{ - private static $DATA_SECTION_SEPARATOR_SIZE = 16; - private static $METADATA_START_MARKER = "\xAB\xCD\xEFMaxMind.com"; - private static $METADATA_START_MARKER_LENGTH = 14; - private static $METADATA_MAX_SIZE = 131072; // 128 * 1024 = 128KB - - private $decoder; - private $fileHandle; - private $fileSize; - private $ipV4Start; - private $metadata; - - /** - * Constructs a Reader for the MaxMind DB format. The file passed to it must - * be a valid MaxMind DB file such as a GeoIp2 database file. - * - * @param string $database - * the MaxMind DB file to use - * - * @throws \InvalidArgumentException for invalid database path or unknown arguments - * @throws \MaxMind\Db\Reader\InvalidDatabaseException - * if the database is invalid or there is an error reading - * from it - */ - public function __construct($database) - { - if (\func_num_args() !== 1) { - throw new \InvalidArgumentException( - 'The constructor takes exactly one argument.' - ); - } - - if (!is_readable($database)) { - throw new \InvalidArgumentException( - "The file \"$database\" does not exist or is not readable." - ); - } - $this->fileHandle = @fopen($database, 'rb'); - if ($this->fileHandle === false) { - throw new \InvalidArgumentException( - "Error opening \"$database\"." - ); - } - $this->fileSize = @filesize($database); - if ($this->fileSize === false) { - throw new \UnexpectedValueException( - "Error determining the size of \"$database\"." - ); - } - - $start = $this->findMetadataStart($database); - $metadataDecoder = new Decoder($this->fileHandle, $start); - list($metadataArray) = $metadataDecoder->decode($start); - $this->metadata = new Metadata($metadataArray); - $this->decoder = new Decoder( - $this->fileHandle, - $this->metadata->searchTreeSize + self::$DATA_SECTION_SEPARATOR_SIZE - ); - } - - /** - * Looks up the address in the MaxMind DB. - * - * @param string $ipAddress - * the IP address to look up - * - * @throws \BadMethodCallException if this method is called on a closed database - * @throws \InvalidArgumentException if something other than a single IP address is passed to the method - * @throws InvalidDatabaseException - * if the database is invalid or there is an error reading - * from it - * - * @return array the record for the IP address - */ - public function get($ipAddress) - { - if (\func_num_args() !== 1) { - throw new \InvalidArgumentException( - 'Method takes exactly one argument.' - ); - } - - if (!\is_resource($this->fileHandle)) { - throw new \BadMethodCallException( - 'Attempt to read from a closed MaxMind DB.' - ); - } - - if (!filter_var($ipAddress, FILTER_VALIDATE_IP)) { - throw new \InvalidArgumentException( - "The value \"$ipAddress\" is not a valid IP address." - ); - } - - if ($this->metadata->ipVersion === 4 && strrpos($ipAddress, ':')) { - throw new \InvalidArgumentException( - "Error looking up $ipAddress. You attempted to look up an" - . ' IPv6 address in an IPv4-only database.' - ); - } - $pointer = $this->findAddressInTree($ipAddress); - if ($pointer === 0) { - return null; - } - - return $this->resolveDataPointer($pointer); - } - - private function findAddressInTree($ipAddress) - { - // XXX - could simplify. Done as a byte array to ease porting - $rawAddress = array_merge(unpack('C*', inet_pton($ipAddress))); - - $bitCount = \count($rawAddress) * 8; - - // The first node of the tree is always node 0, at the beginning of the - // value - $node = $this->startNode($bitCount); - - for ($i = 0; $i < $bitCount; ++$i) { - if ($node >= $this->metadata->nodeCount) { - break; - } - $tempBit = 0xFF & $rawAddress[$i >> 3]; - $bit = 1 & ($tempBit >> 7 - ($i % 8)); - - $node = $this->readNode($node, $bit); - } - if ($node === $this->metadata->nodeCount) { - // Record is empty - return 0; - } elseif ($node > $this->metadata->nodeCount) { - // Record is a data pointer - return $node; - } - throw new InvalidDatabaseException('Something bad happened'); - } - - private function startNode($length) - { - // Check if we are looking up an IPv4 address in an IPv6 tree. If this - // is the case, we can skip over the first 96 nodes. - if ($this->metadata->ipVersion === 6 && $length === 32) { - return $this->ipV4StartNode(); - } - // The first node of the tree is always node 0, at the beginning of the - // value - return 0; - } - - private function ipV4StartNode() - { - // This is a defensive check. There is no reason to call this when you - // have an IPv4 tree. - if ($this->metadata->ipVersion === 4) { - return 0; - } - - if ($this->ipV4Start) { - return $this->ipV4Start; - } - $node = 0; - - for ($i = 0; $i < 96 && $node < $this->metadata->nodeCount; ++$i) { - $node = $this->readNode($node, 0); - } - $this->ipV4Start = $node; - - return $node; - } - - private function readNode($nodeNumber, $index) - { - $baseOffset = $nodeNumber * $this->metadata->nodeByteSize; - - // XXX - probably could condense this. - switch ($this->metadata->recordSize) { - case 24: - $bytes = Util::read($this->fileHandle, $baseOffset + $index * 3, 3); - list(, $node) = unpack('N', "\x00" . $bytes); - - return $node; - case 28: - $middleByte = Util::read($this->fileHandle, $baseOffset + 3, 1); - list(, $middle) = unpack('C', $middleByte); - if ($index === 0) { - $middle = (0xF0 & $middle) >> 4; - } else { - $middle = 0x0F & $middle; - } - $bytes = Util::read($this->fileHandle, $baseOffset + $index * 4, 3); - list(, $node) = unpack('N', \chr($middle) . $bytes); - - return $node; - case 32: - $bytes = Util::read($this->fileHandle, $baseOffset + $index * 4, 4); - list(, $node) = unpack('N', $bytes); - - return $node; - default: - throw new InvalidDatabaseException( - 'Unknown record size: ' - . $this->metadata->recordSize - ); - } - } - - private function resolveDataPointer($pointer) - { - $resolved = $pointer - $this->metadata->nodeCount - + $this->metadata->searchTreeSize; - if ($resolved > $this->fileSize) { - throw new InvalidDatabaseException( - "The MaxMind DB file's search tree is corrupt" - ); - } - - list($data) = $this->decoder->decode($resolved); - - return $data; - } - - /* - * This is an extremely naive but reasonably readable implementation. There - * are much faster algorithms (e.g., Boyer-Moore) for this if speed is ever - * an issue, but I suspect it won't be. - */ - private function findMetadataStart($filename) - { - $handle = $this->fileHandle; - $fstat = fstat($handle); - $fileSize = $fstat['size']; - $marker = self::$METADATA_START_MARKER; - $markerLength = self::$METADATA_START_MARKER_LENGTH; - $metadataMaxLengthExcludingMarker - = min(self::$METADATA_MAX_SIZE, $fileSize) - $markerLength; - - for ($i = 0; $i <= $metadataMaxLengthExcludingMarker; ++$i) { - for ($j = 0; $j < $markerLength; ++$j) { - fseek($handle, $fileSize - $i - $j - 1); - $matchBit = fgetc($handle); - if ($matchBit !== $marker[$markerLength - $j - 1]) { - continue 2; - } - } - - return $fileSize - $i; - } - throw new InvalidDatabaseException( - "Error opening database file ($filename). " . - 'Is this a valid MaxMind DB file?' - ); - } - - /** - * @throws \InvalidArgumentException if arguments are passed to the method - * @throws \BadMethodCallException if the database has been closed - * - * @return Metadata object for the database - */ - public function metadata() - { - if (\func_num_args()) { - throw new \InvalidArgumentException( - 'Method takes no arguments.' - ); - } - - // Not technically required, but this makes it consistent with - // C extension and it allows us to change our implementation later. - if (!\is_resource($this->fileHandle)) { - throw new \BadMethodCallException( - 'Attempt to read from a closed MaxMind DB.' - ); - } - - return $this->metadata; - } - - /** - * Closes the MaxMind DB and returns resources to the system. - * - * @throws \Exception - * if an I/O error occurs - */ - public function close() - { - if (!\is_resource($this->fileHandle)) { - throw new \BadMethodCallException( - 'Attempt to close a closed MaxMind DB.' - ); - } - fclose($this->fileHandle); - } -} diff --git a/libraries/plugins/MaxMind-DB-Reader/src/MaxMind/Db/Reader/Decoder.php b/libraries/plugins/MaxMind-DB-Reader/src/MaxMind/Db/Reader/Decoder.php deleted file mode 100644 index a71b3de..0000000 --- a/libraries/plugins/MaxMind-DB-Reader/src/MaxMind/Db/Reader/Decoder.php +++ /dev/null @@ -1,341 +0,0 @@ -fileStream = $fileStream; - $this->pointerBase = $pointerBase; - - $this->pointerBaseByteSize = $pointerBase > 0 ? log($pointerBase, 2) / 8 : 0; - $this->pointerTestHack = $pointerTestHack; - - $this->switchByteOrder = $this->isPlatformLittleEndian(); - } - - public function decode($offset) - { - list(, $ctrlByte) = unpack( - 'C', - Util::read($this->fileStream, $offset, 1) - ); - ++$offset; - - $type = $ctrlByte >> 5; - - // Pointers are a special case, we don't read the next $size bytes, we - // use the size to determine the length of the pointer and then follow - // it. - if ($type === self::_POINTER) { - list($pointer, $offset) = $this->decodePointer($ctrlByte, $offset); - - // for unit testing - if ($this->pointerTestHack) { - return [$pointer]; - } - - list($result) = $this->decode($pointer); - - return [$result, $offset]; - } - - if ($type === self::_EXTENDED) { - list(, $nextByte) = unpack( - 'C', - Util::read($this->fileStream, $offset, 1) - ); - - $type = $nextByte + 7; - - if ($type < 8) { - throw new InvalidDatabaseException( - 'Something went horribly wrong in the decoder. An extended type ' - . 'resolved to a type number < 8 (' - . $type - . ')' - ); - } - - ++$offset; - } - - list($size, $offset) = $this->sizeFromCtrlByte($ctrlByte, $offset); - - return $this->decodeByType($type, $offset, $size); - } - - private function decodeByType($type, $offset, $size) - { - switch ($type) { - case self::_MAP: - return $this->decodeMap($size, $offset); - case self::_ARRAY: - return $this->decodeArray($size, $offset); - case self::_BOOLEAN: - return [$this->decodeBoolean($size), $offset]; - } - - $newOffset = $offset + $size; - $bytes = Util::read($this->fileStream, $offset, $size); - switch ($type) { - case self::_BYTES: - case self::_UTF8_STRING: - return [$bytes, $newOffset]; - case self::_DOUBLE: - $this->verifySize(8, $size); - - return [$this->decodeDouble($bytes), $newOffset]; - case self::_FLOAT: - $this->verifySize(4, $size); - - return [$this->decodeFloat($bytes), $newOffset]; - case self::_INT32: - return [$this->decodeInt32($bytes, $size), $newOffset]; - case self::_UINT16: - case self::_UINT32: - case self::_UINT64: - case self::_UINT128: - return [$this->decodeUint($bytes, $size), $newOffset]; - default: - throw new InvalidDatabaseException( - 'Unknown or unexpected type: ' . $type - ); - } - } - - private function verifySize($expected, $actual) - { - if ($expected !== $actual) { - throw new InvalidDatabaseException( - "The MaxMind DB file's data section contains bad data (unknown data type or corrupt data)" - ); - } - } - - private function decodeArray($size, $offset) - { - $array = []; - - for ($i = 0; $i < $size; ++$i) { - list($value, $offset) = $this->decode($offset); - array_push($array, $value); - } - - return [$array, $offset]; - } - - private function decodeBoolean($size) - { - return $size === 0 ? false : true; - } - - private function decodeDouble($bits) - { - // This assumes IEEE 754 doubles, but most (all?) modern platforms - // use them. - // - // We are not using the "E" format as that was only added in - // 7.0.15 and 7.1.1. As such, we must switch byte order on - // little endian machines. - list(, $double) = unpack('d', $this->maybeSwitchByteOrder($bits)); - - return $double; - } - - private function decodeFloat($bits) - { - // This assumes IEEE 754 floats, but most (all?) modern platforms - // use them. - // - // We are not using the "G" format as that was only added in - // 7.0.15 and 7.1.1. As such, we must switch byte order on - // little endian machines. - list(, $float) = unpack('f', $this->maybeSwitchByteOrder($bits)); - - return $float; - } - - private function decodeInt32($bytes, $size) - { - switch ($size) { - case 0: - return 0; - case 1: - case 2: - case 3: - $bytes = str_pad($bytes, 4, "\x00", STR_PAD_LEFT); - break; - case 4: - break; - default: - throw new InvalidDatabaseException( - "The MaxMind DB file's data section contains bad data (unknown data type or corrupt data)" - ); - } - - list(, $int) = unpack('l', $this->maybeSwitchByteOrder($bytes)); - - return $int; - } - - private function decodeMap($size, $offset) - { - $map = []; - - for ($i = 0; $i < $size; ++$i) { - list($key, $offset) = $this->decode($offset); - list($value, $offset) = $this->decode($offset); - $map[$key] = $value; - } - - return [$map, $offset]; - } - - private function decodePointer($ctrlByte, $offset) - { - $pointerSize = (($ctrlByte >> 3) & 0x3) + 1; - - $buffer = Util::read($this->fileStream, $offset, $pointerSize); - $offset = $offset + $pointerSize; - - switch ($pointerSize) { - case 1: - $packed = (pack('C', $ctrlByte & 0x7)) . $buffer; - list(, $pointer) = unpack('n', $packed); - $pointer += $this->pointerBase; - break; - case 2: - $packed = "\x00" . (pack('C', $ctrlByte & 0x7)) . $buffer; - list(, $pointer) = unpack('N', $packed); - $pointer += $this->pointerBase + 2048; - break; - case 3: - $packed = (pack('C', $ctrlByte & 0x7)) . $buffer; - - // It is safe to use 'N' here, even on 32 bit machines as the - // first bit is 0. - list(, $pointer) = unpack('N', $packed); - $pointer += $this->pointerBase + 526336; - break; - case 4: - // We cannot use unpack here as we might overflow on 32 bit - // machines - $pointerOffset = $this->decodeUint($buffer, $pointerSize); - - $byteLength = $pointerSize + $this->pointerBaseByteSize; - - if ($byteLength <= _MM_MAX_INT_BYTES) { - $pointer = $pointerOffset + $this->pointerBase; - } elseif (\extension_loaded('gmp')) { - $pointer = gmp_strval(gmp_add($pointerOffset, $this->pointerBase)); - } elseif (\extension_loaded('bcmath')) { - $pointer = bcadd($pointerOffset, $this->pointerBase); - } else { - throw new \RuntimeException( - 'The gmp or bcmath extension must be installed to read this database.' - ); - } - } - - return [$pointer, $offset]; - } - - private function decodeUint($bytes, $byteLength) - { - if ($byteLength === 0) { - return 0; - } - - $integer = 0; - - for ($i = 0; $i < $byteLength; ++$i) { - $part = \ord($bytes[$i]); - - // We only use gmp or bcmath if the final value is too big - if ($byteLength <= _MM_MAX_INT_BYTES) { - $integer = ($integer << 8) + $part; - } elseif (\extension_loaded('gmp')) { - $integer = gmp_strval(gmp_add(gmp_mul($integer, 256), $part)); - } elseif (\extension_loaded('bcmath')) { - $integer = bcadd(bcmul($integer, 256), $part); - } else { - throw new \RuntimeException( - 'The gmp or bcmath extension must be installed to read this database.' - ); - } - } - - return $integer; - } - - private function sizeFromCtrlByte($ctrlByte, $offset) - { - $size = $ctrlByte & 0x1f; - - if ($size < 29) { - return [$size, $offset]; - } - - $bytesToRead = $size - 28; - $bytes = Util::read($this->fileStream, $offset, $bytesToRead); - - if ($size === 29) { - $size = 29 + \ord($bytes); - } elseif ($size === 30) { - list(, $adjust) = unpack('n', $bytes); - $size = 285 + $adjust; - } elseif ($size > 30) { - list(, $adjust) = unpack('N', "\x00" . $bytes); - $size = ($adjust & (0x0FFFFFFF >> (32 - (8 * $bytesToRead)))) - + 65821; - } - - return [$size, $offset + $bytesToRead]; - } - - private function maybeSwitchByteOrder($bytes) - { - return $this->switchByteOrder ? strrev($bytes) : $bytes; - } - - private function isPlatformLittleEndian() - { - $testint = 0x00FF; - $packed = pack('S', $testint); - - return $testint === current(unpack('v', $packed)); - } -} diff --git a/libraries/plugins/MaxMind-DB-Reader/src/MaxMind/Db/Reader/InvalidDatabaseException.php b/libraries/plugins/MaxMind-DB-Reader/src/MaxMind/Db/Reader/InvalidDatabaseException.php deleted file mode 100644 index d2a9a77..0000000 --- a/libraries/plugins/MaxMind-DB-Reader/src/MaxMind/Db/Reader/InvalidDatabaseException.php +++ /dev/null @@ -1,10 +0,0 @@ -binaryFormatMajorVersion = - $metadata['binary_format_major_version']; - $this->binaryFormatMinorVersion = - $metadata['binary_format_minor_version']; - $this->buildEpoch = $metadata['build_epoch']; - $this->databaseType = $metadata['database_type']; - $this->languages = $metadata['languages']; - $this->description = $metadata['description']; - $this->ipVersion = $metadata['ip_version']; - $this->nodeCount = $metadata['node_count']; - $this->recordSize = $metadata['record_size']; - $this->nodeByteSize = $this->recordSize / 4; - $this->searchTreeSize = $this->nodeCount * $this->nodeByteSize; - } - - public function __get($var) - { - return $this->$var; - } -} diff --git a/libraries/plugins/MaxMind-DB-Reader/src/MaxMind/Db/Reader/Util.php b/libraries/plugins/MaxMind-DB-Reader/src/MaxMind/Db/Reader/Util.php deleted file mode 100644 index 87ebbf1..0000000 --- a/libraries/plugins/MaxMind-DB-Reader/src/MaxMind/Db/Reader/Util.php +++ /dev/null @@ -1,26 +0,0 @@ - - - - - Title - - - - - \ No newline at end of file diff --git a/libraries/plugins/ip_address/ip-lib.php b/libraries/plugins/ip_address/ip-lib.php deleted file mode 100644 index c1590ef..0000000 --- a/libraries/plugins/ip_address/ip-lib.php +++ /dev/null @@ -1,13 +0,0 @@ -range = $range; - $this->type = $type; - $this->exceptions = $exceptions; - } - - /** - * Get the range definition. - * - * @return \IPLib\Range\RangeInterface - */ - public function getRange() - { - return $this->range; - } - - /** - * Get the range type. - * - * @return int one of the \IPLib\Range\Type::T_ constants - */ - public function getType() - { - return $this->type; - } - - /** - * Get the list of exceptions for this range type. - * - * @return \IPLib\Address\AssignedRange[] - */ - public function getExceptions() - { - return $this->exceptions; - } - - /** - * Get the assigned type for a specific address. - * - * @param AddressInterface $address - * - * @return int|null return NULL of the address is outside this address; a \IPLib\Range\Type::T_ constant otherwise - */ - public function getAddressType(AddressInterface $address) - { - $result = null; - if ($this->range->contains($address)) { - foreach ($this->exceptions as $exception) { - $result = $exception->getAddressType($address); - if ($result !== null) { - break; - } - } - if ($result === null) { - $result = $this->type; - } - } - - return $result; - } - - /** - * Get the assigned type for a specific address range. - * - * @param RangeInterface $address - * - * @return int|null|false return NULL of the range is fully outside this range; false if it's partly crosses this range (or it contains mixed types); a \IPLib\Range\Type::T_ constant otherwise - */ - public function getRangeType(RangeInterface $range) - { - $myStart = $this->range->getComparableStartString(); - $rangeEnd = $range->getComparableEndString(); - if ($myStart > $rangeEnd) { - $result = null; - } else { - $myEnd = $this->range->getComparableEndString(); - $rangeStart = $range->getComparableStartString(); - if ($myEnd < $rangeStart) { - $result = null; - } elseif ($rangeStart < $myStart || $rangeEnd > $myEnd) { - $result = false; - } else { - $result = null; - foreach ($this->exceptions as $exception) { - $result = $exception->getRangeType($range); - if ($result !== null) { - break; - } - } - if ($result === null) { - $result = $this->getType(); - } - } - } - - return $result; - } -} diff --git a/libraries/plugins/ip_address/src/Address/IPv4.php b/libraries/plugins/ip_address/src/Address/IPv4.php deleted file mode 100644 index 0c9789e..0000000 --- a/libraries/plugins/ip_address/src/Address/IPv4.php +++ /dev/null @@ -1,351 +0,0 @@ -address = $address; - $this->bytes = null; - $this->rangeType = null; - $this->comparableString = null; - } - - /** - * Parse a string and returns an IPv4 instance if the string is valid, or null otherwise. - * - * @param string|mixed $address the address to parse - * @param bool $mayIncludePort set to false to avoid parsing addresses with ports - * - * @return static|null - */ - public static function fromString($address, $mayIncludePort = true) - { - $result = null; - if (is_string($address) && strpos($address, '.')) { - $rx = '([0-9]{1,3})\.([0-9]{1,3})\.([0-9]{1,3})\.([0-9]{1,3})'; - if ($mayIncludePort) { - $rx .= '(?::\d+)?'; - } - if (preg_match('/^'.$rx.'$/', $address, $matches)) { - $ok = true; - $nums = array(); - for ($i = 1; $ok && $i <= 4; ++$i) { - $ok = false; - $n = (int) $matches[$i]; - if ($n >= 0 && $n <= 255) { - $ok = true; - $nums[] = (string) $n; - } - } - if ($ok) { - $result = new static(implode('.', $nums)); - } - } - } - - return $result; - } - - /** - * Parse an array of bytes and returns an IPv4 instance if the array is valid, or null otherwise. - * - * @param int[]|array $bytes - * - * @return static|null - */ - public static function fromBytes(array $bytes) - { - $result = null; - if (count($bytes) === 4) { - $chunks = array_map( - function ($byte) { - return (is_int($byte) && $byte >= 0 && $byte <= 255) ? (string) $byte : false; - }, - $bytes - ); - if (in_array(false, $chunks, true) === false) { - $result = new static(implode('.', $chunks)); - } - } - - return $result; - } - - /** - * {@inheritdoc} - * - * @see AddressInterface::toString() - */ - public function toString($long = false) - { - if ($long) { - return $this->getComparableString(); - } - - return $this->address; - } - - /** - * {@inheritdoc} - * - * @see AddressInterface::__toString() - */ - public function __toString() - { - return $this->address; - } - - /** - * {@inheritdoc} - * - * @see AddressInterface::getBytes() - */ - public function getBytes() - { - if ($this->bytes === null) { - $this->bytes = array_map( - function ($chunk) { - return (int) $chunk; - }, - explode('.', $this->address) - ); - } - - return $this->bytes; - } - - /** - * {@inheritdoc} - * - * @see AddressInterface::getAddressType() - */ - public function getAddressType() - { - return Type::T_IPv4; - } - - /** - * {@inheritdoc} - * - * @see AddressInterface::getDefaultReservedRangeType() - */ - public static function getDefaultReservedRangeType() - { - return RangeType::T_PUBLIC; - } - - /** - * {@inheritdoc} - * - * @see AddressInterface::getReservedRanges() - */ - public static function getReservedRanges() - { - if (self::$reservedRanges === null) { - $reservedRanges = array(); - foreach (array( - // RFC 5735 - '0.0.0.0/8' => array(RangeType::T_THISNETWORK, array('0.0.0.0/32' => RangeType::T_UNSPECIFIED)), - // RFC 5735 - '10.0.0.0/8' => array(RangeType::T_PRIVATENETWORK), - // RFC 5735 - '127.0.0.0/8' => array(RangeType::T_LOOPBACK), - // RFC 5735 - '169.254.0.0/16' => array(RangeType::T_LINKLOCAL), - // RFC 5735 - '172.16.0.0/12' => array(RangeType::T_PRIVATENETWORK), - // RFC 5735 - '192.0.0.0/24' => array(RangeType::T_RESERVED), - // RFC 5735 - '192.0.2.0/24' => array(RangeType::T_RESERVED), - // RFC 5735 - '192.88.99.0/24' => array(RangeType::T_ANYCASTRELAY), - // RFC 5735 - '192.168.0.0/16' => array(RangeType::T_PRIVATENETWORK), - // RFC 5735 - '198.18.0.0/15' => array(RangeType::T_RESERVED), - // RFC 5735 - '198.51.100.0/24' => array(RangeType::T_RESERVED), - // RFC 5735 - '203.0.113.0/24' => array(RangeType::T_RESERVED), - // RFC 5735 - '224.0.0.0/4' => array(RangeType::T_MULTICAST), - // RFC 5735 - '240.0.0.0/4' => array(RangeType::T_RESERVED, array('255.255.255.255/32' => RangeType::T_LIMITEDBROADCAST)), - ) as $range => $data) { - $exceptions = array(); - if (isset($data[1])) { - foreach ($data[1] as $exceptionRange => $exceptionType) { - $exceptions[] = new AssignedRange(Subnet::fromString($exceptionRange), $exceptionType); - } - } - $reservedRanges[] = new AssignedRange(Subnet::fromString($range), $data[0], $exceptions); - } - self::$reservedRanges = $reservedRanges; - } - - return self::$reservedRanges; - } - - /** - * {@inheritdoc} - * - * @see AddressInterface::getRangeType() - */ - public function getRangeType() - { - if ($this->rangeType === null) { - $rangeType = null; - foreach (static::getReservedRanges() as $reservedRange) { - $rangeType = $reservedRange->getAddressType($this); - if ($rangeType !== null) { - break; - } - } - $this->rangeType = $rangeType === null ? static::getDefaultReservedRangeType() : $rangeType; - } - - return $this->rangeType; - } - - /** - * Create an IPv6 representation of this address. - * - * @return IPv6 - */ - public function toIPv6() - { - $myBytes = $this->getBytes(); - - return IPv6::fromString('2002:'.sprintf('%02x', $myBytes[0]).sprintf('%02x', $myBytes[1]).':'.sprintf('%02x', $myBytes[2]).sprintf('%02x', $myBytes[3]).'::'); - } - - /** - * {@inheritdoc} - * - * @see AddressInterface::getComparableString() - */ - public function getComparableString() - { - if ($this->comparableString === null) { - $chunks = array(); - foreach ($this->getBytes() as $byte) { - $chunks[] = sprintf('%03d', $byte); - } - $this->comparableString = implode('.', $chunks); - } - - return $this->comparableString; - } - - /** - * {@inheritdoc} - * - * @see AddressInterface::matches() - */ - public function matches(RangeInterface $range) - { - return $range->contains($this); - } - - /** - * {@inheritdoc} - * - * @see AddressInterface::getNextAddress() - */ - public function getNextAddress() - { - $overflow = false; - $bytes = $this->getBytes(); - for ($i = count($bytes) - 1; $i >= 0; --$i) { - if ($bytes[$i] === 255) { - if ($i === 0) { - $overflow = true; - break; - } - $bytes[$i] = 0; - } else { - ++$bytes[$i]; - break; - } - } - - return $overflow ? null : static::fromBytes($bytes); - } - - /** - * {@inheritdoc} - * - * @see AddressInterface::getPreviousAddress() - */ - public function getPreviousAddress() - { - $overflow = false; - $bytes = $this->getBytes(); - for ($i = count($bytes) - 1; $i >= 0; --$i) { - if ($bytes[$i] === 0) { - if ($i === 0) { - $overflow = true; - break; - } - $bytes[$i] = 255; - } else { - --$bytes[$i]; - break; - } - } - - return $overflow ? null : static::fromBytes($bytes); - } -} diff --git a/libraries/plugins/ip_address/src/Address/IPv6.php b/libraries/plugins/ip_address/src/Address/IPv6.php deleted file mode 100644 index 98ee4ec..0000000 --- a/libraries/plugins/ip_address/src/Address/IPv6.php +++ /dev/null @@ -1,499 +0,0 @@ -longAddress = $longAddress; - $this->shortAddress = null; - $this->bytes = null; - $this->words = null; - $this->rangeType = null; - } - - /** - * Parse a string and returns an IPv6 instance if the string is valid, or null otherwise. - * - * @param string|mixed $address the address to parse - * @param bool $mayIncludePort set to false to avoid parsing addresses with ports - * @param bool $mayIncludeZoneID set to false to avoid parsing addresses with zone IDs (see RFC 4007) - * - * @return static|null - */ - public static function fromString($address, $mayIncludePort = true, $mayIncludeZoneID = true) - { - $result = null; - if (is_string($address) && strpos($address, ':') !== false && strpos($address, ':::') === false) { - if ($mayIncludePort && $address[0] === '[' && preg_match('/^\[(.+)\]:\d+$/', $address, $matches)) { - $address = $matches[1]; - } - if ($mayIncludeZoneID) { - $percentagePos = strpos($address, '%'); - if ($percentagePos > 0) { - $address = substr($address, 0, $percentagePos); - } - } - if (preg_match('/^([0:]+:ffff:)(\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3})$/i', $address, $matches)) { - // IPv4 embedded in IPv6 - $address6 = static::fromString($matches[1].'0:0', false); - if ($address6 !== null) { - $address4 = IPv4::fromString($matches[2], false); - if ($address4 !== null) { - $bytes4 = $address4->getBytes(); - $address6->longAddress = substr($address6->longAddress, 0, -9).sprintf('%02x%02x:%02x%02x', $bytes4[0], $bytes4[1], $bytes4[2], $bytes4[3]); - $result = $address6; - } - } - } else { - if (strpos($address, '::') === false) { - $chunks = explode(':', $address); - } else { - $chunks = array(); - $parts = explode('::', $address); - if (count($parts) === 2) { - $before = ($parts[0] === '') ? array() : explode(':', $parts[0]); - $after = ($parts[1] === '') ? array() : explode(':', $parts[1]); - $missing = 8 - count($before) - count($after); - if ($missing >= 0) { - $chunks = $before; - if ($missing !== 0) { - $chunks = array_merge($chunks, array_fill(0, $missing, '0')); - } - $chunks = array_merge($chunks, $after); - } - } - } - if (count($chunks) === 8) { - $nums = array_map( - function ($chunk) { - return preg_match('/^[0-9A-Fa-f]{1,4}$/', $chunk) ? hexdec($chunk) : false; - }, - $chunks - ); - if (!in_array(false, $nums, true)) { - $longAddress = implode( - ':', - array_map( - function ($num) { - return sprintf('%04x', $num); - }, - $nums - ) - ); - $result = new static($longAddress); - } - } - } - } - - return $result; - } - - /** - * Parse an array of bytes and returns an IPv6 instance if the array is valid, or null otherwise. - * - * @param int[]|array $bytes - * - * @return static|null - */ - public static function fromBytes(array $bytes) - { - $result = null; - if (count($bytes) === 16) { - $address = ''; - for ($i = 0; $i < 16; ++$i) { - if ($i !== 0 && $i % 2 === 0) { - $address .= ':'; - } - $byte = $bytes[$i]; - if (is_int($byte) && $byte >= 0 && $byte <= 255) { - $address .= sprintf('%02x', $byte); - } else { - $address = null; - break; - } - } - if ($address !== null) { - $result = new static($address); - } - } - - return $result; - } - - /** - * Parse an array of words and returns an IPv6 instance if the array is valid, or null otherwise. - * - * @param int[]|array $words - * - * @return static|null - */ - public static function fromWords(array $words) - { - $result = null; - if (count($words) === 8) { - $chunks = array(); - for ($i = 0; $i < 8; ++$i) { - $word = $words[$i]; - if (is_int($word) && $word >= 0 && $word <= 0xffff) { - $chunks[] = sprintf('%04x', $word); - } else { - $chunks = null; - break; - } - } - if ($chunks !== null) { - $result = new static(implode(':', $chunks)); - } - } - - return $result; - } - - /** - * {@inheritdoc} - * - * @see AddressInterface::toString() - */ - public function toString($long = false) - { - if ($long) { - $result = $this->longAddress; - } else { - if ($this->shortAddress === null) { - if (strpos($this->longAddress, '0000:0000:0000:0000:0000:ffff:') === 0) { - $lastBytes = array_slice($this->getBytes(), -4); - $this->shortAddress = '::ffff:'.implode('.', $lastBytes); - } else { - $chunks = array_map( - function ($word) { - return dechex($word); - }, - $this->getWords() - ); - $shortAddress = implode(':', $chunks); - for ($i = 8; $i > 1; --$i) { - $search = '(?:^|:)'.rtrim(str_repeat('0:', $i), ':').'(?:$|:)'; - if (preg_match('/^(.*?)'.$search.'(.*)$/', $shortAddress, $matches)) { - $shortAddress = $matches[1].'::'.$matches[2]; - break; - } - } - $this->shortAddress = $shortAddress; - } - } - $result = $this->shortAddress; - } - - return $result; - } - - /** - * {@inheritdoc} - * - * @see AddressInterface::__toString() - */ - public function __toString() - { - return $this->toString(); - } - - /** - * {@inheritdoc} - * - * @see AddressInterface::getBytes() - */ - public function getBytes() - { - if ($this->bytes === null) { - $bytes = array(); - foreach ($this->getWords() as $word) { - $bytes[] = $word >> 8; - $bytes[] = $word & 0xff; - } - $this->bytes = $bytes; - } - - return $this->bytes; - } - - /** - * Get the word list of the IP address. - * - * @return int[] - */ - public function getWords() - { - if ($this->words === null) { - $this->words = array_map( - function ($chunk) { - return hexdec($chunk); - }, - explode(':', $this->longAddress) - ); - } - - return $this->words; - } - - /** - * {@inheritdoc} - * - * @see AddressInterface::getAddressType() - */ - public function getAddressType() - { - return Type::T_IPv6; - } - - /** - * {@inheritdoc} - * - * @see AddressInterface::getDefaultReservedRangeType() - */ - public static function getDefaultReservedRangeType() - { - return RangeType::T_RESERVED; - } - - /** - * {@inheritdoc} - * - * @see AddressInterface::getReservedRanges() - */ - public static function getReservedRanges() - { - if (self::$reservedRanges === null) { - $reservedRanges = array(); - foreach (array( - // RFC 4291 - '::/128' => array(RangeType::T_UNSPECIFIED), - // RFC 4291 - '::1/128' => array(RangeType::T_LOOPBACK), - // RFC 4291 - '100::/8' => array(RangeType::T_DISCARD, array('100::/64' => RangeType::T_DISCARDONLY)), - //'2002::/16' => array(RangeType::), - // RFC 4291 - '2000::/3' => array(RangeType::T_PUBLIC), - // RFC 4193 - 'fc00::/7' => array(RangeType::T_PRIVATENETWORK), - // RFC 4291 - 'fe80::/10' => array(RangeType::T_LINKLOCAL_UNICAST), - // RFC 4291 - 'ff00::/8' => array(RangeType::T_MULTICAST), - // RFC 4291 - //'::/8' => array(RangeType::T_RESERVED), - // RFC 4048 - //'200::/7' => array(RangeType::T_RESERVED), - // RFC 4291 - //'400::/6' => array(RangeType::T_RESERVED), - // RFC 4291 - //'800::/5' => array(RangeType::T_RESERVED), - // RFC 4291 - //'1000::/4' => array(RangeType::T_RESERVED), - // RFC 4291 - //'4000::/3' => array(RangeType::T_RESERVED), - // RFC 4291 - //'6000::/3' => array(RangeType::T_RESERVED), - // RFC 4291 - //'8000::/3' => array(RangeType::T_RESERVED), - // RFC 4291 - //'a000::/3' => array(RangeType::T_RESERVED), - // RFC 4291 - //'c000::/3' => array(RangeType::T_RESERVED), - // RFC 4291 - //'e000::/4' => array(RangeType::T_RESERVED), - // RFC 4291 - //'f000::/5' => array(RangeType::T_RESERVED), - // RFC 4291 - //'f800::/6' => array(RangeType::T_RESERVED), - // RFC 4291 - //'fe00::/9' => array(RangeType::T_RESERVED), - // RFC 3879 - //'fec0::/10' => array(RangeType::T_RESERVED), - ) as $range => $data) { - $exceptions = array(); - if (isset($data[1])) { - foreach ($data[1] as $exceptionRange => $exceptionType) { - $exceptions[] = new AssignedRange(Subnet::fromString($exceptionRange), $exceptionType); - } - } - $reservedRanges[] = new AssignedRange(Subnet::fromString($range), $data[0], $exceptions); - } - self::$reservedRanges = $reservedRanges; - } - - return self::$reservedRanges; - } - - /** - * {@inheritdoc} - * - * @see AddressInterface::getRangeType() - */ - public function getRangeType() - { - if ($this->rangeType === null) { - $ipv4 = $this->toIPv4(); - if ($ipv4 !== null) { - $this->rangeType = $ipv4->getRangeType(); - } else { - $rangeType = null; - foreach (static::getReservedRanges() as $reservedRange) { - $rangeType = $reservedRange->getAddressType($this); - if ($rangeType !== null) { - break; - } - } - $this->rangeType = $rangeType === null ? static::getDefaultReservedRangeType() : $rangeType; - } - } - - return $this->rangeType; - } - - /** - * Create an IPv4 representation of this address (if possible, otherwise returns null). - * - * @return IPv4|null - */ - public function toIPv4() - { - $result = null; - if (strpos($this->longAddress, '2002:') === 0) { - $result = IPv4::fromBytes(array_slice($this->getBytes(), 2, 4)); - } - - return $result; - } - - /** - * {@inheritdoc} - * - * @see AddressInterface::getComparableString() - */ - public function getComparableString() - { - return $this->longAddress; - } - - /** - * {@inheritdoc} - * - * @see AddressInterface::matches() - */ - public function matches(RangeInterface $range) - { - return $range->contains($this); - } - - /** - * {@inheritdoc} - * - * @see AddressInterface::getNextAddress() - */ - public function getNextAddress() - { - $overflow = false; - $words = $this->getWords(); - for ($i = count($words) - 1; $i >= 0; --$i) { - if ($words[$i] === 0xffff) { - if ($i === 0) { - $overflow = true; - break; - } - $words[$i] = 0; - } else { - ++$words[$i]; - break; - } - } - - return $overflow ? null : static::fromWords($words); - } - - /** - * {@inheritdoc} - * - * @see AddressInterface::getPreviousAddress() - */ - public function getPreviousAddress() - { - $overflow = false; - $words = $this->getWords(); - for ($i = count($words) - 1; $i >= 0; --$i) { - if ($words[$i] === 0) { - if ($i === 0) { - $overflow = true; - break; - } - $words[$i] = 0xffff; - } else { - --$words[$i]; - break; - } - } - - return $overflow ? null : static::fromWords($words); - } -} diff --git a/libraries/plugins/ip_address/src/Address/Type.php b/libraries/plugins/ip_address/src/Address/Type.php deleted file mode 100644 index 06b0753..0000000 --- a/libraries/plugins/ip_address/src/Address/Type.php +++ /dev/null @@ -1,42 +0,0 @@ -getAddressType(); - if ($addressType === $to->getAddressType()) { - $cmp = strcmp($from->getComparableString(), $to->getComparableString()); - if ($cmp === 0) { - $result = Range\Single::fromAddress($from); - } else { - if ($cmp > 0) { - list($from, $to) = array($to, $from); - } - $fromBytes = $from->getBytes(); - $toBytes = $to->getBytes(); - $numBytes = count($fromBytes); - $sameBits = 0; - for ($byteIndex = 0; $byteIndex < $numBytes; ++$byteIndex) { - $fromByte = $fromBytes[$byteIndex]; - $toByte = $toBytes[$byteIndex]; - if ($fromByte === $toByte) { - $sameBits += 8; - } else { - $differentBitsInByte = decbin($fromByte ^ $toByte); - $sameBits += 8 - strlen($differentBitsInByte); - break; - } - } - $result = static::rangeFromString($from->toString(true).'/'.(string) $sameBits); - } - } - } - - return $result; - } -} diff --git a/libraries/plugins/ip_address/src/Range/Pattern.php b/libraries/plugins/ip_address/src/Range/Pattern.php deleted file mode 100644 index fb881c8..0000000 --- a/libraries/plugins/ip_address/src/Range/Pattern.php +++ /dev/null @@ -1,284 +0,0 @@ -fromAddress = $fromAddress; - $this->toAddress = $toAddress; - $this->asterisksCount = $asterisksCount; - } - - /** - * Try get the range instance starting from its string representation. - * - * @param string|mixed $range - * - * @return static|null - */ - public static function fromString($range) - { - $result = null; - if (is_string($range) && strpos($range, '*') !== false) { - if ($range === '*.*.*.*') { - $result = new static(IPv4::fromString('0.0.0.0'), IPv4::fromString('255.255.255.255'), 4); - } elseif (strpos($range, '.') !== false && preg_match('/^[^*]+((?:\.\*)+)$/', $range, $matches)) { - $asterisksCount = strlen($matches[1]) >> 1; - if ($asterisksCount > 0) { - $missingDots = 3 - substr_count($range, '.'); - if ($missingDots > 0) { - $range .= str_repeat('.*', $missingDots); - $asterisksCount += $missingDots; - } - } - $fromAddress = IPv4::fromString(str_replace('*', '0', $range)); - if ($fromAddress !== null) { - $fixedBytes = array_slice($fromAddress->getBytes(), 0, -$asterisksCount); - $otherBytes = array_fill(0, $asterisksCount, 255); - $toAddress = IPv4::fromBytes(array_merge($fixedBytes, $otherBytes)); - $result = new static($fromAddress, $toAddress, $asterisksCount); - } - } elseif ($range === '*:*:*:*:*:*:*:*') { - $result = new static(IPv6::fromString('::'), IPv6::fromString('ffff:ffff:ffff:ffff:ffff:ffff:ffff:ffff'), 8); - } elseif (strpos($range, ':') !== false && preg_match('/^[^*]+((?::\*)+)$/', $range, $matches)) { - $asterisksCount = strlen($matches[1]) >> 1; - $fromAddress = IPv6::fromString(str_replace('*', '0', $range)); - if ($fromAddress !== null) { - $fixedWords = array_slice($fromAddress->getWords(), 0, -$asterisksCount); - $otherWords = array_fill(0, $asterisksCount, 0xffff); - $toAddress = IPv6::fromWords(array_merge($fixedWords, $otherWords)); - $result = new static($fromAddress, $toAddress, $asterisksCount); - } - } - } - - return $result; - } - - /** - * {@inheritdoc} - * - * @see \IPLib\Range\RangeInterface::toString() - */ - public function toString($long = false) - { - switch (true) { - case $this->fromAddress instanceof \IPLib\Address\IPv4: - $chunks = explode('.', $this->fromAddress->toString()); - $chunks = array_slice($chunks, 0, -$this->asterisksCount); - $chunks = array_pad($chunks, 4, '*'); - $result = implode('.', $chunks); - break; - case $this->fromAddress instanceof \IPLib\Address\IPv6: - if ($long) { - $chunks = explode(':', $this->fromAddress->toString(true)); - $chunks = array_slice($chunks, 0, -$this->asterisksCount); - $chunks = array_pad($chunks, 8, '*'); - $result = implode(':', $chunks); - } else { - $chunks = explode(':', $this->toAddress->toString(false)); - $chunkCount = count($chunks); - $chunks = array_slice($chunks, 0, -$this->asterisksCount); - $chunks = array_pad($chunks, $chunkCount, '*'); - $result = implode(':', $chunks); - } - break; - default: - throw new \Exception('@todo'); // @codeCoverageIgnore - } - - return $result; - } - - /** - * {@inheritdoc} - * - * @see RangeInterface::__toString() - */ - public function __toString() - { - return $this->toString(); - } - - /** - * {@inheritdoc} - * - * @see RangeInterface::getAddressType() - */ - public function getAddressType() - { - return $this->fromAddress->getAddressType(); - } - - /** - * {@inheritdoc} - * - * @see RangeInterface::getRangeType() - */ - public function getRangeType() - { - if ($this->rangeType === null) { - $addressType = $this->getAddressType(); - if ($addressType === AddressType::T_IPv6 && Subnet::get6to4()->containsRange($this)) { - $this->rangeType = Factory::rangeFromBoundaries($this->fromAddress->toIPv4(), $this->toAddress->toIPv4())->getRangeType(); - } else { - switch ($addressType) { - case AddressType::T_IPv4: - $defaultType = IPv4::getDefaultReservedRangeType(); - $reservedRanges = IPv4::getReservedRanges(); - break; - case AddressType::T_IPv6: - $defaultType = IPv6::getDefaultReservedRangeType(); - $reservedRanges = IPv6::getReservedRanges(); - break; - default: - throw new \Exception('@todo'); // @codeCoverageIgnore - } - $rangeType = null; - foreach ($reservedRanges as $reservedRange) { - $rangeType = $reservedRange->getRangeType($this); - if ($rangeType !== null) { - break; - } - } - $this->rangeType = $rangeType === null ? $defaultType : $rangeType; - } - } - - return $this->rangeType === false ? null : $this->rangeType; - } - - /** - * {@inheritdoc} - * - * @see RangeInterface::contains() - */ - public function contains(AddressInterface $address) - { - $result = false; - if ($address->getAddressType() === $this->getAddressType()) { - $cmp = $address->getComparableString(); - $from = $this->getComparableStartString(); - if ($cmp >= $from) { - $to = $this->getComparableEndString(); - if ($cmp <= $to) { - $result = true; - } - } - } - - return $result; - } - - /** - * {@inheritdoc} - * - * @see RangeInterface::containsRange() - */ - public function containsRange(RangeInterface $range) - { - $result = false; - if ($range->getAddressType() === $this->getAddressType()) { - $myStart = $this->getComparableStartString(); - $itsStart = $range->getComparableStartString(); - if ($itsStart >= $myStart) { - $myEnd = $this->getComparableEndString(); - $itsEnd = $range->getComparableEndString(); - if ($itsEnd <= $myEnd) { - $result = true; - } - } - } - - return $result; - } - - /** - * {@inheritdoc} - * - * @see RangeInterface::getStartAddress() - */ - public function getStartAddress() - { - return $this->fromAddress; - } - - /** - * {@inheritdoc} - * - * @see RangeInterface::getEndAddress() - */ - public function getEndAddress() - { - return $this->toAddress; - } - - /** - * {@inheritdoc} - * - * @see RangeInterface::getComparableStartString() - */ - public function getComparableStartString() - { - return $this->fromAddress->getComparableString(); - } - - /** - * {@inheritdoc} - * - * @see RangeInterface::getComparableEndString() - */ - public function getComparableEndString() - { - return $this->toAddress->getComparableString(); - } -} diff --git a/libraries/plugins/ip_address/src/Range/RangeInterface.php b/libraries/plugins/ip_address/src/Range/RangeInterface.php deleted file mode 100644 index 40791ae..0000000 --- a/libraries/plugins/ip_address/src/Range/RangeInterface.php +++ /dev/null @@ -1,89 +0,0 @@ -address = $address; - } - - /** - * Try get the range instance starting from its string representation. - * - * @param string|mixed $range - * - * @return static|null - */ - public static function fromString($range) - { - $result = null; - $address = Factory::addressFromString($range); - if ($address !== null) { - $result = new static($address); - } - - return $result; - } - - /** - * Create the range instance starting from an address instance. - * - * @param AddressInterface $address - * - * @return static - */ - public static function fromAddress(AddressInterface $address) - { - return new static($address); - } - - /** - * {@inheritdoc} - * - * @see RangeInterface::toString() - */ - public function toString($long = false) - { - return $this->address->toString($long); - } - - /** - * {@inheritdoc} - * - * @see RangeInterface::__toString() - */ - public function __toString() - { - return $this->address->__toString(); - } - - /** - * {@inheritdoc} - * - * @see RangeInterface::getAddressType() - */ - public function getAddressType() - { - return $this->address->getAddressType(); - } - - /** - * {@inheritdoc} - * - * @see RangeInterface::getRangeType() - */ - public function getRangeType() - { - return $this->address->getRangeType(); - } - - /** - * {@inheritdoc} - * - * @see RangeInterface::contains() - */ - public function contains(AddressInterface $address) - { - $result = false; - if ($address->getAddressType() === $this->getAddressType()) { - if ($address->toString(false) === $this->address->toString(false)) { - $result = true; - } - } - - return $result; - } - - /** - * {@inheritdoc} - * - * @see RangeInterface::containsRange() - */ - public function containsRange(RangeInterface $range) - { - $result = false; - if ($range->getAddressType() === $this->getAddressType()) { - if ($range->toString(false) === $this->toString(false)) { - $result = true; - } - } - - return $result; - } - - /** - * {@inheritdoc} - * - * @see RangeInterface::getStartAddress() - */ - public function getStartAddress() - { - return $this->address; - } - - /** - * {@inheritdoc} - * - * @see RangeInterface::getEndAddress() - */ - public function getEndAddress() - { - return $this->address; - } - - /** - * {@inheritdoc} - * - * @see RangeInterface::getComparableStartString() - */ - public function getComparableStartString() - { - return $this->address->getComparableString(); - } - - /** - * {@inheritdoc} - * - * @see RangeInterface::getComparableEndString() - */ - public function getComparableEndString() - { - return $this->address->getComparableString(); - } -} diff --git a/libraries/plugins/ip_address/src/Range/Subnet.php b/libraries/plugins/ip_address/src/Range/Subnet.php deleted file mode 100644 index 321137a..0000000 --- a/libraries/plugins/ip_address/src/Range/Subnet.php +++ /dev/null @@ -1,281 +0,0 @@ -fromAddress = $fromAddress; - $this->toAddress = $toAddress; - $this->networkPrefix = $networkPrefix; - } - - /** - * Try get the range instance starting from its string representation. - * - * @param string|mixed $range - * - * @return static|null - */ - public static function fromString($range) - { - $result = null; - if (is_string($range)) { - $parts = explode('/', $range); - if (count($parts) === 2) { - $address = Factory::addressFromString($parts[0]); - if ($address !== null) { - if (preg_match('/^[0-9]{1,9}$/', $parts[1])) { - $networkPrefix = (int) $parts[1]; - if ($networkPrefix >= 0) { - $addressBytes = $address->getBytes(); - $totalBytes = count($addressBytes); - $numDifferentBits = $totalBytes * 8 - $networkPrefix; - if ($numDifferentBits >= 0) { - $numSameBytes = $networkPrefix >> 3; - $sameBytes = array_slice($addressBytes, 0, $numSameBytes); - $differentBytesStart = ($totalBytes === $numSameBytes) ? array() : array_fill(0, $totalBytes - $numSameBytes, 0); - $differentBytesEnd = ($totalBytes === $numSameBytes) ? array() : array_fill(0, $totalBytes - $numSameBytes, 255); - $startSameBits = $networkPrefix % 8; - if ($startSameBits !== 0) { - $varyingByte = $addressBytes[$numSameBytes]; - $differentBytesStart[0] = $varyingByte & bindec(str_pad(str_repeat('1', $startSameBits), 8, '0', STR_PAD_RIGHT)); - $differentBytesEnd[0] = $differentBytesStart[0] + bindec(str_repeat('1', 8 - $startSameBits)); - } - $result = new static( - Factory::addressFromBytes(array_merge($sameBytes, $differentBytesStart)), - Factory::addressFromBytes(array_merge($sameBytes, $differentBytesEnd)), - $networkPrefix - ); - } - } - } - } - } - } - - return $result; - } - - /** - * {@inheritdoc} - * - * @see RangeInterface::toString() - */ - public function toString($long = false) - { - return $this->fromAddress->toString($long).'/'.$this->networkPrefix; - } - - /** - * {@inheritdoc} - * - * @see RangeInterface::__toString() - */ - public function __toString() - { - return $this->toString(); - } - - /** - * {@inheritdoc} - * - * @see RangeInterface::getAddressType() - */ - public function getAddressType() - { - return $this->fromAddress->getAddressType(); - } - - /** - * {@inheritdoc} - * - * @see RangeInterface::getRangeType() - */ - public function getRangeType() - { - if ($this->rangeType === null) { - $addressType = $this->getAddressType(); - if ($addressType === AddressType::T_IPv6 && static::get6to4()->containsRange($this)) { - $this->rangeType = Factory::rangeFromBoundaries($this->fromAddress->toIPv4(), $this->toAddress->toIPv4())->getRangeType(); - } else { - switch ($addressType) { - case AddressType::T_IPv4: - $defaultType = IPv4::getDefaultReservedRangeType(); - $reservedRanges = IPv4::getReservedRanges(); - break; - case AddressType::T_IPv6: - $defaultType = IPv6::getDefaultReservedRangeType(); - $reservedRanges = IPv6::getReservedRanges(); - break; - default: - throw new \Exception('@todo'); // @codeCoverageIgnore - } - $rangeType = null; - foreach ($reservedRanges as $reservedRange) { - $rangeType = $reservedRange->getRangeType($this); - if ($rangeType !== null) { - break; - } - } - $this->rangeType = $rangeType === null ? $defaultType : $rangeType; - } - } - - return $this->rangeType === false ? null : $this->rangeType; - } - - /** - * {@inheritdoc} - * - * @see RangeInterface::contains() - */ - public function contains(AddressInterface $address) - { - $result = false; - if ($address->getAddressType() === $this->getAddressType()) { - $cmp = $address->getComparableString(); - $from = $this->getComparableStartString(); - if ($cmp >= $from) { - $to = $this->getComparableEndString(); - if ($cmp <= $to) { - $result = true; - } - } - } - - return $result; - } - - /** - * {@inheritdoc} - * - * @see RangeInterface::containsRange() - */ - public function containsRange(RangeInterface $range) - { - $result = false; - if ($range->getAddressType() === $this->getAddressType()) { - $myStart = $this->getComparableStartString(); - $itsStart = $range->getComparableStartString(); - if ($itsStart >= $myStart) { - $myEnd = $this->getComparableEndString(); - $itsEnd = $range->getComparableEndString(); - if ($itsEnd <= $myEnd) { - $result = true; - } - } - } - - return $result; - } - - /** - * {@inheritdoc} - * - * @see RangeInterface::getStartAddress() - */ - public function getStartAddress() - { - return $this->fromAddress; - } - - /** - * {@inheritdoc} - * - * @see RangeInterface::getEndAddress() - */ - public function getEndAddress() - { - return $this->toAddress; - } - - /** - * {@inheritdoc} - * - * @see RangeInterface::getComparableStartString() - */ - public function getComparableStartString() - { - return $this->fromAddress->getComparableString(); - } - - /** - * {@inheritdoc} - * - * @see RangeInterface::getComparableEndString() - */ - public function getComparableEndString() - { - return $this->toAddress->getComparableString(); - } - - /** - * Get the 6to4 address IPv6 address range. - * - * @return self - */ - public static function get6to4() - { - if (self::$sixToFour === null) { - self::$sixToFour = self::fromString('2002::/16'); - } - - return self::$sixToFour; - } -} diff --git a/libraries/plugins/ip_address/src/Range/Type.php b/libraries/plugins/ip_address/src/Range/Type.php deleted file mode 100644 index 503178b..0000000 --- a/libraries/plugins/ip_address/src/Range/Type.php +++ /dev/null @@ -1,141 +0,0 @@ -=')) { - header('Content-Type: text/plain'); - die('[phpMussel] Not compatible with PHP versions below 5.4.0; Please update PHP in order to use phpMussel.'); - } - - /** Create an array for our working data. */ - $phpMussel = array(); - - /** Determine the location of the "vault" directory. */ - $phpMussel['Vault'] = __DIR__ . '/vault/'; - - /** Kill the script if we can't find the vault directory. */ - if (!is_dir($phpMussel['Vault'])) { - header('Content-Type: text/plain'); - die( - '[phpMussel] Vault directory not correctly set: Can\'t continue.' . - ' Refer to documentation if this is a first-time run, and if pro' . - 'blems persist, seek assistance.' - ); - } - - /** Define the location of the "cache" directory. */ - $phpMussel['cachePath'] = $phpMussel['Vault'] . 'cache/'; - - /** Define the location of the "lang" directory. */ - $phpMussel['langPath'] = $phpMussel['Vault'] . 'lang/'; - - /** Define the location of the "plugins" directory. */ - $phpMussel['pluginPath'] = $phpMussel['Vault'] . 'plugins/'; - - /** Define the location of the "quarantine" directory. */ - $phpMussel['qfuPath'] = $phpMussel['Vault'] . 'quarantine/'; - - /** Define the location of the "signatures" directory. */ - $phpMussel['sigPath'] = $phpMussel['Vault'] . 'signatures/'; - - /** Checks whether we're calling phpMussel directly or through a hook. */ - $phpMussel['Direct'] = function () { - return (str_replace("\\", '/', strtolower($_SERVER['SCRIPT_FILENAME'])) === str_replace("\\", '/', strtolower(__FILE__))); - }; - - /** Kill the script if the functions file doesn't exist. */ - if (!file_exists($phpMussel['Vault'] . 'functions.php')) { - header('Content-Type: text/plain'); - die('[phpMussel] Functions file missing! Please reinstall phpMussel.'); - } - /** Load the functions file. */ - require $phpMussel['Vault'] . 'functions.php'; - - /** Kill the script if the configuration handler doesn't exist. */ - if (!file_exists($phpMussel['Vault'] . 'config.php')) { - header('Content-Type: text/plain'); - die('[phpMussel] Configuration handler missing! Please reinstall phpMussel.'); - } - /** Load the configuration handler. */ - require $phpMussel['Vault'] . 'config.php'; - - /** - * Check whether the language handler exists; Kill the script if it - * doesn't. - */ - if (!file_exists($phpMussel['Vault'] . 'lang.php')) { - header('Content-Type: text/plain'); - die('[phpMussel] Language handler missing! Please reinstall phpMussel.'); - } - /** Load the language handler. */ - require $phpMussel['Vault'] . 'lang.php'; - - /** PHP binary version-specific switch variables. */ - $phpMussel['binary_versions'] = array( - '7.0.0' => version_compare(PHP_VERSION, '7.0.0', '>='), - '5.6.0' => version_compare(PHP_VERSION, '5.6.0', '>=') - ); - - /** - * Create an array to use as a temporary memory cache for scanning - * operations (note: this has nothing to do with the memCache extension of - * PHP; the variable name is coincidental). - */ - $phpMussel['memCache'] = array(); - - /** - * Used to determine whether we've reached the end of this file without - * exiting cleanly (important for rendering scan results correctly). - */ - $phpMussel['EOF'] = false; - - /** A safety feature for logging. */ - $phpMussel['safety'] = "\x3c\x3fphp die; \x3f\x3e"; - - /** - * If phpMussel is "disabled" (if the "disable lock" is engaged), nothing - * within this block should execute (thus effectively disabling phpMussel). - */ - if (!$phpMussel['disable_lock'] = file_exists($phpMussel['Vault'] . 'disable.lck')) { - - /** Plugins are detected and processed by phpMussel here. */ - $phpMussel['MusselPlugins'] = array('hooks' => array(), 'closures' => array()); - if ($phpMussel['Config']['general']['enable_plugins']) { - if (!is_dir($phpMussel['Vault'] . 'plugins')) { - header('Content-Type: text/plain'); - die('[phpMussel] ' . $phpMussel['Config']['lang']['plugins_directory_nonexistent']); - } - $phpMussel['MusselPlugins']['tempdata'] = array(); - if (( - $phpMussel['MusselPlugins']['tempdata']['d'] = opendir($phpMussel['Vault'] . 'plugins') - ) && is_resource($phpMussel['MusselPlugins']['tempdata']['d'])) { - while (true) { - $phpMussel['MusselPlugins']['tempdata']['f'] = readdir($phpMussel['MusselPlugins']['tempdata']['d']); - if (empty($phpMussel['MusselPlugins']['tempdata']['f'])) { - break; - } - if ( - $phpMussel['MusselPlugins']['tempdata']['f'] !== '.' && - $phpMussel['MusselPlugins']['tempdata']['f'] !== '..' && - is_dir($phpMussel['pluginPath'] . $phpMussel['MusselPlugins']['tempdata']['f']) && - file_exists($phpMussel['pluginPath'] . $phpMussel['MusselPlugins']['tempdata']['f'] . '/plugin.php') && - !is_link($phpMussel['pluginPath'] . $phpMussel['MusselPlugins']['tempdata']['f'] . '/plugin.php') - ) { - require_once $phpMussel['pluginPath'] . $phpMussel['MusselPlugins']['tempdata']['f'] . '/plugin.php'; - } - } - closedir($phpMussel['MusselPlugins']['tempdata']['d']); - } - unset($phpMussel['MusselPlugins']['tempdata']); - } - - /* This code block only executed if we're NOT in CLI mode. */ - if (!$phpMussel['Mussel_sapi']) { - - /** - * Check whether the upload handler exists and attempt to load it. - */ - if (file_exists($phpMussel['Vault'] . 'upload.php')) { - require $phpMussel['Vault'] . 'upload.php'; - } - - /** - * Check whether the front-end handler exists and attempt to load - * it. Skip this check if front-end access is disabled. - */ - if ( - !$phpMussel['Config']['general']['disable_frontend'] && - file_exists($phpMussel['Vault'] . 'frontend.php') && - $phpMussel['Direct']() - ) { - require $phpMussel['Vault'] . 'frontend.php'; - } - - } - - /** - * Check whether the CLI handler exists and attempt to load it. - * This code block only executed if we're in CLI mode. - */ - elseif (file_exists($phpMussel['Vault'] . 'cli.php')) { - require $phpMussel['Vault'] . 'cli.php'; - } - - } - - if ($phpMussel['Config']['general']['cleanup']) { - - /** Destroy unrequired plugin closures. */ - if (isset($phpMussel['MusselPlugins']['closures'])) { - foreach ($phpMussel['MusselPlugins']['closures'] as $x) { - if (isset($$x) && is_object($$x)) { - unset($$x); - } - } - } - - /** Unset our working data so that we can exit cleanly. */ - unset($x, $phpMussel); - - } else { - - /** Let the script know that we haven't exited cleanly. */ - $phpMussel['EOF'] = true; - - } - -} else { - header('Content-Type: text/plain'); - echo - (!isset($phpMussel['Config']['lang']['instance_already_active'])) ? - '[phpMussel] Instance already active! Please double-check your hooks.' : - '[phpMussel] ' . $phpMussel['Config']['lang']['instance_already_active']; - die; -} diff --git a/libraries/plugins/phpMussel/vault/.htaccess b/libraries/plugins/phpMussel/vault/.htaccess deleted file mode 100644 index 3ebfe62..0000000 --- a/libraries/plugins/phpMussel/vault/.htaccess +++ /dev/null @@ -1,6 +0,0 @@ - - Order Allow,Deny - Deny from All - -Order Allow,Deny -Deny from All diff --git a/libraries/plugins/phpMussel/vault/cache/.htaccess b/libraries/plugins/phpMussel/vault/cache/.htaccess deleted file mode 100644 index 3ebfe62..0000000 --- a/libraries/plugins/phpMussel/vault/cache/.htaccess +++ /dev/null @@ -1,6 +0,0 @@ - - Order Allow,Deny - Deny from All - -Order Allow,Deny -Deny from All diff --git a/libraries/plugins/phpMussel/vault/cache/75.tmp b/libraries/plugins/phpMussel/vault/cache/75.tmp deleted file mode 100644 index 7ecb1fd..0000000 --- a/libraries/plugins/phpMussel/vault/cache/75.tmp +++ /dev/null @@ -1 +0,0 @@ -urlscanner_domains:1509462652:ed5c4bae2bb90ddd12ffa29c51809e6490640d2225ed7f09a13b83170736506d18fdeeeda73bf1055ca7ce1149b1c862957ffbf73ffffe8f7fdd60256d94ec0ba0c510932486e039677776b921df50a18b9a48bbfdedb7ffc250c5275b76ecab63f0461f597f8b3a8a63de089ec1843485a28d26aa8bd306886d9dc514c263dfe829dbbb22cd864b474a4d43a0894bdc5c98871b60af039ec2d64e18cbbd847a6fd460263be420a5053a6ffd198ae6ee8860d0046359376c260a3c480031e8864f610c7da6411f09b3b16f503665b0ed03c62e2b3eb708b7cdb598e8a3f59eabbbcba0be6905cc5d27b9a13c83b53dbb62f692c5b59e66d9a68f3aa8d636c6dd8af80c96e0864ada977044cf6c844d67644b22efafbc7ddcf62bb94d43a30e57af9574d5a61e5b86244f4bdf0637d1a76c3075d6d65fb30b564ae11ebdfe77215bca590e684f61bc2a83b4ca3d900c035683683ba3f104f47e37e35358855659907c3ab49540db335446dada58367db13618e85bb6995145c6d4cd44e56b5863fb8e62b3e7a8ca6945b45ceaecc85d734ab4cc526eeceb95fd632d9f9d56f6bb5a89a40158e6edddd816dcf8b9c60c898dda67a85a0af81a063b67ed89b9b5bf882dc8744bf40069b12b0c6d56a4dcddd762b9e68bd8825908d3f031a9e2a28f322770c722943174dd9e7a0d2195a5acd9946adf8d212b56a57f88906e594bf3a730c2c5d865eec9bbb560cc20a3583d27a3f4cf6aecd23b1717165389c272f79c1436ac69eb65fba75e6b1dbaee319a4de8ae836b27f4c9b5e02131c7bc113d83551a98f75d89e013ef56f72c47a853b789b9f3055b28750a14305a6b0cf7a0480f3772b319f1ca225deaf22b33c399d62c64c4b4b0b2a76ef2f62aff7079ed6e79bda7d2daafa2429013c8f7467e95eddeb3ffd8b945b3311751bb47b124545a2ec989c22ff65a6d8e0a74958d15bb837da66817c6d8544549d31776ace44dd969574aed5ee95f71602566b8e3ad4709a46fcb96cc2929cdeb53ab46938aa8d62b968177e5217f711dfd1626f95383e45b18f278fb5b1ab2ea986a8aaa2850a32d55b95461c6e9cd7db36b1d48f8c18cfc9e21799bccaa20575d212644df6cb52cc5dd109769097c7ad51e5855642d6e55d9beab82af6b619d29eaea3654ab84ba297e4ee3e0ddb7bb0395cb58166fbf17f2a32ac3a82b0edefc735c815ce7868a2fac1266d4a7efb566e210ecd3f155147f7d89c85ac708a4df7b73e36154351acb7dc384b57851b1bea7f1cdd07f135605088d99a3058e5ecd02ea88eabe2272ac1dbbdfc83eb734b4555dc5ac1d59e5d60a5f38476d15a86ec0f7087dd1664869836abe1cb4ca71ea51a5a1dd1d99dbee9ded8ba6c68c35b207b68a24aa9270542aaac64d6ac15534e38d9e5675cbaac69561d5ab4df6dacd4e50056b35c48db89ab917c5e0aeb38205f615551cd771a1658eca7bf76e74e57ed5426995c7bd3abad1a39ce77d5496f4f29f2707575a15ff60339a0e95b0764548ab6edc97b432bde18c59ad73f57237fb646c9de473241e8947e29178241e8947e29178241e8947e29178241e89bfa64457863f2ef101755de223d99178241e8947e29178241e8947e29178241e8947e29178241e8947e291f8ed245e7e94bab3f11b2fb73cc0ae3f93fe001b9d0b39b88c91cd73b99837e20d717fb745f68fe7893e2212a9ccd532d6f0919488aec851ae1ba202e3c7639a9f10f926dbbb22af86d603eabd18b9fe80d503ecfa03a81fd04863708ce892f7f72aa696d63676cc30ef49237e3ce0f6009b4bc5655be65ab0982bb076a3c9da29dcf7ffecb50f58ff3dd4f57470c80ed9213b6487ec901db24376c80ed9213b6487ec901db243f655c8aebf07fd005b60bd6d3190a57389f8b0cc4d61446378f0abfb72fdfe532c6310c8efaf6a9b532722c6be7d8efbafc7fc7230356d66bcb90c4ee91b15457dad6d9cbb2bdc487fbe4828178f396d262cbd7fcf637bb82a35465ffdc51d3d19bc7dc14cdbd874d3de700f9c0e0248a25f234ade14592e0209b3e54aba8327acc5ac089a0bb1e38f774fcf0ef84ab06f11936fc2da868ac295e621c386c4f2413b56d405602bb717dbf4afec6e9cda09b68448501b0e14b3b594df7f026eeb78311cfb16c175753a63644a7f7c80f708bb3c657c845d1ee07d46e4d501de4744bec9f6aec88b65e123eabd18b93c657c845d9e327e42e3e529e323ecf294f113d67f0f75b9943f6487ec901db24376c80ed9213b6487ec901db24376c80ed921fb326497a78c8fb0cb53c6ffbf5579f176eaaf03bb3c65fc99222f4f191f61976fbaffccb5bd29f2f294f1ec802f05fb1631f926ecf294f1d771f7e529e3770aaeff00; \ No newline at end of file diff --git a/libraries/plugins/phpMussel/vault/cache/index.dat b/libraries/plugins/phpMussel/vault/cache/index.dat deleted file mode 100644 index 07b3ead..0000000 --- a/libraries/plugins/phpMussel/vault/cache/index.dat +++ /dev/null @@ -1 +0,0 @@ -urlscanner_domains:1509462652; \ No newline at end of file diff --git a/libraries/plugins/phpMussel/vault/cli.php b/libraries/plugins/phpMussel/vault/cli.php deleted file mode 100644 index 31620d9..0000000 --- a/libraries/plugins/phpMussel/vault/cli.php +++ /dev/null @@ -1,438 +0,0 @@ -getMessage()); - } - if ($phpMussel['Config']['general']['scan_cache_expiry'] > 0 && is_array($phpMussel['HashCache']['Data'])) { - foreach ($phpMussel['HashCache']['Data'] as &$phpMussel['HashCache']['ThisData']) { - if (is_array($phpMussel['HashCache']['ThisData'])) { - $phpMussel['HashCache']['ThisData'] = implode(':', $phpMussel['HashCache']['ThisData']) . ';'; - } - } - unset($phpMussel['HashCache']['ThisData']); - $phpMussel['HashCache']['Data'] = implode('', $phpMussel['HashCache']['Data']); - $phpMussel['HashCache']['Data'] = $phpMussel['SaveCache']( - 'HashCache', - $phpMussel['Time'] + $phpMussel['Config']['general']['scan_cache_expiry'], - $phpMussel['HashCache']['Data'] - ); - } - die; - } - - /** Generate an MD5 signature or a SHA1 signature using a file or directory. **/ - if ($phpMussel['cmd'] === 'md5_file' || $phpMussel['cmd'] === 'm' || $phpMussel['cmd'] === 'sha1_file') { - echo $phpMussel['CLI-RecursiveCommand']($phpMussel['cli_args'][2], function ($Params) use (&$phpMussel) { - $HashMe = $phpMussel['ReadFile']($Params, 0, true); - return $phpMussel['HashAlias']($phpMussel['cmd'], $HashMe) . ':' . strlen($HashMe) . ':' . $phpMussel['lang']['cli_signature_placeholder'] . "\n"; - }); - } - - /** Generate a CoEx signature using a file. **/ - if ($phpMussel['cmd'] === 'coex_file') { - echo $phpMussel['CLI-RecursiveCommand']($phpMussel['cli_args'][2], function ($Params) use (&$phpMussel) { - $HashMe = $phpMussel['ReadFile']($Params, 0, true); - return - '$md5:' . md5($HashMe) . ';' . - '$sha:' . sha1($HashMe) . ';' . - '$str_len:' . strlen($HashMe) . ';' . - $phpMussel['lang']['cli_signature_placeholder'] . "\n"; - }); - } - - /** Fetch PE metadata. **/ - if ($phpMussel['cmd'] === 'pe_meta') { - echo $phpMussel['CLI-RecursiveCommand']($phpMussel['cli_args'][2], function ($Params) use (&$phpMussel) { - $Data = $phpMussel['ReadFile']($Params, 0, true); - $Returnable = ''; - if (substr($Data, 0, 2) === 'MZ') { - $PEArr = []; - $PEArr['Len'] = strlen($Data); - $PEArr['Offset'] = $phpMussel['UnpackSafe']('S', substr($Data, 60, 4)); - $PEArr['Offset'] = $PEArr['Offset'][1]; - while (true) { - $PEArr['DoScan'] = true; - if ($PEArr['Offset'] < 1 || $PEArr['Offset'] > 16384 || $PEArr['Offset'] > $PEArr['Len']) { - $PEArr['DoScan'] = false; - break; - } - $PEArr['Magic'] = substr($Data, $PEArr['Offset'], 2); - if ($PEArr['Magic'] !== 'PE') { - $PEArr['DoScan'] = false; - break; - } - $PEArr['Proc'] = $phpMussel['UnpackSafe']('S', substr($Data, $PEArr['Offset'] + 4, 2)); - $PEArr['Proc'] = $PEArr['Proc'][1]; - if ($PEArr['Proc'] != 0x14c && $PEArr['Proc'] != 0x8664) { - $PEArr['DoScan'] = false; - break; - } - $PEArr['NumOfSections'] = $phpMussel['UnpackSafe']('S', substr($Data, $PEArr['Offset'] + 6, 2)); - $PEArr['NumOfSections'] = $PEArr['NumOfSections'][1]; - if ($PEArr['NumOfSections'] < 1 || $PEArr['NumOfSections'] > 40) { - $PEArr['DoScan'] = false; - } - break; - } - if (!$PEArr['DoScan']) { - return $phpMussel['lang']['cli_pe1'] . "\n"; - } - $PEArr['OptHdrSize'] = $phpMussel['UnpackSafe']('S', substr($Data, $PEArr['Offset'] + 20, 2)); - $PEArr['OptHdrSize'] = $PEArr['OptHdrSize'][1]; - $Returnable .= $phpMussel['lang']['cli_pe2'] . "\n"; - for ($PEArr['k'] = 0; $PEArr['k'] < $PEArr['NumOfSections']; $PEArr['k']++) { - $PEArr['SectionHead'] = substr($Data, $PEArr['Offset'] + 24 + $PEArr['OptHdrSize'] + ($PEArr['k'] * 40), $PEArr['NumOfSections'] * 40); - $PEArr['SectionName'] = str_ireplace("\x00", '', substr($PEArr['SectionHead'], 0, 8)); - $PEArr['VirtualSize'] = $phpMussel['UnpackSafe']('S', substr($PEArr['SectionHead'], 8, 4)); - $PEArr['VirtualSize'] = $PEArr['VirtualSize'][1]; - $PEArr['VirtualAddress'] = $phpMussel['UnpackSafe']('S', substr($PEArr['SectionHead'], 12, 4)); - $PEArr['VirtualAddress'] = $PEArr['VirtualAddress'][1]; - $PEArr['SizeOfRawData'] = $phpMussel['UnpackSafe']('S', substr($PEArr['SectionHead'], 16, 4)); - $PEArr['SizeOfRawData'] = $PEArr['SizeOfRawData'][1]; - $PEArr['PointerToRawData'] = $phpMussel['UnpackSafe']('S', substr($PEArr['SectionHead'], 20, 4)); - $PEArr['PointerToRawData'] = $PEArr['PointerToRawData'][1]; - $PEArr['SectionData'] = substr($Data, $PEArr['PointerToRawData'], $PEArr['SizeOfRawData']); - $PEArr['MD5'] = md5($PEArr['SectionData']); - $Returnable .= $PEArr['SizeOfRawData'] . ':' . $PEArr['MD5'] . ':' . $PEArr['SectionName'] . "\n"; - } - $Returnable .= "\n"; - if (substr_count($Data, "V\x00a\x00r\x00F\x00i\x00l\x00e\x00I\x00n\x00f\x00o\x00\x00\x00\x00\x00\x24")) { - $PEArr['FINFO'] = $phpMussel['substral']($Data, "V\x00a\x00r\x00F\x00i\x00l\x00e\x00I\x00n\x00f\x00o\x00\x00\x00\x00\x00\x24"); - if (substr_count($PEArr['FINFO'], "F\x00i\x00l\x00e\x00D\x00e\x00s\x00c\x00r\x00i\x00p\x00t\x00i\x00o\x00n\x00\x00\x00")) { - $PEArr['ThisData'] = trim(str_ireplace("\x00", '', $phpMussel['substrbf']($phpMussel['substral']($PEArr['FINFO'], "F\x00i\x00l\x00e\x00D\x00e\x00s\x00c\x00r\x00i\x00p\x00t\x00i\x00o\x00n\x00\x00\x00"), "\x00\x00\x00"))); - $Returnable .= '$PEFileDescription:' . md5($PEArr['ThisData']) . ':' . strlen($PEArr['ThisData']) . ':' . $phpMussel['lang']['cli_signature_placeholder'] . "\n"; - } - if (substr_count($PEArr['FINFO'], "F\x00i\x00l\x00e\x00V\x00e\x00r\x00s\x00i\x00o\x00n\x00\x00\x00")) { - $PEArr['ThisData'] = trim(str_ireplace("\x00", '', $phpMussel['substrbf']($phpMussel['substral']($PEArr['FINFO'], "F\x00i\x00l\x00e\x00V\x00e\x00r\x00s\x00i\x00o\x00n\x00\x00\x00"), "\x00\x00\x00"))); - $Returnable .= '$PEFileVersion:' . md5($PEArr['ThisData']) . ':' . strlen($PEArr['ThisData']) . ':' . $phpMussel['lang']['cli_signature_placeholder'] . "\n"; - } - if (substr_count($PEArr['FINFO'], "P\x00r\x00o\x00d\x00u\x00c\x00t\x00N\x00a\x00m\x00e\x00\x00\x00")) { - $PEArr['ThisData'] = trim(str_ireplace("\x00", '', $phpMussel['substrbf']($phpMussel['substral']($PEArr['FINFO'], "P\x00r\x00o\x00d\x00u\x00c\x00t\x00N\x00a\x00m\x00e\x00\x00\x00"), "\x00\x00\x00"))); - $Returnable .= '$PEProductName:' . md5($PEArr['ThisData']) . ':' . strlen($PEArr['ThisData']) . ':' . $phpMussel['lang']['cli_signature_placeholder'] . "\n"; - } - if (substr_count($PEArr['FINFO'], "P\x00r\x00o\x00d\x00u\x00c\x00t\x00V\x00e\x00r\x00s\x00i\x00o\x00n\x00\x00\x00")) { - $PEArr['ThisData'] = trim(str_ireplace("\x00", '', $phpMussel['substrbf']($phpMussel['substral']($PEArr['FINFO'], "P\x00r\x00o\x00d\x00u\x00c\x00t\x00V\x00e\x00r\x00s\x00i\x00o\x00n\x00\x00\x00"), "\x00\x00\x00"))); - $Returnable .= '$PEProductVersion:' . md5($PEArr['ThisData']) . ':' . strlen($PEArr['ThisData']) . ':' . $phpMussel['lang']['cli_signature_placeholder'] . "\n"; - } - if (substr_count($PEArr['FINFO'], "L\x00e\x00g\x00a\x00l\x00C\x00o\x00p\x00y\x00r\x00i\x00g\x00h\x00t\x00\x00\x00")) { - $PEArr['ThisData'] = trim(str_ireplace("\x00", '', $phpMussel['substrbf']($phpMussel['substral']($PEArr['FINFO'], "L\x00e\x00g\x00a\x00l\x00C\x00o\x00p\x00y\x00r\x00i\x00g\x00h\x00t\x00\x00\x00"), "\x00\x00\x00"))); - $Returnable .= '$PECopyright:' . md5($PEArr['ThisData']) . ':' . strlen($PEArr['ThisData']) . ':' . $phpMussel['lang']['cli_signature_placeholder'] . "\n"; - } - if (substr_count($PEArr['FINFO'], "O\x00r\x00i\x00g\x00i\x00n\x00a\x00l\x00F\x00i\x00l\x00e\x00n\x00a\x00m\x00e\x00\x00\x00")) { - $PEArr['ThisData'] = trim(str_ireplace("\x00", '', $phpMussel['substrbf']($phpMussel['substral']($PEArr['FINFO'], "O\x00r\x00i\x00g\x00i\x00n\x00a\x00l\x00F\x00i\x00l\x00e\x00n\x00a\x00m\x00e\x00\x00\x00"), "\x00\x00\x00"))); - $Returnable .= '$PEOriginalFilename:' . md5($PEArr['ThisData']) . ':' . strlen($PEArr['ThisData']) . ':' . $phpMussel['lang']['cli_signature_placeholder'] . "\n"; - } - if (substr_count($PEArr['FINFO'], "C\x00o\x00m\x00p\x00a\x00n\x00y\x00N\x00a\x00m\x00e\x00\x00\x00")) { - $PEArr['ThisData'] = trim(str_ireplace("\x00", '', $phpMussel['substrbf']($phpMussel['substral']($PEArr['FINFO'], "C\x00o\x00m\x00p\x00a\x00n\x00y\x00N\x00a\x00m\x00e\x00\x00\x00"), "\x00\x00\x00"))); - $Returnable .= '$PECompanyName:' . md5($PEArr['ThisData']) . ':' . strlen($PEArr['ThisData']) . ':' . $phpMussel['lang']['cli_signature_placeholder'] . "\n"; - } - } - return $Returnable; - } - return $phpMussel['lang']['cli_pe1'] . "\n"; - }); - } - - /** Die child process back to parent. */ - die; - } - - /** Echo the ASCII header art and CLI-mode information. */ - echo $phpMussel['lang']['cli_ln1'] . $phpMussel['lang']['cli_ln2'] . $phpMussel['lang']['cli_ln3']; - - /** Open STDIN. */ - $phpMussel['stdin_handle'] = fopen('php://stdin', 'r'); - - while (true) { - - /** Set CLI process title (PHP => 5.5.0). */ - if (function_exists('cli_set_process_title')) { - cli_set_process_title($phpMussel['ScriptIdent']); - } - - /** Echo the CLI-mode prompt. */ - echo $phpMussel['lang']['cli_prompt']; - - /** Wait for user input. */ - $phpMussel['stdin_clean'] = trim(fgets($phpMussel['stdin_handle'])); - - /** Set CLI process title with "working" notice (PHP =>5.5.0). */ - if (function_exists('cli_set_process_title')) { - cli_set_process_title($phpMussel['ScriptIdent'] . ' - ' . $phpMussel['lang']['cli_working'] . '...'); - } - - /** Fetch the command. **/ - $phpMussel['cmd'] = strtolower($phpMussel['substrbf']($phpMussel['stdin_clean'], ' ') ?: $phpMussel['stdin_clean']); - - /** Exit CLI-mode. **/ - if ($phpMussel['cmd'] === 'quit' || $phpMussel['cmd'] === 'q' || $phpMussel['cmd'] === 'exit') { - die; - } - - /** Generate an MD5 signature or a SHA1 signature using a file or directory. **/ - if ($phpMussel['cmd'] === 'md5_file' || $phpMussel['cmd'] === 'm' || $phpMussel['cmd'] === 'sha1_file') { - echo "\n" . $phpMussel['CLI-RecursiveCommand']($phpMussel['stdin_clean'], function ($Params) use (&$phpMussel) { - $HashMe = $phpMussel['ReadFile']($Params, 0, true); - return $phpMussel['HashAlias']($phpMussel['cmd'], $HashMe) . ':' . strlen($HashMe) . ':' . $phpMussel['lang']['cli_signature_placeholder'] . "\n"; - }); - } - - /** Generate a CoEx signature using a file. **/ - if ($phpMussel['cmd'] === 'coex_file') { - echo "\n" . $phpMussel['CLI-RecursiveCommand']($phpMussel['stdin_clean'], function ($Params) use (&$phpMussel) { - $HashMe = $phpMussel['ReadFile']($Params, 0, true); - return - '$md5:' . md5($HashMe) . ';' . - '$sha:' . sha1($HashMe) . ';' . - '$str_len:' . strlen($HashMe) . ';' . - $phpMussel['lang']['cli_signature_placeholder'] . "\n"; - }); - } - - /** Fetch PE metadata. **/ - if ($phpMussel['cmd'] === 'pe_meta') { - echo "\n" . $phpMussel['CLI-RecursiveCommand']($phpMussel['stdin_clean'], function ($Params) use (&$phpMussel) { - return $phpMussel['Fork']($phpMussel['cmd'] . ' ' . $Params, $Params) . "\n"; - }); - } - - /** Generate an MD5 signature or a SHA1 signature using a string. **/ - if ($phpMussel['cmd'] === 'md5' || $phpMussel['cmd'] === 'sha1') { - $phpMussel['TargetData'] = substr($phpMussel['stdin_clean'], strlen($phpMussel['cmd']) + 1); - echo "\n" . $phpMussel['cmd']($phpMussel['TargetData']) . ':' . strlen($phpMussel['TargetData']) . ':' . $phpMussel['lang']['cli_signature_placeholder'] . "\n"; - } - - /** Generate a URL scanner signature from a URL. **/ - if ($phpMussel['cmd'] === 'url_sig') { - echo "\n"; - $phpMussel['stdin_clean'] = $phpMussel['prescan_normalise'](substr($phpMussel['stdin_clean'], strlen($phpMussel['cmd']) + 1)); - $phpMussel['URL'] = ['avoidme' => '', 'forthis' => '']; - if ( - !preg_match_all('/(data|file|https?|ftps?|sftp|ss[hl])\:\/\/(www[0-9]{0,3}\.)?([0-9a-z.-]{1,512})/i', $phpMussel['stdin_clean'], $phpMussel['URL']['domain']) || - !preg_match_all('/(data|file|https?|ftps?|sftp|ss[hl])\:\/\/(www[0-9]{0,3}\.)?([\!\#\$\&-;\=\?\@-\[\]_a-z~]{1,4000})/i', $phpMussel['stdin_clean'], $phpMussel['URL']['url']) - ) { - echo $phpMussel['lang']['invalid_url'] . "\n"; - } else { - echo 'DOMAIN:' . md5($phpMussel['URL']['domain'][3][0]) . ':' . strlen($phpMussel['URL']['domain'][3][0]) . ':' . $phpMussel['lang']['cli_signature_placeholder'] . "\n"; - $phpMussel['URL']['forthis'] = md5($phpMussel['URL']['url'][3][0]) . ':' . strlen($phpMussel['URL']['url'][3][0]); - $phpMussel['URL']['avoidme'] .= ',' . $phpMussel['URL']['forthis'] . ','; - echo 'URL:' . $phpMussel['URL']['forthis'] . ':' . $phpMussel['lang']['cli_signature_placeholder'] . "\n"; - if (preg_match('/[^0-9a-z.-]$/i', $phpMussel['URL']['url'][3][0])) { - $phpMussel['URL']['x'] = preg_replace('/[^0-9a-z.-]+$/i', '', $phpMussel['URL']['url'][3][0]); - $phpMussel['URL']['forthis'] = md5($phpMussel['URL']['x']) . ':' . strlen($phpMussel['URL']['x']); - if (!substr_count($phpMussel['URL']['avoidme'], $phpMussel['URL']['forthis'])) { - $phpMussel['URL']['avoidme'] .= ',' . $phpMussel['URL']['forthis'] . ','; - echo 'URL:' . $phpMussel['URL']['forthis'] . ':' . $phpMussel['lang']['cli_signature_placeholder'] . "\n"; - } - } - if (substr_count($phpMussel['URL']['url'][3][0], '?')) { - $phpMussel['URL']['x'] = $phpMussel['substrbf']($phpMussel['URL']['url'][3][0], '?'); - $phpMussel['URL']['forthis'] = md5($phpMussel['URL']['x']) . ':' . strlen($phpMussel['URL']['x']); - if (!substr_count($phpMussel['URL']['avoidme'], $phpMussel['URL']['forthis'])) { - $phpMussel['URL']['avoidme'] .= ',' . $phpMussel['URL']['forthis'] . ','; - echo 'URL:' . $phpMussel['URL']['forthis'] . ':' . $phpMussel['lang']['cli_signature_placeholder'] . "\n"; - } - $phpMussel['URL']['x'] = $phpMussel['substraf']($phpMussel['URL']['url'][3][0], '?'); - $phpMussel['URL']['forthis'] = md5($phpMussel['URL']['x']) . ':' . strlen($phpMussel['URL']['x']); - if ( - !substr_count($phpMussel['URL']['avoidme'], $phpMussel['URL']['forthis']) && - $phpMussel['URL']['forthis'] != 'd41d8cd98f00b204e9800998ecf8427e:0' - ) { - $phpMussel['URL']['avoidme'] .= ',' . $phpMussel['URL']['forthis'] . ','; - echo 'QUERY:' . $phpMussel['URL']['forthis'] . ':' . $phpMussel['lang']['cli_signature_placeholder'] . "\n"; - } - } - } - unset($phpMussel['URL']); - } - - /** Generate a CoEx signature using a string. **/ - if ($phpMussel['cmd'] === 'coex') { - $phpMussel['TargetData'] = substr($phpMussel['stdin_clean'], strlen($phpMussel['cmd']) + 1); - echo "\n\$md5:" . md5($phpMussel['TargetData']) . ';$sha:' . sha1($phpMussel['TargetData']) . ';$str_len:' . strlen($phpMussel['TargetData']) . ';' . $phpMussel['lang']['cli_signature_placeholder'] . "\n"; - } - - /** Convert a binary string to a hexadecimal. **/ - if ($phpMussel['cmd'] === 'hex_encode' || $phpMussel['cmd'] === 'x') { - $phpMussel['TargetData'] = substr($phpMussel['stdin_clean'], strlen($phpMussel['cmd']) + 1); - echo "\n" . bin2hex($phpMussel['TargetData']) . "\n"; - } - - /** Convert a hexadecimal to a binary string. **/ - if ($phpMussel['cmd'] === 'hex_decode') { - $phpMussel['TargetData'] = substr($phpMussel['stdin_clean'], strlen($phpMussel['cmd']) + 1); - echo "\n" . ($phpMussel['HexSafe']($phpMussel['TargetData']) ?: $phpMussel['lang']['invalid_data']) . "\n"; - } - - /** Convert a binary string to a base64 string. **/ - if ($phpMussel['cmd'] === 'base64_encode' || $phpMussel['cmd'] === 'b') { - $phpMussel['TargetData'] = substr($phpMussel['stdin_clean'], strlen($phpMussel['cmd']) + 1); - echo "\n" . base64_encode($phpMussel['TargetData']) . "\n"; - } - - /** Convert a base64 string to a binary string. **/ - if ($phpMussel['cmd'] === 'base64_decode') { - $phpMussel['TargetData'] = substr($phpMussel['stdin_clean'], strlen($phpMussel['cmd']) + 1); - echo "\n" . (base64_decode($phpMussel['TargetData']) ?: $phpMussel['lang']['invalid_data']) . "\n"; - } - - /** Scan a file or directory. **/ - if ($phpMussel['cmd'] === 'scan' || $phpMussel['cmd'] === 's') { - echo "\n"; - $phpMussel['stdin_clean'] = substr($phpMussel['stdin_clean'], strlen($phpMussel['cmd']) + 1); - $out = $r = ''; - $phpMussel['memCache']['start_time'] = time() + ($phpMussel['Config']['general']['timeOffset'] * 60); - $phpMussel['memCache']['start_time_2822'] = $phpMussel['TimeFormat']($phpMussel['memCache']['start_time'], $phpMussel['Config']['general']['timeFormat']); - echo $s = $phpMussel['memCache']['start_time_2822'] . ' ' . $phpMussel['lang']['started'] . $phpMussel['lang']['_fullstop_final'] . "\n"; - if (is_dir($phpMussel['stdin_clean'])) { - if (!is_readable($phpMussel['stdin_clean'])) { - $out = '> ' . $phpMussel['lang']['failed_to_access'] . '"' . $phpMussel['stdin_clean'] . "\".\n"; - } else { - $Terminal = $phpMussel['stdin_clean'][strlen($phpMussel['stdin_clean']) - 1]; - if ($Terminal !== "\\" && $Terminal !== '/') { - $phpMussel['stdin_clean'] .= '/'; - } - $List = $phpMussel['DirectoryRecursiveList']($phpMussel['stdin_clean']); - $Total = count($List); - $Current = 0; - foreach ($List as $Item) { - $Percent = round(($Current / $Total) * 100, 2) . '%'; - echo $Percent . ' ' . $phpMussel['lang']['scan_complete'] . $phpMussel['lang']['_fullstop_final']; - $out = $phpMussel['Fork']('scan ' . $phpMussel['stdin_clean'] . $Item, $Item); - if (!$out) { - $out = '> ' . $phpMussel['lang']['cli_failed_to_complete'] . ' (' . $Item . ')' . $phpMussel['lang']['_exclamation_final'] . "\n"; - } - $r .= $out; - echo "\r" . $phpMussel['prescan_decode']($out); - $out = ''; - } - } - } elseif (is_file($phpMussel['stdin_clean'])) { - $out = $phpMussel['Fork']('scan ' . $phpMussel['stdin_clean'], $phpMussel['stdin_clean']); - if (!$out) { - $out = '> ' . $phpMussel['lang']['cli_failed_to_complete'] . $phpMussel['lang']['_exclamation_final'] . "\n"; - } - } elseif (!$out) { - $out = '> ' . $phpMussel['stdin_clean'] . $phpMussel['lang']['cli_is_not_a'] . "\n"; - } - $r .= $out; - if ($out) { - echo $phpMussel['prescan_decode']($out); - $out = ''; - } - $phpMussel['memCache']['end_time'] = time() + ($phpMussel['Config']['general']['timeOffset'] * 60); - $phpMussel['memCache']['end_time_2822'] = $phpMussel['TimeFormat']($phpMussel['memCache']['end_time'], $phpMussel['Config']['general']['timeFormat']); - $r = $s . $r; - $s = $phpMussel['memCache']['end_time_2822'] . ' ' . $phpMussel['lang']['finished'] . $phpMussel['lang']['_fullstop_final'] . "\n"; - echo $s; - $r .= $s; - $phpMussel['WriteScanLog']($r); - $phpMussel['WriteSerial']($phpMussel['memCache']['start_time'], $phpMussel['memCache']['end_time']); - unset($r, $s); - } - - /** Add an entry to the greylist. **/ - if ($phpMussel['cmd'] === 'greylist' || $phpMussel['cmd'] === 'g') { - echo "\n"; - $phpMussel['stdin_clean'] = substr($phpMussel['stdin_clean'], strlen($phpMussel['cmd']) + 1); - if (!empty($phpMussel['stdin_clean'])) { - $Greylist = file_exists($phpMussel['Vault'] . 'greylist.csv') ? $phpMussel['stdin_clean'] . ',' : ',' . $phpMussel['stdin_clean'] . ','; - $Handle = fopen($phpMussel['Vault'] . 'greylist.csv', 'a'); - fwrite($Handle, $Greylist); - fclose($Handle); - unset($Handle, $Greylist); - echo $phpMussel['lang']['greylist_updated']; - } - } - - /** Clear the greylist. **/ - if ($phpMussel['cmd'] === 'greylist_clear' || $phpMussel['cmd'] === 'gc') { - echo "\n"; - $Handle = fopen($phpMussel['Vault'] . 'greylist.csv', 'a'); - ftruncate($Handle, 0); - fwrite($Handle, ','); - fclose($Handle); - unset($Handle, $Greylist); - echo $phpMussel['lang']['greylist_cleared']; - } - - /** Show the greylist. **/ - if ($phpMussel['cmd'] === 'greylist_show' || $phpMussel['cmd'] === 'gs') { - $phpMussel['stdin_clean'] = substr($phpMussel['stdin_clean'], strlen($phpMussel['cmd']) + 1); - echo - file_exists($phpMussel['Vault'] . 'greylist.csv') ? - "\n greylist.csv:\n" . implode("\n ", explode(',', $phpMussel['ReadFile']($phpMussel['Vault'] . 'greylist.csv'))) : - "\n greylist.csv " . $phpMussel['lang']['x_does_not_exist'] . $phpMussel['lang']['_exclamation_final']; - } - - /** Print the command list. **/ - if ($phpMussel['cmd'] === 'c') { - echo $phpMussel['lang']['cli_commands']; - } - - } - - die; -} - -/** Restores default error handler (assuming we somehow reach this far). */ -restore_error_handler(); diff --git a/libraries/plugins/phpMussel/vault/components.dat b/libraries/plugins/phpMussel/vault/components.dat deleted file mode 100644 index 1cf14bd..0000000 --- a/libraries/plugins/phpMussel/vault/components.dat +++ /dev/null @@ -1,505 +0,0 @@ ---- -phpMussel: - Name: phpMussel - Version: 1.1.0-DEV+17299342 - Minimum Required: 1.0.0-DEV - Minimum Required PHP: 5.4.0 - Changelog: https://raw.githubusercontent.com/phpMussel/phpMussel/master/Changelog-v1.txt - Remote: https://raw.githubusercontent.com/phpMussel/phpMussel/master/vault/components.dat - Tests: https://api.github.com/repos/phpMussel/phpMussel/commits/master/status - Files: - From: - - https://raw.githubusercontent.com/phpMussel/phpMussel/master/vault/.htaccess - - https://raw.githubusercontent.com/phpMussel/phpMussel/master/vault/cache/.htaccess - - https://raw.githubusercontent.com/phpMussel/phpMussel/master/vault/cli.php - - https://raw.githubusercontent.com/phpMussel/phpMussel/master/vault/config.php - - https://raw.githubusercontent.com/phpMussel/phpMussel/master/vault/config.yaml - - https://raw.githubusercontent.com/phpMussel/phpMussel/master/vault/fe_assets/.htaccess - - https://raw.githubusercontent.com/phpMussel/phpMussel/master/vault/fe_assets/_accounts.html - - https://raw.githubusercontent.com/phpMussel/phpMussel/master/vault/fe_assets/_accounts_row.html - - https://raw.githubusercontent.com/phpMussel/phpMussel/master/vault/fe_assets/_config.html - - https://raw.githubusercontent.com/phpMussel/phpMussel/master/vault/fe_assets/_config_row.html - - https://raw.githubusercontent.com/phpMussel/phpMussel/master/vault/fe_assets/_files.html - - https://raw.githubusercontent.com/phpMussel/phpMussel/master/vault/fe_assets/_files_edit.html - - https://raw.githubusercontent.com/phpMussel/phpMussel/master/vault/fe_assets/_files_rename.html - - https://raw.githubusercontent.com/phpMussel/phpMussel/master/vault/fe_assets/_files_row.html - - https://raw.githubusercontent.com/phpMussel/phpMussel/master/vault/fe_assets/_home.html - - https://raw.githubusercontent.com/phpMussel/phpMussel/master/vault/fe_assets/_login.html - - https://raw.githubusercontent.com/phpMussel/phpMussel/master/vault/fe_assets/_logs.html - - https://raw.githubusercontent.com/phpMussel/phpMussel/master/vault/fe_assets/_nav_complete_access.html - - https://raw.githubusercontent.com/phpMussel/phpMussel/master/vault/fe_assets/_nav_logs_access_only.html - - https://raw.githubusercontent.com/phpMussel/phpMussel/master/vault/fe_assets/_quarantine.html - - https://raw.githubusercontent.com/phpMussel/phpMussel/master/vault/fe_assets/_quarantine_row.html - - https://raw.githubusercontent.com/phpMussel/phpMussel/master/vault/fe_assets/_statistics.html - - https://raw.githubusercontent.com/phpMussel/phpMussel/master/vault/fe_assets/_updates.html - - https://raw.githubusercontent.com/phpMussel/phpMussel/master/vault/fe_assets/_updates_row.html - - https://raw.githubusercontent.com/phpMussel/phpMussel/master/vault/fe_assets/_upload_test.html - - https://raw.githubusercontent.com/phpMussel/phpMussel/master/vault/fe_assets/frontend.css - - https://raw.githubusercontent.com/phpMussel/phpMussel/master/vault/fe_assets/frontend.html - - https://raw.githubusercontent.com/phpMussel/phpMussel/master/vault/fe_assets/icons.php - - https://raw.githubusercontent.com/phpMussel/phpMussel/master/vault/fe_assets/pips.php - - https://raw.githubusercontent.com/phpMussel/phpMussel/master/vault/frontend.php - - https://raw.githubusercontent.com/phpMussel/phpMussel/master/vault/frontend_functions.php - - https://raw.githubusercontent.com/phpMussel/phpMussel/master/vault/functions.php - - https://raw.githubusercontent.com/phpMussel/phpMussel/master/vault/hotfixes.php - - https://raw.githubusercontent.com/phpMussel/phpMussel/master/vault/lang.php - - https://raw.githubusercontent.com/phpMussel/phpMussel/master/vault/lang/.htaccess - - https://raw.githubusercontent.com/phpMussel/phpMussel/master/vault/php5.4.x.php - - https://raw.githubusercontent.com/phpMussel/phpMussel/master/vault/plugins/.htaccess - - https://raw.githubusercontent.com/phpMussel/phpMussel/master/vault/quarantine/.htaccess - - https://raw.githubusercontent.com/phpMussel/phpMussel/master/vault/signatures/.htaccess - - https://raw.githubusercontent.com/phpMussel/phpMussel/master/vault/signatures/switch.dat - - https://raw.githubusercontent.com/phpMussel/phpMussel/master/vault/template_custom.html - - https://raw.githubusercontent.com/phpMussel/phpMussel/master/vault/template_default.html - - https://raw.githubusercontent.com/phpMussel/phpMussel/master/vault/upload.php - To: - - .htaccess - - cache/.htaccess - - cli.php - - config.php - - config.yaml - - fe_assets/.htaccess - - fe_assets/_accounts.html - - fe_assets/_accounts_row.html - - fe_assets/_config.html - - fe_assets/_config_row.html - - fe_assets/_files.html - - fe_assets/_files_edit.html - - fe_assets/_files_rename.html - - fe_assets/_files_row.html - - fe_assets/_home.html - - fe_assets/_login.html - - fe_assets/_logs.html - - fe_assets/_nav_complete_access.html - - fe_assets/_nav_logs_access_only.html - - fe_assets/_quarantine.html - - fe_assets/_quarantine_row.html - - fe_assets/_statistics.html - - fe_assets/_updates.html - - fe_assets/_updates_row.html - - fe_assets/_upload_test.html - - fe_assets/frontend.css - - fe_assets/frontend.html - - fe_assets/icons.php - - fe_assets/pips.php - - frontend.php - - frontend_functions.php - - functions.php - - hotfixes.php - - lang.php - - lang/.htaccess - - php5.4.x.php - - plugins/.htaccess - - quarantine/.htaccess - - signatures/.htaccess - - signatures/switch.dat - - template_custom.html - - template_default.html - - upload.php - Checksum: - - 8e03209e7fc6641b45094e584340feff:83 - - 8e03209e7fc6641b45094e584340feff:83 - - ab6596aec66d83bf5831b960f7cc0721:26908 - - 8a1fba5a431d62af6e97d21981ea1d4b:8187 - - 8ecc57a3dfaef77b0b82471fbe4c4c50:10925 - - 8e03209e7fc6641b45094e584340feff:83 - - f9b29eb4e33f72eaa9ad0842888461d9:2025 - - 9025d3dcbd89499db76c7849f96540de:1413 - - bc02f572ddea026f90f2ef5bf40cb539:911 - - 074c67c091a96c1608c4cad9497dfe00:277 - - 357e95bb0cf74883aeab77a4b4b8d10f:1202 - - fa973cf819c1cd1edf54e66c7df50b6a:791 - - ac9394fde006dc99d1f14ee75d266d4d:691 - - f17e84cae693051fe62f5902347823ca:494 - - bb0dcb9a48d6809e629a74aa88d4c159:971 - - e04cea9fa56fc9a3b337e816dffb33fb:2216 - - b0d6c57d061434a37aefd4ea0eeacd32:349 - - 72f37639fb80ce0089b7863d426ae758:1045 - - 644aeefa6b0189f265849e38dba83cee:490 - - 0a34853d5c376ae029da8ab2df4a1be5:991 - - 6745a752f1d048497d888fd3bd35ff26:1224 - - f5171f7ef36e0df4e2d32361ad4c18b9:2783 - - 5e246861fa6774b1242182db29b96570:1232 - - b452519ff43e2e113e629ad8476f109e:702 - - 7f714e853c61332e31cfd55864f99e5a:960 - - a671a54e362b647cdd8b0df261784053:5292 - - 3989f547102e67371e0388cff2470281:1028 - - 4d4b8356beee307735f73ceddf6d21b0:17579 - - 1f7377ba8beb1a4d28714fa320973741:929 - - 2683fb0c6df6cf86d9031e15a94d9a42:154272 - - e8483c78ce89a9dbeca1e22b91bb7c9a:42732 - - 40b00b43427b8fb901b517989cbda507:260539 - - ac607d0db4c0e159005c087365a6b77c:3072 - - 8b815acfcd404d2ed26f7b9bd5db49c1:4777 - - 8e03209e7fc6641b45094e584340feff:83 - - 6351e0e03eb701945b54d491531e0f5a:1703 - - 8e03209e7fc6641b45094e584340feff:83 - - 8e03209e7fc6641b45094e584340feff:83 - - 8e03209e7fc6641b45094e584340feff:83 - - 2c5e1906295c889436749adc4441ffa4:3233 - - caed7b1d78502266f746797a028146b1:1140 - - df2e543957a5c95438a31c67e163fdcc:2039 - - 115ddd9a10eade146b215fd38bcc8f3a:20327 - Reannotate: components.dat -l10n/en: - Name: L10N: English - Extended Description: English language data - Version: 2017.298.576 - Minimum Required: 1.0.0-DEV - Minimum Required PHP: 5.4.0 - Remote: https://raw.githubusercontent.com/phpMussel/phpMussel/master/vault/components.dat - Uninstallable: true - Files: - From: - - https://raw.githubusercontent.com/phpMussel/phpMussel/master/vault/lang/lang.en.fe.php - - https://raw.githubusercontent.com/phpMussel/phpMussel/master/vault/lang/lang.en.php - To: - - lang/lang.en.fe.php - - lang/lang.en.php - Checksum: - - a3e1900dc688a96bc6fb6d8c5d6ebae9:44579 - - 005e49f9a56a42fc8b08afb4243fee5f:7285 - Reannotate: components.dat -l10n/ar: - Name: L10N: العربية - Extended Description: ملفات اللغة العربية - Version: 2017.298.576 - Minimum Required: 1.0.0-DEV - Minimum Required PHP: 5.4.0 - Remote: https://raw.githubusercontent.com/phpMussel/phpMussel/master/vault/components.dat - Uninstallable: true - Files: - From: - - https://raw.githubusercontent.com/phpMussel/phpMussel/master/vault/lang/lang.ar.fe.php - - https://raw.githubusercontent.com/phpMussel/phpMussel/master/vault/lang/lang.ar.php - To: - - lang/lang.ar.fe.php - - lang/lang.ar.php - Checksum: - - 933cac30011ae0499add4099d6b7c2eb:59530 - - efa247fcf1901e4c282809b8b58c6b52:8867 - Reannotate: components.dat -l10n/de: - Name: L10N: Deutsche - Extended Description: Deutsche Sprachdateien - Version: 2017.298.576 - Minimum Required: 1.0.0-DEV - Minimum Required PHP: 5.4.0 - Remote: https://raw.githubusercontent.com/phpMussel/phpMussel/master/vault/components.dat - Uninstallable: true - Files: - From: - - https://raw.githubusercontent.com/phpMussel/phpMussel/master/vault/lang/lang.de.fe.php - - https://raw.githubusercontent.com/phpMussel/phpMussel/master/vault/lang/lang.de.php - To: - - lang/lang.de.fe.php - - lang/lang.de.php - Checksum: - - ced62c89c689b706f0ce09f4ab1de0b8:47360 - - 6b14dcbf66287b38b7b4a73994ed905b:7822 - Reannotate: components.dat -l10n/es: - Name: L10N: Español - Extended Description: Lingüísticos datos Español - Version: 2017.298.576 - Minimum Required: 1.0.0-DEV - Minimum Required PHP: 5.4.0 - Remote: https://raw.githubusercontent.com/phpMussel/phpMussel/master/vault/components.dat - Uninstallable: true - Files: - From: - - https://raw.githubusercontent.com/phpMussel/phpMussel/master/vault/lang/lang.es.fe.php - - https://raw.githubusercontent.com/phpMussel/phpMussel/master/vault/lang/lang.es.php - To: - - lang/lang.es.fe.php - - lang/lang.es.php - Checksum: - - e79646aeb7945d379bb3d32fad90d6d9:49028 - - 56d430a5966eecd424fdc9eca3e54a1f:7640 - Reannotate: components.dat -l10n/fr: - Name: L10N: Français - Extended Description: Linguistiques données en Français - Version: 2017.298.576 - Minimum Required: 1.0.0-DEV - Minimum Required PHP: 5.4.0 - Remote: https://raw.githubusercontent.com/phpMussel/phpMussel/master/vault/components.dat - Uninstallable: true - Files: - From: - - https://raw.githubusercontent.com/phpMussel/phpMussel/master/vault/lang/lang.fr.fe.php - - https://raw.githubusercontent.com/phpMussel/phpMussel/master/vault/lang/lang.fr.php - To: - - lang/lang.fr.fe.php - - lang/lang.fr.php - Checksum: - - 6a8ca8827a97c6a9c22d67e8bd64a683:50618 - - f5e011090ca3719ece8301cd5abca634:8353 - Reannotate: components.dat -l10n/hi: - Name: L10N: हिंदी - Extended Description: हिंदी भाषा डाटा - Version: 2017.298.576 - Minimum Required: 1.0.0-DEV - Minimum Required PHP: 5.4.0 - Remote: https://raw.githubusercontent.com/phpMussel/phpMussel/master/vault/components.dat - Uninstallable: true - Files: - From: - - https://raw.githubusercontent.com/phpMussel/phpMussel/master/vault/lang/lang.hi.fe.php - - https://raw.githubusercontent.com/phpMussel/phpMussel/master/vault/lang/lang.hi.php - To: - - lang/lang.hi.fe.php - - lang/lang.hi.php - Checksum: - - dddc5055f8821a9a8129c5b19d7affc1:82477 - - d3c53c0d2c690e4186df61d2c0efad24:12635 - Reannotate: components.dat -l10n/id: - Name: L10N: Bahasa Indonesia - Extended Description: File Bahasa Indonesia - Version: 2017.298.576 - Minimum Required: 1.0.0-DEV - Minimum Required PHP: 5.4.0 - Remote: https://raw.githubusercontent.com/phpMussel/phpMussel/master/vault/components.dat - Uninstallable: true - Files: - From: - - https://raw.githubusercontent.com/phpMussel/phpMussel/master/vault/lang/lang.id.fe.php - - https://raw.githubusercontent.com/phpMussel/phpMussel/master/vault/lang/lang.id.php - To: - - lang/lang.id.fe.php - - lang/lang.id.php - Checksum: - - 5eecde2d8431816631916acca2ad83b6:46318 - - 9d22345cce734b9a79785518588f649f:7536 - Reannotate: components.dat -l10n/it: - Name: L10N: Italiana - Extended Description: Linguistici dati Italiana - Version: 2017.298.576 - Minimum Required: 1.0.0-DEV - Minimum Required PHP: 5.4.0 - Remote: https://raw.githubusercontent.com/phpMussel/phpMussel/master/vault/components.dat - Uninstallable: true - Files: - From: - - https://raw.githubusercontent.com/phpMussel/phpMussel/master/vault/lang/lang.it.fe.php - - https://raw.githubusercontent.com/phpMussel/phpMussel/master/vault/lang/lang.it.php - To: - - lang/lang.it.fe.php - - lang/lang.it.php - Checksum: - - cd6ed60494430769597514e9c649c3fd:48431 - - 0dd27e263d7d074b23533afb9e4c4d62:7735 - Reannotate: components.dat -l10n/ja: - Name: L10N: 日本語 - Extended Description: 日本語言語データ - Version: 2017.298.576 - Minimum Required: 1.0.0-DEV - Minimum Required PHP: 5.4.0 - Remote: https://raw.githubusercontent.com/phpMussel/phpMussel/master/vault/components.dat - Uninstallable: true - Files: - From: - - https://raw.githubusercontent.com/phpMussel/phpMussel/master/vault/lang/lang.ja.fe.php - - https://raw.githubusercontent.com/phpMussel/phpMussel/master/vault/lang/lang.ja.php - To: - - lang/lang.ja.fe.php - - lang/lang.ja.php - Checksum: - - 5e3d7fdd144c55ff7d2caa4b9ae6f6fd:55779 - - 71f4a0590ce4371eb8ddd8f80c888b1c:9519 - Reannotate: components.dat -l10n/ko: - Name: L10N: 한국어 - Extended Description: 한국어 언어 데이터 - Version: 2017.298.576 - Minimum Required: 1.0.0-DEV - Minimum Required PHP: 5.4.0 - Remote: https://raw.githubusercontent.com/phpMussel/phpMussel/master/vault/components.dat - Uninstallable: true - Files: - From: - - https://raw.githubusercontent.com/phpMussel/phpMussel/master/vault/lang/lang.ko.fe.php - - https://raw.githubusercontent.com/phpMussel/phpMussel/master/vault/lang/lang.ko.php - To: - - lang/lang.ko.fe.php - - lang/lang.ko.php - Checksum: - - bf0aa534fe833b7a0cc4c78231ebdd37:46964 - - 647796db17d01cc8c00e19fc3b9cf1b5:8342 - Reannotate: components.dat -l10n/nl: - Name: L10N: Nederlandse - Extended Description: Nederlandse taaldata/taalgegevens - Version: 2017.298.576 - Minimum Required: 1.0.0-DEV - Minimum Required PHP: 5.4.0 - Remote: https://raw.githubusercontent.com/phpMussel/phpMussel/master/vault/components.dat - Uninstallable: true - Files: - From: - - https://raw.githubusercontent.com/phpMussel/phpMussel/master/vault/lang/lang.nl.fe.php - - https://raw.githubusercontent.com/phpMussel/phpMussel/master/vault/lang/lang.nl.php - To: - - lang/lang.nl.fe.php - - lang/lang.nl.php - Checksum: - - b33ed4046b168dae6b04525672f96b69:47986 - - 3389d489c20a7eccf157617a5aa84ff9:7654 - Reannotate: components.dat -l10n/pt: - Name: L10N: Português - Extended Description: Linguagem dados Português - Version: 2017.298.576 - Minimum Required: 1.0.0-DEV - Minimum Required PHP: 5.4.0 - Remote: https://raw.githubusercontent.com/phpMussel/phpMussel/master/vault/components.dat - Uninstallable: true - Files: - From: - - https://raw.githubusercontent.com/phpMussel/phpMussel/master/vault/lang/lang.pt.fe.php - - https://raw.githubusercontent.com/phpMussel/phpMussel/master/vault/lang/lang.pt.php - To: - - lang/lang.pt.fe.php - - lang/lang.pt.php - Checksum: - - 85571234050bdd05305f112699b19981:48248 - - 7e5d1e402ffad04fd82ec3beb02ff72d:7872 - Reannotate: components.dat -l10n/ru: - Name: L10N: Русский - Extended Description: Русском языковые файлы - Version: 2017.298.576 - Minimum Required: 1.0.0-DEV - Minimum Required PHP: 5.4.0 - Remote: https://raw.githubusercontent.com/phpMussel/phpMussel/master/vault/components.dat - Uninstallable: true - Files: - From: - - https://raw.githubusercontent.com/phpMussel/phpMussel/master/vault/lang/lang.ru.fe.php - - https://raw.githubusercontent.com/phpMussel/phpMussel/master/vault/lang/lang.ru.php - To: - - lang/lang.ru.fe.php - - lang/lang.ru.php - Checksum: - - 52a43e65c8a8e14870de19b38d6b86cb:66482 - - 14f957917c96aa489425ff11208b2df1:10585 - Reannotate: components.dat -l10n/th: - Name: L10N: ภาษาไทย - Extended Description: ข้อมูลภาษาไทย - Version: 2017.298.576 - Minimum Required: 1.0.0-DEV - Minimum Required PHP: 5.4.0 - Remote: https://raw.githubusercontent.com/phpMussel/phpMussel/master/vault/components.dat - Uninstallable: true - Files: - From: - - https://raw.githubusercontent.com/phpMussel/phpMussel/master/vault/lang/lang.th.fe.php - - https://raw.githubusercontent.com/phpMussel/phpMussel/master/vault/lang/lang.th.php - To: - - lang/lang.th.fe.php - - lang/lang.th.php - Checksum: - - 6995127644e9d74d238af37c760487bc:81873 - - fb6880d51f43ee52f33daf690c04db40:12073 - Reannotate: components.dat -l10n/tr: - Name: L10N: Türkçe - Extended Description: Türkçe dili verileri - Version: 2017.298.576 - Minimum Required: 1.0.0-DEV - Minimum Required PHP: 5.4.0 - Remote: https://raw.githubusercontent.com/phpMussel/phpMussel/master/vault/components.dat - Uninstallable: true - Files: - From: - - https://raw.githubusercontent.com/phpMussel/phpMussel/master/vault/lang/lang.tr.fe.php - - https://raw.githubusercontent.com/phpMussel/phpMussel/master/vault/lang/lang.tr.php - To: - - lang/lang.tr.fe.php - - lang/lang.tr.php - Checksum: - - 8a7f2b5a748d9fa78ce1d299a69807b2:46121 - - e820f7dff75948aa6ee595a092a08265:7914 - Reannotate: components.dat -l10n/ur: - Name: L10N: ‏اردو‏ - Extended Description: ‏اردو‏ زبان فائلوں - Version: 2017.298.576 - Minimum Required: 1.0.0-DEV - Minimum Required PHP: 5.4.0 - Remote: https://raw.githubusercontent.com/phpMussel/phpMussel/master/vault/components.dat - Uninstallable: true - Files: - From: - - https://raw.githubusercontent.com/phpMussel/phpMussel/master/vault/lang/lang.ur.fe.php - - https://raw.githubusercontent.com/phpMussel/phpMussel/master/vault/lang/lang.ur.php - To: - - lang/lang.ur.fe.php - - lang/lang.ur.php - Checksum: - - 649f7a722291b22c464e764e35270fe6:65559 - - c7410f4bf9c9c0e88f860cb073224de9:9517 - Reannotate: components.dat -l10n/vi: - Name: L10N: Tiếng Việt - Extended Description: Dữ liệu tiếng Việt - Version: 2017.298.576 - Minimum Required: 1.0.0-DEV - Minimum Required PHP: 5.4.0 - Remote: https://raw.githubusercontent.com/phpMussel/phpMussel/master/vault/components.dat - Uninstallable: true - Files: - From: - - https://raw.githubusercontent.com/phpMussel/phpMussel/master/vault/lang/lang.vi.fe.php - - https://raw.githubusercontent.com/phpMussel/phpMussel/master/vault/lang/lang.vi.php - To: - - lang/lang.vi.fe.php - - lang/lang.vi.php - Checksum: - - 444bb3e7b6728599063f639a26658b49:55815 - - 5e388bc095fae167ec3c5b2da0f49807:8748 - Reannotate: components.dat -l10n/zh-TW: - Name: L10N: 中文(傳統) - Extended Description: 中文(傳統)語言數據 - Version: 2017.298.576 - Minimum Required: 1.0.0-DEV - Minimum Required PHP: 5.4.0 - Remote: https://raw.githubusercontent.com/phpMussel/phpMussel/master/vault/components.dat - Uninstallable: true - Files: - From: - - https://raw.githubusercontent.com/phpMussel/phpMussel/master/vault/lang/lang.zh-tw.fe.php - - https://raw.githubusercontent.com/phpMussel/phpMussel/master/vault/lang/lang.zh-tw.php - To: - - lang/lang.zh-tw.fe.php - - lang/lang.zh-tw.php - Checksum: - - a1c30edbf6471f94aaa37639506d46ee:42588 - - e8a490beead3498f3a47475fad72bfea:7221 - Reannotate: components.dat -l10n/zh: - Name: L10N: 中文(简体) - Extended Description: 中文(简体)语言数据 - Version: 2017.298.576 - Minimum Required: 1.0.0-DEV - Minimum Required PHP: 5.4.0 - Remote: https://raw.githubusercontent.com/phpMussel/phpMussel/master/vault/components.dat - Uninstallable: true - Files: - From: - - https://raw.githubusercontent.com/phpMussel/phpMussel/master/vault/lang/lang.zh.fe.php - - https://raw.githubusercontent.com/phpMussel/phpMussel/master/vault/lang/lang.zh.php - To: - - lang/lang.zh.fe.php - - lang/lang.zh.php - Checksum: - - bdb33867e9bca1d58f64db9c029d0aef:42564 - - af9d1058af99a996aa16cac9d40556bc:7220 - Reannotate: components.dat - diff --git a/libraries/plugins/phpMussel/vault/config.ini b/libraries/plugins/phpMussel/vault/config.ini deleted file mode 100644 index f08318a..0000000 --- a/libraries/plugins/phpMussel/vault/config.ini +++ /dev/null @@ -1,516 +0,0 @@ -[general] - -; Unset variables and cache used by the script after the initial upload -; scanning? False = No; True = Yes [Default]. If you -aren't- using the script -; beyond the initial scanning of uploads, you should set this to true (yes), to -; minimize memory usage. If you -are- using the script beyond the initial -; scanning of uploads, should set to false (no), to avoid unnecessarily -; reloading duplicate data into memory. In general practice, it should usually -; be set to true, but, if you do this, you won't be able to use the script for -; anything other than the initial file upload scanning. Has no influence in CLI -; mode. -cleanup=true - -; Filename of file to log all scanning results to. Specify a filename, or leave -; blank to disable. -scan_log='scan_log.txt' - -; Filename of file to log all scanning results to (using a serialised format). -; Specify a filename, or leave blank to disable. -scan_log_serialized='scan_log_serialized.txt' - -; Filename of file to log all records of blocked or killed uploads to. Specify -; a filename, or leave blank to disable. -scan_kills='scan_kills.txt' - -; Truncate logfiles when they reach a certain size? Value is the maximum size -; in B/KB/MB/GB/TB that a logfile may grow to before being truncated. The -; default value of 0KB disables truncation (logfiles can grow indefinitely). -; Note: Applies to individual logfiles! The size of logfiles is not considered -; collectively. -truncate='0KB' - -; Your timezone. -timezone='SYSTEM' - -; Timezone offset in minutes. -timeOffset=0 - -; The date/time notation format used by phpMussel. Additional options may be -; added upon request. -timeFormat='{Day}, {dd} {Mon} {yyyy} {hh}:{ii}:{ss} {tz}' - -; Where to find the IP address of connecting requests? (Useful for services -; such as Cloudflare and the likes) Default = REMOTE_ADDR. WARNING: Don't -; change this unless you know what you're doing! -ipaddr='REMOTE_ADDR' - -; Enable support for phpMussel plugins? False = No; True = Yes [Default]. -enable_plugins=true - -; Should phpMussel send 403 headers with the file upload blocked message, or -; stick with the usual 200 OK? False = No (200); True = Yes (403) [Default]. -forbid_on_block=true - -; Enabling this directive will instruct the script to attempt to immediately -; delete any scanned attempted file upload matching any detection criteria, -; whether via signatures or otherwise. Files determined to be "clean" won't be -; touched. In the case of archives, the entire archive will be deleted, -; regardless of whether or not the offending file is only one of several files -; contained within the archive. For the case of file upload scanning, usually, -; it isn't necessary to enable this directive, because usually, PHP will -; automatically purge the contents of its cache when execution has finished, -; meaning it'll usually delete any files uploaded through it to the server -; unless they've been moved, copied or deleted already. This directive is added -; here as an extra measure of security for those whose copies of PHP mightn't -; always behave in the manner expected. False = After scanning, leave the file -; alone [Default]; True = After scanning, if not clean, delete immediately. -delete_on_sight=false - -; Specify the default language for phpMussel. -lang='en' - -; How do you prefer numbers to be displayed? Select the example that looks the -; most correct to you. -numbers='Latin-1' - -; phpMussel is able to quarantine flagged attempted file uploads in isolation -; within the phpMussel vault, if this is something you want it to do. Casual -; users of phpMussel that simply wish to protect their websites or hosting -; environment without having any interest in deeply analysing any flagged -; attempted file uploads should leave this functionality disabled, but any -; users interested in further analysis of flagged attempted file uploads for -; malware research or for similar such things should enable this functionality. -; Quarantining of flagged attempted file uploads can sometimes also assist in -; debugging false positives, if this is something that frequently occurs for -; you. To disable quarantine functionality, simply leave the quarantine_key -; directive empty, or erase the contents of that directive if it isn't already -; empty. To enable quarantine functionality, enter some value into the -; directive. The quarantine_key is an important security feature of the -; quarantine functionality required as a means of preventing the quarantine -; functionality from being exploited by potential attackers and as a means of -; preventing any potential execution of data stored within the quarantine. The -; quarantine_key should be treated in the same manner as your passwords: The -; longer the better, and guard it tightly. For best effect, use in conjunction -; with delete_on_sight. -quarantine_key='' - -; The maximum filesize allowed for files to be quarantined. Files larger than -; the value specified will NOT be quarantined. This directive is important as a -; means of making it more difficult for any potential attackers to flood your -; quarantine with unwanted data potentially causing run-away data usage on your -; hosting service. Default = 2MB. -quarantine_max_filesize='2MB' - -; The maximum memory usage allowed for the quarantine. If the total memory used -; by the quarantine reaches this value, the oldest quarantined files will be -; deleted until the total memory used no longer reaches this value. This -; directive is important as a means of making it more difficult for any -; potential attackers to flood your quarantine with unwanted data potentially -; causing run-away data usage on your hosting service. Default = 64MB. -quarantine_max_usage='64MB' - -; When honeypot mode is enabled, phpMussel will attempt to quarantine every -; single file upload that it encounters, regardless of whether or not the file -; being uploaded matches any included signatures, and no actual scanning or -; analysis of those attempted file uploads will actually occur. This -; functionality should be useful for those that wish to use phpMussel for the -; purposes of virus/malware research, but it's neither recommended to enable -; this functionality if the intended use of phpMussel by the user is for actual -; file upload scanning, nor recommended to use the honeypot functionality for -; purposes other than honeypotting. By default, this option is disabled. False -; = Disabled [Default]; True = Enabled. -honeypot_mode=false - -; For how long should phpMussel cache the results of scanning? Value is the -; number of seconds to cache the results of scanning for. Default is 21600 -; seconds (6 hours); A value of 0 will disable caching the results of scanning. -scan_cache_expiry=21600 - -; Disable CLI mode? CLI mode is enabled by default, but can sometimes interfere -; with certain testing tools (such as PHPUnit, for example) and other CLI-based -; applications. If you don't need to disable CLI mode, you should ignore this -; directive. False = Enable CLI mode [Default]; True = Disable CLI mode. -disable_cli=false - -; Disable front-end access? Front-end access can make phpMussel more -; manageable, but can also be a potential security risk, too. It's recommended -; to manage phpMussel via the back-end whenever possible, but front-end access -; is provided for when it isn't possible. Keep it disabled unless you need it. -; False = Enable front-end access; True = Disable front-end access [Default]. -disable_frontend=true - -; Maximum number of login attempts (front-end). Default = 5. -max_login_attempts=5 - -; File for logging front-end login attempts. Specify a filename, or leave blank -; to disable. -FrontEndLog='' - -; Disable webfonts? True = Yes; False = No [Default]. -disable_webfonts=false - -; Enable maintenance mode? True = Yes; False = No [Default]. Disables -; everything other than the front-end. Sometimes useful for when updating your -; CMS, frameworks, etc. -maintenance_mode=false - -; Defines which algorithm to use for all future passwords and sessions. -; Options: PASSWORD_DEFAULT (default), PASSWORD_BCRYPT, PASSWORD_ARGON2I -; (requires PHP >= 7.2.0). -default_algo='PASSWORD_DEFAULT' - -; Track phpMussel usage statistics? -statistics=false - - -[signatures] - -; A list of the active signature files, delimited by commas. -Active='' - -; Should phpMussel report when signatures files are missing or corrupted? If -; fail_silently is disabled, missing and corrupted files will be reported on -; scanning, and if fail_silently is enabled, missing and corrupted files will -; be ignored, with scanning reporting for those files that there aren't any -; problems. This should generally be left alone unless you're experiencing -; crashes or similar problems. False = Disabled; True = Enabled [Default]. -fail_silently=true - -; Should phpMussel report when extensions are missing? If -; fail_extensions_silently is disabled, missing extensions will be reported on -; scanning, and if fail_extensions_silently is enabled, missing extensions will -; be ignored, with scanning reporting for those files that there aren't any -; problems. Disabling this directive may potentially increase your security, -; but may also lead to an increase of false positives. False = Disabled; True = -; Enabled [Default]. -fail_extensions_silently=true - -; Should phpMussel parse signatures for detecting adware? False = No; True = -; Yes [Default]. -detect_adware=true - -; Should phpMussel parse signatures for detecting joke/hoax malware/viruses? -; False = No; True = Yes [Default]. -detect_joke_hoax=true - -; Should phpMussel parse signatures for detecting PUAs/PUPs? False = No; True = -; Yes [Default]. -detect_pua_pup=true - -; Should phpMussel parse signatures for detecting packers and packed data? -; False = No; True = Yes [Default]. -detect_packer_packed=true - -; Should phpMussel parse signatures for detecting shell scripts? False = No; -; True = Yes [Default]. -detect_shell=true - -; Should phpMussel parse signatures for detecting defacements and defacers? -; False = No; True = Yes [Default]. -detect_deface=true - -; Should phpMussel detect and block encrypted files? False = No; True = Yes -; [Default]. -detect_encryption=true - - -[files] - -; Maximum allowable number of files to scan during files upload scan before -; aborting the scan and informing the user they are uploading too much at once! -; Provides protection against a theoretical attack whereby an attacker attempts -; to DDoS your system or CMS by overloading phpMussel to slow down the PHP -; process to a grinding halt. Recommended: 10. You may wish to raise or lower -; this number depending on the speed of your hardware. Note that this number -; doesn't account for or include the contents of archives. -max_uploads=10 - -; Filesize limit in KB. 65536 = 64MB [Default]; 0 = No limit (always -; greylisted). Any (positive) numeric value accepted. This can be useful when -; your PHP configuration limits the amount of memory a process can hold or if -; your PHP configuration limits filesize of uploads. -filesize_limit='64MB' - -; What to do with files that exceed the filesize limit (if one exists). False = -; Whitelist; True = Blacklist [Default]. -filesize_response=true - -; If your system only allows specific types of files to be uploaded, or if your -; system explicitly denies certain types of files, specifying those filetypes -; in whitelists, blacklists and greylists can increase the speed at which -; scanning is performed by allowing the script to skip over certain filetypes. -; Format is CSV (comma separated values). If you want to scan everything, -; rather than whitelist, blacklist or greylist, leave the variable(/s) blank; -; Doing so will disable whitelist/blacklist/greylist. Logical order of -; processing is: If the filetype is whitelisted, don't scan and don't block the -; file, and don't check the file against the blacklist or the greylist. If the -; filetype is blacklisted, don't scan the file but block it anyway, and don't -; check the file against the greylist. If the greylist is empty or if the -; greylist is not empty and the filetype is greylisted, scan the file as per -; normal and determine whether to block it based on the results of the scan, -; but if the greylist is not empty and the filetype is not greylisted, treat -; the file as blacklisted, therefore not scanning it but blocking it anyway. -; Whitelist: -filetype_whitelist='' - -; Blacklist: -filetype_blacklist='386,acc*,acm,act*,apk,app,ash*,asm*,asx*,ax,bat,bin,ccc,cgi,cmd,com*,cpl,cpp,csh,dll,drv,elf,exe,fxp,gad*,hta*,htp*,ico,inf,ins,inx,ipa,isu,job,js,jse,ksh,lnk,msc,msi,msp,mst,net,ocx,ops,org,osx,out,paf,php*,pif,pl,prg,ps1,reg,rgs,rs,run,scr*,sct,shb,shs,sql*,sys,u3p,url,vb,vbe,vbs*,wor*,ws,wsf,xsl' - -; Greylist: -filetype_greylist='' - -; Attempt to check the contents of archives? False = Don't check; True = Check -; [Default]. Currently, the only archive and compression formats supported are -; BZ/BZIP2, GZ/GZIP, LZF, PHAR, TAR and ZIP (archive and compression formats -; RAR, CAB, 7z and etcetera not currently supported). This is not foolproof! -; While I highly recommend keeping this turned on, I can't guarantee it'll -; always find everything. Also be aware that archive checking currently is not -; recursive for PHARs or ZIPs. -check_archives=true - -; Carry over filesize blacklisting/whitelisting to the contents of archives? -; False = No (just greylist everything); True = Yes [Default]. -filesize_archives=true - -; Carry over filetype blacklisting/whitelisting to the contents of archives? -; False = No (just greylist everything) [Default]; True = Yes. -filetype_archives=false - -; Maximum recursion depth limit for archives. Default = 10. -max_recursion=10 - -; Detect and block encrypted archives? Because phpMussel isn't able to scan the -; contents of encrypted archives, it's possible that archive encryption may be -; employed by an attacker as a means of attempting to bypass phpMussel, -; anti-virus scanners and other such protections. Instructing phpMussel to -; block any archives that it discovers to be encrypted could potentially help -; reduce any risk associated with these such possibilities. False = No; True = -; Yes [Default]. -block_encrypted_archives=true - - -[attack_specific] - -; Search for PHP header in files that are neither PHP files nor recognised -; archives. False = Off; True = On. -chameleon_from_php=true - -; Search for executable headers in files that are neither executables nor -; recognised archives and for executables whose headers are incorrect. False = -; Off; True = On. -chameleon_from_exe=true - -; Search for archives whose headers are incorrect (Supported: BZ, GZ, RAR, ZIP, -; RAR, GZ). False = Off; True = On. -chameleon_to_archive=true - -; Search for office documents whose headers are incorrect (Supported: DOC, DOT, -; PPS, PPT, XLA, XLS, WIZ). False = Off; True = On. -chameleon_to_doc=true - -; Search for images whose headers are incorrect (Supported: BMP, DIB, PNG, GIF, -; JPEG, JPG, XCF, PSD, PDD, WEBP). False = Off; True = On. -chameleon_to_img=true - -; Search for PDF files whose headers are incorrect. False = Off; True = On. -chameleon_to_pdf=true - -; Recognised archive file extensions (format is CSV; should only add or remove -; when problems occur; unnecessarily removing may cause false positives to -; appear for archive files, whereas unnecessarily adding will essentially -; whitelist what you're adding from attack specific detection; modify with -; caution; also note that this has no effect on what archives can and can't be -; analysed at content-level). The list, as is at default, lists those formats -; used most commonly across the majority of systems and CMS, but intentionally -; isn't necessarily comprehensive. -archive_file_extensions='7z,a,ace,alz,apk,app,ar,arc,arj,ba,bh,bz,bz2,dmg,gz,ice,iso,lha,lz,lzh,lzo,lzw,lzx,mar,pak,pck,pea,phar,rar,rz,s7z,sea,sen,sfx,shar,sqx,tar,tgz,tlz,xar,xp3,xz,yz1,z,zz,paq*,sit*,tbz*,zip*' - -; Block any files containing any control characters (other than newlines)? -; ([\x00-\x08\x0b\x0c\x0e\x1f\x7f]) If you're ONLY uploading plain-text, then -; you can turn this option on to provide some additional protection to your -; system. However, if you upload anything other than plain-text, turning this -; on may result in false positives. False = Don't block [Default]; True = -; Block. -block_control_characters=false - -; Corrupted files and parse errors. False = Ignore; True = Block [Default]. -; Detect and block potentially corrupted PE (Portable Executable) files? Often -; (but not always), when certain aspects of a PE file are corrupted or can't be -; parsed correctly, it can be indicative of a viral infection. The processes -; used by most anti-virus programs to detect viruses in PE files require -; parsing those files in certain ways, which, if the programmer of a virus is -; aware of, will specifically try to prevent, in order to allow their virus to -; remain undetected. -corrupted_exe=true - -; Threshold for the length of raw data within which decode commands should be -; detected (in case there are any noticeable performance issues while -; scanning). Default = 512KB. Zero or null disables the threshold (removing any -; such limitation based on filesize). -decode_threshold='512KB' - -; Threshold to the length of raw data that phpMussel is permitted to read and -; scan (in case there are any noticeable performance issues while scanning). -; Default = 32MB. Zero or null value disables the threshold. Generally, this -; value shouldn't be less than the average filesize of file uploads that you -; want and expect to receive to your server or website, shouldn't be more than -; the filesize_limit directive, and shouldn't be more than roughly one fifth of -; the total allowable memory allocation granted to PHP via the "php.ini" -; configuration file. This directive exists to try to prevent phpMussel from -; using up too much memory (that'd prevent it from being able to successfully -; scan files above a certain filesize). -scannable_threshold='32MB' - - -[compatibility] - -; This directive should generally be disabled unless it's required for correct -; functionality of phpMussel on your specific system. Normally, when disabled, -; when phpMussel detects the presence of elements in the $_FILES array(), it'll -; attempt to initiate a scan of the files that those elements represent, and, -; if those elements are blank or empty, phpMussel will return an error message. -; This is proper behaviour for phpMussel. However, for some CMS, empty elements -; in $_FILES can occur as a result of the natural behaviour of those CMS, or -; errors may be reported when there aren't any, in which case, the normal -; behaviour for phpMussel will be interfering with the normal behaviour of -; those CMS. If such a situation occurs for you, enabling this option will -; instruct phpMussel to not attempt to initiate scans for such empty elements, -; ignore them when found and to not return any related error messages, thus -; allowing continuation of the page request. False = OFF; True = ON. -ignore_upload_errors=true - -; If you only expect or only intend to allow images to be uploaded to your -; system or CMS, and if you absolutely don't require any files other than -; images to be uploaded to your system or CMS, this directive should be -; enabled, but should otherwise be disabled. If this directive is enabled, -; it'll instruct phpMussel to indiscriminately block any uploads identified as -; non-image files, without scanning them. This may reduce processing time and -; memory usage for attempted uploads of non-image files. False = OFF; True = -; ON. -only_allow_images=false - - -[heuristic] - -; There are certain signatures of phpMussel that are intended to identify -; suspicious and potentially malicious qualities of files being uploaded -; without in themselves identifying those files being uploaded specifically as -; being malicious. This "threshold" value tells phpMussel what the maximum -; total weight of suspicious and potentially malicious qualities of files being -; uploaded that's allowable is before those files are to be flagged as -; malicious. The definition of weight in this context is the total number of -; suspicious and potentially malicious qualities identified. By default, this -; value will be set to 3. A lower value generally will result in a higher -; occurrence of false positives but a higher number of malicious files being -; flagged, whereas a higher value generally will result in a lower occurrence -; of false positives but a lower number of malicious files being flagged. It's -; generally best to leave this value at its default unless you're experiencing -; problems related to it. -threshold=3 - - -[virustotal] - -; Optionally, phpMussel is able to scan files using the Virus Total API as a -; way to provide a greatly enhanced level of protection against viruses, -; trojans, malware and other threats. By default, scanning files using the -; Virus Total API is disabled. To enable it, an API key from Virus Total is -; required. Due to the significant benefit that this could provide to you, it's -; something that I highly recommend enabling. Please be aware, however, that to -; use the Virus Total API, you MUST agree to their Terms of Service and you -; MUST adhere to all guidelines as per described by the Virus Total -; documentation! You are NOT permitted to use this integration feature UNLESS: -; You have read and agree to the Terms of Service of Virus Total and its API. -; You have read and you understand, at a minimum, the preamble of the Virus -; Total Public API documentation (everything after "VirusTotal Public API v2.0" -; but before "Contents"). -vt_public_api_key='' - -; By default, phpMussel will restrict which files it scans using the Virus -; Total API to those files that it considers "suspicious". You can optionally -; adjust this restriction by changing the value of the vt_suspicion_level -; directive. -vt_suspicion_level=1 - -; Should phpMussel apply the results of scanning using the Virus Total API as -; detections or as detection weighting? This directive exists, because, -; although scanning a file using multiple engines (as Virus Total does) should -; result in an increased detection rate (and therefore in a higher number of -; malicious files being caught), it can also result in a higher number of false -; positives, and therefore, in some circumstances, the results of scanning may -; be better utilised as a confidence score rather than as a definitive -; conclusion. If a value of 0 is used, the results of scanning using the Virus -; Total API will be applied as detections, and therefore, if any engine used by -; Virus Total flags the file being scanned as being malicious, phpMussel will -; consider the file to be malicious. If any other value is used, the results of -; scanning using the Virus Total API will be applied as detection weighting, -; and therefore, the number of engines used by Virus Total that flag the file -; being scanned as being malicious will serve as a confidence score (or -; detection weighting) for whether or not the file being scanned should be -; considered malicious by phpMussel (the value used will represent the minimum -; confidence score or weight required in order to be considered malicious). A -; value of 0 is used by default. -vt_weighting=0 - -; According to the Virus Total API documentation, "it is limited to at most 4 -; requests of any nature in any given 1 minute time frame. If you run a -; honeyclient, honeypot or any other automation that is going to provide -; resources to VirusTotal and not only retrieve reports you are entitled to a -; higher request rate quota". By default, phpMussel will strictly adhere to -; these limitations, but due to the possibility of these rate quotas being -; increased, these two directives are provided as a means for you to instruct -; phpMussel as to what limit it should adhere to. Unless you've been instructed -; to do so, it's not recommended for you to increase these values, but, if -; you've encountered problems relating to reaching your rate quota, decreasing -; these values MAY sometimes help you in dealing with these problems. Your rate -; limit is determined as vt_quota_rate requests of any nature in any given -; vt_quota_time minute time frame. -vt_quota_rate=4 - -; (See description above). -vt_quota_time=1 - - -[urlscanner] - -; Enables API lookups to the hpHosts API when set to true. -lookup_hphosts=true - -; Enables API lookups to the Google Safe Browsing API when the necessary API -; key is defined. -google_api_key='' - -; Maximum allowable number of API lookups to perform per individual scan -; iteration. Because each additional API lookup will add to the total time -; required to complete each scan iteration, you may wish to stipulate a -; limitation in order to expedite the overall scan process. When set to 0, no -; such maximum allowable number will be applied. Set to 10 by default. -maximum_api_lookups=10 - -; What to do if the maximum allowable number of API lookups is exceeded? False -; = Do nothing (continue processing) [Default]; True = Flag/block the file. -maximum_api_lookups_response=false - -; How long (in seconds) should the results of API lookups be cached for? -; Default is 3600 seconds (1 hour). -cache_time=3600 - - -[template_data] - -; Default theme to use for phpMussel. -theme='default' - -; Font magnification. Default = 1. -Magnification=1 - -; The template file for custom themes utilises external CSS properties, whereas -; the template file for the default theme utilises internal CSS properties. To -; instruct phpMussel to use the template file for custom themes, specify the -; public HTTP address of your custom theme's CSS files using the css_url -; variable. If you leave this variable blank, phpMussel will use the template -; file for the default theme. -css_url='' - - diff --git a/libraries/plugins/phpMussel/vault/config.php b/libraries/plugins/phpMussel/vault/config.php deleted file mode 100644 index 5f619e4..0000000 --- a/libraries/plugins/phpMussel/vault/config.php +++ /dev/null @@ -1,202 +0,0 @@ - $Value) { - $phpMussel['Config'][$Category][$Directive] = $Value; - } - }); - $phpMussel['Overrides'] = true; - } - } else { - $fileContent = file_get_contents($phpMussel['Vault'] . $phpMussel['Domain'] . '.config.ini'); - - if ($phpMussel['Overrides'] = parse_ini_string($fileContent, true)) { - array_walk($phpMussel['Overrides'], function ($Keys, $Category) use (&$phpMussel) { - foreach ($Keys as $Directive => $Value) { - $phpMussel['Config'][$Category][$Directive] = $Value; - } - }); - $phpMussel['Overrides'] = true; - } - - } -} - -/** Kills the script if parsing the configuration overrides file fails. */ -if (isset($phpMussel['Overrides']) && $phpMussel['Overrides'] === false) { - header('Content-Type: text/plain'); - die('[phpMussel] Configuration overrides file is corrupt! Can\'t continue until this is resolved.'); -} - -/** Attempts to parse the phpMussel configuration defaults file. */ -$phpMussel['YAML']($phpMussel['ReadFile']($phpMussel['Vault'] . 'config.yaml'), $phpMussel['Config']); - -/** Kills the script if parsing the configuration defaults file fails. */ -if (empty($phpMussel['Config']['Config Defaults'])) { - header('Content-Type: text/plain'); - die('[phpMussel] Configuration defaults file is corrupt! Please reinstall phpMussel.'); -} - -/** Perform fallbacks and autotyping for missing configuration directives. */ -$phpMussel['Config']['Temp'] = []; -foreach ($phpMussel['Config']['Config Defaults'] as $phpMussel['Config']['Temp']['KeyCat'] => $phpMussel['Config']['Temp']['DCat']) { - if (!isset($phpMussel['Config'][$phpMussel['Config']['Temp']['KeyCat']])) { - $phpMussel['Config'][$phpMussel['Config']['Temp']['KeyCat']] = []; - } - if (isset($phpMussel['Config']['Temp']['Cat'])) { - unset($phpMussel['Config']['Temp']['Cat']); - } - $phpMussel['Config']['Temp']['Cat'] = &$phpMussel['Config'][$phpMussel['Config']['Temp']['KeyCat']]; - if (!is_array($phpMussel['Config']['Temp']['DCat'])) { - continue; - } - foreach ($phpMussel['Config']['Temp']['DCat'] as $phpMussel['Config']['Temp']['KeyDir'] => $phpMussel['Config']['Temp']['DDir']) { - if ( - !isset($phpMussel['Config']['Temp']['Cat'][$phpMussel['Config']['Temp']['KeyDir']]) && - isset($phpMussel['Config']['Temp']['DDir']['default']) - ) { - $phpMussel['Config']['Temp']['Cat'][$phpMussel['Config']['Temp']['KeyDir']] = $phpMussel['Config']['Temp']['DDir']['default']; - } - if (isset($phpMussel['Config']['Temp']['Dir'])) { - unset($phpMussel['Config']['Temp']['Dir']); - } - $phpMussel['Config']['Temp']['Dir'] = &$phpMussel['Config']['Temp']['Cat'][$phpMussel['Config']['Temp']['KeyDir']]; - if (isset($phpMussel['Config']['Temp']['DDir']['type'])) { - $phpMussel['AutoType']($phpMussel['Config']['Temp']['Dir'], $phpMussel['Config']['Temp']['DDir']['type']); - } - } -} -unset($phpMussel['Config']['Temp']); - -/** Failsafe for weird ipaddr configuration. */ -if ($phpMussel['Config']['general']['ipaddr'] !== 'REMOTE_ADDR' && empty($_SERVER[$phpMussel['Config']['general']['ipaddr']])) { - $phpMussel['Config']['general']['ipaddr'] = 'REMOTE_ADDR'; -} - -/** Ensure we have an IP address variable to work with. */ -if (!isset($_SERVER[$phpMussel['Config']['general']['ipaddr']])) { - $_SERVER[$phpMussel['Config']['general']['ipaddr']] = ''; -} - -/** Adjusted present time. */ -$phpMussel['Time'] = time() + ($phpMussel['Config']['general']['timeOffset'] * 60); - -/** Set timezone. */ -if (!empty($phpMussel['Config']['general']['timezone']) && $phpMussel['Config']['general']['timezone'] !== 'SYSTEM') { - date_default_timezone_set($phpMussel['Config']['general']['timezone']); -} - -/** Determine whether operating in CLI-mode. */ -$phpMussel['Mussel_sapi'] = !defined('Via-Travis') && ( - empty($_SERVER['REQUEST_METHOD']) || - substr(php_sapi_name(), 0, 3) === 'cli' || ( - empty($_SERVER[$phpMussel['Config']['general']['ipaddr']]) && - empty($_SERVER['HTTP_USER_AGENT']) && - !empty($_SERVER['argc']) && - is_numeric($_SERVER['argc']) && - $_SERVER['argc'] > 0 - ) - ); - -/** Process the request query and query variables (if any exist). */ -if (!empty($_SERVER['QUERY_STRING'])) { - $phpMussel['Query'] = $_SERVER['QUERY_STRING']; - parse_str($_SERVER['QUERY_STRING'], $phpMussel['QueryVars']); -} else { - $phpMussel['Query'] = ''; - $phpMussel['QueryVars'] = []; -} - -/** Set default hashing algorithm. */ -$phpMussel['DefaultAlgo'] = ( - !empty($phpMussel['Config']['general']['default_algo']) && defined($phpMussel['Config']['general']['default_algo']) -) ? constant($phpMussel['Config']['general']['default_algo']) : 1; diff --git a/libraries/plugins/phpMussel/vault/config.yaml b/libraries/plugins/phpMussel/vault/config.yaml deleted file mode 100644 index 50b4313..0000000 --- a/libraries/plugins/phpMussel/vault/config.yaml +++ /dev/null @@ -1,378 +0,0 @@ -Config Defaults: - general: - cleanup: - type: bool - default: true - scan_log: - type: string - default: "scan_log.txt" - scan_log_serialized: - type: string - default: "scan_log_serialized.txt" - scan_kills: - type: string - default: "scan_kills.txt" - truncate: - type: kb - default: "0KB" - preview: kb - timezone: - type: timezone - default: "SYSTEM" - timeOffset: - type: int - default: 0 - preview: minutes - timeFormat: - type: string - default: "{Day}, {dd} {Mon} {yyyy} {hh}:{ii}:{ss} {tz}" - choices: - "{Day}, {dd} {Mon} {yyyy} {hh}:{ii}:{ss} {tz}": "{Day}, {dd} {Mon} {yyyy} {hh}:{ii}:{ss} {tz}" - "{Day}, {dd} {Mon} {yyyy} {hh}:{ii}:{ss}": "{Day}, {dd} {Mon} {yyyy} {hh}:{ii}:{ss}" - "{Day}, {dd} {Mon} {yyyy}": "{Day}, {dd} {Mon} {yyyy}" - "{yyyy}.{mm}.{dd} {hh}:{ii}:{ss} {tz}": "{yyyy}.{mm}.{dd} {hh}:{ii}:{ss} {tz}" - "{yyyy}.{mm}.{dd} {hh}:{ii}:{ss}": "{yyyy}.{mm}.{dd} {hh}:{ii}:{ss}" - "{yyyy}.{mm}.{dd}": "{yyyy}.{mm}.{dd}" - "{yyyy}-{mm}-{dd} {hh}:{ii}:{ss} {tz}": "{yyyy}-{mm}-{dd} {hh}:{ii}:{ss} {tz}" - "{yyyy}-{mm}-{dd} {hh}:{ii}:{ss}": "{yyyy}-{mm}-{dd} {hh}:{ii}:{ss}" - "{yyyy}-{mm}-{dd}": "{yyyy}-{mm}-{dd}" - "{yyyy}/{mm}/{dd} {hh}:{ii}:{ss} {tz}": "{yyyy}/{mm}/{dd} {hh}:{ii}:{ss} {tz}" - "{yyyy}/{mm}/{dd} {hh}:{ii}:{ss}": "{yyyy}/{mm}/{dd} {hh}:{ii}:{ss}" - "{yyyy}/{mm}/{dd}": "{yyyy}/{mm}/{dd}" - "{dd}.{mm}.{yyyy} {hh}:{ii}:{ss} {tz}": "{dd}.{mm}.{yyyy} {hh}:{ii}:{ss} {tz}" - "{dd}.{mm}.{yyyy} {hh}:{ii}:{ss}": "{dd}.{mm}.{yyyy} {hh}:{ii}:{ss}" - "{dd}.{mm}.{yyyy}": "{dd}.{mm}.{yyyy}" - "{dd}-{mm}-{yyyy} {hh}:{ii}:{ss} {tz}": "{dd}-{mm}-{yyyy} {hh}:{ii}:{ss} {tz}" - "{dd}-{mm}-{yyyy} {hh}:{ii}:{ss}": "{dd}-{mm}-{yyyy} {hh}:{ii}:{ss}" - "{dd}-{mm}-{yyyy}": "{dd}-{mm}-{yyyy}" - "{dd}/{mm}/{yyyy} {hh}:{ii}:{ss} {tz}": "{dd}/{mm}/{yyyy} {hh}:{ii}:{ss} {tz}" - "{dd}/{mm}/{yyyy} {hh}:{ii}:{ss}": "{dd}/{mm}/{yyyy} {hh}:{ii}:{ss}" - "{dd}/{mm}/{yyyy}": "{dd}/{mm}/{yyyy}" - "{mm}.{dd}.{yyyy} {hh}:{ii}:{ss} {tz}": "{mm}.{dd}.{yyyy} {hh}:{ii}:{ss} {tz}" - "{mm}.{dd}.{yyyy} {hh}:{ii}:{ss}": "{mm}.{dd}.{yyyy} {hh}:{ii}:{ss}" - "{mm}.{dd}.{yyyy}": "{mm}.{dd}.{yyyy}" - "{mm}-{dd}-{yyyy} {hh}:{ii}:{ss} {tz}": "{mm}-{dd}-{yyyy} {hh}:{ii}:{ss} {tz}" - "{mm}-{dd}-{yyyy} {hh}:{ii}:{ss}": "{mm}-{dd}-{yyyy} {hh}:{ii}:{ss}" - "{mm}-{dd}-{yyyy}": "{mm}-{dd}-{yyyy}" - "{mm}/{dd}/{yyyy} {hh}:{ii}:{ss} {tz}": "{mm}/{dd}/{yyyy} {hh}:{ii}:{ss} {tz}" - "{mm}/{dd}/{yyyy} {hh}:{ii}:{ss}": "{mm}/{dd}/{yyyy} {hh}:{ii}:{ss}" - "{mm}/{dd}/{yyyy}": "{mm}/{dd}/{yyyy}" - "{yy}.{mm}.{dd} {hh}:{ii}:{ss} {tz}": "{yy}.{mm}.{dd} {hh}:{ii}:{ss} {tz}" - "{yy}.{mm}.{dd} {hh}:{ii}:{ss}": "{yy}.{mm}.{dd} {hh}:{ii}:{ss}" - "{yy}.{mm}.{dd}": "{yy}.{mm}.{dd}" - "{yy}-{mm}-{dd} {hh}:{ii}:{ss} {tz}": "{yy}-{mm}-{dd} {hh}:{ii}:{ss} {tz}" - "{yy}-{mm}-{dd} {hh}:{ii}:{ss}": "{yy}-{mm}-{dd} {hh}:{ii}:{ss}" - "{yy}-{mm}-{dd}": "{yy}-{mm}-{dd}" - "{yy}/{mm}/{dd} {hh}:{ii}:{ss} {tz}": "{yy}/{mm}/{dd} {hh}:{ii}:{ss} {tz}" - "{yy}/{mm}/{dd} {hh}:{ii}:{ss}": "{yy}/{mm}/{dd} {hh}:{ii}:{ss}" - "{yy}/{mm}/{dd}": "{yy}/{mm}/{dd}" - "{dd}.{mm}.{yy} {hh}:{ii}:{ss} {tz}": "{dd}.{mm}.{yy} {hh}:{ii}:{ss} {tz}" - "{dd}.{mm}.{yy} {hh}:{ii}:{ss}": "{dd}.{mm}.{yy} {hh}:{ii}:{ss}" - "{dd}.{mm}.{yy}": "{dd}.{mm}.{yy}" - "{dd}-{mm}-{yy} {hh}:{ii}:{ss} {tz}": "{dd}-{mm}-{yy} {hh}:{ii}:{ss} {tz}" - "{dd}-{mm}-{yy} {hh}:{ii}:{ss}": "{dd}-{mm}-{yy} {hh}:{ii}:{ss}" - "{dd}-{mm}-{yy}": "{dd}-{mm}-{yy}" - "{dd}/{mm}/{yy} {hh}:{ii}:{ss} {tz}": "{dd}/{mm}/{yy} {hh}:{ii}:{ss} {tz}" - "{dd}/{mm}/{yy} {hh}:{ii}:{ss}": "{dd}/{mm}/{yy} {hh}:{ii}:{ss}" - "{dd}/{mm}/{yy}": "{dd}/{mm}/{yy}" - "{mm}.{dd}.{yy} {hh}:{ii}:{ss} {tz}": "{mm}.{dd}.{yy} {hh}:{ii}:{ss} {tz}" - "{mm}.{dd}.{yy} {hh}:{ii}:{ss}": "{mm}.{dd}.{yy} {hh}:{ii}:{ss}" - "{mm}.{dd}.{yy}": "{mm}.{dd}.{yy}" - "{mm}-{dd}-{yy} {hh}:{ii}:{ss} {tz}": "{mm}-{dd}-{yy} {hh}:{ii}:{ss} {tz}" - "{mm}-{dd}-{yy} {hh}:{ii}:{ss}": "{mm}-{dd}-{yy} {hh}:{ii}:{ss}" - "{mm}-{dd}-{yy}": "{mm}-{dd}-{yy}" - "{mm}/{dd}/{yy} {hh}:{ii}:{ss} {tz}": "{mm}/{dd}/{yy} {hh}:{ii}:{ss} {tz}" - "{mm}/{dd}/{yy} {hh}:{ii}:{ss}": "{mm}/{dd}/{yy} {hh}:{ii}:{ss}" - "{mm}/{dd}/{yy}": "{mm}/{dd}/{yy}" - "{yyyy}年{m}月{d}日 {hh}時{ii}分{ss}秒": "{yyyy}年{m}月{d}日 {hh}時{ii}分{ss}秒" - "{yyyy}年{m}月{d}日 {hh}:{ii}:{ss} {tz}": "{yyyy}年{m}月{d}日 {hh}:{ii}:{ss} {tz}" - "{yyyy}年{m}月{d}日": "{yyyy}年{m}月{d}日" - "{yy}年{m}月{d}日 {hh}時{ii}分{ss}秒": "{yy}年{m}月{d}日 {hh}時{ii}分{ss}秒" - "{yy}年{m}月{d}日 {hh}:{ii}:{ss} {tz}": "{yy}年{m}月{d}日 {hh}:{ii}:{ss} {tz}" - "{yy}年{m}月{d}日": "{yy}年{m}月{d}日" - "{yyyy}년 {m}월 {d}일 {hh}시 {ii}분 {ss}초": "{yyyy}년 {m}월 {d}일 {hh}시 {ii}분 {ss}초" - "{yyyy}년 {m}월 {d}일 {hh}:{ii}:{ss} {tz}": "{yyyy}년 {m}월 {d}일 {hh}:{ii}:{ss} {tz}" - "{yyyy}년 {m}월 {d}일": "{yyyy}년 {m}월 {d}일" - "{yy}년 {m}월 {d}일 {hh}시 {ii}분 {ss}초": "{yy}년 {m}월 {d}일 {hh}시 {ii}분 {ss}초" - "{yy}년 {m}월 {d}일 {hh}:{ii}:{ss} {tz}": "{yy}년 {m}월 {d}일 {hh}:{ii}:{ss} {tz}" - "{yy}년 {m}월 {d}일": "{yy}년 {m}월 {d}일" - "{yyyy}-{mm}-{dd}T{hh}:{ii}:{ss}{t:z}": "{yyyy}-{mm}-{dd}T{hh}:{ii}:{ss}{t:z}" - "{d}. {m}. {yyyy}": "{d}. {m}. {yyyy}" - ipaddr: - type: string - default: "REMOTE_ADDR" - enable_plugins: - type: bool - default: true - forbid_on_block: - type: bool - default: true - delete_on_sight: - type: bool - default: false - lang: - type: string - default: "en" - choices: - en: English - ar: العربية - bn: বাংলা - de: Deutsch - es: Español - fr: Français - hi: हिंदी - id: Bahasa Indonesia - it: Italiano - ja: 日本語 - ko: 한국어 - nl: Nederlandse - no: Norsk - pl: Polski - pt: Português - ru: Русский - sv: Svenska - th: ภาษาไทย - tr: Türkçe - ur: ‏اردو‏ - vi: Tiếng Việt - zh: 中文(简体) - zh-tw: 中文(傳統) - choice_filter: "FilterLang" - numbers: - type: string - default: "Latin-1" - choices: - NoSep-1: "1234567.89" - NoSep-2: "1234567,89" - Latin-1: "1,234,567.89" - Latin-2: "1 234 567.89" - Latin-3: "1.234.567,89" - Latin-4: "1 234 567,89" - Latin-5: "1,234,567·89" - China-1: "123,4567.89" - India-1: "12,34,567.89" - India-2: "१२,३४,५६७.८९" - Bengali-1: "১২,৩৪,৫৬৭.৮৯" - Arabic-1: "١٢٣٤٥٦٧٫٨٩" - Arabic-2: "١٬٢٣٤٬٥٦٧٫٨٩" - Thai-1: "๑,๒๓๔,๕๖๗.๘๙" - quarantine_key: - type: string - default: "" - quarantine_max_filesize: - type: kb - step: any - default: "2MB" - preview: kb - quarantine_max_usage: - type: kb - step: any - default: "64MB" - preview: kb - honeypot_mode: - type: bool - default: false - scan_cache_expiry: - type: int - default: 21600 - preview: seconds - disable_cli: - type: bool - default: false - disable_frontend: - type: bool - default: true - max_login_attempts: - type: int - default: 5 - FrontEndLog: - type: string - default: "" - disable_webfonts: - type: bool - default: false - maintenance_mode: - type: bool - default: false - default_algo: - type: string - default: "PASSWORD_DEFAULT" - choices: - PASSWORD_DEFAULT: PASSWORD_DEFAULT - PASSWORD_BCRYPT: PASSWORD_BCRYPT - PASSWORD_ARGON2I: PASSWORD_ARGON2I (PHP >= 7.2.0) - choice_filter: "FilterAlgo" - statistics: - type: bool - default: false - signatures: - Active: - type: string - default: "" - fail_silently: - type: bool - default: true - fail_extensions_silently: - type: bool - default: true - detect_adware: - type: bool - default: true - detect_joke_hoax: - type: bool - default: true - detect_pua_pup: - type: bool - default: true - detect_packer_packed: - type: bool - default: true - detect_shell: - type: bool - default: true - detect_deface: - type: bool - default: true - detect_encryption: - type: bool - default: true - files: - max_uploads: - type: int - default: 10 - filesize_limit: - type: kb - step: any - default: "64MB" - preview: kb - filesize_response: - type: bool - default: true - filetype_whitelist: - type: string - default: "" - filetype_blacklist: - type: string - default: "386,acc*,acm,act*,apk,app,ash*,asm*,asx*,ax,bat,bin,ccc,cgi,cmd,com*,cpl,cpp,csh,dll,drv,elf,exe,fxp,gad*,hta*,htp*,ico,inf,ins,inx,ipa,isu,job,js,jse,ksh,lnk,msc,msi,msp,mst,net,ocx,ops,org,osx,out,paf,php*,pif,pl,prg,ps1,reg,rgs,rs,run,scr*,sct,shb,shs,sql*,sys,u3p,url,vb,vbe,vbs*,wor*,ws,wsf,xsl" - filetype_greylist: - type: string - default: "" - check_archives: - type: bool - default: true - filesize_archives: - type: bool - default: true - filetype_archives: - type: bool - default: false - max_recursion: - type: int - default: 10 - block_encrypted_archives: - type: bool - default: true - attack_specific: - chameleon_from_php: - type: bool - default: true - chameleon_from_exe: - type: bool - default: true - chameleon_to_archive: - type: bool - default: true - chameleon_to_doc: - type: bool - default: true - chameleon_to_img: - type: bool - default: true - chameleon_to_pdf: - type: bool - default: true - archive_file_extensions: - type: string - default: "7z,a,ace,alz,apk,app,ar,arc,arj,ba,bh,bz,bz2,dmg,gz,ice,iso,lha,lz,lzh,lzo,lzw,lzx,mar,pak,pck,pea,phar,rar,rz,s7z,sea,sen,sfx,shar,sqx,tar,tgz,tlz,xar,xp3,xz,yz1,z,zz,paq*,sit*,tbz*,zip*" - block_control_characters: - type: bool - default: false - corrupted_exe: - type: bool - default: true - decode_threshold: - type: kb - step: any - default: "512KB" - preview: kb - scannable_threshold: - type: kb - step: any - default: "32MB" - preview: kb - compatibility: - ignore_upload_errors: - type: bool - default: false - only_allow_images: - type: bool - default: false - heuristic: - threshold: - type: int - default: 3 - virustotal: - vt_public_api_key: - type: string - default: "" - vt_suspicion_level: - type: int - default: 1 - vt_weighting: - type: int - default: 0 - vt_quota_rate: - type: int - default: 4 - vt_quota_time: - type: int - default: 1 - preview: minutes - urlscanner: - lookup_hphosts: - type: bool - default: true - google_api_key: - type: string - default: "" - maximum_api_lookups: - type: int - default: 10 - maximum_api_lookups_response: - type: bool - default: false - cache_time: - type: int - default: 3600 - preview: seconds - template_data: - theme: - type: string - default: "default" - choices: - default: "Default" - rbi: "Red-Blue Inverted" - slate: "Slate" - bluemetal: "Blue Metal" - moss: "Moss" - fullmoon: "Full Moon" - unicorn: "Unicorn" - choice_filter: "FilterTheme" - Magnification: - type: real - step: any - default: 1 - css_url: - type: string - default: "" - diff --git a/libraries/plugins/phpMussel/vault/fe_assets/.htaccess b/libraries/plugins/phpMussel/vault/fe_assets/.htaccess deleted file mode 100644 index 3ebfe62..0000000 --- a/libraries/plugins/phpMussel/vault/fe_assets/.htaccess +++ /dev/null @@ -1,6 +0,0 @@ - - Order Allow,Deny - Deny from All - -Order Allow,Deny -Deny from All diff --git a/libraries/plugins/phpMussel/vault/fe_assets/_accounts.html b/libraries/plugins/phpMussel/vault/fe_assets/_accounts.html deleted file mode 100644 index bc21be7..0000000 --- a/libraries/plugins/phpMussel/vault/fe_assets/_accounts.html +++ /dev/null @@ -1,34 +0,0 @@ - - - - - -
        -
        {state_msg}
        - - - - - - - - - - - - - - - -{Accounts} -
        {field_username}
        {field_permissions}
        {field_set_new_password}
        {field_options}{link_accounts}
        -
        -
        -
        -
        -
        - -
        -
        -
        diff --git a/libraries/plugins/phpMussel/vault/fe_assets/_accounts_row.html b/libraries/plugins/phpMussel/vault/fe_assets/_accounts_row.html deleted file mode 100644 index 1965387..0000000 --- a/libraries/plugins/phpMussel/vault/fe_assets/_accounts_row.html +++ /dev/null @@ -1,16 +0,0 @@ - -
        -
        {AccUsername}
        {AccWarnings} -
        {AccPermissions}
        -
        - -
        -
        -
        {AccUsername}
        {AccWarnings}
        {AccPermissions}
        -
        -
        - -
        - -
        - diff --git a/libraries/plugins/phpMussel/vault/fe_assets/_config.html b/libraries/plugins/phpMussel/vault/fe_assets/_config.html deleted file mode 100644 index 9433777..0000000 --- a/libraries/plugins/phpMussel/vault/fe_assets/_config.html +++ /dev/null @@ -1,24 +0,0 @@ - - - - - -
        -
        {state_msg}
        - - - - - - -{ConfigFields} - -
        {link_config}
        -
        {tip_see_the_documentation}
        {label_active_config_file}{ActiveConfigFile}
        -
        -
        -
        diff --git a/libraries/plugins/phpMussel/vault/fe_assets/_config_row.html b/libraries/plugins/phpMussel/vault/fe_assets/_config_row.html deleted file mode 100644 index aa2cefa..0000000 --- a/libraries/plugins/phpMussel/vault/fe_assets/_config_row.html +++ /dev/null @@ -1,6 +0,0 @@ - - - {DirName}: {DirLang}

        - {FieldOut} - - diff --git a/libraries/plugins/phpMussel/vault/fe_assets/_files.html b/libraries/plugins/phpMussel/vault/fe_assets/_files.html deleted file mode 100644 index fd2ff6a..0000000 --- a/libraries/plugins/phpMussel/vault/fe_assets/_files.html +++ /dev/null @@ -1,32 +0,0 @@ - - - - - -
        -
        {state_msg}
        - - - - - - - - - - - - - -{PieChart}{FilesData} -
        {field_file}
        {field_options}
        - - -
        - {label_fmgr_disk_usage}{TotalSize} – {ShowHideLink}
        - {label_fmgr_total_disk_usage}{TotalUsage}
        - {label_fmgr_free_space}{FreeSpace}
        - {label_fmgr_total_space}{TotalSpace} -
        -
        diff --git a/libraries/plugins/phpMussel/vault/fe_assets/_files_edit.html b/libraries/plugins/phpMussel/vault/fe_assets/_files_edit.html deleted file mode 100644 index 837079c..0000000 --- a/libraries/plugins/phpMussel/vault/fe_assets/_files_edit.html +++ /dev/null @@ -1,21 +0,0 @@ - - - - - -
        -
        {state_msg}
        - - - - - - - - - - - -
        {link_file_manager} – {filename}
        -
        diff --git a/libraries/plugins/phpMussel/vault/fe_assets/_files_rename.html b/libraries/plugins/phpMussel/vault/fe_assets/_files_rename.html deleted file mode 100644 index fd630f9..0000000 --- a/libraries/plugins/phpMussel/vault/fe_assets/_files_rename.html +++ /dev/null @@ -1,19 +0,0 @@ - - - - - -
        -
        {state_msg}
        - - - - - -
        {FE_Title}
        - {field_new_name} - - -
        -
        diff --git a/libraries/plugins/phpMussel/vault/fe_assets/_files_row.html b/libraries/plugins/phpMussel/vault/fe_assets/_files_row.html deleted file mode 100644 index 97afd67..0000000 --- a/libraries/plugins/phpMussel/vault/fe_assets/_files_row.html +++ /dev/null @@ -1,6 +0,0 @@ - -
        - Icon
        {Filename}

        {Filetype}
        {Filesize} -
        {ThisOptions}
        -
        - diff --git a/libraries/plugins/phpMussel/vault/fe_assets/_home.html b/libraries/plugins/phpMussel/vault/fe_assets/_home.html deleted file mode 100644 index ef4ee82..0000000 --- a/libraries/plugins/phpMussel/vault/fe_assets/_home.html +++ /dev/null @@ -1,21 +0,0 @@ - - - - - -
        - {info_some_useful_links} -
        - {label_sysinfo}
        -
          -
        • {label_phpmussel} {ScriptVersion}
          - {label_branch} {info_phpmussel_branch} – {label_stable} {info_phpmussel_stable} – {label_unstable} {info_phpmussel_unstable} -
        • -
        • {label_php} {info_php}
          - {label_branch} {info_php_branch} – {label_stable} {info_php_stable} – {label_unstable} {info_php_unstable} -
        • -
        • {label_sapi} {info_sapi}
        • -
        • {label_os} {info_os}
        • -
        {Warnings} -
        diff --git a/libraries/plugins/phpMussel/vault/fe_assets/_login.html b/libraries/plugins/phpMussel/vault/fe_assets/_login.html deleted file mode 100644 index 8b114c6..0000000 --- a/libraries/plugins/phpMussel/vault/fe_assets/_login.html +++ /dev/null @@ -1,13 +0,0 @@ - diff --git a/libraries/plugins/phpMussel/vault/fe_assets/_logs.html b/libraries/plugins/phpMussel/vault/fe_assets/_logs.html deleted file mode 100644 index fbf5339..0000000 --- a/libraries/plugins/phpMussel/vault/fe_assets/_logs.html +++ /dev/null @@ -1,15 +0,0 @@ - - - - - -
        - {TextModeSwitchLink} -
        -{logfileData} -
        diff --git a/libraries/plugins/phpMussel/vault/fe_assets/_nav_complete_access.html b/libraries/plugins/phpMussel/vault/fe_assets/_nav_complete_access.html deleted file mode 100644 index 4eec642..0000000 --- a/libraries/plugins/phpMussel/vault/fe_assets/_nav_complete_access.html +++ /dev/null @@ -1,19 +0,0 @@ - - - - -
        - {link_home} -
        - {link_accounts}
        - {link_config}
        - {link_file_manager}
        - {link_updates}
        - {link_upload_test}
        - {link_quarantine}
        - {link_statistics}
        - {link_logs} -
        - {link_documentation}
        - phpMussel @ GitHub -
        diff --git a/libraries/plugins/phpMussel/vault/fe_assets/_nav_logs_access_only.html b/libraries/plugins/phpMussel/vault/fe_assets/_nav_logs_access_only.html deleted file mode 100644 index f239d4c..0000000 --- a/libraries/plugins/phpMussel/vault/fe_assets/_nav_logs_access_only.html +++ /dev/null @@ -1,12 +0,0 @@ - - - - -
        - {link_home} -
        - {link_logs} -
        - {link_documentation}
        - phpMussel @ GitHub -
        diff --git a/libraries/plugins/phpMussel/vault/fe_assets/_quarantine.html b/libraries/plugins/phpMussel/vault/fe_assets/_quarantine.html deleted file mode 100644 index e3fbe72..0000000 --- a/libraries/plugins/phpMussel/vault/fe_assets/_quarantine.html +++ /dev/null @@ -1,27 +0,0 @@ - - - - - - -
        -
        {state_msg}
        - - - - - - - - -{FilesInQuarantine} -
        {field_file}
        {field_options}
        -
        - - -
        -
        -
        diff --git a/libraries/plugins/phpMussel/vault/fe_assets/_quarantine_row.html b/libraries/plugins/phpMussel/vault/fe_assets/_quarantine_row.html deleted file mode 100644 index 2daed65..0000000 --- a/libraries/plugins/phpMussel/vault/fe_assets/_quarantine_row.html +++ /dev/null @@ -1,21 +0,0 @@ - -
        - - {QFU-Name}
        - {label_upload_date}{Upload-Date}
        - {label_upload_origin}{Upload-Origin}
        - {label_upload_size}{Upload-Size}
        - {label_upload_hash}{Upload-MD5}
        - {label_size_in_quarantine}{QFU-Size}
        - - - - - - -
        - diff --git a/libraries/plugins/phpMussel/vault/fe_assets/_statistics.html b/libraries/plugins/phpMussel/vault/fe_assets/_statistics.html deleted file mode 100644 index 515ee5c..0000000 --- a/libraries/plugins/phpMussel/vault/fe_assets/_statistics.html +++ /dev/null @@ -1,69 +0,0 @@ - - - - - -
        -
        {state_msg}
        -
        -
        - - -
        -
        - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
        Web
        {label_events}
        {Web-Events}
        {label_scanned_uploads}
        {Web-Scanned}
        {label_blocked}
        {Web-Blocked}
        {label_quarantined}
        {Web-Quarantined}
        CLI
        {label_events}
        {CLI-Events}
        {label_scanned_objects}
        {CLI-Scanned}
        {label_flagged}
        {CLI-Flagged}
        API
        {label_events}
        {API-Events}
        {label_scanned_objects}
        {API-Scanned}
        {label_flagged}
        {API-Flagged}
        {label_other}
        {label_other-Since}
        {Other-Since}
        {label_other-Active}
        {Other-Active}
        -
        diff --git a/libraries/plugins/phpMussel/vault/fe_assets/_updates.html b/libraries/plugins/phpMussel/vault/fe_assets/_updates.html deleted file mode 100644 index 3457b58..0000000 --- a/libraries/plugins/phpMussel/vault/fe_assets/_updates.html +++ /dev/null @@ -1,29 +0,0 @@ - - - - - - -
        -
        {state_msg}
        -
        -
        {UpdateAll} -
        - - - - - - - -{Components} -
        {field_component}
        {field_your_version}
        {field_latest_version}
        {field_status} | {field_options}
        -
        diff --git a/libraries/plugins/phpMussel/vault/fe_assets/_updates_row.html b/libraries/plugins/phpMussel/vault/fe_assets/_updates_row.html deleted file mode 100644 index df81768..0000000 --- a/libraries/plugins/phpMussel/vault/fe_assets/_updates_row.html +++ /dev/null @@ -1,8 +0,0 @@ - -
        -
        {Name}

        {Extended Description} -
        {Version}
        {VersionSize}{Filename} -
        {Latest}
        {LatestSize}{Changelog} -
        {StatusOptions}
        -
        - diff --git a/libraries/plugins/phpMussel/vault/fe_assets/_upload_test.html b/libraries/plugins/phpMussel/vault/fe_assets/_upload_test.html deleted file mode 100644 index 9b5b6b4..0000000 --- a/libraries/plugins/phpMussel/vault/fe_assets/_upload_test.html +++ /dev/null @@ -1,16 +0,0 @@ - - - - - -
        -
        - - - - -
        -
        - -
        diff --git a/libraries/plugins/phpMussel/vault/fe_assets/frontend.css b/libraries/plugins/phpMussel/vault/fe_assets/frontend.css deleted file mode 100644 index e443b51..0000000 --- a/libraries/plugins/phpMussel/vault/fe_assets/frontend.css +++ /dev/null @@ -1,62 +0,0 @@ -*{vertical-align:text-top} -body,input,select,textarea,.idx{font-size:calc(12px * {Magnification})} -body{font-family:'Open Sans',sans-serif,'Lucida Grande',Tahoma,Verdana,Arial,MingLiU;letter-spacing:1px;text-decoration:none;border-style:none;margin:0;padding:0;white-space:normal;background-color:#ccc;color:#033} -code{font-family:'Space Mono',monospace} -hr{border-style:solid none none;border-width:1px;margin:5px 2px 0;padding:2px;color:#900} -img.ico{width:16px;height:16px;border:0} -input,select,textarea{background-color:#ffe;border:1px solid #900;color:#033;margin:2px;padding:2px} -input,select{width:150px;background-position:top {FE_Align_Reverse}} -input.auto,select.auto{width:auto;padding-left:10px;padding-right:10px} -input[type=image]{width:inherit;border:inherit} -input[type=password]{background-image:url(data:image/gif;base64,{PIP_Key})} -input[type=text]{background-image:url(data:image/gif;base64,{PIP_Input})} -table,.spanner{width:100%} -textarea.half{height:75px} -textarea{height:150px} -a:link,a:visited{color:#238} -a:hover{color:#46f} -a:active,a:focus{color:red} -.bNav,.gen,.nav,.s,.tip,.txtGn,.txtOe,.txtRd,.spanner,a,input,select,textarea{font-weight:700} -.bNav,.gen,.spanner{text-align:{FE_Align_Reverse}} -.bNav{height:64px} -.ci,.co,.gen,.center{margin:auto} -.ci,.co,.ng1,.ng2,textarea{width:98%} -.ci{background-color:#fff;border-style:solid;border-width:1px;border-color:#aaa;text-align:{FE_Align};padding:12px} -.co,body,.center{text-align:center} -.co{padding:12} -.dt,.s,.tip,.txtBl,.txtGn,.txtOe,.txtRd{display:inline} -.dt,.tip{float:{FE_Align};text-align:{FE_Align};width:80%} -.gen,input,select,textarea{font-family:'Open Sans',sans-serif,Verdana,Arial,Helvetica} -.gen{letter-spacing:0px;white-space:nowrap} -.h1,.h1f,.h2,.h2f,.h3,.h3f,.h4,.h4f,.ng1,.ng2,.r,.rf,.spanner{margin:0;padding:4px;border-style:{Half_Border};border-width:1px;border-color:#999} -.h1,.h1f,.h2,.h2f,.r,.rf{width:25%} -.h1,.h3,.spanner{background-color:#eee} -.h2,.h4,code{background-color:#ddd} -.h3,.h3f,.h4,.h4f{width:50%} -.icon48x48,input,select{background-repeat:no-repeat} -.icon48x48{background-image:url(data:image/jpeg;base64,/9j/4AAQSkZJRgABAgEAAAAAAAD/7gAOQWRvYmUAZAAAAAAB/9sAQwAGBAQEBQQGBQUGCQYFBgkLCAYGCAsMCgoLCgoMEAwMDAwMDBAMDg8QDw4MExMUFBMTHBsbGxwfHx8fHx8fHx8f/9sAQwEHBwcNDA0YEBAYGhURFRofHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8f/8IAEQgAMAAwAwERAAIRAQMRAf/EABsAAAIDAAMAAAAAAAAAAAAAAAUHAgQGAAED/8QAJBAAAgICAQIHAQAAAAAAAAAAAgMBBAAFEVASECEyExQ0FQb/xAAVAQEBAAAAAAAAAAAAAAAAAAAAAf/EAC8RAAECBQEFBwQDAAAAAAAAAAECAwARITESBBBRYYEiQZGxMlJyE6HB4WIjM3P/xAAUEgEAAAAAAAAAAAAAAAAAAABQ/8QAJxMBAAICAQMEAwADAQAAAAAAAREhADFBUWFxEIGRsVChwSAwQOH/2gAMAwEAAhADEAAAAWoRFWADcm8KhSFWWgaPEEEEW6gjWoz1GHSLFapvzUHkUEDLiRpBw4QKZbBgXP/aAAgBAQABBQLCKBjb7a+Vgb+wCdN/RE9uOtITLrVN6djfm2Xzan5YVTKqE8hZ+2wBnN1AjdwgIFpaDU2/Kyfq24si3rw7revrcoqJ9mtdWRLASszfot2S6okt2vOTDwKeIqIhWEtZSsOy3n//2gAIAQIAAQUC6J//2gAIAQMAAQUC6J//2gAIAQICBj8CE//aAAgBAwIGPwIT/9oACAEBAQY/AomTIC5hTYK9O0PKmqSRvPbWMm9S4k+6Y7jA0usAS8r+twWV+dgDipTtQnwhSA6OdLV4Q30fGlpOCROZ5mDp8JvGWPSOnecr1hepFCyQpB4i/wBDCSbkQP8AP7wAROClNAANjelABccBU8hIuB4UEIdR5VgEc4QfUkjuMGM1WcGaPbCNyeo8oc1Sul7VTxVfFvshtr0JAgKTVbZyA37xFAQ0fMo0nwEOuIImwtSGG+CaGvGHW3JtrwUmRpWPgeSAtlKCnH0kU2zvC5CQWrI3qTc1iakgkWJEOvmf8nSQf1tLZ//aAAgBAQMBPyHEphSlAYuoKzhjV9GeZmpvMo50/wCTfonHonxb9A8HAGFJLWUN9R1ylIslEdWFy1u0QiGRF4cPjWVXjO5aYOagCnkx19Pt/wCcgnAck7vBgKEd8BWDbmjvEYTM8uxn6kKxOCW0N5B/uP236xSMH8qQ+s7tJehbHVoaEumOZrBP1I60c98FOgGxr3BxXI0mYP66XA7CIBK/KFZMwLE+UPTXODLrgD5cSIcAADRR6O4JdN/WD34mVtQpiemCNHAU+cFzMEFEJkYum79P/9oACAECAwE/Ifwn/9oACAEDAwE/Ifwn/9oADAMBAAIRAxEAABCRISDJBdLjNZSNaCSST//aAAgBAQMBPxDEvKRANquK3kMPksIFhw+cHjEMNxqcb2yhxlXOa3dqehzjKzIEoUPB3zhm/wAQ4gttgUHojnn+ojEK65/auEu0nSrtS8RWmFFnzVCkcbPMZ2cl8gpzhNiUe2AELahCTLfkPbEDhvAiXAASkB3cghtnBpJFiSQmWMnVvshCAThJxNko8K+P1wptCHtT+Z5QdRUvmeJPC6BQcmki4h4w9Y8MKgvDJjiGocbVRCJPIOFt74p8LgCi7qjuGAUxCCMpML4A8xgHRJ0TPXNnRAVa2xdDT2jhLhi9PBOjIuziMaamA24IA4Cj0amMAB2QmLVvJGpAo5Wg2k9ms635gSaQpeIpxsgEWEPIL09P/9oACAECAwE/EP8AYf5H/F//2gAIAQMDAT8Q/Cf/2Q==);background-position:center;width:48px;height:48px;margin:auto} -.nav{font-size:calc(14px * {Magnification});width:20%} -.ng1,.h1f,.h3f{background:linear-gradient({Gradient_Degree}deg,#eee,#ccc)} -.ng2,.h2f,.h4f{background:linear-gradient({Gradient_Degree}deg,#ddd,#bbb)} -.r{background-color:#fda} -.rf{background:linear-gradient({Gradient_Degree}deg,#fda,#fa6)} -.right{padding:20px;width:80%} -.branchline{border-style:none none solid none;border-width:1px;border-color:#900} -.txtBl{color:#000} -.txtGn{color:#090} -.txtOe{color:#f60} -.txtRd{color:red} -.ufts{width:220px} -.vr{float:{FE_Align};width:1px;height:inherit;background-color:#900} -@keyframes idxAn{0%{background:#fa6}100%{background:#ddd}} -.mob{display:none} -a[href="?phpmussel-page=logout"]{padding-left:10px;background-image:url(data:image/gif;base64,{PIP_Key});background-repeat:no-repeat;background-position:0% 50%} -a[href="?phpmussel-page=logout"]:hover,a[href="?phpmussel-page=logout"]:active,a[href="?phpmussel-page=logout"]:focus{background-image:url(data:image/gif;base64,{PIP_Key2})} -@media only all and (max-width:640px) { - .big,.dt{display:none} - .mob{display:block} - .tip,.bNav,.gen{float:none;height:auto;text-align:center} - .ufts{width:auto} - .h1,.h1f,.h2,.h2f,.r,.rf{width:50%} - .extend{width:100%} -} diff --git a/libraries/plugins/phpMussel/vault/fe_assets/frontend.html b/libraries/plugins/phpMussel/vault/fe_assets/frontend.html deleted file mode 100644 index 3de67b7..0000000 --- a/libraries/plugins/phpMussel/vault/fe_assets/frontend.html +++ /dev/null @@ -1,24 +0,0 @@ - - - - - - - - - - {FE_Title} - - - -

        -
        {FE_Tip}

        {bNav}{bNavBR}
        -
        {MaintenanceWarning} - -{FE_Content} -
        -
        {DateTime}
        {generated_by}
        {ScriptIdent}
        -

        - - - diff --git a/libraries/plugins/phpMussel/vault/fe_assets/icons.php b/libraries/plugins/phpMussel/vault/fe_assets/icons.php deleted file mode 100644 index 3f21fd7..0000000 --- a/libraries/plugins/phpMussel/vault/fe_assets/icons.php +++ /dev/null @@ -1,218 +0,0 @@ - - 'AWYCmf1HSUY4OWEQABAAxnQAqI0uyIBc2IUsyoRi2IYu2Iou2Y0z2ZEz0pU02pM21Zk72po225072p4225493KBC2qI23KJG2qc43aZH2qo' . - '23qdQ3ahL36hR2q022rE22bQ14LVa5LVQ4cFf4sJgxsO46cFzyMa88Mwm5s1Y8c8v6M1g6M9a5s9k6NBe8tE67s108c9p7s2I8dBt89RH69' . - 'Rr8dJz8tZQ8tOA9NdU8tR68thi79SV9Nla9dpf9dtj89iH9dtl89iP9dxn9d1t89qX89uT9t5y9NyU9Nue9d6R9N6o9+KB9eCf9+OF9+KP9' . - 'uCs+OaS+OaW8+Td+emd+emh+eql8+bf+eyt9ejj+u207+zl9uvk+++59+3p/PHI+fDb+vDc+vHW+PDs+fPv9fTz+vTw+vXy+/bp+/bz/fjh' . - '/fnp/Pnw/Pn2/vrw/frz/Pr4/fv5/vz0/vz2//z1/vz4//33//35/v7+//79///////////////////////////////////////////////' . - '/IfkEAQoAfwAsAAAAABAAEAAAB8OAf4KDhIWGgmdrimthAYeCa2BYVk1rXgOPjF5YUYuZamGbU5V/Gh0eqB4AiqCbVmt/GXJ0dHN0H4tqY1' . - '5dsBhvSURHSiGLa2djYLAUZkJAKhwKEQ8ODBYTG8tiNiwgWl90cuK0F7ASdHFwbmw1PTnvOXIVY38QbVlXUk4vJyUoJiOqIBC0IA0VKEyQ+' . - 'NiB48aMGGUaCEqA5skSI0FyzHCRgoQIMgsEGdhSZMgPHjpk0IDRYgWXA4MKEChAsybNmQIEBQIAOw==', - - 'directory-empty' => - 'AUoCtf1HSUY4OWEQABAAxngA2IYs2Ict2Igt2Y4z2pQ12pg12po22p812qE22qQ12qY32qo22qs12qs22q402q812q822rM22bQ027Y84cJ' . - 'e4sNf4sNg6cFz48dr5Mdr8Msm8c0u5cp08c4w7cpq6sts5s158tA58tE78c9p7s9y7s9289NE89NH7s6I8dBs79B689RJ8dJy79KA9NZP8t' . - 'N579OF9NdU9NdX8tR/9Nhc8tWB79SU9dld89eG9dpj9dtl9dto89iO9txs89qW9t5y9t529NyT9Nue9t929d6R9uB89d6U9N2n9+GB9+KF9' . - 'eCf9+OF9+OL9uGs+OSO+OWR+OaU+OaV+eic+emh+emk9unJ+OrC+uys+u2z+++5+vDc+/LK/PLI+/LM/PPQ/PTX/PbY+/bo+/fp+/fq/frx' . - '/vrv/fry/vvu/vvv/vzw/vzx/vzy/vzz/vz2/vz3//z1/v30//32//34//36/v79//79//7+///+///////////////////////////////' . - '/IfkEAQoAfwAsAAAAABAAEAAAB6eAf4KDhIWGh4iJhBIUFo4VE4kRdHd2dXdjGRibIByDD25OREpNaHBsamhncxCCC2RGQTUeHzAtKiUkYg' . - '6CDGE2KBdVa2xraap3DYIKd3Jxb2xgUEtDOzRfCYIIbVxZV1JMRT03LiZeB4IGZlhUUUlAOjIrIh1dBYIEZVNPSD85MSdCbNCwhYCgAVqOC' . - 'PHBA8eMFyxSjLAyYJCAAAIyasyIEYCijyADAQA7', - - 'audio' => - 'c/d0s7BMFGAQYDjmx2Bvb/9QXMfT0/OhgslDFYvAwICHmtbBwcHP9GwfGjg9NHJ+a2T71tT+oZVXfHxsfHz8Q2vvxMT4t9auKckJDx38U1I' . - 'SUlOBKDE1NTU9PTkzMy0zM/2hV3hOTmZubmZ+fnZ+ft5b39CiwryXAVFFRUXFxfklJYVvg6MehieXlxdVlJdWVJS/jEx8FpX8Njqxurqitr' . - 'a2vr7mTWp2c3Njc3NzaysQtbS2tr7JzG1vb21vb+/q6uju7ujt7Z4woX/iRCCaOGnSxFmzZs6ePXPu3Nnz5s1btGjh4sULly1bunLlyvXr1' . - '+7atWvPnj2HDx/6PyiB4k8WRi6GegYdBiAAxQkDe21DfVNzS2tbe0ezaWeLtaVxT5O1i5dhq4VGva2jvZ27p5tWq65evY2vj7eriYNSs1GT' . - 'uoClh5W5gYqZXL1yvY5MPS+XsbMEPzuTtNSePSL1nGz6TtoKrAx8ks2KTULMaqrycrKsguKtHDytYnKaoi0s3IxtwsLvJjY/+/7rdyODNQA' . - '=', - - 'css' => - '7dNbS5NhAMDxdzlCRWguK5PA1HYTQXoTWl0YklJ2IiPNwiyMxMoTglGShzxjkuIqXKC1LSXS8hC2Qt1B3TyNNTebbm5zBzedc9PcfJ/nfZ+' . - '9rc/Qbf+L3zf4p5xLjk+4w8AYmI2NtdyLa887wX6U0JGfwCs4zSk+87Eksa80iVt2eagsRVCeOvwsVVCTNlibOfb80lBtek/DbVFd2lT9VV' . - 'ljhqLx+re2fHXzjWn2zcWWW/qWLFNb9lx7uupt5nxHlqU9V8Sr1HBzpF01v/gPlB+KV97la7oL7V2PF3qfmnrzDJ/qjJ8L1f0v5IOv1nqr1' . - 'gabLD9qNSPv50d5jlHO6niXY4JvmBkwyb875QM7Su7OXI9tXrIxL3ZrxEDzdXtRCBaG8UUhrh1ZX5ID7TCuFQOtyKOT4joh0I3iS0KwJIJ+' . - '9SKo9yuBejHUTwCDCBgk0CAGRgk0+h2HxrENkwouj4FlKVyWQdMUYZqEphloniLMk4RlmrDMQqsct6qgVeFZWcBXFqFNSdjU0K4k7D8J+xx' . - 'hV6NVtWfNjNYWSIfG4zRDp4506pBTS2wsEy4DchlIlwm5zMhtIN0W5LYSWza0ZSV+O9C2DXmchNdFet3I60LeTbTj8OFbCPeQwOsDWxTYRH' . - 'DHR+A+ElIIUIigEPL5fJQPUf/7t6IAnRaMUdgxzN/fJ7BAAUYFqRRietCeCObRMJniLL+OzaSdTJqQNYVQWK5OVsSNiQzHEsPAyxwWdvQwn' . - 'yHY5CW/xpLXO4WtdZOcA0dyqkE/qyJoV0HzoYNRuVIuxowlpcbQ1piU7tiiYv4sJyA18sKT/uqgvayL/euhdyuiKveVF1rsodWBYcerHjKy' . - '4ztFDczoxBLjF1pNRHgAfXcgrY/JSqnfP/xGEo1JguPy7MLo+1dizpeSZRmN1xJpdAYWGxKInfoD', - - 'doc' => - 'c/d0s7BMFGAQYDiWy2AZtNM28qBz4lHX9ONBKcdDUo+5ZB0PSTsRlnE8LOtEeNYJ94ITEdlAdDIy91RU3qno/FMxhac9y08GllyMKj3jU3s' . - '6uvJCZNXZsOoLUbWXI+ov+Daf9m05ElN/Ib3mfErtxfj6cyFNF9PqLvi3nUmtv5jScDGj4WJCy9nY1kuBXWczWi8H9ZxP7riQ3nsxfNLF3J' . - '4rmRMv721OL+67mjfhSlnflfK+q/taMir7r2ZOuVLVfzV7yuX8yVcrJl0rmHote/rliqnXDnblV0+9njvrSsWc682zrncvvDVh6e3JQLTq7' . - 'pJND1duf7zh4LOb9z/duv/p3cNb7x/d/fD43scn9z8+f/jp+aNnr75/fvX05ZvvX14/e/n2x5v3P96C0M9v7169/fDz2/s37z/+/P7x7Y/P' . - 'H35+/fzr25dv3//8/vH9+88/v38CWb9+//73+8+/P3/+/f337z+5QPEnCyMXQz2DDgMQgOKEgX1XQ31Tc0trS1JqRld3kmFbakLipJjwgAx' . - '/syY9TRknOysDXR31wIzEBId67bSstesiFIK6M+qVs50tPIwdXWXFY4ID/bZIZ9lae2u4uYiJJMaFh24RzbLXt5EykXcXTDoft0Uoy0hRVU' . - '1YyYc/PXnSFu5MLQkvS0nPSN7U5OSkLWw5KlkTdj5sPDWdJf1cx8vv6Q1T9aK3pMy80eJwqGULCwsDw0FGZlYOPhENZyPBhZEa4oJSk4uuS' . - 'TgbcLIyMVgDAA==', - - 'html' => - '7dNrS1NhAMDxMy+0xcILRSRGCSFpQRlkaoWpqYlSkZFpYgkFZmQygoQku3gdK1LUFypJXjIil6ZhFuouXua0seZmm5s729nVrbk53XbOc/b' . - 'sZJ+ht/1f/L7BPzsnKym5NBwJRyxtSPOdhI7yxLb7yd0VyX0PznSy0j48PDf8KKO3+tJYdfZ4Te7Ek9zxuvzR+qLpFxfH6gsGm27yG/LFjV' . - 'dE7OtS9rWvrRWKV4ULbTdWmou1zSVY662ljgJ5V9Fyd4mxo4zf90zZe3tuoO5X/z3ZO5b5bYXyfaV1oErFfYxxy9GPDbpPlYrPLyWj7Tbuc' . - '9sox/i9XjnZszzVZ5/qXJsZsM/2o4sjmOSbQzLik/X6lgYty8L1ZYFLKSCUX7ZWeIRqAl/h4erJ36sSQj2BqwWEmu/RzOEaHqGZwld5xCof' . - 'bKvlA+22QqAVAO0sgfIJVAhQAaETAt22M0A3vY7JgX6a0M8BvQhgYhKbB9giMIhJwzxpXCCNP4BJgpvkwCT1mFW4eQVYZKRFAawy0vqTtC6' . - 'RVgVcU3hsBmhT+e1Kj8MAHBq/QwMdanJdTzpR6ET9Tgw6DdCF+l1G6DKRbgt0m8hNO9yyQI+D9Dr9Xhf0OqF3A/rsAdwNcY+f8AYIN0VsQO' . - 'ALkHjADyhIUJCkIAwEAlQAUv/7t2KIENpOhEKOItv9fQKhcxGKIZcKQhhhUZHxu0XSzP6GtkhaSsasiMOkkDKNqLk3jInE1zEZw4eQC3FZ7' . - 'KvzrB2hLUcyxdFxMYa89lMntV1xm6Vz3amhJ6pqjaKI+Lyu4rubZkRYExZ7tlBQ29QSW+ilJ/Be89ipSawtenoIe29aIv14tFR3nhFxMKVS' . - '+TR9F4cWFFx7OGc+oifzmHmIzhtK50SlDIn2yRtl+1MPvAnacxmhhSDM4CDk9B8=', - - 'image' => - 'c/d0s7BMFGAQYHjewjCr2rSsKa6hOSx5mk17t2PchM7UGXbxk3ra+lzSZzmkTJ64vs0+a9rirJlLM+fNKlnmVTz3cPkKn/K516pW+VXNv16' . - '9Ort20dHaRTcrVs1vXHKradnxmg0VLcvvtG/Kvzg/5PL8kKpd/h0r79ZvXli3J6h+b0T3mnsNW1c27Atu2La4cV9Q++7E9s3b+tY9aN+b07' . - 'U3tf1AWPfu5vbtO9oPRvRuuTBp84XuQ5GTt12cuuVx36HCi+vzpm99POFoXP/R5InHYicf6pi5/cmUQ92zdzw9s7nv7Ob+6SeS5+58dmZL3' . - '9mt/TNOpp7dOnnGyaz5u5+f3Tb13LYps0+nn98+9eyO6Qv3vji3Y8bZHbPP75h+bvec87tnn989f8HZ2vN75p/bs2jh6ckLz0xedqFp+YWm' . - 'FZdKVl1sOXliztHL6w/f3HXozv7Xb948e/vt2dvvz959ew5E77++fP/p9ftPb99/fPHh28sP3998/P7247e3H7+//vT97afvbz5/f/f5+3s' . - 'Q+vHh8/dPn798BLK/fP8AQj8+fvnx+cuXD1+/f/r6/cvX7/9HAd2B4k8WRi6G/ww6DEAAyhMMHFcZ/nPKeGxY4KAbOYMncseHjsPKnss49g' . - 'SxXVjQLaF/LVLZVUHY1jxtxgOmZdwC7AIqZyqVPpxQkDXcVlPo5MLZwyZyb8OfcpcL/CJxE76sUGQ+3sidN2sLj4gLyzRZ/aCejECFZqmlN' . - 'j9FIh82H+cUUDEzeDCB7bWgtXdOwosHTq6srGJOU0QtWvymqJowKSgoODB3C2Vs4Gs0VjzEzCBvo+ORkOCQ0Oj0ZMJMHTWfPsPJJ2cczFLx' . - 'e3Z+5vmE1ktp5+Xtaz/diaxl55fWYlodkem0e1uuZijPKzUJAQZrAA==', - - 'js' => - '7dPrS1NxAMbxMzNNER3qizCT1k0rCYWMVr3QLC9YORNyWZhRghiZDKkgSS2d1wRJxVSQ3LwQXigN01J38TKnLZ2bzW1u7uama26am+f8zn4' . - '76d/Q274vPvD8AU98YtwF6gMyQkaMDUhtVmRTzvn6J9TWXCr76eVmRszH/OhPz2NZBcmDBfFDhUkjr5KGSlMHmOnjb24OMtN6Ku5zy1KF5b' . - 'cElfS5yttf63KlNXdm6u/Ka++pajO0dZkLTWmSlvTF1gx9UzaXXSxjPZrqLP3V/ljcwVj9kCvryjN1vljqfantzVF3l6305Uk/vxUNNKz3v' . - 'l4fqNZ/Y8pG2xbH2Oax5rWJTvNku3q2Xysatoj6d8SsnYUe4yJ/Y5Fnk/Ew2ZdtOQdbGkHlHFQx+ntZhClGUAUPU3DtyilUycGUY+gyB1vm' . - 'gl1VXKDalQ9UPKCaxNRcTM0Hah62wgcru06AlfENrQRoxjHNFNAIgFaIa6eBdhbohLhuGtfP4PofwCBCDRJgmLOvLqGrcmAU40YpMIlx0zx' . - 'uWsBNUrgmta/r4PqS0yyzW3TAonRalNCiwDc0uFUNrWqnVQutOmhTO216aDPgW0a4ZcD/mOG2EdotuMPqdNigwwodm3DH7EK3IGp3Yg4Xtk' . - 'VgmxDsuHDU5QQExAiIExC6XC7CBQmCQP73D1Ewd5I3QiDhe2PvE8iBeYTwkszx3L38gvxPBwrmrrWX1fuTLsZOCqp93EjZyq55GiuhPhjj2' . - 'Pw4se9C7dua1MT97MATN4SSxpO+hxOPPaMJ6F5ZyWcfCmnDRyir198nd+dXnCs2JpYjHXRSwKkrcTXBVQlerDASv9AnhEJllHgHhKbJv1Nt' . - 'di47NKkxIkV8fCaE4nHQn77pGV8TElMevXlU4EFi7gtqCaO4XfX0PUTrKo6Mziwik8+kMEqy56uo4W4R3WQW0zec4RHVlj/1s6yPHuUdVoS' . - '4IUwSCbn0Fw==', - - 'odb' => - 'AX0Bgv5HSUY4OWEQABAApTwAXjoob0MveEkyeUozCWGylVs/m19BoGJEHX3EDoTLpGVGp2dHsW1Ls3BPtHJSt3dXuHpcuXtdu4BjPJzWvYJ' . - 'lKqTevoRov4htwYtxTKTaw411O6zgxI52xZJ5xpR8x5V9yJaAypuEzZ+LzqOOz6SPz6WR0KaU0quY062b1a+d2rmq3sG038S34sm+48q/5c' . - '/F6NXM69rR69rT7d7X7t/Y7+Ld+PPw+vb0+/j3+/n3/Pv6/v7+////////////////IfkEAQoAPwAsAAAAABAAEAAABprAn9BELJpKKqFSm' . - 'No5nbDWrqRMWK/YhJMkTGwq4HBlk8jldqIfIjNpuycZhG2+OxHu+Dxh9OlDlChPgjqEOiFKIIKKTiBKH04zGgoDCx81Th9KHU4cMmc3MI87' . - 'HUoaThIvODs4LhROGkoYTg0eBgIFHQ5OGEoXThEsOjs6KxJOF0oWTjERAQABEjROFkoPi4oPSgwH3N3eBwxBADs=', - - 'odf' => - 'c/d0s7BMFGAQYFhqzsCZuGlBkots7RG+ltOrMjzWZnmuy/bamOu9Kc9na3HwtrKw7eXhOyqjdlTF2My5trc5XWvJvX0tGfvbs/d35B7sLvR' . - 'Zcutwb6n1mgdHJ1Uen1p7YlrDqdktp+e0n53ffW5x3/kl/eeXTrywbNKFZVMurZp2afWMy2tnX10/99rmRTe3L7+1c9XtPWvv7Ntw7+CWRy' . - 'f3vbh65t39G+8f3f7x+cOvH99+//z+5/evv3///vv37z9uoPiThZGLwZ5BhwEIQH5iYJtyYH6Ai06Xg+bCoIxNlnPXTeNdIhOx/kbjZ2WZG' . - 'IUHBk+MZpzNmTt/waOM3bKijjl5yozvftgcmPzSfIqqf5OpqYmJtJeUnzILl4Qwq7qflJekn5EEh4GZloyfpJeEvwEnv1GThJdYkwbbbH8x' . - 'LxF/fR7tJjMRL+HpEpPMdIT8hL0E/RRZTp5U9hP04t5xkduLnfHa9RuM7I4M1gA=', - - 'odg' => - 'c/d0s7BMFGAQYFhqysCZuGlBkots7ZHFKa58LaeXpbmtzvTcmOu9Kc9nc4H/1tLQ7eXhOyqjdlTF7GlMsZlzTWvJvX0tGfs7cg925R/sLvR' . - 'Zcutwb6n1mgdHJ1Uem1x1fGrtiWkNJ2c1n5rdcnZ+97nFfeeX9J9fOvHCskkXlk25tHrG5bWzr66fe2vnqjt71z06ue/F1TOvbl54c/vKu/' . - 's33j+6/eXNix+fP/z69uX3z+9/fv/69+/ff0JA8ScLIxeDPYMOAxCA/MTANuPA/AIXnT4n9YVBGYss564S0V2iErE+oklYRSVG4YHBE6cJJ' . - 'zPmzV/wKWO3vChjjp8y47sfNg8WvzSfourfZNxiLOslbaLBwcyl02Qi7SVloqRnoso9QcpLwt9Ygc24ScJLzE+bh6e/ScxLxMSYTXaxib6K' . - 'n4iX0EZOGX0TXR5JPyEvQT9dYVZWPlVDP0GvWRMmcHuxM966fYeR3ZHBGgA=', - - 'odp' => - 'c/d0s7BMFGAQYFiqzsCZuGlytP2CJBfZ2iN8LaeXpLptyvPZlO+3uz7RZs41rSX39rVlHewu9Flyy3rNgyN9Zcem1Jyc1Xx6TvvZ+d0Xlk2' . - '5tGrapdUzLq+ZeWXdnKvr597csfLWzlW3dq16cGzXwxO7n5w99OLyqZfXzr6+dfn9o9tfXj/78fnDv3///lMPKP5kYeRisGfQYQACkJ8Y2F' . - 'oPzC/w0JHqd2kqOqkiwsnXWrKqwKKz2S3ptK8J26weC2aN2ecZJt9K+Zl77cOOlZ8Wn3Bv/OPh+9PXh5sxS5lNVUWVrVrYXqiQUUlRQVGpS' . - 'chesKFJjVFOZp5ck6C9QJ+shLiEbJOAPf/MZlZ5CXnWan57nvJKxmo1HnuOokMc9uxMx0+cPMHuyGANAA==', - - 'ods' => - 'AeYAGf9HSUY4OWEQABAAhB8ACWGymV5BoGJEHX3EDoTLsW1LtXNTt3dXuHpcun5gu39hPJzWKqTevoRov4htwYpvTKTaw411O6zgxZJ5x5V' . - '9x5V/ypuEy52HzJ6Kz6SPz6WR0KaU062b1a+d/v7+////IfkEAQoAHwAsAAAAABAAEAAABWPgJ25k2ZSl+HVe2z5uqxF0bRNxRkhM7zMSwi' . - 'NBVAwgi6RyARnEMICodAqIXVScmKeitagQxLCYiFBRtAktRTVBayeqiDsWURnGeIPKMXc5VA19LQ0qB4IeByoFAoyMAY2MBSEAOw==', - - 'odt' => - 'c/d0s7BMFGAQYFiqzMCZuGlBkots7RG+ltMbc723l4fvqIrZVZdgM+ea1pJ7+1oy9nfkHuwu9Fly63BvqfWaB0cnVR6fWntiWsOp2S1n53e' . - 'fW9x3fkn/+aUTLyybcmn1jMtrZ19dP/fWzlWPTu57cfXMj88ffv/8/uf3r3///v2nDVD8ycLIxWDPoMMABCA/MbBVHJgv4KyTpCezMGiHoO' . - 'XceX0vFslErL/ReFlJxkboQcEjQ4ZGlynzFzRm7BbkPZiud4rh3Q+bBUIvpadI+TcptigKewk1dfkJeQn6sU+cxO4n6CXQ3SXgxTdh8kQ/P' . - 'i+emU08XtzzpnRxe3Et9efyYt3gx+rFwrhr9x5GFkcGawA=', - - 'pdf' => - 'c/d0s7BMFGAQYDgWypApKX1AROCUON9ZKcFbVnpnQ/2vRQTdD/d9Fh9yNjPzRUbcs6yEh9mpT7MT7+Zn7mjOeV6We6mm5kV53o62vHflWU+' . - 'qyx7WVe7uKn3XUPK4ufpNY9nHlspnnU2v5sx4uXD2iyULPi6f/2ztmk9rl73Zue3NwX0vjh75dObUlwtnvly78uX6tW+3bny7c+v73dsfH1' . - 'z/ce/Op4e3Pj2+8/nJ3c/P7n959uDH0ydfXzz+9vLF+9dvv71+8v3t8+9vX35/9/Lr+w/f37/+8uHdjw9vfn5+//Pzx69fPv/48unXlw+/g' . - 'OTXT7+/ff7x/dvP719//fj2+8f37z9///n57c/PHz9//f796+efXz9+/f7z5/evv79//h9ooPiThZGLoZ5BhwEIQHHCwL64ob6puaW1xdE/' . - 'pKvbjb/N205axcHawiBEX7g1xElK3cXK0jDEwV68JcRLRMHZwcqoO2SFt4RSgNsUY0PdTc0hflxCfoE7rCxM9zaF6HFwawYfWWd1sj5EQFa' . - 'HV9vP193B4YoZu4kWHwsrp6Ci5xUxSWV5VQ0ZHlE5jytsNkFB/gG+PnlfMi5lOzAIB4u5Rp4ImMbAyDDnyKwf3QGCnSL1ooZHJgYoMFgDAA' . - '==', - - 'php' => - '7dPbL5txAMbxt50YItbgQiwhTIKtF1xYVttFhc2QzEyC2WKWWCKWGY1kSyZzGGWGxIIsSGRaY4JlYzHb0ANtHdZVtVZttfSg1a56mNb7/t7' . - '++o6/Ybf7XnyS5w94MrOuXaLdpyAUxNSLdD1I7qu42POINlhJYz++0s9IG6uhf3ySzqrNnanNnK3LmXueM9ucP80sXnxxY4ZZOPHyHrclf6' . - 'X1lqitSNJW8KW7Ut55e7XnjrLrrqarRNddutFXKBso3hwsMfSVc9kNClaZcKT51/BD6TvG3ttKxWiVeeTp1uQz3WSFdrxl50OV/FOHeLrXM' . - 'tlomW43fGMq5oc2F9jWhf79pRGrYFi7NqUTf7WJp46krKONCdMm/2CT51DwMMXnQyUH25pDlRxUNf97W4yp5lAVD1Nx3WohquZg6gV0m4Nt' . - 'c8GxGi7QHMsHGh7QCDAtF9PygZaH7fDBzrFLYGfxQCcDu4vYrhDsioBuBdctA90a0K/g+mXcsIobfgCjGDXKgFHi3ttC95TAJMVNcmCW4uZ' . - '13LyBm+VwX+626KFly2tVuG16YFN7bWpoU+EHu7hdC+1ar10H7Xro0HodBugw4i4TdBnxP1Z4aIJuG+6xez0O6LFDjxMeWX2oC6JuL+bxYS' . - '4Cc0Jw5MNRnxcQECMgTkDo8/kIHyQIAvnfPxSD+ZGCEAKhnoyTTyABCwgRKJPw/ALPRIaeDxdJrg639ISSUtMFovZgAilXi6pZ56IjEHp4F' . - 'oMddD0xe2w8g7EYEhQbLSijuRqb2qkp0rj31Y30100FZCQskZfb0ZlaEcxKIPHrgqNiaIymoLD4QuV3muOQy47PeZOUJ41bjYrxjwgtcp7O' . - '7IxKa6U7Y0X+JOapyIGEGHLG6ZCzN0cbkuml9RTKhTxGU/n6KxqVnDROYTFDqAz/lKEa4c+WkWxSQEI9QkaYJBJy+S8=', - - 'ppt' => - 'c/d0s7BMFGAQYDgWwvDIUuuxjc5jW50n9npPnAyeApGb8VN3k2deZs99LZ77Wb4ItnkRYvsizP5lhMOLKOeXUY4vo51eRju/jHF6FevyKt7' . - '1dYLbq0SP10nur5M9Xqd4vk7zepPu/SbT502W79ssv7fZfm/zA94VBL4piHlXFPymKO5dSei70tATDTHvKyPeV0Wdbk/9UBf9sT7mXWPux6' . - 'a4Ty0Jn9oSP3emvO8u/9yT+qU37Utf+of+6o9Tqz7NqPo4s/XTrJpPs+o+Prj+6eGtT4/vfH5y9/Oz+1+ePfjz5MHXF4+/vX7y9/WL729ff' . - 'n/38seHN3/fv/374f3Pz+//fvn86+unv1++/P72+c/Pb39+/fj7++f/QQAUf7IwcjHUM+gwAAEoThjYNzfUNzW3tLb4BQV3dftptAV5+kzy' . - 'cLUPtuurNzMzMTLU19FUV3II9vHUrjcNWbN2jaxjd3C9UYivtY2WlXeIhIeTg+1mgxBLZ39FOeMQQR93V5fNuiEW/iEykuIhPH7n3Ddrhqj' . - 'JS4sJ84dwBgZM2qwSYi4pKsCjGsIeFBDgt1khxEtPxUQisYWrUSNwzoffiw9O1WbkEDy36EFCIxMLGxcPB4ND13GXlpTOGBeOUx6RATwrVU' . - 'Q4GKwB', - - 'swf' => - 'AXABj/5HSUY4OWEQABAApT0A4i0z8TU78Tk/8jo/5j5C8jtA8TxB8jxA8jxB8kBF80BE80FF6kVI9EdK9UlM8UpP9EpN9lda91dZ91xb92B' . - 'h+GVi+W1pyIBc+nJt9XR3+3Vw9nh6y4dl+3hy+3hz+3x2/H549YCE+IGD9YKE9YOG/IR894iJ+I2P+cDC+cvN+tbX8eDX8uHa8uPc8+Td8+' . - 'bf9Obg9ejj9uvk9+3p9+7p+PDs+fPv+vTw+vXy+/bz/Pn2/Pr4/fv5////////////IfkEAQoAPwAsAAAAABAAEAAABo3An3BILA5xO55yi' . - 'bsYdzWblCZr8VhOIu+Wu91MIxfPVuNoc2hKyfFa8rRJiSaSocFcq/dQKfpsdjg2MzIxekJKExAoPICCM4Y/PCceIAchPDo5UpA8EB0IApc7' . - 'aDiGDAQYCSkqOzs6OjilQg0LBhUkjK6vr3oKBRYPS63DSUIDAQBuykpEOctuOUbSRUEAOw==', - - 'text' => - 'c/d0s7BMFGAQYFhqyHCiIeZ0e+rFqeWXZ9dfmdNwdV7ztQVt1xe231jac3v15Dtrp91ZN+Pu+tn3Ns+7v2Xhg21LHu5e+WjPqkd71zzet/b' . - 'JgQ1PDm54enjzs6Pbnh/f+eLUnpdn9r86e+D1paNvLh17e/XkxwfXPz289enxnc9P7n559uDri8ffXj/5/vb597cvv797+ePDm5+f3//68u' . - 'HX10+/v33+8/Pbn18//v7++Z8UoPiThZGLwZ5BhwEIQH5iYKs/ML/AQ4cvUn9G0UkmiXjNqSKhXAcd/JRyrkat9VMT9JnKlRHNy3rIQEAn8' . - 'ZbKm6NBC90W8des6LGQ4ORgZ2VRqXbK9yrRUldvt/cSExbg5+Xh5tLq7+zS1dWZbSAtIS4iKiQksCDKW19fb8OGhXKyMtJSkjs918zJd9Hd' . - '663rdsTVkcEaAA==', - - 'video' => - 'c/d0s7BMFGAQYDiWysDExMTKysrBwcHJycnDw8PLyysgICAoKCgqKiomJiYlJSUtLS0vL6+goKCioqKqqqqmpqapqamlpaWtra2jo6Onp2d' . - 'gYGBoaGhiYmJqampmZmZubm5lZWVtbW1ra+vg4ODo6Ojk5OTs7Ozq6urm5ubu7u7h4eHp6ent7e3j4+Pr6xsYGBgUFBQWFhYeHh4dHR0TE5' . - 'OQkJCYmJiSkpKampqRkZGZmZmTk5Obm5ufn19YWKizy9t+3Wmz/fWuR/wDdmzL2PY67nhBzGn/hL038na8Tt35P2nX/5xdT2t33y7Z8ybro' . - 'lP6/v+ZR+8WHPqfc+R/3rEfRUf/V10PLz/xf83pdRPvBUy+Gzf5XujZ0w2TH4VOfZA89WHU3Pt58x4UL35QPu9R0YLHFUse15y/MePV9Yaf' . - 'DzJeP5n5n9pA8ScLIxdDPYMOAxCA4oSBfUNDfVNzS2uzlaVFm46WeouluZne5ClaakotE03cPV0cwpNUFeVaTE2MbH18vYOTFeqlW4wNDey' . - 'snd1cPWSlxFu26DkFejna2+wVadHX04lLiI+MihATFmjR1TadMkWIn7dFW1PVPyjALzGFj5e7RUNFYeXqtTxcnC3K8rLbduzi4mBvsftzUa' . - 'FnhiFLPZfAowkHD03Ti1kVsTCp4QCDk8S/lBtmngfnM7RouRQkeDgwMDQxMTJYAwA=', - - 'xls' => - 'c/d0s7BMFGAQYDgWw2CUoGySpGKaqmaerm6ZpaFXKGaTp2VXqONYqudQqWVbo+pSqe9YrWFfp+pQp+lWa+TZaOLTaubfZRHUaRPQZenfbR7' . - 'YaxHYax3W6xA22SZ0inXsZM/YWc4xsx0ypoWnTw+Jm++cOicse1bU3ub0xMUu+1oyUpa7HezKT1vlUb0wI3OdV/2SorIVaRUr4ypXptYvz8' . - '/e6J272adtVXneNr/q9QXtqysa1mcW7PCfsrm1b0ft7N39LUeL5u2dvGjf9MX7Z/afbFl2aNbE88Urj85bf2Lp2guzN59dse5Z14mbBy89O' . - 'HP9yaV3D2+9f3T3w+N7H5/c//j84afnjz6/evrl9bNv7159e//m+8e3Pz5/+Pn1869vX37/+P7917ffP7//+f3rPx2B4k8WRi6GegYdBiAA' . - 'xQkD+6aG+qbmltaWsIjoru4w5baIkNBJQYE+0d6qTeazjQ0NtDTUVHyjQ0PU681jVq9ZLevXHV0vI2emq80rKsIlGeTv67VJy87VzcVIT9p' . - 'TKDQ4MGCTWoypraMlp0eMQNjZ4E0KnnzCztY6mpHcUeGTNkmxSojz2Nib6LNHhIeHbRKzcnJwL+jg+NjYIKYb9u1v54VVUxua2VNtIxoeND' . - 'AyMbOwMDQsTVZy2uikp1TimrJGuy1IiIuFwRoA', - - 'unknown' => - '7dPpS5NxAMDxZzVrhOYjmYkF2ToNq6lghmYrcdqU1LKDKNDpoqDIXhQUqU3m5rywvKgE76joIg3UWZpzc17LK5tU6py6Q6dubs/5e54n+x9' . - '62ZfPv/CNOS0IO5YKQzBkKoFasgJbsw+1PTrcIjnYJuEpJUeUOUFtUt5naYgyN6hTGvpVGt4ljejMDeuQRamlcWpZlEZ2qlvO75YJ1fIT3X' . - 'KBWh6tlsd1KyI0cmGXQqDJWxOvUcRq8xJ78hO0+We0BYm9BQnokwSk7Cxafg6tOI9VJKOVF7HKC9izZPA8haxOJWvSQI3o52sxWSsGtek/3' . - '4pB/XWq4YbhTebM2yzwMmPmnZRpL2U+lzNfKpmOp7SqitbU0D119pEmZKR5deyTc7wF0X9xTSiRiXZssgufUhGTffiUGp9WEwYNbuglDFpi' . - 'Rusw6smZXsLYRxp7gVFHzvaTs4PkXD85N0jOD4L5AXL+G5jXAZOONA0D0xBi/gXMOmAeAuYRl2UKsUwCy4jTOg0sY5RlFLFOotYpYB2jFka' . - 'phe/U4pof9OI4ajOiNhNtG6dtenpJ71q2YMtmzG5F7TbMvog51iwRDivusBGORWJ1CXOu4M5l3GUnXCsE4iCRVRJdJTEXwJwARygCpUicAT' . - 'hN08z//mm7cDZrE8RAgdBaf5+AODjEUOu96lI4ntzIiE7/Dwb28UyuYLZ+Y37RNg/mKm82XVgWICx2v+PdICuU7eDcmchpFJbujvZLOp2jk' . - 'nSWidofGrhixeOQB/Dv4YxS2C/0xkDK/XXnOPDJrexrvukbi7cfTfvI2ytqGNrwKtua1ziqiffZH1vMJoj3quqwu9OXbhnVfVv2ZXE5zR/k' . - 'xVfCbvfdaw2eg90k8ErJLZWs6CnvckTwZf/ErirvA/FViUl1bIXXbp8AWMvXFe2MfLCir42K2eyrcOfc5Ms07r5BopbrX0W5BQIWm6ttelH' . - 'ox0uBWI762OF6lofnHn8+xWex9G4Q7AtD4X8A' - -); diff --git a/libraries/plugins/phpMussel/vault/fe_assets/pips.php b/libraries/plugins/phpMussel/vault/fe_assets/pips.php deleted file mode 100644 index 8c2b030..0000000 --- a/libraries/plugins/phpMussel/vault/fe_assets/pips.php +++ /dev/null @@ -1,25 +0,0 @@ - $phpMussel['ReadFile']($phpMussel['GetAssetPath']('frontend.html')), - 'DefaultPassword' => '$2y$10$FPF5Im9MELEvF5AYuuRMSO.QKoYVpsiu1YU9aDClgrU57XtLof/dK', - 'FE_Lang' => $phpMussel['Config']['general']['lang'], - 'Magnification' => $phpMussel['Config']['template_data']['Magnification'], - 'MaintenanceWarning' => $phpMussel['Config']['general']['maintenance_mode'] ? - "\n
        " . $phpMussel['lang']['state_maintenance_mode'] . '

        ' : '', - 'Number_L10N_JS' => $phpMussel['Number_L10N_JS'](), - 'DateTime' => $phpMussel['TimeFormat']($phpMussel['Time'], $phpMussel['Config']['general']['timeFormat']), - 'ScriptIdent' => $phpMussel['ScriptIdent'], - 'theme' => $phpMussel['Config']['template_data']['theme'], - 'UserList' => "\n", - 'SessionList' => "\n", - 'Cache' => "\n", - 'UserState' => 0, - 'UserRaw' => '', - 'Permissions' => 0, - 'state_msg' => '', - 'ThisSession' => '', - 'bNav' => ' ', - 'FE_Title' => '' -]; - -/** Fetch pips data. */ -$phpMussel['Pips_Path'] = $phpMussel['GetAssetPath']('pips.php'); -if (is_readable($phpMussel['Pips_Path'])) { - require $phpMussel['Pips_Path']; -} - -/** Handle webfonts. */ -if (empty($phpMussel['Config']['general']['disable_webfonts'])) { - $phpMussel['FE']['Template'] = str_replace(['', ''], '', $phpMussel['FE']['Template']); -} else { - $phpMussel['WebFontPos'] = [ - 'Begin' => strpos($phpMussel['FE']['Template'], ''), - 'End' => strpos($phpMussel['FE']['Template'], '') - ]; - $phpMussel['FE']['Template'] = substr( - $phpMussel['FE']['Template'], 0, $phpMussel['WebFontPos']['Begin'] - ) . substr( - $phpMussel['FE']['Template'], $phpMussel['WebFontPos']['End'] + 20 - ); - unset($phpMussel['WebFontPos']); -} - -/** A fix for correctly displaying LTR/RTL text. */ -if (empty($phpMussel['lang']['textDir']) || $phpMussel['lang']['textDir'] !== 'rtl') { - $phpMussel['lang']['textDir'] = 'ltr'; - $phpMussel['FE']['FE_Align'] = 'left'; - $phpMussel['FE']['FE_Align_Reverse'] = 'right'; - $phpMussel['FE']['PIP_Input'] = $phpMussel['FE']['PIP_Right']; - $phpMussel['FE']['Gradient_Degree'] = 90; - $phpMussel['FE']['Half_Border'] = 'solid solid none none'; -} else { - $phpMussel['FE']['FE_Align'] = 'right'; - $phpMussel['FE']['FE_Align_Reverse'] = 'left'; - $phpMussel['FE']['PIP_Input'] = $phpMussel['FE']['PIP_Left']; - $phpMussel['FE']['Gradient_Degree'] = 270; - $phpMussel['FE']['Half_Border'] = 'solid none none solid'; -} - -/** A simple passthru for non-private theme images and related data. */ -if (!empty($phpMussel['QueryVars']['phpmussel-asset'])) { - - $phpMussel['Success'] = false; - - if ( - $phpMussel['FileManager-PathSecurityCheck']($phpMussel['QueryVars']['phpmussel-asset']) && - !preg_match('~[^0-9a-z._]~i', $phpMussel['QueryVars']['phpmussel-asset']) - ) { - $phpMussel['ThisAsset'] = $phpMussel['GetAssetPath']($phpMussel['QueryVars']['phpmussel-asset'], true); - if ( - $phpMussel['ThisAsset'] && - is_readable($phpMussel['ThisAsset']) && - ($phpMussel['ThisAssetDel'] = strrpos($phpMussel['ThisAsset'], '.')) !== false - ) { - $phpMussel['ThisAssetType'] = strtolower(substr($phpMussel['ThisAsset'], $phpMussel['ThisAssetDel'] + 1)); - if ($phpMussel['ThisAssetType'] === 'jpeg') { - $phpMussel['ThisAssetType'] = 'jpg'; - } - if (preg_match('/^(gif|jpg|png|webp)$/', $phpMussel['ThisAssetType'])) { - /** Set asset mime-type (images). */ - header('Content-Type: image/' . $phpMussel['ThisAssetType']); - $phpMussel['Success'] = true; - } elseif ($phpMussel['ThisAssetType'] === 'js') { - /** Set asset mime-type (JavaScript). */ - header('Content-Type: text/javascript'); - $phpMussel['Success'] = true; - } - if ($phpMussel['Success']) { - if (!empty($phpMussel['QueryVars']['theme'])) { - /** Prevents needlessly reloading static assets. */ - header('Last-Modified: ' . gmdate(DATE_RFC1123, filemtime($phpMussel['ThisAsset']))); - } - /** Send asset data. */ - echo $phpMussel['ReadFile']($phpMussel['ThisAsset']); - } - } - } - - if ($phpMussel['Success']) { - die; - } - unset($phpMussel['ThisAssetType'], $phpMussel['ThisAssetDel'], $phpMussel['ThisAsset'], $phpMussel['Success']); - -} - -/** A simple passthru for the front-end CSS. */ -if ($phpMussel['QueryVars']['phpmussel-page'] === 'css') { - header('Content-Type: text/css'); - echo $phpMussel['ParseVars']( - $phpMussel['lang'] + $phpMussel['FE'], - $phpMussel['ReadFile']($phpMussel['GetAssetPath']('frontend.css')) - ); - die; -} - -/** A simple passthru for the favicon. */ -if ($phpMussel['QueryVars']['phpmussel-page'] === 'favicon') { - header('Content-Type: image/png'); - echo base64_decode($phpMussel['favicon']); - die; -} - -/** Set form target if not already set. */ -$phpMussel['FE']['FormTarget'] = empty($_POST['phpmussel-form-target']) ? '' : $_POST['phpmussel-form-target']; - -/** Fetch user list, sessions list and the front-end cache. */ -if (file_exists($phpMussel['Vault'] . 'fe_assets/frontend.dat')) { - $phpMussel['FE']['FrontEndData'] = $phpMussel['ReadFile']($phpMussel['Vault'] . 'fe_assets/frontend.dat'); - $phpMussel['FE']['Rebuild'] = false; -} else { - $phpMussel['FE']['FrontEndData'] = "USERS\n-----\nYWRtaW4=," . $phpMussel['FE']['DefaultPassword'] . ",1\n\nSESSIONS\n--------\n\nCACHE\n-----\n"; - $phpMussel['FE']['Rebuild'] = true; -} -$phpMussel['FE']['UserListPos'] = strpos($phpMussel['FE']['FrontEndData'], "USERS\n-----\n"); -$phpMussel['FE']['SessionListPos'] = strpos($phpMussel['FE']['FrontEndData'], "SESSIONS\n--------\n"); -$phpMussel['FE']['CachePos'] = strpos($phpMussel['FE']['FrontEndData'], "CACHE\n-----\n"); -if ($phpMussel['FE']['UserListPos'] !== false) { - $phpMussel['FE']['UserList'] = substr( - $phpMussel['FE']['FrontEndData'], - $phpMussel['FE']['UserListPos'] + 11, - $phpMussel['FE']['SessionListPos'] - $phpMussel['FE']['UserListPos'] - 12 - ); -} -if ($phpMussel['FE']['SessionListPos'] !== false) { - $phpMussel['FE']['SessionList'] = substr( - $phpMussel['FE']['FrontEndData'], - $phpMussel['FE']['SessionListPos'] + 17, - $phpMussel['FE']['CachePos'] - $phpMussel['FE']['SessionListPos'] - 18 - ); -} -if ($phpMussel['FE']['CachePos'] !== false) { - $phpMussel['FE']['Cache'] = substr( - $phpMussel['FE']['FrontEndData'], - $phpMussel['FE']['CachePos'] + 11 - ); -} - -/** Clear expired sessions. */ -$phpMussel['ClearExpired']($phpMussel['FE']['SessionList'], $phpMussel['FE']['Rebuild']); - -/** Clear expired cache entries. */ -$phpMussel['ClearExpired']($phpMussel['FE']['Cache'], $phpMussel['FE']['Rebuild']); - -/** Brute-force security check. */ -if (($phpMussel['LoginAttempts'] = (int)$phpMussel['FECacheGet']( - $phpMussel['FE']['Cache'], 'LoginAttempts' . $_SERVER[$phpMussel['Config']['general']['ipaddr']] -)) && ($phpMussel['LoginAttempts'] >= $phpMussel['Config']['general']['max_login_attempts'])) { - header('Content-Type: text/plain'); - die('[phpMussel] ' . $phpMussel['lang']['max_login_attempts_exceeded']); -} - -/** Attempt to log in the user. */ -if ($phpMussel['FE']['FormTarget'] === 'login') { - if (!empty($_POST['username']) && empty($_POST['password'])) { - $phpMussel['FE']['UserState'] = -1; - $phpMussel['FE']['state_msg'] = $phpMussel['lang']['response_login_password_field_empty']; - } elseif (empty($_POST['username']) && !empty($_POST['password'])) { - $phpMussel['FE']['UserState'] = -1; - $phpMussel['FE']['state_msg'] = $phpMussel['lang']['response_login_username_field_empty']; - } elseif (!empty($_POST['username']) && !empty($_POST['password'])) { - - $phpMussel['FE']['UserState'] = -1; - $phpMussel['FE']['UserRaw'] = $_POST['username']; - $phpMussel['FE']['User'] = base64_encode($phpMussel['FE']['UserRaw']); - $phpMussel['FE']['UserPos'] = strpos($phpMussel['FE']['UserList'], "\n" . $phpMussel['FE']['User'] . ','); - - if ($phpMussel['FE']['UserPos'] !== false) { - $phpMussel['FE']['UserOffset'] = $phpMussel['FE']['UserPos'] + strlen($phpMussel['FE']['User']) + 2; - $phpMussel['FE']['Password'] = substr( - $phpMussel['FE']['UserList'], - $phpMussel['FE']['UserOffset'], - strpos($phpMussel['FE']['UserList'], "\n", $phpMussel['FE']['UserOffset']) - $phpMussel['FE']['UserOffset'] - ); - $phpMussel['FE']['Permissions'] = (int)substr($phpMussel['FE']['Password'], -1); - $phpMussel['FE']['Password'] = substr($phpMussel['FE']['Password'], 0, -2); - if (password_verify($_POST['password'], $phpMussel['FE']['Password'])) { - $phpMussel['FECacheRemove']( - $phpMussel['FE']['Cache'], $phpMussel['FE']['Rebuild'], 'LoginAttempts' . $_SERVER[$phpMussel['Config']['general']['ipaddr']] - ); - $phpMussel['FE']['SessionKey'] = md5($phpMussel['GenerateSalt']()); - $phpMussel['FE']['Cookie'] = $_POST['username'] . $phpMussel['FE']['SessionKey']; - setcookie('PHPMUSSEL-ADMIN', $phpMussel['FE']['Cookie'], $phpMussel['Time'] + 604800, '/', (!empty($_SERVER['HTTP_HOST']) ? $_SERVER['HTTP_HOST'] : ''), false, true); - $phpMussel['FE']['UserState'] = 1; - $phpMussel['FE']['ThisSession'] = $phpMussel['FE']['User'] . ',' . password_hash( - $phpMussel['FE']['SessionKey'], $phpMussel['DefaultAlgo'] - ) . ',' . ($phpMussel['Time'] + 604800) . "\n"; - $phpMussel['FE']['SessionList'] .= $phpMussel['FE']['ThisSession']; - $phpMussel['FE']['Rebuild'] = true; - } else { - $phpMussel['FE']['Permissions'] = 0; - $phpMussel['FE']['state_msg'] = $phpMussel['lang']['response_login_invalid_password']; - } - } else { - $phpMussel['FE']['state_msg'] = $phpMussel['lang']['response_login_invalid_username']; - } - - } - - if ($phpMussel['Config']['general']['FrontEndLog']) { - if (strpos($phpMussel['Config']['general']['FrontEndLog'], '{') !== false) { - $phpMussel['Config']['general']['FrontEndLog'] = $phpMussel['TimeFormat']( - $phpMussel['Time'], - $phpMussel['Config']['general']['FrontEndLog'] - ); - } - $phpMussel['FrontEndLog'] = $_SERVER[$phpMussel['Config']['general']['ipaddr']] . ' - ' . $phpMussel['FE']['DateTime'] . ' - '; - $phpMussel['FrontEndLog'] .= empty($_POST['username']) ? '""' : '"' . $_POST['username'] . '"'; - } - if ($phpMussel['FE']['state_msg']) { - $phpMussel['LoginAttempts']++; - $phpMussel['TimeToAdd'] = ($phpMussel['LoginAttempts'] > 4) ? ($phpMussel['LoginAttempts'] - 4) * 86400 : 86400; - $phpMussel['FECacheAdd']( - $phpMussel['FE']['Cache'], - $phpMussel['FE']['Rebuild'], - 'LoginAttempts' . $_SERVER[$phpMussel['Config']['general']['ipaddr']], - $phpMussel['LoginAttempts'], - $phpMussel['Time'] + $phpMussel['TimeToAdd'] - ); - if ($phpMussel['Config']['general']['FrontEndLog']) { - $phpMussel['FrontEndLog'] .= ' - ' . $phpMussel['FE']['state_msg'] . "\n"; - } - $phpMussel['FE']['state_msg'] = '
        ' . $phpMussel['FE']['state_msg'] . '

        '; - } elseif ($phpMussel['Config']['general']['FrontEndLog']) { - $phpMussel['FrontEndLog'] .= ' - ' . $phpMussel['lang']['state_logged_in'] . "\n"; - } - if ($phpMussel['Config']['general']['FrontEndLog']) { - $phpMussel['WriteMode'] = ( - !file_exists($phpMussel['Vault'] . $phpMussel['Config']['general']['FrontEndLog']) || ( - $phpMussel['Config']['general']['truncate'] > 0 && - filesize($phpMussel['Vault'] . $phpMussel['Config']['general']['FrontEndLog']) >= $phpMussel['ReadBytes']($phpMussel['Config']['general']['truncate']) - ) - ) ? 'w' : 'a'; - $phpMussel['Handle'] = fopen($phpMussel['Vault'] . $phpMussel['Config']['general']['FrontEndLog'], $phpMussel['WriteMode']); - fwrite($phpMussel['Handle'], $phpMussel['FrontEndLog']); - fclose($phpMussel['Handle']); - unset($phpMussel['WriteMode'], $phpMussel['FrontEndLog']); - } -} - -/** Determine whether the user has logged in. */ -elseif (!empty($_COOKIE['PHPMUSSEL-ADMIN'])) { - - $phpMussel['FE']['UserState'] = -1; - $phpMussel['FE']['SessionKey'] = substr($_COOKIE['PHPMUSSEL-ADMIN'], -32); - $phpMussel['FE']['UserRaw'] = substr($_COOKIE['PHPMUSSEL-ADMIN'], 0, -32); - $phpMussel['FE']['User'] = base64_encode($phpMussel['FE']['UserRaw']); - $phpMussel['FE']['SessionOffset'] = 0; - - if (!empty($phpMussel['FE']['SessionKey']) && !empty($phpMussel['FE']['User'])) { - $phpMussel['FE']['UserLen'] = strlen($phpMussel['FE']['User']); - while (($phpMussel['FE']['SessionPos'] = strpos( - $phpMussel['FE']['SessionList'], - "\n" . $phpMussel['FE']['User'], - $phpMussel['FE']['SessionOffset'] - )) !== false) { - $phpMussel['FE']['SessionOffset'] = $phpMussel['FE']['SessionPos'] + $phpMussel['FE']['UserLen'] + 2; - $phpMussel['FE']['SessionEntry'] = substr( - $phpMussel['FE']['SessionList'], - $phpMussel['FE']['SessionOffset'], - $phpMussel['ZeroMin'](strpos( - $phpMussel['FE']['SessionList'], "\n", $phpMussel['FE']['SessionOffset'] - ), $phpMussel['FE']['SessionOffset'] * -1) - ); - $phpMussel['FE']['SEDelimiter'] = strrpos($phpMussel['FE']['SessionEntry'], ','); - if ($phpMussel['FE']['SEDelimiter'] !== false) { - $phpMussel['FE']['Expiry'] = (int)substr($phpMussel['FE']['SessionEntry'], $phpMussel['FE']['SEDelimiter'] + 1); - $phpMussel['FE']['UserHash'] = substr($phpMussel['FE']['SessionEntry'], 0, $phpMussel['FE']['SEDelimiter']); - } - if ( - !empty($phpMussel['FE']['Expiry']) && - !empty($phpMussel['FE']['UserHash']) && - ($phpMussel['FE']['Expiry'] > $phpMussel['Time']) && - password_verify($phpMussel['FE']['SessionKey'], $phpMussel['FE']['UserHash']) - ) { - $phpMussel['FE']['UserPos'] = strpos($phpMussel['FE']['UserList'], "\n" . $phpMussel['FE']['User'] . ','); - if ($phpMussel['FE']['UserPos'] !== false) { - $phpMussel['FE']['ThisSession'] = $phpMussel['FE']['User'] . ',' . $phpMussel['FE']['SessionEntry'] . "\n"; - $phpMussel['FE']['UserOffset'] = $phpMussel['FE']['UserPos'] + $phpMussel['FE']['UserLen'] + 2; - $phpMussel['FE']['Permissions'] = (int)substr(substr( - $phpMussel['FE']['UserList'], - $phpMussel['FE']['UserOffset'], - strpos($phpMussel['FE']['UserList'], "\n", $phpMussel['FE']['UserOffset']) - $phpMussel['FE']['UserOffset'] - ), -1); - $phpMussel['FE']['UserState'] = 1; - } - break; - } - } - } - -} - -/** Only execute this code block for users that are logged in. */ -if ($phpMussel['FE']['UserState'] === 1) { - - if ($phpMussel['QueryVars']['phpmussel-page'] === 'logout') { - - /** Log out the user. */ - $phpMussel['FE']['SessionList'] = str_ireplace($phpMussel['FE']['ThisSession'], '', $phpMussel['FE']['SessionList']); - $phpMussel['FE']['ThisSession'] = ''; - $phpMussel['FE']['Rebuild'] = true; - $phpMussel['FE']['UserState'] = $phpMussel['FE']['Permissions'] = 0; - setcookie('PHPMUSSEL-ADMIN', '', -1, '/', (!empty($_SERVER['HTTP_HOST']) ? $_SERVER['HTTP_HOST'] : ''), false, true); - - } - - /** If the user has complete access. */ - if ($phpMussel['FE']['Permissions'] === 1) { - - $phpMussel['FE']['nav'] = $phpMussel['ParseVars']( - $phpMussel['lang'] + $phpMussel['FE'], - $phpMussel['ReadFile']($phpMussel['GetAssetPath']('_nav_complete_access.html')) - ); - - /** If the user has logs access only. */ - } elseif ($phpMussel['FE']['Permissions'] === 2) { - - $phpMussel['FE']['nav'] = $phpMussel['ParseVars']( - $phpMussel['lang'] + $phpMussel['FE'], - $phpMussel['ReadFile']($phpMussel['GetAssetPath']('_nav_logs_access_only.html')) - ); - - } - - /** Execute hotfixes. */ - if (file_exists($phpMussel['Vault'] . 'hotfixes.php')) { - require $phpMussel['Vault'] . 'hotfixes.php'; - } - -} - -$phpMussel['FE']['bNavBR'] = ($phpMussel['FE']['UserState'] === 1) ? '

        ' : '
        '; - -/** The user hasn't logged in. Show them the login page. */ -if ($phpMussel['FE']['UserState'] !== 1) { - - /** Set page title. */ - $phpMussel['FE']['FE_Title'] = $phpMussel['lang']['title_login']; - - /** Prepare page tooltip/description. */ - $phpMussel['FE']['FE_Tip'] = $phpMussel['lang']['tip_login']; - - /** Parse output. */ - $phpMussel['FE']['FE_Content'] = $phpMussel['ParseVars']( - $phpMussel['lang'] + $phpMussel['FE'], - $phpMussel['ReadFile']($phpMussel['GetAssetPath']('_login.html')) - ); - - /** Send output. */ - echo $phpMussel['ParseVars']($phpMussel['lang'] + $phpMussel['FE'], $phpMussel['FE']['Template']); - -} - -/** - * The user has logged in, but hasn't selected anything to view. Show them the - * front-end home page. - */ -elseif ($phpMussel['QueryVars']['phpmussel-page'] === '') { - - /** Set page title. */ - $phpMussel['FE']['FE_Title'] = $phpMussel['lang']['title_home']; - - /** phpMussel version used. */ - $phpMussel['FE']['ScriptVersion'] = $phpMussel['ScriptVersion']; - - /** PHP version used. */ - $phpMussel['FE']['info_php'] = PHP_VERSION; - - /** SAPI used. */ - $phpMussel['FE']['info_sapi'] = php_sapi_name(); - - /** Operating system used. */ - $phpMussel['FE']['info_os'] = php_uname(); - - /** Prepare page tooltip/description. */ - $phpMussel['FE']['FE_Tip'] = $phpMussel['ParseVars']( - ['username' => $phpMussel['FE']['UserRaw']], - $phpMussel['lang']['tip_home'] - ); - - $phpMussel['FE']['bNav'] = $phpMussel['lang']['bNav_logout']; - - /** Where to find remote version information? */ - $phpMussel['RemoteVerPath'] = 'https://raw.githubusercontent.com/Maikuolan/Compatibility-Charts/gh-pages/'; - - /** Fetch remote phpMussel version information and cache it if necessary. */ - if (($phpMussel['Remote-YAML-phpMussel'] = $phpMussel['FECacheGet']($phpMussel['FE']['Cache'], 'phpmussel-ver.yaml')) === false) { - $phpMussel['Remote-YAML-phpMussel'] = $phpMussel['Request']($phpMussel['RemoteVerPath'] . 'phpmussel-ver.yaml', false, 8); - $phpMussel['FECacheAdd']($phpMussel['FE']['Cache'], $phpMussel['FE']['Rebuild'], 'phpmussel-ver.yaml', $phpMussel['Remote-YAML-phpMussel'] ?: '-', $phpMussel['Time'] + 86400); - } - - /** Process remote phpMussel version information. */ - if (empty($phpMussel['Remote-YAML-phpMussel'])) { - - /** phpMussel latest stable. */ - $phpMussel['FE']['info_phpmussel_stable'] = $phpMussel['lang']['response_error']; - /** phpMussel latest unstable. */ - $phpMussel['FE']['info_phpmussel_unstable'] = $phpMussel['lang']['response_error']; - /** phpMussel branch latest stable. */ - $phpMussel['FE']['info_phpmussel_branch'] = $phpMussel['lang']['response_error']; - - } else { - - $phpMussel['Remote-YAML-phpMussel-Array'] = []; - $phpMussel['YAML']($phpMussel['Remote-YAML-phpMussel'], $phpMussel['Remote-YAML-phpMussel-Array']); - - /** phpMussel latest stable. */ - $phpMussel['FE']['info_phpmussel_stable'] = empty($phpMussel['Remote-YAML-phpMussel-Array']['Stable']) ? - $phpMussel['lang']['response_error'] : $phpMussel['Remote-YAML-phpMussel-Array']['Stable']; - /** phpMussel latest unstable. */ - $phpMussel['FE']['info_phpmussel_unstable'] = empty($phpMussel['Remote-YAML-phpMussel-Array']['Unstable']) ? - $phpMussel['lang']['response_error'] : $phpMussel['Remote-YAML-phpMussel-Array']['Unstable']; - /** phpMussel branch latest stable. */ - if ($phpMussel['ThisBranch'] = substr($phpMussel['FE']['ScriptVersion'], 0, strpos($phpMussel['FE']['ScriptVersion'], '.') ?: 0)) { - $phpMussel['ThisBranch'] = 'v' . ($phpMussel['ThisBranch'] ?: 1); - $phpMussel['FE']['info_phpmussel_branch'] = empty($phpMussel['Remote-YAML-phpMussel-Array']['Branch'][$phpMussel['ThisBranch']]['Latest']) ? - $phpMussel['lang']['response_error'] : $phpMussel['Remote-YAML-phpMussel-Array']['Branch'][$phpMussel['ThisBranch']]['Latest']; - } else { - $phpMussel['FE']['info_php_branch'] = $phpMussel['lang']['response_error']; - } - - } - - /** Cleanup. */ - unset($phpMussel['Remote-YAML-phpMussel-Array'], $phpMussel['Remote-YAML-phpMussel']); - - /** Fetch remote PHP version information and cache it if necessary. */ - if (($phpMussel['Remote-YAML-PHP'] = $phpMussel['FECacheGet']($phpMussel['FE']['Cache'], 'php-ver.yaml')) === false) { - $phpMussel['Remote-YAML-PHP'] = $phpMussel['Request']($phpMussel['RemoteVerPath'] . 'php-ver.yaml', false, 8); - $phpMussel['FECacheAdd']($phpMussel['FE']['Cache'], $phpMussel['FE']['Rebuild'], 'php-ver.yaml', $phpMussel['Remote-YAML-PHP'] ?: '-', $phpMussel['Time'] + 86400); - } - - /** Process remote PHP version information. */ - if (empty($phpMussel['Remote-YAML-PHP'])) { - - /** PHP latest stable. */ - $phpMussel['FE']['info_php_stable'] = $phpMussel['lang']['response_error']; - /** PHP latest unstable. */ - $phpMussel['FE']['info_php_unstable'] = $phpMussel['lang']['response_error']; - /** PHP branch latest stable. */ - $phpMussel['FE']['info_php_branch'] = $phpMussel['lang']['response_error']; - - } else { - - $phpMussel['Remote-YAML-PHP-Array'] = []; - $phpMussel['YAML']($phpMussel['Remote-YAML-PHP'], $phpMussel['Remote-YAML-PHP-Array']); - - /** PHP latest stable. */ - $phpMussel['FE']['info_php_stable'] = empty($phpMussel['Remote-YAML-PHP-Array']['Stable']) ? - $phpMussel['lang']['response_error'] : $phpMussel['Remote-YAML-PHP-Array']['Stable']; - /** PHP latest unstable. */ - $phpMussel['FE']['info_php_unstable'] = empty($phpMussel['Remote-YAML-PHP-Array']['Unstable']) ? - $phpMussel['lang']['response_error'] : $phpMussel['Remote-YAML-PHP-Array']['Unstable']; - /** PHP branch latest stable. */ - if ($phpMussel['ThisBranch'] = substr(PHP_VERSION, 0, strpos(PHP_VERSION, '.') ?: 0)) { - $phpMussel['ThisBranch'] .= substr(PHP_VERSION, strlen($phpMussel['ThisBranch']) + 1, strpos(PHP_VERSION, '.', strlen($phpMussel['ThisBranch'])) ?: 0); - $phpMussel['ThisBranch'] = 'php' . $phpMussel['ThisBranch']; - $phpMussel['FE']['info_php_branch'] = empty($phpMussel['Remote-YAML-PHP-Array']['Branch'][$phpMussel['ThisBranch']]['Latest']) ? - $phpMussel['lang']['response_error'] : $phpMussel['Remote-YAML-PHP-Array']['Branch'][$phpMussel['ThisBranch']]['Latest']; - $phpMussel['ForceVersionWarning'] = (!empty($phpMussel['Remote-YAML-PHP-Array'][$phpMussel['ThisBranch']]['WarnMin']) && ( - $phpMussel['Remote-YAML-PHP-Array'][$phpMussel['ThisBranch']]['WarnMin'] === '*' || - $phpMussel['VersionCompare'](PHP_VERSION, $phpMussel['Remote-YAML-PHP-Array'][$phpMussel['ThisBranch']]['WarnMin']) - )); - } else { - $phpMussel['FE']['info_php_branch'] = $phpMussel['lang']['response_error']; - } - - } - - /** Cleanup. */ - unset($phpMussel['Remote-YAML-PHP-Array'], $phpMussel['Remote-YAML-PHP'], $phpMussel['ThisBranch'], $phpMussel['RemoteVerPath']); - - /** Process warnings. */ - $phpMussel['FE']['Warnings'] = ''; - if (($phpMussel['FE']['VersionWarning'] = $phpMussel['VersionWarning']()) > 0) { - if ($phpMussel['FE']['VersionWarning'] >= 2) { - $phpMussel['FE']['VersionWarning'] = $phpMussel['FE']['VersionWarning'] % 2; - $phpMussel['FE']['Warnings'] .= '
      • ' . $phpMussel['lang']['warning_php_2'] . '
      • '; - } - if ($phpMussel['FE']['VersionWarning'] >= 1) { - $phpMussel['FE']['Warnings'] .= '
      • ' . $phpMussel['lang']['warning_php_1'] . '
      • '; - } - } - if (empty($phpMussel['Config']['signatures']['Active'])) { - $phpMussel['FE']['Warnings'] .= '
      • ' . $phpMussel['lang']['warning_signatures_1'] . '
      • '; - } - if ($phpMussel['FE']['Warnings']) { - $phpMussel['FE']['Warnings'] = '
        ' . $phpMussel['lang']['warning'] . '
          ' . $phpMussel['FE']['Warnings'] . '
        '; - } - - /** Parse output. */ - $phpMussel['FE']['FE_Content'] = $phpMussel['ParseVars']( - $phpMussel['lang'] + $phpMussel['FE'], - $phpMussel['ReadFile']($phpMussel['GetAssetPath']('_home.html')) - ); - - /** Send output. */ - echo $phpMussel['ParseVars']($phpMussel['lang'] + $phpMussel['FE'], $phpMussel['FE']['Template']); - -} - -/** A simple passthru for the file manager icons. */ -elseif ($phpMussel['QueryVars']['phpmussel-page'] === 'icon' && $phpMussel['FE']['Permissions'] === 1) { - - if ( - !empty($phpMussel['QueryVars']['file']) && - $phpMussel['FileManager-PathSecurityCheck']($phpMussel['QueryVars']['file']) && - file_exists($phpMussel['Vault'] . $phpMussel['QueryVars']['file']) && - is_readable($phpMussel['Vault'] . $phpMussel['QueryVars']['file']) - ) { - header('Content-Type: image/x-icon'); - echo $phpMussel['ReadFile']($phpMussel['Vault'] . $phpMussel['QueryVars']['file']); - } - - elseif (!empty($phpMussel['QueryVars']['icon'])) { - - $phpMussel['Icons_Handler_Path'] = $phpMussel['GetAssetPath']('icons.php'); - if (is_readable($phpMussel['Icons_Handler_Path'])) { - - /** Fetch file manager icons data. */ - require $phpMussel['Icons_Handler_Path']; - - /** Set mime-type. */ - header('Content-Type: image/gif'); - - /** Prevents needlessly reloading static assets. */ - if (!empty($phpMussel['QueryVars']['theme'])) { - header('Last-Modified: ' . gmdate(DATE_RFC1123, filemtime($phpMussel['Icons_Handler_Path']))); - } - - /** Send icon data. */ - if (!empty($phpMussel['Icons'][$phpMussel['QueryVars']['icon']])) { - echo gzinflate(base64_decode($phpMussel['Icons'][$phpMussel['QueryVars']['icon']])); - } elseif (!empty($phpMussel['Icons']['unknown'])) { - echo gzinflate(base64_decode($phpMussel['Icons']['unknown'])); - } - - } - - } - - die; - -} - -/** Accounts. */ -elseif ($phpMussel['QueryVars']['phpmussel-page'] === 'accounts' && $phpMussel['FE']['Permissions'] === 1) { - - /** $_POST overrides for mobile display. */ - if (!empty($_POST['username']) && !empty($_POST['do_mob']) && (!empty($_POST['password_mob']) || $_POST['do_mob'] == 'delete-account')) { - $_POST['do'] = $_POST['do_mob']; - } - if (empty($_POST['username']) && !empty($_POST['username_mob'])) { - $_POST['username'] = $_POST['username_mob']; - } - if (empty($_POST['permissions']) && !empty($_POST['permissions_mob'])) { - $_POST['permissions'] = $_POST['permissions_mob']; - } - if (empty($_POST['password']) && !empty($_POST['password_mob'])) { - $_POST['password'] = $_POST['password_mob']; - } - - /** A form has been submitted. */ - if ($phpMussel['FE']['FormTarget'] === 'accounts' && !empty($_POST['do'])) { - - /** Create a new account. */ - if ($_POST['do'] === 'create-account' && !empty($_POST['username']) && !empty($_POST['password']) && !empty($_POST['permissions'])) { - $phpMussel['FE']['NewUser'] = $_POST['username']; - $phpMussel['FE']['NewPass'] = password_hash($_POST['password'], $phpMussel['DefaultAlgo']); - $phpMussel['FE']['NewPerm'] = (int)$_POST['permissions']; - $phpMussel['FE']['NewUserB64'] = base64_encode($_POST['username']); - if (strpos($phpMussel['FE']['UserList'], "\n" . $phpMussel['FE']['NewUserB64'] . ',') !== false) { - $phpMussel['FE']['state_msg'] = $phpMussel['lang']['response_accounts_already_exists']; - } else { - $phpMussel['AccountsArray'] = [ - 'Iterate' => 0, - 'Count' => 1, - 'ByName' => [$phpMussel['FE']['NewUser'] => - $phpMussel['FE']['NewUserB64'] . ',' . - $phpMussel['FE']['NewPass'] . ',' . - $phpMussel['FE']['NewPerm'] . "\n" - ] - ]; - $phpMussel['FE']['NewLineOffset'] = 0; - while (($phpMussel['FE']['NewLinePos'] = strpos( - $phpMussel['FE']['UserList'], "\n", $phpMussel['FE']['NewLineOffset'] + 1 - )) !== false) { - $phpMussel['FE']['NewLine'] = substr( - $phpMussel['FE']['UserList'], - $phpMussel['FE']['NewLineOffset'] + 1, - $phpMussel['FE']['NewLinePos'] - $phpMussel['FE']['NewLineOffset'] - ); - $phpMussel['RowInfo'] = explode(',', $phpMussel['FE']['NewLine'], 3); - $phpMussel['RowInfo'] = base64_decode($phpMussel['RowInfo'][0]); - $phpMussel['AccountsArray']['ByName'][$phpMussel['RowInfo']] = $phpMussel['FE']['NewLine']; - $phpMussel['FE']['NewLineOffset'] = $phpMussel['FE']['NewLinePos']; - } - ksort($phpMussel['AccountsArray']['ByName']); - $phpMussel['FE']['UserList'] = "\n" . implode('', $phpMussel['AccountsArray']['ByName']); - $phpMussel['FE']['Rebuild'] = true; - unset($phpMussel['AccountsArray']); - $phpMussel['FE']['state_msg'] = $phpMussel['lang']['response_accounts_created']; - } - } - - /** Delete an account. */ - if ($_POST['do'] === 'delete-account' && !empty($_POST['username'])) { - $phpMussel['FE']['User64'] = base64_encode($_POST['username']); - $phpMussel['FE']['UserLinePos'] = strpos($phpMussel['FE']['UserList'], "\n" . $phpMussel['FE']['User64'] . ','); - if ($phpMussel['FE']['UserLinePos'] === false) { - $phpMussel['FE']['state_msg'] = $phpMussel['lang']['response_accounts_doesnt_exist']; - } else { - $phpMussel['FE']['UserLineEndPos'] = strpos($phpMussel['FE']['UserList'], "\n", $phpMussel['FE']['UserLinePos'] + 1); - if ($phpMussel['FE']['UserLineEndPos'] !== false) { - $phpMussel['FE']['UserLine'] = substr( - $phpMussel['FE']['UserList'], - $phpMussel['FE']['UserLinePos'] + 1, - $phpMussel['FE']['UserLineEndPos'] - $phpMussel['FE']['UserLinePos'] - ); - $phpMussel['FE']['UserList'] = str_replace($phpMussel['FE']['UserLine'], '', $phpMussel['FE']['UserList']); - $phpMussel['FE']['Rebuild'] = true; - $phpMussel['FE']['state_msg'] = $phpMussel['lang']['response_accounts_deleted']; - } - } - $phpMussel['FE']['UserLinePos'] = strpos($phpMussel['FE']['SessionList'], "\n" . $phpMussel['FE']['User64'] . ','); - if ($phpMussel['FE']['UserLinePos'] !== false) { - $phpMussel['FE']['UserLineEndPos'] = strpos($phpMussel['FE']['SessionList'], "\n", $phpMussel['FE']['UserLinePos'] + 1); - if ($phpMussel['FE']['UserLineEndPos'] !== false) { - $phpMussel['FE']['SessionLine'] = substr( - $phpMussel['FE']['SessionList'], - $phpMussel['FE']['UserLinePos'] + 1, - $phpMussel['FE']['UserLineEndPos'] - $phpMussel['FE']['UserLinePos'] - ); - $phpMussel['FE']['SessionList'] = str_replace($phpMussel['FE']['SessionLine'], '', $phpMussel['FE']['SessionList']); - $phpMussel['FE']['Rebuild'] = true; - } - } - } - - /** Update an account password. */ - if ($_POST['do'] === 'update-password' && !empty($_POST['username']) && !empty($_POST['password'])) { - $phpMussel['FE']['User64'] = base64_encode($_POST['username']); - $phpMussel['FE']['NewPass'] = password_hash($_POST['password'], $phpMussel['DefaultAlgo']); - $phpMussel['FE']['UserLinePos'] = strpos($phpMussel['FE']['UserList'], "\n" . $phpMussel['FE']['User64'] . ','); - if ($phpMussel['FE']['UserLinePos'] === false) { - $phpMussel['FE']['state_msg'] = $phpMussel['lang']['response_accounts_doesnt_exist']; - } else { - $phpMussel['FE']['UserLineEndPos'] = strpos($phpMussel['FE']['UserList'], "\n", $phpMussel['FE']['UserLinePos'] + 1); - if ($phpMussel['FE']['UserLineEndPos'] !== false) { - $phpMussel['FE']['UserLine'] = substr( - $phpMussel['FE']['UserList'], - $phpMussel['FE']['UserLinePos'] + 1, - $phpMussel['FE']['UserLineEndPos'] - $phpMussel['FE']['UserLinePos'] - ); - $phpMussel['FE']['UserPerm'] = substr($phpMussel['FE']['UserLine'], -2, 1); - $phpMussel['FE']['NewUserLine'] = - $phpMussel['FE']['User64'] . ',' . - $phpMussel['FE']['NewPass'] . ',' . - $phpMussel['FE']['UserPerm'] . "\n"; - $phpMussel['FE']['UserList'] = str_replace($phpMussel['FE']['UserLine'], $phpMussel['FE']['NewUserLine'], $phpMussel['FE']['UserList']); - $phpMussel['FE']['Rebuild'] = true; - $phpMussel['FE']['state_msg'] = $phpMussel['lang']['response_accounts_password_updated']; - } - } - } - - } - - /** Set page title. */ - $phpMussel['FE']['FE_Title'] = $phpMussel['lang']['title_accounts']; - - /** Prepare page tooltip/description. */ - $phpMussel['FE']['FE_Tip'] = $phpMussel['ParseVars']( - ['username' => $phpMussel['FE']['UserRaw']], - $phpMussel['lang']['tip_accounts'] - ); - - $phpMussel['FE']['bNav'] = $phpMussel['lang']['bNav_home_logout']; - - $phpMussel['FE']['AccountsRow'] = $phpMussel['ReadFile']($phpMussel['GetAssetPath']('_accounts_row.html')); - $phpMussel['FE']['Accounts'] = ''; - $phpMussel['FE']['NewLineOffset'] = 0; - - while (($phpMussel['FE']['NewLinePos'] = strpos( - $phpMussel['FE']['UserList'], "\n", $phpMussel['FE']['NewLineOffset'] + 1 - )) !== false) { - $phpMussel['FE']['NewLine'] = substr( - $phpMussel['FE']['UserList'], - $phpMussel['FE']['NewLineOffset'] + 1, - $phpMussel['FE']['NewLinePos'] - $phpMussel['FE']['NewLineOffset'] - 1 - ); - $phpMussel['RowInfo'] = ['DelPos' => strpos($phpMussel['FE']['NewLine'], ','), 'AccWarnings' => '']; - $phpMussel['RowInfo']['AccUsername'] = substr($phpMussel['FE']['NewLine'], 0, $phpMussel['RowInfo']['DelPos']); - $phpMussel['RowInfo']['AccPassword'] = substr($phpMussel['FE']['NewLine'], $phpMussel['RowInfo']['DelPos'] + 1); - $phpMussel['RowInfo']['AccPermissions'] = ( - (int)substr($phpMussel['RowInfo']['AccPassword'], -1) === 1 - ) ? $phpMussel['lang']['state_complete_access'] : $phpMussel['lang']['state_logs_access_only']; - $phpMussel['RowInfo']['AccPassword'] = substr($phpMussel['RowInfo']['AccPassword'], 0, -2); - if ($phpMussel['RowInfo']['AccPassword'] === $phpMussel['FE']['DefaultPassword']) { - $phpMussel['RowInfo']['AccWarnings'] .= '
        ' . $phpMussel['lang']['state_default_password'] . '
        '; - } elseif (( - strlen($phpMussel['RowInfo']['AccPassword']) !== 60 && strlen($phpMussel['RowInfo']['AccPassword']) !== 96 - ) || ( - strlen($phpMussel['RowInfo']['AccPassword']) === 60 && !preg_match('/^\$2.\$[0-9]{2}\$/', $phpMussel['RowInfo']['AccPassword']) - ) || ( - strlen($phpMussel['RowInfo']['AccPassword']) === 96 && !preg_match('/^\$argon2i\$/', $phpMussel['RowInfo']['AccPassword']) - )) { - $phpMussel['RowInfo']['AccWarnings'] .= '
        ' . $phpMussel['lang']['state_password_not_valid'] . '
        '; - } - if (strrpos($phpMussel['FE']['SessionList'], "\n" . $phpMussel['RowInfo']['AccUsername'] . ',') !== false) { - $phpMussel['RowInfo']['AccWarnings'] .= '
        ' . $phpMussel['lang']['state_logged_in'] . '
        '; - } - $phpMussel['RowInfo']['AccUsername'] = htmlentities(base64_decode($phpMussel['RowInfo']['AccUsername'])); - $phpMussel['FE']['NewLineOffset'] = $phpMussel['FE']['NewLinePos']; - $phpMussel['FE']['Accounts'] .= $phpMussel['ParseVars']( - $phpMussel['lang'] + $phpMussel['RowInfo'], $phpMussel['FE']['AccountsRow'] - ); - } - unset($phpMussel['RowInfo']); - - /** Parse output. */ - $phpMussel['FE']['FE_Content'] = $phpMussel['ParseVars']( - $phpMussel['lang'] + $phpMussel['FE'], - $phpMussel['ReadFile']($phpMussel['GetAssetPath']('_accounts.html')) - ); - - /** Send output. */ - echo $phpMussel['ParseVars']($phpMussel['lang'] + $phpMussel['FE'], $phpMussel['FE']['Template']); - -} - -/** Configuration. */ -elseif ($phpMussel['QueryVars']['phpmussel-page'] === 'config' && $phpMussel['FE']['Permissions'] === 1) { - - /** Set page title. */ - $phpMussel['FE']['FE_Title'] = $phpMussel['lang']['title_config']; - - /** Prepare page tooltip/description. */ - $phpMussel['FE']['FE_Tip'] = $phpMussel['ParseVars']( - ['username' => $phpMussel['FE']['UserRaw']], - $phpMussel['lang']['tip_config'] - ); - - $phpMussel['FE']['bNav'] = $phpMussel['lang']['bNav_home_logout']; - - $phpMussel['FE']['ConfigRow'] = $phpMussel['ReadFile']($phpMussel['GetAssetPath']('_config_row.html')); - - /** Indexes. */ - $phpMussel['FE']['Indexes'] = ' '; - - /** Define active configuration file. */ - $phpMussel['FE']['ActiveConfigFile'] = !empty($phpMussel['Overrides']) ? $phpMussel['Domain'] . '.config.ini' : 'config.ini'; - - /** Generate entries for display and regenerate configuration if any changes were submitted. */ - $phpMussel['FE']['ConfigFields'] = $phpMussel['RegenerateConfig'] = ''; - $phpMussel['ConfigModified'] = (!empty($phpMussel['QueryVars']['updated']) && $phpMussel['QueryVars']['updated'] === 'true'); - foreach ($phpMussel['Config']['Config Defaults'] as $phpMussel['CatKey'] => $phpMussel['CatValue']) { - if (!is_array($phpMussel['CatValue'])) { - continue; - } - $phpMussel['RegenerateConfig'] .= '[' . $phpMussel['CatKey'] . "]\r\n\r\n"; - foreach ($phpMussel['CatValue'] as $phpMussel['DirKey'] => $phpMussel['DirValue']) { - $phpMussel['ThisDir'] = ['FieldOut' => '']; - if (empty($phpMussel['DirValue']['type']) || !isset($phpMussel['Config'][$phpMussel['CatKey']][$phpMussel['DirKey']])) { - continue; - } - $phpMussel['ThisDir']['DirLangKey'] = 'config_' . $phpMussel['CatKey'] . '_' . $phpMussel['DirKey']; - $phpMussel['ThisDir']['DirName'] = $phpMussel['CatKey'] . '->' . $phpMussel['DirKey']; - $phpMussel['FE']['Indexes'] .= '' . $phpMussel['ThisDir']['DirName'] . "

        \n "; - $phpMussel['ThisDir']['DirLang'] = - !empty($phpMussel['lang'][$phpMussel['ThisDir']['DirLangKey']]) ? $phpMussel['lang'][$phpMussel['ThisDir']['DirLangKey']] : $phpMussel['lang']['response_error']; - $phpMussel['RegenerateConfig'] .= '; ' . wordwrap(strip_tags($phpMussel['ThisDir']['DirLang']), 77, "\r\n; ") . "\r\n"; - if (isset($_POST[$phpMussel['ThisDir']['DirLangKey']])) { - if ($phpMussel['DirValue']['type'] === 'kb' || $phpMussel['DirValue']['type'] === 'string' || $phpMussel['DirValue']['type'] === 'timezone' || $phpMussel['DirValue']['type'] === 'int' || $phpMussel['DirValue']['type'] === 'real' || $phpMussel['DirValue']['type'] === 'bool') { - $phpMussel['AutoType']($_POST[$phpMussel['ThisDir']['DirLangKey']], $phpMussel['DirValue']['type']); - } - if ( - !preg_match('/[^\x20-\xff"\']/', $_POST[$phpMussel['ThisDir']['DirLangKey']]) && ( - !isset($phpMussel['DirValue']['choices']) || isset($phpMussel['DirValue']['choices'][$_POST[$phpMussel['ThisDir']['DirLangKey']]]) - ) - ) { - $phpMussel['Config'][$phpMussel['CatKey']][$phpMussel['DirKey']] = $_POST[$phpMussel['ThisDir']['DirLangKey']]; - $phpMussel['ConfigModified'] = true; - } - } - if ($phpMussel['Config'][$phpMussel['CatKey']][$phpMussel['DirKey']] === true) { - $phpMussel['RegenerateConfig'] .= $phpMussel['DirKey'] . "=true\r\n\r\n"; - } elseif ($phpMussel['Config'][$phpMussel['CatKey']][$phpMussel['DirKey']] === false) { - $phpMussel['RegenerateConfig'] .= $phpMussel['DirKey'] . "=false\r\n\r\n"; - } elseif ($phpMussel['DirValue']['type'] === 'int' || $phpMussel['DirValue']['type'] === 'real') { - $phpMussel['RegenerateConfig'] .= $phpMussel['DirKey'] . '=' . $phpMussel['Config'][$phpMussel['CatKey']][$phpMussel['DirKey']] . "\r\n\r\n"; - } else { - $phpMussel['RegenerateConfig'] .= $phpMussel['DirKey'] . '=\'' . $phpMussel['Config'][$phpMussel['CatKey']][$phpMussel['DirKey']] . "'\r\n\r\n"; - } - if (isset($phpMussel['DirValue']['preview'])) { - $phpMussel['ThisDir']['Preview'] = ' = '; - $phpMussel['ThisDir']['Trigger'] = ' onchange="javascript:' . $phpMussel['ThisDir']['DirLangKey'] . '_function();" onkeyup="javascript:' . $phpMussel['ThisDir']['DirLangKey'] . '_function();"'; - if ($phpMussel['DirValue']['preview'] === 'kb') { - $phpMussel['ThisDir']['Preview'] .= sprintf( - '', - $phpMussel['ThisDir']['DirLangKey'], - $phpMussel['Plural'](0, $phpMussel['lang']['field_size_bytes']), - $phpMussel['lang']['field_size_KB'], - $phpMussel['lang']['field_size_MB'], - $phpMussel['lang']['field_size_GB'], - $phpMussel['lang']['field_size_TB'] - ); - } elseif ($phpMussel['DirValue']['preview'] === 'seconds') { - $phpMussel['ThisDir']['Preview'] .= sprintf( - '', - $phpMussel['ThisDir']['DirLangKey'], - $phpMussel['lang']['previewer_years'], - $phpMussel['lang']['previewer_months'], - $phpMussel['lang']['previewer_weeks'], - $phpMussel['lang']['previewer_days'], - $phpMussel['lang']['previewer_hours'], - $phpMussel['lang']['previewer_minutes'], - $phpMussel['lang']['previewer_seconds'] - ); - } elseif ($phpMussel['DirValue']['preview'] === 'minutes') { - $phpMussel['ThisDir']['Preview'] .= sprintf( - '', - $phpMussel['ThisDir']['DirLangKey'], - $phpMussel['lang']['previewer_years'], - $phpMussel['lang']['previewer_months'], - $phpMussel['lang']['previewer_weeks'], - $phpMussel['lang']['previewer_days'], - $phpMussel['lang']['previewer_hours'], - $phpMussel['lang']['previewer_minutes'], - $phpMussel['lang']['previewer_seconds'] - ); - } elseif ($phpMussel['DirValue']['preview'] === 'hours') { - $phpMussel['ThisDir']['Preview'] .= sprintf( - '', - $phpMussel['ThisDir']['DirLangKey'], - $phpMussel['lang']['previewer_years'], - $phpMussel['lang']['previewer_months'], - $phpMussel['lang']['previewer_weeks'], - $phpMussel['lang']['previewer_days'], - $phpMussel['lang']['previewer_hours'], - $phpMussel['lang']['previewer_minutes'], - $phpMussel['lang']['previewer_seconds'] - ); - } - } else { - $phpMussel['ThisDir']['Preview'] = $phpMussel['ThisDir']['Trigger'] = ''; - } - if ($phpMussel['DirValue']['type'] === 'timezone') { - $phpMussel['DirValue']['choices'] = ['SYSTEM' => $phpMussel['lang']['field_system_timezone']]; - foreach (array_unique(DateTimeZone::listIdentifiers()) as $phpMussel['DirValue']['ChoiceValue']) { - $phpMussel['DirValue']['choices'][$phpMussel['DirValue']['ChoiceValue']] = $phpMussel['DirValue']['ChoiceValue']; - } - } - if (isset($phpMussel['DirValue']['choices'])) { - $phpMussel['ThisDir']['FieldOut'] = ''; - } elseif ($phpMussel['DirValue']['type'] === 'bool') { - if ($phpMussel['Config'][$phpMussel['CatKey']][$phpMussel['DirKey']]) { - $phpMussel['ThisDir']['FieldOut'] = - ''; - } else { - $phpMussel['ThisDir']['FieldOut'] = - ''; - } - } elseif ($phpMussel['DirValue']['type'] === 'int' || $phpMussel['DirValue']['type'] === 'real') { - $phpMussel['ThisDir']['Step'] = isset($phpMussel['DirValue']['step']) ? ' step="' . $phpMussel['DirValue']['step'] . '"' : ''; - $phpMussel['ThisDir']['FieldOut'] = ''; - } elseif ($phpMussel['DirValue']['type'] === 'string') { - $phpMussel['ThisDir']['FieldOut'] = ''; - } else { - $phpMussel['ThisDir']['FieldOut'] = ''; - } - $phpMussel['ThisDir']['FieldOut'] .= $phpMussel['ThisDir']['Preview']; - $phpMussel['FE']['ConfigFields'] .= $phpMussel['ParseVars']( - $phpMussel['lang'] + $phpMussel['ThisDir'], $phpMussel['FE']['ConfigRow'] - ); - } - $phpMussel['RegenerateConfig'] .= "\r\n"; - } - - /** Update the configuration file if any changes were made. */ - if ($phpMussel['ConfigModified']) { - $phpMussel['FE']['state_msg'] = $phpMussel['lang']['response_configuration_updated']; - $phpMussel['Handle'] = fopen($phpMussel['Vault'] . 'config.ini', 'w'); - fwrite($phpMussel['Handle'], $phpMussel['RegenerateConfig']); - fclose($phpMussel['Handle']); - if (empty($phpMussel['QueryVars']['updated'])) { - header('Location: ?phpmussel-page=config&updated=true'); - die; - } - } - - /** Parse output. */ - $phpMussel['FE']['FE_Content'] = $phpMussel['ParseVars']( - $phpMussel['lang'] + $phpMussel['FE'], - $phpMussel['ReadFile']($phpMussel['GetAssetPath']('_config.html')) - ); - - /** Send output. */ - echo $phpMussel['ParseVars']($phpMussel['lang'] + $phpMussel['FE'], $phpMussel['FE']['Template']); - -} - -/** Updates. */ -elseif ($phpMussel['QueryVars']['phpmussel-page'] === 'updates' && $phpMussel['FE']['Permissions'] === 1) { - - $phpMussel['FE']['UpdatesFormTarget'] = 'phpmussel-page=updates'; - $phpMussel['FE']['UpdatesFormTargetControls'] = ''; - $phpMussel['StateModified'] = false; - $phpMussel['FilterSwitch']( - ['hide-non-outdated', 'hide-unused'], - isset($_POST['FilterSelector']) ? $_POST['FilterSelector'] : '', - $phpMussel['StateModified'], - $phpMussel['FE']['UpdatesFormTarget'], - $phpMussel['FE']['UpdatesFormTargetControls'] - ); - if ($phpMussel['StateModified']) { - header('Location: ?' . $phpMussel['FE']['UpdatesFormTarget']); - die; - } - unset($phpMussel['StateModified']); - - /** Prepare components metadata working array. */ - $phpMussel['Components'] = ['Meta' => [], 'RemoteMeta' => []]; - - /** Fetch components lists. */ - $phpMussel['FetchComponentsLists']($phpMussel['Vault'], $phpMussel['Components']['Meta']); - - /** Cleanup. */ - unset($phpMussel['Components']['Files']); - - /** Indexes. */ - $phpMussel['FE']['Indexes'] = []; - - /** A form has been submitted. */ - if ($phpMussel['FE']['FormTarget'] === 'updates' && !empty($_POST['do'])) { - - /** Update a component. */ - if ($_POST['do'] === 'update-component' && !empty($_POST['ID'])) { - $phpMussel['Components']['Target'] = $_POST['ID']; - $phpMussel['Arrayify']($phpMussel['Components']['Target']); - $phpMussel['FileData'] = []; - $phpMussel['Annotations'] = []; - foreach ($phpMussel['Components']['Target'] as $phpMussel['Components']['ThisTarget']) { - if ( - !isset($phpMussel['Components']['Meta'][$phpMussel['Components']['ThisTarget']]['Remote']) || - !isset($phpMussel['Components']['Meta'][$phpMussel['Components']['ThisTarget']]['Reannotate']) - ) { - continue; - } - $phpMussel['Components']['BytesAdded'] = 0; - $phpMussel['Components']['BytesRemoved'] = 0; - $phpMussel['Components']['TimeRequired'] = microtime(true); - $phpMussel['Components']['RemoteMeta'] = []; - $phpMussel['Components']['Meta'][$phpMussel['Components']['ThisTarget']]['RemoteData'] = $phpMussel['FECacheGet']( - $phpMussel['FE']['Cache'], - $phpMussel['Components']['Meta'][$phpMussel['Components']['ThisTarget']]['Remote'] - ); - if (!$phpMussel['Components']['Meta'][$phpMussel['Components']['ThisTarget']]['RemoteData']) { - $phpMussel['Components']['Meta'][$phpMussel['Components']['ThisTarget']]['RemoteData'] = $phpMussel['Request']( - $phpMussel['Components']['Meta'][$phpMussel['Components']['ThisTarget']]['Remote'] - ); - if ( - strtolower(substr($phpMussel['Components']['Meta'][$phpMussel['Components']['ThisTarget']]['Remote'], -2)) === 'gz' && - substr($phpMussel['Components']['Meta'][$phpMussel['Components']['ThisTarget']]['RemoteData'], 0, 2) === "\x1f\x8b" - ) { - $phpMussel['Components']['Meta'][$phpMussel['Components']['ThisTarget']]['RemoteData'] = gzdecode( - $phpMussel['Components']['Meta'][$phpMussel['Components']['ThisTarget']]['RemoteData'] - ); - } - if (empty($phpMussel['Components']['Meta'][$phpMussel['Components']['ThisTarget']]['RemoteData'])) { - $phpMussel['Components']['Meta'][$phpMussel['Components']['ThisTarget']]['RemoteData'] = '-'; - } - $phpMussel['FECacheAdd']( - $phpMussel['FE']['Cache'], - $phpMussel['FE']['Rebuild'], - $phpMussel['Components']['Meta'][$phpMussel['Components']['ThisTarget']]['Remote'], - $phpMussel['Components']['Meta'][$phpMussel['Components']['ThisTarget']]['RemoteData'], - $phpMussel['Time'] + 3600 - ); - } - $phpMussel['UpdateFailed'] = false; - if ( - substr($phpMussel['Components']['Meta'][$phpMussel['Components']['ThisTarget']]['RemoteData'], 0, 4) === "---\n" && - ($phpMussel['Components']['EoYAML'] = strpos( - $phpMussel['Components']['Meta'][$phpMussel['Components']['ThisTarget']]['RemoteData'], "\n\n" - )) !== false && - $phpMussel['YAML']( - substr($phpMussel['Components']['Meta'][$phpMussel['Components']['ThisTarget']]['RemoteData'], 4, $phpMussel['Components']['EoYAML'] - 4), - $phpMussel['Components']['RemoteMeta'] - ) && - !empty($phpMussel['Components']['RemoteMeta'][$phpMussel['Components']['ThisTarget']]['Minimum Required']) && - !$phpMussel['VersionCompare']( - $phpMussel['ScriptVersion'], - $phpMussel['Components']['RemoteMeta'][$phpMussel['Components']['ThisTarget']]['Minimum Required'] - ) && - ( - empty($phpMussel['Components']['RemoteMeta'][$phpMussel['Components']['ThisTarget']]['Minimum Required PHP']) || - !$phpMussel['VersionCompare'](PHP_VERSION, $phpMussel['Components']['RemoteMeta'][$phpMussel['Components']['ThisTarget']]['Minimum Required PHP']) - ) && - !empty($phpMussel['Components']['RemoteMeta'][$phpMussel['Components']['ThisTarget']]['Files']['From']) && - !empty($phpMussel['Components']['RemoteMeta'][$phpMussel['Components']['ThisTarget']]['Files']['To']) && - !empty($phpMussel['Components']['RemoteMeta'][$phpMussel['Components']['ThisTarget']]['Reannotate']) && - $phpMussel['Traverse']($phpMussel['Components']['RemoteMeta'][$phpMussel['Components']['ThisTarget']]['Reannotate']) && - ($phpMussel['ThisReannotate'] = $phpMussel['Components']['RemoteMeta'][$phpMussel['Components']['ThisTarget']]['Reannotate']) && - file_exists($phpMussel['Vault'] . $phpMussel['ThisReannotate']) && - (( - !empty($phpMussel['FileData'][$phpMussel['ThisReannotate']]) && - $phpMussel['Components']['OldMeta'] = $phpMussel['FileData'][$phpMussel['ThisReannotate']] - ) || ( - $phpMussel['FileData'][$phpMussel['ThisReannotate']] = $phpMussel['Components']['OldMeta'] = $phpMussel['ReadFile']( - $phpMussel['Vault'] . $phpMussel['ThisReannotate'] - ) - )) && - preg_match( - "\x01(\n" . preg_quote($phpMussel['Components']['ThisTarget']) . ":?)(\n [^\n]*)*\n\x01i", - $phpMussel['Components']['OldMeta'], - $phpMussel['Components']['OldMetaMatches'] - ) && - ($phpMussel['Components']['OldMetaMatches'] = $phpMussel['Components']['OldMetaMatches'][0]) && - ($phpMussel['Components']['NewMeta'] = $phpMussel['Components']['Meta'][$phpMussel['Components']['ThisTarget']]['RemoteData']) && - preg_match( - "\x01(\n" . preg_quote($phpMussel['Components']['ThisTarget']) . ":?)(\n [^\n]*)*\n\x01i", - $phpMussel['Components']['NewMeta'], - $phpMussel['Components']['NewMetaMatches'] - ) && - ($phpMussel['Components']['NewMetaMatches'] = $phpMussel['Components']['NewMetaMatches'][0]) - ) { - $phpMussel['Arrayify']($phpMussel['Components']['RemoteMeta'][$phpMussel['Components']['ThisTarget']]['Files']); - $phpMussel['Arrayify']($phpMussel['Components']['RemoteMeta'][$phpMussel['Components']['ThisTarget']]['Files']['From']); - $phpMussel['Arrayify']($phpMussel['Components']['RemoteMeta'][$phpMussel['Components']['ThisTarget']]['Files']['To']); - if (!empty($phpMussel['Components']['RemoteMeta'][$phpMussel['Components']['ThisTarget']]['Files']['Checksum'])) { - $phpMussel['Arrayify']($phpMussel['Components']['RemoteMeta'][$phpMussel['Components']['ThisTarget']]['Files']['Checksum']); - } - $phpMussel['Components']['NewMeta'] = str_replace( - $phpMussel['Components']['OldMetaMatches'], - $phpMussel['Components']['NewMetaMatches'], - $phpMussel['Components']['OldMeta'] - ); - $phpMussel['Count'] = count($phpMussel['Components']['RemoteMeta'][$phpMussel['Components']['ThisTarget']]['Files']['From']); - $phpMussel['RemoteFiles'] = []; - $phpMussel['IgnoredFiles'] = []; - $phpMussel['Rollback'] = false; - /** Write new and updated files and directories. */ - for ($phpMussel['Iterate'] = 0; $phpMussel['Iterate'] < $phpMussel['Count']; $phpMussel['Iterate']++) { - if (empty($phpMussel['Components']['RemoteMeta'][$phpMussel['Components']['ThisTarget']]['Files']['To'][$phpMussel['Iterate']])) { - continue; - } - $phpMussel['ThisFileName'] = $phpMussel['Components']['RemoteMeta'][$phpMussel['Components']['ThisTarget']]['Files']['To'][$phpMussel['Iterate']]; - /** Rolls back to previous version or uninstalls if an update/install fails. */ - if ($phpMussel['Rollback']) { - if ( - isset($phpMussel['RemoteFiles'][$phpMussel['ThisFileName']]) && - !isset($phpMussel['IgnoredFiles'][$phpMussel['ThisFileName']]) && - is_readable($phpMussel['Vault'] . $phpMussel['ThisFileName']) - ) { - $phpMussel['Components']['BytesAdded'] -= filesize($phpMussel['Vault'] . $phpMussel['ThisFileName']); - unlink($phpMussel['Vault'] . $phpMussel['ThisFileName']); - if (is_readable($phpMussel['Vault'] . $phpMussel['ThisFileName'] . '.rollback')) { - $phpMussel['Components']['BytesRemoved'] -= filesize($phpMussel['Vault'] . $phpMussel['ThisFileName'] . '.rollback'); - rename($phpMussel['Vault'] . $phpMussel['ThisFileName'] . '.rollback', $phpMussel['Vault'] . $phpMussel['ThisFileName']); - } - } - continue; - } - if ( - !empty($phpMussel['Components']['RemoteMeta'][$phpMussel['Components']['ThisTarget']]['Files']['Checksum'][$phpMussel['Iterate']]) && - !empty($phpMussel['Components']['Meta'][$phpMussel['Components']['ThisTarget']]['Files']['Checksum'][$phpMussel['Iterate']]) && ( - $phpMussel['Components']['RemoteMeta'][$phpMussel['Components']['ThisTarget']]['Files']['Checksum'][$phpMussel['Iterate']] === - $phpMussel['Components']['Meta'][$phpMussel['Components']['ThisTarget']]['Files']['Checksum'][$phpMussel['Iterate']] - ) - ) { - $phpMussel['IgnoredFiles'][$phpMussel['ThisFileName']] = true; - continue; - } - if ( - empty($phpMussel['Components']['RemoteMeta'][$phpMussel['Components']['ThisTarget']]['Files']['From'][$phpMussel['Iterate']]) || - !($phpMussel['ThisFile'] = $phpMussel['Request']( - $phpMussel['Components']['RemoteMeta'][$phpMussel['Components']['ThisTarget']]['Files']['From'][$phpMussel['Iterate']] - )) - ) { - $phpMussel['Iterate'] = 0; - $phpMussel['Rollback'] = true; - continue; - } - if ( - strtolower(substr( - $phpMussel['Components']['RemoteMeta'][$phpMussel['Components']['ThisTarget']]['Files']['From'][$phpMussel['Iterate']], -2 - )) === 'gz' && - strtolower(substr($phpMussel['ThisFileName'], -2)) !== 'gz' && - substr($phpMussel['ThisFile'], 0, 2) === "\x1f\x8b" - ) { - $phpMussel['ThisFile'] = gzdecode($phpMussel['ThisFile']); - } - if ( - !empty($phpMussel['Components']['RemoteMeta'][$phpMussel['Components']['ThisTarget']]['Files']['Checksum'][$phpMussel['Iterate']]) && - $phpMussel['Components']['RemoteMeta'][$phpMussel['Components']['ThisTarget']]['Files']['Checksum'][$phpMussel['Iterate']] !== - md5($phpMussel['ThisFile']) . ':' . strlen($phpMussel['ThisFile']) - ) { - $phpMussel['FE']['state_msg'] .= - '' . $phpMussel['Components']['ThisTarget'] . ' – ' . - '' . $phpMussel['ThisFileName'] . ' – ' . - $phpMussel['lang']['response_checksum_error'] . '
        '; - if (!empty($phpMussel['Components']['Meta'][$phpMussel['Components']['ThisTarget']]['On Checksum Error'])) { - $phpMussel['FE_Executor']($phpMussel['Components']['Meta'][$phpMussel['Components']['ThisTarget']]['On Checksum Error']); - } - $phpMussel['Iterate'] = 0; - $phpMussel['Rollback'] = true; - continue; - } - $phpMussel['ThisName'] = $phpMussel['ThisFileName']; - $phpMussel['ThisPath'] = $phpMussel['Vault']; - while (strpos($phpMussel['ThisName'], '/') !== false || strpos($phpMussel['ThisName'], "\\") !== false) { - $phpMussel['Separator'] = (strpos($phpMussel['ThisName'], '/') !== false) ? '/' : "\\"; - $phpMussel['ThisDir'] = substr($phpMussel['ThisName'], 0, strpos($phpMussel['ThisName'], $phpMussel['Separator'])); - $phpMussel['ThisPath'] .= $phpMussel['ThisDir'] . '/'; - $phpMussel['ThisName'] = substr($phpMussel['ThisName'], strlen($phpMussel['ThisDir']) + 1); - if (!file_exists($phpMussel['ThisPath']) || !is_dir($phpMussel['ThisPath'])) { - mkdir($phpMussel['ThisPath']); - } - } - if (is_readable($phpMussel['Vault'] . $phpMussel['ThisFileName'])) { - $phpMussel['Components']['BytesRemoved'] += filesize($phpMussel['Vault'] . $phpMussel['ThisFileName']); - if (file_exists($phpMussel['Vault'] . $phpMussel['ThisFileName'] . '.rollback')) { - unlink($phpMussel['Vault'] . $phpMussel['ThisFileName'] . '.rollback'); - } - rename($phpMussel['Vault'] . $phpMussel['ThisFileName'], $phpMussel['Vault'] . $phpMussel['ThisFileName'] . '.rollback'); - } - $phpMussel['Components']['BytesAdded'] += strlen($phpMussel['ThisFile']); - $phpMussel['Handle'] = fopen($phpMussel['Vault'] . $phpMussel['ThisFileName'], 'w'); - $phpMussel['RemoteFiles'][$phpMussel['ThisFileName']] = fwrite($phpMussel['Handle'], $phpMussel['ThisFile']); - $phpMussel['RemoteFiles'][$phpMussel['ThisFileName']] = ($phpMussel['RemoteFiles'][$phpMussel['ThisFileName']] !== false); - fclose($phpMussel['Handle']); - $phpMussel['ThisFile'] = ''; - } - if ($phpMussel['Rollback']) { - /** Prune unwanted empty directories (update/install failure+rollback). */ - if ( - !empty($phpMussel['Components']['RemoteMeta'][$phpMussel['Components']['ThisTarget']]['Files']['To']) && - is_array($phpMussel['Components']['RemoteMeta'][$phpMussel['Components']['ThisTarget']]['Files']['To']) - ) { - array_walk($phpMussel['Components']['RemoteMeta'][$phpMussel['Components']['ThisTarget']]['Files']['To'], function ($ThisFile) use (&$phpMussel) { - if (!empty($ThisFile) && $phpMussel['Traverse']($ThisFile)) { - $phpMussel['DeleteDirectory']($ThisFile); - } - }); - } - $phpMussel['UpdateFailed'] = true; - } else { - /** Prune unwanted files and directories (update/install success). */ - if (!empty($phpMussel['Components']['Meta'][$phpMussel['Components']['ThisTarget']]['Files']['To'])) { - $phpMussel['ThisArr'] = $phpMussel['Components']['Meta'][$phpMussel['Components']['ThisTarget']]['Files']['To']; - $phpMussel['Arrayify']($phpMussel['ThisArr']); - array_walk($phpMussel['ThisArr'], function ($ThisFile) use (&$phpMussel) { - if (!empty($ThisFile) && $phpMussel['Traverse']($ThisFile)) { - if (file_exists($phpMussel['Vault'] . $ThisFile . '.rollback')) { - unlink($phpMussel['Vault'] . $ThisFile . '.rollback'); - } - if ( - !isset($phpMussel['RemoteFiles'][$ThisFile]) && - !isset($phpMussel['IgnoredFiles'][$ThisFile]) && - file_exists($phpMussel['Vault'] . $ThisFile) - ) { - $phpMussel['Components']['BytesRemoved'] += filesize($phpMussel['Vault'] . $ThisFile); - unlink($phpMussel['Vault'] . $ThisFile); - $phpMussel['DeleteDirectory']($ThisFile); - } - } - }); - unset($phpMussel['ThisArr']); - } - /** Assign updated component annotation. */ - $phpMussel['FileData'][$phpMussel['ThisReannotate']] = $phpMussel['Components']['NewMeta']; - if (!isset($phpMussel['Annotations'][$phpMussel['ThisReannotate']])) { - $phpMussel['Annotations'][$phpMussel['ThisReannotate']] = $phpMussel['Components']['Meta'][$phpMussel['Components']['ThisTarget']]['RemoteData']; - } - $phpMussel['FE']['state_msg'] .= '' . $phpMussel['Components']['ThisTarget'] . ' – '; - if ( - empty($phpMussel['Components']['Meta'][$phpMussel['Components']['ThisTarget']]['Version']) && - empty($phpMussel['Components']['Meta'][$phpMussel['Components']['ThisTarget']]['Files']) - ) { - $phpMussel['FE']['state_msg'] .= $phpMussel['lang']['response_component_successfully_installed']; - if (!empty($phpMussel['Components']['Meta'][$phpMussel['Components']['ThisTarget']]['When Install Succeeds'])) { - $phpMussel['FE_Executor']($phpMussel['Components']['Meta'][$phpMussel['Components']['ThisTarget']]['When Install Succeeds']); - } - } else { - $phpMussel['FE']['state_msg'] .= $phpMussel['lang']['response_component_successfully_updated']; - if (!empty($phpMussel['Components']['Meta'][$phpMussel['Components']['ThisTarget']]['When Update Succeeds'])) { - $phpMussel['FE_Executor']($phpMussel['Components']['Meta'][$phpMussel['Components']['ThisTarget']]['When Update Succeeds']); - } - } - $phpMussel['Components']['Meta'][$phpMussel['Components']['ThisTarget']] = - $phpMussel['Components']['RemoteMeta'][$phpMussel['Components']['ThisTarget']]; - } - } else { - $phpMussel['UpdateFailed'] = true; - } - if ($phpMussel['UpdateFailed']) { - $phpMussel['FE']['state_msg'] .= '' . $phpMussel['Components']['ThisTarget'] . ' – '; - if ( - empty($phpMussel['Components']['Meta'][$phpMussel['Components']['ThisTarget']]['Version']) && - empty($phpMussel['Components']['Meta'][$phpMussel['Components']['ThisTarget']]['Files']) - ) { - $phpMussel['FE']['state_msg'] .= $phpMussel['lang']['response_failed_to_install']; - if (!empty($phpMussel['Components']['Meta'][$phpMussel['Components']['ThisTarget']]['When Install Fails'])) { - $phpMussel['FE_Executor']($phpMussel['Components']['Meta'][$phpMussel['Components']['ThisTarget']]['When Install Fails']); - } - } else { - $phpMussel['FE']['state_msg'] .= $phpMussel['lang']['response_failed_to_update']; - if (!empty($phpMussel['Components']['Meta'][$phpMussel['Components']['ThisTarget']]['When Update Fails'])) { - $phpMussel['FE_Executor']($phpMussel['Components']['Meta'][$phpMussel['Components']['ThisTarget']]['When Update Fails']); - } - } - } - $phpMussel['FormatFilesize']($phpMussel['Components']['BytesAdded']); - $phpMussel['FormatFilesize']($phpMussel['Components']['BytesRemoved']); - $phpMussel['FE']['state_msg'] .= sprintf( - ' +%s | -%s | %s
        ', - $phpMussel['Components']['BytesAdded'], - $phpMussel['Components']['BytesRemoved'], - $phpMussel['Number_L10N'](microtime(true) - $phpMussel['Components']['TimeRequired'], 3) - ); - } - /** Update annotations. */ - foreach ($phpMussel['FileData'] as $phpMussel['ThisKey'] => $phpMussel['ThisFile']) { - /** Remove superfluous metadata. */ - if (!empty($phpMussel['Annotations'][$phpMussel['ThisKey']])) { - $phpMussel['ThisFile'] = $phpMussel['Congruency']($phpMussel['ThisFile'], $phpMussel['Annotations'][$phpMussel['ThisKey']]); - } - $phpMussel['Handle'] = fopen($phpMussel['Vault'] . $phpMussel['ThisKey'], 'w'); - fwrite($phpMussel['Handle'], $phpMussel['ThisFile']); - fclose($phpMussel['Handle']); - } - /** Cleanup. */ - unset( - $phpMussel['ThisPath'], - $phpMussel['ThisName'], - $phpMussel['ThisKey'], - $phpMussel['ThisFile'], - $phpMussel['Annotations'], - $phpMussel['FileData'], - $phpMussel['ThisFileName'], - $phpMussel['Rollback'], - $phpMussel['IgnoredFiles'], - $phpMussel['RemoteFiles'], - $phpMussel['ThisReannotate'] - ); - } - - /** Uninstall a component. */ - if ($_POST['do'] === 'uninstall-component' && !empty($_POST['ID'])) { - $phpMussel['ComponentFunctionUpdatePrep'](); - $phpMussel['Components']['BytesRemoved'] = 0; - $phpMussel['Components']['TimeRequired'] = microtime(true); - if ( - empty($phpMussel['Components']['Meta'][$_POST['ID']]['Files']['InUse']) && - !empty($phpMussel['Components']['Meta'][$_POST['ID']]['Files']['To']) && - ($_POST['ID'] !== 'l10n/' . $phpMussel['Config']['general']['lang']) && - ($_POST['ID'] !== 'theme/' . $phpMussel['Config']['template_data']['theme']) && - ($_POST['ID'] !== 'phpMussel') && - !empty($phpMussel['Components']['Meta'][$_POST['ID']]['Reannotate']) && - !empty($phpMussel['Components']['Meta'][$_POST['ID']]['Uninstallable']) && - ($phpMussel['Components']['OldMeta'] = $phpMussel['ReadFile']( - $phpMussel['Vault'] . $phpMussel['Components']['Meta'][$_POST['ID']]['Reannotate'] - )) && - preg_match( - "\x01(\n" . preg_quote($_POST['ID']) . ":?)(\n [^\n]*)*\n\x01i", - $phpMussel['Components']['OldMeta'], - $phpMussel['Components']['OldMetaMatches'] - ) && - ($phpMussel['Components']['OldMetaMatches'] = $phpMussel['Components']['OldMetaMatches'][0]) - ) { - $phpMussel['Components']['NewMeta'] = str_replace( - $phpMussel['Components']['OldMetaMatches'], - preg_replace( - ["/\n Files:(\n [^\n]*)*\n/i", "/\n Version: [^\n]*\n/i"], - "\n", - $phpMussel['Components']['OldMetaMatches'] - ), - $phpMussel['Components']['OldMeta'] - ); - array_walk($phpMussel['Components']['Meta'][$_POST['ID']]['Files']['To'], function ($ThisFile) use (&$phpMussel) { - if (!empty($ThisFile) && $phpMussel['Traverse']($ThisFile)) { - if (file_exists($phpMussel['Vault'] . $ThisFile)) { - $phpMussel['Components']['BytesRemoved'] += filesize($phpMussel['Vault'] . $ThisFile); - unlink($phpMussel['Vault'] . $ThisFile); - } - if (file_exists($phpMussel['Vault'] . $ThisFile . '.rollback')) { - $phpMussel['Components']['BytesRemoved'] += filesize($phpMussel['Vault'] . $ThisFile . '.rollback'); - unlink($phpMussel['Vault'] . $ThisFile . '.rollback'); - } - $phpMussel['DeleteDirectory']($ThisFile); - } - }); - $phpMussel['Handle'] = - fopen($phpMussel['Vault'] . $phpMussel['Components']['Meta'][$_POST['ID']]['Reannotate'], 'w'); - fwrite($phpMussel['Handle'], $phpMussel['Components']['NewMeta']); - fclose($phpMussel['Handle']); - $phpMussel['Components']['Meta'][$_POST['ID']]['Version'] = false; - $phpMussel['Components']['Meta'][$_POST['ID']]['Files'] = false; - $phpMussel['FE']['state_msg'] = $phpMussel['lang']['response_component_successfully_uninstalled']; - if (!empty($phpMussel['Components']['Meta'][$_POST['ID']]['When Uninstall Succeeds'])) { - $phpMussel['FE_Executor']($phpMussel['Components']['Meta'][$_POST['ID']]['When Uninstall Succeeds']); - } - } else { - $phpMussel['FE']['state_msg'] = $phpMussel['lang']['response_component_uninstall_error']; - if (!empty($phpMussel['Components']['Meta'][$_POST['ID']]['When Uninstall Fails'])) { - $phpMussel['FE_Executor']($phpMussel['Components']['Meta'][$_POST['ID']]['When Uninstall Fails']); - } - } - $phpMussel['FormatFilesize']($phpMussel['Components']['BytesRemoved']); - $phpMussel['FE']['state_msg'] .= sprintf( - ' -%s | %s', - $phpMussel['Components']['BytesRemoved'], - $phpMussel['Number_L10N'](microtime(true) - $phpMussel['Components']['TimeRequired'], 3) - ); - } - - /** Activate a component. */ - if ($_POST['do'] === 'activate-component' && !empty($_POST['ID'])) { - $phpMussel['Activation'] = [ - 'Config' => $phpMussel['ReadFile']($phpMussel['Vault'] . 'config.ini'), - 'Active' => $phpMussel['Config']['signatures']['Active'], - 'Modified' => false - ]; - $phpMussel['ComponentFunctionUpdatePrep'](); - if ( - empty($phpMussel['Components']['Meta'][$_POST['ID']]['Files']['InUse']) && - !empty($phpMussel['Components']['Meta'][$_POST['ID']]['Files']['To']) - ) { - $phpMussel['Activation']['Active'] = array_unique(array_filter( - explode(',', $phpMussel['Activation']['Active']), - function ($Component) use (&$phpMussel) { - return ($Component && file_exists($phpMussel['sigPath'] . $Component)); - } - )); - foreach ($phpMussel['Components']['Meta'][$_POST['ID']]['Files']['To'] as $phpMussel['Activation']['ThisFile']) { - if ( - !empty($phpMussel['Activation']['ThisFile']) && - file_exists($phpMussel['Vault'] . $phpMussel['Activation']['ThisFile']) && - substr($phpMussel['Activation']['ThisFile'], 0, 11) === 'signatures/' && - $phpMussel['Traverse']($phpMussel['Activation']['ThisFile']) - ) { - $phpMussel['Activation']['Active'][] = substr($phpMussel['Activation']['ThisFile'], 11); - } - } - if (count($phpMussel['Activation']['Active'])) { - sort($phpMussel['Activation']['Active']); - } - $phpMussel['Activation']['Active'] = implode(',', $phpMussel['Activation']['Active']); - if ($phpMussel['Activation']['Active'] !== $phpMussel['Config']['signatures']['Active']) { - $phpMussel['Activation']['Modified'] = true; - } - } - if (!$phpMussel['Activation']['Modified'] || !$phpMussel['Activation']['Config']) { - $phpMussel['FE']['state_msg'] = $phpMussel['lang']['response_activation_failed']; - if (!empty($phpMussel['Components']['Meta'][$_POST['ID']]['When Activation Fails'])) { - $phpMussel['FE_Executor']($phpMussel['Components']['Meta'][$_POST['ID']]['When Activation Fails']); - } - } else { - $phpMussel['Activation']['Config'] = str_replace( - "\r\nActive='" . $phpMussel['Config']['signatures']['Active'] . "'\r\n", - "\r\nActive='" . $phpMussel['Activation']['Active'] . "'\r\n", - $phpMussel['Activation']['Config'] - ); - $phpMussel['Config']['signatures']['Active'] = $phpMussel['Activation']['Active']; - $phpMussel['Handle'] = fopen($phpMussel['Vault'] . 'config.ini', 'w'); - fwrite($phpMussel['Handle'], $phpMussel['Activation']['Config']); - fclose($phpMussel['Handle']); - $phpMussel['FE']['state_msg'] = $phpMussel['lang']['response_activated']; - if (!empty($phpMussel['Components']['Meta'][$_POST['ID']]['When Activation Succeeds'])) { - $phpMussel['FE_Executor']($phpMussel['Components']['Meta'][$_POST['ID']]['When Activation Succeeds']); - } - } - unset($phpMussel['Activation']); - } - - /** Deactivate a component. */ - if ($_POST['do'] === 'deactivate-component' && !empty($_POST['ID'])) { - $phpMussel['Deactivation'] = [ - 'Config' => $phpMussel['ReadFile']($phpMussel['Vault'] . 'config.ini'), - 'Active' => $phpMussel['Config']['signatures']['Active'], - 'Modified' => false - ]; - $phpMussel['ComponentFunctionUpdatePrep'](); - if ( - !empty($phpMussel['Components']['Meta'][$_POST['ID']]['Files']['InUse']) && - !empty($phpMussel['Components']['Meta'][$_POST['ID']]['Files']['To']) - ) { - $phpMussel['Deactivation']['Active'] = array_unique(array_filter( - explode(',', $phpMussel['Deactivation']['Active']), - function ($Component) use (&$phpMussel) { - return ($Component && file_exists($phpMussel['sigPath'] . $Component)); - } - )); - if (count($phpMussel['Deactivation']['Active'])) { - sort($phpMussel['Deactivation']['Active']); - } - $phpMussel['Deactivation']['Active'] = ',' . implode(',', $phpMussel['Deactivation']['Active']) . ','; - foreach ($phpMussel['Components']['Meta'][$_POST['ID']]['Files']['To'] as $phpMussel['Deactivation']['ThisFile']) { - if (substr($phpMussel['Deactivation']['ThisFile'], 0, 11) === 'signatures/') { - $phpMussel['Deactivation']['Active'] = - str_replace(',' . substr($phpMussel['Deactivation']['ThisFile'], 11) . ',', ',', $phpMussel['Deactivation']['Active']); - } - } - $phpMussel['Deactivation']['Active'] = substr($phpMussel['Deactivation']['Active'], 1, -1); - if ($phpMussel['Deactivation']['Active'] !== $phpMussel['Config']['signatures']['Active']) { - $phpMussel['Deactivation']['Modified'] = true; - } - } - if (!$phpMussel['Deactivation']['Modified'] || !$phpMussel['Deactivation']['Config']) { - $phpMussel['FE']['state_msg'] = $phpMussel['lang']['response_deactivation_failed']; - if (!empty($phpMussel['Components']['Meta'][$_POST['ID']]['When Deactivation Fails'])) { - $phpMussel['FE_Executor']($phpMussel['Components']['Meta'][$_POST['ID']]['When Deactivation Fails']); - } - } else { - $phpMussel['Deactivation']['Config'] = str_replace( - "\r\nActive='" . $phpMussel['Config']['signatures']['Active'] . "'\r\n", - "\r\nActive='" . $phpMussel['Deactivation']['Active'] . "'\r\n", - $phpMussel['Deactivation']['Config'] - ); - $phpMussel['Config']['signatures']['Active'] = $phpMussel['Deactivation']['Active']; - $phpMussel['Handle'] = fopen($phpMussel['Vault'] . 'config.ini', 'w'); - fwrite($phpMussel['Handle'], $phpMussel['Deactivation']['Config']); - fclose($phpMussel['Handle']); - $phpMussel['FE']['state_msg'] = $phpMussel['lang']['response_deactivated']; - if (!empty($phpMussel['Components']['Meta'][$_POST['ID']]['When Deactivation Succeeds'])) { - $phpMussel['FE_Executor']($phpMussel['Components']['Meta'][$_POST['ID']]['When Deactivation Succeeds']); - } - } - unset($phpMussel['Deactivation']); - } - - } - - /** Set page title. */ - $phpMussel['FE']['FE_Title'] = $phpMussel['lang']['title_updates']; - - /** Prepare page tooltip/description. */ - $phpMussel['FE']['FE_Tip'] = $phpMussel['ParseVars']( - ['username' => $phpMussel['FE']['UserRaw']], - $phpMussel['lang']['tip_updates'] - ); - - $phpMussel['FE']['bNav'] = $phpMussel['lang']['bNav_home_logout']; - - $phpMussel['FE']['UpdatesRow'] = $phpMussel['ReadFile']($phpMussel['GetAssetPath']('_updates_row.html')); - - $phpMussel['Components'] = [ - 'Meta' => $phpMussel['Components']['Meta'], - 'RemoteMeta' => $phpMussel['Components']['RemoteMeta'], - 'Remotes' => [], - 'Dependencies' => [], - 'Outdated' => [], - 'Out' => [] - ]; - - /** Prepare installed component metadata and options for display. */ - foreach ($phpMussel['Components']['Meta'] as $phpMussel['Components']['Key'] => &$phpMussel['Components']['ThisComponent']) { - if (empty($phpMussel['Components']['ThisComponent']['Name']) && empty($phpMussel['lang']['Name: ' . $phpMussel['Components']['Key']])) { - $phpMussel['Components']['ThisComponent'] = ''; - continue; - } - $phpMussel['PrepareName']($phpMussel['Components']['ThisComponent'], $phpMussel['Components']['Key']); - $phpMussel['PrepareExtendedDescription']($phpMussel['Components']['ThisComponent'], $phpMussel['Components']['Key']); - $phpMussel['Components']['ThisComponent']['ID'] = $phpMussel['Components']['Key']; - $phpMussel['Components']['ThisComponent']['Options'] = ''; - $phpMussel['Components']['ThisComponent']['StatusOptions'] = ''; - $phpMussel['Components']['ThisComponent']['StatClass'] = ''; - if (empty($phpMussel['Components']['ThisComponent']['Version'])) { - if (empty($phpMussel['Components']['ThisComponent']['Files']['To'])) { - $phpMussel['Components']['ThisComponent']['RowClass'] = 'h2'; - $phpMussel['Components']['ThisComponent']['Version'] = $phpMussel['lang']['response_updates_not_installed']; - $phpMussel['Components']['ThisComponent']['StatClass'] = 'txtRd'; - $phpMussel['Components']['ThisComponent']['StatusOptions'] = $phpMussel['lang']['response_updates_not_installed']; - } else { - $phpMussel['Components']['ThisComponent']['Version'] = $phpMussel['lang']['response_updates_unable_to_determine']; - $phpMussel['Components']['ThisComponent']['StatClass'] = 's'; - } - } - if (empty($phpMussel['Components']['ThisComponent']['Remote'])) { - $phpMussel['Components']['ThisComponent']['RemoteData'] = $phpMussel['lang']['response_updates_unable_to_determine']; - if (!$phpMussel['Components']['ThisComponent']['StatClass']) { - $phpMussel['Components']['ThisComponent']['StatClass'] = 's'; - } - } else { - $phpMussel['Arrayify']($phpMussel['Components']['ThisComponent']['Files']); - $phpMussel['Arrayify']($phpMussel['Components']['ThisComponent']['Files']['To']); - $phpMussel['Arrayify']($phpMussel['Components']['ThisComponent']['Files']['From']); - if (isset($phpMussel['Components']['ThisComponent']['Files']['Checksum'])) { - $phpMussel['Arrayify']($phpMussel['Components']['ThisComponent']['Files']['Checksum']); - } - $phpMussel['FetchRemote'](); - if ( - substr($phpMussel['Components']['ThisComponent']['RemoteData'], 0, 4) === "---\n" && - ($phpMussel['Components']['EoYAML'] = strpos( - $phpMussel['Components']['ThisComponent']['RemoteData'], "\n\n" - )) !== false - ) { - if (!isset($phpMussel['Components']['RemoteMeta'][$phpMussel['Components']['Key']])) { - $phpMussel['YAML']( - substr($phpMussel['Components']['ThisComponent']['RemoteData'], 4, $phpMussel['Components']['EoYAML'] - 4), - $phpMussel['Components']['RemoteMeta'] - ); - } - if (isset($phpMussel['Components']['RemoteMeta'][$phpMussel['Components']['Key']]['Version'])) { - $phpMussel['Components']['ThisComponent']['Latest'] = - $phpMussel['Components']['RemoteMeta'][$phpMussel['Components']['Key']]['Version']; - } else { - if (!$phpMussel['Components']['ThisComponent']['StatClass']) { - $phpMussel['Components']['ThisComponent']['StatClass'] = 's'; - } - } - } elseif (!$phpMussel['Components']['ThisComponent']['StatClass']) { - $phpMussel['Components']['ThisComponent']['StatClass'] = 's'; - } - if (!empty($phpMussel['Components']['RemoteMeta'][$phpMussel['Components']['Key']]['Name'])) { - $phpMussel['Components']['ThisComponent']['Name'] = - $phpMussel['Components']['RemoteMeta'][$phpMussel['Components']['Key']]['Name']; - $phpMussel['PrepareName']($phpMussel['Components']['ThisComponent'], $phpMussel['Components']['Key']); - } - if (!empty($phpMussel['Components']['RemoteMeta'][$phpMussel['Components']['Key']]['Extended Description'])) { - $phpMussel['Components']['ThisComponent']['Extended Description'] = - $phpMussel['Components']['RemoteMeta'][$phpMussel['Components']['Key']]['Extended Description']; - $phpMussel['PrepareExtendedDescription']($phpMussel['Components']['ThisComponent'], $phpMussel['Components']['Key']); - } - if (!$phpMussel['Components']['ThisComponent']['StatClass']) { - if ( - !empty($phpMussel['Components']['ThisComponent']['Latest']) && - $phpMussel['VersionCompare']( - $phpMussel['Components']['ThisComponent']['Version'], - $phpMussel['Components']['ThisComponent']['Latest'] - ) - ) { - $phpMussel['Components']['ThisComponent']['Outdated'] = true; - if ( - $phpMussel['Components']['Key'] === 'l10n/' . $phpMussel['Config']['general']['lang'] || - $phpMussel['Components']['Key'] === 'theme/' . $phpMussel['Config']['template_data']['theme'] - ) { - $phpMussel['Components']['Dependencies'][] = $phpMussel['Components']['Key']; - } - $phpMussel['Components']['Outdated'][] = $phpMussel['Components']['Key']; - $phpMussel['Components']['ThisComponent']['RowClass'] = 'r'; - $phpMussel['Components']['ThisComponent']['StatClass'] = 'txtRd'; - if ( - empty($phpMussel['Components']['RemoteMeta'][$phpMussel['Components']['Key']]['Minimum Required']) || - $phpMussel['VersionCompare']( - $phpMussel['ScriptVersion'], - $phpMussel['Components']['RemoteMeta'][$phpMussel['Components']['Key']]['Minimum Required'] - ) - ) { - $phpMussel['Components']['ThisComponent']['StatusOptions'] = - $phpMussel['lang']['response_updates_outdated_manually']; - } elseif ( - !empty($phpMussel['Components']['RemoteMeta'][$phpMussel['Components']['Key']]['Minimum Required PHP']) && - $phpMussel['VersionCompare'](PHP_VERSION, $phpMussel['Components']['RemoteMeta'][$phpMussel['Components']['Key']]['Minimum Required PHP']) - ) { - $phpMussel['Components']['ThisComponent']['StatusOptions'] = $phpMussel['ParseVars']( - ['V' => $phpMussel['Components']['RemoteMeta'][$phpMussel['Components']['Key']]['Minimum Required PHP']], - $phpMussel['lang']['response_updates_outdated_php_version'] - ); - } else { - $phpMussel['Components']['ThisComponent']['StatusOptions'] = - $phpMussel['lang']['response_updates_outdated']; - $phpMussel['Components']['ThisComponent']['Options'] .= - ''; - } - } else { - $phpMussel['Components']['ThisComponent']['StatClass'] = 'txtGn'; - $phpMussel['Components']['ThisComponent']['StatusOptions'] = - $phpMussel['lang']['response_updates_already_up_to_date']; - } - } - if (!empty($phpMussel['Components']['ThisComponent']['Files']['To'])) { - $phpMussel['Activable'] = ( - !empty($phpMussel['Components']['ThisComponent']['Files']['To'][0]) && - substr($phpMussel['Components']['ThisComponent']['Files']['To'][0], 0, 11) === 'signatures/' - ); - if ( - ($phpMussel['Components']['Key'] === 'l10n/' . $phpMussel['Config']['general']['lang']) || - ($phpMussel['Components']['Key'] === 'theme/' . $phpMussel['Config']['template_data']['theme']) || - ($phpMussel['Components']['Key'] === 'phpMussel') || - $phpMussel['IsInUse']($phpMussel['Components']['ThisComponent']['Files']['To']) - ) { - $phpMussel['AppendToString']($phpMussel['Components']['ThisComponent']['StatusOptions'], '
        ', - '
        ' . $phpMussel['lang']['state_component_is_active'] . '
        ' - ); - if ($phpMussel['Activable']) { - $phpMussel['Components']['ThisComponent']['Options'] .= - ''; - } - } else { - if ($phpMussel['Activable']) { - $phpMussel['Components']['ThisComponent']['Options'] .= - ''; - } - if (!empty($phpMussel['Components']['ThisComponent']['Uninstallable'])) { - $phpMussel['Components']['ThisComponent']['Options'] .= - ''; - } - if (!empty($phpMussel['Components']['ThisComponent']['Provisional'])) { - $phpMussel['AppendToString']($phpMussel['Components']['ThisComponent']['StatusOptions'], '
        ', - '
        ' . $phpMussel['lang']['state_component_is_provisional'] . '
        ' - ); - } else { - $phpMussel['AppendToString']($phpMussel['Components']['ThisComponent']['StatusOptions'], '
        ', - '
        ' . $phpMussel['lang']['state_component_is_inactive'] . '
        ' - ); - } - } - } - } - if (empty($phpMussel['Components']['ThisComponent']['Latest'])) { - $phpMussel['Components']['ThisComponent']['Latest'] = $phpMussel['lang']['response_updates_unable_to_determine']; - } elseif ( - empty($phpMussel['Components']['ThisComponent']['Files']['To']) && - !empty($phpMussel['Components']['RemoteMeta'][$phpMussel['Components']['Key']]['Files']['To']) - ) { - if ( - empty($phpMussel['Components']['RemoteMeta'][$phpMussel['Components']['Key']]['Minimum Required PHP']) || - !$phpMussel['VersionCompare'](PHP_VERSION, $phpMussel['Components']['RemoteMeta'][$phpMussel['Components']['Key']]['Minimum Required PHP']) - ) { - $phpMussel['Components']['ThisComponent']['Options'] .= - ''; - } elseif ($phpMussel['Components']['ThisComponent']['StatusOptions'] == $phpMussel['lang']['response_updates_not_installed']) { - $phpMussel['Components']['ThisComponent']['StatusOptions'] = $phpMussel['ParseVars']( - ['V' => $phpMussel['Components']['RemoteMeta'][$phpMussel['Components']['Key']]['Minimum Required PHP']], - $phpMussel['lang']['response_updates_not_installed_php'] - ); - } - } - $phpMussel['Components']['ThisComponent']['VersionSize'] = 0; - if ( - !empty($phpMussel['Components']['ThisComponent']['Files']['Checksum']) && - is_array($phpMussel['Components']['ThisComponent']['Files']['Checksum']) - ) { - array_walk($phpMussel['Components']['ThisComponent']['Files']['Checksum'], function ($Checksum) use (&$phpMussel) { - if (!empty($Checksum) && ($Delimiter = strpos($Checksum, ':')) !== false) { - $phpMussel['Components']['ThisComponent']['VersionSize'] += - (int)substr($Checksum, $Delimiter + 1); - } - }); - } - if ($phpMussel['Components']['ThisComponent']['VersionSize'] > 0) { - $phpMussel['FormatFilesize']($phpMussel['Components']['ThisComponent']['VersionSize']); - $phpMussel['Components']['ThisComponent']['VersionSize'] = - '
        ' . $phpMussel['lang']['field_size'] . - $phpMussel['Components']['ThisComponent']['VersionSize']; - } else { - $phpMussel['Components']['ThisComponent']['VersionSize'] = ''; - } - $phpMussel['Components']['ThisComponent']['LatestSize'] = 0; - if ( - !empty($phpMussel['Components']['RemoteMeta'][$phpMussel['Components']['Key']]['Files']['Checksum']) && - is_array($phpMussel['Components']['RemoteMeta'][$phpMussel['Components']['Key']]['Files']['Checksum']) - ) { - array_walk($phpMussel['Components']['RemoteMeta'][$phpMussel['Components']['Key']]['Files']['Checksum'], function ($Checksum) use (&$phpMussel) { - if (!empty($Checksum) && ($Delimiter = strpos($Checksum, ':')) !== false) { - $phpMussel['Components']['ThisComponent']['LatestSize'] += - (int)substr($Checksum, $Delimiter + 1); - } - }); - } - if ($phpMussel['Components']['ThisComponent']['LatestSize'] > 0) { - $phpMussel['FormatFilesize']($phpMussel['Components']['ThisComponent']['LatestSize']); - $phpMussel['Components']['ThisComponent']['LatestSize'] = - '
        ' . $phpMussel['lang']['field_size'] . - $phpMussel['Components']['ThisComponent']['LatestSize']; - } else { - $phpMussel['Components']['ThisComponent']['LatestSize'] = ''; - } - if (!empty($phpMussel['Components']['ThisComponent']['Options'])) { - $phpMussel['AppendToString']($phpMussel['Components']['ThisComponent']['StatusOptions'], '
        ', - '' - ); - $phpMussel['Components']['ThisComponent']['Options'] = ''; - } - /** Append changelog. */ - $phpMussel['Components']['ThisComponent']['Changelog'] = empty( - $phpMussel['Components']['ThisComponent']['Changelog'] - ) ? '' : '
        Changelog'; - /** Append tests. */ - if (!empty($phpMussel['Components']['RemoteMeta'][$phpMussel['Components']['ThisComponent']['ID']]['Tests'])) { - $phpMussel['AppendTests']($phpMussel['Components']['ThisComponent']); - } - /** Append filename. */ - $phpMussel['Components']['ThisComponent']['Filename'] = ( - empty($phpMussel['Components']['ThisComponent']['Files']['To']) || - count($phpMussel['Components']['ThisComponent']['Files']['To']) !== 1 - ) ? '' : '
        ' . $phpMussel['lang']['field_filename'] . $phpMussel['Components']['ThisComponent']['Files']['To'][0]; - /** Finalise entry. */ - if ( - !($phpMussel['FE']['hide-non-outdated'] && empty($phpMussel['Components']['ThisComponent']['Outdated'])) && - !($phpMussel['FE']['hide-unused'] && empty($phpMussel['Components']['ThisComponent']['Files']['To'])) - ) { - if (empty($phpMussel['Components']['ThisComponent']['RowClass'])) { - $phpMussel['Components']['ThisComponent']['RowClass'] = 'h1'; - } - $phpMussel['FE']['Indexes'][$phpMussel['Components']['ThisComponent']['ID']] = - '' . $phpMussel['Components']['ThisComponent']['Name'] . "

        \n "; - $phpMussel['Components']['Out'][$phpMussel['Components']['Key']] = $phpMussel['ParseVars']( - $phpMussel['lang'] + $phpMussel['ArrayFlatten']($phpMussel['Components']['ThisComponent']) + $phpMussel['ArrayFlatten']($phpMussel['FE']), - $phpMussel['FE']['UpdatesRow'] - ); - } - } - - /** Prepare newly found component metadata and options for display. */ - foreach ($phpMussel['Components']['RemoteMeta'] as $phpMussel['Components']['Key'] => &$phpMussel['Components']['ThisComponent']) { - if ( - isset($phpMussel['Components']['Meta'][$phpMussel['Components']['Key']]) || - empty($phpMussel['Components']['ThisComponent']['Remote']) || - empty($phpMussel['Components']['ThisComponent']['Version']) || - empty($phpMussel['Components']['ThisComponent']['Files']['From']) || - empty($phpMussel['Components']['ThisComponent']['Files']['To']) || - empty($phpMussel['Components']['ThisComponent']['Reannotate']) || - !$phpMussel['Traverse']($phpMussel['Components']['ThisComponent']['Reannotate']) || - !file_exists($phpMussel['Vault'] . $phpMussel['Components']['ThisComponent']['Reannotate']) - ) { - continue; - } - $phpMussel['Components']['ReannotateThis'] = $phpMussel['Components']['ThisComponent']['Reannotate']; - $phpMussel['FetchRemote'](); - if (!preg_match( - "\x01(\n" . preg_quote($phpMussel['Components']['Key']) . ":?)(\n [^\n]*)*\n\x01i", - $phpMussel['Components']['ThisComponent']['RemoteData'], - $phpMussel['Components']['RemoteDataThis'] - )) { - continue; - } - $phpMussel['Components']['RemoteDataThis'] = preg_replace( - ["/\n Files:(\n [^\n]*)*\n/i", "/\n Version: [^\n]*\n/i"], - "\n", - $phpMussel['Components']['RemoteDataThis'][0] - ); - if (empty($phpMussel['Components']['Remotes'][$phpMussel['Components']['ReannotateThis']])) { - $phpMussel['Components']['Remotes'][$phpMussel['Components']['ReannotateThis']] = - $phpMussel['ReadFile']($phpMussel['Vault'] . $phpMussel['Components']['ReannotateThis']); - } - if (substr( - $phpMussel['Components']['Remotes'][$phpMussel['Components']['ReannotateThis']], -2 - ) !== "\n\n" || substr( - $phpMussel['Components']['Remotes'][$phpMussel['Components']['ReannotateThis']], 0, 4 - ) !== "---\n") { - continue; - } - $phpMussel['ThisOffset'] = [0 => []]; - $phpMussel['ThisOffset'][1] = preg_match( - '/(\n+)$/', - $phpMussel['Components']['Remotes'][$phpMussel['Components']['ReannotateThis']], - $phpMussel['ThisOffset'][0] - ); - $phpMussel['ThisOffset'] = strlen($phpMussel['ThisOffset'][0][0]) * -1; - $phpMussel['Components']['Remotes'][$phpMussel['Components']['ReannotateThis']] = substr( - $phpMussel['Components']['Remotes'][$phpMussel['Components']['ReannotateThis']], 0, $phpMussel['ThisOffset'] - ) . $phpMussel['Components']['RemoteDataThis'] . "\n"; - $phpMussel['PrepareName']($phpMussel['Components']['ThisComponent'], $phpMussel['Components']['Key']); - $phpMussel['PrepareExtendedDescription']($phpMussel['Components']['ThisComponent'], $phpMussel['Components']['Key']); - $phpMussel['Components']['ThisComponent']['ID'] = $phpMussel['Components']['Key']; - $phpMussel['Components']['ThisComponent']['Latest'] = $phpMussel['Components']['ThisComponent']['Version']; - $phpMussel['Components']['ThisComponent']['Version'] = $phpMussel['lang']['response_updates_not_installed']; - $phpMussel['Components']['ThisComponent']['StatClass'] = 'txtRd'; - $phpMussel['Components']['ThisComponent']['RowClass'] = 'h2'; - $phpMussel['Components']['ThisComponent']['VersionSize'] = ''; - $phpMussel['Components']['ThisComponent']['LatestSize'] = 0; - if ( - !empty($phpMussel['Components']['ThisComponent']['Files']['Checksum']) && - is_array($phpMussel['Components']['ThisComponent']['Files']['Checksum']) - ) { - foreach ($phpMussel['Components']['ThisComponent']['Files']['Checksum'] as $phpMussel['Components']['ThisChecksum']) { - if (empty($phpMussel['Components']['ThisChecksum'])) { - continue; - } - if (($phpMussel['FilesDelimit'] = strpos($phpMussel['Components']['ThisChecksum'], ':')) !== false) { - $phpMussel['Components']['ThisComponent']['LatestSize'] += - (int)substr($phpMussel['Components']['ThisChecksum'], $phpMussel['FilesDelimit'] + 1); - } - } - } - if ($phpMussel['Components']['ThisComponent']['LatestSize'] > 0) { - $phpMussel['FormatFilesize']($phpMussel['Components']['ThisComponent']['LatestSize']); - $phpMussel['Components']['ThisComponent']['LatestSize'] = - '
        ' . $phpMussel['lang']['field_size'] . - $phpMussel['Components']['ThisComponent']['LatestSize']; - } else { - $phpMussel['Components']['ThisComponent']['LatestSize'] = ''; - } - $phpMussel['Components']['ThisComponent']['StatusOptions'] = ( - !empty($phpMussel['Components']['ThisComponent']['Minimum Required PHP']) && - $phpMussel['VersionCompare'](PHP_VERSION, $phpMussel['Components']['ThisComponent']['Minimum Required PHP']) - ) ? $phpMussel['ParseVars']( - ['V' => $phpMussel['Components']['ThisComponent']['Minimum Required PHP']], - $phpMussel['lang']['response_updates_not_installed_php'] - ) : - $phpMussel['lang']['response_updates_not_installed'] . - '
        '; - /** Append changelog. */ - $phpMussel['Components']['ThisComponent']['Changelog'] = empty( - $phpMussel['Components']['ThisComponent']['Changelog'] - ) ? '' : '
        Changelog'; - /** Append tests. */ - if (!empty($phpMussel['Components']['ThisComponent']['Tests'])) { - $phpMussel['AppendTests']($phpMussel['Components']['ThisComponent']); - } - /** Append filename (empty). */ - $phpMussel['Components']['ThisComponent']['Filename'] = ''; - /** Finalise entry. */ - if (!$phpMussel['FE']['hide-unused']) { - $phpMussel['FE']['Indexes'][$phpMussel['Components']['ThisComponent']['ID']] = - '' . $phpMussel['Components']['ThisComponent']['Name'] . "

        \n "; - $phpMussel['Components']['Out'][$phpMussel['Components']['Key']] = $phpMussel['ParseVars']( - $phpMussel['lang'] + $phpMussel['ArrayFlatten']($phpMussel['Components']['ThisComponent']) + $phpMussel['ArrayFlatten']($phpMussel['FE']), - $phpMussel['FE']['UpdatesRow'] - ); - } - } - unset($phpMussel['Components']['ThisComponent']); - - /** Write annotations for newly found component metadata. */ - array_walk($phpMussel['Components']['Remotes'], function ($Remote, $Key) use (&$phpMussel) { - if (substr($Remote, -2) !== "\n\n" || substr($Remote, 0, 4) !== "---\n") { - return; - } - $Handle = fopen($phpMussel['Vault'] . $Key, 'w'); - fwrite($Handle, $Remote); - fclose($Handle); - }); - - /** Finalise output and unset working data. */ - uksort($phpMussel['FE']['Indexes'], $phpMussel['UpdatesSortFunc']); - $phpMussel['FE']['Indexes'] = implode('', $phpMussel['FE']['Indexes']); - uksort($phpMussel['Components']['Out'], $phpMussel['UpdatesSortFunc']); - $phpMussel['FE']['Components'] = implode('', $phpMussel['Components']['Out']); - - /** Instructions to update everything at once. */ - if (count($phpMussel['Components']['Outdated'])) { - $phpMussel['FE']['UpdateAll'] = - '
        ' . - ''; - foreach ($phpMussel['Components']['Outdated'] as $phpMussel['Components']['ThisOutdated']) { - $phpMussel['FE']['UpdateAll'] .= - ''; - } - $phpMussel['FE']['UpdateAll'] .= - '
        '; - } else { - $phpMussel['FE']['UpdateAll'] = ''; - } - - /** Parse output. */ - $phpMussel['FE']['FE_Content'] = $phpMussel['ParseVars']( - $phpMussel['lang'] + $phpMussel['FE'], - $phpMussel['ReadFile']($phpMussel['GetAssetPath']('_updates.html')) - ); - - /** Inject dependencies into update instructions for core package component. */ - if (count($phpMussel['Components']['Dependencies'])) { - $phpMussel['FE']['FE_Content'] = str_replace('', - '', - $phpMussel['FE']['FE_Content']); - } - - /** Cleanup. */ - unset($phpMussel['Components'], $phpMussel['Count'], $phpMussel['Iterate']); - - /** Send output. */ - echo $phpMussel['ParseVars']($phpMussel['lang'] + $phpMussel['FE'], $phpMussel['FE']['Template']); - -} - -/** File Manager. */ -elseif ($phpMussel['QueryVars']['phpmussel-page'] === 'file-manager' && $phpMussel['FE']['Permissions'] === 1) { - - /** Set page title. */ - $phpMussel['FE']['FE_Title'] = $phpMussel['lang']['title_file_manager']; - - /** Prepare page tooltip/description. */ - $phpMussel['FE']['FE_Tip'] = $phpMussel['ParseVars']( - ['username' => $phpMussel['FE']['UserRaw']], - $phpMussel['lang']['tip_file_manager'] - ); - - $phpMussel['FE']['bNav'] = $phpMussel['lang']['bNav_home_logout']; - - /** Load pie chart template file upon request. */ - if (empty($phpMussel['QueryVars']['show'])) { - $phpMussel['FE']['ChartJSPath'] = $phpMussel['PieFile'] = $phpMussel['PiePath'] = ''; - } else { - if ($phpMussel['PiePath'] = $phpMussel['GetAssetPath']('_chartjs.html', true)) { - $phpMussel['PieFile'] = $phpMussel['ReadFile']($phpMussel['PiePath']); - } else { - $phpMussel['PieFile'] = '
        {PieChartHTML}
        '; - } - $phpMussel['FE']['ChartJSPath'] = $phpMussel['GetAssetPath']('Chart.min.js', true) ? '?phpmussel-asset=Chart.min.js&theme=default' : ''; - } - - /** Set vault path for pie chart display. */ - $phpMussel['FE']['VaultPath'] = str_replace("\\", '/', $phpMussel['Vault']) . '*'; - - /** Prepare components metadata working array. */ - $phpMussel['Components'] = ['Files', 'Components', 'Names']; - - /** Show/hide pie charts link and etc. */ - if (!$phpMussel['PieFile']) { - - $phpMussel['FE']['FMgrFormTarget'] = 'phpmussel-page=file-manager'; - $phpMussel['FE']['ShowHideLink'] = '' . $phpMussel['lang']['label_show'] . ''; - - } else { - - $phpMussel['FE']['FMgrFormTarget'] = 'phpmussel-page=file-manager&show=true'; - $phpMussel['FE']['ShowHideLink'] = '' . $phpMussel['lang']['label_hide'] . ''; - - /** Fetch components lists. */ - $phpMussel['FetchComponentsLists']($phpMussel['Vault'], $phpMussel['Components']['Components']); - - /** Identifying file component correlations. */ - foreach ($phpMussel['Components']['Components'] as $phpMussel['Components']['ThisName'] => &$phpMussel['Components']['ThisData']) { - if (!empty($phpMussel['Components']['ThisData']['Files']['To'])) { - $phpMussel['Arrayify']($phpMussel['Components']['ThisData']['Files']['To']); - foreach ($phpMussel['Components']['ThisData']['Files']['To'] as $phpMussel['Components']['ThisFile']) { - $phpMussel['Components']['ThisFile'] = str_replace("\\", '/', $phpMussel['Components']['ThisFile']); - $phpMussel['Components']['Files'][$phpMussel['Components']['ThisFile']] = $phpMussel['Components']['ThisName']; - } - } - $phpMussel['PrepareName']($phpMussel['Components']['ThisData'], $phpMussel['Components']['ThisName']); - if (!empty($phpMussel['Components']['ThisData']['Name'])) { - $phpMussel['Components']['Names'][$phpMussel['Components']['ThisName']] = $phpMussel['Components']['ThisData']['Name']; - } - $phpMussel['Components']['ThisData'] = 0; - } - - } - - /** Upload a new file. */ - if (isset($_POST['do']) && $_POST['do'] === 'upload-file' && isset($_FILES['upload-file']['name'])) { - - /** Check whether safe. */ - $phpMussel['SafeToContinue'] = ( - basename($_FILES['upload-file']['name']) === $_FILES['upload-file']['name'] && - $phpMussel['FileManager-PathSecurityCheck']($_FILES['upload-file']['name']) && - isset($_FILES['upload-file']['tmp_name']) && - isset($_FILES['upload-file']['error']) && - $_FILES['upload-file']['error'] === UPLOAD_ERR_OK && - is_uploaded_file($_FILES['upload-file']['tmp_name']) && - !is_link($phpMussel['Vault'] . $_FILES['upload-file']['name']) - ); - - /** If the filename already exists, delete the old file before moving the new file. */ - if ($phpMussel['SafeToContinue'] && is_readable($phpMussel['Vault'] . $_FILES['upload-file']['name'])) { - if (is_dir($phpMussel['Vault'] . $_FILES['upload-file']['name'])) { - if ($phpMussel['FileManager-IsDirEmpty']($phpMussel['Vault'] . $_FILES['upload-file']['name'])) { - rmdir($phpMussel['Vault'] . $_FILES['upload-file']['name']); - } else { - $phpMussel['SafeToContinue'] = false; - } - } else { - unlink($phpMussel['Vault'] . $_FILES['upload-file']['name']); - } - } - - /** Move the newly uploaded file to the designated location. */ - if ($phpMussel['SafeToContinue']) { - rename($_FILES['upload-file']['tmp_name'], $phpMussel['Vault'] . $_FILES['upload-file']['name']); - $phpMussel['FE']['state_msg'] = $phpMussel['lang']['response_file_uploaded']; - } else { - $phpMussel['FE']['state_msg'] = $phpMussel['lang']['response_upload_error']; - } - - } - - /** A form was submitted. */ - elseif ( - isset($_POST['filename']) && - isset($_POST['do']) && - is_readable($phpMussel['Vault'] . $_POST['filename']) && - $phpMussel['FileManager-PathSecurityCheck']($_POST['filename']) - ) { - - /** Delete a file. */ - if ($_POST['do'] === 'delete-file') { - - if (is_dir($phpMussel['Vault'] . $_POST['filename'])) { - if ($phpMussel['FileManager-IsDirEmpty']($phpMussel['Vault'] . $_POST['filename'])) { - rmdir($phpMussel['Vault'] . $_POST['filename']); - $phpMussel['FE']['state_msg'] = $phpMussel['lang']['response_directory_deleted']; - } else { - $phpMussel['FE']['state_msg'] = $phpMussel['lang']['response_delete_error']; - } - } else { - unlink($phpMussel['Vault'] . $_POST['filename']); - - /** Remove empty directories. */ - $phpMussel['DeleteDirectory']($_POST['filename']); - - $phpMussel['FE']['state_msg'] = $phpMussel['lang']['response_file_deleted']; - } - - /** Rename a file. */ - } elseif ($_POST['do'] === 'rename-file' && isset($_POST['filename'])) { - - if (isset($_POST['filename_new'])) { - - /** Check whether safe. */ - $phpMussel['SafeToContinue'] = ( - $phpMussel['FileManager-PathSecurityCheck']($_POST['filename']) && - $phpMussel['FileManager-PathSecurityCheck']($_POST['filename_new']) && - $_POST['filename'] !== $_POST['filename_new'] - ); - - /** If the destination already exists, delete it before renaming the new file. */ - if ( - $phpMussel['SafeToContinue'] && - file_exists($phpMussel['Vault'] . $_POST['filename_new']) && - is_readable($phpMussel['Vault'] . $_POST['filename_new']) - ) { - if (is_dir($phpMussel['Vault'] . $_POST['filename_new'])) { - if ($phpMussel['FileManager-IsDirEmpty']($phpMussel['Vault'] . $_POST['filename_new'])) { - rmdir($phpMussel['Vault'] . $_POST['filename_new']); - } else { - $phpMussel['SafeToContinue'] = false; - } - } else { - unlink($phpMussel['Vault'] . $_POST['filename_new']); - } - } - - /** Rename the file. */ - if ($phpMussel['SafeToContinue']) { - - $phpMussel['ThisName'] = $_POST['filename_new']; - $phpMussel['ThisPath'] = $phpMussel['Vault']; - - /** Add parent directories. */ - while (strpos($phpMussel['ThisName'], '/') !== false || strpos($phpMussel['ThisName'], "\\") !== false) { - $phpMussel['Separator'] = (strpos($phpMussel['ThisName'], '/') !== false) ? '/' : "\\"; - $phpMussel['ThisDir'] = substr($phpMussel['ThisName'], 0, strpos($phpMussel['ThisName'], $phpMussel['Separator'])); - $phpMussel['ThisPath'] .= $phpMussel['ThisDir'] . '/'; - $phpMussel['ThisName'] = substr($phpMussel['ThisName'], strlen($phpMussel['ThisDir']) + 1); - if (!file_exists($phpMussel['ThisPath']) || !is_dir($phpMussel['ThisPath'])) { - mkdir($phpMussel['ThisPath']); - } - } - - if (rename($phpMussel['Vault'] . $_POST['filename'], $phpMussel['Vault'] . $_POST['filename_new'])) { - - /** Remove empty directories. */ - $phpMussel['DeleteDirectory']($_POST['filename']); - - $phpMussel['FE']['state_msg'] = (is_dir($phpMussel['Vault'] . $_POST['filename_new'])) ? - $phpMussel['lang']['response_directory_renamed'] : $phpMussel['lang']['response_file_renamed']; - - } - - } elseif (!$phpMussel['FE']['state_msg']) { - $phpMussel['FE']['state_msg'] = $phpMussel['lang']['response_rename_error']; - } - - } else { - - $phpMussel['FE']['FE_Title'] .= ' – ' . $phpMussel['lang']['field_rename_file'] . ' – ' . $_POST['filename']; - $phpMussel['FE']['filename'] = $_POST['filename']; - - /** Parse output. */ - $phpMussel['FE']['FE_Content'] = $phpMussel['ParseVars']( - $phpMussel['lang'] + $phpMussel['FE'], - $phpMussel['ReadFile']($phpMussel['GetAssetPath']('_files_rename.html')) - ); - - /** Send output. */ - echo $phpMussel['ParseVars']($phpMussel['lang'] + $phpMussel['FE'], $phpMussel['FE']['Template']); - - die; - - } - - /** Edit a file. */ - } elseif ($_POST['do'] === 'edit-file') { - - if (isset($_POST['content'])) { - - $_POST['content'] = str_replace("\r", '', $_POST['content']); - $phpMussel['OldData'] = $phpMussel['ReadFile']($phpMussel['Vault'] . $_POST['filename']); - if (substr_count($phpMussel['OldData'], "\r\n") && !substr_count($phpMussel['OldData'], "\n\n")) { - $_POST['content'] = str_replace("\n", "\r\n", $_POST['content']); - } - - $phpMussel['Handle'] = fopen($phpMussel['Vault'] . $_POST['filename'], 'w'); - fwrite($phpMussel['Handle'], $_POST['content']); - fclose($phpMussel['Handle']); - - $phpMussel['FE']['state_msg'] = $phpMussel['lang']['response_file_edited']; - - } else { - - $phpMussel['FE']['FE_Title'] .= ' – ' . $_POST['filename']; - $phpMussel['FE']['filename'] = $_POST['filename']; - $phpMussel['FE']['content'] = htmlentities($phpMussel['ReadFile']($phpMussel['Vault'] . $_POST['filename'])); - - /** Parse output. */ - $phpMussel['FE']['FE_Content'] = $phpMussel['ParseVars']( - $phpMussel['lang'] + $phpMussel['FE'], - $phpMussel['ReadFile']($phpMussel['GetAssetPath']('_files_edit.html')) - ); - - /** Send output. */ - echo $phpMussel['ParseVars']($phpMussel['lang'] + $phpMussel['FE'], $phpMussel['FE']['Template']); - - die; - - } - - /** Download a file. */ - } elseif ($_POST['do'] === 'download-file') { - - header('Content-Type: application/octet-stream'); - header('Content-Transfer-Encoding: Binary'); - header('Content-disposition: attachment; filename="' . basename($_POST['filename']) . '"'); - echo $phpMussel['ReadFile']($phpMussel['Vault'] . $_POST['filename']); - die; - - } - - } - - /** Template for file rows. */ - $phpMussel['FE']['FilesRow'] = $phpMussel['ReadFile']($phpMussel['GetAssetPath']('_files_row.html')); - - /** Parse output. */ - $phpMussel['FE']['FE_Content'] = $phpMussel['ParseVars']( - $phpMussel['lang'] + $phpMussel['FE'], - $phpMussel['ReadFile']($phpMussel['GetAssetPath']('_files.html')) - ); - - /** Initialise files data variable. */ - $phpMussel['FE']['FilesData'] = ''; - - /** Total size. */ - $phpMussel['FE']['TotalSize'] = 0; - - /** Fetch files data. */ - $phpMussel['FilesArray'] = $phpMussel['FileManager-RecursiveList']($phpMussel['Vault']); - - if (!$phpMussel['PieFile']) { - $phpMussel['FE']['PieChart'] = ''; - } else { - - /** Sort pie chart values. */ - arsort($phpMussel['Components']['Components']); - - /** Initialise pie chart values. */ - $phpMussel['FE']['PieChartValues'] = []; - - /** Initialise pie chart labels. */ - $phpMussel['FE']['PieChartLabels'] = []; - - /** Initialise pie chart colours. */ - $phpMussel['FE']['PieChartColours'] = []; - - /** Initialise pie chart legend. */ - $phpMussel['FE']['PieChartHTML'] = ''; - - /** Building pie chart values. */ - foreach ($phpMussel['Components']['Components'] as $phpMussel['Components']['ThisName'] => $phpMussel['Components']['ThisData']) { - if (empty($phpMussel['Components']['ThisData'])) { - continue; - } - $phpMussel['Components']['ThisSize'] = $phpMussel['Components']['ThisData']; - $phpMussel['FormatFilesize']($phpMussel['Components']['ThisSize']); - $phpMussel['Components']['ThisName'] .= ' – ' . $phpMussel['Components']['ThisSize']; - $phpMussel['FE']['PieChartValues'][] = $phpMussel['Components']['ThisData']; - $phpMussel['FE']['PieChartLabels'][] = $phpMussel['Components']['ThisName']; - if ($phpMussel['PiePath']) { - $phpMussel['Components']['ThisColour'] = substr(md5($phpMussel['Components']['ThisName']), 0, 6); - $phpMussel['Components']['RGB'] = - hexdec(substr($phpMussel['Components']['ThisColour'], 0, 2)) . ',' . - hexdec(substr($phpMussel['Components']['ThisColour'], 2, 2)) . ',' . - hexdec(substr($phpMussel['Components']['ThisColour'], 4, 2)); - $phpMussel['FE']['PieChartColours'][] = '#' . $phpMussel['Components']['ThisColour']; - $phpMussel['FE']['PieChartHTML'] .= - ' ' . - $phpMussel['Components']['ThisName'] . "
        \n"; - } else { - $phpMussel['FE']['PieChartHTML'] .= '➖ ' . $phpMussel['Components']['ThisName'] . "
        \n"; - } - } - - /** Finalise pie chart values. */ - $phpMussel['FE']['PieChartValues'] = '[' . implode(', ', $phpMussel['FE']['PieChartValues']) . ']'; - - /** Finalise pie chart labels. */ - $phpMussel['FE']['PieChartLabels'] = '["' . implode('", "', $phpMussel['FE']['PieChartLabels']) . '"]'; - - /** Finalise pie chart colours. */ - $phpMussel['FE']['PieChartColours'] = '["' . implode('", "', $phpMussel['FE']['PieChartColours']) . '"]'; - - /** Finalise pie chart. */ - $phpMussel['FE']['PieChart'] = $phpMussel['ParseVars']($phpMussel['lang'] + $phpMussel['FE'], $phpMussel['PieFile']); - - } - - /** Cleanup. */ - unset($phpMussel['PieFile'], $phpMussel['PiePath'], $phpMussel['Components']); - - /** Process files data. */ - array_walk($phpMussel['FilesArray'], function ($ThisFile) use (&$phpMussel) { - $ThisFile['ThisOptions'] = ''; - if (!$ThisFile['Directory'] || $phpMussel['FileManager-IsDirEmpty']($phpMussel['Vault'] . $ThisFile['Filename'])) { - $ThisFile['ThisOptions'] .= ''; - $ThisFile['ThisOptions'] .= ''; - } - if ($ThisFile['CanEdit']) { - $ThisFile['ThisOptions'] .= ''; - } - if (!$ThisFile['Directory']) { - $ThisFile['ThisOptions'] .= ''; - } - if ($ThisFile['ThisOptions']) { - $ThisFile['ThisOptions'] = - '' . - ''; - } - $phpMussel['FE']['FilesData'] .= $phpMussel['ParseVars']( - $phpMussel['lang'] + $phpMussel['FE'] + $ThisFile, $phpMussel['FE']['FilesRow'] - ); - }); - - /** Total size. */ - $phpMussel['FormatFilesize']($phpMussel['FE']['TotalSize']); - - /** Disk free space. */ - $phpMussel['FE']['FreeSpace'] = disk_free_space(__DIR__); - - /** Disk total space. */ - $phpMussel['FE']['TotalSpace'] = disk_total_space(__DIR__); - - /** Disk total usage. */ - $phpMussel['FE']['TotalUsage'] = $phpMussel['FE']['TotalSpace'] - $phpMussel['FE']['FreeSpace']; - - $phpMussel['FormatFilesize']($phpMussel['FE']['FreeSpace']); - $phpMussel['FormatFilesize']($phpMussel['FE']['TotalSpace']); - $phpMussel['FormatFilesize']($phpMussel['FE']['TotalUsage']); - - /** Send output. */ - echo $phpMussel['ParseVars']($phpMussel['lang'] + $phpMussel['FE'], $phpMussel['FE']['Template']); - -} - -/** Upload Test. */ -elseif ($phpMussel['QueryVars']['phpmussel-page'] === 'upload-test' && $phpMussel['FE']['Permissions'] === 1) { - - /** Set page title. */ - $phpMussel['FE']['FE_Title'] = $phpMussel['lang']['title_upload_test']; - - $phpMussel['FE']['MaxFilesize'] = $phpMussel['ReadBytes']($phpMussel['Config']['files']['filesize_limit']); - - /** Prepare page tooltip/description. */ - $phpMussel['FE']['FE_Tip'] = $phpMussel['ParseVars']( - ['username' => $phpMussel['FE']['UserRaw']], - $phpMussel['lang']['tip_upload_test'] - ); - - $phpMussel['FE']['bNav'] = $phpMussel['lang']['bNav_home_logout']; - - /** Parse output. */ - $phpMussel['FE']['FE_Content'] = $phpMussel['ParseVars']( - $phpMussel['lang'] + $phpMussel['FE'], - $phpMussel['ReadFile']($phpMussel['GetAssetPath']('_upload_test.html')) - ); - - /** Send output. */ - echo $phpMussel['ParseVars']($phpMussel['lang'] + $phpMussel['FE'], $phpMussel['FE']['Template']); - -} - -/** Quarantine. */ -elseif ($phpMussel['QueryVars']['phpmussel-page'] === 'quarantine') { - - /** Set page title. */ - $phpMussel['FE']['FE_Title'] = $phpMussel['lang']['title_quarantine']; - - /** Prepare page tooltip/description. */ - $phpMussel['FE']['FE_Tip'] = $phpMussel['ParseVars']( - ['username' => $phpMussel['FE']['UserRaw']], - $phpMussel['lang']['tip_quarantine'] - ); - - /** Display how to enable quarantine if currently disabled. */ - if (!$phpMussel['Config']['general']['quarantine_key']) { - $phpMussel['FE']['state_msg'] .= '' . $phpMussel['lang']['tip_quarantine_disabled'] . '
        '; - } - - $phpMussel['FE']['bNav'] = $phpMussel['lang']['bNav_home_logout']; - - /** A form was submitted. */ - if ( - !empty($_POST['qfu']) && - !empty($_POST['do']) && - !is_dir($phpMussel['qfuPath'] . $_POST['qfu']) && - is_readable($phpMussel['qfuPath'] . $_POST['qfu']) && - $phpMussel['FileManager-PathSecurityCheck']($_POST['qfu']) - ) { - - /** Delete a file. */ - if ($_POST['do'] === 'delete-file') { - - $phpMussel['FE']['state_msg'] .= '' . $_POST['qfu'] . ' ' . (unlink( - $phpMussel['qfuPath'] . $_POST['qfu'] - ) ? $phpMussel['lang']['response_file_deleted'] : $phpMussel['lang']['response_delete_error']) . '
        '; - - /** Download or restore a file. */ - } elseif ($_POST['do'] === 'download-file' || $_POST['do'] === 'restore-file') { - - if (empty($_POST['qkey'])) { - $phpMussel['FE']['state_msg'] .= '' . $_POST['qfu'] . ' ' . $phpMussel['lang']['response_restore_error_2'] . '
        '; - } else { - /** Attempt to restore the file. */ - $phpMussel['Restored'] = $phpMussel['Quarantine-Restore']($phpMussel['qfuPath'] . $_POST['qfu'], $_POST['qkey']); - - /** Restore success! */ - if (empty($phpMussel['RestoreStatus'])) { - - /** Download the file. */ - if ($_POST['do'] === 'download-file') { - header('Content-Type: application/octet-stream'); - header('Content-Transfer-Encoding: Binary'); - header('Content-disposition: attachment; filename="' . basename($_POST['qfu']) . '.restored"'); - echo $phpMussel['Restored']; - die; - } - - /** Restore the file. */ - $phpMussel['Handle'] = fopen($phpMussel['qfuPath'] . $_POST['qfu'] . '.restored', 'w'); - fwrite($phpMussel['Handle'], $phpMussel['Restored']); - fclose($phpMussel['Handle']); - $phpMussel['FE']['state_msg'] .= '' . $_POST['qfu'] . '.restored ' . $phpMussel['lang']['response_file_restored'] . '
        '; - - } - - /** Corrupted file! */ - elseif ($phpMussel['RestoreStatus'] === 2) { - $phpMussel['FE']['state_msg'] .= '' . $_POST['qfu'] . ' ' . $phpMussel['lang']['response_restore_error_1'] . '
        '; - } - - /** Incorrect quarantine key! */ - else { - $phpMussel['FE']['state_msg'] .= '' . $_POST['qfu'] . ' ' . $phpMussel['lang']['response_restore_error_2'] . '
        '; - } - - /** Cleanup. */ - unset($phpMussel['RestoreStatus'], $phpMussel['Restored']); - } - - } - - } - - /** Delete all files in quarantine. */ - $DeleteMode = !empty($_POST['DeleteAll']); - - /** Template for quarantine files row. */ - $phpMussel['FE']['QuarantineRow'] = $phpMussel['ReadFile']($phpMussel['GetAssetPath']('_quarantine_row.html')); - - /** Fetch quarantine data array. */ - $phpMussel['FilesInQuarantine'] = $phpMussel['Quarantine-RecursiveList']($DeleteMode); - - /** Number of files in quarantine. */ - $phpMussel['FilesInQuarantineCount'] = count($phpMussel['FilesInQuarantine']); - - /** Number of files in quarantine state message. */ - $phpMussel['FE']['state_msg'] .= sprintf( - $phpMussel['Plural']($phpMussel['FilesInQuarantineCount'], $phpMussel['lang']['state_quarantine']), - '' . $phpMussel['Number_L10N']($phpMussel['FilesInQuarantineCount']) . '' - ) . '
        '; - - /** Initialise quarantine data string. */ - $phpMussel['FE']['FilesInQuarantine'] = ''; - - /** Process quarantine files data. */ - array_walk($phpMussel['FilesInQuarantine'], function ($ThisFile) use (&$phpMussel) { - $phpMussel['FE']['FilesInQuarantine'] .= $phpMussel['ParseVars']( - $phpMussel['lang'] + $phpMussel['FE'] + $ThisFile, $phpMussel['FE']['QuarantineRow'] - ); - }); - - /** Cleanup. */ - unset($phpMussel['FilesInQuarantineCount'], $phpMussel['FilesInQuarantine']); - - /** Parse output. */ - $phpMussel['FE']['FE_Content'] = $phpMussel['ParseVars']( - $phpMussel['lang'] + $phpMussel['FE'], - $phpMussel['ReadFile']($phpMussel['GetAssetPath']('_quarantine.html')) - ); - - /** Send output. */ - echo $phpMussel['ParseVars']($phpMussel['lang'] + $phpMussel['FE'], $phpMussel['FE']['Template']); - -} - -/** Statistics. */ -elseif ($phpMussel['QueryVars']['phpmussel-page'] === 'statistics') { - - /** Set page title. */ - $phpMussel['FE']['FE_Title'] = $phpMussel['lang']['title_statistics']; - - /** Prepare page tooltip/description. */ - $phpMussel['FE']['FE_Tip'] = $phpMussel['ParseVars']( - ['username' => $phpMussel['FE']['UserRaw']], - $phpMussel['lang']['tip_statistics'] - ); - - /** Display how to enable statistics if currently disabled. */ - if (!$phpMussel['Config']['general']['statistics']) { - $phpMussel['FE']['state_msg'] .= '' . $phpMussel['lang']['tip_statistics_disabled'] . '
        '; - } - - /** Fetch statistics cache data. */ - if ($phpMussel['Statistics'] = ($phpMussel['FetchCache']('Statistics') ?: [])) { - $phpMussel['Statistics'] = unserialize($phpMussel['Statistics']) ?: []; - } - - /** Clear statistics. */ - if (!empty($_POST['ClearStats'])) { - $phpMussel['SaveCache']('Statistics', 1, '-'); - $phpMussel['Statistics'] = []; - $phpMussel['FE']['state_msg'] .= $phpMussel['lang']['response_statistics_cleared'] . '
        '; - } - - /** Statistics have been counted since... */ - if (empty($phpMussel['Statistics']['Other-Since'])) { - $phpMussel['FE']['Other-Since'] = '-'; - } else { - $phpMussel['FE']['Other-Since'] = '' . $phpMussel['TimeFormat']( - $phpMussel['Statistics']['Other-Since'], - $phpMussel['Config']['general']['timeFormat'] - ) . ''; - } - - /** Fetch and process various statistics. */ - foreach ([ - 'Web-Events', - 'Web-Scanned', - 'Web-Blocked', - 'Web-Quarantined', - 'CLI-Events', - 'CLI-Scanned', - 'CLI-Flagged', - 'API-Events', - 'API-Scanned', - 'API-Flagged' - ] as $phpMussel['TheseStats']) { - $phpMussel['FE'][$phpMussel['TheseStats']] = '' . $phpMussel['Number_L10N']( - empty($phpMussel['Statistics'][$phpMussel['TheseStats']]) ? 0 : $phpMussel['Statistics'][$phpMussel['TheseStats']] - ) . ''; - } - - /** Active signature files. */ - if (empty($phpMussel['Config']['signatures']['Active'])) { - $phpMussel['FE']['Other-Active'] = '' . $phpMussel['Number_L10N'](0) . ''; - } else { - $phpMussel['FE']['Other-Active'] = 0; - $phpMussel['StatWorking'] = explode(',', $phpMussel['Config']['signatures']['Active']); - array_walk($phpMussel['StatWorking'], function ($SigFile) use (&$phpMussel) { - if (!empty($SigFile) && is_readable($phpMussel['sigPath'] . $SigFile)) { - $phpMussel['FE']['Other-Active']++; - } - }); - $phpMussel['StatColour'] = $phpMussel['FE']['Other-Active'] ? 'txtGn' : 'txtRd'; - $phpMussel['FE']['Other-Active'] = '' . $phpMussel['Number_L10N']( - $phpMussel['FE']['Other-Active'] - ) . ''; - } - - $phpMussel['FE']['bNav'] = $phpMussel['lang']['bNav_home_logout']; - - /** Parse output. */ - $phpMussel['FE']['FE_Content'] = $phpMussel['ParseVars']( - $phpMussel['lang'] + $phpMussel['FE'], - $phpMussel['ReadFile']($phpMussel['GetAssetPath']('_statistics.html')) - ); - - /** Send output. */ - echo $phpMussel['ParseVars']($phpMussel['lang'] + $phpMussel['FE'], $phpMussel['FE']['Template']); - - /** Cleanup. */ - unset($phpMussel['StatColour'], $phpMussel['StatWorking'], $phpMussel['Statistics']); - -} - -/** Logs. */ -elseif ($phpMussel['QueryVars']['phpmussel-page'] === 'logs') { - - /** Set page title. */ - $phpMussel['FE']['FE_Title'] = $phpMussel['lang']['title_logs']; - - /** Prepare page tooltip/description. */ - $phpMussel['FE']['FE_Tip'] = $phpMussel['ParseVars']( - ['username' => $phpMussel['FE']['UserRaw']], - $phpMussel['lang']['tip_logs'] - ); - - $phpMussel['FE']['bNav'] = $phpMussel['lang']['bNav_home_logout']; - - /** Parse output. */ - $phpMussel['FE']['FE_Content'] = $phpMussel['ParseVars']( - $phpMussel['lang'] + $phpMussel['FE'], - $phpMussel['ReadFile']($phpMussel['GetAssetPath']('_logs.html')) - ); - - /** Initialise array for fetching logs data. */ - $phpMussel['FE']['LogFiles'] = [ - 'Files' => $phpMussel['Logs-RecursiveList']($phpMussel['Vault']), - 'Out' => '' - ]; - - /** Text mode switch link base. */ - $phpMussel['FE']['TextModeSwitchLink'] = ''; - - /** How to display the log data? */ - if (empty($phpMussel['QueryVars']['text-mode']) || $phpMussel['QueryVars']['text-mode'] === 'false') { - $phpMussel['FE']['TextModeLinks'] = 'false'; - $phpMussel['FE']['TextMode'] = false; - } else { - $phpMussel['FE']['TextModeLinks'] = 'true'; - $phpMussel['FE']['TextMode'] = true; - } - - /** Define log data. */ - if (empty($phpMussel['QueryVars']['logfile'])) { - $phpMussel['FE']['logfileData'] = $phpMussel['lang']['logs_no_logfile_selected']; - } elseif (empty($phpMussel['FE']['LogFiles']['Files'][$phpMussel['QueryVars']['logfile']])) { - $phpMussel['FE']['logfileData'] = $phpMussel['lang']['logs_logfile_doesnt_exist']; - } else { - $phpMussel['FE']['TextModeSwitchLink'] .= '?phpmussel-page=logs&logfile=' . $phpMussel['QueryVars']['logfile'] . '&text-mode='; - $phpMussel['FE']['logfileData'] = $phpMussel['ReadFile']($phpMussel['Vault'] . $phpMussel['QueryVars']['logfile']); - $phpMussel['FE']['logfileData'] = $phpMussel['FE']['TextMode'] ? str_replace( - ['<', '>', "\r", "\n"], ['<', '>', '', "
        \n"], $phpMussel['FE']['logfileData'] - ) : str_replace( - ['<', '>', "\r"], ['<', '>', ''], $phpMussel['FE']['logfileData'] - ); - $phpMussel['FE']['mod_class_nav'] = ' big'; - $phpMussel['FE']['mod_class_right'] = ' extend'; - } - if (empty($phpMussel['FE']['mod_class_nav'])) { - $phpMussel['FE']['mod_class_nav'] = ' extend'; - $phpMussel['FE']['mod_class_right'] = ' big'; - } - if (empty($phpMussel['FE']['TextModeSwitchLink'])) { - $phpMussel['FE']['TextModeSwitchLink'] .= '?phpmussel-page=logs&text-mode='; - } - - /** Text mode switch link formatted. */ - $phpMussel['FE']['TextModeSwitchLink'] = sprintf( - $phpMussel['lang']['link_textmode'], - $phpMussel['FE']['TextModeSwitchLink'] - ); - - /** Prepare log data formatting. */ - if (!$phpMussel['FE']['TextMode']) { - $phpMussel['FE']['logfileData'] = ''; - } - - /** Define logfile list. */ - array_walk($phpMussel['FE']['LogFiles']['Files'], function ($Arr) use (&$phpMussel) { - $phpMussel['FE']['LogFiles']['Out'] .= sprintf( - ' %1$s – %2$s
        ', - $Arr['Filename'], - $Arr['Filesize'], - $phpMussel['FE']['TextModeLinks'] - ) . "\n"; - }); - - if (!$phpMussel['FE']['LogFiles'] = $phpMussel['FE']['LogFiles']['Out']) { - $phpMussel['FE']['LogFiles'] = $phpMussel['lang']['logs_no_logfiles_available']; - } - - /** Send output. */ - echo $phpMussel['ParseVars']($phpMussel['lang'] + $phpMussel['FE'], $phpMussel['FE']['Template']); - -} - -/** Rebuild cache. */ -if ($phpMussel['FE']['Rebuild']) { - $phpMussel['FE']['FrontEndData'] = - "USERS\n-----" . $phpMussel['FE']['UserList'] . - "\nSESSIONS\n--------" . $phpMussel['FE']['SessionList'] . - "\nCACHE\n-----" . $phpMussel['FE']['Cache']; - $phpMussel['Handle'] = fopen($phpMussel['Vault'] . 'fe_assets/frontend.dat', 'w'); - fwrite($phpMussel['Handle'], $phpMussel['FE']['FrontEndData']); - fclose($phpMussel['Handle']); -} - -die; diff --git a/libraries/plugins/phpMussel/vault/frontend_functions.php b/libraries/plugins/phpMussel/vault/frontend_functions.php deleted file mode 100644 index cc4a5a8..0000000 --- a/libraries/plugins/phpMussel/vault/frontend_functions.php +++ /dev/null @@ -1,1007 +0,0 @@ - $Data) { - if (!isset($Data['Version']) && !isset($Data['Files']) && !isset($ModelArr[$Element])) { - if ($Validate) { - return false; - } - $Base = preg_replace("~\n" . $Element . ":?(\n [^\n]*)*\n~i", "\n", $Base); - } - } - return $Validate ? true : $Base; -}; - -/** - * Can be used to delete some files via the front-end. - * - * @param string $File The file to delete. - * @return bool Success or failure. - */ -$phpMussel['Delete'] = function ($File) use (&$phpMussel) { - if (!empty($File) && file_exists($phpMussel['Vault'] . $File) && $phpMussel['Traverse']($File)) { - if (!unlink($phpMussel['Vault'] . $File)) { - return false; - } - $phpMussel['DeleteDirectory']($File); - return true; - } - return false; -}; - -/** - * Can be used to delete some empty directories via the front-end. - * - * @param string $Dir The directory to delete. - */ -$phpMussel['DeleteDirectory'] = function ($Dir) use (&$phpMussel) { - while (strrpos($Dir, '/') !== false || strrpos($Dir, "\\") !== false) { - $Separator = (strrpos($Dir, '/') !== false) ? '/' : "\\"; - $Dir = substr($Dir, 0, strrpos($Dir, $Separator)); - if (is_dir($phpMussel['Vault'] . $Dir) && $phpMussel['FileManager-IsDirEmpty']($phpMussel['Vault'] . $Dir)) { - rmdir($phpMussel['Vault'] . $Dir); - } else { - break; - } - } -}; - -/** - * Adds integer values; Returns zero if the sum total is negative or if any - * contained values aren't integers, and otherwise, returns the sum total. - */ -$phpMussel['ZeroMin'] = function () { - $Sum = 0; - foreach (func_get_args() as $Value) { - $IntValue = (int)$Value; - if ($IntValue !== $Value) { - return 0; - } - $Sum += $IntValue; - } - return $Sum < 0 ? 0 : $Sum; -}; - -/** Format filesize information. */ -$phpMussel['FormatFilesize'] = function (&$Filesize) use (&$phpMussel) { - $Scale = ['field_size_bytes', 'field_size_KB', 'field_size_MB', 'field_size_GB', 'field_size_TB']; - $Iterate = 0; - $Filesize = (int)$Filesize; - while ($Filesize > 1024) { - $Filesize = $Filesize / 1024; - $Iterate++; - if ($Iterate > 4) { - break; - } - } - $Filesize = $phpMussel['Number_L10N']($Filesize, ($Iterate === 0) ? 0 : 2) . ' ' . $phpMussel['Plural']($Filesize, $phpMussel['lang'][$Scale[$Iterate]]); -}; - -/** - * Remove an entry from the front-end cache data. - * - * @param string $Source Variable containing cache file data. - * @param bool $Rebuild Flag indicating to rebuild cache file. - * @param string $Entry Name of the cache entry to be deleted. - */ -$phpMussel['FECacheRemove'] = function (&$Source, &$Rebuild, $Entry) { - $Entry64 = base64_encode($Entry); - while (($EntryPos = strpos($Source, "\n" . $Entry64 . ',')) !== false) { - $EoL = strpos($Source, "\n", $EntryPos + 1); - if ($EoL !== false) { - $Line = substr($Source, $EntryPos, $EoL - $EntryPos); - $Source = str_replace($Line, '', $Source); - $Rebuild = true; - } - } -}; - -/** - * Add an entry to the front-end cache data. - * - * @param string $Source Variable containing cache file data. - * @param bool $Rebuild Flag indicating to rebuild cache file. - * @param string $Entry Name of the cache entry to be added. - * @param string $Data Cache entry data (what should be cached). - * @param int $Expires When should the cache entry expire (be deleted). - */ -$phpMussel['FECacheAdd'] = function (&$Source, &$Rebuild, $Entry, $Data, $Expires) use (&$phpMussel) { - $phpMussel['FECacheRemove']($Source, $Rebuild, $Entry); - $Expires = (int)$Expires; - $NewLine = base64_encode($Entry) . ',' . base64_encode($Data) . ',' . $Expires . "\n"; - $Source .= $NewLine; - $Rebuild = true; -}; - -/** - * Get an entry from the front-end cache data. - * - * @param string $Source Variable containing cache file data. - * @param bool $Rebuild Flag indicating to rebuild cache file. - * @param string $Entry Name of the cache entry to get. - * return string|bool Returned cache entry data (or false on failure). - */ -$phpMussel['FECacheGet'] = function ($Source, $Entry) { - $Entry = base64_encode($Entry); - $EntryPos = strpos($Source, "\n" . $Entry . ','); - if ($EntryPos !== false) { - $EoL = strpos($Source, "\n", $EntryPos + 1); - if ($EoL !== false) { - $Line = substr($Source, $EntryPos, $EoL - $EntryPos); - $Entry = explode(',', $Line); - if (!empty($Entry[1])) { - return base64_decode($Entry[1]); - } - } - } - return false; -}; - -/** - * Compare two different versions of phpMussel, or two different versions of a - * component for phpMussel, to see which is newer (mostly used by the updater). - * - * @param string $A The 1st version string. - * @param string $B The 2nd version string. - * return bool True if the 2nd version is newer than the 1st version, and false - * otherwise (i.e., if they're the same, or if the 1st version is newer). - */ -$phpMussel['VersionCompare'] = function ($A, $B) { - $Normalise = function (&$Ver) { - $Ver = - preg_match('~^v?([0-9]+)$~i', $Ver, $Matches) ?: - preg_match('~^v?([0-9]+)\.([0-9]+)$~i', $Ver, $Matches) ?: - preg_match('~^v?([0-9]+)\.([0-9]+)\.([0-9]+)(RC[0-9]{1,2}|-[0-9a-z_+\\/]+)?$~i', $Ver, $Matches) ?: - preg_match('~^([0-9]{1,4})[.-]([0-9]{1,2})[.-]([0-9]{1,4})(RC[0-9]{1,2}|[.+-][0-9a-z_+\\/]+)?$~i', $Ver, $Matches) ?: - preg_match('~^([a-z]+)-([0-9a-z]+)-([0-9a-z]+)$~i', $Ver, $Matches); - $Ver = [ - 'Major' => isset($Matches[1]) ? $Matches[1] : 0, - 'Minor' => isset($Matches[2]) ? $Matches[2] : 0, - 'Patch' => isset($Matches[3]) ? $Matches[3] : 0, - 'Build' => isset($Matches[4]) ? substr($Matches[4], 1) : 0 - ]; - $Ver = array_map(function ($Var) { - $VarInt = (int)$Var; - $VarLen = strlen($Var); - if ($Var == $VarInt && strlen($VarInt) === $VarLen && $VarLen > 1) { - return $VarInt; - } - return strtolower($Var); - }, $Ver); - }; - $Normalise($A); - $Normalise($B); - return ( - $B['Major'] > $A['Major'] || ( - $B['Major'] === $A['Major'] && - $B['Minor'] > $A['Minor'] - ) || ( - $B['Major'] === $A['Major'] && - $B['Minor'] === $A['Minor'] && - $B['Patch'] > $A['Patch'] - ) || ( - $B['Major'] === $A['Major'] && - $B['Minor'] === $A['Minor'] && - $B['Patch'] === $A['Patch'] && - !empty($A['Build']) && ( - empty($B['Build']) || $B['Build'] > $A['Build'] - ) - ) - ); -}; - -/** - * Remove sub-arrays from an array. - * - * @param array $Arr An array. - * return array An array. - */ -$phpMussel['ArrayFlatten'] = function ($Arr) { - return array_filter($Arr, function () { - return (!is_array(func_get_args()[0])); - }); -}; - -/** Isolate a L10N array down to a single relevant L10N string. */ -$phpMussel['IsolateL10N'] = function (&$Arr, $Lang) { - if (isset($Arr[$Lang])) { - $Arr = $Arr[$Lang]; - } elseif (isset($Arr['en'])) { - $Arr = $Arr['en']; - } else { - $Key = key($Arr); - $Arr = $Arr[$Key]; - } -}; - -/** - * Append one or two values to a string, depending on whether that string is - * empty prior to calling the closure (allows cleaner code in some areas). - * - * @param string $String The string to work with. - * @param string $Delimit Appended first, if the string is not empty. - * @param string $Append Appended second, and always (empty or otherwise). - */ -$phpMussel['AppendToString'] = function (&$String, $Delimit = '', $Append = '') { - if (!empty($String)) { - $String .= $Delimit; - } - $String .= $Append; -}; - -/** - * Used by the file manager to generate a list of the files contained in a - * working directory (normally, the vault). - * - * @param string $Base The path to the working directory. - * @return array A list of the files contained in the working directory. - */ -$phpMussel['FileManager-RecursiveList'] = function ($Base) use (&$phpMussel) { - $Arr = []; - $Key = -1; - $Offset = strlen($Base); - $List = new RecursiveIteratorIterator(new RecursiveDirectoryIterator($Base), RecursiveIteratorIterator::SELF_FIRST); - foreach ($List as $Item => $List) { - $Key++; - $ThisName = substr($Item, $Offset); - if (preg_match('~^(?:/\.\.|./\.|\.{3})$~', str_replace("\\", '/', substr($Item, -3)))) { - continue; - } - $Arr[$Key] = ['Filename' => $ThisName]; - if (is_dir($Item)) { - $Arr[$Key]['CanEdit'] = false; - $Arr[$Key]['Directory'] = true; - $Arr[$Key]['Filesize'] = 0; - $Arr[$Key]['Filetype'] = $phpMussel['lang']['field_filetype_directory']; - $Arr[$Key]['Icon'] = 'icon=directory'; - } elseif (is_file($Item)) { - $Arr[$Key]['CanEdit'] = true; - $Arr[$Key]['Directory'] = false; - $Arr[$Key]['Filesize'] = filesize($Item); - if (isset($phpMussel['FE']['TotalSize'])) { - $phpMussel['FE']['TotalSize'] += $Arr[$Key]['Filesize']; - } - if (isset($phpMussel['Components']['Components'])) { - $Component = $phpMussel['lang']['field_filetype_unknown']; - $ThisNameFixed = str_replace("\\", '/', $ThisName); - if (isset($phpMussel['Components']['Files'][$ThisNameFixed])) { - if (!empty($phpMussel['Components']['Names'][$phpMussel['Components']['Files'][$ThisNameFixed]])) { - $Component = $phpMussel['Components']['Names'][$phpMussel['Components']['Files'][$ThisNameFixed]]; - } else { - $Component = $phpMussel['Components']['Files'][$ThisNameFixed]; - } - if ($Component === 'phpMussel') { - $Component .= ' (' . $phpMussel['lang']['field_component'] . ')'; - } - } elseif (substr($ThisNameFixed, -10) === 'config.ini') { - $Component = $phpMussel['lang']['link_config']; - } else { - $LastFour = strtolower(substr($ThisNameFixed, -4)); - if ( - $LastFour === '.tmp' || - $ThisNameFixed === 'index.dat' || - $ThisNameFixed === 'fe_assets/frontend.dat' || - substr($ThisNameFixed, -9) === '.rollback' - ) { - $Component = $phpMussel['lang']['label_fmgr_cache_data']; - } elseif ($LastFour === '.log' || $LastFour === '.txt') { - $Component = $phpMussel['lang']['link_logs']; - } elseif ($LastFour === '.qfu') { - $Component = $phpMussel['lang']['label_quarantined']; - } elseif (preg_match('/^\.(?:dat|inc|ya?ml)$/i', $LastFour)) { - $Component = $phpMussel['lang']['label_fmgr_updates_metadata']; - } - } - if (!isset($phpMussel['Components']['Components'][$Component])) { - $phpMussel['Components']['Components'][$Component] = 0; - } - $phpMussel['Components']['Components'][$Component] += $Arr[$Key]['Filesize']; - } - if (($ExtDel = strrpos($Item, '.')) !== false) { - $Ext = strtoupper(substr($Item, $ExtDel + 1)); - if (!$Ext) { - $Arr[$Key]['Filetype'] = $phpMussel['lang']['field_filetype_unknown']; - $Arr[$Key]['Icon'] = 'icon=unknown'; - $phpMussel['FormatFilesize']($Arr[$Key]['Filesize']); - continue; - } - $Arr[$Key]['Filetype'] = $phpMussel['ParseVars'](['EXT' => $Ext], $phpMussel['lang']['field_filetype_info']); - if ($Ext === 'ICO') { - $Arr[$Key]['Icon'] = 'file=' . urlencode($Prepend . $Item); - $phpMussel['FormatFilesize']($Arr[$Key]['Filesize']); - continue; - } - if (preg_match( - '/^(?:.?[BGL]Z.?|7Z|A(CE|LZ|P[KP]|R[CJ]?)?|B([AH]|Z2?)|CAB|DMG|' . - 'I(CE|SO)|L(HA|Z[HOWX]?)|P(AK|AQ.?|CK|EA)|RZ|S(7Z|EA|EN|FX|IT.?|QX)|' . - 'X(P3|Z)|YZ1|Z(IP.?|Z)?|(J|M|PH|R|SH|T|X)AR)$/' - , $Ext)) { - $Arr[$Key]['CanEdit'] = false; - $Arr[$Key]['Icon'] = 'icon=archive'; - } elseif (preg_match('/^[SDX]?HT[AM]L?$/', $Ext)) { - $Arr[$Key]['Icon'] = 'icon=html'; - } elseif (preg_match('/^(?:CSV|JSON|NEON|SQL|YAML)$/', $Ext)) { - $Arr[$Key]['Icon'] = 'icon=ods'; - } elseif (preg_match('/^(?:PDF|XDP)$/', $Ext)) { - $Arr[$Key]['CanEdit'] = false; - $Arr[$Key]['Icon'] = 'icon=pdf'; - } elseif (preg_match('/^DOC[XT]?$/', $Ext)) { - $Arr[$Key]['CanEdit'] = false; - $Arr[$Key]['Icon'] = 'icon=doc'; - } elseif (preg_match('/^XLS[XT]?$/', $Ext)) { - $Arr[$Key]['CanEdit'] = false; - $Arr[$Key]['Icon'] = 'icon=xls'; - } elseif (preg_match('/^(?:CSS|JS|OD[BFGPST]|P(HP|PT))$/', $Ext)) { - $Arr[$Key]['Icon'] = 'icon=' . strtolower($Ext); - if (!preg_match('/^(?:CSS|JS|PHP)$/', $Ext)) { - $Arr[$Key]['CanEdit'] = false; - } - } elseif (preg_match('/^(?:FLASH|SWF)$/', $Ext)) { - $Arr[$Key]['CanEdit'] = false; - $Arr[$Key]['Icon'] = 'icon=swf'; - } elseif (preg_match( - '/^(?:BM[2P]|C(D5|GM)|D(IB|W[FG]|XF)|ECW|FITS|GIF|IMG|J(F?IF?|P[2S]|PE?G?2?|XR)|P(BM|CX|DD|GM|IC|N[GMS]|PM|S[DP])|S(ID|V[AG])|TGA|W(BMP?|EBP|MP)|X(CF|BMP))$/' - , $Ext)) { - $Arr[$Key]['CanEdit'] = false; - $Arr[$Key]['Icon'] = 'icon=image'; - } elseif (preg_match( - '/^(?:H?264|3GP(P2)?|A(M[CV]|VI)|BIK|D(IVX|V5?)|F([4L][CV]|MV)|GIFV|HLV|' . - 'M(4V|OV|P4|PE?G[4V]?|KV|VR)|OGM|V(IDEO|OB)|W(EBM|M[FV]3?)|X(WMV|VID))$/' - , $Ext)) { - $Arr[$Key]['CanEdit'] = false; - $Arr[$Key]['Icon'] = 'icon=video'; - } elseif (preg_match( - '/^(?:3GA|A(AC|IFF?|SF|U)|CDA|FLAC?|M(P?4A|IDI|KA|P[A23])|OGG|PCM|' . - 'R(AM?|M[AX])|SWA|W(AVE?|MA))$/' - , $Ext)) { - $Arr[$Key]['CanEdit'] = false; - $Arr[$Key]['Icon'] = 'icon=audio'; - } elseif (preg_match('/^(?:MD|NFO|RTF|TXT)$/', $Ext)) { - $Arr[$Key]['Icon'] = 'icon=text'; - } - } else { - $Arr[$Key]['Filetype'] = $phpMussel['lang']['field_filetype_unknown']; - } - } - if (empty($Arr[$Key]['Icon'])) { - $Arr[$Key]['Icon'] = 'icon=unknown'; - } - if ($Arr[$Key]['Filesize']) { - $phpMussel['FormatFilesize']($Arr[$Key]['Filesize']); - } else { - $Arr[$Key]['Filesize'] = ''; - } - } - return $Arr; -}; - -/** - * Used by the file manager and the updates pages to fetch the components list. - * - * @param string $Base The path to the working directory. - * @param array $Arr The array to use for rendering components file YAML data. - */ -$phpMussel['FetchComponentsLists'] = function ($Base, &$Arr) use (&$phpMussel) { - $Files = new DirectoryIterator($Base); - foreach ($Files as $ThisFile) { - if (!empty($ThisFile) && preg_match('/\.(?:dat|inc|ya?ml)$/i', $ThisFile)) { - $Data = $phpMussel['ReadFile']($Base . $ThisFile); - if (substr($Data, 0, 4) === "---\n" && ($EoYAML = strpos($Data, "\n\n")) !== false) { - $phpMussel['YAML'](substr($Data, 4, $EoYAML - 4), $Arr); - } - } - } -}; - -/** - * Checks paths for directory traversal and ensures that they only contain - * expected characters. - * - * @param string $Path The path to check. - * @return bool False when directory traversals and/or unexpected characters - * are detected, and true otherwise. - */ -$phpMussel['FileManager-PathSecurityCheck'] = function ($Path) { - $Path = str_replace("\\", '/', $Path); - if ( - preg_match('~(?://|[^!0-9A-Za-z\._-]$)~', $Path) || - preg_match('~^(?:/\.\.|./\.|\.{3})$~', str_replace("\\", '/', substr($Path, -3))) - ) { - return false; - } - $Path = preg_split('@/@', $Path, -1, PREG_SPLIT_NO_EMPTY); - $Valid = true; - array_walk($Path, function($Segment) use (&$Valid) { - if (empty($Segment) || preg_match('/(?:[\x00-\x1f\x7f]+|^\.+$)/i', $Segment)) { - $Valid = false; - } - }); - return $Valid; -}; - -/** - * Checks whether the specified directory is empty. - * - * @param string $Directory The directory to check. - * @return bool True if empty; False if not empty. - */ -$phpMussel['FileManager-IsDirEmpty'] = function ($Directory) { - return !((new \FilesystemIterator($Directory))->valid()); -}; - -/** - * Used by the logs viewer to generate a list of the logfiles contained in a - * working directory (normally, the vault). - * - * @param string $Base The path to the working directory. - * @return array A list of the logfiles contained in the working directory. - */ -$phpMussel['Logs-RecursiveList'] = function ($Base) use (&$phpMussel) { - $Arr = []; - $List = new RecursiveIteratorIterator(new RecursiveDirectoryIterator($Base), RecursiveIteratorIterator::SELF_FIRST); - foreach ($List as $Item => $List) { - if ( - preg_match('~^(?:/\.\.|./\.|\.{3})$~', str_replace("\\", '/', substr($Item, -3))) || - !preg_match('~(?:logfile|\.(txt|log)$)~i', $Item) || - !is_file($Item) || - !is_readable($Item) || - is_dir($Item) - ) { - continue; - } - $ThisName = substr($Item, strlen($Base)); - $Arr[$ThisName] = ['Filename' => $ThisName, 'Filesize' => filesize($Item)]; - $phpMussel['FormatFilesize']($Arr[$ThisName]['Filesize']); - } - return $Arr; -}; - -/** - * Checks whether a component is in use (front-end closure). - * - * @param array $Files The list of files to be checked. - * @return bool Returns true (in use) or false (not in use). - */ -$phpMussel['IsInUse'] = function ($Files) use (&$phpMussel) { - foreach ($Files as $File) { - if ( - substr($File, 0, 11) === 'signatures/' && - strpos(',' . $phpMussel['Config']['signatures']['Active'] . ',', ',' . substr($File, 11) . ',') !== false - ) { - return true; - } - } - return false; -}; - -/** Fetch remote data (front-end updates page). */ -$phpMussel['FetchRemote'] = function () use (&$phpMussel) { - $phpMussel['Components']['ThisComponent']['RemoteData'] = $phpMussel['FECacheGet']( - $phpMussel['FE']['Cache'], - $phpMussel['Components']['ThisComponent']['Remote'] - ); - if (!$phpMussel['Components']['ThisComponent']['RemoteData']) { - $phpMussel['Components']['ThisComponent']['RemoteData'] = $phpMussel['Request']($phpMussel['Components']['ThisComponent']['Remote']); - if ( - strtolower(substr($phpMussel['Components']['ThisComponent']['Remote'], -2)) === 'gz' && - substr($phpMussel['Components']['ThisComponent']['RemoteData'], 0, 2) === "\x1f\x8b" - ) { - $phpMussel['Components']['ThisComponent']['RemoteData'] = gzdecode($phpMussel['Components']['ThisComponent']['RemoteData']); - } - if (empty($phpMussel['Components']['ThisComponent']['RemoteData'])) { - $phpMussel['Components']['ThisComponent']['RemoteData'] = '-'; - } - $phpMussel['FECacheAdd']( - $phpMussel['FE']['Cache'], - $phpMussel['FE']['Rebuild'], - $phpMussel['Components']['ThisComponent']['Remote'], - $phpMussel['Components']['ThisComponent']['RemoteData'], - $phpMussel['Time'] + 3600 - ); - } -}; - -/** Prepares component extended description (front-end updates page). */ -$phpMussel['PrepareExtendedDescription'] = function (&$Arr, $Key = '') use (&$phpMussel) { - $Key = 'Extended Description: ' . $Key; - if (isset($phpMussel['lang'][$Key])) { - $Arr['Extended Description'] = $phpMussel['lang'][$Key]; - } elseif (empty($Arr['Extended Description'])) { - $Arr['Extended Description'] = ''; - } - if (is_array($Arr['Extended Description'])) { - $phpMussel['IsolateL10N']($Arr['Extended Description'], $phpMussel['Config']['general']['lang']); - } -}; - -/** Prepares component name (front-end updates page). */ -$phpMussel['PrepareName'] = function (&$Arr, $Key = '') use (&$phpMussel) { - $Key = 'Name: ' . $Key; - if (isset($phpMussel['lang'][$Key])) { - $Arr['Name'] = $phpMussel['lang'][$Key]; - } elseif (empty($Arr['Name'])) { - $Arr['Name'] = ''; - } - if (is_array($Arr['Name'])) { - $phpMussel['IsolateL10N']($Arr['Name'], $phpMussel['Config']['general']['lang']); - } -}; - -/** Duplication avoidance (front-end updates page). */ -$phpMussel['ComponentFunctionUpdatePrep'] = function () use (&$phpMussel) { - if (!empty($phpMussel['Components']['Meta'][$_POST['ID']]['Files'])) { - $phpMussel['Arrayify']($phpMussel['Components']['Meta'][$_POST['ID']]['Files']); - $phpMussel['Arrayify']($phpMussel['Components']['Meta'][$_POST['ID']]['Files']['To']); - $phpMussel['Components']['Meta'][$_POST['ID']]['Files']['InUse'] = - $phpMussel['IsInUse']($phpMussel['Components']['Meta'][$_POST['ID']]['Files']['To']); - } -}; - -/** - * Filter the available language options provided by the configuration page on - * the basis of the availability of the corresponding language files. - * - * @param string $ChoiceKey Language code. - * @return bool Valid/Invalid. - */ -$phpMussel['FilterLang'] = function ($ChoiceKey) use (&$phpMussel) { - $Path = $phpMussel['Vault'] . 'lang/lang.' . $ChoiceKey; - return (file_exists($Path . '.php') && file_exists($Path . '.fe.php')); -}; - -/** - * Filter the available hash algorithms provided by the configuration page on - * the basis of their availability. - * - * @param string $ChoiceKey Hash algorithm. - * @return bool Valid/Invalid. - */ -$phpMussel['FilterAlgo'] = function ($ChoiceKey) use (&$phpMussel) { - return ($ChoiceKey === 'PASSWORD_ARGON2I') ? !$phpMussel['VersionCompare'](PHP_VERSION, '7.2.0RC1') : true; -}; - -/** - * Filter the available theme options provided by the configuration page on - * the basis of their availability. - * - * @param string $ChoiceKey Theme ID. - * @return bool Valid/Invalid. - */ -$phpMussel['FilterTheme'] = function ($ChoiceKey) use (&$phpMussel) { - if ($ChoiceKey === 'default') { - return true; - } - $Path = $phpMussel['Vault'] . 'fe_assets/' . $ChoiceKey . '/'; - return (file_exists($Path . 'frontend.css') || file_exists($phpMussel['Vault'] . 'template_' . $ChoiceKey . '.html')); -}; - -/** - * Get the appropriate path for a specified asset as per the defined theme. - * - * @param string $Asset The asset filename. - * @param bool $CanFail Is failure acceptable? (Default: False) - * @return string The asset path. - */ -$phpMussel['GetAssetPath'] = function ($Asset, $CanFail = false) use (&$phpMussel) { - if ( - $phpMussel['Config']['template_data']['theme'] !== 'default' && - file_exists($phpMussel['Vault'] . 'fe_assets/' . $phpMussel['Config']['template_data']['theme'] . '/' . $Asset) - ) { - return $phpMussel['Vault'] . 'fe_assets/' . $phpMussel['Config']['template_data']['theme'] . '/' . $Asset; - } - if (file_exists($phpMussel['Vault'] . 'fe_assets/' . $Asset)) { - return $phpMussel['Vault'] . 'fe_assets/' . $Asset; - } - if ($CanFail) { - return ''; - } - throw new \Exception('Asset not found'); -}; - -/** - * Determines whether to display warnings about the PHP version used (based - * upon what we know at the time that the package was last updated; information - * herein is likely to become stale very quickly when not updated frequently). - * - * References: - * - secure.php.net/releases/ - * - secure.php.net/supported-versions.php - * - cvedetails.com/vendor/74/PHP.html - * - maikuolan.github.io/Compatibility-Charts/ - * - maikuolan.github.io/Vulnerability-Charts/php.html - * - * @param string $Version The PHP version used (defaults to PHP_VERSION). - * return int Warning level. - */ -$phpMussel['VersionWarning'] = function ($Version = PHP_VERSION) use (&$phpMussel) { - $Date = date('Y.n.j', $phpMussel['Time']); - $Level = 0; - if (!empty($phpMussel['ForceVersionWarning']) || $phpMussel['VersionCompare']($Version, '5.6.31') || ( - !$phpMussel['VersionCompare']($Version, '7.0.0') && $phpMussel['VersionCompare']($Version, '7.0.17') - ) || ( - !$phpMussel['VersionCompare']($Version, '7.1.0') && $phpMussel['VersionCompare']($Version, '7.1.3') - )) { - $Level += 2; - } - if ($phpMussel['VersionCompare']($Version, '7.0.0') || ( - !$phpMussel['VersionCompare']($Date, '2017.12.3') && $phpMussel['VersionCompare']($Version, '7.1.0') - ) || ( - !$phpMussel['VersionCompare']($Date, '2018.12.1') && $phpMussel['VersionCompare']($Version, '7.2.0') - )) { - $Level += 1; - } - $phpMussel['ForceVersionWarning'] = false; - return $Level; -}; - -/** - * Executes a list of closures or commands when specific conditions are met. - * - * @param array|string $Closures The list of closures or commands to execute. - */ -$phpMussel['FE_Executor'] = function ($Closures) use (&$phpMussel) { - $phpMussel['Arrayify']($Closures); - foreach ($Closures as $Closure) { - if (isset($phpMussel[$Closure]) && is_object($phpMussel[$Closure])) { - $phpMussel[$Closure](); - } elseif (($Pos = strpos($Closure, ' ')) !== false) { - $Params = substr($Closure, $Pos + 1); - $Closure = substr($Closure, 0, $Pos); - if (isset($phpMussel[$Closure]) && is_object($phpMussel[$Closure])) { - $phpMussel[$Closure]($Params); - } - } - } -}; - -/** - * Localises a number according to configuration specification. - * - * @param int $Number The number to localise. - * @param int $Decimals Decimal places (optional). - */ -$phpMussel['Number_L10N'] = function ($Number, $Decimals = 0) use (&$phpMussel) { - $Number = (real)$Number; - $Sets = [ - 'NoSep-1' => ['.', '', 3, false, 0], - 'NoSep-2' => [',', '', 3, false, 0], - 'Latin-1' => ['.', ',', 3, false, 0], - 'Latin-2' => ['.', ' ', 3, false, 0], - 'Latin-3' => [',', '.', 3, false, 0], - 'Latin-4' => [',', ' ', 3, false, 0], - 'Latin-5' => ['·', ',', 3, false, 0], - 'China-1' => ['.', ',', 4, false, 0], - 'India-1' => ['.', ',', 2, false, -1], - 'India-2' => ['.', ',', 2, ['०', '१', '२', '३', '४', '५', '६', '७', '८', '९'], -1], - 'Bengali-1' => ['.', ',', 2, ['০', '১', '২', '৩', '৪', '৫', '৬', '৭', '৮', '৯'], -1], - 'Arabic-1' => ['٫', '', 3, ['٠', '١', '٢', '٣', '٤', '٥', '٦', '٧', '٨', '٩'], 0], - 'Arabic-2' => ['٫', '٬', 3, ['٠', '١', '٢', '٣', '٤', '٥', '٦', '٧', '٨', '٩'], 0], - 'Thai-1' => ['.', ',', 3, ['๐', '๑', '๒', '๓', '๔', '๕', '๖', '๗', '๘', '๙'], 0] - ]; - $Set = empty($Sets[$phpMussel['Config']['general']['numbers']]) ? 'Latin-1' : $Sets[$phpMussel['Config']['general']['numbers']]; - $DecPos = strpos($Number, '.') ?: strlen($Number); - if ($Decimals && $Set[0]) { - $Fraction = substr($Number, $DecPos + 1, $Decimals); - $Fraction .= str_repeat('0', $Decimals - strlen($Fraction)); - } - for ($Formatted = '', $ThouPos = $Set[4], $Pos = 1; $Pos <= $DecPos; $Pos++) { - if ($ThouPos >= $Set[2]) { - $ThouPos = 1; - $Formatted = $Set[1] . $Formatted; - } else { - $ThouPos++; - } - $NegPos = $DecPos - $Pos; - $ThisChar = substr($Number, $NegPos, 1); - $Formatted = empty($Set[3][$ThisChar]) ? $ThisChar . $Formatted : $Set[3][$ThisChar] . $Formatted; - } - if ($Decimals && $Set[0]) { - $Formatted .= $Set[0]; - for ($FracLen = strlen($Fraction), $Pos = 0; $Pos < $FracLen; $Pos++) { - $Formatted .= empty($Set[3][$Fraction[$Pos]]) ? $Fraction[$Pos] : $Set[3][$Fraction[$Pos]]; - } - } - return $Formatted; -}; - -/** - * Generates JavaScript code for localising numbers according to configuration - * specification. - */ -$phpMussel['Number_L10N_JS'] = function () use (&$phpMussel) { - $Base = - 'function l10nn(l10nd){%4$s};function nft(r){var x=r.indexOf(\'.\')!=-1?' . - '\'%1$s\'+r.replace(/^.*\./gi,\'\'):\'\',n=r.replace(/\..*$/gi,\'\').rep' . - 'lace(/[^0-9]/gi,\'\'),t=n.length;for(e=\'\',b=%5$d,i=1;i<=t;i++){b>%3$d' . - '&&(b=1,e=\'%2$s\'+e);var e=l10nn(n.substring(t-i,t-(i-1)))+e;b++}var t=' . - 'x.length;for(y=\'\',b=1,i=1;i<=t;i++){var y=l10nn(x.substring(t-i,t-(i-' . - '1)))+y}return e+y}'; - $Sets = [ - 'NoSep-1' => ['.', '', 3, 'return l10nd', 1], - 'NoSep-2' => [',', '', 3, 'return l10nd', 1], - 'Latin-1' => ['.', ',', 3, 'return l10nd', 1], - 'Latin-2' => ['.', ' ', 3, 'return l10nd', 1], - 'Latin-3' => [',', '.', 3, 'return l10nd', 1], - 'Latin-4' => [',', ' ', 3, 'return l10nd', 1], - 'Latin-5' => ['·', ',', 3, 'return l10nd', 1], - 'China-1' => ['.', ',', 4, 'return l10nd', 1], - 'India-1' => ['.', ',', 2, 'return l10nd', 0], - 'India-2' => ['.', ',', 2, 'var nls=[\'०\',\'१\',\'२\',\'३\',\'४\',\'५\',\'६\',\'७\',\'८\',\'९\'];return nls[l10nd]||l10nd', 0], - 'Bengali-1' => ['.', ',', 2, 'var nls=[\'০\',\'১\',\'২\',\'৩\',\'৪\',\'৫\',\'৬\',\'৭\',\'৮\',\'৯\'];return nls[l10nd]||l10nd', 0], - 'Arabic-1' => ['٫', '', 3, 'var nls=[\'٠\',\'١\',\'٢\',\'٣\',\'٤\',\'٥\',\'٦\',\'٧\',\'٨\',\'٩\'];return nls[l10nd]||l10nd', 1], - 'Arabic-2' => ['٫', '٬', 3, 'var nls=[\'٠\',\'١\',\'٢\',\'٣\',\'٤\',\'٥\',\'٦\',\'٧\',\'٨\',\'٩\'];return nls[l10nd]||l10nd', 1], - 'Thai-1' => ['.', ',', 3, 'var nls=[\'๐\',\'๑\',\'๒\',\'๓\',\'๔\',\'๕\',\'๖\',\'๗\',\'๘\',\'๙\'];return nls[l10nd]||l10nd', 1], - ]; - if (!empty($phpMussel['Config']['general']['numbers']) && isset($Sets[$phpMussel['Config']['general']['numbers']])) { - $Set = $Sets[$phpMussel['Config']['general']['numbers']]; - return sprintf($Base, $Set[0], $Set[1], $Set[2], $Set[3], $Set[4]); - } - return sprintf($Base, $Sets['Latin-1'][0], $Sets['Latin-1'][1], $Sets['Latin-1'][2], $Sets['Latin-1'][3], $Sets['Latin-1'][4]); -}; - -/** - * Switch control for front-end page filters. - * - * @param array $Switches Names of available switches. - * @param string $Selector Switch selector variable. - * @param bool $StateModified Determines whether the filter state has been modified. - * @param string $Redirect Reconstructed path to redirect to when the state changes. - * @param string $Options Recontructed filter controls. - */ -$phpMussel['FilterSwitch'] = function($Switches, $Selector, &$StateModified, &$Redirect, &$Options) use (&$phpMussel) { - foreach ($Switches as $Switch) { - $State = (!empty($Selector) && $Selector === $Switch); - $phpMussel['FE'][$Switch] = empty($phpMussel['QueryVars'][$Switch]) ? false : ( - ($phpMussel['QueryVars'][$Switch] === 'true' && !$State) || - ($phpMussel['QueryVars'][$Switch] !== 'true' && $State) - ); - if ($State) { - $StateModified = true; - } - if ($phpMussel['FE'][$Switch]) { - $Redirect .= '&' . $Switch . '=true'; - $LangItem = 'switch-' . $Switch . '-set-false'; - } else { - $Redirect .= '&' . $Switch . '=false'; - $LangItem = 'switch-' . $Switch . '-set-true'; - } - $Label = isset($phpMussel['lang'][$LangItem]) ? $phpMussel['lang'][$LangItem] : $LangItem; - $Options .= ''; - } -}; - -/** Quarantine file list generator (returns an array of quarantined files). */ -$phpMussel['Quarantine-RecursiveList'] = function ($DeleteMode = false) use (&$phpMussel) { - $Arr = []; - $Key = -1; - $Offset = strlen($phpMussel['qfuPath']); - $List = new RecursiveIteratorIterator(new RecursiveDirectoryIterator($phpMussel['qfuPath']), RecursiveIteratorIterator::SELF_FIRST); - foreach ($List as $Item => $List) { - /** Skips if not a quarantined file. */ - if (!preg_match('~\.qfu$~i', $Item) || is_dir($Item) || !is_file($Item) || !is_readable($Item)) { - continue; - } - /** Deletes all files in quarantine. */ - if ($DeleteMode) { - $DeleteMe = substr($Item, $Offset); - $phpMussel['FE']['state_msg'] .= '' . $DeleteMe . ' ' . (unlink( - $phpMussel['qfuPath'] . $DeleteMe - ) ? $phpMussel['lang']['response_file_deleted'] : $phpMussel['lang']['response_delete_error']) . '
        '; - continue; - } - $Key++; - $Arr[$Key] = [ - 'QFU-Name' => substr($Item, $Offset), - 'QFU-JS-ID' => substr($Item, $Offset, -4), - 'QFU-Size' => filesize($Item) - ]; - $phpMussel['FormatFilesize']($Arr[$Key]['QFU-Size']); - $Head = $phpMussel['ReadFile']($Item, 256); - /** Upload date/time. */ - $Arr[$Key]['Upload-Date'] = ( - ($DatePos = strpos($Head, 'Time/Date Uploaded: ')) !== false - ) ? $phpMussel['TimeFormat']( - (int)substr($Head, $DatePos + 20, 16), - $phpMussel['Config']['general']['timeFormat'] - ) : $phpMussel['lang']['field_filetype_unknown']; - /** Upload origin. */ - $Arr[$Key]['Upload-Origin'] = ( - ($OriginStartPos = strpos($Head, 'Uploaded From: ')) !== false && - ($OriginEndPos = strpos($Head, ' ', $OriginStartPos + 15)) !== false - ) ? substr($Head, $OriginStartPos + 15, $OriginEndPos - $OriginStartPos - 15) : $phpMussel['lang']['field_filetype_unknown']; - /** If the phpMussel QFU (Quarantined File Upload) header isn't found, it probably isn't a quarantined file. */ - if (($HeadPos = strpos($Head, "\xa1phpMussel\x21")) !== false && (substr($Head, $HeadPos + 31, 1) === "\x01")) { - $Head = substr($Head, $HeadPos); - $Arr[$Key]['Upload-MD5'] = bin2hex(substr($Head, 11, 16)); - $Arr[$Key]['Upload-Size'] = $phpMussel['UnpackSafe']('l*', substr($Head, 27, 4)); - $Arr[$Key]['Upload-Size'] = isset($Arr[$Key]['Upload-Size'][1]) ? (int)$Arr[$Key]['Upload-Size'][1] : 0; - $phpMussel['FormatFilesize']($Arr[$Key]['Upload-Size']); - } else { - $Arr[$Key]['Upload-MD5'] = $phpMussel['lang']['field_filetype_unknown']; - $Arr[$Key]['Upload-Size'] = $phpMussel['lang']['field_filetype_unknown']; - } - /** Appends Virus Total search URL for this hash onto the hash. */ - if (strlen($Arr[$Key]['Upload-MD5']) === 32) { - $Arr[$Key]['Upload-MD5'] = sprintf( - '%1$s', - $Arr[$Key]['Upload-MD5'] - ); - } - } - return $Arr; -}; - -/** Restore a quarantined file (returns the restored file data or false on failure). */ -$phpMussel['Quarantine-Restore'] = function ($File, $Key) use (&$phpMussel) { - $phpMussel['RestoreStatus'] = 1; - if (!$File || !$Key) { - return false; - } - $Data = $phpMussel['ReadFile']($File); - /** Fetch headers. */ - if (($HeadPos = strpos($Data, "\xa1phpMussel\x21")) === false || (substr($Data, $HeadPos + 31, 1) !== "\x01")) { - $phpMussel['RestoreStatus'] = 2; - return false; - } - $Data = substr($Data, $HeadPos); - $UploadMD5 = bin2hex(substr($Data, 11, 16)); - $UploadSize = $phpMussel['UnpackSafe']('l*', substr($Data, 27, 4)); - $UploadSize = isset($UploadSize[1]) ? (int)$UploadSize[1] : 0; - $Data = substr($Data, 32); - $DataLen = strlen($Data); - if ($Key < 128) { - $Key = $phpMussel['HexSafe'](hash('sha512', $Key) . hash('whirlpool', $Key)); - } - $KeyLen = strlen($Key); - $Output = ''; - $Cycle = 0; - while ($Cycle < $DataLen) { - for ($Inner = 0; $Inner < $KeyLen; $Inner++, $Cycle++) { - if (strlen($Output) >= $UploadSize) { - break 2; - } - $L = substr($Data, $Cycle, 1); - $R = substr($Key, $Inner, 1); - $Output .= ($L === false ? "\x00" : $L) ^ ($R === false ? "\x00" : $R); - } - } - $Output = gzinflate($Output); - if (empty($Output) || md5($Output) !== $UploadMD5) { - $phpMussel['RestoreStatus'] = 3; - return false; - } - $phpMussel['RestoreStatus'] = 0; - return $Output; -}; - -/** Duplication avoidance (front-end updates page). */ -$phpMussel['AppendTests'] = function (&$Component) use (&$phpMussel) { - $TestData = $phpMussel['FECacheGet']( - $phpMussel['FE']['Cache'], - $phpMussel['Components']['RemoteMeta'][$Component['ID']]['Tests'] - ); - if (!$TestData) { - $TestData = $phpMussel['Request']( - $phpMussel['Components']['RemoteMeta'][$Component['ID']]['Tests'] - ) ?: '-'; - $phpMussel['FECacheAdd']( - $phpMussel['FE']['Cache'], - $phpMussel['FE']['Rebuild'], - $phpMussel['Components']['RemoteMeta'][$Component['ID']]['Tests'], - $TestData, - $phpMussel['Time'] + 1800 - ); - } - if (substr($TestData, 0, 1) === '{' && substr($TestData, -1) === '}') { - $TestData = json_decode($TestData, true, 5); - } - if (!empty($TestData['statuses']) && is_array($TestData['statuses'])) { - $TestsTotal = 0; - $TestsPassed = 0; - $TestDetails = ''; - foreach ($TestData['statuses'] as $ThisStatus) { - $TestsTotal++; - $StatusHead = ''; - if ( - !empty($ThisStatus['context']) && - !empty($ThisStatus['target_url']) && - !empty($ThisStatus['state']) - ) { - if ($ThisStatus['state'] === 'success') { - if ($TestsPassed !== '?') { - $TestsPassed++; - } - $StatusHead .= '✔️ '; - } elseif ($ThisStatus['state'] === 'pending') { - $TestsPassed = '?'; - $StatusHead .= '❓ '; - } else { - $StatusHead .= '❌ '; - } - } - $StatusHead .= ''; - $phpMussel['AppendToString']($TestDetails, '
        ', - $StatusHead . $ThisStatus['context'] . '
        ' - ); - } - if ($TestsTotal === $TestsPassed) { - $TestClr = 'txtGn'; - } else { - $TestClr = ($TestsPassed === '?' || $TestsPassed >= ($TestsTotal / 2)) ? 'txtOe' : 'txtRd'; - } - $TestsTotal = sprintf( - '%2$s/%3$s ' . - '' . - '', - $TestClr, - ($TestsPassed === '?' ? '?' : $phpMussel['Number_L10N']($TestsPassed)), - $phpMussel['Number_L10N']($TestsTotal), - $Component['ID'], - $TestDetails - ); - $phpMussel['AppendToString']($Component['StatusOptions'], '
        ', - '
        ' . $phpMussel['lang']['label_tests'] . ' ' . $TestsTotal - ); - } -}; - -/** Traversal detection. */ -$phpMussel['Traverse'] = function ($Path) { - return !preg_match('~(?:[\./]{2}|[\x01-\x1f\[-^`?*$])~i', str_replace("\\", '/', $Path)); -}; - -/** Sort function used by the front-end updates page. */ -$phpMussel['UpdatesSortFunc'] = function ($A, $B) { - $CheckA = preg_match('/^l10n/i', $A); - $CheckB = preg_match('/^l10n/i', $B); - if (($CheckA && !$CheckB) || ($A === 'phpMussel' && $B !== 'phpMussel')) { - return -1; - } - if (($CheckB && !$CheckA) || ($B === 'phpMussel' && $A !== 'phpMussel')) { - return 1; - } - if ($A < $B) { - return -1; - } - if ($A > $B) { - return 1; - } - return 0; -}; diff --git a/libraries/plugins/phpMussel/vault/functions.php b/libraries/plugins/phpMussel/vault/functions.php deleted file mode 100644 index 3546b41..0000000 --- a/libraries/plugins/phpMussel/vault/functions.php +++ /dev/null @@ -1,5509 +0,0 @@ - 0) { - $key = key($ar); - if (is_array($ar[$key])) { - $i++; - $ar[$key] = $phpMussel['implode_md']($ar[$key], $j, $i); - $i--; - } - if (!$out) { - $out = $ar[$key]; - } elseif (!(!$e && empty($ar[$key]))) { - $out .= $x . $ar[$key]; - } - next($ar); - $c--; - } - return $out; -}; - -/** - * A function for comparing substrings with hex values. - * - * @param string $str The source/raw string to be compared. - * @param int $st Optional; At what point in the source/raw string should the - * comparing begin? The first character of the string starts at "0". - * @param int $l Optional; For how many bytes of the string, starting from - * `$st`, should the comparing occur? Defaults to the total length of the - * string. - * @param string $x The hexadecimal value to compare the string against. - * @param bool $p Optional; When set to false, the function will return true if - * the hexadecimal value can be matched to at least some part of the - * substring being compared; When set to true, the function will return - * true if the hexadecimal value is an exact match to the entirety of the - * substring being compared (optional). - * @return bool The results of the comparison (true if matched, false if not - * matched). - */ -$phpMussel['substr_compare_hex'] = function ($str = '', $st = 0, $l = 0, $x = 0, $p = false) { - if (!$l) { - $l = strlen($str); - } - if (!$x || !$l) { - return false; - } - for ($str = substr($str, $st, $l), $y = '', $i = 0; $i < $l; $i++) { - $z = dechex(ord(substr($str, $i, 1))); - $y .= (strlen($z) === 1) ? $z = '0' . $z : $z; - } - return !$p ? (substr_count($y, strtolower($x)) > 0) : ($y === strtolower($x)); -}; - -/** - * Does some simple decoding work on strings. - * - * @param string $str The string to be decoded. - * @return string The decoded string. - */ -$phpMussel['prescan_decode'] = function ($str) use (&$phpMussel) { - $nstr = html_entity_decode(urldecode(str_ireplace('&#', '&#', str_ireplace('&amp;', '&', $str)))); - if ($nstr !== $str) { - $nstr = $phpMussel['prescan_decode']($nstr); - } - return $nstr; -}; - -/** - * Some simple obfuscation for potentially blocked functions; We need this to - * avoid triggering false positives for some potentially overzealous - * server-based security solutions that would usually flag this file as - * malicious when they detect it containing the names of suspect functions. - * - * @param string $n An alias for the function that we want to call. - * @param string $str Some data to parse to the function being called. - * @return string The parsed data and/or decoded string (if $str is empty, the - * the resolved alias will be returned instead). - */ -$phpMussel['Function'] = function ($n, $str = '') { - static $x = 'abcdefghilnorstxz12346_'; - $fList = [ - 'GZ' => - $x[6] . $x[16] . $x[8] . $x[10] . $x[5] . $x[9] . $x[0] . $x[14] . $x[4], - 'R13' => - $x[13] . $x[14] . $x[12] . $x[22] . $x[12] . $x[11] . $x[14] . $x[17] . $x[19], - 'B64' => - $x[1] . $x[0] . $x[13] . $x[4] . $x[21] . $x[20] . $x[22] . $x[3] . $x[4] . $x[2] . $x[11] . $x[3] . $x[4], - 'HEX' => - $x[7] . $x[4] . $x[15] . $x[18] . $x[1] . $x[8] . $x[10] - ]; - if (!isset($fList[$n])) { - return ''; - } - if (!$str || !function_exists($fList[$n])) { - return $fList[$n]; - } - try { - $Return = $fList[$n]($str); - } catch (\Exception $e) { - $Return = ''; - } - return $Return; -}; - -/** - * Does some more complex decoding and normalisation work on strings. - * - * @param string $str The string to be decoded/normalised. - * @param bool $html If true, "style" and "script" tags will be stripped from - * the input string (optional; defaults to false). - * @param bool $decode If false, the input string will be normalised, but not - * decoded; If true, the input string will be normalised *and* decoded. - * Optional; Defaults to false. - * @return string The decoded/normalised string. - */ -$phpMussel['prescan_normalise'] = function ($str, $html = false, $decode = false) use (&$phpMussel) { - $ostr = ''; - if ($decode) { - $ostr .= $str; - while (true) { - if (function_exists($phpMussel['Function']('GZ'))) { - if ($c = preg_match_all( - '/(' . $phpMussel['Function']('GZ') . '\s*\(\s*["\'])(.{1,4096})(,[0-9])?(["\']\s*\))/i', - $str, $matches)) { - for ($i = 0; $c > $i; $i++) { - $str = str_ireplace( - $matches[0][$i], - '"' . $phpMussel['Function']('GZ', $phpMussel['substrbl']($phpMussel['substraf']($matches[0][$i], $matches[1][$i]), $matches[4][$i])) . '"', - $str - ); - } - continue; - } - } - if ($c = preg_match_all( - '/(' . $phpMussel['Function']('B64') . '|decode_base64|base64\.b64decode|atob|Base64\.decode64)(\s*' . - '\(\s*["\'\`])([A-Za-z0-9+\/]{4})*([A-Za-z0-9+\/]{4}|[A-Za-z0-9+\/]{3}=|[A-Za-z0-9+\/]{2}==)(["\'\`]' . - '\s*\))/i', - $str, $matches)) { - for ($i = 0; $c > $i; $i++) { - $str = str_ireplace( - $matches[0][$i], - '"' . $phpMussel['Function']('B64', $phpMussel['substrbl']($phpMussel['substraf']($matches[0][$i], $matches[1][$i] . $matches[2][$i]), $matches[5][$i])) . '"', - $str - ); - } - continue; - } - if ($c = preg_match_all( - '/(' . $phpMussel['Function']('R13') . '\s*\(\s*["\'])([^\'"\(\)]{1,4096})(["\']\s*\))/i', - $str, $matches)) { - for ($i = 0; $c > $i; $i++) { - $str = str_ireplace( - $matches[0][$i], - '"' . $phpMussel['Function']('R13', $phpMussel['substrbl']($phpMussel['substraf']($matches[0][$i], $matches[1][$i]), $matches[3][$i])) . '"', - $str - ); - } - continue; - } - if ($c = preg_match_all( - '/(' . $phpMussel['Function']('HEX') . '\s*\(\s*["\'])([a-fA-F0-9]{1,4096})(["\']\s*\))/i', - $str, $matches )) { - for ($i = 0; $c > $i; $i++) { - $str = str_ireplace( - $matches[0][$i], - '"' . $phpMussel['HexSafe']($phpMussel['substrbl']($phpMussel['substraf']($matches[0][$i], $matches[1][$i]), $matches[3][$i])) . '"', - $str - ); - } - continue; - } - if ($c = preg_match_all( - '/([Uu][Nn][Pp][Aa][Cc][Kk]\s*\(\s*["\']\s*H\*\s*["\']\s*,\s*["\'])([a-fA-F0-9]{1,4096})(["\']\s*\))/', - $str, $matches)) { - for ($i = 0; $c > $i; $i++) { - $str = str_replace($matches[0][$i], '"' . $phpMussel['HexSafe']($phpMussel['substrbl']($phpMussel['substraf']($matches[0][$i], $matches[1][$i]), $matches[3][$i])) . '"', $str); - } - continue; - } - break; - } - } - $str = preg_replace('/[^\x21-\x7e]/', '', strtolower($phpMussel['prescan_decode']($str . $ostr))); - unset($ostr); - if ($html) { - $str = preg_replace([ - '@]*?>.*?@si', - '@<[\/\!]*?[^<>]*?>@si', - '@]*?>.*?@siU', - '@@' - ], '', $str); - } - return trim($str); -}; - -/** - * Gets substring from haystack prior to the first occurrence of needle. - * - * @param string $h The haystack. - * @param string $n The needle. - * @return string The substring. - */ -$phpMussel['substrbf'] = function ($h, $n) { - return !$n ? '' : substr($h, 0, strpos($h, $n)); -}; - -/** - * Gets substring from haystack after the first occurrence of needle. - * - * @param string $h The haystack. - * @param string $n The needle. - * @return string The substring. - */ -$phpMussel['substraf'] = function ($h, $n) { - return !$n ? '' : substr($h, strpos($h, $n) + strlen($n)); -}; - -/** - * Gets substring from haystack prior to the last occurrence of needle. - * - * @param string $h The haystack. - * @param string $n The needle. - * @return string The substring. - */ -$phpMussel['substrbl'] = function ($h, $n) { - return !$n ? '' : substr($h, 0, strrpos($h, $n)); -}; - -/** - * Gets substring from haystack after the last occurrence of needle. - * - * @param string $h The haystack. - * @param string $n The needle. - * @return string The substring. - */ -$phpMussel['substral'] = function ($h, $n) { - return !$n ? '' : substr($h, strrpos($h, $n) + strlen($n)); -}; - -/** - * This function reads files and returns the contents of those files. - * - * @param string $File Path and filename of the file to read. - * @param int $s Number of blocks to read from the file (optional; can be - * manually specified, but it's best to just ignore it and let the - * function work it out for itself). - * @param bool $PreChecked When false, checks that the file exists and is - * writable. Defaults to false. - * @param int $Blocks The total size of a single block in kilobytes (optional; - * defaults to 128, i.e., 128KB or 131072 bytes). This can be modified by - * developers as per their individual needs. Generally, a smaller value - * will increase stability but decrease performance, whereas a larger - * value will increase performance but decrease stability. - * @return string|bool Content of the file returned by the function (or false - * on failure). - */ -$phpMussel['ReadFile'] = function ($File, $Size = 0, $PreChecked = false, $Blocks = 128) { - if (!$PreChecked && (!is_file($File) || !is_readable($File))) { - return false; - } - $Blocksize = $Blocks * 1024; - $Filesize = filesize($File); - if (!$Size) { - $Size = ($Filesize && $Blocksize) ? ceil($Filesize / $Blocksize) : 0; - } - $Data = ''; - if ($Size > 0) { - $Handle = fopen($File, 'rb'); - $r = 0; - while ($r < $Size) { - $Data .= fread($Handle, $Blocksize); - $r++; - } - fclose($Handle); - } - return $Data ?: false; -}; - -/** - * A very simple wrapper for file() that checks for the existence of files - * before attempting to read them, in order to avoid warnings about - * non-existent files. - * - * @param string $Filename Refer to the description for file(). - * @param int $Flags Refer to the description for file(). - * @param array $Context Refer to the description for file(). - * @return array|bool Same as with file(), but won't trigger warnings. - */ -$phpMussel['ReadFileAsArray'] = function ($Filename, $Flags = 0, $Context = false) { - if (!is_readable($Filename)) { - return false; - } - if (!$Context) { - return !$Flags ? file($Filename) : file($Filename, $Flags); - } - return file($Filename, $Flags, $Context); -}; - -/** Deletes expired cache entries and regenerates cache files. */ -$phpMussel['CleanCache'] = function () use (&$phpMussel) { - if (!empty($phpMussel['memCache']['CacheCleaned'])) { - return true; - } - $phpMussel['memCache']['CacheCleaned'] = true; - $CacheFiles = []; - $FileIndex = $phpMussel['Vault'] . 'cache/index.dat'; - if (!is_readable($FileIndex)) { - return false; - } - $FileDataOld = $FileData = $phpMussel['ReadFile']($FileIndex); - if (substr_count($FileData, ';')) { - $FileData = explode(';', $FileData); - foreach ($FileData as &$ThisData) { - if (strpos($ThisData, ':') === false) { - $ThisData = ''; - continue; - } - $ThisData = explode(':', $ThisData, 3); - if ($ThisData[1] > 0 && $phpMussel['Time'] > $ThisData[1]) { - $FileKey = bin2hex(substr($ThisData[0], 0, 1)); - if (!isset($CacheFiles[$FileKey])) { - $CacheFiles[$FileKey] = !is_readable( - $phpMussel['cachePath'] . $FileKey . '.tmp' - ) ? '' : $phpMussel['ReadFile']($phpMussel['cachePath'] . $FileKey . '.tmp', 0, true); - } - while (strpos($CacheFiles[$FileKey], $ThisData[0] . ':') !== false) { - $CacheFiles[$FileKey] = str_ireplace($ThisData[0] . ':' . $phpMussel['substrbf']( - $phpMussel['substraf']($CacheFiles[$FileKey], $ThisData[0] . ':'), ';' - ) . ';', '', $CacheFiles[$FileKey]); - } - $ThisData = ''; - continue; - } - $ThisData = $ThisData[0] . ':' . $ThisData[1]; - } - $FileData = str_replace(';;', ';', implode(';', array_filter($FileData)) . ';'); - if ($FileDataOld !== $FileData) { - $Handle = fopen($FileIndex, 'w'); - fwrite($Handle, $FileData); - fclose($Handle); - } - } - foreach ($CacheFiles as $CacheEntryKey => $CacheEntryValue) { - if (strlen($CacheEntryValue) < 2) { - if (file_exists($phpMussel['cachePath'] . $CacheEntryKey . '.tmp')) { - unlink($phpMussel['cachePath'] . $CacheEntryKey . '.tmp'); - } - continue; - } - $Handle = fopen($phpMussel['cachePath'] . $CacheEntryKey . '.tmp', 'w'); - fwrite($Handle, $CacheEntryValue); - fclose($Handle); - } - return true; -}; - -/** - * Retrieves cache entries. - * - * @param string|array $Entry The name of the cache entry/entries to retrieve; - * Can be a string to specify a single entry, or an array of strings to - * specify multiple entries. - * @return string|array Contents of the cache entry/entries. - */ -$phpMussel['FetchCache'] = function ($Entry = '') use (&$phpMussel) { - $phpMussel['CleanCache'](); - if (!$Entry) { - return ''; - } - if (is_array($Entry)) { - $Out = []; - array_walk($Entry, function($Value, $Key) use (&$phpMussel, &$Out) { - $Out[$Key] = $phpMussel['FetchCache']($Value); - }); - return $Out; - } - $File = $phpMussel['cachePath'] . bin2hex(substr($Entry, 0, 1)) . '.tmp'; - if (!is_readable($File) || !$FileData = $phpMussel['ReadFile']($File, 0, true)) { - return ''; - } - if (!$Item = strpos($FileData, $Entry . ':') !== false ? $Entry . ':' . $phpMussel['substrbf']( - $phpMussel['substraf']($FileData, $Entry . ':'), ';' - ) . ';' : '') { - return ''; - } - $Expiry = $phpMussel['substrbf']($phpMussel['substraf']($Item, $Entry . ':'), ':'); - if ($Expiry > 0 && $phpMussel['Time'] > $Expiry) { - while (substr_count($FileData, $Entry . ':')) { - $FileData = str_ireplace($Item, '', $FileData); - } - $Handle = fopen($File, 'w'); - fwrite($Handle, $FileData); - fclose($Handle); - return ''; - } - if (!$ItemData = $phpMussel['substrbf']($phpMussel['substraf']($Item, $Entry . ':' . $Expiry . ':'), ';')) { - return ''; - } - return $phpMussel['Function']('GZ', $phpMussel['HexSafe']($ItemData)) ?: ''; -}; - -/** - * Creates cache entry and saves it to the cache. - * - * @param string $Entry Name of the cache entry to create. - * @param int $Expiry Unix time until the cache entry expires. - * @param string $ItemData Contents of the cache entry. - * @return bool This should always return true, unless something goes wrong. - */ -$phpMussel['SaveCache'] = function ($Entry = '', $Expiry = 0, $ItemData = '') use (&$phpMussel) { - $phpMussel['CleanCache'](); - if (!$Entry || !$ItemData) { - return false; - } - if (!$Expiry) { - $Expiry = $phpMussel['Time']; - } - $File = $phpMussel['cachePath'] . bin2hex($Entry[0]) . '.tmp'; - $Data = $phpMussel['ReadFile']($File) ?: ''; - while (substr_count($Data, $Entry . ':')) { - $Data = str_ireplace($Entry . ':' . $phpMussel['substrbf']($phpMussel['substraf']($Data, $Entry . ':'), ';') . ';', '', $Data); - } - $Data .= $Entry . ':' . $Expiry . ':' . bin2hex(gzdeflate($ItemData,9)) . ';'; - $Handle = fopen($File, 'w'); - fwrite($Handle, $Data); - fclose($Handle); - $IndexFile = $phpMussel['Vault'] . 'cache/index.dat'; - $IndexNewData = $IndexData = $phpMussel['ReadFile']($IndexFile) ?: ''; - while (substr_count($IndexNewData, $Entry . ':')) { - $IndexNewData = str_ireplace($Entry . ':' . $phpMussel['substrbf']($phpMussel['substraf']($IndexNewData, $Entry . ':'), ';') . ';', '', $IndexNewData); - } - $IndexNewData .= $Entry . ':' . $Expiry . ';'; - if ($IndexNewData !== $IndexData) { - $IndexHandle = fopen($IndexFile, 'w'); - fwrite($IndexHandle, $IndexNewData); - fclose($IndexHandle); - } - return true; -}; - -/** Reads and prepares cached hash data. */ -$phpMussel['PrepareHashCache'] = function () use (&$phpMussel) { - $phpMussel['HashCache']['Data'] = - $phpMussel['Config']['general']['scan_cache_expiry'] > 0 ? $phpMussel['FetchCache']('HashCache') : ''; - if (!empty($phpMussel['HashCache']['Data'])) { - $phpMussel['HashCache']['Data'] = explode(';', $phpMussel['HashCache']['Data']); - $Build = []; - foreach ($phpMussel['HashCache']['Data'] as $CacheItem) { - if (strpos($CacheItem, ':') !== false) { - $CacheItem = explode(':', $CacheItem, 4); - if (!($phpMussel['Time'] > $CacheItem[1])) { - $Build[$CacheItem[0]] = $CacheItem; - } - } - } - $phpMussel['HashCache']['Data'] = $Build; - } -}; - -/** - * Quarantines file uploads by using a key generated from your quarantine key - * to bitshift the input string (the file uploads), appending a header with an - * explanation of what the bitshifted data is, along with an MD5 hash checksum - * of its non-quarantined counterpart, and then saves it all to a QFU file, - * storing these QFU files in your quarantine directory. - * - * This isn't hardcore encryption, but it should be sufficient to prevent - * accidental execution of quarantined files and to allow safe handling of - * those files, which is the whole point of quarantining them in the first - * place. Improvements might be made in the future. - * - * @param string $In The input string (the file upload / source data). - * @param string $key Your quarantine key. - * @param string $ip Data origin (usually, the IP address of the uploader). - * @param string $id The QFU filename to use (calculated beforehand). - * @return bool This should always return true, unless something goes wrong. - */ -$phpMussel['Quarantine'] = function ($In, $key, $ip, $id) use (&$phpMussel) { - if (!$In || !$key || !$ip || !$id || !function_exists('gzdeflate') || ( - strlen($key) < 128 && - !$key = $phpMussel['HexSafe'](hash('sha512', $key) . hash('whirlpool', $key)) - )) { - return false; - } - $k = strlen($key); - $FileSize = strlen($In); - $h = "\xa1phpMussel\x21" . $phpMussel['HexSafe'](md5($In)) . pack('l*', $FileSize) . "\x01"; - $In = gzdeflate($In, 9); - $Out = ''; - $i = 0; - while ($i < $FileSize) { - for ($j = 0; $j < $k; $j++, $i++) { - if (strlen($Out) >= $FileSize) { - break 2; - } - $L = substr($In, $i, 1); - $R = substr($key, $j, 1); - $Out .= ($L === false ? "\x00" : $L) ^ ($R === false ? "\x00" : $R); - } - } - $Out = - "\x2f\x3d\x3d\x20phpMussel\x20Quarantined\x20File\x20Upload\x20\x3d" . - "\x3d\x5c\n\x7c\x20Time\x2fDate\x20Uploaded\x3a\x20" . - str_pad($phpMussel['Time'], 18, "\x20") . - "\x7c\n\x7c\x20Uploaded\x20From\x3a\x20" . str_pad($ip, 22, "\x20") . - "\x20\x7c\n\x5c" . str_repeat("\x3d", 39) . "\x2f\n\n\n" . $h . $Out; - $u = $phpMussel['MemoryUse']($phpMussel['qfuPath']); - $u = $u['s'] + strlen($Out); - if ($u > $phpMussel['ReadBytes']($phpMussel['Config']['general']['quarantine_max_usage'])) { - $u = $phpMussel['MemoryUse']( - $phpMussel['qfuPath'], - $u - $phpMussel['ReadBytes']($phpMussel['Config']['general']['quarantine_max_usage']) - ); - } - $Handle = fopen($phpMussel['qfuPath'] . $id . '.qfu', 'a'); - fwrite($Handle, $Out); - fclose($Handle); - if (!$phpMussel['EOF']) { - $phpMussel['Stats-Increment']('Web-Quarantined', 1); - } - return true; -}; - -/** - * Calculates the memory usage of a directory, and optionally, enforces a - * limitation upon the memory usage of that directory by way of deleting the - * contents of that directory until a specified quota of bytes to be deleted - * has been met. - * - * This function is recursive, and will check (and/or delete from) the - * specified directory and all subdirectories that it contains; It should be - * regarded as a subfunction of the quarantine functionality, used by the - * quarantine functionality to enforce the quarantine memory usage limit. - * - * @param string $p The path and name of the directory to be checked. - * @param int $d A quota for how many bytes should be deleted from the target - * directory when the function is executed (omitting this parameter, or - * setting it to zero or less, will prevent the deletion of any files). - * @return array The function will return an array containing four elements, - * all integers: `s` is the actual total memory usage of the target - * directory, `c` is a count of the total number of objects (files and - * subdirectories) detected within the target directory, `dc` is a count - * only of the total number of subdirectories detected within the target - * directory, and `d` is how much remaining quota there is to be met by - * the time the function has finished executing (usually, should be zero - * or less). - */ -$phpMussel['MemoryUse'] = function ($p, $d = 0) use (&$phpMussel) { - $t = ['s' => 0, 'c' => 0, 'dc' => 0, 'd' => $d]; - if (is_dir($p) && is_readable($p) && $h = opendir($p)) { - while (false !== ($f = readdir($h))) { - if ($f !== '.' && $f !== '..' && !is_link($np = $p . '/' . $f)) { - if (is_dir($np)) { - $t['dc']++; - $r = $phpMussel['MemoryUse']($np, $t['d']); - $t['s'] += $r['s']; - $t['c'] += $r['c']; - $t['dc'] += $r['dc']; - $t['d'] -= $r['d']; - } elseif (is_file($np)) { - $ns = filesize($np); - if ($t['d'] > 0 && substr_count($np . "\x01", ".qfu\x01") > 0 && is_readable($np)) { - unlink($np); - $t['d'] -= $ns; - } else { - $t['s'] += $ns; - $t['c']++; - } - } - } - } - closedir($h); - } - return $t; -}; - -/** - * Checks if $needle (string) matches (is equal or identical to) $haystack - * (string), or a specific substring of $haystack, to within a specific - * threshold of the levenshtein distance between the $needle and the $haystack - * or the $haystack substring specified. - * - * This function is useful for expressing the differences between two strings - * as an integer value and for then determining whether a specific value as per - * those differences is met. - * - * @param string $needle The needle (will be matched against the $haystack, or, - * if substring positions are specified, against the $haystack substring - * specified). - * @param string $haystack The haystack (will be matched against the $needle). - * Note that for the purposes of calculating the levenshtein distance, it - * doesn't matter which string is a $needle and which is a $haystack (the - * value should be the same if the two were reversed). However, when - * specifying substring positions, those substring positions are applied - * to the $haystack, and not the $needle. Note, too, that if the $needle - * length is greater than the $haystack length (after having applied the - * substring positions to the $haystack), $needle and $haystack will be - * switched. - * @param int $pos_A The initial position of the $haystack to use for the - * substring, if using a substring (optional; defaults to `0`; `0` is the - * beginning of the $haystack). - * @param int $pos_Z The final position of the $haystack to use for the - * substring, if using a substring (optional; defaults to `0`; `0` will - * instruct the function to continue to the end of the $haystack, and - * thus, if both $pos_A and $pos_Z are `0`, the entire $haystack will be - * used). - * @param int $min The threshold minimum (the minimum levenshtein distance - * required in order for the two strings to be considered a match). - * Optional; Defaults to `0`. If `0` or less is specified, there is no - * minimum, and so, any and all strings should always match, as long as - * the levenshtein distance doesn't surpass the threshold maximum. - * @param int $max The threshold maximum (the maximum levenshtein distance - * allowed for the two strings to be considered a match). Optional; - * Defaults to `-1`. If exactly `-1` is specified, there is no maximum, - * and so, any and all strings should always match, as long as the - * threshold minimum is met. - * @param bool $bool Specifies to the function whether to return the - * levenshtein distance of the two strings (as an integer) or to return - * the results of the match (as a boolean; true for match success, false - * for match failure). Optional; Defaults to true. If true is specified, - * the function will return a boolean value (the results of the match), - * and if false is specified, the levenshtein distance will be returned. - * @param bool $case Specifies to the function whether to treat the two strings - * as case-sensitive (when true is specified) or case-insensitive (when - * false is specified) when calculating the levenshtein distance. - * Optional; Defaults to false. - * @param int $cost_ins The cost to apply for character/byte insertions for - * when calculating the levenshtein distance. Optional; Defaults to 1. - * @param int $cost_rep The cost to apply for character/byte replacements for - * when calculating the levenshtein distance. Optional; Defaults to 1. - * @param int $cost_del The cost to apply for character/byte deletions for when - * calculating the levenshtein distance. Optional; Defaults to 1. - * @return bool|int The function will return either a boolean or an integer, - * depending on the state of $bool (but will also return false whenever an - * error occurs). - */ -$phpMussel['lv_match'] = function ($needle, $haystack, $pos_A = 0, $pos_Z = 0, $min = 0, $max = -1, $bool = true, $case = false, $cost_ins = 1, $cost_rep = 1, $cost_del = 1) { - if (!function_exists('levenshtein') || is_array($needle) || is_array($haystack)) { - return false; - } - $nlen = strlen($needle); - $pos_A = (int)$pos_A; - $pos_Z = (int)$pos_Z; - $min = (int)$min; - $max = (int)$max; - if ($pos_A !== 0 || $pos_Z !== 0) { - $haystack = - ($pos_Z === 0) ? - substr($haystack, $pos_A) : - substr($haystack, $pos_A, $pos_Z); - } - $hlen = strlen($haystack); - if ($nlen < 1 || $hlen < 1) { - return $bool ? false : 0; - } - if ($nlen > $hlen) { - $x = [$needle, $nlen, $haystack, $hlen]; - $haystack = $x[0]; - $hlen = $x[1]; - $needle = $x[2]; - $nlen = $x[3]; - } - if ($cost_ins === 1 && $cost_rep === 1 && $cost_del === 1) { - $lv = $case ? levenshtein( - $haystack, $needle - ) : levenshtein( - strtolower($haystack), strtolower($needle) - ); - } else { - $lv = $case ? levenshtein( - $haystack, $needle, $cost_ins, $cost_rep, $cost_del - ) : levenshtein( - strtolower($haystack), strtolower($needle), $cost_ins, $cost_rep, $cost_del - ); - } - return $bool ? (($min === 0 || $lv >= $min) && ($max === -1 || $lv <= $max)) : $lv; -}; - -/** - * Returns the high and low nibbles corresponding to the first byte of the - * input string. - * - * @param string $n The input string. - * @return array Contains two elements, both standard decimal integers; The - * first is the high nibble of the input string, and the second is the low - * nibble of the input string. - */ -$phpMussel['split_nibble'] = function ($n) { - $n = bin2hex($n); - return [hexdec(substr($n, 0, 1)), hexdec(substr($n, 1, 1))]; -}; - -/** - * Constructs an output string representing the binary bits of an input string, - * whereby each byte of the output string is a digit (1 or 0), representing - * the 1/ON or 0/OFF bits of the input string respectively. - * `$phpMussel['explode_bits']()` can be reversed by way of using - * `$phpMussel['implode_bits']()`. - * - * @param string $n The input string (see closure description above). - * @return string $n The output string (see closure description above). - */ -$phpMussel['explode_bits'] = function ($n) { - $out = ''; - $len = strlen($n); - for ($i = 0; $i < $len; $i++) { - $out .= str_pad(decbin(ord($n[$i])), 8, '0', STR_PAD_LEFT); - } - return $out; -}; - -/** - * Reconstitutes an output string from an input string representing a series of - * binary bits. Each byte is a digit (1 or 0), representing 1/ON or 0/OFF bits - * of the output string respectively. `$phpMussel['implode_bits']()` can be - * used to reverse strings generated by `$phpMussel['explode_bits']()`. - * - * @param string $n The input string (see closure description above). - * @return string $n The output string (see closure description above). - */ -$phpMussel['implode_bits'] = function ($n) { - $chars_chunks = str_split($n, 8); - $num = count($chars_chunks); - for ($out = '', $i = 0; $i < $num; $i++) { - $out .= chr(bindec($chars_chunks[$i])); - } - return $out; -}; - -/** - * Translates the virus name/identifier shorthand adopted by phpMussel to - * proper virus names/identifiers and makes some determinations regarding - * detections based upon the interpretation and understanding of that shorthand - * against the phpMussel configuration (for example, whether some certain - * classifications, such as hoax/joke viruses, adware, etc, should be entirely - * ignored by the scanner, or should be identified as malicious, and therefore - * blocked). - * - * Originally, this function was created to allow a way for phpMussel to - * partially compress its signatures without jeopardising speed, performance or - * processing efficiency, because, by allowing phpMussel to partially compress - * its signatures, the total footprint of its signature files could be reduced, - * therefore allowing the inclusion of a greater number of signatures in the - * signature files without causing an excessive bloat in the total footprint. - * - * However, since then, its purpose has expanded, to determining whether a - * signature should be considered a weighted signature (for more complex - * detections involving multiple signatures) or a non-weighted signature (for - * signatures that are detections in their own right, not requiring additional - * signatures for the detection to occur), and to determining whether or not a - * signature should be ignored, based upon its classification. - * - * The function takes an input string (the shorthand virus name), and if byte 0 - * of the input string is "\x1A" (the substitute character), the input string - * is a shorthand virus name, and processing continues; If it doesn't begin - * with "\x1A", it isn't a shorthand virus name, and the input string should be - * returned to the calling scope unmodified. When processing continues, the - * function splits the nibbles of bytes 1-2, and uses that information to - * reconstruct a complete virus name from the shorthand virus name; 1H - * represents the signature vendor name and 1L optionally provides some - * additional generic indicators (heuristic, CVE, etc), except when 1H == 8 (in - * which case, 1L represents the signature vendor name, 1H == 8 being used to - * access that additional set of allocations), 2H+2L represents the virus - * target (i.e., the file format or system that the virus that the signature is - * intended to detect is intended to be targeting), and 3H+3L represents the - * nature of what the signature is intended to detect (i.e., whether we should - * call it a virus, a trojan, adware, ransomware, etc). - * - * Warning: When modifying these allocations (such as to include a new vendor - * or a new type of detection), be very careful to ensure that your choice of - * allocations won't conflict with the what phpMussel recognises as its - * delimiters or as special characters (newlines, semicolons, colons, etc), or - * else your signature files could break very badly, leading either to a - * failure to properly detect anything or to numerous severe false positives. - * Generally (but not exclusively), you should avoid: "\x0?" (or any ?H0 - * character/byte), \x3A and \x3B. Also avoid using the null character ("\x00") - * in particular, because it can severely break things in certain situations. - * - * @param string $VN The shorthand virus name. - * @return string The full-length "translated" virus name. - */ -$phpMussel['vn_shorthand'] = function ($VN) use (&$phpMussel) { - $phpMussel['memCache']['weighted'] = false; - $phpMussel['memCache']['ignoreme'] = false; - if ($VN[0] !== "\x1a") { - return $VN; - } - $n = $phpMussel['split_nibble']($VN[1]); - $out = ''; - if ($n[0] === 2) { - $out .= 'ClamAV-'; - } elseif ($n[0] === 3) { - $out .= 'phpMussel-'; - } elseif ($n[0] === 4) { - $out .= 'SecuriteInfo-'; - } elseif ($n[0] === 5) { - $out .= 'ZBB-'; - } elseif ($n[0] === 6) { - $out .= 'NLNetLabs-'; - } elseif ($n[0] === 7) { - $out .= 'FoxIT-'; - } elseif ($n[0] === 8) { - if ($n[1] === 0) { - $out .= 'PhishTank-'; - } elseif ($n[1] === 1) { - $out .= 'Malc0de-'; - } elseif ($n[1] === 2) { - $out .= 'hpHosts-'; - } elseif ($n[1] === 3) { - $out .= 'Spam404-'; - } elseif ($n[1] === 4) { - $out .= 'Cybercrime.Tracker-'; - } - } elseif ($n[0] === 9) { - $phpMussel['memCache']['weighted'] = true; - $out .= 'phpMussel-'; - } elseif ($n[0] === 15) { - $phpMussel['memCache']['weighted'] = true; - } - if ($n[0] !== 8) { - if ($n[1] === 1) { - $out .= 'Testfile.'; - } elseif ($n[1] === 2) { - $out .= 'FN.'; - } elseif ($n[1] === 3) { - $out .= 'VT.'; - } elseif ($n[1] === 4) { - $out .= 'META.'; - } elseif ($n[1] === 5) { - $out .= 'Chameleon.'; - } elseif ($n[1] === 6) { - $out .= 'Werewolf.'; - } elseif ($n[1] === 7) { - $out .= 'Suspect.'; - } elseif ($n[1] === 8) { - $out .= 'Fake.'; - } elseif ($n[1] === 9) { - $out .= 'CVE.'; - } elseif ($n[1] === 15) { - $out .= 'HEUR.'; - } - } - $n = $phpMussel['split_nibble']($VN[2]); - if ($n[0] === 1) { - if ($n[1] === 1) { - $out .= 'Win.'; - } elseif ($n[1] === 2) { - $out .= 'W32.'; - } elseif ($n[1] === 3) { - $out .= 'W64.'; - } elseif ($n[1] === 4) { - $out .= 'ELF.'; - } elseif ($n[1] === 5) { - $out .= 'OSX.'; - } elseif ($n[1] === 6) { - $out .= 'Android.'; - } elseif ($n[1] === 7) { - $out .= 'Email.'; - } elseif ($n[1] === 8) { - $out .= 'JS.'; - } elseif ($n[1] === 9) { - $out .= 'Java.'; - } elseif ($n[1] === 10) { - $out .= 'XXE.'; - } elseif ($n[1] === 11) { - $out .= 'Graphics.'; - } elseif ($n[1] === 12) { - $out .= 'OLE.'; - } elseif ($n[1] === 13) { - $out .= 'HTML.'; - } elseif ($n[1] === 14) { - $out .= 'RTF.'; - } elseif ($n[1] === 15) { - $out .= 'Archive.'; - } - } elseif ($n[0] === 2) { - if ($n[1] === 0) { - $out .= 'PHP.'; - } elseif ($n[1] === 1) { - $out .= 'XML.'; - } elseif ($n[1] === 2) { - $out .= 'ASP.'; - } elseif ($n[1] === 3) { - $out .= 'VBS.'; - } elseif ($n[1] === 4) { - $out .= 'BAT.'; - } elseif ($n[1] === 5) { - $out .= 'PDF.'; - } elseif ($n[1] === 6) { - $out .= 'SWF.'; - } elseif ($n[1] === 7) { - $out .= 'W97M.'; - } elseif ($n[1] === 8) { - $out .= 'X97M.'; - } elseif ($n[1] === 9) { - $out .= 'O97M.'; - } elseif ($n[1] === 10) { - $out .= 'ASCII.'; - } elseif ($n[1] === 11) { - $out .= 'Unix.'; - } elseif ($n[1] === 12) { - $out .= 'Python.'; - } elseif ($n[1] === 13) { - $out .= 'Perl.'; - } elseif ($n[1] === 14) { - $out .= 'Ruby.'; - } elseif ($n[1] === 15) { - $out .= 'INF/INI.'; - } - } elseif ($n[0] === 3) { - if ($n[1] === 0) { - $out .= 'CGI.'; - } - } - $n = $phpMussel['split_nibble']($VN[3]); - if ($n[0] === 1) { - if ($n[1] === 1) { - $out .= 'Worm.'; - } elseif ($n[1] === 2) { - $out .= 'Trojan.'; - } elseif ($n[1] === 3) { - $out .= 'Adware.'; - if (!$phpMussel['Config']['signatures']['detect_adware']) { - $phpMussel['memCache']['ignoreme'] = true; - } - } elseif ($n[1] === 4) { - $out .= 'Flooder.'; - } elseif ($n[1] === 5) { - $out .= 'IRCBot.'; - } elseif ($n[1] === 6) { - $out .= 'Exploit.'; - } elseif ($n[1] === 7) { - $out .= 'VirTool.'; - } elseif ($n[1] === 8) { - $out .= 'Dialer.'; - } elseif ($n[1] === 9) { - $out .= 'Joke/Hoax.'; - if (!$phpMussel['Config']['signatures']['detect_joke_hoax']) { - $phpMussel['memCache']['ignoreme'] = true; - } - } elseif ($n[1] === 11) { - $out .= 'Malware.'; - } elseif ($n[1] === 12) { - $out .= 'Riskware.'; - } elseif ($n[1] === 13) { - $out .= 'Rootkit.'; - } elseif ($n[1] === 14) { - $out .= 'Backdoor.'; - } elseif ($n[1] === 15) { - $out .= 'Hacktool.'; - } - } elseif ($n[0] === 2) { - if ($n[1] === 0) { - $out .= 'Keylogger.'; - } elseif ($n[1] === 1) { - $out .= 'Ransomware.'; - } elseif ($n[1] === 2) { - $out .= 'Spyware.'; - } elseif ($n[1] === 3) { - $out .= 'Virus.'; - } elseif ($n[1] === 4) { - $out .= 'Dropper.'; - } elseif ($n[1] === 5) { - $out .= 'Dropped.'; - } elseif ($n[1] === 6) { - $out .= 'Downloader.'; - } elseif ($n[1] === 7) { - $out .= 'Obfuscation.'; - } elseif ($n[1] === 8) { - $out .= 'Obfuscator.'; - } elseif ($n[1] === 9) { - $out .= 'Obfuscated.'; - } elseif ($n[1] === 10) { - $out .= 'Packer.'; - if (!$phpMussel['Config']['signatures']['detect_packer_packed']) { - $phpMussel['memCache']['ignoreme'] = true; - } - } elseif ($n[1] === 11) { - $out .= 'Packed.'; - if (!$phpMussel['Config']['signatures']['detect_packer_packed']) { - $phpMussel['memCache']['ignoreme'] = true; - } - } elseif ($n[1] === 12) { - $out .= 'PUA/PUP.'; - if (!$phpMussel['Config']['signatures']['detect_pua_pup']) { - $phpMussel['memCache']['ignoreme'] = true; - } - } elseif ($n[1] === 13) { - $out .= 'Shell.'; - if (!$phpMussel['Config']['signatures']['detect_shell']) { - $phpMussel['memCache']['ignoreme'] = true; - } - } elseif ($n[1] === 14) { - $out .= 'Defacer.'; - if (!$phpMussel['Config']['signatures']['detect_deface']) { - $phpMussel['memCache']['ignoreme'] = true; - } - } elseif ($n[1] === 15) { - $out .= 'Defacement.'; - if (!$phpMussel['Config']['signatures']['detect_deface']) { - $phpMussel['memCache']['ignoreme'] = true; - } - } - } elseif ($n[0] === 3) { - if ($n[1] === 0) { - $out .= 'Cryptor.'; - } elseif ($n[1] === 1) { - $out .= 'Phish.'; - } elseif ($n[1] === 2) { - $out .= 'Spam.'; - } elseif ($n[1] === 3) { - $out .= 'Spammer.'; - } elseif ($n[1] === 4) { - $out .= 'Scam.'; - } elseif ($n[1] === 5) { - $out .= 'ZipBomb.'; - } elseif ($n[1] === 6) { - $out .= 'ForkBomb.'; - } elseif ($n[1] === 7) { - $out .= 'LogicBomb.'; - } elseif ($n[1] === 8) { - $out .= 'CyberBomb.'; - } elseif ($n[1] === 9) { - $out .= 'Malvertisement.'; - } elseif ($n[1] === 13) { - $out .= 'Encrypted.'; - if (!$phpMussel['Config']['signatures']['detect_encryption']) { - $phpMussel['memCache']['ignoreme'] = true; - } - } elseif ($n[1] === 15) { - $out .= 'BadURL.'; - } - } - return $out . substr($VN, 4); -}; - -/** - * Used for performing lookups to the Google Safe Browsing API (v4). - * @link https://developers.google.com/safe-browsing/v4/lookup-api - * - * @param array $urls An array of the URLs to lookup. - * @param array $URLsNoLookup An optional array of URLs to NOT lookup. - * @param array $DomainsNoLookup An optional array of domains to NOT lookup. - * @return int The results of the lookup. 200 if AT LEAST ONE of the queried - * URLs are listed on any of Google Safe Browsing lists; 204 if NONE of - * the queried URLs are listed on any of Google Safe Browsing lists; 400 - * if the request is malformed; 401 if the API key is missing or isn't - * authorised; 503 if the service is unavailable (e.g., if it's been - * throttled); 999 if something unexpected occurs (such as, for example, - * if a programmatic error is encountered). - */ -$phpMussel['SafeBrowseLookup'] = function ($urls, $URLsNoLookup = [], $DomainsNoLookup = []) use (&$phpMussel) { - if (empty($phpMussel['Config']['urlscanner']['google_api_key'])) { - return 401; - } - /** Count and prepare the URLs. */ - if (!$c = count($urls)) { - return 400; - } - for ($i = 0; $i < $c; $i++) { - $Domain = (strpos($urls[$i], '/') !== false) ? $phpMussel['substrbf']($urls[$i], '/') : $urls[$i]; - if (!empty($URLsNoLookup[$urls[$i]]) || !empty($DomainsNoLookup[$Domain])) { - unset($urls[$i]); - continue; - } - $urls[$i] = ['url' => $urls[$i]]; - } - sort($urls); - /** After we've prepared the URLs, we prepare our JSON array. */ - $arr = json_encode([ - 'client' => [ - 'clientId' => 'phpMussel', - 'clientVersion' => $phpMussel['ScriptVersion'] - ], - 'threatInfo' => [ - 'threatTypes' => [ - 'THREAT_TYPE_UNSPECIFIED', - 'MALWARE', - 'SOCIAL_ENGINEERING', - 'UNWANTED_SOFTWARE', - 'POTENTIALLY_HARMFUL_APPLICATION' - ], - 'platformTypes' => ['ANY_PLATFORM'], - 'threatEntryTypes' => ['URL'], - 'threatEntries' => $urls - ] - ], JSON_UNESCAPED_SLASHES | JSON_PRETTY_PRINT); - - /** Fetch the cache entry for Google Safe Browsing, if it doesn't already exist. */ - if (!isset($phpMussel['memCache']['urlscanner_google'])) { - $phpMussel['memCache']['urlscanner_google'] = $phpMussel['FetchCache']('urlscanner_google'); - } - /** Generate new cache expiry time. */ - $newExpiry = $phpMussel['Time'] + $phpMussel['Config']['urlscanner']['cache_time']; - /** Generate a reference for the cache entry for this lookup. */ - $cacheRef = md5($arr) . ':' . $c . ':' . strlen($arr) . ':'; - /** This will contain the lookup response. */ - $response = ''; - /** Check if this lookup has already been performed. */ - while (substr_count($phpMussel['memCache']['urlscanner_google'], $cacheRef)) { - $response = $phpMussel['substrbf']($phpMussel['substral']($phpMussel['memCache']['urlscanner_google'], $cacheRef), ';'); - /** Safety mechanism. */ - if (!$response || !substr_count($phpMussel['memCache']['urlscanner_google'], $cacheRef . $response . ';')) { - $response = ''; - break; - } - $expiry = $phpMussel['substrbf']($response, ':'); - if ($expiry > $phpMussel['Time']) { - $response = $phpMussel['substraf']($response, ':'); - break; - } - $phpMussel['memCache']['urlscanner_google'] = - str_ireplace($cacheRef . $response . ';', '', $phpMussel['memCache']['urlscanner_google']); - $response = ''; - } - /** If this lookup has already been performed, return the results without repeating it. */ - if ($response) { - /** Update the cache entry for Google Safe Browsing. */ - $newExpiry = $phpMussel['SaveCache']('urlscanner_google', $newExpiry, $phpMussel['memCache']['urlscanner_google']); - if ($response === '200') { - /** Potentially harmful URL detected. */ - return 200; - } elseif ($response === '204') { - /** Potentially harmful URL *NOT* detected. */ - return 204; - } elseif ($response === '400') { - /** Bad/malformed request. */ - return 400; - } elseif ($response === '401') { - /** Unauthorised (possibly a bad API key). */ - return 401; - } elseif ($response === '503') { - /** Service unavailable. */ - return 503; - } - /** Something bad/unexpected happened. */ - return 999; - } - - /** Prepare the URL to use with cURL. */ - $uri = - 'https://safebrowsing.googleapis.com/v4/threatMatches:find?key=' . - $phpMussel['Config']['urlscanner']['google_api_key']; - - /** cURL stuff here. */ - $request = curl_init($uri); - curl_setopt($request, CURLOPT_FRESH_CONNECT, true); - curl_setopt($request, CURLOPT_HEADER, false); - curl_setopt($request, CURLOPT_POST, true); - /** Ensure it knows we're sending JSON data. */ - curl_setopt($request, CURLOPT_HTTPHEADER, ['Content-type: application/json']); - /** The Google Safe Browsing API requires HTTPS+SSL (there's no way around this). */ - curl_setopt($request, CURLOPT_PROTOCOLS, CURLPROTO_HTTPS); - curl_setopt($request, CURLOPT_RETURNTRANSFER, true); - /* - * Setting "CURLOPT_SSL_VERIFYPEER" to false can be somewhat risky due to man-in-the-middle attacks, but lookups - * seemed to always fail when it was set to true during testing, so, for the sake of this actually working at all, - * I'm setting it as false, but we should try to fix this in the future at some point. - */ - curl_setopt($request, CURLOPT_SSL_VERIFYPEER, false); - /* We don't want to leave the client waiting for *too* long. */ - curl_setopt($request, CURLOPT_TIMEOUT, $phpMussel['Timeout']); - curl_setopt($request, CURLOPT_USERAGENT, $phpMussel['ScriptUA']); - curl_setopt($request, CURLOPT_POSTFIELDS, $arr); - - /** Execute and get the response. */ - $response = curl_exec($request); - $phpMussel['LookupCount']++; - - /** Check for errors and print to the screen if there were any. */ - if (!$response) { - throw new \Exception(curl_error($request)); - } - - /** Close the cURL session. */ - curl_close($request); - - if (substr_count($response, '"matches":')) { - /** Potentially harmful URL detected. */ - $returnVal = 200; - } else { - /** Potentially harmful URL *NOT* detected. */ - $returnVal = 204; - } - - /** Update the cache entry for Google Safe Browsing. */ - $phpMussel['memCache']['urlscanner_google'] .= $cacheRef . ':' . $newExpiry . ':' . $returnVal . ';'; - $newExpiry = $phpMussel['SaveCache']('urlscanner_google', $newExpiry, $phpMussel['memCache']['urlscanner_google']); - - return $returnVal; -}; - -/** - * Constructs a list of files contained within a PHARable file (in this - * context, a PHARable file is defined as a file of any the following formats: - * TAR, ZIP, PHAR) and returns that list as a string, entries delimited by a - * linefeed (\x0A) and preceeded by an integer representing the depth of the - * entry (in relation to where it exists within the tree of the PHARable file). - * - * @param string $PharFile The PHARable file to analyse. - * @param int $PharDepth An offset for the depth of entries. - * @return string The constructed list (as per described above). - */ -$phpMussel['BuildPharList'] = function ($PharFile, $PharDepth = 0) use (&$phpMussel) { - $PharDepth++; - $Out = ''; - $PharDir = scandir('phar://' . $PharFile); - $PharCount = count($PharDir); - for ($PharIter = 0; $PharIter < $PharCount; $PharIter++) { - if (is_dir('phar://' . $PharFile . '/' . $PharDir[$PharIter])) { - $PharDir[$PharIter] = $phpMussel['BuildPharList']($PharFile . '/' . $PharDir[$PharIter], $PharDepth); - } else { - $PharDir[$PharIter] = $PharDepth . ' ' . $PharFile . '/' . $PharDir[$PharIter]; - } - $Out .= $PharDir[$PharIter] . "\n"; - } - return $Out; -}; - -/** - * Checks whether signature length is confined within an acceptable limit. - * - * @param int $Length - * @return bool - */ -$phpMussel['ConfineLength'] = function ($Length) { - return ($Length < 4 || $Length > 1024); -}; - -/** - * Codeblock for detection triggers (appends detection information). Called - * from within the data handler (treat as private). - */ -$phpMussel['Detected'] = function (&$heur, &$lnap, &$VN, &$ofn, &$ofnSafe, &$out, &$flagged, &$md5, &$str_len) use (&$phpMussel) { - if (!$flagged) { - $phpMussel['killdata'] .= $md5 . ':' . $str_len . ':' . $ofn . "\n"; - $flagged = true; - } - $heur['detections']++; - $phpMussel['memCache']['detections_count']++; - if ($phpMussel['memCache']['weighted']) { - $heur['weight']++; - $heur['cli'] .= $lnap . $phpMussel['ParseVars']( - ['vn' => $VN], - $phpMussel['lang']['detected'] - ) . $phpMussel['lang']['_exclamation_final'] . "\n"; - $heur['web'] .= $phpMussel['ParseVars']( - ['vn' => $VN], - $phpMussel['lang']['detected'] - ) . ' (' . $ofnSafe . ')' . $phpMussel['lang']['_exclamation']; - return; - } - $out .= $lnap . $phpMussel['ParseVars']( - ['vn' => $VN], - $phpMussel['lang']['detected'] - ) . $phpMussel['lang']['_exclamation_final'] . "\n"; - $phpMussel['whyflagged'] .= $phpMussel['ParseVars']( - ['vn' => $VN], - $phpMussel['lang']['detected'] - ) . ' (' . $ofnSafe . ')' . $phpMussel['lang']['_exclamation']; -}; - -/** - * Confines a string boundary as per rules specified by parameters. - * - * @param string $Data The string. - * @param string|int $Initial The start of the boundary or string initial offset value. - * @param string|int $Terminal The end of the boundary or string terminal offset value. - * @param array $SectionOffsets Section offset values. - */ -$phpMussel['DataConfineByOffsets'] = function (&$Data, &$Initial, &$Terminal, &$SectionOffsets) { - if ($Initial === '*' && $Terminal === '*') { - return; - } - if (substr($Initial, 0, 2) === 'SE') { - $SectionNum = (int)substr($Initial, 2); - $Initial = '*'; - $Terminal = '*'; - if (isset($SectionOffsets[$SectionNum][0])) { - $Data = substr($Data, $SectionOffsets[$SectionNum][0] * 2); - } - if (isset($SectionOffsets[$SectionNum][1])) { - $Data = substr($Data, 0, $SectionOffsets[$SectionNum][1] * 2); - } - } elseif (substr($Initial, 0, 2) === 'SL') { - $Remainder = strlen($Initial) > 3 && substr($Initial, 2, 1) === '+' ? (substr($Initial, 3) ?: 0) : 0; - $Initial = '*'; - $Final = count($SectionOffsets); - if ($Final > 0 && isset($SectionOffsets[$Final - 1][0])) { - $Data = substr($Data, ($SectionOffsets[$Final - 1][0] + $Remainder) * 2); - } - if ($Terminal !== '*' && $Terminal !== 'Z') { - $Data = substr($Data, 0, $Terminal * 2); - $Terminal = '*'; - } - } elseif (substr($Initial, 0, 1) === 'S') { - if (($PlusPos = strpos($Initial, '+')) !== false) { - $SectionNum = substr($Initial, 1, $PlusPos - 1) ?: 0; - $Remainder = substr($Initial, $PlusPos + 1) ?: 0; - } else { - $SectionNum = substr($Initial, 1) ?: 0; - $Remainder = 0; - } - $Initial = '*'; - if (isset($SectionOffsets[$SectionNum][0])) { - $Data = substr($Data, ($SectionOffsets[$SectionNum][0] + $Remainder) * 2); - } - if ($Terminal !== '*' && $Terminal !== 'Z') { - $Data = substr($Data, 0, $Terminal * 2); - $Terminal = '*'; - } - } else { - if ($Initial !== '*' && $Initial !== 'A') { - $Data = substr($Data, $Initial * 2); - $Initial = '*'; - } - if ($Terminal !== '*' && $Terminal !== 'Z') { - $Data = substr($Data, 0, $Terminal * 2); - $Terminal = '*'; - } - } -}; - -/** - * Responsible for handling any data fed to it from the recursor. It shouldn't - * be called manually nor from any other contexts. It takes the data given to - * it from the recursor and checks that data against the various signatures of - * phpMussel, before returning the results of those checks back to the - * recursor. - * - * @param string $str Raw binary data to be checked, supplied by the parent - * closure (generally, the contents of files to being scanned). - * @param int $dpt Represents the current depth of recursion from which the - * closure has been called, used for determining how far to indent any - * entries generated for logging and for the display of scan results in - * CLI. - * @param string $ofn Represents the "original filename" of the file being - * scanned (the original filename, in this context, referring to the name - * of the file being scanned as per supplied by the upload client or CLI - * operator, as opposed to the temporary filename assigned by the server - * or any other filename). - * @return array|bool Returns an array containing the results of the scan as - * both an integer (the first element) and as human-readable text (the - * second element), or returns false if any problems occur preventing the - * data handler from completing its normal process. - */ -$phpMussel['DataHandler'] = function ($str = '', $dpt = 0, $ofn = '') use (&$phpMussel) { - /** If the memory cache isn't set at this point, something has gone very wrong. */ - if (!isset($phpMussel['memCache'])) { - throw new \Exception( - (!isset($phpMussel['lang']['required_variables_not_defined'])) ? - '[phpMussel] Required variables aren\'t defined: Can\'t continue.' : - '[phpMussel] ' . $phpMussel['lang']['required_variables_not_defined'] - ); - } - - /** Identifies whether the scan target has been flagged for any reason yet. */ - $flagged = false; - - /** Increment scan depth. */ - $dpt++; - /** Controls indenting relating to scan depth for normal logging and for CLI-mode scanning. */ - $lnap = str_pad('> ', ($dpt + 1), '-', STR_PAD_LEFT); - - /** Output variable (for when the output is a string). */ - $out = ''; - - /** There's no point bothering to scan zero-byte files. */ - if (!$str_len = strlen($str)) { - return [1, '']; - } - - $md5 = md5($str); - $sha = sha1($str); - $crc = hash('crc32b', $str); - /** $fourcc: First four bytes of the scan target in hexadecimal notation. */ - $fourcc = strtolower(bin2hex(substr($str, 0, 4))); - /** $twocc: First two bytes of the scan target in hexadecimal notation. */ - $twocc = substr($fourcc, 0, 4); - /** - * $CoExMeta: Contains metadata pertaining to the scan target, intended to - * be used by the "complex extended" signatures. - */ - $CoExMeta = - '$ofn:' . $ofn . ';md5($ofn):' . md5($ofn) . ';$dpt:' . $dpt . - ';$str_len:' . $str_len . ';$md5:' . $md5 . ';$sha:' . $sha . - ';$crc:' . $crc . ';$fourcc:' . $fourcc . ';$twocc:' . $twocc . ';'; - - /** Indicates whether a signature is considered a "weighted" signature. */ - $phpMussel['memCache']['weighted'] = false; - - /** Variables used for weighted signatures and for heuristic analysis. */ - $heur = ['detections' => 0, 'weight' => 0, 'cli' => '', 'web' => '']; - - /** Scan target has no name? That's a little suspicious. */ - if (!$ofn) { - $phpMussel['killdata'] .= $md5 . ':' . $str_len . ":\n"; - $phpMussel['memCache']['detections_count']++; - $out .= - $lnap . $phpMussel['lang']['scan_missing_filename'] . - $phpMussel['lang']['_exclamation_final'] . "\n"; - $phpMussel['whyflagged'] .= - $phpMussel['lang']['scan_missing_filename'] . - $phpMussel['lang']['_exclamation']; - return [2, $out]; - } - /** URL-encoded version of the scan target name. */ - $ofnSafe = urlencode($ofn); - - /** Generate cache ID. */ - $phpMussel['HashCacheData'] = $md5 . md5($ofn); - - /** Register object scanned. */ - if (isset($phpMussel['cli_args'][1]) && $phpMussel['cli_args'][1] == 'cli_scan') { - $phpMussel['Stats-Increment']('CLI-Scanned', 1); - } else { - $phpMussel['Stats-Increment']($phpMussel['EOF'] ? 'API-Scanned' : 'Web-Scanned', 1); - } - - /** - * Check for the existence of a cache entry corresponding to the file - * being scanned, and if it exists, use it instead of scanning the file. - */ - if (isset($phpMussel['HashCache']['Data'][$phpMussel['HashCacheData']])) { - if (!$phpMussel['EOF']) { - $phpMussel['killdata'] .= $md5 . ':' . $str_len . ':' . $ofn . "\n"; - } - if (!empty($phpMussel['HashCache']['Data'][$phpMussel['HashCacheData']][2])) { - $phpMussel['memCache']['detections_count']++; - $out .= $phpMussel['HexSafe']($phpMussel['HashCache']['Data'][$phpMussel['HashCacheData']][2]); - if (!empty($phpMussel['HashCache']['Data'][$phpMussel['HashCacheData']][3])) { - $phpMussel['whyflagged'] .= $phpMussel['HexSafe']($phpMussel['HashCache']['Data'][$phpMussel['HashCacheData']][3]); - } - } - - /** Set debug values, if this has been enabled. */ - if (isset($phpMussel['DebugArr'])) { - $phpMussel['DebugArrKey'] = count($phpMussel['DebugArr']); - $phpMussel['DebugArr'][$phpMussel['DebugArrKey']] = [ - 'Filename' => $ofn, - 'FromCache' => true, - 'Depth' => $dpt, - 'Size' => $str_len, - 'MD5' => $md5, - 'SHA1' => $sha, - 'CRC32B' => $crc, - '2CC' => $twocc, - '4CC' => $fourcc, - 'ScanPhase' => $phpMussel['memCache']['phase'], - 'Container' => $phpMussel['memCache']['container'], - 'Results' => !$out ? 1 : 2, - 'Output' => $out - ]; - } - - /** Object not flagged. */ - if (!$out) { - return [1, '']; - } - /** Register object flagged. */ - if (isset($phpMussel['cli_args'][1]) && $phpMussel['cli_args'][1] == 'cli_scan') { - $phpMussel['Stats-Increment']('CLI-Flagged', 1); - } else { - $phpMussel['Stats-Increment']($phpMussel['EOF'] ? 'API-Flagged' : 'Web-Blocked', 1); - } - /** Object flagged. */ - return [2, $out]; - } - - /** Indicates whether we're in CLI-mode. */ - $climode = ($phpMussel['Mussel_sapi'] && $phpMussel['Mussel_PHP']) ? 1 : 0; - - if ( - $phpMussel['Config']['attack_specific']['scannable_threshold'] > 0 && - $str_len > $phpMussel['ReadBytes']($phpMussel['Config']['attack_specific']['scannable_threshold']) - ) { - $str_len = $phpMussel['ReadBytes']($phpMussel['Config']['attack_specific']['scannable_threshold']); - $str = substr($str, 0, $str_len); - $str_cut = 1; - } else { - $str_cut = 0; - } - - /** Indicates whether we need to decode the contents of the scan target. */ - $decode_or_not = ( - ( - $phpMussel['Config']['attack_specific']['decode_threshold'] > 0 && - $str_len > $phpMussel['ReadBytes']($phpMussel['Config']['attack_specific']['decode_threshold']) - ) || - $str_len < 16 - ) ? 0 : 1; - /** Indicates whether the scan target is greater than 1KB (can sometimes save time for coex). */ - $len_kb = ($str_len > 1024) ? 1 : 0; - /** Indicates whether the scan target is greater than half of 1MB (can sometimes save time for coex). */ - $len_hmb = ($str_len > 524288) ? 1 : 0; - /** Indicates whether the scan target is greater than 1MB (can sometimes save time for coex). */ - $len_mb = ($str_len > 1048576) ? 1 : 0; - /** Indicates whether the scan target is greater than half of 1GB (can sometimes save time for coex). */ - $len_hgb = ($str_len > 536870912) ? 1 : 0; - /** Indicates which phase of the scan process we're currently at. */ - $phase = $phpMussel['memCache']['phase']; - /** Indicates whether the scan target is a part of a container (and if so, which type of container). */ - $container = $phpMussel['memCache']['container']; - /** Indicates whether the scan target possesses the PDF magic number. */ - $pdf_magic = ($fourcc == '25504446'); - - /** Corresponds to the "detect_adware" configuration directive. */ - $detect_adware = $phpMussel['Config']['signatures']['detect_adware'] ? 1 : 0; - /** Corresponds to the "detect_encryption" configuration directive. */ - $detect_encryption = $phpMussel['Config']['signatures']['detect_encryption'] ? 1 : 0; - /** Corresponds to the "detect_joke_hoax" configuration directive. */ - $detect_joke_hoax = $phpMussel['Config']['signatures']['detect_joke_hoax'] ? 1 : 0; - /** Corresponds to the "detect_pua_pup" configuration directive. */ - $detect_pua_pup = $phpMussel['Config']['signatures']['detect_pua_pup'] ? 1 : 0; - /** Corresponds to the "detect_packer_packed" configuration directive. */ - $detect_packer_packed = $phpMussel['Config']['signatures']['detect_packer_packed'] ? 1 : 0; - /** Corresponds to the "detect_shell" configuration directive. */ - $detect_shell = $phpMussel['Config']['signatures']['detect_shell'] ? 1 : 0; - /** Corresponds to the "detect_deface" configuration directive. */ - $detect_deface = $phpMussel['Config']['signatures']['detect_deface'] ? 1 : 0; - - list($xt, $xts, $gzxt, $gzxts) = $phpMussel['FetchExt']($ofn); - $CoExMeta .= '$xt:' . $xt . ';$xts:' . $xts . ';'; - - /** Input ($str) as hexadecimal data. */ - $str_hex = bin2hex($str); - $str_hex_len = $str_len * 2; - - /** Input ($str) normalised. */ - $str_norm = $phpMussel['prescan_normalise']($str, false, $decode_or_not); - $str_norm_len = strlen($str_norm); - - /** Normalised input ($str_norm) as hexadecimal data. */ - $str_hex_norm = bin2hex($str_norm); - $str_hex_norm_len = $str_norm_len * 2; - - /** Input ($str) normalised for HTML. */ - $str_html = $phpMussel['prescan_normalise']($str, true, $decode_or_not); - $str_html_len = strlen($str_html); - - /** HTML normalised input ($str_html) as hexadecimal data. */ - $str_hex_html = bin2hex($str_html); - $str_hex_html_len = $str_html_len * 2; - - /** Look for potential Linux/ELF indicators. */ - $is_elf = ( - $fourcc === '7f454c46' || - $xt === 'elf' - ); - - /** Look for potential graphics/image indicators. */ - $is_graphics = empty($str) ? false : $phpMussel['Indicator-Image']($xt, substr($str_hex, 0, 32)); - - /** Look for potential HTML indicators. */ - $is_html = ( - substr_count(',asp*,dht*,hta,htm*,jsp*,php*,sht*,', ',' . $xts . ',') || - substr_count(',eml,hta,', ',' . $xt . ',') || - preg_match( - '/3c(?:21646f6374797065|6120|626f6479|68656164|68746d6c|696672616d65|' . - '696d67|6f626a656374|736372697074|7461626c65|7469746c65)/i', - $str_hex_norm - ) || - preg_match( - '/(?:626f6479|68656164|68746d6c|736372697074|7461626c65|7469746c65)3e/i', - $str_hex_norm - ) - ); - - /** Look for potential email indicators. */ - $is_email = ( - substr_count(',htm*,ema*,', ',' . $xts . ',') || - $xt === 'eml' || - preg_match( - '/0a(?:436f6e74656e742d54797065|44617465|46726f6d|4d6573736167652d4944|4d' . - '494d452d56657273696f6e|5265706c792d546f|52657475726e2d50617468|53656e646' . - '572|5375626a656374|546f|582d4d61696c6572)3a20/i', - $str_hex - ) || - preg_match('/0a2d2d.{32}(?:2d2d)?(?:0d)?0a/i', $str_hex) - ); - - /** Look for potential Mach-O indicators. */ - $is_macho = ( - $fourcc === 'cafebabe' || - $fourcc === 'cafed00d' || - $fourcc === 'cefaedfe' || - $fourcc === 'cffaedfe' || - $fourcc === 'feedface' || - $fourcc === 'feedfacf' - ); - - /** Look for potential PDF indicators. */ - $is_pdf = ($pdf_magic || $xt === 'pdf'); - - /** Look for potential Shockwave/SWF indicators. */ - $is_swf = ( - substr_count(',435753,465753,5a5753,', ',' . substr($str_hex, 0, 6) . ',') || - substr_count(',swf,swt,', ',' . $xt . ',') - ); - - /** "Infectable"? Used by ClamAV General and ClamAV ASCII signatures. */ - $infectable = true; - - /** "Asciiable"? Used by all ASCII signatures. */ - $asciiable = (bool)$str_hex_norm_len; - - /** - * Attempt to confirm/guess whether the data being handled is from an OLE - * file and whether we'll need to parse it through the OLE signatures. - */ - $is_ole = ( - !empty($phpMussel['memCache']['file_is_ole']) && ( - $str_hex_len < 49152 || - substr_count(',ole,xml,rels,', ',' . $xt . ',') - ) - ); - - /** Worked by the switch file. */ - $fileswitch = 'unassigned'; - if (!isset($phpMussel['memCache']['switch.dat'])) { - $phpMussel['memCache']['switch.dat'] = $phpMussel['ReadFileAsArray']($phpMussel['sigPath'] . 'switch.dat', FILE_IGNORE_NEW_LINES); - } - if (!$phpMussel['memCache']['switch.dat']) { - $phpMussel['memCache']['scan_errors']++; - if (!$phpMussel['Config']['signatures']['fail_silently']) { - if (!$flagged) { - $phpMussel['killdata'] .= $md5 . ':' . $str_len . ":\n"; - } - $phpMussel['whyflagged'] .= - $phpMussel['lang']['scan_signature_file_missing'] . - ' (switch.dat)' . $phpMussel['lang']['_exclamation']; - return [-3, - $lnap . $phpMussel['lang']['scan_signature_file_missing'] . - ' (switch.dat)' . $phpMussel['lang']['_exclamation_final'] . "\n" - ]; - } - } - foreach ($phpMussel['memCache']['switch.dat'] as $ThisRule) { - $Switch = (strpos($ThisRule, ';') === false) ? $ThisRule : $phpMussel['substral']($ThisRule, ';'); - if (strpos($Switch, '=') === false) { - continue; - } - $Switch = explode('=', preg_replace('/[^\x20-\xff]/', '', $Switch)); - if (empty($Switch[0])) { - continue; - } - if (empty($Switch[1])) { - $Switch[1] = false; - } - $theSwitch = $Switch[0]; - $ThisRule = (strpos($ThisRule, ';') === false) ? [$ThisRule] : explode(';', $phpMussel['substrbl']($ThisRule, ';')); - foreach ($ThisRule as $Fragment) { - $Fragment = (strpos($Fragment, ':') === false) ? false : explode(':', $Fragment, 7); - if (empty($Fragment[0])) { - continue 2; - } - if ($Fragment[0] === 'LV') { - if (!isset($Fragment[1]) || substr($Fragment[1], 0, 1) !== '$') { - continue 2; - } - $lv_haystack = substr($Fragment[1],1); - if (!isset($$lv_haystack) || is_array($$lv_haystack)) { - continue 2; - } - $lv_haystack = $$lv_haystack; - if ($climode) { - $lv_haystack = $phpMussel['substral']($phpMussel['substral']($lv_haystack, '/'), "\\"); - } - $lv_needle = isset($Fragment[2]) ? $Fragment[2] : ''; - $pos_A = isset($Fragment[3]) ? $Fragment[3] : 0; - $pos_Z = isset($Fragment[4]) ? $Fragment[4] : 0; - $lv_min = isset($Fragment[5]) ? $Fragment[5] : 0; - $lv_max = isset($Fragment[6]) ? $Fragment[6] : -1; - if (!$phpMussel['lv_match']($lv_needle, $lv_haystack, $pos_A, $pos_Z, $lv_min, $lv_max)) { - continue 2; - } - } elseif (isset($Fragment[2])) { - if (isset($Fragment[3])) { - if ($Fragment[2] === 'A') { - if ( - !substr_count(',FD,FD-RX,FD-NORM,FD-NORM-RX,', ',' . $Fragment[0] . ',') || ( - $Fragment[0] === 'FD' && - !substr_count("\x01" . substr($str_hex, 0, $Fragment[3] * 2), "\x01" . $Fragment[1]) - ) || ( - $Fragment[0] === 'FD-RX' && - !preg_match('/\A(?:' . $Fragment[1] . ')/i', substr($str_hex, 0, $Fragment[3] * 2)) - ) || ( - $Fragment[0] === 'FD-NORM' && - !substr_count("\x01" . substr($str_hex_norm, 0, $Fragment[3] * 2), "\x01" . $Fragment[1]) - ) || ( - $Fragment[0] === 'FD-NORM-RX' && - !preg_match('/\A(?:' . $Fragment[1] . ')/i', substr($str_hex_norm, 0, $Fragment[3] * 2)) - ) - ) { - continue 2; - } - } elseif ( - !substr_count(',FD,FD-RX,FD-NORM,FD-NORM-RX,', ',' . $Fragment[0] . ',') || ( - $Fragment[0] === 'FD' && - !substr_count(substr($str_hex, $Fragment[2] * 2, $Fragment[3] * 2), $Fragment[1]) - ) || ( - $Fragment[0] === 'FD-RX' && - !preg_match('/(?:' . $Fragment[1] . ')/i', substr($str_hex, $Fragment[2] * 2, $Fragment[3]*2)) - ) || ( - $Fragment[0] === 'FD-NORM' && - !substr_count(substr($str_hex_norm, $Fragment[2] * 2, $Fragment[3] * 2), $Fragment[1]) - ) || ( - $Fragment[0] === 'FD-NORM-RX' && - !preg_match('/(?:' . $Fragment[1] . ')/i', substr($str_hex_norm, $Fragment[2] * 2, $Fragment[3]*2)) - ) - ) { - continue 2; - } - } else { - if ($Fragment[2] === 'A') { - if ( - !substr_count(',FN,FD,FD-RX,FD-NORM,FD-NORM-RX,', ',' . $Fragment[0] . ',') || ( - $Fragment[0] === 'FN' && - !preg_match('/\A(?:' . $Fragment[1] . ')/i', $ofn) - ) || ( - $Fragment[0] === 'FD' && - !substr_count("\x01" . $str_hex, "\x01" . $Fragment[1]) - ) || ( - $Fragment[0] === 'FD-RX' && - !preg_match('/\A(?:' . $Fragment[1] . ')/i', $str_hex) - ) || ( - $Fragment[0] === 'FD-NORM' && - !substr_count("\x01" . $str_hex_norm, "\x01" . $Fragment[1]) - ) || ( - $Fragment[0] === 'FD-NORM-RX' && - !preg_match('/\A(?:' . $Fragment[1] . ')/i', $str_hex_norm) - ) - ) { - continue 2; - } - } elseif ( - !substr_count(',FD,FD-RX,FD-NORM,FD-NORM-RX,', ',' . $Fragment[0] . ',') || ( - $Fragment[0] === 'FD' && - !substr_count(substr($str_hex, $Fragment[2] * 2), $Fragment[1]) - ) || ( - $Fragment[0] === 'FD-RX' && - !preg_match('/(?:' . $Fragment[1] . ')/i', substr($str_hex, $Fragment[2] * 2)) - ) || ( - $Fragment[0] === 'FD-NORM' && - !substr_count(substr($str_hex_norm, $Fragment[2] * 2), $Fragment[1]) - ) || ( - $Fragment[0] === 'FD-NORM-RX' && - !preg_match('/(?:' . $Fragment[1] . ')/i', substr($str_hex_norm, $Fragment[2] * 2)) - ) - ) { - continue 2; - } - } - } elseif ( - ($Fragment[0] === 'FN' && !preg_match('/(?:' . $Fragment[1] . ')/i', $ofn)) || - ($Fragment[0] === 'FS-MIN' && $str_len < $Fragment[1]) || - ($Fragment[0] === 'FS-MAX' && $str_len > $Fragment[1]) || - ($Fragment[0] === 'FD' && !substr_count($str_hex, $Fragment[1])) || - ($Fragment[0] === 'FD-RX' && !preg_match('/(?:' . $Fragment[1] . ')/i', $str_hex)) || - ($Fragment[0] === 'FD-NORM' && !substr_count($str_hex_norm, $Fragment[1])) || - ($Fragment[0] === 'FD-NORM-RX' && !preg_match('/(?:' . $Fragment[1] . ')/i', $str_hex_norm)) - ) { - continue 2; - } elseif (substr($Fragment[0], 0, 1) === '$') { - $vf = substr($Fragment[0], 1); - if (!isset($$vf) || is_array($$vf) || $$vf != $Fragment[1]) { - continue 2; - } - } elseif (substr($Fragment[0], 0, 2) === '!$') { - $vf = substr($Fragment[0], 2); - if (!isset($$vf) || is_array($$vf) || $$vf == $Fragment[1]) { - continue 2; - } - } elseif (!substr_count(',FN,FS-MIN,FS-MAX,FD,FD-RX,FD-NORM,FD-NORM-RX,', ',' . $Fragment[0] . ',')) { - continue 2; - } - } - if (count($Switch) > 1) { - if ($Switch[1] === 'true') { - $$theSwitch = true; - continue; - } - if ($Switch[1] === 'false') { - $$theSwitch = false; - continue; - } - $$theSwitch = $Switch[1]; - } else { - if (!isset($$theSwitch)) { - $$theSwitch = true; - continue; - } - $$theSwitch = (!$$theSwitch); - } - } - unset($theSwitch, $Switch, $ThisRule); - - /** Section offsets. */ - $SectionOffsets = []; - - /** Confirmation of whether or not the file is a valid PE file. */ - $is_pe = false; - - /** Number of PE sections in the file. */ - $NumOfSections = 0; - - $PEFileDescription = - $PEFileVersion = - $PEProductName = - $PEProductVersion = - $PECopyright = - $PEOriginalFilename = - $PECompanyName = ''; - if ( - !empty($phpMussel['memCache']['PE_Sectional']) || - !empty($phpMussel['memCache']['PE_Extended']) || - $phpMussel['Config']['attack_specific']['corrupted_exe'] - ) { - $PEArr = []; - $PEArr['SectionArr'] = []; - if ($twocc === '4d5a') { - $PEArr['Offset'] = $phpMussel['UnpackSafe']('S', substr($str, 60, 4)); - $PEArr['Offset'] = $PEArr['Offset'][1]; - while (true) { - $PEArr['DoScan'] = true; - if ($PEArr['Offset'] < 1 || $PEArr['Offset'] > 16384 || $PEArr['Offset'] > $str_len) { - $PEArr['DoScan'] = false; - break; - } - $PEArr['Magic'] = substr($str, $PEArr['Offset'], 2); - if ($PEArr['Magic']!=='PE') { - $PEArr['DoScan'] = false; - break; - } - $PEArr['Proc'] = $phpMussel['UnpackSafe']('S', substr($str, $PEArr['Offset'] + 4, 2)); - $PEArr['Proc'] = $PEArr['Proc'][1]; - if ($PEArr['Proc'] != 0x14c && $PEArr['Proc'] != 0x8664) { - $PEArr['DoScan'] = false; - break; - } - $PEArr['NumOfSections'] = $phpMussel['UnpackSafe']('S', substr($str, $PEArr['Offset'] + 6, 2)); - $NumOfSections = $PEArr['NumOfSections'] = $PEArr['NumOfSections'][1]; - $CoExMeta .= 'PE_Offset:' . $PEArr['Offset'] . ';PE_Proc:' . $PEArr['Proc'] . ';NumOfSections:' . $NumOfSections . ';'; - if ($NumOfSections < 1 || $NumOfSections > 40) { - $PEArr['DoScan'] = false; - } - break; - } - if (!$PEArr['DoScan']) { - if ($phpMussel['Config']['attack_specific']['corrupted_exe']) { - if (!$flagged) { - $phpMussel['killdata'] .= $md5 . ':' . $str_len . ':' . $ofn . "\n"; - $flagged = true; - } - $heur['detections']++; - $phpMussel['memCache']['detections_count']++; - $out .= - $lnap . $phpMussel['lang']['corrupted'] . - $phpMussel['lang']['_exclamation_final'] . "\n"; - $phpMussel['whyflagged'] .= - $phpMussel['lang']['corrupted'] . - ' (' . $ofnSafe . ')' . $phpMussel['lang']['_exclamation']; - } - } else { - $is_pe = true; - $asciiable = false; - $PEArr['OptHdrSize'] = $phpMussel['UnpackSafe']('S', substr($str, $PEArr['Offset'] + 20, 2)); - $PEArr['OptHdrSize'] = $PEArr['OptHdrSize'][1]; - for ($PEArr['k'] = 0; $PEArr['k'] < $NumOfSections; $PEArr['k']++) { - $PEArr['SectionArr'][$PEArr['k']] = []; - $PEArr['SectionArr'][$PEArr['k']]['SectionHead'] = - substr($str, $PEArr['Offset'] + 24 + $PEArr['OptHdrSize'] + ($PEArr['k'] * 40), $NumOfSections * 40); - $PEArr['SectionArr'][$PEArr['k']]['SectionName'] = - str_ireplace("\x00", '', substr($PEArr['SectionArr'][$PEArr['k']]['SectionHead'], 0, 8)); - $PEArr['SectionArr'][$PEArr['k']]['VirtualSize'] = - $phpMussel['UnpackSafe']('S', substr($PEArr['SectionArr'][$PEArr['k']]['SectionHead'], 8, 4)); - $PEArr['SectionArr'][$PEArr['k']]['VirtualSize'] = - $PEArr['SectionArr'][$PEArr['k']]['VirtualSize'][1]; - $PEArr['SectionArr'][$PEArr['k']]['VirtualAddress'] = - $phpMussel['UnpackSafe']('S', substr($PEArr['SectionArr'][$PEArr['k']]['SectionHead'], 12, 4)); - $PEArr['SectionArr'][$PEArr['k']]['VirtualAddress'] = - $PEArr['SectionArr'][$PEArr['k']]['VirtualAddress'][1]; - $PEArr['SectionArr'][$PEArr['k']]['SizeOfRawData'] = - $phpMussel['UnpackSafe']('S', substr($PEArr['SectionArr'][$PEArr['k']]['SectionHead'], 16, 4)); - $PEArr['SectionArr'][$PEArr['k']]['SizeOfRawData'] = - $PEArr['SectionArr'][$PEArr['k']]['SizeOfRawData'][1]; - $PEArr['SectionArr'][$PEArr['k']]['PointerToRawData'] = - $phpMussel['UnpackSafe']('S', substr($PEArr['SectionArr'][$PEArr['k']]['SectionHead'], 20, 4)); - $PEArr['SectionArr'][$PEArr['k']]['PointerToRawData'] = - $PEArr['SectionArr'][$PEArr['k']]['PointerToRawData'][1]; - $PEArr['SectionArr'][$PEArr['k']]['SectionData'] = substr( - $str, - $PEArr['SectionArr'][$PEArr['k']]['PointerToRawData'], - $PEArr['SectionArr'][$PEArr['k']]['SizeOfRawData'] - ); - $SectionOffsets[$PEArr['k']] = [ - $PEArr['SectionArr'][$PEArr['k']]['PointerToRawData'], - $PEArr['SectionArr'][$PEArr['k']]['SizeOfRawData'] - ]; - $PEArr['SectionArr'][$PEArr['k']]['MD5'] = - md5($PEArr['SectionArr'][$PEArr['k']]['SectionData']); - $phpMussel['PEData'] .= - $PEArr['SectionArr'][$PEArr['k']]['SizeOfRawData'] . ':' . - $PEArr['SectionArr'][$PEArr['k']]['MD5'] . ':' . $ofn . '-' . - $PEArr['SectionArr'][$PEArr['k']]['SectionName'] . "\n"; - $CoExMeta .= - 'SectionName:' . $PEArr['SectionArr'][$PEArr['k']]['SectionName'] . - ';VirtualSize:' . $PEArr['SectionArr'][$PEArr['k']]['VirtualSize'] . - ';VirtualAddress:' . $PEArr['SectionArr'][$PEArr['k']]['VirtualAddress'] . - ';SizeOfRawData:' . $PEArr['SectionArr'][$PEArr['k']]['SizeOfRawData'] . - ';MD5:' . $PEArr['SectionArr'][$PEArr['k']]['MD5'] . ';'; - $PEArr['SectionArr'][$PEArr['k']] = - $PEArr['SectionArr'][$PEArr['k']]['SizeOfRawData'] . ':' . - $PEArr['SectionArr'][$PEArr['k']]['MD5'] . ':'; - } - if (substr_count($str, "V\x00a\x00r\x00F\x00i\x00l\x00e\x00I\x00n\x00f\x00o\x00\x00\x00\x00\x00\x24")) { - $PEArr['FINFO'] = $phpMussel['substral']($str, "V\x00a\x00r\x00F\x00i\x00l\x00e\x00I\x00n\x00f\x00o\x00\x00\x00\x00\x00\x24"); - if (substr_count($PEArr['FINFO'], "F\x00i\x00l\x00e\x00D\x00e\x00s\x00c\x00r\x00i\x00p\x00t\x00i\x00o\x00n\x00\x00\x00")) { - $PEFileDescription = trim(str_ireplace("\x00", '', $phpMussel['substrbf']($phpMussel['substral']($PEArr['FINFO'], "F\x00i\x00l\x00e\x00D\x00e\x00s\x00c\x00r\x00i\x00p\x00t\x00i\x00o\x00n\x00\x00\x00"), "\x00\x00\x00"))); - } - if (substr_count($PEArr['FINFO'], "F\x00i\x00l\x00e\x00V\x00e\x00r\x00s\x00i\x00o\x00n\x00\x00\x00")) { - $PEFileVersion = trim(str_ireplace("\x00", '', $phpMussel['substrbf']($phpMussel['substral']($PEArr['FINFO'], "F\x00i\x00l\x00e\x00V\x00e\x00r\x00s\x00i\x00o\x00n\x00\x00\x00"), "\x00\x00\x00"))); - } - if (substr_count($PEArr['FINFO'], "P\x00r\x00o\x00d\x00u\x00c\x00t\x00N\x00a\x00m\x00e\x00\x00\x00")) { - $PEProductName = trim(str_ireplace("\x00", '', $phpMussel['substrbf']($phpMussel['substral']($PEArr['FINFO'], "P\x00r\x00o\x00d\x00u\x00c\x00t\x00N\x00a\x00m\x00e\x00\x00\x00"), "\x00\x00\x00"))); - } - if (substr_count($PEArr['FINFO'], "P\x00r\x00o\x00d\x00u\x00c\x00t\x00V\x00e\x00r\x00s\x00i\x00o\x00n\x00\x00\x00")) { - $PEProductVersion = trim(str_ireplace("\x00", '', $phpMussel['substrbf']($phpMussel['substral']($PEArr['FINFO'], "P\x00r\x00o\x00d\x00u\x00c\x00t\x00V\x00e\x00r\x00s\x00i\x00o\x00n\x00\x00\x00"), "\x00\x00\x00"))); - } - if (substr_count($PEArr['FINFO'], "L\x00e\x00g\x00a\x00l\x00C\x00o\x00p\x00y\x00r\x00i\x00g\x00h\x00t\x00\x00\x00")) { - $PECopyright = trim(str_ireplace("\x00", '', $phpMussel['substrbf']($phpMussel['substral']($PEArr['FINFO'], "L\x00e\x00g\x00a\x00l\x00C\x00o\x00p\x00y\x00r\x00i\x00g\x00h\x00t\x00\x00\x00"), "\x00\x00\x00"))); - } - if (substr_count($PEArr['FINFO'], "O\x00r\x00i\x00g\x00i\x00n\x00a\x00l\x00F\x00i\x00l\x00e\x00n\x00a\x00m\x00e\x00\x00\x00")) { - $PEOriginalFilename = trim(str_ireplace("\x00", '', $phpMussel['substrbf']($phpMussel['substral']($PEArr['FINFO'], "O\x00r\x00i\x00g\x00i\x00n\x00a\x00l\x00F\x00i\x00l\x00e\x00n\x00a\x00m\x00e\x00\x00\x00"), "\x00\x00\x00"))); - } - if (substr_count($PEArr['FINFO'], "C\x00o\x00m\x00p\x00a\x00n\x00y\x00N\x00a\x00m\x00e\x00\x00\x00")) { - $PECompanyName = trim(str_ireplace("\x00", '', $phpMussel['substrbf']($phpMussel['substral']($PEArr['FINFO'], "C\x00o\x00m\x00p\x00a\x00n\x00y\x00N\x00a\x00m\x00e\x00\x00\x00"), "\x00\x00\x00"))); - } - $PEArr['FINFO'] = []; - foreach ([ - 'PEFileDescription', - 'PEFileVersion', - 'PEProductName', - 'PEProductVersion', - 'PECopyright', - 'PEOriginalFilename', - 'PECompanyName' - ] as $PEPart) { - if (!empty($$PEPart)) { - $PEArr['FINFO'][] = '$' . $PEPart . ':' . md5($$PEPart) . ':' . strlen($$PEPart) . ':'; - } - } - } - } - } - } - - /** Look for potential indicators of not being HTML. */ - $is_not_html = (!$is_html && ($is_macho || $is_elf || $is_pe)); - - /** Look for potential indicators of not being PHP. */ - $is_not_php = (( - !substr_count(',phar,', ',' . $xt . ',') && - !substr_count(',php*,', ',' . $xts . ',') && - !substr_count(',phar,', ',' . $gzxt . ',') && - !substr_count(',php*,', ',' . $gzxts . ',') && - !substr_count($str_hex_norm, '3c3f706870') - ) || $is_pe); - - /** Set debug values, if this has been enabled. */ - if (isset($phpMussel['DebugArr'])) { - $phpMussel['DebugArrKey'] = count($phpMussel['DebugArr']); - $phpMussel['DebugArr'][$phpMussel['DebugArrKey']] = [ - 'Filename' => $ofn, - 'FromCache' => false, - 'Depth' => $dpt, - 'Size' => $str_len, - 'MD5' => $md5, - 'SHA1' => $sha, - 'CRC32B' => $crc, - '2CC' => $twocc, - '4CC' => $fourcc, - 'ScanPhase' => $phase, - 'Container' => $container, - 'FileSwitch' => $fileswitch, - 'Is_ELF' => $is_elf, - 'Is_Graphics' => $is_graphics, - 'Is_HTML' => $is_html, - 'Is_Email' => $is_email, - 'Is_MachO' => $is_macho, - 'Is_PDF' => $is_pdf, - 'Is_SWF' => $is_swf, - 'Is_PE' => $is_pe, - 'Is_Not_HTML' => $is_not_html, - 'Is_Not_PHP' => $is_not_php - ]; - if ($is_pe) { - $phpMussel['DebugArr'][$phpMussel['DebugArrKey']] += [ - 'NumOfSections' => $NumOfSections, - 'PEFileDescription' => $PEFileDescription, - 'PEFileVersion' => $PEFileVersion, - 'PEProductName' => $PEProductName, - 'PEProductVersion' => $PEProductVersion, - 'PECopyright' => $PECopyright, - 'PEOriginalFilename' => $PEOriginalFilename, - 'PECompanyName' => $PECompanyName - ]; - } - } - - /** Plugin hook: "during_scan". */ - $phpMussel['Execute_Hook']('during_scan'); - - /** Begin URL scanner. */ - if ( - isset($phpMussel['memCache']['URL_Scanner']) || - !empty($phpMussel['Config']['urlscanner']['lookup_hphosts']) || - !empty($phpMussel['Config']['urlscanner']['google_api_key']) - ) { - $phpMussel['LookupCount'] = 0; - $URLScanner = [ - 'FixedSource' => preg_replace('~(data|f(ile|tps?)|https?|sftp):~i', "\x01\\1:", str_replace("\\", '/', $str_norm)) . "\x01", - 'DomainsNoLookup' => [], - 'DomainsCount' => 0, - 'Domains' => [], - 'DomainPartsNoLookup' => [], - 'DomainParts' => [], - 'Queries' => [], - 'URLsNoLookup' => [], - 'URLsCount' => 0, - 'URLs' => [], - 'URLPartsNoLookup' => [], - 'URLParts' => [], - 'TLDs' => [], - 'Iterable' => 0, - 'Matches' => [] - ]; - $URLScanner['c'] = preg_match_all( - '~(?:data|f(ile|tps?)|https?|sftp)://(?:www[0-9]{0,3}\.)?([0-9a-z.-]{1,512})[^0-9a-z.-]~i', - $URLScanner['FixedSource'], - $URLScanner['Matches'] - ); - for ($URLScanner['i'] = 0; $URLScanner['c'] > $URLScanner['i']; $URLScanner['i']++) { - $URLScanner['DomainParts'][$URLScanner['Iterable']] = $URLScanner['Matches'][2][$URLScanner['i']]; - if (substr_count($URLScanner['DomainParts'][$URLScanner['Iterable']], '.')) { - $URLScanner['TLDs'][$URLScanner['Iterable']] = - 'TLD:' . $phpMussel['substral']($URLScanner['DomainParts'][$URLScanner['Iterable']], '.') . ':'; - } - $URLScanner['This'] = - md5($URLScanner['Matches'][2][$URLScanner['i']]) . ':' . - strlen($URLScanner['Matches'][2][$URLScanner['i']]) . ':'; - $URLScanner['Domains'][$URLScanner['Iterable']] = 'DOMAIN:' . $URLScanner['This']; - $URLScanner['DomainsNoLookup'][$URLScanner['Iterable']] = 'DOMAIN-NOLOOKUP:' . $URLScanner['This']; - $URLScanner['Iterable']++; - } - $URLScanner['DomainsNoLookup'] = array_unique($URLScanner['DomainsNoLookup']); - $URLScanner['Domains'] = array_unique($URLScanner['Domains']); - $URLScanner['DomainParts'] = array_unique($URLScanner['DomainParts']); - $URLScanner['TLDs'] = array_unique($URLScanner['TLDs']); - sort($URLScanner['DomainsNoLookup']); - sort($URLScanner['Domains']); - sort($URLScanner['DomainParts']); - sort($URLScanner['TLDs']); - $URLScanner['Iterable'] = 0; - $URLScanner['Matches'] = ''; - $URLScanner['c'] = preg_match_all( - '~(?:data|f(ile|tps?)|https?|sftp)://(?:www[0-9]{0,3}\.)?([!#$&-;=?@-\[\]_a-z\~]{1,4096})[^!#$&-;=?@-\[\]_a-z\~]~i', - $URLScanner['FixedSource'], - $URLScanner['Matches'] - ); - for ($URLScanner['i'] = 0; $URLScanner['c'] > $URLScanner['i']; $URLScanner['i']++) { - $URLScanner['This'] = - md5($URLScanner['Matches'][2][$URLScanner['i']]) . ':' . - strlen($URLScanner['Matches'][2][$URLScanner['i']]) . ':'; - $URLScanner['URLsNoLookup'][$URLScanner['Iterable']] = 'URL-NOLOOKUP:' . $URLScanner['This']; - $URLScanner['URLParts'][$URLScanner['Iterable']] = $URLScanner['Matches'][2][$URLScanner['i']]; - $URLScanner['URLs'][$URLScanner['Iterable']] = 'URL:' . $URLScanner['This']; - $URLScanner['Iterable']++; - if (preg_match('/[^0-9a-z.-]$/i', $URLScanner['Matches'][2][$URLScanner['i']])) { - $URLScanner['x'] = - preg_replace('/[^0-9a-z.-]+$/i', '', $URLScanner['Matches'][2][$URLScanner['i']]); - $URLScanner['This'] = md5($URLScanner['x']) . ':' . strlen($URLScanner['x']) . ':'; - $URLScanner['URLsNoLookup'][$URLScanner['Iterable']] = 'URL-NOLOOKUP:' . $URLScanner['This']; - $URLScanner['URLParts'][$URLScanner['Iterable']] = $URLScanner['x']; - $URLScanner['URLs'][$URLScanner['Iterable']] = 'URL:' . $URLScanner['This']; - $URLScanner['Iterable']++; - } - if (substr_count($URLScanner['Matches'][2][$URLScanner['i']], '?')) { - $URLScanner['x'] = $phpMussel['substrbf']($URLScanner['Matches'][2][$URLScanner['i']], '?'); - $URLScanner['This'] = md5($URLScanner['x']) . ':' . strlen($URLScanner['x']) . ':'; - $URLScanner['URLsNoLookup'][$URLScanner['Iterable']] = 'URL-NOLOOKUP:' . $URLScanner['This']; - $URLScanner['URLParts'][$URLScanner['Iterable']] = $URLScanner['x']; - $URLScanner['URLs'][$URLScanner['Iterable']] = 'URL:' . $URLScanner['This']; - $URLScanner['x'] = $phpMussel['substraf']($URLScanner['Matches'][2][$URLScanner['i']], '?'); - $URLScanner['Queries'][$URLScanner['Iterable']] = - 'QUERY:' . md5($URLScanner['x']) . ':' . - strlen($URLScanner['x']) . ':'; - $URLScanner['Iterable']++; - } - } - $URLScanner['Matches'] = ''; - $URLScanner['URLsNoLookup'] = array_unique($URLScanner['URLsNoLookup']); - $URLScanner['URLs'] = array_unique($URLScanner['URLs']); - $URLScanner['URLParts'] = array_unique($URLScanner['URLParts']); - $URLScanner['Queries'] = array_unique($URLScanner['Queries']); - sort($URLScanner['URLsNoLookup']); - sort($URLScanner['URLs']); - sort($URLScanner['URLParts']); - sort($URLScanner['Queries']); - } - - /** Process non-mappable signatures. */ - foreach ([ - ['General_Command_Detections', 0], - ['Hash', 1], - ['PE_Sectional', 2], - ['PE_Extended', 3], - ['URL_Scanner', 4], - ['Complex_Extended', 5] - ] as $ThisConf) { - $SigFiles = isset($phpMussel['memCache'][$ThisConf[0]]) ? explode(',', $phpMussel['memCache'][$ThisConf[0]]) : []; - foreach ($SigFiles as $SigFile) { - if (!$SigFile) { - continue; - } - if (!isset($phpMussel['memCache'][$SigFile])) { - $phpMussel['memCache'][$SigFile] = $phpMussel['ReadFile']($phpMussel['sigPath'] . $SigFile); - } - if (!$phpMussel['memCache'][$SigFile]) { - $phpMussel['memCache']['scan_errors']++; - if (!$phpMussel['Config']['signatures']['fail_silently']) { - if (!$flagged) { - $phpMussel['killdata'] .= $md5 . ':' . $str_len . ":\n"; - } - $phpMussel['whyflagged'] .= - $phpMussel['lang']['scan_signature_file_missing'] . - ' (' . $SigFile . ')' . - $phpMussel['lang']['_exclamation']; - return [-3, - $lnap . $phpMussel['lang']['scan_signature_file_missing'] . - ' (' . $SigFile . ')' . - $phpMussel['lang']['_exclamation_final'] . "\n" - ]; - } - } elseif ($ThisConf[1] === 0) { - if (substr($phpMussel['memCache'][$SigFile], 0, 9) === 'phpMussel') { - $phpMussel['memCache'][$SigFile] = substr($phpMussel['memCache'][$SigFile], 11, -1); - } - $ArrayCSV = explode(',', $phpMussel['memCache'][$SigFile]); - foreach ($ArrayCSV as $ItemCSV) { - if (substr_count($str_hex_norm, $ItemCSV)) { - if (!$flagged) { - $phpMussel['killdata'] .= $md5 . ':' . $str_len . ':' . $ofn . "\n"; - $flagged = true; - } - $heur['detections']++; - $phpMussel['memCache']['detections_count']++; - $out .= - $lnap . $phpMussel['lang']['scan_command_injection'] . - $phpMussel['lang']['_exclamation_final'] . "\n"; - $phpMussel['whyflagged'] .= - $phpMussel['lang']['scan_command_injection'] . ', \'' . - $phpMussel['HexSafe']($ItemCSV) . - '\' (' . $ofnSafe . ')' . $phpMussel['lang']['_exclamation']; - } - } - unset($ItemCSV, $ArrayCSV); - } elseif ($ThisConf[1] === 1) { - if (substr_count($phpMussel['memCache'][$SigFile], $md5 . ':' . $str_len . ':')) { - $xsig = $phpMussel['substraf']($phpMussel['memCache'][$SigFile], $md5 . ':' . $str_len . ':'); - if (substr_count($xsig, "\n")) { - $xsig = $phpMussel['substrbf']($xsig, "\n"); - } - $xsig = $phpMussel['vn_shorthand']($xsig); - if ( - !substr_count($phpMussel['memCache']['greylist'], ',' . $xsig . ',') && - empty($phpMussel['memCache']['ignoreme']) - ) { - $phpMussel['Detected']($heur, $lnap, $xsig, $ofn, $ofnSafe, $out, $flagged, $md5, $str_len); - } - } - } elseif ($ThisConf[1] === 2) { - for ($PEArr['k'] = 0; $PEArr['k'] < $NumOfSections; $PEArr['k']++) { - if (substr_count($phpMussel['memCache'][$SigFile], $PEArr['SectionArr'][$PEArr['k']])) { - $xsig = $phpMussel['substraf']($phpMussel['memCache'][$SigFile], $PEArr['SectionArr'][$PEArr['k']]); - if (substr_count($xsig, "\n")) { - $xsig = $phpMussel['substrbf']($xsig, "\n"); - } - $xsig = $phpMussel['vn_shorthand']($xsig); - if ( - !substr_count($phpMussel['memCache']['greylist'], ',' . $xsig . ',') && - empty($phpMussel['memCache']['ignoreme']) - ) { - $phpMussel['Detected']($heur, $lnap, $xsig, $ofn, $ofnSafe, $out, $flagged, $md5, $str_len); - } - } - } - } elseif ($ThisConf[1] === 3) { - if (!empty($PEArr['FINFO'])) { - foreach ($PEArr['FINFO'] as $PEArr['ThisPart']) { - if (substr_count($phpMussel['memCache'][$SigFile], $PEArr['ThisPart'])) { - $xsig = $phpMussel['substraf']($phpMussel['memCache'][$SigFile], $PEArr['ThisPart']); - if (substr_count($xsig, "\n")) { - $xsig = $phpMussel['substrbf']($xsig, "\n"); - } - $xsig = $phpMussel['vn_shorthand']($xsig); - if ( - !substr_count($phpMussel['memCache']['greylist'], ',' . $xsig . ',') && - empty($phpMussel['memCache']['ignoreme']) - ) { - $phpMussel['Detected']($heur, $lnap, $xsig, $ofn, $ofnSafe, $out, $flagged, $md5, $str_len); - } - } - } - } - } elseif ($ThisConf[1] === 4) { - foreach ([$URLScanner['DomainsNoLookup'], $URLScanner['URLsNoLookup']] as $URLScanner['ThisArr']) { - foreach ($URLScanner['ThisArr'] as $URLScanner['This']) { - if (substr_count($phpMussel['memCache'][$SigFile], $URLScanner['This'])) { - $xsig = $phpMussel['substraf']($phpMussel['memCache'][$SigFile], $URLScanner['This']); - if (substr_count($xsig, "\n")) { - $xsig = $phpMussel['substrbf']($xsig, "\n"); - } - if (substr($URLScanner['This'], 0, 15) === 'DOMAIN-NOLOOKUP') { - $URLScanner['DomainPartsNoLookup'][$xsig] = true; - } else { - $URLScanner['URLPartsNoLookup'][$xsig] = true; - } - } - } - } - foreach ([ - $URLScanner['TLDs'], - $URLScanner['Domains'], - $URLScanner['URLs'], - $URLScanner['Queries'] - ] as $URLScanner['ThisArr']) { - foreach ($URLScanner['ThisArr'] as $URLScanner['This']) { - if (substr_count($phpMussel['memCache'][$SigFile], $URLScanner['This'])) { - $xsig = $phpMussel['substraf']($phpMussel['memCache'][$SigFile], $URLScanner['This']); - if (substr_count($xsig, "\n")) { - $xsig = $phpMussel['substrbf']($xsig, "\n"); - } - if ( - ($xsig = $phpMussel['vn_shorthand']($xsig)) && - !substr_count($phpMussel['memCache']['greylist'], ',' . $xsig . ',') && - empty($phpMussel['memCache']['ignoreme']) - ) { - $phpMussel['Detected']($heur, $lnap, $xsig, $ofn, $ofnSafe, $out, $flagged, $md5, $str_len); - } - } - } - } - } elseif ($ThisConf[1] === 5) { - $coexi = 0; - $SigName = ''; - while (true) { - $coexi++; - if ( - $coexi === 1 && - substr_count($phpMussel['memCache'][$SigFile], "\n" . '$md5:' . $md5 . ';') - ) { - $xsig = explode("\n" . '$md5:' . $md5 . ';', $phpMussel['memCache'][$SigFile]); - } elseif ( - $coexi === 2 && - substr_count($phpMussel['memCache'][$SigFile], "\n" . '$str_len:' . $str_len . ';') - ) { - $xsig = explode("\n" . '$str_len:' . $str_len . ';', $phpMussel['memCache'][$SigFile]); - } elseif ( - $coexi === 3 && - substr_count($phpMussel['memCache'][$SigFile], "\n" . '$fourcc:' . $fourcc . ';') - ) { - $xsig = explode("\n" . '$fourcc:' . $fourcc . ';', $phpMussel['memCache'][$SigFile]); - } elseif ( - $coexi === 4 && - substr_count($phpMussel['memCache'][$SigFile], "\n" . '$twocc:' . $twocc . ';') - ) { - $xsig = explode("\n" . '$twocc:' . $twocc . ';', $phpMussel['memCache'][$SigFile]); - } elseif ( - $coexi === 5 && - substr_count($phpMussel['memCache'][$SigFile], "\n" . '$phase:' . $phase . ';') - ) { - $xsig = explode("\n" . '$phase:' . $phase . ';', $phpMussel['memCache'][$SigFile]); - } elseif ( - $coexi === 6 && - substr_count($phpMussel['memCache'][$SigFile], "\n" . '$xt:' . $xt . ';') - ) { - $xsig = explode("\n" . '$xt:' . $xt . ';', $phpMussel['memCache'][$SigFile]); - } elseif ( - $coexi === 7 && - substr_count($phpMussel['memCache'][$SigFile], "\n" . '$sha:' . $sha . ';') - ) { - $xsig = explode("\n" . '$sha:' . $sha . ';', $phpMussel['memCache'][$SigFile]); - } elseif ( - $coexi === 8 && - substr_count($phpMussel['memCache'][$SigFile], "\n" . '$crc:' . $crc . ';') - ) { - $xsig = explode("\n" . '$crc:' . $crc . ';', $phpMussel['memCache'][$SigFile]); - } elseif ( - $coexi === 9 && - $is_html && - substr_count($phpMussel['memCache'][$SigFile], "\n" . '$is_html:1;') - ) { - $xsig = explode("\n" . '$is_html:1;', $phpMussel['memCache'][$SigFile]); - } elseif ( - $coexi === 9 && - !$is_html && - substr_count($phpMussel['memCache'][$SigFile], "\n" . '$is_html:0;') - ) { - $xsig = explode("\n" . '$is_html:0;', $phpMussel['memCache'][$SigFile]); - } elseif ( - $coexi === 10 && - $is_graphics && - substr_count($phpMussel['memCache'][$SigFile], "\n" . '$is_graphics:1;') - ) { - $xsig = explode("\n" . '$is_graphics:1;', $phpMussel['memCache'][$SigFile]); - } elseif ( - $coexi === 10 && - !$is_graphics && - substr_count($phpMussel['memCache'][$SigFile], "\n" . '$is_graphics:0;') - ) { - $xsig = explode("\n" . '$is_graphics:0;', $phpMussel['memCache'][$SigFile]); - } elseif ( - $coexi === 11 && - $is_pe && - substr_count($phpMussel['memCache'][$SigFile], "\n" . '$is_pe:1;') - ) { - $xsig = explode("\n" . '$is_pe:1;', $phpMussel['memCache'][$SigFile]); - } elseif ( - $coexi === 11 && - !$is_pe && - substr_count($phpMussel['memCache'][$SigFile], "\n" . '$is_pe:0;') - ) { - $xsig = explode("\n" . '$is_pe:0;', $phpMussel['memCache'][$SigFile]); - } elseif ( - $coexi === 12 && - $is_macho && - substr_count($phpMussel['memCache'][$SigFile], "\n" . '$is_macho:1;') - ) { - $xsig = explode("\n" . '$is_macho:1;', $phpMussel['memCache'][$SigFile]); - } elseif ( - $coexi === 12 && - !$is_macho && - substr_count($phpMussel['memCache'][$SigFile], "\n" . '$is_macho:0;') - ) { - $xsig = explode("\n" . '$is_macho:0;', $phpMussel['memCache'][$SigFile]); - } elseif ( - $coexi === 13 && - substr_count($phpMussel['memCache'][$SigFile], "\n" . '$xts:' . $xts . ';') - ) { - $xsig = explode("\n" . '$xts:' . $xts . ';', $phpMussel['memCache'][$SigFile]); - } elseif ( - $coexi === 14 && - substr_count($phpMussel['memCache'][$SigFile], "\n" . '$NumOfSections:' . $NumOfSections . ';') - ) { - $xsig = explode("\n" . '$NumOfSections:' . $NumOfSections . ';', $phpMussel['memCache'][$SigFile]); - } elseif ( - $coexi === 15 && - substr_count($phpMussel['memCache'][$SigFile], "\n" . '$container:' . $container . ';') - ) { - $xsig = explode("\n" . '$container:' . $container . ';', $phpMussel['memCache'][$SigFile]); - } elseif ($coexi > 15) { - break; - } else { - $xsig = []; - } - $xc = count($xsig); - if (isset($xsig[0])) { - $xsig[0] = ''; - } - if ($xc > 0) { - for ($xi = 1; $xi < $xc; $xi++) { - if (substr_count($xsig[$xi], "\n")) { - $xsig[$xi] = $phpMussel['substrbf']($xsig[$xi], "\n"); - } - if (substr_count($xsig[$xi], ';')) { - if (!substr_count($xsig[$xi], ':')) { - continue; - } - $SigName = $phpMussel['vn_shorthand']($phpMussel['substral']($xsig[$xi], ';')); - $xsig[$xi] = explode(';', $phpMussel['substrbl']($xsig[$xi], ';')); - $sxc = count($xsig[$xi]); - } else { - $SigName = $phpMussel['vn_shorthand']($xsig[$xi]); - $xsig[$xi] = ''; - $sxc = 0; - } - if ($sxc > 0) { - for ($sxi = 0; $sxi < $sxc; $sxi++) { - $xsig[$xi][$sxi] = explode(':', $xsig[$xi][$sxi], 7); - if ($xsig[$xi][$sxi][0] === 'LV') { - if (!isset($xsig[$xi][$sxi][1]) || substr($xsig[$xi][$sxi][1], 0, 1) !== '$') { - continue 2; - } - $lv_haystack = substr($xsig[$xi][$sxi][1], 1); - if (!isset($$lv_haystack) || is_array($$lv_haystack)) { - continue 2; - } - $lv_haystack = $$lv_haystack; - if ($climode) { - $lv_haystack = $phpMussel['substral']($phpMussel['substral']($lv_haystack, '/'), "\\"); - } - $lv_needle = (isset($xsig[$xi][$sxi][2])) ? $xsig[$xi][$sxi][2] : ''; - $pos_A = (isset($xsig[$xi][$sxi][3])) ? $xsig[$xi][$sxi][3] : 0; - $pos_Z = (isset($xsig[$xi][$sxi][4])) ? $xsig[$xi][$sxi][4] : 0; - $lv_min = (isset($xsig[$xi][$sxi][5])) ? $xsig[$xi][$sxi][5] : 0; - $lv_max = (isset($xsig[$xi][$sxi][6])) ? $xsig[$xi][$sxi][6] : -1; - if (!$phpMussel['lv_match']($lv_needle, $lv_haystack, $pos_A, $pos_Z, $lv_min, $lv_max)) { - continue 2; - } - } elseif (isset($xsig[$xi][$sxi][2])) { - if (isset($xsig[$xi][$sxi][3])) { - if ($xsig[$xi][$sxi][2] == 'A') { - if ( - !substr_count(',FD,FD-RX,FD-NORM,FD-NORM-RX,META,', ',' . $xsig[$xi][$sxi][0] . ',') || ( - $xsig[$xi][$sxi][0] == 'FD' && - !substr_count("\x01" . substr($str_hex, 0, $xsig[$xi][$sxi][3] * 2), "\x01" . $xsig[$xi][$sxi][1]) - ) || ( - $xsig[$xi][$sxi][0] == 'FD-RX' && - !preg_match('/\A(?:' . $xsig[$xi][$sxi][1] . ')/i', substr($str_hex, 0, $xsig[$xi][$sxi][3] * 2)) - ) || ( - $xsig[$xi][$sxi][0] == 'FD-NORM' && - !substr_count("\x01" . substr($str_hex_norm, 0, $xsig[$xi][$sxi][3] * 2), "\x01" . $xsig[$xi][$sxi][1]) - ) || ( - $xsig[$xi][$sxi][0] == 'FD-NORM-RX' && - !preg_match('/\A(?:' . $xsig[$xi][$sxi][1] . ')/i', substr($str_hex_norm, 0, $xsig[$xi][$sxi][3] * 2)) - ) || ( - $xsig[$xi][$sxi][0] == 'META' && - !preg_match('/\A(?:' . $xsig[$xi][$sxi][1] . ')/i', substr($CoExMeta, 0, $xsig[$xi][$sxi][3] * 2)) - ) - ) { - continue 2; - } - } else { - if ( - !substr_count(',FD,FD-RX,FD-NORM,FD-NORM-RX,META,', ',' . $xsig[$xi][$sxi][0] . ',') || ( - $xsig[$xi][$sxi][0] == 'FD' && - !substr_count(substr($str_hex, $xsig[$xi][$sxi][2] * 2, $xsig[$xi][$sxi][3] * 2), $xsig[$xi][$sxi][1]) - ) || ( - $xsig[$xi][$sxi][0] == 'FD-RX' && - !preg_match('/(?:' . $xsig[$xi][$sxi][1] . ')/i', substr($str_hex, $xsig[$xi][$sxi][2] * 2, $xsig[$xi][$sxi][3] * 2)) - ) || ( - $xsig[$xi][$sxi][0] == 'FD-NORM' && - !substr_count(substr($str_hex_norm, $xsig[$xi][$sxi][2] * 2, $xsig[$xi][$sxi][3] * 2), $xsig[$xi][$sxi][1]) - ) || ( - $xsig[$xi][$sxi][0] == 'FD-NORM-RX' && - !preg_match('/(?:' . $xsig[$xi][$sxi][1] . ')/i', substr($str_hex_norm, $xsig[$xi][$sxi][2] * 2, $xsig[$xi][$sxi][3] * 2)) - ) || ( - $xsig[$xi][$sxi][0] == 'META' && - !preg_match('/(?:' . $xsig[$xi][$sxi][1] . ')/i', substr($CoExMeta, $xsig[$xi][$sxi][2] * 2, $xsig[$xi][$sxi][3] * 2)) - ) - ) { - continue 2; - } - } - } else { - if ($xsig[$xi][$sxi][2] == 'A') { - if ( - !substr_count(',FN,FD,FD-RX,FD-NORM,FD-NORM-RX,META,', ',' . $xsig[$xi][$sxi][0] . ',') || ( - $xsig[$xi][$sxi][0] == 'FN' && - !preg_match('/\A(?:' . $xsig[$xi][$sxi][1] . ')/i', $ofn) - ) || ( - $xsig[$xi][$sxi][0] == 'FD' && - !substr_count("\x01" . $str_hex, "\x01" . $xsig[$xi][$sxi][1]) - ) || ( - $xsig[$xi][$sxi][0] == 'FD-RX' && - !preg_match('/\A(?:' . $xsig[$xi][$sxi][1] . ')/i', $str_hex) - ) || ( - $xsig[$xi][$sxi][0] == 'FD-NORM' && - !substr_count("\x01" . $str_hex_norm, "\x01" . $xsig[$xi][$sxi][1]) - ) || ( - $xsig[$xi][$sxi][0] == 'FD-NORM-RX' && - !preg_match('/\A(?:' . $xsig[$xi][$sxi][1] . ')/i', $str_hex_norm) - ) || ( - $xsig[$xi][$sxi][0] == 'META' && - !preg_match('/\A(?:' . $xsig[$xi][$sxi][1] . ')/i', $CoExMeta) - ) - ) { - continue 2; - } - } else { - if ( - !substr_count(',FD,FD-RX,FD-NORM,FD-NORM-RX,META,', ',' . $xsig[$xi][$sxi][0] . ',') || ( - $xsig[$xi][$sxi][0] == 'FD' && - !substr_count(substr($str_hex, $xsig[$xi][$sxi][2] * 2), $xsig[$xi][$sxi][1]) - ) || ( - $xsig[$xi][$sxi][0] == 'FD-RX' && - !preg_match('/(?:' . $xsig[$xi][$sxi][1] . ')/i', substr($str_hex, $xsig[$xi][$sxi][2] * 2)) - ) || ( - $xsig[$xi][$sxi][0] == 'FD-NORM' && - !substr_count(substr($str_hex_norm, $xsig[$xi][$sxi][2] * 2), $xsig[$xi][$sxi][1]) - ) || ( - $xsig[$xi][$sxi][0] == 'FD-NORM-RX' && - !preg_match('/(?:' . $xsig[$xi][$sxi][1] . ')/i', substr($str_hex_norm, $xsig[$xi][$sxi][2] * 2)) - ) || ( - $xsig[$xi][$sxi][0] == 'META' && - !preg_match('/(?:' . $xsig[$xi][$sxi][1] . ')/i', substr($CoExMeta, $xsig[$xi][$sxi][2] * 2)) - ) - ) { - continue 2; - } - } - } - } else { - if ( - ( - $xsig[$xi][$sxi][0] == 'FN' && - !preg_match('/(?:' . $xsig[$xi][$sxi][1] . ')/i', $ofn) - ) || ( - $xsig[$xi][$sxi][0] == 'FS-MIN' && - $str_len < $xsig[$xi][$sxi][1] - ) || ( - $xsig[$xi][$sxi][0] == 'FS-MAX' && - $str_len > $xsig[$xi][$sxi][1] - ) || ( - $xsig[$xi][$sxi][0] == 'FD' && - !substr_count($str_hex, $xsig[$xi][$sxi][1]) - ) || ( - $xsig[$xi][$sxi][0] == 'FD-RX' && - !preg_match('/(?:' . $xsig[$xi][$sxi][1] . ')/i', $str_hex) - ) || ( - $xsig[$xi][$sxi][0] == 'FD-NORM' && - !substr_count($str_hex_norm, $xsig[$xi][$sxi][1]) - ) || ( - $xsig[$xi][$sxi][0] == 'FD-NORM-RX' && - !preg_match('/(?:' . $xsig[$xi][$sxi][1] . ')/i', $str_hex_norm) - ) || ( - $xsig[$xi][$sxi][0] == 'META' && - !preg_match('/(?:' . $xsig[$xi][$sxi][1] . ')/i', $CoExMeta) - ) - ) { - continue 2; - } - if (substr($xsig[$xi][$sxi][0], 0, 1) == '$') { - $vf = substr($xsig[$xi][$sxi][0], 1); - if (!isset($$vf) || is_array($$vf) || $$vf != $xsig[$xi][$sxi][1]) { - continue 2; - } - } elseif (substr($xsig[$xi][$sxi][0], 0, 2) == '!$') { - $vf = substr($xsig[$xi][$sxi][0], 2); - if (!isset($$vf) || is_array($$vf) || $$vf == $xsig[$xi][$sxi][1]) { - continue 2; - } - } elseif (!substr_count(',FN,FS-MIN,FS-MAX,FD,FD-RX,FD-NORM,FD-NORM-RX,META,', ',' . $xsig[$xi][$sxi][0] . ',')) { - continue 2; - } - } - } - } - if ( - $SigName && - !substr_count($phpMussel['memCache']['greylist'], ',' . $SigName . ',') && - empty($phpMussel['memCache']['ignoreme']) - ) { - $phpMussel['Detected']($heur, $lnap, $SigName, $ofn, $ofnSafe, $out, $flagged, $md5, $str_len); - } - $xsig[$xi] = ''; - } - } - } - $sxi = $sxc = $SigName = $xi = $xc = $xsig = $coexi = ''; - } - } - } - - /** Process mappable signatures. */ - foreach ([ - ['Filename', 'str_hex', 'str_hex_len', 2], - ['Standard', 'str_hex', 'str_hex_len', 0], - ['Normalised', 'str_hex_norm', 'str_hex_norm_len', 0], - ['HTML', 'str_hex_html', 'str_hex_html_len', 0], - ['Standard_RegEx', 'str_hex', 'str_hex_len', 1], - ['Normalised_RegEx', 'str_hex_norm', 'str_hex_norm_len', 1], - ['HTML_RegEx', 'str_hex_html', 'str_hex_html_len', 1] - ] as $ThisConf) { - $DataSource = $ThisConf[1]; - $DataSourceLen = $ThisConf[2]; - $SigFiles = isset($phpMussel['memCache'][$ThisConf[0]]) ? explode(',', $phpMussel['memCache'][$ThisConf[0]]) : []; - foreach ($SigFiles as $SigFile) { - if (!$SigFile) { - continue; - } - if (!isset($phpMussel['memCache'][$SigFile])) { - $phpMussel['memCache'][$SigFile] = $phpMussel['ReadFileAsArray']($phpMussel['sigPath'] . $SigFile, FILE_IGNORE_NEW_LINES); - } - if (!$phpMussel['memCache'][$SigFile]) { - $phpMussel['memCache']['scan_errors']++; - if (!$phpMussel['Config']['signatures']['fail_silently']) { - if (!$flagged) { - $phpMussel['killdata'] .= $md5 . ':' . $str_len . ":\n"; - } - $phpMussel['whyflagged'] .= - $phpMussel['lang']['scan_signature_file_missing'] . - ' (' . $SigFile . ')' . $phpMussel['lang']['_exclamation']; - return [-3, - $lnap . $phpMussel['lang']['scan_signature_file_missing'] . - ' (' . $SigFile . ')' . $phpMussel['lang']['_exclamation_final'] . "\n" - ]; - } - } else { - $NumSigs = count($phpMussel['memCache'][$SigFile]); - for ($SigNum = 0; $SigNum < $NumSigs; $SigNum++) { - if (!$ThisSig = $phpMussel['memCache'][$SigFile][$SigNum]) { - continue; - } - if (substr($ThisSig, 0, 1) == '>') { - $ThisSig = explode('>', $ThisSig, 4); - if (!isset($ThisSig[1]) || !isset($ThisSig[2]) || !isset($ThisSig[3])) { - break; - } - $ThisSig[3] = (int)$ThisSig[3]; - if ($ThisSig[1] == 'FN') { - if (!preg_match('/(?:' . $ThisSig[2] . ')/i', $ofn)) { - if ($ThisSig[3] <= $SigNum) { - break; - } - $SigNum = $ThisSig[3] - 1; - } - } elseif ($ThisSig[1] == 'FS-MIN') { - if ($str_len < $ThisSig[2]) { - if ($ThisSig[3] <= $SigNum) { - break; - } - $SigNum = $ThisSig[3] - 1; - } - } elseif ($ThisSig[1] == 'FS-MAX') { - if ($str_len > $ThisSig[2]) { - if ($ThisSig[3] <= $SigNum) { - break; - } - $SigNum = $ThisSig[3] - 1; - } - } elseif ($ThisSig[1] == 'FD') { - if (!substr_count($$DataSource, $ThisSig[2])) { - if ($ThisSig[3] <= $SigNum) { - break; - } - $SigNum = $ThisSig[3] - 1; - } - } elseif ($ThisSig[1] == 'FD-RX') { - if (!preg_match('/(?:' . $ThisSig[2] . ')/i', $$DataSource)) { - if ($ThisSig[3] <= $SigNum) { - break; - } - $SigNum = $ThisSig[3] - 1; - } - } elseif (substr($ThisSig[1], 0, 1) == '$') { - $vf = substr($ThisSig[1], 1); - if (isset($$vf) && !is_array($$vf)) { - if ($$vf != $ThisSig[2]) { - if ($ThisSig[3] <= $SigNum) { - break; - } - $SigNum = $ThisSig[3] - 1; - } - continue; - } - if ($ThisSig[3] <= $SigNum) { - break; - } - $SigNum = $ThisSig[3] - 1; - } elseif (substr($ThisSig[1], 0, 2) == '!$') { - $vf = substr($ThisSig[1], 2); - if (isset($$vf) && !is_array($$vf)) { - if ($$vf == $ThisSig[2]) { - if ($ThisSig[3] <= $SigNum) { - break; - } - $SigNum = $ThisSig[3] - 1; - } - continue; - } - if ($ThisSig[3] <= $SigNum) { - break; - } - $SigNum = $ThisSig[3] - 1; - } else { - break; - } - continue; - } - if (strpos($ThisSig, ':') !== false) { - $VN = explode(':', $ThisSig); - if ($ThisConf[3] === 0) { - $ThisSig = preg_split('/[^a-fA-F0-9>]+/i', $VN[1], -1, PREG_SPLIT_NO_EMPTY); - $ThisSig = ($ThisSig === false ? '' : implode('', $ThisSig)); - $ThisSigLen = strlen($ThisSig); - if ($phpMussel['ConfineLength']($ThisSigLen)) { - continue; - } - $xstrf = isset($VN[2]) ? $VN[2] : '*'; - $xstrt = isset($VN[3]) ? $VN[3] : '*'; - $VN = $phpMussel['vn_shorthand']($VN[0]); - $VNLC = strtolower($VN); - if ( - ($is_not_php && ( - substr_count($VNLC, '-php') || - substr_count($VNLC, '.php') - )) || - ($is_not_html && ( - substr_count($VNLC, '-htm') || - substr_count($VNLC, '.htm') - )) || - $$DataSourceLen < $ThisSigLen - ) { - continue; - } - if ( - !substr_count($phpMussel['memCache']['greylist'], ',' . $VN . ',') && - empty($phpMussel['memCache']['ignoreme']) - ) { - $ThisSig = strpos($ThisSig, '>') !== false ? explode('>', $ThisSig) : [$ThisSig]; - $ThisSigCount = count($ThisSig); - $ThisString = $$DataSource; - $phpMussel['DataConfineByOffsets']($ThisString, $xstrf, $xstrt, $SectionOffsets); - if ($xstrf === 'A') { - $ThisString = "\x01" . $ThisString; - $ThisSig[0] = "\x01" . $ThisSig[0]; - } - if ($xstrt === 'Z') { - $ThisString .= "\x01"; - $ThisSig[$ThisSigCount - 1] .= "\x01"; - } - for ($ThisSigi = 0; $ThisSigi < $ThisSigCount; $ThisSigi++) { - if (strpos($ThisString, $ThisSig[$ThisSigi]) === false) { - continue 2; - } - if ($ThisSigCount > 1 && strpos($ThisString, $ThisSig[$ThisSigi]) !== false) { - $ThisString = $phpMussel['substraf']($ThisString, $ThisSig[$ThisSigi]); - } - } - $phpMussel['Detected']($heur, $lnap, $VN, $ofn, $ofnSafe, $out, $flagged, $md5, $str_len); - } - } elseif ($ThisConf[3] === 1) { - $ThisSig = preg_split('/[\x00-\x1f]+/', $VN[1], -1, PREG_SPLIT_NO_EMPTY); - $ThisSig = ($ThisSig === false) ? '' : implode('', $ThisSig); - $ThisSigLen = strlen($ThisSig); - if ($phpMussel['ConfineLength']($ThisSigLen)) { - continue; - } - $xstrf = isset($VN[2]) ? $VN[2] : '*'; - $xstrt = isset($VN[3]) ? $VN[3] : '*'; - $VN = $phpMussel['vn_shorthand']($VN[0]); - $VNLC = strtolower($VN); - if ( - ($is_not_php && ( - substr_count($VNLC, '-php') || - substr_count($VNLC, '.php') - )) || - ($is_not_html && ( - substr_count($VNLC, '-htm') || - substr_count($VNLC, '.htm') - )) - ) { - continue; - } - if ( - !substr_count($phpMussel['memCache']['greylist'], ',' . $VN . ',') && - empty($phpMussel['memCache']['ignoreme']) - ) { - $ThisString = $$DataSource; - $phpMussel['DataConfineByOffsets']($ThisString, $xstrf, $xstrt, $SectionOffsets); - if ($xstrf === 'A') { - if ($xstrt === 'Z') { - if (!preg_match('/\A(?:' . $ThisSig . ')$/i', $ThisString)) { - continue; - } - } elseif (!preg_match('/\A(?:' . $ThisSig . ')/i', $ThisString)) { - continue; - } - } else { - if ($xstrt === 'Z') { - if (!preg_match('/(?:' . $ThisSig . ')$/i', $ThisString)) { - continue; - } - } elseif (!preg_match('/(?:' . $ThisSig . ')/i', $ThisString)) { - continue; - } - } - $phpMussel['Detected']($heur, $lnap, $VN, $ofn, $ofnSafe, $out, $flagged, $md5, $str_len); - } - } elseif ($ThisConf[3] === 2) { - $ThisSig = preg_split('/[\x00-\x1f]+/', $VN[1], -1, PREG_SPLIT_NO_EMPTY); - $ThisSig = ($ThisSig === false) ? '' : implode('', $ThisSig); - $VN = $phpMussel['vn_shorthand']($VN[0]); - if ( - $ThisSig && - !substr_count($phpMussel['memCache']['greylist'], ',' . $VN . ',') && - empty($phpMussel['memCache']['ignoreme']) - ) { - if (preg_match('/(?:' . $ThisSig . ')/i', $ofn)) { - $phpMussel['Detected']($heur, $lnap, $VN, $ofn, $ofnSafe, $out, $flagged, $md5, $str_len); - } - } - } - } - } - } - } - } - - /** Perform API lookups for domains. */ - if (isset($URLScanner) && !$out) { - - $URLScanner['DomainsCount'] = count($URLScanner['DomainParts']); - - /** Codeblock for performing hpHosts API lookups. */ - if ($phpMussel['Config']['urlscanner']['lookup_hphosts'] && $URLScanner['DomainsCount']) { - /** Fetch the cache entry for hpHosts, if it doesn't already exist. */ - if (!isset($phpMussel['memCache']['urlscanner_domains'])) { - $phpMussel['memCache']['urlscanner_domains'] = $phpMussel['FetchCache']('urlscanner_domains'); - } - $URLScanner['y'] = $phpMussel['Time'] + $phpMussel['Config']['urlscanner']['cache_time']; - $URLScanner['ScriptIdentEncoded'] = urlencode($phpMussel['ScriptIdent']); - $URLScanner['classes'] = [ - 'EMD' => "\x1a\x82\x10\x1bXXX", - 'EXP' => "\x1a\x82\x10\x16XXX", - 'GRM' => "\x1a\x82\x10\x32XXX", - 'HFS' => "\x1a\x82\x10\x32XXX", - 'PHA' => "\x1a\x82\x10\x32XXX", - 'PSH' => "\x1a\x82\x10\x31XXX" - ]; - for ($i = 0; $i < $URLScanner['DomainsCount']; $i++) { - if (!empty($URLScanner['DomainPartsNoLookup'][$URLScanner['DomainParts'][$i]])) { - continue; - } - if ( - $phpMussel['Config']['urlscanner']['maximum_api_lookups'] > 0 && - $phpMussel['LookupCount'] > $phpMussel['Config']['urlscanner']['maximum_api_lookups'] - ) { - if ($phpMussel['Config']['urlscanner']['maximum_api_lookups_response']) { - if (!$flagged) { - $phpMussel['killdata'] .= $md5 . ':' . $str_len . ':' . $ofn . "\n"; - $flagged = true; - } - $out .= - $lnap . $phpMussel['lang']['too_many_urls'] . - $phpMussel['lang']['_exclamation_final'] . "\n"; - $phpMussel['whyflagged'] .= - $phpMussel['lang']['too_many_urls'] . - ' (' . $ofnSafe . ')' . - $phpMussel['lang']['_exclamation']; - } - break; - } - $URLScanner['This'] = md5($URLScanner['DomainParts'][$i]) . ':' . strlen($URLScanner['DomainParts'][$i]) . ':'; - while (substr_count($phpMussel['memCache']['urlscanner_domains'], $URLScanner['This'])) { - $URLScanner['Class'] = - $phpMussel['substrbf']($phpMussel['substral']($phpMussel['memCache']['urlscanner_domains'], $URLScanner['This']), ';'); - if (!substr_count($phpMussel['memCache']['urlscanner_domains'], $URLScanner['This'] . ':' . $URLScanner['Class'] . ';')) { - break; - } - $URLScanner['Expiry'] = (int)$phpMussel['substrbf']($URLScanner['Class'], ':'); - if ($URLScanner['Expiry'] > $phpMussel['Time']) { - $URLScanner['Class'] = $phpMussel['substraf']($URLScanner['Class'], ':'); - if (!$URLScanner['Class']) { - continue 2; - } - $URLScanner['Class'] = $phpMussel['vn_shorthand']($URLScanner['Class']); - $phpMussel['Detected']($heur, $lnap, $URLScanner['Class'], $ofn, $ofnSafe, $out, $flagged, $md5, $str_len); - } - $phpMussel['memCache']['urlscanner_domains'] = - str_ireplace($URLScanner['This'] . $URLScanner['Class'] . ';', '', $phpMussel['memCache']['urlscanner_domains']); - } - $URLScanner['req'] = - 'v=' . $URLScanner['ScriptIdentEncoded'] . - '&s=' . $URLScanner['DomainParts'][$i] . - '&class=true'; - $URLScanner['req_result'] = $phpMussel['Request']( - 'http://verify.hosts-file.net/?' . $URLScanner['req'], - ['v' => $URLScanner['ScriptIdentEncoded'], 's' => $URLScanner['DomainParts'][$i], 'Class' => true], - 12 - ); - $phpMussel['LookupCount']++; - if (substr($URLScanner['req_result'], 0, 6) == "Listed") { - $URLScanner['Class'] = substr($URLScanner['req_result'], 7, 3); - $URLScanner['Class'] = isset($URLScanner['classes'][$URLScanner['Class']]) ? - $URLScanner['classes'][$URLScanner['Class']] : "\x1a\x82\x10\x3fXXX"; - $phpMussel['memCache']['urlscanner_domains'] .= - $URLScanner['This'] . - $URLScanner['y'] . ':' . - $URLScanner['Class'] . ';'; - $URLScanner['Class'] = $phpMussel['vn_shorthand']($URLScanner['Class']); - $phpMussel['Detected']($heur, $lnap, $URLScanner['Class'], $ofn, $ofnSafe, $out, $flagged, $md5, $str_len); - } - $phpMussel['memCache']['urlscanner_domains'] .= $URLScanner['Domains'][$i] . $URLScanner['y'] . ':;'; - } - $phpMussel['SaveCache']('urlscanner_domains', $URLScanner['y'], $phpMussel['memCache']['urlscanner_domains']); - } - - $URLScanner['URLsCount'] = count($URLScanner['URLParts']); - - /** Codeblock for performing Google Safe Browsing API lookups. */ - if ($phpMussel['Config']['urlscanner']['google_api_key'] && $URLScanner['URLsCount']) { - $URLScanner['URLsChunked'] = ( - $URLScanner['URLsCount'] > 500 - ) ? array_chunk($URLScanner['URLParts'], 500) : [$URLScanner['URLParts']]; - $URLScanner['URLChunks'] = count($URLScanner['URLsChunked']); - for ($i = 0; $i < $URLScanner['URLChunks']; $i++) { - if ( - $phpMussel['Config']['urlscanner']['maximum_api_lookups'] > 0 && - $phpMussel['LookupCount'] > $phpMussel['Config']['urlscanner']['maximum_api_lookups'] - ) { - if ($phpMussel['Config']['urlscanner']['maximum_api_lookups_response']) { - if (!$flagged) { - $phpMussel['killdata'] .= $md5 . ':' . $str_len . ':' . $ofn . "\n"; - $flagged = true; - } - $out .= - $lnap . $phpMussel['lang']['too_many_urls'] . - $phpMussel['lang']['_exclamation_final'] . "\n"; - $phpMussel['whyflagged'] .= - $phpMussel['lang']['too_many_urls'] . - ' (' . $ofnSafe . ')' . - $phpMussel['lang']['_exclamation']; - } - break; - } - try { - $URLScanner['SafeBrowseLookup'] = $phpMussel['SafeBrowseLookup']( - $URLScanner['URLsChunked'][$i], - $URLScanner['URLPartsNoLookup'], - $URLScanner['DomainPartsNoLookup'] - ); - } catch (\Exception $e) { - throw new \Exception($e->getMessage()); - } - if ($URLScanner['SafeBrowseLookup'] !== 204) { - if (!$flagged) { - $phpMussel['killdata'] .= $md5 . ':' . $str_len . ':' . $ofn . "\n"; - $flagged = true; - } - $URLScanner['langRef'] = 'SafeBrowseLookup_' . $URLScanner['SafeBrowseLookup']; - if (empty($phpMussel['lang'][$URLScanner['langRef']])) { - $URLScanner['langRef'] = 'SafeBrowseLookup_999'; - } - $out .= - $lnap . $phpMussel['lang'][$URLScanner['langRef']] . - $phpMussel['lang']['_exclamation_final'] . "\n"; - $phpMussel['whyflagged'] .= - $phpMussel['lang'][$URLScanner['langRef']] . ' (' . $ofnSafe . ')' . - $phpMussel['lang']['_exclamation']; - } - } - } - - } - - /** URL scanner data cleanup. */ - unset($URLScanner); - - /** PHP chameleon attack detection. */ - if ($phpMussel['Config']['attack_specific']['chameleon_from_php']) { - if ( - !( - substr_count(',cvd,inc,md,phar,pzp,tpl,txt,tzt,', ',' . $xt . ',') || - substr_count(',php*,', ',' . $xts . ',') || - substr_count(',cvd,inc,md,phar,pzp,tpl,txt,tzt,', ',' . $gzxt . ',') || - substr_count(',php*,', ',' . $gzxts . ',') || - substr_count(',' . $phpMussel['Config']['attack_specific']['archive_file_extensions'] . ',', ',' . $xts . ',') || - substr_count(',' . $phpMussel['Config']['attack_specific']['archive_file_extensions'] . ',', ',' . $gzxts . ',') || - substr_count(',' . $phpMussel['Config']['attack_specific']['archive_file_extensions'] . ',', ',' . $xt . ',') || - substr_count(',' . $phpMussel['Config']['attack_specific']['archive_file_extensions'] . ',', ',' . $gzxt . ',') - ) && - substr_count($str_hex_norm,'3c3f706870') - ) { - if (!$flagged) { - $phpMussel['killdata'] .= $md5 . ':' . $str_len . ':' . $ofn . "\n"; - $flagged = true; - } - $heur['detections']++; - $phpMussel['memCache']['detections_count']++; - $out .= $lnap . $phpMussel['ParseVars']( - ['x' => 'PHP'], - $phpMussel['lang']['scan_chameleon'] - ) . $phpMussel['lang']['_exclamation_final'] . "\n"; - $phpMussel['whyflagged'] .= $phpMussel['ParseVars']( - ['x' => 'PHP'], - $phpMussel['lang']['scan_chameleon'] - ) . ' (' . $ofnSafe . ')' . $phpMussel['lang']['_exclamation']; - } - } - - /** Executable chameleon attack detection. */ - if ($phpMussel['Config']['attack_specific']['chameleon_from_exe']) { - if (substr_count(',acm,ax,com,cpl,dll,drv,exe,ocx,rs,scr,sys,', ',' . $xt . ',')) { - if ($twocc !== '4d5a') { - if (!$flagged) { - $phpMussel['killdata'] .= $md5 . ':' . $str_len . ':' . $ofn . "\n"; - $flagged = true; - } - $heur['detections']++; - $phpMussel['memCache']['detections_count']++; - $out .= $lnap . $phpMussel['ParseVars']( - ['x' => 'EXE'], - $phpMussel['lang']['scan_chameleon'] - ) . $phpMussel['lang']['_exclamation_final'] . "\n"; - $phpMussel['whyflagged'] .= $phpMussel['ParseVars']( - ['x' => 'EXE'], - $phpMussel['lang']['scan_chameleon'] - ) . ' (' . $ofnSafe . ')' . $phpMussel['lang']['_exclamation']; - } - } elseif ($twocc === '4d5a') { - if (!$flagged) { - $phpMussel['killdata'] .= $md5 . ':' . $str_len . ':' . $ofn . "\n"; - $flagged = true; - } - $heur['detections']++; - $phpMussel['memCache']['detections_count']++; - $out .= $lnap . $phpMussel['ParseVars']( - ['x' => 'EXE'], - $phpMussel['lang']['scan_chameleon'] - ) . $phpMussel['lang']['_exclamation_final'] . "\n"; - $phpMussel['whyflagged'] .= $phpMussel['ParseVars']( - ['x' => 'EXE'], - $phpMussel['lang']['scan_chameleon'] - ) . ' (' . $ofnSafe . ')' . $phpMussel['lang']['_exclamation']; - } - if ($xt === 'elf') { - if ($fourcc !== '7f454c46') { - if (!$flagged) { - $phpMussel['killdata'] .= $md5 . ':' . $str_len . ':' . $ofn . "\n"; - $flagged = true; - } - $heur['detections']++; - $phpMussel['memCache']['detections_count']++; - $out .= $lnap . $phpMussel['ParseVars']( - ['x' => 'ELF'], - $phpMussel['lang']['scan_chameleon'] - ) . $phpMussel['lang']['_exclamation_final'] . "\n"; - $phpMussel['whyflagged'] .= $phpMussel['ParseVars']( - ['x' => 'ELF'], - $phpMussel['lang']['scan_chameleon'] - ) . ' (' . $ofnSafe . ')' . $phpMussel['lang']['_exclamation']; - } - } elseif ($fourcc === '7f454c46') { - if (!$flagged) { - $phpMussel['killdata'] .= $md5 . ':' . $str_len . ':' . $ofn . "\n"; - $flagged = true; - } - $heur['detections']++; - $phpMussel['memCache']['detections_count']++; - $out .= $lnap . $phpMussel['ParseVars']( - ['x' => 'ELF'], - $phpMussel['lang']['scan_chameleon'] - ) . $phpMussel['lang']['_exclamation_final'] . "\n"; - $phpMussel['whyflagged'] .= $phpMussel['ParseVars']( - ['x' => 'ELF'], - $phpMussel['lang']['scan_chameleon'] - ) . ' (' . $ofnSafe . ')' . $phpMussel['lang']['_exclamation']; - } - if ($xt === 'lnk') { - if (substr($str_hex, 0, 16) !== '4c00000001140200') { - if (!$flagged) { - $phpMussel['killdata'] .= $md5 . ':' . $str_len . ':' . $ofn . "\n"; - $flagged = true; - } - $heur['detections']++; - $phpMussel['memCache']['detections_count']++; - $out .= $lnap . $phpMussel['ParseVars']( - ['x' => 'LNK'], - $phpMussel['lang']['scan_chameleon'] - ) . $phpMussel['lang']['_exclamation_final'] . "\n"; - $phpMussel['whyflagged'] .= $phpMussel['ParseVars']( - ['x' => 'LNK'], - $phpMussel['lang']['scan_chameleon'] - ) . ' (' . $ofnSafe . ')' . $phpMussel['lang']['_exclamation']; - } - } elseif (substr($str_hex, 0, 16) === '4c00000001140200') { - if (!$flagged) { - $phpMussel['killdata'] .= $md5 . ':' . $str_len . ':' . $ofn . "\n"; - $flagged = true; - } - $heur['detections']++; - $phpMussel['memCache']['detections_count']++; - $out .= $lnap . $phpMussel['ParseVars']( - ['x' => 'LNK'], - $phpMussel['lang']['scan_chameleon'] - ) . $phpMussel['lang']['_exclamation_final'] . "\n"; - $phpMussel['whyflagged'] .= $phpMussel['ParseVars']( - ['x' => 'LNK'], - $phpMussel['lang']['scan_chameleon'] - ) . ' (' . $ofnSafe . ')' . $phpMussel['lang']['_exclamation']; - } - if ($xt === 'msi') { - if (substr($str_hex, 0, 16) !== 'd0cf11e0a1b11ae1') { - if (!$flagged) { - $phpMussel['killdata'] .= $md5 . ':' . $str_len . ':' . $ofn . "\n"; - $flagged = true; - } - $heur['detections']++; - $phpMussel['memCache']['detections_count']++; - $out .= $lnap . $phpMussel['ParseVars']( - ['x' => 'MSI'], - $phpMussel['lang']['scan_chameleon'] - ) . $phpMussel['lang']['_exclamation_final'] . "\n"; - $phpMussel['whyflagged'] .= $phpMussel['ParseVars']( - ['x' => 'MSI'], - $phpMussel['lang']['scan_chameleon'] - ) . ' (' . $ofnSafe . ')' . $phpMussel['lang']['_exclamation']; - } - } - } - - /** Archive chameleon attack detection. */ - if ($phpMussel['Config']['attack_specific']['chameleon_to_archive']) { - if ($xts === 'zip*') { - if ($twocc !== '504b') { - if (!$flagged) { - $phpMussel['killdata'] .= $md5 . ':' . $str_len . ':' . $ofn . "\n"; - $flagged = true; - } - $heur['detections']++; - $phpMussel['memCache']['detections_count']++; - $out .= $lnap . $phpMussel['ParseVars']( - ['x' => 'ZIP'], - $phpMussel['lang']['scan_chameleon'] - ) . $phpMussel['lang']['_exclamation_final'] . "\n"; - $phpMussel['whyflagged'] .= $phpMussel['ParseVars']( - ['x' => 'ZIP'], - $phpMussel['lang']['scan_chameleon'] - ) . ' (' . $ofnSafe . ')' . $phpMussel['lang']['_exclamation']; - } - } - if ($xt === 'rar') { - if ($fourcc !== '52617221' && $fourcc !== '52457e5e') { - if (!$flagged) { - $phpMussel['killdata'] .= $md5 . ':' . $str_len . ':' . $ofn . "\n"; - $flagged = true; - } - $heur['detections']++; - $phpMussel['memCache']['detections_count']++; - $out .= $lnap . $phpMussel['ParseVars']( - ['x' => 'RAR'], - $phpMussel['lang']['scan_chameleon'] - ) . $phpMussel['lang']['_exclamation_final'] . "\n"; - $phpMussel['whyflagged'] .= $phpMussel['ParseVars']( - ['x' => 'RAR'], - $phpMussel['lang']['scan_chameleon'] - ) . ' (' . $ofnSafe . ')' . $phpMussel['lang']['_exclamation']; - } - } - if ($xt === 'gz') { - if ($twocc !== '1f8b') { - if (!$flagged) { - $phpMussel['killdata'] .= $md5 . ':' . $str_len . ':' . $ofn . "\n"; - $flagged = true; - } - $heur['detections']++; - $phpMussel['memCache']['detections_count']++; - $out .= $lnap . $phpMussel['ParseVars']( - ['x' => 'GZIP'], - $phpMussel['lang']['scan_chameleon'] - ) . $phpMussel['lang']['_exclamation_final'] . "\n"; - $phpMussel['whyflagged'] .= $phpMussel['ParseVars']( - ['x' => 'GZIP'], - $phpMussel['lang']['scan_chameleon'] - ) . ' (' . $ofnSafe . ')' . $phpMussel['lang']['_exclamation']; - } - } - if ($xt === 'bz2') { - if (substr($str_hex,0,6) !== '425a68') { - if (!$flagged) { - $phpMussel['killdata'] .= $md5 . ':' . $str_len . ':' . $ofn . "\n"; - $flagged = true; - } - $heur['detections']++; - $phpMussel['memCache']['detections_count']++; - $out .= $lnap . $phpMussel['ParseVars']( - ['x' => 'BZIP2'], - $phpMussel['lang']['scan_chameleon'] - ) . $phpMussel['lang']['_exclamation_final'] . "\n"; - $phpMussel['whyflagged'] .= $phpMussel['ParseVars']( - ['x' => 'BZIP2'], - $phpMussel['lang']['scan_chameleon'] - ) . ' (' . $ofnSafe . ')' . $phpMussel['lang']['_exclamation']; - } - } - } - - /** Office document chameleon attack detection. */ - if ($phpMussel['Config']['attack_specific']['chameleon_to_doc']) { - if (substr_count(',doc,dot,pps,ppt,xla,xls,wiz,', ',' . $xt . ',')) { - if ($fourcc !== 'd0cf11e0') { - if (!$flagged) { - $phpMussel['killdata'] .= $md5 . ':' . $str_len . ':' . $ofn . "\n"; - $flagged = true; - } - $heur['detections']++; - $phpMussel['memCache']['detections_count']++; - $out .= $lnap . $phpMussel['ParseVars']( - ['x' => 'Office'], - $phpMussel['lang']['scan_chameleon'] - ) . $phpMussel['lang']['_exclamation_final'] . "\n"; - $phpMussel['whyflagged'] .= $phpMussel['ParseVars']( - ['x' => 'Office'], - $phpMussel['lang']['scan_chameleon'] - ) . ' (' . $ofnSafe . ')' . $phpMussel['lang']['_exclamation']; - } - } - } - - /** Image chameleon attack detection. */ - if ($phpMussel['Config']['attack_specific']['chameleon_to_img']) { - if ($xt === 'bmp' || $xt === 'dib') { - if ($twocc !== '424d') { - if (!$flagged) { - $phpMussel['killdata'] .= $md5 . ':' . $str_len . ':' . $ofn . "\n"; - $flagged = true; - } - $heur['detections']++; - $phpMussel['memCache']['detections_count']++; - $out .= $lnap . $phpMussel['ParseVars']( - ['x' => $phpMussel['lang']['image']], - $phpMussel['lang']['scan_chameleon'] - ) . $phpMussel['lang']['_exclamation_final'] . "\n"; - $phpMussel['whyflagged'] .= $phpMussel['ParseVars']( - ['x' => $phpMussel['lang']['image']], - $phpMussel['lang']['scan_chameleon'] - ) . ' (' . $ofnSafe . ')' . $phpMussel['lang']['_exclamation']; - } - } - if ($xt === 'gif') { - if (substr($str_hex, 0, 12) !== '474946383761' && substr($str_hex, 0, 12) !== '474946383961') { - if (!$flagged) { - $phpMussel['killdata'] .= $md5 . ':' . $str_len . ':' . $ofn . "\n"; - $flagged = true; - } - $heur['detections']++; - $phpMussel['memCache']['detections_count']++; - $out .= $lnap . $phpMussel['ParseVars']( - ['x' => $phpMussel['lang']['image']], - $phpMussel['lang']['scan_chameleon'] - ) . $phpMussel['lang']['_exclamation_final'] . "\n"; - $phpMussel['whyflagged'] .= $phpMussel['ParseVars']( - ['x' => $phpMussel['lang']['image']], - $phpMussel['lang']['scan_chameleon'] - ) . ' (' . $ofnSafe . ')' . $phpMussel['lang']['_exclamation']; - } - } - if ( - $xt === 'jfi' || - $xt === 'jfif' || - $xt === 'jif' || - $xt === 'jpe' || - $xt === 'jpeg' || - $xt === 'jpg' - ) { - if (substr($str_hex,0,6) !== 'ffd8ff') { - if (!$flagged) { - $phpMussel['killdata'] .= $md5 . ':' . $str_len . ':' . $ofn . "\n"; - $flagged = true; - } - $heur['detections']++; - $phpMussel['memCache']['detections_count']++; - $out .= $lnap . $phpMussel['ParseVars']( - ['x' => $phpMussel['lang']['image']], - $phpMussel['lang']['scan_chameleon'] - ) . $phpMussel['lang']['_exclamation_final'] . "\n"; - $phpMussel['whyflagged'] .= $phpMussel['ParseVars']( - ['x' => $phpMussel['lang']['image']], - $phpMussel['lang']['scan_chameleon'] - ) . ' (' . $ofnSafe . ')' . $phpMussel['lang']['_exclamation']; - } - } - if ($xt === 'jp2') { - if (substr($str_hex, 0, 16) !== '0000000c6a502020') { - if (!$flagged) { - $phpMussel['killdata'] .= $md5 . ':' . $str_len . ':' . $ofn . "\n"; - $flagged = true; - } - $heur['detections']++; - $phpMussel['memCache']['detections_count']++; - $out .= $lnap . $phpMussel['ParseVars']( - ['x' => $phpMussel['lang']['image']], - $phpMussel['lang']['scan_chameleon'] - ) . $phpMussel['lang']['_exclamation_final'] . "\n"; - $phpMussel['whyflagged'] .= $phpMussel['ParseVars']( - ['x' => $phpMussel['lang']['image']], - $phpMussel['lang']['scan_chameleon'] - ) . ' (' . $ofnSafe . ')' . $phpMussel['lang']['_exclamation']; - } - } - if ($xt === 'pdd' || $xt === 'psd') { - if ($fourcc !== '38425053') { - if (!$flagged) { - $phpMussel['killdata'] .= $md5 . ':' . $str_len . ':' . $ofn . "\n"; - $flagged = true; - } - $heur['detections']++; - $phpMussel['memCache']['detections_count']++; - $out .= $lnap . $phpMussel['ParseVars']( - ['x' => $phpMussel['lang']['image']], - $phpMussel['lang']['scan_chameleon'] - ) . $phpMussel['lang']['_exclamation_final'] . "\n"; - $phpMussel['whyflagged'] .= $phpMussel['ParseVars']( - ['x' => $phpMussel['lang']['image']], - $phpMussel['lang']['scan_chameleon'] - ) . ' (' . $ofnSafe . ')' . $phpMussel['lang']['_exclamation']; - } - } - if ($xt === 'png') { - if ($fourcc !== '89504e47') { - if (!$flagged) { - $phpMussel['killdata'] .= $md5 . ':' . $str_len . ':' . $ofn . "\n"; - $flagged = true; - } - $heur['detections']++; - $phpMussel['memCache']['detections_count']++; - $out .= $lnap . $phpMussel['ParseVars']( - ['x' => $phpMussel['lang']['image']], - $phpMussel['lang']['scan_chameleon'] - ) . $phpMussel['lang']['_exclamation_final'] . "\n"; - $phpMussel['whyflagged'] .= $phpMussel['ParseVars']( - ['x' => $phpMussel['lang']['image']], - $phpMussel['lang']['scan_chameleon'] - ) . ' (' . $ofnSafe . ')' . $phpMussel['lang']['_exclamation']; - } - } - if ($xt === 'webp') { - if ($fourcc !== '52494646' || substr($str, 8, 4) !== 'WEBP') { - if (!$flagged) { - $phpMussel['killdata'] .= $md5 . ':' . $str_len . ':' . $ofn . "\n"; - $flagged = true; - } - $heur['detections']++; - $phpMussel['memCache']['detections_count']++; - $out .= $lnap . $phpMussel['ParseVars']( - ['x' => $phpMussel['lang']['image']], - $phpMussel['lang']['scan_chameleon'] - ) . $phpMussel['lang']['_exclamation_final'] . "\n"; - $phpMussel['whyflagged'] .= $phpMussel['ParseVars']( - ['x' => $phpMussel['lang']['image']], - $phpMussel['lang']['scan_chameleon'] - ) . ' (' . $ofnSafe . ')' . $phpMussel['lang']['_exclamation']; - } - } - if ($xt === 'xcf') { - if (substr($str,0,8) !== 'gimp xcf') { - if (!$flagged) { - $phpMussel['killdata'] .= $md5 . ':' . $str_len . ':' . $ofn . "\n"; - $flagged = true; - } - $heur['detections']++; - $phpMussel['memCache']['detections_count']++; - $out .= $lnap . $phpMussel['ParseVars']( - ['x' => $phpMussel['lang']['image']], - $phpMussel['lang']['scan_chameleon'] - ) . $phpMussel['lang']['_exclamation_final'] . "\n"; - $phpMussel['whyflagged'] .= $phpMussel['ParseVars']( - ['x' => $phpMussel['lang']['image']], - $phpMussel['lang']['scan_chameleon'] - ) . ' (' . $ofnSafe . ')' . $phpMussel['lang']['_exclamation']; - } - } - } - - /** PDF chameleon attack detection. */ - if ($phpMussel['Config']['attack_specific']['chameleon_to_pdf']) { - if ($xt === 'pdf' && !$pdf_magic) { - if (!$flagged) { - $phpMussel['killdata'] .= $md5 . ':' . $str_len . ':' . $ofn . "\n"; - $flagged = true; - } - $heur['detections']++; - $phpMussel['memCache']['detections_count']++; - $out .= $lnap . $phpMussel['ParseVars']( - ['x' => 'PDF'], - $phpMussel['lang']['scan_chameleon'] - ) . $phpMussel['lang']['_exclamation_final'] . "\n"; - $phpMussel['whyflagged'] .= $phpMussel['ParseVars']( - ['x' => 'PDF'], - $phpMussel['lang']['scan_chameleon'] - ) . ' (' . $ofnSafe . ')' . $phpMussel['lang']['_exclamation']; - } - } - - /** Control character detection. */ - if ($phpMussel['Config']['attack_specific']['block_control_characters']) { - if (preg_match('/[\x00-\x08\x0b\x0c\x0e\x1f\x7f]/i', $str)) { - $out .= - $lnap . - $phpMussel['lang']['detected_control_characters'] . - $phpMussel['lang']['_exclamation_final'] . "\n"; - $heur['detections']++; - $phpMussel['memCache']['detections_count']++; - if (!$flagged) { - $phpMussel['killdata'] .= $md5 . ':' . $str_len . ':' . $ofn . "\n"; - $flagged = true; - } - $phpMussel['whyflagged'] .= - $phpMussel['lang']['detected_control_characters'] . - ' (' . $ofnSafe . ')' . - $phpMussel['lang']['_exclamation']; - } - } - - /** - * If the heuristic weight of the current scan iteration exceeds the - * heuristic threshold defined by the configuration, or if outs has already - * been filled, dump all heuristic detections and non-heuristic detections - * together into outs and regard the iteration as flagged. - */ - if ( - $heur['weight'] >= $phpMussel['Config']['heuristic']['threshold'] || - $out - ) { - $out .= $heur['cli']; - $phpMussel['whyflagged'] .= $heur['web']; - } - - /** Virus Total API integration. */ - if ( - !$out && - !empty($phpMussel['Config']['virustotal']['vt_public_api_key']) - ) { - $DoScan = false; - $phpMussel['Config']['virustotal']['vt_suspicion_level'] = - (int)$phpMussel['Config']['virustotal']['vt_suspicion_level']; - if ($phpMussel['Config']['virustotal']['vt_suspicion_level'] === 0) { - $DoScan = ($heur['weight'] > 0); - } elseif ($phpMussel['Config']['virustotal']['vt_suspicion_level'] === 1) { - $DoScan = ( - $heur['weight'] > 0 || - $is_pe || - $fileswitch === 'chrome' || - $fileswitch === 'java' || - $fileswitch === 'docfile' || - $fileswitch === 'vt_interest' - ); - } elseif ($phpMussel['Config']['virustotal']['vt_suspicion_level'] === 2) { - $DoScan = true; - } - if ($DoScan) { - $VTWeight = ['weight' => 0, 'cli' => '', 'web' => '']; - if (!isset($phpMussel['memCache']['vt_quota'])) { - $phpMussel['memCache']['vt_quota'] = $phpMussel['FetchCache']('vt_quota'); - } - $x = 0; - if (!empty($phpMussel['memCache']['vt_quota'])) { - $phpMussel['memCache']['vt_quota'] = explode(';', $phpMussel['memCache']['vt_quota']); - foreach ($phpMussel['memCache']['vt_quota'] as &$phpMussel['ThisQuota']) { - if ($phpMussel['ThisQuota'] > $phpMussel['Time']) { - $x++; - } else { - $phpMussel['ThisQuota'] = ''; - } - } - unset($phpMussel['ThisQuota']); - $phpMussel['memCache']['vt_quota'] = - implode(';', $phpMussel['memCache']['vt_quota']); - } - if ($x < $phpMussel['Config']['virustotal']['vt_quota_rate']) { - $VTParams = [ - 'apikey' => $phpMussel['Config']['virustotal']['vt_public_api_key'], - 'resource' => $md5 - ]; - $VTRequest = $phpMussel['Request']( - 'http://www.virustotal.com/vtapi/v2/file/report?apikey=' . - urlencode($phpMussel['Config']['virustotal']['vt_public_api_key']) . - '&resource=' . $md5, - $VTParams, 12); - $VTJSON = json_decode($VTRequest, true); - $y = $phpMussel['Time'] + ($phpMussel['Config']['virustotal']['vt_quota_time'] * 60); - $phpMussel['memCache']['vt_quota'] .= $y . ';'; - while (substr_count($phpMussel['memCache']['vt_quota'], ';;')) { - $phpMussel['memCache']['vt_quota'] = str_ireplace(';;', ';', $phpMussel['memCache']['vt_quota']); - } - $phpMussel['SaveCache']('vt_quota', $y + 60, $phpMussel['memCache']['vt_quota']); - if (isset($VTJSON['response_code'])) { - $VTJSON['response_code'] = (int)$VTJSON['response_code']; - if ( - isset($VTJSON['scans']) && - $VTJSON['response_code'] === 1 && - is_array($VTJSON['scans']) - ) { - foreach ($VTJSON['scans'] as $VTKey => $VTValue) { - if ($VTValue['detected'] && $VTValue['result']) { - $VN = $VTKey . '(VirusTotal)-' . $VTValue['result']; - if ( - !substr_count($phpMussel['memCache']['greylist'], ',' . $VN . ',') && - empty($phpMussel['memCache']['ignoreme']) - ) { - if (!$flagged) { - $phpMussel['killdata'] .= $md5 . ':' . $str_len . ':' . $ofn . "\n"; - $flagged = true; - } - $heur['detections']++; - $phpMussel['memCache']['detections_count']++; - if ($phpMussel['Config']['virustotal']['vt_weighting'] > 0) { - $VTWeight['weight']++; - $VTWeight['web'] .= $lnap . $phpMussel['ParseVars']( - ['vn' => $VN], - $phpMussel['lang']['detected'] - ) . $phpMussel['lang']['_exclamation_final'] . "\n"; - $VTWeight['cli'] .= $phpMussel['ParseVars']( - ['vn' => $VN], - $phpMussel['lang']['detected'] - ) . ' (' . $ofnSafe . ')' . $phpMussel['lang']['_exclamation']; - } else { - $out .= $lnap . $phpMussel['ParseVars']( - ['vn' => $VN], - $phpMussel['lang']['detected'] - ) . $phpMussel['lang']['_exclamation_final'] . "\n"; - $phpMussel['whyflagged'] .= $phpMussel['ParseVars']( - ['vn' => $VN], - $phpMussel['lang']['detected'] - ) . ' (' . $ofnSafe . ')' . $phpMussel['lang']['_exclamation']; - } - } - } - } - } - } - if ( - $VTWeight['weight'] > 0 && - $VTWeight['weight'] >= $phpMussel['Config']['virustotal']['vt_weighting'] - ) { - $out .= $VTWeight['web']; - $phpMussel['whyflagged'] .= $VTWeight['cli']; - } - } - } - } - - /** Plugin hook: "after_vt". */ - $phpMussel['Execute_Hook']('after_vt'); - - if ( - isset($phpMussel['HashCacheData']) && - !isset($phpMussel['HashCache']['Data'][$phpMussel['HashCacheData']]) && - $phpMussel['Config']['general']['scan_cache_expiry'] > 0 - ) { - if (empty($phpMussel['HashCache']['Data']) || !is_array($phpMussel['HashCache']['Data'])) { - $phpMussel['HashCache']['Data'] = []; - } - $phpMussel['HashCache']['Data'][$phpMussel['HashCacheData']] = [ - $phpMussel['HashCacheData'], - $phpMussel['Time'] + $phpMussel['Config']['general']['scan_cache_expiry'], - (empty($out) ? '' : bin2hex($out)), - (empty($phpMussel['whyflagged']) ? '' : bin2hex($phpMussel['whyflagged'])) - ]; - } - - /** Set final debug values, if this has been enabled. */ - if (isset($phpMussel['DebugArr']) && isset($phpMussel['DebugArrKey'])) { - $phpMussel['DebugArr'][$phpMussel['DebugArrKey']]['Results'] = !$out ? 1 : 2; - $phpMussel['DebugArr'][$phpMussel['DebugArrKey']]['Output'] = $out; - } - - if ($out) { - /** Register object flagged. */ - if (isset($phpMussel['cli_args'][1]) && $phpMussel['cli_args'][1] == 'cli_scan') { - $phpMussel['Stats-Increment']('CLI-Flagged', 1); - } else { - $phpMussel['Stats-Increment']($phpMussel['EOF'] ? 'API-Flagged' : 'Web-Blocked', 1); - } - } - - /** Exit data handler. */ - return !$out ? [1, ''] : [2, $out]; -}; - -/** - * Handles scanning for files contained within archives. - * - * @param string $ItemRef A reference to the path and original filename of the - * item being scanned in relation to its container and/or its heirarchy - * within the scan process. - * @param string $Filename The original filename of the item being scanned. - * @param string $Data The data to be scanned. - * @param int $Depth The depth of the item being scanned in relation to its - * container and/or its heirarchy within the scan process. - * @param string $lnap Line padding for the scan results. - * @param int $r Scan results inherited from parent in the form of an integer. - * @param string $x Scan results inherited from parent in the form of a string. - * @return array Returns an array containing the results of the scan as both an - * integer (the first element) and as human-readable text (the second - * element). - */ -$phpMussel['MetaDataScan'] = function ($ItemRef, $Filename, $Data, $Depth, $lnap, $r, $x) use (&$phpMussel) { - if (!$Filesize = strlen($Data)) { - return [$r, $x]; - } - $ItemRefSafe = urlencode($ItemRef); - $MD5 = md5($Data); - if ( - $phpMussel['Config']['files']['filesize_archives'] && - $phpMussel['Config']['files']['filesize_limit'] > 0 && - $Filesize > $phpMussel['ReadBytes']($phpMussel['Config']['files']['filesize_limit']) - ) { - if (!$phpMussel['Config']['files']['filesize_response']) { - $x .= - $lnap . $phpMussel['lang']['ok'] . ' (' . - $phpMussel['lang']['filesize_limit_exceeded'] . ").\n"; - return [$r, $x]; - } - $r = 2; - $phpMussel['killdata'] .= $MD5 . ':' . $Filesize . ':' . $ItemRef . "\n"; - $phpMussel['whyflagged'] .= - $phpMussel['lang']['filesize_limit_exceeded'] . - ' (' . $ItemRefSafe . ')' . - $phpMussel['lang']['_exclamation']; - $x .= - $lnap . $phpMussel['lang']['filesize_limit_exceeded'] . - $phpMussel['lang']['_fullstop_final'] . "\n"; - return [$r, $x]; - } - if ( - substr($Filename, 0, 1) === '.' || - substr($Filename, -1) === '.' - ) { - $r = 2; - $phpMussel['killdata'] .= $MD5 . ':' . $Filesize . ':' . $ItemRef . "\n"; - $phpMussel['whyflagged'] .= - $phpMussel['lang']['scan_filename_manipulation_detected'] . - ' (' . $ItemRefSafe . ')' . - $phpMussel['lang']['_exclamation']; - $x .= - $lnap . $phpMussel['lang']['scan_filename_manipulation_detected'] . - $phpMussel['lang']['_exclamation_final'] . "\n"; - return [$r, $x]; - } - if ($phpMussel['Config']['files']['filetype_archives']) { - $decPos = strrpos($Filename, '.'); - $ofnLen = strlen($Filename); - if ($decPos === false || $decPos === ($ofnLen - 1)) { - $xts = $xt = '-'; - } else { - $xt = strtolower(substr($Filename, ($decPos + 1))); - $xts = substr($xt, 0, 3) . '*'; - } - if ( - substr_count(',' . $phpMussel['Config']['files']['filetype_whitelist'] . ',', ',' . $xt . ',') || - substr_count(',' . $phpMussel['Config']['files']['filetype_whitelist'] . ',', ',' . $xts . ',') - ) { - $x .= $lnap . $phpMussel['lang']['scan_no_problems_found'] . "\n"; - return [$r, $x]; - } - if ( - substr_count(',' . $phpMussel['Config']['files']['filetype_blacklist'] . ',', ',' . $xt . ',') || - substr_count(',' . $phpMussel['Config']['files']['filetype_blacklist'] . ',', ',' . $xts . ',') - ) { - $r = 2; - $phpMussel['killdata'] .= $MD5 . ':' . $Filesize . ':' . $ItemRef . "\n"; - $phpMussel['whyflagged'] .= - $phpMussel['lang']['filetype_blacklisted'] . - ' (' . $ItemRefSafe . ')' . - $phpMussel['lang']['_exclamation']; - $x .= - $lnap . $phpMussel['lang']['filetype_blacklisted'] . - $phpMussel['lang']['_fullstop_final'] . "\n"; - return [$r, $x]; - } - if ( - $phpMussel['Config']['files']['filetype_greylist'] && - !substr_count(',' . $phpMussel['Config']['files']['filetype_greylist'] . ',', ',' . $xt . ',') && - !substr_count(',' . $phpMussel['Config']['files']['filetype_greylist'] . ',', ',' . $xts . ',') - ) { - $r = 2; - $phpMussel['killdata'] .= $MD5 . ':' . $Filesize . ':' . $ItemRef . "\n"; - $phpMussel['whyflagged'] .= - $phpMussel['lang']['filetype_blacklisted'] . - ' (' . $ItemRefSafe . ')' . - $phpMussel['lang']['_exclamation']; - $x .= - $lnap . $phpMussel['lang']['filetype_blacklisted'] . - $phpMussel['lang']['_fullstop_final'] . "\n"; - return [$r, $x]; - } - } - $phpMussel['memCache']['objects_scanned']++; - try { - $Scan = $phpMussel['DataHandler']($Data, $Depth, $Filename); - } catch (\Exception $e) { - throw new \Exception($e->getMessage()); - } - if ($Scan[0] !== 1) { - return [$Scan[0], $x . $Scan[1]]; - } - return [$r, $x]; -}; - -/** - * Looks for indicators of image files (i.e., attempts to determine whether a - * file is an image file). - * - * @param string $Ext The file extension. - * @param string $Head The file header. - * @return bool True: Indicators found. False: Indicators not found. - */ -$phpMussel['Indicator-Image'] = function ($Ext, $Head) { - return ( - preg_match( - '/^(?:bm[2p]|c(d5|gm)|d(ib|w[fg]|xf)|ecw|fits|gif|img|j(f?if?|p[2s]|pe?g?2?|xr)|p(bm|cx|dd|gm|ic|n[gms]|' . - 'pm|s[dp])|s(id|v[ag])|tga|w(bmp?|ebp|mp)|x(cf|bmp))$/' - , $Ext) || - preg_match( - '/^(?:0000000c6a502020|25504446|38425053|424d|474946383[79]61|57454250|67696d7020786366|89504e47|ffd8ff)/' - , $Head) - ); -}; - -/** - * Fetches extensions data from filenames. - * - * @param string $ofn The original filename. - * @return array The extensions data. - */ -$phpMussel['FetchExt'] = function ($ofn) { - $decPos = strrpos($ofn, '.'); - $ofnLen = strlen($ofn); - if ($decPos === false || $decPos === ($ofnLen - 1)) { - return ['-', '-', '-', '-']; - } - $xt = strtolower(substr($ofn, ($decPos + 1))); - $xts = substr($xt, 0, 3) . '*'; - if (strtolower(substr($ofn, -3)) === '.gz') { - $ofnNoGZ = substr($ofn, 0, ($ofnLen - 3)); - $decPosNoGZ = strrpos($ofnNoGZ, '.'); - if ($decPosNoGZ !== false && $decPosNoGZ !== (strlen($ofnNoGZ) - 1)) { - $gzxt = strtolower(substr($ofnNoGZ, ($decPosNoGZ + 1))); - $gzxts = substr($gzxt, 0, 3) . '*'; - } - } else { - $gzxts = $gzxt = '-'; - } - return [$xt, $xts, $gzxt, $gzxts]; -}; - -/** - * Responsible for recursing through any files given to it to be scanned, which - * may be necessary for the case of archives and directories. It performs the - * preparations necessary for scanning files using the "data handler" and the - * "meta data scan" closures. Additionally, it performs some necessary - * whitelist, blacklist and greylist checks, filesize and file extension - * checks, and handles the processing and extraction of files from archives, - * fetching the files contained in archives being scanned in order to process - * those contained files as so that they, too, may be scanned. - * - * When phpMussel is instructed to scan a directory or an array of multiple - * files, the recursor is the closure function responsible for iterating - * through that directory and/or array queued for scanning, and if necessary, - * will recurse itself (such as for when scanning a directory containing - * sub-directories or when scanning a multidimensional array of multiple files - * and/or directories). - * - * @param string|array $f In the context of the initial file upload scanning - * that phpMussel performs when operating via a server, this parameter (a - * string) represents the "temporary filename" of the file being scanned - * (the temporary filename, in this context, referring to the name - * temporarily assigned to the file by the server upon the file being - * uploaded to the temporary uploads location assigned to the server). - * When operating in the context of CLI mode, both $f and $ofn represent - * the scan target, as per specified by the CLI operator; The only - * difference between the two is when the scan target is a directory, - * rather than a single file; $f will represent the full path to the file - * (so, directory plus filename), whereas $ofn will represent only the - * filename. This parameter can also accept an array of filenames. - * @param bool $n This optional parameter is a boolean (defaults to false, but - * set to true during the initial scan of file uploads), indicating the - * format for returning the scan results. False instructs the function to - * return results as an integer; True instructs the function to return - * results as human readable text (refer to Section 3A of the README - * documentation, "HOW TO USE (FOR WEB SERVERS)", for more information). - * @param bool $zz This optional parameter is a boolean (defaults to false, but - * set to true during the initial scan of file uploads), indicating to the - * function whether or not arrayed results should be imploded prior to - * being returned to the calling function. False instructs the function to - * return the arrayed results as verbatim; True instructs the function to - * return the arrayed results as an imploded string. - * @param int $dpt Represents the current depth of recursion from which the - * function has been called. This information is used for determining how - * far to indent any entries generated for logging and for the display of - * scan results in CLI. - * @param string $ofn In the context of the initial file upload scanning that - * phpMussel performs when operating via a server, this parameter (a - * string) represents the "temporary filename" of the file being scanned - * (the temporary filename, in this context, referring to the name - * temporarily assigned to the file by the server upon the file being - * uploaded to the temporary uploads location assigned to the server). - * When operating in the context of CLI mode, both $f and $ofn represent - * the scan target, as per specified by the CLI operator; The only - * difference between the two is when the scan target is a directory, - * rather than a single file; $f will represent the full path to the file - * (so, directory plus filename), whereas $ofn will represent only the - * filename. - * @return int|string|array The scan results, returned as an array when the $f - * parameter is an array and when $n and/or $zz is/are false, and - * otherwise returned as per described by the README documentation. The - * function may also die the script and return nothing, if something goes - * wrong, such as if the function is triggered in the absense of the - * required $phpMussel['memCache'] variable being set. - */ -$phpMussel['Recursor'] = function ($f = '', $n = false, $zz = false, $dpt = 0, $ofn = '') use (&$phpMussel) { - if (!isset($phpMussel['memCache'])) { - throw new \Exception( - (!isset($phpMussel['lang']['required_variables_not_defined'])) ? - '[phpMussel] Required variables aren\'t defined: Can\'t continue.' : - '[phpMussel] ' . $phpMussel['lang']['required_variables_not_defined'] - ); - } - - /** Prepare signature files for the scan process. */ - if (empty($phpMussel['memCache']['OrganisedSigFiles'])) { - $phpMussel['OrganiseSigFiles'](); - $phpMussel['memCache']['OrganisedSigFiles'] = true; - } - - if ($phpMussel['EOF']) { - $phpMussel['whyflagged'] = $phpMussel['killdata'] = $phpMussel['PEData'] = ''; - if ( - $dpt === 0 || - !isset($phpMussel['memCache']['objects_scanned']) || - !isset($phpMussel['memCache']['detections_count']) || - !isset($phpMussel['memCache']['scan_errors']) - ) { - $phpMussel['memCache']['objects_scanned'] = - $phpMussel['memCache']['detections_count'] = - $phpMussel['memCache']['scan_errors'] = 0; - } - } else { - if (!isset($phpMussel['killdata'])) { - $phpMussel['killdata'] = ''; - } - if (!isset($phpMussel['whyflagged'])) { - $phpMussel['whyflagged'] = ''; - } - if (!isset($phpMussel['PEData'])) { - $phpMussel['PEData'] = ''; - } - if ( - !isset($phpMussel['memCache']['objects_scanned']) || - !isset($phpMussel['memCache']['detections_count']) || - !isset($phpMussel['memCache']['scan_errors']) - ) { - $phpMussel['memCache']['objects_scanned'] = - $phpMussel['memCache']['detections_count'] = - $phpMussel['memCache']['scan_errors'] = 0; - } - } - - /** Increment scan depth. */ - $dpt++; - /** Controls indenting relating to scan depth for normal logging and for CLI-mode scanning. */ - $lnap = str_pad('> ', ($dpt + 1), '-', STR_PAD_LEFT); - - /** - * If the scan target is an array, iterate through the array and recurse - * the recursor with each array element. - */ - if (is_array($f)) { - foreach ($f as &$Current) { - try { - $Current = $phpMussel['Recursor']($Current, $n, false, $dpt, $Current); - } catch (\Exception $e) { - throw new \Exception($e->getMessage()); - } - } - return ($n && $zz) ? $phpMussel['implode_md']($f) : $f; - } - - $ofn = $phpMussel['prescan_decode']($ofn); - $ofnSafe = urlencode($ofn); - - /** - * If the scan target is a directory, iterate through the directory - * contents and recurse the recursor with these contents. - */ - if (is_dir($f)) { - if (!is_readable($f)) { - $phpMussel['memCache']['scan_errors']++; - return !$n ? 0 : - $lnap . $phpMussel['lang']['failed_to_access'] . '\'' . $ofn . '\'' . - $phpMussel['lang']['_exclamation_final'] . "\n"; - } - $Dir = $phpMussel['DirectoryRecursiveList']($f); - foreach ($Dir as &$Sub) { - try { - $Sub = $phpMussel['Recursor']($f . '/' . $Sub, $n, false, $dpt, $Sub); - } catch (\Exception $e) { - throw new \Exception($e->getMessage()); - } - } - return ($n && $zz) ? $phpMussel['implode_md']($Dir) : $Dir; - } - - /** Increment our scanned files/objects tally. */ - $phpMussel['memCache']['objects_scanned']++; - /** Define file phase. */ - $phpMussel['memCache']['phase'] = 'file'; - /** - * Indicates whether the file/object being scanned is a part of a - * container (e.g., an OLE object, ZIP file, TAR, PHAR, etc). - */ - $phpMussel['memCache']['container'] = 'none'; - /** Indicates whether the file/object being scanned is an OLE object. */ - $phpMussel['memCache']['file_is_ole'] = false; - - /** Fetch the greylist if it hasn't already been fetched. */ - if (!isset($phpMussel['memCache']['greylist'])) { - if (!file_exists($phpMussel['Vault'] . 'greylist.csv')) { - $phpMussel['memCache']['greylist'] = ','; - $Handle = fopen($phpMussel['Vault'] . 'greylist.csv', 'a'); - fwrite($Handle, ','); - fclose($Handle); - } else { - $phpMussel['memCache']['greylist'] = $phpMussel['ReadFile']($phpMussel['Vault'] . 'greylist.csv'); - } - } - - /** Plugin hook: "before_scan". */ - $phpMussel['Execute_Hook']('before_scan'); - - $fnCRC = hash('crc32b', $ofn); - - /** Kill it here if the scan target isn't a valid file. */ - if (!$f || !$d = is_file($f)) { - return (!$n) ? 0 : - $lnap . $phpMussel['lang']['scan_checking'] . ' \'' . $ofn . - '\' (FN: ' . $fnCRC . "):\n-" . $lnap . - $phpMussel['lang']['invalid_file'] . - $phpMussel['lang']['_exclamation_final'] . "\n"; - } - - $fS = filesize($f); - if ($phpMussel['Config']['files']['filesize_limit'] > 0) { - if ($fS > $phpMussel['ReadBytes']($phpMussel['Config']['files']['filesize_limit'])) { - if (!$phpMussel['Config']['files']['filesize_response']) { - return (!$n) ? 1 : - $lnap . $phpMussel['lang']['scan_checking'] . ' \'' . - $ofn . '\' (FN: ' . $fnCRC . "):\n-" . $lnap . - $phpMussel['lang']['ok'] . ' (' . - $phpMussel['lang']['filesize_limit_exceeded'] . ").\n"; - } - $phpMussel['killdata'] .= - '--FILESIZE-LIMIT--------NO-HASH-:' . $fS . ':' . $ofn . "\n"; - $phpMussel['whyflagged'] .= - $phpMussel['lang']['filesize_limit_exceeded'] . - ' (' . $ofnSafe . ')' . $phpMussel['lang']['_exclamation']; - if ($phpMussel['Config']['general']['delete_on_sight'] && is_readable($f)) { - unlink($f); - } - return (!$n) ? 2 : - $lnap . $phpMussel['lang']['scan_checking'] . ' \'' . $ofn . - '\' (FN: ' . $fnCRC . "):\n-" . $lnap . - $phpMussel['lang']['filesize_limit_exceeded'] . - $phpMussel['lang']['_fullstop_final'] . "\n"; - } - } - if (substr($ofn, 0, 1) === '.' || substr($ofn, -1) === '.') { - $phpMussel['killdata'] .= - '--FILENAME-MANIPULATION-NO-HASH-:' . $fS . ':' . $ofn . "\n"; - $phpMussel['whyflagged'] .= - $phpMussel['lang']['scan_filename_manipulation_detected'] . - ' (' . $ofnSafe . ')' . $phpMussel['lang']['_exclamation']; - if ($phpMussel['Config']['general']['delete_on_sight'] && is_readable($f)) { - unlink($f); - } - return (!$n) ? 2 : - $lnap . $phpMussel['lang']['scan_checking'] . ' \'' . $ofn . - '\' (FN: ' . $fnCRC . "):\n-" . $lnap . - $phpMussel['lang']['scan_filename_manipulation_detected'] . - $phpMussel['lang']['_exclamation_final'] . "\n"; - } - list($xt, $xts, $gzxt, $gzxts) = $phpMussel['FetchExt']($ofn); - if ( - substr_count(',' . $phpMussel['Config']['files']['filetype_whitelist'] . ',', ',' . $xt . ',') || - substr_count(',' . $phpMussel['Config']['files']['filetype_whitelist'] . ',', ',' . $xts . ',') || - substr_count(',' . $phpMussel['Config']['files']['filetype_whitelist'] . ',', ',' . $gzxt . ',') || - substr_count(',' . $phpMussel['Config']['files']['filetype_whitelist'] . ',', ',' . $gzxts . ',') - ) { - return (!$n) ? 1 : - $lnap . $phpMussel['lang']['scan_checking'] . ' \'' . $ofn . - '\' (FN: ' . $fnCRC . "):\n-" . $lnap . - $phpMussel['lang']['scan_no_problems_found'] . "\n"; - } - if ( - substr_count(',' . $phpMussel['Config']['files']['filetype_blacklist'] . ',', ',' . $xt . ',') || - substr_count(',' . $phpMussel['Config']['files']['filetype_blacklist'] . ',', ',' . $xts . ',') || - substr_count(',' . $phpMussel['Config']['files']['filetype_blacklist'] . ',', ',' . $gzxt . ',') || - substr_count(',' . $phpMussel['Config']['files']['filetype_blacklist'] . ',', ',' . $gzxts . ',') - ) { - $phpMussel['killdata'] .= - '--FILETYPE-BLACKLISTED--NO-HASH-:' . $fS . ':' . $ofn . "\n"; - $phpMussel['whyflagged'] .= - $phpMussel['lang']['filetype_blacklisted'] . - ' (' . $ofnSafe . ')' . $phpMussel['lang']['_exclamation']; - if ($phpMussel['Config']['general']['delete_on_sight'] && is_readable($f)) { - unlink($f); - } - return (!$n) ? 2 : - $lnap . $phpMussel['lang']['scan_checking'] . ' \'' . - $ofn . '\' (FN: ' . $fnCRC . "):\n-" . $lnap . - $phpMussel['lang']['filetype_blacklisted'] . - $phpMussel['lang']['_fullstop_final'] . "\n"; - } - if ( - $phpMussel['Config']['files']['filetype_greylist'] && - !substr_count(',' . $phpMussel['Config']['files']['filetype_greylist'] . ',', ',' . $xt . ',') && - !substr_count(',' . $phpMussel['Config']['files']['filetype_greylist'] . ',', ',' . $xts . ',') && - !substr_count(',' . $phpMussel['Config']['files']['filetype_greylist'] . ',', ',' . $gzxt . ',') && - !substr_count(',' . $phpMussel['Config']['files']['filetype_greylist'] . ',', ',' . $gzxts . ',') - ) { - $phpMussel['killdata'] .= - '----FILETYPE--NOT-GREYLISTED----:' . $fS . ':' . $ofn . "\n"; - $phpMussel['whyflagged'] .= - $phpMussel['lang']['filetype_blacklisted'] . - ' (' . $ofnSafe . ')' . $phpMussel['lang']['_exclamation']; - if ($phpMussel['Config']['general']['delete_on_sight'] && is_readable($f)) { - unlink($f); - } - return (!$n) ? 2 : - $lnap . $phpMussel['lang']['scan_checking'] . ' \'' . - $ofn . '\' (FN: ' . $fnCRC . "):\n-" . $lnap . - $phpMussel['lang']['filetype_blacklisted'] . - $phpMussel['lang']['_fullstop_final'] . "\n"; - } - $in = $phpMussel['ReadFile']($f, ( - $phpMussel['Config']['attack_specific']['scannable_threshold'] > 0 && - $fS > $phpMussel['ReadBytes']($phpMussel['Config']['attack_specific']['scannable_threshold']) - ) ? $phpMussel['ReadBytes']($phpMussel['Config']['attack_specific']['scannable_threshold']) : $fS, true); - $fdCRC = hash('crc32b', $in); - - /** Check for non-image items. */ - if (!empty($in) && $phpMussel['Config']['compatibility']['only_allow_images'] && !$phpMussel['Indicator-Image']($xt, bin2hex(substr($in, 0, 16)))) { - $phpMussel['killdata'] .= md5($in) . ':' . $fS . ':' . $ofn . "\n"; - $phpMussel['whyflagged'] .= - $phpMussel['lang']['only_allow_images'] . - ' (' . $ofnSafe . ')' . $phpMussel['lang']['_exclamation']; - if ($phpMussel['Config']['general']['delete_on_sight'] && is_readable($f)) { - unlink($f); - } - return (!$n) ? 2 : - $lnap . $phpMussel['lang']['scan_checking'] . ' \'' . - $ofn . '\' (FN: ' . $fnCRC . '; FD: ' . $fdCRC . "):\n-" . - $lnap . $phpMussel['lang']['only_allow_images'] . - $phpMussel['lang']['_fullstop_final'] . "\n"; - } - - /** Send the file/object being scanned to the data handler. */ - try { - $z = $phpMussel['DataHandler']($in, $dpt, $ofn); - } catch (\Exception $e) { - throw new \Exception($e->getMessage()); - } - - /** Executed if there were any problems or anything detected: */ - if ($z[0] !== 1) { - if ($z[0] === 2) { - if ( - $phpMussel['Config']['general']['quarantine_key'] && - !$phpMussel['Config']['general']['honeypot_mode'] && - strlen($in) < $phpMussel['ReadBytes']($phpMussel['Config']['general']['quarantine_max_filesize']) - ) { - $qfu = - $phpMussel['Time'] . - '-' . - md5($phpMussel['Config']['general']['quarantine_key'] . $fdCRC . $phpMussel['Time']); - $phpMussel['Quarantine']( - $in, - $phpMussel['Config']['general']['quarantine_key'], - $_SERVER[$phpMussel['Config']['general']['ipaddr']], - $qfu - ); - $phpMussel['killdata'] .= $phpMussel['ParseVars']( - ['QFU' => $qfu], - $phpMussel['lang']['quarantined_as'] - ); - } - } - if ($phpMussel['Config']['general']['delete_on_sight'] && is_readable($f)) { - unlink($f); - } - return (!$n) ? $z[0] : - $lnap . $phpMussel['lang']['scan_checking'] . - ' \'' . $ofn . '\' (FN: ' . $fnCRC . '; FD: ' . $fdCRC . "):\n" . - $z[1]; - } - - $x = - $lnap . $phpMussel['lang']['scan_checking'] . ' \'' . - $ofn . '\' (FN: ' . $fnCRC . '; FD: ' . $fdCRC . "):\n-" . $lnap . - $phpMussel['lang']['scan_no_problems_found'] . "\n"; - $r = 1; - - /** - * Begin archive phase. - * Note: Archive phase will only occur when "check_archives" is enabled and - * when no problems were detected with the file/object being scanned by - * this stage of the scan. - */ - if ( - $phpMussel['Config']['files']['check_archives'] && - !empty($in) && - $phpMussel['Config']['files']['max_recursion'] > 1 - ) { - /** Define archive phase. */ - $phpMussel['memCache']['phase'] = 'archive'; - - /** Reset container definition. */ - $phpMussel['memCache']['container'] = 'none'; - /** Set appropriate container definitions. */ - if (substr($in, 0, 2) === 'PK') { - if ($xt === 'ole') { - $PharType = 'OLE'; - } elseif ($xt === 'smpk') { - $PharType = 'SMPTE'; - } elseif ($xt === 'xpi') { - $PharType = 'XPInstall'; - } elseif ($xts === 'app*') { - $PharType = 'App'; - } elseif (substr_count( - ',docm,docx,dotm,dotx,potm,potx,ppam,ppsm,ppsx,pptm,pptx,xlam,xlsb,xlsm,x' . - 'lsx,xltm,xltx,', ',' . $xt . ',' - )) { - $PharType = 'OpenXML'; - } elseif (substr_count( - ',odc,odf,odg,odm,odp,ods,odt,otg,oth,otp,ots,ott,', ',' . $xt . ',' - ) || $xts === 'fod*') { - $PharType = 'OpenDocument'; - } elseif (substr_count(',opf,epub,', ',' . $xt . ',')) { - $PharType = 'EPUB'; - } else { - $PharType = 'ZIP'; - $phpMussel['memCache']['container'] = 'zipfile'; - } - if ($PharType !== 'ZIP') { - $phpMussel['memCache']['file_is_ole'] = true; - $phpMussel['memCache']['container'] = 'pkfile'; - } - } elseif ( - substr($in, 257, 6) === "ustar\x00" || - substr_count(',tar,tgz,tbz,tlz,tz,', ',' . $xt . ',') - ) { - $PharType = 'TarFile'; - $phpMussel['memCache']['container'] = 'tarfile'; - } elseif ( - substr($in, 0, 4) === 'Rar!' || - bin2hex(substr($in, 0, 4)) === '52457e5e' - ) { - $PharType = 'RarFile'; - $phpMussel['memCache']['container'] = 'rarfile'; - } else { - $PharType = ''; - } - - /** Check if PHARable, and if so, generate an array of the contents. */ - if (is_dir('phar://' . $f) && is_readable('phar://' . $f)) { - $x .= - '-' . $lnap . $phpMussel['lang']['scan_reading'] . - ' \'' . $ofn . "' (PHAR):\n"; - $PharData = $phpMussel['BuildPharList']($f, $dpt); - $PharData = explode("\n", $PharData); - $PharCount = count($PharData); - /** Iterate through each item in the PHARable file/object. */ - for ($PharIter = 0; $PharIter < $PharCount; $PharIter++) { - if (empty($PharData[$PharIter])) { - continue; - } - $PharData[$PharIter] = [ - 'DoScan' => true, - 'Depth' => $phpMussel['substrbf']($PharData[$PharIter], ' '), - 'Path' => $phpMussel['substraf']($PharData[$PharIter], ' ') - ]; - $PharData[$PharIter]['Data'] = $phpMussel['ReadFile']('phar://' . $PharData[$PharIter]['Path']); - $PharData[$PharIter]['Filename'] = - (substr_count($PharData[$PharIter]['Path'], '/')) ? - $phpMussel['substral']($PharData[$PharIter]['Path'], '/') : - $PharData[$PharIter]['Path']; - $PharData[$PharIter]['ItemRef'] = $ofn . '>' . $PharData[$PharIter]['Path']; - } - } else { - /** Default to the parent if the parent isn't PHARable. */ - $PharData = [0 => ['DoScan' => false, 'Depth' => 1, 'Path' => $f, 'Data' => $in]]; - $PharData[0]['Filename'] = (substr_count($f, '/')) ? $phpMussel['substral']($f, '/') : $f; - $PharData[0]['ItemRef'] = $ofn . '>' . $PharData[0]['Path']; - $PharCount = 1; - } - - /** And now we begin processing our PHARable contents array. */ - for ($PharIter = 0; $PharIter < $PharCount; $PharIter++) { - if (empty($PharData[$PharIter])) { - continue; - } - $PharData[$PharIter]['Filesize'] = strlen($PharData[$PharIter]['Data']); - $PharData[$PharIter]['MD5'] = md5($PharData[$PharIter]['Data']); - $PharData[$PharIter]['NameCRC32'] = hash('crc32b', $PharData[$PharIter]['Filename']); - $PharData[$PharIter]['DataCRC32'] = hash('crc32b', $PharData[$PharIter]['Data']); - if ( - $phpMussel['Config']['files']['block_encrypted_archives'] && - substr($PharData[$PharIter]['Data'], 0, 2) === 'PK' - ) { - /** - * ZIP File Format Specification: - * - https://pkware.cachefly.net/webdocs/casestudies/APPNOTE.TXT - */ - $PharData[$PharIter]['ZipBits'] = - $phpMussel['explode_bits'](substr($PharData[$PharIter]['Data'], 6, 2)); - if ($PharData[$PharIter]['ZipBits'] && $PharData[$PharIter]['ZipBits'][7]) { - /** Encryption detected. */ - $r = 2; - $phpMussel['killdata'] .= - $PharData[$PharIter]['MD5'] . ':' . - $PharData[$PharIter]['Filesize'] . ':' . - $PharData[$PharIter]['ItemRef'] . "\n"; - $phpMussel['whyflagged'] .= - $phpMussel['lang']['encrypted_archive'] . - ' (' . urlencode($PharData[$PharIter]['ItemRef']) . ')' . - $phpMussel['lang']['_exclamation']; - $x .= - '-' . $lnap . $phpMussel['lang']['scan_checking'] . - ' \'' . $PharData[$PharIter]['ItemRef'] . '\' (FN: ' . - $PharData[$PharIter]['NameCRC32'] . '; FD: ' . - $PharData[$PharIter]['DataCRC32'] . "):\n--" . $lnap . - $phpMussel['lang']['encrypted_archive'] . - $phpMussel['lang']['_fullstop_final'] . "\n"; - break; - } - } - if ($PharData[$PharIter]['DoScan']) { - $x .= - '-' . $lnap . $phpMussel['lang']['scan_checking'] . - ' \'' . $PharData[$PharIter]['ItemRef'] . - '\' (FN: ' . $PharData[$PharIter]['NameCRC32'] . - '; FD: ' . $PharData[$PharIter]['DataCRC32'] . "):\n"; - try { - list($r, $x) = $phpMussel['MetaDataScan']( - $PharData[$PharIter]['ItemRef'], - $PharData[$PharIter]['Filename'], - $PharData[$PharIter]['Data'], - $PharData[$PharIter]['Depth'], - '-' . $lnap, - $r, - $x - ); - } catch (\Exception $e) { - throw new \Exception($e->getMessage()); - } - if ($r !== 1) { - break; - } - $x .= '--' . $lnap . $phpMussel['lang']['scan_no_problems_found'] . "\n"; - } - $ScanDepth = 0; - while (true) { - if ($ScanDepth > $phpMussel['Config']['files']['max_recursion']) { - $r = 2; - $phpMussel['killdata'] .= - $PharData[$PharIter]['MD5'] . ':' . - $PharData[$PharIter]['Filesize'] . ':' . - $PharData[$PharIter]['ItemRef'] . "\n"; - $phpMussel['whyflagged'] .= - $phpMussel['lang']['recursive'] . - ' (' . $ofnSafe . ')' . $phpMussel['lang']['_exclamation']; - $x .= - '-' . $lnap . $phpMussel['lang']['scan_checking'] . - ' \'' . $PharData[$PharIter]['ItemRef'] . '\' (FN: ' . - $PharData[$PharIter]['NameCRC32'] . '; FD: ' . - $PharData[$PharIter]['DataCRC32'] . "):\n--" . - $lnap . $phpMussel['lang']['recursive'] . - $phpMussel['lang']['_fullstop_final'] . "\n"; - break 2; - } - $zDo = false; - $PharData[$PharIter]['Indent'] = str_repeat('-', $ScanDepth + $dpt) . $lnap; - $xtt = (strpos($PharData[$PharIter]['Filename'], '.') !== false) ? [ - substr($PharData[$PharIter]['Filename'], -3), - substr($PharData[$PharIter]['Filename'], -4), - substr($PharData[$PharIter]['Filename'], -7, 4), - substr($PharData[$PharIter]['Filename'], -8, 4) - ] : false; - $GZable = false; - $BZable = false; - $LZable = false; - if ($phpMussel['substr_compare_hex']($PharData[$PharIter]['Data'], 0, 2, '1f8b', true)) { - $GZable = true; - } elseif ($phpMussel['substr_compare_hex']($PharData[$PharIter]['Data'], 0, 3, '425a68', true)) { - $BZable = true; - } elseif (!empty($xtt) && !$zDo && ( - substr_count(',.gz,', ',' . $xtt[0] . ',') || - substr_count(',.tgz,', ',' . $xtt[1] . ',') - )) { - $GZable = true; - } elseif (!empty($xtt) && !$zDo && ( - substr_count(',.bz,', ',' . $xtt[0] . ',') || - substr_count(',.bz2,.tbz,', ',' . $xtt[1] . ',') - )) { - $BZable = true; - } elseif (!empty($xtt) && !$zDo && ( - substr_count(',.lz,', ',' . $xtt[0] . ',') || - substr_count(',.lha,.lzh,.lzo,.lzw,.lzx,.tlz,', ',' . $xtt[1] . ',') - )) { - $LZable = true; - } elseif (!$zDo && ( - substr($PharData[$PharIter]['Data'], 257, 6) === "ustar\x00" || ( - !empty($xtt) && ( - substr_count(',.tar,.tgz,.tbz,.tlz,', ',' . $xtt[1] . ',') || - substr_count(',.tar,.tgz,.tbz,.tlz,', ',' . $xtt[2] . ',') || - substr_count(',.tar,.tgz,.tbz,.tlz,', ',' . $xtt[3] . ',') - ) - ) - )) { - /** Allows recursion for TAR files. */ - $x .= - $PharData[$PharIter]['Indent'] . - $phpMussel['lang']['scan_reading'] . ' \'' . - $PharData[$PharIter]['ItemRef'] . "' (TAR):\n"; - $TarFile = ['Offset' => 0]; - while (true) { - if (($TarFile['Offset'] + 1024) > $PharData[$PharIter]['Filesize']) { - break; - } - $TarFile['File'] = [ - 'Filename' => preg_replace('/[^\x20-\xff]/', '', substr($PharData[$PharIter]['Data'], $TarFile['Offset'], 100)), - 'Filesize' => octdec(preg_replace('/[^0-9]/', '', substr($PharData[$PharIter]['Data'], $TarFile['Offset'] + 124, 12))), - ]; - if ($TarFile['File']['Filesize'] < 0) { - $r = 2; - $phpMussel['killdata'] .= - $TarFile['File']['MD5'] . ':' . - $TarFile['File']['Filesize'] . ':' . - $PharData[$PharIter]['ItemRef'] . "\n"; - $phpMussel['whyflagged'] .= - $phpMussel['lang']['scan_tampering'] . ' (' . - urlencode($PharData[$PharIter]['ItemRef']) . - ')' . $phpMussel['lang']['_exclamation']; - $x .= - '-' . $PharData[$PharIter]['Indent'] . - $phpMussel['lang']['scan_tampering'] . - $phpMussel['lang']['_exclamation_final'] . "\n"; - break; - } - $TarFile['File']['Directory'] = ( - substr($TarFile['File']['Filename'], -1, 1) === '/' && - $TarFile['File']['Filesize'] === 0 - ); - $TarFile['File']['Blocks'] = ceil($TarFile['File']['Filesize'] / 512) + 1; - if ($TarFile['File']['Directory']) { - $TarFile['Offset'] += $TarFile['File']['Blocks'] * 512; - continue; - } - if ($TarFile['File']['Filename']) { - if (substr_count($TarFile['File']['Filename'], "\\")) { - $TarFile['File']['Filename'] = - $phpMussel['substral']($TarFile['File']['Filename'], "\\") ; - } - if (substr_count($TarFile['File']['Filename'], '/')) { - $TarFile['File']['Filename'] = - $phpMussel['substral']($TarFile['File']['Filename'], '/') ; - } - } - $TarFile['File']['Data'] = - substr($PharData[$PharIter]['Data'], $TarFile['Offset'] + 512, $TarFile['File']['Filesize']); - if (empty($TarFile['File']['Data'])) { - break; - } - $TarFile['File']['MD5'] = md5($TarFile['File']['Data']); - if (!$TarFile['File']['Filename']) { - $r = 2; - $phpMussel['killdata'] .= - $TarFile['File']['MD5'] . ':' . - $TarFile['File']['Filesize'] . - ":MISSING-FILENAME\n"; - $phpMussel['whyflagged'] .= - $phpMussel['lang']['scan_missing_filename'] . - $phpMussel['lang']['_exclamation']; - $x .= - '-' . $PharData[$PharIter]['Indent'] . - $phpMussel['lang']['scan_missing_filename'] . - $phpMussel['lang']['_exclamation_final'] . "\n"; - break; - } - $phpMussel['memCache']['objects_scanned']++; - try { - list($r, $x) = $phpMussel['MetaDataScan']( - $PharData[$PharIter]['ItemRef'] . '>' . $TarFile['File']['Filename'], - $TarFile['File']['Filename'], - $TarFile['File']['Data'], - $dpt, - $PharData[$PharIter]['Indent'], - $r, - $x - ); - } catch (\Exception $e) { - throw new \Exception($e->getMessage()); - } - $TarFile['File']['DataCRC32'] = hash('crc32b', $TarFile['File']['Data']); - $TarFile['File']['NameCRC32'] = hash('crc32b', $TarFile['File']['Filename']); - $TarFile['Offset'] += $TarFile['File']['Blocks'] * 512; - $x .= - $PharData[$PharIter]['Indent'] . - $phpMussel['lang']['scan_checking'] . ' \'' . - $PharData[$PharIter]['ItemRef'] . '>' . $TarFile['File']['Filename'] . - '\' (FN: ' . $TarFile['File']['NameCRC32'] . '; FD: ' . - $TarFile['File']['DataCRC32'] . "):\n"; - if ($r === 1) { - $x .= - '-' . $PharData[$PharIter]['Indent'] . - $phpMussel['lang']['scan_no_problems_found'] . "\n"; - } - } - $TarFile = ''; - } - if ($GZable) { - if (!function_exists('gzdecode')) { - $phpMussel['memCache']['scan_errors']++; - if (!$phpMussel['Config']['signatures']['fail_extensions_silently']) { - $r = -1; - $phpMussel['killdata'] .= - $PharData[$PharIter]['MD5'] . ':' . - $PharData[$PharIter]['Filesize'] . ':' . - $PharData[$PharIter]['ItemRef'] . "\n"; - $phpMussel['whyflagged'] .= $phpMussel['lang']['scan_extensions_missing'] . ' '; - } - $x .= - $PharData[$PharIter]['Indent'] . - $phpMussel['lang']['scan_reading'] . ' \'' . - $PharData[$PharIter]['ItemRef'] . "' (GZIP):\n-" . - $PharData[$PharIter]['Indent'] . - $phpMussel['lang']['scan_extensions_missing'] . "\n"; - break; - } - if (!$PharData[$PharIter]['Data'] = gzdecode($PharData[$PharIter]['Data'])) { - $x .= - $PharData[$PharIter]['Indent'] . - $phpMussel['lang']['scan_reading'] . ' \'' . - $PharData[$PharIter]['ItemRef'] . "' (GZIP):\n-" . - $PharData[$PharIter]['Indent'] . - $phpMussel['lang']['scan_not_archive'] . "\n"; - break; - } - $x .= - $PharData[$PharIter]['Indent'] . - $phpMussel['lang']['scan_reading'] . ' \'' . - $PharData[$PharIter]['ItemRef'] . "' (GZIP):\n"; - $zDo = true; - } elseif ($BZable) { - if (!function_exists('bzdecompress')) { - $phpMussel['memCache']['scan_errors']++; - if (!$phpMussel['Config']['signatures']['fail_extensions_silently']) { - $r = -1; - $phpMussel['killdata'] .= - $PharData[$PharIter]['MD5'] . ':' . - $PharData[$PharIter]['Filesize'] . ':' . - $PharData[$PharIter]['ItemRef'] . "\n"; - $phpMussel['whyflagged'] .= $phpMussel['lang']['scan_extensions_missing'] . ' '; - } - $x .= - $PharData[$PharIter]['Indent'] . - $phpMussel['lang']['scan_reading'] . ' \'' . - $PharData[$PharIter]['ItemRef'] . "' (BZIP2):\n-" . - $PharData[$PharIter]['Indent'] . - $phpMussel['lang']['scan_extensions_missing'] . "\n"; - break; - } - if (!$PharData[$PharIter]['Data'] = bzdecompress($PharData[$PharIter]['Data'])) { - $x .= - $PharData[$PharIter]['Indent'] . - $phpMussel['lang']['scan_reading'] . ' \'' . - $PharData[$PharIter]['ItemRef'] . "' (BZIP2):\n-" . - $PharData[$PharIter]['Indent'] . - $phpMussel['lang']['scan_not_archive'] . "\n"; - break; - } - $x .= - $PharData[$PharIter]['Indent'] . - $phpMussel['lang']['scan_reading'] . ' \'' . - $PharData[$PharIter]['ItemRef'] . "' (BZIP2):\n"; - $zDo = true; - } elseif ($LZable) { - if (!function_exists('lzf_decompress')) { - $phpMussel['memCache']['scan_errors']++; - if (!$phpMussel['Config']['signatures']['fail_extensions_silently']) { - $r = -1; - $phpMussel['killdata'] .= - $PharData[$PharIter]['MD5'] . ':' . - $PharData[$PharIter]['Filesize'] . ':' . - $PharData[$PharIter]['ItemRef'] . "\n"; - $phpMussel['whyflagged'] .= $phpMussel['lang']['scan_extensions_missing'] . ' '; - } - $x .= - $PharData[$PharIter]['Indent'] . - $phpMussel['lang']['scan_reading'] . ' \'' . - $PharData[$PharIter]['ItemRef'] . "' (LZF):\n-" . - $PharData[$PharIter]['Indent'] . - $phpMussel['lang']['scan_extensions_missing'] . "\n"; - break; - } - if (!$PharData[$PharIter]['Data'] = lzf_decompress($PharData[$PharIter]['Data'])) { - $x .= - $PharData[$PharIter]['Indent'] . - $phpMussel['lang']['scan_reading'] . ' \'' . - $PharData[$PharIter]['ItemRef'] . "' (LZF):\n-" . - $PharData[$PharIter]['Indent'] . - $phpMussel['lang']['scan_not_archive'] . "\n"; - break; - } - $x .= - $PharData[$PharIter]['Indent'] . - $phpMussel['lang']['scan_reading'] . ' \'' . - $PharData[$PharIter]['ItemRef'] . "' (LZF):\n"; - $zDo = true; - } - if ($zDo) { - $ScanDepth++; - if (substr_count($PharData[$PharIter]['Filename'], '.')) { - $PharData[$PharIter]['Filename'] = $phpMussel['substrbl']($PharData[$PharIter]['Filename'], '.'); - } - if (substr_count($PharData[$PharIter]['Filename'], "\\")) { - $PharData[$PharIter]['Filename'] = $phpMussel['substral']($PharData[$PharIter]['Filename'], "\\"); - } - if (substr_count($PharData[$PharIter]['Filename'], '/')) { - $PharData[$PharIter]['Filename'] = $phpMussel['substral']($PharData[$PharIter]['Filename'], '/'); - } - $PharData[$PharIter]['Filesize'] = strlen($PharData[$PharIter]['Data']); - $PharData[$PharIter]['ItemRef'] .= '>' . $PharData[$PharIter]['Filename']; - $PharData[$PharIter]['NameCRC32'] = hash('crc32b', $PharData[$PharIter]['Filename']); - $PharData[$PharIter]['DataCRC32'] = hash('crc32b', $PharData[$PharIter]['Data']); - $x .= - $PharData[$PharIter]['Indent'] . - $phpMussel['lang']['scan_checking'] . - ' \'' . $PharData[$PharIter]['ItemRef'] . - '\' (FN: ' . $PharData[$PharIter]['NameCRC32'] . - '; FD: ' . $PharData[$PharIter]['DataCRC32'] . "):\n"; - try { - list($r, $x) = $phpMussel['MetaDataScan']( - $PharData[$PharIter]['ItemRef'], - $PharData[$PharIter]['Filename'], - $PharData[$PharIter]['Data'], - $PharData[$PharIter]['Depth'] + $ScanDepth + $dpt, - $PharData[$PharIter]['Indent'], - $r, - $x - ); - } catch (\Exception $e) { - throw new \Exception($e->getMessage()); - } - if ($r !== 1) { - break 2; - } - $x .= - $PharData[$PharIter]['Indent'] . - $phpMussel['lang']['scan_no_problems_found'] . - "\n"; - continue; - } - break; - } - } - } - if ($r === 2) { - if ( - $phpMussel['Config']['general']['quarantine_key'] && - !$phpMussel['Config']['general']['honeypot_mode'] && - strlen($in) < $phpMussel['ReadBytes']($phpMussel['Config']['general']['quarantine_max_filesize']) - ) { - $qfu = $phpMussel['Time'] . '-' . md5( - $phpMussel['Config']['general']['quarantine_key'] . $fdCRC . $phpMussel['Time'] - ); - $phpMussel['Quarantine']( - $in, - $phpMussel['Config']['general']['quarantine_key'], - $_SERVER[$phpMussel['Config']['general']['ipaddr']], - $qfu - ); - $phpMussel['killdata'] .= $phpMussel['ParseVars']( - ['QFU' => $qfu], - $phpMussel['lang']['quarantined_as'] - ); - } - } - if ($r !== 1 && $phpMussel['Config']['general']['delete_on_sight'] && is_readable($f)) { - unlink($f); - } - return !$n ? $r : $x; -}; - -/** - * Forks the PHP process when scanning in CLI mode. This ensures that if PHP - * crashes during scanning, phpMussel can continue to scan any remaining items - * queued for scanning (because if the parent process handles the scan queue - * and the child process handles the actual scanning of each item queued for - * scanning, if the child process crashes, the parent process can simply create - * a new child process to continue iterating through the queue). - * - * There are some additional benefits to be had by scanning in this way, such - * as the ability to kill a child process, responsible for the actual scanning, - * and yet still have the results of this scanning logged (which, if killed in - * this way prior to completing the scan, would likely involve some type of - * error). - * - * @param string $f The name of the item to be scanned, with path included. - * @param string $ofn The name of the item to be scanned, without any path - * included (so, just the name by itself). - * @return string The scan results, piped back to the parent from the child - * process and returned to the calling function as a string. - */ -$phpMussel['Fork'] = function ($f = '', $ofn = '') use (&$phpMussel) { - $pf = popen( - $phpMussel['Mussel_PHP'] . ' "' . $phpMussel['Vault'] . - '../loader.php" "cli_scan" "' . $f . '" "' . $ofn . '"', - 'r' - ); - $s = ''; - while ($x = fgets($pf)) { - $s .= $x; - } - pclose($pf); - return $s; -}; - -/** Assigns an array to use for dumping scan debug information (optional). */ -$phpMussel['Set-Scan-Debug-Array'] = function (&$Var) use (&$phpMussel) { - if (isset($phpMussel['DebugArr'])) { - unset($phpMussel['DebugArr']); - } - if (!is_array($Var)) { - $Var = []; - } - $phpMussel['DebugArr'] = &$Var; -}; - -/** Destroys the scan debug array (optional). */ -$phpMussel['Destroy-Scan-Debug-Array'] = function (&$Var) use (&$phpMussel) { - unset($phpMussel['DebugArrKey'], $phpMussel['DebugArr']); - $Var = null; -}; - -/** - * The main scan closure, responsible for initialising scans in most - * circumstances. Should generally be called whenever phpMussel is - * required by external scripts, apps, CMS, etc. - * - * Please refer to Section 3A of the README documentation, "HOW TO USE (FOR WEB - * SERVERS)", for more information. - * - * @param string|array $f Indicates which file, files, directory and/or - * directories to scan (can be a string, an array, or a multidimensional - * array). - * @param bool $n A boolean, indicating the format for the scan results to be - * returned as. False instructs the function to return the results as an - * integer; True instructs the function to return the results as human - * readable text. Optional; Defaults to false. - * @param bool $zz A boolean, indicating to the function whether or not arrayed - * results should be imploded prior to being returned to the calling - * function. False instructs the function to return the arrayed results as - * verbatim; True instructs the function to return the arrayed results as - * an imploded string. Optional; Defaults to false. - * @param int $dpt Represents the current depth of recursion from which the - * function has been called. This information is used for determining how - * far to indent any entries generated for logging and for the display of - * scan results in CLI (you should never manually set this parameter - * yourself). - * @param string $ofn In the context of the initial file upload scanning that - * phpMussel performs when operating via a server, this parameter (a - * string) represents the "original filename" of the file being scanned - * (the original filename, in this context, referring to the name of the - * file being scanned as per supplied by the upload client, as opposed to - * the temporary filename assigned by the server or any other filename). - * When operating in the context of CLI mode, both $f and $ofn represent - * the scan target, as per specified by the CLI operator; The only - * difference between the two is when the scan target is a directory, - * rather than a single file; $f will represent the full path to the file - * (so, directory plus filename), whereas $ofn will represent only the - * filename. - * @return bool|int|string|array The scan results, returned as an array when - * the $f parameter is an array and when $n and/or $zz is/are false, and - * otherwise returned as per described by the README documentation. The - * function may also die the script and return nothing, if something goes - * wrong, such as if the function is triggered in the absense of the - * required $phpMussel['memCache'] variable being set, and may also return - * false, in the absense of the required $phpMussel['HashCache']['Data'] - * variable being set. - */ -$phpMussel['Scan'] = function ($f = '', $n = false, $zz = false, $dpt = 0, $ofn = '') use (&$phpMussel) { - if (!isset($phpMussel['memCache'])) { - throw new \Exception( - !isset($phpMussel['lang']['required_variables_not_defined']) ? - '[phpMussel] Required variables aren\'t defined: Can\'t continue.' : - '[phpMussel] ' . $phpMussel['lang']['required_variables_not_defined'] - ); - } - if (empty($phpMussel['memCache']['OrganisedSigFiles'])) { - $phpMussel['OrganiseSigFiles'](); - $phpMussel['memCache']['OrganisedSigFiles'] = true; - } - - /** Initialise statistics if they've been enabled. */ - $phpMussel['Stats-Initialise'](); - - if ($phpMussel['EOF']) { - $phpMussel['PrepareHashCache'](); - } - if (!isset($phpMussel['HashCache']['Data'])) { - return false; - } - if (!$ofn) { - $ofn = $f; - } - $xst = time() + ($phpMussel['Config']['general']['timeOffset'] * 60); - $xst2822 = $phpMussel['TimeFormat']($xst, $phpMussel['Config']['general']['timeFormat']); - try { - $r = $phpMussel['Recursor']($f, $n, $zz, $dpt, $ofn); - } catch (\Exception $e) { - throw new \Exception($e->getMessage()); - } - $xet = time() + ($phpMussel['Config']['general']['timeOffset'] * 60); - $xet2822 = $phpMussel['TimeFormat']($xet, $phpMussel['Config']['general']['timeFormat']); - - /** Plugin hook: "after_scan". */ - $phpMussel['Execute_Hook']('after_scan'); - - if ($n && !is_array($r)) { - $r = - $xst2822 . ' ' . $phpMussel['lang']['started'] . - $phpMussel['lang']['_fullstop_final'] . "\n" . - $r . $xet2822 . ' ' . $phpMussel['lang']['finished'] . - $phpMussel['lang']['_fullstop_final'] . "\n"; - $phpMussel['WriteScanLog']($r); - } - if (!isset($phpMussel['SkipSerial'])) { - $phpMussel['WriteSerial']($xst, $xet); - } - if ($phpMussel['EOF']) { - if ($phpMussel['Config']['general']['scan_cache_expiry'] > 0) { - foreach ($phpMussel['HashCache']['Data'] as &$phpMussel['ThisItem']) { - if (is_array($phpMussel['ThisItem'])) { - $phpMussel['ThisItem'] = implode(':', $phpMussel['ThisItem']) . ';'; - } - } - $phpMussel['SaveCache']( - 'HashCache', - $phpMussel['Time'] + $phpMussel['Config']['general']['scan_cache_expiry'], - implode('', $phpMussel['HashCache']['Data']) - ); - unset($phpMussel['ThisItem'], $phpMussel['HashCache']['Data']); - } - } - - /** Register scan event. */ - $phpMussel['Stats-Increment']($phpMussel['EOF'] ? 'API-Events' : 'Web-Events', 1); - - /** Update statistics. */ - if ($phpMussel['CacheModified']) { - $phpMussel['Statistics'] = $phpMussel['SaveCache']('Statistics', -1, serialize($phpMussel['Statistics'])); - } - - /** Exit scan process. */ - return $r; -}; - -/** - * Writes to the serialized logfile upon scan completion. - * - * @param string $StartTime When the scan started. - * @param string $FinishTime When the scan finished. - * @return bool True on success; False on failure. - */ -$phpMussel['WriteSerial'] = function ($StartTime = '', $FinishTime = '') use (&$phpMussel) { - $Origin = $phpMussel['Mussel_sapi'] ? 'CLI' : $_SERVER[$phpMussel['Config']['general']['ipaddr']]; - $ScanData = empty($phpMussel['whyflagged']) ? $phpMussel['lang']['data_not_available'] : trim($phpMussel['whyflagged']); - if ($phpMussel['Config']['general']['scan_log_serialized']) { - if (!isset($phpMussel['memCache']['objects_scanned'])) { - $phpMussel['memCache']['objects_scanned'] = 0; - } - if (!isset($phpMussel['memCache']['detections_count'])) { - $phpMussel['memCache']['detections_count'] = 0; - } - if (!isset($phpMussel['memCache']['scan_errors'])) { - $phpMussel['memCache']['scan_errors'] = 1; - } - $Handle = [ - 'Data' => serialize([ - 'start_time' => $StartTime ?: (isset($phpMussel['memCache']['start_time']) ? $phpMussel['memCache']['start_time'] : '-'), - 'end_time' => $FinishTime ?: (isset($phpMussel['memCache']['end_time']) ? $phpMussel['memCache']['end_time'] : '-'), - 'origin' => $Origin, - 'objects_scanned' => $phpMussel['memCache']['objects_scanned'], - 'detections_count' => $phpMussel['memCache']['detections_count'], - 'scan_errors' => $phpMussel['memCache']['scan_errors'], - 'detections' => $ScanData - ]) . "\n", - 'File' => $phpMussel['TimeFormat']($phpMussel['Time'], $phpMussel['Config']['general']['scan_log_serialized']) - ]; - $WriteMode = (!file_exists($phpMussel['Vault'] . $Handle['File']) || ( - $phpMussel['Config']['general']['truncate'] > 0 && - filesize($phpMussel['Vault'] . $Handle['File']) >= $phpMussel['ReadBytes']($phpMussel['Config']['general']['truncate']) - )) ? 'w' : 'a'; - $Stream = fopen($phpMussel['Vault'] . $Handle['File'], $WriteMode); - fwrite($Stream, $Handle['Data']); - fclose($Stream); - return true; - } - return false; -}; - -/** - * Writes to the standard scan log upon scan completion. - * - * @param string $Data What to write. - * @return bool True on success; False on failure. - */ -$phpMussel['WriteScanLog'] = function ($Data) use (&$phpMussel) { - if ($phpMussel['Config']['general']['scan_log']) { - $File = $phpMussel['TimeFormat']($phpMussel['Time'], $phpMussel['Config']['general']['scan_log']); - if (!file_exists($phpMussel['Vault'] . $File)) { - $Data = $phpMussel['safety'] . "\n" . $Data; - } - $WriteMode = (!file_exists($phpMussel['Vault'] . $File) || ( - $phpMussel['Config']['general']['truncate'] > 0 && - filesize($phpMussel['Vault'] . $File) >= $phpMussel['ReadBytes']($phpMussel['Config']['general']['truncate']) - )) ? 'w' : 'a'; - $Handle = fopen($phpMussel['Vault'] . $File, 'a'); - fwrite($Handle, $Data); - fclose($Handle); - return true; - } - return false; -}; - -/** - * A simple closure for replacing date/time placeholders with corresponding - * date/time information. Used by the logfiles and some timestamps. - * - * @param int $Time A unix timestamp. - * @param string|array $In An input or an array of inputs to manipulate. - * @return string|array The adjusted input(/s). - */ -$phpMussel['TimeFormat'] = function ($Time, $In) use (&$phpMussel) { - $Time = date('dmYHisDMP', $Time); - $values = [ - 'dd' => substr($Time, 0, 2), - 'mm' => substr($Time, 2, 2), - 'yyyy' => substr($Time, 4, 4), - 'yy' => substr($Time, 6, 2), - 'hh' => substr($Time, 8, 2), - 'ii' => substr($Time, 10, 2), - 'ss' => substr($Time, 12, 2), - 'Day' => substr($Time, 14, 3), - 'Mon' => substr($Time, 17, 3), - 'tz' => substr($Time, 20, 3) . substr($Time, 24, 2), - 't:z' => substr($Time, 20, 6) - ]; - $values['d'] = (int)$values['dd']; - $values['m'] = (int)$values['mm']; - return is_array($In) ? array_map(function ($Item) use (&$values, &$phpMussel) { - return $phpMussel['ParseVars']($values, $Item); - }, $In) : $phpMussel['ParseVars']($values, $In); -}; - -/** - * Normalises values defined by the YAML closure. - * - * @param string|int|bool $Value The value to be normalised. - * @param int $ValueLen The length of the value to be normalised. - * @param string|int|bool $ValueLow The value to be normalised, lowercased. - */ -$phpMussel['YAML-Normalise-Value'] = function (&$Value, $ValueLen, $ValueLow) { - if (substr($Value, 0, 1) === '"' && substr($Value, $ValueLen - 1) === '"') { - $Value = substr($Value, 1, $ValueLen - 2); - } elseif (substr($Value, 0, 1) === '\'' && substr($Value, $ValueLen - 1) === '\'') { - $Value = substr($Value, 1, $ValueLen - 2); - } elseif ($ValueLow === 'true' || $ValueLow === 'y') { - $Value = true; - } elseif ($ValueLow === 'false' || $ValueLow === 'n') { - $Value = false; - } elseif (substr($Value, 0, 2) === '0x' && ($HexTest = substr($Value, 2)) && !preg_match('/[^a-f0-9]/i', $HexTest) && !($ValueLen % 2)) { - $Value = hex2bin($HexTest); - } else { - $ValueInt = (int)$Value; - if (strlen($ValueInt) === $ValueLen && $Value == $ValueInt && $ValueLen > 1) { - $Value = $ValueInt; - } - } - if (!$Value) { - $Value = false; - } -}; - -/** - * A simplified YAML-like parser. Note: This is intended to adequately serve - * the needs of this package in a way that should feel familiar to users of - * YAML, but it isn't a true YAML implementation and it doesn't adhere to any - * specifications, official or otherwise. - * - * @param string $In The data to parse. - * @param array $Arr Where to save the results. - * @param bool $VM Validator Mode (if true, results won't be saved). - * @param int $Depth Tab depth (inherited through recursion; ignore it). - * @return bool Returns false if errors are encountered, and true otherwise. - */ -$phpMussel['YAML'] = function ($In, &$Arr, $VM = false, $Depth = 0) use (&$phpMussel) { - if (!is_array($Arr)) { - if ($VM) { - return false; - } - $Arr = []; - } - if (!substr_count($In, "\n")) { - return false; - } - $In = str_replace("\r", '', $In); - $Key = $Value = $SendTo = ''; - $TabLen = $SoL = 0; - while ($SoL !== false) { - if (($EoL = strpos($In, "\n", $SoL)) === false) { - $ThisLine = substr($In, $SoL); - } else { - $ThisLine = substr($In, $SoL, $EoL - $SoL); - } - $SoL = ($EoL === false) ? false : $EoL + 1; - $ThisLine = preg_replace(["/#.*$/", "/\x20+$/"], '', $ThisLine); - if (empty($ThisLine) || $ThisLine === "\n") { - continue; - } - $ThisTab = 0; - while (($Chr = substr($ThisLine, $ThisTab, 1)) && ($Chr === ' ' || $Chr === "\t")) { - $ThisTab++; - } - if ($ThisTab > $Depth) { - if ($TabLen === 0) { - $TabLen = $ThisTab; - } - $SendTo .= $ThisLine . "\n"; - continue; - } elseif ($ThisTab < $Depth) { - return false; - } elseif (!empty($SendTo)) { - if (empty($Key)) { - return false; - } - if (!isset($Arr[$Key])) { - if ($VM) { - return false; - } - $Arr[$Key] = false; - } - if (!$phpMussel['YAML']($SendTo, $Arr[$Key], $VM, $TabLen)) { - return false; - } - $SendTo = ''; - } - if (substr($ThisLine, -1) === ':') { - $Key = substr($ThisLine, $ThisTab, -1); - $KeyLen = strlen($Key); - $KeyLow = strtolower($Key); - $phpMussel['YAML-Normalise-Value']($Key, $KeyLen, $KeyLow); - if (!isset($Arr[$Key])) { - if ($VM) { - return false; - } - $Arr[$Key] = false; - } - } elseif (substr($ThisLine, $ThisTab, 2) === '- ') { - $Value = substr($ThisLine, $ThisTab + 2); - $ValueLen = strlen($Value); - $ValueLow = strtolower($Value); - $phpMussel['YAML-Normalise-Value']($Value, $ValueLen, $ValueLow); - if (!$VM && $ValueLen > 0) { - $Arr[] = $Value; - } - } elseif (($DelPos = strpos($ThisLine, ': ')) !== false) { - $Key = substr($ThisLine, $ThisTab, $DelPos - $ThisTab); - $KeyLen = strlen($Key); - $KeyLow = strtolower($Key); - $phpMussel['YAML-Normalise-Value']($Key, $KeyLen, $KeyLow); - if (!$Key) { - return false; - } - $Value = substr($ThisLine, $ThisTab + $KeyLen + 2); - $ValueLen = strlen($Value); - $ValueLow = strtolower($Value); - $phpMussel['YAML-Normalise-Value']($Value, $ValueLen, $ValueLow); - if (!$VM && $ValueLen > 0) { - $Arr[$Key] = $Value; - } - } elseif (strpos($ThisLine, ':') === false && strlen($ThisLine) > 1) { - $Key = $ThisLine; - $KeyLen = strlen($Key); - $KeyLow = strtolower($Key); - $phpMussel['YAML-Normalise-Value']($Key, $KeyLen, $KeyLow); - if (!isset($Arr[$Key])) { - if ($VM) { - return false; - } - $Arr[$Key] = false; - } - } - } - if (!empty($SendTo) && !empty($Key)) { - if (!isset($Arr[$Key])) { - if ($VM) { - return false; - } - $Arr[$Key] = []; - } - if (!$phpMussel['YAML']($SendTo, $Arr[$Key], $VM, $TabLen)) { - return false; - } - } - return true; -}; - -/** - * Fix incorrect typecasting for some for some variables that sometimes default - * to strings instead of booleans or integers. - */ -$phpMussel['AutoType'] = function (&$Var, $Type = '') use (&$phpMussel) { - if ($Type === 'string' || $Type === 'timezone') { - $Var = (string)$Var; - } elseif ($Type === 'int' || $Type === 'integer') { - $Var = (int)$Var; - } elseif ($Type === 'real' || $Type === 'double' || $Type === 'float') { - $Var = (real)$Var; - } elseif ($Type === 'bool' || $Type === 'boolean') { - $Var = (strtolower($Var) !== 'false' && $Var); - } elseif ($Type === 'kb') { - $Var = $phpMussel['ReadBytes']($Var, 1); - } else { - $LVar = strtolower($Var); - if ($LVar === 'true') { - $Var = true; - } elseif ($LVar === 'false') { - $Var = false; - } elseif ($Var !== true && $Var !== false) { - $Var = (int)$Var; - } - } -}; - -/** - * Used to send cURL requests. - * - * @param string $URI The resource to request. - * @param array $Params (Optional) An associative array of key-value pairs to - * to send along with the request. - * @return string The results of the request. - */ -$phpMussel['Request'] = function ($URI, $Params = '', $Timeout = '') use (&$phpMussel) { - if (!$Timeout) { - $Timeout = $phpMussel['Timeout']; - } - - /** Initialise the cURL session. */ - $Request = curl_init($URI); - - $LCURI = strtolower($URI); - $SSL = (substr($LCURI, 0, 6) === 'https:'); - - curl_setopt($Request, CURLOPT_FRESH_CONNECT, true); - curl_setopt($Request, CURLOPT_HEADER, false); - if (empty($Params)) { - curl_setopt($Request, CURLOPT_POST, false); - } else { - curl_setopt($Request, CURLOPT_POST, true); - curl_setopt($Request, CURLOPT_POSTFIELDS, $Params); - } - if ($SSL) { - curl_setopt($Request, CURLOPT_PROTOCOLS, CURLPROTO_HTTPS); - curl_setopt($Request, CURLOPT_SSL_VERIFYPEER, false); - } - curl_setopt($Request, CURLOPT_FOLLOWLOCATION, true); - curl_setopt($Request, CURLOPT_MAXREDIRS, 1); - curl_setopt($Request, CURLOPT_RETURNTRANSFER, true); - curl_setopt($Request, CURLOPT_TIMEOUT, $Timeout); - curl_setopt($Request, CURLOPT_USERAGENT, $phpMussel['ScriptUA']); - - /** Execute and get the response. */ - $Response = curl_exec($Request); - - /** Close the cURL session. */ - curl_close($Request); - - /** Return the results of the request. */ - return $Response; -}; - -/** - * Used to generate new salts when necessary, which may be occasionally used by - * some specific optional peripheral features (note: should not be considered - * cryptographically secure; especially so for versions of PHP < 7). - * - * @return string Salt. - */ -$phpMussel['GenerateSalt'] = function () { - static $MinLen = 32; - static $MaxLen = 72; - static $MinChr = 1; - static $MaxChr = 255; - $Salt = ''; - if (function_exists('random_int')) { - try { - $Length = random_int($MinLen, $MaxLen); - } catch (\Exception $e) { - $Length = rand($MinLen, $MaxLen); - } - } else { - $Length = rand($MinLen, $MaxLen); - } - if (function_exists('random_bytes')) { - try { - $Salt = random_bytes($Length); - } catch (\Exception $e) { - $Salt = ''; - } - } - if (empty($Salt)) { - if (function_exists('random_int')) { - try { - for ($Index = 0; $Index < $Length; $Index++) { - $Salt .= chr(random_int($MinChr, $MaxChr)); - } - } catch (\Exception $e) { - $Salt = ''; - for ($Index = 0; $Index < $Length; $Index++) { - $Salt .= chr(rand($MinChr, $MaxChr)); - } - } - } else { - for ($Index = 0; $Index < $Length; $Index++) { - $Salt .= chr(rand($MinChr, $MaxChr)); - } - } - } - return $Salt; -}; - -/** Clears expired entries from a list. */ -$phpMussel['ClearExpired'] = function (&$List, &$Check) use (&$phpMussel) { - if ($List) { - $End = 0; - while (true) { - $Begin = $End; - if (!$End = strpos($List, "\n", $Begin + 1)) { - break; - } - $Line = substr($List, $Begin, $End - $Begin); - if ($Split = strrpos($Line, ',')) { - $Expiry = (int)substr($Line, $Split + 1); - if ($Expiry < $phpMussel['Time']) { - $List = str_replace($Line, '', $List); - $End = 0; - $Check = true; - } - } - } - } -}; - -/** Fetch information about signature files and prepare for use with the scan process. */ -$phpMussel['OrganiseSigFiles'] = function () use (&$phpMussel) { - if (empty($phpMussel['Config']['signatures']['Active'])) { - return false; - } - $Classes = [ - 'General_Command_Detections', - 'Filename', - 'Hash', - 'Standard', - 'Standard_RegEx', - 'Normalised', - 'Normalised_RegEx', - 'HTML', - 'HTML_RegEx', - 'PE_Extended', - 'PE_Sectional', - 'Complex_Extended', - 'URL_Scanner' - ]; - $List = explode(',', $phpMussel['Config']['signatures']['Active']); - foreach ($List as $File) { - $Handle = fopen($phpMussel['sigPath'] . $File, 'rb'); - if (fread($Handle, 9) !== 'phpMussel') { - fclose($Handle); - continue; - } - $Class = fread($Handle, 1); - fclose($Handle); - $Nibbles = $phpMussel['split_nibble']($Class); - if (!empty($Classes[$Nibbles[0]])) { - if (!isset($phpMussel['memCache'][$Classes[$Nibbles[0]]])) { - $phpMussel['memCache'][$Classes[$Nibbles[0]]] = ','; - } - $phpMussel['memCache'][$Classes[$Nibbles[0]]] .= $File . ','; - } - } -}; - -/** A simple safety wrapper for unpack. */ -$phpMussel['UnpackSafe'] = function ($Format, $Data) { - return (strlen($Data) > 1) ? unpack($Format, $Data) : ''; -}; - -/** A simple safety wrapper for hex2bin. */ -$phpMussel['HexSafe'] = function ($Data) use (&$phpMussel) { - return ($Data && !preg_match('/[^a-f0-9]/i', $Data) && !(strlen($Data) % 2)) ? $phpMussel['Function']('HEX', $Data) : ''; -}; - -/** If input isn't an array, make it so. Remove empty elements. */ -$phpMussel['Arrayify'] = function (&$Input) { - if (!is_array($Input)) { - $Input = [$Input]; - } - $Input = array_filter($Input); -}; - -/** - * Read byte value configuration directives as byte values. - * - * @param string $In Input. - * @param int $Mode Operating mode. 0 for true byte values, 1 for validating. - * Default is 0. - * @return string|int Output (depends on operating mode). - */ -$phpMussel['ReadBytes'] = function ($In, $Mode = 0) { - if (preg_match('/[KMGT][oB]$/i', $In)) { - $Unit = substr($In, -2, 1); - } elseif (preg_match('/[KMGToB]$/i', $In)) { - $Unit = substr($In, -1); - } - $Unit = isset($Unit) ? strtoupper($Unit) : 'K'; - $In = (real)$In; - if ($Mode === 1) { - return $Unit === 'B' || $Unit === 'o' ? $In . 'B' : $In . $Unit . 'B'; - } - $Multiply = ['K' => 1024, 'M' => 1048576, 'G' => 1073741824, 'T' => 1099511627776]; - return (int)floor($In * (isset($Multiply[$Unit]) ? $Multiply[$Unit] : 1)); -}; - -/** - * Improved recursive directory iterator for phpMussel. - * - * @param string $Base Directory root. - * @return array Directory tree. - */ -$phpMussel['DirectoryRecursiveList'] = function ($Base) { - $Arr = []; - $Key = -1; - $Offset = strlen($Base); - $List = new RecursiveIteratorIterator(new RecursiveDirectoryIterator($Base), RecursiveIteratorIterator::SELF_FIRST); - foreach ($List as $Item => $List) { - if (preg_match('~^(?:/\.\.|./\.|\.{3})$~', str_replace("\\", '/', substr($Item, -3))) || !is_readable($Item) || is_dir($Item)) { - continue; - } - $Key++; - $Arr[$Key] = substr($Item, $Offset); - } - return $Arr; -}; - -/** - * Internal aliases for common hash functions (used by CLI). - * - * @param string $Alias The alias used. - * @param string $Data The data to be hashed. - * @return string The output hash. - */ -$phpMussel['HashAlias'] = function ($Alias, $Data) { - if ($Alias === 'm' || $Alias === 'md5' || $Alias === 'md5_file') { - return md5($Data); - } - if ($Alias === 'sha1' || $Alias === 'sha1_file') { - return sha1($Data); - } - return ''; -}; - -/** - * Duplication avoidance (forking the process via recursive CLI mode commands). - * - * @param string $Command Command with parameters for the action to be taken. - * @param callable $Callable Executed normally when not forking the process. - * @return string Returnable data to be echoed to the CLI output. - */ -$phpMussel['CLI-RecursiveCommand'] = function ($Command, $Callable) use (&$phpMussel) { - $Params = substr($Command, strlen($phpMussel['cmd']) + 1); - if (is_dir($Params)) { - if (!is_readable($Params)) { - return $phpMussel['lang']['failed_to_access'] . '"' . $Params . "\".\n"; - } - $Decal = [':-) - (-:', ':-) \\ (-:', ':-) | (-:', ':-) / (-:']; - $Frame = 0; - $Terminal = $Params[strlen($Params) - 1]; - if ($Terminal !== "\\" && $Terminal !== '/') { - $Params .= '/'; - } - $List = $phpMussel['DirectoryRecursiveList']($Params); - $Returnable = ''; - foreach ($List as $Item) { - echo "\r" . $Decal[$Frame]; - $Returnable .= $phpMussel['Fork']($phpMussel['cmd'] . ' ' . $Params . $Item, $Item) . "\n"; - $Frame = $Frame < 3 ? $Frame + 1 : 0; - } - echo "\r "; - return $Returnable; - } - return is_file($Params) ? $Callable($Params) : $Params . $phpMussel['lang']['cli_is_not_a'] . "\n"; -}; - -/** Handles errors (will expand this later). */ -$phpMussel['ErrorHandler_1'] = function ($errno) use (&$phpMussel) { - return; -}; - -/** Duplication avoidance (some file handling for honeypot functionality). */ -$phpMussel['ReadFile-For-Honeypot'] = function (&$Array, $File) use (&$phpMussel) { - if (!isset($Array['qdata'])) { - $Array['qdata'] = ''; - } - $Array['odata'] = $phpMussel['ReadFile']($File); - $Array['len'] = strlen($Array['odata']); - $Array['crc'] = hash('crc32b', $Array['odata']); - $Array['qfile'] = $phpMussel['Time'] . '-' . md5($phpMussel['Config']['general']['quarantine_key'] . $Array['crc'] . $phpMussel['Time']); - if ($Array['len'] > 0 && $Array['len'] < $phpMussel['ReadBytes']($phpMussel['Config']['general']['quarantine_max_filesize'])) { - $phpMussel['Quarantine']( - $Array['odata'], - $phpMussel['Config']['general']['quarantine_key'], - $_SERVER[$phpMussel['Config']['general']['ipaddr']], - $Array['qfile'] - ); - } - if ($phpMussel['Config']['general']['delete_on_sight'] && is_readable($File)) { - unlink($File); - } - $Array['qdata'] .= sprintf( - 'TEMP FILENAME: %1$s%6$sFILENAME: %2$s%6$sFILESIZE: %3$s%6$sMD5: %4$s%6$s%5$s', - $File, - urlencode($File), - $Array['len'], - md5($Array['odata']), - $phpMussel['ParseVars'](['QFU' => $Array['qfile']], $phpMussel['lang']['quarantined_as']), - "\n" - ); -}; - -/** Duplication avoidance (assigning kill details and unlinking files). */ -$phpMussel['KillAndUnlink'] = function () use (&$phpMussel) { - $phpMussel['killdata'] .= - '-UPLOAD-LIMIT-EXCEEDED--NO-HASH-:' . - $phpMussel['upload']['FilesData']['FileSet']['size'][$phpMussel['upload']['FilesData']['FileSet']['i']] . ':' . - $phpMussel['upload']['FilesData']['FileSet']['name'][$phpMussel['upload']['FilesData']['FileSet']['i']] . "\n"; - $phpMussel['whyflagged'] .= - $phpMussel['lang']['upload_limit_exceeded'] . - ' (' . $phpMussel['upload']['FilesData']['FileSet']['name'][$phpMussel['upload']['FilesData']['FileSet']['i']] . ')' . - $phpMussel['lang']['_exclamation']; - if ( - $phpMussel['Config']['general']['delete_on_sight'] && - is_uploaded_file($phpMussel['upload']['FilesData']['FileSet']['tmp_name'][$phpMussel['upload']['FilesData']['FileSet']['i']]) && - is_readable($phpMussel['upload']['FilesData']['FileSet']['tmp_name'][$phpMussel['upload']['FilesData']['FileSet']['i']]) && - !$phpMussel['Config']['general']['honeypot_mode'] - ) { - unlink($phpMussel['upload']['FilesData']['FileSet']['tmp_name'][$phpMussel['upload']['FilesData']['FileSet']['i']]); - } -}; - -/** Increments statistics if they've been enabled. */ -$phpMussel['Stats-Increment'] = function ($Statistic, $Amount) use (&$phpMussel) { - if ($phpMussel['Config']['general']['statistics'] && isset($phpMussel['Statistics'][$Statistic])) { - $phpMussel['Statistics'][$Statistic] += $Amount; - $phpMussel['CacheModified'] = true; - } -}; - -/** Initialise statistics if they've been enabled. */ -$phpMussel['Stats-Initialise'] = function () use (&$phpMussel) { - if ($phpMussel['Config']['general']['statistics']) { - $phpMussel['CacheModified'] = false; - - if ($phpMussel['Statistics'] = ($phpMussel['FetchCache']('Statistics') ?: [])) { - $phpMussel['Statistics'] = unserialize($phpMussel['Statistics']) ?: []; - } - - if (empty($phpMussel['Statistics']['Other-Since'])) { - $phpMussel['Statistics'] = [ - 'Other-Since' => $phpMussel['Time'], - 'Web-Events' => 0, - 'Web-Scanned' => 0, - 'Web-Blocked' => 0, - 'Web-Quarantined' => 0, - 'CLI-Events' => 0, - 'CLI-Scanned' => 0, - 'CLI-Flagged' => 0, - 'API-Events' => 0, - 'API-Scanned' => 0, - 'API-Flagged' => 0 - ]; - $phpMussel['CacheModified'] = true; - } - } -}; diff --git a/libraries/plugins/phpMussel/vault/greylist.csv b/libraries/plugins/phpMussel/vault/greylist.csv deleted file mode 100644 index 41622b4..0000000 --- a/libraries/plugins/phpMussel/vault/greylist.csv +++ /dev/null @@ -1 +0,0 @@ -, \ No newline at end of file diff --git a/libraries/plugins/phpMussel/vault/hotfixes.php b/libraries/plugins/phpMussel/vault/hotfixes.php deleted file mode 100644 index 15e3ff5..0000000 --- a/libraries/plugins/phpMussel/vault/hotfixes.php +++ /dev/null @@ -1,83 +0,0 @@ -\n" . - " | | | | | | | |_____| ______| ______| |______ |_____ \n"; - -/** phpMussel CLI-mode prompt. */ -$phpMussel['lang']['cli_prompt'] = "\n\n>> "; - -/** - * Kills the script if the language data file corresponding to the language - * directive (%phpMussel%/vault/lang/lang.%%.php) doesn't exist. - */ -if (!file_exists($phpMussel['langPath'] . 'lang.' . $phpMussel['Config']['general']['lang'] . '.php')) { - header('Content-Type: text/plain'); - die('[phpMussel] Language undefined or incorrectly defined. Can\'t continue.'); -} - -/** Load the necessary language data. */ -require $phpMussel['langPath'] . 'lang.' . $phpMussel['Config']['general']['lang'] . '.php'; - -/** Load front-end language data if necessary. */ -if ( - !$phpMussel['Config']['general']['disable_frontend'] && - file_exists($phpMussel['Vault'] . 'frontend.php') && - file_exists($phpMussel['Vault'] . 'fe_assets/frontend.html') && - $phpMussel['Direct'] -) { - /** - * Kill the script if the front-end language data file corresponding to - * the language directive (%phpMussel%/vault/lang/lang.%%.fe.php) doesn't - * exist. - */ - if (!file_exists($phpMussel['langPath'] . 'lang.' . $phpMussel['Config']['general']['lang'] . '.fe.php')) { - header('Content-Type: text/plain'); - die('[phpMussel] Language undefined or incorrectly defined. Can\'t continue.'); - } - /** Load the necessary language data. */ - require $phpMussel['langPath'] . 'lang.' . $phpMussel['Config']['general']['lang'] . '.fe.php'; -} - -/** Will remove later (temporary variable). */ -$phpMussel['Config']['general']['lang_override'] = false; - -/** Load user language overrides if possible and enabled. */ -if ($phpMussel['Config']['general']['lang_override'] && !empty($_SERVER['HTTP_ACCEPT_LANGUAGE'])) { - $phpMussel['lang_user'] = $phpMussel['lang']; - $phpMussel['user_lang'] = strtolower($_SERVER['HTTP_ACCEPT_LANGUAGE']); - if (($phpMussel['lang_pos'] = strpos($_SERVER['HTTP_ACCEPT_LANGUAGE'], ',')) !== false) { - $phpMussel['user_lang'] = substr($_SERVER['HTTP_ACCEPT_LANGUAGE'], 0, $phpMussel['lang_pos']); - } - if ( - empty($phpMussel['Config']['Config Defaults']['general']['lang']['choices'][$phpMussel['user_lang']]) && - ($phpMussel['lang_pos'] = strpos($phpMussel['user_lang'], '-')) !== false - ) { - $phpMussel['user_lang'] = substr($phpMussel['user_lang'], 0, $phpMussel['lang_pos']); - if (empty($phpMussel['Config']['Config Defaults']['general']['lang']['choices'][$phpMussel['user_lang']])) { - $phpMussel['user_lang'] = ''; - } - } - - /** Load the necessary language data. */ - if ( - $phpMussel['user_lang'] && - $phpMussel['user_lang'] !== $phpMussel['Config']['general']['lang'] && - file_exists($phpMussel['langPath'] . 'lang.' . $phpMussel['user_lang'] . '.php') - ) { - require $phpMussel['langPath'] . 'lang.' . $phpMussel['user_lang'] . '.php'; - } - - $phpMussel['Swap']($phpMussel['lang_user'], $phpMussel['lang']); - unset($phpMussel['user_lang'], $phpMussel['lang_pos']); -} else { - $phpMussel['lang_user'] = &$phpMussel['lang']; -} diff --git a/libraries/plugins/phpMussel/vault/lang/.htaccess b/libraries/plugins/phpMussel/vault/lang/.htaccess deleted file mode 100644 index 3ebfe62..0000000 --- a/libraries/plugins/phpMussel/vault/lang/.htaccess +++ /dev/null @@ -1,6 +0,0 @@ - - Order Allow,Deny - Deny from All - -Order Allow,Deny -Deny from All diff --git a/libraries/plugins/phpMussel/vault/lang/lang.ar.fe.php b/libraries/plugins/phpMussel/vault/lang/lang.ar.fe.php deleted file mode 100644 index 427713d..0000000 --- a/libraries/plugins/phpMussel/vault/lang/lang.ar.fe.php +++ /dev/null @@ -1,301 +0,0 @@ -الرئيسية | خروج'; -$phpMussel['lang']['bNav_logout'] = 'خروج'; -$phpMussel['lang']['config_attack_specific_archive_file_extensions'] = 'ملحقات ملفات الأرشيف المعترف بها (الشكل هو CSV، وينبغي فقط إضافة أو إزالة عندما تحدث المشاكل؛ إزالة دون داع قد يسبب ايجابيات كاذبة لتظهر لملفات الأرشيف، في حين اضاف داع سوف القائمة البيضاء أساسا ما كنت تقوم بإضافة من كشف المحدد الهجوم؛ تعديل مع الحذر، لاحظ أيضا أن هذا ليس له تأثير على ما المحفوظات يمكن ولا يمكن تحليلها على مستوى المحتوى). القائمة، كما هو في التقصير، يسرد تلك الأشكال الأكثر شيوعا في غالبية النظم واتفاقية الأنواع المهاجرة، ولكن عمدا ليست شاملة بالضرورة.'; -$phpMussel['lang']['config_attack_specific_block_control_characters'] = 'حظر أي ملفات تحتوي على أي أحرف التحكم (عدا أسطر جديدة)؟ ([\x00-\x08\x0b\x0c\x0e\x1f\x7f]) إذا كنت فقط تحميل نص عادي، ثم يمكنك تشغيل هذا الخيار لتوفير بعض الحماية إضافية على النظام الخاص بك. ومع ذلك، إذا قمت بتحميل أي شيء آخر غير نص عادي، وتحول هذا على قد يؤدي إلى ايجابيات كاذبة. = كاذبة لا منع [افتراضي]. صحيح = بلوك.'; -$phpMussel['lang']['config_attack_specific_chameleon_from_exe'] = 'البحث عن العناوين قابلة للتنفيذ في الملفات التي ليست التنفيذية ولا المحفوظات المعترف بها والقابلة للتنفيذ التي هي العناوين غير صحيحة. True = على. False = إيقاف.'; -$phpMussel['lang']['config_attack_specific_chameleon_from_php'] = 'البحث عن العنوان PHP في الملفات التي ليست ملفات PHP و لا المحفوظات معترفة بها. True = على. False = إيقاف.'; -$phpMussel['lang']['config_attack_specific_chameleon_to_archive'] = 'البحث عن المحفوظات التي عناوينها غير صحيحة (المدعومة: BZ، GZ، RAR، ZIP، RAR، GZ). True = على. False = إيقاف.'; -$phpMussel['lang']['config_attack_specific_chameleon_to_doc'] = 'البحث عن المستندات التي عناوينها غير صحيحة (المدعومة: DOC، وزارة النقل، PPS، PPT، XLA، XLS، WIZ). True = على. False = إيقاف.'; -$phpMussel['lang']['config_attack_specific_chameleon_to_img'] = 'البحث عن الصور التي عناوينها غير صحيحة (المدعومة: BMP، DIB، PNG، GIF، JPEG، JPG، XCF، PSD، PDD، WEBP). True = على. False = إيقاف.'; -$phpMussel['lang']['config_attack_specific_chameleon_to_pdf'] = 'البحث عن الملفات PDF التي عناوينها غير صحيحة. True = على. False = إيقاف.'; -$phpMussel['lang']['config_attack_specific_corrupted_exe'] = 'تلف الملفات وتحليل الأخطاء. خطأ = تجاهل. صحيح = كتلة [افتراضي]. كشف ومنع الملفات المحتمل تلف PE (محمول قابل للتنفيذ)؟ في كثير من الأحيان (ولكن ليس دائما)، عندما تلف جوانب معينة من ملف PE أو لا يمكن تحليله بشكل صحيح، فإنه يمكن أن يكون مؤشرا على وجود عدوى فيروسية. العمليات المستخدمة من قبل معظم برامج مكافحة الفيروسات للكشف عن الفيروسات في ملفات PE تتطلب تحليل تلك الملفات بطرق معينة والتي إذا كان مبرمج للفيروس هو على علم، ومحاولة خصيصا لمنع، من أجل السماح للفيروس لتبقى غير مكتشفة.'; -$phpMussel['lang']['config_attack_specific_decode_threshold'] = 'الحد الأقصى لطول البيانات الخام من خلاله أن يتم الكشف عن أوامر فك (في حالة وجود أي مشكلات في الأداء ملحوظة أثناء المسح). افتراضي = 512KB. صفر أو قيمة فارغة تعطيل عتبة (إزالة مثل هذا القيد على أساس حجم الملف).'; -$phpMussel['lang']['config_attack_specific_scannable_threshold'] = 'الحد الأقصى لطول البيانات الخام التي يسمح phpMussel لقراءة ومسح (في حالة وجود أي مشكلات في الأداء ملحوظة أثناء المسح). افتراضي = 32MB. صفر أو قيمة فارغة تعطيل العتبة. عموما، يجب أن لا تكون هذه القيمة أقل من متوسط حجم الملف من تحميل الملفات التي تريد وتتوقع الحصول على الخادم الخاص بك أو الموقع، لا ينبغي أن يكون أكثر من التوجيه filesize_limit، ويجب أن لا يكون خامس أكثر من ما يقرب من واحد من مجموع تخصيص الذاكرة المسموح منح لPHP عن طريق ملف التكوين "php.ini". هذا التوجيه موجود في محاولة لمنع phpMussel من استخدام ما يصل الكثير من الذاكرة (التي تريد منعها من أن تكون قادرة على مسح بنجاح الملفات فوق حجم الملف معين).'; -$phpMussel['lang']['config_compatibility_ignore_upload_errors'] = 'يجب أن يكون هذا التوجيه عموما هو تعطيل ما لم تصبح مطلوبة حصول على الوظائف الصحيحة لـ phpMussel على النظام الخاص بك محددة. عادة، عندما يكون في وضع تعطيل، عندما يكتشف phpMussel وجود عناصر في مجموعة "$_FILES" ()، وأنها سوف محاولة لبدء فحص الملفات التي تمثل تلك العناصر، وإذا كانت تلك العناصر هي فارغة أو فارغة، سوف phpMussel العودة رسالة خطأ. هذا هو السلوك الصحيح للـ phpMussel. ومع ذلك، بالنسبة لبعض CMS، العناصر الفارغة في "$_FILES" يمكن أن تحدث نتيجة لسلوك طبيعي لتلك CMS، أو أخطاء قد يتم الإعلام عندما لم تكن هناك أي، في هذه الحالة، السلوك العادي للphpMussel سوف تتدخل مع السلوك العادي من تلك CMS. في حال حدوث مثل هذه الحالة بالنسبة لك، تمكين هذا الخيار سوف يكلف phpMussel ليست محاولة لبدء المسح الضوئي لمثل هذه العناصر الفارغة، تجاهلها عندما وجدت وعدم إعادة أي رسائل خطأ ذات الصلة، مما يتيح استمرار طلب الصفحة. كاذبة = OFF؛ صحيح = ON.'; -$phpMussel['lang']['config_compatibility_only_allow_images'] = 'إذا كنت تتوقع فقط أو تنوي فقط للسماح الصور المراد تحميلها على النظام الخاص بك أو CMS، وإذا كنت على الاطلاق لا تتطلب أية ملفات أخرى من الصور ليتم تحميلها على النظام الخاص بك أو CMS، ينبغي تمكين هذا التوجيه، ولكن ينبغي خلاف ذلك يتم تعطيل. إذا تم تمكين هذا التوجيه، أنه سوف يكلف phpMussel لمنع عشوائيا أي الإضافات التي تم تحديدها كملفات صورة غير، دون مسحها. هذا قد يقلل من الوقت اللازم لتجهيز واستخدام الذاكرة لمحاولة تحميل الملفات غير الصورة. كاذبة = OFF؛ صحيح = ON.'; -$phpMussel['lang']['config_files_block_encrypted_archives'] = 'كشف ومنع تشفير المحفوظات؟ لأن phpMussel ليست قادرة على مسح محتويات المحفوظات مشفرة، فمن الممكن أن التشفير أرشيف يجوز توظيف من قبل مهاجم كوسيلة لمحاولة تجاوز phpMussel، والماسحات الضوئية مكافحة الفيروسات وغيرها من مثل هذه الحماية. يمكن أن تعليمات phpMussel لمنع أي المحفوظات التي كان تكتشف لتكون مشفرة المحتمل أن يساعد على الحد من أي مخاطر المرتبطة بهذه مثل هذه الاحتمالات. كاذبة = لا؛ صحيح = نعم [افتراضي].'; -$phpMussel['lang']['config_files_check_archives'] = 'محاولة للتحقق من محتويات المحفوظات؟ = كاذبة لا تحقق. صحيح = افحص [افتراضي]. في الوقت الراهن، يتم اعتماد فحص فقط من BZ/BZIP2، GZ/GZIP، LZF، PHAR، TAR و ZIP (فحص من RAR، CAB، 7Z وإلى آخره غير معتمدة حاليا). هذه ليست مضمونة! بينما أنا أوصي حفظ هذا قيد التشغيل، لا يمكنني ان اضمن انها سوف تجد دائما كل شيء. أيضا أن ندرك أن أرشيف التحقق حاليا ليست متكررة ملفات PHAR أو ZIP.'; -$phpMussel['lang']['config_files_filesize_archives'] = 'ترحيل حجم ملف القائمة السوداء / قائمة بيضاء لمحتويات المحفوظات؟ كاذبة = لا (فقط كل ما يدرجون)؛ صحيح = نعم [افتراضي].'; -$phpMussel['lang']['config_files_filesize_limit'] = 'حدود حجم الملف بالكيلو بايت. 65536 = 64MB [افتراضي]. 0 = لا يوجد حد (greylisted دائما)، أي (إيجابية) قيمة رقمية قبلت. هذا يمكن أن يكون مفيدا عندما يحد التكوين الخاص بي مقدار الذاكرة عملية يمكن أن تعقد أو إذا كان لديك PHP حدود التكوين حجم الملف من الإضافات.'; -$phpMussel['lang']['config_files_filesize_response'] = 'ماذا تفعل مع الملفات التي تتجاوز الحد الأقصى لحجم الملف (إن وجد). كاذبة = القائمة البيضاء. صحيح = القائمة السوداء [افتراضي].'; -$phpMussel['lang']['config_files_filetype_archives'] = 'ترحيل نوع الملف القائمة السوداء / القائمة البيضاء لمحتويات المحفوظات؟ كاذبة = لا (فقط كل ما يدرجون) [افتراضي]. صحيح = نعم.'; -$phpMussel['lang']['config_files_filetype_blacklist'] = 'القائمة السوداء:'; -$phpMussel['lang']['config_files_filetype_greylist'] = 'قائمة رمادية:'; -$phpMussel['lang']['config_files_filetype_whitelist'] = 'إذا كان النظام يسمح فقط أنواع معينة من الملفات المراد تحميلها، أو إذا كان النظام ينفي صراحة أنواع معينة من الملفات، تحديد تلك نوع الملف في قوائم بيضاء، القوائم السوداء و القوائم الرمادية يمكن أن تزيد من السرعة التي يتم تنفيذ المسح من خلال السماح للبرنامج بتخطي بعض أنواع الملفات. الشكل هو CSV (قيم مفصولة بفواصل). إذا كنت ترغب في مسح كل شيء، وليس من القائمة البيضاء، القائمة السوداء أو القائمة الرمادية، وترك المتغير (/ ث) فارغة. وبذلك تعطيل القائمة البيضاء / السوداء / القائمة الرمادية. الترتيب المنطقي للمعالجة هو: إذا نوع الملف موجود في القائمة البيضاء، لا يفحص ولا تحجب الملف، وعدم التدقيق في ملف ضد القائمة السوداء أو القائمة الرمادية. إذا نوع الملف موجود في القائمة السوداء، لا تفحص الملف ولكن منع ذلك على أي حال، وعدم التدقيق في ملف ضد قائمة رمادية. إذا كانت قائمة رمادية فارغة أو إذا كانت قائمة رمادية ليس فارغا من نوع الملف، مسح الملفات حسب طبيعتها وتحديد ما إذا كان لمنع ذلك بناء على نتائج الفحص، ولكن إذا كانت قائمة رمادية ليس فارغا ونوع الملف هو ليس ملف قائمة رمادية، معالجة الملف على القائمة السوداء، لذلك لا المسح الضوئي ولكن منع ذلك على أي حال. القائمة البيضاء:'; -$phpMussel['lang']['config_files_max_recursion'] = 'الحد الأقصى لإعادة الحد الأقصى لعمق المحفوظات. افتراضي = 10.'; -$phpMussel['lang']['config_files_max_uploads'] = 'العدد الأقصى المسموح به من ملفات لمسح أثناء تحميل الملفات مسح قبل إحباط عملية الفحص وإعلام المستخدم أنهم تحميل أكثر من اللازم في وقت واحد! يوفر الحماية ضد هجوم النظري حيث يحاول أحد المهاجمين دوس النظام الخاص بك أو CMS من الحمولة الزائدة phpMussel إلى إبطاء عملية PHP لوقف طحن. الموصى بها: 10. أنت قد ترغب في رفع أو خفض هذا الرقم اعتمادا على سرعة الجهاز. لاحظ أن هذا الرقم لا يأخذ في الحسبان أو تتضمن محتويات المحفوظات.'; -$phpMussel['lang']['config_general_cleanup'] = 'إلغاء تعيين المتغيرات وذاكرة التخزين المؤقت التي يستخدمها البرنامج النصي بعد المسح الأولي للتحميل؟ زائفة/False = لا؛ صحيح/True = نعم [افتراضي]. إذا كنت -لا -تستخدم البرنامج النصي وراء المسح الأولي للتحميل، يجب تعيين هذا صحيح (نعم)، للحد من استخدام الذاكرة. إذا كنت تستخدم البرنامج النصي وراء المسح الأولي للتحميل، ينبغي أن تحدد إلى زائفة =(لا)، لتجنب داع إعادة تحميل البيانات المكررة في الذاكرة. في الممارسة العامة، ينبغي عادة أن يتم تعيين إلى صحيح، ولكن، إذا كنت تفعل ذلك، فإنك لن تكون قادرا على استخدام البرنامج النصي في أي شيء سوى المسح الأولي لتحميل الملف. ليس له أي تأثير في وضع CLI "واجهة سطر الأوامر".'; -$phpMussel['lang']['config_general_default_algo'] = 'يحدد الخوارزمية التي سيتم استخدامها لكل كلمات المرور والجلسات المستقبلية. خيارات: PASSWORD_DEFAULT (افتراضي)، PASSWORD_BCRYPT، PASSWORD_ARGON2I (يتطلب PHP >= 7.2.0).'; -$phpMussel['lang']['config_general_delete_on_sight'] = 'تمكين هذا التوجيه وإرشاد النصي لمحاولة حذف فورا عن أي الممسوحة ضوئيا تحميل ملف محاولة مطابقة أي معايير الكشف، سواء عن طريق التوقيعات أو غير ذلك. لن يكون لمست الملفات مصممة على أن تكون "نظيفة". في حالة المحفوظات، سيتم حذف أرشيف كامل، بغض النظر عن ما إذا كان أو لم يكن ملف المخالف هو واحد فقط من العديد من الملفات الواردة في الأرشيف. بالنسبة لحالة إيداع ملف المسح الضوئي، عادة، فإنه ليس من الضروري لتمكين هذا التوجيه، لأن العادة، PHP وتطهير محتويات ذاكرة التخزين المؤقت تلقائيا عند انتهاء التنفيذ، وهذا يعني انها سوف عادة حذف أي الملفات التي تم تحميلها من خلال ذلك إلى الخادم ما لم يكونوا قد تم نقلها أو نسخها أو حذفها بالفعل. يضاف هذا التوجيه هنا كإجراء إضافي من الأمن لأولئك الذين نسخ من PHP قد لا تتصرف دائما على النحو المتوقع. = كاذبة بعد المسح، وترك الملف وحده [الافتراضي]. صحيح = بعد المسح، إن لم يكن نظيفة، تحذف فورا.'; -$phpMussel['lang']['config_general_disable_cli'] = 'وضع تعطيل CLI؟ يتم تمكين وضع CLI افتراضيا، ولكن يمكن أن تتداخل أحيانا مع بعض أدوات الاختبار (مثل PHPUnit، على سبيل المثال) وغيرها من التطبيقات القائمة على المبادرة القطرية. إذا كنت لا تحتاج إلى تعطيل وضع CLI، يجب تجاهل هذا التوجيه. خطأ = تمكين وضع CLI [الافتراضي]. صحيح = وضع تعطيل CLI.'; -$phpMussel['lang']['config_general_disable_frontend'] = 'تعطيل وصول front-end؟ وصول front-end يستطيع جعل phpMussel أكثر قابلية للإدارة، ولكن يمكن أيضا أن تكون مخاطر أمنية محتملة. من المستحسن لإدارة phpMussel عبر back-end متى أمكن، لكن وصول front-end متوفر عندما لم يكن ممكنا. يبقيه المعوقين إلا إذا كنت في حاجة إليها. False = تمكين وصول front-end؛ True = تعطيل وصول front-end [الافتراضي].'; -$phpMussel['lang']['config_general_disable_webfonts'] = 'هل تريد تعطيل ويبفونتس؟ True = نعم؛ False = لا [افتراضي].'; -$phpMussel['lang']['config_general_enable_plugins'] = 'تمكين دعم ملحقات phpMussel؟ كاذبة = لا؛ صحيح = نعم [الافتراضي].'; -$phpMussel['lang']['config_general_forbid_on_block'] = 'هل phpMussel يرسل 403 من العناوين مع الرسالة منعت إيداع الملف، أو يبقى مع المعتادة 200 موافق؟ خطأ = رقم (200). صحيح = نعم (403) [الافتراضي].'; -$phpMussel['lang']['config_general_FrontEndLog'] = 'ملف لتسجيل محاولات الدخول الأمامية. تحديد اسم الملف، أو اتركه فارغا لتعطيل.'; -$phpMussel['lang']['config_general_honeypot_mode'] = 'عند تمكين وضع مصيدة، و phpMussel محاولة لعزل كل تحميل ملف واحد أن يواجه، بغض النظر عن ما إذا كان أو لم يكن ملف يتم تحميلها يطابق أي وشملت التوقيعات، وسوف لا المسح الفعلي أو تحليل لتلك تحميل الملفات حاول أن يحدث في الواقع. وينبغي أن تكون هذه الوظيفة مفيدة لأولئك الذين يرغبون في استخدام phpMussel لأغراض فيروس / بحث عن البرامج الضارة، ولكن هذا لا يوصى لتمكين هذه الوظيفة إذا كان الغرض من استخدام phpMussel من قبل المستخدم هو الفعلي إيداع ملف المسح، ولا ينصح لاستخدام وظائف مصيدة لأغراض أخرى غير honeypotting. افتراضيا، يتم تعطيل هذا الخيار. كاذبة = معطل [الافتراضي]. = الحقيقية تمكين.'; -$phpMussel['lang']['config_general_ipaddr'] = 'أين يمكن العثور على عنوان IP لربط الطلبات؟ (مفيدة للخدمات مثل لايتكلاود و مثلها) الافتراضي = REMOTE_ADDR. تحذير: لا تغير هذا إلا إذا كنت تعرف ما تفعلونه!'; -$phpMussel['lang']['config_general_lang'] = 'تحديد اللغة الافتراضية الخاصة بـ phpMussel.'; -$phpMussel['lang']['config_general_maintenance_mode'] = 'هل تريد تمكين وضع الصيانة؟ True = نعم؛ False = لا [افتراضي]. تعطيل كل شيء بخلاف front-end. قد تكون مفيدة أحيانا عند تحديث نظام إدارة المحتوى والأطر وما إلى ذلك.'; -$phpMussel['lang']['config_general_max_login_attempts'] = 'الحد الأقصى لعدد محاولات تسجيل الدخول (front-end). الافتراضي = 5.'; -$phpMussel['lang']['config_general_numbers'] = 'كيف تفضل الأرقام ليتم عرضها؟ حدد المثال الذي يبدو أكثر صحيح لك.'; -$phpMussel['lang']['config_general_quarantine_key'] = 'phpMussel غير قادرة على الحجر ترفع علم حاول تحميل الملف في عزلة داخل "قبو" phpMussel، إذا كان هذا هو ما تريد أن تفعله. المستخدمين العاديين من phpMussel التي ترغب ببساطة لحماية مواقعها على شبكة الإنترنت أو بيئة استضافة دون وجود أي مصلحة في تحليل عميق أي ترفع علم تحميل الملفات حاول يجب ترك هذه الوظيفة ذوي الاحتياجات الخاصة، ولكن أي المستخدمين المهتمين في مزيد من التحليل للترفع علم حاولت تحميل الملفات للبحث عن البرامج الضارة أو ما شابه مثل هذه الأمور ينبغي أن تمكن هذه الوظيفة. الحجر الصحي لترفع العلم تحميل الملفات حاول يمكن في بعض الأحيان أن تساعد في تصحيح ايجابيات كاذبة، إذا كان هذا هو الشيء الذي كثيرا ما يحدث لك. إلى تعطيل وظيفة العزل، ببساطة مغادرة quarantine_key التوجيه فارغة، أو مسح محتويات هذا التوجيه إذا لم يكن خاليا بالفعل. لتمكين وظيفة العزل، وإدخال قيمة في التوجيه. و quarantine_key هي ميزة أمنية مهمة من وظائف الحجر الصحي المطلوبة كوسيلة لمنع وظيفة الحجر الصحي من أن تستغل من قبل المهاجمين المحتملين، وكوسيلة لمنع أي احتمال تنفيذ البيانات المخزنة داخل الحجر الصحي. و quarantine_key ينبغي أن يعامل بنفس الطريقة التي يعامل بها كلمات السر الخاصة بك: وكلما كان ذلك أفضل، وحراسته مشددة. للحصول على أفضل تأثير، استخدم بالتزامن مع delete_on_sight.'; -$phpMussel['lang']['config_general_quarantine_max_filesize'] = 'الحد الأقصى لحجم الملف المسموح به من الملفات للحجر الصحي. لن يكون الحجر الصحي الملفات أكبر من القيمة المحددة. هذا التوجيه لا يقل أهمية عن وسيلة لجعل الأمر أكثر صعوبة لأي مهاجمين محتملين لإغراق الحجر الصحي الخاص مع البيانات غير المرغوب فيها مما يمكن أن يسبب استخدام البيانات التشغيل بعيدا عن خدمة الاستضافة. الافتراضي = 2MB.'; -$phpMussel['lang']['config_general_quarantine_max_usage'] = 'الحد الأقصى لاستخدام الذاكرة يسمح للحجر الصحي. إذا كان إجمالي الذاكرة المستخدمة من قبل الحجر الصحي تصل هذه القيمة، سيتم حذف أقدم الملفات المعزولة حتى الذاكرة الإجمالية المستخدمة لم تعد تصل هذه القيمة. هذا التوجيه لا يقل أهمية عن وسيلة لجعل الأمر أكثر صعوبة لأي مهاجمين محتملين لإغراق الحجر الصحي الخاص مع البيانات غير المرغوب فيها مما يمكن أن يسبب استخدام البيانات التشغيل بعيدا عن خدمة الاستضافة. الافتراضي = 64MB.'; -$phpMussel['lang']['config_general_scan_cache_expiry'] = 'إلى متى يجب أن phpMussel تخزين نتائج المسح؟ القيمة هي عدد الثواني لتخزين نتائج المسح ل. الافتراضي هو 21600 ثانية (6 ساعات)؛ وقيمة 0 تعطيل التخزين المؤقت نتائج المسح.'; -$phpMussel['lang']['config_general_scan_kills'] = 'اسم الملف من ملف لتسجيل كل سجلات الملفات التي منعت او اوقفت من .تحديد اسم الملف، أو اتركه فارغا لتعطيل.'; -$phpMussel['lang']['config_general_scan_log'] = 'اسم الملف لملف تسجيل جميع نتائج المسح. قم بتعيين اسم الملف، أو اتركه فارغا للتعطيل.'; -$phpMussel['lang']['config_general_scan_log_serialized'] = 'اسم الملف من ملف لتسجيل جميع نتائج المسح إلى (باستخدام تنسيق متسلسل). تحديد اسم الملف، أو اتركه فارغا للتعطيل.'; -$phpMussel['lang']['config_general_statistics'] = 'هل تريد تتبع إحصاءات استخدام phpMussel؟ True = نعم؛ False = لا [افتراضي].'; -$phpMussel['lang']['config_general_timeFormat'] = 'شكل التواريخ المستخدم من قبل phpMussel. ويمكن إضافة خيارات إضافية عند الطلب.'; -$phpMussel['lang']['config_general_timeOffset'] = 'المنطقة الزمنية تعويض في غضون دقائق.'; -$phpMussel['lang']['config_general_timezone'] = 'المنطقة الزمنية.'; -$phpMussel['lang']['config_general_truncate'] = 'اقتطاع ملفات السجل عندما تصل إلى حجم معين؟ القيمة هي الحجم الأقصى في بايت/كيلوبايت/ميغابايت/غيغابايت/تيرابايت الذي قد ينمو ملفات السجل إلى قبل اقتطاعه. القيمة الافتراضية 0KB تعطيل اقتطاع (ملفات السجل يمكن أن تنمو إلى أجل غير مسمى). ملاحظة: ينطبق على ملفات السجل الفردية! ولا يعتبر حجمها جماعيا.'; -$phpMussel['lang']['config_heuristic_threshold'] = 'هناك توقيعات معينة من phpMussel التي تهدف إلى تحديد الصفات المشبوهة والمحتمل أن تكون ضارة من الملفات التي يتم تحميلها دون في أنفسهم تحديد تلك الملفات التي تم تحميلها على وجه التحديد بأنها خبيثة. هذه القيمة "الحد الأقصى " تقول phpMussel ما الحد الأقصى للوزن الكلي من الصفات المشبوهة والمحتمل أن تكون ضارة من الملفات التي يتم تحميلها هذا المسموح به هو قبل تلك الملفات ليتم وضع علامة بأنها خبيثة. تعريف الوزن في هذا السياق هو العدد الإجمالي من الصفات المشبوهة والمحتمل أن تكون ضارة تحديدها. افتراضيا، سيتم تعيين هذه القيمة إلى 3. القيمة المنخفضة عموما سوف يؤدي إلى حدوث أعلى من ايجابيات كاذبة ولكن عددا أكبر من الملفات الخبيثة التي لوحت، في حين أن أعلى قيمة عموما سوف يؤدي إلى حدوث انخفاض من ايجابيات كاذبة ولكن انخفاض عدد الملفات الخبيثة التي توضع. انها عموما من الأفضل ترك هذه القيمة في الافتراضي إلا إذا كنت تعاني من مشاكل المتعلقة بها.'; -$phpMussel['lang']['config_signatures_Active'] = 'قائمة من الملفات توقيع النشطة، محدد بفواصل.'; -$phpMussel['lang']['config_signatures_detect_adware'] = 'هل يجب على توقيعات phpMussel الكشف عن تجسس؟ كاذبة = لا؛ صحيح = نعم [افتراضي].'; -$phpMussel['lang']['config_signatures_detect_deface'] = 'هل يجب على توقيعات phpMussel الكشف عن مهاجمات وdefacers؟ كاذبة = لا؛ صحيح = نعم [افتراضي].'; -$phpMussel['lang']['config_signatures_detect_encryption'] = 'يجب phpMussel كشف ومنع الملفات المشفرة؟ كاذبة = لا؛ صحيح = نعم [افتراضي].'; -$phpMussel['lang']['config_signatures_detect_joke_hoax'] = 'هل يجب على توقيعات phpMussel الكشف عن خدعة البرمجيات الخبيثة / الفيروسات؟ كاذبة = لا؛ صحيح = نعم [افتراضي].'; -$phpMussel['lang']['config_signatures_detect_packer_packed'] = 'هل يجب على توقيعات phpMussel الكشف عن تعبئة والبيانات المعبأة؟ كاذبة = لا؛ صحيح = نعم [افتراضي].'; -$phpMussel['lang']['config_signatures_detect_pua_pup'] = 'هل يجب على توقيعات phpMussel الكشف عن PUAs؟ كاذبة = لا؛ صحيح = نعم [افتراضي].'; -$phpMussel['lang']['config_signatures_detect_shell'] = 'هل يجب على توقيعات phpMussel الكشف عن البرامج النصية قذيفة؟ كاذبة = لا؛ صحيح = نعم [افتراضي].'; -$phpMussel['lang']['config_signatures_fail_extensions_silently'] = 'هل يجب على phpMussel الابلاغ عندما تفقد الملحقات؟ إذا تم تعطيل fail_extensions_silently، وسيتم إبلاغ ملحقات مفقودة على المسح، وإذا تم تمكين fail_extensions_silently، سيتم تجاهل ملحقات المفقودة، مع مسح الإبلاغ عن تلك الملفات أنه لا توجد أي مشاكل. تعطيل هذا التوجيه قد يحتمل زيادة الأمان، ولكن قد يؤدي أيضا إلى زيادة من ايجابيات كاذبة. خطأ = معطل. صحيح = ممكن [افتراضي].'; -$phpMussel['lang']['config_signatures_fail_silently'] = 'هل يجب على phpMussel الابلاغ عندما يتم توقيع ملفات مفقودة أو تالفة؟ إذا كان fail_silently المعوقين، في عداد المفقودين وسيتم الإبلاغ عن ملفات فساد في المسح، وإذا fail_silently تمكين، في عداد المفقودين وسيتم تجاهل ملفات فساد، مع مسح الإبلاغ عن تلك الملفات أنه لا توجد أي مشاكل. وهذا ين بغي عموما أن تترك وحدها إلا إذا كنت تعاني من أعطال أو مشاكل مشابهة. خطأ = معطل. صحيح = ممكن [افتراضي].'; -$phpMussel['lang']['config_template_data_css_url'] = 'ملف الصيغة النموذجية للمواضيع مخصصة يستخدم خصائص CSS الخارجية، في حين أن ملف قالب لموضوع الافتراضي يستخدم خصائص CSS الداخلية. لإرشاد phpMussel لاستخدام ملف النموذجية للمواضيع مخصصة، تحديد عنوان HTTP العام من ملفات CSS موضوع المخصصة لديك باستخدام "css_url" متغير. إذا تركت هذا الحقل فارغا متغير، سوف يقوم phpMussel باستخدام ملف القالب لموضوع التقصير.'; -$phpMussel['lang']['config_template_data_Magnification'] = 'تكبير الخط. افتراضي = 1.'; -$phpMussel['lang']['config_template_data_theme'] = 'الموضوع الافتراضي لاستخدام phpMussel.'; -$phpMussel['lang']['config_urlscanner_cache_time'] = 'متى (بالثواني) يجب التوصل إلى نتائج عمليات بحث API؟ الافتراضي هو 3600 ثانية (1 ساعة).'; -$phpMussel['lang']['config_urlscanner_google_api_key'] = 'العدد الأقصى المسموح به من عمليات بحث واجهة برمجة التطبيقات لأداء في تكرار المسح الفردية.'; -$phpMussel['lang']['config_urlscanner_lookup_hphosts'] = 'تمكين عمليات بحث API إلى API hpHosts.'; -$phpMussel['lang']['config_urlscanner_maximum_api_lookups'] = 'العدد الأقصى المسموح به من عمليات بحث واجهة برمجة التطبيقات لأداء في تكرار المسح الفردية. لأن كل بحث API إضافية سوف يضيف إلى الوقت الإجمالي المطلوب لإكمال كل تكرار المسح، قد ترغب في اشتراط وجود قيود من أجل الإسراع في عملية المسح الشاملة. عند تعيينها إلى 0، سيتم تطبيق الحد الأقصى لا هذا العدد المسموح به. تعيين إلى 10 افتراضيا.'; -$phpMussel['lang']['config_urlscanner_maximum_api_lookups_response'] = 'ماذا تفعل إذا تم تجاوز الحد الأقصى المسموح به من عمليات بحث API؟ = كاذبة لا تفعل شيئا (متابعة المعالجة) [افتراضي]. صحيح = تحديد الملف.'; -$phpMussel['lang']['config_virustotal_vt_public_api_key'] = 'اختياريا، phpMussel غير قادرة على مسح الملفات باستخدام الفيروسات مجموع API كوسيلة لتوفير مستوى تتعزز بشكل كبير من الحماية ضد الفيروسات، و ملفات التجسس، والبرمجيات الخبيثة وغيرها من التهديدات. افتراضيا، ملفات المسح الضوئي باستخدام الفيروسات مجموع API يتم تعطيل. لتمكينه، لا بد من وضع مفتاح API من الفيروسات إجمالي. ويرجع ذلك إلى فائدة كبيرة أن هذا يمكن أن توفر لك، هذا شيء أنا أوصي تمكين. يرجى أن يكون على علم، مع ذلك، أن استخدام الفيروسات مجموع API، التي يجب أن تتوافق مع شروط الخدمة، ويجب أن تلتزم جميع المبادئ التوجيهية حسب وصفه الفيروسات مجموع الوثائق! لا يجوز لك استخدام هذه الميزة التكامل ما لم: لقد قرأت ووافقت على شروط الخدمة من فيروس توتال و API لها. لقد قرأت وفهمت، كحد أدنى، ديباجة الفيروسات وثائق API ملفه مجموع (كل شيء بعد "فايروس توتال V2.0 API العام" ولكن قبل "المحتويات").'; -$phpMussel['lang']['config_virustotal_vt_quota_rate'] = 'استنادا إلى وثائق الفيروسات الكلي API، "فإنه يقتصر على الأكثر 4 طلبات من أي نوع في أي إطار زمني معين 1 دقيقة. إذا قمت بتشغيل honeyclient، مصيدة أو أي أتمتة الآخر الذي يجري لتوفير الموارد اللازمة لفايروس توتال ولا استرداد فقط تقارير يحق لك الحصول على أعلى حصص معدلات الطلب". افتراضيا، سوف phpMussel الالتزام الصارم لهذه القيود، ولكن نظرا لإمكانية هذه الحصص نسبة تجري زيادة، وتقدم هذه التوجيهات اثنين كوسيلة لتتمكن من إرشاد phpMussel على ما الحد الأقصى ينبغي أن تلتزم بها. إلا إذا كنت قد أعطيت تعليمات للقيام بذلك، فإنه من غير المستحسن بالنسبة لك لزيادة هذه القيم و لكن إذا كنت قد واجهت مشاكل تتعلق الوصول الحصص الخاصة بك، وخفض هذه القيم قد يساعد في بعض الأحيان كنت في التعامل مع هذه المشاكل. يتم تحديد الحد الأقصى معدل حسابك عن طلبات "vt_quota_rate" من أي نوع في أي إطار "vt_quota_time" الوقت دقيقة معين.'; -$phpMussel['lang']['config_virustotal_vt_quota_time'] = '(انظر الوصف أعلاه).'; -$phpMussel['lang']['config_virustotal_vt_suspicion_level'] = 'افتراضيا، سوف يقوم phpMussel بتقييد الملفات التي تقوم بمسح باستخدام الفيروسات API الكلي لتلك الملفات التي تعتبرها "المشبوهة". يمكنك ضبط اختياريا هذا التقييد عن طريق تغيير قيمة التوجيه "vt_suspicion_level".'; -$phpMussel['lang']['config_virustotal_vt_weighting'] = 'هل phpMussel يطبق نتائج المسح باستخدام الفيروسات مجموع API كما المكتشفة أو الممكن كشفها؟ يوجد هذا التوجيه لأنه على الرغم من أن مسح ملف باستخدام محركات متعددة (كما فايروس توتال لا) ينبغي أن يؤدي في معدل اكتشاف زيادة (وبالتالي في عدد أكبر من الملفات الخبيثة الوقوع)، فإنه يمكن أن يؤدي أيضا إلى ارتفاع عدد كاذبة الإيجابيات، وبالتالي، في بعض الظروف، فإن نتائج المسح يمكن الاستفادة بشكل أفضل كما على درجة الثقة بدلا من أن تكون نتيجة محددة. إذا تم استخدام قيمة 0، سيتم تطبيق نتائج المسح باستخدام الفيروسات مجموع API كما المكتشفة و بالتالي إذا أي محرك تستخدم من قبل الفيروسات مجموع أعلام الملف تم مسحها ضوئيا بأنها خبيثة، وphpMussel النظر في الملف إلى تكون ضارة. إذا تم استخدام أي قيمة أخرى، سيتم تطبيق نتائج المسح باستخدام الفيروسات مجموع API كما الترجيح الكشف و بالتالي فإن عدد من المحركات المستخدمة من قبل الفيروسات إجمالي هذا العلم الملف تم مسحها ضوئيا بأنها خبيثة سيكون بمثابة نتيجة الثقة (أو الترجيح الكشف) عن ما إذا كان ملف تم مسحها ضوئيا ينبغي النظر الخبيثة التي كتبها phpMussel (القيمة المستخدمة سيمثل الحد الأدنى من الثقة يسجل أو الوزن المطلوب من أجل أن تعتبر ضارة). يتم استخدام قيمة 0 افتراضيا.'; -$phpMussel['lang']['Extended Description: phpMussel'] = 'حزمة الابتدائية (ناقص التوقيعات، وثائق، والتكوين).'; -$phpMussel['lang']['field_activate'] = 'جعله نشطة'; -$phpMussel['lang']['field_clear_all'] = 'امسح الكل'; -$phpMussel['lang']['field_component'] = 'وحدة'; -$phpMussel['lang']['field_create_new_account'] = 'إنشاء حساب جديد'; -$phpMussel['lang']['field_deactivate'] = 'جعلها غير نشطة'; -$phpMussel['lang']['field_delete_account'] = 'حذف حساب'; -$phpMussel['lang']['field_delete_all'] = 'حذف الكل'; -$phpMussel['lang']['field_delete_file'] = 'حذف'; -$phpMussel['lang']['field_download_file'] = 'تحميل'; -$phpMussel['lang']['field_edit_file'] = 'تحرير'; -$phpMussel['lang']['field_false'] = 'False (خاطئة)'; -$phpMussel['lang']['field_file'] = 'ملف'; -$phpMussel['lang']['field_filename'] = 'اسم الملف: '; -$phpMussel['lang']['field_filetype_directory'] = 'مجلد'; -$phpMussel['lang']['field_filetype_info'] = 'ملف {EXT}'; -$phpMussel['lang']['field_filetype_unknown'] = 'غير معروف'; -$phpMussel['lang']['field_install'] = 'تثبيت'; -$phpMussel['lang']['field_latest_version'] = 'احدث اصدار'; -$phpMussel['lang']['field_log_in'] = 'تسجيل الدخول'; -$phpMussel['lang']['field_more_fields'] = 'المزيد من الحقول'; -$phpMussel['lang']['field_new_name'] = 'اسم جديد:'; -$phpMussel['lang']['field_ok'] = 'حسنا'; -$phpMussel['lang']['field_options'] = 'خيارات'; -$phpMussel['lang']['field_password'] = 'كلمه السر'; -$phpMussel['lang']['field_permissions'] = 'أذونات'; -$phpMussel['lang']['field_quarantine_key'] = 'الحجر الصحي مفتاح'; -$phpMussel['lang']['field_rename_file'] = 'إعادة تسمية'; -$phpMussel['lang']['field_reset'] = 'إعادة تعيين'; -$phpMussel['lang']['field_restore_file'] = 'استعادة'; -$phpMussel['lang']['field_set_new_password'] = 'تحديد جديد كلمه السر'; -$phpMussel['lang']['field_size'] = 'الحجم الإجمالي: '; -$phpMussel['lang']['field_size_bytes'] = 'بايت'; -$phpMussel['lang']['field_size_GB'] = 'GB'; -$phpMussel['lang']['field_size_KB'] = 'KB'; -$phpMussel['lang']['field_size_MB'] = 'MB'; -$phpMussel['lang']['field_size_TB'] = 'TB'; -$phpMussel['lang']['field_status'] = 'الحالة'; -$phpMussel['lang']['field_system_timezone'] = 'استخدام المنطقة الزمنية الافتراضية للنظام.'; -$phpMussel['lang']['field_true'] = 'True (صحيح)'; -$phpMussel['lang']['field_uninstall'] = 'الغاء التثبيت'; -$phpMussel['lang']['field_update'] = 'تحديث'; -$phpMussel['lang']['field_update_all'] = 'تحديث الجميع'; -$phpMussel['lang']['field_upload_file'] = 'تحميل ملف جديد'; -$phpMussel['lang']['field_username'] = 'اسم المستخدم'; -$phpMussel['lang']['field_your_version'] = 'الإصدار الخاص بك'; -$phpMussel['lang']['header_login'] = 'الرجاء تسجيل الدخول للمتابعة.'; -$phpMussel['lang']['label_active_config_file'] = 'ملف التكوين النشط: '; -$phpMussel['lang']['label_blocked'] = 'تم حظر التحميلات'; -$phpMussel['lang']['label_branch'] = 'فرع أحدث مستقرة:'; -$phpMussel['lang']['label_events'] = 'مسح الأحداث'; -$phpMussel['lang']['label_flagged'] = 'تم الإبلاغ عن الكائنات'; -$phpMussel['lang']['label_fmgr_cache_data'] = 'بيانات ذاكرة التخزين المؤقت والملفات المؤقتة'; -$phpMussel['lang']['label_fmgr_disk_usage'] = 'phpMussel إستخدام القرص: '; -$phpMussel['lang']['label_fmgr_free_space'] = 'مساحة حرة: '; -$phpMussel['lang']['label_fmgr_total_disk_usage'] = 'إجمالي استخدام القرص: '; -$phpMussel['lang']['label_fmgr_total_space'] = 'إجمالي مساحة القرص: '; -$phpMussel['lang']['label_fmgr_updates_metadata'] = 'تحديثات البيانات الوصفية للمكون'; -$phpMussel['lang']['label_hide'] = 'إخفائه'; -$phpMussel['lang']['label_os'] = 'نظام التشغيل المستخدمة:'; -$phpMussel['lang']['label_other'] = 'آخر'; -$phpMussel['lang']['label_other-Active'] = 'ملفات التوقيع النشطة'; -$phpMussel['lang']['label_other-Since'] = 'تاريخ البدء'; -$phpMussel['lang']['label_php'] = 'النسخة PHP المستخدمة:'; -$phpMussel['lang']['label_phpmussel'] = 'النسخة phpMussel المستخدمة:'; -$phpMussel['lang']['label_quarantined'] = 'تم عزل وحدات التحميل'; -$phpMussel['lang']['label_sapi'] = 'SAPI المستخدمة:'; -$phpMussel['lang']['label_scanned_objects'] = 'الكائنات التي الممسوحة ضوئيا'; -$phpMussel['lang']['label_scanned_uploads'] = 'التحميلات الممسوحة ضوئيا'; -$phpMussel['lang']['label_show'] = 'اظهره'; -$phpMussel['lang']['label_size_in_quarantine'] = 'الحجر الصحي بحجم: '; -$phpMussel['lang']['label_stable'] = 'أحدث مستقرة:'; -$phpMussel['lang']['label_sysinfo'] = 'معلومات النظام:'; -$phpMussel['lang']['label_tests'] = 'اختبارات:'; -$phpMussel['lang']['label_unstable'] = 'أحدث غير مستقرة:'; -$phpMussel['lang']['label_upload_date'] = 'تحميل تاريخ: '; -$phpMussel['lang']['label_upload_hash'] = 'تحميل التجزئة: '; -$phpMussel['lang']['label_upload_origin'] = 'تحميل الأصل: '; -$phpMussel['lang']['label_upload_size'] = 'تحميل بحجم: '; -$phpMussel['lang']['link_accounts'] = 'حسابات'; -$phpMussel['lang']['link_config'] = 'التكوين'; -$phpMussel['lang']['link_documentation'] = 'توثيق'; -$phpMussel['lang']['link_file_manager'] = 'مدير الملفات'; -$phpMussel['lang']['link_home'] = 'الرئيسية'; -$phpMussel['lang']['link_logs'] = 'سجلات'; -$phpMussel['lang']['link_quarantine'] = 'الحجر الصحي'; -$phpMussel['lang']['link_statistics'] = 'الإحصاء'; -$phpMussel['lang']['link_textmode'] = 'تنسيق النص: بسيطتهيئتها'; -$phpMussel['lang']['link_updates'] = 'التحديثات'; -$phpMussel['lang']['link_upload_test'] = 'تحميل اختبار'; -$phpMussel['lang']['logs_logfile_doesnt_exist'] = 'هذا سجل غير موجود!'; -$phpMussel['lang']['logs_no_logfiles_available'] = 'لا سجلات متاح.'; -$phpMussel['lang']['logs_no_logfile_selected'] = 'لا سجلات مختار.'; -$phpMussel['lang']['max_login_attempts_exceeded'] = 'تجاوز الحد الأقصى لعدد محاولات تسجيل الدخول؛ تم رفض الوصول.'; -$phpMussel['lang']['previewer_days'] = 'أيام'; -$phpMussel['lang']['previewer_hours'] = 'ساعات'; -$phpMussel['lang']['previewer_minutes'] = 'الدقائق'; -$phpMussel['lang']['previewer_months'] = 'الشهور'; -$phpMussel['lang']['previewer_seconds'] = 'ثواني'; -$phpMussel['lang']['previewer_weeks'] = 'أسابيع'; -$phpMussel['lang']['previewer_years'] = 'سنوات'; -$phpMussel['lang']['response_accounts_already_exists'] = 'اسم المستخدم موجود بالفعل!'; -$phpMussel['lang']['response_accounts_created'] = 'تم انشاء الحساب بنجاح!'; -$phpMussel['lang']['response_accounts_deleted'] = 'تم حذف الحساب بنجاح!'; -$phpMussel['lang']['response_accounts_doesnt_exist'] = 'حساب غير موجود.'; -$phpMussel['lang']['response_accounts_password_updated'] = 'تم تحديث كلمه السر بنجاح!'; -$phpMussel['lang']['response_activated'] = 'نجحت في جعل نشطة'; -$phpMussel['lang']['response_activation_failed'] = 'فشلت في جعله نشطة!'; -$phpMussel['lang']['response_checksum_error'] = 'خطأ أختباري! تم رفض الملف!'; -$phpMussel['lang']['response_component_successfully_installed'] = 'تم تثبيت الوحدة بنجاح'; -$phpMussel['lang']['response_component_successfully_uninstalled'] = 'تم الغاء تثبيت الوحدة بنجاح'; -$phpMussel['lang']['response_component_successfully_updated'] = 'تم تحديث الوحدة بنجاح'; -$phpMussel['lang']['response_component_uninstall_error'] = 'حدث خطأ أثناء محاولة إلغاء تثبيت الوحدة.'; -$phpMussel['lang']['response_configuration_updated'] = 'تم تحديث التكوين بنجاح'; -$phpMussel['lang']['response_deactivated'] = 'نجحت في جعل غير نشطة'; -$phpMussel['lang']['response_deactivation_failed'] = 'فشلت في جعله غير نشطة!'; -$phpMussel['lang']['response_delete_error'] = 'فشلت في حذف!'; -$phpMussel['lang']['response_directory_deleted'] = 'تم حذف الدليل بنجاح!'; -$phpMussel['lang']['response_directory_renamed'] = 'تم اعادة تسمية الدليل بنجاح!'; -$phpMussel['lang']['response_error'] = 'خطأ'; -$phpMussel['lang']['response_failed_to_install'] = 'فشل التثبيت!'; -$phpMussel['lang']['response_failed_to_update'] = 'فشل التحديث!'; -$phpMussel['lang']['response_file_deleted'] = 'ملف حذف بنجاح!'; -$phpMussel['lang']['response_file_edited'] = 'ملف تعديل بنجاح!'; -$phpMussel['lang']['response_file_renamed'] = 'ملف إعادة تسمية بنجاح!'; -$phpMussel['lang']['response_file_restored'] = 'تمت استعادة الملف بنجاح!'; -$phpMussel['lang']['response_file_uploaded'] = 'ملف تحميلها بنجاح!'; -$phpMussel['lang']['response_login_invalid_password'] = 'فشل تسجيل الدخول! كلمة السر غير صالحة!'; -$phpMussel['lang']['response_login_invalid_username'] = 'فشل تسجيل الدخول! اسم المستخدم غير موجود!'; -$phpMussel['lang']['response_login_password_field_empty'] = 'كلمه السر حقل فارغ!'; -$phpMussel['lang']['response_login_username_field_empty'] = 'اسم المستخدم حقل فارغ!'; -$phpMussel['lang']['response_rename_error'] = 'فشل في إعادة تسمية!'; -$phpMussel['lang']['response_restore_error_1'] = 'أخفق الاستعادة! ملف معطوب!'; -$phpMussel['lang']['response_restore_error_2'] = 'أخفق الاستعادة! الحجر الصحي مفتاح غير صحيح!'; -$phpMussel['lang']['response_statistics_cleared'] = 'تم مسح الإحصاءات.'; -$phpMussel['lang']['response_updates_already_up_to_date'] = 'تحديث غير مطلوب.'; -$phpMussel['lang']['response_updates_not_installed'] = 'وحدة غير مثبت!'; -$phpMussel['lang']['response_updates_not_installed_php'] = 'وحدة غير مثبت (يتطلب PHP {V})!'; -$phpMussel['lang']['response_updates_outdated'] = 'عفا عليها الزمن!'; -$phpMussel['lang']['response_updates_outdated_manually'] = 'عفا عليها الزمن (يرجى تحديث يدويا)!'; -$phpMussel['lang']['response_updates_outdated_php_version'] = 'عفا عليها الزمن (يتطلب PHP {V})!'; -$phpMussel['lang']['response_updates_unable_to_determine'] = 'غير قادر على تحديد.'; -$phpMussel['lang']['response_upload_error'] = 'فشل لتحميل!'; -$phpMussel['lang']['state_complete_access'] = 'الوصول كامل'; -$phpMussel['lang']['state_component_is_active'] = 'وحدة نشطة.'; -$phpMussel['lang']['state_component_is_inactive'] = 'وحدة غير نشطة.'; -$phpMussel['lang']['state_component_is_provisional'] = 'وحدة نشطة جزئيا.'; -$phpMussel['lang']['state_default_password'] = 'تحذير: يستخدم الافتراضي كلمه السر!'; -$phpMussel['lang']['state_logged_in'] = 'حاليا على.'; -$phpMussel['lang']['state_logs_access_only'] = 'سجلات الوصول فقط'; -$phpMussel['lang']['state_maintenance_mode'] = 'تحذير: تم تمكين وضع الصيانة!'; -$phpMussel['lang']['state_password_not_valid'] = ' تحذير: هذا الحساب لا يستخدم كلمه السر صالحة !'; -$phpMussel['lang']['state_quarantine'] = ['هناك ملف %s موجود حاليا في وحدة العزل.', 'هناك ملفات %s موجودة حاليا في وحدة العزل.']; -$phpMussel['lang']['switch-hide-non-outdated-set-false'] = 'لا يخفون غير عفا عليها الزمن'; -$phpMussel['lang']['switch-hide-non-outdated-set-true'] = 'يخفون غير عفا عليها الزمن'; -$phpMussel['lang']['switch-hide-unused-set-false'] = 'لا يخفون غير مستعمل'; -$phpMussel['lang']['switch-hide-unused-set-true'] = 'يخفون غير مستعمل'; -$phpMussel['lang']['tip_accounts'] = 'مرحبا، {username}.
        الصفحة حسابات يسمح لك للسيطرة على الذي يمكن الوصول ألfront-end phpMussel.'; -$phpMussel['lang']['tip_config'] = 'مرحبا، {username}.
        الصفحة التكوين يسمح لك لتعديل التكوين phpMussel عن طريق ألfront-end.'; -$phpMussel['lang']['tip_donate'] = 'phpMussel يتم توفير مجانا، ولكن إذا كنت تريد التبرع للمشروع، يمكنك القيام بذلك عن طريق النقر على زر التبرع.'; -$phpMussel['lang']['tip_file_manager'] = 'مرحبا، {username}.
        مدير الملفات يسمح لك لحذف، تعديل، وتحميل الملفات. استخدام بحذر (هل يمكن كسر التثبيت مع هذا).'; -$phpMussel['lang']['tip_home'] = 'مرحبا، {username}.
        هذا هو الصفحة رئيسية ألfront-end phpMussel. اختر ارتباط من قائمة التنقل على اليسار للمتابعة.'; -$phpMussel['lang']['tip_login'] = 'الافتراضي اسم المستخدم: admin – الافتراضي كلمه السر: password'; -$phpMussel['lang']['tip_logs'] = 'مرحبا، {username}.
        اختار سجلات من القائمة أدناه لعرضها.'; -$phpMussel['lang']['tip_quarantine'] = 'مرحبا، {username}.
        تسرد هذه الصفحة جميع الملفات الموجودة حاليا في وحدة العزل وتسهل إدارة تلك الملفات.'; -$phpMussel['lang']['tip_quarantine_disabled'] = 'ملحوظة: تم تعطيل وحدة العزل حاليا، ولكن يمكن تمكينها عبر صفحة التهيئة.'; -$phpMussel['lang']['tip_see_the_documentation'] = 'راجع وثائق للحصول على معلومات حول مختلف توجيهات التكوين ونيتهم.'; -$phpMussel['lang']['tip_statistics'] = 'مرحبا، {username}.
        تعرض هذه الصفحة بعض إحصاءات الاستخدام الأساسية المتعلقة بتثبيت phpMussel.'; -$phpMussel['lang']['tip_statistics_disabled'] = 'ملاحظة: يتم تعطيل تتبع الإحصاءات حاليا، ولكن يمكن تمكينه عبر صفحة التكوين.'; -$phpMussel['lang']['tip_updates'] = 'مرحبا، {username}.
        الصفحة تحديثات يسمح لك لتثبيت، إلغاء، ولتحديث المكونات المختلفة phpMussel (حزمة الأساسية، التوقيعات، الإضافات، الملفات L10N، إلخ).'; -$phpMussel['lang']['tip_upload_test'] = 'مرحبا، {username}.
        الصفحة تحميل اختبار يحتوي على شكل تحميل الملفات القياسية، مما يسمح لك لاختبار ما إذا كان عادة يكون قد تم حظره ملف بواسطة phpMussel عند محاولة تحميله.'; -$phpMussel['lang']['title_accounts'] = 'phpMussel – حسابات'; -$phpMussel['lang']['title_config'] = 'phpMussel – التكوين'; -$phpMussel['lang']['title_file_manager'] = 'phpMussel – مدير الملفات'; -$phpMussel['lang']['title_home'] = 'phpMussel – الرئيسية'; -$phpMussel['lang']['title_login'] = 'phpMussel – تسجيل الدخول'; -$phpMussel['lang']['title_logs'] = 'phpMussel – سجلات'; -$phpMussel['lang']['title_quarantine'] = 'phpMussel – الحجر الصحي'; -$phpMussel['lang']['title_statistics'] = 'phpMussel – الإحصاء'; -$phpMussel['lang']['title_updates'] = 'phpMussel – التحديثات'; -$phpMussel['lang']['title_upload_test'] = 'phpMussel – تحميل اختبار'; -$phpMussel['lang']['warning'] = 'تحذيرات:'; -$phpMussel['lang']['warning_php_1'] = 'لم يتم دعم إصدار PHP الخاص بك بشكل نشط بعد الآن! يوصى بالتحديث!'; -$phpMussel['lang']['warning_php_2'] = 'إصدار PHP الخاص بك معرض للخطر بشدة! ينصح بشدة تحديث!'; -$phpMussel['lang']['warning_signatures_1'] = 'لا ملفات التوقيع نشطة!'; - -$phpMussel['lang']['info_some_useful_links'] = 'بعض الروابط المفيدة:
          -
        • phpMussel Issues @ GitHub – صفحة المشكلات لphpMussel (الدعم والمساعدة، الخ).
        • -
        • phpMussel @ Spambot Security – منتدى للنقاش ل phpMussel (الدعم والمساعدة، الخ).
        • -
        • phpMussel @ SourceForge – بديلة حمل مرآة للphpMussel.
        • -
        • WebSecTools.com – بعض الأدوات البسيطة ل جعل المواقع آمنة.
        • -
        • ClamavNet – الرئيسية ClamAV (ClamAV® هو محرك مكافحة الفيروسات مفتوحة المصدر للكشف عن أحصنة طروادة والفيروسات، والبرمجيات الخبيثة وغيرها من التهديدات الخبيثة).
        • -
        • SecuriteInfo.com – شركة أمن الكمبيوتر التي توفر التوقيعات التكميلية لكلاماف.
        • -
        • PhishTank – التصيد قاعدة البيانات التي تستخدمها URL الماسح الضوئي phpMussel.
        • -
        • Global PHP Group @ Facebook – PHP مصادر التعلم والمناقشة.
        • -
        • PHP.earth – PHP مصادر التعلم والمناقشة.
        • -
        • VirusTotal – خدمة مجانية لتحليل الملفات وعناوين المواقع التي هي مشبوهة.
        • -
        • Hybrid Analysis – Hybrid Analysis هو خدمة تحليل البرمجيات الخبيثة المجانية التي تقدمها Payload Security.
        • -
        • Malwarebytes – الكمبيوتر المتخصصين لمكافحة البرمجيات الخبيثة.
        • -
        • MalwareTips – مفيدة البرمجيات الخبيثة المنتديات مناقشة مركزة.
        • -
        • Vulnerability Charts – يسرد نسخ آمنة وغير آمنة من مختلف الحزم (PHP، HHVM، إلخ).
        • -
        • Compatibility Charts – قوائم معلومات التوافق لمختلف الحزم (CIDRAM، phpMussel، إلخ).
        • -
        '; diff --git a/libraries/plugins/phpMussel/vault/lang/lang.ar.php b/libraries/plugins/phpMussel/vault/lang/lang.ar.php deleted file mode 100644 index aadb57d..0000000 --- a/libraries/plugins/phpMussel/vault/lang/lang.ar.php +++ /dev/null @@ -1,130 +0,0 @@ -Startseite | Ausloggen'; -$phpMussel['lang']['bNav_logout'] = 'Ausloggen'; -$phpMussel['lang']['config_attack_specific_archive_file_extensions'] = 'Erkannte Archiv-Dateierweiterungen (Format ist CSV; nur bei Problemen hinzufügen oder entfernen; unnötiges Entfernen könnte Fehlalarme für Archive auslösen, unnötiges Hinzufügen fügt das zur Whitelist hinzu, was vorher als möglicher Angriff definiert wurde; Ändern Sie diese Liste äußerst vorsichtig; Beachten Sie, dass dies keinen Einfluss darauf hat, wozu Archive fähig sind und nicht auf Inhaltsebene analysiert werden können). Diese Liste enthält die Archivformate, die am häufigsten von der Mehrzahl der Systeme und CMS verwendet werden, ist aber absichtlich nicht vollständig.'; -$phpMussel['lang']['config_attack_specific_block_control_characters'] = 'Sollen Dateien, welche Steuerzeichen (andere als Newline/Zeilenumbruch) enthalten, blockiert werden? ([\x00-\x08\x0b\x0c\x0e\x1f\x7f]) Sofern Sie NUR reinen Text hochladen, können Sie diese Option aktivieren, um Ihrem System zusätzlichen Schutz zu bieten. Sollten Sie anderes als reinen Text hochladen, werden bei aktivierter Option Fehlalarme ausgelöst. False = Nicht blockieren [Standardeinstellung]; True = Blockieren.'; -$phpMussel['lang']['config_attack_specific_chameleon_from_exe'] = 'Suche nach ausführbaren Headern in Dateien, die weder ausführbar noch erkannte Archive sind und nach ausführbaren Dateien, deren Header nicht korrekt sind. False = Deaktiviert; True = Aktiviert.'; -$phpMussel['lang']['config_attack_specific_chameleon_from_php'] = 'Suche nach PHP-Headern in Dateien, die weder PHP-Dateien noch erkannte Archive sind. False = Deaktiviert; True = Aktiviert.'; -$phpMussel['lang']['config_attack_specific_chameleon_to_archive'] = 'Suche nach Archiven, deren Header nicht korrekt sind (Unterstützt: BZ, GZ, RAR, ZIP, RAR, GZ). False = Deaktiviert; True = Aktiviert.'; -$phpMussel['lang']['config_attack_specific_chameleon_to_doc'] = 'Suche nach Office-Dokumenten, deren Header nicht korrekt sind (Unterstützt: DOC, DOT, PPS, PPT, XLA, XLS, WIZ). False = Deaktiviert; True = Aktiviert.'; -$phpMussel['lang']['config_attack_specific_chameleon_to_img'] = 'Suche nach Bildern, deren Header nicht korrekt sind (Unterstützt: BMP, DIB, PNG, GIF, JPEG, JPG, XCF, PSD, PDD, WEBP). False = Deaktiviert; True = Aktiviert.'; -$phpMussel['lang']['config_attack_specific_chameleon_to_pdf'] = 'Suche nach PDF-Dateien, deren Header nicht korrekt sind. False = Deaktiviert; True = Aktiviert.'; -$phpMussel['lang']['config_attack_specific_corrupted_exe'] = 'Defekte Dateien und Parse-Errors. False = Ignorieren; True = Blockieren [Standardeinstellung]. Soll auf potentiell defekte ausführbare Dateien geprüft und diese blockiert werden? Oftmals (aber nicht immer), wenn bestimmte Aspekte einer PE-Datei beschädigt sind oder nicht korrekt verarbeitet werden können, ist dies ein Hinweis auf eine infizierte Datei. Viele Antiviren-Programme nutzen verschiedene Methoden, um Viren in solchen Dateien zu erkennen, sofern sich der Programmierer eines Virus dieser Tatsache bewußt ist, wird er versuchen, diese Maßnahmen zu verhindern, damit der Virus unentdeckt bleibt.'; -$phpMussel['lang']['config_attack_specific_decode_threshold'] = 'Schwelle der Menge der Rohdaten, die durch den Decode-Befehl erkannt werden sollen (sofern während des Scanvorgangs spürbare Performance-Probleme auftreten). Standardeinstellung ist 512KB. Null oder ein Null-Wert deaktiviert die Beschränkung (Entfernen aller solcher Einschränkungen basierend auf die Dateigröße).'; -$phpMussel['lang']['config_attack_specific_scannable_threshold'] = 'Schwelle der Menge der Rohdaten, die phpMussel lesen und scannen darf (sofern während des Scanvorgangs spürbare Performance-Probleme auftreten). Standardeinstellung ist 32MB. Null oder ein Null-Wert deaktiviert die Beschränkung. Generell sollte dieser Wert nicht kleiner sein als die durchschnittliche Dateigröße von Datei-Uploads, die Sie auf Ihrem Server oder Ihrer Website erwarten, sollte nicht größer sein als die Richtlinie filesize_limit und sollte nicht mehr als ein Fünftel der Gesamtspeicherzuweisung für PHP in der Konfigurationsdatei "php.ini" sein. Diese Richtlinie verhindert, dass phpMussel zu viel Speicher benutzt (was phpMussel daran hindern würde, einen Scan ab einer bestimmten Dateigröße erfolgreich durchzuführen).'; -$phpMussel['lang']['config_compatibility_ignore_upload_errors'] = 'Diese Direktive sollte generell AUS geschaltet bleiben sofern es nicht für die korrekte Funktion von phpMussel auf Ihrem System benötigt wird. Normalerweise, sobald phpMussel bei AUS geschalteter Direktive ein Element in $_FILES array() erkennt, wird es beginnen, die Dateien, die diese Elemente repräsentieren, zu überprüfen, sollten diese Elemente leer sein, gibt phpMussel eine Fehlermeldung zurück. Dies ist das normale Verhalten von phpMussel. Bei einigen CMS werden allerdings als normales Verhalten leere Elemente in $_FILES zurückgegeben oder Fehlermeldungen ausgelöst, sobald sich dort keine leeren Elemente befinden, in diesem Fall tritt ein Konflikt zwischen dem normalen Verhalten von phpMussel und dem CMS auf. Sollte eine solche Konstellation bei Ihrem CMS zutreffen, so stellen Sie diese Option AN, phpMussel wird somit nicht nach leeren Elementen suchen, Sie bei einem Fund ignorieren und keine zugehörigen Fehlermeldungen ausgeben, der Request zum Seitenaufruf kann somit fortgesetzt werden. False = AUS/OFF; True = AN/ON.'; -$phpMussel['lang']['config_compatibility_only_allow_images'] = 'Wenn Sie nur Bilder erwarten, die auf Ihr System oder CMS hochgeladen werden oder nur Bilder und keine anderen Dateien als Upload erlauben oder benötigen, so sollte diese Direktive aktiviert werden (ON), ansonsten deaktiviert bleiben (OFF). Ist diese Direktive aktiviert, wird phpMussel alle Uploads, die keine Bilddateien sind, blockieren, ohne sie zu scannen. Dies kann die Verarbeitungszeit und Speichernutzung reduzieren, sobald andere Nicht-Bilddateien hochgeladen werden. False = AUS/OFF; True = AN/ON.'; -$phpMussel['lang']['config_files_block_encrypted_archives'] = 'Verschlüsselte Archive erkennen und blockieren? Denn phpMussel ist nicht in der Lage, die Inhalte von verschlüsselten Archiven zu scannen. Es ist möglich, dass Archiv-Verschlüsselung von Angreifern zum Umgehen von phpMussel, Antiviren-Scanner und weiterer solcher Schutzlösungen verwendet wird. Die Anweisung, dass phpMussel verschlüsselte Archive blockiert kann möglicherweise helfen, die Risiken, die mit dieser Möglichkeit verbunden sind, zu verringern. False = Nein; True = Ja [Standardeinstellung].'; -$phpMussel['lang']['config_files_check_archives'] = 'Soll der Inhalt von Archiven überprüft werden? False = Nein (keine Überprüfung); True = Ja (wird überprüft) [Standardeinstellung]. Zur Zeit wird NUR die Überprüfung von BZ/BZIP2, GZ/GZIP, LZF, PHAR, TAR und ZIP Archiven unterstützt (Überprüfung von RAR, CAB, 7z usw. wird zur Zeit NICHT unterstützt). Diese Funktion ist nicht sicher! Es wird dringend empfohlen, diese Funktion aktiviert zu lassen, es kann jedoch nicht garantiert werden, dass alles entdeckt wird. Die Archivüberprüfung ist derzeit nicht rekursiv für PHAR-Archive oder ZIP-Archive.'; -$phpMussel['lang']['config_files_filesize_archives'] = 'Soll das Blacklisting/Whitelisting der Dateigröße auf den Inhalt des Archivs übertragen werden? False = Nein (alles nur in die Greylist aufnehmen); True = Ja [Standardeinstellung].'; -$phpMussel['lang']['config_files_filesize_limit'] = 'Begrenzung der Dateigröße in KB. 65536 = 64MB [Standardeinstellung]; 0 = Keine Begrenzung (wird immer zur Greylist hinzugefügt), jeder (positive) numerische Wert wird akzeptiert. Dies ist nützlich, wenn Ihre PHP-Konfiguration den verfügbaren Speicherverbrauch je Prozess einschränkt oder die Dateigröße von Uploads begrenzt.'; -$phpMussel['lang']['config_files_filesize_response'] = 'Handhabung von Dateien, die die Begrenzung der Dateigröße (sofern angegeben) überschreiten. False = Hinzufügen zur Whitelist; True = Hinzufügen zur Blacklist [Standardeinstellung].'; -$phpMussel['lang']['config_files_filetype_archives'] = 'Soll das Blacklisting/Whitelisting des Dateityps auf den Inhalt des Archivs übertragen werden? False = Nein (alles nur in die Greylist aufnehmen) [Standardeinstellung]; True = Ja.'; -$phpMussel['lang']['config_files_filetype_blacklist'] = 'Blacklist:'; -$phpMussel['lang']['config_files_filetype_greylist'] = 'Greylist:'; -$phpMussel['lang']['config_files_filetype_whitelist'] = 'Sofern Ihr System spezielle Dateitypen im Upload erlaubt oder komplett verweigert, so unterteilen Sie diese Dateitypen in Whitelists, Blacklists oder Greylists, um den Scanvorgang zu beschleunigen, indem diese Dateitypen übersprungen werden. Format ist CSV (comma separated values, Komma-getrennte Werte). Möchten Sie lieber alles überprüfen lassen, so lassen Sie die Variable(n) leer; Dies deaktiviert die Whitelist/Blacklist/Greylist. Logische Reihenfolge der Verarbeitung ist: Wenn der Dateityp in der Whitelist ist, scanne und blockieren nicht die Datei, und überprüfe nicht wenn die Datei in der Whitelist oder in der Greylist ist. Wenn der Dateityp in der Blacklist ist, scanne nicht die Datei aber blockieren sie trotzdem, und überprüfe nicht wenn die Datei in der Greylist ist. Wenn die Greylist leer ist oder wenn die Greylist nicht leer ist und der Dateityp in der Greylist ist, scanne die Datei wie standardmäßig eingestellt ist und stelle fest, ob diese blockiert werden soll, basierend auf dem Scan, aber wenn die Greylist nicht leer ist und der Dateityp nicht in der Greylist ist, behandel die Datei als ob sie in der Blacklist ist, scanne sie nicht aber blockiere sie trotzdem. Whitelist:'; -$phpMussel['lang']['config_files_max_recursion'] = 'Maximale Grenze der Rekursionstiefe von Archiven. Standardwert = 10.'; -$phpMussel['lang']['config_files_max_uploads'] = 'Maximale erlaubte Anzahl zu überprüfender Dateien während eines Dateiuploads bevor der Scan abgebrochen und der Nutzer darüber informiert wird, dass er zu viele Dateien auf einmal hochgeladen hat. Bietet einen Schutz gegen den theoretischen Angriff eines DDoS auf Ihr System oder CMS, indem der Angreifer phpMussel überlastet und den PHP-Prozess zum Stillstand bringt. Empfohlen: 10. Sie können den Wert abhängig von Ihrer Hardware erhöhen oder senken. Beachten Sie, dass dieser Wert nicht den Inhalt von Archiven berücksichtigt.'; -$phpMussel['lang']['config_general_cleanup'] = 'Löscht die Scriptvariablen und den Cache nach der Ausführung. False = Nicht löschen; True = Löschen [Standardeinstellung]. Sollten Sie das Script nach der Überprüfung des Uploads nicht mehr nutzen, stellen Sie diese Option auf true, um die Speichernutzung zu minimieren. Verwenden Sie das Script noch für weitere Zwecke, stellen Sie die Option auf false, um unnötiges mehrfaches Einlesen der Daten in den Speicher zu vermeiden. Normalerweise sollte diese Option auf true gesetzt werden, allerdings können Sie das Script dann nur zur Dateiüberprüfung verwenden. Kein Einfluss im CLI-Modus.'; -$phpMussel['lang']['config_general_default_algo'] = 'Definiert den Algorithmus für alle zukünftigen Passwörter und Sitzungen. Optionen: PASSWORD_DEFAULT (Standardeinstellung), PASSWORD_BCRYPT, PASSWORD_ARGON2I (erfordert PHP >= 7.2.0).'; -$phpMussel['lang']['config_general_delete_on_sight'] = 'Diese Option weist das Script an, Dateien während eines Scans sofort zu löschen, wenn ein Erkennungsmerkmal, ob durch Signaturen oder andere Methoden, zutrifft. Dateien, die als nicht infiziert eingestuft werden, werden nicht berührt. Im Falle von Archiven wird das gesamte Archiv gelöscht, auch wenn nur eine einzige Datei im Archiv infiziert sein sollte. Normalerweise ist es bei einem Dateiupload nicht notwendig, diese Option zu aktivieren, da PHP nach der Ausführung von Scripten den Inhalt vom Cache löscht, d.h. PHP löscht jede Datei, die über den Server hochgeladen wird, sofern Sie nicht verschoben, kopiert oder bereits gelöscht wurde. Diese Option wurde als zusätzliches Mass an Sicherheit hinzugefügt, außerdem für Systeme, deren PHP-Installation nicht dem üblichen Verhalten entspricht. False = Nach der Überprüfung wird die Datei so belassen [Standardeinstellung]; True = Nach der Überprüfung wird die Datei sofort gelöscht, sofern Sie infiziert ist.'; -$phpMussel['lang']['config_general_disable_cli'] = 'CLI-Modus deaktivieren? CLI-Modus ist standardmäßig aktiviert, kann aber manchmal bestimmte Test-Tools (PHPUnit zum Beispiel) und andere CLI-basierte Anwendungen beeinträchtigen. Wenn du den CLI-Modus nicht deaktiveren musst, solltest du diese Anweisung ignorieren. False = CLI-Modus aktivieren [Standardeinstellung]; True = CLI-Modus deaktivieren.'; -$phpMussel['lang']['config_general_disable_frontend'] = 'Front-End-Access deaktivieren? Front-End-Access kann machen phpMussel einfacher zu handhaben, aber es kann auch ein potentielles Sicherheitsrisiko sein. Es wird empfohlen, wenn möglich, phpMussel über die Back-End-Access zu verwalten, aber Front-End-Access vorgesehen ist, für wenn es nicht möglich ist. Halten Sie es deaktiviert außer wenn Sie es brauchen. False = Front-End-Access aktivieren; True = Front-End-Access deaktivieren [Standardeinstellung].'; -$phpMussel['lang']['config_general_disable_webfonts'] = 'Web-Fonts deaktivieren? True = Ja; False = Nein [Standardeinstellung].'; -$phpMussel['lang']['config_general_enable_plugins'] = 'Aktivieren Sie die Unterstützung für phpMussel Plugins? False = Nein; True = Ja [Standardeinstellung].'; -$phpMussel['lang']['config_general_forbid_on_block'] = 'Zurückgegebener 403-HTTP-Header bei einem blockierten Dateiupload. False = Nein (200); True = Ja (403) [Standardeinstellung].'; -$phpMussel['lang']['config_general_FrontEndLog'] = 'Datei für die Protokollierung von Front-End Einloggen-Versuchen. Geben Sie einen Dateinamen an oder lassen Sie die Option zum Deaktivieren leer.'; -$phpMussel['lang']['config_general_honeypot_mode'] = 'Ist der Honeypot-Modus aktiviert, wird phpMussel jede Datei aus dem Dateiupload isolieren, ohne Rücksicht darauf zu nehmen, ob diese Dateien Signaturen enthalten, es findet auch keine weitere Überprüfung statt. Diese Funktionalität dient ausschließlich dem Zweck der Viren- und Malwareforschung, es wird ausdrücklich nicht empfohlen, phpMussel mit dieser Funktion zum Zwecke der Dateiüberprüfung von Uploads oder anderen Zwecken außer "Honeypotting" zu verwenden. Standardmäßig ist diese Funktion deaktiviert. False = Deativiert [Standardwert]; True = Aktiviert.'; -$phpMussel['lang']['config_general_ipaddr'] = 'Ort der IP-Adresse der aktuellen Verbindung im gesamten Datenstrom (nützlich für Cloud-Services) Standardeinstellung = REMOTE_ADDR. Achtung: Ändern Sie diesen Wert nur wenn Sie wissen was Sie tun!'; -$phpMussel['lang']['config_general_lang'] = 'Gibt die Standardsprache für phpMussel an.'; -$phpMussel['lang']['config_general_maintenance_mode'] = 'Wartungsmodus aktivieren? True = Ja; False = Nein [Standardeinstellung]. Deaktiviert alles andere als das Front-End. Manchmal nützlich für die Aktualisierung Ihrer CMS, Frameworks, usw.'; -$phpMussel['lang']['config_general_max_login_attempts'] = 'Maximale Anzahl der Versucht zu einloggen (Front-End). Standardeinstellung = 5.'; -$phpMussel['lang']['config_general_numbers'] = 'Wie willst du Nummern anzeigen? Wählen Sie das Beispiel aus, das Ihnen am besten entspricht.'; -$phpMussel['lang']['config_general_quarantine_key'] = 'phpMussel ist in der Lage, Versuche von Datei-Uploads in einem Quarantäne-Verzeichnis zu isolieren, sofern Sie dies tun wollen. Nutzer, die nur daran interessiert sind, ihre Webauftritte oder ihre Hosting-Umgebung zu schützen ohne das Interesse, die markierten Dateien weitergehend zu untersuchen, sollten diese Funktionalität deaktivieren, Nutzer, die diese Dateien zur Ananlyse auf Malware o.ä. benötigen, sollten diese Funktion aktivieren. Die Isolation von markierten Dateien kann manchmal auch bei der Fehlersuche von Fehlalarmen helfen, wenn dies häufiger bei Ihnen auftritt. Um die Quarantänefunktion zu deaktivieren, lassen Sie die Richtlinie quarantine_key leer oder löschen Sie den Inhalt dieser Richtlinie, wenn sie nicht bereits leer ist. Um die Quarantänefunktion zu aktivieren, geben Sie einen Wert ein. Der quarantine_key ist ein wichtiges Sicherheitsmerkmal der Quarantänfunktionen, um zu verhindern, dass die Quarantänefunktionen einem Exploit ausgesetzt wird und gespeicherte Daten in der Quarantäneumgebung ausgeführt werden können. Der Wert des quarantine_key sollte so behandelt werden, wie Ihre Passwörter: Je länger, desto besser, und halten Sie sie geheim. Optimal in Verbindung mit delete_on_sight.'; -$phpMussel['lang']['config_general_quarantine_max_filesize'] = 'Die maximal zulässige Dateigröße von Dateien, die in der Quarantäne isoliert werden sollen. Dateien, die größer sind als der angegebene Wert, werden NICHT im Quarantäneverzeichnis gespeichert. Diese Richtlinie ist wichtig, um es einem potentiellen Angreifer zu erschweren, die Quarantäne -und somit Ihren zugesicherten Speicher auf Ihrem Hostservice- mit unerwünschten Daten zu überfluten. Standardeinstellung = 2MB.'; -$phpMussel['lang']['config_general_quarantine_max_usage'] = 'Die maximal zulässige Speichernutzung der Quarantäne. Erreicht die Geamtgröße der Dateien in der Quarantäne diesen Wert, werden die ältesten Dateien in der Quarantäne gelöscht, bis der Wert unterschritten wird. Diese Richtlinie ist wichtig, um es einem potentiellen Angreifer zu erschweren, die Quarantäne -und somit Ihren zugesicherten Speicher auf Ihrem Hostservice- mit unerwünschten Daten zu überfluten. Standardwert = 64MB.'; -$phpMussel['lang']['config_general_scan_cache_expiry'] = 'Für wie lange soll phpMussel die Scan-Ergebnisse zwischenspeichern? Wert entspricht der Anzahl Sekunden, wie lange die Scan-Ergebnisse zwischengespeichert werden. Standard ist 21600 Sekunden (6 Stunden); Ein Wert von 0 wird das Zwischenspeichern von Scan-Ergebnissen deaktivieren.'; -$phpMussel['lang']['config_general_scan_kills'] = 'Name einer Datei zum Aufzeichnen aller blockierten Uploads. Geben Sie einen Dateinamen an oder lassen Sie die Option zum Deaktivieren leer.'; -$phpMussel['lang']['config_general_scan_log'] = 'Name einer Datei zum Aufzeichnen aller Resultate von Überprüfungen. Geben Sie einen Dateinamen an oder lassen Sie die Option zum Deaktivieren leer.'; -$phpMussel['lang']['config_general_scan_log_serialized'] = 'Name einer Datei zum Aufzeichnen aller Resultate von Überprüfungen (Format ist serialisiert). Geben Sie einen Dateinamen an oder lassen Sie die Option zum Deaktivieren leer.'; -$phpMussel['lang']['config_general_statistics'] = 'phpMussel-Nutzungsstatistiken verfolgen? True = Ja; False = Nein [Standardeinstellung].'; -$phpMussel['lang']['config_general_timeFormat'] = 'Das Datumsformat verwendet von phpMussel. Zusätzliche Optionen können auf Anfrage hinzugefügt werden.'; -$phpMussel['lang']['config_general_timeOffset'] = 'Zeitzonenversatz in Minuten.'; -$phpMussel['lang']['config_general_timezone'] = 'Ihre Zeitzone.'; -$phpMussel['lang']['config_general_truncate'] = 'Trunkate Protokolldateien, wenn sie eine bestimmte Größe erreichen? Wert ist die maximale Größe in B/KB/MB/GB/TB, die eine Protokolldatei wachsen kann, bevor sie trunkiert wird. Der Standardwert von 0KB deaktiviert die Trunkierung (Protokolldateien können unbegrenzt wachsen). Hinweis: Gilt für einzelne Protokolldateien! Die Größe der Protokolldateien gilt nicht als kollektiv.'; -$phpMussel['lang']['config_heuristic_threshold'] = 'Es gibt bestimmte Signaturen in phpMussel, die dazu dienen, verdächtige und potenziell bösartige Eigenschaften von hochgeladenen Dateien zu identifizieren, ohne diese Dateien an sich zu überprüfen und als bösartig zu identifizieren. Diese Direktive teilt phpMussel mit, welche Gewichtung von verdächtigen und potenziell bösartigen Eigenschaften zulässig ist, bevor diese Dateien als bösartig gekennzeichnet werden. Die Definition des Gewichts ist in diesem Zusammenhang die Gesamtzahl der verdächtigen und potenziell bösartigen Eigenschaften. Standardwert ist 3. Ein niedriger Wert in der Regel führt zu einem vermehrten Auftreten von Fehlalarmen und eine größere Anzahl von schädlichen Dateien werden erkannt, während ein höherer Wert weniger Fehlalarme auslöst und eine geringere Anzahl von schädlichen Dateien markiert werden. Dieser Wert sollte so belassen werden, es sei denn, Sie erkennen Probleme, die durch diese Einstellung hervorgerufen werden.'; -$phpMussel['lang']['config_signatures_Active'] = 'Eine Liste der aktiven Signaturdateien, die durch Kommas getrennt sind.'; -$phpMussel['lang']['config_signatures_detect_adware'] = 'Soll phpMussel Signaturen für die Erkennung von Adware parsen? False = Nein; True = Ja [Standardeinstellung].'; -$phpMussel['lang']['config_signatures_detect_deface'] = 'Soll phpMussel Signaturen für die Erkennung von Defacements und Defacer parsen? False = Nein; True = Ja [Standardeinstellung].'; -$phpMussel['lang']['config_signatures_detect_encryption'] = 'Soll phpMussel verschlüsselte Dateien erkennen und blockieren? False = Nein; True = Ja [Standardeinstellung].'; -$phpMussel['lang']['config_signatures_detect_joke_hoax'] = 'Soll phpMussel Signaturen für die Erkennung von Scherz/Fake-Malware/Viren parsen? False = Nein; True = Ja [Standardeinstellung].'; -$phpMussel['lang']['config_signatures_detect_packer_packed'] = 'Soll phpMussel Signaturen für die Erkennung von Packern und komprimierten Daten parsen? False = Nein; True = Ja [Standardeinstellung].'; -$phpMussel['lang']['config_signatures_detect_pua_pup'] = 'Soll phpMussel Signaturen für die Erkennung von PUAs/PUPs parsen? False = Nein; True = Ja [Standardeinstellung].'; -$phpMussel['lang']['config_signatures_detect_shell'] = 'Soll phpMussel Signaturen für die Erkennung von Shell-Scripten parsen? False = Nein; True = Ja [Standardeinstellung].'; -$phpMussel['lang']['config_signatures_fail_extensions_silently'] = 'Soll phpMussel melden, wenn Dateierweiterungen fehlen? Wenn fail_extensions_silently deaktiviert ist, werden fehlende Dateierweiterungen beim Scannen gemeldet und wenn fail_extensions_silently aktiviert ist, werden fehlende Dateierweiterungen ignoriert und beim Scan gemeldet, dass es mit diesen Dateien keine Probleme gibt. Das Deaktivieren dieser Anweisung kann möglicherweise deine Sicherheit erhöhen, kann aber auch zu mehr Falschmeldungen führen. False = Deaktiviert; True = Aktiviert [Standardeinstellung].'; -$phpMussel['lang']['config_signatures_fail_silently'] = 'Reaktion von phpMussel auf fehlende oder defekte Signaturen. Ist fail_silently deaktiviert, werden fehlende oder defekte Signaturen während des Scanvorgangs gemeldet, ist fail_silently aktiviert, werden fehlende oder defekte Signaturen ignoriert, ohne dass entsprechende Probleme gemeldet werden. Diese Option sollte so belassen werden, es sei denn, Sie erwarten Abstürze oder ähnliches. False = Deaktiviert; True = Aktiviert [Standardeinstellung].'; -$phpMussel['lang']['config_template_data_css_url'] = 'Die Template-Datei für benutzerdefinierte Themes verwendet externe CSS-Regeln, wobei die Template-Datei für das normale Theme interne CSS-Regeln verwendet. Um phpMussel anzuweisen, die Template-Datei für benutzerdefinierte Themes zu verwenden, geben Sie die öffentliche HTTP-Adresse von den CSS-Dateien des benutzerdefinierten Themes mit der css_url-Variable an. Wenn Sie diese Variable leer lassen, wird phpMussel die Template-Datei für das normale Theme verwenden.'; -$phpMussel['lang']['config_template_data_Magnification'] = 'Schriftvergrößerung. Standardeinstellung = 1.'; -$phpMussel['lang']['config_template_data_theme'] = 'Standard-Thema für phpMussel verwenden.'; -$phpMussel['lang']['config_urlscanner_cache_time'] = 'Wie lange (in Sekunden) sollen die Ergebnisse von API-Abfragen zwischengespeichert werden? Standardeinstellung ist 3600 Sekunden (1 Stunde).'; -$phpMussel['lang']['config_urlscanner_google_api_key'] = 'Aktiviert API-Abfragen zur Google Safe Browsing API wenn der benötigte API-Schlüssel festgelegt ist.'; -$phpMussel['lang']['config_urlscanner_lookup_hphosts'] = 'Aktiviert API-Abfragen zur hpHosts API wenn der Wert auf true gesetzt ist.'; -$phpMussel['lang']['config_urlscanner_maximum_api_lookups'] = 'Die maximal erlaubte Anzahl von API-Abfragen die bei jedem Scan-Durchgang durchgeführt werden. Weil jede zusätzliche API-Abfrage die Zeit für einen Scan-Durchgang erhöht, wollen Sie unter Umständen ein Limit festlegen, um den gedamten Scan-Prozess zu beschleunigen. Wenn 0 eingestellt wird, wird kein Limit angewendet. Standardmäßig ist der Wert auf 10 gesetzt.'; -$phpMussel['lang']['config_urlscanner_maximum_api_lookups_response'] = 'Was soll passieren, wenn die maximale Anzahl der erlaubten API-Abfragen erreicht wird? False = Nichts (Verarbeitung fortführen) [Standardeinstellung]; True = Markiere/blockiere die Datei.'; -$phpMussel['lang']['config_virustotal_vt_public_api_key'] = 'Optional, phpMussel kann Dateien mit der Virus Total API scannen, um einen noch besseren Schutz gegen Viren, Trojaner, Malware und andere Bedrohungen zu bieten. Standardmäßig ist das Scannen von Dateien mit der Virus Total API deaktiviert. Um es zu aktivieren, wird ein API Schlüssel von Virus Total benötigt. Wegen dem großen Vorteil den dir das bietet, empfehle ich die Aktivierung. Bitte sei dir bewusst, um die Virus Total API zu nutzen, dass du deren Nutzungsbedingungen zustimmen und dich an alle Richtlinien halten musst, wie es in der Virus Total Dokumentation beschrieben ist! Du darfst diese Integrations-Funktion nicht verwenden AUSSER: Du hast die Nutzungsbedingungen von Virus Total und der API gelesen und stimmst diesen zu. Du hast, zu einem Minimum, das Vorwort von der Virus Total Public API Dokumentation gelesen und verstanden (alles nach "Virus Total Public API v2.0" aber vor "Contents").'; -$phpMussel['lang']['config_virustotal_vt_quota_rate'] = 'Laut der Virus Total API Dokumentation, "ist diese auf 4 Anfragen irgendeiner Art in einer 1 Minuten Zeitspanne limitiert. Falls du einen Honeyclient, Honeypot oder einen andere Automatisierung verwendest, was etwas zu VirusTotal beiträgt und nicht nur Berichte abruft, bist du für ein höheres Limit berechtigt". Standardmäßig wird sich phpMussel strikt daran halten, da aber diese Limits erhöht werden können, stehen dir diese zwei Direktiven zur Verfügung um phpMussel anzuweisen, an welches Limit es sich halten soll. Außer du bist dazu aufgefordert, ist es nicht empfohlen diese Werte zu erhöhen. Solltest du aber Probleme bezogen auf das Erreichen des Limits haben, SOLLTE das Verringern dieser Werte manchmal helfen. Dein Limit wird festgelegt als vt_quota_rate Anfragen jeder Art in jeder vt_quota_time Minuten Zeitspanne.'; -$phpMussel['lang']['config_virustotal_vt_quota_time'] = '(Siehe Beschreibung oben).'; -$phpMussel['lang']['config_virustotal_vt_suspicion_level'] = 'phpMussel wird standardmäßig die mit der Virus Total API zu scannenden Dateien auf Dateien eisnchränken, die es als "verdächtig" betrachtet. Du kannst optional diese Einschränkung durch Änderung des Wertes der vt_suspicion_level Direktive anpassen.'; -$phpMussel['lang']['config_virustotal_vt_weighting'] = 'Soll phpMussel die Ergebnisse des Scans mit der Virus Total API als Erkennungen oder Erkennungs-Gewichtung anwenden? Diese Direktive existiert, weil das Scannen einer Datei mit mehreren Engines (wie es Virus Total macht) in einer höheren Erkennungsrate resultieren sollte (und somit eine größere Anzahl schädlicher Dateien erwischt werden), dies kann aber zu in einer höheren Anzahl von Falschmeldungen führen. Unter manchen Umständen würden die Ergebnisse des Scans besser als Vertrauens-Wert als ein eindeutiges Ergebnis verwendet werden. Wenn der Wert 0 verwendet wird, werden die Ergebnisse des Scans als Erkennungen angewendet und somit wird phpMussel, falls irgendeine von Virus Total verwendete Engine die gescannte Datei als schädlich markiert, die Datei als schädlich betrachten. Wird ein anderer Wert verwendet, werden die Ergebnisse des Scans mit der Virus Total API als Erkennungs-Gewichtung angewendet. Die Anzahl der von Virus Total verwendeten Engines, welche die Datei als schädlich markieren, wird als Vertrauens-Wert (oder Erkennungs-Gewichtung) dienen, ob die gescannte Datei von phpMussel als schädlich angesehen werden soll (der verwendete Wert wird den Mindest-Vertrauens-Wert oder erforderliche Gewichtung repräsentieren, um als schädlich angesehen zu werden. Standardmäßig der Wert 0 verwendet.'; -$phpMussel['lang']['Extended Description: phpMussel'] = 'Das Hauptpaket (Abzüglich der Unterschriften, Dokumentation, und Konfiguration).'; -$phpMussel['lang']['field_activate'] = 'Aktivieren'; -$phpMussel['lang']['field_clear_all'] = 'Alles löschen'; -$phpMussel['lang']['field_component'] = 'Komponente'; -$phpMussel['lang']['field_create_new_account'] = 'Neuen Konto erstellen'; -$phpMussel['lang']['field_deactivate'] = 'Deaktivieren'; -$phpMussel['lang']['field_delete_account'] = 'Konto löschen'; -$phpMussel['lang']['field_delete_all'] = 'Alles löschen'; -$phpMussel['lang']['field_delete_file'] = 'Löschen'; -$phpMussel['lang']['field_download_file'] = 'Herunterladen'; -$phpMussel['lang']['field_edit_file'] = 'Bearbeiten'; -$phpMussel['lang']['field_false'] = 'False (Falsch)'; -$phpMussel['lang']['field_file'] = 'Datei'; -$phpMussel['lang']['field_filename'] = 'Dateiname: '; -$phpMussel['lang']['field_filetype_directory'] = 'Verzeichnis'; -$phpMussel['lang']['field_filetype_info'] = '{EXT}-Datei'; -$phpMussel['lang']['field_filetype_unknown'] = 'Unbekannt'; -$phpMussel['lang']['field_install'] = 'Installieren'; -$phpMussel['lang']['field_latest_version'] = 'Letzte Version'; -$phpMussel['lang']['field_log_in'] = 'Einloggen'; -$phpMussel['lang']['field_more_fields'] = 'Mehr Felder'; -$phpMussel['lang']['field_new_name'] = 'Neuer Name:'; -$phpMussel['lang']['field_ok'] = 'OK'; -$phpMussel['lang']['field_options'] = 'Optionen'; -$phpMussel['lang']['field_password'] = 'Passwort'; -$phpMussel['lang']['field_permissions'] = 'Berechtigungen'; -$phpMussel['lang']['field_quarantine_key'] = 'Quarantäneschlüssel'; -$phpMussel['lang']['field_rename_file'] = 'Umbenennen'; -$phpMussel['lang']['field_reset'] = 'Zurücksetzen'; -$phpMussel['lang']['field_restore_file'] = 'Wiederherstellen'; -$phpMussel['lang']['field_set_new_password'] = 'Neues Passwort eingeben'; -$phpMussel['lang']['field_size'] = 'Gesamtgröße: '; -$phpMussel['lang']['field_size_bytes'] = ['Byte', 'Bytes']; -$phpMussel['lang']['field_size_GB'] = 'GB'; -$phpMussel['lang']['field_size_KB'] = 'KB'; -$phpMussel['lang']['field_size_MB'] = 'MB'; -$phpMussel['lang']['field_size_TB'] = 'TB'; -$phpMussel['lang']['field_status'] = 'Status'; -$phpMussel['lang']['field_system_timezone'] = 'System Standard-Zeitzone verwenden.'; -$phpMussel['lang']['field_true'] = 'True (Wahr)'; -$phpMussel['lang']['field_uninstall'] = 'Deinstallieren'; -$phpMussel['lang']['field_update'] = 'Aktualisieren'; -$phpMussel['lang']['field_update_all'] = 'Alle aktualisieren'; -$phpMussel['lang']['field_upload_file'] = 'Neue Datei hochladen'; -$phpMussel['lang']['field_username'] = 'Benutzername'; -$phpMussel['lang']['field_your_version'] = 'Ihre Version'; -$phpMussel['lang']['header_login'] = 'Bitte einloggen zum Fortfahren.'; -$phpMussel['lang']['label_active_config_file'] = 'Aktive Konfigurationsdatei: '; -$phpMussel['lang']['label_blocked'] = 'Uploads blockiert'; -$phpMussel['lang']['label_branch'] = 'Branch neueste stabil:'; -$phpMussel['lang']['label_events'] = 'Scan-Veranstaltungen'; -$phpMussel['lang']['label_flagged'] = 'Objekte markiert'; -$phpMussel['lang']['label_fmgr_cache_data'] = 'Cache-Daten und temporäre Dateien'; -$phpMussel['lang']['label_fmgr_disk_usage'] = 'phpMussel Speicherplatz verwendet: '; -$phpMussel['lang']['label_fmgr_free_space'] = 'Speicherplatz verfügbar: '; -$phpMussel['lang']['label_fmgr_total_disk_usage'] = 'Speicherplatz verwendet insgesamt: '; -$phpMussel['lang']['label_fmgr_total_space'] = 'Speicherplatz insgesamt: '; -$phpMussel['lang']['label_fmgr_updates_metadata'] = 'Komponente aktualisiert Metadaten'; -$phpMussel['lang']['label_hide'] = 'Verstecke'; -$phpMussel['lang']['label_os'] = 'Betriebssystem verwendet:'; -$phpMussel['lang']['label_other'] = 'Andere'; -$phpMussel['lang']['label_other-Active'] = 'Aktive Signaturdateien'; -$phpMussel['lang']['label_other-Since'] = 'Anfangsdatum'; -$phpMussel['lang']['label_php'] = 'PHP-Version verwendet:'; -$phpMussel['lang']['label_phpmussel'] = 'phpMussel-Version verwendet:'; -$phpMussel['lang']['label_quarantined'] = 'Uploads unter Quarantäne gestellt'; -$phpMussel['lang']['label_sapi'] = 'SAPI verwendet:'; -$phpMussel['lang']['label_scanned_objects'] = 'Objekte gescannt'; -$phpMussel['lang']['label_scanned_uploads'] = 'Uploads gescannt'; -$phpMussel['lang']['label_show'] = 'Zeig'; -$phpMussel['lang']['label_size_in_quarantine'] = 'Größe in Quarantäne: '; -$phpMussel['lang']['label_stable'] = 'Neueste stabil:'; -$phpMussel['lang']['label_sysinfo'] = 'System Information:'; -$phpMussel['lang']['label_tests'] = 'Tests:'; -$phpMussel['lang']['label_unstable'] = 'Neueste instabil:'; -$phpMussel['lang']['label_upload_date'] = 'Datum des Hochladens: '; -$phpMussel['lang']['label_upload_hash'] = 'Hash des Hochladen: '; -$phpMussel['lang']['label_upload_origin'] = 'Ursprung des Hochladen: '; -$phpMussel['lang']['label_upload_size'] = 'Größe des Hochladen: '; -$phpMussel['lang']['link_accounts'] = 'Konten'; -$phpMussel['lang']['link_config'] = 'Konfiguration'; -$phpMussel['lang']['link_documentation'] = 'Dokumentation'; -$phpMussel['lang']['link_file_manager'] = 'Dateimanager'; -$phpMussel['lang']['link_home'] = 'Startseite'; -$phpMussel['lang']['link_logs'] = 'Protokolldateien'; -$phpMussel['lang']['link_quarantine'] = 'Quarantäne'; -$phpMussel['lang']['link_statistics'] = 'Statistiken'; -$phpMussel['lang']['link_textmode'] = 'Textformatierung: EinfachSchick'; -$phpMussel['lang']['link_updates'] = 'Aktualisierungen'; -$phpMussel['lang']['link_upload_test'] = 'Upload-Prüfung'; -$phpMussel['lang']['logs_logfile_doesnt_exist'] = 'Ausgewählte Protokolldatei existiert nicht!'; -$phpMussel['lang']['logs_no_logfiles_available'] = 'Keine Protokolldateien vorhanden.'; -$phpMussel['lang']['logs_no_logfile_selected'] = 'Keine Protokolldatei ausgewählt.'; -$phpMussel['lang']['max_login_attempts_exceeded'] = 'Maximale Anzahl der Versucht zu einloggen überschritten; Zugriff verweigert.'; -$phpMussel['lang']['previewer_days'] = 'Tage'; -$phpMussel['lang']['previewer_hours'] = 'Stunden'; -$phpMussel['lang']['previewer_minutes'] = 'Minuten'; -$phpMussel['lang']['previewer_months'] = 'Monate'; -$phpMussel['lang']['previewer_seconds'] = 'Sekunden'; -$phpMussel['lang']['previewer_weeks'] = 'Wochen'; -$phpMussel['lang']['previewer_years'] = 'Jahre'; -$phpMussel['lang']['response_accounts_already_exists'] = 'Ein Konto mit diesem Benutzernamen ist bereits vorhanden!'; -$phpMussel['lang']['response_accounts_created'] = 'Konto erfolgreich erstellt!'; -$phpMussel['lang']['response_accounts_deleted'] = 'Konto erfolgreich gelöscht!'; -$phpMussel['lang']['response_accounts_doesnt_exist'] = 'Dieses Konto existiert nicht.'; -$phpMussel['lang']['response_accounts_password_updated'] = 'Passwort erfolgreich aktualisiert!'; -$phpMussel['lang']['response_activated'] = 'Erfolgreich aktiviert.'; -$phpMussel['lang']['response_activation_failed'] = 'Konnte nicht aktivieren!'; -$phpMussel['lang']['response_checksum_error'] = 'Prüfsummenfehler! Datei abgelehnt!'; -$phpMussel['lang']['response_component_successfully_installed'] = 'Komponente erfolgreich installiert.'; -$phpMussel['lang']['response_component_successfully_uninstalled'] = 'Komponente erfolgreich deinstalliert.'; -$phpMussel['lang']['response_component_successfully_updated'] = 'Komponente erfolgreich aktualisiert.'; -$phpMussel['lang']['response_component_uninstall_error'] = 'Beim Deinstallieren der Komponente ist ein Fehler aufgetreten.'; -$phpMussel['lang']['response_configuration_updated'] = 'Konfiguration erfolgreich aktualisiert.'; -$phpMussel['lang']['response_deactivated'] = 'Erfolgreich deaktiviert.'; -$phpMussel['lang']['response_deactivation_failed'] = 'Konnte nicht deaktivieren!'; -$phpMussel['lang']['response_delete_error'] = 'Löschung-Fehler!'; -$phpMussel['lang']['response_directory_deleted'] = 'Verzeichnis erfolgreich gelöscht!'; -$phpMussel['lang']['response_directory_renamed'] = 'Verzeichnis erfolgreich umbenannt!'; -$phpMussel['lang']['response_error'] = 'Fehler'; -$phpMussel['lang']['response_failed_to_install'] = 'Installation fehlgeschlagen!'; -$phpMussel['lang']['response_failed_to_update'] = 'Aktualisierung fehlgeschlagen!'; -$phpMussel['lang']['response_file_deleted'] = 'Datei erfolgreich gelöscht!'; -$phpMussel['lang']['response_file_edited'] = 'Datei erfolgreich geändert!'; -$phpMussel['lang']['response_file_renamed'] = 'Datei erfolgreich umbenannt!'; -$phpMussel['lang']['response_file_restored'] = 'Datei erfolgreich wiederhergestellt!'; -$phpMussel['lang']['response_file_uploaded'] = 'Datei erfolgreich hochgeladen!'; -$phpMussel['lang']['response_login_invalid_password'] = 'Einloggen-Fehler! Ungültiges Passwort!'; -$phpMussel['lang']['response_login_invalid_username'] = 'Einloggen-Fehler! Benutzername existiert nicht!'; -$phpMussel['lang']['response_login_password_field_empty'] = 'Passwort-Feld leer!'; -$phpMussel['lang']['response_login_username_field_empty'] = 'Benutzername-Feld leer!'; -$phpMussel['lang']['response_rename_error'] = 'Umbenennung-Fehler!'; -$phpMussel['lang']['response_restore_error_1'] = 'Fehler beim Wiederherstellen! Beschädigte Datei!'; -$phpMussel['lang']['response_restore_error_2'] = 'Fehler beim Wiederherstellen! Falscher Quarantäneschlüssel!'; -$phpMussel['lang']['response_statistics_cleared'] = 'Statistiken gelöscht.'; -$phpMussel['lang']['response_updates_already_up_to_date'] = 'Schon aktuell.'; -$phpMussel['lang']['response_updates_not_installed'] = 'Komponente nicht installiert!'; -$phpMussel['lang']['response_updates_not_installed_php'] = 'Komponente nicht installiert (erfordert PHP {V})!'; -$phpMussel['lang']['response_updates_outdated'] = 'Veraltet!'; -$phpMussel['lang']['response_updates_outdated_manually'] = 'Veraltet (bitte manuell aktualisieren)!'; -$phpMussel['lang']['response_updates_outdated_php_version'] = 'Veraltet (erfordert PHP {V})!'; -$phpMussel['lang']['response_updates_unable_to_determine'] = 'Kann nicht ermittelt werden.'; -$phpMussel['lang']['response_upload_error'] = 'Hochladen-Fehler!'; -$phpMussel['lang']['state_complete_access'] = 'Vollständiger Zugriff'; -$phpMussel['lang']['state_component_is_active'] = 'Komponente ist aktiv.'; -$phpMussel['lang']['state_component_is_inactive'] = 'Komponente ist inaktiv.'; -$phpMussel['lang']['state_component_is_provisional'] = 'Komponente ist vorläufig.'; -$phpMussel['lang']['state_default_password'] = 'Warnung: Verwendet das Standard-Passwort!'; -$phpMussel['lang']['state_logged_in'] = 'Eingeloggt.'; -$phpMussel['lang']['state_logs_access_only'] = 'Zugriff nur auf Protokolldateien'; -$phpMussel['lang']['state_maintenance_mode'] = 'Warnung: Wartungsmodus ist aktiviert!'; -$phpMussel['lang']['state_password_not_valid'] = 'Warnung: Dieses Konto verwendet kein gültiges Passwort!'; -$phpMussel['lang']['state_quarantine'] = ['Es befinden sich derzeit %s Datei in der Quarantäne.', 'Es befinden sich derzeit %s Dateien in der Quarantäne.']; -$phpMussel['lang']['switch-hide-non-outdated-set-false'] = 'Nicht verstecken nicht veraltet'; -$phpMussel['lang']['switch-hide-non-outdated-set-true'] = 'Verstecken nicht veraltet'; -$phpMussel['lang']['switch-hide-unused-set-false'] = 'Nicht verstecken unbenutzt'; -$phpMussel['lang']['switch-hide-unused-set-true'] = 'Verstecken unbenutzt'; -$phpMussel['lang']['tip_accounts'] = 'Hallo, {username}.
        Das Kontenseite macht es möglich zu kontrollieren, wer kann Zugriff auf der phpMussel Front-End haben.'; -$phpMussel['lang']['tip_config'] = 'Hallo, {username}.
        Das Konfigurationsseite macht es möglich zu ändern das Konfiguration für phpMussel von der Front-End.'; -$phpMussel['lang']['tip_donate'] = 'phpMussel wird kostenlos angeboten, aber wenn Sie für das Projekt spenden möchten, können Sie dies tun indem Klicken Sie auf die Spenden-Schaltfläche.'; -$phpMussel['lang']['tip_file_manager'] = 'Hallo, {username}.
        Mit dem Dateimanager können Sie Dateien löschen, bearbeiten, hochladen und herunterladen. Mit Vorsicht verwenden (Können Sie Ihre Installation mit diesem brechen).'; -$phpMussel['lang']['tip_home'] = 'Hallo, {username}.
        Dies ist die Homepage der phpMussel Front-End. Wählen Sie einen Link aus dem Navigationsmenü auf der linken um fortzufahren.'; -$phpMussel['lang']['tip_login'] = 'Standard-Benutzername: admin – Standard-Passwort: password'; -$phpMussel['lang']['tip_logs'] = 'Hallo, {username}.
        Wählen Sie eine Protokolldatei aus der folgenden Liste um den Inhalt dieser Protokolldatei anzuzeigen.'; -$phpMussel['lang']['tip_quarantine'] = 'Hallo, {username}.
        Diese Seite erleichtert die Verwaltung von, und listet alle Dateien auf, die sich derzeit in der Quarantäne befinden.'; -$phpMussel['lang']['tip_quarantine_disabled'] = 'Hinweis: Die Quarantäne ist derzeit deaktiviert, aber kann über die Konfigurationsseite aktiviert werden.'; -$phpMussel['lang']['tip_see_the_documentation'] = 'Siehe die Dokumentation für Informationen über den verschiedenen Konfigurationseinstellungen und ihren Zwecken.'; -$phpMussel['lang']['tip_statistics'] = 'Hallo, {username}.
        Diese Seite zeigt einige grundlegende Nutzungsstatistiken zu Ihrer phpMussel-Installation.'; -$phpMussel['lang']['tip_statistics_disabled'] = 'Hinweis: Die Statistikverfolgung ist derzeit deaktiviert, aber kann über die Konfigurationsseite aktiviert werden.'; -$phpMussel['lang']['tip_updates'] = 'Hallo, {username}.
        Das Aktualisierungsseite macht es möglich für Sie zu installieren, zu deinstallieren und zu aktualisieren die verschiedenen Komponenten von phpMussel (das Kernpaket, Signaturen, Plugins, L10N-Dateien, u.s.w.).'; -$phpMussel['lang']['tip_upload_test'] = 'Hallo, {username}.
        Das Upload-Testseite enthält ein Standard-Datei-Upload-Formular, das macht es möglich zu prüfen ob eine Datei normalerweise gestoppt von phpMussel werden soll, wenn Sie versuchen es hochzuladen.'; -$phpMussel['lang']['title_accounts'] = 'phpMussel – Konten'; -$phpMussel['lang']['title_config'] = 'phpMussel – Konfiguration'; -$phpMussel['lang']['title_file_manager'] = 'phpMussel – Dateimanager'; -$phpMussel['lang']['title_home'] = 'phpMussel – Startseite'; -$phpMussel['lang']['title_login'] = 'phpMussel – Einloggen'; -$phpMussel['lang']['title_logs'] = 'phpMussel – Protokolldateien'; -$phpMussel['lang']['title_quarantine'] = 'phpMussel – Quarantäne'; -$phpMussel['lang']['title_statistics'] = 'phpMussel – Statistiken'; -$phpMussel['lang']['title_updates'] = 'phpMussel – Aktualisierungen'; -$phpMussel['lang']['title_upload_test'] = 'phpMussel – Upload-Prüfung'; -$phpMussel['lang']['warning'] = 'Warnungen:'; -$phpMussel['lang']['warning_php_1'] = 'Ihre PHP-Version wird nicht mehr aktiv unterstützt! Aktualisierung wird empfohlen!'; -$phpMussel['lang']['warning_php_2'] = 'Ihre PHP-Version ist schwer verwundbar! Aktualisierung wird dringend empfohlen!'; -$phpMussel['lang']['warning_signatures_1'] = 'Keine Signaturdateien sind aktiv!'; - -$phpMussel['lang']['info_some_useful_links'] = 'Einige nützliche Links:
          -
        • phpMussel Fragen @ GitHub – Problemseite für phpMussel (Unterstützung, u.s.w.).
        • -
        • phpMussel @ Spambot Security – Diskussionsforum für phpMussel (Unterstützung, u.s.w.).
        • -
        • phpMussel @ SourceForge – Alternative download spiegel für phpMussel.
        • -
        • WebSecTools.com – Eine Sammlung von einfachen Webmaster-Tools, um Websites zu sichern.
        • -
        • ClamavNet – ClamAV Startseite (ClamAV® ClamAV ist ein Open-Source-Antivirus-Modul für die Erkennung von Trojanern, Viren, Malware und anderen bösartigen Bedrohungen).
        • -
        • SecuriteInfo.com – Computer Security Unternehmen, das ergänzende Signaturen für ClamAV bietet.
        • -
        • PhishTank – Phishing-Datenbank, die vom phpMussel-URL-Scanner verwendet wird.
        • -
        • Global PHP Group @ Facebook – PHP Lernressourcen und Diskussion.
        • -
        • PHP.earth – PHP Lernressourcen und Diskussion.
        • -
        • VirusTotal – VirusTotal ist ein kostenloser Dienst zur Analyse verdächtiger Dateien und URLs.
        • -
        • Hybrid Analysis – Hybrid Analysis ist ein kostenloser Malware-Analyse-Service von Payload Security zur Verfügung gestellt.
        • -
        • Malwarebytes – Computer-Anti-Malware-Spezialisten.
        • -
        • MalwareTips – Nützliche Malware konzentrierte Diskussionsforen.
        • -
        • Sicherheitskarten – Listet sichere/unsichere Versionen verschiedener Pakete auf (PHP, HHVM, usw).
        • -
        • Kompatibilitätskarten – Listet Kompatibilitätsinformationen für verschiedene Pakete auf (CIDRAM, phpMussel, usw).
        • -
        '; diff --git a/libraries/plugins/phpMussel/vault/lang/lang.de.php b/libraries/plugins/phpMussel/vault/lang/lang.de.php deleted file mode 100644 index 674b37e..0000000 --- a/libraries/plugins/phpMussel/vault/lang/lang.de.php +++ /dev/null @@ -1,131 +0,0 @@ -Home | Log Out'; -$phpMussel['lang']['bNav_logout'] = 'Log Out'; -$phpMussel['lang']['config_attack_specific_archive_file_extensions'] = 'Recognised archive file extensions (format is CSV; should only add or remove when problems occur; unnecessarily removing may cause false positives to appear for archive files, whereas unnecessarily adding will essentially whitelist what you\'re adding from attack specific detection; modify with caution; also note that this has no effect on what archives can and can\'t be analysed at content-level). The list, as is at default, lists those formats used most commonly across the majority of systems and CMS, but intentionally isn\'t necessarily comprehensive.'; -$phpMussel['lang']['config_attack_specific_block_control_characters'] = 'Block any files containing any control characters (other than newlines)? ([\x00-\x08\x0b\x0c\x0e\x1f\x7f]) If you\'re ONLY uploading plain-text, then you can turn this option on to provide some additional protection to your system. However, if you upload anything other than plain-text, turning this on may result in false positives. False = Don\'t block [Default]; True = Block.'; -$phpMussel['lang']['config_attack_specific_chameleon_from_exe'] = 'Search for executable headers in files that are neither executables nor recognised archives and for executables whose headers are incorrect. False = Off; True = On.'; -$phpMussel['lang']['config_attack_specific_chameleon_from_php'] = 'Search for PHP header in files that are neither PHP files nor recognised archives. False = Off; True = On.'; -$phpMussel['lang']['config_attack_specific_chameleon_to_archive'] = 'Search for archives whose headers are incorrect (Supported: BZ, GZ, RAR, ZIP, RAR, GZ). False = Off; True = On.'; -$phpMussel['lang']['config_attack_specific_chameleon_to_doc'] = 'Search for office documents whose headers are incorrect (Supported: DOC, DOT, PPS, PPT, XLA, XLS, WIZ). False = Off; True = On.'; -$phpMussel['lang']['config_attack_specific_chameleon_to_img'] = 'Search for images whose headers are incorrect (Supported: BMP, DIB, PNG, GIF, JPEG, JPG, XCF, PSD, PDD, WEBP). False = Off; True = On.'; -$phpMussel['lang']['config_attack_specific_chameleon_to_pdf'] = 'Search for PDF files whose headers are incorrect. False = Off; True = On.'; -$phpMussel['lang']['config_attack_specific_corrupted_exe'] = 'Corrupted files and parse errors. False = Ignore; True = Block [Default]. Detect and block potentially corrupted PE (Portable Executable) files? Often (but not always), when certain aspects of a PE file are corrupted or can\'t be parsed correctly, it can be indicative of a viral infection. The processes used by most anti-virus programs to detect viruses in PE files require parsing those files in certain ways, which, if the programmer of a virus is aware of, will specifically try to prevent, in order to allow their virus to remain undetected.'; -$phpMussel['lang']['config_attack_specific_decode_threshold'] = 'Threshold for the length of raw data within which decode commands should be detected (in case there are any noticeable performance issues while scanning). Default = 512KB. Zero or null disables the threshold (removing any such limitation based on filesize).'; -$phpMussel['lang']['config_attack_specific_scannable_threshold'] = 'Threshold to the length of raw data that phpMussel is permitted to read and scan (in case there are any noticeable performance issues while scanning). Default = 32MB. Zero or null value disables the threshold. Generally, this value shouldn\'t be less than the average filesize of file uploads that you want and expect to receive to your server or website, shouldn\'t be more than the filesize_limit directive, and shouldn\'t be more than roughly one fifth of the total allowable memory allocation granted to PHP via the "php.ini" configuration file. This directive exists to try to prevent phpMussel from using up too much memory (that\'d prevent it from being able to successfully scan files above a certain filesize).'; -$phpMussel['lang']['config_compatibility_ignore_upload_errors'] = 'This directive should generally be disabled unless it\'s required for correct functionality of phpMussel on your specific system. Normally, when disabled, when phpMussel detects the presence of elements in the $_FILES array(), it\'ll attempt to initiate a scan of the files that those elements represent, and, if those elements are blank or empty, phpMussel will return an error message. This is proper behaviour for phpMussel. However, for some CMS, empty elements in $_FILES can occur as a result of the natural behaviour of those CMS, or errors may be reported when there aren\'t any, in which case, the normal behaviour for phpMussel will be interfering with the normal behaviour of those CMS. If such a situation occurs for you, enabling this option will instruct phpMussel to not attempt to initiate scans for such empty elements, ignore them when found and to not return any related error messages, thus allowing continuation of the page request. False = OFF; True = ON.'; -$phpMussel['lang']['config_compatibility_only_allow_images'] = 'If you only expect or only intend to allow images to be uploaded to your system or CMS, and if you absolutely don\'t require any files other than images to be uploaded to your system or CMS, this directive should be enabled, but should otherwise be disabled. If this directive is enabled, it\'ll instruct phpMussel to indiscriminately block any uploads identified as non-image files, without scanning them. This may reduce processing time and memory usage for attempted uploads of non-image files. False = OFF; True = ON.'; -$phpMussel['lang']['config_files_block_encrypted_archives'] = 'Detect and block encrypted archives? Because phpMussel isn\'t able to scan the contents of encrypted archives, it\'s possible that archive encryption may be employed by an attacker as a means of attempting to bypass phpMussel, anti-virus scanners and other such protections. Instructing phpMussel to block any archives that it discovers to be encrypted could potentially help reduce any risk associated with these such possibilities. False = No; True = Yes [Default].'; -$phpMussel['lang']['config_files_check_archives'] = 'Attempt to check the contents of archives? False = Don\'t check; True = Check [Default]. Currently, the only archive and compression formats supported are BZ/BZIP2, GZ/GZIP, LZF, PHAR, TAR and ZIP (archive and compression formats RAR, CAB, 7z and etcetera not currently supported). This is not foolproof! While I highly recommend keeping this turned on, I can\'t guarantee it\'ll always find everything. Also be aware that archive checking currently is not recursive for PHARs or ZIPs.'; -$phpMussel['lang']['config_files_filesize_archives'] = 'Carry over filesize blacklisting/whitelisting to the contents of archives? False = No (just greylist everything); True = Yes [Default].'; -$phpMussel['lang']['config_files_filesize_limit'] = 'Filesize limit in KB. 65536 = 64MB [Default]; 0 = No limit (always greylisted). Any (positive) numeric value accepted. This can be useful when your PHP configuration limits the amount of memory a process can hold or if your PHP configuration limits filesize of uploads.'; -$phpMussel['lang']['config_files_filesize_response'] = 'What to do with files that exceed the filesize limit (if one exists). False = Whitelist; True = Blacklist [Default].'; -$phpMussel['lang']['config_files_filetype_archives'] = 'Carry over filetype blacklisting/whitelisting to the contents of archives? False = No (just greylist everything) [Default]; True = Yes.'; -$phpMussel['lang']['config_files_filetype_blacklist'] = 'Blacklist:'; -$phpMussel['lang']['config_files_filetype_greylist'] = 'Greylist:'; -$phpMussel['lang']['config_files_filetype_whitelist'] = 'If your system only allows specific types of files to be uploaded, or if your system explicitly denies certain types of files, specifying those filetypes in whitelists, blacklists and greylists can increase the speed at which scanning is performed by allowing the script to skip over certain filetypes. Format is CSV (comma separated values). If you want to scan everything, rather than whitelist, blacklist or greylist, leave the variable(/s) blank; Doing so will disable whitelist/blacklist/greylist. Logical order of processing is: If the filetype is whitelisted, don\'t scan and don\'t block the file, and don\'t check the file against the blacklist or the greylist. If the filetype is blacklisted, don\'t scan the file but block it anyway, and don\'t check the file against the greylist. If the greylist is empty or if the greylist is not empty and the filetype is greylisted, scan the file as per normal and determine whether to block it based on the results of the scan, but if the greylist is not empty and the filetype is not greylisted, treat the file as blacklisted, therefore not scanning it but blocking it anyway. Whitelist:'; -$phpMussel['lang']['config_files_max_recursion'] = 'Maximum recursion depth limit for archives. Default = 10.'; -$phpMussel['lang']['config_files_max_uploads'] = 'Maximum allowable number of files to scan during files upload scan before aborting the scan and informing the user they are uploading too much at once! Provides protection against a theoretical attack whereby an attacker attempts to DDoS your system or CMS by overloading phpMussel to slow down the PHP process to a grinding halt. Recommended: 10. You may wish to raise or lower this number depending on the speed of your hardware. Note that this number doesn\'t account for or include the contents of archives.'; -$phpMussel['lang']['config_general_cleanup'] = 'Unset variables and cache used by the script after the initial upload scanning? False = No; True = Yes [Default]. If you -aren\'t- using the script beyond the initial scanning of uploads, you should set this to true (yes), to minimize memory usage. If you -are- using the script beyond the initial scanning of uploads, should set to false (no), to avoid unnecessarily reloading duplicate data into memory. In general practice, it should usually be set to true, but, if you do this, you won\'t be able to use the script for anything other than the initial file upload scanning. Has no influence in CLI mode.'; -$phpMussel['lang']['config_general_default_algo'] = 'Defines which algorithm to use for all future passwords and sessions. Options: PASSWORD_DEFAULT (default), PASSWORD_BCRYPT, PASSWORD_ARGON2I (requires PHP >= 7.2.0).'; -$phpMussel['lang']['config_general_delete_on_sight'] = 'Enabling this directive will instruct the script to attempt to immediately delete any scanned attempted file upload matching any detection criteria, whether via signatures or otherwise. Files determined to be "clean" won\'t be touched. In the case of archives, the entire archive will be deleted, regardless of whether or not the offending file is only one of several files contained within the archive. For the case of file upload scanning, usually, it isn\'t necessary to enable this directive, because usually, PHP will automatically purge the contents of its cache when execution has finished, meaning it\'ll usually delete any files uploaded through it to the server unless they\'ve been moved, copied or deleted already. This directive is added here as an extra measure of security for those whose copies of PHP mightn\'t always behave in the manner expected. False = After scanning, leave the file alone [Default]; True = After scanning, if not clean, delete immediately.'; -$phpMussel['lang']['config_general_disable_cli'] = 'Disable CLI mode? CLI mode is enabled by default, but can sometimes interfere with certain testing tools (such as PHPUnit, for example) and other CLI-based applications. If you don\'t need to disable CLI mode, you should ignore this directive. False = Enable CLI mode [Default]; True = Disable CLI mode.'; -$phpMussel['lang']['config_general_disable_frontend'] = 'Disable front-end access? Front-end access can make phpMussel more manageable, but can also be a potential security risk, too. It\'s recommended to manage phpMussel via the back-end whenever possible, but front-end access is provided for when it isn\'t possible. Keep it disabled unless you need it. False = Enable front-end access; True = Disable front-end access [Default].'; -$phpMussel['lang']['config_general_disable_webfonts'] = 'Disable webfonts? True = Yes; False = No [Default].'; -$phpMussel['lang']['config_general_enable_plugins'] = 'Enable support for phpMussel plugins? False = No; True = Yes [Default].'; -$phpMussel['lang']['config_general_forbid_on_block'] = 'Should phpMussel send 403 headers with the file upload blocked message, or stick with the usual 200 OK? False = No (200); True = Yes (403) [Default].'; -$phpMussel['lang']['config_general_FrontEndLog'] = 'File for logging front-end login attempts. Specify a filename, or leave blank to disable.'; -$phpMussel['lang']['config_general_honeypot_mode'] = 'When honeypot mode is enabled, phpMussel will attempt to quarantine every single file upload that it encounters, regardless of whether or not the file being uploaded matches any included signatures, and no actual scanning or analysis of those attempted file uploads will actually occur. This functionality should be useful for those that wish to use phpMussel for the purposes of virus/malware research, but it\'s neither recommended to enable this functionality if the intended use of phpMussel by the user is for actual file upload scanning, nor recommended to use the honeypot functionality for purposes other than honeypotting. By default, this option is disabled. False = Disabled [Default]; True = Enabled.'; -$phpMussel['lang']['config_general_ipaddr'] = 'Where to find the IP address of connecting requests? (Useful for services such as Cloudflare and the likes) Default = REMOTE_ADDR. WARNING: Don\'t change this unless you know what you\'re doing!'; -$phpMussel['lang']['config_general_lang'] = 'Specify the default language for phpMussel.'; -$phpMussel['lang']['config_general_maintenance_mode'] = 'Enable maintenance mode? True = Yes; False = No [Default]. Disables everything other than the front-end. Sometimes useful for when updating your CMS, frameworks, etc.'; -$phpMussel['lang']['config_general_max_login_attempts'] = 'Maximum number of login attempts (front-end). Default = 5.'; -$phpMussel['lang']['config_general_numbers'] = 'How do you prefer numbers to be displayed? Select the example that looks the most correct to you.'; -$phpMussel['lang']['config_general_quarantine_key'] = 'phpMussel is able to quarantine flagged attempted file uploads in isolation within the phpMussel vault, if this is something you want it to do. Casual users of phpMussel that simply wish to protect their websites or hosting environment without having any interest in deeply analysing any flagged attempted file uploads should leave this functionality disabled, but any users interested in further analysis of flagged attempted file uploads for malware research or for similar such things should enable this functionality. Quarantining of flagged attempted file uploads can sometimes also assist in debugging false positives, if this is something that frequently occurs for you. To disable quarantine functionality, simply leave the quarantine_key directive empty, or erase the contents of that directive if it isn\'t already empty. To enable quarantine functionality, enter some value into the directive. The quarantine_key is an important security feature of the quarantine functionality required as a means of preventing the quarantine functionality from being exploited by potential attackers and as a means of preventing any potential execution of data stored within the quarantine. The quarantine_key should be treated in the same manner as your passwords: The longer the better, and guard it tightly. For best effect, use in conjunction with delete_on_sight.'; -$phpMussel['lang']['config_general_quarantine_max_filesize'] = 'The maximum filesize allowed for files to be quarantined. Files larger than the value specified will NOT be quarantined. This directive is important as a means of making it more difficult for any potential attackers to flood your quarantine with unwanted data potentially causing run-away data usage on your hosting service. Default = 2MB.'; -$phpMussel['lang']['config_general_quarantine_max_usage'] = 'The maximum memory usage allowed for the quarantine. If the total memory used by the quarantine reaches this value, the oldest quarantined files will be deleted until the total memory used no longer reaches this value. This directive is important as a means of making it more difficult for any potential attackers to flood your quarantine with unwanted data potentially causing run-away data usage on your hosting service. Default = 64MB.'; -$phpMussel['lang']['config_general_scan_cache_expiry'] = 'For how long should phpMussel cache the results of scanning? Value is the number of seconds to cache the results of scanning for. Default is 21600 seconds (6 hours); A value of 0 will disable caching the results of scanning.'; -$phpMussel['lang']['config_general_scan_kills'] = 'Filename of file to log all records of blocked or killed uploads to. Specify a filename, or leave blank to disable.'; -$phpMussel['lang']['config_general_scan_log'] = 'Filename of file to log all scanning results to. Specify a filename, or leave blank to disable.'; -$phpMussel['lang']['config_general_scan_log_serialized'] = 'Filename of file to log all scanning results to (using a serialised format). Specify a filename, or leave blank to disable.'; -$phpMussel['lang']['config_general_statistics'] = 'Track phpMussel usage statistics? True = Yes; False = No [Default].'; -$phpMussel['lang']['config_general_timeFormat'] = 'The date/time notation format used by phpMussel. Additional options may be added upon request.'; -$phpMussel['lang']['config_general_timeOffset'] = 'Timezone offset in minutes.'; -$phpMussel['lang']['config_general_timezone'] = 'Your timezone.'; -$phpMussel['lang']['config_general_truncate'] = 'Truncate logfiles when they reach a certain size? Value is the maximum size in B/KB/MB/GB/TB that a logfile may grow to before being truncated. The default value of 0KB disables truncation (logfiles can grow indefinitely). Note: Applies to individual logfiles! The size of logfiles is not considered collectively.'; -$phpMussel['lang']['config_heuristic_threshold'] = 'There are certain signatures of phpMussel that are intended to identify suspicious and potentially malicious qualities of files being uploaded without in themselves identifying those files being uploaded specifically as being malicious. This "threshold" value tells phpMussel what the maximum total weight of suspicious and potentially malicious qualities of files being uploaded that\'s allowable is before those files are to be flagged as malicious. The definition of weight in this context is the total number of suspicious and potentially malicious qualities identified. By default, this value will be set to 3. A lower value generally will result in a higher occurrence of false positives but a higher number of malicious files being flagged, whereas a higher value generally will result in a lower occurrence of false positives but a lower number of malicious files being flagged. It\'s generally best to leave this value at its default unless you\'re experiencing problems related to it.'; -$phpMussel['lang']['config_signatures_Active'] = 'A list of the active signature files, delimited by commas.'; -$phpMussel['lang']['config_signatures_detect_adware'] = 'Should phpMussel parse signatures for detecting adware? False = No; True = Yes [Default].'; -$phpMussel['lang']['config_signatures_detect_deface'] = 'Should phpMussel parse signatures for detecting defacements and defacers? False = No; True = Yes [Default].'; -$phpMussel['lang']['config_signatures_detect_encryption'] = 'Should phpMussel detect and block encrypted files? False = No; True = Yes [Default].'; -$phpMussel['lang']['config_signatures_detect_joke_hoax'] = 'Should phpMussel parse signatures for detecting joke/hoax malware/viruses? False = No; True = Yes [Default].'; -$phpMussel['lang']['config_signatures_detect_packer_packed'] = 'Should phpMussel parse signatures for detecting packers and packed data? False = No; True = Yes [Default].'; -$phpMussel['lang']['config_signatures_detect_pua_pup'] = 'Should phpMussel parse signatures for detecting PUAs/PUPs? False = No; True = Yes [Default].'; -$phpMussel['lang']['config_signatures_detect_shell'] = 'Should phpMussel parse signatures for detecting shell scripts? False = No; True = Yes [Default].'; -$phpMussel['lang']['config_signatures_fail_extensions_silently'] = 'Should phpMussel report when extensions are missing? If fail_extensions_silently is disabled, missing extensions will be reported on scanning, and if fail_extensions_silently is enabled, missing extensions will be ignored, with scanning reporting for those files that there aren\'t any problems. Disabling this directive may potentially increase your security, but may also lead to an increase of false positives. False = Disabled; True = Enabled [Default].'; -$phpMussel['lang']['config_signatures_fail_silently'] = 'Should phpMussel report when signatures files are missing or corrupted? If fail_silently is disabled, missing and corrupted files will be reported on scanning, and if fail_silently is enabled, missing and corrupted files will be ignored, with scanning reporting for those files that there aren\'t any problems. This should generally be left alone unless you\'re experiencing crashes or similar problems. False = Disabled; True = Enabled [Default].'; -$phpMussel['lang']['config_template_data_css_url'] = 'The template file for custom themes utilises external CSS properties, whereas the template file for the default theme utilises internal CSS properties. To instruct phpMussel to use the template file for custom themes, specify the public HTTP address of your custom theme\'s CSS files using the css_url variable. If you leave this variable blank, phpMussel will use the template file for the default theme.'; -$phpMussel['lang']['config_template_data_Magnification'] = 'Font magnification. Default = 1.'; -$phpMussel['lang']['config_template_data_theme'] = 'Default theme to use for phpMussel.'; -$phpMussel['lang']['config_urlscanner_cache_time'] = 'How long (in seconds) should the results of API lookups be cached for? Default is 3600 seconds (1 hour).'; -$phpMussel['lang']['config_urlscanner_google_api_key'] = 'Enables API lookups to the Google Safe Browsing API when the necessary API key is defined.'; -$phpMussel['lang']['config_urlscanner_lookup_hphosts'] = 'Enables API lookups to the hpHosts API when set to true.'; -$phpMussel['lang']['config_urlscanner_maximum_api_lookups'] = 'Maximum allowable number of API lookups to perform per individual scan iteration. Because each additional API lookup will add to the total time required to complete each scan iteration, you may wish to stipulate a limitation in order to expedite the overall scan process. When set to 0, no such maximum allowable number will be applied. Set to 10 by default.'; -$phpMussel['lang']['config_urlscanner_maximum_api_lookups_response'] = 'What to do if the maximum allowable number of API lookups is exceeded? False = Do nothing (continue processing) [Default]; True = Flag/block the file.'; -$phpMussel['lang']['config_virustotal_vt_public_api_key'] = 'Optionally, phpMussel is able to scan files using the Virus Total API as a way to provide a greatly enhanced level of protection against viruses, trojans, malware and other threats. By default, scanning files using the Virus Total API is disabled. To enable it, an API key from Virus Total is required. Due to the significant benefit that this could provide to you, it\'s something that I highly recommend enabling. Please be aware, however, that to use the Virus Total API, you MUST agree to their Terms of Service and you MUST adhere to all guidelines as per described by the Virus Total documentation! You are NOT permitted to use this integration feature UNLESS: You have read and agree to the Terms of Service of Virus Total and its API. You have read and you understand, at a minimum, the preamble of the Virus Total Public API documentation (everything after "VirusTotal Public API v2.0" but before "Contents").'; -$phpMussel['lang']['config_virustotal_vt_quota_rate'] = 'According to the Virus Total API documentation, "it is limited to at most 4 requests of any nature in any given 1 minute time frame. If you run a honeyclient, honeypot or any other automation that is going to provide resources to VirusTotal and not only retrieve reports you are entitled to a higher request rate quota". By default, phpMussel will strictly adhere to these limitations, but due to the possibility of these rate quotas being increased, these two directives are provided as a means for you to instruct phpMussel as to what limit it should adhere to. Unless you\'ve been instructed to do so, it\'s not recommended for you to increase these values, but, if you\'ve encountered problems relating to reaching your rate quota, decreasing these values MAY sometimes help you in dealing with these problems. Your rate limit is determined as vt_quota_rate requests of any nature in any given vt_quota_time minute time frame.'; -$phpMussel['lang']['config_virustotal_vt_quota_time'] = '(See description above).'; -$phpMussel['lang']['config_virustotal_vt_suspicion_level'] = 'By default, phpMussel will restrict which files it scans using the Virus Total API to those files that it considers "suspicious". You can optionally adjust this restriction by changing the value of the vt_suspicion_level directive.'; -$phpMussel['lang']['config_virustotal_vt_weighting'] = 'Should phpMussel apply the results of scanning using the Virus Total API as detections or as detection weighting? This directive exists, because, although scanning a file using multiple engines (as Virus Total does) should result in an increased detection rate (and therefore in a higher number of malicious files being caught), it can also result in a higher number of false positives, and therefore, in some circumstances, the results of scanning may be better utilised as a confidence score rather than as a definitive conclusion. If a value of 0 is used, the results of scanning using the Virus Total API will be applied as detections, and therefore, if any engine used by Virus Total flags the file being scanned as being malicious, phpMussel will consider the file to be malicious. If any other value is used, the results of scanning using the Virus Total API will be applied as detection weighting, and therefore, the number of engines used by Virus Total that flag the file being scanned as being malicious will serve as a confidence score (or detection weighting) for whether or not the file being scanned should be considered malicious by phpMussel (the value used will represent the minimum confidence score or weight required in order to be considered malicious). A value of 0 is used by default.'; -$phpMussel['lang']['Extended Description: phpMussel'] = 'The main package (minus the signatures, documentation, and configuration).'; -$phpMussel['lang']['field_activate'] = 'Activate'; -$phpMussel['lang']['field_clear_all'] = 'Clear all'; -$phpMussel['lang']['field_component'] = 'Component'; -$phpMussel['lang']['field_create_new_account'] = 'Create new account'; -$phpMussel['lang']['field_deactivate'] = 'Deactivate'; -$phpMussel['lang']['field_delete_account'] = 'Delete account'; -$phpMussel['lang']['field_delete_all'] = 'Delete all'; -$phpMussel['lang']['field_delete_file'] = 'Delete'; -$phpMussel['lang']['field_download_file'] = 'Download'; -$phpMussel['lang']['field_edit_file'] = 'Edit'; -$phpMussel['lang']['field_false'] = 'False'; -$phpMussel['lang']['field_file'] = 'File'; -$phpMussel['lang']['field_filename'] = 'Filename: '; -$phpMussel['lang']['field_filetype_directory'] = 'Directory'; -$phpMussel['lang']['field_filetype_info'] = '{EXT} File'; -$phpMussel['lang']['field_filetype_unknown'] = 'Unknown'; -$phpMussel['lang']['field_install'] = 'Install'; -$phpMussel['lang']['field_latest_version'] = 'Latest Version'; -$phpMussel['lang']['field_log_in'] = 'Log In'; -$phpMussel['lang']['field_more_fields'] = 'More Fields'; -$phpMussel['lang']['field_new_name'] = 'New name:'; -$phpMussel['lang']['field_ok'] = 'OK'; -$phpMussel['lang']['field_options'] = 'Options'; -$phpMussel['lang']['field_password'] = 'Password'; -$phpMussel['lang']['field_permissions'] = 'Permissions'; -$phpMussel['lang']['field_quarantine_key'] = 'Quarantine key'; -$phpMussel['lang']['field_rename_file'] = 'Rename'; -$phpMussel['lang']['field_reset'] = 'Reset'; -$phpMussel['lang']['field_restore_file'] = 'Restore'; -$phpMussel['lang']['field_set_new_password'] = 'Set new password'; -$phpMussel['lang']['field_size'] = 'Total Size: '; -$phpMussel['lang']['field_size_bytes'] = ['byte', 'bytes']; -$phpMussel['lang']['field_size_GB'] = 'GB'; -$phpMussel['lang']['field_size_KB'] = 'KB'; -$phpMussel['lang']['field_size_MB'] = 'MB'; -$phpMussel['lang']['field_size_TB'] = 'TB'; -$phpMussel['lang']['field_status'] = 'Status'; -$phpMussel['lang']['field_system_timezone'] = 'Use system default timezone.'; -$phpMussel['lang']['field_true'] = 'True'; -$phpMussel['lang']['field_uninstall'] = 'Uninstall'; -$phpMussel['lang']['field_update'] = 'Update'; -$phpMussel['lang']['field_update_all'] = 'Update all'; -$phpMussel['lang']['field_upload_file'] = 'Upload new file'; -$phpMussel['lang']['field_username'] = 'Username'; -$phpMussel['lang']['field_your_version'] = 'Your Version'; -$phpMussel['lang']['header_login'] = 'Please log in to continue.'; -$phpMussel['lang']['label_active_config_file'] = 'Active configuration file: '; -$phpMussel['lang']['label_blocked'] = 'Uploads blocked'; -$phpMussel['lang']['label_branch'] = 'Branch latest stable:'; -$phpMussel['lang']['label_events'] = 'Scan events'; -$phpMussel['lang']['label_flagged'] = 'Objects flagged'; -$phpMussel['lang']['label_fmgr_cache_data'] = 'Cache data and temporary files'; -$phpMussel['lang']['label_fmgr_disk_usage'] = 'phpMussel disk usage: '; -$phpMussel['lang']['label_fmgr_free_space'] = 'Free disk space: '; -$phpMussel['lang']['label_fmgr_total_disk_usage'] = 'Total disk usage: '; -$phpMussel['lang']['label_fmgr_total_space'] = 'Total disk space: '; -$phpMussel['lang']['label_fmgr_updates_metadata'] = 'Component updates metadata'; -$phpMussel['lang']['label_hide'] = 'Hide'; -$phpMussel['lang']['label_os'] = 'Operating system used:'; -$phpMussel['lang']['label_other'] = 'Other'; -$phpMussel['lang']['label_other-Active'] = 'Active signature files'; -$phpMussel['lang']['label_other-Since'] = 'Start date'; -$phpMussel['lang']['label_php'] = 'PHP version used:'; -$phpMussel['lang']['label_phpmussel'] = 'phpMussel version used:'; -$phpMussel['lang']['label_quarantined'] = 'Uploads quarantined'; -$phpMussel['lang']['label_sapi'] = 'SAPI used:'; -$phpMussel['lang']['label_scanned_objects'] = 'Objects scanned'; -$phpMussel['lang']['label_scanned_uploads'] = 'Uploads scanned'; -$phpMussel['lang']['label_show'] = 'Show'; -$phpMussel['lang']['label_size_in_quarantine'] = 'Size in quarantine: '; -$phpMussel['lang']['label_stable'] = 'Latest stable:'; -$phpMussel['lang']['label_sysinfo'] = 'System information:'; -$phpMussel['lang']['label_tests'] = 'Tests:'; -$phpMussel['lang']['label_unstable'] = 'Latest unstable:'; -$phpMussel['lang']['label_upload_date'] = 'Upload date: '; -$phpMussel['lang']['label_upload_hash'] = 'Upload hash: '; -$phpMussel['lang']['label_upload_origin'] = 'Upload origin: '; -$phpMussel['lang']['label_upload_size'] = 'Upload size: '; -$phpMussel['lang']['link_accounts'] = 'Accounts'; -$phpMussel['lang']['link_config'] = 'Configuration'; -$phpMussel['lang']['link_documentation'] = 'Documentation'; -$phpMussel['lang']['link_file_manager'] = 'File Manager'; -$phpMussel['lang']['link_home'] = 'Home'; -$phpMussel['lang']['link_logs'] = 'Logs'; -$phpMussel['lang']['link_quarantine'] = 'Quarantine'; -$phpMussel['lang']['link_statistics'] = 'Statistics'; -$phpMussel['lang']['link_textmode'] = 'Text formatting: SimpleFancy'; -$phpMussel['lang']['link_updates'] = 'Updates'; -$phpMussel['lang']['link_upload_test'] = 'Upload Test'; -$phpMussel['lang']['logs_logfile_doesnt_exist'] = 'Selected logfile doesn\'t exist!'; -$phpMussel['lang']['logs_no_logfiles_available'] = 'No logfiles available.'; -$phpMussel['lang']['logs_no_logfile_selected'] = 'No logfile selected.'; -$phpMussel['lang']['max_login_attempts_exceeded'] = 'Maximum number of login attempts exceeded; Access denied.'; -$phpMussel['lang']['previewer_days'] = 'Days'; -$phpMussel['lang']['previewer_hours'] = 'Hours'; -$phpMussel['lang']['previewer_minutes'] = 'Minutes'; -$phpMussel['lang']['previewer_months'] = 'Months'; -$phpMussel['lang']['previewer_seconds'] = 'Seconds'; -$phpMussel['lang']['previewer_weeks'] = 'Weeks'; -$phpMussel['lang']['previewer_years'] = 'Years'; -$phpMussel['lang']['response_accounts_already_exists'] = 'An account with that username already exists!'; -$phpMussel['lang']['response_accounts_created'] = 'Account successfully created!'; -$phpMussel['lang']['response_accounts_deleted'] = 'Account successfully deleted!'; -$phpMussel['lang']['response_accounts_doesnt_exist'] = 'That account doesn\'t exist.'; -$phpMussel['lang']['response_accounts_password_updated'] = 'Password successfully updated!'; -$phpMussel['lang']['response_activated'] = 'Successfully activated.'; -$phpMussel['lang']['response_activation_failed'] = 'Failed to activate!'; -$phpMussel['lang']['response_checksum_error'] = 'Checksum error! File rejected!'; -$phpMussel['lang']['response_component_successfully_installed'] = 'Component successfully installed.'; -$phpMussel['lang']['response_component_successfully_uninstalled'] = 'Component successfully uninstalled.'; -$phpMussel['lang']['response_component_successfully_updated'] = 'Component successfully updated.'; -$phpMussel['lang']['response_component_uninstall_error'] = 'An error occurred while attempting to uninstall the component.'; -$phpMussel['lang']['response_configuration_updated'] = 'Configuration successfully updated.'; -$phpMussel['lang']['response_deactivated'] = 'Successfully deactivated.'; -$phpMussel['lang']['response_deactivation_failed'] = 'Failed to deactivate!'; -$phpMussel['lang']['response_delete_error'] = 'Failed to delete!'; -$phpMussel['lang']['response_directory_deleted'] = 'Directory successfully deleted!'; -$phpMussel['lang']['response_directory_renamed'] = 'Directory successfully renamed!'; -$phpMussel['lang']['response_error'] = 'Error'; -$phpMussel['lang']['response_failed_to_install'] = 'Failed to install!'; -$phpMussel['lang']['response_failed_to_update'] = 'Failed to update!'; -$phpMussel['lang']['response_file_deleted'] = 'File successfully deleted!'; -$phpMussel['lang']['response_file_edited'] = 'File successfully modified!'; -$phpMussel['lang']['response_file_renamed'] = 'File successfully renamed!'; -$phpMussel['lang']['response_file_restored'] = 'File successfully restored!'; -$phpMussel['lang']['response_file_uploaded'] = 'File successfully uploaded!'; -$phpMussel['lang']['response_login_invalid_password'] = 'Login failure! Invalid password!'; -$phpMussel['lang']['response_login_invalid_username'] = 'Login failure! Username doesn\'t exist!'; -$phpMussel['lang']['response_login_password_field_empty'] = 'Password field empty!'; -$phpMussel['lang']['response_login_username_field_empty'] = 'Username field empty!'; -$phpMussel['lang']['response_rename_error'] = 'Failed to rename!'; -$phpMussel['lang']['response_restore_error_1'] = 'Failed to restore! Corrupted file!'; -$phpMussel['lang']['response_restore_error_2'] = 'Failed to restore! Incorrect quarantine key!'; -$phpMussel['lang']['response_statistics_cleared'] = 'Statistics cleared.'; -$phpMussel['lang']['response_updates_already_up_to_date'] = 'Already up-to-date.'; -$phpMussel['lang']['response_updates_not_installed'] = 'Component not installed!'; -$phpMussel['lang']['response_updates_not_installed_php'] = 'Component not installed (requires PHP {V})!'; -$phpMussel['lang']['response_updates_outdated'] = 'Outdated!'; -$phpMussel['lang']['response_updates_outdated_manually'] = 'Outdated (please update manually)!'; -$phpMussel['lang']['response_updates_outdated_php_version'] = 'Outdated (requires PHP {V})!'; -$phpMussel['lang']['response_updates_unable_to_determine'] = 'Unable to determine.'; -$phpMussel['lang']['response_upload_error'] = 'Failed to upload!'; -$phpMussel['lang']['state_complete_access'] = 'Complete access'; -$phpMussel['lang']['state_component_is_active'] = 'Component is active.'; -$phpMussel['lang']['state_component_is_inactive'] = 'Component is inactive.'; -$phpMussel['lang']['state_component_is_provisional'] = 'Component is provisional.'; -$phpMussel['lang']['state_default_password'] = 'Warning: Using default password!'; -$phpMussel['lang']['state_logged_in'] = 'Logged in.'; -$phpMussel['lang']['state_logs_access_only'] = 'Logs access only'; -$phpMussel['lang']['state_maintenance_mode'] = 'Warning: Maintenance mode is enabled!'; -$phpMussel['lang']['state_password_not_valid'] = 'Warning: This account is not using a valid password!'; -$phpMussel['lang']['state_quarantine'] = ['There is %s file currently in quarantine.', 'There are %s files currently in quarantine.']; -$phpMussel['lang']['switch-hide-non-outdated-set-false'] = 'Don\'t hide non-outdated'; -$phpMussel['lang']['switch-hide-non-outdated-set-true'] = 'Hide non-outdated'; -$phpMussel['lang']['switch-hide-unused-set-false'] = 'Don\'t hide unused'; -$phpMussel['lang']['switch-hide-unused-set-true'] = 'Hide unused'; -$phpMussel['lang']['tip_accounts'] = 'Hello, {username}.
        The accounts page allows you to control who can access the phpMussel front-end.'; -$phpMussel['lang']['tip_config'] = 'Hello, {username}.
        The configuration page allows you to modify the configuration for phpMussel from the front-end.'; -$phpMussel['lang']['tip_donate'] = 'phpMussel is offered free of charge, but if you want to donate to the project, you can do so by clicking the donate button.'; -$phpMussel['lang']['tip_file_manager'] = 'Hello, {username}.
        The file manager allows you to delete, edit, upload, and download files. Use with caution (you could break your installation with this).'; -$phpMussel['lang']['tip_home'] = 'Hello, {username}.
        This is the homepage for the phpMussel front-end. Select a link from the navigation menu on the left to continue.'; -$phpMussel['lang']['tip_login'] = 'Default username: admin – Default password: password'; -$phpMussel['lang']['tip_logs'] = 'Hello, {username}.
        Select a logfile from the list below to view the contents of that logfile.'; -$phpMussel['lang']['tip_quarantine'] = 'Hello, {username}.
        This page lists all files currently in quarantine and facilitates management of those files.'; -$phpMussel['lang']['tip_quarantine_disabled'] = 'Note: Quarantine is currently disabled, but can be enabled via the configuration page.'; -$phpMussel['lang']['tip_see_the_documentation'] = 'See the documentation for information about the various configuration directives and their purposes.'; -$phpMussel['lang']['tip_statistics'] = 'Hello, {username}.
        This page shows some basic usage statistics regarding your phpMussel installation.'; -$phpMussel['lang']['tip_statistics_disabled'] = 'Note: Statistics tracking is currently disabled, but can be enabled via the configuration page.'; -$phpMussel['lang']['tip_updates'] = 'Hello, {username}.
        The updates page allows you to install, uninstall, and update the various components of phpMussel (the core package, signatures, plugins, L10N files, etc).'; -$phpMussel['lang']['tip_upload_test'] = 'Hello, {username}.
        The upload test page contains a standard file upload form, allowing you to test whether a file would normally be blocked by phpMussel when attempting to upload it.'; -$phpMussel['lang']['title_accounts'] = 'phpMussel – Accounts'; -$phpMussel['lang']['title_config'] = 'phpMussel – Configuration'; -$phpMussel['lang']['title_file_manager'] = 'phpMussel – File Manager'; -$phpMussel['lang']['title_home'] = 'phpMussel – Home'; -$phpMussel['lang']['title_login'] = 'phpMussel – Login'; -$phpMussel['lang']['title_logs'] = 'phpMussel – Logs'; -$phpMussel['lang']['title_quarantine'] = 'phpMussel – Quarantine'; -$phpMussel['lang']['title_statistics'] = 'phpMussel – Statistics'; -$phpMussel['lang']['title_updates'] = 'phpMussel – Updates'; -$phpMussel['lang']['title_upload_test'] = 'phpMussel – Upload Test'; -$phpMussel['lang']['warning'] = 'Warnings:'; -$phpMussel['lang']['warning_php_1'] = 'Your PHP version is not actively supported anymore! Updating is recommended!'; -$phpMussel['lang']['warning_php_2'] = 'Your PHP version is severely vulnerable! Updating is strongly recommended!'; -$phpMussel['lang']['warning_signatures_1'] = 'No signature files are active!'; - -$phpMussel['lang']['info_some_useful_links'] = 'Some useful links:'; diff --git a/libraries/plugins/phpMussel/vault/lang/lang.en.php b/libraries/plugins/phpMussel/vault/lang/lang.en.php deleted file mode 100644 index 58d7067..0000000 --- a/libraries/plugins/phpMussel/vault/lang/lang.en.php +++ /dev/null @@ -1,127 +0,0 @@ -Página Principal | Cerrar Sesión'; -$phpMussel['lang']['bNav_logout'] = 'Cerrar Sesión'; -$phpMussel['lang']['config_attack_specific_archive_file_extensions'] = 'Reconocido compactado archivo extensiones (formato es CSV; sólo debe agregar o eliminar cuando problemas ocurrir; eliminando innecesariamente puede causar falsos positivos a aparecer para compactados archivos, mientras añadiendo innecesariamente hará esencialmente whitelist que cuales eres añadiendo desde ataque específica detección; modificar con precaución; También notar que esto no tiene efecto en aquellos compactados archivos que pueden y no pueden ser analizado a contenido nivel). La lista, como es a predefinición, describe los formatos más comúnmente utilizados a través de la mayoría de sistemas y CMS, pero intencionalmente no es necesariamente exhaustiva.'; -$phpMussel['lang']['config_attack_specific_block_control_characters'] = 'Bloquear cualquier archivos que contenga cualquier caracteres de control (aparte de saltos de línea)? ([\x00-\x08\x0b\x0c\x0e\x1f\x7f]) Si usted sólo subir texto sin cualquier formato, usted puede activar esta opción para proporcionar alguna adicional protección para su sistema. Pero, si usted subir cualquier cosa otro de texto sin cualquier formato, activando esto puede dar lugar a falsos positivos. False = No bloquear [Predefinido]; True = Bloquear.'; -$phpMussel['lang']['config_attack_specific_chameleon_from_exe'] = 'Buscar para PE mágico número en archivos que no están ejecutables ni reconocidos compactados archivos y para ejecutables cuyo mágicos números son incorrectas. False = Desactivado; True = Activado.'; -$phpMussel['lang']['config_attack_specific_chameleon_from_php'] = 'Buscar para PHP código en archivos que no están PHP archivos ni reconocidos compactados archivos. False = Desactivado; True = Activado.'; -$phpMussel['lang']['config_attack_specific_chameleon_to_archive'] = 'Buscar para compactados archivos cuyo mágicos números son incorrectas (Soportado: BZ, GZ, RAR, ZIP, RAR, GZ). False = Desactivado; True = Activado.'; -$phpMussel['lang']['config_attack_specific_chameleon_to_doc'] = 'Buscar para office documentos cuyo mágicos números son incorrectas (Soportado: DOC, DOT, PPS, PPT, XLA, XLS, WIZ). False = Desactivado; True = Activado.'; -$phpMussel['lang']['config_attack_specific_chameleon_to_img'] = 'Buscar para imágenes cuyo mágicos números son incorrectas (Soportado: BMP, DIB, PNG, GIF, JPEG, JPG, XCF, PSD, PDD, WEBP). False = Desactivado; True = Activado.'; -$phpMussel['lang']['config_attack_specific_chameleon_to_pdf'] = 'Buscar para PDF archivos cuyo mágicos números son incorrectas. False = Desactivado; True = Activado.'; -$phpMussel['lang']['config_attack_specific_corrupted_exe'] = 'Corrompido archivos y procesamiento errores. False = Ignorar; True = Bloquear [Predefinido]. Detectar y bloquear potencialmente corrompido PE (Portátil Ejecutable) archivos? Frecuentemente (pero no siempre), cuando ciertos aspectos de un PE archivo están corrompido, dañados o no podrá ser analizado correctamente, lo puede ser indicativo de una infección viral. Los procesos utilizados por la mayoría de los antivirus programas para detectar un virus en PE archivos requerir analizando esos archivos en ciertas maneras, que, si el programador de un virus es consciente de, intentará específicamente para prevenir, con el fin de permitir su virus permanezca sin ser detectado.'; -$phpMussel['lang']['config_attack_specific_decode_threshold'] = 'Opcional limitación a la longitud de datos a que dentro de decodificación comandos deben ser detectados (en caso de que los hay notable rendimiento problemas mientras que escaneando). Predefinido = 512KB. Cero o nulo valor desactiva la limitación (eliminando cualquier tal limitación basado sobre la tamaño de archivos).'; -$phpMussel['lang']['config_attack_specific_scannable_threshold'] = 'Opcional limitación a la longitud de datos puros para que phpMussel se permitido leer y escanear (en caso de que los hay notable rendimiento problemas mientras que escaneando). Predefinido = 32MB. Cero o nulo valor desactiva la limitación. En general, Este valor no debe ser inferior a la media tamaño de archivos subidos que desea y espera recibir a su servidor o website, no debe ser mayor que el filesize_limit directiva, y no debe ser más de aproximadamente una quinta parte de la total permisible memoria asignación concedida a PHP a través de la "php.ini" configuración archivo. Esta directiva existe para intratar prevenir phpMussel del uso de demasiada memoria (eso sería prevenir que sea capaz para escanear archivos con éxito encima de un cierto tamaño de archivos).'; -$phpMussel['lang']['config_compatibility_ignore_upload_errors'] = 'Esta directiva, en general, debe ser desactivado, a menos que se requiere para la correcta funcionalidad de phpMussel en su específico sistema. Normalmente, cuando está desactivado, cuando phpMussel detecta la presencia de elementos en la $_FILES array(), intentará iniciar un escaneo de los archivos que esos elementos representan, y, si esos elementos están blanco o vacío, phpMussel devolverá un mensaje de error. Este es el comportamiento natural para phpMussel. Pero, para algunos CMS, vacíos elementos en $_FILES puede ocurrir como resultado del comportamiento natural de los CMS, o errores pueden ser reportados cuando no existe ninguna, en cuyo caso, el comportamiento natural para phpMussel será interfiriendo con el comportamiento natural de los CMS. Si tal situación ocurre para usted, activando esta opción instruirá phpMussel no intentar iniciar un escaneo para tales vacíos elementos, ignorarlos cuando encontrado y no devuelva cualquier relacionado mensaje de error, así permitiendo la continuación de la página cargando. False = DESACTIVADO; True = ACTIVADO.'; -$phpMussel['lang']['config_compatibility_only_allow_images'] = 'Si usted sólo esperas o sólo quieren permitir imágenes para ser subido a su sistema o CMS, y si usted absolutamente no requiere cualquieres archivos otro que imágenes para subir a su sistema o CMS, esta directiva debe ser activado, pero por lo demás debe ser desactivado. Si esta directiva está activada, se instruirá phpMussel para indiscriminadamente bloquear cualquieres subidos identificado como archivos que no son imagen, sin escaneandolos. Esto puede reducir el tiempo de procesamiento y el uso de memoria para intentados subidos de archivos que no son imagen. False = DESACTIVADO; True = ACTIVADO.'; -$phpMussel['lang']['config_files_block_encrypted_archives'] = 'Detectar y bloquear compactados archivos encriptados? Debido phpMussel no es capaz de escanear el contenido de los compactados archivos encriptados, es posible que este puede ser empleado por un atacante como un medio de evitando phpMussel, antivirus escáneres y otras protecciones. Instruir phpMussel para bloquear cualquier compactado archivo que se descubre es encriptado potencialmente podría ayudar a reducir el riesgo asociado a estos tales posibilidades. False = No; True = Sí [Predefinido].'; -$phpMussel['lang']['config_files_check_archives'] = 'Intente comprobar el contenido de los compactados archivos? False = No (no comprobar); True = Sí (comprobar) [Predefinido]. Corrientemente, los únicos formatos soportados son BZ/BZIP2, GZ/GZIP, LZF, PHAR, TAR y ZIP (los formatos RAR, CAB, 7z y etc. corrientemente no es soportados). Esto no es infalible! Mientras yo altamente recomiendo mantener este activado, no puedo garantizar que siempre encontrará todo. También ser conscientes que la comprobación de compactados archivos corrientemente no es recursivo para PHAR o ZIP formatos.'; -$phpMussel['lang']['config_files_filesize_archives'] = 'Heredar tamaño de archivos blacklist/whitelist para los contenidos de compactados archivos? False = No (todo en la greylist); True = Sí [Predefinido].'; -$phpMussel['lang']['config_files_filesize_limit'] = 'Límite del tamaño de archivos en KB. 65536 = 64MB [Predefinido]; 0 = Sin límite (siempre en la greylist), cualquier (positivo) numérico valor aceptado. Esto puede ser útil cuando su PHP configuración limita la cantidad de memoria un proceso puede contener o si su PHP configuración limita el tamaño de archivo subidos.'; -$phpMussel['lang']['config_files_filesize_response'] = 'Qué hacer con los archivos que superen el límite del tamaño de archivos (si existe). False = Whitelist; True = Blacklist [Predefinido].'; -$phpMussel['lang']['config_files_filetype_archives'] = 'Heredar tipos de archivos blacklist/whitelist para los contenidos de compactados archivos? False = No (todo en la greylist); True = Sí [Predefinido].'; -$phpMussel['lang']['config_files_filetype_blacklist'] = 'Blacklist:'; -$phpMussel['lang']['config_files_filetype_greylist'] = 'Greylist:'; -$phpMussel['lang']['config_files_filetype_whitelist'] = 'Si su sistema sólo permite ciertos tipos de archivos para ser subido, o si su sistema niega explícitamente ciertos tipos de archivos, especificando los tipos de archivos en la whitelist, blacklist y/o greylist puede aumentar la velocidad a que escaneando se realizado por permitiendo la script para saltar sobre ciertos tipos de archivos. Formato es CSV (comas separados valores). Si desea escanear todo, en lugar de utilizando la whitelist, blacklist o greylist, dejar las variables en blanco; haciendo tal desactivará la whitelist/blacklist/greylist. Lógico orden de procesamiento es: Si el tipo de archivo está en la whitelist, no escanear y no bloquear el archivo, y no cotejar el archivo con la blacklist o la greylist. Si el tipo de archivo está en la blacklist, no escanear el archivo, pero bloquearlo en todo caso, y no cotejar el archivo con la greylist. Si la greylist está vacía o si la greylist está no vacía y el tipo de archivo está en la greylist, escanearlo como normal y determinar si para bloquearlo basado en los resultados de la escaneo, pero si la greylist está no vacía y el tipo de archivo está no en la greylist, tratar el archivo como si está en la blacklist, por lo tanto no escanearlo pero bloquearlo en todo caso. Whitelist:'; -$phpMussel['lang']['config_files_max_recursion'] = 'Máximo recursividad nivel límite para compactados archivos. Predefinido = 10.'; -$phpMussel['lang']['config_files_max_uploads'] = 'Máximo permitido número de archivos para escanear durante archivo subido escaneo antes de abortando la escaneo e informando al usuario están subir demasiado simultáneamente! Proporciona protección contra un teórico ataque por lo cual un atacante intenta DDoS su sistema o CMS por sobrecargando phpMussel para ralentizar el proceso de PHP a niveles inoperables. Recomendado: 10. Es posible que desee aumentar o reducir este número dependiendo de la velocidad de su hardware. Notar que este número no tiene en cuenta o incluir el contenidos de compactados archivos.'; -$phpMussel['lang']['config_general_cleanup'] = 'Despejar la variables y la caché de la script después la script ejecución? False = No; True = Sí [Predefinido]. Si usted no está utilizando la script más allá de inicial escaneando de archivos subidos, debe definir como true (sí), para minimizar el uso de memoria. Si usted está utilizando la script para propósitos más allá de inicial escaneando de archivos subidos, debe definir como false (no), para evitar recargar innecesariamente duplicados datos en la memoria. En general práctica, probablemente debería definirse como true, pero, si usted hace esto, usted no será capaz de utilizar la script para cualquier cosa otro que de escaneando archivos subidos. No tiene influencia en CLI modo.'; -$phpMussel['lang']['config_general_default_algo'] = 'Define qué algoritmo utilizar para todas las contraseñas y sesiones en el futuro. Opciones: PASSWORD_DEFAULT (predefinido), PASSWORD_BCRYPT, PASSWORD_ARGON2I (requiere PHP >= 7.2.0).'; -$phpMussel['lang']['config_general_delete_on_sight'] = 'Activando esta directiva instruirá la script para intentar para eliminar inmediatamente cualquier escaneados intentados archivos subidos emparejando a los criterios de detección, si través de firmas o de otras maneras. Archivos determinados como limpia no serán tocados. En el caso de los compactados archivos, la totalidad del compactado archivo será eliminado (independientemente de si el emparejando archivo es sólo uno de muchos varios archivos contenida dentro del compactado archivo). Para el caso de archivo subir escaneo, en general, no es necesario activar esta directiva, porque en general, PHP purgará automáticamente el contenido de su caché cuando la ejecución ha terminado, significando que lo en general eliminará cualquier archivos subidos a través de él con el servidor a no ser que se han movido, copiado o eliminado ya. La directiva se añade aquí como una medida adicional de seguridad para aquellos cuyas copias de PHP no siempre se comportan de la manera esperada. False = Después escaneando, dejar el archivo solo [Predefinido]; True = Después escaneando, si no se limpia, eliminar inmediatamente.'; -$phpMussel['lang']['config_general_disable_cli'] = '¿Desactivar CLI modo? CLI modo está activado por predefinido, pero a veces puede interferir con ciertas herramientas de prueba (tal como PHPUnit, por ejemplo) y otras aplicaciones basadas en CLI. Si no es necesario desactivar CLI modo, usted debe ignorar esta directiva. False = Activar CLI modo [Predefinido]; True = Desactivar CLI modo.'; -$phpMussel['lang']['config_general_disable_frontend'] = '¿Desactivar el acceso front-end? El acceso front-end puede hacer phpMussel más manejable, pero también puede ser un riesgo de seguridad. Se recomienda administrar phpMussel a través del back-end cuando sea posible, pero el acceso front-end se proporciona para cuando no es posible. Mantenerlo desactivado a menos que lo necesite. False = Activar el acceso front-end; True = Desactivar el acceso front-end [Predefinido].'; -$phpMussel['lang']['config_general_disable_webfonts'] = '¿Desactivar webfonts? True = Sí; False = No [Predefinido].'; -$phpMussel['lang']['config_general_enable_plugins'] = '¿Habilitar el soporte para los plugins de phpMussel? False = No; True = Sí [Predefinido].'; -$phpMussel['lang']['config_general_forbid_on_block'] = '¿Debería phpMussel enviar 403 header con la bloqueados archivos subidos mensaje, o quedarse con los usual 200 OK? False = No (200); True = Sí (403) [Predefinido].'; -$phpMussel['lang']['config_general_FrontEndLog'] = 'Archivo para registrar intentos de login al front-end. Especificar el nombre del archivo, o dejar en blanco para desactivar.'; -$phpMussel['lang']['config_general_honeypot_mode'] = 'Cuando la honeypot modo está activado, phpMussel intentará cuarentenar cada archivos subidos que encuentra, independientemente de si o no el archivo que se está subido coincide con las firmas incluídas, y no real escanear o análisis de esos intentados archivos subidos van a ocurrir. Esta funcionalidad debe ser útil para aquellos que deseen utilizar phpMussel a los efectos del virus/malware investigación, pero no se recomendado activar esta funcionalidad si el uso de phpMussel por el usuario es para real archivo subido escaneando ni recomendado usar la honeypot funcionalidad para fines otro que de la honeypot. Por predefinido, esta opción está desactivada. False = Desactivado [Predefinido]; True = Activado.'; -$phpMussel['lang']['config_general_ipaddr'] = 'Dónde encontrar el IP dirección de la conectando request? (Útil para servicios como Cloudflare y tales) Predefinido = REMOTE_ADDR. AVISO: No cambie esto a menos que sepas lo que estás haciendo!'; -$phpMussel['lang']['config_general_lang'] = 'Especifique la predefinido del lenguaje para phpMussel.'; -$phpMussel['lang']['config_general_maintenance_mode'] = '¿Activar modo de mantenimiento? True = Sí; False = No [Predefinido]. Desactiva todo lo que no sea el front-end. A veces útil para la actualización de su CMS, frameworks, etc.'; -$phpMussel['lang']['config_general_max_login_attempts'] = 'Número máximo de intentos de login (front-end). Predefinido = 5.'; -$phpMussel['lang']['config_general_numbers'] = '¿Cómo prefieres los números que se muestran? Seleccione el ejemplo que le parezca más correcto.'; -$phpMussel['lang']['config_general_quarantine_key'] = 'phpMussel es capaz de poner en cuarentena intentados archivos subidos en aisladamente dentro de la phpMussel vault, si esto es algo que usted quiere que haga. Usuarios casual de phpMussel de los cuales simplemente desean proteger sus website o hosting ambiente sin tener ningún interés con analizando profundamente cualquier marcados intentados archivos subidos debería dejar esta funcionalidad desactivado, pero cualquier usuarios interesados en más análisis de marcados intentados archivos subidos para la investigación de malware o para cosas similares debe activar esta funcionalidad. Cuarentenando de marcados intentados archivos subidos a veces puede también ayudar en la depuración de falsos positivos, si esto es algo que ocurre con frecuencia para usted. Para desactivar la cuarentena funcionalidad, simplemente dejar la directiva quarantine_key vacío, o borrar el contenidos de que directiva si no está ya vacío. Para activar la cuarentena funcionalidad, entrar algún valor en la directiva. La quarantine_key es un importante característica de seguridad de la cuarentena funcionalidad requiere como un medio para la prevención de la explotación de la cuarentena funcionalidad por potenciales atacantes y como un medio de evitar cualquier potencial ejecución de los datos almacenados dentro la cuarentena. La quarantine_key debería ser tratado de la misma manera que sus contraseñas: El más grande es el mejor, y guárdela bien. Para un mejor efecto, utilice conjuntamente con delete_on_sight.'; -$phpMussel['lang']['config_general_quarantine_max_filesize'] = 'El archivo tamaño máximo permitido para archivos para ser cuarentenada. Archivos que superen el valor especificado aquí NO serán cuarentenada. Esta directiva es importante como un medio de hacer que sea más difícil para cualquier potenciales atacantes a inundar su cuarentena con datos no deseados que puede causar el excesivo uso de datos en su servicio de hosting. Predefinido = 2MB.'; -$phpMussel['lang']['config_general_quarantine_max_usage'] = 'El uso máximo de memoria permitida para la cuarentena. Si la total memoria utilizada por la cuarentena alcanza este valor, los más antiguos cuarentenado archivos serán eliminado hasta que la total memoria utilizada ya no alcanza este valor. Esta directiva es importante como un medio de hacer que sea más difícil para cualquier potenciales atacantes a inundar su cuarentena con datos no deseados que puede causar el excesivo uso de datos en su servicio de hosting. Predefinido = 64M.'; -$phpMussel['lang']['config_general_scan_cache_expiry'] = 'Por cuánto tiempo debe phpMussel caché de los resultados del escaneo? El valor es el número de segundos para almacenar en caché los resultados del escaneo. La predeterminado valor es 21600 segundos (6 horas); Un valor de 0 desactiva el almacenamiento en caché de los resultados del escaneo.'; -$phpMussel['lang']['config_general_scan_kills'] = 'Nombre del archivo para registrar todos bloqueados o matados subidos. Especifique un archivo nombre, o dejar en blanco para desactivar.'; -$phpMussel['lang']['config_general_scan_log'] = 'Nombre del archivo para registrar todos los resultados de las escaneos. Especifique un archivo nombre, o dejar en blanco para desactivar.'; -$phpMussel['lang']['config_general_scan_log_serialized'] = 'Nombre del archivo para registrar todos los resultados de las escaneos (utilizando un formato serializado). Especifique un archivo nombre, o dejar en blanco para desactivar.'; -$phpMussel['lang']['config_general_statistics'] = '¿Seguir las estadísticas de uso de phpMussel? True = Sí; False = No [Predefinido].'; -$phpMussel['lang']['config_general_timeFormat'] = 'El formato de notación de fecha/hora usado por phpMussel. Se pueden añadir opciones adicionales bajo petición.'; -$phpMussel['lang']['config_general_timeOffset'] = 'Desplazamiento del huso horario en minutos.'; -$phpMussel['lang']['config_general_timezone'] = 'Tu zona horaria.'; -$phpMussel['lang']['config_general_truncate'] = '¿Truncar archivos de registro cuando alcanzan cierto tamaño? Valor es el tamaño máximo en B/KB/MB/GB/TB que un archivo de registro puede crecer antes de ser truncado. El valor predeterminado de 0KB deshabilita el truncamiento (archivos de registro pueden crecer indefinidamente). Nota: ¡Se aplica a archivos de registro individuales! El tamaño de los archivos de registro no se considera colectivamente.'; -$phpMussel['lang']['config_heuristic_threshold'] = 'Hay ciertas firmas de phpMussel eso tienen la intención de identificar sospechosas y potencialmente maliciosos cualidades de los archivos que se subido sin que en ellos la identificación de los archivos que se subido específicamente como malicioso. Este "threshold" (umbral) valor dice phpMussel qué lo máximo total peso de sospechosas y potencialmente maliciosos cualidades de los archivos que se subido eso es permisible es antes de que esos archivos han de ser señalado como malicioso. La definición de peso en este contexto es el número total de sospechosas y potencialmente maliciosos cualidades identificados. Por predefinido, este valor es 3. Un valor inferior generalmente resultará en una mayor incidencia de falsos positivos pero un mayor número de archivos maliciosos siendo identificado, mientras un valor mayor generalmente resultará en una inferior incidencia de falsos positivos pero un inferior número de archivos maliciosos siendo identificado. Generalmente es mejor dejar este valor en su predefinido a menos que usted está experimentando problemas relacionados con ella.'; -$phpMussel['lang']['config_signatures_Active'] = 'Una lista de los archivos de firmas activa, delimitados por comas.'; -$phpMussel['lang']['config_signatures_detect_adware'] = '¿Debe phpMussel utilizar firmas para detectar adware? False = No; True = Sí [Predefinido].'; -$phpMussel['lang']['config_signatures_detect_deface'] = '¿Debe phpMussel utilizar firmas para detectar defacements y defacers? False = No; True = Sí [Predefinido].'; -$phpMussel['lang']['config_signatures_detect_encryption'] = '¿Debe phpMussel detectar y bloquear archivos cifrados? False = No; True = Sí [Predefinido].'; -$phpMussel['lang']['config_signatures_detect_joke_hoax'] = '¿Debe phpMussel utilizar firmas para detectar broma/engaño malware/virus? False = No; True = Sí [Predefinido].'; -$phpMussel['lang']['config_signatures_detect_packer_packed'] = '¿Debe phpMussel utilizar firmas para detectar empacadores y datos empaquetados? False = No; True = Sí [Predefinido].'; -$phpMussel['lang']['config_signatures_detect_pua_pup'] = '¿Debe phpMussel utilizar firmas para detectar PUAs/PUPs? False = No; True = Sí [Predefinido].'; -$phpMussel['lang']['config_signatures_detect_shell'] = '¿Debe phpMussel utilizar firmas para detectar shell scripts? False = No; True = Sí [Predefinido].'; -$phpMussel['lang']['config_signatures_fail_extensions_silently'] = '¿Debe phpMussel informan cuando extensiones están desaparecidos? Si fail_extensions_silently está desactivado, desaparecidos extensiones será reportado cuando escaneando, y si fail_extensions_silently está activado, desaparecidos extensiones será ignorado, with scanning reportando para aquellos archivos que no hay cualquier problemas. Desactivando esta directiva puede potencialmente aumentar su seguridad, pero también puede conducir a un aumento de falsos positivos. False = Desactivado; True = Activado [Predefinido].'; -$phpMussel['lang']['config_signatures_fail_silently'] = '¿Debe phpMussel informan cuando los firmas archivos están desaparecidos o dañados? Si fail_silently está desactivado, desaparecidos y dañados archivos será reportado cuando escaneando, y si fail_silently está activado, desaparecidos y dañados archivos será ignorado, con escaneando reportando para aquellos archivos que no hay cualquier problemas. Esto generalmente debe ser dejar sola a menos que usted está experimentando estrellarse o problemas similares. False = Desactivado; True = Activado [Predefinido].'; -$phpMussel['lang']['config_template_data_css_url'] = 'El plantilla archivo para los temas personalizados utiliza externas CSS propiedades, mientras que el plantilla archivo para el predefinida tema utiliza internas CSS propiedades. Para instruir phpMussel de utilizar el plantilla archivo para temas personalizados, especificar el público HTTP dirección de sus temas personalizados CSS archivos utilizando la css_url variable. Si lo deja en blanco la variable, phpMussel utilizará el plantilla archivo para el predefinida tema.'; -$phpMussel['lang']['config_template_data_Magnification'] = 'Ampliación de fuente. Predefinido = 1.'; -$phpMussel['lang']['config_template_data_theme'] = 'Tema predefinido a utilizar para phpMussel.'; -$phpMussel['lang']['config_urlscanner_cache_time'] = 'Por cuánto tiempo (en segundos) debe los resultados de las API búsquedas ser almacenan en caché? Predefinido es 3600 segundos (1 horas).'; -$phpMussel['lang']['config_urlscanner_google_api_key'] = 'Permite API búsquedas al Google Safe Browsing API cuando la necesario API clave es define.'; -$phpMussel['lang']['config_urlscanner_lookup_hphosts'] = 'Permite API búsquedas al hpHosts API cuando se define como true.'; -$phpMussel['lang']['config_urlscanner_maximum_api_lookups'] = 'Máximo número permitido de API búsquedas para llevar a cabo por individuo escaneando iteración. Debido a que cada adicional API búsqueda se sumará al total tiempo requerido para completar cada escaneando iteración, es posible que usted desee estipular una limitación a fin de acelerar el proceso de escaneando. Cuando se define en 0, no tal máximo número permitido se aplicará. Se define como 10 por predefinido.'; -$phpMussel['lang']['config_urlscanner_maximum_api_lookups_response'] = 'Qué hacer si el máximo número de API búsquedas permitido es superadas? False = Hacer nada (continuar procesando) [Predefinido]; True = Marcar/bloquear el archivo.'; -$phpMussel['lang']['config_virustotal_vt_public_api_key'] = 'Opcionalmente, phpMussel es capaz de escanear archivos utilizando el Virus API total como una manera de proporcionar un mucho mayor nivel de protección contra virus, troyanos, malware y otras amenazas. Por predefinido, escanear archivos utilizando el Virus Total API está desactivado. Para activarlo, una API clave desde Virus Total se requiere. Debido a la significativo beneficio que esto podría proporcionar a usted, está algo que recomiendo. Tenga en cuenta, aunque, que para utilizar el Virus API total, es absolutamente necesario usted estar de acuerdo con sus Términos de Servicio y cumplan todas las directrices según descrito por el Virus Total documentación! Usted NO se permitido utilizar esta integración función A MENOS QUE: Ha leído y está de acuerdo con los Términos de Servicio de Virus Total y sus API. Ha leído y entender, en un mínimo, el preámbulo de la Virus Total Pública API Documentación (todo después "VirusTotal Public API v2.0" pero antes "Contents").'; -$phpMussel['lang']['config_virustotal_vt_quota_rate'] = 'En acuerdo con la documentación de la Virus Total API, está limitado para un máximo de 4 solicitudes de cualquier naturaleza en cualquier 1 minuto período de tiempo. Si usted ejecuta un honeyclient, honeypot o cualquier otra automatización que va proporcionar recursos para Virus Total y no sólo recuperar los reportes usted tiene derecho a un más alta cuota. Por predefinido, phpMussel va adhiere estrictamente a estas limitaciones, pero debido a la posibilidad de estos limitaciones siendo aumentado, estas dos directivas son proporcionan como un manera para usted para indique para phpMussel en cuanto a qué limitaciones está debe adherirse a. A menos que usted ha estado indique que lo haga, está no es recomendable para usted para aumentar estos valores, pero, si ha tenido problemas relacionados con alcanzar su cuota, la disminución de estos valores PUEDE a veces ayudarle para hacer frente a estos problemas. Su cuota es determinado como vt_quota_rate solicitudes de cualquier naturaleza en cualquier vt_quota_time minuto período de tiempo.'; -$phpMussel['lang']['config_virustotal_vt_quota_time'] = '(Ver descripción arriba).'; -$phpMussel['lang']['config_virustotal_vt_suspicion_level'] = 'Por predefinido, phpMussel restringirá qué archivos se escaneado usando el Virus Total API a esos archivos que se considera "sospechosa". Opcionalmente, usted puede ajustar esta restricción por manera de cambiando el valor de la vt_suspicion_level directiva.'; -$phpMussel['lang']['config_virustotal_vt_weighting'] = '¿Debería phpMussel aplicar los resultados del escaneo utilizando el Virus Total API como detecciones o como detección peso? Esta directiva existe, por razón de que, aunque escanear un archivo usando múltiples motores (como Virus Total hacer) debería resultar en un aumento detección cuenta (y por lo tanto en un mayor número de maliciosos archivos ser atrapado), esta también puede resultar en un mayor número de falsos positivos, y por lo tanto, en algunas circunstancias, los resultados del escanear pueden ser mejor utilizados como una puntuación de confianza y no como una definitiva conclusión. Si un valor de 0 es utiliza, los resultados del escaneo utilizando el Virus Total API se aplicará como detecciones, y por lo tanto, si cualquier motor utilizado por Virus Total marca el archivo está escaneando como malicioso, phpMussel considerará el archivo a ser malicioso. Si cualquier otro valor es utiliza, los resultados del escaneo utilizando el Virus Total API se aplicará como detección peso, y por lo tanto, el número de motores utilizados por Virus Total que marca el archivo está escaneando como malicioso servirá como una puntuación de confianza (o detección peso) para si el archivo que ser escanear debe ser considerado malicioso por phpMussel (el valor utilizado representará el mínima puntuación de confianza o peso requerido con el fin de ser considerado malicioso). Un valor de 0 es utilizado por predefinido.'; -$phpMussel['lang']['Extended Description: phpMussel'] = 'El paquete principal (menos las firmas, la documentación, y la configuración).'; -$phpMussel['lang']['field_activate'] = 'Activar'; -$phpMussel['lang']['field_clear_all'] = 'Anular todo'; -$phpMussel['lang']['field_component'] = 'Componente'; -$phpMussel['lang']['field_create_new_account'] = 'Crear Nueva Cuenta'; -$phpMussel['lang']['field_deactivate'] = 'Desactivar'; -$phpMussel['lang']['field_delete_account'] = 'Eliminar Cuenta'; -$phpMussel['lang']['field_delete_all'] = 'Eliminar todos'; -$phpMussel['lang']['field_delete_file'] = 'Borrar'; -$phpMussel['lang']['field_download_file'] = 'Descargar'; -$phpMussel['lang']['field_edit_file'] = 'Editar'; -$phpMussel['lang']['field_false'] = 'False (Falso)'; -$phpMussel['lang']['field_file'] = 'Archivo'; -$phpMussel['lang']['field_filename'] = 'Nombre del archivo: '; -$phpMussel['lang']['field_filetype_directory'] = 'Directorio'; -$phpMussel['lang']['field_filetype_info'] = '{EXT} Archivo'; -$phpMussel['lang']['field_filetype_unknown'] = 'Desconocido'; -$phpMussel['lang']['field_install'] = 'Instalar'; -$phpMussel['lang']['field_latest_version'] = 'Ultima Versión'; -$phpMussel['lang']['field_log_in'] = 'Iniciar Sesión'; -$phpMussel['lang']['field_more_fields'] = 'Más Campos'; -$phpMussel['lang']['field_new_name'] = 'Nuevo nombre:'; -$phpMussel['lang']['field_ok'] = 'OK'; -$phpMussel['lang']['field_options'] = 'Opciones'; -$phpMussel['lang']['field_password'] = 'Contraseña'; -$phpMussel['lang']['field_permissions'] = 'Permisos'; -$phpMussel['lang']['field_quarantine_key'] = 'Clave de cuarentena'; -$phpMussel['lang']['field_rename_file'] = 'Cambiar el nombre'; -$phpMussel['lang']['field_reset'] = 'Reiniciar'; -$phpMussel['lang']['field_restore_file'] = 'Restaurar'; -$phpMussel['lang']['field_set_new_password'] = 'Crear Nueva Contraseña'; -$phpMussel['lang']['field_size'] = 'Tamaño Total: '; -$phpMussel['lang']['field_size_bytes'] = ['byte', 'bytes']; -$phpMussel['lang']['field_size_GB'] = 'GB'; -$phpMussel['lang']['field_size_KB'] = 'KB'; -$phpMussel['lang']['field_size_MB'] = 'MB'; -$phpMussel['lang']['field_size_TB'] = 'TB'; -$phpMussel['lang']['field_status'] = 'Estado'; -$phpMussel['lang']['field_system_timezone'] = 'Usar la zona horaria predeterminada del sistema.'; -$phpMussel['lang']['field_true'] = 'True (Verdadero)'; -$phpMussel['lang']['field_uninstall'] = 'Desinstalar'; -$phpMussel['lang']['field_update'] = 'Actualizar'; -$phpMussel['lang']['field_update_all'] = 'Actualizar todo'; -$phpMussel['lang']['field_upload_file'] = 'Subir un nuevo archivo'; -$phpMussel['lang']['field_username'] = 'Usuario'; -$phpMussel['lang']['field_your_version'] = 'Tu Versión'; -$phpMussel['lang']['header_login'] = 'Por favor iniciar sesión para continuar.'; -$phpMussel['lang']['label_active_config_file'] = 'Archivo de configuración activo: '; -$phpMussel['lang']['label_blocked'] = 'Subidas bloqueadas'; -$phpMussel['lang']['label_branch'] = 'Branch más nuevo estable:'; -$phpMussel['lang']['label_events'] = 'Escanear eventos'; -$phpMussel['lang']['label_flagged'] = 'Objetos marcados'; -$phpMussel['lang']['label_fmgr_cache_data'] = 'Datos de caché y archivos temporales'; -$phpMussel['lang']['label_fmgr_disk_usage'] = 'Uso del disco por phpMussel: '; -$phpMussel['lang']['label_fmgr_free_space'] = 'Espacio en disco libre: '; -$phpMussel['lang']['label_fmgr_total_disk_usage'] = 'Uso del disco total: '; -$phpMussel['lang']['label_fmgr_total_space'] = 'Espacio en disco total: '; -$phpMussel['lang']['label_fmgr_updates_metadata'] = 'Componente actualiza metadatos'; -$phpMussel['lang']['label_hide'] = 'Esconder'; -$phpMussel['lang']['label_os'] = 'Sistema operativo utilizada:'; -$phpMussel['lang']['label_other'] = 'Otro'; -$phpMussel['lang']['label_other-Active'] = 'Archivos de firmas activas'; -$phpMussel['lang']['label_other-Since'] = 'Fecha de inicio'; -$phpMussel['lang']['label_php'] = 'Versión PHP utilizada:'; -$phpMussel['lang']['label_phpmussel'] = 'Versión phpMussel utilizada:'; -$phpMussel['lang']['label_quarantined'] = 'Subidas en cuarentena'; -$phpMussel['lang']['label_sapi'] = 'SAPI utilizada:'; -$phpMussel['lang']['label_scanned_objects'] = 'Objetos escaneados'; -$phpMussel['lang']['label_scanned_uploads'] = 'Subidas escaneadas'; -$phpMussel['lang']['label_show'] = 'Mostrar'; -$phpMussel['lang']['label_size_in_quarantine'] = 'Tamaño en cuarentena: '; -$phpMussel['lang']['label_stable'] = 'Más nuevo estable:'; -$phpMussel['lang']['label_sysinfo'] = 'Información del sistema:'; -$phpMussel['lang']['label_tests'] = 'Pruebas:'; -$phpMussel['lang']['label_unstable'] = 'Más nuevo inestable:'; -$phpMussel['lang']['label_upload_date'] = 'Fecha de subir: '; -$phpMussel['lang']['label_upload_hash'] = 'Hash de subir: '; -$phpMussel['lang']['label_upload_origin'] = 'Origen de subir: '; -$phpMussel['lang']['label_upload_size'] = 'Tamaño de subir: '; -$phpMussel['lang']['link_accounts'] = 'Cuentas'; -$phpMussel['lang']['link_config'] = 'Configuración'; -$phpMussel['lang']['link_documentation'] = 'Documentación'; -$phpMussel['lang']['link_file_manager'] = 'Administración de Archivos'; -$phpMussel['lang']['link_home'] = 'Página Principal'; -$phpMussel['lang']['link_logs'] = 'Archivos de Registro'; -$phpMussel['lang']['link_quarantine'] = 'Cuarentena'; -$phpMussel['lang']['link_statistics'] = 'Estadística'; -$phpMussel['lang']['link_textmode'] = 'Formato de texto: SimpleLujoso'; -$phpMussel['lang']['link_updates'] = 'Actualizaciones'; -$phpMussel['lang']['link_upload_test'] = 'Subir Prueba'; -$phpMussel['lang']['logs_logfile_doesnt_exist'] = '¡Archivo de registro seleccionado no existe!'; -$phpMussel['lang']['logs_no_logfiles_available'] = 'Ningún archivos de registro disponibles.'; -$phpMussel['lang']['logs_no_logfile_selected'] = 'Ningún archivo de registro seleccionado.'; -$phpMussel['lang']['max_login_attempts_exceeded'] = 'Número máximo de intentos de login excedido; Acceso denegado.'; -$phpMussel['lang']['previewer_days'] = 'Días'; -$phpMussel['lang']['previewer_hours'] = 'Horas'; -$phpMussel['lang']['previewer_minutes'] = 'Minutos'; -$phpMussel['lang']['previewer_months'] = 'Meses'; -$phpMussel['lang']['previewer_seconds'] = 'Segundos'; -$phpMussel['lang']['previewer_weeks'] = 'Semanas'; -$phpMussel['lang']['previewer_years'] = 'Años'; -$phpMussel['lang']['response_accounts_already_exists'] = '¡Una cuenta con ese nombre ya existe!'; -$phpMussel['lang']['response_accounts_created'] = '¡Cuenta creada con éxito!'; -$phpMussel['lang']['response_accounts_deleted'] = '¡Cuenta eliminada con éxito!'; -$phpMussel['lang']['response_accounts_doesnt_exist'] = 'Esa cuenta no existe.'; -$phpMussel['lang']['response_accounts_password_updated'] = 'Contraseña actualizado con éxito!'; -$phpMussel['lang']['response_activated'] = 'Se ha activado correctamente.'; -$phpMussel['lang']['response_activation_failed'] = '¡No se pudo activar!'; -$phpMussel['lang']['response_checksum_error'] = 'Error de suma de comprobación! Archivo rechazado!'; -$phpMussel['lang']['response_component_successfully_installed'] = 'Componente instalado con éxito.'; -$phpMussel['lang']['response_component_successfully_uninstalled'] = 'Componente desinstalado con éxito.'; -$phpMussel['lang']['response_component_successfully_updated'] = 'Componente actualizado con éxito.'; -$phpMussel['lang']['response_component_uninstall_error'] = 'Se ha producido un error al intentar desinstalar el componente.'; -$phpMussel['lang']['response_configuration_updated'] = 'Configuración actualizado con éxito.'; -$phpMussel['lang']['response_deactivated'] = 'Se ha desactivado correctamente.'; -$phpMussel['lang']['response_deactivation_failed'] = '¡No se pudo desactivar!'; -$phpMussel['lang']['response_delete_error'] = '¡No se pudo eliminar!'; -$phpMussel['lang']['response_directory_deleted'] = '¡Directorio eliminado con éxito!'; -$phpMussel['lang']['response_directory_renamed'] = '¡El nombre del directorio cambiado con éxito!'; -$phpMussel['lang']['response_error'] = 'Error'; -$phpMussel['lang']['response_failed_to_install'] = '¡No se pudo instalar!'; -$phpMussel['lang']['response_failed_to_update'] = '¡No se pudo actualizar!'; -$phpMussel['lang']['response_file_deleted'] = '¡Archivo eliminado con éxito!'; -$phpMussel['lang']['response_file_edited'] = '¡Archivo modificado con éxito!'; -$phpMussel['lang']['response_file_renamed'] = '¡El nombre del archivo cambiado con éxito!'; -$phpMussel['lang']['response_file_restored'] = '¡Archivo restaurado con éxito!'; -$phpMussel['lang']['response_file_uploaded'] = '¡Archivo subido con éxito!'; -$phpMussel['lang']['response_login_invalid_password'] = '¡Error al iniciar sesión – Contraseña invalida!'; -$phpMussel['lang']['response_login_invalid_username'] = '¡Error al iniciar sesión – El usuario no existe!'; -$phpMussel['lang']['response_login_password_field_empty'] = '¡La entrada de contraseña estaba vacío!'; -$phpMussel['lang']['response_login_username_field_empty'] = '¡La entrada de usuario estaba vacío!'; -$phpMussel['lang']['response_rename_error'] = '¡No se pudo cambiar el nombre!'; -$phpMussel['lang']['response_restore_error_1'] = '¡Error al restaurar! Archivo corrupto!'; -$phpMussel['lang']['response_restore_error_2'] = '¡Error al restaurar! Clave de cuarentena incorrecta!'; -$phpMussel['lang']['response_statistics_cleared'] = 'Estadística anulado.'; -$phpMussel['lang']['response_updates_already_up_to_date'] = 'Ya está actualizado.'; -$phpMussel['lang']['response_updates_not_installed'] = '¡El componente no se instala!'; -$phpMussel['lang']['response_updates_not_installed_php'] = '¡El componente no se instala (requiere PHP {V})!'; -$phpMussel['lang']['response_updates_outdated'] = '¡Anticuado!'; -$phpMussel['lang']['response_updates_outdated_manually'] = '¡Anticuado (por favor, actualizar manualmente)!'; -$phpMussel['lang']['response_updates_outdated_php_version'] = '¡Anticuado (requiere PHP {V})!'; -$phpMussel['lang']['response_updates_unable_to_determine'] = 'Incapaz de determinar.'; -$phpMussel['lang']['response_upload_error'] = '¡No se pudo subir!'; -$phpMussel['lang']['state_complete_access'] = 'Acceso completo'; -$phpMussel['lang']['state_component_is_active'] = 'Componente está activo.'; -$phpMussel['lang']['state_component_is_inactive'] = 'Componente está inactivo.'; -$phpMussel['lang']['state_component_is_provisional'] = 'Componente está provisional.'; -$phpMussel['lang']['state_default_password'] = '¡Advertencia: Usando la contraseña estándar!'; -$phpMussel['lang']['state_logged_in'] = 'Conectado.'; -$phpMussel['lang']['state_logs_access_only'] = 'Acceso de registros solamente'; -$phpMussel['lang']['state_maintenance_mode'] = 'Advertencia: ¡El modo de mantenimiento está activado!'; -$phpMussel['lang']['state_password_not_valid'] = '¡Advertencia: Esta cuenta no está utilizando una contraseña válida!'; -$phpMussel['lang']['state_quarantine'] = ['Hay %s archivo actualmente en cuarentena.', 'Hay %s archivos actualmente en cuarentena.']; -$phpMussel['lang']['switch-hide-non-outdated-set-false'] = 'No ocultar no anticuado'; -$phpMussel['lang']['switch-hide-non-outdated-set-true'] = 'Ocultar no anticuado'; -$phpMussel['lang']['switch-hide-unused-set-false'] = 'No ocultar no utilizado'; -$phpMussel['lang']['switch-hide-unused-set-true'] = 'Ocultar no utilizado'; -$phpMussel['lang']['tip_accounts'] = 'Hola, {username}.
        La página de cuentas permite controlar controlar quién puede acceder al phpMussel front-end.'; -$phpMussel['lang']['tip_config'] = 'Hola, {username}.
        La página de configuración permite modificar la configuración para phpMussel desde el front-end.'; -$phpMussel['lang']['tip_donate'] = 'phpMussel se ofrece de forma gratuita, pero si quieres donar al proyecto, puede hacerlo haciendo clic en el botón donar.'; -$phpMussel['lang']['tip_file_manager'] = 'Hola, {username}.
        El administración de archivos permite eliminar, editar, subir y descargar de archivos. Utilizar con precaución (podría romper su instalación con esto).'; -$phpMussel['lang']['tip_home'] = 'Hola, {username}.
        Esta es la página principal para el front-end de phpMussel. Seleccione un enlace en el menú de navegación de la izquierda para continuar.'; -$phpMussel['lang']['tip_login'] = 'El usuario estándar: admin – La contraseña estándar: password'; -$phpMussel['lang']['tip_logs'] = 'Hola, {username}.
        Seleccionar un archivo de registro de la lista siguiente para ver el contenido de ese archivo de registro.'; -$phpMussel['lang']['tip_quarantine'] = 'Hola, {username}.
        Esta página enumera todos los archivos actualmente en cuarentena y facilita la administración de esos archivos.'; -$phpMussel['lang']['tip_quarantine_disabled'] = 'Nota: La cuarentena está actualmente deshabilitada, pero puede habilitarse a través de la página de configuración.'; -$phpMussel['lang']['tip_see_the_documentation'] = 'Ver la documentación para obtener información sobre las distintas directivas de la configuración y sus propósitos.'; -$phpMussel['lang']['tip_statistics'] = 'Hola, {username}.
        Esta página muestra algunas estadísticas de uso básicas relacionadas con la instalación de phpMussel.'; -$phpMussel['lang']['tip_statistics_disabled'] = 'Nota: El seguimiento de estadísticas está actualmente deshabilitado, pero se puede habilitar a través de la página de configuración.'; -$phpMussel['lang']['tip_updates'] = 'Hola, {username}.
        La página de actualizaciones permite instalar, desinstalar y actualizar los diversos componentes de phpMussel (el paquete básico, firmas, plugins, archivos de L10N, etc).'; -$phpMussel['lang']['tip_upload_test'] = 'Hola, {username}.
        La página para subir pruebas contiene un formulario de subir de archivos estándar, permite probar si un archivo normalmente se bloquea por phpMussel cuando intentar subirlo.'; -$phpMussel['lang']['title_accounts'] = 'phpMussel – Cuentas'; -$phpMussel['lang']['title_config'] = 'phpMussel – Configuración'; -$phpMussel['lang']['title_file_manager'] = 'phpMussel – Administración de Archivos'; -$phpMussel['lang']['title_home'] = 'phpMussel – Página Principal'; -$phpMussel['lang']['title_login'] = 'phpMussel – Login'; -$phpMussel['lang']['title_logs'] = 'phpMussel – Archivos de Registro'; -$phpMussel['lang']['title_quarantine'] = 'phpMussel – Cuarentena'; -$phpMussel['lang']['title_statistics'] = 'phpMussel – Estadística'; -$phpMussel['lang']['title_updates'] = 'phpMussel – Actualizaciones'; -$phpMussel['lang']['title_upload_test'] = 'phpMussel – Subir Prueba'; -$phpMussel['lang']['warning'] = 'Advertencias:'; -$phpMussel['lang']['warning_php_1'] = '¡Su versión de PHP no es apoyado activamente más! Se recomienda actualizar!'; -$phpMussel['lang']['warning_php_2'] = '¡Su versión de PHP es muy vulnerable! Se recomienda encarecidamente actualizar!'; -$phpMussel['lang']['warning_signatures_1'] = '¡No hay archivos de firma activos!'; - -$phpMussel['lang']['info_some_useful_links'] = 'Algunos enlaces útiles:
          -
        • Los problemas de phpMussel @ GitHub – Página de problemas para phpMussel (apoyo, asistencia, etc).
        • -
        • phpMussel @ Spambot Security – Foro de discusión para phpMussel (apoyo, asistencia, etc).
        • -
        • phpMussel @ SourceForge – Alternative download mirror for phpMussel.
        • -
        • WebSecTools.com – Una colección de sencillas herramientas de webmaster para proteger sitios web.
        • -
        • ClamavNet – Página principal de ClamAV (ClamAV® es un motor antivirus de código abierto para detectar troyanos, virus, malware y otras amenazas maliciosas).
        • -
        • SecuriteInfo.com – Compañía de seguridad informática que ofrece firmas complementarias para ClamAV.
        • -
        • PhishTank – Base de datos de phishing utilizada por el escáner URL de phpMussel.
        • -
        • Global PHP Group @ Facebook – PHP recursos de aprendizaje y discusión.
        • -
        • PHP.earth – PHP recursos de aprendizaje y discusión.
        • -
        • VirusTotal – VirusTotal es un servicio gratuito para analizar archivos y URL sospechosos.
        • -
        • Hybrid Analysis – Hybrid Analysis es un servicio gratuito para analizar malware proporcionado por Payload Security.
        • -
        • Malwarebytes – Especialistas informáticos contra malware.
        • -
        • MalwareTips – Útiles foros de discusión enfocados en el malware.
        • -
        • Listas de vulnerabilidades – Lista las versiones seguras/inseguras de varios paquetes (PHP, HHVM, etc).
        • -
        • Listas de compatibilidades – Lista información de compatibilidad para varios paquetes (CIDRAM, phpMussel, etc).
        • -
        '; diff --git a/libraries/plugins/phpMussel/vault/lang/lang.es.php b/libraries/plugins/phpMussel/vault/lang/lang.es.php deleted file mode 100644 index 5dd470a..0000000 --- a/libraries/plugins/phpMussel/vault/lang/lang.es.php +++ /dev/null @@ -1,127 +0,0 @@ -Page d\'Accueil | Déconnecter'; -$phpMussel['lang']['bNav_logout'] = 'Déconnecter'; -$phpMussel['lang']['config_attack_specific_archive_file_extensions'] = 'Les extensions de fichiers d\'archives reconnus (format est CSV ; devraient ajouter ou supprimer seulement quand problèmes surviennent ; supprimer inutilement peut entraîner des faux positifs à paraître pour archive fichiers, tandis que ajoutant inutilement sera essentiellement liste blanche ce que vous ajoutez à partir de l\'attaque spécifique détection ; modifier avec prudence ; aussi noter que cela n\'a aucun effet sur ce archives peut et ne peut pas être analysé au niveau du contenu). La liste, comme en cas de défaut, énumère les formats plus couramment utilisé dans la majorité des systèmes et CMS, mais volontairement pas nécessairement complète.'; -$phpMussel['lang']['config_attack_specific_block_control_characters'] = 'Bloquer tous les fichiers contenant les caractères de contrôle (autre que les sauts de ligne) ? ([\x00-\x08\x0b\x0c\x0e\x1f\x7f]) Si vous êtes SEULEMENT télécharger de brut texte fichiers, puis vous pouvez activer cette option à fournir une supplémentaire protection à votre système. Mais, si vous télécharger quelque chose plus que brut texte, l\'activation de cette peut créer faux positifs. False = Ne pas bloquer [Défaut] ; True = Bloquer.'; -$phpMussel['lang']['config_attack_specific_chameleon_from_exe'] = 'Vérifier pour les headers d\'exécutables dans les fichiers qui ne sont pas fichiers exécutable ni reconnue comme archives et pour exécutables dont headers sont incorrects. False = Désactivé; True = Activé.'; -$phpMussel['lang']['config_attack_specific_chameleon_from_php'] = 'Vérifier pour les header PHP dans les fichiers qui ne sont pas de PHP ni reconnue comme archives. False = Désactivé; True = Activé.'; -$phpMussel['lang']['config_attack_specific_chameleon_to_archive'] = 'Vérifier pour les archives dont headers sont incorrects (Supporté : BZ, GZ, RAR, ZIP, RAR, GZ). False = Désactivé; True = Activé.'; -$phpMussel['lang']['config_attack_specific_chameleon_to_doc'] = 'Vérifier pour les documents office dont headers sont incorrects (Supporté : DOC, DOT, PPS, PPT, XLA, XLS, WIZ). False = Désactivé; True = Activé.'; -$phpMussel['lang']['config_attack_specific_chameleon_to_img'] = 'Vérifier pour les images dont headers sont incorrects (Supporté : BMP, DIB, PNG, GIF, JPEG, JPG, XCF, PSD, PDD, WEBP). False = Désactivé; True = Activé.'; -$phpMussel['lang']['config_attack_specific_chameleon_to_pdf'] = 'Vérifier pour les fichiers PDF dont headers sont incorrects. False = Désactivé; True = Activé.'; -$phpMussel['lang']['config_attack_specific_corrupted_exe'] = 'Fichiers corrompus et erreurs d\'analyse. False = Ignorer ; True = Bloquer [Défaut]. Détecter et bloquer les fichiers PE (Portable Executable) potentiellement corrompus ? Souvent (mais pas toujours), lorsque certains aspects d\'un fichier PE sont corrompus ou ne peut pas être analysée correctement, il peut être le signe d\'une infection virale. Les processus utilisés par la plupart des programmes anti-virus pour détecter les virus dans fichiers PE requérir l\'analyse de ces fichiers par méthodes certaines, de ce que, si le programmeur d\'un virus est conscient de, seront spécifiquement tenter d\'empêcher, en vue de permettre leur virus n\'être pas détectée.'; -$phpMussel['lang']['config_attack_specific_decode_threshold'] = 'Seuil à la longueur de brutes données dans laquelle commandes des décodages doivent être détectés (dans le cas où il ya remarquable performance problèmes au cours de l\'analyse). Défaut = 512Ko. Zéro ou nulle valeur désactive le seuil (supprimant toute restriction basé sur la taille du fichier).'; -$phpMussel['lang']['config_attack_specific_scannable_threshold'] = 'Seuil à la longueur de données brutes dans laquelle phpMussel est autorisé à lire et à analyser (dans le cas où il ya remarquable performance problèmes au cours de l\'analyse). Défaut = 32Mo. Zéro ou nulle valeur désactive le seuil. En général, cette valeur ne doit pas être moins que la moyenne tailles des fichiers des téléchargements que vous voulez et s\'attendent à recevoir de votre serveur ou site web, ne devrait pas être plus que la filesize_limit directive, et ne devrait pas être plus que d\'un cinquième de l\'allocation de totale mémoire autorisée à PHP via le "php.ini" fichier de configuration. Cette directive existe pour tenter d\'empêcher phpMussel d\'utiliser trop de mémoire (ce qui l\'empêcherait d\'être capable d\'analyse fichiers dessus d\'une certaine taille avec succès).'; -$phpMussel['lang']['config_compatibility_ignore_upload_errors'] = 'Cette directive doit généralement être DÉSACTIVÉ sauf si cela est nécessaire pour la correcte fonctionnalité de phpMussel sur votre spécifique système. Normalement, lorsque DÉSACTIVÉ, lorsque phpMussel détecte la présence d\'éléments dans le $_FILES() tableau, il va tenter de lancer une analyse du fichiers que ces éléments représentent, et, si ces éléments sont vide, phpMussel retourne un message d\'erreur. Ce comportement est normal pour phpMussel. Mais, pour certains CMS, vides éléments dans $_FILES peuvent survenir à la suite du naturel comportement de ces CMS, ou erreurs peuvent être signalés quand il ne sont pas tout, dans ce cas, le normal comportement pour phpMussel seront interférer avec le normal comportement de ces CMS. Si telle une situation se produit pour vous, ACTIVATION de cette option sera instruire phpMussel ne pas à tenter de lancer d\'analyses pour ces vides éléments, ignorer quand il est reconnu et ne pas à retourner tout de connexes messages d\'erreur, permettant ainsi la continuation de la page demande. False = DÉSACTIVÉ; True = ACTIVÉ.'; -$phpMussel['lang']['config_compatibility_only_allow_images'] = 'Si vous seulement attendre ou vouloir d\'autoriser images à être téléchargé sur votre système ou CMS, et si vous absolument n\'avez pas besoin tous les fichiers autres que les images à être téléchargé sur votre système ou CMS, cette directive devrait être ACTIVÉ, mais devrait autrement être DÉSACTIVÉ. Si cette directive est ACTIVÉ, il va instruire phpMussel à bloquer indistinctement tous téléchargements identifié comme non image fichiers, sans analyser. Cela peut réduire le temps de travail et l\'utilisation de la mémoire pour les tentativé téléchargements de non image fichiers. False = DÉSACTIVÉ; True = ACTIVÉ.'; -$phpMussel['lang']['config_files_block_encrypted_archives'] = 'Détecter et bloquer les archives cryptées ? Parce phpMussel est pas capable d\'analyse du contenu des archives cryptées, il est possible que le cryptage des archives peut être utilisé par un attaquant un moyen a tenter de contourner phpMussel, analyseurs anti-virus et d\'autres protections. Instruire phpMussel pour bloquer toutes les archives cryptées qu\'il découvre pourrait aider à réduire les risques associés à ces possibilités. False = Non ; True = Oui [Défaut].'; -$phpMussel['lang']['config_files_check_archives'] = 'Essayer vérifier les contenus des archives ? False = Non (ne pas vérifier) ; True = Oui (vérifier) [Défaut]. En ce moment, les seuls formats d\'archives et de compression supporté sont BZ/BZIP2, GZ/GZIP, LZF, PHAR, TAR et ZIP (les formats d\'archives et de compression RAR, CAB, 7z et etc ne sont pas supporté en ce moment). Ce n\'est pas à toute épreuve ! Bien que je recommande fortement d\'avoir ce reste activée, je ne peux pas garantir il va toujours trouver tout. Aussi être conscient que l\'examen d\'archives actuellement n\'est pas récursif pour PHARs ou ZIPs formats.'; -$phpMussel['lang']['config_files_filesize_archives'] = 'Étendre taille du fichier liste noire/blanche paramètres à le contenu des archives ? False = Non (énumérer grise tout) ; True = Oui [Défaut].'; -$phpMussel['lang']['config_files_filesize_limit'] = 'Limite de taille des fichiers en Ko. 65536 = 64Mo [Défaut] ; 0 = Pas limite (toujours en liste grise), tout (positif) valeur numérique acceptée. Cela peut être utile lorsque votre configuration de PHP limite la quantité de mémoire qu\'un processus peut contenir ou si votre configuration de PHP limite la taille du fichier téléchargements.'; -$phpMussel['lang']['config_files_filesize_response'] = 'Que faire avec des fichiers qui dépassent la limite de taille des fichiers (si existant). False = Énumérer Blanche ; True = Énumérer Noire [Défaut].'; -$phpMussel['lang']['config_files_filetype_archives'] = 'Étendre type de fichier liste noire/blanche paramètres à le contenu des archives ? False = Non (énumérer grise tout) ; True = Oui [Défaut].'; -$phpMussel['lang']['config_files_filetype_blacklist'] = 'Liste Noire :'; -$phpMussel['lang']['config_files_filetype_greylist'] = 'Liste Gris :'; -$phpMussel['lang']['config_files_filetype_whitelist'] = 'Si votre système permettre seulement particuliers types des fichiers à être téléchargé, ou si votre système nie explicitement particuliers types des fichiers, spécifiant les types des fichiers dans listes blanches, listes noires et listes gris peut augmenter la vitesse à laquelle l\'analyse est effectuée en permettant le script à sauter particuliers types des fichiers. Format est CSV (virgule séparées valeurs). Si vous souhaitez analyse tout, plutôt que de liste blanche, liste noire ou liste gris, laisser les variable(/s) blanc ; Il va désactiver liste blanche/noire/gris. L\'ordre logique de l\'application est : Si le type de fichier est listé blanche, n\'analyser pas ni bloquer pas le fichier, et ne vérifie pas le fichier contre la liste noire ou la liste grise. Si le type de fichier est listé noire, n\'analyser pas le fichier mais bloquer de toute façon, et ne vérifie pas le fichier contre la liste grise. Si la liste grise est vide ou si la liste grise n\'est vide pas et le type de fichier est listé grise, analyser le fichier comme d\'habitude et déterminer si de bloquer basés des résultats de l\'analyse, mais si la liste grise n\'est vide pas et le type de fichier n\'est listé grise pas, traiter le fichier comme listé noire, donc n\'analyse pas mais bloque de toute façon. Liste Blanche :'; -$phpMussel['lang']['config_files_max_recursion'] = 'Maximum récursivité profondeur limite pour archives. Défaut = 10.'; -$phpMussel['lang']['config_files_max_uploads'] = 'Maximum admissible nombre de fichiers pour analyse lorsque l\'analyse de fichier téléchargements avant d\'abandonner l\'analyse et informer l\'utilisateur qu\'ils sont téléchargement trop à la fois! Fournit protection contre une théorique attaque par lequel un attaquant tente à DDoS votre système ou CMS par surchargeant phpMussel à ralentir le processus de PHP à une halte. Recommandé : 10. Vous pouvez désirer d\'augmenter ou diminuer ce nombre dépendamment de la vitesse de votre hardware. Notez que ce nombre ne tient pas compte pour ou inclure le contenus des archives.'; -$phpMussel['lang']['config_general_cleanup'] = 'Déensemble variables du script et cache après l\'exécution ? False = Non ; True = Oui [Défaut]. Si vous ne utilisez pas le script au-delà l\'initiale analyse du téléchargements, devrait ensemble à true (oui) à minimiser l\'utilisation de la mémoire. Si vous utilisez le script à des fins au-delà l\'initiale analyse du téléchargements, devrait ensemble à false (non), pour éviter recharger inutilement dupliqué données dans la mémoire. Dans la pratique générale, il devrait probablement être ensemblé à true, mais, si vous faites cela, vous ne serez pas être capable d\'utiliser le script pour tout chose autre que l\'analyse des fichiers téléchargements. N\'a pas d\'influence en le mode CLI.'; -$phpMussel['lang']['config_general_default_algo'] = 'Définit quel algorithme utiliser pour tous les mots de passe et les sessions à l\'avenir. Options : PASSWORD_DEFAULT (défaut), PASSWORD_BCRYPT, PASSWORD_ARGON2I (nécessite PHP >= 7.2.0).'; -$phpMussel['lang']['config_general_delete_on_sight'] = 'Mise en cette option sera instruire le script à tenter immédiatement supprimer tout fichiers elle constate au cours de son analyse correspondant à des critères de détection, que ce soit via des signatures ou autrement. Fichiers jugées propre ne seront pas touchés. Dans le cas des archives, l\'ensemble d\'archive sera supprimé (indépendamment de si le incriminé fichier est que l\'un de plusieurs fichiers contenus dans l\'archive). Pour le cas d\'analyse de fichiers téléchargement, généralement, il n\'est pas nécessaire d\'activer cette option sur, parce généralement, PHP faire purger automatiquement les contenus de son cache lorsque l\'exécution est terminée, ce qui signifie que il va généralement supprimer tous les fichiers téléchargés à travers elle au serveur sauf qu\'ils ont déménagé, copié ou supprimé déjà. L\'option est ajoutée ici comme une supplémentaire mesure de sécurité pour ceux dont copies de PHP peut pas toujours se comporter de la manière attendu. False = Après l\'analyse, laissez le fichier tel quel [Défaut] ; True = Après l\'analyse, si pas propre, supprimer immédiatement.'; -$phpMussel['lang']['config_general_disable_cli'] = 'Désactiver le mode CLI ? Le mode CLI est activé par défaut, mais peut parfois interférer avec certains test outils (comme PHPUnit, par exemple) et d\'autres applications basées sur CLI. Si vous n\'avez pas besoin désactiver le mode CLI, vous devrait ignorer cette directive. False = Activer le mode CLI [Défaut] ; True = Désactiver le mode CLI.'; -$phpMussel['lang']['config_general_disable_frontend'] = 'Désactiver l\'accès frontal ? L\'accès frontal peut rendre phpMussel plus facile à gérer, mais peut aussi être un risque potentiel pour la sécurité. Il est recommandé de gérer phpMussel via le back-end chaque fois que possible, mais l\'accès frontal est prévu pour quand il est impossible. Seulement activer si vous avez besoin. False = Activer l\'accès frontal ; True = Désactiver l\'accès frontal [Défaut].'; -$phpMussel['lang']['config_general_disable_webfonts'] = 'Désactiver les webfonts ? True = Oui ; False = Non [Défaut].'; -$phpMussel['lang']['config_general_enable_plugins'] = 'Permettre le support pour les plugins du phpMussel ? False = Non [Défaut] ; True = Oui.'; -$phpMussel['lang']['config_general_forbid_on_block'] = 'Devrait phpMussel envoyer 403 headers avec le fichier téléchargement bloqué message, ou rester avec l\'habitude 200 bien (200 OK) ? False = Non (200) ; True = Oui (403) [Défaut].'; -$phpMussel['lang']['config_general_FrontEndLog'] = 'Fichier pour l\'enregistrement des tentatives de connexion à l\'accès frontal. Spécifier un fichier, ou laisser vide à désactiver.'; -$phpMussel['lang']['config_general_honeypot_mode'] = 'Quand le honeypot mode est activé, phpMussel va tenter de mettre en quarantaine tous les fichier téléchargements ce qu\'il rencontre, indépendamment de si oui ou non le fichier en cours de téléchargement correspond à signature inclus, et aucune réelle analyse de ces fichier téléchargements tentatives va arriver. Cette fonctionnalité devrait être utile pour ceux qui souhaitent utiliser phpMussel pour des fins de logiciels malveillants ou virus recherche, mais il pas n\'est recommandé d\'activer cette fonctionnalité si l\'utilisation prévue de phpMussel par l\'utilisateur est l\'analyse de fichier téléchargements comme la norme, ni est-il recommandé d\'utiliser la honeypot fonctionnalité pour fins autres que celles du honeypot. Par défaut, cette option est désactivée. False = Désactivé [Défaut] ; True = Activé.'; -$phpMussel['lang']['config_general_ipaddr'] = 'Où trouver l\'adresse IP de demandes de connexion ? (Utile pour services tels que Cloudflare et similaires) Par Défaut = REMOTE_ADDR. AVERTISSEMENT : Ne pas changer si vous ne sais pas ce que vous faites !'; -$phpMussel['lang']['config_general_lang'] = 'Spécifiez la langue défaut pour phpMussel.'; -$phpMussel['lang']['config_general_maintenance_mode'] = 'Activer le mode de maintenance ? True = Oui ; False = Non [Défaut]. Désactive tout autre que l\'accès frontal. Parfois utile pour la mise à jour de votre CMS, des frameworks, etc.'; -$phpMussel['lang']['config_general_max_login_attempts'] = 'Nombre maximal de tentatives de connexion (l\'accès frontal). Défaut = 5.'; -$phpMussel['lang']['config_general_numbers'] = 'Comment préférez-vous que les nombres soient affichés ? Sélectionnez l\'exemple qui vous paraît le plus approprié.'; -$phpMussel['lang']['config_general_quarantine_key'] = 'phpMussel est capable de mettre en quarantaine le marqué fichier téléchargement tentatives en isolement au sein de la voûte de phpMussel, si cela est quelque chose que vous voulez qu\'il fasse. L\'utilisateurs de phpMussel qui souhaitent simplement de protéger leurs sites ou environnement d\'hébergement sans avoir un profondément intérêt dans d\'analyse de quelconque marqué fichier téléchargement tentatives devrait laisser cette fonctionnalité désactivée, mais tous les utilisateurs intéressés dans d\'analyse plus approfondie de tenté fichier téléchargements pour la recherche des logiciels malveillants ou pour des choses semblables devraient permettre cette fonctionnalité. La quarantaine de marqué fichier téléchargement tentatives peut parfois aider également dans le débogage des faux positifs, si cela est quelque chose qui se produit fréquemment pour vous. Pour désactiver la fonctionnalité de quarantaine, il suffit de laisser la directive quarantine_key vide, ou effacer le contenu de cette directive si elle est pas déjà vide. Pour activer la fonctionnalité de quarantaine, entrer une valeur dans la directive. Le quarantine_key est une élément important de la sécurité de la fonctionnalité de quarantaine requis en tant que moyen de prévention de la fonctionnalité de quarantaine d\'être exploités par des attaquants potentiels en tant que moyen de prévention toute potentielle exécution de données stockées dans la quarantaine. Le quarantine_key devrait être traité de la même manière que vos mots de passe : Le plus sera le mieux, et conservez-le bien. Pour un meilleur effet, utiliser en conjonction avec delete_on_sight.'; -$phpMussel['lang']['config_general_quarantine_max_filesize'] = 'La maximum taille autorisée de fichiers mis en quarantaine. Fichiers au-dessus de cette valeur ne sera pas placé en quarantaine. Cette directive est un important moyen de rendre plus difficile pour des agresseurs potentiels d\'inonder votre quarantaine avec des données non désirées ce qui pourrait causer l\'emballement d\'utilisation des données sur votre service d\'hébergement. Défaut = 2Mo.'; -$phpMussel['lang']['config_general_quarantine_max_usage'] = 'La maximale utilisation autorisée de la mémoire pour la quarantaine. Si la totale d\'utilisée mémoire par la quarantaine atteint cette valeur, les anciens fichiers en quarantaine seront supprimés jusqu\'à ce que la totale mémoire utilisée n\'atteint pas cette valeur. Cette directive est un important moyen de rendre plus difficile pour des agresseurs potentiels d\'inonder votre quarantaine avec des données non désirées ce qui pourrait causer l\'emballement d\'utilisation des données sur votre service d\'hébergement. Défaut = 64Mo.'; -$phpMussel['lang']['config_general_scan_cache_expiry'] = 'Pour combien de temps devrait phpMussel cache les résultats de l\'analyse ? La valeur est le nombre de secondes pour mettre en cache les résultats de l\'analyse pour. Par défaut est 21600 secondes (6 heures) ; Une valeur de 0 désactive mettre en cache les résultats de l\'analyse.'; -$phpMussel['lang']['config_general_scan_kills'] = 'Nom du fichier à enregistrer tous les résultats de bloqué ou tué téléchargements. Spécifiez un nom de fichier, ou laisser vide à désactiver.'; -$phpMussel['lang']['config_general_scan_log'] = 'Nom du fichier à enregistrer tous les résultats de l\'analyse. Spécifiez un nom de fichier, ou laisser vide à désactiver.'; -$phpMussel['lang']['config_general_scan_log_serialized'] = 'Nom du fichier à enregistrer tous les résultats de l\'analyse (le format est sérialisé). Spécifiez un nom de fichier, ou laisser vide à désactiver.'; -$phpMussel['lang']['config_general_statistics'] = 'Suivre les statistiques d\'utilisation pour phpMussel ? True = Oui ; False = Non [Défaut].'; -$phpMussel['lang']['config_general_timeFormat'] = 'Le format de notation de la date/heure utilisé par phpMussel. Des options supplémentaires peuvent être ajoutées sur demande.'; -$phpMussel['lang']['config_general_timeOffset'] = 'Décalage horaire en minutes.'; -$phpMussel['lang']['config_general_timezone'] = 'Votre fuseau horaire.'; -$phpMussel['lang']['config_general_truncate'] = 'Tronquer les fichiers journaux lorsqu\'ils atteignent une certaine taille ? La valeur est la taille maximale en o/Ko/Mo/Go/To qu\'un fichier journal peut croître avant d\'être tronqué. La valeur par défaut de 0Ko désactive la troncature (les fichiers journaux peuvent croître indéfiniment). Remarque : S\'applique aux fichiers journaux individuels ! La taille des fichiers journaux n\'est pas considérée collectivement.'; -$phpMussel['lang']['config_heuristic_threshold'] = 'Il ya certaines signatures des phpMussel qui sont destinés à identifier des suspectes et potentiellement malveillants qualités des fichiers en cours de téléchargement sans en eux-mêmes identifier les fichiers en cours de téléchargement spécifiquement comme étant malveillants. Cette « threshold » (seuil) valeur raconte à phpMussel ce que le total maximum poids des suspectes et potentiellement malveillants qualités des fichiers en cours de téléchargement pour ce qui est admissible avant que ces fichiers doivent être signalées comme malveillant. La définition du poids dans ce contexte est le nombre total de suspectes et potentiellement malveillants qualités identifié. Par défaut, cette valeur sera fixée à 3. Une valeur inférieur va résulter généralement avec une fréquence supérieur de faux positifs mais une nombre supérieur de fichiers signalé comme malveillant, tandis que une valeur inférieur va résulter généralement avec une fréquence inférieur de faux positifs mais un nombre inférieur de fichiers signalé comme malveillant. Il est généralement préférable de laisser cette valeur à sa valeur défaut, sauf si vous rencontrez des problèmes qui sont liés à elle.'; -$phpMussel['lang']['config_signatures_Active'] = 'Une liste des fichiers de signatures active, délimitée par des virgules.'; -$phpMussel['lang']['config_signatures_detect_adware'] = 'Devrait phpMussel utiliser signatures pour détecter les adwares ? False = Non ; True = Oui [Défaut].'; -$phpMussel['lang']['config_signatures_detect_deface'] = 'Devrait phpMussel utiliser signatures pour détecter les defacements and defacers ? False = Non ; True = Oui [Défaut].'; -$phpMussel['lang']['config_signatures_detect_encryption'] = 'Devrait phpMussel détecter et bloquer les fichiers cryptés ? False = Non ; True = Oui [Défaut].'; -$phpMussel['lang']['config_signatures_detect_joke_hoax'] = 'Devrait phpMussel utiliser signatures pour détecter les blagues/canulars malware/virus ? False = Non ; True = Oui [Défaut].'; -$phpMussel['lang']['config_signatures_detect_packer_packed'] = 'Devrait phpMussel utiliser signatures pour détecter les emballeurs et des données emballés ? False = Non ; True = Oui [Défaut].'; -$phpMussel['lang']['config_signatures_detect_pua_pup'] = 'Devrait phpMussel utiliser signatures pour détecter les PUAs/PUPs ? False = Non ; True = Oui [Défaut].'; -$phpMussel['lang']['config_signatures_detect_shell'] = 'Devrait phpMussel utiliser signatures pour détecter les scripts shell ? False = Non ; True = Oui [Défaut].'; -$phpMussel['lang']['config_signatures_fail_extensions_silently'] = 'Devrait phpMussel signaler quand les extensions sont manquantes ? Si fail_extensions_silently est désactivé, extensions manquantes seront signalé sur analyse, et si fail_extensions_silently est activé, extensions manquantes seront ignorés, avec l\'analyse signalés pour ceux fichiers qu\'il n\'y a pas de problèmes. La désactivation de cette directive peut potentiellement augmenter votre sécurité, mais peut aussi conduire à une augmentation de faux positifs. False = Désactivé ; True = Activé [Défaut].'; -$phpMussel['lang']['config_signatures_fail_silently'] = 'Devrait phpMussel signaler quand les extensions sont manquantes ? Si fail_extensions_silently est désactivé, extensions manquantes seront signalé sur analyse, et si fail_extensions_silently est activé, extensions manquantes seront ignorés, avec l\'analyse signalés pour ceux fichiers qu\'il n\'y a pas de problèmes. La désactivation de cette directive peut potentiellement augmenter votre sécurité, mais peut aussi conduire à une augmentation de faux positifs. False = Désactivé ; True = Activé [Défaut].'; -$phpMussel['lang']['config_template_data_css_url'] = 'Le modèle fichier pour des thèmes personnalisés utilise les propriétés CSS externes, tandis que le modèle fichier pour le défaut thème utilise les propriétés CSS internes. Pour instruire phpMussel d\'utiliser le modèle fichier pour des thèmes personnalisés, spécifier l\'adresse HTTP public de votre thèmes personnalisés CSS fichiers utilisant le css_url variable. Si vous laissez cette variable vide, phpMussel va utiliser le modèle fichier pour le défaut thème.'; -$phpMussel['lang']['config_template_data_Magnification'] = 'Grossissement des fontes. Défaut = 1.'; -$phpMussel['lang']['config_template_data_theme'] = 'Le thème à utiliser par défaut pour phpMussel.'; -$phpMussel['lang']['config_urlscanner_cache_time'] = 'Combien de temps (en secondes) devrait les résultats du cherches de l\'API être conservé dans le cache ? Défaut est 3600 secondes (1 heure).'; -$phpMussel['lang']['config_urlscanner_google_api_key'] = 'Permet cherches de l\'API Google Safe Browsing quand l\'API clé nécessaire est définie.'; -$phpMussel['lang']['config_urlscanner_lookup_hphosts'] = 'Permet cherches de l\'API hpHosts quand définit comme true.'; -$phpMussel['lang']['config_urlscanner_maximum_api_lookups'] = 'Nombre de cherches maximal de l\'API pour effectuer par itération d\'analyse individuelle. Parce que chaque API cherche supplémentaire va ajouter à la durée totale requise pour compléter chaque itération d\'analyse, vous pouvez prévoir une limitation afin d\'accélérer le processus d\'analyse. Quand défini comme 0, pas de telles nombre maximum admissible sera appliquée. Défini comme 10 par défaut.'; -$phpMussel['lang']['config_urlscanner_maximum_api_lookups_response'] = 'Que faire si le nombre de cherches de l\'API maximal est dépassée ? False = Ne fais rien (poursuivre le traitement) [Défaut] ; True = Marque/bloquer le fichier.'; -$phpMussel['lang']['config_virustotal_vt_public_api_key'] = 'Facultativement, phpMussel est capable d\'analyser les fichiers en utilisant le Virus Total API comme un moyen de fournir un renforcée niveau de protection contre les virus, trojans, logiciels malveillants et autres menaces. Par défaut, l\'analyse des fichiers en utilisant le Virus Total API est désactivé. Pour activer, une Total Virus API clé est nécessaire. En raison de le significative avantage que cela pourrait fournir pour vous, il est quelque chose que je recommande fortement pour l\'activer. S\'il vous plaît être conscient, cependant, que pour utiliser le Virus Total API, vous DEVEZ accepter leurs conditions d\'utilisation (Terms of Service) et vous DEVEZ respecter toutes les directives selon décrit par la documentation Virus Total ! Vous N\'ÊTES PAS autorisé à utiliser cette fonctionnalité SAUF SI : Vous avez lu et accepté les Conditions d\'Utilisation (Terms of Service) de Total Virus et son API. Vous avez lu et vous comprendre, au minimum, le préambule du Virus Total Publique API documentation (tout ce qui suit « VirusTotal Public API v2.0 » mais avant « Contents »).'; -$phpMussel['lang']['config_virustotal_vt_quota_rate'] = 'Selon le Virus Total API documentation, elle est limitée à au plus 4 demandes de toute nature dans un laps de 1 minute de temps. Si vous exécutez un honeyclient, honeypot ou autre automatisation qui va fournir les ressources pour Virus Total et pas seulement récupérer des rapports vous avez droit à un plus élevée demande quota. Par défaut, phpMussel va adhérer strictement à ces limitations, mais en raison de la possibilité de ces quotas étant augmenté, ces deux directives sont fournies comme un moyen pour vous d\'instruire phpMussel à quelle limite il faut adhérer. Sauf si vous avez été invité à le faire, on ne recommande pas pour vous d\'augmenter ces valeurs, mais, si vous avez rencontré des problèmes relatifs à atteindre votre quota, diminuant ces valeurs PEUT parfois vous aider dans le traitement de ces problèmes. Votre quota est déterminée comme vt_quota_rate demandes de toute nature dans un laps de vt_quota_time minute de temps.'; -$phpMussel['lang']['config_virustotal_vt_quota_time'] = '(Voir description ci-dessus).'; -$phpMussel['lang']['config_virustotal_vt_suspicion_level'] = 'Par défaut, phpMussel va restreindre les fichiers de l\'analyse utilisant le Virus Total API à ces fichiers qu\'il juges comme soupçonneux. Facultativement, vous pouvez régler cette restriction par changeant la valeur de la vt_suspicion_level directive.'; -$phpMussel['lang']['config_virustotal_vt_weighting'] = 'Devrais phpMussel appliquer les résultats de l\'analyse en utilisant le Virus Total API comme détections ou comme pondération de détection ? Cette directive existe, parce que, quoique analyse d\'un fichier à l\'aide de plusieurs moteurs (comme Virus Total fait) devrait résulter en un augmenté taux de détection (et donc en un plus grand nombre de fichiers malveillants être détectés), il peut également résulter en un plus grand nombre de faux positifs, et donc, dans certaines circonstances, les résultats de l\'analyse peuvent être mieux utilisées comme un score de confiance plutôt que comme une conclusion définitive. Si la valeur 0 est utilisée, les résultats de l\'analyse en utilisant le Virus Total API seront être appliquées comme détections, et donc, si quelconque moteur utilisé par Virus Total marques le fichier analysé comme étant malveillants, phpMussel va considérer le fichier comme malveillant. Si quelconque autre valeur est utilisée, les résultats de l\'analyse en utilisant le Virus Total API sera appliquée comme pondération de détection, et donc, le nombre de moteurs utilisés par Total Virus que marque le fichier analysé comme étant malveillant sera servir un score de confiance (ou une pondération de détection) pour savoir si ou non le fichier êtant analysé devrait être considéré comme malveillant par phpMussel (la valeur utilisée représentera le minimum score de confiance ou le poids requis pour être considéré comme malveillant). Une valeur de 0 est utilisée par défaut.'; -$phpMussel['lang']['Extended Description: phpMussel'] = 'Le paquet principal (moins les signatures, la documentation et la configuration).'; -$phpMussel['lang']['field_activate'] = 'Activer'; -$phpMussel['lang']['field_clear_all'] = 'Annuler tout'; -$phpMussel['lang']['field_component'] = 'Composant'; -$phpMussel['lang']['field_create_new_account'] = 'Créer un nouveau compte'; -$phpMussel['lang']['field_deactivate'] = 'Désactiver'; -$phpMussel['lang']['field_delete_account'] = 'Supprimer le compte'; -$phpMussel['lang']['field_delete_all'] = 'Supprimer tout'; -$phpMussel['lang']['field_delete_file'] = 'Supprimer'; -$phpMussel['lang']['field_download_file'] = 'Télécharger'; -$phpMussel['lang']['field_edit_file'] = 'Modifier'; -$phpMussel['lang']['field_false'] = 'False (Faux)'; -$phpMussel['lang']['field_file'] = 'Fichier'; -$phpMussel['lang']['field_filename'] = 'Nom de fichier : '; -$phpMussel['lang']['field_filetype_directory'] = 'Répertoire'; -$phpMussel['lang']['field_filetype_info'] = '{EXT} Fichier'; -$phpMussel['lang']['field_filetype_unknown'] = 'Inconnu'; -$phpMussel['lang']['field_install'] = 'Installer'; -$phpMussel['lang']['field_latest_version'] = 'Dernière Version'; -$phpMussel['lang']['field_log_in'] = 'Connecter'; -$phpMussel['lang']['field_more_fields'] = 'Plus de Champs'; -$phpMussel['lang']['field_new_name'] = 'Nouveau nom :'; -$phpMussel['lang']['field_ok'] = 'D\'accord'; -$phpMussel['lang']['field_options'] = 'Options'; -$phpMussel['lang']['field_password'] = 'Mot de Passe'; -$phpMussel['lang']['field_permissions'] = 'Autorisations'; -$phpMussel['lang']['field_quarantine_key'] = 'Clé de quarantaine'; -$phpMussel['lang']['field_rename_file'] = 'Renommer'; -$phpMussel['lang']['field_reset'] = 'Réinitialiser'; -$phpMussel['lang']['field_restore_file'] = 'Restaurer'; -$phpMussel['lang']['field_set_new_password'] = 'Définir nouveau mot de passe'; -$phpMussel['lang']['field_size'] = 'Taille totale : '; -$phpMussel['lang']['field_size_bytes'] = ['octet', 'octets']; -$phpMussel['lang']['field_size_GB'] = 'Go'; -$phpMussel['lang']['field_size_KB'] = 'Ko'; -$phpMussel['lang']['field_size_MB'] = 'Mo'; -$phpMussel['lang']['field_size_TB'] = 'To'; -$phpMussel['lang']['field_status'] = 'Statut'; -$phpMussel['lang']['field_system_timezone'] = 'Utilisez le fuseau horaire par défaut du système.'; -$phpMussel['lang']['field_true'] = 'True (Vrai)'; -$phpMussel['lang']['field_uninstall'] = 'Désinstaller'; -$phpMussel['lang']['field_update'] = 'Mettre à jour'; -$phpMussel['lang']['field_update_all'] = 'Tout mettre à jour'; -$phpMussel['lang']['field_upload_file'] = 'Télécharger un nouveau fichier'; -$phpMussel['lang']['field_username'] = 'Nom d\'Utilisateur'; -$phpMussel['lang']['field_your_version'] = 'Votre Version'; -$phpMussel['lang']['header_login'] = 'Merci de vous connecter pour continuer.'; -$phpMussel['lang']['label_active_config_file'] = 'Fichier de configuration active : '; -$phpMussel['lang']['label_blocked'] = 'Téléchargements bloqués'; -$phpMussel['lang']['label_branch'] = 'Dernier stable de branche :'; -$phpMussel['lang']['label_events'] = 'événements d\'analyse'; -$phpMussel['lang']['label_flagged'] = 'Objets marqués'; -$phpMussel['lang']['label_fmgr_cache_data'] = 'Données cache et fichiers temporaires'; -$phpMussel['lang']['label_fmgr_disk_usage'] = 'Utilisation du disque par phpMussel : '; -$phpMussel['lang']['label_fmgr_free_space'] = 'Espace disque libre : '; -$phpMussel['lang']['label_fmgr_total_disk_usage'] = 'Utilisation du disque totale : '; -$phpMussel['lang']['label_fmgr_total_space'] = 'Espace disque total : '; -$phpMussel['lang']['label_fmgr_updates_metadata'] = 'Métadonnées pour la mise à jour des composants'; -$phpMussel['lang']['label_hide'] = 'Cacher'; -$phpMussel['lang']['label_os'] = 'Système opérateur utilisée :'; -$phpMussel['lang']['label_other'] = 'Autres'; -$phpMussel['lang']['label_other-Active'] = 'Fichiers de signatures actifs'; -$phpMussel['lang']['label_other-Since'] = 'Date de début'; -$phpMussel['lang']['label_php'] = 'Version PHP utilisée :'; -$phpMussel['lang']['label_phpmussel'] = 'Version phpMussel utilisée :'; -$phpMussel['lang']['label_quarantined'] = 'Téléchargements mis en quarantaine'; -$phpMussel['lang']['label_sapi'] = 'SAPI utilisée :'; -$phpMussel['lang']['label_scanned_objects'] = 'Objets analysés'; -$phpMussel['lang']['label_scanned_uploads'] = 'Téléchargements analysés'; -$phpMussel['lang']['label_show'] = 'Montrer'; -$phpMussel['lang']['label_size_in_quarantine'] = 'Taille en quarantaine : '; -$phpMussel['lang']['label_stable'] = 'Dernier stable :'; -$phpMussel['lang']['label_sysinfo'] = 'Informations sur le système :'; -$phpMussel['lang']['label_tests'] = 'Tests :'; -$phpMussel['lang']['label_unstable'] = 'Dernier instable :'; -$phpMussel['lang']['label_upload_date'] = 'Date de téléchargement : '; -$phpMussel['lang']['label_upload_hash'] = 'Hash de téléchargement : '; -$phpMussel['lang']['label_upload_origin'] = 'Origine du téléchargement : '; -$phpMussel['lang']['label_upload_size'] = 'Taille du téléchargement : '; -$phpMussel['lang']['link_accounts'] = 'Comptes'; -$phpMussel['lang']['link_config'] = 'Configuration'; -$phpMussel['lang']['link_documentation'] = 'Documentation'; -$phpMussel['lang']['link_file_manager'] = 'Gestionnaire de Fichiers'; -$phpMussel['lang']['link_home'] = 'Page d\'Accueil'; -$phpMussel['lang']['link_logs'] = 'Fichiers Journaux'; -$phpMussel['lang']['link_quarantine'] = 'Quarantaine'; -$phpMussel['lang']['link_statistics'] = 'Statistiques'; -$phpMussel['lang']['link_textmode'] = 'Formatage du texte : SimpleFormaté'; -$phpMussel['lang']['link_updates'] = 'Mises à Jour'; -$phpMussel['lang']['link_upload_test'] = 'Test de Télécharger'; -$phpMussel['lang']['logs_logfile_doesnt_exist'] = 'Le fichier journal sélectionné n\'existe pas !'; -$phpMussel['lang']['logs_no_logfiles_available'] = 'Aucun fichiers journaux disponibles.'; -$phpMussel['lang']['logs_no_logfile_selected'] = 'Aucun fichier journal sélectionné.'; -$phpMussel['lang']['max_login_attempts_exceeded'] = 'Nombre maximal de tentatives de connexion excédée ; Accès refusé.'; -$phpMussel['lang']['previewer_days'] = 'Journées'; -$phpMussel['lang']['previewer_hours'] = 'Heures'; -$phpMussel['lang']['previewer_minutes'] = 'Minutes'; -$phpMussel['lang']['previewer_months'] = 'Mois'; -$phpMussel['lang']['previewer_seconds'] = 'Secondes'; -$phpMussel['lang']['previewer_weeks'] = 'Semaines'; -$phpMussel['lang']['previewer_years'] = 'Années'; -$phpMussel['lang']['response_accounts_already_exists'] = 'Un compte avec ce nom d\'utilisateur existe déjà !'; -$phpMussel['lang']['response_accounts_created'] = 'Compte créé avec succès !'; -$phpMussel['lang']['response_accounts_deleted'] = 'Compte supprimé avec succès !'; -$phpMussel['lang']['response_accounts_doesnt_exist'] = 'Ce compte n\'existe pas.'; -$phpMussel['lang']['response_accounts_password_updated'] = 'Mot de passe mis à jour avec succès !'; -$phpMussel['lang']['response_activated'] = 'Activé avec succès.'; -$phpMussel['lang']['response_activation_failed'] = 'Échec de l\'activation !'; -$phpMussel['lang']['response_checksum_error'] = 'Erreur checksum ! Fichier rejeté !'; -$phpMussel['lang']['response_component_successfully_installed'] = 'Composant installé avec succès.'; -$phpMussel['lang']['response_component_successfully_uninstalled'] = 'Composant désinstallé avec succès.'; -$phpMussel['lang']['response_component_successfully_updated'] = 'Composant mise à jour avec succès.'; -$phpMussel['lang']['response_component_uninstall_error'] = 'Une erreur est survenue lors de la désinstallation du composant.'; -$phpMussel['lang']['response_configuration_updated'] = 'Configuration mis à jour avec succès.'; -$phpMussel['lang']['response_deactivated'] = 'Désactivé avec succès.'; -$phpMussel['lang']['response_deactivation_failed'] = 'Échec de la désactivation !'; -$phpMussel['lang']['response_delete_error'] = 'Échec du suppriment !'; -$phpMussel['lang']['response_directory_deleted'] = 'Répertoire supprimé avec succès !'; -$phpMussel['lang']['response_directory_renamed'] = 'Répertoire renommé avec succès !'; -$phpMussel['lang']['response_error'] = 'Erreur'; -$phpMussel['lang']['response_failed_to_install'] = 'Échec de l\'installation!'; -$phpMussel['lang']['response_failed_to_update'] = 'Échec de la mise à jour!'; -$phpMussel['lang']['response_file_deleted'] = 'Fichier supprimé avec succès !'; -$phpMussel['lang']['response_file_edited'] = 'Fichier modifié avec succès !'; -$phpMussel['lang']['response_file_renamed'] = 'Fichier renommé avec succès !'; -$phpMussel['lang']['response_file_restored'] = 'Fichier restauré avec succès !'; -$phpMussel['lang']['response_file_uploaded'] = 'Fichier téléchargé avec succès !'; -$phpMussel['lang']['response_login_invalid_password'] = 'Erreur de connexion ! Mot de passe incorrect !'; -$phpMussel['lang']['response_login_invalid_username'] = 'Erreur de connexion ! Nom d\'utilisateur n\'existe pas !'; -$phpMussel['lang']['response_login_password_field_empty'] = 'Mot de passe entrée était vide !'; -$phpMussel['lang']['response_login_username_field_empty'] = 'Nom d\'utilisateur entrée était vide !'; -$phpMussel['lang']['response_rename_error'] = 'Échec du renomment !'; -$phpMussel['lang']['response_restore_error_1'] = 'Échec de la restauration ! Fichier corrompu !'; -$phpMussel['lang']['response_restore_error_2'] = 'Échec de la restauration ! Clé de quarantaine incorrecte !'; -$phpMussel['lang']['response_statistics_cleared'] = 'Statistiques annulées.'; -$phpMussel['lang']['response_updates_already_up_to_date'] = 'Déjà mise à jour.'; -$phpMussel['lang']['response_updates_not_installed'] = 'Composant pas installé !'; -$phpMussel['lang']['response_updates_not_installed_php'] = 'Composant pas installé (il nécessite PHP {V}) !'; -$phpMussel['lang']['response_updates_outdated'] = 'Dépassé !'; -$phpMussel['lang']['response_updates_outdated_manually'] = 'Dépassé (s\'il vous plaît mettre à jour manuellement) !'; -$phpMussel['lang']['response_updates_outdated_php_version'] = 'Dépassé (il nécessite PHP {V}) !'; -$phpMussel['lang']['response_updates_unable_to_determine'] = 'Incapable de déterminer.'; -$phpMussel['lang']['response_upload_error'] = 'Échec du téléchargement !'; -$phpMussel['lang']['state_complete_access'] = 'Accès complet'; -$phpMussel['lang']['state_component_is_active'] = 'Le composant est actif.'; -$phpMussel['lang']['state_component_is_inactive'] = 'Le composant est inactif.'; -$phpMussel['lang']['state_component_is_provisional'] = 'Le composant est provisoire.'; -$phpMussel['lang']['state_default_password'] = 'Attention : Utilisant le mot de passe défaut !'; -$phpMussel['lang']['state_logged_in'] = 'Connecté.'; -$phpMussel['lang']['state_logs_access_only'] = 'Accès aux fichiers journaux seulement'; -$phpMussel['lang']['state_maintenance_mode'] = 'Avertissement : Le mode de maintenance est activé !'; -$phpMussel['lang']['state_password_not_valid'] = 'Attention : Ce compte n\'utilise un mot de passe valide !'; -$phpMussel['lang']['state_quarantine'] = ['Il y a %s fichier actuellement en quarantaine.', 'Il y a %s fichiers actuellement en quarantaine.']; -$phpMussel['lang']['switch-hide-non-outdated-set-false'] = 'Ne masquer pas non dépassé'; -$phpMussel['lang']['switch-hide-non-outdated-set-true'] = 'Masquer non dépassé'; -$phpMussel['lang']['switch-hide-unused-set-false'] = 'Ne masquer pas inutilisé'; -$phpMussel['lang']['switch-hide-unused-set-true'] = 'Masquer inutilisé'; -$phpMussel['lang']['tip_accounts'] = 'Bonjour, {username}.
        La page des comptes vous permet de contrôler qui peut accéder l\'accès frontal de phpMussel.'; -$phpMussel['lang']['tip_config'] = 'Bonjour, {username}.
        La page de configuration vous permet de modifier la configuration pour phpMussel à l\'accès frontal.'; -$phpMussel['lang']['tip_donate'] = 'phpMussel est offert gratuitement, mais si vous voulez faire un don au projet, vous pouvez le faire en cliquant sur le bouton don.'; -$phpMussel['lang']['tip_file_manager'] = 'Bonjour, {username}.
        Le gestionnaire de fichiers vous permet de supprimer, éditer et télécharger des fichiers. Utiliser avec précaution (vous pourriez casser votre installation avec ceci).'; -$phpMussel['lang']['tip_home'] = 'Bonjour, {username}.
        C\'est la page d\'accueil de l\'accès frontal de phpMussel. Sélectionnez un lien dans le menu de navigation à gauche pour continuer.'; -$phpMussel['lang']['tip_login'] = 'Nom d\'utilisateur défaut : admin – Mot de passe défaut : password'; -$phpMussel['lang']['tip_logs'] = 'Bonjour, {username}.
        Sélectionnez un fichier journal dans la liste ci-dessous pour afficher le contenu de ce fichier journal.'; -$phpMussel['lang']['tip_quarantine'] = 'Bonjour, {username}.
        Cette page répertorie tous les fichiers actuellement en quarantaine et facilite la gestion de ces fichiers.'; -$phpMussel['lang']['tip_quarantine_disabled'] = 'Remarque : La quarantaine est actuellement désactivée, mais peut être activée via la page de configuration.'; -$phpMussel['lang']['tip_see_the_documentation'] = 'Voir la documentation pour information sur les différentes directives de la configuration et leurs objectifs.'; -$phpMussel['lang']['tip_statistics'] = 'Bonjour, {username}.
        Cette page présente certaines statistiques d\'utilisation concernant votre installation pour phpMussel.'; -$phpMussel['lang']['tip_statistics_disabled'] = 'Remarque : Le suivi des statistiques est actuellement désactivé, mais peut être activé via la page de configuration.'; -$phpMussel['lang']['tip_updates'] = 'Bonjour, {username}.
        La page des mises à jour vous permet d\'installer, de désinstaller et de mettre à jour les différentes composantes de phpMussel (le paquet de base, signatures, plugins, fichiers de L10N, etc).'; -$phpMussel['lang']['tip_upload_test'] = 'Bonjour, {username}.
        La page pour tester les téléchargements contient un formulaire pour le téléchargement de fichiers standard, vous permettant de tester si un fichier serait normalement être bloqué par phpMussel quand vous essayez de le télécharger.'; -$phpMussel['lang']['title_accounts'] = 'phpMussel – Comptes'; -$phpMussel['lang']['title_config'] = 'phpMussel – Configuration'; -$phpMussel['lang']['title_file_manager'] = 'phpMussel – Gestionnaire de Fichiers'; -$phpMussel['lang']['title_home'] = 'phpMussel – Page d\'Accueil'; -$phpMussel['lang']['title_login'] = 'phpMussel – Connexion'; -$phpMussel['lang']['title_logs'] = 'phpMussel – Fichiers Journaux'; -$phpMussel['lang']['title_quarantine'] = 'phpMussel – Quarantaine'; -$phpMussel['lang']['title_statistics'] = 'phpMussel – Statistiques'; -$phpMussel['lang']['title_updates'] = 'phpMussel – Mises à Jour'; -$phpMussel['lang']['title_upload_test'] = 'phpMussel – Test de Télécharger'; -$phpMussel['lang']['warning'] = 'Avertissements :'; -$phpMussel['lang']['warning_php_1'] = 'Votre version PHP n\'est plus activement prise en charge ! La mise à jour est recommandée !'; -$phpMussel['lang']['warning_php_2'] = 'Votre version PHP est sévèrement vulnérable ! La mise à jour est fortement recommandée !'; -$phpMussel['lang']['warning_signatures_1'] = 'Il n\'y a pas fichiers du signatures actifs.'; - -$phpMussel['lang']['info_some_useful_links'] = 'Quelques liens utiles :
          -
        • Les problèmes de phpMussel @ GitHub – Page de problèmes pour phpMussel (soutien, assistance, etc).
        • -
        • phpMussel @ Spambot Security – Forum de discussion pour phpMussel (soutien, assistance, etc).
        • -
        • phpMussel @ SourceForge – Alternative download mirror for phpMussel.
        • -
        • WebSecTools.com – Une collection de simples outils webmaster pour sécuriser les sites Web.
        • -
        • ClamavNet – Page d\'accueil de ClamAV (ClamAV® est un moteur antivirus open source pour détecter les trojans, les virus, les logiciels malveillants et autres menaces malveillantes).
        • -
        • SecuriteInfo.com – Compagnie de sécurité informatique qui offre des signatures supplémentaires pour ClamAV.
        • -
        • PhishTank – Base de données d\'hameçonnage utilisée par le scanner URL de phpMussel.
        • -
        • Global PHP Group @ Facebook – Ressources d\'apprentissage PHP et discussion.
        • -
        • PHP.earth – Ressources d\'apprentissage PHP et discussion.
        • -
        • VirusTotal – VirusTotal est un service gratuit pour analyser les fichiers et les URL qui sont suspects.
        • -
        • Hybrid Analysis – Hybrid Analysis est un service gratuit pour l\'analyse des logiciels malveillants fourni par Payload Security.
        • -
        • Malwarebytes – Spécialistes en logiciels malveillants.
        • -
        • MalwareTips – Forum de discussion sur les logiciels malveillants.
        • -
        • Cartes de Vulnérabilité – Liste des versions sûres/dangereuses de divers paquets (PHP, HHVM, etc).
        • -
        • Cartes de Compatibilité – Liste des informations de compatibilité pour divers packages (CIDRAM, phpMussel, etc).
        • -
        '; diff --git a/libraries/plugins/phpMussel/vault/lang/lang.fr.php b/libraries/plugins/phpMussel/vault/lang/lang.fr.php deleted file mode 100644 index 431ac33..0000000 --- a/libraries/plugins/phpMussel/vault/lang/lang.fr.php +++ /dev/null @@ -1,132 +0,0 @@ -= 0 || $Num <= 1) ? 0 : 1; -}; - -$phpMussel['lang']['bad_command'] = 'Je ne comprends pas cette commande, désolé.'; -$phpMussel['lang']['cli_failed_to_complete'] = 'Échec du terminer le processus d\'analyse'; -$phpMussel['lang']['cli_is_not_a'] = ' n\'est pas un fichier ou un répertoire.'; -$phpMussel['lang']['cli_ln2'] = " Merci d\'utiliser phpMussel, un script PHP pour la détection de virus, logiciels\n malveillants et autres menaces dans les fichiers téléchargés sur votre système\n partout où le script est accroché, basé sur les signatures de ClamAV et autres.\n\n PHPMUSSEL COPYRIGHT 2013 et au-delà GNU/GPL V.2 par Caleb M (Maikuolan).\n\n ~ ~ ~\n\n"; -$phpMussel['lang']['cli_ln3'] = " Exécute actuellement phpMussel en mode CLI (Interface Ligne de Commande).\n\n Pour analyser un fichier ou répertoire, taper 'scan', suivi par le nom du\n fichier ou répertoire que vous voulez que phpMussel analyse et appuyez sur\n Entrée ; Tapez « c » et appuyez sur Entrée pour une liste de commandes du mode\n CLI ; Tapez 'q' et appuyez sur Entrée pour quitter :"; -$phpMussel['lang']['cli_pe1'] = 'Pas un valide PE fichier !'; -$phpMussel['lang']['cli_pe2'] = 'Sections du PE :'; -$phpMussel['lang']['cli_signature_placeholder'] = 'NOM-DE-SIGNATURE'; -$phpMussel['lang']['cli_working'] = 'En cours'; -$phpMussel['lang']['corrupted'] = 'PE corrompu détecté'; -$phpMussel['lang']['data_not_available'] = 'Les données ne sont pas disponibles.'; -$phpMussel['lang']['denied'] = 'Téléchargement Refusé !'; -$phpMussel['lang']['denied_reason'] = 'Votre tentative de téléchargement a été bloquée pour les raisons énumérées ci-dessous :'; -$phpMussel['lang']['detected'] = 'Détecté {vn}'; -$phpMussel['lang']['detected_control_characters'] = 'Caractères de contrôle ont été détectés'; -$phpMussel['lang']['encrypted_archive'] = 'Archive cryptée détectée; Archives cryptées interdites'; -$phpMussel['lang']['failed_to_access'] = 'Échec d\'accès '; -$phpMussel['lang']['file'] = 'Fichier'; -$phpMussel['lang']['filesize_limit_exceeded'] = 'Taille limite fichier dépassée'; -$phpMussel['lang']['filetype_blacklisted'] = 'Type de fichier sur liste noire'; -$phpMussel['lang']['finished'] = 'Terminé'; -$phpMussel['lang']['generated_by'] = 'Généré par'; -$phpMussel['lang']['greylist_cleared'] = ' Greylist vidé.'; -$phpMussel['lang']['greylist_not_updated'] = ' Liste grise n\'a pas été mise à jour'; -$phpMussel['lang']['greylist_updated'] = ' Liste grise mise à jour.'; -$phpMussel['lang']['image'] = 'Image'; -$phpMussel['lang']['instance_already_active'] = 'Instance déjà active ! Veuillez vérifier vos crochets.'; -$phpMussel['lang']['invalid_data'] = 'Données non valides !'; -$phpMussel['lang']['invalid_file'] = 'Fichier non valide'; -$phpMussel['lang']['invalid_url'] = 'URL non valide !'; -$phpMussel['lang']['ok'] = 'Bien'; -$phpMussel['lang']['only_allow_images'] = 'Le téléchargement de fichiers qui ne sont pas des images n\'est pas autorisé'; -$phpMussel['lang']['plugins_directory_nonexistent'] = 'Le répertoire de plugins n\'existe pas !'; -$phpMussel['lang']['quarantined_as'] = "Mis en quarantaine comme « /vault/quarantine/{QFU}.qfu ».\n"; -$phpMussel['lang']['recursive'] = 'Profondeur limite de récursion dépassée'; -$phpMussel['lang']['required_variables_not_defined'] = 'Les variables requises ne sont pas définies : Vous ne pouvez pas continuer.'; -$phpMussel['lang']['SafeBrowseLookup_200'] = 'URL potentiellement nuisible détecté'; -$phpMussel['lang']['SafeBrowseLookup_400'] = 'Erreur de requête de l\'API'; -$phpMussel['lang']['SafeBrowseLookup_401'] = 'Erreur d\'autorisation de l\'API'; -$phpMussel['lang']['SafeBrowseLookup_503'] = 'Le service de l\'API est indisponible'; -$phpMussel['lang']['SafeBrowseLookup_999'] = 'Erreur API inconnue'; -$phpMussel['lang']['scan_aborted'] = 'Analyse abandonnée !'; -$phpMussel['lang']['scan_chameleon'] = 'Attaque {x} caméléon détectée'; -$phpMussel['lang']['scan_checking'] = 'Vérification'; -$phpMussel['lang']['scan_checking_contents'] = 'Succès ! La vérification des contenus peut continuer.'; -$phpMussel['lang']['scan_command_injection'] = 'Tentative d\'injection de commande détectée'; -$phpMussel['lang']['scan_complete'] = 'Terminé'; -$phpMussel['lang']['scan_extensions_missing'] = 'Échec (extensions requises manquantes) !'; -$phpMussel['lang']['scan_filename_manipulation_detected'] = 'Manipulation de nom de fichier détectée'; -$phpMussel['lang']['scan_missing_filename'] = 'Nom de fichier manquant'; -$phpMussel['lang']['scan_not_archive'] = 'Échec (vide ou pas une archive) !'; -$phpMussel['lang']['scan_no_problems_found'] = 'Pas de problème trouvé.'; -$phpMussel['lang']['scan_reading'] = 'Lecture en cours'; -$phpMussel['lang']['scan_signature_file_corrupted'] = 'Fichier des signatures corrompu'; -$phpMussel['lang']['scan_signature_file_missing'] = 'Fichiers des signatures manquant'; -$phpMussel['lang']['scan_tampering'] = 'Altération de fichier potentiellement dangereuse détectée'; -$phpMussel['lang']['scan_unauthorised_upload'] = 'Non autorisée manipulation de téléchargement de fichiers détecté'; -$phpMussel['lang']['scan_unauthorised_upload_or_misconfig'] = 'Manipulation de téléchargement de fichiers non autorisée ou mauvaise configuration détectée ! '; -$phpMussel['lang']['started'] = 'Commencé'; -$phpMussel['lang']['too_many_urls'] = 'Trop d\'URLs'; -$phpMussel['lang']['upload_error_1'] = 'La taille du fichier dépasse la directive upload_max_filesize. '; -$phpMussel['lang']['upload_error_2'] = 'La taille du fichier dépasse la limite spécifiée dans le formulaire taille limite. '; -$phpMussel['lang']['upload_error_34'] = 'Échec du téléchargement ! S\'il vous plaît contacter le hostmaster pour obtenir de l\'aide ! '; -$phpMussel['lang']['upload_error_6'] = 'Répertoire de téléchargement manquant ! Veuillez contacter le hostmaster pour obtenir de l\'aide ! '; -$phpMussel['lang']['upload_error_7'] = 'Erreur d\'écriture disque ! Veuillez contacter le hostmaster pour obtenir de l\'aide ! '; -$phpMussel['lang']['upload_error_8'] = 'Mauvaise configuration PHP détectée ! Veuillez contacter le hostmaster pour obtenir de l\'aide ! '; -$phpMussel['lang']['upload_limit_exceeded'] = 'Limite de téléchargement dépassée'; -$phpMussel['lang']['wrong_password'] = 'Mauvais mot de passe; Action rejetée.'; -$phpMussel['lang']['x_does_not_exist'] = 'n\'existe pas'; -$phpMussel['lang']['_exclamation'] = ' ! '; -$phpMussel['lang']['_exclamation_final'] = ' !'; -$phpMussel['lang']['_fullstop'] = '. '; -$phpMussel['lang']['_fullstop_final'] = '.'; - -$phpMussel['lang']['cli_commands'] = " q - - Quitter CLI. - - Alias : quit, exit. - md5_file - - Générer les signatures MD5 des fichiers [Syntaxe : md5_file fichier]. - - Alias : m. - sha1_file - - Générer les signatures SHA1 des fichiers [Syntaxe : sha1_file fichier]. - md5 - - Générer la signature MD5 à partir d'une chaîne [Syntaxe : md5 chaîne]. - sha1 - - Générer la signature SHA1 à partir d'une chaîne [Syntaxe : sha1 chaîne]. - hex_encode - - Convertir une chaîne binaire en hexadécimal [Syntaxe : hex_encode chaîne]. - - Alias : x. - hex_decode - - Convertir hexadécimal en chaîne binaire [Syntaxe : hex_decode chaîne]. - base64_encode - - Convertir chaîne binaire en chaîne base64 [Syntaxe : base64_encode chaîne]. - - Alias : b. - base64_decode - - Convertir chaîne base64 en chaîne binaire [Syntaxe : base64_decode chaîne]. - pe_meta - - Extraire les métadonnées d'un fichier PE [Syntaxe : pe_meta fichier]. - url_sig - - Générer des signatures de scanner d'URL [Syntaxe : url_sig chaîne]. - scan - - Analyser fichier ou répertoire [Syntaxe : scan fichier]. - - Alias : s. - c - - Imprimer cette liste des commandes. -"; diff --git a/libraries/plugins/phpMussel/vault/lang/lang.hi.fe.php b/libraries/plugins/phpMussel/vault/lang/lang.hi.fe.php deleted file mode 100644 index e55d727..0000000 --- a/libraries/plugins/phpMussel/vault/lang/lang.hi.fe.php +++ /dev/null @@ -1,301 +0,0 @@ -होमपेज | लोग आउट'; -$phpMussel['lang']['bNav_logout'] = 'लोग आउट'; -$phpMussel['lang']['config_attack_specific_archive_file_extensions'] = 'अभिलेखागार के लिए ज्ञात फाइल एक्सटेंशन (प्रारूप CSV है; समस्याएं होने पर केवल जोड़ या निकालना चाहिए; हटाने के कारण संग्रह फाइलों के लिए झूठी सकारात्मक दिखाई दे सकते हैं, जबकि जोड़ना अनिवार्य रूप से श्वेतसूची में होगा जो आप हमला विशिष्ट पहचान से जोड़ रहे हैं; सावधानी के साथ संशोधित करें; यह भी ध्यान रखें कि कंटेंट स्तर पर अभिलेखागार क्या कर सकते हैं और इसका विश्लेषण नहीं किया जा सकता है इसका इसका कोई प्रभाव नहीं है)। सूची, जैसा कि डिफ़ॉल्ट रूप से है, उन स्वरूपों को सूचीबद्ध करता है जो अधिकांश प्रणालियों और CMS पर सबसे ज्यादा इस्तेमाल करते हैं, लेकिन जानबूझकर व्यापक रूप से व्यापक नहीं है।'; -$phpMussel['lang']['config_attack_specific_block_control_characters'] = 'किसी भी नियंत्रण पात्रों (नई लाइनों के अलावा) वाले किसी भी फाइल को अवरुद्ध करें? ([\x00-\x08\x0b\x0c\x0e\x1f\x7f]) यदि आप केवल सादा-पाठ अपलोड कर रहे हैं, तो आप अपने सिस्टम पर कुछ अतिरिक्त सुरक्षा प्रदान करने के लिए इस विकल्प को चालू कर सकते हैं। हालांकि, यदि आप सादा-पाठ के अलावा कुछ भी अपलोड करते हैं, तो इसे बदलकर गलत सकारात्मक परिणाम हो सकते हैं। False(झूठी) = ब्लॉक न करें [डिफ़ॉल्ट]; True(सच्चे) = ब्लॉक करें।'; -$phpMussel['lang']['config_attack_specific_chameleon_from_exe'] = 'फाइलों में एक्जिक्यूटिव हेडर की खोज करें, जो न तो निष्पादन योग्य हैं और न ही अभिलेखीय अभिलेखागार हैं और जिनके हेडर गलत हैं। False(झूठी) = अक्षम; True(सच्चे) = सक्षम।'; -$phpMussel['lang']['config_attack_specific_chameleon_from_php'] = 'फाइलों में PHP हेडर के लिए खोजें, जो न तो PHP फाइलें अभिलेखीय मान्यता प्राप्त नहीं हैं। False(झूठी) = अक्षम; True(सच्चे) = सक्षम।'; -$phpMussel['lang']['config_attack_specific_chameleon_to_archive'] = 'अभिलेखों के लिए खोजें जिनके शीर्षलेख गलत हैं (समर्थित: BZ, GZ, RAR, ZIP, RAR, GZ). False(झूठी) = अक्षम; True(सच्चे) = सक्षम।'; -$phpMussel['lang']['config_attack_specific_chameleon_to_doc'] = 'कार्यालय दस्तावेज़ों के लिए खोजें जिनके हेडर गलत हैं (समर्थित: DOC, DOT, PPS, PPT, XLA, XLS, WIZ)। False(झूठी) = अक्षम; True(सच्चे) = सक्षम।'; -$phpMussel['lang']['config_attack_specific_chameleon_to_img'] = 'उन छवियों के लिए खोजें जिनके शीर्षलेख गलत हैं (समर्थित: BMP, DIB, PNG, GIF, JPEG, JPG, XCF, PSD, PDD, WEBP)। False(झूठी) = अक्षम; True(सच्चे) = सक्षम।'; -$phpMussel['lang']['config_attack_specific_chameleon_to_pdf'] = 'PDF फाइलों के लिए खोजें जिनके हेडर गलत हैं। False(झूठी) = अक्षम; True(सच्चे) = सक्षम।'; -$phpMussel['lang']['config_attack_specific_corrupted_exe'] = 'भ्रष्ट फाइलें और पार्स त्रुटियां। False(झूठी) = ध्यान न दें; True(सच्चे) = ब्लॉक करना [डिफ़ॉल्ट]। संभावित दूषित PE (पोर्टेबल निष्पादन योग्य) फाइलों को पहचान और अवरुद्ध करें? अक्सर (लेकिन हमेशा नहीं), जब किसी PE फाइल के कुछ पहलू भ्रष्ट होते हैं या ठीक से पार्स नहीं किए जा सकते हैं, तो यह वायरल संक्रमण का संकेत हो सकता है। PE फाइलों में वायरस का पता लगाने के लिए अधिकांश एंटी-वायरस प्रोग्रामों द्वारा उपयोग की जाने वाली प्रक्रियाओं को उन फाइलों को निश्चित तरीके से पार्स करना पड़ता है, और यदि वायरस के प्रोग्रामर को इस बारे में पता है, तो वे वायरस को अनक्रेता बनाए रखने के लिए रोकने की कोशिश करेंगे।'; -$phpMussel['lang']['config_attack_specific_decode_threshold'] = 'डीकोड कमांड की अधिकतम लंबाई का पता लगाया जाना चाहिए (अगर स्कैनिंग के दौरान कोई भी स्पष्ट प्रदर्शन समस्याएं हैं)। डिफ़ॉल्ट = 512KB। शून्य सीमा को अक्षम करता है (फाइलसिस्टम के आधार पर किसी भी सीमा को हटाने)।'; -$phpMussel['lang']['config_attack_specific_scannable_threshold'] = 'कच्चे डेटा के लिए अधिकतम लंबाई जो phpMussel को पढ़ने और स्कैन करने की अनुमति है (अगर स्कैनिंग के दौरान कोई भी स्पष्ट प्रदर्शन समस्याएं हैं)। डिफ़ॉल्ट = 32MB। शून्य या शून्य मान सीमा को निष्क्रिय कर देता है। आम तौर पर, यह मान आपके द्वारा अपलोड किए जाने वाले फाइल अपलोड की औसत फाइल से कम नहीं होना चाहिए और आपके सर्वर या वेबसाइट पर प्राप्त होने की उम्मीद है, "filesize_limit" निर्देश से अधिक नहीं होना चाहिए, और लगभग एक से अधिक नहीं होना चाहिए "php.ini" विन्यास फाइल के माध्यम से PHP को दी जाने वाली कुल स्वीकार्य स्मृति आवंटन का पांचवां हिस्सा। phpMussel को बहुत अधिक स्मृति का उपयोग करने से रोकने के लिए यह निर्देश मौजूद है (जो इसे किसी निश्चित फाइल साइड के ऊपर फाइल को सफलतापूर्वक स्कैन करने में सक्षम होने से रोक देगा)।'; -$phpMussel['lang']['config_compatibility_ignore_upload_errors'] = 'आमतौर पर यह निर्देश आम तौर पर अक्षम किया जाता है जब तक कि आपके विशिष्ट सिस्टम पर phpMussel की सही कार्यक्षमता के लिए आवश्यक नहीं हो। आम तौर पर, अक्षम होने पर, जब phpMussel $_FILES सरणी में तत्वों की मौजूदगी का पता लगाता है, यह उन तत्वों को स्कैन करने की कोशिश करेगा और उन तत्वों को रिक्त या खाली होने पर, उन तत्वों का प्रतिनिधित्व करते हैं, और, phpMussel एक त्रुटि संदेश वापस करेगा। यह phpMussel के लिए उचित व्यवहार है। यदि यह आपके सिस्टम या CMS के लिए समस्याएं पैदा करता है, तो इस विकल्प को सक्षम करने से phpMussel को यह स्कैन करने का प्रयास नहीं किया जाएगा; उन्हें जब पाया जाता है पर ध्यान नहीं दिया जाएगा और कोई त्रुटि संदेश नहीं मिलेगा, इस प्रकार पृष्ठ अनुरोध को जारी रखने की अनुमति दी गई है। False(झूठी) = अक्षम; True(सच्चे) = सक्षम।'; -$phpMussel['lang']['config_compatibility_only_allow_images'] = 'यदि आप केवल अपने सिस्टम या CMS पर छवियों को अपलोड करने की अनुमति देते हैं, और अगर आपको पूरी तरह से आपके सिस्टम या CMS पर अपलोड किए जाने वाले चित्रों के अलावा किसी भी फाइल की आवश्यकता नहीं है, यह निर्देश सक्षम होना चाहिए, लेकिन अन्यथा अक्षम होना चाहिए। यदि यह निर्देश सक्षम किया गया है, तो वह गैर-छवि फाइलों के रूप में पहचाने गए किसी भी अपलोड को अंधाधुंध रूप से ब्लॉक करने के लिए phpMussel को निर्देशित करेगा। इससे गैर-छवि फाइलों को अपलोड करने के प्रयास के लिए प्रोसेसिंग समय और मेमोरी उपयोग घट सकता है। False(झूठी) = अक्षम; True(सच्चे) = सक्षम।'; -$phpMussel['lang']['config_files_block_encrypted_archives'] = 'एन्क्रिप्टेड अभिलेखागार का पता लगाओ और ब्लॉक करें? phpMussel एन्क्रिप्टेड अभिलेखागार की सामग्री को स्कैन करने में सक्षम नहीं है, इसलिए, यह संभव है कि पुरालेख एन्क्रिप्शन किसी हमलावर द्वारा phpMussel, एंटी वायरस स्कैनर और अन्य ऐसी सुरक्षा को बायपास करने के प्रयास के रूप में नियोजित किया जा सकता है। एन्क्रिप्टेड अभिलेखागार को ब्लॉक करने के लिए phpMussel को निर्देशित करने से इस के साथ जुड़े किसी भी जोखिम को कम करने में मदद मिल सकती है। False(झूठी) = नहीं; True(सच्चे) = हाँ [डिफ़ॉल्ट]।'; -$phpMussel['lang']['config_files_check_archives'] = 'अभिलेखागार की सामग्री की जांच करने का प्रयास? False(झूठी) = उन्हें जांच न करें; True(सच्चे) = उन्हें जांच [डिफ़ॉल्ट]. वर्तमान में, समर्थित केवल संग्रह और संपीड़न प्रारूप BZ/BZIP2, GZ/GZIP, LZF, PHAR, TAR और ZIP हैं। (RAR, CAB, 7z और वगैरह वर्तमान में समर्थित नहीं है)। यह अचूक नहीं है! मैं यह अनुशंसा करता हूं कि यह चालू हो, लेकिन मैं गारंटी नहीं दे सकता कि यह हमेशा सब कुछ पायेगा। भी, ध्यान रखें कि वर्तमान में संग्रह की जांच PHAR या ZIP प्रारूप के लिए पुनरावर्ती नहीं है।'; -$phpMussel['lang']['config_files_filesize_archives'] = 'अभिलेखागार की सामग्री को काली सूची / सफेद सूची पर लागू करें? False(झूठी) = नहीं (बस धूसर सूची सब कुछ); True(सच्चे) = हाँ [डिफ़ॉल्ट]।'; -$phpMussel['lang']['config_files_filesize_limit'] = 'KB में फाईलिस की सीमा। 65536 = 64MB [डिफ़ॉल्ट]; 0 = कोई सीमा नहीं (धूसर सूची पर तरह व्यवहार)। कोई भी सकारात्मक संख्यात्मक मान स्वीकार किया। यह उपयोगी हो सकता है जब आपकी PHP कॉन्फ़िगरेशन मेमोरी की मात्रा को सीमित कर सकती है जो किसी प्रक्रिया को रोक सकती है या यदि आपका PHP कॉन्फ़िगरेशन अपलोड अपलोड करने में सीमित है।'; -$phpMussel['lang']['config_files_filesize_response'] = 'फाइलों के साथ क्या करना है जो फाईलिज़ सीमा से अधिक हो (यदि कोई मौजूद है)। False(झूठी) = सफेद सूची; True(सच्चे) = काली सूची [डिफ़ॉल्ट]।'; -$phpMussel['lang']['config_files_filetype_archives'] = 'अभिलेखागार की सामग्री के लिए काली सूची / सफेद सूची में फाइल प्रकार प्राप्त करें? False(झूठी) = नहीं (सब कुछ ग्रे सूचीबद्ध के रूप में व्यवहार करें) [डिफ़ॉल्ट]; True(सच्चे) = हाँ.'; -$phpMussel['lang']['config_files_filetype_blacklist'] = 'काली सूची:'; -$phpMussel['lang']['config_files_filetype_greylist'] = 'धूसर सूची:'; -$phpMussel['lang']['config_files_filetype_whitelist'] = 'यदि आपका सिस्टम केवल विशिष्ट प्रकार की फाइलों को अपलोड करने की अनुमति देता है, या यदि आपका सिस्टम कुछ प्रकार की फाइलों को स्पष्ट रूप से इनकार करता है, तो काली सूची, धूसर सूची और सफेद सूची में उन फाइलप्रकार को निर्दिष्ट करते हुए स्पीड को बढ़ाया जा सकता है जिस पर स्कैनिंग की अनुमति हो सकती है, फाइल प्रकारों। प्रारूप CSV है (कॉमा से अलग किए गए मान)। यदि आप सब कुछ स्कैन करना चाहते हैं, तो रिक्त स्थान को छोड़ दें; ऐसा करने से धूसर सूची / काली सूची / सफेद सूची अक्षम हो जाएगा। प्रसंस्करण के तार्किक आदेश: अगर फाइल प्रकार सफेद सूची में है, तो स्कैन न करें और फाइल को ब्लॉक न करें, और फाइल को काली सूची या धूसर सूची के खिलाफ जांच न करें। यदि फाइलप्रकार काली सूची पर है, तो फाइल को स्कैन नहीं करें, लेकिन इसे किसी भी तरह से अवरुद्ध करें, और फाइल धूसर सूची के खिलाफ जांच न करें। यदि धूसर सूची रिक्त है या यदि धूसर सूची खाली नहीं है और फाइल प्रकार धूसर सूची पर है, तो फाइल को सामान्य रूप से स्कैन करें और यह निर्धारित करें कि स्कैन के परिणामों के आधार पर इसे ब्लॉक करना है या नहीं। यदि धूसर सूची खाली नहीं है और फाइल प्रकार धूसर सूची पर नहीं है, तो फाइल को काली सूची पर बताए अनुसार रखें। सफेद सूची:'; -$phpMussel['lang']['config_files_max_recursion'] = 'अभिलेखागार के लिए अधिकतम पुनरावर्ती गहराई सीमा। डिफ़ॉल्ट = 10.'; -$phpMussel['lang']['config_files_max_uploads'] = 'अपलोड करने पर स्कैन करने के लिए फाइलों की अधिकतम अनुमति संख्या, स्कैन को रद्द करने और उपयोगकर्ता को सूचित करने से पहले वे एक बार में बहुत अधिक अपलोड कर रहे हैं! एक सैद्धांतिक हमले के विरुद्ध सुरक्षा प्रदान करता है जिससे एक हमलावर phpMussel को ओवरलोड करने के द्वारा पीडीपी PHP को धीमा करने के लिए पीसने से रोकने के लिए आपका सिस्टम या CMS का प्रयास करता है। अनुशंसित: 10. आप अपने हार्डवेयर की गति के आधार पर इस नंबर को बढ़ा या कम कर सकते हैं। ध्यान दें कि इस संख्या में अभिलेखागार की सामग्री शामिल नहीं है।'; -$phpMussel['lang']['config_general_cleanup'] = 'प्रारंभिक अपलोड स्कैनिंग के बाद स्क्रिप्ट द्वारा उपयोग किए गए वैरिएबल और कैशे को अनसेट करें? False(झूठी) = नहीं; True(सच्चे) = हाँ [डिफ़ॉल्ट]. यदि आप अपलोड के अलावा किसी और चीज़ के लिए स्क्रिप्ट का उपयोग नहीं कर रहे हैं, तो आपको इसे "true" (सच्चे) पर सेट करना चाहिए। अन्यथा, आपको इसे "false" (झूठी) पर सेट करना चाहिए। सामान्य व्यवहार में, इसे आम तौर पर "true" (सच्चे) पर सेट किया जाना चाहिए, लेकिन अगर आप ऐसा करते हैं, तो स्क्रिप्ट का उपयोग केवल अपलोड स्कैन करने के लिए किया जा सकता है। CLI मोड में कोई प्रभाव नहीं है।'; -$phpMussel['lang']['config_general_default_algo'] = 'परिभाषित करता है कि भविष्य के सभी पासवर्ड और सत्रों के लिए किस एल्गोरिथम का उपयोग करना है। विकल्प: PASSWORD_DEFAULT (डिफ़ॉल्ट), PASSWORD_BCRYPT, PASSWORD_ARGON2I (PHP >= 7.2.0 की आवश्यकता है).'; -$phpMussel['lang']['config_general_delete_on_sight'] = 'इस निर्देश को सक्षम करने से स्क्रिप्ट को तुरंत किसी भी मापदंड से मेल खाने वाले किसी भी अपलोड को हटाने का प्रयास करने का निर्देश दिया जाएगा। साफ फाइलों को छुआ नहीं जाएगा। अभिलेखागार के मामले में, पूरे संग्रह हटा दिया जाएगा। अपलोड स्कैनिंग के लिए, आम तौर पर, इस निर्देश को सक्षम करने के लिए आवश्यक नहीं है, क्योंकि आमतौर पर PHP निष्पादन समाप्त होने पर स्वतः कैश की सामग्री को स्वतः शुद्ध कर देगा। यह निर्देश यहां अतिरिक्त सुरक्षा के एक अतिरिक्त उपाय के रूप में जोड़ा गया है। False(झूठी) = स्कैनिंग के बाद, अकेले फाइल को छोड़ दें [डिफ़ॉल्ट]; True(सच्चे) = स्कैनिंग के बाद, यदि साफ़ न हो तो तत्काल हटा दें।'; -$phpMussel['lang']['config_general_disable_cli'] = 'अक्षम CLI मोड? CLI मोड डिफ़ॉल्ट रूप से सक्षम होता है, लेकिन कभी-कभी कुछ परीक्षण टूल (जैसे कि PHPUnit, उदाहरण के लिए) और अन्य CLI-आधारित अनुप्रयोगों में हस्तक्षेप कर सकता है। यदि आपको CLI मोड को अक्षम करने की आवश्यकता नहीं है, तो आपको इस निर्देश को अनदेखा करना चाहिए। False(झूठी) = CLI मोड सक्षम करें [डिफ़ॉल्ट]; True(सच्चे) = CLI मोड को अक्षम करें।'; -$phpMussel['lang']['config_general_disable_frontend'] = 'सामने के अंत पहुँच अक्षम? सामने के अंत पहुंच phpMussel को और अधिक प्रबंधनीय बना सकता है, लेकिन यह भी एक संभावित सुरक्षा जोखिम भी हो सकता है। जब भी संभव हो, बैक-एंड के माध्यम से phpMussel का प्रबंधन करने की सिफारिश की जाती है, लेकिन सुविधा के लिए सामने के अंत पहुँच भी प्रदान किया जाता है। इसे तब तक अक्षम रखें जब तक आपको इसकी आवश्यकता न हो। False(झूठी) = सामने के अंत पहुँच सक्षम करें; True(सच्चे) = सामने के अंत पहुँच अक्षम करें [डिफ़ॉल्ट]।'; -$phpMussel['lang']['config_general_disable_webfonts'] = 'निष्क्रिय वेब फोंट? True(सच्चे) = हाँ; False(झूठी) = नहीं [डिफ़ॉल्ट]।'; -$phpMussel['lang']['config_general_enable_plugins'] = 'phpMussel प्लग-इन के लिए समर्थन सक्षम करें? False(झूठी) = नहीं; True(सच्चे) = हाँ [डिफ़ॉल्ट]।'; -$phpMussel['lang']['config_general_forbid_on_block'] = 'फाइल अपलोड अवरुद्ध संदेश के साथ phpMussel 403 हेडर भेजना चाहिए, या 200 OK भेजें? False(झूठी) = नहीं (200); True(सच्चे) = हाँ (403) [डिफ़ॉल्ट]।'; -$phpMussel['lang']['config_general_FrontEndLog'] = 'सामने के अंत में प्रवेश प्रयासों प्रवेश के लिए दायर। एक फाइल नाम निर्दिष्ट करें, या निष्क्रिय करने के लिए खाली छोड़।'; -$phpMussel['lang']['config_general_honeypot_mode'] = 'जब honeypot मोड सक्षम होता है, phpMussel प्रत्येक अपलोड को संगरोध करने का प्रयास करेगा जो इसे मुठभेड़ करता है। वास्तव में कोई स्कैनिंग या विश्लेषण नहीं होगा। वायरस/मैलवेयर अनुसंधान के लिए यह कार्यक्षमता उपयोगी होनी चाहिए। यह सामान्य परिस्थितियों में इस कार्यक्षमता को सक्षम करने के लिए अनुशंसित नहीं है। डिफ़ल्ट रूप में यह विकल्प अक्षम है। False(झूठी) = अक्षम [डिफ़ॉल्ट]; True(सच्चे) = सक्षम।'; -$phpMussel['lang']['config_general_ipaddr'] = 'कहां अनुरोध जोड़ने के IP पते खोजने के लिए? (जैसा CloudFlare के रूप में सेवाओं और पसंद के लिए उपयोगी)। डिफ़ॉल्ट = REMOTE_ADDR। चेतावनी: जब तक कि आप को पता है तुम क्या कर रहे हो उसे बदल नहीं!'; -$phpMussel['lang']['config_general_lang'] = 'phpMussel लिए डिफ़ॉल्ट भाषा निर्दिष्ट।'; -$phpMussel['lang']['config_general_maintenance_mode'] = 'रखरखाव मोड सक्षम करें? True(सच्चे) = हाँ; False(झूठी) = नहीं [डिफ़ॉल्ट]। सामने के अंत के अलावा अन्य सभी को अक्षम करता है। आपके CMS, फ़्रेमवर्क, आदि को अपडेट करने के लिए कभी-कभी उपयोगी।'; -$phpMussel['lang']['config_general_max_login_attempts'] = 'लॉगिन प्रयासों की अधिकतम संख्या।'; -$phpMussel['lang']['config_general_numbers'] = 'आप संख्याओं को प्रदर्शित करने के लिए कैसे पसंद करते हैं? उदाहरण का चयन करें जो आपके लिए सबसे सही लग रहा है।'; -$phpMussel['lang']['config_general_quarantine_key'] = 'phpMussel वॉल्ट(vault) में अपलोड संगरोध को सक्षम करने में सक्षम है, यदि आप यह चाहते हैं। उपयोगकर्ता जो केवल अपनी वेबसाइटों और होस्टिंग पर्यावरण की रक्षा करना चाहते हैं, जो फाइल अपलोड के लिए विश्लेषण के एक गहरे स्तर पर रूचि नहीं रखते, इस सुविधा को निष्क्रिय कर देना चाहिए, लेकिन मैलवेयर अनुसंधान के लिए पहचाने गई अपलोड के आगे के विश्लेषण में दिलचस्पी रखने वाले किसी भी उपयोगकर्ता या ऐसी ही चीज़ों के लिए इस कार्यक्षमता को सक्षम करना चाहिए। क्वारंटाइन कभी-कभी झूठी सकारात्मकताओं को डीबग करने में भी सहायता कर सकते हैं, अगर यह नियमित रूप से आवश्यक है। संगरोध को अक्षम करने के लिए, quarantine_key निर्देश खाली छोड़ दें। संगरोध कार्यक्षमता को सक्षम करने के लिए, निर्देश में कुछ मान दर्ज करें। quarantine_key एक महत्वपूर्ण सुरक्षा सुविधा है। यह क्वारंटाइन डेटा के मनमानी निष्पादन को रोकने में मदद कर सकता है। quarantine_key को आपके पासवर्ड के समान व्यवहार किया जाना चाहिए: लंबी अवधि बेहतर है, और इसे बारीकी से संरक्षित करें। सर्वोत्तम प्रभाव के लिए, delete_on_sight के साथ संयोजन के रूप में उपयोग करें।'; -$phpMussel['lang']['config_general_quarantine_max_filesize'] = 'फाइलों के लिए अधिकतम स्वीकार्य आकार को अलग रखा जाना चाहिए। निर्दिष्ट मूल्य से अधिक फाइलों को अलग-थलग नहीं किया जाएगा। यह निर्देश किसी संभावित हमलावरों के लिए अवांछित डेटा के साथ आपके संगरोध को बाधित करने के लिए इसे और अधिक कठिन बनाने के एक साधन के रूप में महत्वपूर्ण है। डिफ़ॉल्ट = 2MB.'; -$phpMussel['lang']['config_general_quarantine_max_usage'] = 'क्वारंटाइन के लिए अनुमति अधिकतम स्मृति उपयोग। यदि संगरोध द्वारा उपयोग की जाने वाली कुल मेमोरी इस मान पर पहुंचती है, सबसे पुराना संगरोध फाइलें हटा दी जाएगी, जब तक कुल स्मृति का उपयोग अब इस मान तक नहीं पहुंच जाएगा। यह निर्देश किसी संभावित हमलावरों के लिए अवांछित डेटा के साथ आपके संगरोध को बाधित करने के लिए इसे और अधिक कठिन बनाने के एक साधन के रूप में महत्वपूर्ण है। डिफ़ॉल्ट = 64MB.'; -$phpMussel['lang']['config_general_scan_cache_expiry'] = 'स्कैनिंग के परिणामों को कब कैसा होना चाहिए phpMussel? स्कैनिंग के परिणामों को कैश करने के लिए मूल्य सेकंड की संख्या है। डिफ़ॉल्ट 21600 सेकंड (6 घंटे) है; 0 का मान स्कैनिंग के परिणाम कैशिंग को अक्षम करेगा।'; -$phpMussel['lang']['config_general_scan_kills'] = 'अवरुद्ध अपलोड के सभी अभिलेखों को लॉग करने के लिए फाइल का नाम। फाइल नाम निर्दिष्ट करें, या निष्क्रिय करने के लिए खाली छोड़ें।'; -$phpMussel['lang']['config_general_scan_log'] = 'सभी स्कैनिंग परिणामों को लॉग करने के लिए फाइल का नाम। फाइल नाम निर्दिष्ट करें, या निष्क्रिय करने के लिए खाली छोड़ें।'; -$phpMussel['lang']['config_general_scan_log_serialized'] = 'सभी स्कैनिंग परिणामों को लॉग करने के लिए फाइल का नाम (एक क्रमबद्ध प्रारूप का उपयोग करना). फाइल नाम निर्दिष्ट करें, या निष्क्रिय करने के लिए खाली छोड़ें।'; -$phpMussel['lang']['config_general_statistics'] = 'phpMussel उपयोग के सांख्यिकी ट्रैक करें? True(सच्चे) = हाँ; False(झूठी) = नहीं [डिफ़ॉल्ट]।'; -$phpMussel['lang']['config_general_timeFormat'] = 'phpMussel द्वारा इस्तेमाल की तिथियाँ प्रपत्र। अतिरिक्त विकल्प आवेदन शामिल किया जा सकता है।'; -$phpMussel['lang']['config_general_timeOffset'] = 'समय क्षेत्र मिनट में ऑफसेट।'; -$phpMussel['lang']['config_general_timezone'] = 'अपने समय क्षेत्र।'; -$phpMussel['lang']['config_general_truncate'] = 'वह एक विशेष आकार तक पहुँचने में जब साफ प्रवेश फाइलें? मूल्य में B/KB/MB/GB/TB अधिकतम आकार है। जब 0KB, वे अनिश्चित काल तक बढ़ सकता है (डिफ़ॉल्ट)। नोट: एकल फाइल पर लागू होता है! फाइलें सामूहिक विचार नहीं कर रहे हैं।'; -$phpMussel['lang']['config_heuristic_threshold'] = 'कुछ ऐसे phpMussel हस्ताक्षर हैं जो फाइलों में संदिग्ध और दुर्भावनापूर्ण प्रॉपर्टी की पहचान करने का इरादा है, लेकिन इसका मतलब यह नहीं है कि फाइल दुर्भावनापूर्ण है। यह "threshold" मान phpMussel को अपलोड किए जाने वाले फाइलों में संदिग्ध और संभावित रूप से दुर्भावनापूर्ण प्रॉपर्टी के लिए अधिकतम अनुमत भार बताता है। जब यह वजन अधिक हो जाता है, तो फाइलों को दुर्भावनापूर्ण के रूप में पहचाना जाता है। डिफ़ॉल्ट रूप से, यह मान 3 पर सेट हो जाएगा। कम मूल्य का परिणाम झूठी सकारात्मक की एक उच्च घटना में होगा, लेकिन दुर्भावनापूर्ण फाइलों की एक उच्च संख्या की पहचान की जा रही है। उच्च मूल्य का परिणाम झूठी सकारात्मक की कम घटना में होगा, लेकिन कम संख्या में दुर्भावनापूर्ण फाइलों की पहचान की जा रही है। आमतौर पर यह मान अपने डिफ़ॉल्ट पर छोड़ देना सबसे अच्छा होता है।'; -$phpMussel['lang']['config_signatures_Active'] = 'सक्रिय हस्ताक्षर फाइलों की एक सूची, अल्पविराम से अलग।'; -$phpMussel['lang']['config_signatures_detect_adware'] = 'एडवेयर का पता लगाने के लिए phpMussel प्रक्रिया हस्ताक्षर चाहिए? False(झूठी) = नहीं; True(सच्चे) = हाँ [डिफ़ॉल्ट]।'; -$phpMussel['lang']['config_signatures_detect_deface'] = 'क्या डीफ़ेसेशमेंट और डिफैक्चर का पता लगाने के लिए phpMussel प्रक्रिया हस्ताक्षर चाहिए? False(झूठी) = नहीं; True(सच्चे) = हाँ [डिफ़ॉल्ट]।'; -$phpMussel['lang']['config_signatures_detect_encryption'] = 'क्या phpMussel एन्क्रिप्ट की गई फाइलों का पता लगाना और ब्लॉक करना चाहिए? False(झूठी) = नहीं; True(सच्चे) = हाँ [डिफ़ॉल्ट]।'; -$phpMussel['lang']['config_signatures_detect_joke_hoax'] = 'मजाक/धोखाधड़ी मैलवेयर/वायरस का पता लगाने के लिए phpMussel प्रक्रिया हस्ताक्षर चाहिए? False(झूठी) = नहीं; True(सच्चे) = हाँ [डिफ़ॉल्ट]।'; -$phpMussel['lang']['config_signatures_detect_packer_packed'] = 'पैकर्स और पैक किए गए डेटा का पता लगाने के लिए phpMussel प्रक्रिया हस्ताक्षर चाहिए? False(झूठी) = नहीं; True(सच्चे) = हाँ [डिफ़ॉल्ट]।'; -$phpMussel['lang']['config_signatures_detect_pua_pup'] = 'PUP/PUA का पता लगाने के लिए क्या phpMussel प्रक्रिया हस्ताक्षर चाहिए? False(झूठी) = नहीं; True(सच्चे) = हाँ [डिफ़ॉल्ट]।'; -$phpMussel['lang']['config_signatures_detect_shell'] = 'क्या खोल स्क्रिप्ट का पता लगाने के लिए phpMussel प्रक्रिया हस्ताक्षर चाहिए? False(झूठी) = नहीं; True(सच्चे) = हाँ [डिफ़ॉल्ट]।'; -$phpMussel['lang']['config_signatures_fail_extensions_silently'] = 'क्या एक्सटेंशन गुम हैं तो phpMussel रिपोर्ट चाहिए? यदि fail_extensions_silently अक्षम है, लापता एक्सटेंशन स्कैनिंग के दौरान सूचित किया जाएगा, और यदि fail_extensions_silently सक्षम है, लापता एक्सटेंशन को नजरअंदाज कर दिया जाएगा, और यह सूचित किया जाएगा कि कोई समस्या नहीं है। इस निर्देश को अक्षम करने से संभवतः आपकी सुरक्षा में वृद्धि हो सकती है, लेकिन यह झूठी सकारात्मक वृद्धि की भी हो सकती है। False(झूठी) = अक्षम; True(सच्चे) = सक्षम [डिफ़ॉल्ट]।'; -$phpMussel['lang']['config_signatures_fail_silently'] = 'क्या phpMussel रिपोर्ट जब हस्ताक्षर फाइलें गायब या दूषित हैं? यदि fail_silently अक्षम है, लापता और दूषित फाइलों की सूचना स्कैनिंग के दौरान की जाएगी, और यदि fail_silently सक्षम है, लापता और भ्रष्ट फाइलें अनदेखा कर दी जाएंगी, और यह उन फाइलों के लिए रिपोर्ट की जाएगी जो किसी भी समस्याएं नहीं हैं। जब तक आप दुर्घटनाओं या इसी तरह की समस्याओं का सामना नहीं कर रहे हैं, तब तक इसे अकेला छोड़ दिया जाना चाहिए। False(झूठी) = अक्षम; True(सच्चे) = सक्षम [डिफ़ॉल्ट]।'; -$phpMussel['lang']['config_template_data_css_url'] = 'कस्टम थीम के लिए CSS फाइल URL।'; -$phpMussel['lang']['config_template_data_Magnification'] = 'फ़ॉन्ट बढ़ाई। डिफ़ॉल्ट = 1.'; -$phpMussel['lang']['config_template_data_theme'] = 'phpMussel के इस्तेमाल के लिए डिफ़ॉल्ट थीम।'; -$phpMussel['lang']['config_urlscanner_cache_time'] = 'API परिणामों को कैश करने के लिए कितने सेकेंड्स हैं? डिफ़ॉल्ट 3600 सेकंड है (1 घंटा)।'; -$phpMussel['lang']['config_urlscanner_google_api_key'] = 'जब एक API कुंजी परिभाषित किया जाता है, Google Safe Browsing (सुरक्षित ब्राउज़िंग) API तक पहुंच सक्षम बनाता है।'; -$phpMussel['lang']['config_urlscanner_lookup_hphosts'] = 'जब true(सच्चे), hpHosts API तक पहुंच सक्षम बनाता है।'; -$phpMussel['lang']['config_urlscanner_maximum_api_lookups'] = 'प्रति स्कैन की अनुमति अधिकतम API खोजों की संख्या। प्रत्येक API लुकअप स्कैन को पूरा करने के लिए आवश्यक कुल समय में जोड़ देगा, इसलिए, आप समग्र स्कैन प्रक्रिया में तेजी लाने के लिए एक सीमा निर्धारित करना चाह सकते हैं। 0 पर सेट करते समय, कोई सीमा लागू नहीं होगी। डिफ़ॉल्ट रूप से 10 पर सेट करें।'; -$phpMussel['lang']['config_urlscanner_maximum_api_lookups_response'] = 'यदि API लुकअप की अधिकतम स्वीकार्य संख्या पार कर गई है तो क्या करें? False(झूठी) = कुछ मत करो (प्रसंस्करण जारी रखें) [डिफ़ॉल्ट]; True(सच्चे) = फाइल को ब्लॉक करें।'; -$phpMussel['lang']['config_virustotal_vt_public_api_key'] = 'वैकल्पिक रूप से, वायरस, ट्रोजन, मैलवेयर और अन्य खतरों से सुरक्षा के एक बहुत बढ़ाया स्तर प्रदान करने के तरीके के रूप में, वायरस कुल API का उपयोग करते हुए, phpMussel फाइलों को स्कैन करने में सक्षम है। डिफ़ॉल्ट रूप से, वायरस कुल API का उपयोग कर फाइल स्कैन करना अक्षम है। इसे सक्षम करने के लिए, वायरस कुल से एक API कुंजी की आवश्यकता है। महत्वपूर्ण लाभ के कारण यह आपको प्रदान कर सकता है, ऐसा कुछ है जो मैं अत्यधिक सक्षम करने की सलाह देता हूं। कृपया ध्यान रखें, कि वायरस कुल API का उपयोग करने के लिए, आपको उनकी सेवा की शर्तों से सहमत होना होगा और आपको वायरस कुल दस्तावेज के अनुसार वर्णित सभी दिशानिर्देशों का पालन करना होगा! आपको इस एकीकरण सुविधा का उपयोग करने की अनुमति नहीं है, सिवाय इसके कि: आपने वायरस कुल और इसकी API की सेवा की शर्तों को पढ़ लिया है और उससे सहमत हूं। आपने पढ़ लिया है और आप समझते हैं, कम से कम, वायरस कुल सार्वजनिक API दस्तावेजों की प्रस्तावना ("VirusTotal Public API v2.0" के बाद सब कुछ लेकिन "Contents" के पहले)।'; -$phpMussel['lang']['config_virustotal_vt_quota_rate'] = 'वायरस कुल API दस्तावेजों के अनुसार, "यह किसी भी 1 मिनट समय सीमा में किसी भी प्रकृति की अधिकतम 4 अनुरोध तक सीमित है।" आप एक honeyclient, honeypot या न केवल VirusTotal के करने के लिए संसाधन उपलब्ध कराने के लिए जा रही है कि किसी दूसरे स्वचालन चलाते हैं रिपोर्टें आप एक उच्च आवेदन दर कोटा हकदार हैं निकालते हैं। डिफ़ॉल्ट रूप से, phpMussel सख्ती से इन सीमाओं का पालन करेंगे, लेकिन उनकी दर कोटा की संभावना में वृद्धि किया जा रहा है क्योंकि इन दो निर्देश आप क्या पालन करना चाहिए सीमित करने के रूप phpMussel निर्देशित करने के लिए एक स्रोत के रूप में प्रदान की जाती हैं। आप \ जब तक \ ऐसा करने के लिए निर्देशित किया गया है, यह है, आप उन मूल्यों में वृद्धि करने के लिए सिफारिश नहीं है, लेकिन आप \ तो \ आप दर कोटा पहुँचने से संबंधित सामना करना पड़ा समस्याओं देने घट उन मूल्यों शायद कभी कभी इन समस्याओं से निपटने में मदद करते हैं। आप दर सीमा vt_quota_rate किसी भी किसी भी प्रकृति अनुरोधों vt_quota_time पल समय सीमा के रूप में निर्धारित किया जाता है।'; -$phpMussel['lang']['config_virustotal_vt_quota_time'] = '(ऊपर विवरण देखें)।'; -$phpMussel['lang']['config_virustotal_vt_suspicion_level'] = 'डिफ़ॉल्ट रूप से, phpMussel जो फाइलों यह "संदिग्ध" समझता है कि इन फाइलों को वायरस कुल API का उपयोग स्कैन करता है सीमित करेंगे। आप वैकल्पिक vt_suspicion_level के निर्देश मान बदलकर प्रतिबंध को समायोजित कर सकते हैं।'; -$phpMussel['lang']['config_virustotal_vt_weighting'] = 'phpMussel पहचान कर के रूप में या पता लगाने भार के रूप वायरस कुल API का उपयोग स्कैनिंग परिणाम आवेदन देना चाहिए? (और दुर्भावनापूर्ण फाइलें एक बड़ी संख्या पकड़े जाने इसलिए) एकाधिक इंजन का उपयोग (जैसे वायरस कुल करता है) एक फाइल स्कैन एक वृद्धि का पता लगाने दर परिणाम चाहिए, हालांकि, यह भी झूठी अधिक संख्या में जिसके परिणामस्वरूप कर सकते हैं, क्योंकि यह नुस्खा मौजूद है, सकारात्मक है, और इस वजह से, कुछ स्थितियों में, स्कैनिंग परिणाम बेहतर एक अंतिम परिणाम पर विश्वास स्कोर के रूप में बजाय प्रयोग किया जा सकता है । 0 मान उपयोग किया जाता है, तो वायरस कुल API का उपयोग स्कैनिंग परिणाम किसी भी इंजन वायरस कुल झंडा फाइल दुर्भावनापूर्ण के रूप में स्कैन किया जा रहा है द्वारा इस्तेमाल किया जाता है तो, पहचान कर के रूप में लागू किया जाएगा, और इस वजह से, phpMussel दुर्भावनापूर्ण होने के लिए फाइल पर विचार करेंगे। किसी दूसरे का मान प्रयोग किया जाता है, तो वायरस कुल API का उपयोग स्कैनिंग परिणाम का पता लगाने भार के रूप में लागू किया जाएगा, और इस वजह से, फाइल झंडे कि वायरस कल से उपयोग इंजन की संख्या स्कैन किया जा रहा है दुर्भावनापूर्ण होने (एक विश्वास स्कोर के रूप में काम करेगा के रूप में या पता लगाने भार) के लिए है या नहीं फाइल स्कैन किया जा रहा phpMussel द्वारा दुर्भावनापूर्ण माना जाना चाहिए (इस्तेमाल किया कम से कम विश्वास का प्रतिनिधित्व करेंगे मूल्य स्कोर या क्रम में की जरूरत वजन दुर्भावनापूर्ण समझा जाए)। 0 मान डिफ़ॉल्ट द्वारा उपयोग किया जाता है।'; -$phpMussel['lang']['Extended Description: phpMussel'] = 'मुख्य पैकेज (हस्ताक्षर, डॉक्यूमेंटेशन, और कॉन्फ़िगरेशन के बिना)।'; -$phpMussel['lang']['field_activate'] = 'सक्रिय करें'; -$phpMussel['lang']['field_clear_all'] = 'सभी साफ करें'; -$phpMussel['lang']['field_component'] = 'घटक'; -$phpMussel['lang']['field_create_new_account'] = 'नया खाता बनाएँ'; -$phpMussel['lang']['field_deactivate'] = 'निष्क्रिय करें'; -$phpMussel['lang']['field_delete_account'] = 'खाता हटाएं'; -$phpMussel['lang']['field_delete_all'] = 'सभी हटा दो'; -$phpMussel['lang']['field_delete_file'] = 'हटाएं'; -$phpMussel['lang']['field_download_file'] = 'डाउनलोड'; -$phpMussel['lang']['field_edit_file'] = 'संपादित करें'; -$phpMussel['lang']['field_false'] = 'False (असत्य)'; -$phpMussel['lang']['field_file'] = 'फाइल'; -$phpMussel['lang']['field_filename'] = 'फाइल का नाम: '; -$phpMussel['lang']['field_filetype_directory'] = 'निर्देशिका'; -$phpMussel['lang']['field_filetype_info'] = '{EXT} फाइल'; -$phpMussel['lang']['field_filetype_unknown'] = 'अनजान'; -$phpMussel['lang']['field_install'] = 'इंस्टॉल करें'; -$phpMussel['lang']['field_latest_version'] = 'नवीनतम संस्करण'; -$phpMussel['lang']['field_log_in'] = 'लॉग इन करें'; -$phpMussel['lang']['field_more_fields'] = 'अधिक फ़ील्ड'; -$phpMussel['lang']['field_new_name'] = 'नया नाम:'; -$phpMussel['lang']['field_ok'] = 'ठीक'; -$phpMussel['lang']['field_options'] = 'विकल्प'; -$phpMussel['lang']['field_password'] = 'पासवर्ड'; -$phpMussel['lang']['field_permissions'] = 'अनुमतियां'; -$phpMussel['lang']['field_quarantine_key'] = 'संगरोध कुंजी'; -$phpMussel['lang']['field_rename_file'] = 'नाम बदलें'; -$phpMussel['lang']['field_reset'] = 'रीसेट'; -$phpMussel['lang']['field_restore_file'] = 'पुनर्स्थापित'; -$phpMussel['lang']['field_set_new_password'] = 'नया पासवर्ड बनाएं'; -$phpMussel['lang']['field_size'] = 'कुल आकार: '; -$phpMussel['lang']['field_size_bytes'] = ['बाइट', 'बाइट्स']; -$phpMussel['lang']['field_size_GB'] = 'GB'; -$phpMussel['lang']['field_size_KB'] = 'KB'; -$phpMussel['lang']['field_size_MB'] = 'MB'; -$phpMussel['lang']['field_size_TB'] = 'TB'; -$phpMussel['lang']['field_status'] = 'अवस्था'; -$phpMussel['lang']['field_system_timezone'] = 'सिस्टम डिफ़ॉल्ट समयक्षेत्र का उपयोग करें।'; -$phpMussel['lang']['field_true'] = 'True (सच)'; -$phpMussel['lang']['field_uninstall'] = 'अनइंस्टॉल करें'; -$phpMussel['lang']['field_update'] = 'अपडेट करो'; -$phpMussel['lang']['field_update_all'] = 'सब कुछ अपडेट करें'; -$phpMussel['lang']['field_upload_file'] = 'नई फाइल अपलोड करें'; -$phpMussel['lang']['field_username'] = 'उपयोगकर्ता नाम'; -$phpMussel['lang']['field_your_version'] = 'आपका संस्करण'; -$phpMussel['lang']['header_login'] = 'जारी रखने के लिए कृपया लॉग इन करें।'; -$phpMussel['lang']['label_active_config_file'] = 'सक्रिय कॉन्फ़िगरेशन फाइल: '; -$phpMussel['lang']['label_blocked'] = 'अपलोड अवरुद्ध'; -$phpMussel['lang']['label_branch'] = 'शाखा नवीनतम स्थिर:'; -$phpMussel['lang']['label_events'] = 'स्कैन घटनाओं'; -$phpMussel['lang']['label_flagged'] = 'फ़्लैग किए गए ऑब्जेक्ट'; -$phpMussel['lang']['label_fmgr_cache_data'] = 'कैश डेटा और अस्थायी फाइलें'; -$phpMussel['lang']['label_fmgr_disk_usage'] = 'phpMussel डिस्क उपयोग: '; -$phpMussel['lang']['label_fmgr_free_space'] = 'खाली डिस्क स्पेस: '; -$phpMussel['lang']['label_fmgr_total_disk_usage'] = 'कुल डिस्क उपयोग: '; -$phpMussel['lang']['label_fmgr_total_space'] = 'कुल डिस्क स्पेस: '; -$phpMussel['lang']['label_fmgr_updates_metadata'] = 'घटक अद्यतन मेटाडेटा'; -$phpMussel['lang']['label_hide'] = 'छिपाना'; -$phpMussel['lang']['label_os'] = 'ऑपरेटिंग सिस्टम का इस्तेमाल किया:'; -$phpMussel['lang']['label_other'] = 'अन्य'; -$phpMussel['lang']['label_other-Active'] = 'सक्रिय हस्ताक्षर फाइलें'; -$phpMussel['lang']['label_other-Since'] = 'आरंभ करने की तिथि'; -$phpMussel['lang']['label_php'] = 'PHP संस्करण का इस्तेमाल किया:'; -$phpMussel['lang']['label_phpmussel'] = 'phpMussel संस्करण का इस्तेमाल किया:'; -$phpMussel['lang']['label_quarantined'] = 'क्वारंटाइन किए गए अपलोड'; -$phpMussel['lang']['label_sapi'] = 'SAPI का इस्तेमाल किया:'; -$phpMussel['lang']['label_scanned_objects'] = 'स्कैन किए गए ऑब्जेक्ट'; -$phpMussel['lang']['label_scanned_uploads'] = 'स्कैन किए गए अपलोड'; -$phpMussel['lang']['label_show'] = 'दिखाना'; -$phpMussel['lang']['label_size_in_quarantine'] = 'संगरोध में आकार: '; -$phpMussel['lang']['label_stable'] = 'नवीनतम स्थिर:'; -$phpMussel['lang']['label_sysinfo'] = 'प्रणाली की जानकारी:'; -$phpMussel['lang']['label_tests'] = 'परीक्षण:'; -$phpMussel['lang']['label_unstable'] = 'नवीनतम अस्थिर:'; -$phpMussel['lang']['label_upload_date'] = 'अपलोड की तारीख: '; -$phpMussel['lang']['label_upload_hash'] = 'अपलोड का हैश: '; -$phpMussel['lang']['label_upload_origin'] = 'अपलोड की उत्पत्ति: '; -$phpMussel['lang']['label_upload_size'] = 'अपलोड का आकार: '; -$phpMussel['lang']['link_accounts'] = 'खातों'; -$phpMussel['lang']['link_config'] = 'कॉन्फ़िगरेशन'; -$phpMussel['lang']['link_documentation'] = 'डॉक्यूमेंटेशन'; -$phpMussel['lang']['link_file_manager'] = 'फाइल प्रबंधक'; -$phpMussel['lang']['link_home'] = 'होमपेज'; -$phpMussel['lang']['link_logs'] = 'लॉग फाइलें'; -$phpMussel['lang']['link_quarantine'] = 'संगरोध'; -$phpMussel['lang']['link_statistics'] = 'सांख्यिकी'; -$phpMussel['lang']['link_textmode'] = 'पाठ स्वरूपण: बुनियादीस्वरूपित'; -$phpMussel['lang']['link_updates'] = 'अपडेट'; -$phpMussel['lang']['link_upload_test'] = 'अपलोड टेस्ट'; -$phpMussel['lang']['logs_logfile_doesnt_exist'] = 'चयनित लॉग फाइल मौजूद नहीं है!'; -$phpMussel['lang']['logs_no_logfiles_available'] = 'कोई लॉग फाइल उपलब्ध नहीं।'; -$phpMussel['lang']['logs_no_logfile_selected'] = 'कोई लॉग फाइल चयनित नहीं।'; -$phpMussel['lang']['max_login_attempts_exceeded'] = 'लॉगिन प्रयासों की अधिकतम संख्या पार हो गई; पहुंच अस्वीकृत।'; -$phpMussel['lang']['previewer_days'] = 'दिन'; -$phpMussel['lang']['previewer_hours'] = 'घंटे'; -$phpMussel['lang']['previewer_minutes'] = 'मिनट'; -$phpMussel['lang']['previewer_months'] = 'महीने'; -$phpMussel['lang']['previewer_seconds'] = 'सेकंड'; -$phpMussel['lang']['previewer_weeks'] = 'सप्ताह'; -$phpMussel['lang']['previewer_years'] = 'वर्षों'; -$phpMussel['lang']['response_accounts_already_exists'] = 'उस उपयोगकर्ता नाम के साथ एक खाता पहले से मौजूद है!'; -$phpMussel['lang']['response_accounts_created'] = 'खाता सफलतापूर्वक बनाया गया!'; -$phpMussel['lang']['response_accounts_deleted'] = 'खाता सफलतापूर्वक हटाया गया!'; -$phpMussel['lang']['response_accounts_doesnt_exist'] = 'वह खाता मौजूद नहीं है।'; -$phpMussel['lang']['response_accounts_password_updated'] = 'पासवर्ड सफलतापूर्वक अपडेट किया गया!'; -$phpMussel['lang']['response_activated'] = 'सफलतापूर्वक सक्रियण।'; -$phpMussel['lang']['response_activation_failed'] = 'सक्रिय करने में विफल!'; -$phpMussel['lang']['response_checksum_error'] = 'कुछ त्रुटियों की जांच करें! फाइल अस्वीकृत!'; -$phpMussel['lang']['response_component_successfully_installed'] = 'घटक सफलतापूर्वक इंस्टॉल किया गया।'; -$phpMussel['lang']['response_component_successfully_uninstalled'] = 'घटक सफलतापूर्वक अनइंस्टॉल किया गया।'; -$phpMussel['lang']['response_component_successfully_updated'] = 'घटक सफलतापूर्वक अपडेट किया गया'; -$phpMussel['lang']['response_component_uninstall_error'] = 'घटक को अनइंस्टॉल करते समय त्रुटि।'; -$phpMussel['lang']['response_configuration_updated'] = 'कॉन्फ़िगरेशन सफलतापूर्वक अपडेट किया गया।'; -$phpMussel['lang']['response_deactivated'] = 'सफलतापूर्वक निष्क्रिय।'; -$phpMussel['lang']['response_deactivation_failed'] = 'निष्क्रिय करने में विफल!'; -$phpMussel['lang']['response_delete_error'] = 'हटाने में विफल!'; -$phpMussel['lang']['response_directory_deleted'] = 'निर्देशिका को सफलतापूर्वक हटाया गया!'; -$phpMussel['lang']['response_directory_renamed'] = 'निर्देशिका को सफलतापूर्वक नाम दिया गया!'; -$phpMussel['lang']['response_error'] = 'त्रुटि'; -$phpMussel['lang']['response_failed_to_install'] = 'इनस्टॉल करने में विफल!'; -$phpMussel['lang']['response_failed_to_update'] = 'अपडेट करने में विफल!'; -$phpMussel['lang']['response_file_deleted'] = 'सफलतापूर्वक फाइल हटाया गया!'; -$phpMussel['lang']['response_file_edited'] = 'सफलतापूर्वक फाइल संशोधित किया गया!'; -$phpMussel['lang']['response_file_renamed'] = 'सफलतापूर्वक फाइल नाम दिया गया!'; -$phpMussel['lang']['response_file_restored'] = 'फाइल को सफलतापूर्वक पुनर्स्थापित किया गया!'; -$phpMussel['lang']['response_file_uploaded'] = 'सफलतापूर्वक फाइल अपलोड की गई!'; -$phpMussel['lang']['response_login_invalid_password'] = 'लॉगिन विफलता! अवैध पासवर्ड!'; -$phpMussel['lang']['response_login_invalid_username'] = 'लॉगिन विफलता! उपयोगकर्ता नाम मौजूद नहीं!'; -$phpMussel['lang']['response_login_password_field_empty'] = 'पासवर्ड फ़ील्ड खाली है!'; -$phpMussel['lang']['response_login_username_field_empty'] = 'उपयोगकर्ता नाम फ़ील्ड खाली!'; -$phpMussel['lang']['response_rename_error'] = 'नाम बदलने में विफल!'; -$phpMussel['lang']['response_restore_error_1'] = 'पुनर्स्थापित करने में विफल! दूषित फाइल!'; -$phpMussel['lang']['response_restore_error_2'] = 'पुनर्स्थापित करने में विफल! गलत संगरोध कुंजी!'; -$phpMussel['lang']['response_statistics_cleared'] = 'सांख्यिकी साफ है।'; -$phpMussel['lang']['response_updates_already_up_to_date'] = 'पहले से ही आधुनिक।'; -$phpMussel['lang']['response_updates_not_installed'] = 'घटक इंस्टॉल नहीं है!'; -$phpMussel['lang']['response_updates_not_installed_php'] = 'घटक इंस्टॉल नहीं है (PHP {V} की आवश्यकता है)!'; -$phpMussel['lang']['response_updates_outdated'] = 'पदावनत!'; -$phpMussel['lang']['response_updates_outdated_manually'] = 'पदावनत (कृपया मैन्युअल अपडेट करें)!'; -$phpMussel['lang']['response_updates_outdated_php_version'] = 'पदावनत (PHP {V} की आवश्यकता है)!'; -$phpMussel['lang']['response_updates_unable_to_determine'] = 'निर्धारित करने में असमर्थ।'; -$phpMussel['lang']['response_upload_error'] = 'अपलोड करने में विफल!'; -$phpMussel['lang']['state_complete_access'] = 'पूरा पहुंच'; -$phpMussel['lang']['state_component_is_active'] = 'घटक सक्रिय है।'; -$phpMussel['lang']['state_component_is_inactive'] = 'घटक निष्क्रिय है।'; -$phpMussel['lang']['state_component_is_provisional'] = 'घटक अस्थायी है।'; -$phpMussel['lang']['state_default_password'] = 'चेतावनी: डिफ़ॉल्ट पासवर्ड का उपयोग करना!'; -$phpMussel['lang']['state_logged_in'] = 'लॉग इन किया है।'; -$phpMussel['lang']['state_logs_access_only'] = 'लॉग फाइल का उपयोग केवल'; -$phpMussel['lang']['state_maintenance_mode'] = 'चेतावनी: रखरखाव मोड सक्षम है!'; -$phpMussel['lang']['state_password_not_valid'] = 'चेतावनी: यह खाता किसी मान्य पासवर्ड का उपयोग नहीं कर रहा है!'; -$phpMussel['lang']['state_quarantine'] = ['वर्तमान में संगरोध में %s फाइल है।', 'वर्तमान में संगरोध में %s फाइलें हैं।']; -$phpMussel['lang']['switch-hide-non-outdated-set-false'] = 'गैर पदावनत को छुपाएं न करें'; -$phpMussel['lang']['switch-hide-non-outdated-set-true'] = 'गैर पदावनत को छिपाना'; -$phpMussel['lang']['switch-hide-unused-set-false'] = 'अप्रयुक्त को छुपाएं न करें'; -$phpMussel['lang']['switch-hide-unused-set-true'] = 'अप्रयुक्त को छिपाना'; -$phpMussel['lang']['tip_accounts'] = 'हैलो, {username}।
        खाता पृष्ठ आपको यह नियंत्रित करने की अनुमति देता है कि कौन phpMussel सामने के अंत तक पहुंच सकता है।'; -$phpMussel['lang']['tip_config'] = 'हैलो, {username}।
        कॉन्फ़िगरेशन पेज आपको सामने के अंत से phpMussel के लिए कॉन्फ़िगरेशन को संशोधित करने की अनुमति देता है।'; -$phpMussel['lang']['tip_donate'] = 'phpMussel मुफ्त पेशकश की जाती है, लेकिन अगर आप इस परियोजना के लिए दान करना चाहते हैं, आप दान बटन पर क्लिक करके ऐसा कर सकते हैं।'; -$phpMussel['lang']['tip_file_manager'] = 'हैलो, {username}।
        फाइल प्रबंधक आपको फाइलों को हटाने, संपादित करने, अपलोड करने और डाउनलोड करने की अनुमति देता है। सावधानी से प्रयोग करें (आप इस के साथ अपनी इंस्टॉल को तोड़ सकते हैं)।'; -$phpMussel['lang']['tip_home'] = 'हैलो, {username}।
        यह phpMussel सामने के अंत के होमपेज है। जारी रखने के लिए बाईं ओर नेविगेशन मेनू से एक लिंक का चयन करें।'; -$phpMussel['lang']['tip_login'] = 'डिफ़ॉल्ट उपयोगकर्ता नाम: admin – डिफ़ॉल्ट पासवर्ड: password'; -$phpMussel['lang']['tip_logs'] = 'हैलो, {username}।
        इसकी सामग्री देखने के लिए नीचे दी गई सूची से एक लॉग फाइल चुनें।'; -$phpMussel['lang']['tip_quarantine'] = 'हैलो, {username}।
        यह पृष्ठ वर्तमान में संगरोध में सभी फाइलों को सूचीबद्ध करता है और उन फाइलों के प्रबंधन की सुविधा देता है।'; -$phpMussel['lang']['tip_quarantine_disabled'] = 'नोट: संगरोध वर्तमान में अक्षम है, लेकिन कॉन्फ़िगरेशन पृष्ठ के माध्यम से सक्षम किया जा सकता है।'; -$phpMussel['lang']['tip_see_the_documentation'] = 'विभिन्न विन्यास निर्देशों और उनके उद्देश्यों के बारे में जानकारी के लिए डॉक्यूमेंटेशन देखें।'; -$phpMussel['lang']['tip_statistics'] = 'हैलो, {username}।
        यह पृष्ठ आपके phpMussel स्थापना के बारे में कुछ बुनियादी उपयोग सांख्यिकी दिखाता है।'; -$phpMussel['lang']['tip_statistics_disabled'] = 'नोट: सांख्यिकी ट्रैकिंग वर्तमान में अक्षम है, लेकिन कॉन्फ़िगरेशन पृष्ठ के माध्यम से सक्षम किया जा।'; -$phpMussel['lang']['tip_updates'] = 'हैलो, {username}।
        अपडेट पेज आपको phpMussel के विभिन्न घटकों को इंस्टॉल, अनइंस्टॉल और अद्यतन करने की अनुमति देता है (मुख्य पैकेज, हस्ताक्षर, स्थानीयकरण फाइलें, आदि)।'; -$phpMussel['lang']['tip_upload_test'] = 'हैलो, {username}।
        अपलोड टेस्ट पृष्ठ में एक मानक फाइल अपलोड फॉर्म है। यह आपको यह जांचने में सक्षम बनाता है कि फाइल को सामान्य रूप से इसे अपलोड करने का प्रयास करते समय phpMussel द्वारा अवरुद्ध किया जाएगा या नहीं।'; -$phpMussel['lang']['title_accounts'] = 'phpMussel – खातों'; -$phpMussel['lang']['title_config'] = 'phpMussel – कॉन्फ़िगरेशन'; -$phpMussel['lang']['title_file_manager'] = 'phpMussel – फाइल प्रबंधक'; -$phpMussel['lang']['title_home'] = 'phpMussel – होमपेज'; -$phpMussel['lang']['title_login'] = 'phpMussel – लॉग इन करें'; -$phpMussel['lang']['title_logs'] = 'phpMussel – लॉग फाइलें'; -$phpMussel['lang']['title_quarantine'] = 'phpMussel – संगरोध'; -$phpMussel['lang']['title_statistics'] = 'phpMussel – सांख्यिकी'; -$phpMussel['lang']['title_updates'] = 'phpMussel – अपडेट'; -$phpMussel['lang']['title_upload_test'] = 'phpMussel – अपलोड टेस्ट'; -$phpMussel['lang']['warning'] = 'चेतावनी:'; -$phpMussel['lang']['warning_php_1'] = 'आपका PHP संस्करण सक्रिय रूप से अब समर्थित नहीं है! अद्यतन की सिफारिश की है!'; -$phpMussel['lang']['warning_php_2'] = 'आपका PHP संस्करण गंभीर रूप से कमजोर है! अद्यतन की जोरदार सिफारिश की है!'; -$phpMussel['lang']['warning_signatures_1'] = 'कोई हस्ताक्षर फाइलें सक्रिय नहीं हैं!'; - -$phpMussel['lang']['info_some_useful_links'] = 'कुछ उपयोगी लिंक:
          -
        • phpMussel के समस्याएं @ GitHub – phpMussel के लिए समस्याएं पृष्ठ (सहायता के लिए, आदि)।
        • -
        • phpMussel @ Spambot Security – phpMussel के लिए चर्चा मंच (सहायता के लिए, आदि)।
        • -
        • phpMussel @ SourceForge – phpMussel के लिए वैकल्पिक डाउनलोड आईना।
        • -
        • WebSecTools.com – वेबसाइटों को सुरक्षित करने के लिए सरल वेबमास्टर उपकरण का एक संग्रह।
        • -
        • ClamavNet – ClamAV (क्लैमएव) होमपेज (ClamAV® ट्रोजन, वायरस, मैलवेयर और अन्य दुर्भावनापूर्ण खतरों का पता लगाने के लिए एक खुला स्रोत एंटीवायरस इंजन है)।
        • -
        • SecuriteInfo.com – कम्प्यूटर सुरक्षा कंपनी जो ClamAV (क्लैमएव) के लिए अनुपूरक हस्ताक्षर प्रदान करती है।
        • -
        • PhishTank – phpMussel यूआरएल स्कैनर द्वारा उपयोग किए गए फ़िशिंग डेटाबेस।
        • -
        • वैश्विक PHP समूह @ Facebook – PHP सीखने संसाधन और चर्चा।
        • -
        • PHP.earth – PHP सीखने संसाधन और चर्चा।
        • -
        • VirusTotal – VirusTotal संदिग्ध फाइलें और URL का विश्लेषण करने के लिए एक नि: शुल्क सेवा है।
        • -
        • Hybrid Analysis – Hybrid Analysis Payload Security द्वारा प्रदान की जाने वाली एक मुफ्त मैलवेयर विश्लेषण सेवा है।
        • -
        • Malwarebytes – कंप्यूटर एंटी-मैलवेयर विशेषज्ञ।
        • -
        • MalwareTips – उपयोगी मैलवेयर केंद्रित चर्चा मंच।
        • -
        • Vulnerability Charts (भेद्यता चार्ट) – विभिन्न पैकेजों के सुरक्षित/असुरक्षित संस्करणों की सूची (PHP, HHVM, आदि)।
        • -
        • Compatibility Charts (संगतता चार्ट) – विभिन्न पैकेजों के लिए सुसंगतता सूचियों की सूची (CIDRAM, phpMussel, आदि)।
        • -
        '; diff --git a/libraries/plugins/phpMussel/vault/lang/lang.hi.php b/libraries/plugins/phpMussel/vault/lang/lang.hi.php deleted file mode 100644 index db33e79..0000000 --- a/libraries/plugins/phpMussel/vault/lang/lang.hi.php +++ /dev/null @@ -1,127 +0,0 @@ -Halaman Utama | Keluar'; -$phpMussel['lang']['bNav_logout'] = 'Keluar'; -$phpMussel['lang']['config_attack_specific_archive_file_extensions'] = 'Ekstensi file terkompres yang dikenali (format nya CSV; seharusnya hanya menambah atau menghapus ketika masalah terjadi; Tidak cocok langsung menghapus karena dapat menyebabkan angka positif yang salah terjadi pada file terkompres, dimana juga menambahkan deteksi; memodifikasi dengan peringatan; Juga dicatat bahwa ini tidak memberi efek pada file terkompress apa yang dapat dan tidak dapat di analisa pada level isi). Daftar sebagaimana defaultnya, memberi daftar format-format yang digunakan yang paling umum melalui melalui mayoritas sistem dan CMS, tapi bermaksud tidak komprehensif.'; -$phpMussel['lang']['config_attack_specific_block_control_characters'] = 'Memblokade file apapun yang berisi karakter pengendali (lain dari baris baru)? ([\x00-\x08\x0b\x0c\x0e\x1f\x7f]) Jika Anda hanya sedang mengupload file teks biasa, maka Anda dapat menghidupkan opsi ini untuk menyediakan perlindungan tambahan ke sistem Anda. Bagaimanapun jika Anda mengupload apapun lebih dari file teks biasa, menghidupkan opsi ini mungkin mengakibatkan angka positif salah. False = Jangan memblokade [Default]; True = Memblokade.'; -$phpMussel['lang']['config_attack_specific_chameleon_from_exe'] = 'Cari header yang dapat dieksekusi di dalam file-file yang dapat dieksekusi atau file terkompress yang dikenali dan untuk file dapat dieksekusi yang headernya tidak benar. False = Dinonaktifkan; True = Diaktifkan.'; -$phpMussel['lang']['config_attack_specific_chameleon_from_php'] = 'Cari header PHP tidak di dalam file-file PHP atau file terkompress. False = Dinonaktifkan; True = Diaktifkan.'; -$phpMussel['lang']['config_attack_specific_chameleon_to_archive'] = 'Cari file terkompress yang header nya tidak benar (Mendukung: BZ, GZ, RAR, ZIP, RAR, GZ). False = Dinonaktifkan; True = Diaktifkan.'; -$phpMussel['lang']['config_attack_specific_chameleon_to_doc'] = 'Cari dokumen office yang header nya tidak benar (Mendukung: DOC, DOT, PPS, PPT, XLA, XLS, WIZ). False = Dinonaktifkan; True = Diaktifkan.'; -$phpMussel['lang']['config_attack_specific_chameleon_to_img'] = 'Cari gambar yang header nya tidak benar (Mendukung: BMP, DIB, PNG, GIF, JPEG, JPG, XCF, PSD, PDD, WEBP). False = Dinonaktifkan; True = Diaktifkan.'; -$phpMussel['lang']['config_attack_specific_chameleon_to_pdf'] = 'Cari file PDF yang headernya tidak benar. False = Dinonaktifkan; True = Diaktifkan.'; -$phpMussel['lang']['config_attack_specific_corrupted_exe'] = 'File korup dan diurai kesalahan. False = Mengabaikan; True = Memblokade [Default]. Mendeteksi dan memblokir berpotensi korup PE (Portable Executable) file? Sering (tapi tidak selalu), ketika aspek-aspek tertentu dari file PE yang korup atau tidak bisa diurai dengan benar, itu dapat menjadi indikasi dari infeksi virus. Proses yang digunakan oleh sebagian besar program anti-virus untuk mendeteksi virus dalam file PE memerlukan parsing file-file dengan cara tertentu, yang, jika programmer virus menyadari, secara khusus akan mencoba untuk mencegah, untuk memungkinkan virus mereka untuk tetap tidak terdeteksi.'; -$phpMussel['lang']['config_attack_specific_decode_threshold'] = 'Ambang batas dengan panjang file mentah yang dalam decode perintah harus terdeteksi (dalam kasus ada masalah kinerja sementara pemindaian). Default = 512KB. Nol atau nilai null menonaktifkan ambang batas (menghapus apapun batasan berdasarkan ukuran file).'; -$phpMussel['lang']['config_attack_specific_scannable_threshold'] = 'Ambang batas dengan panjang file mentah yang phpMussel diperbolehkan untuk membaca dan memindai (dalam kasus ada masalah kinerja sementara pemindaian). Default = 32MB. Nol atau nilai null menonaktifkan ambang batas. Umumnya, nilai ini tidak seharusnya kurang dari ukuran file rata-rata upload file yang Anda inginkan dan Anda harapkan untuk menerima ke server atau website, tidak seharusnya lebih dari direktif filesize_limit, dan tidak seharusnya lebih dari sekitar seperlima dari total alokasi memori yang diijinkan ke PHP melalui file konfigurasi "php.ini". Direktif ini ada untuk mencegah phpMussel menggunakan terlalu banyak memori (yang bisa mencegah dari yang berhasil memindai file di atas tertentu ukuran file).'; -$phpMussel['lang']['config_compatibility_ignore_upload_errors'] = 'Direktif ini umumnya harus DINONAKTIFKAN kecuali diharuskan untuk fungsi yang benar dari phpMussel pada sistem tertentu. Biasanya, ketika DINONAKTIFKAN, ketika phpMussel mendeteksi adanya elemen dalam $_FILES array(), itu akan mencoba untuk memulai scan file yang mewakili elemen, dan, jika elemen yang kosong, phpMussel akan mengembalikan pesan kesalahan. Ini adalah perilaku yang tepat untuk phpMussel. Namun, untuk beberapa CMS, elemen kosong di $_FILES dapat terjadi sebagai akibat dari perilaku alami itu CMS, atau kesalahan dapat dilaporkan bila tidak ada, dalam kasus seperti itu, perilaku normal untuk phpMussel akan mengganggu untuk perilaku normal itu CMS. Jika situasi seperti itu terjadi untuk Anda, MENGAKTIFKAN direktif ini akan menginstruksikan phpMussel untuk tidak mencoba untuk memulai scan untuk elemen kosong, mengabaikan saat ditemui dan untuk tidak kembali terkait pesan kesalahan, sehingga memungkinkan kelanjutan dari halaman permintaan. False = DINONAKTIFKAN; True = DIAKTIFKAN.'; -$phpMussel['lang']['config_compatibility_only_allow_images'] = 'Jika Anda hanya mengharapkan atau hanya berniat untuk memungkinkan mengupload gambar ke sistem atau CMS, dan jika Anda benar-benar tidak memerlukan mengupload file selain gambar ke sistem atau CMS, direktif ini harus DIAKTIFKAN, tapi sebaliknya harus DINONAKTIFKAN. Jika direktif ini DIAKTIFKAN, ini akan menginstruksikan phpMussel untuk memblokir tanpa pandang bulu setiap upload diidentifikasi sebagai file tidak gambar, tanpa pemindaian mereka. Ini mungkin mengurangi waktu memproses dan penggunaan memori untuk mencoba upload file tidak gambar. False = DINONAKTIFKAN; True = DIAKTIFKAN.'; -$phpMussel['lang']['config_files_block_encrypted_archives'] = 'Mendeteksi dan memblokir dienkripsi arsip? Karena phpMussel tidak mampu memindai isi arsip dienkripsi, itu mungkin bahwa enkripsi arsip dapat digunakan oleh penyerang sebagai sarana mencoba untuk memotong phpMussel, anti-virus pemindai dan perlindungan mirip lainnya. Menginstruksikan phpMussel untuk memblokir setiap arsip dienkripsi ditemukan akan berpotensi membantu mengurangi risiko terkait dengan kemungkinan tersebut. False = Tidak; True = Ya [Default].'; -$phpMussel['lang']['config_files_check_archives'] = 'Berusaha mencek isi file terkompress? False = Tidak (Tidak mencek); True = Ya (Mencek) [Default]. Sekarang, hanya BZ/BZIP2, GZ/GZIP, LZF, PHAR, TAR dan ZIP format yang didukung (RAR, CAB, 7z, dll tidak didukung). Ini tidak selalu sempurna! Selama saya sangat rekomendasikan menjaga ini aktif, saya tidak dapat menjamin itu hanya menemukan segala sesuatunya. Juga diingatkan bahwa mencek file terkompres tidak rekursif untuk format PHAR atau ZIP.'; -$phpMussel['lang']['config_files_filesize_archives'] = 'Memperlalaikan ukuran daftar hitam/putih dari isi file terkompress? False = Tidak (Bertanda abu-abu semua); True = Ya [Default].'; -$phpMussel['lang']['config_files_filesize_limit'] = 'Batasan ukuran file dalam KB. 65536 = 64MB [Default]; 0 = Tidak ada batasa (selalu bertanda abu-abu), nilai angka positif apapun diterima. Ini dapat berguna ketika batasan konfigurasi PHP Anda membatasi jumah memori dari proses yang dapat ditampungnya atau jika konfigurasi PHP Anda membatasi jumlah ukuran upload Anda.'; -$phpMussel['lang']['config_files_filesize_response'] = 'Apa yang Anda lakukan dengan file-file yang melebihi batasan ukuran (jika ada). False = Bertanda putih; True = Bertanda hitam [Default].'; -$phpMussel['lang']['config_files_filetype_archives'] = 'Memperlalaikan jenis file daftar hitam/putih dari isi file terkompress? False = Tidak (Bertanda abu-abu semua) [Default]; True = Ya.'; -$phpMussel['lang']['config_files_filetype_blacklist'] = 'Daftar Hitam:'; -$phpMussel['lang']['config_files_filetype_greylist'] = 'Daftar Abu-Abu:'; -$phpMussel['lang']['config_files_filetype_whitelist'] = 'Jika sistem Anda hanya mengizinkan tipe file spesifik menjadi diupload, atau jika sistem Anda secara eksplisit menolak tipe file-file tertentu, menspesifikasikan tipe file dalam bertanda putih, bertanda hitam dan bertanda abu-abu dapat menaikkan kecepatan dari pemindaian dilakukan dengan mengizinkan skrip untuk mengabaikan tipe file tertentu. Format adalah CSV (comma separated values). Jika Anda ingin memindai semuanya, daripada daftar putih, daftar hitam atau daftar abu-abu, tinggalkan variabel kosong; Melakukannya akan menonaktifkan dafter putih/hitam/abu-abu. Urutan logis dari pengolahan: Jika tipe file bertanda putih, tidak memindai dan tidak memblokir file, dan tidak memeriksa file terhadap daftar hitam atau daftar abu-abu. Jika tipe file bertanda hitem, tidak memindai file tapi memblokir bagaimanapun, dan tidak memeriksa file terhadap daftar abu-abu. Jika daftar abu-abu yang kosong atau jika daftar abu-abu tidak kosong dan tipe file bertanda abu-abu, memindai file seperti biasa dan menentukan apakah untuk memblokir berdasarkan hasil memindai, tapi jika daftar abu-abu tidak kosong dan tipe file tidak bertanda abu-abu, memperlakukan seolah olah bertanda hitam, demikian tidak memindai tapi memblokir itu bagaimanapun. Daftar Putih:'; -$phpMussel['lang']['config_files_max_recursion'] = 'Batas kedalaman rekursi maksimum untuk arsip. Default = 10.'; -$phpMussel['lang']['config_files_max_uploads'] = 'Maksimum jumla file-file yang diizinkan untuk dipindai selama pemindaian upload file sebelum menghentikan pemindaian dan menginformasikan pengguna bahwa pengguna mengupload terlalu banyak! Menyediakan perlindungan pada serangan teoritis dimana penyerang mencoba DDoS pada sistem Anda atau CMS ada dengan overloading phpMussel supaya berjalan lambat. Proses PHP ke penghentian keras. Recommendasi: 10. Anda dapat menaikkan atau menurunkan angka ini bergantung dari kecepatan hardware Anda. Catat itu nomor ini tidak mengakuntabilitas atau mengikutkan konten dari file terkompres.'; -$phpMussel['lang']['config_general_cleanup'] = 'Membersihkan variabel skrip dan cache setelah eksekusi? False = Tidak; True = Ya [Default]. Jika Anda tidak menggukan skrip di bawah pemindaian upload inisial, harus diset ke true (ya) untuk meminimalisasi penggunaan memori. Jika Anda menggunakan skrip untuk tujuan di bawah pemindaian upload inisial, harus diset ke false (tidak), untuk menghindari reload duplikat file ke memori. Dalam praktek umum, haru diset ke true, tapi jika kamu melakukannya, kamu tidak bisa menggunakan skrip untuk hal lain kecuali pemindaian upload file. Tidak memiliki pengaruh di dalam mode CLI.'; -$phpMussel['lang']['config_general_default_algo'] = 'Mendefinisikan algoritma mana yang akan digunakan untuk semua password dan sesi di masa depan. Opsi: PASSWORD_DEFAULT (default), PASSWORD_BCRYPT, PASSWORD_ARGON2I (membutuhkan PHP >= 7.2.0).'; -$phpMussel['lang']['config_general_delete_on_sight'] = 'Mengaktifkan opsi ini akan menginstruksikan skrip untuk berusaha secepatnya menghapus file apapun yang ditemukannya selama scan yang mencocokkan pada kriteria deteksi apapun, baik melalui tanda tangan atau yang lain. file-file ditentukan "clean" tidak akan disentuh. Pada kasus file terkompress seluruh file terkompress akan didelate (kecuali file yang menyerang adalah satu-satunya dari beberapa file yang menjadi isi file terkompress). Untuk kasus pemindaian upload file biasanya, tidak cocok untuk mengaktifkan opsi ini, karena biasanya PHP akan secara otomatis menyatukan isi dari cache ketika eksekusi selesai, berarti bahwa dia akan selalu menghapus file terupload apapun melalui server jika tidak dipindahkan, dikopi atau dihapus sebelumnya. Opsi tersebut ditambahkan disini sebagai ukuran keamanan ekstra untuk semua salinan PHP yang tidak selalu bersikap pada perilaku yang diharapkan. False = Setelah pemindahaian, biarkan file [Default]; True = Setelah pemindaian, jika tidak bersih, hapus langsung.'; -$phpMussel['lang']['config_general_disable_cli'] = 'Menonaktifkan modus CLI? Modus CLI diaktifkan secara default, tapi kadang-kadang dapat mengganggu alat pengujian tertentu (seperti PHPUnit, sebagai contoh) dan aplikasi CLI berbasis lainnya. Jika Anda tidak perlu menonaktifkan modus CLI, Anda harus mengabaikan direktif ini. False = Mengaktifkan modus CLI [Default]; True = Menonaktifkan modus CLI.'; -$phpMussel['lang']['config_general_disable_frontend'] = 'Menonaktifkan akses bagian depan? Akses bagian depan dapat membuat phpMussel lebih mudah dikelola, tapi juga dapat menjadi potensial resiko keamanan. Itu direkomendasi untuk mengelola phpMussel melalui bagian belakang bila mungkin, tapi akses bagian depan yang disediakan untuk saat itu tidak mungkin. Memilikinya dinonaktifkan kecuali jika Anda membutuhkannya. False = Mengaktifkan akses bagian depan; True = Menonaktifkan akses bagian depan [Default].'; -$phpMussel['lang']['config_general_disable_webfonts'] = 'Menonaktifkan webfonts? True = Ya; False = Tidak [Default].'; -$phpMussel['lang']['config_general_enable_plugins'] = 'Mengaktifkan dukungan untuk plugin phpMussel? False = Tidak; True = Ya [Default].'; -$phpMussel['lang']['config_general_forbid_on_block'] = 'Seharusnya phpMussel mengirimkan 403 headers dengan pesan upload file yang terblok, atau cocok dengan 200 OK? False = Tidak (200); True = Ya (403) [Default].'; -$phpMussel['lang']['config_general_FrontEndLog'] = 'File untuk mencatat upaya login untuk bagian depan. Spesifikasikan nama file, atau biarkan kosong untuk menonaktifkan.'; -$phpMussel['lang']['config_general_honeypot_mode'] = 'Bila modus honeypot diaktifkan, phpMussel akan mencoba untuk karantina setiap file upload yang dia menemui, terlepas dari apakah atau tidak file yang di-upload cocok dengan tanda tangan yang disertakan, dan tidak ada pemindaian aktual atau analisis dari upload file akan terjadi. Fungsi ini akan berguna bagi mereka yang ingin menggunakan phpMussel untuk tujuan virus/malware penelitian, tapi tidak direkomendasikan untuk mengaktifkan fungsi ini jika tujuan penggunaan dari phpMussel oleh pengguna adalah bagi aktual upload file pemindaian dan juga tidak direkomendasikan untuk menggunakan fungsi honeypot untuk tujuan selain bagi honeypot. Biasanya, opsi ini dinonaktifkan. False = Dinonaktifkan [Default]; True = Diaktifkan.'; -$phpMussel['lang']['config_general_ipaddr'] = 'Dimana menemukan alamat IP dari permintaan alamat? (Bergunak untuk pelayanan-pelayanan seperti Cloudflare dan sejenisnya). Default = REMOTE_ADDR. PERINGATAN: Jangan ganti ini kecuali Anda tahu apa yang Anda lakukan!'; -$phpMussel['lang']['config_general_lang'] = 'Tentukan bahasa default untuk phpMussel.'; -$phpMussel['lang']['config_general_maintenance_mode'] = 'Aktifkan modus perawatan? True = Ya; False = Tidak [Default]. Nonaktifkan semuanya selain bagian depan. Terkadang berguna saat memperbarui CMS, kerangka kerja, dll.'; -$phpMussel['lang']['config_general_max_login_attempts'] = 'Jumlah maksimum upaya untuk memasukkan (bagian depan). Default = 5.'; -$phpMussel['lang']['config_general_numbers'] = 'Cara apa yang kamu suka nomor menjadi ditampilkan? Pilih contoh yang paling sesuai untuk Anda.'; -$phpMussel['lang']['config_general_quarantine_key'] = 'phpMussel dapat mengkarantina upload file ditandai dalam isolasi dalam vault phpMussel, jika ini adalah sesuatu yang Anda ingin lakukan. Pengguna biasa dari phpMussel yang hanya ingin memproteksi website mereka dan/atau lingkungan hosting mereka tanpa memiliki minat dalam-dalam menganalisis setiap ditandai upload file harus meninggalkan fungsi ini dinonaktifkan, tapi setiap pengguna yang tertarik pada analisis lebih lanjut dari ditandai upload file bagi penelitian malware atau untuk hal-hal seperti serupa harus mengaktifkan fungsi ini. Mengkarantina ditandai upload file dapat kadang-kadang juga membantu dalam men-debug false-positif, jika ini adalah sesuatu yang sering terjadi untuk Anda. Untuk menonaktifkan fungsi karantina, meninggalkan quarantine_key direktif kosong, atau menghapus isi dari direktif ini jika tidak sudah kosong. Untuk mengaktifkan fungsi karantina, masukkan beberapa nilai dalam direktif ini. quarantine_key adalah fitur keamanan penting dari fungsi karantina diharuskan sebagai sarana untuk mencegah fungsi karantina dari dieksploitasi oleh penyerang potensial dan sebagai sarana mencegah eksekusi potensi file yang disimpan dalam karantina. quarantine_key harus diperlakukan dengan cara yang sama seperti password Anda: Semakin lama semakin baik, dan menjaganya diproteksi erat. Bagi efek terbaik, gunakan dalam hubungannya dengan delete_on_sight.'; -$phpMussel['lang']['config_general_quarantine_max_filesize'] = 'Ukuran file maksimum yang diijinkan dari file yang akan dikarantina. File yang lebih besar dari nilai yang ditentukan di bawah ini TIDAK akan dikarantina. Direktif ini penting sebagai sarana untuk membuat lebih sulit bagi setiap penyerang potensial untuk banjir karantina Anda dengan file yang tidak diinginkan berpotensi menyebabkan penggunaan file kelebihan pada layanan hosting Anda. Default = 2MB.'; -$phpMussel['lang']['config_general_quarantine_max_usage'] = 'Penggunaan memori maksimal yang diijinkan untuk karantina. Jika total penggunaan memori oleh karantina mencapai nilai ini, file yang dikarantina tertua akan dihapus sampai total penggunaan memori tidak lagi mencapai nilai ini. Direktif ini penting sebagai sarana untuk membuat lebih sulit bagi setiap penyerang potensial untuk banjir karantina Anda dengan file yang tidak diinginkan berpotensi menyebabkan penggunaan file kelebihan pada layanan hosting Anda. Default = 64MB.'; -$phpMussel['lang']['config_general_scan_cache_expiry'] = 'Untuk berapa lama harus phpMussel cache hasil-hasil? Nilai adalah jumlah detik untuk cache hasil-hasil untuk. Default adalah 21600 detik (6 jam); Nilai 0 akan menonaktifkan caching hasil-hasil.'; -$phpMussel['lang']['config_general_scan_kills'] = 'Nama dari fata untuk mencatat semua rekord dari upload terblok atau terbunuh. Spesifikan nama atau biarkan kosong untuk menonaktifkan.'; -$phpMussel['lang']['config_general_scan_log'] = 'Nama dari file untuk mencatat semua hasil pemindaian. Spesifikasikan nama atau biarkan kosong untuk menonaktifkan.'; -$phpMussel['lang']['config_general_scan_log_serialized'] = 'Nama dari file untuk mencatat semua hasil pemindaian (menggunakan format serial). Spesifikasikan nama atau biarkan kosong untuk menonaktifkan.'; -$phpMussel['lang']['config_general_statistics'] = 'Lacak statistik penggunaan phpMussel? True = Ya; False = Tidak [Default].'; -$phpMussel['lang']['config_general_timeFormat'] = 'Format notasi tanggal/waktu yang digunakan oleh phpMussel. Opsi tambahan dapat ditambahkan atas permintaan.'; -$phpMussel['lang']['config_general_timeOffset'] = 'Offset zona waktu dalam hitungan menit.'; -$phpMussel['lang']['config_general_timezone'] = 'Zona waktu Anda.'; -$phpMussel['lang']['config_general_truncate'] = 'Memotong file log ketika mereka mencapai ukuran tertentu? Nilai adalah ukuran maksimum dalam B/KB/MB/GB/TB yang bisa ditambahkan untuk file log sebelum dipotong. Nilai default 0KB menonaktifkan pemotongan (file log dapat tumbuh tanpa batas waktu). Catatan: Berlaku untuk file log individu! Ukuran file log tidak dianggap secara kolektif.'; -$phpMussel['lang']['config_heuristic_threshold'] = 'Ada tanda tangan tertentu dari phpMussel yang dimaksudkan untuk mengidentifikasi kualitas yang mencurigakan dan berpotensi berbahaya pada file-file yang di-upload tanpa di diri mereka mengidentifikasi file-file yang di-upload spesifik sebagai berbahaya. Ini "threshold" nilai memberitahu phpMussel apa total berat maksimum untuk kualitas yang mencurigakan dan berpotensi berbahaya pada file-file yang di-upload yang diijinkan adalah sebelum file-file yang akan diidentifikasi sebagai berbahaya. Definisi berat dalam konteks ini adalah jumlah total kualitas mencurigakan dan berpotensi berbahaya diidentifikasi. Secara default, nilai ini akan ditetapkan sebagai 3. Sebuah nilai lebih rendah umumnya akan menghasilkan sebagai lebih tinggi positif palsu kejadian tapi sebuah jumlah lebih tinggi file berbahaya diidentifikasi, sedangkan sebuah nilai lebih tinggi umumnya akan menghasilkan sebagai lebih rendah positif palsu kejadian tapi sebuah jumlah lebih rendah pada file berbahaya yang diidentifikasi. Ini umumnya terbaik untuk meninggalkan nilai ini di default kecuali jika Anda mengalami masalah berhubungan dengan itu.'; -$phpMussel['lang']['config_signatures_Active'] = 'Daftar file tanda tangan yang aktif, dipisahkan oleh koma.'; -$phpMussel['lang']['config_signatures_detect_adware'] = 'Harus phpMussel menggunakan tanda tangan untuk mendeteksi adware? False = Tidak; True = Ya [Default].'; -$phpMussel['lang']['config_signatures_detect_deface'] = 'Harus phpMussel menggunakan tanda tangan untuk mendeteksi perusakan dan perusak? False = Tidak; True = Ya [Default].'; -$phpMussel['lang']['config_signatures_detect_encryption'] = 'Harus phpMussel mendeteksi dan memblokir file terenkripsi? False = Tidak; True = Ya [Default].'; -$phpMussel['lang']['config_signatures_detect_joke_hoax'] = 'Harus phpMussel menggunakan tanda tangan untuk mendeteksi lelucon/kebohongan malware/virus? False = Tidak; True = Ya [Default].'; -$phpMussel['lang']['config_signatures_detect_packer_packed'] = 'Harus phpMussel menggunakan tanda tangan untuk mendeteksi pengepakan dan file dikemas? False = Tidak; True = Ya [Default].'; -$phpMussel['lang']['config_signatures_detect_pua_pup'] = 'Harus phpMussel menggunakan tanda tangan untuk mendeteksi PUAs/PUPs? False = Tidak; True = Ya [Default].'; -$phpMussel['lang']['config_signatures_detect_shell'] = 'Harus phpMussel menggunakan tanda tangan untuk mendeteksi skrip shell? False = Tidak; True = Ya [Default].'; -$phpMussel['lang']['config_signatures_fail_extensions_silently'] = 'Seharusnya laporan phpMussel ketika ekstensi hilang? Jika fail_extensions_silently dinonaktifkan, ekstensi hilang akan dilaporkan ketika pemindaian, dan jika fail_extensions_silently diaktifkan, ekstensi hilang akan diabaikan, dengan pemindaian melaporkan untuk file-file ini bahwa tidak ada masalah. Menonaktifkan direktif ini berpotensi dapat meningkatkan keamanan Anda, tapi juga dapat menyebabkan peningkatan positif palsu. False = Dinonaktifkan; True = Diaktifkan [Default].'; -$phpMussel['lang']['config_signatures_fail_silently'] = 'Seharusnya laporan phpMussel ketika file tanda tangan hilang atau dikorup? Jika fail_silently dinonaktifkan, file dikorup dan hilang akan dilaporkan ketika pemindaian, dan jika fail_silently diaktifkan, file dikorup dan hilang akan diabaikan, dengan pemindaian melaporkan untuk file-file ini bahwa tidak ada masalah. Harus ini dibiarkan sendirian jika Anda pernah mengalami crash atau masalah lain. False = Dinonaktifkan; True = Diaktifkan [Default].'; -$phpMussel['lang']['config_template_data_css_url'] = 'File template untuk tema kustom menggunakan properti CSS eksternal, sedangkan file template untuk tema default menggunakan properti CSS internal. Untuk menginstruksikan phpMussel menggunakan file template untuk tema kustom, menentukan alamat HTTP publik file CSS tema kustom Anda menggunakan variable css_url. Jika Anda biarkan kosong variabel ini, phpMussel akan menggunakan file template untuk tema default.'; -$phpMussel['lang']['config_template_data_Magnification'] = 'Perbesaran font. Default = 1.'; -$phpMussel['lang']['config_template_data_theme'] = 'Tema default untuk phpMussel.'; -$phpMussel['lang']['config_urlscanner_cache_time'] = 'Berapa lama (dalam detik) harus hasil API untuk disimpan dalam cache? Default adalah 3600 detik (1 jam).'; -$phpMussel['lang']['config_urlscanner_google_api_key'] = 'Memungkinkan pemeriksaan API ke Google Safe Browsing API ketika kunci API diperlukan didefinisikan.'; -$phpMussel['lang']['config_urlscanner_lookup_hphosts'] = 'Memungkinkan pemeriksaan API ke hpHosts API ketika diset untuk true.'; -$phpMussel['lang']['config_urlscanner_maximum_api_lookups'] = 'Jumlah maksimum pemeriksaan API melakukan per iterasi memindai individual. Karena setiap API pemeriksaan akan menambah tambahan waktu total dibutuhkan untuk menyelesaikan setiap iterasi pemindaian, Anda mungkin ingin menetapkan batasan untuk mempercepat proses pemindaian secara keseluruhan. Bila diset untuk 0, sejumlah maksimum tidak akan diterapkan. Diset untuk 10 secara default.'; -$phpMussel['lang']['config_urlscanner_maximum_api_lookups_response'] = 'Apa yang harus dilakukan jika jumlah maksimal pemeriksaan API dilampaui? False = Tidak melakukan apa-apa (melanjutkan pemrosesan) [Default]; True = Memblokir file.'; -$phpMussel['lang']['config_virustotal_vt_public_api_key'] = 'Secara fakultatif, phpMussel mampu memindai file menggunakan Virus Total API sebagai cara untuk memberikan tingkat sangat ditingkatkan perlindungan terhadap virus, trojan, malware dan ancaman lainnya. Secara default, file pemindaian menggunakan Virus Total API dinonaktifkan. Untuk mengaktifkannya, kunci API dari Virus Total diperlukan. Karena manfaat yang signifikan bahwa ini bisa memberikan kepada Anda, itu adalah sesuatu yang sangat direkomendasi mengaktifkan. Perlu diketahui, bagaimanapun, menggunakan Virus Total API, Anda HARUS setuju untuk Terms of Service dan Anda HARUS mematuhi semua pedoman terkait dijelaskan oleh Virus Total dokumentasi! Anda TIDAK diizinkan untuk menggunakan fungsi ini KECUALI KALAU: Anda membaca dan setuju untuk Terms of Service dari Virus Total dan API mereka. Anda membaca dan memahami, setidaknya, mukadimah dari Virus Total dokumentasi API (semuanya setelah "VirusTotal Public API v2.0" tapi sebelum "Contents").'; -$phpMussel['lang']['config_virustotal_vt_quota_rate'] = 'Menurut Virus Total dokumentasi API, itu terbatas untuk paling 4 permintaan dalam bentuk apapun dalam jangka waktu 1 menit diberikan. Jika Anda menjalankan sebuah honeyclient, honeypot atau otomatisasi lainnya yang akan menyediakan file untuk VirusTotal dan tidak hanya mengambil laporan Anda berhak untuk kuota permintaan lebih tinggi. Secara default, phpMussel ketat akan mematuhi keterbatasan ini, tapi karena kemungkinan kuota ini sedang meningkat, dua direktif ini yang disediakan sebagai sarana bagi Anda untuk menginstruksikan phpMussel tentang apa batas harus dipatuhi. Kecuali Anda telah diperintahkan untuk melakukannya, itu tidak direkomendasikan bagi Anda untuk meningkat nilai-nilai ini, tapi, jika Anda mengalami masalah berkaitan dengan mencapai kuota Anda, penurunan nilai-nilai ini kadang DAPAT membantu Anda bagi berurusan dengan masalah-masalah ini. Batas Anda ditentukan sebagai vt_quota_rate permintaan dalam bentuk apapun dalam jangka waktu vt_quota_time menit.'; -$phpMussel['lang']['config_virustotal_vt_quota_time'] = '(Lihat uraian di atas).'; -$phpMussel['lang']['config_virustotal_vt_suspicion_level'] = 'Secara default, phpMussel akan membatasi file dipindai menggunakan Virus Total API untuk file-file yang dianggap "mencurigakan". Anda dapat menyesuaikan pembatasan ini dengan mengubah nilai direktif vt_suspicion_level.'; -$phpMussel['lang']['config_virustotal_vt_weighting'] = 'Apakah Anda ingin phpMussel menerapkan hasil pemindaian menggunakan Virus Total API sebagai deteksi atau deteksi pembobotan? Direktif ini ada, karena, meskipun memindai file menggunakan mesin-mesin kelipatan (sebagai Virus Total melakukannya) harus menghasilkan tingkat deteksi meningkat (dan demikian lebih banyak file berbahaya tertangkap), juga dapat menghasilkan jumlah yang lebih banyak dari positif palsu, dan demikian, dalam kondisi beberapa, hasil pemindaian dapat digunakan lebih efektif sebagai nilai keyakinan daripada daripada sebagai kesimpulan definitif. Jika nilai 0 digunakan, hasil pemindaian menggunakan Virus Total API akan diaplikasikan sebagai pendeteksian, dan demikian, jika mesin-mesin digunakan oleh Virus Total menandai file dipindai sebagai berbahaya, phpMussel akan menganggap file yang berbahaya. Jika nilai lain yang digunakan, hasil pemindaian menggunakan Virus Total API akan diaplikasikan sebagai deteksi pembobotan, dan demikian, jumlah mesin digunakan oleh Virus Total menandai file dipindai sebagai berbahaya akan berfungsi sebagai nilai keyakinan (atau deteksi pembobotan) untuk jika file dipindai harus dianggap berbahaya oleh phpMussel (nilai digunakan akan mewakili nilai keyakinan minimum atau pembobotan minimum diperlukan untuk dianggap berbahaya). Nilai 0 digunakan secara default.'; -$phpMussel['lang']['Extended Description: phpMussel'] = 'Paket utama (tanpa tanda tangan, dokumentasi, konfigurasi).'; -$phpMussel['lang']['field_activate'] = 'Mengaktifkan'; -$phpMussel['lang']['field_clear_all'] = 'Cabut semua'; -$phpMussel['lang']['field_component'] = 'Komponen'; -$phpMussel['lang']['field_create_new_account'] = 'Buat Akun Baru'; -$phpMussel['lang']['field_deactivate'] = 'Menonaktifkan'; -$phpMussel['lang']['field_delete_account'] = 'Hapus Akun'; -$phpMussel['lang']['field_delete_all'] = 'Menghapus semua'; -$phpMussel['lang']['field_delete_file'] = 'Menghapus'; -$phpMussel['lang']['field_download_file'] = 'Mendownload'; -$phpMussel['lang']['field_edit_file'] = 'Mengedit'; -$phpMussel['lang']['field_false'] = 'False (Palsu)'; -$phpMussel['lang']['field_file'] = 'File'; -$phpMussel['lang']['field_filename'] = 'Nama file: '; -$phpMussel['lang']['field_filetype_directory'] = 'Direktori'; -$phpMussel['lang']['field_filetype_info'] = 'File {EXT}'; -$phpMussel['lang']['field_filetype_unknown'] = 'Tidak Diketahui'; -$phpMussel['lang']['field_install'] = 'Instal'; -$phpMussel['lang']['field_latest_version'] = 'Versi Terbaru'; -$phpMussel['lang']['field_log_in'] = 'Masuk'; -$phpMussel['lang']['field_more_fields'] = 'Bidang Lebih'; -$phpMussel['lang']['field_new_name'] = 'Nama baru:'; -$phpMussel['lang']['field_ok'] = 'OK'; -$phpMussel['lang']['field_options'] = 'Opsi'; -$phpMussel['lang']['field_password'] = 'Kata Sandi'; -$phpMussel['lang']['field_permissions'] = 'Izin'; -$phpMussel['lang']['field_quarantine_key'] = 'Kunci karantina'; -$phpMussel['lang']['field_rename_file'] = 'Memodifikasi nama'; -$phpMussel['lang']['field_reset'] = 'Mengatur Kembali'; -$phpMussel['lang']['field_restore_file'] = 'Memulihkan'; -$phpMussel['lang']['field_set_new_password'] = 'Buat Baru Kata Sandi'; -$phpMussel['lang']['field_size'] = 'Ukuran Total: '; -$phpMussel['lang']['field_size_bytes'] = 'byte'; -$phpMussel['lang']['field_size_GB'] = 'GB'; -$phpMussel['lang']['field_size_KB'] = 'KB'; -$phpMussel['lang']['field_size_MB'] = 'MB'; -$phpMussel['lang']['field_size_TB'] = 'TB'; -$phpMussel['lang']['field_status'] = 'Status'; -$phpMussel['lang']['field_system_timezone'] = 'Gunakan zona waktu default sistem.'; -$phpMussel['lang']['field_true'] = 'True (Benar)'; -$phpMussel['lang']['field_uninstall'] = 'Uninstal'; -$phpMussel['lang']['field_update'] = 'Perbarui'; -$phpMussel['lang']['field_update_all'] = 'Memperbarui semua'; -$phpMussel['lang']['field_upload_file'] = 'Mengupload file baru'; -$phpMussel['lang']['field_username'] = 'Nama Pengguna'; -$phpMussel['lang']['field_your_version'] = 'Versi Anda'; -$phpMussel['lang']['header_login'] = 'Silahkan masuk untuk melanjutkan.'; -$phpMussel['lang']['label_active_config_file'] = 'File konfigurasi aktif: '; -$phpMussel['lang']['label_blocked'] = 'Upload diblokir'; -$phpMussel['lang']['label_branch'] = 'Cabang terbaru stabil:'; -$phpMussel['lang']['label_events'] = 'Pindai acara'; -$phpMussel['lang']['label_flagged'] = 'Obyek ditandai'; -$phpMussel['lang']['label_fmgr_cache_data'] = 'Data cache dan file sementara'; -$phpMussel['lang']['label_fmgr_disk_usage'] = 'Penggunaan disk phpMussel: '; -$phpMussel['lang']['label_fmgr_free_space'] = 'Ruang disk kosong: '; -$phpMussel['lang']['label_fmgr_total_disk_usage'] = 'Penggunaan disk total: '; -$phpMussel['lang']['label_fmgr_total_space'] = 'Ruang disk total: '; -$phpMussel['lang']['label_fmgr_updates_metadata'] = 'Komponen memperbarui metadata'; -$phpMussel['lang']['label_hide'] = 'Menyembunyikan'; -$phpMussel['lang']['label_os'] = 'Sistem operasi digunakan:'; -$phpMussel['lang']['label_other'] = 'Lain'; -$phpMussel['lang']['label_other-Active'] = 'File tanda tangan aktif'; -$phpMussel['lang']['label_other-Since'] = 'Mulai tanggal'; -$phpMussel['lang']['label_php'] = 'Versi PHP digunakan:'; -$phpMussel['lang']['label_phpmussel'] = 'Versi phpMussel digunakan:'; -$phpMussel['lang']['label_quarantined'] = 'Upload dikarantina'; -$phpMussel['lang']['label_sapi'] = 'SAPI digunakan:'; -$phpMussel['lang']['label_scanned_objects'] = 'Obyek dipindai'; -$phpMussel['lang']['label_scanned_uploads'] = 'Upload dipindai'; -$phpMussel['lang']['label_show'] = 'Menunjukkan'; -$phpMussel['lang']['label_size_in_quarantine'] = 'Ukuran dalam karantina: '; -$phpMussel['lang']['label_stable'] = 'Terbaru stabil:'; -$phpMussel['lang']['label_sysinfo'] = 'Informasi sistem:'; -$phpMussel['lang']['label_tests'] = 'Pengujian:'; -$phpMussel['lang']['label_unstable'] = 'Terbaru tidak stabil:'; -$phpMussel['lang']['label_upload_date'] = 'Tanggal pengunggahan: '; -$phpMussel['lang']['label_upload_hash'] = 'Hash pengunggahan: '; -$phpMussel['lang']['label_upload_origin'] = 'Asal pengunggahan: '; -$phpMussel['lang']['label_upload_size'] = 'Ukuran pengunggahan: '; -$phpMussel['lang']['link_accounts'] = 'Akun'; -$phpMussel['lang']['link_config'] = 'Konfigurasi'; -$phpMussel['lang']['link_documentation'] = 'Dokumentasi'; -$phpMussel['lang']['link_file_manager'] = 'File Manager'; -$phpMussel['lang']['link_home'] = 'Halaman Utama'; -$phpMussel['lang']['link_logs'] = 'Log'; -$phpMussel['lang']['link_quarantine'] = 'Karantina'; -$phpMussel['lang']['link_statistics'] = 'Statistik'; -$phpMussel['lang']['link_textmode'] = 'Format teks: SederhanaTerformat'; -$phpMussel['lang']['link_updates'] = 'Pembaruan'; -$phpMussel['lang']['link_upload_test'] = 'Upload Test'; -$phpMussel['lang']['logs_logfile_doesnt_exist'] = 'Log yang dipilih tidak ada!'; -$phpMussel['lang']['logs_no_logfiles_available'] = 'Tidak ada log tersedia.'; -$phpMussel['lang']['logs_no_logfile_selected'] = 'Tidak ada log dipilih.'; -$phpMussel['lang']['max_login_attempts_exceeded'] = 'Jumlah maksimum upaya untuk memasukkan tercapai; Akses ditolak.'; -$phpMussel['lang']['previewer_days'] = 'Hari'; -$phpMussel['lang']['previewer_hours'] = 'Jam'; -$phpMussel['lang']['previewer_minutes'] = 'Menit'; -$phpMussel['lang']['previewer_months'] = 'Bulan'; -$phpMussel['lang']['previewer_seconds'] = 'Detik'; -$phpMussel['lang']['previewer_weeks'] = 'Minggu'; -$phpMussel['lang']['previewer_years'] = 'Tahun'; -$phpMussel['lang']['response_accounts_already_exists'] = 'Akun dengan nama pengguna ini sudah ada!'; -$phpMussel['lang']['response_accounts_created'] = 'Akun berhasil dibuat!'; -$phpMussel['lang']['response_accounts_deleted'] = 'Akun berhasil dihapus!'; -$phpMussel['lang']['response_accounts_doesnt_exist'] = 'Akun ini tidak ada.'; -$phpMussel['lang']['response_accounts_password_updated'] = 'Kata sandi berhasil diperbarui!'; -$phpMussel['lang']['response_activated'] = 'Berhasil diaktifkan.'; -$phpMussel['lang']['response_activation_failed'] = 'Kegagalan pengaktifan!'; -$phpMussel['lang']['response_checksum_error'] = 'Kesalahan checksum! File ditolak!'; -$phpMussel['lang']['response_component_successfully_installed'] = 'Komponen berhasil diinstal.'; -$phpMussel['lang']['response_component_successfully_uninstalled'] = 'Komponen berhasil diuninstal.'; -$phpMussel['lang']['response_component_successfully_updated'] = 'Komponen berhasil diperbarui.'; -$phpMussel['lang']['response_component_uninstall_error'] = 'Terjadi kesalahan saat mencoba untuk menguninstal komponen ini.'; -$phpMussel['lang']['response_configuration_updated'] = 'Konfigurasi berhasil diperbarui.'; -$phpMussel['lang']['response_deactivated'] = 'Berhasil dinonaktifkan.'; -$phpMussel['lang']['response_deactivation_failed'] = 'Kegagalan penonaktifan!'; -$phpMussel['lang']['response_delete_error'] = 'Gagal menghapus!'; -$phpMussel['lang']['response_directory_deleted'] = 'Direktori berhasil dihapus!'; -$phpMussel['lang']['response_directory_renamed'] = 'Nama direktori berhasil dimodifikasi!'; -$phpMussel['lang']['response_error'] = 'Kesalahan'; -$phpMussel['lang']['response_failed_to_install'] = 'Gagal menginstal!'; -$phpMussel['lang']['response_failed_to_update'] = 'Gagal memperbarui!'; -$phpMussel['lang']['response_file_deleted'] = 'File berhasil dihapus!'; -$phpMussel['lang']['response_file_edited'] = 'File berhasil diubah!'; -$phpMussel['lang']['response_file_renamed'] = 'Nama file berhasil dimodifikasi!'; -$phpMussel['lang']['response_file_restored'] = 'File berhasil dipulihkan!'; -$phpMussel['lang']['response_file_uploaded'] = 'File berhasil diupload!'; -$phpMussel['lang']['response_login_invalid_password'] = 'Kegagalan masuk! Kata sandi salah!'; -$phpMussel['lang']['response_login_invalid_username'] = 'Kegagalan masuk! Nama pengguna tidak ada!'; -$phpMussel['lang']['response_login_password_field_empty'] = 'Kata sandi yang kosong!'; -$phpMussel['lang']['response_login_username_field_empty'] = 'Nama pengguna yang kosong!'; -$phpMussel['lang']['response_rename_error'] = 'Gagal memodifikasi nama!'; -$phpMussel['lang']['response_restore_error_1'] = 'Gagal memulihkan! File rusak!'; -$phpMussel['lang']['response_restore_error_2'] = 'Gagal memulihkan! Kunci karantina salah!'; -$phpMussel['lang']['response_statistics_cleared'] = 'Statistik dicabut'; -$phpMussel['lang']['response_updates_already_up_to_date'] = 'Sudah yang terbaru.'; -$phpMussel['lang']['response_updates_not_installed'] = 'Komponen tidak diinstal!'; -$phpMussel['lang']['response_updates_not_installed_php'] = 'Komponen tidak diinstal (membutuhkan PHP {V})!'; -$phpMussel['lang']['response_updates_outdated'] = 'Tidak yang terbaru!'; -$phpMussel['lang']['response_updates_outdated_manually'] = 'Tidak yang terbaru (silahkan perbarui secara manual)!'; -$phpMussel['lang']['response_updates_outdated_php_version'] = 'Tidak yang terbaru (membutuhkan PHP {V})!'; -$phpMussel['lang']['response_updates_unable_to_determine'] = 'Tidak dapat menentukan.'; -$phpMussel['lang']['response_upload_error'] = 'Gagal mengupload!'; -$phpMussel['lang']['state_complete_access'] = 'Akses lengkap'; -$phpMussel['lang']['state_component_is_active'] = 'Komponen ini aktif.'; -$phpMussel['lang']['state_component_is_inactive'] = 'Komponen ini non-aktif.'; -$phpMussel['lang']['state_component_is_provisional'] = 'Komponen ini kadang-kadang aktif.'; -$phpMussel['lang']['state_default_password'] = 'Peringatan: Menggunakan kata sandi standar!'; -$phpMussel['lang']['state_logged_in'] = 'Pengguna yang online.'; -$phpMussel['lang']['state_logs_access_only'] = 'Akses ke log hanya'; -$phpMussel['lang']['state_maintenance_mode'] = 'Peringatan: Modus perawatan diaktifkan!'; -$phpMussel['lang']['state_password_not_valid'] = 'Peringatan: Akun ini tidak menggunakan kata sandi yang valid!'; -$phpMussel['lang']['state_quarantine'] = 'Ada %s file yang saat ini di karantina.'; -$phpMussel['lang']['switch-hide-non-outdated-set-false'] = 'Tidak menyembunyikan terbaru'; -$phpMussel['lang']['switch-hide-non-outdated-set-true'] = 'Menyembunyikan terbaru'; -$phpMussel['lang']['switch-hide-unused-set-false'] = 'Tidak menyembunyikan non-digunakan'; -$phpMussel['lang']['switch-hide-unused-set-true'] = 'Menyembunyikan non-digunakan'; -$phpMussel['lang']['tip_accounts'] = 'Salam, {username}.
        Halaman akun memungkinkan Anda untuk mengontrol siapa dapat mengakses bagian depan phpMussel.'; -$phpMussel['lang']['tip_config'] = 'Salam, {username}.
        Halaman konfigurasi memungkinkan Anda untuk memodifikasi konfigurasi untuk phpMussel dari bagian depan.'; -$phpMussel['lang']['tip_donate'] = 'phpMussel ditawarkan gratis, tapi jika Anda ingin menyumbang untuk proyek, Anda dapat melakukannya dengan mengklik menyumbangkan tombol.'; -$phpMussel['lang']['tip_file_manager'] = 'Salam, {username}.
        File manager memungkinkan Anda untuk menghapus, mengedit, mengupload, dan mendownload file. Gunakan dengan hati-hati (Anda bisa istirahat instalasi Anda dengan ini).'; -$phpMussel['lang']['tip_home'] = 'Salam, {username}.
        Ini adalah halaman utama untuk phpMussel bagian depan. Pilih link dari menu navigasi di sisi kiri untuk melanjutkan.'; -$phpMussel['lang']['tip_login'] = 'Nama pengguna standar: admin – Kata sandi standar: password'; -$phpMussel['lang']['tip_logs'] = 'Salam, {username}.
        Pilih log dari daftar dibawah untuk melihat isi log.'; -$phpMussel['lang']['tip_quarantine'] = 'Salam, {username}.
        Halaman ini mencantumkan semua file yang saat ini ada di karantina dan memfasilitasi pengelolaan file-file tersebut.'; -$phpMussel['lang']['tip_quarantine_disabled'] = 'Catatan: Karantina saat ini dinonaktifkan, namun bisa diaktifkan melalui halaman konfigurasi.'; -$phpMussel['lang']['tip_see_the_documentation'] = 'Lihat dokumentasi untuk informasi tentang berbagai direktif konfigurasi dan tujuan mereka.'; -$phpMussel['lang']['tip_statistics'] = 'Salam, {username}.
        Halaman ini menunjukkan beberapa statistik penggunaan dasar mengenai instalasi phpMussel Anda.'; -$phpMussel['lang']['tip_statistics_disabled'] = 'Catatan: Pelacakan statistik saat ini dinonaktifkan, namun dapat diaktifkan melalui halaman konfigurasi.'; -$phpMussel['lang']['tip_updates'] = 'Salam, {username}.
        Halaman pembaruan memungkinkan Anda untuk menginstal, menguninstal, dan memperbarui berbagai komponen phpMussel (paket inti, tanda tangan, plugin, file L10N, dll).'; -$phpMussel['lang']['tip_upload_test'] = 'Salam, {username}.
        Halaman upload test berisi form upload file standar, memungkinkan Anda untuk mengetes apakah file biasanya akan diblokir oleh phpMussel ketika mencoba untuk menguploadnya.'; -$phpMussel['lang']['title_accounts'] = 'phpMussel – Akun'; -$phpMussel['lang']['title_config'] = 'phpMussel – Konfigurasi'; -$phpMussel['lang']['title_file_manager'] = 'phpMussel – File Manager'; -$phpMussel['lang']['title_home'] = 'phpMussel – Halaman Utama'; -$phpMussel['lang']['title_login'] = 'phpMussel – Masuk'; -$phpMussel['lang']['title_logs'] = 'phpMussel – Log'; -$phpMussel['lang']['title_quarantine'] = 'phpMussel – Karantina'; -$phpMussel['lang']['title_statistics'] = 'phpMussel – Statistik'; -$phpMussel['lang']['title_updates'] = 'phpMussel – Pembaruan'; -$phpMussel['lang']['title_upload_test'] = 'phpMussel – Upload Test'; -$phpMussel['lang']['warning'] = 'Peringatan:'; -$phpMussel['lang']['warning_php_1'] = 'Versi PHP Anda tidak aktif didukung lagi! Memperbarui dianjurkan!'; -$phpMussel['lang']['warning_php_2'] = 'Versi PHP Anda sangat rentan! Memperbarui sangat dianjurkan!'; -$phpMussel['lang']['warning_signatures_1'] = 'Tidak ada file tanda tangan yang aktif!'; - -$phpMussel['lang']['info_some_useful_links'] = 'Beberapa link yang berguna:
          -
        • Masalah phpMussel @ GitHub – Halaman masalah untuk phpMussel (dukungan, bantuan, dll).
        • -
        • phpMussel @ Spambot Security – Forum diskusi untuk phpMussel (dukungan, bantuan, dll).
        • -
        • phpMussel @ SourceForge – Cermin download alternatif untuk phpMussel.
        • -
        • WebSecTools.com – Sebuah kumpulan alat webmaster sederhana untuk mengamankan situs web.
        • -
        • ClamavNet – Halaman utama untuk ClamAV (ClamAV® adalah injin antivirus open source untuk mendeteksi trojan, virus, malware dan ancaman berbahaya lainnya).
        • -
        • SecuriteInfo.com – Perusahaan keamanan komputer yang menawarkan tanda tangan tambahan untuk ClamAV.
        • -
        • PhishTank – Database phishing digunakan oleh scanner URL phpMussel.
        • -
        • Global PHP Group @ Facebook – Sumber belajar dan diskusi PHP.
        • -
        • PHP.earth – Sumber belajar dan diskusi PHP.
        • -
        • VirusTotal – VirusTotal adalah layanan gratis untuk menganalisis file dan URL yang mencurigakan.
        • -
        • Hybrid Analysis – Hybrid Analysis adalah layanan analisis malware gratis yang disediakan oleh Payload Security.
        • -
        • Malwarebytes – Komputer spesialis anti-malware.
        • -
        • MalwareTips – Berguna forum diskusi difokuskan pada malware.
        • -
        • Tabel Kerentanan – Mencantumkan berbagai versi dari paket-paket yang aman dan tidak aman (PHP, HHVM, dll).
        • -
        • Tabel Kompatibilitas – Mencantumkan informasi kompatibilitas untuk berbagai paket (CIDRAM, phpMussel, dll).
        • -
        '; diff --git a/libraries/plugins/phpMussel/vault/lang/lang.id.php b/libraries/plugins/phpMussel/vault/lang/lang.id.php deleted file mode 100644 index f85b8ca..0000000 --- a/libraries/plugins/phpMussel/vault/lang/lang.id.php +++ /dev/null @@ -1,129 +0,0 @@ -Pagina Principale | Disconnettersi'; -$phpMussel['lang']['bNav_logout'] = 'Disconnettersi'; -$phpMussel['lang']['config_attack_specific_archive_file_extensions'] = 'Riconosciute archivio file estensioni (formato è CSV; deve solo aggiungere o rimuovere quando problemi apparire; rimozione inutilmente può causare falsi positivi per archivio file, mentre aggiungendo inutilmente saranno essenzialmente whitelist quello che si sta aggiungendo dall\'attacco specifico rilevamento; modificare con cautela; anche notare che questo non ha qualsiasi effetto su cui gli archivi possono e non possono essere analizzati dal contenuti livello). La lista, come da predefinito, è i formati utilizzati più comunemente attraverso la maggior parte dei sistemi e CMS, ma apposta non è necessariamente completo.'; -$phpMussel['lang']['config_attack_specific_block_control_characters'] = 'Bloccare tutti i file contenenti i controlli caratteri (eccetto per nuove linee)? ([\x00-\x08\x0b\x0c\x0e\x1f\x7f]) Se si sta caricando solo normale testo, quindi si puó attivare questa opzione a fornire additionale protezione al vostro sistema. Ma, se si carica qualcosa di diverso da normale testo, abilitando questo opzione può causare falsi positivi. False = Non bloccare [Predefinito]; True = Bloccare.'; -$phpMussel['lang']['config_attack_specific_chameleon_from_exe'] = 'Cercare per eseguibili magici numeri che non sono riconosciuti eseguibili né archivi e per eseguibili cui non sono corrette. False = Disattivato; True = Attivato.'; -$phpMussel['lang']['config_attack_specific_chameleon_from_php'] = 'Cercare per PHP magici numeri che non sono riconosciuti PHP file né archivi. False = Disattivato; True = Attivato.'; -$phpMussel['lang']['config_attack_specific_chameleon_to_archive'] = 'Cercare per archivi di cui non sono corrette (Supportato: BZ, GZ, RAR, ZIP, RAR, GZ). False = Disattivato; True = Attivato.'; -$phpMussel['lang']['config_attack_specific_chameleon_to_doc'] = 'Cercare per office documenti di cui non sono corrette (Supportato: DOC, DOT, PPS, PPT, XLA, XLS, WIZ). False = Disattivato; True = Attivato.'; -$phpMussel['lang']['config_attack_specific_chameleon_to_img'] = 'Cercare per immagini file di cui non sono corrette (Supportato: BMP, DIB, PNG, GIF, JPEG, JPG, XCF, PSD, PDD, WEBP). False = Disattivato; True = Attivato.'; -$phpMussel['lang']['config_attack_specific_chameleon_to_pdf'] = 'Cercare per PDF file di cui non sono corrette. False = Disattivato; True = Attivato.'; -$phpMussel['lang']['config_attack_specific_corrupted_exe'] = 'Corrotto file e parsare errori. False = Ignorarli; True = Bloccarli [Predefinito]. Rilevare e bloccare i potenzialmente corrotti PE (portatile eseguibili) file? Spesso (ma non sempre), quando alcuni aspetti di un PE file sono corrotto o non può essere parsato correttamente, tale può essere indicativo di una virale infezione. I processi utilizzati dalla maggior parte dei antivirus programmi per rilevare i virus all\'intero PE file richiedono parsare quei file in certi modi, di cui, se il programmatore di un virus è consapevole di, sarà specificamente provare di prevenire, al fine di abilita loro virus di rimanere inosservato.'; -$phpMussel['lang']['config_attack_specific_decode_threshold'] = 'Soglia per la lunghezza dei grezzi dati dove decodificare comandi dovrebbe essere rilevati (nel caso in cui vi siano notevoli problemi di prestazioni durante la scansione). Predefinito = 512KB. Un zero o un nullo valore disabilita la soglia (rimuovere tale limitazione basata sulla dimensione dei file).'; -$phpMussel['lang']['config_attack_specific_scannable_threshold'] = 'Soglia per la lunghezza dei dati grezzi dove phpMussel è permesso di leggere e scansione (nel caso in cui vi siano notevoli problemi di prestazioni durante la scansione). Predefinito = 32MB. Un zero o un nullo valore disabilita la soglia. In generale, questo valore non dovrebbe essere meno quella media dimensione dei file che si desidera e si aspettano di ricevere al vostro server o al vostro web sito, non dovrebbe essere più di la filesize_limit direttiva, e non dovrebbe essere più di circa un quinto del totale ammissibile allocazione della memoria concesso al PHP tramite il file di configurazione "php.ini". Questa direttiva esiste per tenta di evitare avendo phpMussel utilizzare troppa memoria (di cui sarebbe impedirebbe di essere capace di completare la file scansione correttamente per i file piú d\'una certa dimensione).'; -$phpMussel['lang']['config_compatibility_ignore_upload_errors'] = 'Questa direttiva dovrebbe generalmente essere SPENTO meno se necessario per la corretta funzionalità del phpMussel sul vostra sistema. Normalmente, quando spento, quando phpMussel rileva la presenza di elementi nella $_FILES array(), è tenterà di avviare una scansione dei file che tali elementi rappresentano, e, se tali elementi sono vuoti, phpMussel restituirà un errore messaggio. Questo è un comportamento adeguato per phpMussel. Tuttavia, per alcuni CMS, vuoti elementi nel $_FILES può avvenire come conseguenza del naturale comportamento di questi CMS, o errori possono essere segnalati quando non ce ne sono, nel qual caso, il normale comportamento per phpMussel sarà interferire con il normale comportamento di questi CMS. Se una tale situazione avvenire per voi, attivazione di questa opzione SU sarà istruirà phpMussel a non tenta avviare scansioni per tali vuoti elementi, ignorarli quando si trova ea non ritorno qualsiasi errore correlato messaggi, così permettendo proseguimento della pagina richiesta. False = SPENTO/OFF; True = SU/ON.'; -$phpMussel['lang']['config_compatibility_only_allow_images'] = 'Se vi aspettare o intendere solo di permettere le immagini da caricare al vostro sistema o CMS, e se assolutamente non richiedono qualsiasi file diversi da immagini essere caricare per il vostro sistema o CMS, questa direttiva dovrebbe essere SU, ma dovrebbe altrimenti essere SPENTO. Se questa direttiva è SU, che istruirà phpMussel di indiscriminatamente bloccare tutti i caricati file identificati come file non-immagine, senza scansionali. Questo può ridurre il tempo di processo e l\'utilizzo della memoria per tentati caricamenti di non-immagine file. False = SPENTO/OFF; True = SU/ON.'; -$phpMussel['lang']['config_files_block_encrypted_archives'] = 'Rilevi e blocchi archivi criptati? Perché phpMussel non è in grado di verifica del contenuto degli archivi criptati, è possibile che la archivi criptati può essere usato da un attaccante verifieracome mezzo di tenta di bypassare phpMussel, verificatore anti-virus e altri tali protezioni. Istruire phpMussel di bloccare qualsiasi archivi criptati che si trovato potrebbe potenzialmente contribuire a ridurre il rischio associato a questi tali possibilità. False = No; True = Sì [Predefinito].'; -$phpMussel['lang']['config_files_check_archives'] = 'Tenta per verifica il contenuti degli archivi? False = No (no verifica); True = Sì (fare verifica) [Predefinito]. Al momento, gli unici formati di archiviazione e compressione supportati sono BZ/BZIP2, GZ/GZIP, LZF, PHAR, TAR e ZIP (formati di archiviazione e compressione RAR, CAB, 7z e eccetera non sono supportate al momento). Questo non è infallibile! Mentre mi assai raccomando che è attivato, non posso garantire che sarà sempre trovare tutto. Anche essere consapevoli che verifica per archivio al momento è non ricorsiva per PHAR o ZIP formati.'; -$phpMussel['lang']['config_files_filesize_archives'] = 'Eredita file dimensione limite blacklist/whitelist al contenuti degli archivi? False = No (appena greylist tutto); True = Sì [Predefinito].'; -$phpMussel['lang']['config_files_filesize_limit'] = 'File dimensione limite in KB. 65536 = 64MB [Predefinito]; 0 = Nessun limite (sempre sul greylist), qualsiasi (positivo) numerico valore accettato. Questo può essere utile quando la configurazione di PHP limita la quantità di memoria che un processo può contenere o se i configurazione ha limitato la dimensione dei file caricamenti.'; -$phpMussel['lang']['config_files_filesize_response'] = 'Cosa fare con i file che superano il file dimensione limite (se esistente). False = Whitelist; True = Blacklist [Predefinito].'; -$phpMussel['lang']['config_files_filetype_archives'] = 'Eredita file tipi blacklist/whitelist al contenuti degli archivi? False = No (appena greylist tutto); True = Sì [Predefinito].'; -$phpMussel['lang']['config_files_filetype_blacklist'] = 'Blacklist:'; -$phpMussel['lang']['config_files_filetype_greylist'] = 'Greylist:'; -$phpMussel['lang']['config_files_filetype_whitelist'] = 'Se il vostro sistema permette solo determinati tipi di file per caricamenti, o se il vostra sistema esplicitamente negare determinati tipi di file, specificando i tipi di file nel whitelist, blacklist e/o greylist può aumentare la velocità a cui la scansione viene eseguita da permettendo lo script da ignora alcuni tipi di file. Il formato è CSV (valori separati da virgola). Se si desidera eseguire la scansione tutti, invece del whitelist, la blacklist o la greylist, lasciare le variabili vuoti; Fare questo sarà disabilitali. Logico ordine del trattamento è: Se il tipo di file è nel whitelist, non scansiona e non blocca il file, e non verificare il file contra la blacklist o la greylist. Se il tipo di file è nel blacklist, non scansiona il file ma bloccarlo comunque, e non verificar il file contra la greylist. Se il greylist è vuoto o se il greylist non è vuota e il tipo di file è nel greylist, scansiona il file come per normale e determinare se bloccarlo sulla base dei risultati della scansione, ma se il greylist non è vuoto e il tipo di file non è nel greylist, trattare il file come se è nel blacklist, quindi non scansionarlo ma bloccarlo comunque. Whitelist:'; -$phpMussel['lang']['config_files_max_recursion'] = 'Massimo ricorsione profondità limite per gli archivi. Predefinito = 10.'; -$phpMussel['lang']['config_files_max_uploads'] = 'Massimo numero di file per analizzare durante il file caricamenti scansione prima le terminazione del scansione e d\'informare dell\'utente che essi stai caricando troppo in una volta! Fornisce protezione contro un teorico attacco per cui un malintenzionato utente tenta per DDoS vostra sistema o CMS da sovraccaricamento phpMussel rallentare il PHP processo ad un brusco stop. Raccomandato: 10. Si potrebbe desiderare di aumentare o diminuire che numero basato sulla velocità del vostra sistema e hardware. Si noti che questo numero non tiene conto o includere il contenuti degli archivi.'; -$phpMussel['lang']['config_general_cleanup'] = 'Disimpostare le script variabili e la cache dopo l\'esecuzione? False = No; True = Sì [Predefinito]. Se si non utilizza lo script dopo l\'iniziale scansione di caricamenti, dovrebbe impostato a true (sì), per minimizzare la memoria uso. Se si fa utilizza lo script dopo l\'iniziale scansione di caricamenti, dovrebbe impostato a false (no), al fine per evitare ricaricare inutili duplicati dati all\'interno memoria. In generale pratica, dovrebbe probabilmente essere impostata a true (sì), ma, se si farlo, voi sarà non in grado per utilizzare lo script per scopi diversi dalla scansione di caricamenti. Non ha alcuna influenza in modalità CLI.'; -$phpMussel['lang']['config_general_default_algo'] = 'Definisce quale algoritmo da utilizzare per tutte le password e le sessioni in futuro. Opzioni: PASSWORD_DEFAULT (predefinito), PASSWORD_BCRYPT, PASSWORD_ARGON2I (richiede PHP >= 7.2.0).'; -$phpMussel['lang']['config_general_delete_on_sight'] = 'Abilitando questa opzione sarà istruirà lo script per tentare immediatamente eliminare qualsiasi file trovato durante scansioni che corrisponde a qualsiasi i criteri di rilevazione, attraverso le firme o altrimenti. I file determinati ad essere "pulito" non verranno toccati. Nel caso degli archivi, l\'intero archivio verrà eliminato (indipendentemente se il file all\'origine è soltanto uno dei vari file contenuti all\'interno dell\'archivio o non). Nel caso di file caricamente scansione, solitamente, non è necessario attivare questa opzione, perché solitamente, PHP sarà automaticamente eliminerà il contenuto della cache quando l\'esecuzione è terminata, il che significa che lo farà solitamente eliminare tutti i file caricati tramite al server tranne ciò che già è spostato, copiato o cancellato. L\'opzione viene aggiunto qui come ulteriore misura di sicurezza per coloro le cui copie di PHP non sempre comportarsi nel previsto modo. False = Dopo la scansione, lasciare il file solo [Predefinito]; True = Dopo la scansione, se non pulite, immediatamente eliminarlo.'; -$phpMussel['lang']['config_general_disable_cli'] = 'Disabilita CLI? Modalità CLI è abilitato per predefinito, ma a volte può interferire con alcuni strumenti di test (come PHPUnit, per esempio) e altre applicazioni basate su CLI. Se non è necessario disattivare la modalità CLI, si dovrebbe ignorare questa direttiva. False = Abilita CLI [Predefinito]; True = Disabilita CLI.'; -$phpMussel['lang']['config_general_disable_frontend'] = 'Disabilita l\'accesso front-end? L\'accesso front-end può rendere phpMussel più gestibile, ma può anche essere un potenziale rischio per la sicurezza. Si consiglia di gestire phpMussel attraverso il back-end, quando possibile, ma l\'accesso front-end è previsto per quando non è possibile. Mantenerlo disabilitato tranne se hai bisogno. False = Abilita l\'accesso front-end; True = Disabilita l\'accesso front-end [Predefinito].'; -$phpMussel['lang']['config_general_disable_webfonts'] = 'Disabilita webfonts? True = Sì; False = No [Predefinito].'; -$phpMussel['lang']['config_general_enable_plugins'] = 'Attiva il supporto per i plugin di phpMussel? False = No; True = Sì [Predefinito].'; -$phpMussel['lang']['config_general_forbid_on_block'] = 'phpMussel dovrebbe rispondere con 403 header con il file caricamente bloccato messaggio, o rimanere con il solito 200 OK? False = No (200); True = Sì (403) [Predefinito].'; -$phpMussel['lang']['config_general_FrontEndLog'] = 'File per la registrazione di l\'accesso front-end tentativi di accesso. Specificare un nome di file, o lasciare vuoto per disabilitare.'; -$phpMussel['lang']['config_general_honeypot_mode'] = 'Quando la honeypot modalità è abilitata, phpMussel tenterà di mettere in quarantena ogni file caricamenti che esso incontra, indipendentemente di se il file che essere caricato corrisponde d\'alcuna incluso firma, e zero reale scansionare o analisi di quei tentati file caricati sarà avvenire. Questa funzionalità dovrebbe essere utile per coloro che desiderano utilizzare phpMussel a fini di virus/malware ricerca, ma non si raccomandato di abilitare questa funzionalità se l\'uso previsto de phpMussel da parte dell\'utente è per l\'effettivo scansione dei file caricamenti né raccomandato di utilizzare la funzionalità di honeypot per fini diversi da l\'uso de honeypot. Da predefinita, questo opzione è disattivato. False = Disattivato [Predefinito]; True = Attivato.'; -$phpMussel['lang']['config_general_ipaddr'] = 'Dove trovare l\'indirizzo IP di collegamento richiesta? (Utile per servizi come Cloudflare e simili) Predefinito = REMOTE_ADDR. AVVISO: Non modificare questa se non sai quello che stai facendo!'; -$phpMussel['lang']['config_general_lang'] = 'Specifica la lingua predefinita per phpMussel.'; -$phpMussel['lang']['config_general_maintenance_mode'] = 'Abilita la modalità di manutenzione? True = Sì; False = No [Predefinito]. Disattiva tutto tranne il front-end. A volte utile per l\'aggiornamento del CMS, dei framework, ecc.'; -$phpMussel['lang']['config_general_max_login_attempts'] = 'Numero massimo di tentativi di accesso (front-end). Predefinito = 5.'; -$phpMussel['lang']['config_general_numbers'] = 'Come preferisci che i numeri siano visualizzati? Seleziona l\'esempio che ti sembra più corretto.'; -$phpMussel['lang']['config_general_quarantine_key'] = 'phpMussel è capace di mettere in quarantena contrassegnati tentati file caricamenti in isolamento all\'interno della phpMussel vault, se questo è qualcosa che si vuole fare. L\'ordinario utenti di phpMussel che semplicemente desiderano proteggere i loro website o hosting environment senza avendo profondo interesse ad analizzare qualsiasi contrassegnati tentati file caricamenti dovrebbe lasciare questa funzionalità disattivata, ma tutti gli utenti interessati ad ulteriori analisi di contrassegnati tentati file caricamenti per la ricerca di malware o per simili cose dovrebbe attivare questa funzionalità. Quarantena di contrassegnati tentati file caricamenti a volte può aiutare anche in debug falsi positivi, se questo è qualcosa che si accade di frequente per voi. Per disattivare la funzionalità di quarantena, lasciare vuota la direttiva quarantine_key, o cancellare i contenuti di tale direttiva, se non già è vuoto. Per abilita la funzionalità di quarantena, immettere alcun valore nella direttiva. Il quarantine_key è un importante aspetto di sicurezza della funzionalità di quarantena richiesto come un mezzo per prevenire la funzionalità di quarantena di essere sfruttati da potenziali aggressori e come mezzo per prevenire potenziale esecuzione di dati memorizzati all\'interno della quarantena. Il quarantine_key dovrebbe essere trattato nello stesso modo come le password: Più lunga è la migliore, e proteggila ermeticamente. Per la migliore effetto, utilizzare in combinazione con delete_on_sight.'; -$phpMussel['lang']['config_general_quarantine_max_filesize'] = 'La massima permesso dimensione del file dei file essere quarantena. File di dimensioni superiori a questo valore NON verranno quarantena. Questa direttiva è importante per rendere più difficile per qualsiasi potenziali aggressori di inondare la vostra quarantena con indesiderati dati potenzialmente causare un eccessivo utilizzo dei dati sul vostro servizio di hosting. Predefinito = 2MB.'; -$phpMussel['lang']['config_general_quarantine_max_usage'] = 'La massima permesso utilizzo della memoria per la quarantena. Se la totale memoria utilizzata dalla quarantena raggiunge questo valore, i più vecchi file in quarantena vengono eliminati fino a quando la totale memoria utilizzata non raggiunge questo valore. Questa direttiva è importante per rendere più difficile per qualsiasi potenziali aggressori di inondare la tua quarantena con indesiderati dati potenzialmente causare un eccessivo utilizzo dei dati sul vostro servizio di hosting. Predefinito = 64MB.'; -$phpMussel['lang']['config_general_scan_cache_expiry'] = 'Per quanto tempo deve phpMussel cache i risultati della scansione? Il valore è il numero di secondi per memorizzare nella cache i risultati della scansione per. Predefinito valore è 21600 secondi (6 ore); Un valore pari a 0 disabilita il caching dei risultati di scansione.'; -$phpMussel['lang']['config_general_scan_kills'] = 'Il nome del file per registrare tutti i record di bloccato o ucciso caricamenti. Specificare un nome del file, o lasciare vuoto per disattivarlo.'; -$phpMussel['lang']['config_general_scan_log'] = 'Il nome del file per registrare tutti i risultati di la scansione. Specificare un nome del file, o lasciare vuoto per disattivarlo.'; -$phpMussel['lang']['config_general_scan_log_serialized'] = 'Il nome del file per registrare tutti i risultati di la scansione (utilizzando un formato serializzato). Specificare un nome del file, o lasciare vuoto per disattivarlo.'; -$phpMussel['lang']['config_general_statistics'] = 'Monitorare le statistiche di utilizzo di phpMussel? True = Sì; False = No [Predefinito].'; -$phpMussel['lang']['config_general_timeFormat'] = 'Il formato della data/ora di notazione usata da phpMussel. Ulteriori opzioni possono essere aggiunti su richiesta.'; -$phpMussel['lang']['config_general_timeOffset'] = 'Fuso orario offset in minuti.'; -$phpMussel['lang']['config_general_timezone'] = 'Il vostro fuso orario.'; -$phpMussel['lang']['config_general_truncate'] = 'Troncare i file di log quando raggiungono una determinata dimensione? Il valore è la dimensione massima in B/KB/MB/GB/TB che un file di log può crescere prima di essere troncato. Il valore predefinito di 0KB disattiva il troncamento (i file di log possono crescere indefinitamente). Nota: Si applica ai singoli file di log! La dimensione dei file di log non viene considerata collettivamente.'; -$phpMussel['lang']['config_heuristic_threshold'] = 'Ci sono particolare firme di phpMussel che sono destinato a identificare sospetti e potenzialmente maligno qualità dei file che vengono essere caricati senza in sé identificando i file che vengono essere caricati in particolare ad essere maligno. Questo "threshold" (soglia) valore dice phpMussel cosa che il totale massimo peso di sospetti e potenzialmente maligno qualità dei file che vengono essere caricati che è ammissibile è prima che quei file devono essere contrassegnati come maligno. La definizione di peso in questo contesto è il totale numero di sospetti e potenzialmente maligno qualità identificato. Per predefinito, questo valore viene impostato su 3. Un inferiore valore generalmente sarà risultare di una maggiore presenza di falsi positivi ma una maggior numero di file essere contrassegnato come maligno, mentre una maggiore valore generalmente sarà risultare di un inferiore presenza di falsi positivi ma un inferiore numero di file essere contrassegnato come maligno. È generalmente meglio di lasciare questo valore a suo predefinito a meno che si incontrare problemi ad esso correlati.'; -$phpMussel['lang']['config_signatures_Active'] = 'Un elenco dei file di firme attivi, delimitati da virgole.'; -$phpMussel['lang']['config_signatures_detect_adware'] = 'Dovrebbe phpMussel utilizzare le firme per il rilevamento di adware? False = No; True = Sì [Predefinito].'; -$phpMussel['lang']['config_signatures_detect_deface'] = 'Dovrebbe phpMussel utilizzare le firme per il rilevamento di sfiguramenti e sfiguratori? False = No; True = Sì [Predefinito].'; -$phpMussel['lang']['config_signatures_detect_encryption'] = 'Dovrebbe phpMussel rilevare e bloccare i file crittografati? False = No; True = Sì [Predefinito].'; -$phpMussel['lang']['config_signatures_detect_joke_hoax'] = 'Dovrebbe phpMussel utilizzare le firme per il rilevamento di scherzo/inganno malware/virus? False = No; True = Sì [Predefinito].'; -$phpMussel['lang']['config_signatures_detect_packer_packed'] = 'Dovrebbe phpMussel utilizzare le firme per il rilevamento di confezionatori e dati confezionati? False = No; True = Sì [Predefinito].'; -$phpMussel['lang']['config_signatures_detect_pua_pup'] = 'Dovrebbe phpMussel utilizzare le firme per il rilevamento di PUAs/PUPs? False = No; True = Sì [Predefinito].'; -$phpMussel['lang']['config_signatures_detect_shell'] = 'Dovrebbe phpMussel utilizzare le firme per il rilevamento di shell script? False = No; True = Sì [Predefinito].'; -$phpMussel['lang']['config_signatures_fail_extensions_silently'] = 'Dovrebbe phpMussel rapporto quando le estensioni sono mancanti? Se fail_extensions_silently è disattivato, mancanti estensioni saranno riportato sulla scansione, e se fail_extensions_silently è abilitato, mancanti estensioni saranno ignorato, con scansione riportando per quei file che non ha sono problemi. La disattivazione di questa direttiva potrebbe potenzialmente aumentare la sicurezza, ma può anche portare ad un aumento di falsi positivi. False = Disattivato; True = Attivato [Predefinito].'; -$phpMussel['lang']['config_signatures_fail_silently'] = 'Dovrebbe phpMussel rapporto quando le file di firme sono mancanti o danneggiati? Se fail_silently è disattivato, mancanti e danneggiati file saranno riportato sulla scansione, e se fail_silently è abilitato, mancanti e danneggiati file saranno ignorato, con scansione riportando per quei file che non ha sono problemi. Questo dovrebbe essere generalmente lasciata sola a meno che sperimentando inaspettate terminazioni o simili problemi. False = Disattivato; True = Attivato [Predefinito].'; -$phpMussel['lang']['config_template_data_css_url'] = 'Il modello file per i temi personalizzati utilizzi esterni CSS proprietà, mentre il modello file per i temi personalizzati utilizzi interni CSS proprietà. Per istruire phpMussel di utilizzare il modello file per i temi personalizzati, specificare l\'indirizzo pubblico HTTP dei CSS file dei suoi tema personalizzato utilizzando la variabile css_url. Se si lascia questo variabile come vuoto, phpMussel utilizzerà il modello file per il predefinito tema.'; -$phpMussel['lang']['config_template_data_Magnification'] = 'Ingrandimento del carattere. Predefinito = 1.'; -$phpMussel['lang']['config_template_data_theme'] = 'Tema predefinito da utilizzare per phpMussel.'; -$phpMussel['lang']['config_urlscanner_cache_time'] = 'Per quanto tempo (in secondi) dovrebbe i risultati delle API richieste essere memorizzati nella cache per? Predefinito è 3600 secondi (1 ora).'; -$phpMussel['lang']['config_urlscanner_google_api_key'] = 'Abilita API richieste per l\'API di Google Safe Browsing quando le API chiave necessarie è definito.'; -$phpMussel['lang']['config_urlscanner_lookup_hphosts'] = 'Abilita API richieste per l\'API di hpHosts quando impostato su true.'; -$phpMussel['lang']['config_urlscanner_maximum_api_lookups'] = 'Numero massimo di richieste per l\'API di eseguire per iterazione di scansione individuo. Perché ogni richiesta supplementare per l\'API farà aggiungere al tempo totale necessario per completare ogni iterazione di scansione, si potrebbe desiderare di stipulare una limitazione al fine di accelerare il processo di scansione. Quando è impostato su 0, no tale ammissibile numero massimo sarà applicata. Impostato su 10 per impostazione predefinite.'; -$phpMussel['lang']['config_urlscanner_maximum_api_lookups_response'] = 'Cosa fare se il ammissibile numero massimo di richieste per l\'API è superato? False = Fare nulla (continuare il processo) [Predefinito]; True = Segnare/bloccare il file.'; -$phpMussel['lang']['config_virustotal_vt_public_api_key'] = 'Facoltativamente, phpMussel è in grado di scansionare dei file utilizzando il Virus Total API come un modo per fornire un notevolmente migliorato livello di protezione contro virus, trojan, malware e altre minacce. Per predefinita, la scansionare dei file utilizzando il Virus Total API è disattivato. Per abilitarlo, una API chiave da Virus Total è richiesta. A causa del significativo vantaggio che questo potrebbe fornire a voi, è qualcosa che consiglio vivamente di attivare. Tuttavia, si prega di notare che per utilizzare il Virus Total API, è necessario d\'accettare i Termini di Servizio (Terms of Service) e rispettare tutte le orientamenti descritto nella documentazione di Virus Total! Tu NON sei autorizzato a utilizzare questa funzionalità TRANNE SE: Hai letto e accettato i Termini di Servizio (Terms of Service) di Virus Total e le sue API. Hai letto e si capisce, come minimo, il preambolo del Virus Total Pubblica API documentazione (tutto dopo "VirusTotal Public API v2.0" ma prima "Contents").'; -$phpMussel['lang']['config_virustotal_vt_quota_rate'] = 'Secondo a la Virus Total API documentazione, è limitato a un massimo di 4 richieste di qualsiasi natura in un dato 1 minuto tempo periodo. Se tu esegue una honeyclient, honeypot o qualsiasi altro automazione che sta fornire risorse a VirusTotal e non solo recuperare rapporti si ha diritto a un più alto tasso di richiesta quota. Per predefinita, phpMussel rigorosamente rispetti questi limiti, ma a causa della possibilità di tali tassi quote essere aumentati, questi due direttivi sono forniti come un mezzo per voi per istruire phpMussel da quale limite si deve rispettare. A meno che sei stato richiesto di farlo, non è raccomandato per voi per aumentare questi valori, ma, se hai incontrati problemi relativi a raggiungere il vostro tasso quota, diminuendo questi valori POTREBBE a volte aiutare nel lavoro attraverso questi problemi. Il vostro tasso limite è determinato come vt_quota_rate richieste di qualsiasi natura in un dato vt_quota_time minuto tempo periodo.'; -$phpMussel['lang']['config_virustotal_vt_quota_time'] = '(Vedi descrizione precedente).'; -$phpMussel['lang']['config_virustotal_vt_suspicion_level'] = 'Per predefinita, phpMussel limiterà quali file ciò scansiona utilizzando il Virus Total API ai quei file che considera "sospettose". Facoltativamente, è possibile modificare questa restrizione per mezzo di modificando il valore del vt_suspicion_level direttiva.'; -$phpMussel['lang']['config_virustotal_vt_weighting'] = 'Dovrebbe phpMussel applica i risultati della scansione utilizzando il Virus Total API come rilevamenti o il ponderazione rilevamenti? Questa direttiva esiste, perché, sebbene scansione di un file utilizzando più motori (come Virus Total fa) dovrebbe risulta in un maggiore tasso di rilevamenti (e quindi in un maggiore numero di maligni file essere catturati), può anche risulta in un maggiore numero di falsi positivi, e quindi, in certe circostanze, i risultati della scansione possono essere meglio utilizzato come un punteggio di confidenza anziché come una conclusione definitiva. Se viene utilizzato un valore di 0, i risultati della scansione utilizzando il Virus Total API saranno applicati come rilevamenti, e quindi, se qualsiasi motori utilizzati da Virus Total che marca il file sottoposto a scansione come maligno, phpMussel considererà il file come maligno. Se qualsiasi altro valore è utilizzato, i risultati della scansione utilizzando il Virus Total API saranno applicati come ponderazione rilevamenti, e quindi, il numero di motori utilizzati da Virus Total marcando il file sottoposto a scansione come maligno servirà come un punteggio di confidenza (o ponderazione rilevamenti) per se il file sottoposto a scansione deve essere considerato maligno per phpMussel (il valore utilizzato rappresenterà il minimo punteggio di confidenza o ponderazione richiesto per essere considerato maligno). Un valore di 0 è utilizzato per predefinita.'; -$phpMussel['lang']['Extended Description: phpMussel'] = 'Il pacchetto principale (senza le firme, la documentazione, e la configurazione).'; -$phpMussel['lang']['field_activate'] = 'Attivarlo'; -$phpMussel['lang']['field_clear_all'] = 'Revoca tutto'; -$phpMussel['lang']['field_component'] = 'Componente'; -$phpMussel['lang']['field_create_new_account'] = 'Crea un nuovo account'; -$phpMussel['lang']['field_deactivate'] = 'Disattivarlo'; -$phpMussel['lang']['field_delete_account'] = 'Elimina un account'; -$phpMussel['lang']['field_delete_all'] = 'Eliminare tutto'; -$phpMussel['lang']['field_delete_file'] = 'Eliminare'; -$phpMussel['lang']['field_download_file'] = 'Scaricare'; -$phpMussel['lang']['field_edit_file'] = 'Modificare'; -$phpMussel['lang']['field_false'] = 'False (Falso)'; -$phpMussel['lang']['field_file'] = 'File'; -$phpMussel['lang']['field_filename'] = 'Nome del file: '; -$phpMussel['lang']['field_filetype_directory'] = 'Elenco'; -$phpMussel['lang']['field_filetype_info'] = '{EXT} File'; -$phpMussel['lang']['field_filetype_unknown'] = 'Sconosciuto'; -$phpMussel['lang']['field_install'] = 'Installarlo'; -$phpMussel['lang']['field_latest_version'] = 'Ultima Versione'; -$phpMussel['lang']['field_log_in'] = 'Accedi'; -$phpMussel['lang']['field_more_fields'] = 'Più Campi'; -$phpMussel['lang']['field_new_name'] = 'Nuovo nome:'; -$phpMussel['lang']['field_ok'] = 'OK'; -$phpMussel['lang']['field_options'] = 'Opzioni'; -$phpMussel['lang']['field_password'] = 'Password'; -$phpMussel['lang']['field_permissions'] = 'Permessi'; -$phpMussel['lang']['field_quarantine_key'] = 'Chiave di quarantena'; -$phpMussel['lang']['field_rename_file'] = 'Rinominare'; -$phpMussel['lang']['field_reset'] = 'Azzerare'; -$phpMussel['lang']['field_restore_file'] = 'Ripristinare'; -$phpMussel['lang']['field_set_new_password'] = 'Imposta una nuova password'; -$phpMussel['lang']['field_size'] = 'Dimensione Totale: '; -$phpMussel['lang']['field_size_bytes'] = 'byte'; -$phpMussel['lang']['field_size_GB'] = 'GB'; -$phpMussel['lang']['field_size_KB'] = 'KB'; -$phpMussel['lang']['field_size_MB'] = 'MB'; -$phpMussel['lang']['field_size_TB'] = 'TB'; -$phpMussel['lang']['field_status'] = 'Status'; -$phpMussel['lang']['field_system_timezone'] = 'Utilizza il fuso orario predefinito del sistema.'; -$phpMussel['lang']['field_true'] = 'True (Vero)'; -$phpMussel['lang']['field_uninstall'] = 'Disinstallarlo'; -$phpMussel['lang']['field_update'] = 'Aggiornarlo'; -$phpMussel['lang']['field_update_all'] = 'Aggiorna tutto'; -$phpMussel['lang']['field_upload_file'] = 'Carica nuovo file'; -$phpMussel['lang']['field_username'] = 'Nome Utente'; -$phpMussel['lang']['field_your_version'] = 'La Vostra Versione'; -$phpMussel['lang']['header_login'] = 'Per favore accedi per continuare.'; -$phpMussel['lang']['label_active_config_file'] = 'File di configurazione attivo: '; -$phpMussel['lang']['label_blocked'] = 'Caricamenti bloccati'; -$phpMussel['lang']['label_branch'] = 'Branch più recente stabile:'; -$phpMussel['lang']['label_events'] = 'Scansioni eventi'; -$phpMussel['lang']['label_flagged'] = 'Oggetti contrassegnati'; -$phpMussel['lang']['label_fmgr_cache_data'] = 'Dati di cache e file temporanei'; -$phpMussel['lang']['label_fmgr_disk_usage'] = 'Utilizzo del disco da parte di phpMussel: '; -$phpMussel['lang']['label_fmgr_free_space'] = 'Spazio libero su disco: '; -$phpMussel['lang']['label_fmgr_total_disk_usage'] = 'Utilizzo del disco totale: '; -$phpMussel['lang']['label_fmgr_total_space'] = 'Spazio totale su disco: '; -$phpMussel['lang']['label_fmgr_updates_metadata'] = 'Componente aggiorna metadati'; -$phpMussel['lang']['label_hide'] = 'Nascondere'; -$phpMussel['lang']['label_os'] = 'Sistema operativo utilizzata:'; -$phpMussel['lang']['label_other'] = 'Altro'; -$phpMussel['lang']['label_other-Active'] = 'File di firme attivi'; -$phpMussel['lang']['label_other-Since'] = 'Data d\'inizio'; -$phpMussel['lang']['label_php'] = 'Versione PHP utilizzata:'; -$phpMussel['lang']['label_phpmussel'] = 'Versione phpMussel utilizzata:'; -$phpMussel['lang']['label_quarantined'] = 'Caricamenti in quarantena'; -$phpMussel['lang']['label_sapi'] = 'SAPI utilizzata:'; -$phpMussel['lang']['label_scanned_objects'] = 'Oggetti scansionati'; -$phpMussel['lang']['label_scanned_uploads'] = 'Caricamenti scansionati'; -$phpMussel['lang']['label_show'] = 'Mostrare'; -$phpMussel['lang']['label_size_in_quarantine'] = 'Dimensione in quarantena: '; -$phpMussel['lang']['label_stable'] = 'Più recente stabile:'; -$phpMussel['lang']['label_sysinfo'] = 'Informazioni sul sistema:'; -$phpMussel['lang']['label_tests'] = 'Test:'; -$phpMussel['lang']['label_unstable'] = 'Più recente instabile:'; -$phpMussel['lang']['label_upload_date'] = 'Data del caricamento: '; -$phpMussel['lang']['label_upload_hash'] = 'Hash del caricamento: '; -$phpMussel['lang']['label_upload_origin'] = 'L\'origine del caricamento: '; -$phpMussel['lang']['label_upload_size'] = 'Dimensione del caricamento: '; -$phpMussel['lang']['link_accounts'] = 'Utenti'; -$phpMussel['lang']['link_config'] = 'Configurazione'; -$phpMussel['lang']['link_documentation'] = 'Documentazione'; -$phpMussel['lang']['link_file_manager'] = 'File Manager'; -$phpMussel['lang']['link_home'] = 'Pagina Principale'; -$phpMussel['lang']['link_logs'] = 'File di Log'; -$phpMussel['lang']['link_quarantine'] = 'Quarantena'; -$phpMussel['lang']['link_statistics'] = 'Statistiche'; -$phpMussel['lang']['link_textmode'] = 'Formattazione del testo: SempliceFormattato'; -$phpMussel['lang']['link_updates'] = 'Aggiornamenti'; -$phpMussel['lang']['link_upload_test'] = 'Carica Testare'; -$phpMussel['lang']['logs_logfile_doesnt_exist'] = 'Log selezionato non esiste!'; -$phpMussel['lang']['logs_no_logfiles_available'] = 'Nessun file di log disponibili.'; -$phpMussel['lang']['logs_no_logfile_selected'] = 'Nessun file di log selezionato.'; -$phpMussel['lang']['max_login_attempts_exceeded'] = 'Numero massimo di tentativi di accesso superato; Accesso negato.'; -$phpMussel['lang']['previewer_days'] = 'Giorni'; -$phpMussel['lang']['previewer_hours'] = 'Ore'; -$phpMussel['lang']['previewer_minutes'] = 'Minuti'; -$phpMussel['lang']['previewer_months'] = 'Mesi'; -$phpMussel['lang']['previewer_seconds'] = 'Secondi'; -$phpMussel['lang']['previewer_weeks'] = 'Settimane'; -$phpMussel['lang']['previewer_years'] = 'Anni'; -$phpMussel['lang']['response_accounts_already_exists'] = 'Un account con quel nome utente esiste già!'; -$phpMussel['lang']['response_accounts_created'] = 'Account creato con successo!'; -$phpMussel['lang']['response_accounts_deleted'] = 'Account eliminato con successo!'; -$phpMussel['lang']['response_accounts_doesnt_exist'] = 'Questo account non esiste.'; -$phpMussel['lang']['response_accounts_password_updated'] = 'Password aggiornato con successo!'; -$phpMussel['lang']['response_activated'] = 'Attivato con successo.'; -$phpMussel['lang']['response_activation_failed'] = 'Non poteva essere attivato!'; -$phpMussel['lang']['response_checksum_error'] = 'Errore di checksum! File respinto!'; -$phpMussel['lang']['response_component_successfully_installed'] = 'Componente installato con successo.'; -$phpMussel['lang']['response_component_successfully_uninstalled'] = 'Componente disinstallato con successo.'; -$phpMussel['lang']['response_component_successfully_updated'] = 'Componente aggiornato con successo.'; -$phpMussel['lang']['response_component_uninstall_error'] = 'C\'è stato un errore durante il tentativo di disinstallare il componente.'; -$phpMussel['lang']['response_configuration_updated'] = 'Configurazione aggiornato con successo.'; -$phpMussel['lang']['response_deactivated'] = 'Disattivato con successo.'; -$phpMussel['lang']['response_deactivation_failed'] = 'Non poteva essere disattivato!'; -$phpMussel['lang']['response_delete_error'] = 'Non riuscito a eliminare!'; -$phpMussel['lang']['response_directory_deleted'] = 'Elenco eliminato con successo!'; -$phpMussel['lang']['response_directory_renamed'] = 'Elenco rinominato con successo!'; -$phpMussel['lang']['response_error'] = 'Errore'; -$phpMussel['lang']['response_failed_to_install'] = 'Non è riuscito ad installare!'; -$phpMussel['lang']['response_failed_to_update'] = 'Non è riuscito ad aggiornare!'; -$phpMussel['lang']['response_file_deleted'] = 'File eliminato con successo!'; -$phpMussel['lang']['response_file_edited'] = 'File modificato con successo!'; -$phpMussel['lang']['response_file_renamed'] = 'File rinominato con successo!'; -$phpMussel['lang']['response_file_restored'] = 'File ripristinato con successo!'; -$phpMussel['lang']['response_file_uploaded'] = 'File caricato con successo!'; -$phpMussel['lang']['response_login_invalid_password'] = 'Accedi non riuscito! Password non valida!'; -$phpMussel['lang']['response_login_invalid_username'] = 'Accedi non riuscito! Nome utente non esiste!'; -$phpMussel['lang']['response_login_password_field_empty'] = 'L\'input password era vuoto!'; -$phpMussel['lang']['response_login_username_field_empty'] = 'L\'input nome utente era vuoto!'; -$phpMussel['lang']['response_rename_error'] = 'Non riuscito a rinominare!'; -$phpMussel['lang']['response_restore_error_1'] = 'Failed to restore! File corrotto!'; -$phpMussel['lang']['response_restore_error_2'] = 'Failed to restore! La chiave di quarantena è errata!'; -$phpMussel['lang']['response_statistics_cleared'] = 'Statistiche revocate.'; -$phpMussel['lang']['response_updates_already_up_to_date'] = 'Aggiornato già.'; -$phpMussel['lang']['response_updates_not_installed'] = 'Componente non installato!'; -$phpMussel['lang']['response_updates_not_installed_php'] = 'Componente non installato (richiede PHP {V})!'; -$phpMussel['lang']['response_updates_outdated'] = 'Non aggiornato!'; -$phpMussel['lang']['response_updates_outdated_manually'] = 'Non aggiornato (si prega di aggiornare manualmente)!'; -$phpMussel['lang']['response_updates_outdated_php_version'] = 'Non aggiornato (richiede PHP {V})!'; -$phpMussel['lang']['response_updates_unable_to_determine'] = 'Incapace di determinare.'; -$phpMussel['lang']['response_upload_error'] = 'Non riuscito a caricare!'; -$phpMussel['lang']['state_complete_access'] = 'Accesso completo'; -$phpMussel['lang']['state_component_is_active'] = 'Componente è attivo.'; -$phpMussel['lang']['state_component_is_inactive'] = 'Componente è inattivo.'; -$phpMussel['lang']['state_component_is_provisional'] = 'Componente è provvisorio.'; -$phpMussel['lang']['state_default_password'] = 'Avvertimento: Utilizzando la password predefinita!'; -$phpMussel['lang']['state_logged_in'] = 'Connesso.'; -$phpMussel['lang']['state_logs_access_only'] = 'Accesso solo per i log'; -$phpMussel['lang']['state_maintenance_mode'] = 'Attenzione: La modalità di manutenzione è abilitata!'; -$phpMussel['lang']['state_password_not_valid'] = 'Avvertimento: Questo account non utilizzando una password valida!'; -$phpMussel['lang']['state_quarantine'] = 'Ci sono %s file attualmente in quarantena.'; -$phpMussel['lang']['switch-hide-non-outdated-set-false'] = 'Non nascondere l\'aggiornato'; -$phpMussel['lang']['switch-hide-non-outdated-set-true'] = 'Nascondere l\'aggiornato'; -$phpMussel['lang']['switch-hide-unused-set-false'] = 'Non nascondere il inutilizzato'; -$phpMussel['lang']['switch-hide-unused-set-true'] = 'Nascondere il inutilizzato'; -$phpMussel['lang']['tip_accounts'] = 'Salve, {username}.
        La pagina di conti permette di controllare chi può accedere il front-end di phpMussel.'; -$phpMussel['lang']['tip_config'] = 'Salve, {username}.
        La pagina di configurazione permette di modificare la configurazione per phpMussel dal front-end.'; -$phpMussel['lang']['tip_donate'] = 'phpMussel è offerto gratuitamente, ma se si vuole donare al progetto, è possibile farlo facendo clic sul pulsante donare.'; -$phpMussel['lang']['tip_file_manager'] = 'Salve, {username}.
        Il file manager consente di eliminare, modificare, caricare e scaricare file. Usare con cautela (si potrebbe rompere l\'installazione di questo).'; -$phpMussel['lang']['tip_home'] = 'Salve, {username}.
        Questa è la pagina principale per il front-end di phpMussel. Selezionare un collegamento dal menu di navigazione a sinistra per continuare.'; -$phpMussel['lang']['tip_login'] = 'Nome utente predefinito: admin – Password predefinita: password'; -$phpMussel['lang']['tip_logs'] = 'Salve, {username}.
        Selezionare un file di log dall\'elenco sottostante per visualizzare il contenuto di tale file di log.'; -$phpMussel['lang']['tip_quarantine'] = 'Salve, {username}.
        Questa pagina elenca tutti i file attualmente in quarantena e facilita la gestione di tali file.'; -$phpMussel['lang']['tip_quarantine_disabled'] = 'Nota: La quarantena è attualmente disattivata, ma può essere attivata tramite la pagina di configurazione.'; -$phpMussel['lang']['tip_see_the_documentation'] = 'Vedere la documentazione per informazioni sulle varie direttive di configurazione ed i loro scopi.'; -$phpMussel['lang']['tip_statistics'] = 'Salve, {username}.
        Questa pagina mostra alcune statistiche di utilizzo relative all\'installazione di phpMussel.'; -$phpMussel['lang']['tip_statistics_disabled'] = 'Nota: Il monitoraggio delle statistiche è attualmente disattivato, ma può essere attivato tramite la pagina di configurazione.'; -$phpMussel['lang']['tip_updates'] = 'Salve, {username}.
        La pagina degli aggiornamenti permette di installare, disinstallare e aggiornare i vari componenti di phpMussel (il pacchetto di base, le firme, plugins, file per L10N, ecc).'; -$phpMussel['lang']['tip_upload_test'] = 'Salve, {username}.
        La pagina di carica testare contiene un modulo per i caricamenti file standard, che permette di verificare se un file viene normalmente essere bloccata da phpMussel quando si cerca di caricarlo.'; -$phpMussel['lang']['title_accounts'] = 'phpMussel – Utenti'; -$phpMussel['lang']['title_config'] = 'phpMussel – Configurazione'; -$phpMussel['lang']['title_file_manager'] = 'phpMussel – File Manager'; -$phpMussel['lang']['title_home'] = 'phpMussel – Pagina Principale'; -$phpMussel['lang']['title_login'] = 'phpMussel – Accedi'; -$phpMussel['lang']['title_logs'] = 'phpMussel – File di Log'; -$phpMussel['lang']['title_quarantine'] = 'phpMussel – Quarantena'; -$phpMussel['lang']['title_statistics'] = 'phpMussel – Statistiche'; -$phpMussel['lang']['title_updates'] = 'phpMussel – Aggiornamenti'; -$phpMussel['lang']['title_upload_test'] = 'phpMussel – Carica Testare'; -$phpMussel['lang']['warning'] = 'Avvertimenti:'; -$phpMussel['lang']['warning_php_1'] = 'La vostra versione di PHP non è più supportata attivamente! Si consiglia di aggiornarlo!'; -$phpMussel['lang']['warning_php_2'] = 'La vostra versione PHP è severamente vulnerabile! Si consiglia fortemente di aggiornarlo!'; -$phpMussel['lang']['warning_signatures_1'] = 'Non ci sono file di firme attivi!'; - -$phpMussel['lang']['info_some_useful_links'] = 'Alcuni link utili:
          -
        • Problemi di phpMussel @ GitHub – Pagina dei problemi per phpMussel (supporto, assistenza, ecc).
        • -
        • phpMussel @ Spambot Security – Forum di discussione per phpMussel (supporto, assistenza, ecc).
        • -
        • phpMussel @ SourceForge – Una scarica specchio alternativa per phpMussel.
        • -
        • WebSecTools.com – Una collezione di semplici strumenti per i webmaster per sicurezza del sito Web.
        • -
        • ClamavNet – Pagina principale di ClamAV (ClamAV® è un motore antivirus open source per rilevamenti di trojan, virus, malware e altre minacce dannose).
        • -
        • SecuriteInfo.com – Società di sicurezza informatica che offre firme supplementari per ClamAV.
        • -
        • PhishTank – Database di phishing utilizzato dallo scanner URL di phpMussel.
        • -
        • Global PHP Group @ Facebook – Risorse di apprendimento e discussione per PHP.
        • -
        • PHP.earth – Risorse di apprendimento e discussione per PHP.
        • -
        • VirusTotal – VirusTotal è un servizio gratuito per l\'analisi dei file e URL sospetti.
        • -
        • Hybrid Analysis – Hybrid Analysis è un servizio gratuito per l\'analisi del malware fornito da Payload Security.
        • -
        • Malwarebytes – Specialisti del malware di computer.
        • -
        • MalwareTips – Forum di discussione utili concentrati su di malware.
        • -
        • Mappe di Vulnerabilità – Elenca le versioni sicure e non sicure di varie pacchetti (PHP, HHVM, ecc).
        • -
        • Mappe di Compatibilità – Elenca le informazioni sulla compatibilità per vari pacchetti (CIDRAM, phpMussel, ecc).
        • -
        '; diff --git a/libraries/plugins/phpMussel/vault/lang/lang.it.php b/libraries/plugins/phpMussel/vault/lang/lang.it.php deleted file mode 100644 index ba86473..0000000 --- a/libraries/plugins/phpMussel/vault/lang/lang.it.php +++ /dev/null @@ -1,127 +0,0 @@ -ホーム | ログアウト'; -$phpMussel['lang']['bNav_logout'] = 'ログアウト'; -$phpMussel['lang']['config_attack_specific_archive_file_extensions'] = '認識可能なアーカイブファイルエクステンションです(フォーマットはCSV;問題があった場合にのみ追加あるいは取り除くべきです。​不用意に取り除くと誤検出の原因となる可能性があります。​反対に不用意に追加すると、​アタックースペシフィック検出から追加したものをホワイトリスト化してしまいます。​充分に注意に上、​変更して下さい。​なお、​コンテントレベルにおいてアーカイブを分析することが出来るか否かには影響しません)。​デフォルトでは最も一般なフォーマットをリストしていますが、​意図的に包括的にはしていません。'; -$phpMussel['lang']['config_attack_specific_block_control_characters'] = '制御文字を含んだファイルをブロックするか否か(改行以外)?​についてです([\x00-\x08\x0b\x0c\x0e\x1f\x7f])。​もし、​テキストのみをアップロードするなら、​このオプションを有効にして、​さらにプロテクションを強化できます。​テキスト以外もアップロード対象であれば、​有効にすると誤検出の原因になりえます。​false(偽) = ブロックしない(Default/デフォルト);​true(真) = ブロックする。'; -$phpMussel['lang']['config_attack_specific_chameleon_from_exe'] = '実行ファイルでもなく実行ファイルのアーカイブとも認識できないファイル中の実行ヘッダーや不正なヘッダーの実行ファイルを探します。​false(偽) = オフ; true(真) = オン。'; -$phpMussel['lang']['config_attack_specific_chameleon_from_php'] = 'ファイルでもなくPHPアーカイブとも認識できないファイル中のPHPヘッダーを探します。​false(偽) = オフ; true(真) = オン。'; -$phpMussel['lang']['config_attack_specific_chameleon_to_archive'] = 'ヘッダーが正しくないアーカイブを探します(BZ、​GZ、​RAR、​ZIP、​RAR、​GZをサポート)。​false(偽) = オフ; true(真) = オン。'; -$phpMussel['lang']['config_attack_specific_chameleon_to_doc'] = 'ヘッダーが正しくないオフィスドキュメントを探します(DOC、​DOT、​PPS、​PPT、​XLA、​XLS、​WIZをサポート)。​false(偽) = オフ; true(真) = オン。'; -$phpMussel['lang']['config_attack_specific_chameleon_to_img'] = 'ヘッダーが正しくない画像ファイルを探します(BMP、​DIB、​PNG、​GIF、​JPEG、​JPG、​XCF、​PSD、​PDD、​WEBPをサポート)。​false(偽) = オフ; true(真) = オン。'; -$phpMussel['lang']['config_attack_specific_chameleon_to_pdf'] = 'ヘッダーが正しくないPDFファイルを探します。​false(偽) = オフ; true(真) = オン。'; -$phpMussel['lang']['config_attack_specific_corrupted_exe'] = '破損ファイルとエラー解析。​false(偽) = 無視する;​true(真) = ブロックする(Default/デフォルト)。​破損の可能性があるPEファイルをブロックし検出するか否か?​についてです。​PEファイルの一部が破損し、​正しく分析できないことは珍しくなく、​ウィルス感染をみるバロメーターになります。​PEファイル内のウィルスを検出するアンチウィルスプログラムは、​PEファイルの解析を行いますが、​ウィルスを作る側では、​ウィルスが検出されないようそれを避けようとするものだからです。'; -$phpMussel['lang']['config_attack_specific_decode_threshold'] = 'デコード・コマンドが検出されるべき生データの長さの制限(スキャニング中に顕著な問題がある場合に必要に応じて設定)。​デフォルト=512KB。​ゼロあるいは値なし(null)はしきい値を無効化します(ファイルサイズによる制限を取り除きます)。'; -$phpMussel['lang']['config_attack_specific_scannable_threshold'] = 'phpMusselが読みスキャンしてよい生データの長さの制限(スキャニング中に顕著な問題がある場合に必要に応じて設定)。​デフォルト=32MB。​ゼロあるいは値なし(null)はしきい値を無効化します。​値は、​サーバーやウェブサイトでアップロードされるファイルの平均ファイルサイズより大きく、​filesize_limitディレクティブより小さく設定すべきです。​また"php.ini"設定によってPHPに割り当てられたメモリーのおおよそ5分の1を超えるべきではありません。​このディレクティブはphpMusselがメモリーを使い過ぎないようにするためのものです。​(一定のサイズ以上のファイルはスキャンできなくなることもあります)。'; -$phpMussel['lang']['config_compatibility_ignore_upload_errors'] = 'システム上でphpMusselの機能に修正が必要でない限りはこのディレクティブは通常無効です。​無効に設定すると、​$_FILES array()に要素の存在を検知したとき、​その要素が表すファイルのスキャンが開始され、​要素が空白か無であればphpMusselはエラーメッセージを返します。​これは本来phpMusselがあるべき姿です。​しかしCMSにおいては、​$_FILESの空要素は普通に発生するものであり、​正常なphpMusselの挙動が正常なCMSの挙動を阻害する恐れがあります。​このような場合は、​本オプションを有効にして、​phpMusselが空要素をスキャンしてエラーメッセージを返すのを避け、​要求のあったページへスムーズに進むことができるようにします。​false(偽) = OFF (オフ);​true(真) = ON (オン)です。'; -$phpMussel['lang']['config_compatibility_only_allow_images'] = 'システムあるいはCMSに画像ファイルのアップロードのみを許可するのであれば、​このディレクティブは有効にすべきであり、​そうでなければ無効とします。​有効にすると、​画像と特定できないファイルはスキャンすることなしにブロックしますので、​プロセス時間の短縮とメモリーの節約が期待できます。​false(偽) = OFF (オフ);​true(真) = ON (オン) です。'; -$phpMussel['lang']['config_files_block_encrypted_archives'] = '暗号化されたアーカイブを検出しブロックするか否か?​phpMusselは暗号化されたアーカイブをスキャンすることはできないので、​アーカイブの暗号化によってphpMussel、​アンチウィルススキャナー等をかいくぐろうとする攻撃者がいるかもしれません。​暗号化されたアーカイブをブロックすることにより、​このようなリスクを回避することができます。​false(偽) = いいえ;​true(真) = はい(Default/デフォルト)。'; -$phpMussel['lang']['config_files_check_archives'] = 'アーカイブのコンテンツに対してチェックを試みるか否かについてです。​false(偽) = チェックしない; true(真) = チェックする(Default/デフォルト)。​現在サポートしているのはBZ、​GZ、​LZF、​ZIP形式です(RAR、​CAB、​7z等は対象外)。​本機能は万能ではありませんので、​有効にしておくことを推奨していますが、​必ず全てを検出することを保証するものではありません。​また現在チェックのアーカイブはZIPに対して再帰的でないことに注意して下さい。'; -$phpMussel['lang']['config_files_filesize_archives'] = 'ファイルサイズのブラックリスト化/ホワイトリスト化をアーカイブのコンテンツに持ち込むか否か?​false = いいえ(ただグレーリストすべて); true = はい 「Default/デフォルト設定」。'; -$phpMussel['lang']['config_files_filesize_limit'] = 'ファイルサイズ上限の単位はKBです。​65536=64MB(Default/デフォルト);​0 = リミットしません(上限なし、​常にグレイリスト化)、​正の数値であれば何でも構いません。​PHPの設定でメモリーに制限があったり、​アップロードファイルサイズの上限が設定されている場合に有効的です。'; -$phpMussel['lang']['config_files_filesize_response'] = '上限サイズを超えるファイルをどう処理するかについてです。​false(偽) = Whitelist(ホワイトリスト); true(真) = Blacklist(ブラックリスト) (Default/デフォルト)。'; -$phpMussel['lang']['config_files_filetype_archives'] = 'ファイルタイプのブラックリスト化/ホワイトリスト化をアーカイブのコンテンツに持ち込むか否か?​false = いいえ(ただグレーリストすべて) 「Default/デフォルト設定」; true = はい。'; -$phpMussel['lang']['config_files_filetype_blacklist'] = 'ファイルタイプ・ブラックリスト:'; -$phpMussel['lang']['config_files_filetype_greylist'] = 'ファイルタイプ・グレーリスト:'; -$phpMussel['lang']['config_files_filetype_whitelist'] = 'システムが特定タイプのファイルのみアップロードを許可する、​あるいは拒絶する場合は、​ファイルタイプを適切にホワイトリスト、​ブラックリスト、​グレーリストにて分類しておくと、​ファイルタイプによって弾かれるファイルはスキャンをスキップできるため、​スピードアップに繋がります。​フォーマットはCSV(カンマ区切り)です。​リストによらず全てをスキャンしたい場合は、​変数は空白のままとし、​ホワイトリスト/ブラックリスト/グレーリストを無効にします。​プロセスの論理的順序: ファイルタイプがホワイトリストに記載されていれば、​スキャンせず、​ブロックせず、​ブラックリストおよびグレイリストに対してチェックを行いません。​ファイルタイプがブラックリストに記載されていれば、​スキャンすることなく、​直ちににブロックし、​グレーリストに対してチェックを行いません。​グレーリストが空、​あるいはグレーリストが空でなくかつそのファイルタイプがあれば、​通常通りスキャンしブロックするか否かを判断します。​グレーリストが空でなくかつそのファイルタイプが含まれていなければ、​ブラックリストと同様の扱いをすることになり、​スキャンなしにブロックします。​ファイルタイプ・ホワイトリスト:'; -$phpMussel['lang']['config_files_max_recursion'] = 'アーカイブに対する最大再帰深さです。​デフォルト=10。'; -$phpMussel['lang']['config_files_max_uploads'] = '一度にスキャンできるアップロードファイル数の上限で、​これを超えるとスキャンを中断し、​ユーザーにその旨を知らせ、​論理攻撃からの保護として機能します。​システムやCMSがDDoS攻撃にあい、​phpMusselがオーバーロードしてPHPプロセスに支障をきたすことがないようにするためです。​推奨数は10ですが、​ハードウェアのスピードによっては、​これ以上/以下がよいということもあるでしょう。​この数は、​アーカイブのコンテンツは含まないことを覚えておいて下さい。'; -$phpMussel['lang']['config_general_cleanup'] = '初回アップロード後に変数とキャッシュの設定をクリアするか否かについてのスクリプトです。​false(偽) = いいえ;​true(真) = はい 「Default/デフォルト設定」。​初回アップロードスキャニング以外で使用することがなければ、​true(真)としメモリーの使用量を最小にします。​使用するのであれば、​false(偽)とし、​メモリーに不要な重複データを再ロードするのを防ぎます。​通常はtrue(真)。​に設定しますが、​初回アップロードスキャニングに対してしか使用できないことを覚えておいて下さい。​CLIモードでは影響しません。'; -$phpMussel['lang']['config_general_default_algo'] = '将来のすべてのパスワードとセッションに使用するアルゴリズムを定義します。​オプション:​PASSWORD_DEFAULT(Default/デフォルルト)、​PASSWORD_BCRYPT、​PASSWORD_ARGON2I ​(PHP >= 7.2.0 が必要)。'; -$phpMussel['lang']['config_general_delete_on_sight'] = 'このディレクティブを有効にすると、​検知基準(シグネチャでも何でも)にあったアップロードファイルは直ちに削除されます。​クリーンと判断されたファイルはそのままです。​アーカイブの場合、​問題のファイルが一部であってもアーカイブ全てが削除の対象となります。​アップロードファイルのスキャンにおいては、​本ディレクティブを有効にすることは必須ではありません。​なぜならPHPはスクリプト実行後に自動的にキャッシュの内容を破棄するからです。​言い換えれば、​ファイルが移動されたか、​コピーされたか、​削除されない限り、​PHPはサーバーにアップロードしたファイルを残しておくことは通常ありません。​このディレクティブはセキュリティーに念を入れる目的で設置されています。​PHPは稀に予測外の振る舞いをすることがあるからです。​false(偽) = スキャニング後、​ファイルはそのまま(デフォルト設定)。​true(真) = スキャニング後、​クリーンでなければ直ちに削除。'; -$phpMussel['lang']['config_general_disable_cli'] = 'CLIモードを無効にするか?​CLIモード(シーエルアイ・モード)はデフォルトでは有効になっていますが、​テストツール(PHPUnit等)やCLIベースのアプリケーションと干渉しあう可能性が無いとは言い切れません。​CLIモードを無効にする必要がなければ、​このデレクティブは無視してもらって結構です。​false(偽) = CLIモードを有効にします(Default/デフォルルト);​true(真) = CLIモードを無効にします。'; -$phpMussel['lang']['config_general_disable_frontend'] = 'フロントエンドへのアクセスを無効にするか?​フロントエンドへのアクセスは、​phpMusselをより管理しやすくすることができます。​前記、​それはまた、​潜在的なセキュリティリスクになる可能性があります。​バックエンドを経由して管理することをお勧めします、​しかし、​これが不可能な場合、​フロントエンドへのアクセスが提供され。​あなたがそれを必要としない限り、​それを無効にします。​false(偽) = フロントエンドへのアクセスを有効にします;​true(真) = フロントエンドへのアクセスを無効にします(Default/デフォルルト)。'; -$phpMussel['lang']['config_general_disable_webfonts'] = 'ウェブフォンツを無効にしますか?​True = はい;​False = いいえ(Default/デフォルルト)。'; -$phpMussel['lang']['config_general_enable_plugins'] = 'プラグインのサポートを有効にしますか?​false = いいえ;​true = はい 「Default/デフォルト設定」。'; -$phpMussel['lang']['config_general_forbid_on_block'] = 'アップロードファイルがブロックされたメッセージと共に、​phpMusselから403ヘッダーを送るべきか、​通常の200でよいかどうかについて。​false(偽) = いいえ(200) 「Default/デフォルト設定」;​true(真) = はい(403)。'; -$phpMussel['lang']['config_general_FrontEndLog'] = 'フロントエンド・ログインの試みを記録するためのファイル。​ファイル名指定するか、​無効にしたい場合は空白のままにして下さい。'; -$phpMussel['lang']['config_general_honeypot_mode'] = 'ハニーポットモードが有効になっていると、​phpMusselはアップロードされてきた全てのファイルを例外なく検疫します。​シグネチャにマッチするかどうかは問題としません。​スキャニングや分析もなされません。​phpMusselをウィルス/マルウェアのリサーチに利用と考えているユーザーにとって有益と言えるでしょう。​ただし、​アップロードファイルのスキャニングという点からは、​あまり推奨できませんし、​ハニーポット・モードを本来の目的以外に使用することもお勧めできません。​デフォルト設定では無効です。​false(偽) = Disabled/無効 (Default/デフォルト);​true(真) = Enabled/有効。'; -$phpMussel['lang']['config_general_ipaddr'] = '接続要求のIPアドレスをどこで見つけるべきかについて(Cloudflareのようなサービスに対して有効)。​Default(デフォルト設定) = REMOTE_ADDR。​注意:あなたが何をしているのか、​分からない限り、​これを変更しないでください。'; -$phpMussel['lang']['config_general_lang'] = 'phpMusselのデフォルト言語を設定します。'; -$phpMussel['lang']['config_general_maintenance_mode'] = 'メンテナンス・モードを有効にしますか?​True = はい;​False = いいえ(Default/デフォルルト)。​フロントエンド以外のすべてを無効にします。​CMS、フレームワークなどを更新するときに便利です。'; -$phpMussel['lang']['config_general_max_login_attempts'] = 'ログイン試行の最大回数(フロントエンド)。​Default(デフォルト設定) = 5。'; -$phpMussel['lang']['config_general_numbers'] = 'どのように数字を表示するのが好きですか?​あなたに一番正しい例を選択してください。'; -$phpMussel['lang']['config_general_quarantine_key'] = 'phpMusselは、​必要とあれば、​phpMusselのヴォルト内で独立してフラグ付ファイルのアップロードを検疫することができます。​一般的なphpMusselのユーザーは、​ウェブサイトやホスティング環境の保護ができれば充分と考えており、​フラグ付のようなものにさらなる分析を加えようまでの要求はないようですので、​無効で構いません。​ですが詳細に分析してマルウェアに備えたいユーザーは有効にすると良いでしょう。​フラグ付ファイルのアップロードの検疫は誤検出のデバッグに役立つことがあります。​検疫機能を無効にするには、​quarantine_keyディレクティブを空にしておくか、​空でない場合はディレクティブ内のコンテンツを消去して下さい。​有効にするには、​デイレクティブに何らかの値を入れて下さい。​quarantine_keyは検疫機能における重要なセキュリティー要素であり、​検疫機能内に保存されたデータの執行を各種の攻撃から守っています。​quarantine_keyはパスワードと同様に考えて下さい。​長い方がより安全と言えます。​最も効果的な使用法はdelete_on_sightとの併用です。'; -$phpMussel['lang']['config_general_quarantine_max_filesize'] = '検疫されるファイルサイズの上限。​この値より大きなファイルは検疫されません。​クオランティンの容量を超える異常に大きなファイルサイズによる攻撃で、​メモリーが無駄に消費されるのを防ぐ意味で重要です。​デフォルト設定は2MBです。'; -$phpMussel['lang']['config_general_quarantine_max_usage'] = '検疫のために利用する最大メモリー量。​全メモリー量が使用されると、​この範囲内に収まるよう古いファイルが削除の対象となります。​クオランティンの容量を超える異常に大きなファイルサイズによる攻撃で、​メモリーが無駄に消費されるのを防ぐ意味で重要です。​デフォルト設定は64MBです。'; -$phpMussel['lang']['config_general_scan_cache_expiry'] = 'phpMusselはスキャニング結果をどれくらいの期間キャッシュすべきか?​秒単位で、​デフォルトは21,600秒(6時間)となっています。​0にするとキャッシュ無効になります。'; -$phpMussel['lang']['config_general_scan_kills'] = 'ブロックしたか削除したアップロードの全てを記録するファイのファイル名。​ファイル名指定するか、​無効にしたい場合は空白のままにして下さい。'; -$phpMussel['lang']['config_general_scan_log'] = '全スキャニング結果を記録するファイルのファイル名。​ファイル名指定するか、​無効にしたい場合は空白のままにして下さい。'; -$phpMussel['lang']['config_general_scan_log_serialized'] = '全スキャニング結果を記録するファイルのファイル名(シリアル化形式を利用)。​ファイル名指定するか、​無効にしたい場合は空白のままにして下さい。'; -$phpMussel['lang']['config_general_statistics'] = 'phpMussel使用統計を追跡しますか?​True = はい;​False = いいえ(Default/デフォルルト)。'; -$phpMussel['lang']['config_general_timeFormat'] = 'phpMusselで使用される日付表記形式。​追加のオプションがリクエストに応じて追加される場合があります。'; -$phpMussel['lang']['config_general_timeOffset'] = 'タイムゾーンオフセット(分)。'; -$phpMussel['lang']['config_general_timezone'] = 'あなたのタイムゾーン。'; -$phpMussel['lang']['config_general_truncate'] = 'ログファイルが一定のサイズに達したら切り詰めますか?​値は、​ログファイルが切り捨てられる前に大きくなる可能性があるB/KB/MB/GB/TB単位の最大サイズです。​デフォルト値の0KBは切り捨てを無効にします (ログファイルは無期限に拡張できます)。​注:個々のログファイルに適用されます。​ログファイルのサイズは一括して考慮されません。'; -$phpMussel['lang']['config_heuristic_threshold'] = 'phpMusselには、​このファイルは疑わしく危険性が高いと判断するシグネチャがあります。​しきい値は、​アップロードされているファイルの危険性の最大値であり、​これを超えるとマルウェアと判断されます。​ここにおける危険性の定義とは、​疑わしいと特定されたものの総数です。​デフォルトでは3に設定されています。​これより低いと誤検出の可能性が増え、​大きすぎると、​誤検出は減るものの危険性のあるファイルが検出されない可能性が増加してしまいます。​特に問題がなければ、​デフォルト値のままにしておくことお勧めします。'; -$phpMussel['lang']['config_signatures_Active'] = 'カンマで区切られたアクティブなシグネチャファイルのリスト。'; -$phpMussel['lang']['config_signatures_detect_adware'] = 'phpMusselはアドウェア検出のためにシグネチャを分析すべきか否か?​false(偽) = いいえ;​true(真) = はい(Default/デフォルト)。'; -$phpMussel['lang']['config_signatures_detect_deface'] = 'phpMusselは改ざんやディフェーサー検出のためにシグネチャを分析すべきか否か?​false(偽) = いいえ;​true(真) = はい(Default/デフォルト)。'; -$phpMussel['lang']['config_signatures_detect_encryption'] = 'phpMusselは暗号化ファイルを検出してブロックする必要がありますか?​false(偽) = いいえ;​true(真) = はい(Default/デフォルト)。'; -$phpMussel['lang']['config_signatures_detect_joke_hoax'] = 'phpMusselは悪戯/偽造やマルウェア/ウィルス検出のためにシグネチャを分析すべきか否か?​false(偽) = いいえ;​true(真) = はい(Default/デフォルト)。'; -$phpMussel['lang']['config_signatures_detect_packer_packed'] = 'phpMusselはパッカーやパックデータ検出のためにシグネチャを分析すべきか否か?​false(偽) = いいえ;​true(真) = はい(Default/デフォルト)。'; -$phpMussel['lang']['config_signatures_detect_pua_pup'] = 'phpMusselはPUA/PUP検出のためにシグネチャを分析すべきか否か?​false(偽) = いいえ;​true(真) = はい(Default/デフォルト)。'; -$phpMussel['lang']['config_signatures_detect_shell'] = 'phpMusselはshellスクリプト検出のためにシグネチャを分析すべきか否か?​false(偽) = いいえ;​true(真) = はい(Default/デフォルト)。'; -$phpMussel['lang']['config_signatures_fail_extensions_silently'] = '拡張子がない場合にphpMusselがそれをレポートすべきか否か?​fail_extensions_silentlyが無効の場合、​拡張子なしはスキャニング時にレポートされ、​有効の場合は無視され問題は報告されません。​このディレクティブを無効にすることは、​セキュリティーを向上させるかもしれませんが、​誤検出も増加する恐れがあります。​false(偽) = Disabled/無効; true(真) = Enabled/有効 (Default/デフォルト)。'; -$phpMussel['lang']['config_signatures_fail_silently'] = 'シグネチャファイルがない、​あるいは破損している場合に、​phpMusselがそれをリポートすべきか否か?​fail_silentlyが無効ならば、​問題はリポートされ、​有効であれば、​問題は無視されたスキャニングレポートが作成されます。​クラッシュするというような害がなければ、​デフォルト設定のままにしておくべきです。​false(偽) = Disabled/無効; true(真) = Enabled/有効 (Default/デフォルト)。'; -$phpMussel['lang']['config_template_data_css_url'] = 'カスタムテーマ用のテンプレートファイルは、​外部CSSプロパティーを使っています。​一方、​デフォルトテーマは内部CSSです。​カスタムテーマを適用するためには、​CSSファイルのパブリック HTTPアドレスを"css_url"変数を使って指定して下さい。​この変数が空白であれば、​デフォルトテーマが適用されます。'; -$phpMussel['lang']['config_template_data_Magnification'] = 'フォントの倍率。​Default/デフォルルト = 1。'; -$phpMussel['lang']['config_template_data_theme'] = 'phpMusselに使用するデフォルトテーマ。'; -$phpMussel['lang']['config_urlscanner_cache_time'] = 'APIルックアップの結果をどれくらいキャッシュするか(秒単位です)?​デフォルトは3600秒(一時間)。'; -$phpMussel['lang']['config_urlscanner_google_api_key'] = '必要なAPI鍵が定義されれば、​APIのGoogle Safe Browsing APIルックアップが有効になります。'; -$phpMussel['lang']['config_urlscanner_lookup_hphosts'] = 'Trueにすると、​APIのhpHostsルックアップが有効になります。'; -$phpMussel['lang']['config_urlscanner_maximum_api_lookups'] = 'スキャン反復におけるAPIルックアップの最大回数。​APIルックアップの度にスキャン反復の時間が積み重なってしまうので、​スキャン処理の速度向上のため、​制限を設けたいと考えるかもしれません。​0は制限なしを意味します。​デフォルトは10です。'; -$phpMussel['lang']['config_urlscanner_maximum_api_lookups_response'] = 'APIルックアップの回数制限を超えた時の対応です。​false(偽) = 何もしない/処理を継続する(Default/デフォルト);​true(真) = ファイルにフラグを付ける/ブロックする。'; -$phpMussel['lang']['config_virustotal_vt_public_api_key'] = 'オプションですが、​phpMusselはVirus Total APIを使ってファイルをスキャンすることができます。​ウィルス、​トロイの木馬、​マルウェア、​その他の攻撃に対して非常に効果的に機能します。​デフォルトではVirus Total APIを使ったスキャニングは無効になっています。​有効にするには、​Virus TotalのAPIキーが必要です。​メリットが極めて大きいため、​有効にすることを強く推奨します。​Virus Total APIの使用にあたっては、​Virus Totalのドキュメンテーションにある通り、​利用規定ならびにガイドラインを遵守しなくてはなりません。​この統合機能を使用するためには:​Virus TotalとAPIのサービス規定を読み同意すること。​最低でもVirus Total Public APIドキュメンテーションの前文を読み理解すること(VirusTotalPublic API v2.0以降Contents「コンテンツ」前まで)。'; -$phpMussel['lang']['config_virustotal_vt_quota_rate'] = 'Virus Total APIのドキュメンテーションによると「1分間のタイムフレームの間にリクエストは最大4回」の上限があります。​ハニークライアントやハニーポット等のオートメーションを使用し、​リポートを受け取るだけでなく、​VirusTotal にリソースを提供していれば、​上限は引き上げられます。​phpMussel のデフォルトでは最大4回を遵守していますが、​前述の事情から、​この2つのディレクトリを準備し、​状況に合わせて変更できるようになっています。​制限に達してしまうといった不都合や問題がない限りデフォルト値を変更することは勧められませんが、​値を小さくすることが適当なケースもあります。​上限はタイムフレームvt_quota_time(ヴィティ・クォータ・タイム)「 分内に」vt_quota_rate(ヴィティ・クォータ・レート)で設定します。'; -$phpMussel['lang']['config_virustotal_vt_quota_time'] = '(上記の説明を参照)。'; -$phpMussel['lang']['config_virustotal_vt_suspicion_level'] = 'デフォルト設定では、​phpMusselがVirus Total APIを使ってスキャンするファイル(疑がわしいもの)には制限があります。​vt_suspicion_levelディレクティブを編集することのより、​この制限を変更することが可能です。'; -$phpMussel['lang']['config_virustotal_vt_weighting'] = 'phpMusselがVirus Total APIを使ったスキャニング結果を検出として扱うか、​検出の重み付けとして扱うべきか?​複数のエンジン(Virus Totalのように)を使用したスキャニングは、​検出率の向上(より多くのマルウェアが検出)をもたらす一方で誤検出の増加も招くため、​このディレクティブが存在します。​したがって、​スキャニング結果は、​決定的判断ではなく信頼スコアとして利用した方が適当なケースもあります。​値が0の場合、​Virus Total APIを使ったスキャンは検出として扱われ、​Virus Totalのエンジンがマルウェアとフラグを付けたファイルは、​phpMusselもマルウェアと判断します。​その他の値の場合は結果は検出の重み付けとなり、​スキャンされたファイルがマルウェアかどうかphpMusselが判断するための信頼スコア(あるいは検出の重み付け)となります(値はマルウェアと判断するための最小信頼スコア、​あるいは重み)。​デフォルト値は0です。'; -$phpMussel['lang']['Extended Description: phpMussel'] = 'メインパッケージ(署名、ドキュメンテーション、コンフィギュレーション、は含まれません)。'; -$phpMussel['lang']['field_activate'] = 'アクティブにする'; -$phpMussel['lang']['field_clear_all'] = 'すべてキャンセル'; -$phpMussel['lang']['field_component'] = 'コンポーネント'; -$phpMussel['lang']['field_create_new_account'] = '新しいアカウントを作成する'; -$phpMussel['lang']['field_deactivate'] = '非アクティブにする'; -$phpMussel['lang']['field_delete_account'] = 'アカウントを削除する'; -$phpMussel['lang']['field_delete_all'] = 'すべて削除'; -$phpMussel['lang']['field_delete_file'] = '削除'; -$phpMussel['lang']['field_download_file'] = 'ダウンロード'; -$phpMussel['lang']['field_edit_file'] = '編集'; -$phpMussel['lang']['field_false'] = 'False (偽)'; -$phpMussel['lang']['field_file'] = 'ファイル'; -$phpMussel['lang']['field_filename'] = 'ファイル名:'; -$phpMussel['lang']['field_filetype_directory'] = 'ディレクトリ'; -$phpMussel['lang']['field_filetype_info'] = '{EXT}ファイル'; -$phpMussel['lang']['field_filetype_unknown'] = '不明です'; -$phpMussel['lang']['field_install'] = 'インストール'; -$phpMussel['lang']['field_latest_version'] = '最新バージョン'; -$phpMussel['lang']['field_log_in'] = 'ログイン'; -$phpMussel['lang']['field_more_fields'] = 'フィールドを追加します'; -$phpMussel['lang']['field_new_name'] = '新しい名前:'; -$phpMussel['lang']['field_ok'] = 'OK'; -$phpMussel['lang']['field_options'] = 'オプション'; -$phpMussel['lang']['field_password'] = 'パスワード'; -$phpMussel['lang']['field_permissions'] = 'パーミッション'; -$phpMussel['lang']['field_quarantine_key'] = '検疫キー'; -$phpMussel['lang']['field_rename_file'] = '名前を変更する'; -$phpMussel['lang']['field_reset'] = 'リセット'; -$phpMussel['lang']['field_restore_file'] = '復元'; -$phpMussel['lang']['field_set_new_password'] = '新しいパスワードを設定します'; -$phpMussel['lang']['field_size'] = '合計サイズ:'; -$phpMussel['lang']['field_size_bytes'] = 'バイト'; -$phpMussel['lang']['field_size_GB'] = 'GB'; -$phpMussel['lang']['field_size_KB'] = 'KB'; -$phpMussel['lang']['field_size_MB'] = 'MB'; -$phpMussel['lang']['field_size_TB'] = 'TB'; -$phpMussel['lang']['field_status'] = '状態'; -$phpMussel['lang']['field_system_timezone'] = 'システムのデフォルトタイムゾーンを使用します。'; -$phpMussel['lang']['field_true'] = 'True (真)'; -$phpMussel['lang']['field_uninstall'] = 'アンインストール'; -$phpMussel['lang']['field_update'] = 'アップデート'; -$phpMussel['lang']['field_update_all'] = 'すべてアップデートする'; -$phpMussel['lang']['field_upload_file'] = '新しいファイルをアップロードする'; -$phpMussel['lang']['field_username'] = 'ユーザー名'; -$phpMussel['lang']['field_your_version'] = 'お使いのバージョン'; -$phpMussel['lang']['header_login'] = '継続するには、​ログインしてください。'; -$phpMussel['lang']['label_active_config_file'] = 'アクティブ・コンフィグレーション・ファイル:'; -$phpMussel['lang']['label_blocked'] = 'ブロックされたアップロード'; -$phpMussel['lang']['label_branch'] = 'ブランチ最新安定:'; -$phpMussel['lang']['label_events'] = 'スキャンイベント'; -$phpMussel['lang']['label_flagged'] = 'フラグされたオブジェクト'; -$phpMussel['lang']['label_fmgr_cache_data'] = 'キャッシュ・データとテンポラリ・ファイル'; -$phpMussel['lang']['label_fmgr_disk_usage'] = 'phpMusselディスク使用量:'; -$phpMussel['lang']['label_fmgr_free_space'] = '空きディスク容量: '; -$phpMussel['lang']['label_fmgr_total_disk_usage'] = 'ディスク使用量の合計:'; -$phpMussel['lang']['label_fmgr_total_space'] = 'ディスク容量の合計:'; -$phpMussel['lang']['label_fmgr_updates_metadata'] = 'コンポーネント・アップデート・メタデータ'; -$phpMussel['lang']['label_hide'] = '隠す'; -$phpMussel['lang']['label_os'] = '使用されたオペレーティングシステム:'; -$phpMussel['lang']['label_other'] = 'その他'; -$phpMussel['lang']['label_other-Active'] = 'アクティブなシグネチャ・ファイル'; -$phpMussel['lang']['label_other-Since'] = '開始日'; -$phpMussel['lang']['label_php'] = '使用されたPHPバージョン:'; -$phpMussel['lang']['label_phpmussel'] = '使用されたphpMusselバージョン:'; -$phpMussel['lang']['label_quarantined'] = '検疫されたアップロード'; -$phpMussel['lang']['label_sapi'] = '使用されたSAPI:'; -$phpMussel['lang']['label_scanned_objects'] = 'スキャンされたオブジェクト'; -$phpMussel['lang']['label_scanned_uploads'] = 'スキャンしたアップロード'; -$phpMussel['lang']['label_show'] = '表示する'; -$phpMussel['lang']['label_size_in_quarantine'] = '検疫のサイズ:'; -$phpMussel['lang']['label_stable'] = '最新安定:'; -$phpMussel['lang']['label_sysinfo'] = 'システムインフォメーション:'; -$phpMussel['lang']['label_tests'] = 'テスト:'; -$phpMussel['lang']['label_unstable'] = '最新不安定:'; -$phpMussel['lang']['label_upload_date'] = 'アップロード日:'; -$phpMussel['lang']['label_upload_hash'] = 'アップロードのハッシュ:'; -$phpMussel['lang']['label_upload_origin'] = 'アップロードの起源:'; -$phpMussel['lang']['label_upload_size'] = 'アップロード・サイズ:'; -$phpMussel['lang']['link_accounts'] = 'アカウント'; -$phpMussel['lang']['link_config'] = 'コンフィギュレーション'; -$phpMussel['lang']['link_documentation'] = 'ドキュメンテーション'; -$phpMussel['lang']['link_file_manager'] = 'ファイル・マネージャー'; -$phpMussel['lang']['link_home'] = 'ホーム'; -$phpMussel['lang']['link_logs'] = 'ロゴス'; -$phpMussel['lang']['link_quarantine'] = '検疫'; -$phpMussel['lang']['link_statistics'] = '統計'; -$phpMussel['lang']['link_textmode'] = 'テキスト・フォーマット: シンプルファンシー'; -$phpMussel['lang']['link_updates'] = 'アップデート'; -$phpMussel['lang']['link_upload_test'] = 'アップロード・テスト'; -$phpMussel['lang']['logs_logfile_doesnt_exist'] = '選択したログは存在しません!'; -$phpMussel['lang']['logs_no_logfiles_available'] = 'いいえログが利用可能。'; -$phpMussel['lang']['logs_no_logfile_selected'] = 'ログが選択されていません。'; -$phpMussel['lang']['max_login_attempts_exceeded'] = 'ログイン試行の最大回数を超えました;アクセス拒否。'; -$phpMussel['lang']['previewer_days'] = '日'; -$phpMussel['lang']['previewer_hours'] = '時'; -$phpMussel['lang']['previewer_minutes'] = '分'; -$phpMussel['lang']['previewer_months'] = '月'; -$phpMussel['lang']['previewer_seconds'] = '秒'; -$phpMussel['lang']['previewer_weeks'] = '週'; -$phpMussel['lang']['previewer_years'] = '年'; -$phpMussel['lang']['response_accounts_already_exists'] = 'そのアカウントはすでに存在します!'; -$phpMussel['lang']['response_accounts_created'] = 'アカウントの作成に成功しました!'; -$phpMussel['lang']['response_accounts_deleted'] = 'アカウントの削除が成功しました!'; -$phpMussel['lang']['response_accounts_doesnt_exist'] = 'そのアカウントは存在しません。'; -$phpMussel['lang']['response_accounts_password_updated'] = 'パスワードの更新が成功しました!'; -$phpMussel['lang']['response_activated'] = 'アクティブにしました。'; -$phpMussel['lang']['response_activation_failed'] = 'アクティブ化に失敗しました!'; -$phpMussel['lang']['response_checksum_error'] = 'チェックサム・エラー!​ファイルが拒否されました!'; -$phpMussel['lang']['response_component_successfully_installed'] = 'コンポーネントのインストールに成功しました。'; -$phpMussel['lang']['response_component_successfully_uninstalled'] = 'コンポーネントのアンインストールは成功しました。'; -$phpMussel['lang']['response_component_successfully_updated'] = 'コンポーネントのアップデートに成功しました!'; -$phpMussel['lang']['response_component_uninstall_error'] = 'コンポーネントのアンインストール中にエラーが発生しました。'; -$phpMussel['lang']['response_configuration_updated'] = 'コンフィギュレーションの更新が成功しました。'; -$phpMussel['lang']['response_deactivated'] = '非アクティブにしました。'; -$phpMussel['lang']['response_deactivation_failed'] = '非アクティブ化に失敗しました!'; -$phpMussel['lang']['response_delete_error'] = '削除に失敗しました!'; -$phpMussel['lang']['response_directory_deleted'] = 'ディレクトリが正常に削除されました!'; -$phpMussel['lang']['response_directory_renamed'] = 'ディレクトリの名前が変更されました!'; -$phpMussel['lang']['response_error'] = 'エラー'; -$phpMussel['lang']['response_failed_to_install'] = 'インストールに失敗しました!'; -$phpMussel['lang']['response_failed_to_update'] = 'アップデートに失敗しました!'; -$phpMussel['lang']['response_file_deleted'] = 'ファイルを削除が成功しました!'; -$phpMussel['lang']['response_file_edited'] = 'ファイルは正常に変更されました!'; -$phpMussel['lang']['response_file_renamed'] = 'ファイルの名前が変更されました!'; -$phpMussel['lang']['response_file_restored'] = 'ファイルは正常に復元されました!'; -$phpMussel['lang']['response_file_uploaded'] = 'ファイルは正常にアップロードされました!'; -$phpMussel['lang']['response_login_invalid_password'] = 'ログイン失敗!​無効なパスワード!'; -$phpMussel['lang']['response_login_invalid_username'] = 'ログイン失敗!​ユーザー名は存在しません!'; -$phpMussel['lang']['response_login_password_field_empty'] = 'パスワード入力は空です!'; -$phpMussel['lang']['response_login_username_field_empty'] = 'ユーザー名入力は空です!'; -$phpMussel['lang']['response_rename_error'] = '名前を変更できませんでした!'; -$phpMussel['lang']['response_restore_error_1'] = '復元に失敗しました!​破損したファイル!'; -$phpMussel['lang']['response_restore_error_2'] = '復元に失敗しました!​検疫キーが間違っています!'; -$phpMussel['lang']['response_statistics_cleared'] = '統計はクリアされました。'; -$phpMussel['lang']['response_updates_already_up_to_date'] = 'すでに最新の状態です。'; -$phpMussel['lang']['response_updates_not_installed'] = 'コンポーネントのインストールされていません!'; -$phpMussel['lang']['response_updates_not_installed_php'] = 'コンポーネントのインストールされていません(PHP {V}が必要です)!'; -$phpMussel['lang']['response_updates_outdated'] = '時代遅れです!'; -$phpMussel['lang']['response_updates_outdated_manually'] = '時代遅れです(手動でアップデートしてください)!'; -$phpMussel['lang']['response_updates_outdated_php_version'] = '時代遅れです(PHP {V}が必要です)!'; -$phpMussel['lang']['response_updates_unable_to_determine'] = '決定することができません。'; -$phpMussel['lang']['response_upload_error'] = 'アップロードに失敗しました!'; -$phpMussel['lang']['state_complete_access'] = '完全なアクセス'; -$phpMussel['lang']['state_component_is_active'] = 'コンポーネントがアクティブです。'; -$phpMussel['lang']['state_component_is_inactive'] = 'コンポーネントが非アクティブです。'; -$phpMussel['lang']['state_component_is_provisional'] = 'コンポーネントが暫定的です。'; -$phpMussel['lang']['state_default_password'] = '警告:デフォルトのパスワードを使用して!'; -$phpMussel['lang']['state_logged_in'] = 'ログインしています。'; -$phpMussel['lang']['state_logs_access_only'] = 'ログのみにアクセス'; -$phpMussel['lang']['state_maintenance_mode'] = '警告:メンテナンス・モードが有効になっています!'; -$phpMussel['lang']['state_password_not_valid'] = '警告:このアカウントには有効なパスワードを使用していません!'; -$phpMussel['lang']['state_quarantine'] = '現在、%sつのファイルが検疫されています。'; -$phpMussel['lang']['switch-hide-non-outdated-set-false'] = '非時代遅れを隠さないで'; -$phpMussel['lang']['switch-hide-non-outdated-set-true'] = '非時代遅れを隠す'; -$phpMussel['lang']['switch-hide-unused-set-false'] = '未使用を隠さないで'; -$phpMussel['lang']['switch-hide-unused-set-true'] = '未使用を隠す'; -$phpMussel['lang']['tip_accounts'] = 'こんにちは、​{username}。​
        アカウント・ページは、​phpMusselフロントエンドにアクセスできるユーザーを制御できます。'; -$phpMussel['lang']['tip_config'] = 'こんにちは、​{username}。​
        コンフィグレーション・ページは、​フロントエンドからphpMusselの設定を変更することができます。'; -$phpMussel['lang']['tip_donate'] = 'phpMusselは無料で提供されています、​しかし、​あなたがしたい場合、​寄付ボタンをクリックすると、​プロジェクトに寄付することができます。'; -$phpMussel['lang']['tip_file_manager'] = 'こんにちは、​{username}。​
        ファイル・マネージャを使用する、​ファイルを削除、​編集、​アップロード、​ダウンロードができます。​慎重に使用する(これを使って、​インストールを壊すことができます)。'; -$phpMussel['lang']['tip_home'] = 'こんにちは、​{username}。​
        これはphpMusselフロントエンドのホームページです。​続行するには、​左側のナビゲーションメニューからリンクを選択します。'; -$phpMussel['lang']['tip_login'] = 'デフォルト・ユーザ名:​admin – デフォルト・パスワード:​password'; -$phpMussel['lang']['tip_logs'] = 'こんにちは、​{username}。​
        そのログの内容を表示するために、​次のリストからログを選択します。'; -$phpMussel['lang']['tip_quarantine'] = 'こんにちは、​{username}。
        管理を容易にするために、​現在検疫されているすべてのファイルがこのページにリストされています。'; -$phpMussel['lang']['tip_quarantine_disabled'] = '注意:検疫は現在無効になっていますが、コンフィギュレーション・ページで有効にすることができます。'; -$phpMussel['lang']['tip_see_the_documentation'] = '設定ディレクティブの詳細については、​ドキュメントを参照してください。'; -$phpMussel['lang']['tip_statistics'] = 'こんにちは、​{username}。​
        このページには、phpMusselのインストールに関する基本的な使用状況の統計情報が表示されます。'; -$phpMussel['lang']['tip_statistics_disabled'] = '注意:統計トラッキングは現在オフラインですが、コンフィギュレーション・ページで有効にすることができます。'; -$phpMussel['lang']['tip_updates'] = 'こんにちは、​{username}。​
        アップデート・ページは、​phpMusselのさまざまなコンポーネントはインストール、​アンインストール、​更新が可能です(コアパッケージ、​シグネチャ、​プラグイン、​L10Nファイル、​等)。'; -$phpMussel['lang']['tip_upload_test'] = 'こんにちは、​{username}。​
        アップロード・テスト・ページ、​標準的なファイルアップロードフォームを含んでいます、​ファイルが通常ブロックされるかどうかをテストすることができます。'; -$phpMussel['lang']['title_accounts'] = 'phpMussel – アカウント'; -$phpMussel['lang']['title_config'] = 'phpMussel – コンフィギュレーション'; -$phpMussel['lang']['title_file_manager'] = 'phpMussel – ファイル・マネージャー'; -$phpMussel['lang']['title_home'] = 'phpMussel – ホーム'; -$phpMussel['lang']['title_login'] = 'phpMussel – ログイン'; -$phpMussel['lang']['title_logs'] = 'phpMussel – ロゴス'; -$phpMussel['lang']['title_quarantine'] = 'phpMussel – 検疫'; -$phpMussel['lang']['title_statistics'] = 'phpMussel – 統計'; -$phpMussel['lang']['title_updates'] = 'phpMussel – アップデート'; -$phpMussel['lang']['title_upload_test'] = 'phpMussel – アップロード・テスト'; -$phpMussel['lang']['warning'] = '警告:'; -$phpMussel['lang']['warning_php_1'] = 'あなたのPHPバージョンはもはや積極的にサポートされていません!​​アップデートおすすめします!'; -$phpMussel['lang']['warning_php_2'] = 'あなたのPHPバージョンは深刻な脆弱性を持っています!​​アップデートを強くおすすめします!'; -$phpMussel['lang']['warning_signatures_1'] = 'アクティブ・シグネチャ・ファイルはありません!'; - -$phpMussel['lang']['info_some_useful_links'] = '役に立つリンク:
          -
        • phpMusselの問題 @ GitHub – phpMusselの問題ページ(サポート、​援助、​など)。
        • -
        • phpMussel @ Spambot Security – phpMusselのディスカッションフォーラム(サポート、​援助、​など)。
        • -
        • phpMussel @ SourceForge – phpMusselの代替ダウンロードミラー。
        • -
        • WebSecTools.com – ウェブサイトを保護するための簡単なウェブマスターツールのコレクション。
        • -
        • ClamavNet – ClamAVホームページ(ClamAV®は、​トロイの木馬、​ウイルス、​マルウェア、​とその他の脅威を検出するための、​オープンソースのウイルス対策エンジンです)。
        • -
        • SecuriteInfo.com – ClamAVの補足的なシグネチャを提供する、​コンピュータセキュリティ会社。
        • -
        • PhishTank – phpMussel URLスキャナーで利用される、​フィッシング詐欺データベース。
        • -
        • Global PHP Group @ Facebook – PHP学習リソースとディスカッション。
        • -
        • PHP.earth – PHP学習リソースとディスカッション。
        • -
        • VirusTotal – VirusTotalは、​疑わしいファイルやURLを分析するための無料サービスです。
        • -
        • Hybrid Analysis – Hybrid Analysisは、​Payload Securityが提供する無料のマルウェア分析サービスで。
        • -
        • Malwarebytes – コンピュータのマルウェア対策専門家。
        • -
        • MalwareTips – 便利なマルウェア対策ディスカッションフォーラム。
        • -
        • 脆弱性チャート – さまざまなパッケージの安全で安全でないバージョンを一覧表示する(PHP、HHVM、等)。
        • -
        • 互換性チャート – さまざまなパッケージの互換性情報を一覧表示します(CIDRAM、phpMussel、等)。
        • -
        '; diff --git a/libraries/plugins/phpMussel/vault/lang/lang.ja.php b/libraries/plugins/phpMussel/vault/lang/lang.ja.php deleted file mode 100644 index 8f88cb7..0000000 --- a/libraries/plugins/phpMussel/vault/lang/lang.ja.php +++ /dev/null @@ -1,127 +0,0 @@ -홈 | 로그 아웃'; -$phpMussel['lang']['bNav_logout'] = '로그 아웃'; -$phpMussel['lang']['config_attack_specific_archive_file_extensions'] = '인식 가능한 아카이브 파일 확장입니다 (CSV 형식; 문제가있을 경우에만 추가 또는 제거해야합니다. 실수로 제거하면 오진의 원인이 될 수 있습니다. 반대로 실수로 추가하면 어택 자 스페시 픽 검출에서 추가 된 화이트리스트 화되어 버립니다. 충분히주의 위 변경하십시오. 또한 컨텐트 수준에서 아카이브를 분석 할 수 있는지 여부에는 영향을주지 않습니다). 기본적으로 가장 일반적 형식을 나열하고 있지만 의도적으로 포괄적으로하지 않습니다.'; -$phpMussel['lang']['config_attack_specific_block_control_characters'] = '제어 문자를 포함한 파일을 차단 여부 (줄 바꿈을 제외한)? 에 관한 것입니다 ([\x00-\x08\x0b\x0c\x0e\x1f\x7f]). 만약 텍스트를 업로드하는 경우,이 옵션을 사용하여 추가 보호를 강화할 수 있습니다. 텍스트 이외도 업로드 할 경우, 사용하면 오진의 원인이 될 수 있습니다. false = 차단하지 (Default / 기본 설정); true = 차단합니다.'; -$phpMussel['lang']['config_attack_specific_chameleon_from_exe'] = '실행 파일없이 실행 파일의 아카이브도 인식 할 수없는 파일의 실행 헤더 및 악성 헤더의 실행 파일을 찾습니다. false = 해제; true = 온.'; -$phpMussel['lang']['config_attack_specific_chameleon_from_php'] = '파일도 아니고 PHP 아카이브도 인식 할 수없는 파일에서 PHP 헤더를 찾습니다. false = 해제; true = 온.'; -$phpMussel['lang']['config_attack_specific_chameleon_to_archive'] = '헤더가 잘못 보관을 찾습니다 (BZ, GZ, RAR, ZIP, RAR, GZ 지원). false = 해제; true = 온.'; -$phpMussel['lang']['config_attack_specific_chameleon_to_doc'] = '헤더가 잘못 오피스 문서를 찾습니다 (DOC, DOT, PPS, PPT, XLA XLS, WIZ 지원). false = 해제; true = 온.'; -$phpMussel['lang']['config_attack_specific_chameleon_to_img'] = '헤더가 잘못된 이미지 파일을 찾습니다 (BMP, DIB, PNG, GIF, JPEG, JPG, XCF, PSD, PDD, WEBP 지원). false = 해제; true = 온.'; -$phpMussel['lang']['config_attack_specific_chameleon_to_pdf'] = '헤더가 잘못 PDF 파일을 찾습니다. false = 해제; true = 온.'; -$phpMussel['lang']['config_attack_specific_corrupted_exe'] = '손상된 파일과 오류 분석. false = 무시; true = 차단 (Default / 기본 설정). 손상의 가능성이있는 PE 파일을 차단 검출 여부? 관한 것입니다. PE 파일의 일부가 손상되어 제대로 분석 할 수없는 것은 드물지 않고, 바이러스 감염을 보는 바로미터가됩니다. PE 파일의 바이러스를 감지하는 안티 바이러스 프로그램은 PE 파일 분석을 실시 합니다만, 바이러스를 만드는 사람이 바이러스가 검출되지 않도록 그것을 피하려고 할 것이기 때문입니다.'; -$phpMussel['lang']['config_attack_specific_decode_threshold'] = '디코드 명령이 감지 될 원시 데이터의 길이 제한 (스캐닝 중에 눈에 띄는 문제가있는 경우에는 필요에 따라 설정). 기본값 = 512KB. 제로 또는 값 없음 (null)은 임계 값을 비활성화합니다 (파일 크기의 제한을 제거합니다).'; -$phpMussel['lang']['config_attack_specific_scannable_threshold'] = 'phpMussel이 읽고 스캔 할 수있는 원시 데이터의 길이에 대한 임계 값 (스캐닝 중에 눈에 띄는 문제가있는 경우에는 필요에 따라 설정). 기본값 = 32MB. 제로 또는 값 없음 (null)은 임계 값을 비활성화합니다. 값은 서버 나 웹 사이트에 업로드되는 파일의 평균 파일 크기보다 크고 filesize_limit 지시어보다 작게 설정해야합니다. 또한 "php.ini" 설정에 따라 PHP에 할당 된 메모리의 대략 5 분의 1을 초과해서는 없습니다. 이 지시문은 phpMussel가 메모리를 너무 많이 사용하지 않도록하기위한 것입니다. (일정 크기 이상의 파일은 스캔하지 못할 수도 있습니다).'; -$phpMussel['lang']['config_compatibility_ignore_upload_errors'] = '시스템에서 phpMussel의 기능에 수정이 필요한 경우가 아니면이 지시문은 일반적으로 사용할 수 없습니다. 비활성화하면 $_FILES array()요소를 감지했을 때, 그 요소가 나타내는 파일의 스캔이 시작됩니다, 요소가 비어 있거나없는 경우 phpMussel는 오류 메시지를 반환합니다. 이것은 본래 phpMussel가 있어야 할 모습입니다. 그러나 CMS에서는 $_FILES 하늘 요소는 일반적으로 발생하는 것이며, 정상적인 phpMussel의 행동이 정상적인 CMS의 거동을 저해 할 우려가 있습니다. 이러한 경우에는 본 옵션을 사용하여 phpMussel 빈 요소를 검사하고 오류 메시지를 반환을 피하고 요청한 페이지로 원활하게 진행할 수 있도록합니다. false = OFF (해제입니다); true = ON (온입니다).'; -$phpMussel['lang']['config_compatibility_only_allow_images'] = '시스템 또는 CMS에 이미지 파일의 업로드 만 허용한다면이 지시어가 동작해야하며, 그렇지 않으면 무효로합니다. 사용하면 이미지와 알 수없는 파일은 검사하지 않고 차단하기 때문에 프로세스 시간 단축 및 메모리 절약을 기대할 수 있습니다. false = OFF (해제입니다); true = ON (온입니다).'; -$phpMussel['lang']['config_files_block_encrypted_archives'] = '암호화 된 아카이브를 감지하고 차단 여부? phpMussel은 암호화 된 아카이브를 검색 할 수 없기 때문에 아카이브의 암호화를 통해 phpMussel 안티 바이러스 스캐너 등을 かいくぐろ하려는 공격자가 있을지도 모릅니다. 암호화 된 아카이브를 차단함으로써 이러한 위험을 방지 할 수 있습니다. false = 아니오; true = 예 (Default / 기본 설정).'; -$phpMussel['lang']['config_files_check_archives'] = '아카이브의 컨텐츠에 대해 체크를 시도 여부에 대해서입니다. false = 체크하지 않는다; true = 확인 (Default / 기본 설정). 현재 지원하고있는 것은 BZ, GZ, LZF, ZIP 형식입니다 (RAR, CAB, 7z 등은 제외). 본 기능은 만능이 아니므로 활성화하는 것이 좋습니다 있지만 반드시 모두를 검출하는 것을 보증하는 것은 아닙니다. 또한 현재 체크 아카이브는 ZIP 대해 재귀 않는다는 점에 유의하십시오.'; -$phpMussel['lang']['config_files_filesize_archives'] = '파일 크기 블랙리스트/화이트리스트 화를 아카이브의 컨텐츠에 반입 여부? false = 아니오 (단지 그레이리스트 모두); true = 예 (Default / 기본 설정).'; -$phpMussel['lang']['config_files_filesize_limit'] = '파일 크기 제한의 단위는 KB입니다. 65536 = 64MB (Default / 기본 설정); 0 = 제한하지 않습니다 (제한없이 항상 그레이리스트 화) 양수이면 무엇이든 상관 없습니다. PHP 설정에서 메모리에 제한이 있고, 업로드 파일 크기 제한이 설정되어있는 경우에 효과적입니다.'; -$phpMussel['lang']['config_files_filesize_response'] = '최대 크기보다 큰 파일을 처리하는 방법에 관한 것입니다. false = Whitelist/화이트리스트; true = Blacklist/블랙리스트 (Default / 기본 설정).'; -$phpMussel['lang']['config_files_filetype_archives'] = '파일 타입 블랙리스트/화이트리스트 화를 아카이브의 컨텐츠에 반입 여부? false = 아니오 (단지 그레이리스트 모두) (Default / 기본 설정); true = 예.'; -$phpMussel['lang']['config_files_filetype_blacklist'] = '파일 유형 블랙리스트 :'; -$phpMussel['lang']['config_files_filetype_greylist'] = '파일 유형 그레이리스트 :'; -$phpMussel['lang']['config_files_filetype_whitelist'] = '시스템이 특정 유형의 파일 만 업로드를 허용하거나 거절하는 경우 파일 유형을 적절히 화이트리스트, 블랙리스트, 그레이리스트로 분류 해두면 파일 유형에 튀겨 진 파일은 스캔을 건너 뛸 수 때문에 속도로 연결됩니다. 형식은 CSV (쉼표로 구분)입니다. 목록에 의하지 않고 모두를 검사 할 경우 변수는 빈 상태로 유지하고 화이트리스트 / 블랙리스트 / 그레이리스트를 해제합니다. 프로세스의 논리적 순서 : 파일 형식이 화이트리스트에 포함되어 있으면, 스캔하지 않고 블록하지 않고 블랙리스트 및 그레이리스트에 체크를하지 않습니다. 파일 형식이 블랙리스트에 있으면 스캔하지 않고 즉시 차단하고 그레이리스트에 체크를하지 않습니다. 회색 목록이 비어 또는 그레이리스트가 하늘이 아닌 한편 그 파일 타입이 있으면 정상적으로 스캔 차단 여부를 판단합니다. 그레이리스트가 하늘이 아닌 한편 그 파일 유형이 포함되어 있지 않으면 블랙리스트와 같은 취급을 할 수 있고 스캔없이 차단합니다. 파일 유형 화이트리스트 :'; -$phpMussel['lang']['config_files_max_recursion'] = '아카이브에 대한 최대 재귀 깊이입니다. 기본 설정 = 10.'; -$phpMussel['lang']['config_files_max_uploads'] = '한 번에 스캔 할 수있는 업로드 파일 수 제한으로이를 초과하면 스캔을 중단하고 사용자에게 그 사실을 알리고 논리적 공격으로부터 보호 역할을합니다. 시스템과 CMS가 DDoS 공격을 만나 phpMussel가 오버로드하여 PHP 프로세스에 지장을 초래하는 일이 없도록하기 위해서입니다. 권장 수는 10이지만, 하드웨어의 속도에 따라 더 이상 / 이하이 좋은 것도있을 것입니다. 이 숫자는 아카이브의 내용을 포함하지 않는 것을 기억하십시오.'; -$phpMussel['lang']['config_general_cleanup'] = '처음 업로드 후 변수 및 캐시 설정을 클리어 여부에 대한 스크립트입니다. false (가짜) = 아니오;true (진정한) = 예 (Default / 기본 설정). 처음 업로드 스캐닝 이외로 사용할 수 없으면,true (참)로 메모리 사용량을 최소화합니다. 사용하는 경우,false (가짜)으로 메모리에 불필요한 중복 데이터를 다시로드하는 것을 방지합니다. 일반적으로true (진정한). 로 설정하고 있지만, 처음 업로드 스캐닝에 대해서만 사용할 수 없음을 기억하십시오. CLI 모드에서 영향을주지 않습니다.'; -$phpMussel['lang']['config_general_default_algo'] = '향후 모든 암호와 세션에 사용할 알고리즘을 정의합니다. 옵션 : PASSWORD_DEFAULT (default / 기본 설정), PASSWORD_BCRYPT, PASSWORD_ARGON2I (PHP >= 7.2.0 가 필요합니다).'; -$phpMussel['lang']['config_general_delete_on_sight'] = '이 지시문을 사용하면 감지 기준 (서명이든 뭐든)에 있던 업로드 파일은 즉시 삭제됩니다. 클린 판단 된 파일은 그대로입니다. 아카이브의 경우, 문제의 파일이 일부라도 아카이브 모든이 삭제 대상이됩니다. 업로드 파일 검사에서는 본 지시어를 활성화 할 필요는 없습니다. 왜냐하면 PHP는 스크립트 실행 후 자동으로 캐시의 내용을 파기하기 때문입니다. 즉, 파일이 이동되거나 복사되거나 삭제되지 않는 한, PHP는 서버에 업로드 한 파일을 남겨 두는 것은 보통 없습니다. 이 지시어는 보안에 공을들이는 목적으로 설치되어 있습니다. PHP는 드물게 예상치 못한 행동을 할 수 있기 때문입니다. false = 스캔 후 파일은 그대로 (기본 설정). true = 스캔 후 깨끗해야 즉시 삭제합니다.'; -$phpMussel['lang']['config_general_disable_cli'] = 'CLI 모드를 해제 하는가? CLI 모드 (시에루아이 모드)는 기본적으로 활성화되어 있지만, 테스트 도구 (PHPUnit 등) 및 CLI 기반의 응용 프로그램과 간섭하는 가능성이 없다고는 단언 할 수 없습니다. CLI 모드를 해제 할 필요가 없으면이 데레쿠티부 무시 받고 괜찮습니다. false = CLI 모드를 활성화합니다 (Default / 기본 설정); true = CLI 모드를 해제합니다.'; -$phpMussel['lang']['config_general_disable_frontend'] = '프론트 엔드에 대한 액세스를 비활성화하거나? 프론트 엔드에 대한 액세스는 phpMussel을 더 쉽게 관리 할 수 있습니다. 상기 그것은 또한 잠재적 인 보안 위험이 될 수 있습니다. 백엔드를 통해 관리하는 것이 좋습니다,하지만 이것이 불가능한 경우 프론트 엔드에 대한 액세스를 제공. 당신이 그것을 필요로하지 않는 한 그것을 해제합니다. false = 프론트 엔드에 대한 액세스를 활성화합니다; true = 프론트 엔드에 대한 액세스를 비활성화합니다 (Default / 기본 설정).'; -$phpMussel['lang']['config_general_disable_webfonts'] = '웹 글꼴을 사용하지 않도록 설정 하시겠습니까? True = 예; False = 아니오 (Default / 기본 설정).'; -$phpMussel['lang']['config_general_enable_plugins'] = '플러그인 지원을 활성화 하시겠습니까? false = 아니오; true = 예 (Default / 기본 설정).'; -$phpMussel['lang']['config_general_forbid_on_block'] = '업로드 파일이 차단 된 메시지와 함께 phpMussel에서 403 헤더를 보내야하거나 일반 200 좋은지에 대해. false = 아니오 (200) Default / 기본 설정; true = 예 (403).'; -$phpMussel['lang']['config_general_FrontEndLog'] = '프론트 엔드 로그인 시도를 기록하는 파일. 파일 이름 지정하거나, 해제하려면 비워하십시오.'; -$phpMussel['lang']['config_general_honeypot_mode'] = '허니팟 모드가 활성화되어 있으면 phpMussel 업로드되어 온 모든 파일을 예외없이 검역합니다. 서명에 부합하는지 여부는 문제가되지 않습니다. 스캐닝 및 분석도 이루어지지 않습니다. phpMussel를 바이러스/악성 코드 리서치에 사용할 생각하는 사용자에게 유익 할 것입니다. 그러나 업로드 파일 스캐닝이라는 점에서는 그다지 권장되지 않으며, 허니 모드를 본래의 목적 이외에 사용하는 것이 좋습니다 수 없습니다. 그러나 업로드 파일 스캐닝이라는 점에서는 그다지 권장되지 않으며, 허니 모드를 본래의 목적 이외에 사용하는 것이 좋습니다 수 없습니다. 기본 설정은 무효입니다. false = Disabled/장애인 (Default / 기본 설정); true = Enabled/유효.'; -$phpMussel['lang']['config_general_ipaddr'] = '연결 요청의 IP 주소를 어디에서 찾을 것인가에 대해 (Cloudflare 같은 서비스에 대해 유효). Default (기본 설정) = REMOTE_ADDR. 주의 : 당신이 무엇을하고 있는지 모르는 한이를 변경하지 마십시오.'; -$phpMussel['lang']['config_general_lang'] = 'phpMussel의 기본 언어를 설정합니다.'; -$phpMussel['lang']['config_general_maintenance_mode'] = '유지 관리 모드를 사용 하시겠습니까? True = 예; False = 아니오 (Default / 기본 설정). 프런트 엔드 이외의 모든 것을 비활성화합니다. CMS, 프레임 워크 등을 업데이트 할 때 유용합니다.'; -$phpMussel['lang']['config_general_max_login_attempts'] = '로그인 시도 횟수 (프론트 엔드). Default / 기본 설정 = 5.'; -$phpMussel['lang']['config_general_numbers'] = '어떻게 숫자를 표시하는 것을 선호합니까? 가장 정확한 것으로 보이는 예제를 선택하십시오.'; -$phpMussel['lang']['config_general_quarantine_key'] = 'phpMussel은 필요하다면, phpMussel의 보루 토에서 독립적으로 플래그 첨부 파일의 업로드를 검역 할 수 있습니다. 일반적인 phpMussel 사용자는 웹 사이트 및 호스팅 환경 보호가 있으면 충분하다고 생각하고 플래그가있는 같은 것이 추가 분석을 가하려까지 요청이없는 것이므로 무효로 될 수 있습니다. 그렇지만 상세하게 분석하여 악성 코드에 대비하려는 사용자는 사용하면 좋습니다. 플래그 첨부 파일 업로드 격리 가양 디버깅에 도움이 될 수 있습니다. 격리 기능을 해제하려면quarantine_key 지시문을 비워 두거나 비어 있지 않은 경우 지시문의 내용을 삭제하십시오. 활성화하려면 데이레쿠티부에 어떤 값을 넣어주세요. quarantine_key 격리 기능의 중요한 보안 요소이며, 검역 기능에 저장된 데이터의 집행을 각종 공격으로부터 지키고 있습니다. quarantine_key는 암호처럼 생각하세요. 긴 것이 더 안전 할 수 있습니다. 가장 효과적인 사용법은delete_on_sight과 함께합니다.'; -$phpMussel['lang']['config_general_quarantine_max_filesize'] = '격리 된 파일 크기 제한. 이 값보다 큰 파일은 격리되지 않습니다. 쿠오란팅의 용량을 초과 비정상적으로 큰 파일 크기 공격에서 메모리가 낭비되는 것을 방지하는 의미에서 중요합니다. 기본값은 2MB입니다.'; -$phpMussel['lang']['config_general_quarantine_max_usage'] = '검역을 위해 사용할 최대 메모리 량. 전체 메모리 양이 사용되면이 범위에 맞게 오래된 파일이 삭제 대상이됩니다. 쿠오란팅의 용량을 초과 비정상적으로 큰 파일 크기 공격에서 메모리가 낭비되는 것을 방지하는 의미에서 중요합니다. 기본 설정은 64MB입니다.'; -$phpMussel['lang']['config_general_scan_cache_expiry'] = 'phpMussel는 스캐닝 결과를 얼마 동안 캐시해야합니까? 초이며, 기본값은 21,600 초 (6 시간)로되어 있습니다. 0으로 설정하면 캐시 비활성화됩니다.'; -$phpMussel['lang']['config_general_scan_kills'] = '차단되거나 삭제 된 업로드의 모든 것을 기록하는 파일의 파일 이름. 파일 이름 지정하거나, 해제하려면 비워하십시오.'; -$phpMussel['lang']['config_general_scan_log'] = '전체 스캔 결과를 기록하는 파일의 파일 이름. 파일 이름 지정하거나, 해제하려면 비워하십시오.'; -$phpMussel['lang']['config_general_scan_log_serialized'] = '전체 스캔 결과를 기록하는 파일의 파일 이름 (serialization 형식을 이용). 파일 이름 지정하거나, 해제하려면 비워하십시오.'; -$phpMussel['lang']['config_general_statistics'] = 'phpMussel 사용 통계를 추적합니까? True = 예; False = 아니오 (Default / 기본 설정).'; -$phpMussel['lang']['config_general_timeFormat'] = 'phpMussel에서 사용되는 날짜 형식. 추가 옵션이 요청에 따라 추가 될 수 있습니다.'; -$phpMussel['lang']['config_general_timeOffset'] = '시간대 오프셋 (분).'; -$phpMussel['lang']['config_general_timezone'] = '귀하의 시간대.'; -$phpMussel['lang']['config_general_truncate'] = '로그 파일이 특정 크기에 도달하면 잘 있습니까? 값은 로그 파일이 잘 리기 전에 커질 가능성이있는 B/KB/MB/GB/TB 단위의 최대 크기입니다. 기본값 "0KB"은 절단을 해제합니다 (로그 파일은 무한정 확장 할 수 있습니다). 참고 : 개별 로그 파일에 적용됩니다! 로그 파일의 크기는 일괄 적으로 고려되지 않습니다.'; -$phpMussel['lang']['config_heuristic_threshold'] = 'phpMussel이 파일은 의심 위험성이 높다고 판단하는 서명이 있습니다. 임계 값은 업로드 된 파일의 위험의 최대 값이며이를 초과하면 악성 코드로 판단됩니다. 여기에서 위험의 정의는 의심과 특정되었지만 수입니다. 기본적으로 3으로 설정되어 있습니다. 이보다 낮은 오진의 가능성이 증가하고, 너무 크면 오류 검출은 감소하지만 위험성이있는 파일이 검색되지 않을 수 증가하게됩니다. 특히 문제가 없으면 기본 설정을 유지하는 것이 좋습니다.'; -$phpMussel['lang']['config_signatures_Active'] = '쉼표로 구분 된 활성 시그니처 파일의 목록입니다.'; -$phpMussel['lang']['config_signatures_detect_adware'] = 'phpMussel 애드웨어 탐지를 위해 서명을 분석해야하는지 여부? false = 아니오; true = 예 (Default / 기본 설정).'; -$phpMussel['lang']['config_signatures_detect_deface'] = 'phpMussel를 위조 및 디훼사 탐지를 위해 서명을 분석해야하는지 여부? false = 아니오; true = 예 (Default / 기본 설정).'; -$phpMussel['lang']['config_signatures_detect_encryption'] = 'phpMussel이 암호화 된 파일을 탐지하고 차단해야합니까? false = 아니오; true = 예 (Default / 기본 설정).'; -$phpMussel['lang']['config_signatures_detect_joke_hoax'] = 'phpMussel 장난 / 위조 및 악성 코드 / 바이러스 탐지를 위해 서명을 분석해야하는지 여부? false = 아니오; true = 예 (Default / 기본 설정).'; -$phpMussel['lang']['config_signatures_detect_packer_packed'] = 'phpMussel는 패커와 팩 데이터 검출을 위해 서명을 분석해야하는지 여부? false = 아니오; true = 예 (Default / 기본 설정).'; -$phpMussel['lang']['config_signatures_detect_pua_pup'] = 'phpMussel는 PUAs/PUPs 탐지를 위해 서명을 분석해야하는지 여부? false = 아니오; true = 예 (Default / 기본 설정).'; -$phpMussel['lang']['config_signatures_detect_shell'] = 'phpMussel는 shell 스크립트 탐지를 위해 서명을 분석해야하는지 여부? false = 아니오; true = 예 (Default / 기본 설정).'; -$phpMussel['lang']['config_signatures_fail_extensions_silently'] = '확장자가없는 경우 phpMussel이 그것을보고해야하는지 여부? fail_extensions_silently이 잘못된 경우 확장자없이는 스캐닝시에보고되고 활성화되면 무시됩니다 문제는보고되지 않습니다. 이 지시어를 무효로하는 것은 보안을 향상시킬 수 있지만, 오진도 증가 할 수 있습니다. false = Disabled/장애인; true = Enabled/유효 (Default / 기본 설정).'; -$phpMussel['lang']['config_signatures_fail_silently'] = '서명 파일이 없거나 손상된 경우 phpMussel 그것을 리포트 해야하는지 여부? fail_silently이 유효하지 않으면 문제가 리포트되어 유효하면 문제는 무시 된 스캔 보고서가 작성됩니다. 충돌하는 같은 피해가 없으면 기본 설정을 그대로 유지한다. false = Disabled/장애인; true = Enabled/유효 (Default / 기본 설정).'; -$phpMussel['lang']['config_template_data_css_url'] = '사용자 지정 테마 템플릿 파일은 외부 CSS 속성을 사용하고 있습니다. 한편, 기본 테마는 내부 CSS입니다. 사용자 정의 테마를 적용하는 CSS 파일의 공개적 HTTP 주소를 "css_url"변수를 사용하여 지정하십시오. 이 변수가 공백이면 기본 테마가 적용됩니다.'; -$phpMussel['lang']['config_template_data_Magnification'] = '글꼴 배율. Default (기본 설정) = 1.'; -$phpMussel['lang']['config_template_data_theme'] = 'phpMussel에 사용할 기본 테마.'; -$phpMussel['lang']['config_urlscanner_cache_time'] = 'API 조회의 결과를 얼마나 캐시할지 (초 단위)? 기본값은 3600 초 (한 시간).'; -$phpMussel['lang']['config_urlscanner_google_api_key'] = '필요한 API 키가 정의되면, API는 Google Safe Browsing API 조회가 활성화됩니다.'; -$phpMussel['lang']['config_urlscanner_lookup_hphosts'] = 'True로하면 API를 hpHosts 조회가 활성화됩니다.'; -$phpMussel['lang']['config_urlscanner_maximum_api_lookups'] = '스캔 반복의 API 조회의 최대 수입니다. API 조회 때마다 스캔 반복의 시간이 쌓여 버리므로, 스캔 처리 속도 향상을 위해 제한을두고 싶다고 생각할지도 모릅니다. 0은 제한 없음을 의미합니다. 기본값은 10입니다.'; -$phpMussel['lang']['config_urlscanner_maximum_api_lookups_response'] = 'API 조회 횟수 제한을 초과했을 때의 대응입니다. false = 아무것도 / 처리를 계속한다 (Default / 기본 설정); true = 파일에 플래그를 지정 / 차단한다.'; -$phpMussel['lang']['config_virustotal_vt_public_api_key'] = '옵션이지만, phpMussel은 Virus Total API를 사용하여 파일을 검색 할 수 있습니다. 바이러스, 트로이 목마, 악성 코드 및 기타 공격에 매우 효과적으로 작동합니다. 기본적으로 Virus Total API를 사용한 스캐닝은 비활성화되어 있습니다. 활성화하려면 Virus Total의 API 키가 필요합니다. 이점이 매우 크기 때문에 사용하는 것이 좋습니다. Virus Total API의 사용에 있어서는 Virus Total 문서에있는대로 이용 규정 및 지침을 준수하지 않으면 안됩니다. 이 통합 기능을 사용하기 위해서는 : Virus Total와 API의 서비스 규정을 읽고 동의해야합니다. 최소 Virus Total Public API 문서의 전문을 읽고 이해하여 (VirusTotalPublic API v2.0 이후 Contents "콘텐츠"이전까지).'; -$phpMussel['lang']['config_virustotal_vt_quota_rate'] = 'Virus Total API 문서에 따르면 "1 분간의 타임 프레임 사이에 요청 최대 4 회" 의 제한이 있습니다. 허니 클라이언트와 허니팟 등의 자동화를 사용하여 리포트를받을뿐만 아니라 VirusTotal 자원을 제공하는 경우, 상한은 올라갑니다. phpMussel 기본적으로 최대 4 번을 준수하고 있습니다 만, 위의 상황에서이 두 디렉토리를 준비하고 상황에 맞게 변경할 수 있도록되어 있습니다. 한계에 도달 버리는 등의 불편이나 문제가 없으면 기본값을 변경하는 것은 권장되지 않지만 값을 작게하는 것이 적절한 경우도 있습니다. 상한은 시간 프레임vt_quota_time (분 내에) vt_quota_rate로 설정합니다.'; -$phpMussel['lang']['config_virustotal_vt_quota_time'] = '(위의 설명 참조).'; -$phpMussel['lang']['config_virustotal_vt_suspicion_level'] = '기본 설정은 phpMussel이 Virus Total API를 사용하여 스캔 파일 (疑がわし 주물)에 제한이 있습니다. vt_suspicion_level 지시문을 편집 할 더, 이 제한을 변경할 수 있습니다.'; -$phpMussel['lang']['config_virustotal_vt_weighting'] = 'phpMussel이 Virus Total API를 사용한 스캐닝 결과를 감지으로 대우하거나, 검색 가중치로 취급 할 것인가? 여러 엔진 (Virus Total처럼)을 사용한 스캐닝은 검색 속도 향상 (더 많은 악성 코드가 감지)을 가져다 한편 오진의 증가도 발생하므로이 지시어가 존재합니다. 따라서 스캐닝 결과는 결정적인 판단이 아니라 신뢰 점수로 사용하는 것이 적절한 경우도 있습니다. 값이 0이면 Virus Total API를 사용한 검색은 검색으로 처리되어 Virus Total 엔진이 악성 코드 및 플래그가 지정된 파일은 phpMussel도 악성 코드로 판단합니다. 다른 값의 경우 결과는 검출 가중되고, 스캔 된 파일이 악성 코드 여부 phpMussel가 결정하는 신뢰 점수 (또는 감지 가중치)입니다 (값은 악성이라고 판단하기위한 최소 신뢰 점수 또는 가중치). 기본값은 0입니다.'; -$phpMussel['lang']['Extended Description: phpMussel'] = '메인 패키지 (서명, 문서, 구성, 은 포함되지 않습니다).'; -$phpMussel['lang']['field_activate'] = '활성화'; -$phpMussel['lang']['field_clear_all'] = '모두 취소'; -$phpMussel['lang']['field_component'] = '구성 요소'; -$phpMussel['lang']['field_create_new_account'] = '새로운 계정 만들기'; -$phpMussel['lang']['field_deactivate'] = '비활성화'; -$phpMussel['lang']['field_delete_account'] = '계정 삭제'; -$phpMussel['lang']['field_delete_all'] = '모두 삭제'; -$phpMussel['lang']['field_delete_file'] = '삭제'; -$phpMussel['lang']['field_download_file'] = '다운로드'; -$phpMussel['lang']['field_edit_file'] = '편집'; -$phpMussel['lang']['field_false'] = 'False (거짓)'; -$phpMussel['lang']['field_file'] = '파일'; -$phpMussel['lang']['field_filename'] = '파일 이름 : '; -$phpMussel['lang']['field_filetype_directory'] = '디렉토리'; -$phpMussel['lang']['field_filetype_info'] = '{EXT} 파일'; -$phpMussel['lang']['field_filetype_unknown'] = '알 수없는'; -$phpMussel['lang']['field_install'] = '설치'; -$phpMussel['lang']['field_latest_version'] = '최신 버전'; -$phpMussel['lang']['field_log_in'] = '로그인'; -$phpMussel['lang']['field_more_fields'] = '필드를 추가합니다'; -$phpMussel['lang']['field_new_name'] = '새 이름 :'; -$phpMussel['lang']['field_ok'] = '승인'; -$phpMussel['lang']['field_options'] = '옵션'; -$phpMussel['lang']['field_password'] = '비밀번호'; -$phpMussel['lang']['field_permissions'] = '권한'; -$phpMussel['lang']['field_quarantine_key'] = '격리 키'; -$phpMussel['lang']['field_rename_file'] = '이름을 변경하려면'; -$phpMussel['lang']['field_reset'] = '재설정'; -$phpMussel['lang']['field_restore_file'] = '복구'; -$phpMussel['lang']['field_set_new_password'] = '새 암호를 설정합니다'; -$phpMussel['lang']['field_size'] = '전체 크기 : '; -$phpMussel['lang']['field_size_bytes'] = '바이트'; -$phpMussel['lang']['field_size_GB'] = 'GB'; -$phpMussel['lang']['field_size_KB'] = 'KB'; -$phpMussel['lang']['field_size_MB'] = 'MB'; -$phpMussel['lang']['field_size_TB'] = 'TB'; -$phpMussel['lang']['field_status'] = '상태'; -$phpMussel['lang']['field_system_timezone'] = '시스템 기본 시간대를 사용하십시오.'; -$phpMussel['lang']['field_true'] = 'True (참된)'; -$phpMussel['lang']['field_uninstall'] = '제거'; -$phpMussel['lang']['field_update'] = '업데이트'; -$phpMussel['lang']['field_update_all'] = '모두 업데이트'; -$phpMussel['lang']['field_upload_file'] = '새로운 파일을 업로드하기'; -$phpMussel['lang']['field_username'] = '사용자 이름'; -$phpMussel['lang']['field_your_version'] = '사용 버전'; -$phpMussel['lang']['header_login'] = '계속하려면 로그인하십시오.'; -$phpMussel['lang']['label_active_config_file'] = '활성 구성 파일 : '; -$phpMussel['lang']['label_blocked'] = '차단 된 업로드'; -$phpMussel['lang']['label_branch'] = '분기 최신 안정 :'; -$phpMussel['lang']['label_events'] = '스캔 이벤트'; -$phpMussel['lang']['label_flagged'] = '신고 된 개체'; -$phpMussel['lang']['label_fmgr_cache_data'] = '캐시 데이터 및 임시 파일 '; -$phpMussel['lang']['label_fmgr_disk_usage'] = 'phpMussel 디스크 사용 : '; -$phpMussel['lang']['label_fmgr_free_space'] = '사용 가능한 디스크 공간 : '; -$phpMussel['lang']['label_fmgr_total_disk_usage'] = '총 디스크 사용 : '; -$phpMussel['lang']['label_fmgr_total_space'] = '총 디스크 공간 : '; -$phpMussel['lang']['label_fmgr_updates_metadata'] = '구성 요소 업데이트 메타 데이터'; -$phpMussel['lang']['label_hide'] = '숨기다'; -$phpMussel['lang']['label_os'] = '사용 된 운영 체제 :'; -$phpMussel['lang']['label_other'] = '다른'; -$phpMussel['lang']['label_other-Active'] = '활성 서명 파일'; -$phpMussel['lang']['label_other-Since'] = '시작일'; -$phpMussel['lang']['label_php'] = '사용 된 PHP 버전 :'; -$phpMussel['lang']['label_phpmussel'] = '사용 된 phpMussel 버전 :'; -$phpMussel['lang']['label_quarantined'] = '격리 된 업로드'; -$phpMussel['lang']['label_sapi'] = '사용 된 SAPI :'; -$phpMussel['lang']['label_scanned_objects'] = '스캔 한 개체'; -$phpMussel['lang']['label_scanned_uploads'] = '스캔 한 업로드'; -$phpMussel['lang']['label_show'] = '보여'; -$phpMussel['lang']['label_size_in_quarantine'] = '격리 크기 : '; -$phpMussel['lang']['label_stable'] = '최신 안정 :'; -$phpMussel['lang']['label_sysinfo'] = '시스템 정보 :'; -$phpMussel['lang']['label_tests'] = '테스트 :'; -$phpMussel['lang']['label_unstable'] = '최신 불안정 :'; -$phpMussel['lang']['label_upload_date'] = '업로드 날짜 : '; -$phpMussel['lang']['label_upload_hash'] = '업로드 해시 : '; -$phpMussel['lang']['label_upload_origin'] = '업로드 원점 : '; -$phpMussel['lang']['label_upload_size'] = '업로드 크기 : '; -$phpMussel['lang']['link_accounts'] = '계정'; -$phpMussel['lang']['link_config'] = '구성'; -$phpMussel['lang']['link_documentation'] = '문서'; -$phpMussel['lang']['link_file_manager'] = '파일 관리자'; -$phpMussel['lang']['link_home'] = '홈'; -$phpMussel['lang']['link_logs'] = '로고스'; -$phpMussel['lang']['link_quarantine'] = '격리'; -$phpMussel['lang']['link_statistics'] = '통계'; -$phpMussel['lang']['link_textmode'] = '텍스트 서식 지정 : 단순한공상'; -$phpMussel['lang']['link_updates'] = '업데이트'; -$phpMussel['lang']['link_upload_test'] = '업로드 테스트'; -$phpMussel['lang']['logs_logfile_doesnt_exist'] = '선택한 로그는 존재하지 않습니다!'; -$phpMussel['lang']['logs_no_logfiles_available'] = '아니 로그를 사용할 수 있습니다.'; -$phpMussel['lang']['logs_no_logfile_selected'] = '로그가 선택되어 있지 않습니다.'; -$phpMussel['lang']['max_login_attempts_exceeded'] = '로그인 시도 횟수를 초과했습니다; 액세스 거부.'; -$phpMussel['lang']['previewer_days'] = '일'; -$phpMussel['lang']['previewer_hours'] = '시간'; -$phpMussel['lang']['previewer_minutes'] = '의사록'; -$phpMussel['lang']['previewer_months'] = '개월'; -$phpMussel['lang']['previewer_seconds'] = '초'; -$phpMussel['lang']['previewer_weeks'] = '주'; -$phpMussel['lang']['previewer_years'] = '연령'; -$phpMussel['lang']['response_accounts_already_exists'] = '계정이 이미 존재합니다!'; -$phpMussel['lang']['response_accounts_created'] = '계정 만들기에 성공했습니다!'; -$phpMussel['lang']['response_accounts_deleted'] = '계정 삭제가 성공했습니다!'; -$phpMussel['lang']['response_accounts_doesnt_exist'] = '계정이 존재하지 않습니다.'; -$phpMussel['lang']['response_accounts_password_updated'] = '암호 업데이트가 성공했습니다!'; -$phpMussel['lang']['response_activated'] = '활성화했습니다.'; -$phpMussel['lang']['response_activation_failed'] = '활성화에 실패했습니다!'; -$phpMussel['lang']['response_checksum_error'] = '체크섬 오류! 파일이 거부되었습니다!'; -$phpMussel['lang']['response_component_successfully_installed'] = '구성 요소의 설치에 성공했습니다.'; -$phpMussel['lang']['response_component_successfully_uninstalled'] = '구성 요소의 제거는 성공했습니다.'; -$phpMussel['lang']['response_component_successfully_updated'] = '구성 요소의 업데이트에 성공했습니다!'; -$phpMussel['lang']['response_component_uninstall_error'] = '구성 요소 제거하는 동안 오류가 발생했습니다.'; -$phpMussel['lang']['response_configuration_updated'] = '구성 업데이트가 성공했습니다.'; -$phpMussel['lang']['response_deactivated'] = '비활성화했습니다.'; -$phpMussel['lang']['response_deactivation_failed'] = '비활성화에 실패했습니다!'; -$phpMussel['lang']['response_delete_error'] = '삭제에 실패했습니다!'; -$phpMussel['lang']['response_directory_deleted'] = '디렉토리가 성공적으로 삭제되었습니다!'; -$phpMussel['lang']['response_directory_renamed'] = '디렉토리의 이름이 변경되었습니다!'; -$phpMussel['lang']['response_error'] = '오류'; -$phpMussel['lang']['response_failed_to_install'] = '설치하지 못했습니다!'; -$phpMussel['lang']['response_failed_to_update'] = '업데이트하지 못했습니다!'; -$phpMussel['lang']['response_file_deleted'] = '파일 삭제가 성공했습니다!'; -$phpMussel['lang']['response_file_edited'] = '파일이 성공적으로 변경되었습니다!'; -$phpMussel['lang']['response_file_renamed'] = '파일 이름이 변경되었습니다!'; -$phpMussel['lang']['response_file_restored'] = '파일이 성공적으로 복원되었습니다!'; -$phpMussel['lang']['response_file_uploaded'] = '파일이 성공적으로 업로드되었습니다!'; -$phpMussel['lang']['response_login_invalid_password'] = '로그인 실패! 잘못된 암호!'; -$phpMussel['lang']['response_login_invalid_username'] = '로그인 실패! 사용자 이름은 존재하지 않습니다!'; -$phpMussel['lang']['response_login_password_field_empty'] = '암호가 비어 있습니다!'; -$phpMussel['lang']['response_login_username_field_empty'] = '사용자 이름 입력이 비어 있습니다!'; -$phpMussel['lang']['response_rename_error'] = '이름을 변경할 수 없습니다!'; -$phpMussel['lang']['response_restore_error_1'] = '복원하지 못했습니다! 손상된 파일!'; -$phpMussel['lang']['response_restore_error_2'] = '복원하지 못했습니다! 잘못된 격리 키!'; -$phpMussel['lang']['response_statistics_cleared'] = '통계가 삭제되었습니다.'; -$phpMussel['lang']['response_updates_already_up_to_date'] = '이미 최신 상태입니다.'; -$phpMussel['lang']['response_updates_not_installed'] = '구성 요소 설치되어 있지 않습니다!'; -$phpMussel['lang']['response_updates_not_installed_php'] = '구성 요소 설치되어 있지 않습니다 (PHP {V}가 필요합니다)!'; -$phpMussel['lang']['response_updates_outdated'] = '구식입니다!'; -$phpMussel['lang']['response_updates_outdated_manually'] = '구식입니다 (수동으로 업데이트하십시오)!'; -$phpMussel['lang']['response_updates_outdated_php_version'] = '구식입니다 (PHP {V}가 필요합니다)!'; -$phpMussel['lang']['response_updates_unable_to_determine'] = '결정 수 없습니다.'; -$phpMussel['lang']['response_upload_error'] = '업로드에 실패했습니다!'; -$phpMussel['lang']['state_complete_access'] = '전체 액세스'; -$phpMussel['lang']['state_component_is_active'] = '구성 요소가 활성화됩니다.'; -$phpMussel['lang']['state_component_is_inactive'] = '구성 요소가 비활성 상태입니다.'; -$phpMussel['lang']['state_component_is_provisional'] = '구성 요소가 잠정입니다.'; -$phpMussel['lang']['state_default_password'] = '경고 : 기본 암호를 사용하여!'; -$phpMussel['lang']['state_logged_in'] = '로그인 있습니다.'; -$phpMussel['lang']['state_logs_access_only'] = '로그에만 액세스'; -$phpMussel['lang']['state_maintenance_mode'] = '경고 : 유지 관리 모드가 활성화되었습니다!'; -$phpMussel['lang']['state_password_not_valid'] = '경고 : 이 계정은 올바른 암호를 사용하지 않습니다!'; -$phpMussel['lang']['state_quarantine'] = '현재 %s 개의 파일이 격리 보관소에 있습니다.'; -$phpMussel['lang']['switch-hide-non-outdated-set-false'] = '비 구형을 숨기지 않고'; -$phpMussel['lang']['switch-hide-non-outdated-set-true'] = '비 구식 숨기기'; -$phpMussel['lang']['switch-hide-unused-set-false'] = '미사용을 숨기지 않고'; -$phpMussel['lang']['switch-hide-unused-set-true'] = '미사용 숨기기'; -$phpMussel['lang']['tip_accounts'] = '안녕하세요, {username}.
        계정 페이지는 phpMussel 프론트 엔드에 액세스 할 수있는 사용자를 제어 할 수 있습니다.'; -$phpMussel['lang']['tip_config'] = '안녕하세요, {username}.
        구성 페이지는 프론트 엔드에서 phpMussel의 설정을 변경할 수 있습니다.'; -$phpMussel['lang']['tip_donate'] = 'phpMussel는 무료로 제공되고 있습니다, 하지만 당신이 원한다면 기부 버튼을 클릭하면 프로젝트에 기부 할 수 있습니다.'; -$phpMussel['lang']['tip_file_manager'] = '안녕하세요, {username}.
        파일 관리자를 사용하여 파일을 삭제, 편집, 업로드, 다운로드 할 수 있습니다. 신중하게 사용하는 (이것을 사용하여 설치를 끊을 수 있습니다).'; -$phpMussel['lang']['tip_home'] = '안녕하세요, {username}.
        이것은 phpMussel 프론트 엔드의 홈페이지입니다. 계속하려면 왼쪽 탐색 메뉴에서 링크를 선택합니다.'; -$phpMussel['lang']['tip_login'] = '기본 사용자 이름 : admin – 기본 암호 : password'; -$phpMussel['lang']['tip_logs'] = '안녕하세요, {username}.
        로그의 내용을 보려면 다음 목록에서 로그를 선택합니다.'; -$phpMussel['lang']['tip_quarantine'] = '안녕하세요, {username}.
        관리를 용이하게하기 위해, 현재 격리 저장소에있는 모든 파일이이 페이지에 나열됩니다.'; -$phpMussel['lang']['tip_quarantine_disabled'] = '노트 : 격리는 현재 비활성화되어 있지만 구성 페이지를 통해 활성화 할 수 있습니다.'; -$phpMussel['lang']['tip_see_the_documentation'] = '설정 지시어에 대한 자세한 내용은 문서를 참조하십시오.'; -$phpMussel['lang']['tip_statistics'] = '안녕하세요, {username}.
        이 페이지는 phpMussel 설치와 관련된 몇 가지 기본 사용 통계를 보여줍니다.'; -$phpMussel['lang']['tip_statistics_disabled'] = '노트 : 통계 추적은 현재 비활성화되어, 있지만 구성 페이지를 통해 활성화 할 수 있습니다.'; -$phpMussel['lang']['tip_updates'] = '안녕하세요, {username}.
        업데이트 페이지는 phpMussel의 다양한 구성 요소를 설치·제거·업데이트 할 수 있습니다 (코어 패키지·서명·L10N 파일 등).'; -$phpMussel['lang']['tip_upload_test'] = '안녕하세요, {username}.
        업로드 테스트 페이지 표준 파일 업로드 양식을 포함합니다 파일이 일반적 차단 여부를 테스트 할 수 있습니다.'; -$phpMussel['lang']['title_accounts'] = 'phpMussel – 계정'; -$phpMussel['lang']['title_config'] = 'phpMussel – 구성'; -$phpMussel['lang']['title_file_manager'] = 'phpMussel – 파일 관리자'; -$phpMussel['lang']['title_home'] = 'phpMussel – 홈'; -$phpMussel['lang']['title_login'] = 'phpMussel – 로그인'; -$phpMussel['lang']['title_logs'] = 'phpMussel – 로고스'; -$phpMussel['lang']['title_quarantine'] = 'phpMussel – 격리'; -$phpMussel['lang']['title_statistics'] = 'phpMussel – 통계'; -$phpMussel['lang']['title_updates'] = 'phpMussel – 업데이트'; -$phpMussel['lang']['title_upload_test'] = 'phpMussel – 업로드 테스트'; -$phpMussel['lang']['warning'] = '경고 :'; -$phpMussel['lang']['warning_php_1'] = '귀하의 PHP 버전은 더 이상 적극적으로 지원되지 않습니다! 업데이트하는 것이 좋습니다!'; -$phpMussel['lang']['warning_php_2'] = '귀하의 PHP 버전이 심각하게 취약합니다! 업데이트하는 것이 좋습니다!'; -$phpMussel['lang']['warning_signatures_1'] = '서명 파일이 활성화되어 있지 않습니다!'; - -$phpMussel['lang']['info_some_useful_links'] = '유용한 링크 :
          -
        • phpMussel 문제 @ GitHub – phpMussel 문제 페이지 (지원, 원조 등).
        • -
        • phpMussel @ Spambot Security – phpMussel 토론 포럼 (지원, 원조 등).
        • -
        • phpMussel @ SourceForge – phpMussel 대체 다운로드 거울.
        • -
        • WebSecTools.com – 웹 사이트를 보호하기 위해 간단한 웹 마스터 도구 모음.
        • -
        • ClamavNet – ClamAV 홈페이지 (ClamAV®는 트로이 목마, 바이러스, 악성 코드, 그리고 기타 위협을 탐지하기위한 오픈 소스 안티 바이러스 엔진입니다).
        • -
        • SecuriteInfo.com – ClamAV의 추가적인 서명을 제공하는 컴퓨터 보안 회사.
        • -
        • PhishTank – phpMussel URL 스캐너에 이용되는 피싱 데이터베이스.
        • -
        • Global PHP Group @ Facebook – PHP 학습 자원과 토론.
        • -
        • PHP.earth – PHP 학습 자원과 토론.
        • -
        • VirusTotal – VirusTotal은 의심스러운 파일이나 URL을 분석하는 무료 서비스입니다.
        • -
        • Hybrid Analysis – Hybrid Analysis는 Payload Security가 제공하는 무료 악성 코드 분석 서비스.
        • -
        • Malwarebytes – 컴퓨터의 맬웨어 방지 전문가.
        • -
        • MalwareTips – 편리한 맬웨어 방지 토론 포럼.
        • -
        • 취약점 차트 – 다양한 패키지의 안전하고 안전하지 않은 버전을 나열합니다 (PHP, HHVM, 기타).
        • -
        • 호환성 차트 – 다양한 패키지에 대한 호환성 정보를 나열합니다 (CIDRAM, phpMussel, 기타).
        • -
        '; diff --git a/libraries/plugins/phpMussel/vault/lang/lang.ko.php b/libraries/plugins/phpMussel/vault/lang/lang.ko.php deleted file mode 100644 index b2b9fee..0000000 --- a/libraries/plugins/phpMussel/vault/lang/lang.ko.php +++ /dev/null @@ -1,127 +0,0 @@ -Startpagina | Uitloggen'; -$phpMussel['lang']['bNav_logout'] = 'Uitloggen'; -$phpMussel['lang']['config_attack_specific_archive_file_extensions'] = 'Herkende archief bestandsextensies (formaat is CSV; moet alleen toevoegen of verwijderen wanneer problemen voorkomen; onnodig verwijderen kan leiden tot vals-positieven te verschijnen voor archiefbestanden, terwijl onnodig toevoeging zal effectief whitelist wat u toevoegt van aanval-specifieke detectie; wijzigen met voorzichtigheid; ook noteren dat Dit heeft geen effect op welke archieven kan en niet kan wordt geanalyseerd op inhoudsniveau). De lijst, als is bij standaard, geeft die formaten gebruikt meest vaak door de meeste systemen en CMS, maar opzettelijk is niet noodzakelijk alomvattend.'; -$phpMussel['lang']['config_attack_specific_block_control_characters'] = 'Blokkeren alle bestanden bevatten controle karakters (andere dan nieuwe regels)? ([\x00-\x08\x0b\x0c\x0e\x1f\x7f]) Als u ALLEEN uploaden platte tekst, dan u kan inschakelen dit optie te bieden extra bescherming aan uw systeem. Hoewel, als u uploaden iets anders dan platte tekst, inschakelen dit kan leiden tot valse positieven. False = Niet blokkeren [Standaard]; True = Doen blokkeren.'; -$phpMussel['lang']['config_attack_specific_chameleon_from_exe'] = 'Zoeken naar PHP header in bestanden die niet zijn executables noch herkende archieven en naar executables waarvan de headers zijn onjuist. False = Uitgeschakeld; True = Ingeschakeld.'; -$phpMussel['lang']['config_attack_specific_chameleon_from_php'] = 'Zoeken naar PHP header in bestanden die niet zijn PHP-bestanden noch herkende archieven. False = Uitgeschakeld; True = Ingeschakeld.'; -$phpMussel['lang']['config_attack_specific_chameleon_to_archive'] = 'Zoeken naar archieven waarvan headers zijn onjuist (Ondersteunde: BZ, GZ, RAR, ZIP, RAR, GZ). False = Uitgeschakeld; True = Ingeschakeld.'; -$phpMussel['lang']['config_attack_specific_chameleon_to_doc'] = 'Zoeken naar office documenten waarvan headers zijn onjuist (Ondersteunde: DOC, DOT, PPS, PPT, XLA, XLS, WIZ). False = Uitgeschakeld; True = Ingeschakeld.'; -$phpMussel['lang']['config_attack_specific_chameleon_to_img'] = 'Zoeken naar beelden waarvan headers zijn onjuist (Ondersteunde: BMP, DIB, PNG, GIF, JPEG, JPG, XCF, PSD, PDD, WEBP). False = Uitgeschakeld; True = Ingeschakeld.'; -$phpMussel['lang']['config_attack_specific_chameleon_to_pdf'] = 'Zoeken naar PDF-bestanden waarvan headers zijn onjuist. False = Uitgeschakeld; True = Ingeschakeld.'; -$phpMussel['lang']['config_attack_specific_corrupted_exe'] = 'Corrupte bestanden en verwerking fouten. False = Negeren; True = Blokkeren [Standaard]. Detecteren en blokkeren mogelijk beschadigd PE (Portable Executable) bestanden? Vaak (maar niet altijd), wanneer bepaalde aspecten van een PE-bestand zijn beschadigd of kan niet correct worden verwerkt, het kan wijzen op een virale infectie. De processen gebruikt door de meeste anti-virus programma\'s om virussen in PE-bestanden te detecteren vereisen de verwerking van die bestanden op bepaalde manieren, dat, als de programmeur van een virus kent, specifiek zal proberen te verhinderen, zodat haar virus onopgemerkt blijven.'; -$phpMussel['lang']['config_attack_specific_decode_threshold'] = 'Drempelwaarde de lengte van onverwerkte gegevens waarbinnen decoderen commando\'s moeten gedetecteerd worden (in het geval er enige merkbare prestatieproblemen terwijl scannen). Standaard = 512KB. Zero of nulwaarde zal uitschakelen het drempelwaarde (het verwijderen van een dergelijke limiet gebaseerd op bestandsgrootte).'; -$phpMussel['lang']['config_attack_specific_scannable_threshold'] = 'Drempelwaarde de lengte van onverwerkte gegevens dat phpMussel is toegestaan te lezen en scan (in het geval er enige merkbare prestatieproblemen terwijl scannen). Standaard = 32MB. Zero of nulwaarde zal uitschakelen het drempelwaarde. Algemeen, dit waarde moeten niet zijn lagere dan de gemiddelde bestandsgrootte van het bestandsuploads dat u wilt en verwacht te ontvangen aan uw server of website, moeten niet zijn meer dan de filesize_limit richtlijn, en moeten niet zijn meet dan ongeveer een vijfde van de totale toegestane geheugentoewijzing toegekend aan PHP via de "php.ini" configuratiebestand. Dit richtlijn bestaat te proberen om phpMussel te verhinderen van het gebruik van teveel geheugen (dat zou verhinderen het van de mogelijkheid te scannen bestanden met succes boven een bepaalde bestandsgrootte).'; -$phpMussel['lang']['config_compatibility_ignore_upload_errors'] = 'Dit richtlijn moet in het algemeen worden uitgeschakeld tenzij het is vereist voor de juiste functionaliteit van phpMussel op uw specifieke systeem. Normaal, wanneer uitgeschakeld, wanneer phpMussel detecteert de aanwezigheid van elementen van de $_FILES array(), het zal proberen initiëren een scan van het bestanden deze elementen vertegenwoordigen, en, als deze elementen zijn leeg, phpMussel zal terugkeren een foutmelding. Dit is het juiste gedrag voor phpMussel. Dat gezegd hebbende, voor sommige CMS, lege elementen in $_FILES kan optreden als gevolg van het natuurlijke gedrag van deze CMS, of fouten zouden zijn gerapporteerd wanneer er geen, in welk geval, het normale gedrag voor phpMussel zullen bemoeien met het normale gedrag van deze CMS. Als dergelijke een situatie optreedt voor u, inschakelen dit optie zal instrueren phpMussel niet te proberen te initiëren scannen voor dergelijke lege elementen, negeer hem wanneer gevonden en niet terugkeren gerelateerde foutmeldingen, dus toelaten de voortzetting van de pagina-aanvraag. False = UITGESCHAKELD; True = INGESCHAKELD.'; -$phpMussel['lang']['config_compatibility_only_allow_images'] = 'Als u alleen verwachten of alleen bedoelen toestaan beelden worden geüpload om uw systeem of CMS, en als u absoluut nodig geen bestanden behalve afbeeldingen te wordt geüpload om uw systeem of CMS, dit richtlijn moet worden ingeschakeld, maar moet anderszins worden uitgeschakeld. Als dit richtlijn is ingeschakeld, het zal instrueren phpMussel zonder onderscheid te blokkeren elke upload geïdentificeerd als niet-beeldbestanden, zonder te scannen. Dit kan verminderen verwerkingstijd en geheugengebruik voor het geprobeerd uploaden van niet-beeldbestanden. False = UITGESCHAKELD; True = INGESCHAKELD.'; -$phpMussel['lang']['config_files_block_encrypted_archives'] = 'Detecteren en blokkeren gecodeerde archieven? Omdat phpMussel is niet in staat te scannen de inhoud van gecodeerde archieven, het is mogelijk dat archief encryptie kan worden toegepast door een aanvaller als middel van probeert te omzeilen phpMussel, anti-virus scanners en andere dergelijke beveiligingen. Instrueren phpMussel te blokkeren elke archieven dat het ontdekt worden gecodeerde zou kunnen helpen het risico in verband met deze dergelijke mogelijkheden te verminderen. False = Nee; True = Ja [Standaard].'; -$phpMussel['lang']['config_files_check_archives'] = 'Om de inhoud van archieven proberen te controleer? False = Nee (niet doen controleer); True = Ja (doen controleer) [Standaard]. Momenteel, het enige archief en compressie-formaten ondersteund zijn BZ/BZIP2, GZ/GZIP, LZF, PHAR, TAR en ZIP (archief en compressie-formaten RAR, CAB, 7z en etcetera momenteel niet ondersteund). Dit is niet onfeilbaar! Hoewel ik beveel het houden van dit ingeschakeld, ik kan niet garanderen dat het zal altijd vind alles. Ook noteren dat archief controleren momenteel is niet recursief voor PHAR of ZIP formaten.'; -$phpMussel['lang']['config_files_filesize_archives'] = 'Erven het bestandsgrootte blacklist/whitelist staat om de inhoud van archieven? False = Nee (gewoon greylist alles); True = Ja [Standaard].'; -$phpMussel['lang']['config_files_filesize_limit'] = 'Bestandsgrootte limiet in KB. 65536 = 64MB [Standaard]; 0 = Geen limiet (altijd op de greylist), ieder (positief) numerieke waarde aanvaard. Dit kunt handig zijn als uw PHP configuratie beperkt de hoeveelheid van geheugen een proces kunt houden of als u PHP configuratie beperkt het bestandsgrootte van uploads.'; -$phpMussel['lang']['config_files_filesize_response'] = 'Wat te doen met bestanden dat overschrijden het bestandsgrootte limiet (als aanwezig). False = Whitelist; True = Blacklist [Standaard].'; -$phpMussel['lang']['config_files_filetype_archives'] = 'Erven het bestandstype blacklist/whitelist staat om de inhoud van archieven? False = Nee (gewoon greylist alles); True = Ja [Standaard].'; -$phpMussel['lang']['config_files_filetype_blacklist'] = 'Blacklist:'; -$phpMussel['lang']['config_files_filetype_greylist'] = 'Greylist:'; -$phpMussel['lang']['config_files_filetype_whitelist'] = 'Als uw systeem vergunningen alleen specifieke bestandstypen te uploaden, of als uw systeem expliciet ontkent bepaalde bestandstypen, specificeren deze bestandstypen in whitelists, blacklists en greylists kunt toenemen de snelheid waarin scannen is uitgevoerd via vergunningen het script te negeren bepaalde bestandstypen. Formaat is CSV (komma\'s gescheiden waarden). Als u wilt te scannen alles, eerder dan whitelist, blacklist of greylist, laat de variabele(/n) leeg; doen zo zal uitschakelen whitelist/blacklist/greylist. Logische volgorde van de verwerking is: Als het bestandstype is op de whitelist, niet scannen en niet blokkeren het bestand, en niet controleer het bestand tegen de blacklist of de greylist. Als het bestandstype is op de blacklist, niet scannen het bestand maar blokkeren het niettemin, en niet controleer het bestand tegen de greylist. Als de greylist is leeg of als de greylist is niet leeg en het bestandstype is op de greylist, scannen het bestand als per normaal en bepalen als om het gebaseerd op de resultaten van de scan te blokkeren, maar als de greylist is niet leeg en het bestandstype is niet op de greylist, behandel het bestand alsof op de blacklist, dus om het niet te scannen, maar toch blokkeren het niettemin. Whitelist:'; -$phpMussel['lang']['config_files_max_recursion'] = 'Maximale recursiediepte limiet voor archieven. Standaard = 10.'; -$phpMussel['lang']['config_files_max_uploads'] = 'Maximaal toegestane aantal bestanden te scannen tijdens bestandsupload scan voordat aborteren de scan en informeren de gebruiker ze zijn uploaden van te veel in een keer! Biedt bescherming tegen een theoretische aanval waardoor een aanvaller probeert te DDoS uw systeem of CMS door overbelasting phpMussel te vertragen het PHP proces tot stilstand. Aanbevolen: 10. U zou kunnen wil te verhogen of verlagen dit nummer afhankelijk van de snelheid van uw hardware. Noteren dat dit aantal niet verklaren voor of opnemen de inhoud van de archieven.'; -$phpMussel['lang']['config_general_cleanup'] = 'Vrijmaken script variabelen en de cache na de uitvoering? False = Nee; True = Ja [Standaard]. Als u niet gebruik het script na de eerste scan van upload, moet zetten op true (ja), om minimaliseren de geheugengebruik. Als u gebruik het script voor de doeleinden na de eerste scan van upload, moet zetten op false (nee), om te voorkomen dat onnodig herladen dubbele gegevens in het geheugen. In de huisartspraktijk, moet waarschijnlijk worden zetten op true (ja), maar, als u dit doet, het zal niet mogelijk zijn om het script te gebruiken voor iets anders dan het scannen van bestand uploaden. Heeft geen invloed in CLI-modus.'; -$phpMussel['lang']['config_general_default_algo'] = 'Definieert welk algoritme u wilt gebruiken voor alle toekomstige wachtwoorden en sessies. Opties: PASSWORD_DEFAULT (standaard), PASSWORD_BCRYPT, PASSWORD_ARGON2I (vereist PHP >= 7.2.0).'; -$phpMussel['lang']['config_general_delete_on_sight'] = 'Het inschakelen van dit richtlijn zal instrueren het script om elke gescande geprobeerd bestand upload dat gecontroleerd tegen elke detectie criteria te proberen onmiddellijk verwijderen, via signatures of anderszins. Bestanden vastbesloten te zijn schoon zal niet worden aangeraakt. In het geval van archieven, het hele archief wordt verwijderd, ongeacht of niet het overtredende bestand is slechts één van meerdere bestanden vervat in het archief. Voor het geval van bestand upload scannen, doorgaans, het is niet nodig om dit richtlijn te inschakelen, omdat doorgaans, PHP zal automatisch zuiveren de inhoud van zijn cache wanneer de uitvoering is voltooid, wat betekent dat het doorgans zal verwijdert ieder bestanden geüpload doorheen aan de server tenzij ze zijn verhuisd, gekopieerd of verwijderd alreeds. Dit richtlijn is toegevoegd hier als een extra maatregel van veiligheid voor degenen wier kopies van PHP misschien niet altijd gedragen op de manier verwacht. False = Na het scannen, met rust laten het bestand [Standaard]; True = Na het scannen, als niet schoon, onmiddellijk verwijderen.'; -$phpMussel['lang']['config_general_disable_cli'] = 'Uitschakelen CLI-modus? CLI-modus is standaard ingeschakeld, maar kunt somtijds interfereren met bepaalde testtools (zoals PHPUnit bijvoorbeeld) en andere CLI-gebaseerde applicaties. Als u niet hoeft te uitschakelen CLI-modus, u moeten om dit richtlijn te negeren. False = Inschakelen CLI-modus [Standaard]; True = Uitschakelen CLI-modus.'; -$phpMussel['lang']['config_general_disable_frontend'] = 'Uitschakelen frontend toegang? frontend toegang kan phpMussel beter beheersbaar te maken, maar kan ook een potentieel gevaar voor de veiligheid zijn. Het is aan te raden om phpMussel te beheren via het backend wanneer mogelijk, maar frontend toegang is hier voorzien voor wanneer het niet mogelijk is. Hebben het uitgeschakeld tenzij u het nodig hebt. False = Inschakelen frontend toegang; True = Uitschakelen frontend toegang [Standaard].'; -$phpMussel['lang']['config_general_disable_webfonts'] = 'Uitschakelen webfonts? True = Ja; False = Nee [Standaard].'; -$phpMussel['lang']['config_general_enable_plugins'] = 'Activeer ondersteuning voor phpMussel plugins? False = Nee; True = Ja [Standaard].'; -$phpMussel['lang']['config_general_forbid_on_block'] = 'Moet phpMussel reageren met 403 headers met het bestanden upload geblokkeerd bericht, of blijven met de gebruikelijke 200 OK? False = Nee (200); True = Ja (403) [Standaard].'; -$phpMussel['lang']['config_general_FrontEndLog'] = 'Bestand om de frontend login pogingen te loggen. Geef een bestandsnaam, of laat leeg om uit te schakelen.'; -$phpMussel['lang']['config_general_honeypot_mode'] = 'Wanneer honeypot-modus is ingeschakeld, phpMussel zal proberen om ieder bestandsupload dat het tegenkomt in quarantaine plaatsen, ongeacht of niet het bestand wordt geüpload is gecontroleerd tegen een meegeleverde signatures, en geen daadwerkelijke scannen of analyse van deze gevlagd geprobeerd bestandsuploads zal daadwerkelijk optreedt. Dit functionaliteit moet nuttig zijn voor degenen dat willen gebruik phpMussel voor de toepassing van virus/malware onderzoek, maar het is niet aanbevolen om dit functionaliteit te inschakelen wanneer het beoogde gebruik van phpMussel door de gebruiker is voor werkelijke bestandsupload scannen, noch aanbevolen te gebruik de honeypot functionaliteit voor andere doeleinden andere dan honeypotting. Als standaard, dit optie is uitgeschakeld. False = Uitgeschakeld [Standaard]; True = Ingeschakeld.'; -$phpMussel['lang']['config_general_ipaddr'] = 'Waar het IP-adres van het aansluiten verzoek te vinden? (Handig voor diensten zoals Cloudflare en dergelijke) Standaard = REMOTE_ADDR. WAARSCHUWING: Verander dit niet tenzij u weet wat u doet!'; -$phpMussel['lang']['config_general_lang'] = 'Geef de standaardtaal voor phpMussel.'; -$phpMussel['lang']['config_general_maintenance_mode'] = 'Inschakelen de onderhoudsmodus? True = Ja; False = Nee [Standaard]. Schakelt alles anders dan het frontend uit. Soms nuttig bij het bijwerken van uw CMS, frameworks, enz.'; -$phpMussel['lang']['config_general_max_login_attempts'] = 'Maximum aantal inlogpogingen (frontend). Standaard = 5.'; -$phpMussel['lang']['config_general_numbers'] = 'Hoe verkiest u nummers die worden weergegeven? Selecteer het voorbeeld dat het meest correct voor u lijkt.'; -$phpMussel['lang']['config_general_quarantine_key'] = 'phpMussel is in staat om gevlagd geprobeerd bestandsuploads te quarantaine in isolatie binnen de phpMussel vault, als dit is iets wat u wilt doen. Regelmatige gebruikers van phpMussel dat gewoon willen om hun websites of hosting-omgeving te beschermen zonder enige interesse in diep analyseren van gevlagd geprobeerd bestandsuploads moet dit functionaliteit hebben uitgeschakeld, maar elke gebruikers geïnteresseerd in de verdere analyse van gevlagd geprobeerd bestandsuploads voor malware onderzoek of voor soortgelijke zaken moeten inschakelen dit functionaliteit. Quarantaine van gevlagd geprobeerd bestandsuploads kunt ook somtijds helpen bij het opsporen van vals-positieven, als dit is iets dat vaak voorkomt voor u. Voor de uitschakelen van quarantaine functionaliteit, gewoon laat de quarantine_key richtlijn leeg, of wissen de inhoud van de richtlijn als het niet leeg alreeds. Voor de inschakelen van quarantaine functionaliteit, invoeren soms waarde in de richtlijn. De quarantine_key is een belangrijke beveiliging kenmerk van de quarantaine functionaliteit vereist als middel om de functionaliteit quarantaine te verhinderen exploitatie door potentiële aanvallers en als middel om verhinderen van elke mogelijke gegevens uitvoering van gegevens opgeslagen in de quarantaine. De quarantine_key moeten op dezelfde manier als uw wachtwoorden worden behandeld: De langer de beter, en bewaken het goed. Voor het beste gevolg, gebruik in combinatie met delete_on_sight.'; -$phpMussel['lang']['config_general_quarantine_max_filesize'] = 'De maximaal toegestane bestandsgrootte van bestanden te worden in quarantaine plaatsen. Bestanden groter dan de opgegeven waarde zal NIET in quarantaine plaatsen. Dit richtlijn is belangrijk als een middel van maak het moeilijker voor potentiële aanvallers te overspoelen uw quarantaine met ongewenste gegevens potentieel veroorzaakt weggelopen gebruiksgegevens op uw hosting service. Standaard = 2MB.'; -$phpMussel['lang']['config_general_quarantine_max_usage'] = 'De maximale geheugengebruik toegestaan voor de quarantaine. Als de totale geheugengebruik van de quarantaine bereikt dit waarde, de oudste bestanden in quarantaine zullen worden verwijderd totdat het totale geheugengebruik niet meer bereikt dit waarde. Dit richtlijn is belangrijk als een middel van maak het moeilijker voor potentiële aanvallers te overspoelen uw quarantaine met ongewenste gegevens potentieel veroorzaakt weggelopen gebruiksgegevens op uw hosting service. Standaard = 64MB.'; -$phpMussel['lang']['config_general_scan_cache_expiry'] = 'Hoe lang moeten phpMussel cache de resultaten van de scan? Waarde is het aantal seconden dat de resultaten van het scannen moet wordt gecached voor. Standaard is 21600 seconden (6 uur); Een waarde van 0 zal uitschakelen caching de resultaten van de scan.'; -$phpMussel['lang']['config_general_scan_kills'] = 'Bestandsnaam van het bestand te opnemen alle geblokkeerde of gedood upload. Geef een bestandsnaam of laat leeg om te uitschakelen.'; -$phpMussel['lang']['config_general_scan_log'] = 'Bestandsnaam van het bestand te opnemen alle scanresultaten. Geef een bestandsnaam of laat leeg om te uitschakelen.'; -$phpMussel['lang']['config_general_scan_log_serialized'] = 'Bestandsnaam van het bestand te opnemen alle scanresultaten (formaat is geserialiseerd). Geef een bestandsnaam of laat leeg om te uitschakelen.'; -$phpMussel['lang']['config_general_statistics'] = 'Track phpMussel gebruiksstatistieken? True = Ja; False = Nee [Standaard].'; -$phpMussel['lang']['config_general_timeFormat'] = 'De datum notatie gebruikt door phpMussel. Extra opties kunnen worden toegevoegd op aanvraag.'; -$phpMussel['lang']['config_general_timeOffset'] = 'Tijdzone offset in minuten.'; -$phpMussel['lang']['config_general_timezone'] = 'Uw tijdzone.'; -$phpMussel['lang']['config_general_truncate'] = 'Trunceren logbestanden wanneer ze een bepaalde grootte bereiken? Waarde is de maximale grootte in B/KB/MB/GB/TB dat een logbestand kan groeien tot voordat het wordt getrunceerd. De standaardwaarde van 0KB schakelt truncatie uit (logbestanden kunnen onbepaald groeien). Notitie: Van toepassing op individuele logbestanden! De grootte van de logbestanden wordt niet collectief beschouwd.'; -$phpMussel['lang']['config_heuristic_threshold'] = 'Er zijn bepaalde signatures van phpMussel dat zijn bedoeld om verdachte en potentieel kwaadaardige kwaliteiten te identificeren van bestanden wordt geüpload zonder zichzelf om bestanden wordt geüpload te identificeren specifiek als kwaadaardige. Dit "threshold" waarde vertelt phpMussel het maximaal totaalgewicht van verdachte en potentieel kwaadaardige kwaliteiten van bestanden wordt geüpload dat is toelaatbaar voordat deze bestanden worden gemarkeerd als kwaadaardig. De definitie van gewicht in dit verband is het aantal van verdachte en potentieel kwaadaardige kwaliteiten dat zijn geïdentificeerd. Standaard, dit waarde wordt ingesteld op 3. Algemeen, een lagere waarde zal resulteren in meer valse positieven maar meer kwaadaardige bestanden wordt gemarkeerd, terwijl een hogere waarde zal resulteren in minder valse positieven maar minder kwaadaardige bestanden wordt gemarkeerd. Algemeen, het is beste om dit waarde te laten op zijn standaard, tenzij u problemen ondervindt met betrekking tot het.'; -$phpMussel['lang']['config_signatures_Active'] = 'Een lijst van de actief signature-bestanden, gescheiden door komma\'s.'; -$phpMussel['lang']['config_signatures_detect_adware'] = 'Moet phpMussel verwerken signatures voor het detecteren van adware? False = Nee; True = Ja [Standaard].'; -$phpMussel['lang']['config_signatures_detect_deface'] = 'Moet phpMussel verwerken signatures voor het detecteren van schendingen/defacements en schenders/defacers? False = Nee; True = Ja [Standaard].'; -$phpMussel['lang']['config_signatures_detect_encryption'] = 'Moet phpMussel gecodeerde bestanden detecteren en blokkeren? False = Nee; True = Ja [Standaard].'; -$phpMussel['lang']['config_signatures_detect_joke_hoax'] = 'Moet phpMussel verwerken signatures voor het detecteren van grap/beetnemerij malware/virussen? False = Nee; True = Ja [Standaard].'; -$phpMussel['lang']['config_signatures_detect_packer_packed'] = 'Moet phpMussel verwerken signatures voor het detecteren van verpakkers en verpakt gegevens? False = Nee; True = Ja [Standaard].'; -$phpMussel['lang']['config_signatures_detect_pua_pup'] = 'Moet phpMussel verwerken signatures voor het detecteren van PUAs/PUPs? False = Nee; True = Ja [Standaard].'; -$phpMussel['lang']['config_signatures_detect_shell'] = 'Moet phpMussel verwerken signatures voor het detecteren van shell scripts? False = Nee; True = Ja [Standaard].'; -$phpMussel['lang']['config_signatures_fail_extensions_silently'] = 'Moet phpMussel rapporteren wanneer extensies zijn ontbreken? Als fail_extensions_silently is uitgeschakeld, ontbrekende extensies zal worden gerapporteerd op het scannen, en als fail_extensions_silently is ingeschakeld, ontbrekende extensies zal zijn genegeerd, met het scannen rapporten voor het bestanden die er geen problemen. Het uitschakelen van dit richtlijn kunt mogelijk verhogen van uw veiligheid, maar kunt ook leiden tot een toename van valse positieven. False = Uitgeschakeld; True = Ingeschakeld [Standaard].'; -$phpMussel['lang']['config_signatures_fail_silently'] = 'Moet phpMussel rapporteren wanneer signatures bestanden zijn ontbrekend of beschadigd? Als fail_silently is uitgeschakeld, ontbrekende en beschadigde bestanden zal worden gerapporteerd op het scannen, en als fail_silently is ingeschakeld, ontbrekende en beschadigde bestanden zal zijn genegeerd, met het scannen rapporten voor het bestanden die er geen problemen. Dit moet in het algemeen met rust gelaten worden tenzij u ervaart mislukt of soortgelijke problemen. False = Uitgeschakeld; True = Ingeschakeld [Standaard].'; -$phpMussel['lang']['config_template_data_css_url'] = 'De sjabloonbestand voor aangepaste thema\'s maakt gebruik van externe CSS-eigenschappen, terwijl de sjabloonbestand voor het standaardthema maakt gebruik van interne CSS-eigenschappen. Om phpMussel instrueren om de sjabloonbestand voor aangepaste thema\'s te gebruiken, geef het openbare HTTP-adres van uw aangepaste thema\'s CSS-bestanden via de css_url variabele. Als u dit variabele leeg laat, phpMussel zal de sjabloonbestand voor de standaardthema te gebruiken.'; -$phpMussel['lang']['config_template_data_Magnification'] = 'Lettergrootte vergroting. Standaard = 1.'; -$phpMussel['lang']['config_template_data_theme'] = 'Standaard thema om te gebruiken voor phpMussel.'; -$phpMussel['lang']['config_urlscanner_cache_time'] = 'Hoe lang (in seconden) moeten de resultaten van de API verzoeken worden gecached voor? Standaard is 3600 seconden (1 uur).'; -$phpMussel['lang']['config_urlscanner_google_api_key'] = 'Inschakelt gebruik van de Google Safe Browsing API wanneer de noodzakelijke API sleutel wordt gedefinieerd.'; -$phpMussel['lang']['config_urlscanner_lookup_hphosts'] = 'Inschakelt gebruik van de hpHosts API wanneer zet op true.'; -$phpMussel['lang']['config_urlscanner_maximum_api_lookups'] = 'Maximaal toelaatbaar aantal van de API verzoeken te voeren per individuele scan iteratie. Omdat elke extra API verzoek zullen toevoegen aan de totale tijd die nodig te voltooien elke scan iteratie, u kunt wensen om een beperking te specificeren teneinde versnellen het algehele scanproces. Wanneer ingesteld op 0, geen dergelijk maximaal toelaatbaar aantal wordt toegepast. Ingesteld op 10 standaard.'; -$phpMussel['lang']['config_urlscanner_maximum_api_lookups_response'] = 'Wat te doen als het maximaal toelaatbaar aantal van API verzoeken wordt overschreden? False = Niets doen (voortzetten de verwerking) [Standaard]; True = Merken/blokkeren het bestand.'; -$phpMussel['lang']['config_virustotal_vt_public_api_key'] = 'Optioneel, met phpMussel, het is mogelijk om bestanden te scannen met behulp van de Virus Total API als een manier om een sterk verbeterde mate van bescherming te bieden tegen virussen, trojans, malware en andere bedreigingen. Standaard, scannen van bestanden met behulp van de Virus Total API is uitgeschakeld. Om het te inschakelen, een Virus Total API-sleutel is nodig. Vanwege de aanzienlijke voordeel dat dit zou kunnen om u te voorzien, het is iets dat ik sterk aanbevelen te inschakelen. Wees u ervan bewust, echter, dat voor gebruik op de Virus Total API, u MOET akkoord gaan hun Algemene Voorwaarden en u MOET voldoen aan alle richtlijnen per beschreven door de Virus Total documentatie! U bent NIET toegestaan om dit integratie functie te gebruiken TENZIJ: U heeft gelezen en u akkoord met de Algemene Voorwaarden van de Virus Total en zijn API. U heeft gelezen en u begrijpt, ten minste, de preambule van de Virus Total Public API-documentatie (alles na "VirusTotal Public API v2.0" maar vóór "Contents").'; -$phpMussel['lang']['config_virustotal_vt_quota_rate'] = 'Volgens de Virus Total API-documentatie, het is beperkt tot maximaal 4 verzoeken van welke aard in elk 1 minuut tijdsbestek. Als u een honeyclient, honeypot of andere automatisering te voorzien, dat gaat om middelen te verschaffen om VirusTotal en niet alleen rapporten opvragen heeft u recht op een hogere API-quotum. Normaal, phpMussel zal strikt houden aan deze beperkingen, maar vanwege de mogelijkheid van deze API-quotum verhoogd te worden, deze twee richtlijnen worden verstrekt als middel voor u om instrueren phpMussel wat limiet moeten houden worden. Tenzij u heeft geïnstrueerd om dit te doen, het is niet aan te raden voor u om deze waarden te verhogen, maar, als u heeft ondervonden problemen met betrekking tot uw tarief quota bereiken, afnemende deze waarden kunnen u soms helpen in het omgaan met deze problemen. Uw maximaal tarief bepaald als vt_quota_rate verzoeken van welke aard in elk vt_quota_time minuut tijdsbestek.'; -$phpMussel['lang']['config_virustotal_vt_quota_time'] = '(Zie bovenstaande beschrijving).'; -$phpMussel['lang']['config_virustotal_vt_suspicion_level'] = 'Normaal, phpMussel zal beperken welke bestanden scant met behulp van de Virus Total API om het bestanden die zijn beschouwd "achterdochtig". Optioneel, u kan dit beperking aan te passen door de waarde van het vt_suspicion_level richtlijn.'; -$phpMussel['lang']['config_virustotal_vt_weighting'] = 'Moeten phpMussel de resultaten van het scannen met behulp van de Virus Total API toe te passen als detecties of detectie weging? Dit richtlijn bestaat, omdat, hoewel het scannen van een bestand met behulp van meerdere motoren (als Virus Total doet) moet leiden tot een verhoogde aantal van detecties (en dus in een hoger aantal van kwaadaardige bestanden worden gedetecteerd), het kan ook resulteren in een hoger aantal van valse positieven, en daarom, in sommige gevallen, de resultaten van de scan kan beter worden benut als betrouwbaarheidsscore eerder dan als een definitieve conclusie. Als een waarde van 0 wordt gebruikt, de resultaten van het scannen met behulp van de Virus Total API zal worden toegepast als detecties, en zo, als een motor gebruikt door Virus Total vlaggen het bestand wordt gescand als kwaadaardige, phpMussel zal het bestand overwegen kwaadaardig te zijn. Als een andere waarde wordt gebruikt, de resultaten van het scannen met behulp van de Virus Total API zal worden toegepast als detectie weging, en zo, het aantal van motoren gebruikt door Virus Total dat vlag het bestand wordt gescand als kwaadaardige zal dienen als een betrouwbaarheidsscore (of detectie weging) voor of het bestand dat wordt gescand moet worden beschouwd als kwaadaardige door phpMussel (de waarde die wordt gebruikt zal vertegenwoordigen de minimale betrouwbaarheidsscore of weging vereist om kwaadaardige te worden beschouwd). Een waarde van 0 wordt standaard gebruikt.'; -$phpMussel['lang']['Extended Description: phpMussel'] = 'De primaire pakket (zonder de handtekeningen, documentatie en configuratie).'; -$phpMussel['lang']['field_activate'] = 'Activeren'; -$phpMussel['lang']['field_clear_all'] = 'Annuleer alles'; -$phpMussel['lang']['field_component'] = 'Component'; -$phpMussel['lang']['field_create_new_account'] = 'Nieuw Account Creëren'; -$phpMussel['lang']['field_deactivate'] = 'Deactiveren'; -$phpMussel['lang']['field_delete_account'] = 'Account Verwijderen'; -$phpMussel['lang']['field_delete_all'] = 'Verwijder alles'; -$phpMussel['lang']['field_delete_file'] = 'Verwijder'; -$phpMussel['lang']['field_download_file'] = 'Download'; -$phpMussel['lang']['field_edit_file'] = 'Bewerk'; -$phpMussel['lang']['field_false'] = 'False (Vals)'; -$phpMussel['lang']['field_file'] = 'Bestand'; -$phpMussel['lang']['field_filename'] = 'Bestandsnaam: '; -$phpMussel['lang']['field_filetype_directory'] = 'Bestandsmap'; -$phpMussel['lang']['field_filetype_info'] = '{EXT}-Bestand'; -$phpMussel['lang']['field_filetype_unknown'] = 'Onbekend'; -$phpMussel['lang']['field_install'] = 'Installeren'; -$phpMussel['lang']['field_latest_version'] = 'Laatste Versie'; -$phpMussel['lang']['field_log_in'] = 'Inloggen'; -$phpMussel['lang']['field_more_fields'] = 'Meer Velden'; -$phpMussel['lang']['field_new_name'] = 'Nieuwe naam:'; -$phpMussel['lang']['field_ok'] = 'OK'; -$phpMussel['lang']['field_options'] = 'Opties'; -$phpMussel['lang']['field_password'] = 'Wachtwoord'; -$phpMussel['lang']['field_permissions'] = 'Machtigingen'; -$phpMussel['lang']['field_quarantine_key'] = 'Quarantaine sleutel'; -$phpMussel['lang']['field_rename_file'] = 'Naam veranderen'; -$phpMussel['lang']['field_reset'] = 'Resetten'; -$phpMussel['lang']['field_restore_file'] = 'Herstellen'; -$phpMussel['lang']['field_set_new_password'] = 'Stel Nieuw Wachtwoord'; -$phpMussel['lang']['field_size'] = 'Totale Grootte: '; -$phpMussel['lang']['field_size_bytes'] = ['byte', 'bytes']; -$phpMussel['lang']['field_size_GB'] = 'GB'; -$phpMussel['lang']['field_size_KB'] = 'KB'; -$phpMussel['lang']['field_size_MB'] = 'MB'; -$phpMussel['lang']['field_size_TB'] = 'TB'; -$phpMussel['lang']['field_status'] = 'Toestand'; -$phpMussel['lang']['field_system_timezone'] = 'Gebruik de systeem standaard tijdzone.'; -$phpMussel['lang']['field_true'] = 'True (Waar)'; -$phpMussel['lang']['field_uninstall'] = 'Verwijderen'; -$phpMussel['lang']['field_update'] = 'Bijwerken'; -$phpMussel['lang']['field_update_all'] = 'Bijwerken alles'; -$phpMussel['lang']['field_upload_file'] = 'Nieuw bestand uploaden'; -$phpMussel['lang']['field_username'] = 'Gebruikersnaam'; -$phpMussel['lang']['field_your_version'] = 'Uw Versie'; -$phpMussel['lang']['header_login'] = 'Inloggen om verder te gaan.'; -$phpMussel['lang']['label_active_config_file'] = 'Actief configuratiebestand: '; -$phpMussel['lang']['label_blocked'] = 'Uploads geblokkeerd'; -$phpMussel['lang']['label_branch'] = 'Branch laatste stabiele:'; -$phpMussel['lang']['label_events'] = 'Scan gebeurtenissen'; -$phpMussel['lang']['label_flagged'] = 'Objecten gemarkeerd'; -$phpMussel['lang']['label_fmgr_cache_data'] = 'Cache data en tijdelijke bestanden'; -$phpMussel['lang']['label_fmgr_disk_usage'] = 'phpMussel-schijfgebruik: '; -$phpMussel['lang']['label_fmgr_free_space'] = 'Vrije schijfruimte: '; -$phpMussel['lang']['label_fmgr_total_disk_usage'] = 'Totaal schijfgebruik: '; -$phpMussel['lang']['label_fmgr_total_space'] = 'Totale schijfruimte: '; -$phpMussel['lang']['label_fmgr_updates_metadata'] = 'Component updates metadata'; -$phpMussel['lang']['label_hide'] = 'Verbergen'; -$phpMussel['lang']['label_os'] = 'Besturingssysteem gebruikt:'; -$phpMussel['lang']['label_other'] = 'Anders'; -$phpMussel['lang']['label_other-Active'] = 'Actieve signature bestanden'; -$phpMussel['lang']['label_other-Since'] = 'Begin datum'; -$phpMussel['lang']['label_php'] = 'PHP versie gebruikt:'; -$phpMussel['lang']['label_phpmussel'] = 'phpMussel versie gebruikt:'; -$phpMussel['lang']['label_quarantined'] = 'Uploads in quarantaine'; -$phpMussel['lang']['label_sapi'] = 'SAPI gebruikt:'; -$phpMussel['lang']['label_scanned_objects'] = 'Objecten gescand'; -$phpMussel['lang']['label_scanned_uploads'] = 'Uploads gescand'; -$phpMussel['lang']['label_show'] = 'Zien'; -$phpMussel['lang']['label_size_in_quarantine'] = 'Grootte in quarantaine: '; -$phpMussel['lang']['label_stable'] = 'Laatste stabiele:'; -$phpMussel['lang']['label_sysinfo'] = 'Systeem informatie:'; -$phpMussel['lang']['label_tests'] = 'Testen:'; -$phpMussel['lang']['label_unstable'] = 'Laatste onstabiele:'; -$phpMussel['lang']['label_upload_date'] = 'Upload datum: '; -$phpMussel['lang']['label_upload_hash'] = 'Upload hash: '; -$phpMussel['lang']['label_upload_origin'] = 'Upload oorsprong: '; -$phpMussel['lang']['label_upload_size'] = 'Upload grootte: '; -$phpMussel['lang']['link_accounts'] = 'Accounts'; -$phpMussel['lang']['link_config'] = 'Configuratie'; -$phpMussel['lang']['link_documentation'] = 'Documentatie'; -$phpMussel['lang']['link_file_manager'] = 'Bestandsbeheer'; -$phpMussel['lang']['link_home'] = 'Startpagina'; -$phpMussel['lang']['link_logs'] = 'Logbestanden'; -$phpMussel['lang']['link_quarantine'] = 'Quarantaine'; -$phpMussel['lang']['link_statistics'] = 'Statistieken'; -$phpMussel['lang']['link_textmode'] = 'Tekstformaat: EenvoudigGeformatteerde'; -$phpMussel['lang']['link_updates'] = 'Updates'; -$phpMussel['lang']['link_upload_test'] = 'Upload Test'; -$phpMussel['lang']['logs_logfile_doesnt_exist'] = 'Geselecteerde logbestand bestaat niet!'; -$phpMussel['lang']['logs_no_logfiles_available'] = 'Geen logbestanden beschikbaar.'; -$phpMussel['lang']['logs_no_logfile_selected'] = 'Geen logbestand geselecteerd.'; -$phpMussel['lang']['max_login_attempts_exceeded'] = 'Maximum aantal inlogpogingen overschreden; Toegang geweigerd.'; -$phpMussel['lang']['previewer_days'] = 'Dagen'; -$phpMussel['lang']['previewer_hours'] = 'Uur'; -$phpMussel['lang']['previewer_minutes'] = 'Minuten'; -$phpMussel['lang']['previewer_months'] = 'Maanden'; -$phpMussel['lang']['previewer_seconds'] = 'Seconden'; -$phpMussel['lang']['previewer_weeks'] = 'Weken'; -$phpMussel['lang']['previewer_years'] = 'Jaren'; -$phpMussel['lang']['response_accounts_already_exists'] = 'Een account bij die gebruikersnaam bestaat al!'; -$phpMussel['lang']['response_accounts_created'] = 'Account succesvol aangemaakt!'; -$phpMussel['lang']['response_accounts_deleted'] = 'Account succesvol verwijderd!'; -$phpMussel['lang']['response_accounts_doesnt_exist'] = 'Die account bestaat niet.'; -$phpMussel['lang']['response_accounts_password_updated'] = 'Wachtwoord succesvol gewijzigd!'; -$phpMussel['lang']['response_activated'] = 'Succesvol geactiveerd.'; -$phpMussel['lang']['response_activation_failed'] = 'Mislukt om te activeren!'; -$phpMussel['lang']['response_checksum_error'] = 'Checksum error! Bestand afgewezen!'; -$phpMussel['lang']['response_component_successfully_installed'] = 'Component succesvol geïnstalleerd.'; -$phpMussel['lang']['response_component_successfully_uninstalled'] = 'Component succesvol verwijderd.'; -$phpMussel['lang']['response_component_successfully_updated'] = 'Component succesvol gewijzigd.'; -$phpMussel['lang']['response_component_uninstall_error'] = 'Er is een fout opgetreden tijdens een poging om de component te verwijderen.'; -$phpMussel['lang']['response_configuration_updated'] = 'Configuratie succesvol gewijzigd.'; -$phpMussel['lang']['response_deactivated'] = 'Succesvol gedeactiveerd.'; -$phpMussel['lang']['response_deactivation_failed'] = 'Mislukt om te deactiveren!'; -$phpMussel['lang']['response_delete_error'] = 'Mislukt om te verwijderen!'; -$phpMussel['lang']['response_directory_deleted'] = 'Bestandsmap succesvol verwijderd!'; -$phpMussel['lang']['response_directory_renamed'] = 'De naam van de bestandsmap met succes veranderd!'; -$phpMussel['lang']['response_error'] = 'Fout'; -$phpMussel['lang']['response_failed_to_install'] = 'Installatie mislukt!'; -$phpMussel['lang']['response_failed_to_update'] = 'Update mislukt!'; -$phpMussel['lang']['response_file_deleted'] = 'Bestand succesvol verwijderd!'; -$phpMussel['lang']['response_file_edited'] = 'Bestand succesvol gewijzigd!'; -$phpMussel['lang']['response_file_renamed'] = 'De naam van de bestand met succes veranderd!'; -$phpMussel['lang']['response_file_restored'] = 'Bestand succesvol hersteld!'; -$phpMussel['lang']['response_file_uploaded'] = 'Bestand succesvol uploadet!'; -$phpMussel['lang']['response_login_invalid_password'] = 'Inloggen mislukt! Ongeldig wachtwoord!'; -$phpMussel['lang']['response_login_invalid_username'] = 'Inloggen mislukt! Gebruikersnaam bestaat niet!'; -$phpMussel['lang']['response_login_password_field_empty'] = 'Password veld leeg!'; -$phpMussel['lang']['response_login_username_field_empty'] = 'Gebruikersnaam veld leeg!'; -$phpMussel['lang']['response_rename_error'] = 'Mislukt om de naam te veranderen!'; -$phpMussel['lang']['response_restore_error_1'] = 'Kan niet herstellen! Beschadigd bestand!'; -$phpMussel['lang']['response_restore_error_2'] = 'Kan niet herstellen! Onjuiste quarantaine sleutel!'; -$phpMussel['lang']['response_statistics_cleared'] = 'Statistieken geannuleerd.'; -$phpMussel['lang']['response_updates_already_up_to_date'] = 'Al bijgewerkt.'; -$phpMussel['lang']['response_updates_not_installed'] = 'Component niet geïnstalleerd!'; -$phpMussel['lang']['response_updates_not_installed_php'] = 'Component niet geïnstalleerd (heeft nodig PHP {V})!'; -$phpMussel['lang']['response_updates_outdated'] = 'Verouderd!'; -$phpMussel['lang']['response_updates_outdated_manually'] = 'Verouderd (neem handmatig bijwerken)!'; -$phpMussel['lang']['response_updates_outdated_php_version'] = 'Verouderd (heeft nodig PHP {V})!'; -$phpMussel['lang']['response_updates_unable_to_determine'] = 'Onbepaald.'; -$phpMussel['lang']['response_upload_error'] = 'Mislukt om te uploaden!'; -$phpMussel['lang']['state_complete_access'] = 'Volledige toegang'; -$phpMussel['lang']['state_component_is_active'] = 'Component is actief.'; -$phpMussel['lang']['state_component_is_inactive'] = 'Component is inactief.'; -$phpMussel['lang']['state_component_is_provisional'] = 'Component is voorlopig.'; -$phpMussel['lang']['state_default_password'] = 'Waarschuwing: Gebruikt de standaard wachtwoord!'; -$phpMussel['lang']['state_logged_in'] = 'Ingelogd.'; -$phpMussel['lang']['state_logs_access_only'] = 'Logbestanden toegang alleen'; -$phpMussel['lang']['state_maintenance_mode'] = 'Waarschuwing: De onderhoudsmodus is ingeschakeld!'; -$phpMussel['lang']['state_password_not_valid'] = 'Waarschuwing: Dit account is niet gebruikt van een geldig wachtwoord!'; -$phpMussel['lang']['state_quarantine'] = ['Er is momenteel %s bestand in quarantaine.', 'Er zijn momenteel %s bestanden in quarantaine.']; -$phpMussel['lang']['switch-hide-non-outdated-set-false'] = 'De al bijgewerkt niet verbergen'; -$phpMussel['lang']['switch-hide-non-outdated-set-true'] = 'De al bijgewerkt verbergen'; -$phpMussel['lang']['switch-hide-unused-set-false'] = 'De ongebruikte niet verbergen'; -$phpMussel['lang']['switch-hide-unused-set-true'] = 'De ongebruikte verbergen'; -$phpMussel['lang']['tip_accounts'] = 'Hallo, {username}.
        De accounts pagina stelt u in staat om te bepalen wie toegang heeft tot de phpMussel frontend.'; -$phpMussel['lang']['tip_config'] = 'Hallo, {username}.
        De configuratie pagina stelt u in staat om de configuratie voor phpMussel te modificeren vanaf de frontend.'; -$phpMussel['lang']['tip_donate'] = 'phpMussel wordt gratis aangeboden, maar als u wilt doneren aan het project, kan u dit doen door te klikken op de knop doneren.'; -$phpMussel['lang']['tip_file_manager'] = 'Hallo, {username}.
        De bestandsbeheer stelt u in staat om te verwijderen, bewerken, uploaden en downloaden van bestanden. Gebruik met voorzichtigheid (kon u uw installatie breken met deze).'; -$phpMussel['lang']['tip_home'] = 'Hallo, {username}.
        Dit is de startpagina van de phpMussel frontend. Selecteer een link in het navigatiemenu aan de linkerkant om door te gaan.'; -$phpMussel['lang']['tip_login'] = 'Standaard gebruikersnaam: admin – Standaard wachtwoord: password'; -$phpMussel['lang']['tip_logs'] = 'Hallo, {username}.
        Selecteer een logbestand uit de onderstaande lijst om de inhoud van de logbestand te bekijken.'; -$phpMussel['lang']['tip_quarantine'] = 'Hallo, {username}.
        Deze pagina bevat een lijst met alle bestanden die momenteel in quarantaine staan en het beheer van die bestanden vergemakkelijkt.'; -$phpMussel['lang']['tip_quarantine_disabled'] = 'Notitie: Quarantaine is momenteel uitgeschakeld, maar kan via de configuratiepagina worden ingeschakeld.'; -$phpMussel['lang']['tip_see_the_documentation'] = 'Zie de documentatie voor informatie over de verschillende configuratie richtlijnen en hun doeleinden.'; -$phpMussel['lang']['tip_statistics'] = 'Hallo, {username}.
        Deze pagina bevat een aantal basisgebruiksstatistieken voor uw phpMussel-installatie.'; -$phpMussel['lang']['tip_statistics_disabled'] = 'Notitie: Statistische tracking is momenteel uitgeschakeld, maar kan via de configuratiepagina worden ingeschakeld.'; -$phpMussel['lang']['tip_updates'] = 'Hallo, {username}.
        De updates pagina stelt u in staat om de verschillende phpMussel componenten te installeren, verwijderen, en actualiseren (de core pakket, signatures, plugins, L10N bestanden, ezv).'; -$phpMussel['lang']['tip_upload_test'] = 'Hallo, {username}.
        De upload test pagina bevat een standaard file upload formulier, voor het testen of een bestand normaliter geblokkeerd door phpMussel bij een poging om het te uploaden.'; -$phpMussel['lang']['title_accounts'] = 'phpMussel – Accounts'; -$phpMussel['lang']['title_config'] = 'phpMussel – Configuratie'; -$phpMussel['lang']['title_file_manager'] = 'phpMussel – Bestandsbeheer'; -$phpMussel['lang']['title_home'] = 'phpMussel – Startpagina'; -$phpMussel['lang']['title_login'] = 'phpMussel – Inloggen'; -$phpMussel['lang']['title_logs'] = 'phpMussel – Logbestanden'; -$phpMussel['lang']['title_quarantine'] = 'phpMussel – Quarantaine'; -$phpMussel['lang']['title_statistics'] = 'phpMussel – Statistieken'; -$phpMussel['lang']['title_updates'] = 'phpMussel – Updates'; -$phpMussel['lang']['title_upload_test'] = 'phpMussel – Upload Test'; -$phpMussel['lang']['warning'] = 'Waarschuwingen:'; -$phpMussel['lang']['warning_php_1'] = 'Uw PHP versie wordt niet meer actief ondersteund! Het bijwerken is aanbevolen!'; -$phpMussel['lang']['warning_php_2'] = 'Uw PHP versie is ernstig kwetsbaar! Het bijwerken is sterk aanbevolen!'; -$phpMussel['lang']['warning_signatures_1'] = 'Geen signature bestanden zijn actief!'; - -$phpMussel['lang']['info_some_useful_links'] = 'Enkele nuttige links:
          -
        • phpMussel Kwesties @ GitHub – Kwesties pagina voor phpMussel (steun, hulp, ezv).
        • -
        • phpMussel @ Spambot Security – Discussieforum voor phpMussel (steun, hulp, ezv).
        • -
        • phpMussel @ SourceForge – Een alternatieve download-spiegel voor phpMussel.
        • -
        • WebSecTools.com – Een verzameling van eenvoudige webmaster tools waarmee websites te beveiligen.
        • -
        • ClamavNet – ClamAV startpagina (ClamAV® is een open source antivirus engine voor het opsporen van trojans, virussen, malware en andere bedreigingen).
        • -
        • SecuriteInfo.com – Computerbeveiliging bedrijf dat aanvullende signatures biedt voor ClamAV.
        • -
        • PhishTank – Phishing-database gebruikt door de phpMussel URL scanner.
        • -
        • Global PHP Group @ Facebook – PHP leermiddelen en discussie.
        • -
        • PHP.earth – PHP leermiddelen en discussie.
        • -
        • VirusTotal – VirusTotal is een gratis service voor het analyseren van verdachte bestanden en URL\'s.
        • -
        • Hybrid Analysis – Hybrid Analysis is een gratis malware analyse dienst die door Payload Security.
        • -
        • Malwarebytes – Computer anti-malware-specialisten.
        • -
        • MalwareTips – Nuttig malware-gericht discussiefora.
        • -
        • Kwetsbaarheidstabellen – Hiermee worden veilige/onveilige versies van verschillende pakketten weergegeven (PHP, HHVM, ezv).
        • -
        • Compatibiliteitstabellen – Hiermee worden informatie over compatibiliteit voor verschillende pakketten weergegeven (CIDRAM, phpMussel, ezv).
        • -
        '; diff --git a/libraries/plugins/phpMussel/vault/lang/lang.nl.php b/libraries/plugins/phpMussel/vault/lang/lang.nl.php deleted file mode 100644 index 159c166..0000000 --- a/libraries/plugins/phpMussel/vault/lang/lang.nl.php +++ /dev/null @@ -1,131 +0,0 @@ -Página Principal | Sair'; -$phpMussel['lang']['bNav_logout'] = 'Sair'; -$phpMussel['lang']['config_attack_specific_archive_file_extensions'] = 'Reconhecidos arquivos extensões (formato é CSV; só deve adicionar ou remover quando problemas ocorrem; desnecessariamente removendo pode causar falso-positivos para aparecer por compactados arquivos, enquanto desnecessariamente adicionando será essencialmente whitelist o que você está adicionando contra ataque específica detecção; modificar com cautela; Também notar que este não tem efeito em qual compactados arquivos podem e não podem ser analisados no escopo de conteúdo). A lista, como é padrão, é do formatos utilizados mais comumente através da maioria dos sistemas e CMS, mas intencionalmente não é necessariamente abrangente.'; -$phpMussel['lang']['config_attack_specific_block_control_characters'] = 'Bloquear todos os arquivos que contenham quaisquer caracteres de controle (exceto linha quebras) – [\x00-\x08\x0b\x0c\x0e\x1f\x7f]? Se você está APENAS carregando simple texto, então você pode ativar essa opção para fornecer alguma adicional proteção para o seu sistema. Mas, se você carregar qualquer coisa que não seja de texto simples, ativando isso pode resultas em falso positivos. False = Não bloquear [Padrão]; True = Bloquear.'; -$phpMussel['lang']['config_attack_specific_chameleon_from_exe'] = 'Olha por executável headers em arquivos que são não executáveis nem reconhecidos compactados arquivos e por executáveis cujos headers estão incorretas. False = Inativo; True = Ativo.'; -$phpMussel['lang']['config_attack_specific_chameleon_from_php'] = 'Olha por PHP header em arquivos que são não PHP arquivos nem reconhecidos compactados arquivos. False = Inativo; True = Ativo.'; -$phpMussel['lang']['config_attack_specific_chameleon_to_archive'] = 'Olha por compactados arquivos cujos headers estão incorretas (Suportados: BZ, GZ, RAR, ZIP, RAR, GZ). False = Inativo; True = Ativo.'; -$phpMussel['lang']['config_attack_specific_chameleon_to_doc'] = 'Olha por office documentos cujos headers estão incorretas (Suportados: DOC, DOT, PPS, PPT, XLA, XLS, WIZ). False = Inativo; True = Ativo.'; -$phpMussel['lang']['config_attack_specific_chameleon_to_img'] = 'Olha por imagens cujos headers estão incorretas (Suportados: BMP, DIB, PNG, GIF, JPEG, JPG, XCF, PSD, PDD, WEBP). False = Inativo; True = Ativo.'; -$phpMussel['lang']['config_attack_specific_chameleon_to_pdf'] = 'Olha por PDF arquivos cujos headers estão incorretas. False = Inativo; True = Ativo.'; -$phpMussel['lang']['config_attack_specific_corrupted_exe'] = 'Corrompidos arquivos e erros de análise. False = Ignorar; True = Bloquear [Padrão]. Detectar e bloquear potencialmente corrompidos PE (Portátil Executável) arquivos? Frequentemente (mas não sempre), quando certos aspectos de um PE arquivo é corrompido ou não pode ser analisado corretamente, essa pode ser indicativo de uma viral infecção. Os processos utilizados pela maioria dos anti-vírus programas para detectar vírus em PE arquivos requerem analisando os arquivos de certas maneiras, que, se o programador de um vírus é consciente de, especificamente irá tentar impedir, a fim de permitir seu vírus para permanecer não detectado.'; -$phpMussel['lang']['config_attack_specific_decode_threshold'] = 'Opcional limitação para o comprimento dos dados para que dentro de decodificar comandos devem ser detectados (em caso de existirem quaisquer notável problemas de desempenho enquanto analisando). Padrão = 512KB. Zero ou nulo valor desativa o limitação (removendo qualquer limitação baseado em tamanho do arquivo).'; -$phpMussel['lang']['config_attack_specific_scannable_threshold'] = 'Opcional limitação para o comprimento dos dados brutos para que phpMussel é permitido a ler e analisar (em caso de existirem quaisquer notável problemas de desempenho enquanto analisando). Padrão = 32MB. Zero ou nulo valor desativa o limitação. Em geral, esse valor não deve ser menor que o médio arquivo tamanho de carregamentos que você quer e espera para receber no seu servidor ou website, não deve ser mais que o filesize_limit directivo, e não deve ser menor que aproximadamente um quinto do total permissível memória alocação concedido para PHP através do "php.ini" configuração arquivo. Esta directiva existe para tentar impedir phpMussel de usando demais memória (que seria impedir-lo de ser capaz de analisando arquivos acima de um certo tamanho com sucesso).'; -$phpMussel['lang']['config_compatibility_ignore_upload_errors'] = 'Essa directiva deve ser geralmente desativada a menos que seja necessário por correta funcionalidade de phpMussel no seu específico sistema. Normalmente, quando desativado, quando phpMussel detecta a presença de elementos dentro a $_FILES array(), ele tentará iniciar uma análise dos arquivos que esses elementos representam, e, se esses elementos estão branco ou vazia, phpMussel irá retornar uma erro mensagem. Esse é um apropriado comportamento por phpMussel. Mas, por alguns CMS, vazios elementos podem ocorrer como resultado do natural comportamento dessas CMS, ou erros podem ser reportado quando não houver alguma, nesse caso, o normal comportamento por phpMussel será interferindo com o normal comportamento dessas CMS. Se tal situação ocorre por você, ativando esta opção irá instruir phpMussel para não tentar iniciar um análise por tais vazios elementos, ignorá-los quando encontrado e para não retornar qualquer relacionado erro mensagens, assim, permitindo a continuação da página carga. False = DESATIVADO; True = ATIVADO.'; -$phpMussel['lang']['config_compatibility_only_allow_images'] = 'Se você apenas esperar ou apenas tencionar de permitir imagens a ser enviado para seu sistema ou CMS, e se você absolutamente não necessita quaisquer arquivos exceto imagens a ser enviado para seu sistema ou CMS, esta directiva devia ser ATIVADO, mas em outros casos devia ser DESATIVADO. Se esta directiva é ATIVADO, ele irá instruir phpMussel indiscriminadamente bloquear qualquer arquivo carregamento identificado como não imagem, sem os analisar. Isto pode reduzir o tempo de processamento e uso de memória por tentados carregamentos de não imagem arquivos. False = DESATIVADO; True = ATIVADO.'; -$phpMussel['lang']['config_files_block_encrypted_archives'] = 'Detectar e bloquear compactados arquivos criptografados? Porque phpMussel não é capaz de analisar o conteúdo de arquivos criptografados, é possível que a criptografia de arquivo pode ser empregado por um atacante como meio de tentar contornar phpMussel, analisadores anti-vírus e outras dessas protecções. Instruindo phpMussel para bloquear quaisquer arquivos que ele descobrir a ser criptografada poderia ajudar a reduzir o risco associado a essas tais possibilidades. False = Não; True = Sim [Padrão].'; -$phpMussel['lang']['config_files_check_archives'] = 'Tentativa de verificar os conteúdos dos compactados arquivos? False = Não (Não verificar); True = Sim (Verificar) [Padrão]. Neste momento, os únicos formatos suportados são BZ/BZIP2, GZ/GZIP, LZF, PHAR, TAR e ZIP (os formatos RAR, CAB, 7z e etc. não suportadas neste momento). Este não é infalível! Embora eu recomendo mantê-lo ativado, eu não posso garantir que sempre vai encontrar tudo. Também estar ciente de que a verificação do compactados arquivos, neste momento, não é recursiva por PHAR ou ZIP arquivos.'; -$phpMussel['lang']['config_files_filesize_archives'] = 'Herdar o arquivo tamanho blacklist/whitelist para o conteúdo de compactados arquivos? False = Não (greylist tudo); True = Sim [Padrão].'; -$phpMussel['lang']['config_files_filesize_limit'] = 'Arquivo tamanho limit. Em KB. 65536 = 64MB [Padrão] 0 = Não limite (sempre greylisted), qualquer (positivo) numérico valor aceite. Isso pode ser útil quando sua PHP configuração limita a quantidade de memória que um processo pode ocupar ou se sua PHP configuração limita o arquivo tamanho de carregamentos.'; -$phpMussel['lang']['config_files_filesize_response'] = 'Que fazer com arquivos que excedam o limite de arquivo tamanho (se existir). False = Whitelist; True = Blacklist [Padrão].'; -$phpMussel['lang']['config_files_filetype_archives'] = 'Herdar o arquivo tipo blacklist/whitelist para o conteúdo de compactados arquivos? False = Não (greylist tudo); True = Sim [Padrão].'; -$phpMussel['lang']['config_files_filetype_blacklist'] = 'Blacklist:'; -$phpMussel['lang']['config_files_filetype_greylist'] = 'Greylist:'; -$phpMussel['lang']['config_files_filetype_whitelist'] = 'Se o seu sistema só permite certos tipos de arquivos sejam carregado, ou se o seu sistema explicitamente nega certos tipos de arquivos, especificando esses tipos de arquivos no whitelists, blacklists e greylists pode aumentar a velocidado em que a análise é realizada através de permitindo o script para ignorar certos tipos de arquivos. O formato CSV (Comma Separated Values). Se você quer analisar tudo, ao invés de fazendo whitelist, blacklist ou greylist, deixe as variáveis em branco; Isso irá desativar whitelist/blacklist/greylist). Lógico ordem de processamento é: Se o tipo de arquivo está na whitelist, não verificar e não bloqueia o arquivo, e não verificar o arquivo contra o blacklist ou greylist. Se o tipo de arquivo está na blacklist, não verificar o arquivo, mas bloqueá-lo de qualquer maneira, e não verificar o arquivo contra o greylist. Se o greylist está vazia ou se o greylist não está vazia e o tipo de arquivo é no greylist, verificar o arquivo como por normal e determinar se a bloqueá-lo com base nos resultados do verificando, mas se o greylist não está vazia e o tipo de arquivo não é no greylist, tratar o arquivo da mesma maneira como está na blacklist, portanto não verificá-lo, mas bloqueá-lo de qualquer maneira. Whitelist:'; -$phpMussel['lang']['config_files_max_recursion'] = 'Máxima recursão profundidade limite por compactados arquivos. Padrão = 10.'; -$phpMussel['lang']['config_files_max_uploads'] = 'O máximo permitido número de arquivos para analisar durante os arquivos carregamentos análise antes de abortar a análise e informando ao usuário eles estão carregando demais muito de uma vez! Oferece proteção contra um teórico ataque pelo qual um atacante tenta DDoS o seu sistema ou CMS por meio de sobrecarregando phpMussel a fim de retardar o PHP processo para uma parada. Recomendado: 10. Você pode querer aumentar ou diminuir esse número, dependendo das atributos do seu hardware. Note-se que este número não lev. Em conta ou incluir o conteúdos dos compactados arquivos.'; -$phpMussel['lang']['config_general_cleanup'] = 'Deletar script variáveis e cache após a execução? False = Não; True = Sim [Padrão]. Se você não estiver usar o script além da inicial verificação de carregamentos, deve definir a true (sim), para minimizar o uso de memória. Se você estiver usar o script por fins além da inicial verificação de carregamentos, deve definir a false (não), para evitar desnecessariamente duplicados dados recarregando em memória. Em prática geral, deve provavelmente ser definido como true (sim), mas, se você fizer isso, você não será capaz de usando o script por qualquer outra fim além analisando arquivos carregamentos. Não tem influência em CLI modo.'; -$phpMussel['lang']['config_general_default_algo'] = 'Define qual algoritmo usar para todas as futuras senhas e sessões. Opções: PASSWORD_DEFAULT (padrão), PASSWORD_BCRYPT, PASSWORD_ARGON2I (requer PHP >= 7.2.0).'; -$phpMussel['lang']['config_general_delete_on_sight'] = 'Ativando esta opção irá instruir o script para tentar imediatamente deletando qualquer arquivo que ele encontra durante a análise que corresponde a qualquer critério de detecção, quer seja através de assinaturas ou de outra forma. Arquivos determinados para ser "limpo" não serão tocados. Em caso de compactados arquivos, o inteiro arquivo será deletado (independentemente de se o problemático arquivo é apenas um dos vários arquivos contidos dentro do compactado arquivo). Para o caso de arquivo carregamento análise, em geral, não é necessário ativar essa opção, porque normalmente, PHP irá automaticamente expurgar os conteúdos de o seu cache quando a execução foi concluída, significando que ele vai normalmente deletar todos os arquivos enviados através dele para o servidor a menos que tenha movido, copiado ou deletado já. A opção é adicionado aqui como uma medida de segurança para aqueles cujas cópias de PHP nem sempre se comportam da forma esperada. False = Após a análise, deixe o arquivo sozinho [Padrão]; True = Após a análise, se não limpo, deletar imediatamente.'; -$phpMussel['lang']['config_general_disable_cli'] = 'Desativar o CLI modo? CLI modo é ativado por padrão, mas às vezes pode interferir com certas testes ferramentas (tal como PHPUnit, por exemplo) e outras aplicações baseadas em CLI. Se você não precisa desativar o CLI modo, você deve ignorar esta directiva. False = Ativar o CLI modo [Padrão]; True = Desativar o CLI modo.'; -$phpMussel['lang']['config_general_disable_frontend'] = 'Desativar o acesso front-end? Acesso front-end pode fazer phpMussel mais manejável, mas também pode ser um risco de segurança potencial, também. É recomendado para gerenciar phpMussel através do back-end, sempre que possível, mas o acesso front-end é proporcionada para quando não é possível. Mantê-lo desativado, a menos que você precisar. False = Ativar o acesso front-end; True = Desativar o acesso front-end [Padrão].'; -$phpMussel['lang']['config_general_disable_webfonts'] = 'Desativar webfonts? True = Sim; False = Não [Padrão].'; -$phpMussel['lang']['config_general_enable_plugins'] = 'Ativar o suporte para os plugins do phpMussel? False = Não; True = Sim [Padrão].'; -$phpMussel['lang']['config_general_forbid_on_block'] = 'Deve phpMussel enviar 403 header com a bloqueado arquivo carregamento mensagem, ou ficar com os habituais 200 OK? False = Não (200); True = Sim (403) [Padrão].'; -$phpMussel['lang']['config_general_FrontEndLog'] = 'Arquivo para registrar tentativas de login ao front-end. Especifique o nome de um arquivo, ou deixe em branco para desabilitar.'; -$phpMussel['lang']['config_general_honeypot_mode'] = 'Quando o honeypot modo é ativada, phpMussel vai tente colocar no quarentena todos os uploads de arquivos que ele encontras, independentemente de se ou não o arquivo que está sendo carregado corresponde a qualquer incluídos assinaturas, e zero análise desses tentados arquivos carregamentos vai ocorrer. Esta funcionalidade deve ser útil por aqueles que desejam utilizar phpMussel por os fins de vírus/malware pesquisa, mas não é recomendado para ativar essa funcionalidade se o planejado uso de phpMussel pelo utilizador é por o real análise dos arquivos carregamentos nem recomendado para usar essa funcionalidade por fins outros que o uso do honeypot. Por padrão, essa opção está desativada. False = Desativado [Padrão]; True = Ativado.'; -$phpMussel['lang']['config_general_ipaddr'] = 'Onde encontrar o IP endereço das solicitações? (Útil por serviços como o Cloudflare e tal) Padrão = REMOTE_ADDR. ATENÇÃO: Não mude isso a menos que você saiba o que está fazendo!'; -$phpMussel['lang']['config_general_lang'] = 'Especificar o padrão da linguagem por phpMussel.'; -$phpMussel['lang']['config_general_maintenance_mode'] = 'Ativar o modo de manutenção? True = Sim; False = Não [Padrão]. Desativa tudo além do front-end. Às vezes útil para quando atualiza seu CMS, frameworks, etc.'; -$phpMussel['lang']['config_general_max_login_attempts'] = 'Número máximo de tentativas de login (front-end). Padrão = 5.'; -$phpMussel['lang']['config_general_numbers'] = 'Como você prefere que os números sejam exibidos? Selecione o exemplo que parece mais correto para você.'; -$phpMussel['lang']['config_general_quarantine_key'] = 'phpMussel é capaz de colocar em quarentena marcados tentados arquivos carregamentos em isolamento dentro da phpMussel vault, se isso é algo que você quer que ele faça. Casuais usuários de phpMussel de que simplesmente desejam proteger seus sites ou hospedagem sem ter qualquer interesse em profundamente analisando qualquer marcados tentados arquivos carregamentos deve deixar esta funcionalidade desativada, mas qualquer usuário interessado em mais profundamente analisando marcados tentados arquivos carregamentos para pesquisa de malware ou de similares tais coisas deve ativada essa funcionalidade. Quarentena de marcados tentados arquivos carregamentos às vezes pode também ajudar em depuração de falso-positivos, se isso é algo que ocorre com frequência para você. Por desativar a funcionalidade de quarentena, simplesmente deixar a directiva quarantine_key vazio, ou apagar o conteúdo do directivo, se ele não está já vazio. Por ativar a funcionalidade de quarentena, introduzir algum valor no directiva. O quarantine_key é um importante segurança característica do quarentena funcionalidade necessária como um meio de prevenir a funcionalidade de quarentena de ser explorada por potenciais atacantes e como meio de evitar qualquer potencial execução de dados armazenados dentro da quarentena. O quarantine_key devem ser tratados da mesma maneira como suas senhas: O mais longo o mais melhor, e guardá-lo com força. Por melhor efeito, usar em conjunto com delete_on_sight.'; -$phpMussel['lang']['config_general_quarantine_max_filesize'] = 'O máximo permitido tamanho do arquivos serem colocados em quarentena. Arquivos maiores que este valor NÃO serão colocados em quarentena. Esta directiva é importante como um meio de torná-lo mais difícil por qualquer potenciais atacante para inundar sua quarentena com indesejados dados potencialmente causando excesso uso de dados no seu hospedagem serviço. Padrão = 2MB.'; -$phpMussel['lang']['config_general_quarantine_max_usage'] = 'O uso máximo de memória permitido através do quarentena. Se o total de memória utilizada pelo quarentena atingir este valor, os mais antigos arquivos em quarentena serão apagados até que a total memória utilizada já não atinge este valor. Esta directiva é importante como um meio de torná-lo mais difícil por qualquer potenciais atacante para inundar sua quarentena com indesejados dados potencialmente causando excesso uso de dados no seu hospedagem serviço. Padrão = 64MB.'; -$phpMussel['lang']['config_general_scan_cache_expiry'] = 'Por quanto tempo deve phpMussel cache os resultados da verificação? O valor é o número de segundos para armazenar em cache os resultados da verificação para. O padrão é 21600 segundo (6 horas); Um valor de 0 irá desativar o cache os resultados da verificação.'; -$phpMussel['lang']['config_general_scan_kills'] = 'Nome do arquivo para registrar todos os bloqueados ou matados carregamentos. Especifique um arquivo nome, ou deixe branco para desativar.'; -$phpMussel['lang']['config_general_scan_log'] = 'Nome do arquivo para registrar todos os resultados do análises. Especifique um arquivo nome, ou deixe branco para desativar.'; -$phpMussel['lang']['config_general_scan_log_serialized'] = 'Nome do arquivo para registrar todos os resultados do análises (formato é serializado). Especifique um arquivo nome, ou deixe branco para desativar.'; -$phpMussel['lang']['config_general_statistics'] = 'Monitorar as estatísticas de uso do phpMussel? True = Sim; False = Não [Padrão].'; -$phpMussel['lang']['config_general_timeFormat'] = 'O formato de notação de data/tempo utilizado pelo phpMussel. Opções adicionais podem ser adicionadas a pedido.'; -$phpMussel['lang']['config_general_timeOffset'] = 'Deslocamento do fuso horário em minutos.'; -$phpMussel['lang']['config_general_timezone'] = 'O seu fuso horário.'; -$phpMussel['lang']['config_general_truncate'] = 'Truncar arquivos de log quando atingem um determinado tamanho? Valor é o tamanho máximo em B/KB/MB/GB/TB que um arquivo de log pode crescer antes de ser truncado. O valor padrão de 0KB desativa o truncamento (arquivos de log podem crescer indefinidamente). Nota: Aplica-se a arquivos de log individuais! O tamanho dos arquivos de log não é considerado coletivamente.'; -$phpMussel['lang']['config_heuristic_threshold'] = 'Existem assinaturas específicas de phpMussel para identificando suspeitas e qualidades potencialmente maliciosos dos arquivos que estão sendo carregados sem por si só identificando aqueles arquivos que estão sendo carregados especificamente como sendo maliciosos. Este "threshold" (limiar) valor instrui phpMussel o que o total máximo peso de suspeitas e qualidades potencialmente maliciosos dos arquivos que estão sendo carregados que é permitida é antes que esses arquivos devem ser sinalizada como maliciosos. A definição de peso neste contexto é o número total de suspeitas e qualidades potencialmente maliciosos identificado. Por padrão, este valor será definido como 3. Um menor valor geralmente resultará em uma maior ocorrência de falsos positivos mas um maior número de arquivos maliciosos sendo sinalizado, enquanto um maior valor geralmente resultará em uma menor ocorrência de falsos positivos mas um menor número de arquivos maliciosos sendo sinalizado. É geralmente melhor a deixar esse valor em seu padrão a menos que você está enfrentando problemas relacionados a ela.'; -$phpMussel['lang']['config_signatures_Active'] = 'Uma lista dos arquivos de assinaturas ativos, delimitados por vírgulas.'; -$phpMussel['lang']['config_signatures_detect_adware'] = 'Deve phpMussel usam assinaturas para detectar adware? False = Não; True = Sim [Padrão].'; -$phpMussel['lang']['config_signatures_detect_deface'] = 'Deve phpMussel usam assinaturas para detectar vandalismo e vândalos? False = Não; True = Sim [Padrão].'; -$phpMussel['lang']['config_signatures_detect_encryption'] = 'Deve phpMussel detectar e bloquear arquivos criptografados? False = Não; True = Sim [Padrão].'; -$phpMussel['lang']['config_signatures_detect_joke_hoax'] = 'Deve phpMussel usam assinaturas para detectar piada/engano malwares/vírus? False = Não; True = Sim [Padrão].'; -$phpMussel['lang']['config_signatures_detect_packer_packed'] = 'Deve phpMussel usam assinaturas para detectar embaladores e dados embaladas? False = Não; True = Sim [Padrão].'; -$phpMussel['lang']['config_signatures_detect_pua_pup'] = 'Deve phpMussel usam assinaturas para detectar PUAs/PUPs? False = Não; True = Sim [Padrão].'; -$phpMussel['lang']['config_signatures_detect_shell'] = 'Deve phpMussel usam assinaturas para detectar shell scripts? False = Não; True = Sim [Padrão].'; -$phpMussel['lang']['config_signatures_fail_extensions_silently'] = 'Deve phpMussel reportar quando extensões não estão disponíveis? Se fail_extensions_silently está desativado, extensões indisponíveis serão reportado durante análise, e se fail_extensions_silently está ativado, extensões indisponíveis serão ignoradas, com a análise reportando por estes arquivos em que não há problemas. Desativando dessa directiva pode potencialmente aumentar a sua segurança, mas também pode levar a um aumento de falsos positivos. False = Desativado; True = Ativado [Padrão].'; -$phpMussel['lang']['config_signatures_fail_silently'] = 'Deve phpMussel reportar quando os assinaturas arquivos estão perdido ou corrompido? Se fail_silently está desativado, perdidos e corrompidos arquivos serão reportado durante análise, e se fail_silently está ativado, perdidos e corrompidos arquivos serão ignoradas, com a análise reportando por estes arquivos em que não há problemas. Isso geralmente deve ser deixado sozinho a menos que você está experimentando PHP falhas ou semelhantes problemas. False = Desativado; True = Ativado [Padrão].'; -$phpMussel['lang']['config_template_data_css_url'] = 'O template arquivo para temas personalizados utiliza CSS propriedades externos, enquanto que o template arquivo para o padrão tema utiliza CSS propriedades internos. Para instruir phpMussel para usar o template arquivo para temas personalizados, especificar o endereço HTTP pública do seu temas personalizados CSS arquivos usando a css_url variável. Se você deixar essa variável em branco, phpMussel usará o template arquivo para o padrão tema.'; -$phpMussel['lang']['config_template_data_Magnification'] = 'Ampliação de fonte. Padrão = 1.'; -$phpMussel['lang']['config_template_data_theme'] = 'Tema padrão a ser usado para phpMussel.'; -$phpMussel['lang']['config_urlscanner_cache_time'] = 'Quanto tempo (em segundos) devem os resultados da API ser armazenados em cache? Padrão é 3600 segundos (1 hora).'; -$phpMussel['lang']['config_urlscanner_google_api_key'] = 'Permite o uso do Google Safe Browsing API quando a API chave necessária está definida.'; -$phpMussel['lang']['config_urlscanner_lookup_hphosts'] = 'Permite o uso do hpHosts API quando definido para true.'; -$phpMussel['lang']['config_urlscanner_maximum_api_lookups'] = 'Número máximo admissível de API solicitações para executar por cada iteração de análise. Porque cada API solicitação adicional irá acrescentar ao tempo total necessário para completar cada iteração de análise, você pode querer estipular uma limitação a fim de acelerar o processo de análise. Quando definido para 0, nenhuma número máximo admissível será aplicada. Definido para 10 por padrão.'; -$phpMussel['lang']['config_urlscanner_maximum_api_lookups_response'] = 'Que fazer se o número máximo admissível de API solicitações está ultrapassado? False = Fazer nada (continuar o processamento) [Padrão]; True = Marcar/bloquear o arquivo.'; -$phpMussel['lang']['config_virustotal_vt_public_api_key'] = 'Opcionalmente, phpMussel é capaz de verificar os arquivos usando o Virus Total API como uma maneira de fornecer um nível de proteção muito maior contra vírus, trojans, malware e outras ameaças. Por padrão, verificação de arquivos usando o Virus Total API está desativado. Para ativá-lo, um Virus Total API chave é necessária. Devido ao benefício significativo que isso poderia fornecer a você, é algo que eu recomendo ativar. Esteja ciente, porém, que para usar o Virus Total API, você DEVE concordar com seus Termos de Uso e você DEVE aderir a todas as orientações conforme descrito pelo da Virus Total documentação! Você NÃO tem permissão para usar este recurso de integração EXCETO SE: Você leu e concorda com os Termos de Uso da Virus Total e sua API. Você leu e você compreender, no mínimo, o preâmbulo da Virus Total Pública API documentação (tudo depois "VirusTotal Public API v2.0" mas antes "Contents").'; -$phpMussel['lang']['config_virustotal_vt_quota_rate'] = 'De acordo com o Virus Total API documentação, é limitada a, no máximo, 4 solicitações de qualquer natureza dentro qualquer 1 minuto período de tempo. Se você executar um honeyclient, honeypot ou qualquer outro automação que vai fornecer recursos para Virus Total e não só recuperar relatórios você tem direito a uma melhor solicitações cota. Por padrão, phpMussel vai aderir estritamente a estas limitações, mas, devido à possibilidade de essas cotas a ser aumentada, estas duas directivas são fornecidos como um meio para que você possa instruir phpMussel sobre o limite que deve aderir para. Excepto se tenha sido instruído a fazê-lo, não é recomendado para você aumentar esses valores, mas, se você encontrou problemas relacionados com a atingir sua cota, diminuir esses valores podem POR VEZES ajudá-lo em lidar com estes problemas. Seu taxa limite é determinada como vt_quota_rate solicitações de qualquer natureza dentro qualquer vt_quota_time minuto período de tempo.'; -$phpMussel['lang']['config_virustotal_vt_quota_time'] = '(Ver descrição acima).'; -$phpMussel['lang']['config_virustotal_vt_suspicion_level'] = 'Por padrão, phpMussel restringirá os arquivos que são verificado usando o Virus Total API a esses arquivos que considera "suspeito". Opcionalmente, você pode ajustar essa restrição via alterando o valor ao vt_suspicion_level directiva.'; -$phpMussel['lang']['config_virustotal_vt_weighting'] = 'Deve phpMussel aplicar os resultados de analisando usando o Virus Total API como detecções ou como detecção ponderação? Esta directiva existe, porque, embora verificando um arquivo usando múltiplos mecanismos (como Virus Total faz) deve resultar em um aumento da taxa de detecção (e por conseguinte em um maior número de arquivos maliciosos detectados), isto também pode resultar em um aumento número de falsos positivos, e por conseguinte, em algumas circunstâncias, os resultados de análise pode ser melhor utilizado como uma pontuação de confiança e não como uma conclusão definitiva. Se um valor de 0 é usado, os resultados de análise usando o Virus Total API será aplicado como detecções, e por conseguinte, Se qualquer mecanismo usado pelo Virus Total marca o arquivo que está sendo analisado como sendo malicioso, phpMussel considerará o arquivo a ser malicioso. Se qualquer outro valor é usado, os resultados de análise usando o Virus Total API será aplicado como detecção ponderação, e por conseguinte, o número de mecanismos utilizados pela Virus Total que marcar o arquivo que está sendo analisado como sendo malicioso servirá como uma pontuação de confiança (ou ponderação de detecção) para se ou não o arquivo que está sendo analisado deve ser considerado malicioso por phpMussel (o valor utilizado representará o mínima pontuação de confiança ou peso requerido a fim de ser considerado malicioso). Um valor de 0 é usado por padrão.'; -$phpMussel['lang']['Extended Description: phpMussel'] = 'O pacote principal (menos as assinaturas, documentação e configuração).'; -$phpMussel['lang']['field_activate'] = 'Ativar'; -$phpMussel['lang']['field_clear_all'] = 'Cancelar tudo'; -$phpMussel['lang']['field_component'] = 'Componente'; -$phpMussel['lang']['field_create_new_account'] = 'Criar Nova Conta'; -$phpMussel['lang']['field_deactivate'] = 'Desativar'; -$phpMussel['lang']['field_delete_account'] = 'Deletar Conta'; -$phpMussel['lang']['field_delete_all'] = 'Deletar tudo'; -$phpMussel['lang']['field_delete_file'] = 'Deletar'; -$phpMussel['lang']['field_download_file'] = 'Descarregar'; -$phpMussel['lang']['field_edit_file'] = 'Editar'; -$phpMussel['lang']['field_false'] = 'False (Falso)'; -$phpMussel['lang']['field_file'] = 'Arquivo'; -$phpMussel['lang']['field_filename'] = 'Nome do arquivo: '; -$phpMussel['lang']['field_filetype_directory'] = 'Diretório'; -$phpMussel['lang']['field_filetype_info'] = '{EXT} Arquivo'; -$phpMussel['lang']['field_filetype_unknown'] = 'Desconhecido'; -$phpMussel['lang']['field_install'] = 'Instalar'; -$phpMussel['lang']['field_latest_version'] = 'Última Versão'; -$phpMussel['lang']['field_log_in'] = 'Entrar'; -$phpMussel['lang']['field_more_fields'] = 'Mais Campos'; -$phpMussel['lang']['field_new_name'] = 'Novo nome:'; -$phpMussel['lang']['field_ok'] = 'OK'; -$phpMussel['lang']['field_options'] = 'Opções'; -$phpMussel['lang']['field_password'] = 'Senha'; -$phpMussel['lang']['field_permissions'] = 'Permissões'; -$phpMussel['lang']['field_quarantine_key'] = 'Chave de quarentena'; -$phpMussel['lang']['field_rename_file'] = 'Renomear'; -$phpMussel['lang']['field_reset'] = 'Reiniciar'; -$phpMussel['lang']['field_restore_file'] = 'Restaurar'; -$phpMussel['lang']['field_set_new_password'] = 'Definir Nova Senha'; -$phpMussel['lang']['field_size'] = 'Tamanho Total: '; -$phpMussel['lang']['field_size_bytes'] = ['byte', 'bytes']; -$phpMussel['lang']['field_size_GB'] = 'GB'; -$phpMussel['lang']['field_size_KB'] = 'KB'; -$phpMussel['lang']['field_size_MB'] = 'MB'; -$phpMussel['lang']['field_size_TB'] = 'TB'; -$phpMussel['lang']['field_status'] = 'Estado'; -$phpMussel['lang']['field_system_timezone'] = 'Usar o fuso horário padrão do sistema.'; -$phpMussel['lang']['field_true'] = 'True (Verdadeiro)'; -$phpMussel['lang']['field_uninstall'] = 'Desinstalar'; -$phpMussel['lang']['field_update'] = 'Atualizar'; -$phpMussel['lang']['field_update_all'] = 'Atualize tudo'; -$phpMussel['lang']['field_upload_file'] = 'Carregar um novo ficheiro'; -$phpMussel['lang']['field_username'] = 'Nome de Usuário'; -$phpMussel['lang']['field_your_version'] = 'Sua Versão'; -$phpMussel['lang']['header_login'] = 'Por favor faça o login para continuar.'; -$phpMussel['lang']['label_active_config_file'] = 'Arquivo de configuração ativo: '; -$phpMussel['lang']['label_blocked'] = 'Uploads bloqueados'; -$phpMussel['lang']['label_branch'] = 'Mais novo de estável de branch:'; -$phpMussel['lang']['label_events'] = 'Eventos de análise'; -$phpMussel['lang']['label_flagged'] = 'Objetos marcados'; -$phpMussel['lang']['label_fmgr_cache_data'] = 'Dados de cache e arquivos temporários'; -$phpMussel['lang']['label_fmgr_disk_usage'] = 'Uso do disco pelo phpMussel: '; -$phpMussel['lang']['label_fmgr_free_space'] = 'Espaço livre no disco: '; -$phpMussel['lang']['label_fmgr_total_disk_usage'] = 'Uso total do disco: '; -$phpMussel['lang']['label_fmgr_total_space'] = 'Espaço total no disco: '; -$phpMussel['lang']['label_fmgr_updates_metadata'] = 'Metadados para atualização de componentes'; -$phpMussel['lang']['label_hide'] = 'Ocultar'; -$phpMussel['lang']['label_os'] = 'Sistema operacional usada:'; -$phpMussel['lang']['label_other'] = 'Outros'; -$phpMussel['lang']['label_other-Active'] = 'Arquivos de assinaturas ativos'; -$phpMussel['lang']['label_other-Since'] = 'Data de início'; -$phpMussel['lang']['label_php'] = 'Versão do PHP usada:'; -$phpMussel['lang']['label_phpmussel'] = 'Versão do phpMussel usada:'; -$phpMussel['lang']['label_quarantined'] = 'Uploads em quarentena'; -$phpMussel['lang']['label_sapi'] = 'SAPI usada:'; -$phpMussel['lang']['label_scanned_objects'] = 'Objetos analisados'; -$phpMussel['lang']['label_scanned_uploads'] = 'Uploads analisados'; -$phpMussel['lang']['label_show'] = 'Mostrar'; -$phpMussel['lang']['label_size_in_quarantine'] = 'Tamanho em quarentena: '; -$phpMussel['lang']['label_stable'] = 'Mais novo de estável:'; -$phpMussel['lang']['label_sysinfo'] = 'Informação do sistema:'; -$phpMussel['lang']['label_tests'] = 'Testes:'; -$phpMussel['lang']['label_unstable'] = 'Mais novo de instável:'; -$phpMussel['lang']['label_upload_date'] = 'Data do carregamento: '; -$phpMussel['lang']['label_upload_hash'] = 'Hash do carregamento: '; -$phpMussel['lang']['label_upload_origin'] = 'Origem do carregamento: '; -$phpMussel['lang']['label_upload_size'] = 'Tamanho do carregamento: '; -$phpMussel['lang']['link_accounts'] = 'Contas'; -$phpMussel['lang']['link_config'] = 'Configuração'; -$phpMussel['lang']['link_documentation'] = 'Documentação'; -$phpMussel['lang']['link_file_manager'] = 'Gerenciador de Arquivos'; -$phpMussel['lang']['link_home'] = 'Página Principal'; -$phpMussel['lang']['link_logs'] = 'Arquivos de Registro'; -$phpMussel['lang']['link_quarantine'] = 'Quarentena'; -$phpMussel['lang']['link_statistics'] = 'Estatisticas'; -$phpMussel['lang']['link_textmode'] = 'Formatação de texto: SimplesChique'; -$phpMussel['lang']['link_updates'] = 'Atualizações'; -$phpMussel['lang']['link_upload_test'] = 'Carregar Teste'; -$phpMussel['lang']['logs_logfile_doesnt_exist'] = 'Arquivo de registro selecionado não existe!'; -$phpMussel['lang']['logs_no_logfiles_available'] = 'Não quaisquer arquivos de registro disponíveis.'; -$phpMussel['lang']['logs_no_logfile_selected'] = 'Não qualquer arquivo de registro selecionado.'; -$phpMussel['lang']['max_login_attempts_exceeded'] = 'Número máximo de tentativas de login foi excedido; Acesso negado.'; -$phpMussel['lang']['previewer_days'] = 'Dias'; -$phpMussel['lang']['previewer_hours'] = 'Horas'; -$phpMussel['lang']['previewer_minutes'] = 'Minutos'; -$phpMussel['lang']['previewer_months'] = 'Meses'; -$phpMussel['lang']['previewer_seconds'] = 'Segundos'; -$phpMussel['lang']['previewer_weeks'] = 'Semanas'; -$phpMussel['lang']['previewer_years'] = 'Anos'; -$phpMussel['lang']['response_accounts_already_exists'] = 'Uma conta com esse nome já existe!'; -$phpMussel['lang']['response_accounts_created'] = 'Conta criada com sucesso!'; -$phpMussel['lang']['response_accounts_deleted'] = 'Conta deletada com sucesso!'; -$phpMussel['lang']['response_accounts_doesnt_exist'] = 'Essa conta não existe.'; -$phpMussel['lang']['response_accounts_password_updated'] = 'Senha atualizada com sucesso!'; -$phpMussel['lang']['response_activated'] = 'Ativado com sucesso.'; -$phpMussel['lang']['response_activation_failed'] = 'Falha ao ativar!'; -$phpMussel['lang']['response_checksum_error'] = 'Erro de checksum! Arquivo rejeitado!'; -$phpMussel['lang']['response_component_successfully_installed'] = 'Componente instalado com sucesso.'; -$phpMussel['lang']['response_component_successfully_uninstalled'] = 'Componente desinstalado com sucesso.'; -$phpMussel['lang']['response_component_successfully_updated'] = 'Componente atualizado com sucesso.'; -$phpMussel['lang']['response_component_uninstall_error'] = 'Ocorreu um erro ao tentar desinstalar o componente.'; -$phpMussel['lang']['response_configuration_updated'] = 'Configuração atualizada com sucesso.'; -$phpMussel['lang']['response_deactivated'] = 'Desativado com sucesso.'; -$phpMussel['lang']['response_deactivation_failed'] = 'Falha ao desativar!'; -$phpMussel['lang']['response_delete_error'] = 'Falha ao deletar!'; -$phpMussel['lang']['response_directory_deleted'] = 'Diretório deletado com sucesso!'; -$phpMussel['lang']['response_directory_renamed'] = 'Diretório renomeado com sucesso!'; -$phpMussel['lang']['response_error'] = 'Erro'; -$phpMussel['lang']['response_failed_to_install'] = 'Instalação falhada!'; -$phpMussel['lang']['response_failed_to_update'] = 'Atualização falhada!'; -$phpMussel['lang']['response_file_deleted'] = 'Arquivo deletado com sucesso!'; -$phpMussel['lang']['response_file_edited'] = 'Arquivo modificado com sucesso!'; -$phpMussel['lang']['response_file_renamed'] = 'Arquivo renomeado com sucesso!'; -$phpMussel['lang']['response_file_restored'] = 'Arquivo restaurado com sucesso!'; -$phpMussel['lang']['response_file_uploaded'] = 'Arquivo carregado com sucesso!'; -$phpMussel['lang']['response_login_invalid_password'] = 'Falha no login! Senha inválida!'; -$phpMussel['lang']['response_login_invalid_username'] = 'Falha no login! Esse usuário não existe!'; -$phpMussel['lang']['response_login_password_field_empty'] = 'Entrada de senha vazio!'; -$phpMussel['lang']['response_login_username_field_empty'] = 'Entrada de nome de usuário vazio!'; -$phpMussel['lang']['response_rename_error'] = 'Falha ao renomear!'; -$phpMussel['lang']['response_restore_error_1'] = 'Falha ao restaurar! Arquivo corrompido!'; -$phpMussel['lang']['response_restore_error_2'] = 'Falha ao restaurar! Chave de quarentena incorreta!'; -$phpMussel['lang']['response_statistics_cleared'] = 'Estatísticas apagadas.'; -$phpMussel['lang']['response_updates_already_up_to_date'] = 'Já atualizado.'; -$phpMussel['lang']['response_updates_not_installed'] = 'Componente não instalado!'; -$phpMussel['lang']['response_updates_not_installed_php'] = 'Componente não instalado (requer PHP {V})!'; -$phpMussel['lang']['response_updates_outdated'] = 'Desatualizado!'; -$phpMussel['lang']['response_updates_outdated_manually'] = 'Desatualizado (por favor atualize manualmente)!'; -$phpMussel['lang']['response_updates_outdated_php_version'] = 'Desatualizado (requer PHP {V})!'; -$phpMussel['lang']['response_updates_unable_to_determine'] = 'Não foi possível determinar.'; -$phpMussel['lang']['response_upload_error'] = 'Falha ao carregar!'; -$phpMussel['lang']['state_complete_access'] = 'Acesso completo'; -$phpMussel['lang']['state_component_is_active'] = 'Componente está ativo.'; -$phpMussel['lang']['state_component_is_inactive'] = 'Componente está inativo.'; -$phpMussel['lang']['state_component_is_provisional'] = 'Componente está provisório.'; -$phpMussel['lang']['state_default_password'] = 'Atenção: Usando senha padrão!'; -$phpMussel['lang']['state_logged_in'] = 'Conectado.'; -$phpMussel['lang']['state_logs_access_only'] = 'Acesso aos arquivos de registro somente'; -$phpMussel['lang']['state_maintenance_mode'] = 'Atenção: O modo de manutenção está ativado!'; -$phpMussel['lang']['state_password_not_valid'] = 'Atenção: Esta conta não está usando uma senha válida!'; -$phpMussel['lang']['state_quarantine'] = ['Atualmente existe %s arquivo em quarentena.', 'Atualmente existem %s arquivos em quarentena.']; -$phpMussel['lang']['switch-hide-non-outdated-set-false'] = 'Não ocultar não desatualizado'; -$phpMussel['lang']['switch-hide-non-outdated-set-true'] = 'Ocultar não desatualizado'; -$phpMussel['lang']['switch-hide-unused-set-false'] = 'Não ocultar não utilizado'; -$phpMussel['lang']['switch-hide-unused-set-true'] = 'Ocultar não utilizado'; -$phpMussel['lang']['tip_accounts'] = 'Olá, {username}.
        A página de contas permite que você controle quem pode acessar o phpMussel front-end.'; -$phpMussel['lang']['tip_config'] = 'Olá, {username}.
        A página de configuração permite que você modifique a configuração do phpMussel a partir do front-end.'; -$phpMussel['lang']['tip_donate'] = 'phpMussel é oferecido gratuitamente, mas se você quiser doar para o projeto, você pode fazê-lo clicando no botão doar.'; -$phpMussel['lang']['tip_file_manager'] = 'Olá, {username}.
        O gerenciador de arquivos permite deletar, editar, carregar e descarregar arquivos. Use com cuidado (você poderia quebrar sua instalação com este).'; -$phpMussel['lang']['tip_home'] = 'Olá, {username}.
        Esta é a página principal do phpMussel front-end. Selecione um link no menu de navegação à esquerda para continuar.'; -$phpMussel['lang']['tip_login'] = 'Nome de usuário padrão: admin – Senha padrão: password'; -$phpMussel['lang']['tip_logs'] = 'Olá, {username}.
        Selecionar um arquivo de registro da lista abaixo para visualizar o conteúdo do arquivo de registro.'; -$phpMussel['lang']['tip_quarantine'] = 'Olá, {username}.
        Esta página lista todos os arquivos atualmente em quarentena e facilita o gerenciamento desses arquivos.'; -$phpMussel['lang']['tip_quarantine_disabled'] = 'Nota: A quarentena está atualmente desativada, mas pode ser ativada através da página de configuração.'; -$phpMussel['lang']['tip_see_the_documentation'] = 'Consulte a documentação para obter informações sobre as várias diretrizes de configuração e seus objetivos.'; -$phpMussel['lang']['tip_statistics'] = 'Olá, {username}.
        Esta página mostra algumas estatísticas de uso básicas relativas à instalação do phpMussel.'; -$phpMussel['lang']['tip_statistics_disabled'] = 'Nota: O monitoramento de estatísticas está desativado atualmente, mas pode ser ativado através da página de configuração.'; -$phpMussel['lang']['tip_updates'] = 'Olá, {username}.
        A página de atualizações permite que você instale, desinstale, e atualize os vários componentes do phpMussel (o pacote principal, assinaturas, plugins, arquivos de L10N, etc).'; -$phpMussel['lang']['tip_upload_test'] = 'Olá, {username}.
        A página de carregar teste contém um formulário padrão para carregando arquivos, permitindo que você teste se um arquivo seria normalmente bloqueado através phpMussel quando carregando.'; -$phpMussel['lang']['title_accounts'] = 'phpMussel – Contas'; -$phpMussel['lang']['title_config'] = 'phpMussel – Configuração'; -$phpMussel['lang']['title_file_manager'] = 'phpMussel – Gerenciador de Arquivos'; -$phpMussel['lang']['title_home'] = 'phpMussel – Página Principal'; -$phpMussel['lang']['title_login'] = 'phpMussel – Login'; -$phpMussel['lang']['title_logs'] = 'phpMussel – Arquivos de Registro'; -$phpMussel['lang']['title_quarantine'] = 'phpMussel – Quarentena'; -$phpMussel['lang']['title_statistics'] = 'phpMussel – Estatisticas'; -$phpMussel['lang']['title_updates'] = 'phpMussel – Atualizações'; -$phpMussel['lang']['title_upload_test'] = 'phpMussel – Carregar Teste'; -$phpMussel['lang']['warning'] = 'Atenção:'; -$phpMussel['lang']['warning_php_1'] = 'O sua versão PHP não está mais ativamente apoiada! Atualizando é recomendado!'; -$phpMussel['lang']['warning_php_2'] = 'O sua versão PHP é severamente vulnerável! Atualizando é fortemente recomendado!'; -$phpMussel['lang']['warning_signatures_1'] = 'Nenhum arquivo de assinaturas está ativo!'; - -$phpMussel['lang']['info_some_useful_links'] = 'Alguns links úteis:
          -
        • Questões do phpMussel @ GitHub – Página de problemas para phpMussel (apoio, assistência, etc).
        • -
        • phpMussel @ Spambot Security – Fórum de discussão para phpMussel (apoio, assistência, etc).
        • -
        • phpMussel @ SourceForge – Espelho de download alternativo para phpMussel.
        • -
        • WebSecTools.com – Uma coleção de ferramentas de webmaster simples para proteger sites.
        • -
        • ClamavNet – Página principal para ClamAV (ClamAV® ClamAV é um mecanismo de antivírus de código aberto para detectar trojans, vírus, malware e outras ameaças maliciosas).
        • -
        • SecuriteInfo.com – Empresa de segurança informática que oferece assinaturas complementares para o ClamAV.
        • -
        • PhishTank – Base de dados de phishing utilizada pelo phpMussel URL scanner.
        • -
        • Global PHP Group @ Facebook – PHP recursos de aprendizagem e discussão.
        • -
        • PHP.earth – PHP recursos de aprendizagem e discussão.
        • -
        • VirusTotal – VirusTotal é um serviço gratuito para analisar arquivos e URLs suspeitos.
        • -
        • Hybrid Analysis – Hybrid Analysis é um serviço gratuito para análise de malware fornecido pela Payload Security.
        • -
        • Malwarebytes – Especialistas em malware de computador.
        • -
        • MalwareTips – Fórum de discussão focado em malware útil.
        • -
        • Mapas de Vulnerabilidade – Lista as versões seguras/inseguras de vários pacotes (PHP, HHVM, etc).
        • -
        • Mapas de Compatibilidade – Lista informações de compatibilidade para vários pacotes (CIDRAM, phpMussel, etc).
        • -
        '; diff --git a/libraries/plugins/phpMussel/vault/lang/lang.pt.php b/libraries/plugins/phpMussel/vault/lang/lang.pt.php deleted file mode 100644 index f897678..0000000 --- a/libraries/plugins/phpMussel/vault/lang/lang.pt.php +++ /dev/null @@ -1,132 +0,0 @@ -= 0 || $Num <= 1) ? 0 : 1; -}; - -$phpMussel['lang']['bad_command'] = 'Eu não entendo esse comando, desculpe.'; -$phpMussel['lang']['cli_failed_to_complete'] = 'Falha ao completar processo de verificação'; -$phpMussel['lang']['cli_is_not_a'] = ' não é um arquivo ou diretório.'; -$phpMussel['lang']['cli_ln2'] = " Obrigado por usando phpMussel, um PHP script projetado para detectar trojans,\n vírus, malware e outras ameaças dentro dos arquivos enviados para o seu\n sistema onde quer que o script é enganchado, baseado no assinaturas do ClamAV\n e outros.\n\n PHPMUSSEL COPYRIGHT 2013 e além GNU/GPL V.2 através do Caleb M (Maikuolan).\n\n ~ ~ ~\n\n"; -$phpMussel['lang']['cli_ln3'] = " Correntemente execução phpMussel em CLI modo (comando linha interface).\n\n Para analisar um arquivo ou diretório, digitá 'scan', seguido pelo nome do\n arquivo ou diretório que você deseja phpMussel para analisar e pressione\n Enter; Digitá 'c' e pressione Enter por uma lista de CLI modo comandos; Digitá\n 'q' e pressione Enter para sair:"; -$phpMussel['lang']['cli_pe1'] = 'Não é um válido PE arquivo!'; -$phpMussel['lang']['cli_pe2'] = 'PE Seções:'; -$phpMussel['lang']['cli_signature_placeholder'] = 'O-NOME-DA-SUA-ASSINATURA'; -$phpMussel['lang']['cli_working'] = 'Em processo'; -$phpMussel['lang']['corrupted'] = 'Detectado corrompido PE'; -$phpMussel['lang']['data_not_available'] = 'Dados não disponíveis.'; -$phpMussel['lang']['denied'] = 'Carregar Negado!'; -$phpMussel['lang']['denied_reason'] = 'Carregamento tentativa foi bloqueado pelos motivos a seguir indicados:'; -$phpMussel['lang']['detected'] = 'Detectado {vn}'; -$phpMussel['lang']['detected_control_characters'] = 'Caracteres de controle detectado'; -$phpMussel['lang']['encrypted_archive'] = 'Detectado compactado arquivo criptografado; Compactado arquivos criptografados não permitido'; -$phpMussel['lang']['failed_to_access'] = 'Falha ao acesso '; -$phpMussel['lang']['file'] = 'Arquivo'; -$phpMussel['lang']['filesize_limit_exceeded'] = 'Arquivo tamanho limite excedido'; -$phpMussel['lang']['filetype_blacklisted'] = 'Tipo de arquivo está na negra lista'; -$phpMussel['lang']['finished'] = 'Terminado'; -$phpMussel['lang']['generated_by'] = 'Gerado por'; -$phpMussel['lang']['greylist_cleared'] = ' Greylist esvaziado.'; -$phpMussel['lang']['greylist_not_updated'] = ' Greylist não atualizado.'; -$phpMussel['lang']['greylist_updated'] = ' Greylist atualizado.'; -$phpMussel['lang']['image'] = 'Imagem'; -$phpMussel['lang']['instance_already_active'] = 'Instância já está ativo! Por favor, verifique seus ganchos.'; -$phpMussel['lang']['invalid_data'] = 'Dados inválidos!'; -$phpMussel['lang']['invalid_file'] = 'Arquivo inválido'; -$phpMussel['lang']['invalid_url'] = 'URL inválido!'; -$phpMussel['lang']['ok'] = 'OK'; -$phpMussel['lang']['only_allow_images'] = 'Carregar de arquivos que não são imagens não é permitida'; -$phpMussel['lang']['plugins_directory_nonexistent'] = 'Diretório de plugins não existe!'; -$phpMussel['lang']['quarantined_as'] = "Em quarentena como \"/vault/quarantine/{QFU}.qfu\".\n"; -$phpMussel['lang']['recursive'] = 'Recursão profundidade limite excedido'; -$phpMussel['lang']['required_variables_not_defined'] = 'Variáveis necessárias não estão definidas: Não pode continuar.'; -$phpMussel['lang']['SafeBrowseLookup_200'] = 'URL potencialmente perigoso detectado'; -$phpMussel['lang']['SafeBrowseLookup_400'] = 'Erro de solicitação do API'; -$phpMussel['lang']['SafeBrowseLookup_401'] = 'Erro de autorização do API'; -$phpMussel['lang']['SafeBrowseLookup_503'] = 'Serviço do API está indisponível'; -$phpMussel['lang']['SafeBrowseLookup_999'] = 'Erro do API desconhecida'; -$phpMussel['lang']['scan_aborted'] = 'Verificação abortado!'; -$phpMussel['lang']['scan_chameleon'] = '{x} camaleão ataque detectado'; -$phpMussel['lang']['scan_checking'] = 'Verificação'; -$phpMussel['lang']['scan_checking_contents'] = 'Sucesso! Prosseguindo para verificar o conteúdo.'; -$phpMussel['lang']['scan_command_injection'] = 'Comando injeção tentativa detectado'; -$phpMussel['lang']['scan_complete'] = 'Completo'; -$phpMussel['lang']['scan_extensions_missing'] = 'Fracassado (faltando extensões necessárias)!'; -$phpMussel['lang']['scan_filename_manipulation_detected'] = 'Arquivo nome manipulação detectado'; -$phpMussel['lang']['scan_missing_filename'] = 'Nome do arquivo está ausente'; -$phpMussel['lang']['scan_not_archive'] = 'Fracassado (vazio ou não um arquivo)!'; -$phpMussel['lang']['scan_no_problems_found'] = 'Não problemas encontrados.'; -$phpMussel['lang']['scan_reading'] = 'Lendo'; -$phpMussel['lang']['scan_signature_file_corrupted'] = 'Assinatura arquivo corrompido'; -$phpMussel['lang']['scan_signature_file_missing'] = 'Assinatura arquivo faltando'; -$phpMussel['lang']['scan_tampering'] = 'Detectado potencialmente perigoso arquivo adulteração'; -$phpMussel['lang']['scan_unauthorised_upload'] = 'Não autorizada arquivo carregar manipulação detectado'; -$phpMussel['lang']['scan_unauthorised_upload_or_misconfig'] = 'Não autorizada arquivo carregar manipulação ou mau configuração detectado! '; -$phpMussel['lang']['started'] = 'Começado'; -$phpMussel['lang']['too_many_urls'] = 'Demasiados URLs'; -$phpMussel['lang']['upload_error_1'] = 'Arquivo tamanho excede a directiva upload_max_filesize. '; -$phpMussel['lang']['upload_error_2'] = 'Arquivo tamanho excede o formulário especificados arquivo tamanho limite. '; -$phpMussel['lang']['upload_error_34'] = 'Carregar falha! Contato o hostmaster para ajuda! '; -$phpMussel['lang']['upload_error_6'] = 'Carregar diretório faltando! Contato o hostmaster para ajuda! '; -$phpMussel['lang']['upload_error_7'] = 'Disco escrita erro! Contato o hostmaster para ajuda! '; -$phpMussel['lang']['upload_error_8'] = 'PHP mau configuração detectado! Contato o hostmaster para ajuda! '; -$phpMussel['lang']['upload_limit_exceeded'] = 'Carregar limite excedido'; -$phpMussel['lang']['wrong_password'] = 'Contrasenha errada; Ação negado.'; -$phpMussel['lang']['x_does_not_exist'] = 'não existe'; -$phpMussel['lang']['_exclamation'] = '! '; -$phpMussel['lang']['_exclamation_final'] = '!'; -$phpMussel['lang']['_fullstop'] = '. '; -$phpMussel['lang']['_fullstop_final'] = '.'; - -$phpMussel['lang']['cli_commands'] = " q - - Deixar CLI. - - Alias: quit, exit. - md5_file - - Gerar MD5 assinaturas de arquivos [Sintaxe: md5_file arquivo]. - - Alias: m. - sha1_file - - Gerar SHA1 assinaturas de arquivos [Sintaxe: sha1_file arquivo]. - md5 - - Gerar MD5 assinatura de string [Sintaxe: md5 string]. - sha1 - - Gerar SHA1 assinatura de string [Sintaxe: sha1 string]. - hex_encode - - Converter binária string para hexadecimal [Sintaxe: hex_encode string]. - - Alias: x. - hex_decode - - Converter hexadecimal para binária string [Sintaxe: hex_decode string]. - base64_encode - - Converter binária string para base64 string [Sintaxe: base64_encode string]. - - Alias: b. - base64_decode - - Converter base64 string para binária string [Sintaxe: base64_decode string]. - pe_meta - - Extrair metadados de um arquivo PE [Sintaxe: pe_meta arquivo]. - url_sig - - Gerar assinaturas do scanner de URL [Sintaxe: url_sig string]. - scan - - Verificar arquivo ou diretório [Sintaxe: scan nome_do_arquivo]. - - Alias: s. - c - - Imprimir esta lista de comandos. -"; diff --git a/libraries/plugins/phpMussel/vault/lang/lang.ru.fe.php b/libraries/plugins/phpMussel/vault/lang/lang.ru.fe.php deleted file mode 100644 index e5e8335..0000000 --- a/libraries/plugins/phpMussel/vault/lang/lang.ru.fe.php +++ /dev/null @@ -1,301 +0,0 @@ -Домашняя Страница | Выйдите'; -$phpMussel['lang']['bNav_logout'] = 'Выйдите'; -$phpMussel['lang']['config_attack_specific_archive_file_extensions'] = 'Опознаёт расширение архива или файла (CSV-формат; включать или удалять только при проблемах; удаление без нужны может вызвать для архива сигнал тревоги; включение без нужды может внести в белый список то, что раньше определялось как возможная атака; изменяйте список очень осторожно; помните, что программа не влияет на функцию архива и не может анализировать содержание). Этот список содержит форматы архивов, наиболее часто используемых большинством систем и CMS, однако он не завершён, но сделано это намеренно.'; -$phpMussel['lang']['config_attack_specific_block_control_characters'] = 'Должны ли файлы, содержащие командные сигналы (отличные от Newline/конец строки), быть блокированными ([\x00-\x08\x0b\x0c\x0e\x1f\x7f])? При загрузке только «голого» текста Вы можете активировать эту опцию, чтобы усилить защиту своей системы. Но когда она активирована, а Вы хотите загрузить не только текст, то программа подаст вам ложный сигнал тревоги. False = Не блокировать [Стандарт]; True = Блокировать.'; -$phpMussel['lang']['config_attack_specific_chameleon_from_exe'] = 'Поиск способных загрузиться заголовков в файлах, которые нельзя ни загрузить, ни определить как архив; поиск способных загрузиться файлов, чьи заголовки не соответствуют требованиям. False = Деактивировано; True = Активировано.'; -$phpMussel['lang']['config_attack_specific_chameleon_from_php'] = 'Поиск PHP-заголовков в файлах, которые не были опознаны ни как PHP-файлы, ни как архивы. False = Деактивировано; True = Активировано.'; -$phpMussel['lang']['config_attack_specific_chameleon_to_archive'] = 'Поиск архивов с некорректными заголовками (поддерживаются: BZ, GZ, RAR, ZIP, RAR, GZ). False = Деактивировано; True = Активировано.'; -$phpMussel['lang']['config_attack_specific_chameleon_to_doc'] = 'Поиск офисных документов с некорректными заголовками (поддерживаются: DOC, DOT, PPS, PPT, XLA, XLS, WIZ). False = Деактивировано; True = Активировано.'; -$phpMussel['lang']['config_attack_specific_chameleon_to_img'] = 'Поиск графиков с некорректными заголовками (поддерживаются: BMP, DIB, PNG, GIF, JPEG, JPG, XCF, PSD, PDD, WEBP). False = Деактивировано; True = Активировано.'; -$phpMussel['lang']['config_attack_specific_chameleon_to_pdf'] = 'Поиск PDF-файлов с некорректными заголовками. False = Деактивировано; True = Активировано.'; -$phpMussel['lang']['config_attack_specific_corrupted_exe'] = 'Дефектные файлы и разобрать ошибки. False = Игнорировать; True = Блокировать [Стандарт]. Должны ли потенциально дефектные файлы при загрузке проверяться и блокироваться? В случае когда определённые аспекты PE-файла повреждены или могут быть неправильно обработаны, то часто (однако не всегда) они идентифицируются как инфицированные файлы. Многие антивирусные программы используют различные методы по опознанию вирусов в таких файлах. Программисты вирусов, зная об этом, прилагают много усилий к тому, чтобы вирус остался неопознанным.'; -$phpMussel['lang']['config_attack_specific_decode_threshold'] = 'Порог числа исходных данных, которые должны узнаваться командой декодирования (если во время процесса сканирования не возникнут ощутимые проблемы производительности). Стандартная установка 512КБ. Ноль или нулевое значение деактивирует ограничение (все такие ограничения нужно устранять, ориентируясь на величину файла).'; -$phpMussel['lang']['config_attack_specific_scannable_threshold'] = 'Порог числа исходных данных, которые phpMussel должна прочитать и просканировать (если во время процесса сканирования возникнут ощутимые проблемы производительности). Стандартная установка 32МБ. Ноль или нулевое значение деактивирует ограничения. Основное правило: это значение должно быть меньше среднего объёма загружаемых файлов, которые Вы хотите скачать на свой сервер или веб-страницу, не больше нормы filesize_limit, и не превышать пятой части общей PHP-памяти «php.ini» файлов конфигурации. Эти правила не дают phpMussel использовать слишком большой объём памяти (что препятствовало бы phpMussel успешно сканировать файлы, превышающие определенную величину).'; -$phpMussel['lang']['config_compatibility_ignore_upload_errors'] = 'Как правило, эта директива находится в положении False/Деактивировано, если только нет потребности в ней для правильного функционирования phpMussel на вашей системе. При находящейся в положении False/Деактивировано директиве phpMussel, опознав нѐкий элемент в $_FILES array(), начинает проверять файлы, представляющие этот элемент. В случае если файлы окажутся пустыми, phpMussel подаёт сигнал тревоги. Это нормальная реакция phpMussel. Однако некоторые CMS нормальными считают пустые элементы в $_FILES, и сигнал тревоги подаётся в случае отсутствия пустых элементов. В этой ситуации возникает конфликт между нормальным поведением phpMussel и CMS. Если это касается вашей CMS, то вам необходимо переключить опцию в позицию True/Активировано, тогда phpMussel не будет искать пустые элементы, а найдя будет их игнорировать, не сообщая об ошибке. Сигнал запроса страницы, таким образом, может продолжаться. False = Деактивировано; True = Активировано.'; -$phpMussel['lang']['config_compatibility_only_allow_images'] = 'Ожидая загрузку на Вашу систему или CMS только графических изображений, или Вы желаете, чтобы загружались только графические изображения и больше никакие другие файлы, то эта директива должна быть активирована (ON), во всех остальных случаях она остаётся деактивированной (OFF). Активация этой директиВы заставит phpMussel блокировать все попытки загрузить файлы, не относящиеся к графикам, не сканируя их. Эта директива поможет сократить время обработки и улучшить использование памяти, когда будут загружаться файлы, не относящиеся к графическим изображениям. False = Деактивировано; True = Активировано.'; -$phpMussel['lang']['config_files_block_encrypted_archives'] = 'Нужно ли узнавать и блокировать зашифрованные архивы? phpMussel не может сканировать зашифрованные архивы. Не исключена вероятность того, что кодировка архива используется агрессором, чтобы избежать phpMussel, антивирусных сканеров и других подобных защитных программ. Умение phpMussel блокировать зашифрованные архиВы может быть поможет уменьшить риски, связанные с этой возможностью. False = Нет; True = Да [Стандарт].'; -$phpMussel['lang']['config_files_check_archives'] = 'Нужно ли проверять содержимое архивов? False = Нет (никакой проверки); True = Да (будет проверяться) [Стандарт]. В настоящее время поддерживается проверка только BZ/BZIP2, GZ/GZIP, LZF, PHAR, TAR и ZIP архивов (на данный момент проверка RAR, CAB, 7z и др. не поддерживается). Функция не надёжна! Мы настоятельно рекомендуем оставить эту функцию активированной, хотя не можем гарантировать, что обнаружено будет всё. Архивная проверка в данный момент не рекурсивна для PHAR-архивов или ZIP-архивов.'; -$phpMussel['lang']['config_files_filesize_archives'] = 'Должен ли объём файла чёрного/белого списка быть перенесён на содержание архива? False = Нет (всё поместить в серый лист); True = Да [Стандарт].'; -$phpMussel['lang']['config_files_filesize_limit'] = 'Ограничение объема файла в килобайтах. 65536 = 64MB [Стандарт]; 0 = без ограничений (устанавливается для «серого листа»), принимается любое (положительное) цифровое значение. Это полезно, если PHP-конфигурация Вашей системы в каждом процессе ограничивает использование имеющейся памяти или ограничивает объём загружаемого файла.'; -$phpMussel['lang']['config_files_filesize_response'] = 'Обработка файлов, превышающих ограничение объёма файлов (если указано). False = Добавить к белому списку; True = Добавить к чёрному списку [Стандарт].'; -$phpMussel['lang']['config_files_filetype_archives'] = 'Должен ли тип файла чёрного/белого списка быть перенесён на содержание архива? False = Нет (всё поместить в серый лист) [Стандарт]; True = Да.'; -$phpMussel['lang']['config_files_filetype_blacklist'] = 'Черный список:'; -$phpMussel['lang']['config_files_filetype_greylist'] = 'Серый список:'; -$phpMussel['lang']['config_files_filetype_whitelist'] = 'Если ваша система позволяет или полностью запрещает загружать специальные файлы, то, отсортировав их на белый, чёрный или серый список, программа ускоряет процесс сканирования, пропуская эти типы файлов. Формат CSV (comma separated values, отделяемые запятой величины). Если Вы хотите подвергнуть проверке всё, то оставьте переменные величины пустыми, это деактивирует белый, чёрный и серый списки. Логичная последовательность обработки: Файл, занесённый с белый список, сканирует не блокируя; файл из белого или серого списка не проверяет. Файл из чёрного списка не сканирует, но всё же блокирует; файл из серого списка не проверяет. Если файл относится к типу файлов, занесённых в серый список, то независимо от того пуст или заполнен серый список, программа будет сканировать файл как обычно и, базируясь на сканировании, определит должен ли он блокироваться или нет; если серый список заполнен и тип файла не значится в сером списке, то программа поступит с ним так, как будто он занесён в чёрный список, т.е. не сканирует его, но всё равно блокирует. Белый список:'; -$phpMussel['lang']['config_files_max_recursion'] = 'Максимальная граница рекурсионной глубины архивов. Стандарт = 10.'; -$phpMussel['lang']['config_files_max_uploads'] = 'Максимально разрешённое количество проверяемых файлов в течение одной загрузки файлов. Если количество скачиваемых файлов превышает это значение, то, прежде чем сканирование прекратится, пользователь будет об этом проинформирован. Эта опция защищает от теоретической DDoS-атаки на вашу систему или CMS, тем что, пока агрессор перегружает phpMussel, останавливается PHP-процесс. Рекомендуется установить число 10. В зависимости от мощности вашего устройства Вы можете повышать или уменьшать это значение. Внимание! Это значение не учитывает содержание архивов.'; -$phpMussel['lang']['config_general_cleanup'] = 'После исполнения стирает переменные величины данного руководства и очищает кэш-память. Если Вы не хотите пользоваться руководством после того, как проверили загрузку программы, то установите опцию true, чтобы минимизировать загрузку памяти. Если Вы будете использовать руководство и для других целей, то установите опцию false, дабы избежать ненужного многократного считывания данных в памяти. Как правило, устанавливается опция true, но потом Вы сможете пользоваться руководством только для контроля файлов. Не воздействует на CLI-модус.'; -$phpMussel['lang']['config_general_default_algo'] = 'Определяет, какой алгоритм использовать для всех будущих паролей и сеансов. Опции: PASSWORD_DEFAULT (стандарт), PASSWORD_BCRYPT, PASSWORD_ARGON2I (требует PHP >= 7.2.0).'; -$phpMussel['lang']['config_general_delete_on_sight'] = 'Эта опция позволяет в течение сканирования немедленно удалять файлы при наличии в них опознавательных признаков, содержащихся в подписи или других методах. При этом не будут затрагиваться файлы, идентифицированные как неинфицированные. Если в архиве будет инфицирован хотя бы один файл, то будет удалён весь архив. Во время загрузки файлов эту функцию активировать не обязательно, так как PHP после исполнения удаляет содержимое кэш-памяти. Это означает, что PHP удалит каждый скаченный через сервер файл, если он не перемещён, не скопирован или не удалён. Эта опция, как дополнительная мера, была введена для большей безопасности, но в основном для систем, в которых PHP ведёт себя по-другому. False = После проверки файл останется нетронутым [Стандарт]; True = После проверки инфицированный файл будет немедленно удалён.'; -$phpMussel['lang']['config_general_disable_cli'] = 'Деактивировать ли CLI-модус? Обычно CLI-модус активирован. Однако иногда он может отрицательно влиять на определённые тестовые программы (например на PHPUnit) и другие приложения, базирующиеся на CLI. Если CLI-модус нельзя деактивировать, то эту команду нужно игнорировать. False = CLI-модус активирован [Стандарт]; True = CLI-модус деактивирован.'; -$phpMussel['lang']['config_general_disable_frontend'] = 'Деактивировать доступ к фронтенд? Доступ к фронтенд может сделать phpMussel более управляемым, но также может быть потенциальный риск безопасности. Рекомендуется чтобы управлять phpMussel через back-end когда возможно, но доступ к фронтенд предоставлен для того когда это не возможно. Держите его деактивирована за исключением того если вам это нужно. False = Активировать доступ к фронтенд; True = Деактивировать доступ к фронтенд [Стандарт].'; -$phpMussel['lang']['config_general_disable_webfonts'] = 'Отключить веб-шрифты? True = Да; False = Нет [Стандарт].'; -$phpMussel['lang']['config_general_enable_plugins'] = 'Включить поддержку phpMussel плагинов? False = Нет; True = Да [Стандарт].'; -$phpMussel['lang']['config_general_forbid_on_block'] = 'Возвращённый 403-HTTP-заголовок при заблокированной загрузке данных. False = Нет (200); True = Да (403) [Стандарт].'; -$phpMussel['lang']['config_general_FrontEndLog'] = 'Файл для запись всех попыток входа в фронтенд. Задайте имя файлу, или оставьте пустым чтобы деактивировать опцию.'; -$phpMussel['lang']['config_general_honeypot_mode'] = 'При активированном Honeypot-модуса phpMussel изолирует каждый загружаемый файл без всякой проверки, не обращая внимание на подписи. Эта функция предназначена исключительно для исследования вирусов и вредоносных программ. Мы рекомендуем использовать эту функцию phpMussel исключительно для «Honeypotting», а не для проверки загружаемых файлов или других целей. В стандартной комплектации эта функция деактивирована. False = Деактивировано [стандартное значение]; True = Активировано.'; -$phpMussel['lang']['config_general_ipaddr'] = 'Место IP-адреса актуального соединения в общем потоке данных (полезно для Cloud-сервиса). Стандарт = REMOTE_ADDR. Внимание! Изменяйте это значение только в том случае, если Вы уверены в своих действиях!'; -$phpMussel['lang']['config_general_lang'] = 'Задаёт phpMussel стандарт языка.'; -$phpMussel['lang']['config_general_maintenance_mode'] = 'Включить режим обслуживания? True = Да; False = Нет [Стандарт]. Отключает все, кроме фронтенд. Иногда полезно при обновлении CMS, фреймворков и т.д.'; -$phpMussel['lang']['config_general_max_login_attempts'] = 'Максимальное количество попыток входа в систему (фронтенд). Стандарт = 5.'; -$phpMussel['lang']['config_general_numbers'] = 'Как Вы предпочитаете номера для отображения? Выберите пример, который выглядит наиболее правильным для вас.'; -$phpMussel['lang']['config_general_quarantine_key'] = 'phpMussel способна держать на карантине попытки загрузить файл, если это будет Вам нужно. Эту функцию должны деактивировать те пользователи, которые хотят лишь защитить свои интернет-сайты или окружение своего хоста, но дальнейший контроль выделенных файлов им не интересен. Активировать эту функцию должны те пользователи, которые хотят анализировать изолированные файлы на вредоносность или тому подобное. Изоляция выделенных файлов иногда может использоваться для поиска ошибки при частом появлении сигнала тревоги. Чтобы деактивировать функцию карантина, не заполняйте quarantine_key, и удалите содержание строки, если она заполнена. Для активирования функции карантина задайте значение. quarantine_key = Это важный элемент карантинной функции, способная защитить функцию карантина от атак вредоносных программ, и предотвратить запуск удерживаемых на карантине файлов. Значение quarantine_key Вы должны хранить втайне от всех, как и пароли. Оптимально в сочетании с delete_on_sight.'; -$phpMussel['lang']['config_general_quarantine_max_filesize'] = 'Максимально допустимый объём файлов, которые могут быть изолированы в карантине. В карантинном регистре НЕ будет сохраняться файлы, объём которых больше указанного значения. Эта команда важна тем, что затрудняет потенциальному агрессору наводнить нежелательными данными ваш карантинный регистр, а также кэш-память вашего хост-сервера. Стандарт = 2МБ.'; -$phpMussel['lang']['config_general_quarantine_max_usage'] = 'Максимально допустимая загрузка карантина. Когда общий объём файлов на карантине достигает этого значения, то начинают удаляться старые файлы пока не будет достигнуто необходимое значение. Эта команда важна тем, что затрудняет потенциальному агрессору наводнить нежелательными данными ваш карантинный регистр, а также кэш-память вашего хост-сервера. Стандарт = 64МБ.'; -$phpMussel['lang']['config_general_scan_cache_expiry'] = 'Как долго должна phpMussel хранить результаты сканирования в буфере? Значение измеряется секундами. Стандартное значение 21600 секунд (6 часов). Значение равное 0 деактивирует временную память результатов сканирования.'; -$phpMussel['lang']['config_general_scan_kills'] = 'Название файла, в который записываются все заблокированные загрузки. Задайте имя файлу, или оставьте пустым чтобы деактивировать опцию.'; -$phpMussel['lang']['config_general_scan_log'] = 'Название файла, в который записываются результаты всех контрольных проверок. Задайте имя файлу, или оставьте пустым чтобы деактивировать опцию.'; -$phpMussel['lang']['config_general_scan_log_serialized'] = 'Название файла, в который записываются результаты всех контрольных проверок (сериализовано Формат). Задайте имя файлу, или оставьте пустым чтобы деактивировать опцию.'; -$phpMussel['lang']['config_general_statistics'] = 'Отслеживать статистику использования phpMussel? True = Да; False = Нет [Стандарт].'; -$phpMussel['lang']['config_general_timeFormat'] = 'Формат нотации даты, используемый phpMussel. Дополнительные опции могут быть добавлены по запросу.'; -$phpMussel['lang']['config_general_timeOffset'] = 'Смещение часового пояса в минут.'; -$phpMussel['lang']['config_general_timezone'] = 'Ваш часовой пояс.'; -$phpMussel['lang']['config_general_truncate'] = 'Усекать лог-файлы, когда они достигают определенного размера? Значение это максимальный размер в Б/КБ/МБ/ГБ/ТБ, до которого файл журнала может увеличиться до усечения. Стандартное значение 0КБ отключает усечение (лог-файлы может расти неограниченно). Примечание: относится к отдельным лог-файлы! Размер файлов журнала не учитывается совместно.'; -$phpMussel['lang']['config_heuristic_threshold'] = 'phpMussel имеет определённые подписи, с помощью которых она идентифицирует подозрительные и потенциально вредоносные свойства загружаемых файлов, не проверяя при этом сами файлы на вредоносность. При помощи этой директиВы phpMussel определяет степень опасности подозрительных и потенциально вредоносных файлов, прежде чем назвать их вредоносными. В этой связи, определение степени опасности = это общее количество подозрительных и потенциально вредоносных свойств. Стандартное значение равняется 3. Значение меньше 3, как правило, ведёт к увеличению ложных сигналов тревоги и опознанию большего числа вредных файлов; значение больше 3 вызывает меньшее количество ложных сигналов тревоги и метиться как вредные будет незначительное количество файлов. Оставив это значение таким, Вы должны осознавать проблемы, которые будут вызваны этой установкой.'; -$phpMussel['lang']['config_signatures_Active'] = 'Список активных файлов сигнатур, разделенных запятыми.'; -$phpMussel['lang']['config_signatures_detect_adware'] = 'Интерпретировать подписей для обнаружить рекламное программное? False = Нет; True = Да [Стандарт].'; -$phpMussel['lang']['config_signatures_detect_deface'] = 'Интерпретировать подписей для обнаружить дифейсмент/обезображивание программы? False = Нет; True = Да [Стандарт].'; -$phpMussel['lang']['config_signatures_detect_encryption'] = 'Должен ли phpMussel обнаруживать и блокировать зашифрованные файлы? False = Нет; True = Да [Стандарт].'; -$phpMussel['lang']['config_signatures_detect_joke_hoax'] = 'Интерпретировать подписей для обнаружить шутка вредоносные/вирусы программы? False = Нет; True = Да [Стандарт].'; -$phpMussel['lang']['config_signatures_detect_packer_packed'] = 'Интерпретировать подписей для обнаружить упаковщики и упакованные данные? False = Нет; True = Да [Стандарт].'; -$phpMussel['lang']['config_signatures_detect_pua_pup'] = 'Интерпретировать подписей для обнаружить PUAs/PUPs (потенциально нежелательных программы/приложений)? False = Нет; True = Да [Стандарт].'; -$phpMussel['lang']['config_signatures_detect_shell'] = 'Интерпретировать подписей для обнаружить веб-шелл скрипты? False = Нет; True = Да [Стандарт].'; -$phpMussel['lang']['config_signatures_fail_extensions_silently'] = 'Должна phpMussel сообщать, что отсутствует расширение файла? Если fail_extensions_silently деактивирована, то при сканировании придёт сообщение об отсутствии расширения файла, если же fail_extensions_silently активирована, то файлы с отсутствующим расширением будут игнорироваться, и при сканировании придёт сообщение, что с этими файлами всё в порядке. Деактивация или активация могут повысить Вашу безопасность, однако способствовать увеличению ложных сообщений. False = Деактивировано; True = Активировано [Стандарт].'; -$phpMussel['lang']['config_signatures_fail_silently'] = 'Реакция phpMussel на отсутсвие подписей или дефект в них. Когда fail_silently деактивирована, то в течение сканирования будет сообщаться об отсутствии подписи или изъянах в ней. В случае если fail_silently активирована, то отсутствующие или дефектные подписи будут игнорироваться, не сообщая о проблемах. Эта опция должна оставаться такой, если только Вы не ожидаете отказа системы или чего-то подобного. False = Деактивировано; True = Активировано [Стандарт].'; -$phpMussel['lang']['config_template_data_css_url'] = 'Шаблонный файл для персонализированные темы использует внешние CSS свойства и шаблонный файл для стандарт тема использует внутренние CSS свойства. Поручить phpMussel использовать персонализированные темы шаблонный файл, указать адрес публичного HTTP в CSS файлов вашей темы используя css_url переменная. Если оставить это переменная пустым, phpMussel будет использовать шаблонный файл для стандарт тема.'; -$phpMussel['lang']['config_template_data_Magnification'] = 'Увеличение шрифта. Стандарт = 1.'; -$phpMussel['lang']['config_template_data_theme'] = 'Стандартная тема для phpMussel.'; -$phpMussel['lang']['config_urlscanner_cache_time'] = 'Как долго (в секундах) результаты API вызовов, которые должны быть в кэше? Стандарт 3600 секунд (1 час).'; -$phpMussel['lang']['config_urlscanner_google_api_key'] = 'Активировать Google Safe Browsing API интеграция если необходимое API ключ вводится.'; -$phpMussel['lang']['config_urlscanner_lookup_hphosts'] = 'Активировать hpHosts API интеграция если true.'; -$phpMussel['lang']['config_urlscanner_maximum_api_lookups'] = 'Максимально допустимая количество API звонков, которые проводятся в каждом сессии сканирования. Потому каждый дополнительный API запрос, увеличивает время для сессии сканирования, Вы мог бы хотите, чтобы указать предел при определенных обстоятельствах чтобы ускорить процесс сканирования по всему. Если 0 установлен, нет предела применяется. Стандарт, значение установленов 10.'; -$phpMussel['lang']['config_urlscanner_maximum_api_lookups_response'] = 'Что должно произойти, если максимальное число допустимых API запросов будет достигнута? False = Не делайте ничего (Продолжить обработку) [Стандарт]; True = Отметить/блокировки файла.'; -$phpMussel['lang']['config_virustotal_vt_public_api_key'] = 'Для большей защиты от вирусов, троянов, вредоносных программ и других угроз phpMussel может сканировать файлы с Virus Total API. Стандартная установка = опция Virus Total API деактивирована. Для активизации нужно воспользоваться API-ключом от Virus Total. Эта опция даёт много преимуществ, поэтому рекомендуется её активировать. Важно осознавать: для использования Virus Total API, необходимо согласиться со всеми условиями пользования и соблюдать все директивы, описанные в документах Virus Total! Эту функцию интеграции нельзя применять КРОМЕ: Вы прочитали инструкцию по использованию Virus Total и API и согласен с ней. Как минимум, Вы прочитали предисловие к Virus Total Public API документации и понял о чём речь (всё после „Virus Total Public API v2.0“ но до „Contents“).'; -$phpMussel['lang']['config_virustotal_vt_quota_rate'] = 'Согласно Virus Total API-документации «Лимит времени, за которое должны обрабатываться 4 любых запроса, составляет 1 минуту. Используя Honeyclient, Honeypot или какую-либо другую активную систему, которая содействует VirusTotal, и не только вызывает сообщения, то Вы имеете право на более высокий лимит времени». phpMussel будет строго придерживаться этого лимита. Для его повышения даны эти две директивы, указывающие phpMussel на какой лимит она должна ориентироваться. Рекомендуется без необходимости это значение не повышать. С возникновением проблем по достижению лимита, уменьшение этого значения должно немного помочь. Твой лимит будет установлен как vt_quota_rate запросы любого типа в каждом vt_quota_time минутном промежутке времени.'; -$phpMussel['lang']['config_virustotal_vt_quota_time'] = '(См. Описание выше).'; -$phpMussel['lang']['config_virustotal_vt_suspicion_level'] = 'Допуская файлы к сканированию Virus Total API, phpMussel будет ограничиваться только теми файлами, которые рассматриваются «опасными». Опционально Вы можете регулировать эти ограничения, изменив значение vt_suspicion_level директивы.'; -$phpMussel['lang']['config_virustotal_vt_weighting'] = 'Должна phpMussel использовать результаты сканирования с Virus Total API в качестве опознания или как определение степени доверия? Существование этой директиВы объясняется тем, что сканирование файла со многими ядрами должно быть более тщательным (как это делает Virus Total) и, следовательно, будет найдено большее количество вредоносных файлов, что может привести к большему количеству ложных тревог. Есть ситуации, когда результаты сканирования бывают выше степени доверия, и тогда применяется однозначный результат. Применение значения 0 означает, что результаты сканирования будут применяться как опознание. В этом случае phpMussel будет рассматривать файл как вредоносный, если какие-то используемые в сканировании ядра файлов Virus Total обозначил опасными. При установке другого значения, результаты сканирования с Virus Total API будут использоваться как определение степени доверия. Количество используемых Virus Total ядер, обозначающих файл как вредоносный, будет служить степенью доверия (или определением степени доверия). Используемое значение будет определять, какую степень доверия (минимальную или требуемую) примет phpMussel во внимание, чтобы признать сканируемый файл вредоносным или безвредным. Стандартное значение = 0.'; -$phpMussel['lang']['Extended Description: phpMussel'] = 'Основной пакет (минус сигнатуры, документация, и конфигурация).'; -$phpMussel['lang']['field_activate'] = 'Активировать'; -$phpMussel['lang']['field_clear_all'] = 'Очистить все'; -$phpMussel['lang']['field_component'] = 'Компонент'; -$phpMussel['lang']['field_create_new_account'] = 'Создать Новый Аккаунт'; -$phpMussel['lang']['field_deactivate'] = 'Дезактивировать'; -$phpMussel['lang']['field_delete_account'] = 'Удалить Аккаунт'; -$phpMussel['lang']['field_delete_all'] = 'Удалить все'; -$phpMussel['lang']['field_delete_file'] = 'Удалить'; -$phpMussel['lang']['field_download_file'] = 'Скачать'; -$phpMussel['lang']['field_edit_file'] = 'Редактировать'; -$phpMussel['lang']['field_false'] = 'False (Ложный)'; -$phpMussel['lang']['field_file'] = 'Файл'; -$phpMussel['lang']['field_filename'] = 'Имя файла: '; -$phpMussel['lang']['field_filetype_directory'] = 'Каталог'; -$phpMussel['lang']['field_filetype_info'] = 'Файл {EXT}'; -$phpMussel['lang']['field_filetype_unknown'] = 'Неизвестный'; -$phpMussel['lang']['field_install'] = 'Устанавливать'; -$phpMussel['lang']['field_latest_version'] = 'Последняя Версия'; -$phpMussel['lang']['field_log_in'] = 'Войдите'; -$phpMussel['lang']['field_more_fields'] = 'Дополнительные Поля'; -$phpMussel['lang']['field_new_name'] = 'Новое имя:'; -$phpMussel['lang']['field_ok'] = 'ОК'; -$phpMussel['lang']['field_options'] = 'Опции'; -$phpMussel['lang']['field_password'] = 'Пароль'; -$phpMussel['lang']['field_permissions'] = 'Разрешения'; -$phpMussel['lang']['field_quarantine_key'] = 'Карантинный ключ'; -$phpMussel['lang']['field_rename_file'] = 'Переименовывать'; -$phpMussel['lang']['field_reset'] = 'Сбросить'; -$phpMussel['lang']['field_restore_file'] = 'Восстановить'; -$phpMussel['lang']['field_set_new_password'] = 'Установить новый пароль'; -$phpMussel['lang']['field_size'] = 'Общий Размер: '; -$phpMussel['lang']['field_size_bytes'] = ['байт', 'байта', 'байтов']; -$phpMussel['lang']['field_size_GB'] = 'ГБ'; -$phpMussel['lang']['field_size_KB'] = 'КБ'; -$phpMussel['lang']['field_size_MB'] = 'МБ'; -$phpMussel['lang']['field_size_TB'] = 'ТБ'; -$phpMussel['lang']['field_status'] = 'Статус'; -$phpMussel['lang']['field_system_timezone'] = 'Использовать часовой пояс по умолчанию.'; -$phpMussel['lang']['field_true'] = 'True (Правда)'; -$phpMussel['lang']['field_uninstall'] = 'Удалить'; -$phpMussel['lang']['field_update'] = 'Обновить'; -$phpMussel['lang']['field_update_all'] = 'Обновить все'; -$phpMussel['lang']['field_upload_file'] = 'Загрузить новый файл'; -$phpMussel['lang']['field_username'] = 'Имя Пользователя'; -$phpMussel['lang']['field_your_version'] = 'Ваша Версия'; -$phpMussel['lang']['header_login'] = 'Пожалуйста войдите чтобы продолжить.'; -$phpMussel['lang']['label_active_config_file'] = 'Активный файл конфигурации: '; -$phpMussel['lang']['label_blocked'] = 'Загружает блокировки'; -$phpMussel['lang']['label_branch'] = 'Ветвь последние стабильный:'; -$phpMussel['lang']['label_events'] = 'События сканирования'; -$phpMussel['lang']['label_flagged'] = 'Помеченные объекты'; -$phpMussel['lang']['label_fmgr_cache_data'] = 'Данные кэша и временные файлы'; -$phpMussel['lang']['label_fmgr_disk_usage'] = 'phpMussel Использование диска: '; -$phpMussel['lang']['label_fmgr_free_space'] = 'Свободное место на диске: '; -$phpMussel['lang']['label_fmgr_total_disk_usage'] = 'Все использование диска: '; -$phpMussel['lang']['label_fmgr_total_space'] = 'Емкость диска: '; -$phpMussel['lang']['label_fmgr_updates_metadata'] = 'Метаданные обновлений компонентов'; -$phpMussel['lang']['label_hide'] = 'Скрывать'; -$phpMussel['lang']['label_os'] = 'Используемая операционная система:'; -$phpMussel['lang']['label_other'] = 'Другие'; -$phpMussel['lang']['label_other-Active'] = 'Активные файлы сигнатур'; -$phpMussel['lang']['label_other-Since'] = 'Дата начала'; -$phpMussel['lang']['label_php'] = 'Используемая версия PHP:'; -$phpMussel['lang']['label_phpmussel'] = 'Используемая версия phpMussel:'; -$phpMussel['lang']['label_quarantined'] = 'Загрузка в карантин'; -$phpMussel['lang']['label_sapi'] = 'Используемая SAPI:'; -$phpMussel['lang']['label_scanned_objects'] = 'Объекты сканированные'; -$phpMussel['lang']['label_scanned_uploads'] = 'Загружает сканированные'; -$phpMussel['lang']['label_show'] = 'Показать'; -$phpMussel['lang']['label_size_in_quarantine'] = 'Размер в карантине: '; -$phpMussel['lang']['label_stable'] = 'Последние стабильный:'; -$phpMussel['lang']['label_sysinfo'] = 'Системная информация:'; -$phpMussel['lang']['label_tests'] = 'Испытания:'; -$phpMussel['lang']['label_unstable'] = 'Последние нестабильный:'; -$phpMussel['lang']['label_upload_date'] = 'Дата загрузки: '; -$phpMussel['lang']['label_upload_hash'] = 'Хеш загрузки: '; -$phpMussel['lang']['label_upload_origin'] = 'Происхождение загрузки: '; -$phpMussel['lang']['label_upload_size'] = 'Размер загрузки: '; -$phpMussel['lang']['link_accounts'] = 'Учетными Записями'; -$phpMussel['lang']['link_config'] = 'Конфигурация'; -$phpMussel['lang']['link_documentation'] = 'Документация'; -$phpMussel['lang']['link_file_manager'] = 'Файловый Менеджер'; -$phpMussel['lang']['link_home'] = 'Домашняя Страница'; -$phpMussel['lang']['link_logs'] = 'Лог-Файлы'; -$phpMussel['lang']['link_quarantine'] = 'Карантинный'; -$phpMussel['lang']['link_statistics'] = 'Статистика'; -$phpMussel['lang']['link_textmode'] = 'Форматирование текста: ПростоМаскарадный'; -$phpMussel['lang']['link_updates'] = 'Обновления'; -$phpMussel['lang']['link_upload_test'] = 'Тестовая Загрузка'; -$phpMussel['lang']['logs_logfile_doesnt_exist'] = 'Выбранный лог-файл не существует!'; -$phpMussel['lang']['logs_no_logfiles_available'] = 'Не лог-файлы доступны.'; -$phpMussel['lang']['logs_no_logfile_selected'] = 'Не лог-файлы Выбранный.'; -$phpMussel['lang']['max_login_attempts_exceeded'] = 'Максимальное количество попыток входа в систему был превышен; Доступ закрыт.'; -$phpMussel['lang']['previewer_days'] = 'Дни'; -$phpMussel['lang']['previewer_hours'] = 'Часы'; -$phpMussel['lang']['previewer_minutes'] = 'Минуты'; -$phpMussel['lang']['previewer_months'] = 'Месяцы'; -$phpMussel['lang']['previewer_seconds'] = 'Секунды'; -$phpMussel['lang']['previewer_weeks'] = 'Недели'; -$phpMussel['lang']['previewer_years'] = 'Лет'; -$phpMussel['lang']['response_accounts_already_exists'] = 'Аккаунт с таким именем уже существует!'; -$phpMussel['lang']['response_accounts_created'] = 'Аккаунт успешно создан!'; -$phpMussel['lang']['response_accounts_deleted'] = 'Аккаунт успешно удален!'; -$phpMussel['lang']['response_accounts_doesnt_exist'] = 'Эта аккаунт не существует.'; -$phpMussel['lang']['response_accounts_password_updated'] = 'Пароль успешно обновлено!'; -$phpMussel['lang']['response_activated'] = 'Успешно активирован.'; -$phpMussel['lang']['response_activation_failed'] = 'Не удалось активировать!'; -$phpMussel['lang']['response_checksum_error'] = 'Ошибка контрольной суммы! Файл отклонен!'; -$phpMussel['lang']['response_component_successfully_installed'] = 'Компонент успешно установлен.'; -$phpMussel['lang']['response_component_successfully_uninstalled'] = 'Компонент успешно удален.'; -$phpMussel['lang']['response_component_successfully_updated'] = 'Компонент успешно обновлено.'; -$phpMussel['lang']['response_component_uninstall_error'] = 'Произошла ошибка при попытке удалить компонент.'; -$phpMussel['lang']['response_configuration_updated'] = 'Конфигурация успешно обновлено.'; -$phpMussel['lang']['response_deactivated'] = 'Успешно деактивирован.'; -$phpMussel['lang']['response_deactivation_failed'] = 'Не удалось дезактивировать!'; -$phpMussel['lang']['response_delete_error'] = 'Не удалось удалить!'; -$phpMussel['lang']['response_directory_deleted'] = 'Каталог успешно удален!'; -$phpMussel['lang']['response_directory_renamed'] = 'Каталог успешно переименован!'; -$phpMussel['lang']['response_error'] = 'Ошибка'; -$phpMussel['lang']['response_failed_to_install'] = 'Не удалось установить!'; -$phpMussel['lang']['response_failed_to_update'] = 'Не удалось обновить!'; -$phpMussel['lang']['response_file_deleted'] = 'Файл успешно удален!'; -$phpMussel['lang']['response_file_edited'] = 'Файл успешно изменен!'; -$phpMussel['lang']['response_file_renamed'] = 'Файл успешно переименован!'; -$phpMussel['lang']['response_file_restored'] = 'Файл успешно восстановлен!'; -$phpMussel['lang']['response_file_uploaded'] = 'Файл успешно загружен!'; -$phpMussel['lang']['response_login_invalid_password'] = 'Войти провал! Неверный пароль!'; -$phpMussel['lang']['response_login_invalid_username'] = 'Войти провал! Имя пользователя не существует!'; -$phpMussel['lang']['response_login_password_field_empty'] = 'Пароль пусто!'; -$phpMussel['lang']['response_login_username_field_empty'] = 'Имя пользователя пусто!'; -$phpMussel['lang']['response_rename_error'] = 'Не удалось переименовать!'; -$phpMussel['lang']['response_restore_error_1'] = 'Не удалось восстановить! Поврежденный файл!'; -$phpMussel['lang']['response_restore_error_2'] = 'Не удалось восстановить! Неправильный карантинный ключ!'; -$phpMussel['lang']['response_statistics_cleared'] = 'Статистика очищена.'; -$phpMussel['lang']['response_updates_already_up_to_date'] = 'Уже обновлено.'; -$phpMussel['lang']['response_updates_not_installed'] = 'Компонент не установлен!'; -$phpMussel['lang']['response_updates_not_installed_php'] = 'Компонент не установлен (требует PHP {V})!'; -$phpMussel['lang']['response_updates_outdated'] = 'Устаревший!'; -$phpMussel['lang']['response_updates_outdated_manually'] = 'Устаревший (пожалуйста обновить вручную)!'; -$phpMussel['lang']['response_updates_outdated_php_version'] = 'Устаревший (требует PHP {V})!'; -$phpMussel['lang']['response_updates_unable_to_determine'] = 'Невозможно определить.'; -$phpMussel['lang']['response_upload_error'] = 'Не удалось загрузить!'; -$phpMussel['lang']['state_complete_access'] = 'Полный доступ'; -$phpMussel['lang']['state_component_is_active'] = 'Компонент активен.'; -$phpMussel['lang']['state_component_is_inactive'] = 'Компонент неактивен.'; -$phpMussel['lang']['state_component_is_provisional'] = 'Компонент иногда активен.'; -$phpMussel['lang']['state_default_password'] = 'Предупреждение: Использует стандартный пароль!'; -$phpMussel['lang']['state_logged_in'] = 'В настоящее время вошли в систему.'; -$phpMussel['lang']['state_logs_access_only'] = 'Доступ только к лог-файлы'; -$phpMussel['lang']['state_maintenance_mode'] = 'Предупреждение: Включен режим обслуживания!'; -$phpMussel['lang']['state_password_not_valid'] = 'Предупреждение: Эта аккаунт не использует правильный пароль!'; -$phpMussel['lang']['state_quarantine'] = ['В карантине есть %s файл.', 'В карантине есть %s файла.', 'В карантине есть %s файлов.']; -$phpMussel['lang']['switch-hide-non-outdated-set-false'] = 'Не скрывают не-устаревший'; -$phpMussel['lang']['switch-hide-non-outdated-set-true'] = 'Скрывают не-устаревший'; -$phpMussel['lang']['switch-hide-unused-set-false'] = 'Не скрывают не-установлена'; -$phpMussel['lang']['switch-hide-unused-set-true'] = 'Скрывают не-установлена'; -$phpMussel['lang']['tip_accounts'] = 'Привет, {username}.
        Учетными записями страница позволяет контролировать, кто может получить доступ к phpMussel фронтенд.'; -$phpMussel['lang']['tip_config'] = 'Привет, {username}.
        Конфигурация страница позволяет изменять конфигурацию для phpMussel от фронтенд.'; -$phpMussel['lang']['tip_donate'] = 'phpMussel предлагается бесплатно, но если Вы хотите пожертвовать на проект, Вы можете сделать это, нажав на кнопку пожертвовать.'; -$phpMussel['lang']['tip_file_manager'] = 'Привет, {username}.
        Файловый менеджер позволяет удалять, редактировать, загружать и скачивать файлы. Используйте с осторожностью (Вы могли бы нарушить вашу установку с этим).'; -$phpMussel['lang']['tip_home'] = 'Привет, {username}.
        Это домашняя страница для phpMussel фронтенд. Выберите ссылку в меню навигации слева чтобы продолжить.'; -$phpMussel['lang']['tip_login'] = 'Стандартный имя пользователя: admin – Стандартный пароль: password'; -$phpMussel['lang']['tip_logs'] = 'Привет, {username}.
        Выберите лог-файл из приведенного ниже списка чтобы прочитать содержимое лог-файл.'; -$phpMussel['lang']['tip_quarantine'] = 'Привет, {username}.
        На этой странице перечислены все файлы, находящиеся в настоящее время в карантине, и облегчает управление этими файлами.'; -$phpMussel['lang']['tip_quarantine_disabled'] = 'Заметка: В настоящее время карантин отключен, но может быть включен через страницу конфигурации.'; -$phpMussel['lang']['tip_see_the_documentation'] = 'Просмотреть документации для получения информации о различных директив конфигурации и их целей.'; -$phpMussel['lang']['tip_statistics'] = 'Привет, {username}.
        На этой странице показаны основные статистические данные об использовании вашей phpMussel-инсталляция.'; -$phpMussel['lang']['tip_statistics_disabled'] = 'Заметка: Отслеживание статистики в настоящее время отключено, но может быть включено через страницу конфигурации.'; -$phpMussel['lang']['tip_updates'] = 'Привет, {username}.
        Обновления страница позволяет устанавливать, удалить и обновления для различных компонентов phpMussel (пакет ядра, сигнатуры, плагины, L10N файлы, итд).'; -$phpMussel['lang']['tip_upload_test'] = 'Привет, {username}.
        Тестовая загрузка страница содержит стандартную форму для загрузки файла, позволяя вам проверить нормально ли будет заблокирован файл от phpMussel когда попытке загрузить его.'; -$phpMussel['lang']['title_accounts'] = 'phpMussel – Учетными Записями'; -$phpMussel['lang']['title_config'] = 'phpMussel – Конфигурация'; -$phpMussel['lang']['title_file_manager'] = 'phpMussel – Файловый Менеджер'; -$phpMussel['lang']['title_home'] = 'phpMussel – Домашняя Страница'; -$phpMussel['lang']['title_login'] = 'phpMussel – Войти'; -$phpMussel['lang']['title_logs'] = 'phpMussel – Лог-Файлы'; -$phpMussel['lang']['title_quarantine'] = 'phpMussel – Карантинный'; -$phpMussel['lang']['title_statistics'] = 'phpMussel – Статистика'; -$phpMussel['lang']['title_updates'] = 'phpMussel – Обновления'; -$phpMussel['lang']['title_upload_test'] = 'phpMussel – Тестовая Загрузка'; -$phpMussel['lang']['warning'] = 'Предупреждения:'; -$phpMussel['lang']['warning_php_1'] = 'Ваша версия PHP больше не поддерживается! Рекомендуется обновление!'; -$phpMussel['lang']['warning_php_2'] = 'Ваша версия PHP сильно уязвима! Настоятельно рекомендуется обновление!'; -$phpMussel['lang']['warning_signatures_1'] = 'Активные файлы сигнатуры не активны!'; - -$phpMussel['lang']['info_some_useful_links'] = 'Некоторые полезные ссылки:
          -
        • Вопросы для phpMussel @ GitHub – Страница вопросы для phpMussel (поддержка, помощь, и т.д.).
        • -
        • phpMussel @ Spambot Security – Дискуссионный форум для phpMussel (поддержка, помощь, и т.д.).
        • -
        • phpMussel @ SourceForge – Альтернативное скачать зеркало для phpMussel.
        • -
        • WebSecTools.com – Коллекция простых инструментов для веб-мастеров для защиты веб-сайтов.
        • -
        • ClamavNet – ClamAV домашняя страница (ClamAV® является антивирусный движок с открытым исходным кодом для обнаружения троянских программ, вирусов, вредоносных программ и других угроз).
        • -
        • SecuriteInfo.com – Компьютерной безопасности компании, которая предлагает дополнительные сигнатуры для ClamAV.
        • -
        • PhishTank – Фишинг базе данных, используется в сканером URL для phpMussel.
        • -
        • Global PHP Group @ Facebook – PHP учебных ресурсов и обсуждение.
        • -
        • PHP.earth – PHP учебных ресурсов и обсуждение.
        • -
        • VirusTotal – Бесплатный сервис для анализа подозрительных файлов и URL-адресов.
        • -
        • Hybrid Analysis – Hybrid Analysis представляет бесплатный сервис для анализа вредоносного программного, предоставленной Payload Security.
        • -
        • Malwarebytes – Специалисты в области защиты от вредоносных программ.
        • -
        • MalwareTips – Полезные вредоносные программы сфокусированные дискуссионных форумов.
        • -
        • Таблицы Уязвимостей – Список безопасных/небезопасных версий различных пакетов (PHP, HHVM, и т.д.).
        • -
        • Таблицы Совместимости – Перечисляет информацию о совместимости для различных пакетов (CIDRAM, phpMussel, и т.д.).
        • -
        '; diff --git a/libraries/plugins/phpMussel/vault/lang/lang.ru.php b/libraries/plugins/phpMussel/vault/lang/lang.ru.php deleted file mode 100644 index 891afcc..0000000 --- a/libraries/plugins/phpMussel/vault/lang/lang.ru.php +++ /dev/null @@ -1,139 +0,0 @@ -= 2 && $Num % 10 <= 4 && ($Num % 100 < 10 || $Num % 100 >= 20) ? 1 : 2; -}; - -$phpMussel['lang']['bad_command'] = 'Извините, команда непонятна.'; -$phpMussel['lang']['cli_failed_to_complete'] = 'Не удалось завершить процесс сканирования'; -$phpMussel['lang']['cli_is_not_a'] = ' не файл или каталог.'; -$phpMussel['lang']['cli_ln2'] = " Спасибо за использование phpMussel, PHP сценария предназначенного для\n обнаружения троянов, вирусов, вредоносных программ и других угроз для файлов\n загруженных в вашу систему, на основе подписей ClamAV и других.\n\n PHPMUSSEL АВТОРСКИЕ ПРАВА 2013 и позже GNU/GPLv2 от Caleb M (Maikuolan).\n\n ~ ~ ~\n\n"; -$phpMussel['lang']['cli_ln3'] = " В настоящее время phpMussel работает в CLI режиме (командной строки интерфейс).\n\n Для сканирования файла или каталога, введите 'scan', а затем имя файла или\n каталога который вы хотите просканировать, и нажмите Enter; Введите 'c' и\n нажмите Enter для списка CLI режима команды; Введите 'q' и нажмите Enter для\n окончания:"; -$phpMussel['lang']['cli_pe1'] = 'Не ПЭ Файл!'; -$phpMussel['lang']['cli_pe2'] = 'ПЭ Разделы:'; -$phpMussel['lang']['cli_signature_placeholder'] = 'ВАШЕ-ИМЯ-СИГНАТУР'; -$phpMussel['lang']['cli_working'] = 'В действии'; -$phpMussel['lang']['corrupted'] = 'Обнаружена поврежденная ПЭ'; -$phpMussel['lang']['data_not_available'] = 'Данные недоступны.'; -$phpMussel['lang']['denied'] = 'Загрузка Отказана!'; -$phpMussel['lang']['denied_reason'] = 'Ваша загрузка была заблокирована по причинам перечисленным ниже:'; -$phpMussel['lang']['detected'] = 'Обнаружено {vn}'; -$phpMussel['lang']['detected_control_characters'] = 'Обнаружены символы управления'; -$phpMussel['lang']['encrypted_archive'] = 'Обнаружен зашифрованный архив; Зашифрованные архивы не допускаются'; -$phpMussel['lang']['failed_to_access'] = 'Не удалось получить доступ '; -$phpMussel['lang']['file'] = 'файл'; -$phpMussel['lang']['filesize_limit_exceeded'] = 'Размер файла превышает лимит'; -$phpMussel['lang']['filetype_blacklisted'] = 'Тип файла находится в черном списке'; -$phpMussel['lang']['finished'] = 'Готово'; -$phpMussel['lang']['generated_by'] = 'Генерируется от'; -$phpMussel['lang']['greylist_cleared'] = ' Серый список очищен.'; -$phpMussel['lang']['greylist_not_updated'] = ' Серый список не обновлён.'; -$phpMussel['lang']['greylist_updated'] = ' Серый список обновлён.'; -$phpMussel['lang']['image'] = 'Изображение'; -$phpMussel['lang']['instance_already_active'] = 'Пример уже активен! Пожалуйста перепроверьте свои крючки.'; -$phpMussel['lang']['invalid_data'] = 'Неверные данные!'; -$phpMussel['lang']['invalid_file'] = 'Неверный файл'; -$phpMussel['lang']['invalid_url'] = 'Неверный URL!'; -$phpMussel['lang']['ok'] = 'Хорошо'; -$phpMussel['lang']['only_allow_images'] = 'Загрузка файлов, которые не являются изображением, не допускается'; -$phpMussel['lang']['plugins_directory_nonexistent'] = 'Каталог плагины не существует!'; -$phpMussel['lang']['quarantined_as'] = "Помещен на карантин в \"/vault/quarantine/{QFU}.qfu\".\n"; -$phpMussel['lang']['recursive'] = 'Лимит глубины рекурсии превышена'; -$phpMussel['lang']['required_variables_not_defined'] = 'Обязательные переменные не установлены: Продолжение невозможно.'; -$phpMussel['lang']['SafeBrowseLookup_200'] = 'Потенциально вредное URL обнаружено'; -$phpMussel['lang']['SafeBrowseLookup_400'] = 'Ошибка запроса API'; -$phpMussel['lang']['SafeBrowseLookup_401'] = 'Ошибка авторизации API'; -$phpMussel['lang']['SafeBrowseLookup_503'] = 'Сервис недоступен API'; -$phpMussel['lang']['SafeBrowseLookup_999'] = 'Неизвестная API ошибка'; -$phpMussel['lang']['scan_aborted'] = 'Сканирование прерывается!'; -$phpMussel['lang']['scan_chameleon'] = 'Обнаружена {x} хамелеон-атака'; -$phpMussel['lang']['scan_checking'] = 'Проверить'; -$phpMussel['lang']['scan_checking_contents'] = 'Сделано! Исходная проверка содержимого.'; -$phpMussel['lang']['scan_command_injection'] = 'Обнаружена попытка командной инъекции'; -$phpMussel['lang']['scan_complete'] = 'Завершено'; -$phpMussel['lang']['scan_extensions_missing'] = 'Не удалось (отсутствуют необходимые расширения)!'; -$phpMussel['lang']['scan_filename_manipulation_detected'] = 'Обнаружена манипуляция имени файла'; -$phpMussel['lang']['scan_missing_filename'] = 'Отсутствует имя файла'; -$phpMussel['lang']['scan_not_archive'] = 'Не удалось (пуст или не архив)!'; -$phpMussel['lang']['scan_no_problems_found'] = 'Проблемы не найдены.'; -$phpMussel['lang']['scan_reading'] = 'Чтение'; -$phpMussel['lang']['scan_signature_file_corrupted'] = 'Повреждена подпись файла'; -$phpMussel['lang']['scan_signature_file_missing'] = 'Отсутствует подпись файла'; -$phpMussel['lang']['scan_tampering'] = 'Обнаружена потенциально опасная модификация файла'; -$phpMussel['lang']['scan_unauthorised_upload'] = 'Обнаружены несанкционированные загрузки манипуляции файла'; -$phpMussel['lang']['scan_unauthorised_upload_or_misconfig'] = 'Обнаружены несанкционированное загрузки манипуляции файла или неправильная конфигурация! '; -$phpMussel['lang']['started'] = 'Начало работы'; -$phpMussel['lang']['too_many_urls'] = 'Слишком много URL'; -$phpMussel['lang']['upload_error_1'] = 'Файл превышает размер директивы upload_max_filesize. '; -$phpMussel['lang']['upload_error_2'] = 'Файл превышает размер заданных в директиве формы. '; -$phpMussel['lang']['upload_error_34'] = 'Загрузка Отказана! Пожалуйста свяжитесь с хостмастером о помощи! '; -$phpMussel['lang']['upload_error_6'] = 'Загрузка директорий отсутствует! Пожалуйста свяжитесь с хостмастером о помощи! '; -$phpMussel['lang']['upload_error_7'] = 'Ошибка диск-записи! Пожалуйста свяжитесь с хостмастером о помощи! '; -$phpMussel['lang']['upload_error_8'] = 'PHP реконфигурация обнаружена! Пожалуйста свяжитесь с хостмастером о помощи! '; -$phpMussel['lang']['upload_limit_exceeded'] = 'Лимит загрузки превышен'; -$phpMussel['lang']['wrong_password'] = 'Неправильный пароль; Действие отказано.'; -$phpMussel['lang']['x_does_not_exist'] = 'не существует'; -$phpMussel['lang']['_exclamation'] = '! '; -$phpMussel['lang']['_exclamation_final'] = '!'; -$phpMussel['lang']['_fullstop'] = '. '; -$phpMussel['lang']['_fullstop_final'] = '.'; - -$phpMussel['lang']['cli_commands'] = " q - - Прекратить CLI. - - Псевдонимы: quit, exit. - md5_file - - Создание MD5 подписи от файлы [Синтаксис: md5_file имя-файла]. - - Псевдоним: m. - sha1_file - - Создание SHA1 подписи от файлы [Синтаксис: sha1_file имя-файла]. - md5 - - Создание MD5 подпись от данные [Синтаксис: md5 данные]. - sha1 - - Создание SHA1 подпись от данные [Синтаксис: sha1 данные]. - hex_encode - - Преобразует двоичные данные из шестнадцатеричной - [Синтаксис: hex_encode данные]. - - Псевдоним: x. - hex_decode - - Преобразует шестнадцатеричные из двоичных данных - [Синтаксис: hex_decode данные]. - base64_encode - - Преобразует двоичные данные из base64 данных - [Синтаксис: base64_encode данные]. - - Псевдоним: b. - base64_decode - - Преобразует base64 данные из двоичных данных - [Синтаксис: base64_decode данные]. - pe_meta - - Извлечение метаданных из PE-файла [Синтаксис: pe_meta имя-файла]. - url_sig - - Создание сигнатуры сканера URL [Синтаксис: url_sig данные]. - scan - - Сканирует файл или каталог [Синтаксис: scan имя]. - - Псевдоним: s. - c - - Распечатать этот командный список. -"; diff --git a/libraries/plugins/phpMussel/vault/lang/lang.th.fe.php b/libraries/plugins/phpMussel/vault/lang/lang.th.fe.php deleted file mode 100644 index 9f75a18..0000000 --- a/libraries/plugins/phpMussel/vault/lang/lang.th.fe.php +++ /dev/null @@ -1,301 +0,0 @@ -โฮมเพจ | ออกจากระบบ'; -$phpMussel['lang']['bNav_logout'] = 'ออกจากระบบ'; -$phpMussel['lang']['config_attack_specific_archive_file_extensions'] = 'รู้จักส่วนขยายไฟล์ที่เก็บถาวร (รูปแบบเป็น CSV; ควรเพิ่มหรือลบเมื่อเกิดปัญหาขึ้นเท่านั้น; การลบโดยปราศจากเหตุผลอาจทำให้ false positive ปรากฏขึ้น. เพิ่มได้โดยไม่มีเหตุผลอาจป้องกันไม่ให้การป้องกันบางอย่างทำงานได้อย่างถูกต้อง; แก้ไขด้วยความระมัดระวัง; การสแกนระดับเนื้อหาไม่ได้รับผลกระทบ). รายการ, เป็นค่าเริ่มต้น, แสดงรูปแบบที่ใช้บ่อยที่สุดในระบบและ CMS ส่วนใหญ่, แต่ไม่รวมทุกอย่าง.'; -$phpMussel['lang']['config_attack_specific_block_control_characters'] = 'บล็อกไฟล์ใด ๆ ที่มีอักขระควบคุมหรือไม่ (นอกเหนือจากบรรทัดใหม่)? ([\x00-\x08\x0b\x0c\x0e\x1f\x7f]) หากคุณกำลังอัปโหลดเฉพาะข้อความล้วน, จากนั้นคุณสามารถเปิดใช้งานตัวเลือกนี้ได้เพื่อให้การป้องกันเพิ่มเติมในระบบของคุณ. อย่างไรก็ตาม, หากคุณอัปโหลดรายการอื่น ๆ, การเปิดใช้งานอาจส่งผลให้เกิด false positive. False = อย่าปิดกั้น [ค่าเริ่มต้น]; True = ปิดกั้น.'; -$phpMussel['lang']['config_attack_specific_chameleon_from_exe'] = 'ค้นหาหัวเรื่องที่ปฏิบัติการได้ในไฟล์ที่ไม่ปฏิบัติการได้และในไฟล์ที่ไม่ได้เก็บถาวร, และค้นหาไฟล์ปฏิบัติการที่มีส่วนหัวไม่ถูกต้อง. False = ปิดใช้งาน; True = เปิดใช้งาน.'; -$phpMussel['lang']['config_attack_specific_chameleon_from_php'] = 'ค้นหาส่วนหัวของ PHP ในไฟล์ที่ไม่ใช่ไฟล์ PHP หรือที่เก็บถาวร. False = ปิดใช้งาน; True = เปิดใช้งาน.'; -$phpMussel['lang']['config_attack_specific_chameleon_to_archive'] = 'ค้นหาที่เก็บที่มีส่วนหัวไม่ถูกต้อง (ได้รับการสนับสนุน: BZ, GZ, RAR, ZIP, RAR, GZ). False = ปิดใช้งาน; True = เปิดใช้งาน.'; -$phpMussel['lang']['config_attack_specific_chameleon_to_doc'] = 'ค้นหาเอกสาร Office ที่มีส่วนหัวไม่ถูกต้อง (ได้รับการสนับสนุน: DOC, DOT, PPS, PPT, XLA, XLS, WIZ). False = ปิดใช้งาน; True = เปิดใช้งาน.'; -$phpMussel['lang']['config_attack_specific_chameleon_to_img'] = 'ค้นหาภาพที่มีส่วนหัวไม่ถูกต้อง (ได้รับการสนับสนุน: BMP, DIB, PNG, GIF, JPEG, JPG, XCF, PSD, PDD, WEBP). False = ปิดใช้งาน; True = เปิดใช้งาน.'; -$phpMussel['lang']['config_attack_specific_chameleon_to_pdf'] = 'ค้นหาไฟล์ PDF ที่มีส่วนหัวไม่ถูกต้อง. False = ปิดใช้งาน; True = เปิดใช้งาน.'; -$phpMussel['lang']['config_attack_specific_corrupted_exe'] = 'ไฟล์ที่เสียหายและข้อผิดพลาดในการประมวลผล. False = ไม่สนใจ; True = ปิดกั้น [ค่าเริ่มต้น]. ตรวจหาและปิดกั้นไฟล์ PE ที่เสียหายหรือไม่? บ่อยครั้ง (แต่ไม่เสมอไป), เมื่อส่วนของไฟล์ PE เสียหายหรือไม่สามารถอ่านได้, มันสามารถบ่งบอกถึงการติดเชื้อไวรัส. กระบวนการที่ใช้โดยโปรแกรมป้องกันไวรัสส่วนใหญ่สำหรับการตรวจจับไวรัสในไฟล์ PE, หากผู้เขียนไวรัสรู้, พวกเขาอาจพยายามหลีกเลี่ยง, เพื่อให้ไวรัสของพวกเขายังคงตรวจไม่พบ.'; -$phpMussel['lang']['config_attack_specific_decode_threshold'] = 'ความยาวสูงสุดของข้อมูลดิบภายในที่ถอดรหัสคำสั่งควรถูกตรวจพบ (ในกรณีที่มีปัญหาเรื่องประสิทธิภาพการใช้งานที่เห็นได้ชัดขณะสแกน). ค่าเริ่มต้น = 512KB. ค่าเป็นศูนย์หรือค่า null จะปิดใช้งานขีด จำกัด (ลบข้อจำกัดที่ขึ้นกับขนาดไฟล์).'; -$phpMussel['lang']['config_attack_specific_scannable_threshold'] = 'ความยาวสูงสุดของข้อมูลดิบที่ phpMussel สามารถอ่านและสแกนได้ (ในกรณีที่มีปัญหาเรื่องประสิทธิภาพการใช้งานที่เห็นได้ชัดขณะสแกน). ค่าเริ่มต้น = 32MB. ค่าเป็นศูนย์หรือค่า null จะปิดใช้งานขีด จำกัด. โดยทั่วไป, นี้ไม่ควรน้อยกว่าค่าเฉลี่ยขนาดไฟล์ของการอัปโหลดที่คุณคาดว่าจะได้รับไปยังเซิร์ฟเวอร์หรือเว็บไซต์ของคุณ, ไม่ควรมากกว่าคำสั่ง filesize_limit, และไม่ควรเกินกว่าหนึ่งในห้าการจัดสรรหน่วยความจำทั้งหมดให้กับ PHP ผ่านไฟล์กำหนดค่า "php.ini". คำสั่งนี้มีอยู่เพื่อป้องกันไม่ให้ phpMussel ใช้หน่วยความจำมากเกินไป (การใช้หน่วยความจำมากเกินไปสามารถป้องกันไม่ให้ phpMussel สแกนไฟล์ทั้งหมด).'; -$phpMussel['lang']['config_compatibility_ignore_upload_errors'] = 'โดยทั่วไป, คำสั่งนี้ควรถูกปิดใช้งานยกเว้นกรณีที่จำเป็นสำหรับฟังก์ชันการทำงานที่ถูกต้องของ phpMussel ในระบบเฉพาะของคุณ. โดยปกติ, เมื่อปิดใช้งาน, เมื่อ phpMussel ตรวจจับการปรากฏตัวของธาตุใน array() $_FILES, มันจะพยายามเพื่อสแกนไฟล์ที่องค์ประกอบเหล่านั้นเป็นตัวแทน, และ, หากองค์ประกอบเหล่านี้ว่างเปล่า, phpMussel จะแสดงข้อความแสดงข้อผิดพลาด. นี่เป็นพฤติกรรมที่เหมาะสมสำหรับ phpMussel. อย่างไรก็ตาม, สำหรับบาง CMS, องค์ประกอบว่างเปล่าใน $_FILES สามารถเกิดขึ้นเนื่องจากพฤติกรรมตามธรรมชาติของ CMS เหล่านี้, หรือข้อผิดพลาดอาจมีการรายงานเมื่อไม่มี, ในกรณีดังกล่าว, พฤติกรรมปกติของ phpMussel จะขัดขวางพฤติกรรมปกติของ CMS เหล่านี้. หากสถานการณ์ดังกล่าวเกิดขึ้นสำหรับคุณ, การเปิดใช้งานตัวเลือกนี้จะสั่งให้ phpMussel ไม่สแกนหาองค์ประกอบที่ว่างเปล่าเหล่านี้, ละเว้นเมื่อพบ, และไม่ส่งกลับข้อความผิดพลาดใด ๆ ที่เกี่ยวข้อง, จึงช่วยให้สามารถขอหน้าต่อไปได้. False = ปิดใช้งาน; True = เปิดใช้งาน.'; -$phpMussel['lang']['config_compatibility_only_allow_images'] = 'ถ้าคุณคาดหวังหรือตั้งใจเท่านั้นเพื่ออนุญาตให้มีภาพสำหรับการอัปโหลดลงในระบบหรือ CMS ของคุณ, และถ้าคุณอย่างไม่จำเป็นต้องไฟล์ใด ๆ ที่ไม่ใช่ภาพจะถูกอัปโหลดไปยังระบบหรือ CMS ของคุณ, ควรเปิดใช้งานคำสั่งนี้, แต่ควรปิดใช้งานในกรณีอื่น ๆ. หากเปิดใช้งานคำสั่งนี้, จะสั่งให้ phpMussel ป้องกันการอัปโหลดใด ๆ โดยไม่เลือกปฏิบัติ, ที่เป็นระบุว่าไม่ใช่ไฟล์ภาพ, โดยไม่ต้องสแกน. ซึ่งอาจลดเวลาในการประมวลผลและการใช้หน่วยความจำสำหรับการอัปโหลดที่พยายามไฟล์ไม่ใช่ภาพ. False = ปิดใช้งาน; True = เปิดใช้งาน.'; -$phpMussel['lang']['config_files_block_encrypted_archives'] = 'ตรวจหาและบล็อกเก็บถาวรที่เข้ารหัสหรือไม่? เพราะ phpMussel ไม่สามารถสแกนได้เนื้อหาของเก็บถาวรที่เข้ารหัส, มันเป็นไปได้ที่เก็บถาวรที่เข้ารหัสอาจถูกใช้โดยผู้บุกรุกเป็นวิธีการพยายามหลีกเลี่ยง phpMussel, สแกนเนอร์ป้องกันไวรัส, และการคุ้มครองอื่น ๆ. สั่งให้ phpMussel บล็อกที่เก็บถาวรใด ๆ ที่ค้นพบถูกเข้ารหัสอาจช่วยได้ลดความเสี่ยงใด ๆ ที่เกี่ยวข้องกับความเป็นไปได้เหล่านี้. False = ไม่บล็อก; True = บล็อก [ค่าเริ่มต้น].'; -$phpMussel['lang']['config_files_check_archives'] = 'พยายามตรวจสอบเนื้อหาของเก็บถาวรหรือไม่? False = ไม่ตรวจสอบ; True = ตรวจสอบ [ค่าเริ่มต้น]. ปัจจุบัน, รูปแบบสำหรับเก็บถาวรและการบีบอัดที่สนับสนุนเพียงคือ BZ/BZIP2, GZ/GZIP, LZF, PHAR, TAR และ ZIP (รูปแบบสำหรับเก็บถาวรและการบีบอัด RAR, CAB, 7z และอื่น, ปัจจุบันยังไม่ได้รับการสนับสนุน). นี้ไม่สมบูรณ์แบบ! ฉันขอแนะนำให้เปิดใช้งานนี้, แต่ฉันไม่สามารถรับประกันได้ที่มันมักจะพบทุกอย่าง. นอกจากนี้, โปรดทราบว่าการตรวจสอบเก็บถาวรปัจจุบันไม่ใช่ recursive สำหรับรูปแบบ PHAR หรือ ZIP.'; -$phpMussel['lang']['config_files_filesize_archives'] = 'สืบทอดรายการดำ/รายการขาวสำหรับขนาดไฟล์ลงในเนื้อหาเก็บถาวรหรือไม่? False = ไม่สืบทอด (แค่รายการเทาทุกอย่าง); True = สืบทอด [ค่าเริ่มต้น].'; -$phpMussel['lang']['config_files_filesize_limit'] = 'จำกัดของขนาดไฟล์ใน KB. 65536 = 64MB [ค่าเริ่มต้น]; 0 = ไม่มีขีดจำกัด (รายการเทาเสมอ), ค่าตัวเลขใด ๆ ที่เป็นบวกสามารถยอมรับได้. นี้จะมีประโยชน์เมื่อการกำหนดค่า PHP ของคุณจำกัดจำนวนหน่วยความจำที่กระบวนการสามารถครอบครองได้หรือหากการกำหนดค่า PHP ของคุณจำกัดขนาดไฟล์สำหรับอัปโหลด.'; -$phpMussel['lang']['config_files_filesize_response'] = 'จะทำอย่างไรกับไฟล์ที่เกินขีดจำกัดของขนาดไฟล์ (ถ้ามีอยู่). False = รายการขาว; True = รายการดำ [ค่าเริ่มต้น].'; -$phpMussel['lang']['config_files_filetype_archives'] = 'สืบทอดรายการดำ/รายการขาวสำหรับประเภทไฟล์ลงในเนื้อหาเก็บถาวรหรือไม่? False = ไม่สืบทอด (แค่รายการเทาทุกอย่าง) [ค่าเริ่มต้น]; True = สืบทอด.'; -$phpMussel['lang']['config_files_filetype_blacklist'] = 'รายการดำ:'; -$phpMussel['lang']['config_files_filetype_greylist'] = 'รายการเทา:'; -$phpMussel['lang']['config_files_filetype_whitelist'] = 'หากระบบของคุณอนุญาตชนิดไฟล์ที่ระบุที่จะอัปโหลดเท่านั้น, หรือหากระบบของคุณปฏิเสธประเภทไฟล์บาง, ระบุพวกเขาในรายการขาว, รายการดำ, และรายการเทาสามารถเพิ่มความเร็วในการสแกนโดยการอนุญาตให้ใช้สคริปต์เพื่อข้ามไฟล์บาง. รูปแบบคือ CSV (ค่าที่คั่นด้วยเครื่องหมายจุลภาค). ถ้าคุณต้องการสแกนทุกอย่าง, แทนรายการขาว, รายการดำ, หรือรายการเทา, ปล่อยให้ตัวแปรว่างเปล่า; การทำเช่นนี้จะปิดใช้งานรายการขาว/รายการดำ/รายการเทา. ลำดับการประมวลผลคือ: หากไฟล์ประเภทนี้อยู่ในรายการขาว, ไม่สแกนและอย่าปิดกั้นไฟล์, และอย่าตรวจสอบไฟล์กับรายการดำหรือรายการเทา. หากไฟล์ประเภทนี้อยู่ในรายการดำ, ไม่สแกนไฟล์แต่บล็อกมันอย่างไรก็ตาม, และอย่าตรวจสอบไฟล์กับรายการเทา. ถ้ารายการเทาเป็นว่างเปล่าหรือถ้ารายการเทาไม่ว่างเปล่าและไฟล์ประเภทนี้อยู่ในรายการเทา, สแกนไฟล์ตามบรรทัดฐานและกำหนดว่าจะบล็อกหรือไม่ขึ้นอยู่กับผลการสแกน, แต่ถ้ารายการเทาไม่ว่างเปล่าและไฟล์ประเภทนี้ไม่อยู่ในรายการเทา, ถือว่าไฟล์เป็นอยู่ในรายการดำ, ดังนั้นไม่สแกนมันแต่บล็อกไว้อย่างไรก็ตาม. รายการขาว:'; -$phpMussel['lang']['config_files_max_recursion'] = 'ความลึกสูงสุดของการเรียกซ้ำสำหรับเก็บถาวร. ค่าเริ่มต้น = 10.'; -$phpMussel['lang']['config_files_max_uploads'] = 'จำนวนไฟล์สูงสุดที่อนุญาตเพื่อสแกนระหว่างการอัปโหลดไฟล์ก่อนที่จะยกเลิกการสแกนและแจ้งผู้ใช้ที่พวกเขากำลังอัปโหลดมากเกินไปในครั้งเดียว! ให้การป้องกันการโจมตีทางทฤษฎีโดยผู้บุกรุกพยายามที่จะ DDoS ระบบหรือ CMS ของคุณโดยใช้ phpMussel ที่มากเกินไปเพื่อชะลอกระบวนการ PHP เพื่อหยุดที่สมบูรณ์. แนะนำ: 10. คุณอาจต้องการเพิ่มหรือลดจำนวนนี้ขึ้นอยู่กับความเร็วของฮาร์ดแวร์ของคุณ. โปรดทราบว่าหมายเลขนี้ไม่ได้ระบุไว้หรือรวมเนื้อหาของที่เก็บถาวร.'; -$phpMussel['lang']['config_general_cleanup'] = 'ทำลายตัวแปรและแคชใช้โดยสคริปต์หลังจากสแกนไฟล์หรือไม่? False = อย่าทำลาย; True = ทำลาย [ค่าเริ่มต้น]. หากคุณไม่ได้ใช้สคริปต์สำหรับเพื่อวัตถุประสงค์อื่น, คุณควรตั้งค่านี้เป็น true, เพื่อลดการใช้หน่วยความจำ. มิฉะนั้น, ถ้าคุณใช้มันสำหรับวัตถุประสงค์อื่น, คุณควรตั้งค่านี้เป็น false, เพื่อหลีกเลี่ยงการโหลดข้อมูลที่ซ้ำกันลงในหน่วยความจำโดยไม่จำเป็น. ในทางปฏิบัติทั่วไป, ควรตั้งค่าเป็น true, แต่ถ้าคุณทำเช่นนี้, คุณจะไม่สามารถใช้สคริปต์เพื่อวัตถุประสงค์นอกเหนือจากนี้การสแกนอัปโหลดไฟล์. ไม่มีอิทธิพลในโหมด CLI.'; -$phpMussel['lang']['config_general_default_algo'] = 'กำหนดว่าจะใช้อัลกอริทึมใดสำหรับรหัสผ่านและเซสชันในอนาคต. ตัวเลือก: PASSWORD_DEFAULT (ค่าเริ่มต้น), PASSWORD_BCRYPT, PASSWORD_ARGON2I (ต้องการ PHP >= 7.2.0).'; -$phpMussel['lang']['config_general_delete_on_sight'] = 'การเปิดใช้คำสั่งนี้จะบอกสคริปต์เพื่อพยายามลบอัปโหลดไฟล์ใด ๆ ที่สแกนแล้วทันทีที่จับคู่เกณฑ์การตรวจสอบใด, ไม่ว่าจะผ่านลายเซ็นหรืออื่น ๆ. ไฟล์ที่ถือว่า "สะอาด" จะไม่ได้รับการสัมผัส. ในกรณีที่เก็บถาวร, ที่เก็บถาวรทั้งหมดจะถูกลบ, ไม่ว่าจะเป็นหรือไม่ก็ตามไฟล์ที่กระทำผิดเป็นเพียงหนึ่งในหลายไฟล์มีอยู่ในเก็บถาวร. สำหรับกรณีของการสแกนอัปโหลดไฟล์, ปกติ, ไม่จำเป็นต้องใช้คำสั่งนี้, เพราะปกติ, PHP จะล้างเนื้อหาของแคชโดยอัตโนมัติเมื่อดำเนินการเสร็จสิ้น, หมายความว่ามักจะลบไฟล์ใด ๆ ที่อัปโหลดผ่านของมันไปยังเซิร์ฟเวอร์จนกว่าพวกเขาจะถูกย้าย, คัดลอกหรือลบแล้ว. คำสั่งนี้ถูกเพิ่มที่นี่เป็นมาตรการพิเศษในการรักษาความปลอดภัยสำหรับผู้ที่มีสำเนาของ PHP ที่อาจไม่ทำงานในลักษณะที่คาดหมายเสมอ. False = หลังการสแกน, ออกจากไฟล์เพียงอย่างเดียว [ค่าเริ่มต้น]; True = หลังการสแกน, ถ้าไม่สะอาด, ลบทันที.'; -$phpMussel['lang']['config_general_disable_cli'] = 'ปิดใช้งานโหมด CLI หรือไม่? โหมด CLI ถูกเปิดใช้งานตามค่าเริ่มต้น, แต่บางครั้งอาจรบกวนการทำงานของเครื่องมือทดสอบบางอย่าง (เช่น PHPUnit) และแอพพลิเคชั่น CLI อื่น ๆ. ถ้าคุณไม่จำเป็นต้องปิดใช้งานโหมด CLI คุณควรละเว้นคำสั่งนี้. False = เปิดใช้งานโหมด CLI [ค่าเริ่มต้น]; True = ปิดใช้งานโหมด CLI.'; -$phpMussel['lang']['config_general_disable_frontend'] = 'ปิดใช้งานการเข้าถึง front-end หรือไม่? การเข้าถึง front-end ทำให้ phpMussel สามารถจัดการได้ดีขึ้น แต่ก็อาจเป็นความเสี่ยงด้านความปลอดภัยที่อาจเกิดขึ้นด้วย. ขอแนะนำให้จัดการ phpMussel ผ่านทางแบ็คเอนด์เมื่อใดก็ตามที่เป็นไปได้ แต่จะมีการเข้าถึง front-end เมื่อไม่สามารถทำได้. โปรดปิดใช้งานหากคุณไม่ต้องการ. False = เปิดใช้งานการเข้าถึง front-end; True = ปิดการใช้งานการเข้าถึง front-end [ค่าเริ่มต้น].'; -$phpMussel['lang']['config_general_disable_webfonts'] = 'หยุดใช้ webfonts หรือไม่? True = หยุดใช้; False = ไม่หยุดใช้ [ค่าเริ่มต้น].'; -$phpMussel['lang']['config_general_enable_plugins'] = 'เปิดใช้งานการสนับสนุนปลั๊กอิน phpMussel หรือไม่? False = ไม่เปิดใช้งาน; True = เปิดใช้งาน [ค่าเริ่มต้น].'; -$phpMussel['lang']['config_general_forbid_on_block'] = 'ควร phpMussel ส่งส่วนหัว 403 มีข้อความเกี่ยวกับอัปโหลดไฟล์ที่ถูกบล็อก, หรือเก็บไว้กับปกติ 200 OK? False = ส่ง 200; True = ส่ง 403 [ค่าเริ่มต้น].'; -$phpMussel['lang']['config_general_FrontEndLog'] = 'ไฟล์สำหรับบันทึกพยายามเข้าสู่ระบบที่ front-end. ระบุชื่อไฟล์หรือเว้นว่างไว้เพื่อปิดใช้งาน.'; -$phpMussel['lang']['config_general_honeypot_mode'] = 'เมื่อเปิดใช้งานโหมด honeypot, phpMussel จะพยายามกักกันการอัปโหลดไฟล์ทั้งหมดที่มันเจอ, ไม่ว่าจะเป็นหรือไม่ก็ตามไฟล์ตรงกับลายเซ็นที่รวมอยู่, และทั้งการสแกนและการวิเคราะห์สำหรับไฟล์เหล่านี้จะไม่เกิดขึ้นจริง. ฟังก์ชันนี้ควรมีประโยชน์สำหรับผู้ที่ต้องการใช้ phpMussel เพื่อวัตถุประสงค์ในการวิจัยไวรัส/มัลแวร์, แต่ไม่แนะนำเพื่อให้สามารถใช้งานฟังก์ชันนี้ได้ถ้าใช้ของ phpMussel ตั้งใจโดยผู้ใช้สำหรับการอัปโหลดไฟล์จริง, และไม่แนะนำสำหรับวัตถุประสงค์ที่ไม่เกี่ยวข้องกับฟังก์ชันการทำงานของ honeypot. โดยค่าเริ่มต้น, ตัวเลือกนี้ถูกปิดใช้งาน. False = เปิดใช้งาน [ค่าเริ่มต้น]; True = เปิดใช้งาน.'; -$phpMussel['lang']['config_general_ipaddr'] = 'ตำแหน่งของที่อยู่ IP สำหรับคำขอการเชื่อมต่อ (เป็นประโยชน์สำหรับบริการเช่น Cloudflare, ฯลฯ). ค่าเริ่มต้น = REMOTE_ADDR. คำเตือน: อย่าเปลี่ยนสิ่งนี้จนกว่าคุณจะรู้ว่าคุณกำลังทำอะไร!'; -$phpMussel['lang']['config_general_lang'] = 'ระบุภาษาค่าเริ่มต้นสำหรับ phpMussel.'; -$phpMussel['lang']['config_general_maintenance_mode'] = 'เปิดใช้โหมดการบำรุงรักษาหรือไม่? True = เปิดใช้งานได้; False = ไม่เปิดใช้งาน [ค่าเริ่มต้น]. ปิดใช้งานทุกอย่างอื่นที่ไม่ใช่ front-end. บางครั้งมีประโยชน์สำหรับการอัปเดต CMS, framework, ฯลฯ.'; -$phpMussel['lang']['config_general_max_login_attempts'] = 'จำนวนสูงสุดความพยายามเข้าสู่ระบบ.'; -$phpMussel['lang']['config_general_numbers'] = 'คุณต้องการตัวเลขที่จะแสดงอย่างไร? เลือกตัวอย่างที่ดูเหมือนถูกต้องที่สุด.'; -$phpMussel['lang']['config_general_quarantine_key'] = 'phpMussel สามารถกักกันไฟล์ที่ระบุได้ในการแยกภายใน vault ของ phpMussel, ถ้าคุณต้องการทำเช่นนี้. ผู้ใช้ที่ต้องการปกป้องเว็บไซต์หรือโฮสต์สภาพแวดล้อมของตนเท่านั้นไม่มีดอกเบี้ยในวิเคราะห์การอัปโหลดไฟล์อย่างละเอียดควรปล่อยให้ฟังก์ชันนี้ถูกปิดใช้งาน, แต่ผู้ใช้ใด ๆ ที่มีความสนใจเช่นกันควรเปิดใช้งานฟังก์ชันนี้. การกักกันของอัปโหลดไฟล์อาจช่วยในแก้จุดบกพร่อง false positive, ถ้านี่คือสิ่งที่เกิดขึ้นบ่อยๆสำหรับคุณ. ในการปิดใช้งานฟังก์ชันกักกัน, เพียงแค่ปล่อยให้คำสั่ง quarantine_key ว่างเปล่า, หรือลบเนื้อหาหากยังไม่ว่าง. เมื่อต้องการเปิดใช้งานฟังก์ชันกักกัน, ใส่ค่าลงในคำสั่ง. quarantine_key เป็นคุณลักษณะด้านความปลอดภัยที่สำคัญสำหรับฟังก์ชันการกักกันจำเป็นต้องใช้เพื่อป้องกันฟังก์ชันการกักกันจากถูกใช้ประโยชน์โดยผู้บุกรุกที่อาจเกิดขึ้นและเป็นวิธีการในการป้องกันการดำเนินการข้อมูลที่เก็บไว้ภายในเขตกักกัน. quarantine_key ควรได้รับการปฏิบัติเช่นเดียวกับรหัสผ่านของคุณ: อีกต่อไปจะดีกว่า, และระมัดระวังอย่างระมัดระวัง. เพื่อให้ได้ผลดีที่สุด, ใช้ร่วมกับ delete_on_sight.'; -$phpMussel['lang']['config_general_quarantine_max_filesize'] = 'ขนาดไฟล์สูงสุดที่อนุญาตสำหรับไฟล์ที่ถูกกักกัน. ไฟล์มีขนาดใหญ่กว่าค่าที่ระบุจะไม่ถูกกักกัน. คำสั่งนี้มีความสำคัญเป็นวิธีการทำให้ยากขึ้นสำหรับผู้บุกรุกที่อาจเกิดขึ้นจากน้ำท่วมกักกันของคุณด้วยข้อมูลที่ไม่พึงประสงค์ที่อาจทำให้เกิดการใช้ข้อมูลส่วนเกินเกี่ยวกับบริการพื้นที่ของคุณ. ค่าเริ่มต้น = 2MB.'; -$phpMussel['lang']['config_general_quarantine_max_usage'] = 'ใช้หน่วยความจำสูงสุดสำหรับกักกัน. หากหน่วยความจำทั้งหมดใช้โดยกักกันถึงค่านี้, ไฟล์กักกันที่เก่าแก่ที่สุดจะถูกลบออกจนการใช้หน่วยความจำทั้งหมดไม่ถึงค่านี้อีกต่อไป. คำสั่งนี้มีความสำคัญเป็นวิธีการทำให้ยากขึ้นสำหรับผู้บุกรุกที่อาจเกิดขึ้นจากน้ำท่วมกักกันของคุณด้วยข้อมูลที่ไม่พึงประสงค์ที่อาจทำให้เกิดการใช้ข้อมูลส่วนเกินเกี่ยวกับบริการพื้นที่ของคุณ. ค่าเริ่มต้น = 64MB.'; -$phpMussel['lang']['config_general_scan_cache_expiry'] = 'เวลาเท่าไรควร phpMussel แคชผลการสแกน? ค่าคือจำนวนวินาทีที่จะแคชผลการสแกน. ค่าเริ่มต้นคือ 21600 วินาที (6 ชั่วโมง); ค่า 0 จะปิดใช้งานแคชของผลการสแกน.'; -$phpMussel['lang']['config_general_scan_kills'] = 'ชื่อไฟล์สำหรับบันทึกข้อมูลทั้งหมดสำหรับอัปโหลดที่ถูกบล็อกหรือถูกฆ่า. ระบุชื่อไฟล์หรือเว้นว่างไว้เพื่อปิดใช้งาน.'; -$phpMussel['lang']['config_general_scan_log'] = 'ชื่อไฟล์สำหรับบันทึกผลการสแกนทั้งหมด. ระบุชื่อไฟล์หรือเว้นว่างไว้เพื่อปิดใช้งาน.'; -$phpMussel['lang']['config_general_scan_log_serialized'] = 'ชื่อไฟล์สำหรับบันทึกผลการสแกนทั้งหมด (ใช้รูปแบบ serialized). ระบุชื่อไฟล์หรือเว้นว่างไว้เพื่อปิดใช้งาน.'; -$phpMussel['lang']['config_general_statistics'] = 'ติดตามสถิติการใช้งาน phpMussel? True = ติดตาม; False = ไม่ติดตาม [ค่าเริ่มต้น].'; -$phpMussel['lang']['config_general_timeFormat'] = 'รูปแบบสัญกรณ์สำหรับวันและเวลาใช้โดย phpMussel. ตัวเลือกเพิ่มเติมอาจเพิ่มเมื่อมีการร้องขอ.'; -$phpMussel['lang']['config_general_timeOffset'] = 'เขตเวลาชดเชยในนาที.'; -$phpMussel['lang']['config_general_timezone'] = 'โซนเวลาของคุณ.'; -$phpMussel['lang']['config_general_truncate'] = 'ตัดทอนแฟ้มบันทึกเมื่อถึงขนาดที่กำหนดหรือไม่? ค่ามีขนาดสูงสุดในรูปแบบ B/KB/MB/GB/TB ที่แฟ้มบันทึกอาจโตขึ้นก่อนที่จะถูกตัดทอน. ค่าเริ่มต้นของ 0KB ปิดการตัดทอน (แฟ้มบันทึกสามารถเติบโตไปเรื่อย). หมายเหตุ: ถูกใช้ด้วยกับล็อกไฟล์แต่ละไฟล์! ขนาดของไฟล์บันทึกไม่ถือเป็นการรวมกัน.'; -$phpMussel['lang']['config_heuristic_threshold'] = 'ลายเซ็น phpMussel บางตัวมีจุดมุ่งหมายเพื่อระบุลักษณะที่น่าสงสัยและอาจเป็นอันตรายในไฟล์ที่อัปโหลดไม่มีในตัวเองระบุไฟล์ที่อัปโหลดโดยเฉพาะอย่างยิ่งที่เป็นอันตราย. ค่านี้ "threshold" บอก phpMussel น้ำหนักรวมสูงสุดสำหรับคุณภาพที่น่าสงสัยและอาจเป็นอันตรายสำหรับไฟล์ที่อัปโหลดก่อนที่จะถูกระบุว่าเป็นอันตราย. ความหมายของน้ำหนักในบริบทนี้คือจำนวนรวมของคุณลักษณะที่น่าสงสัยและอาจเป็นอันตรายที่ระบุ. โดยค่าเริ่มต้น, ค่านี้จะถูกกำหนดเป็น 3. โดยทั่วไป, ค่าที่ต่ำกว่าจะส่งผลให้เกิดขึ้นมากขึ้น false positive แต่มีการระบุไฟล์ที่เป็นอันตรายจำนวนมากขึ้น, ในขณะที่ค่าที่สูงขึ้นโดยทั่วไปจะทำให้เกิดเหตุการณ์ที่ต่ำลงของ false positive แต่เป็นตัวเลขที่ต่ำกว่าของไฟล์ที่เป็นอันตรายถูกระบุ. เป็นการดีที่สุดที่จะปล่อยให้ค่านี้เป็นค่าเริ่มต้นจนกว่าคุณจะประสบปัญหา.'; -$phpMussel['lang']['config_signatures_Active'] = 'รายการไฟล์ลายเซ็นที่ใช้งานอยู่, คั่นด้วยเครื่องหมายจุลภาค.'; -$phpMussel['lang']['config_signatures_detect_adware'] = 'ควร phpMussel แยกวิเคราะห์ลายเซ็นสำหรับตรวจจับแอดแวร์หรือไม่? False = ไม่แยกวิเคราะห์; True = แยกวิเคราะห์ [ค่าเริ่มต้น].'; -$phpMussel['lang']['config_signatures_detect_deface'] = 'ควร phpMussel แยกวิเคราะห์ลายเซ็นเพื่อตรวจหา defacements และ defacers หรือไม่? False = ไม่แยกวิเคราะห์; True = แยกวิเคราะห์ [ค่าเริ่มต้น].'; -$phpMussel['lang']['config_signatures_detect_encryption'] = 'ควร phpMussel ตรวจพบและบล็อกไฟล์ที่เข้ารหัสลับโดยหรือไม่? False = ไม่แยกวิเคราะห์; True = แยกวิเคราะห์ [ค่าเริ่มต้น].'; -$phpMussel['lang']['config_signatures_detect_joke_hoax'] = 'ควร phpMussel แยกวิเคราะห์ลายเซ็นสำหรับการตรวจจับมัลแวร์และไวรัสที่ตหลอกลวงหรือไม่? False = ไม่แยกวิเคราะห์; True = แยกวิเคราะห์ [ค่าเริ่มต้น].'; -$phpMussel['lang']['config_signatures_detect_packer_packed'] = 'ควร phpMussel แยกวิเคราะห์ลายเซ็นสำหรับตรวจจับเครื่องบรรจุหีบห่อและข้อมูลที่บรรจุหรือไม่? False = ไม่แยกวิเคราะห์; True = แยกวิเคราะห์ [ค่าเริ่มต้น].'; -$phpMussel['lang']['config_signatures_detect_pua_pup'] = 'ควร phpMussel แยกวิเคราะห์ลายเซ็นสำหรับตรวจจับ PUA/PUP หรือไม่? False = ไม่แยกวิเคราะห์; True = แยกวิเคราะห์ [ค่าเริ่มต้น].'; -$phpMussel['lang']['config_signatures_detect_shell'] = 'ควร phpMussel แยกวิเคราะห์ลายเซ็นสำหรับการตรวจจับสคริปต์เชลล์หรือไม่? False = ไม่แยกวิเคราะห์; True = แยกวิเคราะห์ [ค่าเริ่มต้น].'; -$phpMussel['lang']['config_signatures_fail_extensions_silently'] = 'ควร phpMussel รายงานเมื่อไม่มีส่วนขยายหรือไม่? ถ้า fail_extensions_silently ถูกปิดใช้งาน, ส่วนขยายที่ขาดหายไปจะมีการรายงานเมื่อทำการสแกน, และถ้า fail_extensions_silently เปิดใช้งาน, ส่วนขยายที่ขาดหายไปจะถูกละเลย, และจะมีรายงานว่าไม่มีปัญหา. การปิดใช้งานคำสั่งนี้อาจเพิ่มความปลอดภัยของคุณ, แต่ยังอาจนำไปสู่การเพิ่มขึ้น false positive. False = เปิดใช้งาน; True = เปิดใช้งาน [ค่าเริ่มต้น].'; -$phpMussel['lang']['config_signatures_fail_silently'] = 'ควร phpMussel รายงานเมื่อไฟล์ลายเซ็นสูญหายหรือเสียหายหรือไม่? ถ้า fail_silently ถูกปิดใช้งาน, ไฟล์ที่ขาดหายไปและเสียหายจะรายงานเมื่อทำการสแกน, และถ้า fail_silently เปิดใช้งาน, ไฟล์ที่ขาดหายไปและเสียหายจะถูกละเลย, และจะมีรายงานว่าไม่มีปัญหา. โดยทั่วไปแล้วควรทิ้งไว้ตามลำพังจนกว่าคุณจะประสบปัญหา. False = ปิดใช้งาน; True = เปิดใช้งาน [ค่าเริ่มต้น].'; -$phpMussel['lang']['config_template_data_css_url'] = 'ไฟล์เทมเพลตสำหรับธีมที่กำหนดเองใช้คุณสมบัติ CSS ภายนอก, ขณะที่ไฟล์เทมเพลตสำหรับธีมเริ่มต้นใช้คุณสมบัติ CSS ภายใน. เพื่อที่จะบอก phpMussel ใช้ไฟล์เทมเพลตสำหรับธีมที่กำหนดเอง, ระบุที่อยู่ HTTP สาธารณะของไฟล์ CSS ของธีมที่กำหนดเองโดยใช้ตัวแปร css_url. หากปล่อยตัวแปรนี้ไว้ว่าง, phpMussel จะใช้ไฟล์เทมเพลตสำหรับธีมเริ่มต้น.'; -$phpMussel['lang']['config_template_data_Magnification'] = 'การขยายตัวอักษร. ค่าเริ่มต้น = 1.'; -$phpMussel['lang']['config_template_data_theme'] = 'ธีมเริ่มต้นที่จะใช้สำหรับ phpMussel.'; -$phpMussel['lang']['config_urlscanner_cache_time'] = 'จำนวนวินาทีที่จะแคชผลลัพธ์สำหรับการค้นหา API. ค่าเริ่มต้นคือ 3600 วินาที (1 ชั่วโมง).'; -$phpMussel['lang']['config_urlscanner_google_api_key'] = 'เปิดใช้งานการค้นหา API สำหรับ Google Safe Browsing API เมื่อมีการกำหนดคีย์ API ที่จำเป็นไว้.'; -$phpMussel['lang']['config_urlscanner_lookup_hphosts'] = 'เปิดใช้งานการค้นหา API สำหรับ hpHosts API เมื่อตั้งค่าเป็น true.'; -$phpMussel['lang']['config_urlscanner_maximum_api_lookups'] = 'จำนวนที่อนุญาตสูงสุดของการค้นหา API ทำต่อการทำซ้ำของการสแกนแต่ละครั้ง. เพราะการค้นหา API แต่ละครั้งจะเพิ่มเวลารวมที่ต้องการเพื่อทำซ้ำการสแกนแต่ละครั้ง, คุณอาจต้องการกำหนดข้อจำกัดเพื่อเร่งกระบวนการสแกนโดยรวม.เมื่อตั้งค่าเป็น 0, ไม่มีจำนวนที่อนุญาตสูงสุดดังกล่าวจะถูกนำมาใช้. ตั้งค่าเป็น 10 โดยค่าเริ่มต้น.'; -$phpMussel['lang']['config_urlscanner_maximum_api_lookups_response'] = 'จะทำอย่างไรถ้าจำนวนที่อนุญาตสูงสุดของการค้นหา API คือเกิน? False = ไม่ทำอะไร (ดำเนินการต่อ) [ค่าเริ่มต้น]; True = หยุดไฟล์.'; -$phpMussel['lang']['config_virustotal_vt_public_api_key'] = 'ถ้าคุณต้องการ, phpMussel สามารถสแกนไฟล์โดยใช้ Virus Total API เป็นวิธีการเพิ่มระดับการป้องกันไวรัส, โทรจัน, มัลแวร์, และภัยคุกคามอื่น ๆ. โดยค่าเริ่มต้น, การสแกนไฟล์ด้วย Virus Total API จะถูกปิดใช้งาน. ในการเปิดใช้งาน, จำเป็นต้องมีคีย์ API จาก Virus Total. เนื่องจากข้อดีที่สำคัญที่จะช่วยให้คุณได้, ฉันขอแนะนำให้เปิดใช้งานนี้. โปรดทราบว่า, เพื่อใช้ API Virus Total, คุณต้องยอมรับข้อกำหนดในการให้บริการและคุณต้อง ปฏิบัติตามหลักเกณฑ์ทั้งหมดที่อธิบายไว้ในเอกสารประกอบ! คุณไม่ได้รับอนุญาตให้ใช้คุณลักษณะนี้เว้นแต่: คุณได้อ่านและยอมรับข้อกำหนดในการให้บริการแล้วของ Virus Total และ API. คุณได้อ่านและเข้าใจแล้ว, อย่างน้อยที่สุด, คำนำของเอกสารของ Virus Total Public API (ทุกอย่างหลังจาก "VirusTotal Public API v2.0" แต่ก่อน "Contents").'; -$phpMussel['lang']['config_virustotal_vt_quota_rate'] = 'ตามเอกสารคู่มือ Virus Total API, มันคือจำกัด 4 คำขอของชนิดใดในกรอบเวลาใด 1 นาที. ถ้าคุณเรียกใช้ honeyclient, honeypot, หรือระบบอัตโนมัติอื่นที่จะให้ทรัพยากรสำหรับ VirusTotal และไม่เพียงแต่เรียกรายงานคุณมีสิทธิ์ได้รับโควต้าอัตราการร้องขอที่สูงขึ้น. โดยค่าเริ่มต้น, phpMussel จะปฏิบัติตามข้อจำกัดเหล่านี้อย่างเคร่งครัด, แต่เนื่องจากความเป็นไปได้ของโควต้าอัตราเหล่านี้เพิ่มขึ้น, ทั้งสองข้อนี้มีให้คุณสามารถสั่งสอน phpMussel เป็นสิ่งที่จำกัดที่ควรปฏิบัติตาม. ยกเว้นกรณีที่คุณได้รับคำสั่งให้ทำเช่นนั้น, มันไม่แนะนำสำหรับคุณเพื่อเพิ่มค่าเหล่านี้, แต่, ถ้าคุณพบปัญหาเกี่ยวกับการเข้าถึงโควต้าอัตรา, ลดค่าเหล่านี้อาจบางครั้งช่วยให้คุณในการจัดการกับปัญหาเหล่านี้. ขีดจำกัดอัตราของคุณถูกกำหนดเป็น vt_quota_rate คำขอของชนิดใดในกรอบเวลาใด vt_quota_time นาที.'; -$phpMussel['lang']['config_virustotal_vt_quota_time'] = '(ดูรายละเอียดข้างต้น).'; -$phpMussel['lang']['config_virustotal_vt_suspicion_level'] = 'โดยค่าเริ่มต้น, phpMussel จะ จำกัดไฟล์ที่จะสแกนโดยใช้ Virus Total API ไปไฟล์เหล่านั้นที่ถือว่า "น่าสงสัย". คุณสามารถเลือกปรับข้อ จำกัด นี้ได้โดยการเปลี่ยนค่าของคำสั่ง vt_suspicion_level.'; -$phpMussel['lang']['config_virustotal_vt_weighting'] = 'ควร phpMussel ตีความผลการสแกนใช้ Virus Total API เป็นการตรวจจับหรือเป็นน้ำหนักการตรวจจับ? คำสั่งนี้มีอยู่, เพราะ, แม้ว่าการสแกนไฟล์ด้วยใช้เครื่องยนต์หลาย (ตามวิธี Virus Total ทำ) ควรผลในอัตราการตรวจจับเพิ่มขึ้น(และดังนั้นจึงในจำนวนที่สูงขึ้นของไฟล์ที่เป็นอันตรายถูกจับ), มันยังสามารถส่งผลให้มากกว่า false positive, และดังนั้นจึง, ในบางสถานการณ์, ผลการสแกนอาจใช้ประโยชน์ได้ดีกว่าเป็นคะแนนความเชื่อมั่นแทนที่จะเป็นข้อสรุปที่ชัดเจน. ถ้าใช้ค่าเป็น 0, ผลการสแกนจาก Virus Total API จะถูกใช้เป็นการตรวจจับ, และดังนั้นจึง, หากเครื่องมือใดใช้โดย Virus Total ระบุไฟล์ที่กำลังสแกนเป็นอันตราย, phpMussel จะพิจารณาว่าไฟล์เป็นอันตราย. หากใช้ค่าอื่น, ผลการสแกนจาก Virus Total API จะถูกใช้เป็นน้ำหนักการตรวจจับ, และดังนั้นจึง, จำนวนเครื่องที่ใช้โดย Virus Total ที่ระบุไฟล์ที่ถูกสแกนว่าเป็นอันตรายจะทำหน้าที่เป็นคะแนนความเชื่อมั่น (หรือน้ำหนักการตรวจจับ) สำหรับหรือไม่ไฟล์ที่ถูกสแกนควรได้รับการพิจารณาว่าเป็นอันตรายโดย phpMussel (ค่าที่ใช้จะแสดงคะแนนความเชื่อมั่นต่ำสุดหรือน้ำหนักการตรวจจับเพื่อที่จะได้รับการพิจารณาที่เป็นอันตราย). ค่าเริ่มต้นจะถูกใช้เป็นค่าเริ่มต้น 0.'; -$phpMussel['lang']['Extended Description: phpMussel'] = 'แพคเกจหลัก (ไม่รวมลายเซ็น, เอกสาร, และการกำหนดค่า).'; -$phpMussel['lang']['field_activate'] = 'เปิดใช้งาน'; -$phpMussel['lang']['field_clear_all'] = 'ล้างทั้งหมด'; -$phpMussel['lang']['field_component'] = 'คอมโพเนนต์'; -$phpMussel['lang']['field_create_new_account'] = 'สร้างบัญชีใหม่'; -$phpMussel['lang']['field_deactivate'] = 'ปิดใช้งาน'; -$phpMussel['lang']['field_delete_account'] = 'ลบบัญชี'; -$phpMussel['lang']['field_delete_all'] = 'ลบทั้งหมด'; -$phpMussel['lang']['field_delete_file'] = 'ลบ'; -$phpMussel['lang']['field_download_file'] = 'ดาวน์โหลด'; -$phpMussel['lang']['field_edit_file'] = 'เปลี่ยนแปลง'; -$phpMussel['lang']['field_false'] = 'False (เท็จ)'; -$phpMussel['lang']['field_file'] = 'ไฟล์'; -$phpMussel['lang']['field_filename'] = 'ชื่อไฟล์: '; -$phpMussel['lang']['field_filetype_directory'] = 'ไดเรกทอรี'; -$phpMussel['lang']['field_filetype_info'] = 'ไฟล์ {EXT}'; -$phpMussel['lang']['field_filetype_unknown'] = 'ไม่รู้จัก'; -$phpMussel['lang']['field_install'] = 'ติดตั้ง'; -$phpMussel['lang']['field_latest_version'] = 'รุ่นล่าสุด'; -$phpMussel['lang']['field_log_in'] = 'เข้าสู่ระบบ'; -$phpMussel['lang']['field_more_fields'] = 'รับฟิลด์เพิ่มเติม'; -$phpMussel['lang']['field_new_name'] = 'ชื่อใหม่:'; -$phpMussel['lang']['field_ok'] = 'ตกลง'; -$phpMussel['lang']['field_options'] = 'ตัวเลือก'; -$phpMussel['lang']['field_password'] = 'รหัสผ่าน'; -$phpMussel['lang']['field_permissions'] = 'สิทธิ์'; -$phpMussel['lang']['field_quarantine_key'] = 'คีย์กักกัน'; -$phpMussel['lang']['field_rename_file'] = 'เปลี่ยนชื่อ'; -$phpMussel['lang']['field_reset'] = 'รีเซ็ต'; -$phpMussel['lang']['field_restore_file'] = 'ฟื้นฟู'; -$phpMussel['lang']['field_set_new_password'] = 'ตั้งรหัสผ่านใหม่'; -$phpMussel['lang']['field_size'] = 'ขนาดรวม: '; -$phpMussel['lang']['field_size_bytes'] = 'ไบต์'; -$phpMussel['lang']['field_size_GB'] = 'GB'; -$phpMussel['lang']['field_size_KB'] = 'KB'; -$phpMussel['lang']['field_size_MB'] = 'MB'; -$phpMussel['lang']['field_size_TB'] = 'TB'; -$phpMussel['lang']['field_status'] = 'สถานะ'; -$phpMussel['lang']['field_system_timezone'] = 'ใช้เขตเวลาเริ่มต้นของระบบ.'; -$phpMussel['lang']['field_true'] = 'True (จริง)'; -$phpMussel['lang']['field_uninstall'] = 'ถอนการติดตั้ง'; -$phpMussel['lang']['field_update'] = 'อัปเดต'; -$phpMussel['lang']['field_update_all'] = 'อัพเดททั้งสิ้น'; -$phpMussel['lang']['field_upload_file'] = 'อัปโหลดไฟล์ใหม่'; -$phpMussel['lang']['field_username'] = 'ชื่อผู้ใช้'; -$phpMussel['lang']['field_your_version'] = 'เวอร์ชั่นของคุณ'; -$phpMussel['lang']['header_login'] = 'เข้าสู่ระบบเพื่อดำเนินการต่อ.'; -$phpMussel['lang']['label_active_config_file'] = 'ไฟล์การกำหนดค่าที่ใช้งานอยู่: '; -$phpMussel['lang']['label_blocked'] = 'อัปโหลดถูกบล็อก'; -$phpMussel['lang']['label_branch'] = 'สาขาเสถียรล่าสุด:'; -$phpMussel['lang']['label_events'] = 'สแกนเหตุการณ์'; -$phpMussel['lang']['label_flagged'] = 'วัตถุที่ถูกตั้งค่าสถานะ'; -$phpMussel['lang']['label_fmgr_cache_data'] = 'ข้อมูลแคชและไฟล์ชั่วคราว'; -$phpMussel['lang']['label_fmgr_disk_usage'] = 'เนื้อที่ดิสก์ที่ phpMussel ใช้: '; -$phpMussel['lang']['label_fmgr_free_space'] = 'พื้นที่ว่างในดิสก์: '; -$phpMussel['lang']['label_fmgr_total_disk_usage'] = 'เนื้อที่ดิสก์ที่ใช้ทั้งหมด: '; -$phpMussel['lang']['label_fmgr_total_space'] = 'เนื้อที่ดิสก์ทั้งหมด: '; -$phpMussel['lang']['label_fmgr_updates_metadata'] = 'เมตาดาต้าสำหรับอัพเดตคอมโพเนนต์'; -$phpMussel['lang']['label_hide'] = 'ปิดบัง'; -$phpMussel['lang']['label_os'] = 'ระบบปฏิบัติการในการใช้งาน:'; -$phpMussel['lang']['label_other'] = 'อื่น ๆ'; -$phpMussel['lang']['label_other-Active'] = 'ไฟล์ลายเซ็นที่ใช้งานอยู่'; -$phpMussel['lang']['label_other-Since'] = 'วันที่เริ่มต้น'; -$phpMussel['lang']['label_php'] = 'รุ่น PHP ในการใช้งาน:'; -$phpMussel['lang']['label_phpmussel'] = 'รุ่น phpMussel ในการใช้งาน:'; -$phpMussel['lang']['label_quarantined'] = 'อัปโหลดกักเก็บ'; -$phpMussel['lang']['label_sapi'] = 'SAPI ในการใช้งาน:'; -$phpMussel['lang']['label_scanned_objects'] = 'วัตถุถูกสแกน'; -$phpMussel['lang']['label_scanned_uploads'] = 'อัปโหลดถูกสแกน'; -$phpMussel['lang']['label_show'] = 'แสดง'; -$phpMussel['lang']['label_size_in_quarantine'] = 'ขนาดในกักกัน: '; -$phpMussel['lang']['label_stable'] = 'เสถียรล่าสุด:'; -$phpMussel['lang']['label_sysinfo'] = 'ข้อมูลระบบ:'; -$phpMussel['lang']['label_tests'] = 'การทดสอบ:'; -$phpMussel['lang']['label_unstable'] = 'ไม่เสถียรล่าสุด:'; -$phpMussel['lang']['label_upload_date'] = 'อัปโหลดวันที่: '; -$phpMussel['lang']['label_upload_hash'] = 'อัปโหลดแฮช: '; -$phpMussel['lang']['label_upload_origin'] = 'อัปโหลดที่มา: '; -$phpMussel['lang']['label_upload_size'] = 'อัปโหลดขนาด: '; -$phpMussel['lang']['link_accounts'] = 'บัญชี'; -$phpMussel['lang']['link_config'] = 'การกำหนดค่า'; -$phpMussel['lang']['link_documentation'] = 'เอกสาร'; -$phpMussel['lang']['link_file_manager'] = 'ตัวจัดการไฟล์'; -$phpMussel['lang']['link_home'] = 'โฮมเพจ'; -$phpMussel['lang']['link_logs'] = 'บันทึก'; -$phpMussel['lang']['link_quarantine'] = 'กักกัน'; -$phpMussel['lang']['link_statistics'] = 'สถิติ'; -$phpMussel['lang']['link_textmode'] = 'การจัดรูปแบบข้อความ: ง่ายแฟนซี'; -$phpMussel['lang']['link_updates'] = 'อัปเดต'; -$phpMussel['lang']['link_upload_test'] = 'ทดสอบการอัปโหลด'; -$phpMussel['lang']['logs_logfile_doesnt_exist'] = 'ไฟล์บันทึกเลือกไม่มีอยู่จริง!'; -$phpMussel['lang']['logs_no_logfiles_available'] = 'ไม่มีไฟล์บันทึกใช้ได้.'; -$phpMussel['lang']['logs_no_logfile_selected'] = 'ไม่มีไฟล์บันทึกเลือก.'; -$phpMussel['lang']['max_login_attempts_exceeded'] = 'จำนวนสูงสุดความพยายามเข้าสู่ระบบเกิน; ปฏิเสธการเข้าใช้.'; -$phpMussel['lang']['previewer_days'] = 'วัน'; -$phpMussel['lang']['previewer_hours'] = 'ชั่วโมง'; -$phpMussel['lang']['previewer_minutes'] = 'นาที'; -$phpMussel['lang']['previewer_months'] = 'เดือน'; -$phpMussel['lang']['previewer_seconds'] = 'วินาที'; -$phpMussel['lang']['previewer_weeks'] = 'สัปดาห์'; -$phpMussel['lang']['previewer_years'] = 'ปี'; -$phpMussel['lang']['response_accounts_already_exists'] = 'บัญชีด้วยนั่นเองชื่อผู้ใช้มีอยู่แล้ว!'; -$phpMussel['lang']['response_accounts_created'] = 'บัญชีสำเร็จแล้วสร้าง!'; -$phpMussel['lang']['response_accounts_deleted'] = 'บัญชีสำเร็จแล้วลบ!'; -$phpMussel['lang']['response_accounts_doesnt_exist'] = 'บัญชีไม่มีอยู่จริง.'; -$phpMussel['lang']['response_accounts_password_updated'] = 'รหัสผ่านสำเร็จแล้วอัปเดต!'; -$phpMussel['lang']['response_activated'] = 'สำเร็จแล้วเปิดใช้งาน.'; -$phpMussel['lang']['response_activation_failed'] = 'ล้มเหลวเปิดใช้งาน!'; -$phpMussel['lang']['response_checksum_error'] = 'ข้อผิดพลาด checksum! ไฟล์ถูกปฏิเสธ!'; -$phpMussel['lang']['response_component_successfully_installed'] = 'คอมโพเนนต์สำเร็จแล้วในการติดตั้ง.'; -$phpMussel['lang']['response_component_successfully_uninstalled'] = 'คอมโพเนนต์สำเร็จแล้วถอนการติดตั้ง.'; -$phpMussel['lang']['response_component_successfully_updated'] = 'คอมโพเนนต์สำเร็จแล้วอัปเดต.'; -$phpMussel['lang']['response_component_uninstall_error'] = 'เกิดขึ้นผิดพลาดขณะพยายามถอนการติดตั้งคอมโพเนนต์.'; -$phpMussel['lang']['response_configuration_updated'] = 'การกำหนดค่าสำเร็จแล้วอัปเดต.'; -$phpMussel['lang']['response_deactivated'] = 'สำเร็จแล้วปิดใช้งาน.'; -$phpMussel['lang']['response_deactivation_failed'] = 'ล้มเหลวปิดใช้งาน!'; -$phpMussel['lang']['response_delete_error'] = 'ล้มเหลวลบ!'; -$phpMussel['lang']['response_directory_deleted'] = 'ไดเรกทอรีสำเร็จแล้วลบ!'; -$phpMussel['lang']['response_directory_renamed'] = 'ไดเรกทอรีสำเร็จแล้วเปลี่ยนชื่อ!'; -$phpMussel['lang']['response_error'] = 'ข้อผิดพลาด'; -$phpMussel['lang']['response_failed_to_install'] = 'การติดตั้งล้มเหลว!'; -$phpMussel['lang']['response_failed_to_update'] = 'การอัพเดทล้มเหลว!'; -$phpMussel['lang']['response_file_deleted'] = 'ไฟล์สำเร็จแล้วลบ!'; -$phpMussel['lang']['response_file_edited'] = 'ไฟล์สำเร็จแล้วเปลี่ยนแปลง!'; -$phpMussel['lang']['response_file_renamed'] = 'ไฟล์สำเร็จแล้วเปลี่ยนชื่อ!'; -$phpMussel['lang']['response_file_restored'] = 'ฟื้นฟูไฟล์สำเร็จแล้ว!'; -$phpMussel['lang']['response_file_uploaded'] = 'ไฟล์สำเร็จแล้วอัปโหลด!'; -$phpMussel['lang']['response_login_invalid_password'] = 'ความล้มเหลวในการเข้าสู่ระบบ! รหัสผ่านไม่ถูกต้อง!'; -$phpMussel['lang']['response_login_invalid_username'] = 'ความล้มเหลวในการเข้าสู่ระบบ! ชื่อผู้ใช้ไม่มีอยู่จริง!'; -$phpMussel['lang']['response_login_password_field_empty'] = 'รหัสผ่านฟิลด์ว่างเปล่า!'; -$phpMussel['lang']['response_login_username_field_empty'] = 'ชื่อผู้ใช้ฟิลด์ว่างเปล่า!'; -$phpMussel['lang']['response_rename_error'] = 'ล้มเหลวเปลี่ยนชื่อ!'; -$phpMussel['lang']['response_restore_error_1'] = 'ไม่สามารถฟื้นฟู! ไฟล์ที่เสียหาย!'; -$phpMussel['lang']['response_restore_error_2'] = 'ไม่สามารถฟื้นฟู! คีย์กักกันไม่ถูกต้อง!'; -$phpMussel['lang']['response_statistics_cleared'] = 'สถิติลบแล้ว'; -$phpMussel['lang']['response_updates_already_up_to_date'] = 'อัปเดตแล้ว.'; -$phpMussel['lang']['response_updates_not_installed'] = 'คอมโพเนนต์ไม่ได้ติดตั้ง!'; -$phpMussel['lang']['response_updates_not_installed_php'] = 'คอมโพเนนต์ไม่ได้ติดตั้ง (ต้องการ PHP {V})!'; -$phpMussel['lang']['response_updates_outdated'] = 'ล้าสมัยแล้ว!'; -$phpMussel['lang']['response_updates_outdated_manually'] = 'ล้าสมัยแล้ว (โปรดอัปเดตด้วยตนเอง)!'; -$phpMussel['lang']['response_updates_outdated_php_version'] = 'ล้าสมัยแล้ว (ต้องการ PHP {V})!'; -$phpMussel['lang']['response_updates_unable_to_determine'] = 'ไม่สามารถกำหนดได้.'; -$phpMussel['lang']['response_upload_error'] = 'ล้มเหลวอัปโหลด!'; -$phpMussel['lang']['state_complete_access'] = 'เข้าถึงได้อย่างสมบูรณ์'; -$phpMussel['lang']['state_component_is_active'] = 'คอมโพเนนต์ใช้งานอยู่.'; -$phpMussel['lang']['state_component_is_inactive'] = 'คอมโพเนนต์ไม่ใช้งาน.'; -$phpMussel['lang']['state_component_is_provisional'] = 'คอมโพเนนต์เป็นครั้งคราว.'; -$phpMussel['lang']['state_default_password'] = 'คำเตือน: ใช้ค่าเริ่มต้นรหัสผ่าน!'; -$phpMussel['lang']['state_logged_in'] = 'เข้าสู่ระบบ.'; -$phpMussel['lang']['state_logs_access_only'] = 'เข้าถึงบันทึกเท่านั้น'; -$phpMussel['lang']['state_maintenance_mode'] = 'คำเตือน: เปิดใช้งานโหมดการบำรุงรักษา!'; -$phpMussel['lang']['state_password_not_valid'] = 'คำเตือน: บัญชีนี้ไม่ได้ใช้รหัสผ่านถูกต้อง!'; -$phpMussel['lang']['state_quarantine'] = 'อยู่ในกักกัน %s ไฟล์.'; -$phpMussel['lang']['switch-hide-non-outdated-set-false'] = 'อย่าซ่อนไม่ใช่ล้าสมัย'; -$phpMussel['lang']['switch-hide-non-outdated-set-true'] = 'ซ่อนไม่ใช่ล้าสมัย'; -$phpMussel['lang']['switch-hide-unused-set-false'] = 'อย่าซ่อนไม่ได้ใช้'; -$phpMussel['lang']['switch-hide-unused-set-true'] = 'ซ่อนไม่ได้ใช้'; -$phpMussel['lang']['tip_accounts'] = 'สวัสดี, {username}.
        หน้าบัญชีช่วยให้คุณสามารถควบคุมผู้ที่สามารถเข้าถึง front-end ของ phpMussel.'; -$phpMussel['lang']['tip_config'] = 'สวัสดี, {username}.
        หน้าการกำหนดค่าช่วยให้คุณสามารถแก้ไขการกำหนดค่าสำหรับ phpMussel จาก front-end.'; -$phpMussel['lang']['tip_donate'] = 'phpMussel ให้บริการฟรี, แต่ถ้าคุณต้องการบริจาคให้กับโครงการ, คุณสามารถทำได้โดยคลิกที่ปุ่มบริจาค.'; -$phpMussel['lang']['tip_file_manager'] = 'สวัสดี, {username}.
        ตัวจัดการไฟล์ ช่วยให้คุณสามารถลบบัญชี, แก้ไข, อัปโหลด, และดาวน์โหลดไฟล์. ใช้ด้วยความระมัดระวัง (คุณสามารถทำลายการติดตั้งของคุณด้วยนี้).'; -$phpMussel['lang']['tip_home'] = 'สวัสดี, {username}.
        นี่คือโฮมเพจสำหรับ front-end ของ phpMussel. เลือกลิงค์จากเมนูนำทางด้านซ้ายเพื่อดำเนินการต่อ.'; -$phpMussel['lang']['tip_login'] = 'ค่าเริ่มต้นชื่อผู้ใช้: admin – ค่าเริ่มต้นรหัสผ่าน: password'; -$phpMussel['lang']['tip_logs'] = 'สวัสดี, {username}.
        เลือกไฟล์บันทึกจากรายการด้านล่างเพื่อดูเนื้อหาของไฟล์บันทึกนั้น.'; -$phpMussel['lang']['tip_quarantine'] = 'สวัสดี, {username}.
        หน้านี้แสดงรายการไฟล์ทั้งหมดที่อยู่ในกักกันและอำนวยความสะดวกในการจัดการไฟล์เหล่านี้.'; -$phpMussel['lang']['tip_quarantine_disabled'] = 'บันทึก: กักกันถูกปิดใช้งานอยู่ แต่สามารถเปิดใช้งานได้ผ่านทางหน้ากำหนดค่า.'; -$phpMussel['lang']['tip_see_the_documentation'] = 'ดูที่เอกสารสำหรับข้อมูลเกี่ยวกับคำสั่งการกำหนดค่าต่างๆและวัตถุประสงค์ของพวกเขา.'; -$phpMussel['lang']['tip_statistics'] = 'สวัสดี, {username}.
        หน้านี้แสดงสถิติการใช้งานขั้นพื้นฐานเกี่ยวกับการติดตั้ง phpMussel ของคุณ.'; -$phpMussel['lang']['tip_statistics_disabled'] = 'บันทึก: ขณะนี้การติดตามผลสถิติถูกปิดใช้งาน แต่สามารถเปิดใช้งานได้ผ่านทางหน้าการกำหนดค่า.'; -$phpMussel['lang']['tip_updates'] = 'สวัสดี, {username}.
        หน้าอัปเดตช่วยให้คุณสามารถติดตั้ง, ถอนการติดตั้ง, และอัปเดตคอมโพเนนต์ต่างๆของ phpMussel (แพคเกจหลัก, ลายเซ็น, ไฟล์การแปล, ฯลฯ).'; -$phpMussel['lang']['tip_upload_test'] = 'สวัสดี, {username}.
        หน้าทดสอบการอัปโหลดมีแบบฟอร์มอัปโหลดไฟล์มาตรฐาน, ช่วยให้คุณสามารถทดสอบถ้าไฟล์ปกติจะถูกบล็อกโดย phpMussel เมื่อพยายามอัปโหลด.'; -$phpMussel['lang']['title_accounts'] = 'phpMussel – บัญชี'; -$phpMussel['lang']['title_config'] = 'phpMussel – การกำหนดค่า'; -$phpMussel['lang']['title_file_manager'] = 'phpMussel – ตัวจัดการไฟล์'; -$phpMussel['lang']['title_home'] = 'phpMussel – โฮมเพจ'; -$phpMussel['lang']['title_login'] = 'phpMussel – เข้าสู่ระบบ'; -$phpMussel['lang']['title_logs'] = 'phpMussel – บันทึก'; -$phpMussel['lang']['title_quarantine'] = 'phpMussel – กักกัน'; -$phpMussel['lang']['title_statistics'] = 'phpMussel – สถิติ'; -$phpMussel['lang']['title_updates'] = 'phpMussel – อัปเดต'; -$phpMussel['lang']['title_upload_test'] = 'phpMussel – ทดสอบการอัปโหลด'; -$phpMussel['lang']['warning'] = 'คำเตือน:'; -$phpMussel['lang']['warning_php_1'] = 'เวอร์ชัน PHP ของคุณไม่ได้รับการสนับสนุนอีกต่อไป! ปรับปรุงขอแนะนำ!'; -$phpMussel['lang']['warning_php_2'] = 'เวอร์ชัน PHP ของคุณมีความเสี่ยงสูง! ปรับปรุงขอแนะนำ!'; -$phpMussel['lang']['warning_signatures_1'] = 'ไม่มีไฟล์ลายเซ็นที่ใช้งานอยู่!'; - -$phpMussel['lang']['info_some_useful_links'] = 'ลิงก์ที่เป็นประโยชน์:
          -
        • ปัญหา phpMussel @ GitHub – หน้าปัญหาสำหรับ phpMussel (สนับสนุน, ความช่วยเหลือ, ฯลฯ).
        • -
        • phpMussel @ Spambot Security – ฟอรั่มการอภิปรายสำหรับ phpMussel (สนับสนุน, ความช่วยเหลือ, ฯลฯ).
        • -
        • phpMussel @ SourceForge – สถานที่ดาวน์โหลดอื่นสำหรับ phpMussel.
        • -
        • WebSecTools.com – คอลเลกชันเครื่องมือเว็บมาสเตอร์ง่ายสำหรับการรักษาความปลอดภัยเว็บไซต์.
        • -
        • ClamavNet – โฮมเพจ ClamAV (ClamAV® เป็นเครื่องมือป้องกันไวรัสแบบโอเพนซอร์สสำหรับการตรวจจับโทรจันไวรัสมัลแวร์และภัยคุกคามที่เป็นอันตรายอื่น).
        • -
        • SecuriteInfo.com – บริษัทรักษาความปลอดภัยคอมพิวเตอร์ที่เสนอลายเซ็นเสริมสำหรับ ClamAV.
        • -
        • PhishTank – ฐานข้อมูลฟิชชิ่งใช้โดยเครื่องสแกน URL phpMussel.
        • -
        • Global PHP Group @ Facebook – แหล่งเรียนรู้ PHP และการสนทนา.
        • -
        • PHP.earth – แหล่งเรียนรู้ PHP และการสนทนา.
        • -
        • VirusTotal – VirusTotal เป็นบริการฟรีสำหรับการวิเคราะห์ไฟล์และ URL ที่น่าสงสัย.
        • -
        • Hybrid Analysis – Hybrid Analysis เป็นบริการฟรีสำหรับการวิเคราะห์มัลแวร์ให้บริการโดย Payload Security.
        • -
        • Malwarebytes – ผู้เชี่ยวชาญด้านคอมพิวเตอร์ป้องกันมัลแวร์.
        • -
        • MalwareTips – ฟอรัมที่เป็นประโยชน์สำหรับการสนทนาเกี่ยวกับมัลแวร์.
        • -
        • Vulnerability Charts (ชาร์ตเสี่ยง) – แสดงรายการเวอร์ชันต่างๆแพคเกจที่ปลอดภัย/ไม่ปลอดภัย (PHP, HHVM, ฯลฯ).
        • -
        • Compatibility Charts (ชาร์ตความเข้ากันได้) – แสดงข้อมูลความเข้ากันได้ของแพคเกจต่างๆ (CIDRAM, phpMussel, ฯลฯ).
        • -
        '; diff --git a/libraries/plugins/phpMussel/vault/lang/lang.th.php b/libraries/plugins/phpMussel/vault/lang/lang.th.php deleted file mode 100644 index ece85f8..0000000 --- a/libraries/plugins/phpMussel/vault/lang/lang.th.php +++ /dev/null @@ -1,127 +0,0 @@ -Ana Sayfa | Çıkış'; -$phpMussel['lang']['bNav_logout'] = 'Çıkış'; -$phpMussel['lang']['config_attack_specific_archive_file_extensions'] = 'Tanınan arşiv dosya uzantıları (biçimi CSV\'dir; sorunlar olduğunda yalnızca eklemeli veya çıkarılmalıdır; gereksiz yere kaldırılması yanlış pozitiflerin ortaya çıkmasına neden olabilir; gereksiz yere ekleme, eklediğinizin beyaz listeye eklenmesine eşdeğerdir; dikkatle değiştirmek; bunun içerik düzeyinde bir etkisi olmadığını da unutmayın). Varsayılan olarak olduğu gibi liste, çoğunlukla sistemlerin ve CMS\'nin çoğunluğunda kullanılan biçimleri listeler, ancak kapsamlı değildir.'; -$phpMussel['lang']['config_attack_specific_block_control_characters'] = 'Herhangi bir kontrol karakteri içeren dosyaları engelle (yeni satırlara istisna)? ([\x00-\x08\x0b\x0c\x0e\x1f\x7f]) Yalnızca düz metin yüklüyorsanız, sisteminize biraz daha koruma sağlamak için bu seçeneği açabilirsiniz. Bununla birlikte, başka herhangi bir şey için, bunu açtığınızda yanlış pozitif sonuç alabilirsiniz. Yanlış/False = Engelleme [Varsayılan]; Doğru/True = Engelle.'; -$phpMussel['lang']['config_attack_specific_chameleon_from_exe'] = 'Çalıştırılamaz dosyalarda ve arşiv dışı dosyalarda yürütülebilir üstbilgileri ara ve başlıkları yanlış olan yürütülebilir dosyaları arayın. Yanlış/False = Kapalı; Doğru/True = Açık.'; -$phpMussel['lang']['config_attack_specific_chameleon_from_php'] = 'PHP başlıklarını PHP olmayan dosyalarda arayın. Yanlış/False = Kapalı; Doğru/True = Açık.'; -$phpMussel['lang']['config_attack_specific_chameleon_to_archive'] = 'Başlıkları yanlış olan arşivlerde arama yapın (Desteklenen: BZ, GZ, RAR, ZIP, RAR, GZ). Yanlış/False = Kapalı; Doğru/True = Açık.'; -$phpMussel['lang']['config_attack_specific_chameleon_to_doc'] = 'Başlıkları yanlış olan ofis belgelerini arama (Desteklenen: DOC, DOT, PPS, PPT, XLA, XLS, WIZ). Yanlış/False = Kapalı; Doğru/True = Açık.'; -$phpMussel['lang']['config_attack_specific_chameleon_to_img'] = 'Başlıkları yanlış olan resimleri arama (Desteklenen: BMP, DIB, PNG, GIF, JPEG, JPG, XCF, PSD, PDD, WEBP). Yanlış/False = Kapalı; Doğru/True = Açık.'; -$phpMussel['lang']['config_attack_specific_chameleon_to_pdf'] = 'Başlıkları yanlış olan PDF dosyalarını arayın. Yanlış/False = Kapalı; Doğru/True = Açık.'; -$phpMussel['lang']['config_attack_specific_corrupted_exe'] = 'Bozuk dosyalar ve işleme hataları. Yanlış/False = Aldırmamak; Doğru/True = Engelle [Varsayılan]. Potansiyel olarak bozuk PE (Portable Executable) dosyalarını algıla ve engelle? Genellikle (ama her zaman değil), bir PE dosyasının bazı kısımları bozulmuş veya doğru şekilde ayrıştırılamadığında, viral bir enfeksiyonun göstergesi olabilir. Çoğu anti-virüs programının PE dosyalarındaki virüsleri algılamak için kullandığı süreçler, dosyaların belirli yollarla işlenmesini gerektirir. Bir virüs yazarı bunun farkındaysa, virüslerinin tespit edilmemesine izin vermek için bu işlemi atlatmaya çalışacaklardır.'; -$phpMussel['lang']['config_attack_specific_decode_threshold'] = 'Kod çözme komutlarını kontrol etmek için ham verinin maksimum uzunluğu (tarama sırasında belirgin bir performans sorunu olması durumunda). Varsayılan = 512KB. Sıfır veya null değer, sınırı devre dışı bırakır.'; -$phpMussel['lang']['config_attack_specific_scannable_threshold'] = 'phpMussel\'ın okumasına ve taramasına izin verilen ham verinin maksimum uzunluğu (tarama sırasında belirgin bir performans sorunu olması durumunda). Varsayılan = 32MB. Sıfır veya null değer, sınırı devre dışı bırakır. Genellikle bu değer, sunucuya veya web sitenize almak istediğiniz ve beklediğiniz dosya yüklemelerinin ortalama dosya boyutundan daha az olmamalıdır, filesize_limit yönergesinden daha fazla olmamalıdır, ve PHP\'ye izin verilen toplam bellek ayırmanın beşte birinden fazla olmamalıdır. Bu yönerge, phpMussel\'ın fazla bellek kullanmasını önlemeye yöneliktir.'; -$phpMussel['lang']['config_compatibility_ignore_upload_errors'] = 'Bu yönerge genelde, phpMussel\'ın sizin belirli sisteminizde düzgün çalışması için gerekliyse devre dışı bırakılmalıdır. Normalde devre dışı bırakıldığında, phpMussel $_FILES array() içindeki öğelerin varlığını tespit ettiğinde, bu elemanların temsil ettiği dosyaların bir taramasını başlatmaya çalışacaktır, ve, bu elemanlar boşsa, phpMussel bir hata mesajı döndürür. Bu, phpMussel için doğru davranıştır. Bununla birlikte, bazı CMS için $_FILES daki boş öğeler, bu CMS\'nin doğal davranışının bir sonucu olarak ortaya çıkabilir veya herhangi bir şey olmadığında hata raporlanabilir, ve bu durumda, phpMussel için normal davranış, o CMS\'nin normal davranışını engelleyecektir. Böyle bir durum sizin için ortaya çıkarsa, bu seçeneği etkinleştirmek bu tarama türlerini önlemeniz yoluyla yardımcı olacaktır, böylece sayfa talebinin devam etmesine izin verilir. Yanlış/False = Kapalı; Doğru/True = Açık.'; -$phpMussel['lang']['config_compatibility_only_allow_images'] = 'Yalnızca resimlerin sisteminize veya CMS\'e yüklenmesine izin vermeyi düşünüyorsanız, ve kesinlikle sistemden veya CMS\'e yüklenmek üzere görüntülerden başka herhangi bir dosyaya ihtiyaç duymuyorsanız, bu yönergenin etkinleştirilmesi gerekir, ancak aksi takdirde devre dışı bırakılmalıdır. Bu yönerge etkinleştirilirse, phpMussel\'a resim olmayan dosyalar olarak tanımlanan yüklemeleri ayrımsız olarak engellemesini söyleyecektir. Bu, resim olmayan dosyaların yüklenmesine teşebbüs edilmesi için işlem süresi ve bellek kullanımını azaltabilir. Yanlış/False = Kapalı; Doğru/True = Açık.'; -$phpMussel['lang']['config_files_block_encrypted_archives'] = 'Şifreli arşivlerin algılanan ve engellemek? phpMussel, şifreli arşivlerin içeriğini tarayamıyor, ve bu yüzden, arşiv şifrelemesinin bir saldırgan tarafından phpMussel\'ı, anti-virüs tarayıcıları ve benzeri diğer korumalar, atlamak için bir araç olarak kullanılabileceği mümkündür. phpMussel tarafından keşfedilen şifreli arşivlerin engellenmesi bu riskleri potansiyel olarak azaltabilir. Yanlış/False = Hayır; Doğru/True = Evet [Varsayılan].'; -$phpMussel['lang']['config_files_check_archives'] = 'Arşiv içeriğini kontrol etmeye çalıştınız mı? Yanlış/False = Kontrol etmeyin; Doğru/True = Kontrol et [Varsayılan]. Şu anda desteklenen tek arşiv ve sıkıştırma biçimi BZ/BZIP2, GZ/GZIP, LZF, PHAR, TAR ve ZIP (arşiv ve sıkıştırma formatları RAR, CAB, 7z ve v.b. şu anda desteklenmiyor). Bu kusursuz değil! Bu özelliğin etkinleştirilmesini tavsiye ederim, ancak her zaman her şeyi bulacağını garanti edemem. Ayrıca arşiv denetiminin halihazırda PHAR\'lar veya ZIP\'ler için özyinelemeli olmadığını da unutmayın.'; -$phpMussel['lang']['config_files_filesize_archives'] = 'Dosya boyutu kara/beyaz listeyi arşiv içeriğine mi aktarıyorsun? Yanlış/False = Hayır; Doğru/True = Evet [Varsayılan].'; -$phpMussel['lang']['config_files_filesize_limit'] = 'KB cinsinden dosya boyutu sınırı. 65536 = 64MB [Varsayılan]; 0 = Sınır yok. Kabul edilen herhangi bir pozitif sayısal değer. Bu, PHP yapılandırmanızın bir işlemin tutabileceği bellek miktarını sınırladığında veya PHP yapılandırmanızın yüklemelerin dosya boyutunu sınırlaması durumunda yararlı olabilir.'; -$phpMussel['lang']['config_files_filesize_response'] = 'Dosya boyutu sınırını aşan dosyalarla ne yapılması gerekiyor (bir sınır varsa). Yanlış/False = Beyaz listeye; Doğru/True = Kara listeye [Varsayılan].'; -$phpMussel['lang']['config_files_filetype_archives'] = 'Arşiv içeriği için dosya türü kara listeyi ve beyaz listeyi devralır mı? Yanlış/False = Hayır [Varsayılan]; Doğru/True = Evet.'; -$phpMussel['lang']['config_files_filetype_blacklist'] = 'Kara liste:'; -$phpMussel['lang']['config_files_filetype_greylist'] = 'Gri liste:'; -$phpMussel['lang']['config_files_filetype_whitelist'] = 'Sisteminiz yalnızca belirli dosya türlerinin yüklenmesine izin veriyorsa, veya sisteminiz belli dosya türlerini açıkça reddetiyorsa, bu dosya türlerini beyaz listelerde, kara listelerde ve gri listelerde belirtmek taramanın hızını artırabilir, komut dosyası belirli dosya türlerini atlamak için izin vererek. Biçim CSV (virgülle ayrılmış değerler). Her şeyi taramak istiyorsanız, bu değişkenleri boş bırakın; Bunu yapmak beyaz/kara/gri listeyi devre dışı bırakır. İşlem mantığı şu şekildedir: Dosya türü beyaz listede bulunuyorsa, dosyayı taramayın ve engellemeyin ve dosyayı kara listeye veya gri listeye karşı kontrol etmeyin. Dosya türü kara listede bulunuyorsa, dosyayı taramayın, ancak yine de engelleyin ve dosyayı gri liste karşı kontrol etmeyin. Gri liste boşsa, ya da gri liste boş değilse ve dosya türü gri listede bulunuyorsa, dosyayı normal göre tara ve taramanın sonuçlarına dayanarak engelleyip engellemeyeceğini belirleme, ancak gri liste boş değilse ve dosya türü gri listede değil, dosyayı kara listede olduğu gibi davranın, bu nedenle tarama değil, yine de engelleme. Beyaz liste:'; -$phpMussel['lang']['config_files_max_recursion'] = 'Arşivler için maksimum özyineleme derinliği sınırı. Varsayılan = 10.'; -$phpMussel['lang']['config_files_max_uploads'] = 'Yükleme taraması sırasında taranacak maksimum dosya sayısı. Bu sayıyı aşmak taramayı durduracak ve kullanıcıya çok fazla yükleme yaptıkları bildirilecektir! Sisteminizi veya CMS\'nizi DDoS girişiminde bulunduran teorik bir saldırıya karşı koruma sağlar. Tavsiye edilen: 10. Donanımınızın hızına bağlı olarak bu sayıyı yükseltebilir veya azaltabilirsiniz. Bu numaranın arşiv içeriğini hesaba katmadığını unutmayın.'; -$phpMussel['lang']['config_general_cleanup'] = 'İlk yükleme taramasından sonra komut dosyası tarafından kullanılan değişkenleri ve önbellek ayarını kaldırın mı? Yanlış/False = Hayır; Doğru/True = Evet [Varsayılan]. Yüklemeleri taramak için yalnızca betiği kullanıyorsanız, bunu true (evet) olarak ayarlamanız gerekir, bellek kullanımını en aza indirgemek için. Senaryoyu başka şeyler için kullanıyorsanız, onu false (hayır) olarak ayarlamanız, yinelenen verilerin belleğe yeniden yüklenmesini önlemek için. Genel uygulamada genellikle true olarak ayarlanmalıdır, ancak bunu yaparsanız, betiği dosya yüklemelerini taramaktan başka bir şey için kullanamazsınız. CLI modunda hiçbir etkisi yoktur.'; -$phpMussel['lang']['config_general_default_algo'] = 'Gelecekteki tüm şifreler ve oturumlar için hangi algoritmayı kullanacağını tanımlar. Options: PASSWORD_DEFAULT (varsayılan), PASSWORD_BCRYPT, PASSWORD_ARGON2I (PHP >= 7.2.0 gerektirir).'; -$phpMussel['lang']['config_general_delete_on_sight'] = 'Bu yönergeyi etkinleştirmek, komut dosyasına, imzalar yoluyla veya başka şekilde herhangi bir algılama ölçütüyle eşleşen tüm taranan yüklemeleri derhal silmesini söyleyecektir. Temiz olduğu düşünülen dosyalara dokunulmaz. Arşiv durumunda tüm arşiv silinir. Dosya yükleme taraması için, genellikle bu yönergeyi etkinleştirmek gerekli değildir, çünkü genellikle yürütme tamamlandığında PHP otomatik olarak önbellek içeriğini temizleyecektir (yükleme nedeniyle geçici olarak saklanan dosyaları sileceğini belirtir). Bu yönerge, burada PHP\'nin kopyaları her zaman beklendiği gibi davranmayanlar için ek bir güvenlik tedbiri olarak eklenmiştir. Yanlış/False = Taramadan sonra, dosyayı yalnız bırakın [Varsayılan]; Doğru/True = Taramadan sonra, temiz değilse hemen silin.'; -$phpMussel['lang']['config_general_disable_cli'] = 'CLI modunu devre dışı bırak? CLI modu varsayılan olarak etkindir, ancak bazen bazı test araçlarına (örneğin PHPUnit) ve diğer CLI tabanlı uygulamalara müdahale edebilir. CLI modunu devre dışı bırakmanız gerekmiyorsa, bu direktif görmezden almalısınız. False = CLI modunu etkinleştir [Varsayılan]; True = CLI modunu devre dışı bırak.'; -$phpMussel['lang']['config_general_disable_frontend'] = 'Ön uç erişimini devre dışı bırak? Ön uç erişimi phpMussel\'ın daha yönetilebilir hale getirebilir, ancak potansiyel bir güvenlik riski de oluşturabilir. phpMussel\'ın mümkün olduğunda arka ucundan yönetmesi önerilir, ancak kolaylık sağlamak için ön uç erişimi sağlanmıştır. İhtiyacınız olmadıkça devre dışı bırakın. False = Ön uç erişimini etkinleştir; True = Ön uç erişimini devre dışı bırak [Varsayılan].'; -$phpMussel['lang']['config_general_disable_webfonts'] = 'Webfontlarını devre dışı bırak? Doğru/True = Evet; Yanlış/False = Hayır [Varsayılan].'; -$phpMussel['lang']['config_general_enable_plugins'] = 'phpMussel eklentileri için desteği etkinleştirilsin mi? Yanlış/False = Hayır; Doğru/True = Evet [Varsayılan].'; -$phpMussel['lang']['config_general_forbid_on_block'] = 'phpMussel, dosya yüklemesi engellenen mesajla birlikte hangi başlıkları göndermelidir? Yanlış/False = 200 OK (Tamam); Doğru/True = 403 Forbidden (Yasak) [Varsayılan].'; -$phpMussel['lang']['config_general_FrontEndLog'] = 'Ön uç giriş denemelerini kaydetmek için kullanılan dosya. Dosya adı belirtin veya devre dışı bırakmak için boş bırakın.'; -$phpMussel['lang']['config_general_honeypot_mode'] = 'Honeypot modu etkinleştirildiğinde, phpMussel karşılaştığı her dosya yüklemesini karantinaya almaya çalışacaktır, dahil olan imzalardan herhangi biriyle eşleşip eşleşmediğine bakılmaksızın, ve aslında hiçbir tarama ya da analiz yapılmayacaktır. Bu işlevsellik, kötücül yazılım araştırması için yararlı olmalıdır, ancak normal şartlar altında bu işlevselliği etkinleştirmeniz önerilmez. Varsayılan olarak, bu seçenek devre dışıdır. Yanlış/False = Devre dışı [Varsayılan]; Doğru/True = Etkinleştirildi.'; -$phpMussel['lang']['config_general_ipaddr'] = 'Bağlama isteklerinin IP adresi nerede bulunur? (Cloudflare ve benzeri hizmetler için yararlıdır). Varsayılan = REMOTE_ADDR. UYARI: Ne yaptığınızı bilmiyorsanız bunu değiştirmeyin!'; -$phpMussel['lang']['config_general_lang'] = 'phpMussel için varsayılan dili belirleyin.'; -$phpMussel['lang']['config_general_maintenance_mode'] = 'Bakım modunu etkinleştirilsin mi? Doğru/True = Evet; Yanlış/False = Hayır [Varsayılan]. Ön uç haricindeki her şeyi devre dışı bırakır. Bazen CMS\'nizi, çerçeveleri vb. güncellenirken yararlıdır.'; -$phpMussel['lang']['config_general_max_login_attempts'] = 'Maksimum giriş denemesi sayısı.'; -$phpMussel['lang']['config_general_numbers'] = 'Numaraların görüntülenmesini nasıl tercih edersiniz? Size en uygun görünen örneği seçin.'; -$phpMussel['lang']['config_general_quarantine_key'] = 'phpMussel dosyaları karantinaya koyabilir, bunu yapmak istiyorsan. Web sitelerini korumak isteyen, dosyaları derinlemesine analiz etmek istemeyen kullanıcılar bu işlevselliği devre dışı bırakmalıdır. Dosyaları daha derinlemesine analiz etmek isteyen tüm kullanıcılar (ör., kötü amaçlı yazılım araştırmaları) bu işlevselliği etkinleştirmelidir. Dosyaları karantinaya koymak bazen yanlış pozitiflerin hata ayıklanmasına yardımcı olabilir. Bunu devre dışı bırakmak için quarantine_key yönergesini boş bırakın (veya henüz boş değilse içeriğini sil). Etkinleştirmek için bir miktar girin. quarantine_key karantina işlevinin önemli bir güvenlik özelliğidir. Bu yönerge, potansiyel saldırganların karantina içeriğini istismar etmesini önler. quarantine_key, şifrelerinizle aynı şekilde ele alınmalıdır: Dikkatli koruyun, ve uzun olanlar daha iyidir. En iyi efekti elde etmek için delete_on_sight ile birlikte kullanın.'; -$phpMussel['lang']['config_general_quarantine_max_filesize'] = 'Dosyaların karantinaya alınmasına izin verilen maksimum dosya boyutu. Belirtilen değerden büyük dosyalar karantinaya Alınmayacaktır. Bu yönerge olası herhangi bir saldırganın karantinaya istenmeyen verilerle sel baskını yapmasını zorlaştıran bir araç olarak önemlidir. Varsayılan = 2MB.'; -$phpMussel['lang']['config_general_quarantine_max_usage'] = 'Karantina için izin verilen maksimum bellek kullanımı. Karantina tarafından kullanılan toplam bellek bu değere ulaşırsa, kullanılan en büyük bellek artık bu değere ulaşıncaya kadar en eski karantinaya alınan dosyalar silinir. Bu yönerge olası herhangi bir saldırganın karantinaya istenmeyen verilerle sel baskını yapmasını zorlaştıran bir araç olarak önemlidir. Varsayılan = 64MB.'; -$phpMussel['lang']['config_general_scan_cache_expiry'] = 'phpMussel tarama sonuçlarını ne kadar süreyle önbelleğe almalı? Değer, tarama sonuçlarının önbellekleneceği saniye sayısıdır. Varsayılan 21600 saniyedir (6 saat); 0 değeri, tarama sonuçlarını önbelleğe almayı devre dışı bırakır.'; -$phpMussel['lang']['config_general_scan_kills'] = 'Engellenen ve silinen yüklemelerin tüm kayıtlarını kaydetmek için kullanılan dosyanın adı. Dosya adı belirtin veya devre dışı bırakmak için boş bırakın.'; -$phpMussel['lang']['config_general_scan_log'] = 'Tüm tarama sonuçlarını günlüğe kaydetmek için dosyanın adı. Dosya adı belirtin veya devre dışı bırakmak için boş bırakın.'; -$phpMussel['lang']['config_general_scan_log_serialized'] = 'Tüm tarama sonuçlarını kaydetmek için dosyanın adı (seri hale getirilmiş bir format kullanarak). Dosya adı belirtin veya devre dışı bırakmak için boş bırakın.'; -$phpMussel['lang']['config_general_statistics'] = 'phpMussel kullanım istatistiklerini takip et? Doğru/True = Evet; Yanlış/False = Hayır [Varsayılan].'; -$phpMussel['lang']['config_general_timeFormat'] = 'phpMussel tarafından kullanılan tarih/saat gösterimi biçimi. İsteğe bağlı olarak ek seçenekler eklenebilir.'; -$phpMussel['lang']['config_general_timeOffset'] = 'Dakika cinsinden zaman dilimi farkı.'; -$phpMussel['lang']['config_general_timezone'] = 'Zaman diliminiz.'; -$phpMussel['lang']['config_general_truncate'] = 'Belirli bir boyuta ulaştığında günlük dosyalarını kesin? Değer, bir günlük dosyasının kesilmeden önce büyüyebileceği B/KB/MB/GB/TB cinsinden maksimum boyuttur. Varsayılan 0KB değeri, kesmeyi devre dışı bırakır (günlük dosyaları sınırsız büyüyebilir). Not: Tek tek kayıt dosyaları için geçerlidir! Günlük dosyalarının boyutu toplam olarak alınmaz.'; -$phpMussel['lang']['config_heuristic_threshold'] = 'Şüpheli ve potansiyel olarak kötü amaçlı dosya kalitesini tanımlamak için phpMussel\'de imzalar var. Bu dosya kalitesi, dosyanın kötü amaçlı olduğu anlamına gelmez, ancak çok sayıda dosya kalitesi dosyanın kötü amaçlı olduğunu gösterebilir. Bu "threshold" değeri, phpMussel\'a şüpheli ve potansiyel olarak kötü amaçlı dosya kalitesinin maksimum toplam ağırlığını bildirir. Bu maksimumu aşmak, dosyanın kötü amaçlı olarak tanımlanmasına neden olur. Bu bağlamda ağırlığın tanımı, belirlenen şüpheli ve potansiyel olarak kötü amaçlı özelliklerin toplam sayısıdır. Varsayılan olarak, Bu değer 3\'e ayarlanacaktır. Daha düşük bir değer genelde yanlış pozitif sonuçların ortaya çıkmasına neden olur, ancak daha yüksek sayıda kötü amaçlı dosyanın bayraklı olduğu görülürken, daha yüksek bir değer genellikle yanlış pozitiflerin oluşumuyla sonuçlanır, ancak bayrak altındaki kötü amaçlı dosyaların sayısı daha düşük olur. Mümkün olduğunda bu değeri varsayılan değerlerine bırakmak genellikle en iyisidir.'; -$phpMussel['lang']['config_signatures_Active'] = 'Aktif imza dosyalarının virgülle ayrılmış bir listesi.'; -$phpMussel['lang']['config_signatures_detect_adware'] = 'phpMussel reklam yazılımlarını algılamak için imzaları işleyecek mi? Yanlış/False = Hayır; Doğru/True = Evet [Varsayılan].'; -$phpMussel['lang']['config_signatures_detect_deface'] = 'phpMussel bozulmalar ve defacement ları tespiti için imzaları işleyecek mi? Yanlış/False = Hayır; Doğru/True = Evet [Varsayılan].'; -$phpMussel['lang']['config_signatures_detect_encryption'] = 'phpMussel şifrelenmiş dosyaları algılayıp bloke etmeli mi? Yanlış/False = Hayır; Doğru/True = Evet [Varsayılan].'; -$phpMussel['lang']['config_signatures_detect_joke_hoax'] = 'phpMussel sahtekarlık programlarını tespit etmek için imzaları işleyecek mi? Yanlış/False = Hayır; Doğru/True = Evet [Varsayılan].'; -$phpMussel['lang']['config_signatures_detect_packer_packed'] = 'phpMussel paketleyicileri ve paketlenmiş verileri algılamak için imzaları işleyecek mi? Yanlış/False = Hayır; Doğru/True = Evet [Varsayılan].'; -$phpMussel['lang']['config_signatures_detect_pua_pup'] = 'phpMussel PU(A/P)\'ları algılamak için imzaları işleyecek mi? Yanlış/False = Hayır; Doğru/True = Evet [Varsayılan].'; -$phpMussel['lang']['config_signatures_detect_shell'] = 'phpMussel kabuk komut dosyalarını algılamak için imzaları işleyecek mi? Yanlış/False = Hayır; Doğru/True = Evet [Varsayılan].'; -$phpMussel['lang']['config_signatures_fail_extensions_silently'] = 'Uzantılar eksik olduğunda phpMussel raporlamalı mı? fail_extensions_silently devre dışı bırakılırsa, eksik uzantılar tarama sırasında raporlanacak, ve fail_extensions_silently etkinleştirilmişse, eksik uzantılar yok sayılır, ve bu dosyalarda herhangi bir sorun olmadığını bildirir. Bu yönergenin devre dışı bırakılması, potansiyel olarak güvenliğinizi artırabilir, ancak yanlış pozitifliklerin artmasına neden olabilir. Yanlış/False = Devre dışı; Doğru/True = Etkinleştirildi [Varsayılan].'; -$phpMussel['lang']['config_signatures_fail_silently'] = 'İmzalar dosyaları eksik veya bozuk olduğunda phpMussel raporlamalı mı? fail_silently devre dışı bırakılırsa, eksik veya bozuk dosyalar tarama sırasında rapor edilecektir, ve fail_silently etkinleştirilmişse, eksik ve bozuk dosyalar yok sayılır, ve bu dosyalarda herhangi bir sorun olmadığını bildirir. Sorun yaşamadığınız sürece bu yalnız bırakılmalıdır. Yanlış/False = Devre dışı; Doğru/True = Etkinleştirildi [Varsayılan].'; -$phpMussel['lang']['config_template_data_css_url'] = 'Özel temalar için CSS dosyası URL\'si.'; -$phpMussel['lang']['config_template_data_Magnification'] = 'Yazı tipi büyütme. Varsayılan = 1.'; -$phpMussel['lang']['config_template_data_theme'] = 'phpMussel için kullanılacak varsayılan tema.'; -$phpMussel['lang']['config_urlscanner_cache_time'] = 'API aramalarının sonuçları ne kadar süreyle (saniye olarak) önbelleğe alınır? Varsayılan değer 3600 saniyedir (1 saat).'; -$phpMussel['lang']['config_urlscanner_google_api_key'] = 'Gerekli API anahtarı tanımlandığında Google Güvenli Tarama API\'sı için API aramalarını etkinleştirir.'; -$phpMussel['lang']['config_urlscanner_lookup_hphosts'] = 'True olarak ayarlandığında hpHosts API\'sine API aramalarını etkinleştirir.'; -$phpMussel['lang']['config_urlscanner_maximum_api_lookups'] = 'Tek tek tarama yinelemeleri için izin verilen azami API arama sayısı. Eklenen her API araması, her tarama yinelemesinin tamamlanması için gereken toplam süreyi ekler ve bu nedenle, genel tarama sürecini hızlandırmak için bir sınırlama önermek isteyebilirsiniz. 0 olarak ayarlandığında hiçbir sınırlama uygulanmaz. Varsayılan olarak 10 olarak ayarlayın.'; -$phpMussel['lang']['config_urlscanner_maximum_api_lookups_response'] = 'İzin verilen maksimum API arama sayısı aşıldığında ne yapılması gerekir? Yanlış/False = Hiçbir şey yapma (ışleme devam et) [Varsayılan]; Doğru/True = Dosyayı engelleyin.'; -$phpMussel['lang']['config_virustotal_vt_public_api_key'] = 'İsteğe bağlı olarak, phpMussel, Virus Total API\'sını kullanarak dosyaları virüslere, truva atlarına, kötü amaçlı yazılımlara ve diğer tehditlere karşı daha iyi koruma sağlamanın bir yolu olarak tarayabilir. Varsayılan olarak, Virus Total API\'sını kullanarak tarama dosyaları devre dışı bırakılır. Etkinleştirmek için Virus Total\'dan bir API anahtarı gerekiyor. Bunun size sağlayabileceği önemli fayda nedeniyle, etkinleştirilmesini önemle öneririm. Virus Total API\'sını kullanabilmeniz için Hizmet şartlarını kabul etmeniz gerektiğini lütfen unutmayın! Ayrıca, belgelerinde öngörülen kurallara uymanız gerekir! Bu özelliği yalnızca aşağıdaki koşullar sağlandığında kullanabilirsiniz: Virus Total ve API hizmet şartlarını okudunuz ve kabul ettiniz. Okudunuz ve en azından Virus Total Genel API belgelerinin giriş bölümünü anladınız ("VirusTotal Public API v2.0" den sonra ancak "Contents" öncesi her şey).'; -$phpMussel['lang']['config_virustotal_vt_quota_rate'] = 'Virus Total API dokümantasyonuna göre, herhangi bir 1 dakikalık zaman aralığında herhangi bir doğadan en çok 4 istekle sınırlıdır. VirusTotal\'a kaynak sağlayacak bir honeyclient, honeypot veya başka bir otomasyon çalıştırırsanız ve yalnızca raporları almakla kalmazsanız, daha yüksek bir talep oranı kotası alma hakkına sahipsiniz. Varsayılan olarak, phpMussel bu sınırlamalara kesinlikle uyacaktır, ancak bu oran kotalarının artması ihtimalinden ötürü, bu iki talimat, phpMussel\'a hangi sınırlamaya uyulması gerektiğini öğretmek için bir araç olarak sağlanmaktadır. Sizden talimat almadıysanız, bu değerleri artırmanız önerilmez, ancak, oran kotanıza ulaşma ile ilgili sorunlarla karşılaşırsanız, bu değerleri azaltmak bazen bu sorunlarla başa çıkmanıza yardımcı olabilir. Ücret limitiniz, herhangi bir vt_quota_time dakika zaman aralığında herhangi bir nitelikte vt_quota_rate istek olarak belirlenir.'; -$phpMussel['lang']['config_virustotal_vt_quota_time'] = '(Yukarıdaki açıklamaya bakın).'; -$phpMussel['lang']['config_virustotal_vt_suspicion_level'] = 'Varsayılan olarak, phpMussel, "şüpheli" olarak gördüğü dosyalara Virus Total API\'sını kullanarak taradığı dosyaları sınırlar. Bu sınırlamayı, vt_suspicion_level yönergesinin değerini değiştirerek ayarlayabilirsiniz.'; -$phpMussel['lang']['config_virustotal_vt_weighting'] = 'Virus Total API tarama sonuçları algılar mı yoksa algılama ağırlığı olarak mı uygulanmalıdır? Bir dosyayı birden çok motor kullanarak tarama yapmak (Virus Total\'in yaptığı gibi) artan algılama hızıyla sonuçlanmalıdır (ve dolayısıyla daha çok sayıda kötü amaçlı dosyanın yakalanmasıyla), ancak daha fazla yanlış pozitif sayıya neden olabilir, ve bu nedenle, bazı durumlarda, tarama sonuçları kesin bir sonuç olmaktan çok bir güven puanı olarak daha iyi kullanılabilir; Bu nedenle bu direktifin mevcut olması. 0 değeri kullanılırsa, Virus Total API tarama sonuçları algılar olarak uygulanır, ve bu nedenle eğer herhangi bir motor zararlı olarak dosyaya bayrak atarsa, phpMussel dosyayı kötü amaçlı olarak değerlendirir. Başka herhangi bir değer kullanılırsa, Virus Total API tarama sonuçları algılama ağırlığı olarak uygulanır, ve bu nedenle, dosyayı kötü amaçlı olarak işaretleyen motor sayısı bir güven puanı görevi görür (kullanılan değer dosyanın kötü amaçlı olarak değerlendirilebilmesi için gereken minimum güven puanı temsil edecektir). Varsayılan olarak 0 değeri kullanılır.'; -$phpMussel['lang']['Extended Description: phpMussel'] = 'Ana paket (hariç imzalar, belgeler, ve yapılandırma).'; -$phpMussel['lang']['field_activate'] = 'Etkinleştir'; -$phpMussel['lang']['field_clear_all'] = 'Hepsini temizle'; -$phpMussel['lang']['field_component'] = 'Bileşen'; -$phpMussel['lang']['field_create_new_account'] = 'Yeni Hesap Oluştur'; -$phpMussel['lang']['field_deactivate'] = 'Devre dışı bırak'; -$phpMussel['lang']['field_delete_account'] = 'Hesabı sil'; -$phpMussel['lang']['field_delete_all'] = 'Hepsini sil'; -$phpMussel['lang']['field_delete_file'] = 'Sil'; -$phpMussel['lang']['field_download_file'] = 'İndir'; -$phpMussel['lang']['field_edit_file'] = 'Düzenle'; -$phpMussel['lang']['field_false'] = 'False (Yanlış)'; -$phpMussel['lang']['field_file'] = 'Dosya'; -$phpMussel['lang']['field_filename'] = 'Dosya adı: '; -$phpMussel['lang']['field_filetype_directory'] = 'Rehber'; -$phpMussel['lang']['field_filetype_info'] = '{EXT} Dosya'; -$phpMussel['lang']['field_filetype_unknown'] = 'Bilinmiyor'; -$phpMussel['lang']['field_install'] = 'Yükle'; -$phpMussel['lang']['field_latest_version'] = 'En son sürüm'; -$phpMussel['lang']['field_log_in'] = 'Oturum Aç'; -$phpMussel['lang']['field_more_fields'] = 'Daha fazla yükleme alanı'; -$phpMussel['lang']['field_new_name'] = 'Yeni isim:'; -$phpMussel['lang']['field_ok'] = 'Tamam'; -$phpMussel['lang']['field_options'] = 'Seçenekler'; -$phpMussel['lang']['field_password'] = 'Parola'; -$phpMussel['lang']['field_permissions'] = 'İzinler'; -$phpMussel['lang']['field_quarantine_key'] = 'Karantina anahtarı'; -$phpMussel['lang']['field_rename_file'] = 'Adını değiştirmek'; -$phpMussel['lang']['field_reset'] = 'Sıfırla'; -$phpMussel['lang']['field_restore_file'] = 'Canlandır'; -$phpMussel['lang']['field_set_new_password'] = 'Yeni Şifre Oluştur'; -$phpMussel['lang']['field_size'] = 'Toplam Boyut: '; -$phpMussel['lang']['field_size_bytes'] = 'bayt'; -$phpMussel['lang']['field_size_GB'] = 'GB'; -$phpMussel['lang']['field_size_KB'] = 'KB'; -$phpMussel['lang']['field_size_MB'] = 'MB'; -$phpMussel['lang']['field_size_TB'] = 'TB'; -$phpMussel['lang']['field_status'] = 'Durum'; -$phpMussel['lang']['field_system_timezone'] = 'Sistem varsayılan saat dilimini kullanın.'; -$phpMussel['lang']['field_true'] = 'True (Doğru)'; -$phpMussel['lang']['field_uninstall'] = 'Kaldır'; -$phpMussel['lang']['field_update'] = 'Güncelle'; -$phpMussel['lang']['field_update_all'] = 'Tümünü güncelle'; -$phpMussel['lang']['field_upload_file'] = 'Yeni dosya yükle'; -$phpMussel['lang']['field_username'] = 'Kullanıcı adı'; -$phpMussel['lang']['field_your_version'] = 'Sürümünüz'; -$phpMussel['lang']['header_login'] = 'Devam etmek için lütfen giriş yapınız.'; -$phpMussel['lang']['label_active_config_file'] = 'Etkin yapılandırma dosyası: '; -$phpMussel['lang']['label_blocked'] = 'Yüklemeler engellendi'; -$phpMussel['lang']['label_branch'] = 'Branşı en yeni kararlı:'; -$phpMussel['lang']['label_events'] = 'Tara olayları'; -$phpMussel['lang']['label_flagged'] = 'İşaretlenen nesneler'; -$phpMussel['lang']['label_fmgr_cache_data'] = 'Önbellek verileri ve geçici dosyalar'; -$phpMussel['lang']['label_fmgr_disk_usage'] = 'phpMussel disk kullanımı: '; -$phpMussel['lang']['label_fmgr_free_space'] = 'Boş disk alanı: '; -$phpMussel['lang']['label_fmgr_total_disk_usage'] = 'Toplam disk kullanımı: '; -$phpMussel['lang']['label_fmgr_total_space'] = 'Toplam disk alanı: '; -$phpMussel['lang']['label_fmgr_updates_metadata'] = 'Bileşen güncellemeleri meta verileri'; -$phpMussel['lang']['label_hide'] = 'Saklamak'; -$phpMussel['lang']['label_os'] = 'Kullanılan işletim sistemi:'; -$phpMussel['lang']['label_other'] = 'Diğer'; -$phpMussel['lang']['label_other-Active'] = 'Etkin imza dosyaları'; -$phpMussel['lang']['label_other-Since'] = 'Başlangıç tarihi'; -$phpMussel['lang']['label_php'] = 'Kullanılan PHP sürümü:'; -$phpMussel['lang']['label_phpmussel'] = 'Kullanılan phpMussel sürümü:'; -$phpMussel['lang']['label_quarantined'] = 'Karantinaya yüklenenler'; -$phpMussel['lang']['label_sapi'] = 'Kullanılan SAPI:'; -$phpMussel['lang']['label_scanned_objects'] = 'Nesneler tarandı'; -$phpMussel['lang']['label_scanned_uploads'] = 'Yüklenenler tarandı'; -$phpMussel['lang']['label_show'] = 'Göstermek'; -$phpMussel['lang']['label_size_in_quarantine'] = 'Karantinadaki boyutu: '; -$phpMussel['lang']['label_stable'] = 'En yeni kararlı:'; -$phpMussel['lang']['label_sysinfo'] = 'Sistem bilgisi:'; -$phpMussel['lang']['label_tests'] = 'Testler:'; -$phpMussel['lang']['label_unstable'] = 'En yeni kararsız:'; -$phpMussel['lang']['label_upload_date'] = 'Yükleme tarihi: '; -$phpMussel['lang']['label_upload_hash'] = 'Yükleme karması: '; -$phpMussel['lang']['label_upload_origin'] = 'Yükleme menşe: '; -$phpMussel['lang']['label_upload_size'] = 'Yükleme boyutu: '; -$phpMussel['lang']['link_accounts'] = 'Hesaplar'; -$phpMussel['lang']['link_config'] = 'Yapılandırma'; -$phpMussel['lang']['link_documentation'] = 'Belgeler'; -$phpMussel['lang']['link_file_manager'] = 'Dosya Yöneticisi'; -$phpMussel['lang']['link_home'] = 'Ana Sayfa'; -$phpMussel['lang']['link_logs'] = 'Kayıtlar'; -$phpMussel['lang']['link_quarantine'] = 'Karantina'; -$phpMussel['lang']['link_statistics'] = 'İstatistik'; -$phpMussel['lang']['link_textmode'] = 'Metin biçimlendirme: BasitSüslü'; -$phpMussel['lang']['link_updates'] = 'Güncellemeler'; -$phpMussel['lang']['link_upload_test'] = 'Yükleme Testi'; -$phpMussel['lang']['logs_logfile_doesnt_exist'] = 'Seçilen günlük dosyası yok!'; -$phpMussel['lang']['logs_no_logfiles_available'] = 'Günlük dosyası yok.'; -$phpMussel['lang']['logs_no_logfile_selected'] = 'Hiçbir günlük dosyası seçilmedi.'; -$phpMussel['lang']['max_login_attempts_exceeded'] = 'Maksimum giriş denemesi aşıldı; Erişim reddedildi.'; -$phpMussel['lang']['previewer_days'] = 'Günler'; -$phpMussel['lang']['previewer_hours'] = 'Saatler'; -$phpMussel['lang']['previewer_minutes'] = 'Dakikalar'; -$phpMussel['lang']['previewer_months'] = 'Aylar'; -$phpMussel['lang']['previewer_seconds'] = 'Saniyeler'; -$phpMussel['lang']['previewer_weeks'] = 'Haftalar'; -$phpMussel['lang']['previewer_years'] = 'Yıllar'; -$phpMussel['lang']['response_accounts_already_exists'] = 'Bu kullanıcı adıyla bir hesap zaten var!'; -$phpMussel['lang']['response_accounts_created'] = 'Hesap başarıyla oluşturuldu!'; -$phpMussel['lang']['response_accounts_deleted'] = 'Hesap başarıyla silindi!'; -$phpMussel['lang']['response_accounts_doesnt_exist'] = 'Bu hesap mevcut değil.'; -$phpMussel['lang']['response_accounts_password_updated'] = 'Şifre başarıyla güncellendi!'; -$phpMussel['lang']['response_activated'] = 'Başarıyla etkinleştirildi.'; -$phpMussel['lang']['response_activation_failed'] = 'Etkinleştirilemedi!'; -$phpMussel['lang']['response_checksum_error'] = 'Checksum hatası! Dosya reddedildi!'; -$phpMussel['lang']['response_component_successfully_installed'] = 'Bileşen başarıyla yüklendi.'; -$phpMussel['lang']['response_component_successfully_uninstalled'] = 'Bileşen başarıyla kaldırıldı.'; -$phpMussel['lang']['response_component_successfully_updated'] = 'Bileşen başarıyla güncellendi.'; -$phpMussel['lang']['response_component_uninstall_error'] = 'Bileşeni kaldırmaya çalışırken bir hata oluştu.'; -$phpMussel['lang']['response_configuration_updated'] = 'Yapılandırma başarıyla güncellendi.'; -$phpMussel['lang']['response_deactivated'] = 'Başarıyla devre dışı bırakıldı.'; -$phpMussel['lang']['response_deactivation_failed'] = 'Devre dışı bırakılamadı!'; -$phpMussel['lang']['response_delete_error'] = 'Silinemedi!'; -$phpMussel['lang']['response_directory_deleted'] = 'Dizin başarıyla silindi!'; -$phpMussel['lang']['response_directory_renamed'] = 'Dizin başarıyla yeniden adlandırıldı!'; -$phpMussel['lang']['response_error'] = 'Hata'; -$phpMussel['lang']['response_failed_to_install'] = 'Yükleme başarısız!'; -$phpMussel['lang']['response_failed_to_update'] = 'Güncelleme başarısız!'; -$phpMussel['lang']['response_file_deleted'] = 'Dosya başarıyla silindi!'; -$phpMussel['lang']['response_file_edited'] = 'Dosya başarıyla değiştirildi!'; -$phpMussel['lang']['response_file_renamed'] = 'Dosya başarıyla yeniden adlandırıldı!'; -$phpMussel['lang']['response_file_restored'] = 'Dosya başarıyla canlandırıldı!'; -$phpMussel['lang']['response_file_uploaded'] = 'Dosya başarıyla yüklendi!'; -$phpMussel['lang']['response_login_invalid_password'] = 'Giriş başarısız! Geçersiz parola!'; -$phpMussel['lang']['response_login_invalid_username'] = 'Giriş başarısız! Kullanıcı adı yok!'; -$phpMussel['lang']['response_login_password_field_empty'] = 'Parola alanı boş!'; -$phpMussel['lang']['response_login_username_field_empty'] = 'Kullanıcı adı alanı boş!'; -$phpMussel['lang']['response_rename_error'] = 'Yeniden adlandırılamadı!'; -$phpMussel['lang']['response_restore_error_1'] = 'Canlanamadı! Bozuk dosya!'; -$phpMussel['lang']['response_restore_error_2'] = 'Canlanamadı! Yanlış karantina anahtarı!'; -$phpMussel['lang']['response_statistics_cleared'] = 'İstatistikler temizlendi.'; -$phpMussel['lang']['response_updates_already_up_to_date'] = 'Zaten güncel.'; -$phpMussel['lang']['response_updates_not_installed'] = 'Bileşen yüklü değil!'; -$phpMussel['lang']['response_updates_not_installed_php'] = 'Bileşen yüklü değil (PHP {V} gerektirir)!'; -$phpMussel['lang']['response_updates_outdated'] = 'Eski!'; -$phpMussel['lang']['response_updates_outdated_manually'] = 'Eski (lütfen manuel olarak güncelleyin)!'; -$phpMussel['lang']['response_updates_outdated_php_version'] = 'Eski (PHP {V} gerektirir)!'; -$phpMussel['lang']['response_updates_unable_to_determine'] = 'Belirlenemedi.'; -$phpMussel['lang']['response_upload_error'] = 'Yüklenemedi!'; -$phpMussel['lang']['state_complete_access'] = 'Tam erişim'; -$phpMussel['lang']['state_component_is_active'] = 'Bileşen aktiftir.'; -$phpMussel['lang']['state_component_is_inactive'] = 'Bileşen etkin değil.'; -$phpMussel['lang']['state_component_is_provisional'] = 'Bileşen geçicidir.'; -$phpMussel['lang']['state_default_password'] = 'Uyarı: Varsayılan şifreyi kullanıyor!'; -$phpMussel['lang']['state_logged_in'] = 'Giriş yapıldı.'; -$phpMussel['lang']['state_logs_access_only'] = 'Sadece girişleri kaydeder'; -$phpMussel['lang']['state_maintenance_mode'] = 'Uyarı: Bakım modu etkin!'; -$phpMussel['lang']['state_password_not_valid'] = 'Uyarı: Bu hesap geçerli bir şifre kullanmıyor!'; -$phpMussel['lang']['state_quarantine'] = ['Şu anda karantina içinde %s dosya var.', 'Şu anda karantina içinde %s dosyalar var.']; -$phpMussel['lang']['switch-hide-non-outdated-set-false'] = 'Eskimiş olmayanları gizleme'; -$phpMussel['lang']['switch-hide-non-outdated-set-true'] = 'Eskimiş olmayanları gizle'; -$phpMussel['lang']['switch-hide-unused-set-false'] = 'Kullanılmayanları gizleme'; -$phpMussel['lang']['switch-hide-unused-set-true'] = 'Kullanılmayanları gizle'; -$phpMussel['lang']['tip_accounts'] = 'Merhaba, {username}.
        Hesaplar sayfası, phpMussel ön ucuna kimin erişebileceğini kontrol etmenizi mümkün kılar.'; -$phpMussel['lang']['tip_config'] = 'Merhaba, {username}.
        Yapılandırma sayfası, phpMussel için yapılandırmayı ön uçtan değiştirmenizi mümkün kılar.'; -$phpMussel['lang']['tip_donate'] = 'phpMussel ücretsiz olarak sunulmaktadır, ancak projeye bağış yapmak isterseniz, bağış düğmesini tıklayarak bunu yapabilirsiniz.'; -$phpMussel['lang']['tip_file_manager'] = 'Merhaba, {username}.
        Dosya yöneticisi dosyalarınızı silmenizi, düzenlemenizi, yüklemenizi ve indirmenizi sağlar. Dikkatli kullanın (kurulumunuzu bununla bozabilirsiniz).'; -$phpMussel['lang']['tip_home'] = 'Merhaba, {username}.
        Bu, phpMussel ön uçunun ana sayfasıdır. Devam etmek için soldaki gezinme menüsünden bir bağlantı seçin.'; -$phpMussel['lang']['tip_login'] = 'Varsayılan kullanıcı adı: admin – Varsayılan şifre: password'; -$phpMussel['lang']['tip_logs'] = 'Merhaba, {username}.
        Bu günlük dosyasının içeriğini görüntülemek için aşağıdaki listeden bir günlük dosyası seçin.'; -$phpMussel['lang']['tip_quarantine'] = 'Merhaba, {username}.
        Bu sayfada, şu anda karantinadaki tüm dosyaları listeler ve bu dosyaların yönetimini kolaylaştırır.'; -$phpMussel['lang']['tip_quarantine_disabled'] = 'Not: Karantina şu anda devre dışıdır, ancak yapılandırma sayfası aracılığıyla etkinleştirilebilir.'; -$phpMussel['lang']['tip_see_the_documentation'] = 'Çeşitli yapılandırma yönergeleri ve amaçlarıyla ilgili bilgi için belgelere bakın.'; -$phpMussel['lang']['tip_statistics'] = 'Merhaba, {username}.
        Bu sayfada, phpMussel kurulumunuzla ilgili bazı temel kullanım istatistikleri gösterilmektedir.'; -$phpMussel['lang']['tip_statistics_disabled'] = 'Not: İstatistik izleme şu anda devre dışı, ancak yapılandırma sayfası aracılığıyla etkinleştirilebilir.'; -$phpMussel['lang']['tip_updates'] = 'Merhaba, {username}.
        Güncellemeler sayfası, phpMussel\'ın çeşitli bileşenlerini (çekirdek paket, imzalar, L10N dosyaları vb.) yüklemenizi, kaldırmanızı ve güncellemenizi sağlar.'; -$phpMussel['lang']['tip_upload_test'] = 'Merhaba, {username}.
        Yükleme sınama sayfası, bir dosyanın yüklenmeye çalışılırken normalde phpMussel tarafından engelleneceğini test etmenize izin veren standart bir dosya yükleme formu içerir.'; -$phpMussel['lang']['title_accounts'] = 'phpMussel – Hesaplar'; -$phpMussel['lang']['title_config'] = 'phpMussel – Yapılandırma'; -$phpMussel['lang']['title_file_manager'] = 'phpMussel – Dosya Yöneticisi'; -$phpMussel['lang']['title_home'] = 'phpMussel – Ana Sayfa'; -$phpMussel['lang']['title_login'] = 'phpMussel – Giriş'; -$phpMussel['lang']['title_logs'] = 'phpMussel – Kayıtlar'; -$phpMussel['lang']['title_quarantine'] = 'phpMussel – Karantina'; -$phpMussel['lang']['title_statistics'] = 'phpMussel – İstatistik'; -$phpMussel['lang']['title_updates'] = 'phpMussel – Güncellemeler'; -$phpMussel['lang']['title_upload_test'] = 'phpMussel – Yükleme Testi'; -$phpMussel['lang']['warning'] = 'Uyarılar:'; -$phpMussel['lang']['warning_php_1'] = 'PHP sürümünüz aktif olarak desteklenmiyor! Güncelleme önerilir!'; -$phpMussel['lang']['warning_php_2'] = 'PHP sürümünüz ağır savunmasız! Güncelleme önerilir!'; -$phpMussel['lang']['warning_signatures_1'] = 'Hiçbir imza dosyası aktif değil!'; - -$phpMussel['lang']['info_some_useful_links'] = 'Bazı kullanışlı bağlantılar:
          -
        • phpMussel Sorunları @ GitHub – phpMussel için sorunlar sayfası (destek, yardım, vb.).
        • -
        • phpMussel @ Spambot Security – phpMussel için tartışma forumu (destek, yardım vb.).
        • -
        • phpMussel @ SourceForge – phpMussel için alternatif karşıdan yükleme aynası.
        • -
        • WebSecTools.com – Web sitelerini güvenli hale getirmek için basit web yöneticisi araçlarından oluşan bir koleksiyon.
        • -
        • ClamavNet – ClamAV anasayfası (Truva atlarını, virüsleri, kötü amaçlı yazılımları ve diğer kötü niyetli tehditleri tespit etmek için kullanılan açık kaynak kodlu bir antivirüs motoru).
        • -
        • SecuriteInfo.com – ClamAV için ek imzalar sunan bilgisayar güvenlik şirketi.
        • -
        • PhishTank – Kimlik avı veritabanı (URL tarayıcısı tarafından kullanılır).
        • -
        • International PHP Group @ Facebook – PHP öğrenme kaynakları ve tartışmalar.
        • -
        • PHP.earth – PHP öğrenme kaynakları ve tartışmalar.
        • -
        • VirusTotal – Şüpheli dosyaları ve URL\'leri analiz etmek için ücretsiz bir hizmet.
        • -
        • Hybrid AnalysisPayload Security tarafından sağlanan ücretsiz bir kötü amaçlı yazılım analizi hizmeti.
        • -
        • Malwarebytes – Kötü amaçlı yazılımlarla mücadele uzmanları.
        • -
        • MalwareTips – Yararlı kötü amaçlı yazılım odaklı tartışma forumları.
        • -
        • Güvenlik Açığı Tabloları – Çeşitli paketler (PHP, HHVM, vb.) güvenli/güvensiz sürümlerini listeler.
        • -
        • Uyumluluk Tabloları – Çeşitli paketler (CIDRAM, phpMussel, vb.) için uyumluluk bilgilerini listeler.
        • -
        '; diff --git a/libraries/plugins/phpMussel/vault/lang/lang.tr.php b/libraries/plugins/phpMussel/vault/lang/lang.tr.php deleted file mode 100644 index 27aa942..0000000 --- a/libraries/plugins/phpMussel/vault/lang/lang.tr.php +++ /dev/null @@ -1,132 +0,0 @@ -ہوم | لاگ آوٹ'; -$phpMussel['lang']['bNav_logout'] = 'لاگ آوٹ'; -$phpMussel['lang']['config_attack_specific_archive_file_extensions'] = 'تسلیم شدہ آرکائیو فائل ایکسٹنشن (شکل CSV ہے، صرف شامل کرنے یا ہٹانے چاہئے مسائل پائے جاتے ہیں جب، غیر ضروری طور پر ہٹانے کے جھوٹے مثبت غیر ضروری طور پر انہوں نے مزید کہا جبکہ آپ کو حملے کی مخصوص پتہ لگانے سے شامل کر رہے ہیں کیا بنیادی طور پر وائٹ لسٹ گے، ذخیرہ فائلوں کے لئے ظاہر کرنے کے لئے کی وجہ سے ہو سکتا ہے، احتیاط کے ساتھ نظر ثانیw یہ بھی نوٹ کریں کہ اس تاریخی دستاویز اور مواد کی سطح پر تجزیہ نہیں کیا جا سکتا کر سکتے ہیں پر کوئی اثر) ہے. فہرست، ڈیفالٹ میں ہے کے طور پر، نظام اور CMS کی اکثریت کے اس پار سب سے زیادہ عام طور پر استعمال والوں فارمیٹس کی فہرست، لیکن جان بوجھ ضروری جامع نہیں ہے.'; -$phpMussel['lang']['config_attack_specific_block_control_characters'] = '(نیولائنز علاوہ) کسی بھی کنٹرول حروف پر مشتمل کسی بھی فائلوں کو مسدود کریں؟ ([\x00-\x08\x0b\x0c\x0e\x1f\x7f]) اگر تم ہو صرف سادہ ٹیکسٹ اپ لوڈ کرنے، اس کے بعد آپ کے سسٹم کے لئے کچھ اضافی تحفظ فراہم کرنے پر آپ اس اختیار کو تبدیل کر سکتے ہیں. تاہم، اگر آپ کو سادہ متن کے علاوہ اور کچھ پر اس رخ جھوٹے مثبت نتیجے میں اپ لوڈ کریں. False (جھوٹی) = مسدود نہ کریں [ڈیفالٹ]؛ سچا = بلاک.'; -$phpMussel['lang']['config_attack_specific_chameleon_from_exe'] = 'نہ تو چلنے نہ ہی تسلیم کیا آرکائیوز ہیں کہ فائلوں میں اور چلنے جن ہیڈرز غلط ہیں کے لئے کارکردگی قابل ہیڈرز کے لئے تلاش کریں. False (جھوٹی) = بند; True (سچے) = پر.'; -$phpMussel['lang']['config_attack_specific_chameleon_from_php'] = 'نہ تو PHP فائلوں کو نہ پہچان لیا آرکائیوز ہیں کہ فائلوں میں PHP ہیڈر لئے تلاش. False (جھوٹی) = بند; True (سچے) = پر.'; -$phpMussel['lang']['config_attack_specific_chameleon_to_archive'] = 'Sآرکائیوز جن ہیڈرز غلط ہیں کے لئے earch (تائید: BZ، GZ، RAR، زپ، RAR، GZ). False (جھوٹی) = بند; True (سچے) = پر.'; -$phpMussel['lang']['config_attack_specific_chameleon_to_doc'] = 'جن ہیڈرز غلط ہیں دفتر کی دستاویزات کے لئے تلاش کریں (تائید: DOC، ڈاٹ، پی پی ایس، PPT، XLA، XLS، جانکار). False (جھوٹی) = بند; True (سچے) = پر.'; -$phpMussel['lang']['config_attack_specific_chameleon_to_img'] = 'جن ہیڈرز ہیں تصاویر کے لئے تلاش غلط (تائید: BMP، DIB، PNG، GIF، JPEG، JPG، XCF، PSD، PDD، WEBP). False (جھوٹی) = بند; True (سچے) = پر.'; -$phpMussel['lang']['config_attack_specific_chameleon_to_pdf'] = 'پی ڈی ایف فائلوں جن ہیڈرز غلط ہیں کے لئے تلاش کریں. False (جھوٹی) = بند; True (سچے) = پر.'; -$phpMussel['lang']['config_attack_specific_corrupted_exe'] = 'خراب فائلوں اور غلطیوں کا تجزیہ. False (جھوٹی) = نظرانداز کریں. True (سچے) = بلاک [ڈیفالٹ]. پتہ لگانے اور ممکنہ طور پر خراب PE (پورٹ ایبل نفاذ پذیر) فائلوں کو بلاک؟ اکثر ایسا ہوتا ہے (لیکن ہمیشہ نہیں)، ایک PE فائل کے کچھ پہلوؤں کو خراب کر رہے ہیں یا\ سکتے ٹی صحیح تجزیہ کیا جائے تو یہ ایک وائرل انفیکشن کا اشارہ ہو سکتا ہے. سب سے زیادہ اینٹی وائرس پروگراموں کی طرف سے استعمال کیا جاتا ہے عمل UN رہنے کے لئے ان کے وائرس اجازت کرنے کے لئے، کچھ طریقوں سے، ایک وائرس کے پروگرامر کے بارے میں معلوم ہو تو خاص طور پر روکنے کی کوشش کریں گے، جس میں ان فائلوں کی تصریف ضرورت ہوتی PE فائلوں میں وائرس کا پتہ لگانے کے پتہ لگایا.'; -$phpMussel['lang']['config_attack_specific_decode_threshold'] = 'خام ڈیٹا جس کے اندر ڈیکوڈ کمانڈز کے پتہ جانی چاہئے کی لمبائی کے حد سے (کے معاملے میں کسی بھی نمایاں کارکردگی کے مسائل جبکہ سکیننگ سے ہیں). پہلے سے طے شدہ = 512KB. زیرو یا شہوت انگیز null قیمت (فائل کی بنیاد پر اس طرح کے کسی بھی حد کو ہٹانے کے) حد سے نااہل کیا.'; -$phpMussel['lang']['config_attack_specific_scannable_threshold'] = 'کہ phpMussel پڑھیں اور سکین کرنے کی اجازت ہے خام ڈیٹا کی لمبائی کی حد (کے معاملے میں کوئی نمایاں کارکردگی کے مسائل جبکہ سکیننگ ہیں). پہلے سے طے شدہ = 32MB. زیرو یا خالی قدر حد سے غیر فعال. عام طور پر، اس کی قیمت آپ چاہتے ہیں اور filesize_limit ہدایت کے مقابلے میں زیادہ نہیں ہونا چاہئے، آپ کے سرور یا ویب سائٹ کو حاصل کرنے کی توقع ہے کہ فائل اپ لوڈ کی اوسط فائل سے کم نہیں ہونا چاہئے، اور میں سے ایک تقریبا سے زیادہ پانچویں نہیں ہونا چاہئے کل قابل اجازت میموری مختص "php.ini" ترتیب دینے کی فائل کے ذریعے PHP کے لئے عطا کی. یہ ہدایت بہت زیادہ میموری کا استعمال کرتے ہوئے کی طرف سے phpMussel کو روکنے کے لئے کوشش کرنے کے لئے موجود ہے (کہ کامیابی کی ایک مخصوص فائل کے اوپر فائلوں کو اسکین کرنے کے قابل ہونے سے روکنے کروں گا).'; -$phpMussel['lang']['config_compatibility_ignore_upload_errors'] = 'جب تک یہ آپ کی مخصوص نظام پر phpMussel کا صحیح فعالیت کے لئے ضروری ہے یہ ہدایت عام طور پر غیر فعال کر دیا جائے چاہئے. عام طور پر، جب معذور، phpMussel میں عناصر کی موجودگی کا پتہ لگاتا ہے جب $_FILES array(), یہ phpMussel ایک غلطی پیغام واپس آ جائیں گے، ان عناصر کو خالی یا خالی ہو تو، فائلوں ان عناصر کی نمائندگی کرتے ہیں کی ایک اسکین شروع کرنے کی کوشش کرتے ہیں، اور کرے گا. یہ phpMussel لئے مناسب رویہ ہے. تاہم، کچھ CMS کے لئے، میں خالی عناصر $_FILES وہاں نہ کوئی بھی ہوتے ہیں تو اس صورت میں، phpMussel لئے عام رویہ ان لوگوں CMS کے عام رویے کے ساتھ مداخلت کی جائے گی رپورٹ کیا جا سکتا ہے ان لوگوں کے CMS، یا غلطیوں کے قدرتی رویے کے نتیجے میں ہو سکتا ہے. ایک ایسی صورتحال نے اس وقت ہوتی ہے، تو اس اختیار کو چالو کرنے کے، phpMussel طرح خالی عناصر کے لئے علیحدہ اسکین کی ضرورت شروع کرنے کی کوشش نہ کرنے کی ہدایت دیں گے، اس طرح کے صفحے کی درخواست کے تسلسل کی اجازت دی چلا جب ان کو نظر انداز اور کسی بھی متعلقہ خرابی کے پیغامات واپس نہیں کرنا. False (جھوٹی) = بند; True (سچے) = ON.'; -$phpMussel['lang']['config_compatibility_only_allow_images'] = 'آپ کو صرف امید رکھتے ہیں یا صرف تصاویر آپ کے سسٹم یا CMS پر اپ لوڈ کرنے کی اجازت دینے کا ارادہ رکھتے ہیں، اور آپ بالکل دوسرے کسی بھی فائلوں کی ضرورت نہیں ہے اگر تصاویر آپ کے سسٹم یا CMS پر اپ لوڈ کیا جا کرنے کی بجائے، اس حکم فعال کیا جانا چاہئے، لیکن دوسری صورت میں ہونا چاہئے تو غیر فعال کر دیا. اس ہدایت، یہ\ چالو حالت میں ہے تو اندھا دھند ان کی سکیننگ کے بغیر، غیر تصویری فائلوں کے طور پر شناخت کی کوئی بھی اپ لوڈز کو بلاک کرنے phpMussel ہدایت کریں گے. یہ غیر تصویری فائلوں کی کوشش کی اپ لوڈ کے لئے پروسیسنگ کے وقت اور میموری استعمال کو کم کر سکتا. False (جھوٹی) = بند; True (سچے) = ON.'; -$phpMussel['lang']['config_files_block_encrypted_archives'] = 'پتہ لگانے اور بلاک مرموز آرکائیوز؟ کیونکہ phpMussel مرموز ابلیھاگاروں کے مندرجات کو اسکین کرنے کے قابل نہیں ہے، یہ ممکن ہے کہ محفوظ شدہ دستاویزات خفیہ کاری phpMussel، اینٹی وائرس سکینر اور ایسی دیگر تحفظات کو نظرانداز کرنے کی کوشش کرنے کا ایک ذریعہ کے طور پر ایک حملہ آور کی طرف سے ملازم ہو جائے. یہ مرموز جائے کرنے کو پتہ چلتا ہے کہ کسی بھی تاریخی دستاویز کو بلاک کرنے phpMussel تربیت؛ ممکنہ طور پر یہ اس طرح کے امکانات کے ساتھ منسلک کسی بھی خطرے کو کم کرنے میں مدد کر سکتا ہے. False (جھوٹی) = نہیں; True (سچے) = ہاں [طے شدہ].'; -$phpMussel['lang']['config_files_check_archives'] = 'ابلیھاگاروں کے مندرجات کی جانچ کرنا ttempt؟ False (جھوٹی) = چیک نہ کریں؛ True (سچے) = [ڈیفالٹ] چیک کریں. فی الحال، کی حمایت صرف محفوظ شدہ دستاویزات اور سمپیڑن فارمیٹس BZ / BZIP2، GZ / GZIP، LZF، PHAR، ٹار اور ZIP (محفوظ شدہ دستاویزات اور سمپیڑن فارمیٹس RAR، CAB، 7z اور وقت کی سہولت مہیا نہیں وغیرہ) حاصل ہے. یہ نقائص سے پاک نہیں ہے! میں انتہائی رکھتے ہوئے اس کو آن کیا تجویز کرتے ہوئے، میں یہ ہمیشہ سب کچھ مل جائے گا اس بات کی ضمانت نہیں دے سکتے. آرکائیو فی الحال چیکنگ PHARs یا زپ کے لئے پنراورتی نہیں ہے کہ اس کے علاوہ آگاہ رہیں.'; -$phpMussel['lang']['config_files_filesize_archives'] = 'ابلیھاگاروں کے مندرجات کو فائل بلیک لسٹ / وہسلنگ لے؟ False (جھوٹی) = نہیں (صرف بھوری رنگ کی فہرست میں سب کچھ); True (سچے) = ہاں [طے شدہ].'; -$phpMussel['lang']['config_files_filesize_limit'] = 'میں KB فائل کی حد. 65536 = 64MB [ڈیفالٹ]؛ 0 = کوئی حد نہیں (ہمیشہ سرمئی درج)، کسی بھی (مثبت) عددی قیمت قبول کر لیا. آپ PHP کی ترتیب میموری ایک عمل کو پکڑ کر سکتے کے یا اگر رقم کو محدود کر دیتی ہے جب یہ مفید ہو سکتا اپ لوڈز آپ PHP کی ترتیب حدود فائل.'; -$phpMussel['lang']['config_files_filesize_response'] = 'فائل کی حد سے تجاوز ہے کہ (اگر موجود ہو) فائلوں کے ساتھ کیا کیا جائے. False (جھوٹی) = وائٹ فہرست; True (سچے) = بلیک لسٹ [طے شدہ].'; -$phpMussel['lang']['config_files_filetype_archives'] = 'قسم کی فائل بلیک لسٹ/دستاویز کے مندرجات کو وہسلنگ لے؟ False (جھوٹی) = کوئی (صرف greylist سب کچھ) [طے شدہ]؛ سچا = جی ہاں.'; -$phpMussel['lang']['config_files_filetype_blacklist'] = 'بلیک لسٹ:'; -$phpMussel['lang']['config_files_filetype_greylist'] = 'گرے فہرست:'; -$phpMussel['lang']['config_files_filetype_whitelist'] = 'آپ کے سسٹم صرف فائلوں کی مخصوص اقسام اپ لوڈ کیا جا کرنے کی اجازت دیتا ہے، یا آپ کے سسٹم کو واضح طور پر، فائلوں کی بعض اقسام کی تردید کرتے ہیں وائٹ لسٹیں، بلیک لسٹ اور سرمئی فہرستوں میں ان قسم کی فائلوں کی وضاحت جس میں رفتار سکیننگ جائیں کرنے سکرپٹ اجازت دے کر کیا جاتا ہے بڑھا سکتے ہیں اگر تو بعض قسم کی فائلوں کے دوران. ڈاک CSV (علامت سے علیحدہ اقدار) ہے. آپ کو سب کچھ، بلکہ وائٹ لسٹ، بلیک لسٹ یا بھوری رنگ کی فہرست کے مقابلے میں اسکین کرنے کے لئے چاہتے ہیں، متغیر خالی چھوڑ؛ ایسا کرنے سے وائٹ لسٹ/بلیک لسٹ/سرمئی فہرست کو غیر فعال کریں گے. وائٹ لسٹ:'; -$phpMussel['lang']['config_files_max_recursion'] = 'ابلیھاگاروں کے لئے زیادہ سے زیادہ تکرار کی گہرائی کی حد. پہلے سے طے شدہ = 10.'; -$phpMussel['lang']['config_files_max_uploads'] = 'فائلوں کی زیادہ سے زیادہ قابل اجازت تعداد میں فائلوں کو اپ لوڈ اسکین اسکین اسقاط اور صارف کو وہ ایک ہی بار میں بہت زیادہ اپ لوڈ کررہے ہیں مطلع کرنے سے پہلے دوران اسکین کرنے کے! ایک نظریاتی حملے ہیں جس کے تحت ایک حملہ آور ایک پیسنے رک PHP عمل کو سست کرنے phpMussel اوور لوڈنگ کی طرف سے آپ کے سسٹم یا CMS DDOS کرنے کی کوشش کے خلاف تحفظ فراہم کرتا ہے. تجویز کردہ: 10. آپ کو بڑھانے یا اس نمبر سے آپ ہارڈ ویئر کی رفتار پر منحصر ہے کو کم کر سکتے ہیں. کہ اس نمبر کے لئے اکاؤنٹ یا ابلیھاگاروں کے مندرجات شامل نہیں ہے یاد رکھیں کہ..'; -$phpMussel['lang']['config_general_cleanup'] = 'ترتیب ختم متغیر اور کیشے ابتدائی اپ لوڈ سکیننگ کے بعد اسکرپٹ طرف سے استعمال کیا؟ False (جھوٹی) = کوئی؛ True (سچے) = جی ہاں [ڈیفالٹ]. آپ کے اپ لوڈز کے ابتدائی سکیننگ پرے سکرپٹ کا استعمال کرتے ہوئے not- -are تو، آپ کو اس سچا کے (ہاں) پر، میموری استعمال کو کم سے کم کرنے کے لئے مقرر کیا جانا چاہئے. آپ کے اپ لوڈز کے ابتدائی سکیننگ پرے سکرپٹ کا استعمال کرتے ہوئے -are- تو، پر سیٹ کرنا چاہئے جھوٹے (کوئی)، غیر ضروری طور پر میموری میں دہرے ڈیٹا دوبارہ لوڈ بچنے کے لئے. عام پریکٹس میں، یہ عام طور پر صحیح پر سیٹ کیا جانا چاہئے, لیکن، اگر آپ ایسا کرتے ہیں تو، آپ کو نہیں ابتدائی فائل اپ لوڈ کی سکیننگ کے علاوہ کسی اور چیز کے لئے سکرپٹ کو استعمال کرنے کے قابل ہو جائے گا. CLI موڈ میں کوئی اثر و رسوخ ہے.'; -$phpMussel['lang']['config_general_default_algo'] = 'اس بات کی وضاحت کرتا ہے جو تمام مستقبل کے پاس ورڈ اور سیشن کے لئے الگورتھم استعمال کرنا ہے. اختیارات: PASSWORD_DEFAULT (ڈیفالٹ), PASSWORD_BCRYPT, PASSWORD_ARGON2I (PHP >= 7.2.0 کی ضرورت ہے).'; -$phpMussel['lang']['config_general_delete_on_sight'] = 'Eفوری طور پر دستخط کے ذریعے یا دوسری صورت میں چاہے، الفاظ کے ملاپ کے کسی بھی پتہ لگانے کے معیار پر کسی بھی سکین کی کوشش کی فائل اپ لوڈ حذف کرنے کی کوشش کرنے کے لئے اس ہدایت nabling سکرپٹ ہدایت کرے گا. "صاف" ہونے کا تعین کیا فائلیں چھوا نہیں کیا جائے گا. ابلیھاگاروں کی صورت میں، پورے آرکائیو حذف کر دیا جائے گا قطع نظر یا نہیں آمیز فائل کا صرف ایک ہی محفوظ شدہ دستاویزات کے اندر موجود کئی فائلوں میں سے ہے. فائل اپ لوڈ کی سکیننگ کے معاملے کے طور پر، عام طور پر، یہ ضروری نہیں ہے، یہ ہدایت چالو کرنے کے لئے عام طور پر PHP کی خود کار طریقے سے اس کی کیشے کے مندرجات مٹا دے گا کیونکہ عملدرآمد ختم ہو گیا ہے جب یہ عام طور پر سرور ہے جب تک کہ اس کے ذریعے اپ لوڈ کردہ کسی بھی فائلوں کو خارج کر دیں گے جس کا مطلب ہے، وہ منتقل کر دیا کاپی یا پہلے سے ہی خارج کر دیا گیا ہے. یہ ہدایت جن PHP کی کاپیاں ہمیشہ انداز کی توقع میں برتاؤ نہیں کر سکتے ہیں ان کے لئے سیکورٹی کی ایک اضافی اقدام کے طور پر یہاں شامل کی جاتی ہے. False (جھوٹی) = سکیننگ کے بعد، اکیلے فائل [ڈیفالٹ] چھوڑ دیں؛ سچا = سکیننگ کے بعد، صاف نہیں ہے تو، فوری طور پر حذف.'; -$phpMussel['lang']['config_general_disable_cli'] = 'CLI موڈ کو غیر فعال کریں؟ CLI موڈ ڈیفالٹ کی طرف سے چالو حالت میں ہے، لیکن کبھی کبھی بعض جانچ کے آلات (جیسے PHPUnit کے طور پر، مثال کے طور پر) اور دیگر CLI کی بنیاد پر ایپلی کیشنز کے ساتھ مداخلت کر سکتے ہیں. آپ CLI موڈ کو غیر فعال کرنے کی ضرورت نہیں ہے تو، آپ کو اس ہدایت کو نظر انداز کرنا چاہئے. False (جھوٹی) = CLI موڈ [طے شدہ] فعال؛ سچا = غیر فعال CLI موڈ.'; -$phpMussel['lang']['config_general_disable_frontend'] = 'سامنے کے آخر تک رسائی کو غیر فعال کریں؟ سامنے کے آخر میں رسائی phpMussel زیادہ انتظام بنا سکتے ہیں، لیکن یہ بھی بہت ہے، ایک زبردست حفاظتی خطرہ ہو سکتا ہے. یہ جب بھی ممکن ہو واپس کے آخر کے ذریعے phpMussel منظم کرنے کی سفارش کی جاتی ہے، لیکن سامنے کے آخر میں رسائی ممکن نہیں ہے جب کے لئے فراہم کی جاتی ہے. تمہیں اس کی ضرورت ہے جب تک کہ اس کو معذور رکھیں. False (جھوٹی) = سامنے کے آخر میں رسائی کو فعال کریں؛ سچا = غیر فعال سامنے کے آخر میں رسائی [طے شدہ].'; -$phpMussel['lang']['config_general_disable_webfonts'] = 'webfonts کے غیر فعال کریں؟ سچا = جی ہاں؛ False (جھوٹی) = کوئی [طے شدہ].'; -$phpMussel['lang']['config_general_enable_plugins'] = 'phpMussel پلگ ان کے لئے حمایت فعال کریں؟ False (جھوٹی) = کوئی؛ سچا = جی ہاں [طے شدہ].'; -$phpMussel['lang']['config_general_forbid_on_block'] = 'phpMussel فائل اپ بلاک کر کے پیغام کے ساتھ 403 ہیڈرز بھیجیں، یا کے ساتھ معمول کے 200 OK رہنا چاہیے؟ False (جھوٹی) = نہیں (200)؛ سچا = جی ہاں (403) [طے شدہ].'; -$phpMussel['lang']['config_general_FrontEndLog'] = 'سامنے کے آخر میں لاگ ان کوششوں لاگنگ کے لئے دائر. ایک فائل کا نام کی وضاحت کریں، یا غیر فعال کرنے کو خالی چھوڑ.'; -$phpMussel['lang']['config_general_honeypot_mode'] = 'جب honeypot موڈ چالو حالت میں ہے، phpMussel ہر ایک فائل اپ لوڈ نظرانداز کرنے پر اس کے مقابلوں کہ قطع نظر یا نہیں فائل اپ لوڈ کی جارہی کسی بھی دستخط شامل ہیں، اور ان لوگوں کی کوشش کی فائل اپ لوڈ کی کوئی اصل سکیننگ یا تجزیہ اصل میں واقع ہو گا سے میل کھاتا ہے کی کوشش کرے گا. یہ فعالیت وائرس / میلویئر کی تحقیق کے مقاصد کے لئے phpMussel استعمال کرنا چاہتے ہیں ان لوگوں کے لئے مفید ہونا چاہئے، لیکن صارف کی طرف phpMussel کے مقصد کے استعمال کی اصل فائل اپ لوڈ کی سکیننگ کے لئے ہے اگر یہ نہ تو اس فعالیت کو چالو کرنے کی سفارش کی، اور نہ ہی استعمال کرنے کے لئے سفارش کی جاتی ہے honeypotting علاوہ دیگر مقاصد کے لئے شہد کے برتن فعالیت. بنیادی طور پر، اس اختیار کو غیر فعال ہے. False (جھوٹی) = معذور [ڈیفالٹ]؛ سچا = فعال کردہ.'; -$phpMussel['lang']['config_general_ipaddr'] = 'کہاں درخواستوں منسلک کرنے کے IP ایڈریس کو تلاش کرنے کے لئے؟ پہلے سے طے شدہ = REMOTE_ADDR (جیسا CloudFlare کے اور پسند کرتا ہے کے طور پر خدمات کے لئے مفید). انتباہ: ڈان \ کر رہے T تبدیلی اس الا یہ کہ آپ آپ کو \ کیا معلوم !'; -$phpMussel['lang']['config_general_lang'] = 'phpMussel لئے پہلے سے طے شدہ زبان کی وضاحت.'; -$phpMussel['lang']['config_general_maintenance_mode'] = 'بحالی کا موڈ فعال کریں؟ True (سچے) = جی ہاں؛ False (جھوٹی) = کوئی [ڈیفالٹ]. سامنے کے اختتام کے مقابلے میں سب کچھ غیر فعال کرتا ہے. کبھی کبھی آپ کے CMS، فریم ورک، وغیرہ کو اپ ڈیٹ کرنے کے لئے مفید ہے.'; -$phpMussel['lang']['config_general_max_login_attempts'] = 'لاگ ان کوششوں کی زیادہ سے زیادہ تعداد (سامنے کے آخر میں). پہلے سے طے شدہ = 5.'; -$phpMussel['lang']['config_general_numbers'] = 'آپ کس طرح تعداد میں ظاہر کرنے کے لئے پسند کرتے ہیں؟ مثال کے طور پر منتخب کریں جو آپ کے لئے سب سے زیادہ درست نظر آتے ہیں.'; -$phpMussel['lang']['config_general_quarantine_key'] = 'phpMussel یہ آپ یہ کرنا چاہتا ہوں کچھ ہے تو، phpMussel والٹ کے اندر تنہائی میں پرچم لگایا کوشش کی فائل اپ لوڈ نظرانداز کرنے کے قابل ہے. صرف دل کی گہرائیوں سے کسی بھی پرچم لگایا کوشش کی فائل اپ لوڈ اس فعالیت کو غیر فعال کر چھوڑ دینا چاہئے تجزیہ کرنے میں کوئی دلچسپی کے بغیر ان کی ویب سائٹ یا ہوسٹنگ ماحول کی حفاظت کے لئے چاہتے ہیں کہ phpMussel کے آرام دہ اور پرسکون صارفین، لیکن میلویئر کی تحقیق کے لئے یا اسی طرح کے پرچم لگائے کوشش کی فائل اپ لوڈ کی مزید تجزیہ کرنے میں دلچسپی رکھتے کسی بھی صارفین ایسی چیزوں کو اس فعالیت کو چالو کرنا چاہئے. نشان زدہ کوشش کی فائل اپ لوڈ کی Quarantining کبھی کبھی بھی، جھوٹے مثبت ٹھیک کرنا میں مدد کر سکتے ہیں یہ اکثر آپ کے لئے اس وقت ہوتی ہے کہ کچھ ہے. سنگرودھ فعالیت کو غیر فعال کرنے کیلئے، بس quarantine_key کے ہدایت خالی چھوڑ دیں، یا یہ کہ ہدایت کے مندرجات کو مٹانے یہ پہلے سے خالی نہیں ہے. سنگرودھ فعالیت کو چالو کرنے کے لئے، ہدایت میں کچھ قیمت درج کریں. quarantine_key کے ممکنہ حملہ آوروں کی طرف سے اور سنگرودھ کے اندر اندر ذخیرہ کردہ ڈیٹا کی کسی بھی ممکنہ پھانسی کی روک تھام کا ایک ذریعہ کے طور پر استحصال کیا جا رہا ہے سے قرنطینہ فعالیت کی روک تھام کا ایک ذریعہ کے طور پر ضرورت سنگرودھ فعالیت کا ایک اہم حفاظتی خصوصیت ہے. quarantine_key کے آپ کے پاس ورڈ کے طور پر اسی انداز میں علاج کیا جانا چاہئے: اب بہتر ہے، اور مضبوطی سے اس کی حفاظت. بہترین اثر کے لیے، کے ساتھ مل کر میں استعمال کرتے ہیں delete_on_sight.'; -$phpMussel['lang']['config_general_quarantine_max_filesize'] = 'فائلوں کی زیادہ سے زیادہ قابل اجازت فائل قرنطینہ جائے. متعین قدر سے بڑی فائلوں قرنطینہ نہیں رکھا جائے گا. یہ ہدایت کسی بھی ممکنہ حملہ آوروں کے ممکنہ طور پر اپنے ہوسٹنگ سروس پر رن ​​دور ڈیٹا کے استعمال کے باعث ناپسندیدہ اعداد و شمار کے ساتھ آپ کے سنگرودھ سیلاب کے لئے یہ زیادہ مشکل بنانے کا ایک ذریعہ کے طور پر اہم ہے. پہلے سے طے شدہ = 2MB.'; -$phpMussel['lang']['config_general_quarantine_max_usage'] = 'زیادہ سے زیادہ میموری کا استعمال سنگرودھ کے لئے کی اجازت دی. سنگرودھ طرف سے استعمال کیا کل میموری اس قیمت تک پہنچ جاتا ہے تو، استعمال کیا کل میموری اب کوئی اس قیمت تک پہنچ جاتا ہے جب تک قدیم ترین قرنطینہ فائلوں کو خارج کر دیا جائے گا. یہ ہدایت کسی بھی ممکنہ حملہ آوروں کے ممکنہ طور پر اپنے ہوسٹنگ سروس پر رن ​​دور ڈیٹا کے استعمال کے باعث ناپسندیدہ اعداد و شمار کے ساتھ آپ کے سنگرودھ سیلاب کے لئے یہ زیادہ مشکل بنانے کا ایک ذریعہ کے طور پر اہم ہے. پہلے سے طے شدہ = 64MB.'; -$phpMussel['lang']['config_general_scan_cache_expiry'] = 'کب تک phpMussel سکیننگ کے نتائج کیشے چاہئے؟ قیمت کے لئے سکیننگ کے نتائج کیشے سیکنڈ کی تعداد ہے. پہلے سے طے شدہ 21600 سیکنڈ (6 گھنٹے) ہے؛ 0 کی قدر سکیننگ کے نتائج کیشنگ کو غیر فعال کریں گے.'; -$phpMussel['lang']['config_general_scan_kills'] = 'فائل کا نام مسل کو مسدود یا ہلاک کر کے اپ لوڈز کے تمام ریکارڈ لاگ ان کریں. ایک فائل کا نام کی وضاحت کریں، یا غیر فعال کرنے کو خالی چھوڑ.'; -$phpMussel['lang']['config_general_scan_log'] = 'فائل کا نام مسل تمام سکیننگ نتائج کے لاگ ان کرنے کے لئے. ایک فائل کا نام کی وضاحت کریں، یا غیر فعال کرنے کو خالی چھوڑ.'; -$phpMussel['lang']['config_general_scan_log_serialized'] = 'فائل کا نام مسل تمام سکیننگ کے نتائج کو (serialized فارمیٹ استعمال کرتے ہوئے) لاگ ان کریں. ایک فائل کا نام کی وضاحت کریں، یا غیر فعال کرنے کو خالی چھوڑ.'; -$phpMussel['lang']['config_general_statistics'] = 'phpMussel استعمال کے اعداد و شمار کو ٹریک کریں؟ True (سچے) = جی ہاں؛ False (جھوٹی) = نہیں [پہلے سے طے شدہ].'; -$phpMussel['lang']['config_general_timeFormat'] = 'phpMussel کی طرف سے استعمال کی تاریخوں کا فارم. اضافی اختیارات درخواست پر شامل کیا جا سکتا ہے.'; -$phpMussel['lang']['config_general_timeOffset'] = 'ٹائم زون منٹ میں آفسیٹ.'; -$phpMussel['lang']['config_general_timezone'] = 'آپ کے ٹائم زون.'; -$phpMussel['lang']['config_general_truncate'] = 'وہ ایک خاص سائز تک پہنچنے میں جب صاف لاگ مسلیں؟ ویلیو میں B/KB/MB/GB/TB زیادہ سے زیادہ سائز ہے. جب 0KB، وہ غیر معینہ مدت تک ترقی کر سکتا ہے (پہلے سے طے). نوٹ: واحد فائلوں پر لاگو ہوتا ہے! فائلیں اجتماعی غور نہیں کر رہے ہیں.'; -$phpMussel['lang']['config_heuristic_threshold'] = 'فائلوں کی مشکوک اور ممکنہ طور پر بدنیتی پر مبنی خصوصیات کی شناخت کے لئے ارادہ کر رہے ہیں کہ phpMussel کے بعض دستخط خود میں بغیر اپ لوڈ کیا جا رہا ہے ان فائلوں بدنیتی پر مبنی ہونے کے طور پر خاص طور پر اپ لوڈ کیا جا رہا ہے کی شناخت ہیں. یہ "دہلیز" قدر phpMussel بتاتا ہے ان فائلوں درنساوناپورن کا جھنڈا لگا ہو رہے ہیں اس سے پہلے کیا فائلوں کی مشکوک اور ممکنہ طور پر بدنیتی پر مبنی خصوصیات کے زیادہ سے زیادہ کل وزن اپ لوڈ کیا جا رہا ہے کی اجازت ہے. اس تناظر میں وزن کی تعریف کی شناخت مشکوک اور ممکنہ طور پر بدنیتی پر مبنی خصوصیات کی کل تعداد ہے. بنیادی طور پر، اس کی قیمت 3. ایک کم قیمت عام طور پر جھوٹے مثبت کے ایک اعلی موجودگی کے نتیجے میں جائے کرنے کے لئے مقرر کیا جائے گا لیکن بدنیتی پر مبنی فائلوں کی ایک بڑی تعداد جھنڈا لگایا جا رہا ہے، ایک زیادہ قیمت عام طور پر جھوٹے مثبت کی ایک کم موجودگی لیکن ایک کے نتیجے میں جائے جبکہ بدنیتی پر مبنی فائلوں کی کم تعداد جھنڈا لگایا جا رہا ہے. یہ آپ کو اس سے متعلق دشواریاں پیش آ رہے ہیں \ جب تک کہ اس کا بنیادی میں اس قدر چھوڑنے کے لئے عام طور پر سب سے بہتر ہے.'; -$phpMussel['lang']['config_signatures_Active'] = 'فعال دستخط کی فائلوں کی ایک فہرست، کوما سے ختم ہونے والی.'; -$phpMussel['lang']['config_signatures_detect_adware'] = 'phpMussel ایڈویئر کا پتہ لگانے کے لئے دستخط تجزیہ کرنا چاہیے؟ False (جھوٹی) = کوئی؛ سچا = جی ہاں [طے شدہ].'; -$phpMussel['lang']['config_signatures_detect_deface'] = 'phpMussel defacements اور defacers کا پتہ لگانے کے لئے دستخط تجزیہ کرنا چاہیے؟ False (جھوٹی) = کوئی؛ سچا = جی ہاں [طے شدہ].'; -$phpMussel['lang']['config_signatures_detect_encryption'] = 'phpMussel کو خفیہ کاری فائلوں کا پتہ لگانے اور بلاک کرنا چاہئے؟ False (جھوٹی) = کوئی؛ سچا = جی ہاں [طے شدہ].'; -$phpMussel['lang']['config_signatures_detect_joke_hoax'] = 'phpMussel مذاق / چکما میلویئر / وائرس کا پتہ لگانے کے لئے دستخط تجزیہ کرنا چاہیے؟ False (جھوٹی) = کوئی؛ سچا = جی ہاں [طے شدہ].'; -$phpMussel['lang']['config_signatures_detect_packer_packed'] = 'phpMussel پیکرز اور پیک کے اعداد و شمار کا پتہ لگانے کے لئے دستخط تجزیہ کرنا چاہیے؟ False (جھوٹی) = کوئی؛ سچا = جی ہاں [طے شدہ].'; -$phpMussel['lang']['config_signatures_detect_pua_pup'] = 'phpMussel PUA/PUP کا پتہ لگانے کے لئے دستخط تجزیہ کرنا چاہیے؟ False (جھوٹی) = کوئی؛ سچا = جی ہاں [طے شدہ].'; -$phpMussel['lang']['config_signatures_detect_shell'] = 'phpMussel شیل اسکرپٹ کا پتہ لگانے کے لئے دستخط تجزیہ کرنا چاہیے؟ False (جھوٹی) = کوئی؛ سچا = جی ہاں [طے شدہ].'; -$phpMussel['lang']['config_signatures_fail_extensions_silently'] = 'رپورٹ phpMussel چاہئے جب توسیعات لاپتہ ہیں؟ تو fail_extensions_silently کے معذور، لاپتہ توسیعات سکیننگ پر اطلاع دی جائے گی، اور اگر fail_extensions_silently کے چالو حالت میں ہے، ملانے لاپتہ وہاں نہیں کسی بھی ہیں کہ سکیننگ ان فائلوں کے لئے رپورٹنگ کے ساتھ، نظر انداز کر دیا جائے گا مسائل. اس حکم کو غیر فعال ممکنہ طور پر آپ کی سیکورٹی میں اضافہ ہو سکتا ہے، بلکہ جھوٹے مثبت کا اضافہ کا باعث بن سکتا. False (جھوٹی) = معذور؛ سچا = چالو کیا [طے شدہ].'; -$phpMussel['lang']['config_signatures_fail_silently'] = 'جب دستخط فائلوں غائب یا خراب phpMussel رپورٹ چاہئے؟ تو fail_silently کے، معذور لاپتہ اور خراب فائلوں سکیننگ پر اطلاع دی جائے گی، اور اگر fail_silently کے لاپتہ، فعال ہے اور خراب فائلوں ان فائلوں کے لئے رپورٹنگ سکیننگ کے ساتھ، نظر انداز کر دیا جائے گا کہ کوئی مسئلہ نہیں ہیں. آپ گر کر تباہ یا اسی طرح کے مسائل کا سامنا کر رہے ہیں جب تک کہ یہ عام تنہا چھوڑ دیا جانا چاہئے. False (جھوٹی) = معذور؛ سچا = چالو کیا [طے شدہ].'; -$phpMussel['lang']['config_template_data_css_url'] = 'ڈیفالٹ تھیم کے لئے سانچے کی فائل اندرونی سی ایس ایس خصوصیات کا استعمال، جبکہ اپنی مرضی کے موضوعات کے لئے سانچے کی فائل، خارجی سی ایس ایس خصوصیات کا استعمال. ، اپنی مرضی کے موضوعات کے لئے سانچے کی فائل کو استعمال کرنے کی css_url کے متغیر کا استعمال کرتے ہوئے آپ کی اپنی مرضی کے موضوعات سی ایس ایس فائلوں کے عوامی HTTP ایڈریس کی وضاحت phpMussel ہدایت کرنے کے لئے. آپ کو اس متغیر خالی چھوڑ تو، phpMussel ڈیفالٹ تھیم کے لئے سانچے کی فائل کو استعمال کریں گے.'; -$phpMussel['lang']['config_template_data_Magnification'] = 'فونٹ اضافہ. پہلے سے طے شدہ = 1.'; -$phpMussel['lang']['config_template_data_theme'] = 'phpMussel لئے استعمال کرنے کے لئے مرکزی خیال، موضوع پہلے سے طے شدہ.'; -$phpMussel['lang']['config_urlscanner_cache_time'] = 'کب تک (سیکنڈوں میں) API لک اپ کے نتائج کے لئے محفوظ ہو جائے چاہئے؟ پہلے سے طے شدہ 3600 سیکنڈ ہے (1 گھنٹہ).'; -$phpMussel['lang']['config_urlscanner_google_api_key'] = 'ضروری API کلید وضاحت کی گئی ہے جب گوگل محفوظ براؤزنگ API کو API لک اپ کو فعال کرتا ہے.'; -$phpMussel['lang']['config_urlscanner_lookup_hphosts'] = 'درست پر سیٹ ہونے hpHosts API کو API لک اپ کو فعال کرتا ہے.'; -$phpMussel['lang']['config_urlscanner_maximum_api_lookups'] = 'انفرادی اسکین iteration کے مطابق انجام دینے کے لئے API لک اپ کی زیادہ سے زیادہ قابل اجازت تعداد. ہر اضافی API لک اپ ہر ایک اسکین تکرار مکمل کرنے کی ضرورت کل وقت کا اضافہ کریں گے، لہذا آپ کو مجموعی طور پر اسکین کے عمل کو تیز کرنے کے لئے ایک حد مقرر کر سکتے ہیں. 0 مقرر کرتے وقت، کوئی ایسی زیادہ سے زیادہ قابل اجازت تعداد میں لاگو کیا جائے گا. پہلے سے طے شدہ کی طرف سے 10 سیٹ کریں.'; -$phpMussel['lang']['config_urlscanner_maximum_api_lookups_response'] = 'API لک اپ کی زیادہ سے زیادہ قابل اجازت تعداد سے تجاوز کر جاتا ہے تو کیا کیا جائے؟ False (جھوٹی) = کچھ بھی نہیں (پروسیسنگ جاری رہے) [طے شدہ] ہو؛ سچا = فلیگ / فائل بلاک.'; -$phpMussel['lang']['config_virustotal_vt_public_api_key'] = 'اختیاری، phpMussel وائرس، trojans، میلویئر اور دیگر خطرات کے خلاف تحفظ کی ایک بہت بڑھا سطح فراہم کرنے کے لئے ایک طریقہ کے طور پر وائرس کل API کا استعمال کرتے ہوئے فائلوں کو اسکین کرنے کے قابل ہے. بطور ڈیفالٹ، سکیننگ فائلوں وائرس کل API کا استعمال غیر فعال ہے. یہ فعال کرنے کیلئے، وائرس کل سے ایک API کلید درکار ہے. اہم فائدہ کی وجہ سے اس سے آپ کے لئے میں انتہائی چالو کرنے کی سفارش کرتے ہیں کہ، یہ \'ے کچھ فراہم کر سکتا ہے. براہ کرم آگاہ رہیں، تاہم، کہ وائرس کل API استعمال کرنے کے لئے، آپ پر ضروری ہے کو ان کے سروس کی شرائط سے اتفاق کرتا ہوں اور آپ پر ضروری ہے مطابق وائرس کل دستاویزات کی طرف سے بیان کو تمام ہدایات پر عمل! آپ پڑھیں اور وائرس کل اور اس API کے سروس کی شرائط سے اتفاق کرتا ہوں: آپ جب تک یہ انضمام خصوصیت کو استعمال کرنے کی اجازت نہیں ہے. تم نے پڑھا ہے اور آپ کو ایک کم از کم، سمجھنے، وائرس کل پبلک API دستاویزات کے (بعد "VirusTotal کی عوامی API V2.0" سب کچھ لیکن "فہرست" سے پہلے) تمہید.'; -$phpMussel['lang']['config_virustotal_vt_quota_rate'] = 'وائرس کل API دستاویزات کے مطابق، "یہ کسی بھی 1 منٹ ٹائم فریم میں کسی بھی نوعیت کی زیادہ سے زیادہ 4 درخواستوں تک محدود ہے. آپ کو ایک honeyclient، honeypot یا اور نہ صرف VirusTotal کی کرنے کے لئے وسائل فراہم کرنے کے لئے کی جا رہی ہے کہ کسی دوسرے آٹومیشن چلاتے ہیں تو رپورٹیں آپ کو ایک اعلی کی درخواست کی شرح کوٹہ "کے حقدار ہیں بازیافت. بطور ڈیفالٹ، phpMussel سختی سے ان حدود پر عمل کرے گا، لیکن ان کی شرح کوٹہ کے امکان میں اضافہ کیا جا رہا ہے کی وجہ سے، ان دو ہدایات آپ اس پر کیا عمل کرنا چاہئے محدود کرنے کے طور phpMussel ہدایت کرنے کے لئے ایک وسیلہ کے طور پر فراہم کی جاتی ہیں. آپ \ جب تک، ایسا کرنے کی ہدایت کی گئی ہے، یہ ہے، آپ کو ان اقدار میں اضافہ کرنے کے لئے سفارش کی نہیں ہے، لیکن آپ کو \ تو آپ کی شرح کوٹہ پہنچنے سے متعلق سامنا کرنا پڑا مسائل کردینے گھٹ ان اقدار پر MAY کو کبھی کبھی ان مسائل سے نمٹنے میں آپ کی مدد. آپ کی شرح کی حد vt_quota_rate کے کسی بھی میں کسی بھی نوعیت کی درخواستوں vt_quota_time کے لمحے وقت کی حد کے طور پر مقرر کیا جاتا ہے.'; -$phpMussel['lang']['config_virustotal_vt_quota_time'] = '(مندرجہ بالا وضاحت ملاحظہ کریں).'; -$phpMussel['lang']['config_virustotal_vt_suspicion_level'] = 'بطور ڈیفالٹ، phpMussel جس فائلوں کی یہ "مشکوک" سمجھتی ہے کہ ان فائلوں کو وائرس کل API کا استعمال کرتے ہوئے کو سکین کرتا ہے کو محدود کریں گے. آپ اختیاری vt_suspicion_level کے ہدایت کی قدر میں تبدیلی کرتے ہوئے اس پابندی کو ایڈجسٹ کر سکتے ہیں.'; -$phpMussel['lang']['config_virustotal_vt_weighting'] = 'phpMussel detections کر کے طور پر یا پتہ لگانے weighting کے طور وائرس کل API کا استعمال کرتے ہوئے سکیننگ کے نتائج کو درخواست دینی چاہیے؟ (اور بدنیتی پر مبنی فائلوں کی ایک بڑی تعداد پکڑے جانے لہذا میں) ایک سے زیادہ کے انجن کو استعمال کرتے ہوئے (جیسا وائرس کل کرتا ہے) ایک فائل کو سکین ایک اضافہ کا پتہ لگانے کی شرح کے نتیجے چاہئے، اگرچہ، یہ بھی جھوٹے کی زیادہ تعداد کے نتیجے کر سکتے ہیں، کیونکہ یہ ہدایت موجود ہے، مثبت ہے، اور اس وجہ سے، کچھ حالات میں، سکیننگ کے نتائج بہتر ایک حتمی نتیجے پر اس اعتماد کا سکور کے طور پر کی بجائے استعمال کیا جا سکتا ہے. 0 کی قدر استعمال کیا جاتا ہے تو، وائرس کل API کا استعمال کرتے ہوئے سکیننگ کے نتائج کسی بھی انجن وائرس کل پرچم فائل کو بدنیتی پر مبنی ہونے کے طور پر سکین کیا جا رہا ہے کی طرف سے استعمال کیا جاتا ہے تو، detections کر کے طور پر لاگو کیا جائے گا، اور اس وجہ سے، phpMussel بدنیتی پر مبنی ہونے کے لئے فائل پر غور کریں گے . کسی دوسرے کی قدر استعمال کیا جاتا ہے تو، وائرس کل API کا استعمال کرتے ہوئے سکیننگ کے نتائج کا پتہ لگانے weighting کے طور پر لاگو کیا جائے گا، اور اس وجہ سے، فائل پرچم کہ وائرس کل کی طرف سے استعمال کے انجن کی تعداد سکین کیا جا رہا ہے درنساوناپورن ہونے (ایک اعتماد سکور کے طور پر کام کرے گا کے طور پر یا پتہ لگانے weighting کے) کے لئے ہے یا نہیں کی فائل کو سکین کیا جا رہا phpMussel طرف بدنیتی پر مبنی سمجھا جانا چاہئے (استعمال کیا کم از کم اعتماد کی نمائندگی کریں گے ویلیو سکور یا ترتیب میں کی ضرورت وزن بدنیتی پر مبنی سمجھا جائے). 0 کی قدر سے طے شدہ کی طرف سے استعمال کیا جاتا ہے.'; -$phpMussel['lang']['Extended Description: phpMussel'] = 'مرکزی پیکیج (بغیر دستخط، دستاویزات، اور ترتیب).'; -$phpMussel['lang']['field_activate'] = 'فعال کریں'; -$phpMussel['lang']['field_clear_all'] = 'تمام کو صاف کریں'; -$phpMussel['lang']['field_component'] = 'اجزاء'; -$phpMussel['lang']['field_create_new_account'] = 'نیا اکاؤنٹ بنانے'; -$phpMussel['lang']['field_deactivate'] = 'بے عمل'; -$phpMussel['lang']['field_delete_account'] = 'کھاتہ مٹا دو'; -$phpMussel['lang']['field_delete_all'] = 'تمام حذف کریں'; -$phpMussel['lang']['field_delete_file'] = 'حذف کریں'; -$phpMussel['lang']['field_download_file'] = 'نیچے بوجھ'; -$phpMussel['lang']['field_edit_file'] = 'میں ترمیم کریں'; -$phpMussel['lang']['field_false'] = 'False (غلط)'; -$phpMussel['lang']['field_file'] = 'فائل'; -$phpMussel['lang']['field_filename'] = 'فائل کا نام: '; -$phpMussel['lang']['field_filetype_directory'] = 'ڈائریکٹری'; -$phpMussel['lang']['field_filetype_info'] = '{EXT} فائل'; -$phpMussel['lang']['field_filetype_unknown'] = 'نامعلوم'; -$phpMussel['lang']['field_install'] = 'انسٹال کریں'; -$phpMussel['lang']['field_latest_version'] = 'تازہ ترین ورژن'; -$phpMussel['lang']['field_log_in'] = 'لاگ ان'; -$phpMussel['lang']['field_more_fields'] = 'مزید قطعات'; -$phpMussel['lang']['field_new_name'] = 'نیا نام:'; -$phpMussel['lang']['field_ok'] = 'ٹھیک ہے'; -$phpMussel['lang']['field_options'] = 'اختیارات'; -$phpMussel['lang']['field_password'] = 'پاس ورڈ'; -$phpMussel['lang']['field_permissions'] = 'اجازتیں'; -$phpMussel['lang']['field_quarantine_key'] = 'قرنطین کلید'; -$phpMussel['lang']['field_rename_file'] = 'نام تبدیل کریں'; -$phpMussel['lang']['field_reset'] = 'پھر سیٹ کریں'; -$phpMussel['lang']['field_restore_file'] = 'بحال'; -$phpMussel['lang']['field_set_new_password'] = 'نیا پاس ورڈ مقرر'; -$phpMussel['lang']['field_size'] = 'کل سائز: '; -$phpMussel['lang']['field_size_bytes'] = 'بائٹس'; -$phpMussel['lang']['field_size_GB'] = 'GB'; -$phpMussel['lang']['field_size_KB'] = 'KB'; -$phpMussel['lang']['field_size_MB'] = 'MB'; -$phpMussel['lang']['field_size_TB'] = 'TB'; -$phpMussel['lang']['field_status'] = 'سٹیٹس'; -$phpMussel['lang']['field_system_timezone'] = 'نظام کو پہلے سے طے شدہ ٹائم زون کا استعمال کریں.'; -$phpMussel['lang']['field_true'] = 'True (سچ)'; -$phpMussel['lang']['field_uninstall'] = 'غیر انسٹال'; -$phpMussel['lang']['field_update'] = 'اپ ڈیٹ'; -$phpMussel['lang']['field_update_all'] = 'تمام تجدید کریں'; -$phpMussel['lang']['field_upload_file'] = 'نئی فائل اپ لوڈ کریں'; -$phpMussel['lang']['field_username'] = 'صارف کا نام'; -$phpMussel['lang']['field_your_version'] = 'آپ کے ورژن'; -$phpMussel['lang']['header_login'] = 'جاری رکھنے کے لیے لاگ ان کریں.'; -$phpMussel['lang']['label_active_config_file'] = 'فعال کنفیگریشن فائل: '; -$phpMussel['lang']['label_blocked'] = 'بلاک اپ لوڈ'; -$phpMussel['lang']['label_branch'] = 'شاخ تازہ ترین مستحکم:'; -$phpMussel['lang']['label_events'] = 'واقعات اسکین کریں'; -$phpMussel['lang']['label_flagged'] = 'نشان لگا دیا گیا آبجیکٹ'; -$phpMussel['lang']['label_fmgr_cache_data'] = 'کیش کردہ ڈیٹا اور عارضی فائلیں'; -$phpMussel['lang']['label_fmgr_disk_usage'] = 'phpMussel ڈسک استعمال: '; -$phpMussel['lang']['label_fmgr_free_space'] = 'مفت ڈسک کی جگہ: '; -$phpMussel['lang']['label_fmgr_total_disk_usage'] = 'کل ڈسک استعمال: '; -$phpMussel['lang']['label_fmgr_total_space'] = 'کل ڈسک کی جگہ: '; -$phpMussel['lang']['label_fmgr_updates_metadata'] = 'اجزاء اپ ڈیٹ میٹا ڈیٹا'; -$phpMussel['lang']['label_hide'] = 'چھپائیں'; -$phpMussel['lang']['label_os'] = 'آپریٹنگ سسٹم استعمال کیا:'; -$phpMussel['lang']['label_other'] = 'دیگر'; -$phpMussel['lang']['label_other-Active'] = 'فعال دستخط فائلیں'; -$phpMussel['lang']['label_other-Since'] = 'شروع کرنے کی تاریخ'; -$phpMussel['lang']['label_php'] = 'PHP ورژن استعمال کیا:'; -$phpMussel['lang']['label_phpmussel'] = 'phpMussel ورژن استعمال کیا:'; -$phpMussel['lang']['label_quarantined'] = 'قرنطین میں اپ لوڈ'; -$phpMussel['lang']['label_sapi'] = 'SAPI استعمال کیا:'; -$phpMussel['lang']['label_scanned_objects'] = 'سکین کیا آبجیکٹ'; -$phpMussel['lang']['label_scanned_uploads'] = 'سکین کیا اپ لوڈ'; -$phpMussel['lang']['label_show'] = 'دکھائیں'; -$phpMussel['lang']['label_size_in_quarantine'] = 'قرنطین میں سائز: '; -$phpMussel['lang']['label_stable'] = 'تازہ ترین مستحکم:'; -$phpMussel['lang']['label_sysinfo'] = 'سسٹم کی معلومات:'; -$phpMussel['lang']['label_tests'] = 'ٹیسٹ:'; -$phpMussel['lang']['label_unstable'] = 'تازہ ترین غیر مستحکم:'; -$phpMussel['lang']['label_upload_date'] = 'اپ لوڈ وقت/تاریخ: '; -$phpMussel['lang']['label_upload_hash'] = 'اپ لوڈ ہیش: '; -$phpMussel['lang']['label_upload_origin'] = 'اپ لوڈ کی اصل: '; -$phpMussel['lang']['label_upload_size'] = 'اپ لوڈ کا سائز: '; -$phpMussel['lang']['link_accounts'] = 'اکاؤنٹس'; -$phpMussel['lang']['link_config'] = 'کنفگریشن'; -$phpMussel['lang']['link_documentation'] = 'دستاویزی'; -$phpMussel['lang']['link_file_manager'] = 'فائل منیجر'; -$phpMussel['lang']['link_home'] = 'ہوم'; -$phpMussel['lang']['link_logs'] = 'لاگز'; -$phpMussel['lang']['link_quarantine'] = 'قرنطین'; -$phpMussel['lang']['link_statistics'] = 'اعداد و شمار'; -$phpMussel['lang']['link_textmode'] = 'ٹیکسٹ فارمیٹنگ: سادہخوبصورت'; -$phpMussel['lang']['link_updates'] = 'تازہ ترین معلومات کے'; -$phpMussel['lang']['link_upload_test'] = 'اپ لوڈ کریں ٹیسٹ'; -$phpMussel['lang']['logs_logfile_doesnt_exist'] = 'منتخب شدہ لاگ فائل موجود نہیں ہے!'; -$phpMussel['lang']['logs_no_logfiles_available'] = 'کوئی لاگ مسلیں دستیاب.'; -$phpMussel['lang']['logs_no_logfile_selected'] = 'کوئی لاگ فائل کو منتخب کیا.'; -$phpMussel['lang']['max_login_attempts_exceeded'] = 'لاگ ان کوششوں کی زیادہ سے زیادہ تعداد سے تجاوز کر گئی. رسائی مسترد کر دی.'; -$phpMussel['lang']['previewer_days'] = 'دن'; -$phpMussel['lang']['previewer_hours'] = 'گھنٹے'; -$phpMussel['lang']['previewer_minutes'] = 'منٹس'; -$phpMussel['lang']['previewer_months'] = 'مہینے'; -$phpMussel['lang']['previewer_seconds'] = 'سیکنڈ'; -$phpMussel['lang']['previewer_weeks'] = 'ہفتے'; -$phpMussel['lang']['previewer_years'] = 'سال'; -$phpMussel['lang']['response_accounts_already_exists'] = 'وہ صارف نام کے ساتھ ایک اکاؤنٹ پہلے سے موجود ہے!'; -$phpMussel['lang']['response_accounts_created'] = 'اکاؤنٹ کامیابی سے تشکیل!'; -$phpMussel['lang']['response_accounts_deleted'] = 'اکاؤنٹ کامیابی سے خارج!'; -$phpMussel['lang']['response_accounts_doesnt_exist'] = 'اس اکاؤنٹ کا کوئی وجود نہیں.'; -$phpMussel['lang']['response_accounts_password_updated'] = 'پاس ورڈ کامیابی سے اپ ڈیٹ!'; -$phpMussel['lang']['response_activated'] = 'کامیابی کے ساتھ فعال.'; -$phpMussel['lang']['response_activation_failed'] = 'چالو کرنے میں ناکام!'; -$phpMussel['lang']['response_checksum_error'] = 'حیض کی خرابی! فائل کو مسترد کر دیا!'; -$phpMussel['lang']['response_component_successfully_installed'] = 'اجزاء کامیابی سے نصب.'; -$phpMussel['lang']['response_component_successfully_uninstalled'] = 'اجزاء کامیابی سے ان انسٹال.'; -$phpMussel['lang']['response_component_successfully_updated'] = 'اجزاء کامیابی سے اپ ڈیٹ.'; -$phpMussel['lang']['response_component_uninstall_error'] = 'جزو انسٹال کرنے کی کوشش کرتے ہوئے ایک خرابی واقع ہوئی.'; -$phpMussel['lang']['response_configuration_updated'] = 'کنفگریشن کامیابی سے اپ ڈیٹ.'; -$phpMussel['lang']['response_deactivated'] = 'کامیابی کے ساتھ غیر فعال.'; -$phpMussel['lang']['response_deactivation_failed'] = 'غیر فعال کرنے میں ناکام ہو گیا!'; -$phpMussel['lang']['response_delete_error'] = 'حذف کرنے میں ناکام!'; -$phpMussel['lang']['response_directory_deleted'] = 'ڈائریکٹری کامیابی سے خارج!'; -$phpMussel['lang']['response_directory_renamed'] = 'ڈائریکٹری کامیابی سے نام تبدیل کر دیا!'; -$phpMussel['lang']['response_error'] = 'خرابی'; -$phpMussel['lang']['response_failed_to_install'] = 'انسٹال کرنے میں ناکام'; -$phpMussel['lang']['response_failed_to_update'] = 'اپ ڈیٹ کرنے میں ناکام'; -$phpMussel['lang']['response_file_deleted'] = 'کامیابی خارج کر دیا فائل!'; -$phpMussel['lang']['response_file_edited'] = 'کامیابی نظر ثانی شدہ فائل!'; -$phpMussel['lang']['response_file_renamed'] = 'کامیابی کا نام دے دیا فائل!'; -$phpMussel['lang']['response_file_restored'] = 'فائل کو کامیابی سے بحال!'; -$phpMussel['lang']['response_file_uploaded'] = 'کامیابی اپ لوڈ کردہ فائل!'; -$phpMussel['lang']['response_login_invalid_password'] = 'لاگ ان ناکامی! غلط پاسورڈ!'; -$phpMussel['lang']['response_login_invalid_username'] = 'لاگ ان ناکامی! صارف کا نام موجود نہیں ہے!'; -$phpMussel['lang']['response_login_password_field_empty'] = 'پاس ورڈ میدان خالی!'; -$phpMussel['lang']['response_login_username_field_empty'] = 'صارف کا نام فیلڈ کو خالی!'; -$phpMussel['lang']['response_rename_error'] = 'نام تبدیل کرنے میں ناکام!'; -$phpMussel['lang']['response_restore_error_1'] = 'بحال کرنے میں ناکام! خراب فائل!'; -$phpMussel['lang']['response_restore_error_2'] = 'بحال کرنے میں ناکام! غلط قرنطین کلید!'; -$phpMussel['lang']['response_statistics_cleared'] = 'اعداد و شمار صاف ہوگئے.'; -$phpMussel['lang']['response_updates_already_up_to_date'] = 'پہلے سے اپ ڈیٹ.'; -$phpMussel['lang']['response_updates_not_installed'] = 'اجزاء انسٹال نہیں!'; -$phpMussel['lang']['response_updates_not_installed_php'] = 'اجزاء انسٹال نہیں (PHP ضرورت ہوتی {V})!'; -$phpMussel['lang']['response_updates_outdated'] = 'فرسودہ!'; -$phpMussel['lang']['response_updates_outdated_manually'] = 'فرسودہ (دستی طور پر اپ ڈیٹ کریں)!'; -$phpMussel['lang']['response_updates_outdated_php_version'] = 'فرسودہ (درکار PHP {V})!'; -$phpMussel['lang']['response_updates_unable_to_determine'] = 'اس بات کا تعین کرنے سے قاصر ہے.'; -$phpMussel['lang']['response_upload_error'] = 'اپ لوڈ کرنے میں ناکام ہو گیا!'; -$phpMussel['lang']['state_complete_access'] = 'مکمل رسائی'; -$phpMussel['lang']['state_component_is_active'] = 'جزو فعال ہے.'; -$phpMussel['lang']['state_component_is_inactive'] = 'اجزاء غیر فعال ہے.'; -$phpMussel['lang']['state_component_is_provisional'] = 'اجزاء عارضی ہے.'; -$phpMussel['lang']['state_default_password'] = 'انتباہ: ڈیفالٹ پاس ورڈ کو استعمال کرتے ہوئے!'; -$phpMussel['lang']['state_logged_in'] = 'لاگ ان.'; -$phpMussel['lang']['state_logs_access_only'] = 'لاگز صرف رسائی'; -$phpMussel['lang']['state_maintenance_mode'] = 'انتباہ: بحالی کا موڈ فعال ہے!'; -$phpMussel['lang']['state_password_not_valid'] = 'انتباہ: یہ اکاؤنٹ ایک درست پاس ورڈ کا استعمال نہیں کر رہا ہے!'; -$phpMussel['lang']['state_quarantine'] = 'فی الحال قرنطین میں %s فائلیں موجود ہیں.'; -$phpMussel['lang']['switch-hide-non-outdated-set-false'] = 'غیر فرسودہ مت چھپاو'; -$phpMussel['lang']['switch-hide-non-outdated-set-true'] = 'غیر فرسودہ چھپائیں'; -$phpMussel['lang']['switch-hide-unused-set-false'] = 'غیر استعمال شدہ مت چھپاو'; -$phpMussel['lang']['switch-hide-unused-set-true'] = 'غیر استعمال شدہ چھپائیں'; -$phpMussel['lang']['tip_accounts'] = 'ہیلو، {username}.
        اکاؤنٹس صفحہ آپ phpMussel سامنے کے آخر تک رسائی حاصل کر سکتے ہیں جو کنٹرول کرنے کی اجازت دیتا ہے.'; -$phpMussel['lang']['tip_config'] = 'ہیلو، {username}.
        ترتیب کے صفحے آپ کو سامنے کے آخر میں سے phpMussel لئے ترتیب میں ترمیم کی اجازت دیتا ہے.'; -$phpMussel['lang']['tip_donate'] = 'phpMussel بلا معاوضہ پیش کی جاتی ہے، لیکن آپ کو اس منصوبے کے لئے عطیہ کرنا چاہتے ہیں تو، آپ کو عطیہ کے بٹن پر کلک کر کے ایسا کر سکتے ہیں.'; -$phpMussel['lang']['tip_file_manager'] = 'ہیلو، {username}.
        فائل مینیجر آپ کو، کو حذف ترمیم کریں، اپ لوڈ، اور فائلوں کو ڈاؤن لوڈ کرنے کی اجازت دیتا ہے. احتیاط کے ساتھ استعمال کریں (آپ کو اس کے ساتھ آپ کی تنصیب توڑ سکتا ہے).'; -$phpMussel['lang']['tip_home'] = 'ہیلو، {username}.
        یہ phpMussel سامنے کے آخر میں کے ہوم پیج ہے. جاری رکھنے کے لئے بائیں طرف نیویگیشن مینو میں سے ایک لنک کو منتخب کریں.'; -$phpMussel['lang']['tip_login'] = 'پہلے سے طے شدہ صارف نام: admin – ڈیفالٹ پاس ورڈ: password'; -$phpMussel['lang']['tip_logs'] = 'ہیلو، {username}.
        کہ لاگ فائل کے مواد کو دیکھنے کے لئے ذیل کی فہرست سے ایک لاگ فائل منتخب کریں.'; -$phpMussel['lang']['tip_quarantine'] = 'ہیلو، {username}.
        انتظامیہ کو سہولت دینے کے لئے، اس صفحہ کو فی الحال قرنطین میں موجود تمام فائلوں کی فہرست.'; -$phpMussel['lang']['tip_quarantine_disabled'] = 'نوٹ: قرنطین فی الحال غیر فعال ہے، لیکن ترتیب ترتیب کے صفحے کے ذریعہ فعال ہوسکتا ہے.'; -$phpMussel['lang']['tip_see_the_documentation'] = 'ملاحظہ کریں دستاویزی مختلف ترتیب ہدایات اور ان کے مقاصد کے بارے میں معلومات کے لئے.'; -$phpMussel['lang']['tip_statistics'] = 'ہیلو، {username}.
        یہ صفحہ آپ کے phpMussel کی تنصیب کے لئے کچھ استعمال کے اعداد و شمار ظاہر کرتا ہے.'; -$phpMussel['lang']['tip_statistics_disabled'] = 'نوٹ: اعداد و شمار کی ٹریکنگ فی الحال غیر فعال ہے، لیکن کنفگریشن کے صفحے کے ذریعہ فعال ہوسکتا ہے.'; -$phpMussel['lang']['tip_updates'] = 'ہیلو، {username}.
        اپ ڈیٹس صفحہ آپ کو انسٹال کرنے کے لئے، انسٹال کی اجازت دیتا ہے، اور phpMussel (بنیادی پیکج، دستخط، پلگ ان، L10N فائلوں، وغیرہ) کے مختلف اجزاء کو اپ ڈیٹ.'; -$phpMussel['lang']['tip_upload_test'] = 'ہیلو، {username}.
        اسے اپ لوڈ کرنے کی کوشش کریں جب آپ کو ٹیسٹ کرنے کے لئے چاہے ایک فائل عام طور phpMussel کی طرف سے بلاک کیا جائے گا کی اجازت دی اپ لوڈ ٹیسٹ کے صفحے پر ایک معیاری فائل اپ فارم پر مشتمل ہے.'; -$phpMussel['lang']['title_accounts'] = 'phpMussel – اکاؤنٹس'; -$phpMussel['lang']['title_config'] = 'phpMussel – کنفگریشن'; -$phpMussel['lang']['title_file_manager'] = 'phpMussel – فائل مینیجر'; -$phpMussel['lang']['title_home'] = 'phpMussel – ہوم'; -$phpMussel['lang']['title_login'] = 'phpMussel – لاگ ان'; -$phpMussel['lang']['title_logs'] = 'phpMussel – لاگز'; -$phpMussel['lang']['title_quarantine'] = 'phpMussel – قرنطین'; -$phpMussel['lang']['title_statistics'] = 'phpMussel – اعداد و شمار'; -$phpMussel['lang']['title_updates'] = 'phpMussel – تازہ ترین معلومات کے'; -$phpMussel['lang']['title_upload_test'] = 'phpMussel – اپ لوڈ کریں ٹیسٹ'; -$phpMussel['lang']['warning'] = 'انتباہ:'; -$phpMussel['lang']['warning_php_1'] = 'آپ کے PHP ورژن اب فعال طور پر معاون نہیں ہے! اپ ڈیٹ کرنے کی سفارش کی گئی ہے!'; -$phpMussel['lang']['warning_php_2'] = 'آپ کے PHP ورژن شدید خطرناک ہے! اپ ڈیٹ کرنا سختی کی سفارش کی جاتی ہے!'; -$phpMussel['lang']['warning_signatures_1'] = 'کوئی دستخط فائلیں فعال نہیں ہیں!'; - -$phpMussel['lang']['info_some_useful_links'] = 'کچھ مفید لنکس:
          -
        • phpMussel Issues @ GitHub – phpMussel لئے مسائل کا صفحہ (کی حمایت، مدد، وغیرہ).
        • -
        • phpMussel @ Spambot Security – phpMussel لئے فورم (کی حمایت، مدد، وغیرہ).
        • -
        • phpMussel @ SourceForge – متبادل ڈاؤن آئینے phpMussel لئے.
        • -
        • WebSecTools.com – ویب سائٹس کو محفوظ بنانے کے لئے سادہ ویب ماسٹر ٹولز کا ایک مجموعہ.
        • -
        • ClamavNet – ClamAV مرکزی صفحہ (ClamAV® ٹروجن، وائرس، مالویئر اور کا پتہ لگانے کے لئے ایک اوپن سورس ینٹیوائرس انجن ہے دیگر درنساوناپورن خطرات).
        • -
        • SecuriteInfo.com – کمپیوٹر سیکورٹی کمپنی ClamAV کے ضمنی دستخط فراہم کرتا ہے.
        • -
        • PhishTank – جعل سازی ڈیٹا بیس phpMussel URL سکینر کی طرف سے استعمال کیا.
        • -
        • Global PHP Group @ Facebook – PHP سیکھنے کے وسائل اور بحث.
        • -
        • PHP.earth – PHP سیکھنے کے وسائل اور بحث.
        • -
        • VirusTotal – VirusTotal کی مشکوک فائلوں اور یو آر ایل کا تجزیہ کرنے کے لئے ایک مفت سروس ہے.
        • -
        • Hybrid Analysis – ہائبرڈ تجزیہ کی طرف سے فراہم کردہ ایک مفت میلویئر تجزیہ خدمت ہے پیلوڈ سیکورٹی.
        • -
        • Malwarebytes – کمپیوٹر مخالف میلویئر ماہرین.
        • -
        • MalwareTips – مفید میلویئر مرکوز مباحثے فورمس.
        • -
        • Vulnerability Charts – مختلف پیکجوں کے محفوظ اور غیر محفوظ ورژن لیتے ہیں (PHP، HHVM، وغیرہ).
        • -
        • Compatibility Charts – مختلف پیکجوں کے لئے مطابقت کی معلومات فہرست (CIDRAM، phpMussel، وغیرہ).
        • -
        '; diff --git a/libraries/plugins/phpMussel/vault/lang/lang.ur.php b/libraries/plugins/phpMussel/vault/lang/lang.ur.php deleted file mode 100644 index 5ed12c7..0000000 --- a/libraries/plugins/phpMussel/vault/lang/lang.ur.php +++ /dev/null @@ -1,130 +0,0 @@ -Trang Chủ | Đăng Xuất'; -$phpMussel['lang']['bNav_logout'] = 'Đăng Xuất'; -$phpMussel['lang']['config_attack_specific_archive_file_extensions'] = 'Được công nhận mở rộng cho tập tin kho lưu trữ (định dạng là CSV; chỉ nên thêm hay loại bỏ khi có vấn đề xảy ra; loại bỏ không cần thiết có thể gây ra sai tích cực để xuất hiện cho tập tin kho lưu trữ, trong khi thêm không cần thiết sẽ trong bản chất danh sách trắng những gì bạn đang thêm từ phát hiện cụ tấn công; sửa đổi với cách thận trọng; cũng lưu ý rằng điều này không có tác dụng liên quan đến những gì kho lưu trữ có thể và không thể được phân tích ở nội dung cấp). Danh sách này, như là mặc định, liệt kê các định dạng sử dụng phổ biến nhất trên phần lớn các hệ thống và CMS, nhưng là cố tình không nhất thiết phải toàn diện.'; -$phpMussel['lang']['config_attack_specific_block_control_characters'] = 'Chặn bất kỳ tập tin có chứa bất kỳ ký tự điều khiển (khác hơn so với dòng mới)? ([\x00-\x08\x0b\x0c\x0e\x1f\x7f]) Nếu bạn CHỈ tải lên văn bản thô, thế thì bạn có thể kích hoạt tùy chọn này để cung cấp một số bảo vệ bổ sung để hệ thống của bạn. Tuy nhiên, nếu bạn tải lên bất cứ điều gì khác hơn văn bản thô, cho phép điều này có thể dẫn đến sai tích cực. False = Không chặn [Mặc định]; True = Chặn.'; -$phpMussel['lang']['config_attack_specific_chameleon_from_exe'] = 'Tìm kiếm cho định danh tập tin thực thi trong các tập tin mà không phải là tập tin thực thi cũng không phải là kho lưu trữ được công nhận, và cho tập tin thực thi tập tin mà có định danh sai. False = Tắt; True = Trên.'; -$phpMussel['lang']['config_attack_specific_chameleon_from_php'] = 'Tìm kiếm cho định danh PHP trong các tập tin mà không phải là PHP cũng không phải là kho lưu trữ được công nhận. False = Tắt; True = Trên.'; -$phpMussel['lang']['config_attack_specific_chameleon_to_archive'] = 'Tìm kiếm cho kho lưu trữ mà có định danh sai (Được hỗ trợ: BZ, GZ, RAR, ZIP, RAR, GZ). False = Tắt; True = Trên.'; -$phpMussel['lang']['config_attack_specific_chameleon_to_doc'] = 'Tìm kiếm cho tài liệu văn phòng mà có định danh sai (Được hỗ trợ: DOC, DOT, PPS, PPT, XLA, XLS, WIZ). False = Tắt; True = Trên.'; -$phpMussel['lang']['config_attack_specific_chameleon_to_img'] = 'Tìm kiếm cho hình ảnh mà có định danh sai (Được hỗ trợ: BMP, DIB, PNG, GIF, JPEG, JPG, XCF, PSD, PDD, WEBP). False = Tắt; True = Trên.'; -$phpMussel['lang']['config_attack_specific_chameleon_to_pdf'] = 'Tìm kiếm cho tập tin PDF mà có định danh sai. False = Tắt; True = Trên.'; -$phpMussel['lang']['config_attack_specific_corrupted_exe'] = 'Tập tin bị hỏng và phân tích lỗi. False = Bỏ qua; True = Chặn [Mặc định]. Phát hiện và chặn khả thi tập tin PE (portable executable / thực thi di động) bị hỏng? Thường (nhưng không phải lúc nào), khi khía cạnh cụ thể của một tập tin PE đang bị hỏng hay không thể được phân tích chính xác, nó có thể chỉ ra một nhiễm vi rút. Các quy trình được sử dụng bởi hầu hết các chương trình chống vi rút để phát hiện vi rút trong các tập tin PE đòi hỏi phải phân tích những tập tin theo một cách mà, nếu các lập trình viên của một vi rút là nhận thức của, cụ thể sẽ cố gắng để ngăn chặn, để cho phép vi rút của mình để không bị phát hiện.'; -$phpMussel['lang']['config_attack_specific_decode_threshold'] = 'Ngưỡng cho chiều dài của dữ liệu thô trong đó các lệnh giải mã nên được phát hiện (trong trường hợp có bất kỳ vấn đề hiệu suất đáng chú ý trong khi quét). Mặc định = 512KB. Số không hay số null vô hiệu hóa các ngưỡng (loại bỏ bất kỳ giới hạn dựa trên kích cỡ tập tin).'; -$phpMussel['lang']['config_attack_specific_scannable_threshold'] = 'Ngưỡng cho chiều dài của dữ liệu mà phpMussel được phép đọc và quét (trong trường hợp có bất kỳ vấn đề hiệu suất đáng chú ý trong khi quét). Mặc định = 32MB. Số không hay số null vô hiệu hóa các ngưỡng. Nói chung, giá trị này không nên được ít hơn kích thước trung bình của tải lên tập tin bạn muốn và mong đợi để nhận được đến máy chủ hay trang mạng của bạn, không nên được ít hơn tùy chọn filesize_limit, và không nên được ít hơn khoảng một phần năm tổng số cấp phát bộ nhớ cấp cho PHP thông qua tập tin cấu hình "php.ini". Tùy chọn này tồn tại để cố gắng ngăn chặn phpMussel từ việc sử dụng quá nhiều bộ nhớ (mà sẽ ngăn chặn nó từ việc có thể quét các tập tin thành công trên một kích thước tập tin nhất định).'; -$phpMussel['lang']['config_compatibility_ignore_upload_errors'] = 'Nói chung, tùy chọn này nên bị vô hiệu hóa, trừ khi nó cần thiết cho chức năng đúng của phpMussel trên hệ thống cụ thể của bạn. Thông thường, khi bị vô hiệu, khi phpMussel phát hiện sự hiện diện của elements (yếu tố) trong array $_FILES, nó sẽ cố gắng để bắt đầu quét của các tập tin mà những yếu tố đại diện, và, nếu những yếu tố này là trống, phpMussel sẽ trả về thông báo lỗi. Đây là hành vi thích hợp cho phpMussel. Tuy nhiên, đối với một số CMS, phần tử rỗng trong $_FILES có thể xảy ra như là kết quả của các hành vi tự nhiên của những CMS, hay lỗi có thể được báo cáo khi không có bất kỳ, và trong trường hợp này, các hành vi tự nhiên cho phpMussel sẽ gây trở ngại với các hành vi bình thường của những CMS. Nếu một tình huống như vậy xảy ra cho bạn, bật tùy chọn này sẽ hướng dẫn phpMussel không cố gắng để bắt đầu quét cho phần tử rỗng, bỏ qua chúng khi tìm thấy và không trả lại bất kỳ thông báo lỗi liên quan, do đó cho phép tiếp tục của yêu cầu trang. False = TẮT; True = TRÊN.'; -$phpMussel['lang']['config_compatibility_only_allow_images'] = 'Nếu bạn chỉ mong đợi hay chỉ có ý định để cho phép hình ảnh để được tải lên hệ thống hay CMS của bạn, và nếu bạn hoàn toàn không yêu cầu bất kỳ tập tin khác so với hình ảnh để được tải lên hệ thống hay CMS của bạn, tùy chọn này nên được kích hoạt, nhưng nếu không nên bị vô hiệu hóa. Nếu tùy chọn này được kích hoạt, nó sẽ hướng dẫn phpMussel để ngăn chặn bất kỳ tải lên bừa bãi xác định là các tập tin không phải hình ảnh, mà không cần quét chúng. Điều này có thể làm giảm thời gian xử lý và sử dụng bộ nhớ cho tải lên cố gắng của các tập tin không phải hình ảnh. False = TẮT; True = TRÊN.'; -$phpMussel['lang']['config_files_block_encrypted_archives'] = 'Phát hiện và chặn kho lưu trữ được mã hóa? Bởi vì phpMussel không thể quét các nội dung của kho lưu trữ được mã hóa, nó có thể mã hóa kho lưu trữ có thể được sử dụng bởi một kẻ tấn công như một phương tiện cố gắng để vượt qua phpMussel, máy quét chống vi rút và bảo vệ khác như. Hướng dẫn phpMussel để ngăn chặn bất kỳ kho lưu trữ mà nó phát hiện được mã hóa có thể giúp giảm nguy cơ nào liên kết với những khả năng này. False = Không; True = Vâng [Mặc định].'; -$phpMussel['lang']['config_files_check_archives'] = 'Cố gắng để kiểm tra nội dung của kho lưu trữ? False = Không kiểm tra; True = Kiểm tra [Mặc định]. Tại thơi điểm nay, các chỉ định dạng kho lưu trữ và nén được hỗ trợ là BZ/BZIP2, GZ/GZIP, LZF, PHAR, TAR và ZIP (định dạng kho lưu trữ và nén RAR, CAB, 7z và vân vân không được hỗ trợ tại thơi điểm nay). Đây không phải là hoàn hảo! Trong khi tôi rất khuyên bạn nên giữ này được kích hoạt, tôi không thể đảm bảo nó sẽ luôn luôn tìm thấy tất cả mọi thứ. Cũng lưu ý kho lưu trữ kiểm tra là không đệ quy cho PHAR hay ZIP.'; -$phpMussel['lang']['config_files_filesize_archives'] = 'Thừa kế danh sách đen/trắng cho kích thước của tập tin trong kho lưu trữ? False = Không (chỉ danh sách xám mọi điều); True = Vâng [Mặc định].'; -$phpMussel['lang']['config_files_filesize_limit'] = 'Giới hạn của kích thước tập tin trong KB. 65536 = 64MB [Mặc định]; 0 = Không giới hạn (luôn có trên danh sách xám), bất kỳ giá trị số dương chấp nhận. Điều này có thể hữu ích khi cấu hình PHP của bạn hạn chế số lượng bộ nhớ một quá trình có thể giữ hay nếu hình PHP của bạn giới hạn kích thước của tải lên tập tin.'; -$phpMussel['lang']['config_files_filesize_response'] = 'Làm gì với tập tin mà vượt quá các giới hạn kích thước của tải lên (nếu tồn tại). False = Danh sách trắng; True = Danh sách đen [Mặc định].'; -$phpMussel['lang']['config_files_filetype_archives'] = 'Thừa kế danh sách đen/trắng cho loại tệp của tập tin trong kho lưu trữ? False = Không (chỉ danh sách xám mọi điều) [Mặc định]; True = Vâng.'; -$phpMussel['lang']['config_files_filetype_blacklist'] = 'Danh sách đen:'; -$phpMussel['lang']['config_files_filetype_greylist'] = 'Danh sách xám:'; -$phpMussel['lang']['config_files_filetype_whitelist'] = 'Nếu hệ thống của bạn chỉ cho phép các loại tệp cụ thể được tải lên, hay nếu hệ thống của bạn từ chối một cách rõ ràng các loại tập tin cụ thể, xác định các loại tập tin trong danh sách trắng, danh sách đen và danh sách xám có thể tăng tốc độ quét được tiến hành bằng cách cho phép các kịch bản bỏ qua các loại tập tin nhất định. Định dạng là CSV (dấu phẩy ngăn cách giá trị). Nếu bạn muốn quét tất cả mọi thứ, thay vì sử dụng danh sách trắng, danh sách đen hay danh sách xám, để lại những biến trống; Làm như vậy sẽ vô hiệu hóa danh sách trắng/đen/xám. Thứ tự hợp lý của chế biến là: Nếu loại tệp là trên danh sách trắng, không quét và không chặn các tập tin, và không kiểm tra các tập tin chống lại danh sách đen hay danh sách xám. Nếu loại tệp là trên danh sách đen, không quét các tập tin nhưng chặn nó dù sao, và không kiểm tra các tập tin chống lại danh sách xám. Nếu danh sách xám là trống hay nếu danh sách xám không phải là trống và các loại tệp là danh sách xám, quét các tập tin như bình thường và xác định xem có chặn nó dựa trên kết quả của quá trình quét, nhưng nếu danh sách xám không phải là trống và các loại tệp không phải trên danh sách xám, điều trị các tập tin như thể nó là trên danh sách đen, vì thế không quét nó nhưng chặn nó dù sao. Danh sách trắng:'; -$phpMussel['lang']['config_files_max_recursion'] = 'Tối đa đệ quy chiều sâu giới hạn cho kho lưu trữ. Mặc định = 10.'; -$phpMussel['lang']['config_files_max_uploads'] = 'Số lượng tối đa của tập tin cho phép để quét trong khi quét tập tin tải lên trước khi hủy bỏ quá trình quét và thông báo cho người dùng rằng họ đang tải lên quá nhiều cùng một lúc! Trong lý thuyết, cung cấp bảo vệ chống lại một cuộc tấn công nhờ đó mà một kẻ tấn công cố gắng DDoS hệ thống hay CMS của bạn bằng cách quá tải phpMussel để làm chậm quá trình PHP đến khi nó dừng lại. Đề xuất: 10. Bạn có thể muốn tăng hoặc giảm số này tùy thuộc vào tốc độ của phần cứng của bạn. Chú ý rằng con số này không tính đến hoặc bao gồm các nội dung của kho lưu trữ.'; -$phpMussel['lang']['config_general_cleanup'] = 'Hủy hoại biến và bộ nhớ được sử dụng bởi các kịch bản sau khi quét tải lên ban đầu? False = Không; True = Vâng [Mặc định]. Nếu bạn -không- sử dụng các kịch bản vượt ra ngoài quét tải lên ban đầu, bạn nên đặt này để true (vâng), để giảm thiểu sử dụng bộ nhớ. Nếu bạn -là- sử dụng các kịch bản vượt ra ngoài quét tải lên ban đầu, bạn nên đặt này để false (không), để tránh cần thiết tải lại dữ liệu trùng lặp vào bộ nhớ. Trong thực tế nói chung, nó thường nên được đặt để true, nhưng, nếu bạn làm điều này, bạn sẽ không thể sử dụng các kịch bản cho bất cứ điều gì khác hơn quét tải lên ban đầu. Không có ảnh hưởng trong CLI.'; -$phpMussel['lang']['config_general_default_algo'] = 'Xác định thuật toán nào sẽ sử dụng cho tất cả các mật khẩu và phiên trong tương lai. Tùy chọn: PASSWORD_DEFAULT (mặc định), PASSWORD_BCRYPT, PASSWORD_ARGON2I (yêu cầu PHP >= 7.2.0).'; -$phpMussel['lang']['config_general_delete_on_sight'] = 'Bật tùy chọn này sẽ hướng dẫn các kịch bản để cố gắng xóa ngay lập tức bất kỳ đã quét tải lên tập tin mà phù hợp bất kỳ tiêu chí phát hiện, dù qua chữ ký hay thứ khác. Tập tin xác định là "sạch" sẽ không được bị chạm vào. Trong trường hợp kho lưu trữ, các toàn bộ kho lưu trữ sẽ bị xóa, bất kể nếu các tập tin vi phạm chỉ là một trong nhiều tập tin chứa trong các kho lưu trữ. Trong trường hợp quét tập tin tải lên, thông thường, nó không phải là cần thiết để kích hoạt tùy chọn này, bởi vì thông thường, PHP sẽ tự động tẩy các nội dung của bộ nhớ cache của nó khi thực hiện xong, điều đó có nghĩa là nó thường sẽ xóa bất kỳ tập tin tải lên thông qua nó đến máy chủ trừ khi họ đã được chuyển, sao chép hay xóa rồi. Tùy chọn này được thêm vào ở đây như một biện pháp bảo mật thêm cho những người có bản sao của PHP mà có thể không luôn luôn cư xử theo cách mong đợi. False = Sau khi quét, làm không có gì để các tập tin [Mặc định]; True = Sau khi quét, nếu không sạch, xóa ngay lập tức.'; -$phpMussel['lang']['config_general_disable_cli'] = 'Vô hiệu hóa chế độ CLI? Chế độ CLI được kích hoạt theo mặc định, nhưng đôi khi có thể gây trở ngại cho công cụ kiểm tra nhất định (như PHPUnit, cho ví dụ) và khác ứng dụng mà CLI dựa trên. Nếu bạn không cần phải vô hiệu hóa chế độ CLI, bạn nên bỏ qua tùy chọn này. False = Kích hoạt chế độ CLI [Mặc định]; True = Vô hiệu hóa chế độ CLI.'; -$phpMussel['lang']['config_general_disable_frontend'] = 'Vô hiệu hóa truy cập front-end? Truy cập front-end có thể làm cho phpMussel dễ quản lý hơn, nhưng cũng có thể là một nguy cơ bảo mật tiềm năng. Đó là khuyến cáo để quản lý phpMussel từ các back-end bất cứ khi nào có thể, nhưng truy cập front-end là cung cấp khi nó không phải là có thể. Giữ nó vô hiệu hóa trừ khi bạn cần nó. False = Kích hoạt truy cập front-end; True = Vô hiệu hóa truy cập front-end [Mặc định].'; -$phpMussel['lang']['config_general_disable_webfonts'] = 'Vô hiệu hóa các webfont? True = Vâng; False = Không [Mặc định].'; -$phpMussel['lang']['config_general_enable_plugins'] = 'Cho phép hỗ trợ cho plugins của phpMussel? False = Không; True = Vâng [Mặc định].'; -$phpMussel['lang']['config_general_forbid_on_block'] = 'phpMussel nên gửi 403 Forbidden chúng với các thông điệp tải lên tập tin bị chặn, hoặc chỉ sử dụng 200 OK? False = Không (200); True = Vâng (403) [Mặc định].'; -$phpMussel['lang']['config_general_FrontEndLog'] = 'Tập tin cho ghi cố gắng đăng nhập front-end. Chỉ định một tên tập tin, hoặc để trống để vô hiệu hóa.'; -$phpMussel['lang']['config_general_honeypot_mode'] = 'Khi chế độ honeypot được kích hoạt, phpMussel sẽ cố gắng kiểm dịch mỗi tập tin tải lên mà nó gặp, bất kể liệu tập tin được tải lên kích hoạt với bất kỳ chữ ký bao gồm, và không có quét hoặc phân tích của những tập tin tải lên thực sự sẽ xảy ra. Chức năng này sẽ hữu ích cho những ai muốn sử dụng phpMussel cho các mục đích của nghiên cứu cho vi rút hay phần mềm độc hại, nhưng nó không được khuyến khích để kích hoạt chức năng này nếu các mục đích sử dụng của phpMussel bởi người dùng là cho tải lên tập tin quét thực sự, cũng không được khuyến khích để sử dụng chức năng honeypot cho các mục đích khác hơn các honeypot. Theo mặc định, tùy chọn này bị vô hiệu hóa. False = Không cho phép [Mặc định]; True = Cho phép.'; -$phpMussel['lang']['config_general_ipaddr'] = 'Nơi để tìm thấy các địa chỉ IP của các yêu cầu kết nối? (Hữu ích cho các dịch vụ như thế Cloudflare và vv) Mặc định = REMOTE_ADDR. CẢNH BÁO: Không thay đổi này trừ khi bạn biết những gì bạn đang làm!'; -$phpMussel['lang']['config_general_lang'] = 'Xác định tiếng mặc định cho phpMussel.'; -$phpMussel['lang']['config_general_maintenance_mode'] = 'Bật chế độ bảo trì? True = Vâng; False = Không [Mặc định]. Vô hiệu hoá mọi thứ khác ngoài các front-end. Đôi khi hữu ích khi cập nhật CMS, framework của bạn, vv.'; -$phpMussel['lang']['config_general_max_login_attempts'] = 'Số lượng tối đa cố gắng đăng nhập (front-end). Mặc định = 5.'; -$phpMussel['lang']['config_general_numbers'] = 'Làm thế nào để bạn thích số được hiển thị? Chọn ví dụ có vẻ chính xác nhất cho bạn.'; -$phpMussel['lang']['config_general_quarantine_key'] = 'phpMussel có thể kiểm dịch tải lên tập tin mà đã được đánh dấu trong sự cô lập trong vòng các vault của phpMussel, nếu đây là cái gì bạn muốn nó làm. Các người dùng bình thường của phpMussel mà chỉ đơn giản là muốn bảo vệ các môi trường kho lưu trữ hay trang mạng của họ, mà không có bất cứ quan tâm trong việc phân tích sâu sắc của bất kỳ tải lên tập tin mà đã được đánh dấu, nên để chức năng này bị vô hiệu hóa còn lại, nhưng bất kỳ người dùng quan tâm trong phân tích sâu hơn của tải lên tập tin mà đã được đánh dấu cho nghiên cứu phần mềm độc hại hay cho những thứ tương tự như vậy nên kích hoạt chức năng này. Các kiểm dịch của tải lên tập tin mà đã được đánh dấu đôi khi cũng có thể hỗ trợ trong việc gỡ lỗi sai tích cực, nếu đây là cái gì đó thường xuyên xảy ra đối với bạn. Để vô hiệu hóa chức năng kiểm dịch, chỉ đơn giản để lại tùy chọn quarantine_key trống rỗng, hay xóa nội dung của nó nếu nó không phải là đã trống rỗng. Để kích hoạt chức năng kiểm dịch, nhập một số giá trị vào các tùy chọn. quarantine_key là một tính năng bảo mật quan trọng của chức năng kiểm dịch yêu cầu như là một phương tiện cho ngăn chặn chức năng kiểm dịch được khai thác bởi kẻ tấn công tiềm năng và như một phương tiện ngăn chặn bất kỳ thực hiện tiềm năng của kho lưu trữ trong kiểm dịch. quarantine_key nên được đối xử theo cách tương tự như mật khẩu của bạn: Càng dài thì càng tốt, và cất giữ nó thật chặt. Đối với hiệu quả tốt nhất, sử dụng kết hợp với delete_on_sight.'; -$phpMussel['lang']['config_general_quarantine_max_filesize'] = 'Cho phép tối đa kích thước của tập tin để được kiểm dịch. Tập tin mà lớn hơn giá trị quy định sẽ KHÔNG được kiểm dịch. Tùy chọn này là rất quan trọng như là một phương tiện làm cho nó khó khăn hơn cho bất kỳ kẻ tấn công tiềm năng lũ kiểm dịch của bạn với các dữ liệu không mong muốn, có khả năng gây ra việc sử dụng quá mức dữ liệu trên dịch vụ kho lưu trữ của bạn. Mặc định = 2MB.'; -$phpMussel['lang']['config_general_quarantine_max_usage'] = 'Cho phép tối đa sử dụng bộ nhớ cho kiểm dịch. Nếu tổng số sử dụng bộ nhớ bởi các kiểm dịch đạt giá trị này, các tập tin trong kiểm dịch cho dài nhất sẽ bị xóa cho đến khi các tổng bộ nhớ sử dụng không còn đạt giá trị này. Tùy chọn này là rất quan trọng như là một phương tiện làm cho nó khó khăn hơn cho bất kỳ kẻ tấn công tiềm năng lũ kiểm dịch của bạn với các dữ liệu không mong muốn, có khả năng gây ra việc sử dụng quá mức dữ liệu trên dịch vụ kho lưu trữ của bạn. Mặc định = 64MB.'; -$phpMussel['lang']['config_general_scan_cache_expiry'] = 'Trong bao lâu phpMussel nên nhớ đệm kết quả quét? Giá trị là số giây để nhớ đệm các kết quả quét cho. Mặc định là 21600 giây (6 giờ); Giá trị 0 sẽ vô hiệu hóa bộ nhớ đệm kết quả quét.'; -$phpMussel['lang']['config_general_scan_kills'] = 'Tên của tập tin để ghi lại tất cả hồ sơ của bị chặn hay bị giết tải lên. Chỉ định một tên tập tin, hoặc để trống để vô hiệu hóa.'; -$phpMussel['lang']['config_general_scan_log'] = 'Tên của tập tin để ghi lại tất cả các kết quả quét. Chỉ định một tên tập tin, hoặc để trống để vô hiệu hóa.'; -$phpMussel['lang']['config_general_scan_log_serialized'] = 'Tên của tập tin để ghi lại tất cả các kết quả quét (sử dụng một định dạng tuần tự). Chỉ định một tên tập tin, hoặc để trống để vô hiệu hóa.'; -$phpMussel['lang']['config_general_statistics'] = 'Giám sát thống kê sử dụng phpMussel? True = Vâng; False = Không [Mặc định].'; -$phpMussel['lang']['config_general_timeFormat'] = 'Định dạng ngày tháng sử dụng bởi phpMussel. Các tùy chọn bổ sung có thể được bổ sung theo yêu cầu.'; -$phpMussel['lang']['config_general_timeOffset'] = 'Múi giờ bù đắp trong phút.'; -$phpMussel['lang']['config_general_timezone'] = 'Múi giờ của bạn.'; -$phpMussel['lang']['config_general_truncate'] = 'Dọn dẹp các bản ghi khi họ được một kích thước nhất định? Giá trị là kích thước tối đa bằng B/KB/MB/GB/TB mà một tập tin bản ghi có thể tăng lên trước khi bị dọn dẹp. Giá trị mặc định 0KB sẽ vô hiệu hoá dọn dẹp (các bản ghi có thể tăng lên vô hạn). Lưu ý: Áp dụng cho tập tin riêng biệt! Kích thước tập tin bản ghi không được coi là tập thể.'; -$phpMussel['lang']['config_heuristic_threshold'] = 'Có một số chữ ký của phpMussel mà được dự định để xác định đáng ngờ và phẩm chất của các tập tin khả năng độc hại từ đang được tải lên mà không có trong tự xác định các tập tin đang được tải lên cụ thể như là độc hại. Giá trị "threshold" này nói với phpMussel tổng trọng lượng tối đa của đáng ngờ và phẩm chất của các tập tin khả năng độc hại đang được tải lên đó là phép trước những tập tin đang được gắn cờ là độc hại. Định nghĩa về trọng lượng trong bối cảnh này là tổng số đáng ngờ và phẩm chất tiềm ẩn độc hại được xác định. Theo mặc định, giá trị này sẽ được thiết lập để 3. Một giá trị thấp hơn nói chung sẽ cho kết quả trong một sự xuất hiện cao hơn của sai tích cực nhưng một số cao hơn các tập tin độc hại được gắn cờ, trong khi một giá trị cao hơn nói chung sẽ cho kết quả trong một sự xuất hiện thấp hơn của sai tích cực nhưng một số thấp hơn các tập tin độc hại được gắn cờ. Nói chung, nó là tốt nhất để có giá trị này tại mặc định của nó trừ khi bạn đang gặp phải các vấn đề liên quan đến nó.'; -$phpMussel['lang']['config_signatures_Active'] = 'Một danh sách các kích hoạt tập tin chữ ký, giới hạn bởi dấu phẩy.'; -$phpMussel['lang']['config_signatures_detect_adware'] = 'phpMussel nên sử dụng chữ ký cho phát hiện adware? False = Không; True = Vâng [Mặc định].'; -$phpMussel['lang']['config_signatures_detect_deface'] = 'phpMussel nên sử dụng chữ ký cho phát hiện deface và công cụ làm xấu? False = Không; True = Vâng [Mặc định].'; -$phpMussel['lang']['config_signatures_detect_encryption'] = 'phpMussel nên phát hiện và chặn các tập tin mật mã? False = Không; True = Vâng [Mặc định].'; -$phpMussel['lang']['config_signatures_detect_joke_hoax'] = 'phpMussel nên sử dụng chữ ký cho phát hiện câu nói đùa và chơi khăm phần mềm độc hại và vi rút? False = Không; True = Vâng [Mặc định].'; -$phpMussel['lang']['config_signatures_detect_packer_packed'] = 'phpMussel nên sử dụng chữ ký cho phát hiện đóng gói tập tin và dữ liệu đã đóng gói? False = Không; True = Vâng [Mặc định].'; -$phpMussel['lang']['config_signatures_detect_pua_pup'] = 'phpMussel nên sử dụng chữ ký cho phát hiện các PUA/PUP? False = Không; True = Vâng [Mặc định].'; -$phpMussel['lang']['config_signatures_detect_shell'] = 'phpMussel nên sử dụng chữ ký cho phát hiện shell script? False = Không; True = Vâng [Mặc định].'; -$phpMussel['lang']['config_signatures_fail_extensions_silently'] = 'phpMussel nên báo cáo khi mở rộng bị mất? Nếu fail_extensions_silently được vô hiệu hóa, mở rộng bị mất sẽ được báo cáo khi quét, và nếu fail_extensions_silently được kích hoạt, mở rộng bị mất hay bị hỏng sẽ bị bỏ qua, với báo cáo quét cho những tập tin mà không có bất kỳ vấn đề. Vô hiệu hóa tùy chọn này có khả năng có thể làm tăng bảo mật của bạn, nhưng cũng có thể dẫn đến sự gia tăng giả tích cực. False = Không cho phép; True = Cho phép [Mặc định].'; -$phpMussel['lang']['config_signatures_fail_silently'] = 'phpMussel nên báo cáo khi tập tin chữ ký bị mất hay bị hỏng? Nếu fail_silently được vô hiệu hóa, tập tin bị mất hay bị hỏng sẽ được báo cáo khi quét, và nếu fail_silently được kích hoạt, tập tin bị mất hay bị hỏng sẽ bị bỏ qua, với báo cáo quét cho những tập tin mà không có bất kỳ vấn đề. Điều này thường cần được ở một mình trừ khi bạn gặp sự cố hay vấn đề tương tự. False = Không cho phép; True = Cho phép [Mặc định].'; -$phpMussel['lang']['config_template_data_css_url'] = 'Tập tin mẫu thiết kế cho chủ đề tùy chỉnh sử dụng thuộc tính CSS bên ngoài, trong khi các tập tin mẫu thiết kế cho các chủ đề mặc định sử dụng thuộc tính CSS nội bộ. Để hướng dẫn phpMussel để sử dụng các tập tin mẫu thiết kế cho chủ đề tùy chỉnh, xác định các địa chỉ HTTP cho các tập tin CSS chủ đề tùy chỉnh của bạn sử dụng các biến số css_url. Nếu bạn để cho biến số này chỗ trống, phpMussel sẽ sử dụng các tập tin mẫu thiết kế cho các chủ đề mặc định.'; -$phpMussel['lang']['config_template_data_Magnification'] = 'Phóng to chữ. Mặc định = 1.'; -$phpMussel['lang']['config_template_data_theme'] = 'Chủ đề mặc định để sử dụng cho phpMussel.'; -$phpMussel['lang']['config_urlscanner_cache_time'] = 'Kết quả tra cứu API nên được lưu trữ trong (trong giây) bao lâu? Mặc định là 3600 giây (1 giờ).'; -$phpMussel['lang']['config_urlscanner_google_api_key'] = 'Cho phép tra cứu API đến API của Google Safe Browsing khi khóa API cần thiết được xác định.'; -$phpMussel['lang']['config_urlscanner_lookup_hphosts'] = 'Cho phép tra cứu API đến API của hpHosts khi xác định như true.'; -$phpMussel['lang']['config_urlscanner_maximum_api_lookups'] = 'Số lượng tối đa cho phép của tra cứu API để thực hiện mỗi quét lặp cá nhân. Bởi vì mỗi tra cứu API thêm sẽ thêm vào tổng thời gian cần thiết để hoàn thành mỗi quét lặp, bạn có thể muốn để quy định một giới hạn để đẩy nhanh các quá trình quét tổng thể. Khi thiết lập để 0, không số lượng tối đa cho phép sẽ được áp dụng. Đặt 10 theo mặc định.'; -$phpMussel['lang']['config_urlscanner_maximum_api_lookups_response'] = 'Phải làm gì nếu số lượng tối đa cho phép của tra cứu API được vượt quá? False = Không làm gì cả (tiếp tục chế biến) [Mặc định]; True = Dấu/Chặn các tập tin.'; -$phpMussel['lang']['config_virustotal_vt_public_api_key'] = 'Nếu bạn muốn, phpMussel có thể quét tập tin sử dụng các Virus Total API như một cách để cung cấp bảo vệ tăng cường rất nhiều chống lại vi rút, trojan, phần mềm độc hại và các mối đe dọa khác. Theo mặc định, quét của tập tin sử dụng các Virus Total API bị vô hiệu hóa. Để kích hoạt nó, một khóa API từ Virus Total là cần thiết. Do những lợi ích đáng kể rằng điều này có thể cung cấp cho bạn, nó là một cái gì đó mà tôi rất khuyên bạn nên cho phép. Xin hãy lưu ý, tuy nhiên, rằng để sử dụng các Virus Total API, bạn PHẢI đồng ý với điều khoản dịch vụ của họ và bạn PHẢI tuân theo tất cả các hướng dẫn như mô tả của các tài liệu của Virus Total! Bạn KHÔNG được phép để sử dụng tính năng hội nhập này TRỪ KHI: Bạn đã đọc và đồng ý với các Điều khoản và Điều kiện của Virus Total và API của nó. Bạn đã đọc và bạn hiểu, ở mức nhỏ nhất, lời mở đầu của các tài liệu API công cộng của Virus Total (mọi điều sau "VirusTotal Public API v2.0" nhưng trước "Contents").'; -$phpMussel['lang']['config_virustotal_vt_quota_rate'] = 'Theo tài liệu VirusTotal API, nó được giới hạn tối đa là 4 yêu cầu của bất kỳ chất trong bất kỳ khung thời gian 1 phút nào. Nếu bạn chạy một honeyclient, honeypot hay bất kỳ tự động hóa khác sẽ là cung cấp các nguồn lực để VirusTotal và không chỉ sẽ là lấy báo cáo bạn có quyền được một hạn ngạch có yêu cầu cao hơn. Theo mặc định, phpMussel nghiêm sẽ tuân thủ những hạn chế, nhưng do khả năng của các hạn ngạch yêu cầu đang được tăng lên, hai tùy chọn này được cung cấp như một phương tiện để bạn có thể hướng dẫn phpMussel như những gì giới hạn nó phải tuân thủ. Trừ khi bạn đã được hướng dẫn làm như vậy, nó không được khuyến khích cho bạn để tăng các giá trị, nhưng, nếu bạn đã gặp phải vấn đề liên quan đến hạn ngạch của bạn, giảm các giá trị CÓ THỂ đôi khi giúp bạn trong việc đối phó với những vấn đề này. Hạn ngạch yêu cầu của bạn được xác định như vt_quota_rate yêu cầu của bất kỳ chất trong bất kỳ khung thời gian vt_quota_time phút nào.'; -$phpMussel['lang']['config_virustotal_vt_quota_time'] = '(Xem mô tả ở trên).'; -$phpMussel['lang']['config_virustotal_vt_suspicion_level'] = 'Theo mặc định, phpMussel sẽ hạn chế các tập tin nó quét bằng cách sử dụng Virus Total API đến các tập tin mà nó coi như là "đáng ngờ". Bạn có thể tùy chọn điều chỉnh hạn chế này bằng cách thay đổi các giá trị của tùy chọn vt_suspicion_level.'; -$phpMussel['lang']['config_virustotal_vt_weighting'] = 'phpMussel nên áp dụng các kết quả quét từ sử dụng Virus Total API như các phát hiện hoặc như các cân nặng phát hiện? Tùy chọn này tồn tại, bởi vì, mặc dù quét một tập tin sử dụng nhiều công cụ (như Virus Total làm) nên dẫn đến một tỷ lệ phát hiện tăng (và do đó ở một số cao hơn các tập tin độc hại bị bắt), nó cũng có thể dẫn đến một số cao hơn của sai tích cực, và vì thế, trong một số trường hợp, các kết quả quét có thể là tốt hơn sử dụng như một điểm tự tin chứ không phải là một kết luận dứt khoát. Nếu giá trị 0 được sử dụng, các kết quả quét từ sử dụng Virus Total API sẽ được áp dụng như phát hiện, và vì thế, nếu bất kỳ công cụ được sử dụng bởi Virus Total đánh dấu các tập tin được quét như độc hại, phpMussel sẽ cân nhắc các tập tin đến được độc hại. Nếu bất kỳ giá trị nào khác được sử dụng, các kết quả quét từ sử dụng Virus Total API sẽ được áp dụng như cân nặng phát hiện, và vì thế, các số lượng động cơ được sử dụng bởi Virus Total mà đánh dấu các tập tin được quét như được độc hại sẽ phục vụ như là một điểm tin (hay cân nặng phát hiện) cho nếu các tập tin được quét nên được xem như độc hại bởi phpMussel (giá trị sử dụng sẽ đại diện cho số điểm tin cậy hay cân nặng tối thiểu mà là cần thiết để có thể được coi độc hại). Giá trị 0 được sử dụng bởi mặc định.'; -$phpMussel['lang']['Extended Description: phpMussel'] = 'Các gói thầu chính (mà không có các tập tin chữ ký, tài liệu, và cấu hình).'; -$phpMussel['lang']['field_activate'] = 'Kích hoạt'; -$phpMussel['lang']['field_clear_all'] = 'Hủy bỏ tất cả'; -$phpMussel['lang']['field_component'] = 'Thành phần'; -$phpMussel['lang']['field_create_new_account'] = 'Tạo ra tài khoản mới'; -$phpMussel['lang']['field_deactivate'] = 'Vô hiệu hóa'; -$phpMussel['lang']['field_delete_account'] = 'Xóa tài khoản'; -$phpMussel['lang']['field_delete_all'] = 'Xóa bỏ tất cả'; -$phpMussel['lang']['field_delete_file'] = 'Xóa bỏ'; -$phpMussel['lang']['field_download_file'] = 'Tải về'; -$phpMussel['lang']['field_edit_file'] = 'Chỉnh sửa'; -$phpMussel['lang']['field_false'] = 'False (Sai)'; -$phpMussel['lang']['field_file'] = 'Tập Tin'; -$phpMussel['lang']['field_filename'] = 'Tên tập tin: '; -$phpMussel['lang']['field_filetype_directory'] = 'Thư Mục'; -$phpMussel['lang']['field_filetype_info'] = 'Tập Tin {EXT}'; -$phpMussel['lang']['field_filetype_unknown'] = 'Không Xác Định'; -$phpMussel['lang']['field_install'] = 'Cài đặt'; -$phpMussel['lang']['field_latest_version'] = 'Phiên bản mới nhất'; -$phpMussel['lang']['field_log_in'] = 'Đăng Nhập'; -$phpMussel['lang']['field_more_fields'] = 'Thêm Lĩnh Vực'; -$phpMussel['lang']['field_new_name'] = 'Tên mới:'; -$phpMussel['lang']['field_ok'] = 'OK'; -$phpMussel['lang']['field_options'] = 'Tùy Chọn'; -$phpMussel['lang']['field_password'] = 'Mật Khẩu'; -$phpMussel['lang']['field_permissions'] = 'Quyền'; -$phpMussel['lang']['field_quarantine_key'] = 'Khóa kiểm dịch'; -$phpMussel['lang']['field_rename_file'] = 'Đổi tên'; -$phpMussel['lang']['field_reset'] = 'Thiết Lập Lại'; -$phpMussel['lang']['field_restore_file'] = 'Khôi phục'; -$phpMussel['lang']['field_set_new_password'] = 'Đặt mật khẩu mới'; -$phpMussel['lang']['field_size'] = 'Kích thước tổng: '; -$phpMussel['lang']['field_size_bytes'] = 'byte'; -$phpMussel['lang']['field_size_GB'] = 'GB'; -$phpMussel['lang']['field_size_KB'] = 'KB'; -$phpMussel['lang']['field_size_MB'] = 'MB'; -$phpMussel['lang']['field_size_TB'] = 'TB'; -$phpMussel['lang']['field_status'] = 'Tình Trạng'; -$phpMussel['lang']['field_system_timezone'] = 'Sử dụng múi giờ mặc định của hệ thống.'; -$phpMussel['lang']['field_true'] = 'True (Đúng)'; -$phpMussel['lang']['field_uninstall'] = 'Gỡ bỏ cài đặt'; -$phpMussel['lang']['field_update'] = 'Cập nhật'; -$phpMussel['lang']['field_update_all'] = 'Cập nhật tất cả'; -$phpMussel['lang']['field_upload_file'] = 'Tải lên tập tin mới'; -$phpMussel['lang']['field_username'] = 'Tên Người Dùng'; -$phpMussel['lang']['field_your_version'] = 'Phiên bản của bạn'; -$phpMussel['lang']['header_login'] = 'Vui lòng đăng nhập để tiếp tục.'; -$phpMussel['lang']['label_active_config_file'] = 'Tập tin cấu hình kích hoạt: '; -$phpMussel['lang']['label_blocked'] = 'Tải lên bị chặn'; -$phpMussel['lang']['label_branch'] = 'Chi nhánh ổn định mới nhất:'; -$phpMussel['lang']['label_events'] = 'Sự kiện quét'; -$phpMussel['lang']['label_flagged'] = 'Đối tượng bị gắn cờ'; -$phpMussel['lang']['label_fmgr_cache_data'] = 'Dữ liệu bộ nhớ cache và các tập tin tạm thời'; -$phpMussel['lang']['label_fmgr_disk_usage'] = 'Số lượng sử dụng đĩa bởi phpMussel: '; -$phpMussel['lang']['label_fmgr_free_space'] = 'Không gian đĩa có sẵn: '; -$phpMussel['lang']['label_fmgr_total_disk_usage'] = 'Số lượng sử dụng đĩa trong tổng số: '; -$phpMussel['lang']['label_fmgr_total_space'] = 'Số lượng không gian đĩa trong tổng số: '; -$phpMussel['lang']['label_fmgr_updates_metadata'] = 'Siêu dữ liệu cho cập nhật thành phần'; -$phpMussel['lang']['label_hide'] = 'Che giấu'; -$phpMussel['lang']['label_os'] = 'Hệ điều hành đang được dùng:'; -$phpMussel['lang']['label_other'] = 'Khác'; -$phpMussel['lang']['label_other-Active'] = 'Tập tin chữ ký kích hoạt'; -$phpMussel['lang']['label_other-Since'] = 'Ngày bắt đầu'; -$phpMussel['lang']['label_php'] = 'Phiên bản PHP đang được dùng:'; -$phpMussel['lang']['label_phpmussel'] = 'Phiên bản phpMussel đang được dùng:'; -$phpMussel['lang']['label_quarantined'] = 'Tải lên trong kiểm dịch'; -$phpMussel['lang']['label_sapi'] = 'SAPI đang được dùng:'; -$phpMussel['lang']['label_scanned_objects'] = 'Đối tượng được quét'; -$phpMussel['lang']['label_scanned_uploads'] = 'Tải lên được quét'; -$phpMussel['lang']['label_show'] = 'Hiển thị'; -$phpMussel['lang']['label_size_in_quarantine'] = 'Kích thước trong kiểm dịch: '; -$phpMussel['lang']['label_stable'] = 'Ổn định mới nhất:'; -$phpMussel['lang']['label_sysinfo'] = 'Thông tin hệ thống:'; -$phpMussel['lang']['label_tests'] = 'Kiểm tra:'; -$phpMussel['lang']['label_unstable'] = 'Không ổn định mới nhất:'; -$phpMussel['lang']['label_upload_date'] = 'Ngày tải lên: '; -$phpMussel['lang']['label_upload_hash'] = 'Băm tải lên: '; -$phpMussel['lang']['label_upload_origin'] = 'Nguồn gốc tải lên: '; -$phpMussel['lang']['label_upload_size'] = 'Kích thước tải lên: '; -$phpMussel['lang']['link_accounts'] = 'Tài Khoản'; -$phpMussel['lang']['link_config'] = 'Cấu Hình'; -$phpMussel['lang']['link_documentation'] = 'Tài liệu'; -$phpMussel['lang']['link_file_manager'] = 'Quản lý tập tin'; -$phpMussel['lang']['link_home'] = 'Trang Chủ'; -$phpMussel['lang']['link_logs'] = 'Bản Ghi'; -$phpMussel['lang']['link_quarantine'] = 'Kiểm dịch'; -$phpMussel['lang']['link_statistics'] = 'Số liệu thống kê'; -$phpMussel['lang']['link_textmode'] = 'Định dạng văn bản: Đơn giảnĐẹp'; -$phpMussel['lang']['link_updates'] = 'Cập Nhật'; -$phpMussel['lang']['link_upload_test'] = 'Kiểm tra tải lên'; -$phpMussel['lang']['logs_logfile_doesnt_exist'] = 'Bản ghi đã chọn không tồn tại!'; -$phpMussel['lang']['logs_no_logfiles_available'] = 'Không có bản ghi có sẵn.'; -$phpMussel['lang']['logs_no_logfile_selected'] = 'Không có bản ghi được chọn.'; -$phpMussel['lang']['max_login_attempts_exceeded'] = 'Số lượng tối đa cố gắng đăng nhập đã bị vượt quá; Truy cập bị từ chối.'; -$phpMussel['lang']['previewer_days'] = 'Ngày'; -$phpMussel['lang']['previewer_hours'] = 'Giờ'; -$phpMussel['lang']['previewer_minutes'] = 'Phút'; -$phpMussel['lang']['previewer_months'] = 'Tháng'; -$phpMussel['lang']['previewer_seconds'] = 'Giây'; -$phpMussel['lang']['previewer_weeks'] = 'Tuần'; -$phpMussel['lang']['previewer_years'] = 'Năm'; -$phpMussel['lang']['response_accounts_already_exists'] = 'Một tài khoản với tên người dùng này đã tồn tại!'; -$phpMussel['lang']['response_accounts_created'] = 'Tài khoản tạo ra thành công!'; -$phpMussel['lang']['response_accounts_deleted'] = 'Tài khoản xóa thành công!'; -$phpMussel['lang']['response_accounts_doesnt_exist'] = 'Tài khoản này không tồn tại.'; -$phpMussel['lang']['response_accounts_password_updated'] = 'Mật khẩu cập nhật thành công!'; -$phpMussel['lang']['response_activated'] = 'Kích hoạt thành công.'; -$phpMussel['lang']['response_activation_failed'] = 'Không thể kích hoạt!'; -$phpMussel['lang']['response_checksum_error'] = 'Kiểm tra lỗi! Tập tin bị từ chối!'; -$phpMussel['lang']['response_component_successfully_installed'] = 'Thành phần cài đặt thành công.'; -$phpMussel['lang']['response_component_successfully_uninstalled'] = 'Thành phần gỡ bỏ cài đặt thành công.'; -$phpMussel['lang']['response_component_successfully_updated'] = 'Thành phần cập nhật thành công.'; -$phpMussel['lang']['response_component_uninstall_error'] = 'Có lỗi xảy ra trong khi cố gắng để gỡ bỏ cài đặt thành phần.'; -$phpMussel['lang']['response_configuration_updated'] = 'Cấu hình cập nhật thành công.'; -$phpMussel['lang']['response_deactivated'] = 'Vô hiệu hóa thành công.'; -$phpMussel['lang']['response_deactivation_failed'] = 'Không thể vô hiệu hóa!'; -$phpMussel['lang']['response_delete_error'] = 'Không thể xóa!'; -$phpMussel['lang']['response_directory_deleted'] = 'Thư mục xóa thành công!'; -$phpMussel['lang']['response_directory_renamed'] = 'Đổi tên thư mục thành công!'; -$phpMussel['lang']['response_error'] = 'Lỗi'; -$phpMussel['lang']['response_failed_to_install'] = 'Cài đặt không thành công!'; -$phpMussel['lang']['response_failed_to_update'] = 'Cập nhật không thành công!'; -$phpMussel['lang']['response_file_deleted'] = 'Tập tin xóa thành công!'; -$phpMussel['lang']['response_file_edited'] = 'Tập tin sửa đổi thành công!'; -$phpMussel['lang']['response_file_renamed'] = 'Đổi tên tập tin thành công!'; -$phpMussel['lang']['response_file_restored'] = 'Tập tin khôi phục thành công!'; -$phpMussel['lang']['response_file_uploaded'] = 'Tập tin tải lên thành công!'; -$phpMussel['lang']['response_login_invalid_password'] = 'Thất bại đăng nhập! Mật khẩu không hợp lệ!'; -$phpMussel['lang']['response_login_invalid_username'] = 'Thất bại đăng nhập! Tên người dùng không tồn tại!'; -$phpMussel['lang']['response_login_password_field_empty'] = 'Mật khẩu là trống!'; -$phpMussel['lang']['response_login_username_field_empty'] = 'Tên người dùng là trống!'; -$phpMussel['lang']['response_rename_error'] = 'Không thể đổi tên!'; -$phpMussel['lang']['response_restore_error_1'] = 'Không thể khôi phục! Tập tin bị hỏng!'; -$phpMussel['lang']['response_restore_error_2'] = 'Không thể khôi phục! Khóa kiểm dịch sai rồi!'; -$phpMussel['lang']['response_statistics_cleared'] = 'Thống kê đã được xóa.'; -$phpMussel['lang']['response_updates_already_up_to_date'] = 'Đã cập nhật.'; -$phpMussel['lang']['response_updates_not_installed'] = 'Gói không được cài đặt!'; -$phpMussel['lang']['response_updates_not_installed_php'] = 'Gói không được cài đặt (đòi hỏi PHP {V})!'; -$phpMussel['lang']['response_updates_outdated'] = 'Hết hạn!'; -$phpMussel['lang']['response_updates_outdated_manually'] = 'Hết hạn (vui lòng cập nhật bằng tay)!'; -$phpMussel['lang']['response_updates_outdated_php_version'] = 'Hết hạn (đòi hỏi PHP {V})!'; -$phpMussel['lang']['response_updates_unable_to_determine'] = 'Không thể xác định.'; -$phpMussel['lang']['response_upload_error'] = 'Không thể tải lên!'; -$phpMussel['lang']['state_complete_access'] = 'Truy cập đầy đủ'; -$phpMussel['lang']['state_component_is_active'] = 'Thành phần này đang kích hoạt.'; -$phpMussel['lang']['state_component_is_inactive'] = 'Thành phần này đang vô hiệu hóa.'; -$phpMussel['lang']['state_component_is_provisional'] = 'Thành phần này đang thỉnh thoảng hoạt động.'; -$phpMussel['lang']['state_default_password'] = 'Cảnh báo: Nó là sử dụng mật khẩu mặc định!'; -$phpMussel['lang']['state_logged_in'] = 'Được đăng nhập.'; -$phpMussel['lang']['state_logs_access_only'] = 'Bản ghi truy cập chỉ'; -$phpMussel['lang']['state_maintenance_mode'] = 'Cảnh báo: Đã bật chế độ bảo trì!'; -$phpMussel['lang']['state_password_not_valid'] = 'Cảnh báo: Tài khoản này không được sử dụng một mật khẩu hợp lệ!'; -$phpMussel['lang']['state_quarantine'] = 'Kiểm dịch hiện có %s tập tin.'; -$phpMussel['lang']['switch-hide-non-outdated-set-false'] = 'Đừng ẩn các không hết hạn'; -$phpMussel['lang']['switch-hide-non-outdated-set-true'] = 'Ẩn các không hết hạn'; -$phpMussel['lang']['switch-hide-unused-set-false'] = 'Đừng ẩn các không cài đặt'; -$phpMussel['lang']['switch-hide-unused-set-true'] = 'Ẩn các không cài đặt'; -$phpMussel['lang']['tip_accounts'] = 'Xin chào, {username}.
        Trang tài khoản cho phép bạn kiểm soát những người có thể truy cập các front-end phpMussel.'; -$phpMussel['lang']['tip_config'] = 'Xin chào, {username}.
        Trang cấu hình cho phép bạn chỉnh sửa các cấu hình phpMussel từ các front-end.'; -$phpMussel['lang']['tip_donate'] = 'phpMussel được cung cấp miễn phí, nhưng nếu bạn muốn đóng góp cho dự án, bạn có thể làm như vậy bằng cách nhấn vào nút tặng.'; -$phpMussel['lang']['tip_file_manager'] = 'Xin chào, {username}.
        Quản lý tập tin cho phép bạn xóa bỏ, chỉnh sửa, tải lên, và tải về các tập tin. Sử dụng thận trọng (bạn có thể phá vỡ cài đặt của bạn với điều này).'; -$phpMussel['lang']['tip_home'] = 'Xin chào, {username}.
        Đây là trang chủ cho các front-end phpMussel. Chọn một liên kết từ thực đơn bên trái để tiếp tục.'; -$phpMussel['lang']['tip_login'] = 'Tên người dùng mặc định: admin – Mật khẩu mặc định: password'; -$phpMussel['lang']['tip_logs'] = 'Xin chào, {username}.
        Chọn một bản ghi từ danh sách dưới đây để xem nội dung của bản ghi này.'; -$phpMussel['lang']['tip_quarantine'] = 'Xin chào, {username}.
        Trang này liệt kê tất cả các tập tin hiện đang được trong kiểm dịch và tạo thuận lợi cho việc quản lý các tập tin đó.'; -$phpMussel['lang']['tip_quarantine_disabled'] = 'Lưu ý: Kiểm dịch hiện đang bị tắt, nhưng có thể được kích hoạt thông qua trang cấu hình.'; -$phpMussel['lang']['tip_see_the_documentation'] = 'Xem tài liệu để biết thông tin về các chỉ thị cấu hình khác nhau và mục đích của họ.'; -$phpMussel['lang']['tip_statistics'] = 'Xin chào, {username}.
        Trang này cho thấy một số thống kê của sử dụng cơ bản liên quan đến cài đặt phpMussel của bạn.'; -$phpMussel['lang']['tip_statistics_disabled'] = 'Lưu ý: Giám sát thống kê hiện bị vô hiệu hóa, nhưng có thể được kích hoạt thông qua trang cấu hình.'; -$phpMussel['lang']['tip_updates'] = 'Xin chào, {username}.
        Trang cập nhật cho phép bạn cài đặt, gỡ bỏ cài đặt, và cập nhật các gói khác nhau cho phpMussel (các gói cốt lõi, chữ ký, bổ sung, các tập tin L10N, vv).'; -$phpMussel['lang']['tip_upload_test'] = 'Xin chào, {username}.
        Trang kiểm tra tải lên chứa một hình thức tải lên tập tin chuẩn, mà cho phép bạn để kiểm tra liệu một tập tin sẽ thường bị chặn bởi phpMussel khi cố gắng để tải nó lên.'; -$phpMussel['lang']['title_accounts'] = 'phpMussel – Tài khoản'; -$phpMussel['lang']['title_config'] = 'phpMussel – Cấu hình'; -$phpMussel['lang']['title_file_manager'] = 'phpMussel – Quản lý tập tin'; -$phpMussel['lang']['title_home'] = 'phpMussel – Trang Chủ'; -$phpMussel['lang']['title_login'] = 'phpMussel – Đăng nhập'; -$phpMussel['lang']['title_logs'] = 'phpMussel – Bản ghi'; -$phpMussel['lang']['title_quarantine'] = 'phpMussel – Kiểm dịch'; -$phpMussel['lang']['title_statistics'] = 'phpMussel – Số liệu thống kê'; -$phpMussel['lang']['title_updates'] = 'phpMussel – Cập nhật'; -$phpMussel['lang']['title_upload_test'] = 'phpMussel – Kiểm tra tải lên'; -$phpMussel['lang']['warning'] = 'Cảnh báo:'; -$phpMussel['lang']['warning_php_1'] = 'Phiên bản PHP của bạn không được hỗ trợ tích cực nữa! Đang cập nhật được khuyến khích!'; -$phpMussel['lang']['warning_php_2'] = 'Phiên bản PHP của bạn rất dễ bị tổn thương! Đang cập nhật được khuyến khích mạnh mẽ!'; -$phpMussel['lang']['warning_signatures_1'] = 'Không có tập tin chữ ký nào đang hoạt động!'; - -$phpMussel['lang']['info_some_useful_links'] = 'Một số liên kết hữu ích:
          -
        • Vấn đề cho phpMussel @ GitHub – Trang các vấn đề cho phpMussel (hỗ trợ, vv).
        • -
        • phpMussel @ Spambot Security – Diễn đàn thảo luận cho phpMussel (hỗ trợ, vv).
        • -
        • phpMussel @ SourceForge – Tải về gương thay thế cho phpMussel.
        • -
        • WebSecTools.com – Một bộ sưu tập các công cụ quản trị trang web đơn giản để bảo vệ các trang web.
        • -
        • ClamavNet – Trang chủ cho ClamAV (ClamAV® là một công cụ chống vi rút mã nguồn mở để phát hiện trojan, vi rút, phần mềm độc hại và các mối đe dọa nguy hiểm khác).
        • -
        • SecuriteInfo.com – Công ty bảo mật máy tính mã cung cấp chữ ký bổ sung cho ClamAV.
        • -
        • PhishTank – Cơ sở dữ liệu lừa đảo sử dụng bởi các máy quét URL phpMussel.
        • -
        • Global PHP Group @ Facebook – PHP tài nguyên học tập và thảo luận.
        • -
        • PHP.earth – PHP tài nguyên học tập và thảo luận.
        • -
        • VirusTotal – VirusTotal là một dịch vụ miễn phí để phân tích các tập tin và URL đó là đáng ngờ.
        • -
        • Hybrid Analysis – Hybrid Analysis là một dịch vụ miễn phí để phân tích phần mềm độc hại được cung cấp bởi Payload Security.
        • -
        • Malwarebytes – Máy tính chống phần mềm độc hại chuyên gia.
        • -
        • MalwareTips – Diễn đàn thảo luận hữu ích tập trung vào phần mềm độc hại.
        • -
        • Danh sách dễ bị tổn thương – Liệt kê các phiên bản an toàn và không an toàn của các gói khác nhau (PHP, HHVM, vv).
        • -
        • Danh sách tương thích – Liệt kê thông tin tương thích cho các gói khác nhau (CIDRAM, phpMussel, vv).
        • -
        '; diff --git a/libraries/plugins/phpMussel/vault/lang/lang.vi.php b/libraries/plugins/phpMussel/vault/lang/lang.vi.php deleted file mode 100644 index fd6eec5..0000000 --- a/libraries/plugins/phpMussel/vault/lang/lang.vi.php +++ /dev/null @@ -1,127 +0,0 @@ -主頁 | 登出'; -$phpMussel['lang']['bNav_logout'] = '登出'; -$phpMussel['lang']['config_attack_specific_archive_file_extensions'] = '認可存檔文件擴展(格式是CSV;應該只添加或去掉當問題發生;不必要的去掉可能的可以導致假陽性出現為存檔文件,​而不必要的增加將實質上白名單任何事您增加從專用攻擊檢測;修改有慎重;還請注這個無影響在什麼存檔可以和不能被分析在內容級)。​這個名單,​作為是作為標準,​名單那些格式使用最常見的橫過多數的系統和CMS,​但有意是不全面。'; -$phpMussel['lang']['config_attack_specific_block_control_characters'] = '受阻任何文件包含任何控製字符嗎(以外換行符)?​([\x00-\x08\x0b\x0c\x0e\x1f\x7f]) 如果您只上傳純文本,​您可以激活這個指令以提供某些另外保護在您的系統。​然而,​如果您上傳任何事以外純文本,​激活這個可能結果在假陽性。​False(假)=不受阻【默認】; True(真)=受阻。'; -$phpMussel['lang']['config_attack_specific_chameleon_from_exe'] = '尋找可執行頭在文件是不可執行文件也不認可存檔文件和尋找可執行文件誰的頭是不正確。​False(假)=是關閉; True(真)=是激活。'; -$phpMussel['lang']['config_attack_specific_chameleon_from_php'] = '尋找PHP頭在文件是不PHP文件也不認可存檔文件。​False(假)=是關閉; True(真)=是激活。'; -$phpMussel['lang']['config_attack_specific_chameleon_to_archive'] = '尋找存檔文件誰的頭是不正確(已支持:BZ,​GZ,​RAR,​ZIP,​RAR,​GZ)。​False(假)=是關閉; True(真)=是激活。'; -$phpMussel['lang']['config_attack_specific_chameleon_to_doc'] = '尋找辦公文檔誰的頭是不正確(已支持:DOC,​DOT,​PPS,​PPT,​XLA,​XLS,​WIZ)。​False(假)=是關閉; True(真)=是激活。'; -$phpMussel['lang']['config_attack_specific_chameleon_to_img'] = '尋找圖像誰的頭是不正確(已支持:BMP,​DIB,​PNG,​GIF,​JPEG,​JPG,​XCF,​PSD,​PDD,​WEBP)。​False(假)=是關閉; True(真)=是激活。'; -$phpMussel['lang']['config_attack_specific_chameleon_to_pdf'] = '尋找PDF文件誰的頭是不正確。​False(假)=是關閉; True(真)=是激活。'; -$phpMussel['lang']['config_attack_specific_corrupted_exe'] = '損壞文件和處理錯誤。​False(假)=忽略; True(真)=受阻【默認】。​檢測和受阻潛在的損壞移植可執行【PE】文件嗎?​時常(但不始終),​當某些零件的一個移植可執行【PE】文件是損壞或不能被正確處理,​它可以建議建議的一個病毒感染。​過程使用通過最殺毒程序以檢測病毒在PE文件需要處理那些文件在某些方式,​哪裡,​如果程序員的一個病毒是意識的,​將特別嘗試防止,​以允許他們的病毒留不檢測。'; -$phpMussel['lang']['config_attack_specific_decode_threshold'] = '在原始數據中解碼命令的長度限制(如果有任何引人注目性能問題當掃描)。​默認 = 512KB。​零或空值將關閉門檻(去除任何這樣的限基於文件大小)。'; -$phpMussel['lang']['config_attack_specific_scannable_threshold'] = '原始數據讀取和掃描的最大長度(如果有任何引人注目性能問題當掃描)。​默認 = 32MB。​零或空值將關閉門檻。​按說,​這個數值應不會少於平均文件大小的文件上傳您想和期待收到您的服務器或網站,​應不會多於filesize_limit指令,​和應不會多於大致五分之一的總允許內存分配獲授PHP通過"php.ini"配置文件。​這個指令存在為嘗試防止phpMussel從用的太多內存(這個將防止它從能夠順利掃描文件以上的一個特別文件大小)。'; -$phpMussel['lang']['config_compatibility_ignore_upload_errors'] = '這個指令按說應會關閉除非它是需要為對功能的phpMussel在您的具體系統。​按說,​當是關閉,​當phpMussel檢測存在元素在$_FILES數組,​它將嘗試引發一個掃描的文件代表通過那些元素,​和,​如果他們是空或空白,​phpMussel將回報一個錯誤信息。​這個是正確行為為phpMussel。​然而,​為某些CMS,​空元素在$_FILES可以發生因之的自然的行為的那些CMS,​或錯誤可能會報告當沒有任何,​在這種情況,​正常行為為phpMussel將會使乾擾為正常行為的那些CMS。​如果這樣的一個情況發生為您,​激活這個指令將指示phpMussel不嘗試引發掃描為這樣的空元素,​忽略他們當發現和不回報任何關聯錯誤信息,​從而允許延續的頁面請求。​False(假)=不忽略; True(真)=忽略。'; -$phpMussel['lang']['config_compatibility_only_allow_images'] = '如果您只期待或只意味到允許圖像被上傳在您的系統或CMS,​和如果您絕對不需要任何文件以外圖像被上傳在您的系統或CMS,​這個指令應會激活,​但其他應會關閉。​如果這個指令是激活,​它將指示phpMussel受阻而不例外任何上傳確定為非圖像文件,​而不掃描他們。​這個可能減少處理時間和內存使用為非圖像文件上傳嘗試。​False(假)=還允許其他文件; True(真)=只允許圖像文件。'; -$phpMussel['lang']['config_files_block_encrypted_archives'] = '檢測和受阻加密的存檔嗎?​因為phpMussel是不能夠掃描加密的存檔內容,​它是可能存檔加密可能的可以使用通過一個攻擊者作為一種手段嘗試繞過phpMussel,​殺毒掃描儀和其他這樣的保護。​指示phpMussel受阻任何存檔它發現被加密可能的可以幫助減少任何風險有關聯這些可能性。​False(假)=不受阻; True(真)=受阻【默認】。'; -$phpMussel['lang']['config_files_check_archives'] = '嘗試匹配存檔內容嗎?​False(假)=不匹配; True(真)=匹配【默認】。​目前,​只BZ/BZIP2,​GZ/GZIP,​LZF,​PHAR,​TAR和ZIP文件格式是支持(匹配的RAR,​CAB,​7z和等等不還支持)。​這個是不完美!​雖說我很推薦保持這個激活,​我不能保證它將始終發現一切。​還,​請注意存檔匹配目前是不遞歸為PHAR或ZIP格式。'; -$phpMussel['lang']['config_files_filesize_archives'] = '繼承文件大小黑名單/白名單在存檔內容嗎?​False(假)=不繼承(剛灰名單一切); True(真)=繼承【默認】。'; -$phpMussel['lang']['config_files_filesize_limit'] = '文件大小限在KB。​65536 = 64MB【默認】,​0 = 沒有限(始終灰名單),​任何正數值接受。​這個可以有用當您的PHP配置限內存量一個進程可以佔據或如果您的PHP配置限文件大小的上傳。'; -$phpMussel['lang']['config_files_filesize_response'] = '如何處理文件超過文件大小限(如果存在)。​False(假)=白名單; True(真)=黑名單【默認】。'; -$phpMussel['lang']['config_files_filetype_archives'] = '繼承文件類型黑名單/白名單在存檔內容嗎?​False(假)=不繼承(剛灰名單一切); True(真)=繼承【默認】。'; -$phpMussel['lang']['config_files_filetype_blacklist'] = '黑名單:'; -$phpMussel['lang']['config_files_filetype_greylist'] = '灰名單:'; -$phpMussel['lang']['config_files_filetype_whitelist'] = '如果您的系統只允許具體文件類型被上傳,​或如果您的系統明確地否認某些文件類型,​指定那些文件類型在白名單,​黑名單和灰名單可以增加掃描執行速度通過允許腳本跳過某些文件類型。​格式是CSV(逗號分隔變量)。​如果您想掃描一切,​而不是白名單,​黑名單或灰名單,​留變量空;這樣做將關閉白名單/黑名單/灰名單。​進程邏輯順序是:如果文件類型已白名單,​不掃描和不受阻文件,​和不匹配文件對照黑名單或灰名單。​如果文件類型已黑名單,​不掃描文件但阻止它無論如何,​和不匹配文件對照灰名單。​如果灰名單是空,​或如果灰名單不空和文件類型已灰名單,​掃描文件像正常和確定如果阻止它基於掃描結果,​但如果灰名單不空和文件類型不灰名單,​過程文件彷彿已黑名單,​因此不掃描它但阻止它無論如何。​白名單:'; -$phpMussel['lang']['config_files_max_recursion'] = '最大存檔遞歸深度限。​默認=10。'; -$phpMussel['lang']['config_files_max_uploads'] = '最大允許數值的文件為掃描當文件上傳掃描之前中止掃描和告訴用戶他們是上傳太多在同一時間!​提供保護針對一個理論攻擊哪裡一個攻擊者嘗試DDoS您的系統或CMS通過超載phpMussel以減速PHP進程到一個停止。​推薦:10。​您可能想增加或減少這個數值,​根據速度的您的硬件。​注意這個數值不交待為或包括存檔內容。'; -$phpMussel['lang']['config_general_cleanup'] = '【反設置/刪除/清潔】腳本變量和緩存【Cache】之後執行嗎?​如果您不使用腳本外初始上傳掃描,​應該設置True【真/正】,​為了最小化內存使用。​如果您使用腳本為目的外初始上傳掃描,​應該設置False【假/負】,​為了避免不必要重新加載複製數據在內存。​在一般的做法,​它應該設置True【真/正】,​但,​如果您做這樣,​您將不能夠使用腳本為任何目的以外文件上傳掃描。​無影響在CLI模式。'; -$phpMussel['lang']['config_general_default_algo'] = '定義要用於所有未來密碼和會話的算法。​選項:​​PASSWORD_DEFAULT(標準),​PASSWORD_BCRYPT,​PASSWORD_ARGON2I(需要PHP >= 7.2.0)。'; -$phpMussel['lang']['config_general_delete_on_sight'] = '激活的這個指令將指示腳本馬上刪除任何掃描文件上傳匹配任何檢測標準,​是否通過簽名或任何事其他。​文件已確定是清潔將會忽略。​如果是存檔,​全存檔將會刪除,​不管如果違規文件是只有一個的幾個文件包含在存檔。​為文件上傳掃描,​按說,​它不必要為您激活這個指令,​因為按說,​PHP將自動清洗內容的它的緩存當執行是完,​意思它將按說刪除任何文件上傳從它向服務器如果不已移動,​複製或刪除。​這個指令是添加這里為額外安全為任何人誰的PHP副本可能不始終表現在預期方式。​False【假/負】:之後掃描,​忽略文件【標準】,​True【真/正】:之後掃描,​如果不清潔,​馬上刪除。'; -$phpMussel['lang']['config_general_disable_cli'] = '關閉CLI模式嗎?​CLI模式是按說激活作為標準,​但可以有時干擾某些測試工具(例如PHPUnit,​為例子)和其他基於CLI應用。​如果您沒有需要關閉CLI模式,​您應該忽略這個指令。​False(假)=激活CLI模式【標準】; True(真)=關閉CLI模式。'; -$phpMussel['lang']['config_general_disable_frontend'] = '關閉前端訪問嗎?​前端訪問可以使phpMussel更易於管理,​但也可能是潛在的安全風險。​建議管理phpMussel通過後端只要有可能,​但前端訪問提供當不可能。​保持關閉除非您需要它。​False(假)=激活前端訪問; True(真)=關閉前端訪問【標準】。'; -$phpMussel['lang']['config_general_disable_webfonts'] = '關閉網絡字體嗎?​True(真)=關閉; False(假)=不關閉【標準】。'; -$phpMussel['lang']['config_general_enable_plugins'] = '啟用phpMussel插件支持嗎?​False(假)=不要啟用; True(真)=要啟用【標準】。'; -$phpMussel['lang']['config_general_forbid_on_block'] = 'phpMussel應該發送403頭隨著文件上傳受阻信息,​或堅持標準200 OK?​False(假)=發送200; True(真)=發送403【標準】。'; -$phpMussel['lang']['config_general_FrontEndLog'] = '前端登錄嘗試的錄音文件。​指定一個文件名,​或留空以禁用。'; -$phpMussel['lang']['config_general_honeypot_mode'] = '當這個指令(蜜罐模式)是激活,​phpMussel將嘗試檢疫所有文件上傳它遇到,​無論的如果文件上傳是匹配任何包括簽名,​和沒有掃描或分析的那些文件上傳將發生。​這個功能應有用為那些想使用的phpMussel為目的病毒或惡意軟件研究,​但它是不推薦激活這個功能如果預期的用的phpMussel通過用戶是為標準文件上傳掃描,​也不推薦使用蜜罐功能為目的以外蜜罐。​作為標準,​這個指令是關閉。​False(假)=是關閉【標準】; True(真)=是激活。'; -$phpMussel['lang']['config_general_ipaddr'] = '在哪裡可以找到連接請求IP地址?​(可以使用為服務例如Cloudflare和類似)標準是REMOTE_ADDR。​警告!​不要修改此除非您知道什麼您做著!'; -$phpMussel['lang']['config_general_lang'] = '指定標準phpMussel語言。'; -$phpMussel['lang']['config_general_maintenance_mode'] = '啟用維護模式?​True(真)=關閉;​False(假)=不關閉【標準】。​它停用一切以外前端。​有時候在更新CMS,框架,等時有用。'; -$phpMussel['lang']['config_general_max_login_attempts'] = '最大登錄嘗試次數(前端)。​標準=5。'; -$phpMussel['lang']['config_general_numbers'] = '您如何喜歡顯示數字?​選擇最適合示例。'; -$phpMussel['lang']['config_general_quarantine_key'] = 'phpMussel可以檢疫壞文件上傳在隔離在phpMussel的安全/保險庫【Vault】,​如果這個是某物您想。​普通用戶的phpMussel簡單地想保護他們的網站或宿主環境無任何興趣在深深分析任何嘗試文件上傳應該離開這個功能關閉,​但任何用戶有興趣在更深分析的嘗試文件上傳為目的惡意軟件研究或為類似這樣事情應該激活這個功能。​檢疫的嘗試文件上傳可以有時還助攻在調試假陽性,​如果這個是某物經常發生為您。​以關閉檢疫功能,​簡單地離開quarantine_key指令空白,​或抹去內容的這個指令如果它不已空白。​以激活隔離功能,​輸入一些值在這個指令。​quarantine_key是一個重要安全功能的隔離功能需要以預防檢疫功能從成為利用通過潛在攻擊者和以預防任何潛在執行的數據存儲在檢疫。​quarantine_key應該被處理在同樣方法作為您的密碼:更長是更好,​和緊緊保護它。​為獲得最佳效果,​在結合使用delete_on_sight。'; -$phpMussel['lang']['config_general_quarantine_max_filesize'] = '最大允許文件大小為文件在檢疫。​文件大於這個指定數值將不成為檢疫。​這個指令是重要為使它更難為任何潛在攻擊者洪水您的檢疫用非通緝數據潛在的造成過度數據用法在您的虛擬主機服務。​標準 = 2MB。'; -$phpMussel['lang']['config_general_quarantine_max_usage'] = '最大內存使用允許為檢疫。​如果總內存已用通過隔離到達這個數值,​最老檢疫文件將會刪除直到總內存已用不再到達這個數值。​這個指令是重要為使它更難為任何潛在攻擊者洪水您的檢疫用非通緝數據潛在的造成過度數據用法在您的虛擬主機服務。​數值是在KB。​標準 = 64MB。'; -$phpMussel['lang']['config_general_scan_cache_expiry'] = '多長時間應該phpMussel維持掃描結果?​數值是秒數為維持掃描結果。​標準是21600秒(6小時); 一個0數值將停止維持掃描結果。'; -$phpMussel['lang']['config_general_scan_kills'] = '文件為記錄在所有受阻或已殺上傳。​指定一個文件名,​或留空以關閉。'; -$phpMussel['lang']['config_general_scan_log'] = '文件為記錄在所有掃描結果。​指定一個文件名,​或留空以關閉。'; -$phpMussel['lang']['config_general_scan_log_serialized'] = '文件為記錄在所有掃描結果(它採用序列化格式)。​指定一個文件名,​或留空以關閉。'; -$phpMussel['lang']['config_general_statistics'] = '跟踪phpMussel使用情況統計?​True(真)=跟踪; False(假)=不跟踪【標準】。'; -$phpMussel['lang']['config_general_timeFormat'] = 'phpMussel使用的日期符號格式。​可根據要求增加附加選項。'; -$phpMussel['lang']['config_general_timeOffset'] = '時區偏移量(分鐘)。'; -$phpMussel['lang']['config_general_timezone'] = '您的時區。'; -$phpMussel['lang']['config_general_truncate'] = '截斷日誌文件當他們達到一定的大小嗎?​值是在B/KB/MB/GB/TB,​是日誌文件允許的最大大小直到它被截斷。​默認值為『0KB』將禁用截斷(日誌文件可以無限成長)。​注意:適用於單個日誌文件!​日誌文件大小不被算集體的。'; -$phpMussel['lang']['config_heuristic_threshold'] = '有某些簽名的phpMussel意味為確定可疑和可能惡意文件零件被上傳有不在他們自己確定那些文件被上傳特別是作為惡意。​這個『threshold』數值告訴phpMussel什麼是最大總重量的可疑和潛在惡意文件零件被上傳允許之前那些文件是被識別作為惡意。​定義的重量在這個上下文是總數值的可疑和可能惡意文件零件確定。​作為默認,​這個數值將會設置作為3。​一個較低的值通常將結果在一個更高的發生的假陽性但一個更高的發生的惡意文件被確定,​而一個更高的數值將通常結果在一個較低的發生的假陽性但一個較低的數值的惡意文件被確定。​它是通常最好忽略這個數值除非您遇到關聯問題。'; -$phpMussel['lang']['config_signatures_Active'] = '活性簽名文件的列表,​以逗號分隔。'; -$phpMussel['lang']['config_signatures_detect_adware'] = 'phpMussel應該使用簽名為廣告軟件檢測嗎?​False(假)=不檢查,​True(真)=檢查【默認】。'; -$phpMussel['lang']['config_signatures_detect_deface'] = 'phpMussel應該使用簽名為污損的污損軟件檢測嗎?​False(假)=不檢查,​True(真)=檢查【默認】。'; -$phpMussel['lang']['config_signatures_detect_encryption'] = 'phpMussel應該檢測並阻止加密的文件嗎?​False(假)=不檢查,​True(真)=檢查【默認】。'; -$phpMussel['lang']['config_signatures_detect_joke_hoax'] = 'phpMussel應該使用簽名為病毒/惡意軟件笑話/惡作劇檢測嗎?​False(假)=不檢查,​True(真)=檢查【默認】。'; -$phpMussel['lang']['config_signatures_detect_packer_packed'] = 'phpMussel應該使用簽名為打包機和打包數據檢測嗎?​False(假)=不檢查,​True(真)=檢查【默認】。'; -$phpMussel['lang']['config_signatures_detect_pua_pup'] = 'phpMussel應該使用簽名為PUP/PUA(可能無用/非通緝程序/軟件)檢測嗎?​False(假)=不檢查,​True(真)=檢查【默認】。'; -$phpMussel['lang']['config_signatures_detect_shell'] = 'phpMussel應該使用簽名為webshell腳本檢測嗎?​False(假)=不檢查,​True(真)=檢查【默認】。'; -$phpMussel['lang']['config_signatures_fail_extensions_silently'] = 'phpMussel應該報告當擴展是失踪嗎?​如果fail_extensions_silently是關閉,​失踪擴展將會報告當掃描,​和如果fail_extensions_silently是激活,​失踪擴展將會忽略,​有掃描報告為那些文件哪裡沒有任何問題。​關閉的這個指令可能的可以增加您的安全,​但可能還導致一個增加的假陽性。​False(假)=是關閉; True(真)=是激活【默認】。'; -$phpMussel['lang']['config_signatures_fail_silently'] = 'phpMussel應該報告當簽名文件是失踪或損壞嗎?​如果fail_silently是關閉,​失踪和損壞文件將會報告當掃描,​和如果fail_silently是激活,​失踪和損壞文件將會忽略,​有掃描報告為那些文件哪裡沒有問題。​這個應該按說被留下除非您遇到失敗或有其他類似問題。​False(假)=是關閉; True(真)=是激活【默認】。'; -$phpMussel['lang']['config_template_data_css_url'] = '模板文件為個性化主題使用外部CSS屬性,​而模板文件為t標準主題使用內部CSS屬性。​以指示phpMussel使用模板文件為個性化主題,​指定公共HTTP地址的您的個性化主題的CSS文件使用css_url變量。​如果您離開這個變量空白,​phpMussel將使用模板文件為默認主題。'; -$phpMussel['lang']['config_template_data_Magnification'] = '字體放大。​標準 = 1。'; -$phpMussel['lang']['config_template_data_theme'] = '用於phpMussel的默認主題。'; -$phpMussel['lang']['config_urlscanner_cache_time'] = '多長時間(以秒為單位)應API結果被緩存?​默認是3600秒(1小時)。'; -$phpMussel['lang']['config_urlscanner_google_api_key'] = '激活Google Safe Browsing API當API密鑰是設置。'; -$phpMussel['lang']['config_urlscanner_lookup_hphosts'] = '激活hpHosts API當設置true。'; -$phpMussel['lang']['config_urlscanner_maximum_api_lookups'] = '最大數值API請求來執行每個掃描迭代。​額外API請求將增加的總要求完成時間每掃描迭代,​所以,​您可能想來規定一個限以加快全掃描過程。​當設置0,​沒有最大數值將會應用的。​設置10作為默認。'; -$phpMussel['lang']['config_urlscanner_maximum_api_lookups_response'] = '該什麼辦如果最大數值API請求已超過?​False(假)=沒做任何事(繼續處理)【默認】; True(真)=標誌/受阻文件。'; -$phpMussel['lang']['config_virustotal_vt_public_api_key'] = '可選的,​phpMussel可以掃描文件使用【Virus Total API】作為一個方法提供一個顯著的改善保護級別針對病毒,​木馬,​惡意軟件和其他威脅。​作為默認,​掃描文件使用【Virus Total API】是關閉。​以激活它,​一個API密鑰從VirusTotal是需要。​因為的顯著好處這個可以提供為您,​它是某物我很推薦激活。​請注意,​然而,​以使用的【Virus Total API】,​您必須同意他們的服務條款和您必須堅持所有方針按照說明通過VirusTotal閱讀材料!​您是不允許使用這個積分功能除非:您已閱讀和您同意服務條款的VirusTotal和它的API。​您已閱讀和您了解至少序言的VirusTotal公共API閱讀材料(一切之後『VirusTotal Public API v2.0』但之前『Contents』)。'; -$phpMussel['lang']['config_virustotal_vt_quota_rate'] = '根據【Virus Total API】閱讀材料,​它是限於最大的4請求的任何類型在任何1分鐘大致時間。​如果您經營一個『honeyclient』,​蜜罐或任何其他自動化將會提供資源為VirusTotal和不只取回報告您是有權一個更高請求率配額。​作為標準,​phpMussel將嚴格的堅持這些限制,​但因為可能性的這些率配額被增加,​這些二指令是提供為您指示phpMussel為什麼限它應堅持。​除非您是指示這樣做,​它是不推薦為您增加這些數值,​但,​如果您遇到問題相關的到達您的率配額,​減少這些數值可能有時幫助您解析這些問題。​您的率限是決定作為vt_quota_rate請求的任何類型在任何vt_quota_time分鐘大致時間。'; -$phpMussel['lang']['config_virustotal_vt_quota_time'] = '(見上面的說明)。'; -$phpMussel['lang']['config_virustotal_vt_suspicion_level'] = '作為標準,​phpMussel將限制什麼文件它掃描通過使用【Virus Total API】為那些文件它考慮作為『可疑』。​您可以可選調整這個局限性通過修改的vt_suspicion_level指令數值。'; -$phpMussel['lang']['config_virustotal_vt_weighting'] = 'phpMussel應使用掃描結果使用【Virus Total API】作為檢測或作為檢測重量嗎?​這個指令存在,​因為,​雖說掃描一個文件使用多AV引擎(例如怎麼樣VirusTotal做) 應結果有一個增加檢測率(和因此在一個更惡意文件被抓),​它可以還結果有更假陽性,​和因此,​為某些情況,​掃描結果可能被更好使用作為一個置信得分而不是作為一個明確結論。​如果一個數值的0是使用,​掃描結果使用【Virus Total API】將會適用作為檢測,​和因此,​如果任何AV引擎使用通過VirusTotal標致文件被掃描作為惡意,​phpMussel將考慮文件作為惡意。​如果任何其他數值是使用,​掃描結果使用【Virus Total API】將會適用作為檢測重量,​和因此,​數的AV引擎使用通過VirusTotal標致文件被掃描作為惡意將服務作為一個置信得分(或檢測重量) 為如果文件被掃描應會考慮惡意通過phpMussel(數值使用將代表最低限度的置信得分或重量需要以被考慮惡意)。​一個數值的0是使用作為標準。'; -$phpMussel['lang']['Extended Description: phpMussel'] = '主包(沒有簽名文件,文檔,和配置)。'; -$phpMussel['lang']['field_activate'] = '啟用'; -$phpMussel['lang']['field_clear_all'] = '撤銷所有'; -$phpMussel['lang']['field_component'] = '組件'; -$phpMussel['lang']['field_create_new_account'] = '創建新賬戶'; -$phpMussel['lang']['field_deactivate'] = '停用'; -$phpMussel['lang']['field_delete_account'] = '刪除賬戶'; -$phpMussel['lang']['field_delete_all'] = '刪除所有'; -$phpMussel['lang']['field_delete_file'] = '刪除'; -$phpMussel['lang']['field_download_file'] = '下載'; -$phpMussel['lang']['field_edit_file'] = '編輯'; -$phpMussel['lang']['field_false'] = 'False(假)'; -$phpMussel['lang']['field_file'] = '文件'; -$phpMussel['lang']['field_filename'] = '文件名:'; -$phpMussel['lang']['field_filetype_directory'] = '文件夾'; -$phpMussel['lang']['field_filetype_info'] = '{EXT}文件'; -$phpMussel['lang']['field_filetype_unknown'] = '未知'; -$phpMussel['lang']['field_install'] = '安裝'; -$phpMussel['lang']['field_latest_version'] = '最新版本'; -$phpMussel['lang']['field_log_in'] = '登錄'; -$phpMussel['lang']['field_more_fields'] = '更多字段'; -$phpMussel['lang']['field_new_name'] = '新名稱:'; -$phpMussel['lang']['field_ok'] = 'OK'; -$phpMussel['lang']['field_options'] = '選項'; -$phpMussel['lang']['field_password'] = '密碼'; -$phpMussel['lang']['field_permissions'] = '權限'; -$phpMussel['lang']['field_quarantine_key'] = '隔離鑰匙'; -$phpMussel['lang']['field_rename_file'] = '改名'; -$phpMussel['lang']['field_reset'] = '重啟'; -$phpMussel['lang']['field_restore_file'] = '恢復'; -$phpMussel['lang']['field_set_new_password'] = '保存新密碼'; -$phpMussel['lang']['field_size'] = '總大小:'; -$phpMussel['lang']['field_size_bytes'] = '字節'; -$phpMussel['lang']['field_size_GB'] = 'GB'; -$phpMussel['lang']['field_size_KB'] = 'KB'; -$phpMussel['lang']['field_size_MB'] = 'MB'; -$phpMussel['lang']['field_size_TB'] = 'TB'; -$phpMussel['lang']['field_status'] = '狀態'; -$phpMussel['lang']['field_system_timezone'] = '使用系統默認時區。'; -$phpMussel['lang']['field_true'] = 'True(真)'; -$phpMussel['lang']['field_uninstall'] = '卸載'; -$phpMussel['lang']['field_update'] = '更新'; -$phpMussel['lang']['field_update_all'] = '更新一切'; -$phpMussel['lang']['field_upload_file'] = '上傳新文件'; -$phpMussel['lang']['field_username'] = '用戶名'; -$phpMussel['lang']['field_your_version'] = '您的版本'; -$phpMussel['lang']['header_login'] = '請登錄以繼續。'; -$phpMussel['lang']['label_active_config_file'] = '活動配置文件:'; -$phpMussel['lang']['label_blocked'] = '上傳已阻止'; -$phpMussel['lang']['label_branch'] = '分支最新穩定:'; -$phpMussel['lang']['label_events'] = '掃描事件'; -$phpMussel['lang']['label_flagged'] = '對像已標記'; -$phpMussel['lang']['label_fmgr_cache_data'] = '緩存數據和臨時文件'; -$phpMussel['lang']['label_fmgr_disk_usage'] = 'phpMussel使用的磁盤空間: '; -$phpMussel['lang']['label_fmgr_free_space'] = '可用磁盤空間: '; -$phpMussel['lang']['label_fmgr_total_disk_usage'] = '總共使用的磁盤空間: '; -$phpMussel['lang']['label_fmgr_total_space'] = '總磁盤空間: '; -$phpMussel['lang']['label_fmgr_updates_metadata'] = '組件更新元數據'; -$phpMussel['lang']['label_hide'] = '隱藏'; -$phpMussel['lang']['label_os'] = '目前使用操作系統:'; -$phpMussel['lang']['label_other'] = '其他'; -$phpMussel['lang']['label_other-Active'] = '活動簽名文件'; -$phpMussel['lang']['label_other-Since'] = '開始日期'; -$phpMussel['lang']['label_php'] = '目前使用PHP版本:'; -$phpMussel['lang']['label_phpmussel'] = '目前使用phpMussel版本:'; -$phpMussel['lang']['label_quarantined'] = '上傳已隔離'; -$phpMussel['lang']['label_sapi'] = '目前使用SAPI:'; -$phpMussel['lang']['label_scanned_objects'] = '對像已掃描'; -$phpMussel['lang']['label_scanned_uploads'] = '上傳已掃描'; -$phpMussel['lang']['label_show'] = '顯示'; -$phpMussel['lang']['label_size_in_quarantine'] = '大小在檢疫:'; -$phpMussel['lang']['label_stable'] = '最新穩定:'; -$phpMussel['lang']['label_sysinfo'] = '系統信息:'; -$phpMussel['lang']['label_tests'] = '測試:'; -$phpMussel['lang']['label_unstable'] = '最新不穩定:'; -$phpMussel['lang']['label_upload_date'] = '上傳日期:'; -$phpMussel['lang']['label_upload_hash'] = '上傳哈希:'; -$phpMussel['lang']['label_upload_origin'] = '上傳原點:'; -$phpMussel['lang']['label_upload_size'] = '上傳大小:'; -$phpMussel['lang']['link_accounts'] = '賬戶'; -$phpMussel['lang']['link_config'] = '配置'; -$phpMussel['lang']['link_documentation'] = '文檔'; -$phpMussel['lang']['link_file_manager'] = '文件管理器'; -$phpMussel['lang']['link_home'] = '主頁'; -$phpMussel['lang']['link_logs'] = '日誌'; -$phpMussel['lang']['link_quarantine'] = '隔離'; -$phpMussel['lang']['link_statistics'] = '統計'; -$phpMussel['lang']['link_textmode'] = '文字格式: 簡單漂亮'; -$phpMussel['lang']['link_updates'] = '更新'; -$phpMussel['lang']['link_upload_test'] = '上傳測試'; -$phpMussel['lang']['logs_logfile_doesnt_exist'] = '選擇的日誌不存在!'; -$phpMussel['lang']['logs_no_logfiles_available'] = '沒有日誌可用。'; -$phpMussel['lang']['logs_no_logfile_selected'] = '沒有選擇的日誌。'; -$phpMussel['lang']['max_login_attempts_exceeded'] = '最大登錄嘗試次數已經超過;拒絕訪問。'; -$phpMussel['lang']['previewer_days'] = '天'; -$phpMussel['lang']['previewer_hours'] = '小時'; -$phpMussel['lang']['previewer_minutes'] = '分'; -$phpMussel['lang']['previewer_months'] = '月'; -$phpMussel['lang']['previewer_seconds'] = '秒'; -$phpMussel['lang']['previewer_weeks'] = '週'; -$phpMussel['lang']['previewer_years'] = '年'; -$phpMussel['lang']['response_accounts_already_exists'] = '一個賬戶與那個用戶名已經存在!'; -$phpMussel['lang']['response_accounts_created'] = '帳戶成功創建!'; -$phpMussel['lang']['response_accounts_deleted'] = '帳戶成功刪除!'; -$phpMussel['lang']['response_accounts_doesnt_exist'] = '那個帳戶不存在。'; -$phpMussel['lang']['response_accounts_password_updated'] = '密碼成功更新!'; -$phpMussel['lang']['response_activated'] = '已成功啟用。'; -$phpMussel['lang']['response_activation_failed'] = '無法啟用!'; -$phpMussel['lang']['response_checksum_error'] = '校驗和錯誤!​文件拒絕!'; -$phpMussel['lang']['response_component_successfully_installed'] = '組件成功安裝。'; -$phpMussel['lang']['response_component_successfully_uninstalled'] = '組件成功卸載。'; -$phpMussel['lang']['response_component_successfully_updated'] = '組件成功更新。'; -$phpMussel['lang']['response_component_uninstall_error'] = '一個錯誤發生當嘗試卸載組件。'; -$phpMussel['lang']['response_configuration_updated'] = '配置成功更新。'; -$phpMussel['lang']['response_deactivated'] = '已成功停用。'; -$phpMussel['lang']['response_deactivation_failed'] = '無法停用!'; -$phpMussel['lang']['response_delete_error'] = '無法刪除!'; -$phpMussel['lang']['response_directory_deleted'] = '文件夾成功刪除!'; -$phpMussel['lang']['response_directory_renamed'] = '文件夾成功改名!'; -$phpMussel['lang']['response_error'] = '錯誤'; -$phpMussel['lang']['response_failed_to_install'] = '無法安裝!'; -$phpMussel['lang']['response_failed_to_update'] = '無法更新!'; -$phpMussel['lang']['response_file_deleted'] = '文件成功刪除!'; -$phpMussel['lang']['response_file_edited'] = '文件成功改性!'; -$phpMussel['lang']['response_file_renamed'] = '文件成功改名!'; -$phpMussel['lang']['response_file_restored'] = '文件成功恢復!'; -$phpMussel['lang']['response_file_uploaded'] = '文件成功上傳!'; -$phpMussel['lang']['response_login_invalid_password'] = '登錄失敗!​密碼無效!'; -$phpMussel['lang']['response_login_invalid_username'] = '登錄失敗!​用戶名不存在!'; -$phpMussel['lang']['response_login_password_field_empty'] = '密碼輸入是空的!'; -$phpMussel['lang']['response_login_username_field_empty'] = '用戶名輸入是空的!'; -$phpMussel['lang']['response_rename_error'] = '無法改名!'; -$phpMussel['lang']['response_restore_error_1'] = '無法恢復!損壞的文件!'; -$phpMussel['lang']['response_restore_error_2'] = '無法恢復!不正確的隔離鑰匙!'; -$phpMussel['lang']['response_statistics_cleared'] = '統計刪除。'; -$phpMussel['lang']['response_updates_already_up_to_date'] = '已經更新。'; -$phpMussel['lang']['response_updates_not_installed'] = '組件不安裝!'; -$phpMussel['lang']['response_updates_not_installed_php'] = '組件不安裝(它需要PHP {V})!'; -$phpMussel['lang']['response_updates_outdated'] = '過時!'; -$phpMussel['lang']['response_updates_outdated_manually'] = '過時(請更新手動)!'; -$phpMussel['lang']['response_updates_outdated_php_version'] = '過時(它需要PHP {V})!'; -$phpMussel['lang']['response_updates_unable_to_determine'] = '無法確定。'; -$phpMussel['lang']['response_upload_error'] = '無法上傳!'; -$phpMussel['lang']['state_complete_access'] = '完全訪問'; -$phpMussel['lang']['state_component_is_active'] = '組件是活性。'; -$phpMussel['lang']['state_component_is_inactive'] = '組件是非活性。'; -$phpMussel['lang']['state_component_is_provisional'] = '組件是有時活性。'; -$phpMussel['lang']['state_default_password'] = '警告:它使用標準密碼!'; -$phpMussel['lang']['state_logged_in'] = '目前在線。'; -$phpMussel['lang']['state_logs_access_only'] = '僅日誌訪問'; -$phpMussel['lang']['state_maintenance_mode'] = '警告:維護模式是啟用!'; -$phpMussel['lang']['state_password_not_valid'] = '警告:此帳戶不​使用有效的密碼!'; -$phpMussel['lang']['state_quarantine'] = '目前有%s個文件在隔離區。'; -$phpMussel['lang']['switch-hide-non-outdated-set-false'] = '不要隱藏非過時'; -$phpMussel['lang']['switch-hide-non-outdated-set-true'] = '隱藏非過時'; -$phpMussel['lang']['switch-hide-unused-set-false'] = '不要隱藏非用過'; -$phpMussel['lang']['switch-hide-unused-set-true'] = '隱藏非用過'; -$phpMussel['lang']['tip_accounts'] = '你好,​{username}。​
        賬戶頁面允許您控制誰可以訪問phpMussel前端。'; -$phpMussel['lang']['tip_config'] = '你好,​{username}。​
        配置頁面允許您修改phpMussel配置從前端。'; -$phpMussel['lang']['tip_donate'] = 'phpMussel是免費提供的,​但如果您想捐贈給項目,​您可以通過點擊捐贈按鈕這樣做。'; -$phpMussel['lang']['tip_file_manager'] = '你好,​{username}。​
        文件管理器允許您刪除,​編輯,​上傳和下載文件。​小心使用(您可以用這個破壞您的安裝)。'; -$phpMussel['lang']['tip_home'] = '你好,​{username}。​
        這是phpMussel的前端主頁。​從左側的導航菜單中選擇一個鏈接以繼續。'; -$phpMussel['lang']['tip_login'] = '標準用戶名:admin – 標準密碼:password'; -$phpMussel['lang']['tip_logs'] = '你好,​{username}。​
        選擇一個日誌從下面的列表以查看那個日誌的內容。'; -$phpMussel['lang']['tip_quarantine'] = '你好,​{username}。​
        此頁面列出當前在隔離中的所有文件,並可以用來管理這些文件。'; -$phpMussel['lang']['tip_quarantine_disabled'] = '注意:隔離目前禁用,但可以通過配置頁面啟用。'; -$phpMussel['lang']['tip_see_the_documentation'] = '請參閱文檔以獲取有關各種配置指令的信息和他們的目的。'; -$phpMussel['lang']['tip_statistics'] = '你好,​{username}。​
        此頁面顯示了有關phpMussel安裝的一些基本使用統計信息。'; -$phpMussel['lang']['tip_statistics_disabled'] = '注意:統計跟踪目前已被禁用,但可以通過配置頁面啟用。'; -$phpMussel['lang']['tip_updates'] = '你好,​{username}。​
        更新頁面允許您安裝,​卸載,​和更新phpMussel的各種組件(核心包,​簽名,​插件,​L10N文件,​等等)。'; -$phpMussel['lang']['tip_upload_test'] = '你好,​{username}。​
        上傳測試頁麵包含標准文件上傳表單,​允許您測試是否文件通常會被阻止通過phpMussel當嘗試上傳他們。'; -$phpMussel['lang']['title_accounts'] = 'phpMussel – 帳戶'; -$phpMussel['lang']['title_config'] = 'phpMussel – 配置'; -$phpMussel['lang']['title_file_manager'] = 'phpMussel – 文件管理器'; -$phpMussel['lang']['title_home'] = 'phpMussel – 主頁'; -$phpMussel['lang']['title_login'] = 'phpMussel – 登錄'; -$phpMussel['lang']['title_logs'] = 'phpMussel – 日誌'; -$phpMussel['lang']['title_quarantine'] = 'phpMussel – 隔離'; -$phpMussel['lang']['title_statistics'] = 'phpMussel – 統計'; -$phpMussel['lang']['title_updates'] = 'phpMussel – 更新'; -$phpMussel['lang']['title_upload_test'] = 'phpMussel – 上傳測試'; -$phpMussel['lang']['warning'] = '警告:'; -$phpMussel['lang']['warning_php_1'] = '您的PHP版本不再被積極支持!​推薦更新!'; -$phpMussel['lang']['warning_php_2'] = '您的PHP版本非常脆弱!​強烈推薦更新!'; -$phpMussel['lang']['warning_signatures_1'] = '沒有簽名文件是活動的!'; - -$phpMussel['lang']['info_some_useful_links'] = '一些有用的链接:'; diff --git a/libraries/plugins/phpMussel/vault/lang/lang.zh.fe.php b/libraries/plugins/phpMussel/vault/lang/lang.zh.fe.php deleted file mode 100644 index 9f52cc8..0000000 --- a/libraries/plugins/phpMussel/vault/lang/lang.zh.fe.php +++ /dev/null @@ -1,302 +0,0 @@ -主页 | 登出'; -$phpMussel['lang']['bNav_logout'] = '登出'; -$phpMussel['lang']['config_attack_specific_archive_file_extensions'] = '认可存档文件扩展(格式是CSV;应该只添加或去掉当问题发生;不必要的去掉可能的可以导致假阳性出现为存档文件,​而不必要的增加将实质上白名单任何事您增加从专用攻击检测;修改有慎重;还请注这个无影响在什么存档可以和不能被分析在内容级)。​这个名单,​作为是作为标准,​名单那些格式使用最常见的横过多数的系统和CMS,​但有意是不全面。'; -$phpMussel['lang']['config_attack_specific_block_control_characters'] = '受阻任何文件包含任何控制字符吗(以外换行符)?​([\x00-\x08\x0b\x0c\x0e\x1f\x7f]) 如果您只上传纯文本,​您可以激活这个指令以提供某些另外保护在您的系统。​然而,​如果您上传任何事以外纯文本,​激活这个可能结果在假阳性。​False(假)=不受阻【默认】; True(真)=受阻。'; -$phpMussel['lang']['config_attack_specific_chameleon_from_exe'] = '寻找可执行头在文件是不可执行文件也不认可存档文件和寻找可执行文件谁的头是不正确。​False(假)=是关闭; True(真)=是激活。'; -$phpMussel['lang']['config_attack_specific_chameleon_from_php'] = '寻找PHP头在文件是不PHP文件也不认可存档文件。​False(假)=是关闭; True(真)=是激活。'; -$phpMussel['lang']['config_attack_specific_chameleon_to_archive'] = '寻找存档文件谁的头是不正确(已支持:BZ,​GZ,​RAR,​ZIP,​RAR,​GZ)。​False(假)=是关闭; True(真)=是激活。'; -$phpMussel['lang']['config_attack_specific_chameleon_to_doc'] = '寻找办公文档谁的头是不正确(已支持:DOC,​DOT,​PPS,​PPT,​XLA,​XLS,​WIZ)。​False(假)=是关闭; True(真)=是激活。'; -$phpMussel['lang']['config_attack_specific_chameleon_to_img'] = '寻找图像谁的头是不正确(已支持:BMP,​DIB,​PNG,​GIF,​JPEG,​JPG,​XCF,​PSD,​PDD,​WEBP)。​False(假)=是关闭; True(真)=是激活。'; -$phpMussel['lang']['config_attack_specific_chameleon_to_pdf'] = '寻找PDF文件谁的头是不正确。​False(假)=是关闭; True(真)=是激活。'; -$phpMussel['lang']['config_attack_specific_corrupted_exe'] = '损坏文件和处理错误。​False(假)=忽略; True(真)=受阻【默认】。​检测和受阻潜在的损坏移植可执行【PE】文件吗?​时常(但不始终),​当某些零件的一个移植可执行【PE】文件是损坏或不能被正确处理,​它可以建议建议的一个病毒感染。​过程使用通过最杀毒程序以检测病毒在PE文件需要处理那些文件在某些方式,​哪里,​如果程序员的一个病毒是意识的,​将特别尝试防止,​以允许他们的病毒留不检测。'; -$phpMussel['lang']['config_attack_specific_decode_threshold'] = '在原始数据中解码命令的长度限制(如果有任何引人注目性能问题当扫描)。​默认 = 512KB。​零或空值将关闭门槛(去除任何这样的限基于文件大小)。'; -$phpMussel['lang']['config_attack_specific_scannable_threshold'] = '原始数据读取和扫描的最大长度(如果有任何引人注目性能问题当扫描)。​默认 = 32MB。​零或空值将关闭门槛。​按说,​这个数值应不会少于平均文件大小的文件上传您想和期待收到您的服务器或网站,​应不会多于filesize_limit指令,​和应不会多于大致五分之一的总允许内存分配获授PHP通过"php.ini"配置文件。​这个指令存在为尝试防止phpMussel从用的太多内存(这个将防止它从能够顺利扫描文件以上的一个特别文件大小)。'; -$phpMussel['lang']['config_compatibility_ignore_upload_errors'] = '这个指令按说应会关闭除非它是需要为对功能的phpMussel在您的具体系统。​按说,​当是关闭,​当phpMussel检测存在元素在$_FILES数组,​它将尝试引发一个扫描的文件代表通过那些元素,​和,​如果他们是空或空白,​phpMussel将回报一个错误信息。​这个是正确行为为phpMussel。​然而,​为某些CMS,​空元素在$_FILES可以发生因之的自然的行为的那些CMS,​或错误可能会报告当没有任何,​在这种情况,​正常行为为phpMussel将会使干扰为正常行为的那些CMS。​如果这样的一个情况发生为您,​激活这个指令将指示phpMussel不尝试引发扫描为这样的空元素,​忽略他们当发现和不回报任何关联错误信息,​从而允许延续的页面请求。​False(假)=不忽略; True(真)=忽略。'; -$phpMussel['lang']['config_compatibility_only_allow_images'] = '如果您只期待或只意味到允许图像被上传在您的系统或CMS,​和如果您绝对不需要任何文件以外图像被上传在您的系统或CMS,​这个指令应会激活,​但其他应会关闭。​如果这个指令是激活,​它将指示phpMussel受阻而不例外任何上传确定为非图像文件,​而不扫描他们。​这个可能减少处理时间和内存使用为非图像文件上传尝试。​False(假)=还允许其他文件; True(真)=只允许图像文件。'; -$phpMussel['lang']['config_files_block_encrypted_archives'] = '检测和受阻加密的存档吗?​因为phpMussel是不能够扫描加密的存档内容,​它是可能存档加密可能的可以使用通过一个攻击者作为一种手段尝试绕过phpMussel,​杀毒扫描仪和其他这样的保护。​指示phpMussel受阻任何存档它发现被加密可能的可以帮助减少任何风险有关联这些可能性。​False(假)=不受阻; True(真)=受阻【默认】。'; -$phpMussel['lang']['config_files_check_archives'] = '尝试匹配存档内容吗?​False(假)=不匹配; True(真)=匹配【默认】。​目前,​只BZ/BZIP2,​GZ/GZIP,​LZF,​PHAR,​TAR和ZIP文件格式是支持(匹配的RAR,​CAB,​7z和等等不还支持)。​这个是不完美!​虽说我很推荐保持这个激活,​我不能保证它将始终发现一切。​还,​请注意存档匹配目前是不递归为PHAR或ZIP格式。'; -$phpMussel['lang']['config_files_filesize_archives'] = '继承文件大小黑名单/白名单在存档内容吗?​False(假)=不继承(刚灰名单一切); True(真)=继承【默认】。'; -$phpMussel['lang']['config_files_filesize_limit'] = '文件大小限在KB。​65536 = 64MB【默认】,​0 = 没有限(始终灰名单),​任何正数值接受。​这个可以有用当您的PHP配置限内存量一个进程可以占据或如果您的PHP配置限文件大小的上传。'; -$phpMussel['lang']['config_files_filesize_response'] = '如何处理文件超过文件大小限(如果存在)。​False(假)=白名单; True(真)=黑名单【默认】。'; -$phpMussel['lang']['config_files_filetype_archives'] = '继承文件类型黑名单/白名单在存档内容吗?​False(假)=不继承(刚灰名单一切); True(真)=继承【默认】。'; -$phpMussel['lang']['config_files_filetype_blacklist'] = '黑名单:'; -$phpMussel['lang']['config_files_filetype_greylist'] = '灰名单:'; -$phpMussel['lang']['config_files_filetype_whitelist'] = '如果您的系统只允许具体文件类型被上传,​或如果您的系统明确地否认某些文件类型,​指定那些文件类型在白名单,​黑名单和灰名单可以增加扫描执行速度通过允许脚本跳过某些文件类型。​格式是CSV(逗号分隔变量)。​如果您想扫描一切,​而不是白名单,​黑名单或灰名单,​留变量空;这样做将关闭白名单/黑名单/灰名单。​进程逻辑顺序是:如果文件类型已白名单,​不扫描和不受阻文件,​和不匹配文件对照黑名单或灰名单。​如果文件类型已黑名单,​不扫描文件但阻止它无论如何,​和不匹配文件对照灰名单。​如果灰名单是空,​或如果灰名单不空和文件类型已灰名单,​扫描文件像正常和确定如果阻止它基于扫描结果,​但如果灰名单不空和文件类型不灰名单,​过程文件仿佛已黑名单,​因此不扫描它但阻止它无论如何。​白名单:'; -$phpMussel['lang']['config_files_max_recursion'] = '最大存档递归深度限。​默认=10。'; -$phpMussel['lang']['config_files_max_uploads'] = '最大允许数值的文件为扫描当文件上传扫描之前中止扫描和告诉用户他们是上传太多在同一时间!​提供保护针对一个理论攻击哪里一个攻击者尝试DDoS您的系统或CMS通过超载phpMussel以减速PHP进程到一个停止。​推荐:10。​您可能想增加或减少这个数值,​根据速度的您的硬件。​注意这个数值不交待为或包括存档内容。'; -$phpMussel['lang']['config_general_cleanup'] = '【反设置/删除/清洁】脚本变量和缓存【Cache】之后执行吗?​如果您不使用脚本外初始上传扫描,​应该设置True【真/正】,​为了最小化内存使用。​如果您使用脚本为目的外初始上传扫描,​应该设置False【假/负】,​为了避免不必要重新加载复制数据在内存。​在一般的做法,​它应该设置True【真/正】,​但,​如果您做这样,​您将不能够使用脚本为任何目的以外文件上传扫描。​无影响在CLI模式。'; -$phpMussel['lang']['config_general_default_algo'] = '定义要用于所有未来密码和会话的算法。​选项:​​PASSWORD_DEFAULT(标准),​PASSWORD_BCRYPT,​PASSWORD_ARGON2I(需要PHP >= 7.2.0)。'; -$phpMussel['lang']['config_general_delete_on_sight'] = '激活的这个指令将指示脚本马上删除任何扫描文件上传匹配任何检测标准,​是否通过签名或任何事其他。​文件已确定是清洁将会忽略。​如果是存档,​全存档将会删除,​不管如果违规文件是只有一个的几个文件包含在存档。​为文件上传扫描,​按说,​它不必要为您激活这个指令,​因为按说,​PHP将自动清洗内容的它的缓存当执行是完,​意思它将按说删除任何文件上传从它向服务器如果不已移动,​复制或删除。​这个指令是添加这里为额外安全为任何人谁的PHP副本可能不始终表现在预期方式。​False【假/负】:之后扫描,​忽略文件【标准】,​True【真/正】:之后扫描,​如果不清洁,​马上删除。'; -$phpMussel['lang']['config_general_disable_cli'] = '关闭CLI模式吗?​CLI模式是按说激活作为标准,​但可以有时干扰某些测试工具(例如PHPUnit,​为例子)和其他基于CLI应用。​如果您没有需要关闭CLI模式,​您应该忽略这个指令。​False(假)=激活CLI模式【标准】; True(真)=关闭CLI模式。'; -$phpMussel['lang']['config_general_disable_frontend'] = '关闭前端访问吗?​前端访问可以使phpMussel更易于管理,​但也可能是潜在的安全风险。​建议管理phpMussel通过后端只要有可能,​但前端访问提供当不可能。​保持关闭除非您需要它。​False(假)=激活前端访问; True(真)=关闭前端访问【标准】。'; -$phpMussel['lang']['config_general_disable_webfonts'] = '关闭网络字体吗?​True(真)=关闭; False(假)=不关闭【标准】。'; -$phpMussel['lang']['config_general_enable_plugins'] = '启用phpMussel插件支持吗?​False(假)=不要启用; True(真)=要启用【标准】。'; -$phpMussel['lang']['config_general_forbid_on_block'] = 'phpMussel应该发送403头随着文件上传受阻信息,​或坚持标准200 OK?​False(假)=发送200; True(真)=发送403【标准】。'; -$phpMussel['lang']['config_general_FrontEndLog'] = '前端登录尝试的录音文件。​指定一个文件名,​或留空以禁用。'; -$phpMussel['lang']['config_general_honeypot_mode'] = '当这个指令(蜜罐模式)是激活,​phpMussel将尝试检疫所有文件上传它遇到,​无论的如果文件上传是匹配任何包括签名,​和没有扫描或分析的那些文件上传将发生。​这个功能应有用为那些想使用的phpMussel为目的病毒或恶意软件研究,​但它是不推荐激活这个功能如果预期的用的phpMussel通过用户是为标准文件上传扫描,​也不推荐使用蜜罐功能为目的以外蜜罐。​作为标准,​这个指令是关闭。​False(假)=是关闭【标准】; True(真)=是激活。'; -$phpMussel['lang']['config_general_ipaddr'] = '在哪里可以找到连接请求IP地址?​(可以使用为服务例如Cloudflare和类似)标准是REMOTE_ADDR。​警告!​不要修改此除非您知道什么您做着!'; -$phpMussel['lang']['config_general_lang'] = '指定标准phpMussel语言。'; -$phpMussel['lang']['config_general_maintenance_mode'] = '启用维护模式?​True(真)=关闭;​False(假)=不关闭【标准】。​它停用一切以外前端。​有时候在更新CMS,框架,等时有用。'; -$phpMussel['lang']['config_general_max_login_attempts'] = '最大登录尝试次数(前端)。​标准=5。'; -$phpMussel['lang']['config_general_numbers'] = '您如何喜欢显示数字?​选择最适合示例。'; -$phpMussel['lang']['config_general_quarantine_key'] = 'phpMussel可以检疫坏文件上传在隔离在phpMussel的安全/保险库【Vault】,​如果这个是某物您想。​普通用户的phpMussel简单地想保护他们的网站或宿主环境无任何兴趣在深深分析任何尝试文件上传应该离开这个功能关闭,​但任何用户有兴趣在更深分析的尝试文件上传为目的恶意软件研究或为类似这样事情应该激活这个功能。​检疫的尝试文件上传可以有时还助攻在调试假阳性,​如果这个是某物经常发生为您。​以关闭检疫功能,​简单地离开quarantine_key指令空白,​或抹去内容的这个指令如果它不已空白。​以激活隔离功能,​输入一些值在这个指令。​quarantine_key是一个重要安全功能的隔离功能需要以预防检疫功能从成为利用通过潜在攻击者和以预防任何潜在执行的数据存储在检疫。​quarantine_key应该被处理在同样方法作为您的密码:更长是更好,​和紧紧保护它。​为获得最佳效果,​在结合使用delete_on_sight。'; -$phpMussel['lang']['config_general_quarantine_max_filesize'] = '最大允许文件大小为文件在检疫。​文件大于这个指定数值将不成为检疫。​这个指令是重要为使它更难为任何潜在攻击者洪水您的检疫用非通缉数据潜在的造成过度数据用法在您的虚拟主机服务。​标准 = 2MB。'; -$phpMussel['lang']['config_general_quarantine_max_usage'] = '最大内存使用允许为检疫。​如果总内存已用通过隔离到达这个数值,​最老检疫文件将会删除直到总内存已用不再到达这个数值。​这个指令是重要为使它更难为任何潜在攻击者洪水您的检疫用非通缉数据潜在的造成过度数据用法在您的虚拟主机服务。​标准 = 64MB。'; -$phpMussel['lang']['config_general_scan_cache_expiry'] = '多长时间应该phpMussel维持扫描结果?​数值是秒数为维持扫描结果。​标准是21600秒(6小时); 一个0数值将停止维持扫描结果。'; -$phpMussel['lang']['config_general_scan_kills'] = '文件为记录在所有受阻或已杀上传。​指定一个文件名,​或留空以关闭。'; -$phpMussel['lang']['config_general_scan_log'] = '文件为记录在所有扫描结果。​指定一个文件名,​或留空以关闭。'; -$phpMussel['lang']['config_general_scan_log_serialized'] = '文件为记录在所有扫描结果(它采用序列化格式)。​指定一个文件名,​或留空以关闭。'; -$phpMussel['lang']['config_general_statistics'] = '跟踪phpMussel使用情况统计?​True(真)=跟踪; False(假)=不跟踪【标准】。'; -$phpMussel['lang']['config_general_timeFormat'] = 'phpMussel使用的日期符号格式。​可根据要求增加附加选项。'; -$phpMussel['lang']['config_general_timeOffset'] = '时区偏移量(分钟)。'; -$phpMussel['lang']['config_general_timezone'] = '您的时区。'; -$phpMussel['lang']['config_general_truncate'] = '截断日志文件当他们达到一定的大小吗?​值是在B/KB/MB/GB/TB,​是日志文件允许的最大大小直到它被截断。​默认值为“0KB”将禁用截断(日志文件可以无限成长)。​注意:适用于单个日志文件!​日志文件大小不被算集体的。'; -$phpMussel['lang']['config_heuristic_threshold'] = '有某些签名的phpMussel意味为确定可疑和可能恶意文件零件被上传有不在他们自己确定那些文件被上传特别是作为恶意。​这个“threshold”数值告诉phpMussel什么是最大总重量的可疑和潜在恶意文件零件被上传允许之前那些文件是被识别作为恶意。​定义的重量在这个上下文是总数值的可疑和可能恶意文件零件确定。​作为默认,​这个数值将会设置作为3。​一个较低的值通常将结果在一个更高的发生的假阳性但一个更高的发生的恶意文件被确定,​而一个更高的数值将通常结果在一个较低的发生的假阳性但一个较低的数值的恶意文件被确定。​它是通常最好忽略这个数值除非您遇到关联问题。'; -$phpMussel['lang']['config_signatures_Active'] = '活性签名文件的列表,​以逗号分隔。'; -$phpMussel['lang']['config_signatures_detect_adware'] = 'phpMussel应该使用签名为广告软件检测吗?​False(假)=不检查,​True(真)=检查【默认】。'; -$phpMussel['lang']['config_signatures_detect_deface'] = 'phpMussel应该使用签名为污损和污损软件检测吗?​False(假)=不检查,​True(真)=检查【默认】。'; -$phpMussel['lang']['config_signatures_detect_encryption'] = 'phpMussel应该检测并阻止加密的文件吗?​False(假)=不检查,​True(真)=检查【默认】。'; -$phpMussel['lang']['config_signatures_detect_joke_hoax'] = 'phpMussel应该使用签名为病毒/恶意软件笑话/恶作剧检测吗?​False(假)=不检查,​True(真)=检查【默认】。'; -$phpMussel['lang']['config_signatures_detect_packer_packed'] = 'phpMussel应该使用签名为打包机和打包数据检测吗?​False(假)=不检查,​True(真)=检查【默认】。'; -$phpMussel['lang']['config_signatures_detect_pua_pup'] = 'phpMussel应该使用签名为PUP/PUA(可能无用/非通缉程序/软件)检测吗?​False(假)=不检查,​True(真)=检查【默认】。'; -$phpMussel['lang']['config_signatures_detect_shell'] = 'phpMussel应该使用签名为webshell脚本检测吗?​False(假)=不检查,​True(真)=检查【默认】。'; -$phpMussel['lang']['config_signatures_fail_extensions_silently'] = 'phpMussel应该报告当扩展是失踪吗?​如果fail_extensions_silently是关闭,​失踪扩展将会报告当扫描,​和如果fail_extensions_silently是激活,​失踪扩展将会忽略,​有扫描报告为那些文件哪里没有任何问题。​关闭的这个指令可能的可以增加您的安全,​但可能还导致一个增加的假阳性。​False(假)=是关闭; True(真)=是激活【默认】。'; -$phpMussel['lang']['config_signatures_fail_silently'] = 'phpMussel应该报告当签名文件是失踪或损坏吗?​如果fail_silently是关闭,​失踪和损坏文件将会报告当扫描,​和如果fail_silently是激活,​失踪和损坏文件将会忽略,​有扫描报告为那些文件哪里没有问题。​这个应该按说被留下除非您遇到失败或有其他类似问题。​False(假)=是关闭; True(真)=是激活【默认】。'; -$phpMussel['lang']['config_template_data_css_url'] = '模板文件为个性化主题使用外部CSS属性,​而模板文件为t标准主题使用内部CSS属性。​以指示phpMussel使用模板文件为个性化主题,​指定公共HTTP地址的您的个性化主题的CSS文件使用css_url变量。​如果您离开这个变量空白,​phpMussel将使用模板文件为默认主题。'; -$phpMussel['lang']['config_template_data_Magnification'] = '字体放大。​标准 = 1。'; -$phpMussel['lang']['config_template_data_theme'] = '用于phpMussel的默认主题。'; -$phpMussel['lang']['config_urlscanner_cache_time'] = '多长时间(以秒为单位)应API结果被缓存?​默认是3600秒(1小时)。'; -$phpMussel['lang']['config_urlscanner_google_api_key'] = '激活Google Safe Browsing API当API密钥是设置。'; -$phpMussel['lang']['config_urlscanner_lookup_hphosts'] = '激活hpHosts API当设置true。'; -$phpMussel['lang']['config_urlscanner_maximum_api_lookups'] = '最大数值API请求来执行每个扫描迭代。​额外API请求将增加的总要求完成时间每扫描迭代,​所以,​您可能想来规定一个限以加快全扫描过程。​当设置0,​没有最大数值将会应用的。​设置10作为默认。'; -$phpMussel['lang']['config_urlscanner_maximum_api_lookups_response'] = '该什么办如果最大数值API请求已超过?​False(假)=没做任何事(继续处理)【默认】; True(真)=标志/受阻文件。'; -$phpMussel['lang']['config_virustotal_vt_public_api_key'] = '可选的,​phpMussel可以扫描文件使用【Virus Total API】作为一个方法提供一个显着的改善保护级别针对病毒,​木马,​恶意软件和其他威胁。​作为默认,​扫描文件使用【Virus Total API】是关闭。​以激活它,​一个API密钥从VirusTotal是需要。​因为的显着好处这个可以提供为您,​它是某物我很推荐激活。​请注意,​然而,​以使用的【Virus Total API】,​您必须同意他们的服务条款和您必须坚持所有方针按照说明通过VirusTotal阅读材料!​您是不允许使用这个积分功能除非:您已阅读和您同意服务条款的VirusTotal和它的API。​您已阅读和您了解至少序言的VirusTotal公共API阅读材料(一切之后“VirusTotal Public API v2.0”但之前“Contents”)。'; -$phpMussel['lang']['config_virustotal_vt_quota_rate'] = '根据【Virus Total API】阅读材料,​它是限于最大的4请求的任何类型在任何1分钟大体时间。​如果您经营一个“honeyclient”,​蜜罐或任何其他自动化将会提供资源为VirusTotal和不只取回报告您是有权一个更高请求率配额。​作为标准,​phpMussel将严格的坚持这些限制,​但因为可能性的这些率配额被增加,​这些二指令是提供为您指示phpMussel为什么限它应坚持。​除非您是指示这样做,​它是不推荐为您增加这些数值,​但,​如果您遇到问题相关的到达您的率配额,​减少这些数值可能有时帮助您解析这些问题。​您的率限是决定作为vt_quota_rate请求的任何类型在任何vt_quota_time分钟大体时间。'; -$phpMussel['lang']['config_virustotal_vt_quota_time'] = '(见上面的说明)。'; -$phpMussel['lang']['config_virustotal_vt_suspicion_level'] = '作为标准,​phpMussel将限制什么文件它扫描通过使用【Virus Total API】为那些文件它考虑作为“可疑”。​您可以可选调整这个局限性通过修改的vt_suspicion_level指令数值。'; -$phpMussel['lang']['config_virustotal_vt_weighting'] = 'phpMussel应使用扫描结果使用【Virus Total API】作为检测或作为检测重量吗?​这个指令存在,​因为,​虽说扫描一个文件使用多AV引擎(例如怎么样VirusTotal做) 应结果有一个增加检测率(和因此在一个更恶意文件被抓),​它可以还结果有更假阳性,​和因此,​为某些情况,​扫描结果可能被更好使用作为一个置信得分而不是作为一个明确结论。​如果一个数值的0是使用,​扫描结果使用【Virus Total API】将会适用作为检测,​和因此,​如果任何AV引擎使用通过VirusTotal标志文件被扫描作为恶意,​phpMussel将考虑文件作为恶意。​如果任何其他数值是使用,​扫描结果使用【Virus Total API】将会适用作为检测重量,​和因此,​数的AV引擎使用通过VirusTotal标志文件被扫描作为恶意将服务作为一个置信得分(或检测重量) 为如果文件被扫描应会考虑恶意通过phpMussel(数值使用将代表最低限度的置信得分或重量需要以被考虑恶意)。​一个数值的0是使用作为标准。'; -$phpMussel['lang']['Extended Description: phpMussel'] = '主包(没有签名文件,文档,和配置)。'; -$phpMussel['lang']['field_activate'] = '启用'; -$phpMussel['lang']['field_clear_all'] = '撤销所有'; -$phpMussel['lang']['field_component'] = '组件'; -$phpMussel['lang']['field_create_new_account'] = '创建新账户'; -$phpMussel['lang']['field_deactivate'] = '停用'; -$phpMussel['lang']['field_delete_account'] = '删除账户'; -$phpMussel['lang']['field_delete_all'] = '删除所有'; -$phpMussel['lang']['field_delete_file'] = '删除'; -$phpMussel['lang']['field_download_file'] = '下载'; -$phpMussel['lang']['field_edit_file'] = '编辑'; -$phpMussel['lang']['field_false'] = 'False(假)'; -$phpMussel['lang']['field_file'] = '文件'; -$phpMussel['lang']['field_filename'] = '文件名:'; -$phpMussel['lang']['field_filetype_directory'] = '文件夹'; -$phpMussel['lang']['field_filetype_info'] = '{EXT}文件'; -$phpMussel['lang']['field_filetype_unknown'] = '未知'; -$phpMussel['lang']['field_install'] = '安装'; -$phpMussel['lang']['field_latest_version'] = '最新版本'; -$phpMussel['lang']['field_log_in'] = '登录'; -$phpMussel['lang']['field_more_fields'] = '更多字段'; -$phpMussel['lang']['field_new_name'] = '新名称:'; -$phpMussel['lang']['field_ok'] = 'OK'; -$phpMussel['lang']['field_options'] = '选项'; -$phpMussel['lang']['field_password'] = '密码'; -$phpMussel['lang']['field_permissions'] = '权限'; -$phpMussel['lang']['field_quarantine_key'] = '隔离钥匙'; -$phpMussel['lang']['field_rename_file'] = '改名'; -$phpMussel['lang']['field_reset'] = '重启'; -$phpMussel['lang']['field_restore_file'] = '恢复'; -$phpMussel['lang']['field_set_new_password'] = '保存新密码'; -$phpMussel['lang']['field_size'] = '总大小:'; -$phpMussel['lang']['field_size_bytes'] = '字节'; -$phpMussel['lang']['field_size_GB'] = 'GB'; -$phpMussel['lang']['field_size_KB'] = 'KB'; -$phpMussel['lang']['field_size_MB'] = 'MB'; -$phpMussel['lang']['field_size_TB'] = 'TB'; -$phpMussel['lang']['field_status'] = '状态'; -$phpMussel['lang']['field_system_timezone'] = '使用系统默认时区。'; -$phpMussel['lang']['field_true'] = 'True(真)'; -$phpMussel['lang']['field_uninstall'] = '卸载'; -$phpMussel['lang']['field_update'] = '更新'; -$phpMussel['lang']['field_update_all'] = '更新一切'; -$phpMussel['lang']['field_upload_file'] = '上传新文件'; -$phpMussel['lang']['field_username'] = '用户名'; -$phpMussel['lang']['field_your_version'] = '您的版本'; -$phpMussel['lang']['header_login'] = '请登录以继续。'; -$phpMussel['lang']['label_active_config_file'] = '活动配置文件:'; -$phpMussel['lang']['label_blocked'] = '上传已阻止'; -$phpMussel['lang']['label_branch'] = '分支最新稳定:'; -$phpMussel['lang']['label_events'] = '扫描事件'; -$phpMussel['lang']['label_flagged'] = '对象已标记'; -$phpMussel['lang']['label_fmgr_cache_data'] = '缓存数据和临时文件'; -$phpMussel['lang']['label_fmgr_disk_usage'] = 'phpMussel使用的磁盘空间: '; -$phpMussel['lang']['label_fmgr_free_space'] = '可用磁盘空间: '; -$phpMussel['lang']['label_fmgr_total_disk_usage'] = '总共使用的磁盘空间: '; -$phpMussel['lang']['label_fmgr_total_space'] = '总磁盘空间: '; -$phpMussel['lang']['label_fmgr_updates_metadata'] = '组件更新元数据'; -$phpMussel['lang']['label_hide'] = '隐藏'; -$phpMussel['lang']['label_os'] = '目前使用操作系统:'; -$phpMussel['lang']['label_other'] = '其他'; -$phpMussel['lang']['label_other-Active'] = '活动签名文件'; -$phpMussel['lang']['label_other-Since'] = '开始日期'; -$phpMussel['lang']['label_php'] = '目前使用PHP版本:'; -$phpMussel['lang']['label_phpmussel'] = '目前使用phpMussel版本:'; -$phpMussel['lang']['label_quarantined'] = '上传已隔离'; -$phpMussel['lang']['label_sapi'] = '目前使用SAPI:'; -$phpMussel['lang']['label_scanned_objects'] = '对象已扫描'; -$phpMussel['lang']['label_scanned_uploads'] = '上传已扫描'; -$phpMussel['lang']['label_show'] = '显示'; -$phpMussel['lang']['label_size_in_quarantine'] = '大小在检疫:'; -$phpMussel['lang']['label_stable'] = '最新稳定:'; -$phpMussel['lang']['label_sysinfo'] = '系统信息:'; -$phpMussel['lang']['label_tests'] = '测试:'; -$phpMussel['lang']['label_unstable'] = '最新不稳定:'; -$phpMussel['lang']['label_upload_date'] = '上传日期:'; -$phpMussel['lang']['label_upload_hash'] = '上传哈希:'; -$phpMussel['lang']['label_upload_origin'] = '上传原点:'; -$phpMussel['lang']['label_upload_size'] = '上传大小:'; -$phpMussel['lang']['link_accounts'] = '账户'; -$phpMussel['lang']['link_config'] = '配置'; -$phpMussel['lang']['link_documentation'] = '文档'; -$phpMussel['lang']['link_file_manager'] = '文件管理器'; -$phpMussel['lang']['link_home'] = '主页'; -$phpMussel['lang']['link_logs'] = '日志'; -$phpMussel['lang']['link_quarantine'] = '隔离'; -$phpMussel['lang']['link_statistics'] = '统计'; -$phpMussel['lang']['link_textmode'] = '文字格式: 简单漂亮'; -$phpMussel['lang']['link_updates'] = '更新'; -$phpMussel['lang']['link_upload_test'] = '上传测试'; -$phpMussel['lang']['logs_logfile_doesnt_exist'] = '选择的日志不存在!'; -$phpMussel['lang']['logs_no_logfiles_available'] = '没有日志可用。'; -$phpMussel['lang']['logs_no_logfile_selected'] = '没有选择的日志。'; -$phpMussel['lang']['max_login_attempts_exceeded'] = '最大登录尝试次数已经超过;拒绝访问。'; -$phpMussel['lang']['previewer_days'] = '天'; -$phpMussel['lang']['previewer_hours'] = '小时'; -$phpMussel['lang']['previewer_minutes'] = '分'; -$phpMussel['lang']['previewer_months'] = '月'; -$phpMussel['lang']['previewer_seconds'] = '秒'; -$phpMussel['lang']['previewer_weeks'] = '周'; -$phpMussel['lang']['previewer_years'] = '年'; -$phpMussel['lang']['response_accounts_already_exists'] = '一个账户与那个用户名已经存在!'; -$phpMussel['lang']['response_accounts_created'] = '账户成功创建!'; -$phpMussel['lang']['response_accounts_deleted'] = '账户成功删除!'; -$phpMussel['lang']['response_accounts_doesnt_exist'] = '那个账户不存在。'; -$phpMussel['lang']['response_accounts_password_updated'] = '密码成功更新!'; -$phpMussel['lang']['response_activated'] = '已成功启用。'; -$phpMussel['lang']['response_activation_failed'] = '无法启用!'; -$phpMussel['lang']['response_checksum_error'] = '校验和错误!​文件拒绝!'; -$phpMussel['lang']['response_component_successfully_installed'] = '组件成功安装。'; -$phpMussel['lang']['response_component_successfully_uninstalled'] = '组件成功卸载。'; -$phpMussel['lang']['response_component_successfully_updated'] = '组件成功更新。'; -$phpMussel['lang']['response_component_uninstall_error'] = '一个错误发生当尝试卸载组件。'; -$phpMussel['lang']['response_configuration_updated'] = '配置成功更新。'; -$phpMussel['lang']['response_deactivated'] = '已成功停用。'; -$phpMussel['lang']['response_deactivation_failed'] = '无法停用!'; -$phpMussel['lang']['response_delete_error'] = '无法删除!'; -$phpMussel['lang']['response_directory_deleted'] = '文件夹成功删除!'; -$phpMussel['lang']['response_directory_renamed'] = '文件夹成功改名!'; -$phpMussel['lang']['response_error'] = '错误'; -$phpMussel['lang']['response_failed_to_install'] = '无法安装!'; -$phpMussel['lang']['response_failed_to_update'] = '无法更新!'; -$phpMussel['lang']['response_file_deleted'] = '文件成功删除!'; -$phpMussel['lang']['response_file_edited'] = '文件成功改性!'; -$phpMussel['lang']['response_file_renamed'] = '文件成功改名!'; -$phpMussel['lang']['response_file_restored'] = '文件成功恢复!'; -$phpMussel['lang']['response_file_uploaded'] = '文件成功上传!'; -$phpMussel['lang']['response_login_invalid_password'] = '登录失败!​密码无效!'; -$phpMussel['lang']['response_login_invalid_username'] = '登录失败!​用户名不存在!'; -$phpMussel['lang']['response_login_password_field_empty'] = '密码输入是空的!'; -$phpMussel['lang']['response_login_username_field_empty'] = '用户名输入是空的!'; -$phpMussel['lang']['response_rename_error'] = '无法改名!'; -$phpMussel['lang']['response_restore_error_1'] = '无法恢复!损坏的文件!'; -$phpMussel['lang']['response_restore_error_2'] = '无法恢复!不正确的隔离钥匙!'; -$phpMussel['lang']['response_statistics_cleared'] = '统计删除。'; -$phpMussel['lang']['response_updates_already_up_to_date'] = '已经更新。'; -$phpMussel['lang']['response_updates_not_installed'] = '组件不安装!'; -$phpMussel['lang']['response_updates_not_installed_php'] = '组件不安装(它需要PHP {V})!'; -$phpMussel['lang']['response_updates_outdated'] = '过时!'; -$phpMussel['lang']['response_updates_outdated_manually'] = '过时(请更新手动)!'; -$phpMussel['lang']['response_updates_outdated_php_version'] = '过时(它需要PHP {V})!'; -$phpMussel['lang']['response_updates_unable_to_determine'] = '无法确定。'; -$phpMussel['lang']['response_upload_error'] = '无法上传!'; -$phpMussel['lang']['state_complete_access'] = '完全访问'; -$phpMussel['lang']['state_component_is_active'] = '组件是活性。'; -$phpMussel['lang']['state_component_is_inactive'] = '组件是非活性。'; -$phpMussel['lang']['state_component_is_provisional'] = '组件是有时活性。'; -$phpMussel['lang']['state_default_password'] = '警告:它使用标准密码!'; -$phpMussel['lang']['state_logged_in'] = '目前在线。'; -$phpMussel['lang']['state_logs_access_only'] = '仅日志访问'; -$phpMussel['lang']['state_maintenance_mode'] = '警告:维护模式是启用!'; -$phpMussel['lang']['state_password_not_valid'] = '警告:此账户不​使用有效的密码!'; -$phpMussel['lang']['state_quarantine'] = '目前有%s个文件在隔离区。'; -$phpMussel['lang']['switch-hide-non-outdated-set-false'] = '不要隐藏非过时'; -$phpMussel['lang']['switch-hide-non-outdated-set-true'] = '隐藏非过时'; -$phpMussel['lang']['switch-hide-unused-set-false'] = '不要隐藏非用过'; -$phpMussel['lang']['switch-hide-unused-set-true'] = '隐藏非用过'; -$phpMussel['lang']['tip_accounts'] = '你好,​{username}。​
        账户页面允许您控制谁可以访问phpMussel前端。'; -$phpMussel['lang']['tip_config'] = '你好,​{username}。​
        配置页面允许您修改phpMussel配置从前端。'; -$phpMussel['lang']['tip_donate'] = 'phpMussel是免费提供的,​但如果您想捐赠给项目,​您可以通过点击捐赠按钮这样做。'; -$phpMussel['lang']['tip_file_manager'] = '你好,​{username}。​
        文件管理器允许您删除,​编辑,​上传和下载文件。​小心使用(您可以用这个破坏您的安装)。'; -$phpMussel['lang']['tip_home'] = '你好,​{username}。​
        这是phpMussel的前端主页。​从左侧的导航菜单中选择一个链接以继续。'; -$phpMussel['lang']['tip_login'] = '标准用户名:admin – 标准密码:password'; -$phpMussel['lang']['tip_logs'] = '你好,​{username}。​
        选择一个日志从下面的列表以查看那个日志的内容。'; -$phpMussel['lang']['tip_quarantine'] = '你好,​{username}。​
        此页面列出当前在隔离中的所有文件,并可以用来管理这些文件。'; -$phpMussel['lang']['tip_quarantine_disabled'] = '注意:隔离目前禁用,但可以通过配置页面启用。'; -$phpMussel['lang']['tip_see_the_documentation'] = '请参阅文档以获取有关各种配置指令的信息和他们的目的。'; -$phpMussel['lang']['tip_statistics'] = '你好,​{username}。​
        此页面显示了有关phpMussel安装的一些基本使用统计信息。'; -$phpMussel['lang']['tip_statistics_disabled'] = '注意:统计跟踪目前已被禁用,但可以通过配置页面启用。'; -$phpMussel['lang']['tip_updates'] = '你好,​{username}。​
        更新页面允许您安装,​卸载,​和更新phpMussel的各种组件(核心包,​签名,​插件,​L10N文件,​等等)。'; -$phpMussel['lang']['tip_upload_test'] = '你好,​{username}。​
        上传测试页面包含标准文件上传表单,​允许您测试是否文件通常会被阻止通过phpMussel当尝试上传他们。'; -$phpMussel['lang']['title_accounts'] = 'phpMussel – 账户'; -$phpMussel['lang']['title_config'] = 'phpMussel – 配置'; -$phpMussel['lang']['title_file_manager'] = 'phpMussel – 文件管理器'; -$phpMussel['lang']['title_home'] = 'phpMussel – 主页'; -$phpMussel['lang']['title_login'] = 'phpMussel – 登录'; -$phpMussel['lang']['title_logs'] = 'phpMussel – 日志'; -$phpMussel['lang']['title_quarantine'] = 'phpMussel – 隔离'; -$phpMussel['lang']['title_statistics'] = 'phpMussel – 统计'; -$phpMussel['lang']['title_updates'] = 'phpMussel – 更新'; -$phpMussel['lang']['title_upload_test'] = 'phpMussel – 上传测试'; -$phpMussel['lang']['warning'] = '警告:'; -$phpMussel['lang']['warning_php_1'] = '您的PHP版本不再被积极支持!​推荐更新!'; -$phpMussel['lang']['warning_php_2'] = '您的PHP版本非常脆弱!​强烈推荐更新!'; -$phpMussel['lang']['warning_signatures_1'] = '没有签名文件是活动的!'; - -$phpMussel['lang']['info_some_useful_links'] = '一些有用的链接:'; diff --git a/libraries/plugins/phpMussel/vault/lang/lang.zh.php b/libraries/plugins/phpMussel/vault/lang/lang.zh.php deleted file mode 100644 index 090c33f..0000000 --- a/libraries/plugins/phpMussel/vault/lang/lang.zh.php +++ /dev/null @@ -1,127 +0,0 @@ - 31 || $CostLen > 2) { - $Cost = 31; - } elseif ($CostLen < 2) { - $Cost = '0' . $Cost; - } - $Salt = '$2y$' . $Cost . '$'; - $Length = 22; - $Range = '0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz'; - while ($Length--) { - $Salt .= str_shuffle($Range)[0]; - } - } - - else { - $Salt = ''; - } - - } else { - $Salt = (string)$Options['salt']; - } - - return crypt($Password, $Salt); - - } -} - -if (!function_exists('password_verify')) { - function password_verify($Password, $Hash) { - return (!empty($Password) && !empty($Hash) && $Hash === crypt($Password, $Hash)); - } -} diff --git a/libraries/plugins/phpMussel/vault/plugins.dat b/libraries/plugins/phpMussel/vault/plugins.dat deleted file mode 100644 index ab85278..0000000 --- a/libraries/plugins/phpMussel/vault/plugins.dat +++ /dev/null @@ -1,11 +0,0 @@ ---- -plugin-legacy: - Name: Legacy plugin for phpMussel. - Extended Description: Provides backwards-compatibility for v0 users using phpMusselR() and phpMussel(), by redeclaring these deprecated functions as wrappers for their newer, closure counterparts. Non-v0 users don't need this plugin and shouldn't use it. - Minimum Required: 1.0.0-DEV - Minimum Required PHP: 5.4.0 - Remote: https://raw.githubusercontent.com/phpMussel/extras/master/plugins/plugins.dat - Uninstallable: true - Provisional: true - Reannotate: plugins.dat - diff --git a/libraries/plugins/phpMussel/vault/plugins/.htaccess b/libraries/plugins/phpMussel/vault/plugins/.htaccess deleted file mode 100644 index 3ebfe62..0000000 --- a/libraries/plugins/phpMussel/vault/plugins/.htaccess +++ /dev/null @@ -1,6 +0,0 @@ - - Order Allow,Deny - Deny from All - -Order Allow,Deny -Deny from All diff --git a/libraries/plugins/phpMussel/vault/plugins/logtoastra/plugin.php b/libraries/plugins/phpMussel/vault/plugins/logtoastra/plugin.php deleted file mode 100644 index 1680594..0000000 --- a/libraries/plugins/phpMussel/vault/plugins/logtoastra/plugin.php +++ /dev/null @@ -1,75 +0,0 @@ -get_config($data); -if($musselResult){ - $phpMusselConfig = json_decode($musselResult,true); - $phpMussel['Config']['files']['filesize_limit'] = ($phpMusselConfig['filesize']) ? $phpMusselConfig['filesize'].'MB' : $phpMussel['Config']['files']['filesize_limit']; - $phpMussel['Config']['files']['filetype_whitelist'] = isset($phpMusselConfig['allowed']) ? $phpMussel['Config']['files']['filetype_whitelist'].','.$phpMusselConfig['allowed'] : $phpMussel['Config']['files']['filetype_whitelist']; - $phpMussel['Config']['files']['filetype_blacklist'] = isset($phpMusselConfig['blocked']) ? $phpMussel['Config']['files']['filetype_blacklist'].','.$phpMusselConfig['blocked'] : $phpMussel['Config']['files']['filetype_blacklist']; -} - -/** - * Registers the `$phpMussel_logtoastra` closure to the `before_html_out` - * hook. - */ - -$phpMussel['Register_Hook']('phpMussel_logtoastra', 'before_html_out'); - - -/** - * @return bool Returns true if everything is working correctly. - */ -$GLOBALS['phpMussel_logtoastra'] = $phpMussel_logtoastra = function () use (&$phpMussel) { - - $checkDuplicatInclude = get_included_files(); - - if(array_search(ASTRAPATH.'astra-config.php', $checkDuplicatInclude)){ - }else{ - require_once(ASTRAPATH.'astra-config.php'); - } - - $fileData = null; - foreach($phpMussel['upload']['FilesData']['FileSet'] as $key => $value){ - $fileData[$key][] = $value[0]; - } - require_once(ASTRAPATH.'libraries/API_connect.php'); - $connect = new API_connect(); - - $dataArray['ip'] = $_SERVER[$phpMussel['Config']['general']['ipaddr']]; - $dataArray['hash'] = $phpMussel['killdata']; - $dataArray['error'] = trim($phpMussel['whyflagged']); - $dataArray['filedata'] = json_encode($fileData); - $dataArray['param'] = 'FILES.'.$phpMussel['upload']['FilesData']['k']; - - $connect->send_request("phpMussel", $dataArray); - return true; -}; diff --git a/libraries/plugins/phpMussel/vault/quarantine/.htaccess b/libraries/plugins/phpMussel/vault/quarantine/.htaccess deleted file mode 100644 index 3ebfe62..0000000 --- a/libraries/plugins/phpMussel/vault/quarantine/.htaccess +++ /dev/null @@ -1,6 +0,0 @@ - - Order Allow,Deny - Deny from All - -Order Allow,Deny -Deny from All diff --git a/libraries/plugins/phpMussel/vault/scan_kills.txt b/libraries/plugins/phpMussel/vault/scan_kills.txt deleted file mode 100644 index e1245ab..0000000 --- a/libraries/plugins/phpMussel/vault/scan_kills.txt +++ /dev/null @@ -1,37 +0,0 @@ - - -DATE: Sun, 07 Apr 2019 07:03:22 +0000 -IP ADDRESS: 192.168.33.1 -== SCAN RESULTS / WHY FLAGGED == -Filetype blacklisted (install-astra+%281%29.php)! -== MD5 SIGNATURE RECONSTRUCTION (FILE-HASH:FILE-SIZE:FILE-NAME) == ---FILETYPE-BLACKLISTED--NO-HASH-:66935:install-astra (1).php - -DATE: Sun, 07 Apr 2019 07:04:39 +0000 -IP ADDRESS: 192.168.33.1 -== SCAN RESULTS / WHY FLAGGED == -Filetype blacklisted (install-astra+%281%29.php)! -== MD5 SIGNATURE RECONSTRUCTION (FILE-HASH:FILE-SIZE:FILE-NAME) == ---FILETYPE-BLACKLISTED--NO-HASH-:66935:install-astra (1).php - -DATE: Sun, 07 Apr 2019 07:04:51 +0000 -IP ADDRESS: 192.168.33.1 -== SCAN RESULTS / WHY FLAGGED == -Filetype blacklisted (install-astra+%281%29.php)! -== MD5 SIGNATURE RECONSTRUCTION (FILE-HASH:FILE-SIZE:FILE-NAME) == ---FILETYPE-BLACKLISTED--NO-HASH-:66935:install-astra (1).php - -DATE: Sun, 07 Apr 2019 07:05:38 +0000 -IP ADDRESS: 192.168.33.1 -== SCAN RESULTS / WHY FLAGGED == -Filetype blacklisted (install-astra+%281%29.php)! -== MD5 SIGNATURE RECONSTRUCTION (FILE-HASH:FILE-SIZE:FILE-NAME) == ---FILETYPE-BLACKLISTED--NO-HASH-:66935:install-astra (1).php - -DATE: Sun, 07 Apr 2019 07:08:07 +0000 -IP ADDRESS: 192.168.33.1 -== SCAN RESULTS / WHY FLAGGED == -Filetype blacklisted (install-astra+%281%29.php)! -== MD5 SIGNATURE RECONSTRUCTION (FILE-HASH:FILE-SIZE:FILE-NAME) == ---FILETYPE-BLACKLISTED--NO-HASH-:66935:install-astra (1).php - diff --git a/libraries/plugins/phpMussel/vault/scan_log.txt b/libraries/plugins/phpMussel/vault/scan_log.txt deleted file mode 100644 index b2b89b7..0000000 --- a/libraries/plugins/phpMussel/vault/scan_log.txt +++ /dev/null @@ -1,25 +0,0 @@ - -Sun, 07 Apr 2019 07:03:07 +0000 Started. -> Checking 'gk.php.txt' (FN: b0fdfbeb; FD: 00000000): --> No problems found. -Sun, 07 Apr 2019 07:03:07 +0000 Finished. -Sun, 07 Apr 2019 07:03:22 +0000 Started. -> Checking 'install-astra (1).php' (FN: 38d4c395): --> Filetype blacklisted. -Sun, 07 Apr 2019 07:03:22 +0000 Finished. -Sun, 07 Apr 2019 07:04:39 +0000 Started. -> Checking 'install-astra (1).php' (FN: 38d4c395): --> Filetype blacklisted. -Sun, 07 Apr 2019 07:04:39 +0000 Finished. -Sun, 07 Apr 2019 07:04:51 +0000 Started. -> Checking 'install-astra (1).php' (FN: 38d4c395): --> Filetype blacklisted. -Sun, 07 Apr 2019 07:04:51 +0000 Finished. -Sun, 07 Apr 2019 07:05:38 +0000 Started. -> Checking 'install-astra (1).php' (FN: 38d4c395): --> Filetype blacklisted. -Sun, 07 Apr 2019 07:05:38 +0000 Finished. -Sun, 07 Apr 2019 07:08:07 +0000 Started. -> Checking 'install-astra (1).php' (FN: 38d4c395): --> Filetype blacklisted. -Sun, 07 Apr 2019 07:08:07 +0000 Finished. diff --git a/libraries/plugins/phpMussel/vault/scan_log_serialized.txt b/libraries/plugins/phpMussel/vault/scan_log_serialized.txt deleted file mode 100644 index 6b43ae6..0000000 --- a/libraries/plugins/phpMussel/vault/scan_log_serialized.txt +++ /dev/null @@ -1,6 +0,0 @@ -a:7:{s:10:"start_time";i:1554620587;s:8:"end_time";i:1554620587;s:6:"origin";s:12:"192.168.33.1";s:15:"objects_scanned";i:1;s:16:"detections_count";i:0;s:11:"scan_errors";i:0;s:10:"detections";s:19:"Data not available.";} -a:7:{s:10:"start_time";i:1554620602;s:8:"end_time";i:1554620602;s:6:"origin";s:12:"192.168.33.1";s:15:"objects_scanned";i:1;s:16:"detections_count";i:0;s:11:"scan_errors";i:0;s:10:"detections";s:49:"Filetype blacklisted (install-astra+%281%29.php)!";} -a:7:{s:10:"start_time";i:1554620679;s:8:"end_time";i:1554620679;s:6:"origin";s:12:"192.168.33.1";s:15:"objects_scanned";i:1;s:16:"detections_count";i:0;s:11:"scan_errors";i:0;s:10:"detections";s:49:"Filetype blacklisted (install-astra+%281%29.php)!";} -a:7:{s:10:"start_time";i:1554620691;s:8:"end_time";i:1554620691;s:6:"origin";s:12:"192.168.33.1";s:15:"objects_scanned";i:1;s:16:"detections_count";i:0;s:11:"scan_errors";i:0;s:10:"detections";s:49:"Filetype blacklisted (install-astra+%281%29.php)!";} -a:7:{s:10:"start_time";i:1554620738;s:8:"end_time";i:1554620738;s:6:"origin";s:12:"192.168.33.1";s:15:"objects_scanned";i:1;s:16:"detections_count";i:0;s:11:"scan_errors";i:0;s:10:"detections";s:49:"Filetype blacklisted (install-astra+%281%29.php)!";} -a:7:{s:10:"start_time";i:1554620887;s:8:"end_time";i:1554620887;s:6:"origin";s:12:"192.168.33.1";s:15:"objects_scanned";i:1;s:16:"detections_count";i:0;s:11:"scan_errors";i:0;s:10:"detections";s:49:"Filetype blacklisted (install-astra+%281%29.php)!";} diff --git a/libraries/plugins/phpMussel/vault/signatures.dat b/libraries/plugins/phpMussel/vault/signatures.dat deleted file mode 100644 index 8b458aa..0000000 --- a/libraries/plugins/phpMussel/vault/signatures.dat +++ /dev/null @@ -1,9 +0,0 @@ ---- -phpmussel.udb: - Name: phpMussel URL scanner signatures. - Minimum Required: 1.0.0-DEV - Minimum Required PHP: 5.4.0 - Remote: https://raw.githubusercontent.com/phpMussel/Signatures/master/signatures.dat - Uninstallable: true - Reannotate: signatures.dat - diff --git a/libraries/plugins/phpMussel/vault/signatures/.htaccess b/libraries/plugins/phpMussel/vault/signatures/.htaccess deleted file mode 100644 index 3ebfe62..0000000 --- a/libraries/plugins/phpMussel/vault/signatures/.htaccess +++ /dev/null @@ -1,6 +0,0 @@ - - Order Allow,Deny - Deny from All - -Order Allow,Deny -Deny from All diff --git a/libraries/plugins/phpMussel/vault/signatures/switch.dat b/libraries/plugins/phpMussel/vault/signatures/switch.dat deleted file mode 100644 index 51e85c3..0000000 --- a/libraries/plugins/phpMussel/vault/signatures/switch.dat +++ /dev/null @@ -1,47 +0,0 @@ -phpMussel switch file. - -== Sets flags for ignoring some certain ClamAV signature files == -FD-RX:377f068[23]002de218:A:8;infectable=false -FD:252150532d41646f62652d:A:11;infectable=false -FD:28546869732066696c65206d75737420626520636f6e76657274656420776974682042696e48657820342e3029:A:45;infectable=false -FD:2e524d46:A:4;infectable=false -FD:2f5247420a49440affffffffffffffffffffffffffffffffffffffffffffffff:0:128;infectable=false -FD:494433:A:3;infectable=false -FD:4f676753:A:4;infectable=false -FD:5349502d48495420285349502f48:A:14;infectable=false -FD:53514c69746520666f726d6174203300:A:16;infectable=false -FD:53594d430100:A:6;infectable=false -FD:d9d505f920a163d7:A:8;infectable=false -FD:fffb90:A:3;infectable=false - -== Assists with determining potential file content == -$fileswitch:unassigned;FD:4d5a:A:2;fileswitch=pefile -$fileswitch:unassigned;FD-RX:(cafebabe|cafed00d|cefaedfe|cffaedfe|feedface|feedfacf):A:4;fileswitch=java -$fileswitch:unassigned;FD:494433:A:3;fileswitch=mp3 -$fileswitch:unassigned;FD:fffb90:A:3;fileswitch=mp3 -$fileswitch:unassigned;FD-NORM-RX:23212f7573722f(6c6f63616c2f)?62696e2f(656e76)?7065726c:A:24;fileswitch=perl -$fileswitch:unassigned;FD:43723234:A:4;fileswitch=chrome -$fileswitch:unassigned;FD:4c00000001140200:A:8;fileswitch=lnk -$fileswitch:unassigned;FD:d0cf11:A:3;fileswitch=docfile -$fileswitch:unassigned;FD-NORM-RX:23212f7573722f(6c6f63616c2f)?62696e2f(656e76)?707974686f6e:A:26;fileswitch=py -$fileswitch:unassigned;FD-NORM:6372656174656f626a656374;fileswitch=vb -$fileswitch:unassigned;FD-NORM:406563686f;fileswitch=bat -$fileswitch:unassigned;FD-NORM-RX:3c736372697074.{0,128}(6c616e67756167653d2[27]76627363726970742[27]|747970653d2[27]746578742f76627363726970742[27]);fileswitch=vb -$fileswitch:unassigned;FD-NORM-RX:3c736372697074.{0,128}(6c616e67756167653d2[27]6a6176617363726970742[27]|747970653d2[27]746578742f6a6176617363726970742[27]);fileswitch=js -$fileswitch:unassigned;FD-NORM-RX:3c25406c616e67756167653d(2[27])?76627363726970742e656e636f6465;fileswitch=vb -$fileswitch:unassigned;FD-NORM-RX:23212f7573722f(6c6f63616c2f)?62696e2f(656e76)?72756279:A:24;fileswitch=ruby -$fileswitch:unassigned;FN:\.([Bb][Aa][Tt]|[Cc][Mm][Dd]|[Bb][Tt][Mm])$;fileswitch=bat -$fileswitch:unassigned;FN:\.([Vv][Bb].{0,3}|[Ww][Ss][CcFf]|[Hh][Tt][Aa]?[Mm]?[Ll]?)$;fileswitch=vb -$fileswitch:unassigned;FN:\.[Mm][Pp].$;fileswitch=mp3 -$fileswitch:unassigned;FD:3c25:A:2;fileswitch=asp -$fileswitch:unassigned;FN:\.([Aa][Uu][Tt][Oo][Rr][Uu][Nn]|[Ii][Nn][Ff]|[Ii][Nn][Ii]|[Cc][Ff][Gg])$;fileswitch=inf -$fileswitch:unassigned;FN:\.[Aa][Ss][Pp].?$;fileswitch=asp -$fileswitch:unassigned;FN:\.[Jj][Ss]([Pp][Xx]?|[Oo][Nn])?$;fileswitch=js -$fileswitch:unassigned;FN:\.[Pp][Yy].?$;fileswitch=py -$fileswitch:unassigned;FN:\.[Jj][Aa]([Vv][Aa]|[Rr])$;fileswitch=java -$fileswitch:unassigned;FN:\.[Pp]([Ee][Rr])?[Ll]$;fileswitch=perl -$fileswitch:unassigned;FN:\.[Cc][Gg][Ii]$;fileswitch=cgi -$fileswitch:unassigned;FN:\.([Rr][Uu]?[Bb][WwYy]?|[Gg][Ee][Mm])$;fileswitch=ruby -$fileswitch:unassigned;FN:\.([Cc][Vv][Dd]|[Ii][Nn][Cc]|[Mm][Dd]|[Tt][Xx][Tt])$;fileswitch=ignore -$fileswitch:unassigned;FD-RX:(1f8b|425a68|504b|52617221|7f454c46):A:4;fileswitch=vt_interest -$fileswitch:unassigned;FD:7801:A:2;FD:6b6f6c79:-512;fileswitch=vt_interest diff --git a/libraries/plugins/phpMussel/vault/template_custom.html b/libraries/plugins/phpMussel/vault/template_custom.html deleted file mode 100644 index 7838e72..0000000 --- a/libraries/plugins/phpMussel/vault/template_custom.html +++ /dev/null @@ -1,33 +0,0 @@ - - - - - - - - - - phpMussel - - - -
        -
        -
        -
        -
        {denied}
        -
        {denied_reason}
        -
        -
        {detected}
        -
        - -
        -
        - - - diff --git a/libraries/plugins/phpMussel/vault/template_default.html b/libraries/plugins/phpMussel/vault/template_default.html deleted file mode 100644 index 66f33db..0000000 --- a/libraries/plugins/phpMussel/vault/template_default.html +++ /dev/null @@ -1,93 +0,0 @@ - - - - - Attention! - - - - -
        - What ASTRA Means -
        -

        Sorry, this is not allowed.

        -

        Thank you for visiting our website, unfortunately our website protection system has detected an issue with your IP address and wont let you proceed any further.

        {detected}

        If you feel this is an error, please email us with the time you had the issue to s...@getastra.com. Thank you for your patience.

        -

        https://www.getastra.com/

        - - - - - \ No newline at end of file diff --git a/libraries/plugins/phpMussel/vault/themes.dat b/libraries/plugins/phpMussel/vault/themes.dat deleted file mode 100644 index 02330d3..0000000 --- a/libraries/plugins/phpMussel/vault/themes.dat +++ /dev/null @@ -1,30 +0,0 @@ ---- -theme/rbi: - Name: Theme: Red-Blue Inverted - Extended Description: Exactly the same as the default theme, but with some of the colours swapped around. No big changes.
        Author: Caleb M (Maikuolan) - Minimum Required: 1.0.0-DEV - Remote: https://raw.githubusercontent.com/phpMussel/themes/master/FE/themes.dat - Uninstallable: true - Reannotate: themes.dat -theme/slate: - Name: Theme: Slate - Extended Description: Simple layout; Gentle, darker colours.
        Author: Caleb M (Maikuolan) - Minimum Required: 1.0.0-DEV - Remote: https://raw.githubusercontent.com/phpMussel/themes/master/FE/themes.dat - Uninstallable: true - Reannotate: themes.dat -theme/bluemetal: - Name: Theme: Blue Metal - Extended Description: Simple blue/black colour scheme with gentle tones.
        Author: Caleb M (Maikuolan), based on previous work by Daniel R. - Minimum Required: 1.0.0-DEV - Remote: https://raw.githubusercontent.com/phpMussel/themes/master/FE/themes.dat - Uninstallable: true - Reannotate: themes.dat -theme/moss: - Name: Theme: Moss - Extended Description: Inspired by the colours of nature.
        Author: Caleb M (Maikuolan) - Minimum Required: 1.0.0-DEV - Remote: https://raw.githubusercontent.com/phpMussel/themes/master/FE/themes.dat - Uninstallable: true - Reannotate: themes.dat - diff --git a/libraries/plugins/phpMussel/vault/upload.php b/libraries/plugins/phpMussel/vault/upload.php deleted file mode 100644 index 1c03d09..0000000 --- a/libraries/plugins/phpMussel/vault/upload.php +++ /dev/null @@ -1,401 +0,0 @@ - 0 && !$phpMussel['Config']['general']['maintenance_mode']) { - - /** - * Whenever something is detected in a file being scanned, a human-readable - * description of what has been detected is appended to - * $phpMussel['whyflagged']; This variable contains the "Detected ... !" - * message you see on the "Upload Denied!" page generated whenever a file - * upload has been blocked. - * - * The $phpMussel['killdata'] variable contains a hash reference to every - * file upload blocked and to every file where something has been detected - * in that file, in the form of "FILE-MD5-HASH:FILESIZE:FILENAME". - * - * If the file being scanned happens to be a PE file, in addition to the - * information appended to $phpMussel['whyflagged'] and - * $phpMussel['killdata'], reconstructed references to the PE sections of - * that PE file will be appended to the $phpMussel['PEData'] variable. - * - * If logging is enabled, the information contained by these three - * variables will all be logged as per the specified by the logging-related - * directives of the phpMussel configuration file. - */ - $phpMussel['whyflagged'] = $phpMussel['killdata'] = $phpMussel['PEData'] = ''; - - /** Create an array for our hash cache data. */ - $phpMussel['HashCache'] = []; - - /** Fetch the hash cache (a record of recently scanned files). */ - $phpMussel['HashCache']['Data'] = ( - $phpMussel['upload']['count'] > 0 && $phpMussel['Config']['general']['scan_cache_expiry'] > 0 - ) ? $phpMussel['FetchCache']('HashCache') : ''; - - /** Process the hash cache. */ - if (!empty($phpMussel['HashCache']['Data'])) { - $phpMussel['HashCache']['Data'] = explode(';', $phpMussel['HashCache']['Data']); - $phpMussel['HashCache']['Build'] = []; - foreach ($phpMussel['HashCache']['Data'] as &$phpMussel['HashCache']['This']) { - if (strpos($phpMussel['HashCache']['This'], ':') !== false) { - $phpMussel['HashCache']['This'] = explode(':', $phpMussel['HashCache']['This'], 4); - if ($phpMussel['Time'] <= $phpMussel['HashCache']['This'][1]) { - $phpMussel['HashCache']['Build'][$phpMussel['HashCache']['This'][0]] = - $phpMussel['HashCache']['This']; - } - } - } - $phpMussel['HashCache']['Data'] = $phpMussel['HashCache']['Build']; - unset($phpMussel['HashCache']['This'], $phpMussel['HashCache']['Build']); - } - - /** Reset the $_FILES caret. */ - reset($_FILES); - - /** File upload scan start time. */ - $phpMussel['memCache']['start_time'] = time() + ($phpMussel['Config']['general']['timeOffset'] * 60); - - /** Create an array for normalising the $_FILES data. */ - $phpMussel['upload']['FilesData'] = []; - - /** Generate "HONEYPOT EVENT" header (if "honeypot_mode" is enabled). */ - if ($phpMussel['Config']['general']['honeypot_mode']) { - $phpMussel['memCache']['Handle'] = ['qdata' => - "== HONEYPOT EVENT ==\nDATE: " . $phpMussel['TimeFormat']( - $phpMussel['memCache']['start_time'], - $phpMussel['Config']['general']['timeFormat'] - ) . "\nIP ADDRESS: " . $_SERVER[$phpMussel['Config']['general']['ipaddr']] . "\n" - ]; - } - - for ( - $phpMussel['upload']['FilesData']['i'] = 0; - $phpMussel['upload']['FilesData']['i'] < $phpMussel['upload']['count']; - $phpMussel['upload']['FilesData']['i']++ - ) { - $phpMussel['upload']['FilesData']['k'] = key($_FILES); - if (!isset($_FILES[$phpMussel['upload']['FilesData']['k']]['error'])) { - next($_FILES); - continue; - } - /** Begin normalising the $_FILES data to the "FilesData" array. */ - if (!is_array($_FILES[$phpMussel['upload']['FilesData']['k']]['error'])) { - $phpMussel['upload']['FilesData']['FileSet'] = [ - 'name' => [$_FILES[$phpMussel['upload']['FilesData']['k']]['name']], - 'type' => [$_FILES[$phpMussel['upload']['FilesData']['k']]['type']], - 'tmp_name' => [$_FILES[$phpMussel['upload']['FilesData']['k']]['tmp_name']], - 'error' => [$_FILES[$phpMussel['upload']['FilesData']['k']]['error']], - 'size' => [$_FILES[$phpMussel['upload']['FilesData']['k']]['size']] - ]; - } else { - $phpMussel['upload']['FilesData']['FileSet'] = - $_FILES[$phpMussel['upload']['FilesData']['k']]; - } - $phpMussel['upload']['FilesData']['FileSet']['c'] = count( - $phpMussel['upload']['FilesData']['FileSet']['error'] - ); - - for ( - $phpMussel['upload']['FilesData']['FileSet']['i'] = 0, $phpMussel['SkipSerial'] = true; - $phpMussel['upload']['FilesData']['FileSet']['i'] < $phpMussel['upload']['FilesData']['FileSet']['c']; - $phpMussel['upload']['FilesData']['FileSet']['i']++ - ) { - if (!isset($phpMussel['upload']['FilesData']['FileSet']['name'][$phpMussel['upload']['FilesData']['FileSet']['i']])) { - $phpMussel['upload']['FilesData']['FileSet']['name'][$phpMussel['upload']['FilesData']['FileSet']['i']] = ''; - } - if (!isset($phpMussel['upload']['FilesData']['FileSet']['type'][$phpMussel['upload']['FilesData']['FileSet']['i']])) { - $phpMussel['upload']['FilesData']['FileSet']['type'][$phpMussel['upload']['FilesData']['FileSet']['i']] = ''; - } - if (!isset($phpMussel['upload']['FilesData']['FileSet']['tmp_name'][$phpMussel['upload']['FilesData']['FileSet']['i']])) { - $phpMussel['upload']['FilesData']['FileSet']['tmp_name'][$phpMussel['upload']['FilesData']['FileSet']['i']] = ''; - } - if (!isset($phpMussel['upload']['FilesData']['FileSet']['error'][$phpMussel['upload']['FilesData']['FileSet']['i']])) { - $phpMussel['upload']['FilesData']['FileSet']['error'][$phpMussel['upload']['FilesData']['FileSet']['i']] = 0; - } - if (!isset($phpMussel['upload']['FilesData']['FileSet']['size'][$phpMussel['upload']['FilesData']['FileSet']['i']])) { - $phpMussel['upload']['FilesData']['FileSet']['size'][$phpMussel['upload']['FilesData']['FileSet']['i']] = 0; - } - - unset($phpMussel['upload']['ThisError']); - $phpMussel['upload']['ThisError'] = &$phpMussel['upload']['FilesData']['FileSet']['error'][$phpMussel['upload']['FilesData']['FileSet']['i']]; - - /** Handle upload errors. */ - if ($phpMussel['upload']['ThisError'] > 0) { - if ( - $phpMussel['Config']['compatibility']['ignore_upload_errors'] || - $phpMussel['upload']['ThisError'] > 8 || - $phpMussel['upload']['ThisError'] === 5 - ) { - continue; - } - $phpMussel['killdata'] .= sprintf( - "---------UPLOAD-ERROR-%d---------:%d:%s\n", - $phpMussel['upload']['ThisError'], - $phpMussel['upload']['FilesData']['FileSet']['size'][$phpMussel['upload']['FilesData']['FileSet']['i']], - $phpMussel['upload']['FilesData']['FileSet']['name'][$phpMussel['upload']['FilesData']['FileSet']['i']] - ); - $phpMussel['whyflagged'] .= ( - $phpMussel['upload']['ThisError'] === 3 || $phpMussel['upload']['ThisError'] === 4 - ) ? $phpMussel['lang']['upload_error_34'] : $phpMussel['lang']['upload_error_' . $phpMussel['upload']['ThisError']]; - if ( - ($phpMussel['upload']['ThisError'] === 1 || $phpMussel['upload']['ThisError'] === 2) && - $phpMussel['Config']['general']['delete_on_sight'] && - is_uploaded_file($phpMussel['upload']['FilesData']['FileSet']['tmp_name'][$phpMussel['upload']['FilesData']['FileSet']['i']]) && - is_readable($phpMussel['upload']['FilesData']['FileSet']['tmp_name'][$phpMussel['upload']['FilesData']['FileSet']['i']]) - ) { - unlink($phpMussel['upload']['FilesData']['FileSet']['tmp_name'][$phpMussel['upload']['FilesData']['FileSet']['i']]); - } - continue; - } - - /** Protection against upload spoofing. */ - if (!is_uploaded_file($phpMussel['upload']['FilesData']['FileSet']['tmp_name'][$phpMussel['upload']['FilesData']['FileSet']['i']])) { - $phpMussel['killdata'] .= sprintf( - "UNAUTHORISED-FILE-UPLOAD-NO-HASH:%d:%s\n", - $phpMussel['upload']['FilesData']['FileSet']['size'][$phpMussel['upload']['FilesData']['FileSet']['i']], - $phpMussel['upload']['FilesData']['FileSet']['name'][$phpMussel['upload']['FilesData']['FileSet']['i']] - ); - $phpMussel['whyflagged'] .= sprintf( - '%s (%s)%s', - $phpMussel['lang']['scan_unauthorised_upload'], - $phpMussel['upload']['FilesData']['FileSet']['name'][$phpMussel['upload']['FilesData']['FileSet']['i']], - $phpMussel['lang']['_exclamation'] - ); - } elseif ( - !$phpMussel['upload']['FilesData']['FileSet']['name'][$phpMussel['upload']['FilesData']['FileSet']['i']] || - !$phpMussel['upload']['FilesData']['FileSet']['tmp_name'][$phpMussel['upload']['FilesData']['FileSet']['i']] - ) { - $phpMussel['killdata'] .= "-UNAUTHORISED-UPLOAD-MISCONFIG-:?:?\n"; - $phpMussel['whyflagged'] .= $phpMussel['lang']['scan_unauthorised_upload_or_misconfig']; - } else { - - /** Honeypot code. */ - if ( - $phpMussel['Config']['general']['honeypot_mode'] && - $phpMussel['Config']['general']['quarantine_key'] - ) { - $phpMussel['ReadFile-For-Honeypot']( - $phpMussel['memCache']['Handle'], - $phpMussel['upload']['FilesData']['FileSet']['tmp_name'][$phpMussel['upload']['FilesData']['FileSet']['i']] - ); - } - - /** Process this block if the number of files being uploaded exceeds "max_uploads". */ - if ( - $phpMussel['upload']['count'] > $phpMussel['Config']['files']['max_uploads'] && - $phpMussel['Config']['files']['max_uploads'] >= 1 - ) { - $phpMussel['KillAndUnlink'](); - continue; - } - - /** Used for serialised logging. */ - if ($phpMussel['upload']['FilesData']['FileSet']['i'] === ($phpMussel['upload']['FilesData']['FileSet']['c'] - 1)) { - unset($phpMussel['SkipSerial']); - } - - /** Execute the scan! */ - try { - $r = $phpMussel['Scan']( - $phpMussel['upload']['FilesData']['FileSet']['tmp_name'][$phpMussel['upload']['FilesData']['FileSet']['i']], - true, - true, - 0, - $phpMussel['upload']['FilesData']['FileSet']['name'][$phpMussel['upload']['FilesData']['FileSet']['i']] - ); - } catch (\Exception $e) { - die($e->getMessage()); - } - - } - } - next($_FILES); - - } - - /** Honeypot code. */ - if ( - $phpMussel['Config']['general']['honeypot_mode'] && - $phpMussel['Config']['general']['scan_kills'] && - is_array($phpMussel['memCache']['Handle']) - ) { - $phpMussel['memCache']['Handle']['File'] = $phpMussel['TimeFormat']($phpMussel['Time'], $phpMussel['Config']['general']['scan_kills']); - if (!file_exists($phpMussel['Vault'] . $phpMussel['memCache']['Handle']['File'])) { - $phpMussel['memCache']['Handle']['qdata'] = - $phpMussel['safety'] . "\n\n" . $phpMussel['memCache']['Handle']['qdata']; - } - $phpMussel['memCache']['Handle']['Stream'] = - fopen($phpMussel['Vault'] . $phpMussel['memCache']['Handle']['File'], 'a'); - fwrite($phpMussel['memCache']['Handle']['Stream'], $phpMussel['memCache']['Handle']['qdata']); - fclose($phpMussel['memCache']['Handle']['Stream']); - $phpMussel['memCache']['Handle'] = ''; - } - - /** Update the hash cache. */ - if ($phpMussel['Config']['general']['scan_cache_expiry'] > 0 && !empty($phpMussel['HashCache']['Data']) && is_array($phpMussel['HashCache']['Data'])) { - - $phpMussel['HashCache']['Data'] = array_map(function ($Item) { - return is_array($Item) ? implode(':', $Item) . ';' : $Item; - }, $phpMussel['HashCache']['Data']); - $phpMussel['HashCache']['Data'] = implode('', $phpMussel['HashCache']['Data']); - $phpMussel['HashCache']['Data'] = $phpMussel['SaveCache']( - 'HashCache', - $phpMussel['Time'] + $phpMussel['Config']['general']['scan_cache_expiry'], - $phpMussel['HashCache']['Data'] - ); - unset($phpMussel['HashCache']); - - } - - /** File upload scan finish time. */ - $phpMussel['memCache']['end_time'] = time() + ($phpMussel['Config']['general']['timeOffset'] * 60); - - /** Trim trailing whitespace. */ - $phpMussel['whyflagged'] = trim($phpMussel['whyflagged']); - - /** Reset the $_FILES caret. */ - reset($_FILES); - - /** Begin processing file upload detections. */ - if ($phpMussel['whyflagged']) { - - /** A fix for correctly displaying LTR/RTL text. */ - if (empty($phpMussel['lang']['textDir']) || $phpMussel['lang']['textDir'] !== 'rtl') { - $phpMussel['lang']['textDir'] = 'ltr'; - } - - /** Merging parsable variables for the template data. */ - $phpMussel['TemplateData'] = $phpMussel['lang'] + $phpMussel['Config']['template_data']; - $phpMussel['TemplateData']['detected'] = $phpMussel['whyflagged']; - $phpMussel['TemplateData']['phpmusselversion'] = $phpMussel['ScriptIdent']; - $phpMussel['TemplateData']['favicon'] = $phpMussel['favicon']; - $phpMussel['TemplateData']['xmlLang'] = $phpMussel['Config']['general']['lang']; - - /** Determine which template file to use, if this hasn't already been determined. */ - if (!isset($phpMussel['memCache']['template_file'])) { - $phpMussel['memCache']['template_file'] = !$phpMussel['Config']['template_data']['css_url'] ? - 'template_' . $phpMussel['Config']['template_data']['theme'] . '.html' : 'template_custom.html'; - } - - /** Fallback for themes without default template files. */ - if ( - $phpMussel['Config']['template_data']['theme'] !== 'default' && - !$phpMussel['Config']['template_data']['css_url'] && - !file_exists($phpMussel['Vault'] . $phpMussel['memCache']['template_file']) - ) { - $phpMussel['memCache']['template_file'] = 'template_default.html'; - } - - /** Log "scan_kills" data. */ - if ($phpMussel['Config']['general']['scan_kills'] && !empty($phpMussel['killdata'])) { - $phpMussel['memCache']['Handle'] = [ - 'File' => $phpMussel['TimeFormat']($phpMussel['Time'], $phpMussel['Config']['general']['scan_kills']) - ]; - $phpMussel['memCache']['Handle']['WriteMode'] = ( - !file_exists($phpMussel['Vault'] . $phpMussel['memCache']['Handle']['File']) || ( - $phpMussel['Config']['general']['truncate'] > 0 && - filesize($phpMussel['Vault'] . $phpMussel['memCache']['Handle']['File']) >= $phpMussel['ReadBytes']($phpMussel['Config']['general']['truncate']) - ) - ) ? 'w' : 'a'; - $phpMussel['memCache']['Handle']['Data'] = - !file_exists($phpMussel['Vault'] . $phpMussel['memCache']['Handle']['File']) ? $phpMussel['safety'] . "\n\n" : ''; - $phpMussel['memCache']['Handle']['Data'] .= - 'DATE: ' . $phpMussel['TimeFormat']($phpMussel['Time'], $phpMussel['Config']['general']['timeFormat']) . - "\nIP ADDRESS: " . $_SERVER[$phpMussel['Config']['general']['ipaddr']] . - "\n== SCAN RESULTS / WHY FLAGGED ==\n" . - $phpMussel['whyflagged'] . - "\n== MD5 SIGNATURE RECONSTRUCTION (FILE-HASH:FILE-SIZE:FILE-NAME) ==\n" . - $phpMussel['killdata']; - if ($phpMussel['PEData']) { - $phpMussel['memCache']['Handle']['Data'] .= - "== PE SECTIONAL SIGNATURES RECONSTRUCTION (SECTION-SIZE:SECTION-HASH:FILE-NAME--SECTION-NAME) ==\n" . - $phpMussel['PEData']; - } - $phpMussel['memCache']['Handle']['Data'] .= "\n"; - $phpMussel['memCache']['Handle']['Stream'] = - fopen($phpMussel['Vault'] . $phpMussel['memCache']['Handle']['File'], $phpMussel['memCache']['Handle']['WriteMode']); - fwrite($phpMussel['memCache']['Handle']['Stream'], $phpMussel['memCache']['Handle']['Data']); - fclose($phpMussel['memCache']['Handle']['Stream']); - $phpMussel['memCache']['Handle'] = ''; - } - - /** Fallback to use if the HTML template file is missing. */ - if (!file_exists($phpMussel['Vault'] . $phpMussel['memCache']['template_file'])) { - header('Content-Type: text/plain'); - die('[phpMussel] ' . $phpMussel['lang']['denied'] . ' ' . $phpMussel['TemplateData']['detected']); - } - - /** Send a 403 FORBIDDEN status code to the client if "forbid_on_block" is enabled. */ - if ($phpMussel['Config']['general']['forbid_on_block']) { - header('HTTP/1.0 403 Forbidden'); - header('HTTP/1.1 403 Forbidden'); - header('Status: 403 Forbidden'); - } - - /** Generate HTML output. */ - $phpMussel['HTML'] = $phpMussel['ParseVars']( - $phpMussel['TemplateData'], - $phpMussel['ReadFile']($phpMussel['Vault'] . $phpMussel['memCache']['template_file'], 0, true) - ); - - /** Plugin hook: "before_html_out". */ - $phpMussel['Execute_Hook']('before_html_out'); - - /** Handle webfonts. */ - if (empty($phpMussel['Config']['general']['disable_webfonts'])) { - $phpMussel['HTML'] = str_replace(['', ''], '', $phpMussel['HTML']); - } else { - $phpMussel['WebFontPos'] = [ - 'Begin' => strpos($phpMussel['HTML'], ''), - 'End' => strpos($phpMussel['HTML'], '') - ]; - $phpMussel['HTML'] = - substr($phpMussel['HTML'], 0, $phpMussel['WebFontPos']['Begin']) . substr($phpMussel['HTML'], $phpMussel['WebFontPos']['End'] + 20); - unset($phpMussel['WebFontPos']); - } - - /** Send HTML output and the kill the script. */ - die($phpMussel['HTML']); - - } - -} - -/** Exit the upload handler cleanly. */ -unset($phpMussel['upload']); - -/** Restores default error handler. */ -restore_error_handler(); diff --git a/upgrade.php b/upgrade.php deleted file mode 100644 index 4e7fda5..0000000 --- a/upgrade.php +++ /dev/null @@ -1,21 +0,0 @@ - \ No newline at end of file