Code Coverage |
||||||||||
Classes and Traits |
Functions and Methods |
Lines |
||||||||
| Total | |
0.00% |
0 / 1 |
|
0.00% |
0 / 4 |
CRAP | |
0.00% |
0 / 82 |
| add_bots | |
0.00% |
0 / 1 |
|
0.00% |
0 / 4 |
132 | |
0.00% |
0 / 82 |
| __construct | |
0.00% |
0 / 1 |
2 | |
0.00% |
0 / 14 |
|||
| run | |
0.00% |
0 / 1 |
72 | |
0.00% |
0 / 62 |
|||
| get_step_count | |
0.00% |
0 / 1 |
2 | |
0.00% |
0 / 3 |
|||
| get_task_lang_name | |
0.00% |
0 / 1 |
2 | |
0.00% |
0 / 3 |
|||
| <?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. | |
| * | |
| */ | |
| namespace phpbb\install\module\install_data\task; | |
| use phpbb\install\exception\resource_limit_reached_exception; | |
| class add_bots extends \phpbb\install\task_base | |
| { | |
| /** | |
| * A list of the web-crawlers/bots we recognise by default | |
| * | |
| * Candidates but not included: | |
| * 'Accoona [Bot]' 'Accoona-AI-Agent/' | |
| * 'ASPseek [Crawler]' 'ASPseek/' | |
| * 'Boitho [Crawler]' 'boitho.com-dc/' | |
| * 'Bunnybot [Bot]' 'powered by www.buncat.de' | |
| * 'Cosmix [Bot]' 'cfetch/' | |
| * 'Crawler Search [Crawler]' '.Crawler-Search.de' | |
| * 'Findexa [Crawler]' 'Findexa Crawler (' | |
| * 'GBSpider [Spider]' 'GBSpider v' | |
| * 'genie [Bot]' 'genieBot (' | |
| * 'Hogsearch [Bot]' 'oegp v. 1.3.0' | |
| * 'Insuranco [Bot]' 'InsurancoBot' | |
| * 'IRLbot [Bot]' 'http://irl.cs.tamu.edu/crawler' | |
| * 'ISC Systems [Bot]' 'ISC Systems iRc Search' | |
| * 'Jyxobot [Bot]' 'Jyxobot/' | |
| * 'Kraehe [Metasuche]' '-DIE-KRAEHE- META-SEARCH-ENGINE/' | |
| * 'LinkWalker' 'LinkWalker' | |
| * 'MMSBot [Bot]' 'http://www.mmsweb.at/bot.html' | |
| * 'Naver [Bot]' 'nhnbot@naver.com)' | |
| * 'NetResearchServer' 'NetResearchServer/' | |
| * 'Nimble [Crawler]' 'NimbleCrawler' | |
| * 'Ocelli [Bot]' 'Ocelli/' | |
| * 'Onsearch [Bot]' 'onCHECK-Robot' | |
| * 'Orange [Spider]' 'OrangeSpider' | |
| * 'Sproose [Bot]' 'http://www.sproose.com/bot' | |
| * 'Susie [Sync]' '!Susie (http://www.sync2it.com/susie)' | |
| * 'Tbot [Bot]' 'Tbot/' | |
| * 'Thumbshots [Capture]' 'thumbshots-de-Bot' | |
| * 'Vagabondo [Crawler]' 'http://webagent.wise-guys.nl/' | |
| * 'Walhello [Bot]' 'appie 1.1 (www.walhello.com)' | |
| * 'WissenOnline [Bot]' 'WissenOnline-Bot' | |
| * 'WWWeasel [Bot]' 'WWWeasel Robot v' | |
| * 'Xaldon [Spider]' 'Xaldon WebSpider' | |
| * | |
| * @var array | |
| */ | |
| protected $bot_list = array( | |
| 'AdsBot [Google]' => array('AdsBot-Google', ''), | |
| 'Alexa [Bot]' => array('ia_archiver', ''), | |
| 'Alta Vista [Bot]' => array('Scooter/', ''), | |
| 'Ask Jeeves [Bot]' => array('Ask Jeeves', ''), | |
| 'Baidu [Spider]' => array('Baiduspider', ''), | |
| 'Bing [Bot]' => array('bingbot/', ''), | |
| 'Exabot [Bot]' => array('Exabot', ''), | |
| 'FAST Enterprise [Crawler]' => array('FAST Enterprise Crawler', ''), | |
| 'FAST WebCrawler [Crawler]' => array('FAST-WebCrawler/', ''), | |
| 'Francis [Bot]' => array('http://www.neomo.de/', ''), | |
| 'Gigabot [Bot]' => array('Gigabot/', ''), | |
| 'Google Adsense [Bot]' => array('Mediapartners-Google', ''), | |
| 'Google Desktop' => array('Google Desktop', ''), | |
| 'Google Feedfetcher' => array('Feedfetcher-Google', ''), | |
| 'Google [Bot]' => array('Googlebot', ''), | |
| 'Heise IT-Markt [Crawler]' => array('heise-IT-Markt-Crawler', ''), | |
| 'Heritrix [Crawler]' => array('heritrix/1.', ''), | |
| 'IBM Research [Bot]' => array('ibm.com/cs/crawler', ''), | |
| 'ICCrawler - ICjobs' => array('ICCrawler - ICjobs', ''), | |
| 'ichiro [Crawler]' => array('ichiro/', ''), | |
| 'Majestic-12 [Bot]' => array('MJ12bot/', ''), | |
| 'Metager [Bot]' => array('MetagerBot/', ''), | |
| 'MSN NewsBlogs' => array('msnbot-NewsBlogs/', ''), | |
| 'MSN [Bot]' => array('msnbot/', ''), | |
| 'MSNbot Media' => array('msnbot-media/', ''), | |
| 'Nutch [Bot]' => array('http://lucene.apache.org/nutch/', ''), | |
| 'Online link [Validator]' => array('online link validator', ''), | |
| 'psbot [Picsearch]' => array('psbot/0', ''), | |
| 'Sensis [Crawler]' => array('Sensis Web Crawler', ''), | |
| 'SEO Crawler' => array('SEO search Crawler/', ''), | |
| 'Seoma [Crawler]' => array('Seoma [SEO Crawler]', ''), | |
| 'SEOSearch [Crawler]' => array('SEOsearch/', ''), | |
| 'Snappy [Bot]' => array('Snappy/1.1 ( http://www.urltrends.com/ )', ''), | |
| 'Steeler [Crawler]' => array('http://www.tkl.iis.u-tokyo.ac.jp/~crawler/', ''), | |
| 'Telekom [Bot]' => array('crawleradmin.t-info@telekom.de', ''), | |
| 'TurnitinBot [Bot]' => array('TurnitinBot/', ''), | |
| 'Voyager [Bot]' => array('voyager/', ''), | |
| 'W3 [Sitesearch]' => array('W3 SiteSearch Crawler', ''), | |
| 'W3C [Linkcheck]' => array('W3C-checklink/', ''), | |
| 'W3C [Validator]' => array('W3C_Validator', ''), | |
| 'YaCy [Bot]' => array('yacybot', ''), | |
| 'Yahoo MMCrawler [Bot]' => array('Yahoo-MMCrawler/', ''), | |
| 'Yahoo Slurp [Bot]' => array('Yahoo! DE Slurp', ''), | |
| 'Yahoo [Bot]' => array('Yahoo! Slurp', ''), | |
| 'YahooSeeker [Bot]' => array('YahooSeeker/', ''), | |
| ); | |
| /** | |
| * @var \phpbb\db\driver\driver_interface | |
| */ | |
| protected $db; | |
| /** | |
| * @var \phpbb\install\helper\config | |
| */ | |
| protected $install_config; | |
| /** | |
| * @var \phpbb\install\helper\iohandler\iohandler_interface | |
| */ | |
| protected $io_handler; | |
| /** | |
| * @var \phpbb\language\language | |
| */ | |
| protected $language; | |
| /** | |
| * @var string | |
| */ | |
| protected $phpbb_root_path; | |
| /** | |
| * @var string | |
| */ | |
| protected $php_ext; | |
| /** | |
| * Constructor | |
| * | |
| * @param \phpbb\install\helper\config $install_config Installer's config | |
| * @param \phpbb\install\helper\iohandler\iohandler_interface $iohandler Input-output handler for the installer | |
| * @param \phpbb\install\helper\container_factory $container Installer's DI container | |
| * @param \phpbb\language\language $language Language provider | |
| * @param string $phpbb_root_path Relative path to phpBB root | |
| * @param string $php_ext PHP extension | |
| */ | |
| public function __construct(\phpbb\install\helper\config $install_config, | |
| \phpbb\install\helper\iohandler\iohandler_interface $iohandler, | |
| \phpbb\install\helper\container_factory $container, | |
| \phpbb\language\language $language, | |
| $phpbb_root_path, | |
| $php_ext) | |
| { | |
| parent::__construct(true); | |
| $this->db = $container->get('dbal.conn'); | |
| $this->install_config = $install_config; | |
| $this->io_handler = $iohandler; | |
| $this->language = $language; | |
| $this->phpbb_root_path = $phpbb_root_path; | |
| $this->php_ext = $php_ext; | |
| } | |
| /** | |
| * {@inheritdoc} | |
| */ | |
| public function run() | |
| { | |
| $this->db->sql_return_on_error(true); | |
| $sql = 'SELECT group_id | |
| FROM ' . GROUPS_TABLE . " | |
| WHERE group_name = 'BOTS'"; | |
| $result = $this->db->sql_query($sql); | |
| $group_id = (int) $this->db->sql_fetchfield('group_id'); | |
| $this->db->sql_freeresult($result); | |
| if (!$group_id) | |
| { | |
| // If we reach this point then something has gone very wrong | |
| $this->io_handler->add_error_message('NO_GROUP'); | |
| } | |
| $i = $this->install_config->get('add_bot_index', 0); | |
| $bot_list = array_slice($this->bot_list, $i); | |
| foreach ($bot_list as $bot_name => $bot_ary) | |
| { | |
| $user_row = array( | |
| 'user_type' => USER_IGNORE, | |
| 'group_id' => $group_id, | |
| 'username' => $bot_name, | |
| 'user_regdate' => time(), | |
| 'user_password' => '', | |
| 'user_colour' => '9E8DA7', | |
| 'user_email' => '', | |
| 'user_lang' => $this->install_config->get('default_lang'), | |
| 'user_style' => 1, | |
| 'user_timezone' => 'UTC', | |
| 'user_dateformat' => $this->language->lang('default_dateformat'), | |
| 'user_allow_massemail' => 0, | |
| 'user_allow_pm' => 0, | |
| ); | |
| if (!function_exists('user_add')) | |
| { | |
| include($this->phpbb_root_path . 'includes/functions_user.' . $this->php_ext); | |
| } | |
| $user_id = user_add($user_row); | |
| if (!$user_id) | |
| { | |
| // If we can't insert this user then continue to the next one to avoid inconsistent data | |
| $this->io_handler->add_error_message('CONV_ERROR_INSERT_BOT'); | |
| $i++; | |
| continue; | |
| } | |
| $sql = 'INSERT INTO ' . BOTS_TABLE . ' ' . $this->db->sql_build_array('INSERT', array( | |
| 'bot_active' => 1, | |
| 'bot_name' => (string) $bot_name, | |
| 'user_id' => (int) $user_id, | |
| 'bot_agent' => (string) $bot_ary[0], | |
| 'bot_ip' => (string) $bot_ary[1], | |
| )); | |
| $this->db->sql_query($sql); | |
| $i++; | |
| // Stop execution if resource limit is reached | |
| if ($this->install_config->get_time_remaining() <= 0 || $this->install_config->get_memory_remaining() <= 0) | |
| { | |
| break; | |
| } | |
| } | |
| $this->install_config->set('add_bot_index', $i); | |
| if ($i < count($this->bot_list)) | |
| { | |
| throw new resource_limit_reached_exception(); | |
| } | |
| } | |
| /** | |
| * {@inheritdoc} | |
| */ | |
| static public function get_step_count() | |
| { | |
| return 1; | |
| } | |
| /** | |
| * {@inheritdoc} | |
| */ | |
| public function get_task_lang_name() | |
| { | |
| return 'TASK_ADD_BOTS'; | |
| } | |
| } |