]> git.mxchange.org Git - friendica-addons.git/blobdiff - blockbot/blockbot.php
[various] Remove App dependency from hook functions
[friendica-addons.git] / blockbot / blockbot.php
index 9e6ce82c03f0dc65861626d992048171eb710ea0..93da4e53b582bcba9c6a4b5db4b89d8d0c5c4653 100644 (file)
@@ -15,37 +15,36 @@ use Friendica\DI;
 use Jaybizzle\CrawlerDetect\CrawlerDetect;
 use Friendica\Core\Logger;
 use Friendica\Core\Renderer;
+use Friendica\Network\HTTPException\ForbiddenException;
 
 require_once __DIR__ . DIRECTORY_SEPARATOR . 'vendor' . DIRECTORY_SEPARATOR . 'autoload.php';
 
-function blockbot_install() {
+function blockbot_install()
+{
        Hook::register('init_1', __FILE__, 'blockbot_init_1');
 }
 
-
-function blockbot_uninstall() {
-       Hook::unregister('init_1', __FILE__, 'blockbot_init_1');
-}
-
-function blockbot_addon_admin(&$a, &$o) {
-       $t = Renderer::getMarkupTemplate("admin.tpl", "addon/blockbot/");
+function blockbot_addon_admin(string &$o)
+{
+       $t = Renderer::getMarkupTemplate('admin.tpl', 'addon/blockbot/');
 
        $o = Renderer::replaceMacros($t, [
                '$submit' => DI::l10n()->t('Save Settings'),
-               '$good_crawlers' => ['good_crawlers', DI::l10n()->t('Allow "good" crawlers'), DI::config()->get('blockbot', 'good_crawlers'), "Don't block fediverse crawlers, relay servers and other bots with good purposes."],
-               '$block_gab' => ['block_gab', DI::l10n()->t('Block GabSocial'), DI::config()->get('blockbot', 'block_gab'), 'Block the software GabSocial. This will block every access for that software. You can block dedicated gab instances in the blocklist settings in the admin section.'],
-               '$training' => ['training', DI::l10n()->t('Training mode'), DI::config()->get('blockbot', 'training'), "Activates the training mode. This is only meant for developing purposes. Don't activate this on a production machine. This can cut communication with some systems."],
+               '$good_crawlers' => ['good_crawlers', DI::l10n()->t('Allow "good" crawlers'), DI::config()->get('blockbot', 'good_crawlers'), DI::l10n()->t("Don't block fediverse crawlers, relay servers and other bots with good purposes.")],
+               '$block_gab' => ['block_gab', DI::l10n()->t('Block GabSocial'), DI::config()->get('blockbot', 'block_gab'), DI::l10n()->t('Block the software GabSocial. This will block every access for that software. You can block dedicated gab instances in the blocklist settings in the admin section.')],
+               '$training' => ['training', DI::l10n()->t('Training mode'), DI::config()->get('blockbot', 'training'), DI::l10n()->t("Activates the training mode. This is only meant for developing purposes. Don't activate this on a production machine. This can cut communication with some systems.")],
        ]);
 }
 
-function blockbot_addon_admin_post(&$a) {
+function blockbot_addon_admin_post()
+{
        DI::config()->set('blockbot', 'good_crawlers', $_POST['good_crawlers'] ?? false);
        DI::config()->set('blockbot', 'block_gab', $_POST['block_gab'] ?? false);
        DI::config()->set('blockbot', 'training', $_POST['training'] ?? false);
-       info(DI::l10n()->t('Settings updated.'). EOL);
 }
 
-function blockbot_init_1(App $a) {
+function blockbot_init_1()
+{
        if (empty($_SERVER['HTTP_USER_AGENT'])) {
                return;
        }
@@ -54,7 +53,8 @@ function blockbot_init_1(App $a) {
 
        // List of "good" crawlers
        $good_agents = ['fediverse.space crawler', 'fediverse.network crawler', 'Active_Pods_CheckBot_3.0',
-                       'Social-Relay/', 'Test Certificate Info', 'Uptimebot/', 'GNUSocialBot', 'UptimeRobot/'];
+               'Social-Relay/', 'Test Certificate Info', 'Uptimebot/', 'GNUSocialBot', 'UptimeRobot/',
+               'PTST/', 'Zabbix', 'Poduptime/'];
 
        // List of known crawlers.
        $agents = ['SemrushBot', 's~feedly-nikon3', 'Qwantify/Bleriot/', 'ltx71', 'Sogou web spider/',
@@ -62,7 +62,7 @@ function blockbot_init_1(App $a) {
                'PaperLiBot/', 'Nuzzel', 'um-LN/', 'Google Favicon', 'Datanyze', 'BLEXBot/', '360Spider',
                'adscanner/', 'HeadlessChrome', 'wpif', 'startmebot/', 'Googlebot/', 'Applebot/',
                'facebookexternalhit/', 'GoogleImageProxy', 'bingbot/', 'heritrix/', 'ldspider',
-               'AwarioRssBot/', 'Zabbix', 'TweetmemeBot/', 'dcrawl/', 'PhantomJS/', 'Googlebot-Image/',
+               'AwarioRssBot/', 'TweetmemeBot/', 'dcrawl/', 'PhantomJS/', 'Googlebot-Image/',
                'CrowdTanglebot/', 'Mediapartners-Google', 'Baiduspider/', 'datagnionbot',
                'MegaIndex.ru/', 'SMUrlExpander', 'Hatena-Favicon/', 'Wappalyzer', 'FlipboardProxy/',
                'NetcraftSurveyAgent/', 'Dataprovider.com', 'SMTBot/', 'Nimbostratus-Bot/',
@@ -76,7 +76,10 @@ function blockbot_init_1(App $a) {
                '7Siters/', 'KOCMOHABT', 'Google-SearchByImage', 'FemtosearchBot/',
                'HubSpot Crawler', 'DomainStatsBot/', 'Re-re Studio', 'AwarioSmartBot/',
                'SummalyBot/', 'DNSResearchBot/', 'PetalBot;', 'Nmap Scripting Engine;',
-               'Google-Apps-Script; beanserver;', 'woorankreview/', 'Seekport Crawler;', 'AHC/'];
+               'Google-Apps-Script; beanserver;', 'woorankreview/', 'Seekport Crawler;', 'AHC/',
+               'SkypeUriPreview Preview/', 'Semanticbot/', 'Embed PHP library', 'XoviOnpageCrawler;',
+               'GetHPinfo.com-Bot/', 'BoardReader Favicon Fetcher', 'Google-Adwords-Instant', 'newspaper/',
+               'YurichevBot/', 'Crawling at Home Project', 'InfoTigerBot/'];
 
        if (!DI::config()->get('blockbot', 'good_crawlers')) {
                $agents = array_merge($agents, $good_agents);
@@ -94,7 +97,7 @@ function blockbot_init_1(App $a) {
 
        foreach ($agents as $agent) {
                if (stristr($_SERVER['HTTP_USER_AGENT'], $agent)) {
-                       System::httpExit(403, 'Bots are not allowed');
+                       throw new ForbiddenException('Bots are not allowed');
                }
        }
 
@@ -115,9 +118,11 @@ function blockbot_init_1(App $a) {
                'Python-urllib/', 'Liferea/', 'aiohttp/', 'WordPress.com Reader', 'hackney/',
                'Faraday v', 'okhttp', 'UniversalFeedParser', 'PixelFedBot', 'python-requests',
                'WordPress/', 'http.rb/', 'Apache-HttpClient/', 'WordPress.com;', 'Pleroma',
-               'Dispatch/', 'Ruby', 'Java/', 'libwww-perl/', 'Mastodon/',
+               'Dispatch/', 'Ruby', 'Java/', 'libwww-perl/', 'Mastodon/', 'FeedlyApp/',
                'lua-resty-http/', 'Tiny Tiny RSS/', 'Wget/', 'PostmanRuntime/',
-               'W3C_Validator/', 'NetNewsWire'];
+               'W3C_Validator/', 'NetNewsWire', 'FeedValidator/', 'theoldreader.com', 'axios/',
+               'Paw/', 'PeerTube/', 'fedi.inex.dev', 'FediDB/', 'index.community crawler',
+               'Slackbot-LinkExpanding'];
 
        if (DI::config()->get('blockbot', 'good_crawlers')) {
                $agents = array_merge($agents, $good_agents);
@@ -131,5 +136,5 @@ function blockbot_init_1(App $a) {
        }
 
        logger::info('Blocked bot', $logdata);
-       System::httpExit(403, 'Bots are not allowed');
+       throw new ForbiddenException('Bots are not allowed');
 }