<?php /** * Export domains to various formats */ require_once './../vendor/autoload.php'; $domainsDir = __DIR__ . DIRECTORY_SEPARATOR . './../domains/'; $domains = \Nabble\SemaltBlocker\Blocker::getBlocklist(); file_put_contents($domainsDir . 'blocked.json', json_encode($domains, JSON_PRETTY_PRINT) . PHP_EOL); echo "Written json file\n"; file_put_contents($domainsDir . 'blocked.csv', implode(PHP_EOL, array_map(function ($item) { return '"' . $item . '"'; }, $domains)) . PHP_EOL); echo "Written csv file\n"; $xml = "<domains>" . PHP_EOL; foreach ($domains as $domain) { $xml .= "\t<domain>" . $domain . "</domain>" . PHP_EOL; } $xml .= "</domains>" . PHP_EOL; file_put_contents($domainsDir . 'blocked.xml', $xml); echo "Written xml file\n"; $htaccess = "<IfModule mod_setenvif.c>" . PHP_EOL; foreach ($domains as $domain) { $htaccess .= "\tSetEnvIfNoCase Referer " . $domain . " spambot=yes" . PHP_EOL; } $htaccess .= "</IfModule>"; file_put_contents($domainsDir . 'blocked.conf', $htaccess); echo "Written apache conf file\n"; echo "Done\n"; exit;
public function testRetrieveDomainlist() { $domainlist = Blocker::getBlocklist(); $this->assertTrue(is_array($domainlist), 'Domain list should be an array'); $this->assertFalse(empty($domainlist), 'Domain list should not be an empty array'); }
} function statusHtml($status, $redirect = null) { if ($status == STATUS_RED) { return '<span class="danger">Not blocked</span>'; } if ($status == STATUS_ORANGE) { return '<span class="warning">Redirect </span> → <a href="?url=' . urlencode($redirect) . '">' . $redirect . '</a>'; } return '<span class="success">Blocked</span>'; } ob_implicit_flush(true); ob_end_flush(); $list = []; if ($url) { $list = \Nabble\SemaltBlocker\Blocker::getBlocklist(); $client = new \Guzzle\Http\Client(null, array('redirect.disable' => true)); } ?> <p><a href=".">recent scores</a></p> <div class="progress"> <div class="progress-bar progress-bar-success" style="width: 0%"></div> <div class="progress-bar progress-bar-warning" style="width: 0%"></div> <div class="progress-bar progress-bar-danger" style="width: 0%"></div> </div> <table class='table table-bordered table-condensed table-hover' data-total='<?php echo count($list); ?> '>
$annotated['d' . crc32($cleaned . '-' . $source)] = (object) ['url' => $url, 'source' => $source, 'added' => date('c')]; } } } } uasort($annotated, function ($a, $b) { if ($a->url . $a->source == $b->url . $b->source) { return 0; } return $a->url . $a->source < $b->url . $b->source ? -1 : 1; }); file_put_contents('../domains/annotated.json', json_encode((object) $annotated, JSON_PRETTY_PRINT)); echo "Updated annotated.json\n"; // merge & cleanup spammers if ($includeOldList) { $spammers = array_merge(Blocker::getBlocklist(), $spammers); } // cleanup foreach ($spammers as &$spammer) { $spammer = clean($spammer, $spammers); } $spammers = array_unique($spammers); $spammers = array_filter($spammers); sort($spammers); // echo some info echo "New list: " . count($spammers) . " sources\n"; // write if (count($spammers)) { file_put_contents('../domains/blocked', implode("\n", $spammers) . PHP_EOL); } echo "Updated blocklist\n";
return filter_var($v, FILTER_VALIDATE_URL) || filter_var('http://' . $v, FILTER_VALIDATE_URL); }); } else { $list = explode("\n", $raw); } } echo $source . " contains " . count($list) . " source(s)\n"; $spammers = array_merge($spammers, $list); } // only top-level domains foreach ($spammers as &$spammer) { $spammer = \Nabble\SemaltBlocker\Domainparser::getRootDomain($spammer); } // merge & cleanup spammers if ($includeOldList) { $spammers = array_merge(\Nabble\SemaltBlocker\Blocker::getBlocklist(), $spammers); } $spammers = array_map('strtolower', $spammers); $spammers = array_map('trim', $spammers); $punicode = new \TrueBV\Punycode(); foreach ($spammers as &$spammer) { $spammer = iconv("UTF-8", "ISO-8859-1", $punicode->encode($spammer)); } $spammers = array_unique($spammers); $spammers = array_filter($spammers); sort($spammers); // echo some info echo "New list: " . count($spammers) . " sources\n"; // write if (count($spammers)) { file_put_contents('../domains/blocked', implode("\n", $spammers) . PHP_EOL);