Code Coverage |
||||||||||
Classes and Traits |
Functions and Methods |
Lines |
||||||||
| Total | |
0.00% |
0 / 4 |
|
0.00% |
0 / 13 |
CRAP | |
0.00% |
0 / 340 |
| phpbb_questionnaire_data_collector | |
0.00% |
0 / 1 |
|
0.00% |
0 / 5 |
56 | |
0.00% |
0 / 25 |
| __construct | |
0.00% |
0 / 1 |
2 | |
0.00% |
0 / 4 |
|||
| add_data_provider | |
0.00% |
0 / 1 |
2 | |
0.00% |
0 / 3 |
|||
| get_data_raw | |
0.00% |
0 / 1 |
6 | |
0.00% |
0 / 7 |
|||
| get_data_for_form | |
0.00% |
0 / 1 |
2 | |
0.00% |
0 / 3 |
|||
| collect | |
0.00% |
0 / 1 |
6 | |
0.00% |
0 / 8 |
|||
| phpbb_questionnaire_php_data_provider | |
0.00% |
0 / 1 |
|
0.00% |
0 / 2 |
12 | |
0.00% |
0 / 28 |
| get_identifier | |
0.00% |
0 / 1 |
2 | |
0.00% |
0 / 3 |
|||
| get_data | |
0.00% |
0 / 1 |
6 | |
0.00% |
0 / 25 |
|||
| phpbb_questionnaire_system_data_provider | |
0.00% |
0 / 1 |
|
0.00% |
0 / 3 |
210 | |
0.00% |
0 / 38 |
| get_identifier | |
0.00% |
0 / 1 |
2 | |
0.00% |
0 / 3 |
|||
| get_data | |
0.00% |
0 / 1 |
2 | |
0.00% |
0 / 10 |
|||
| is_private_ip | |
0.00% |
0 / 1 |
156 | |
0.00% |
0 / 25 |
|||
| phpbb_questionnaire_phpbb_data_provider | |
0.00% |
0 / 1 |
|
0.00% |
0 / 3 |
72 | |
0.00% |
0 / 245 |
| __construct | |
0.00% |
0 / 1 |
6 | |
0.00% |
0 / 12 |
|||
| get_identifier | |
0.00% |
0 / 1 |
2 | |
0.00% |
0 / 3 |
|||
| get_data | |
0.00% |
0 / 1 |
30 | |
0.00% |
0 / 230 |
|||
| <?php | |
| /** | |
| * | |
| * This file is part of the phpBB Forum Software package. | |
| * | |
| * @copyright (c) phpBB Limited <https://www.phpbb.com> | |
| * @license GNU General Public License, version 2 (GPL-2.0) | |
| * | |
| * For full copyright and license information, please see | |
| * the docs/CREDITS.txt file. | |
| * | |
| */ | |
| /** | |
| * @ignore | |
| */ | |
| if (!defined('IN_PHPBB')) | |
| { | |
| exit; | |
| } | |
| /** | |
| * This class collects data which is used to create some usage statistics. | |
| * | |
| * The collected data is - after authorization of the administrator - submitted | |
| * to a central server. For privacy reasons we try to collect only data which aren't private | |
| * or don't give any information which might help to identify the user. | |
| * | |
| * @author Johannes Schlueter <johannes@php.net> | |
| * @copyright (c) 2007-2008 Johannes Schlueter | |
| */ | |
| class phpbb_questionnaire_data_collector | |
| { | |
| var $providers; | |
| var $data = null; | |
| var $install_id = ''; | |
| /** | |
| * Constructor. | |
| * | |
| * @param string | |
| */ | |
| function __construct($install_id) | |
| { | |
| $this->install_id = $install_id; | |
| $this->providers = array(); | |
| } | |
| function add_data_provider($provider) | |
| { | |
| $this->providers[] = $provider; | |
| } | |
| /** | |
| * Get data as an array. | |
| * | |
| * @return array All Data | |
| */ | |
| function get_data_raw() | |
| { | |
| if (!$this->data) | |
| { | |
| $this->collect(); | |
| } | |
| return $this->data; | |
| } | |
| function get_data_for_form() | |
| { | |
| return base64_encode(serialize($this->get_data_raw())); | |
| } | |
| /** | |
| * Collect info into the data property. | |
| * | |
| * @return null | |
| */ | |
| function collect() | |
| { | |
| foreach (array_keys($this->providers) as $key) | |
| { | |
| $provider = $this->providers[$key]; | |
| $this->data[$provider->get_identifier()] = $provider->get_data(); | |
| } | |
| $this->data['install_id'] = $this->install_id; | |
| } | |
| } | |
| /** interface: get_indentifier(), get_data() */ | |
| /** | |
| * Questionnaire PHP data provider | |
| */ | |
| class phpbb_questionnaire_php_data_provider | |
| { | |
| function get_identifier() | |
| { | |
| return 'PHP'; | |
| } | |
| /** | |
| * Get data about the PHP runtime setup. | |
| * | |
| * @return array | |
| */ | |
| function get_data() | |
| { | |
| return array( | |
| 'version' => PHP_VERSION, | |
| 'sapi' => PHP_SAPI, | |
| 'int_size' => defined('PHP_INT_SIZE') ? PHP_INT_SIZE : '', | |
| 'safe_mode' => (int) @ini_get('safe_mode'), | |
| 'open_basedir' => (int) @ini_get('open_basedir'), | |
| 'memory_limit' => @ini_get('memory_limit'), | |
| 'allow_url_fopen' => (int) @ini_get('allow_url_fopen'), | |
| 'allow_url_include' => (int) @ini_get('allow_url_include'), | |
| 'file_uploads' => (int) @ini_get('file_uploads'), | |
| 'upload_max_filesize' => @ini_get('upload_max_filesize'), | |
| 'post_max_size' => @ini_get('post_max_size'), | |
| 'disable_functions' => @ini_get('disable_functions'), | |
| 'disable_classes' => @ini_get('disable_classes'), | |
| 'enable_dl' => (int) @ini_get('enable_dl'), | |
| 'magic_quotes_gpc' => (int) @ini_get('magic_quotes_gpc'), | |
| 'register_globals' => (int) @ini_get('register_globals'), | |
| 'filter.default' => @ini_get('filter.default'), | |
| 'zend.ze1_compatibility_mode' => (int) @ini_get('zend.ze1_compatibility_mode'), | |
| 'unicode.semantics' => (int) @ini_get('unicode.semantics'), | |
| 'zend_thread_safty' => (int) function_exists('zend_thread_id'), | |
| 'extensions' => get_loaded_extensions(), | |
| ); | |
| } | |
| } | |
| /** | |
| * Questionnaire System data provider | |
| */ | |
| class phpbb_questionnaire_system_data_provider | |
| { | |
| function get_identifier() | |
| { | |
| return 'System'; | |
| } | |
| /** | |
| * Get data about the general system information, like OS or IP (shortened). | |
| * | |
| * @return array | |
| */ | |
| function get_data() | |
| { | |
| global $request; | |
| // Start discovering the IPV4 server address, if available | |
| // Try apache, IIS, fall back to 0.0.0.0 | |
| $server_address = htmlspecialchars_decode($request->server('SERVER_ADDR', $request->server('LOCAL_ADDR', '0.0.0.0'))); | |
| return array( | |
| 'os' => PHP_OS, | |
| 'httpd' => htmlspecialchars_decode($request->server('SERVER_SOFTWARE')), | |
| // we don't want the real IP address (for privacy policy reasons) but only | |
| // a network address to see whether your installation is running on a private or public network. | |
| 'private_ip' => $this->is_private_ip($server_address), | |
| 'ipv6' => strpos($server_address, ':') !== false, | |
| ); | |
| } | |
| /** | |
| * Checks whether the given IP is in a private network. | |
| * | |
| * @param string $ip IP in v4 dot-decimal or v6 hex format | |
| * @return bool true if the IP is from a private network, else false | |
| */ | |
| function is_private_ip($ip) | |
| { | |
| // IPv4 | |
| if (strpos($ip, ':') === false) | |
| { | |
| $ip_address_ary = explode('.', $ip); | |
| // build ip | |
| if (!isset($ip_address_ary[0]) || !isset($ip_address_ary[1])) | |
| { | |
| $ip_address_ary = explode('.', '0.0.0.0'); | |
| } | |
| // IANA reserved addresses for private networks (RFC 1918) are: | |
| // - 10.0.0.0/8 | |
| // - 172.16.0.0/12 | |
| // - 192.168.0.0/16 | |
| if ($ip_address_ary[0] == '10' || | |
| ($ip_address_ary[0] == '172' && intval($ip_address_ary[1]) > 15 && intval($ip_address_ary[1]) < 32) || | |
| ($ip_address_ary[0] == '192' && $ip_address_ary[1] == '168')) | |
| { | |
| return true; | |
| } | |
| } | |
| // IPv6 | |
| else | |
| { | |
| // unique local unicast | |
| $prefix = substr($ip, 0, 2); | |
| if ($prefix == 'fc' || $prefix == 'fd') | |
| { | |
| return true; | |
| } | |
| } | |
| return false; | |
| } | |
| } | |
| /** | |
| * Questionnaire phpBB data provider | |
| */ | |
| class phpbb_questionnaire_phpbb_data_provider | |
| { | |
| var $config; | |
| var $unique_id; | |
| /** | |
| * Constructor. | |
| * | |
| * @param array $config | |
| */ | |
| function __construct($config) | |
| { | |
| // generate a unique id if necessary | |
| if (empty($config['questionnaire_unique_id'])) | |
| { | |
| $this->unique_id = unique_id(); | |
| $config->set('questionnaire_unique_id', $this->unique_id); | |
| } | |
| else | |
| { | |
| $this->unique_id = $config['questionnaire_unique_id']; | |
| } | |
| $this->config = $config; | |
| } | |
| /** | |
| * Returns a string identifier for this data provider | |
| * | |
| * @return string "phpBB" | |
| */ | |
| function get_identifier() | |
| { | |
| return 'phpBB'; | |
| } | |
| /** | |
| * Get data about this phpBB installation. | |
| * | |
| * @return array Relevant anonymous config options | |
| */ | |
| function get_data() | |
| { | |
| global $phpbb_config_php_file; | |
| extract($phpbb_config_php_file->get_all()); | |
| unset($dbhost, $dbport, $dbname, $dbuser, $dbpasswd); // Just a precaution | |
| $dbms = $phpbb_config_php_file->convert_30_dbms_to_31($dbms); | |
| // Only send certain config vars | |
| $config_vars = array( | |
| 'active_sessions' => true, | |
| 'allow_attachments' => true, | |
| 'allow_autologin' => true, | |
| 'allow_avatar' => true, | |
| 'allow_avatar_local' => true, | |
| 'allow_avatar_remote' => true, | |
| 'allow_avatar_upload' => true, | |
| 'allow_bbcode' => true, | |
| 'allow_birthdays' => true, | |
| 'allow_bookmarks' => true, | |
| 'allow_emailreuse' => true, | |
| 'allow_forum_notify' => true, | |
| 'allow_mass_pm' => true, | |
| 'allow_name_chars' => true, | |
| 'allow_namechange' => true, | |
| 'allow_nocensors' => true, | |
| 'allow_pm_attach' => true, | |
| 'allow_pm_report' => true, | |
| 'allow_post_flash' => true, | |
| 'allow_post_links' => true, | |
| 'allow_privmsg' => true, | |
| 'allow_quick_reply' => true, | |
| 'allow_sig' => true, | |
| 'allow_sig_bbcode' => true, | |
| 'allow_sig_flash' => true, | |
| 'allow_sig_img' => true, | |
| 'allow_sig_links' => true, | |
| 'allow_sig_pm' => true, | |
| 'allow_sig_smilies' => true, | |
| 'allow_smilies' => true, | |
| 'allow_topic_notify' => true, | |
| 'attachment_quota' => true, | |
| 'auth_bbcode_pm' => true, | |
| 'auth_flash_pm' => true, | |
| 'auth_img_pm' => true, | |
| 'auth_method' => true, | |
| 'auth_smilies_pm' => true, | |
| 'avatar_filesize' => true, | |
| 'avatar_max_height' => true, | |
| 'avatar_max_width' => true, | |
| 'avatar_min_height' => true, | |
| 'avatar_min_width' => true, | |
| 'board_email_form' => true, | |
| 'board_hide_emails' => true, | |
| 'board_timezone' => true, | |
| 'browser_check' => true, | |
| 'bump_interval' => true, | |
| 'bump_type' => true, | |
| 'cache_gc' => true, | |
| 'captcha_plugin' => true, | |
| 'captcha_gd' => true, | |
| 'captcha_gd_foreground_noise' => true, | |
| 'captcha_gd_x_grid' => true, | |
| 'captcha_gd_y_grid' => true, | |
| 'captcha_gd_wave' => true, | |
| 'captcha_gd_3d_noise' => true, | |
| 'captcha_gd_fonts' => true, | |
| 'confirm_refresh' => true, | |
| 'check_attachment_content' => true, | |
| 'check_dnsbl' => true, | |
| 'chg_passforce' => true, | |
| 'cookie_secure' => true, | |
| 'coppa_enable' => true, | |
| 'database_gc' => true, | |
| 'dbms_version' => true, | |
| 'default_dateformat' => true, | |
| 'default_lang' => true, | |
| 'display_last_edited' => true, | |
| 'display_order' => true, | |
| 'edit_time' => true, | |
| 'email_check_mx' => true, | |
| 'email_enable' => true, | |
| 'email_force_sender' => true, | |
| 'email_package_size' => true, | |
| 'enable_confirm' => true, | |
| 'enable_pm_icons' => true, | |
| 'enable_post_confirm' => true, | |
| 'feed_enable' => true, | |
| 'feed_http_auth' => true, | |
| 'feed_limit_post' => true, | |
| 'feed_limit_topic' => true, | |
| 'feed_overall' => true, | |
| 'feed_overall_forums' => true, | |
| 'feed_forum' => true, | |
| 'feed_topic' => true, | |
| 'feed_topics_new' => true, | |
| 'feed_topics_active' => true, | |
| 'feed_item_statistics' => true, | |
| 'flood_interval' => true, | |
| 'force_server_vars' => true, | |
| 'form_token_lifetime' => true, | |
| 'form_token_mintime' => true, | |
| 'form_token_sid_guests' => true, | |
| 'forward_pm' => true, | |
| 'forwarded_for_check' => true, | |
| 'full_folder_action' => true, | |
| 'fulltext_native_common_thres' => true, | |
| 'fulltext_native_load_upd' => true, | |
| 'fulltext_native_max_chars' => true, | |
| 'fulltext_native_min_chars' => true, | |
| 'gzip_compress' => true, | |
| 'hot_threshold' => true, | |
| 'img_create_thumbnail' => true, | |
| 'img_display_inlined' => true, | |
| 'img_link_height' => true, | |
| 'img_link_width' => true, | |
| 'img_max_height' => true, | |
| 'img_max_thumb_width' => true, | |
| 'img_max_width' => true, | |
| 'img_min_thumb_filesize' => true, | |
| 'ip_check' => true, | |
| 'jab_enable' => true, | |
| 'jab_package_size' => true, | |
| 'jab_use_ssl' => true, | |
| 'limit_load' => true, | |
| 'limit_search_load' => true, | |
| 'load_anon_lastread' => true, | |
| 'load_birthdays' => true, | |
| 'load_cpf_memberlist' => true, | |
| 'load_cpf_viewprofile' => true, | |
| 'load_cpf_viewtopic' => true, | |
| 'load_db_lastread' => true, | |
| 'load_db_track' => true, | |
| 'load_jumpbox' => true, | |
| 'load_moderators' => true, | |
| 'load_online' => true, | |
| 'load_online_guests' => true, | |
| 'load_online_time' => true, | |
| 'load_onlinetrack' => true, | |
| 'load_search' => true, | |
| 'load_tplcompile' => true, | |
| 'load_user_activity' => true, | |
| 'max_attachments' => true, | |
| 'max_attachments_pm' => true, | |
| 'max_autologin_time' => true, | |
| 'max_filesize' => true, | |
| 'max_filesize_pm' => true, | |
| 'max_login_attempts' => true, | |
| 'max_name_chars' => true, | |
| 'max_num_search_keywords' => true, | |
| 'max_pass_chars' => true, | |
| 'max_poll_options' => true, | |
| 'max_post_chars' => true, | |
| 'max_post_font_size' => true, | |
| 'max_post_img_height' => true, | |
| 'max_post_img_width' => true, | |
| 'max_post_smilies' => true, | |
| 'max_post_urls' => true, | |
| 'max_quote_depth' => true, | |
| 'max_reg_attempts' => true, | |
| 'max_sig_chars' => true, | |
| 'max_sig_font_size' => true, | |
| 'max_sig_img_height' => true, | |
| 'max_sig_img_width' => true, | |
| 'max_sig_smilies' => true, | |
| 'max_sig_urls' => true, | |
| 'min_name_chars' => true, | |
| 'min_pass_chars' => true, | |
| 'min_post_chars' => true, | |
| 'min_search_author_chars' => true, | |
| 'mime_triggers' => true, | |
| 'new_member_post_limit' => true, | |
| 'new_member_group_default' => true, | |
| 'override_user_style' => true, | |
| 'pass_complex' => true, | |
| 'pm_edit_time' => true, | |
| 'pm_max_boxes' => true, | |
| 'pm_max_msgs' => true, | |
| 'pm_max_recipients' => true, | |
| 'posts_per_page' => true, | |
| 'print_pm' => true, | |
| 'queue_interval' => true, | |
| 'require_activation' => true, | |
| 'referer_validation' => true, | |
| 'search_block_size' => true, | |
| 'search_gc' => true, | |
| 'search_interval' => true, | |
| 'search_anonymous_interval' => true, | |
| 'search_type' => true, | |
| 'search_store_results' => true, | |
| 'secure_allow_deny' => true, | |
| 'secure_allow_empty_referer' => true, | |
| 'secure_downloads' => true, | |
| 'session_gc' => true, | |
| 'session_length' => true, | |
| 'smtp_auth_method' => true, | |
| 'smtp_delivery' => true, | |
| 'topics_per_page' => true, | |
| 'tpl_allow_php' => true, | |
| 'version' => true, | |
| 'warnings_expire_days' => true, | |
| 'warnings_gc' => true, | |
| 'num_files' => true, | |
| 'num_posts' => true, | |
| 'num_topics' => true, | |
| 'num_users' => true, | |
| 'record_online_users' => true, | |
| ); | |
| $result = array(); | |
| foreach ($config_vars as $name => $void) | |
| { | |
| if (isset($this->config[$name])) | |
| { | |
| $result['config_' . $name] = $this->config[$name]; | |
| } | |
| } | |
| global $db, $request; | |
| $result['dbms'] = $dbms; | |
| $result['acm_type'] = $acm_type; | |
| $result['user_agent'] = 'Unknown'; | |
| $result['dbms_version'] = $db->sql_server_info(true); | |
| // Try to get user agent vendor and version | |
| $match = array(); | |
| $user_agent = $request->header('User-Agent'); | |
| $agents = array('firefox', 'msie', 'opera', 'chrome', 'safari', 'mozilla', 'seamonkey', 'konqueror', 'netscape', 'gecko', 'navigator', 'mosaic', 'lynx', 'amaya', 'omniweb', 'avant', 'camino', 'flock', 'aol'); | |
| // We check here 1 by 1 because some strings occur after others (for example Mozilla [...] Firefox/) | |
| foreach ($agents as $agent) | |
| { | |
| if (preg_match('#(' . $agent . ')[/ ]?([0-9.]*)#i', $user_agent, $match)) | |
| { | |
| $result['user_agent'] = $match[1] . ' ' . $match[2]; | |
| break; | |
| } | |
| } | |
| return $result; | |
| } | |
| } |