Add a sitemap
This commit is contained in:
@ -35,6 +35,7 @@ const PER_PAGE = 50; // Sites listed per page
|
||||
const VERSION = '1.1'; // Script version
|
||||
const DBVERSION = 6; // Database layout version
|
||||
const REQUIRE_APPROVAL = false; // require admin approval of new sites? true/false
|
||||
const CANONICAL_URL = 'https://onions.danwin1210.me'; // our preferred domain for search engines
|
||||
//Categories - new links will always be put into the first one, leave it to Unsorted
|
||||
//once configured, only add new categories at the end or you have to manually adjust the database.
|
||||
$categories=['Unsorted', 'Adult/Porn', 'Communication/Social', 'Forums', 'Hacking/Programming/Software', 'Hosting', 'Libraries/Wikis', 'Link Lists', 'Market/Shop/Store', 'Other', 'Personal Sites/Blogs', 'Security/Privacy/Encryption', 'Whistleblowing', 'Empty/Error/Unknown', 'Cryptocurrencies', 'Scams', 'Fun/Games/Joke', 'Search', 'Autodetected scam (unchecked)'];
|
||||
|
@ -5,6 +5,7 @@ send_headers([$style]);
|
||||
try{
|
||||
$db=new PDO('mysql:host=' . DBHOST . ';dbname=' . DBNAME . ';charset=utf8mb4', DBUSER, DBPASS, [PDO::ATTR_ERRMODE=>PDO::ERRMODE_WARNING, PDO::ATTR_PERSISTENT=>PERSISTENT]);
|
||||
}catch(PDOException $e){
|
||||
http_send_status(500);
|
||||
die($I['nodb']);
|
||||
}
|
||||
asort($categories);
|
||||
@ -14,6 +15,7 @@ asort($categories);
|
||||
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
|
||||
<meta name=viewport content="width=device-width, initial-scale=1">
|
||||
<meta name="robots" content="noindex">
|
||||
<link rel="canonical" href="<?php echo CANONICAL_URL . $_SERVER['SCRIPT_NAME']; ?>">
|
||||
<style type="text/css"><?php echo $style; ?></style>
|
||||
</head><body>
|
||||
<h1><?php echo $I['admintitle']; ?></h1>
|
||||
|
@ -25,6 +25,7 @@ require_once(__DIR__.'/../common_config.php');
|
||||
try{
|
||||
$db=new PDO('mysql:host=' . DBHOST . ';dbname=' . DBNAME . ';charset=utf8mb4', DBUSER, DBPASS, [PDO::ATTR_ERRMODE=>PDO::ERRMODE_WARNING, PDO::ATTR_PERSISTENT=>PERSISTENT]);
|
||||
}catch(PDOException $e){
|
||||
http_send_status(500);
|
||||
}
|
||||
date_default_timezone_set('UTC');
|
||||
//select output format
|
||||
@ -70,6 +71,7 @@ function send_html(){
|
||||
echo '<meta name="author" content="Daniel Winzen">';
|
||||
echo '<meta name="viewport" content="width=device-width, initial-scale=1">';
|
||||
echo '<meta name="description" content="Huge link list of Tor hidden service onions. All the darknet links you need in one place.">';
|
||||
echo '<link rel="canonical" href="' . CANONICAL_URL . $_SERVER['SCRIPT_NAME'] . (empty($_SERVER['QUERY_STRING']) ? '' : '?' . $_SERVER['QUERY_STRING']) . '">';
|
||||
echo '<style type="text/css">'.$style.'</style>';
|
||||
echo '<base rel="noopener" target="_blank">';
|
||||
echo '</head><body>';
|
||||
|
@ -1,3 +1,4 @@
|
||||
User-agent: *
|
||||
Disallow: /*?*addr=
|
||||
Allow: *
|
||||
Sitemap: /sitemap.php
|
||||
|
74
www/sitemap.php
Normal file
74
www/sitemap.php
Normal file
@ -0,0 +1,74 @@
|
||||
<?php
|
||||
require_once __DIR__.'/../common_config.php';
|
||||
try{
|
||||
$db=new PDO('mysql:host=' . DBHOST . ';dbname=' . DBNAME . ';charset=utf8mb4', DBUSER, DBPASS, [PDO::ATTR_ERRMODE=>PDO::ERRMODE_WARNING, PDO::ATTR_PERSISTENT=>PERSISTENT]);
|
||||
}catch(PDOException $e){
|
||||
http_send_status(500);
|
||||
die($I['nodb']);
|
||||
}
|
||||
$links = [];
|
||||
$links []= ['loc' => CANONICAL_URL . '/test.php', 'changefreq' => 'weekly', 'priority' => '0.8'];
|
||||
$links []= ['loc' => CANONICAL_URL . '/onions.php', 'changefreq' => 'daily', 'priority' => '1'];
|
||||
$links []= ['loc' => CANONICAL_URL . '/onions.php?format=json', 'changefreq' => 'daily', 'priority' => '0.2'];
|
||||
$links []= ['loc' => CANONICAL_URL . '/onions.php?format=text', 'changefreq' => 'daily', 'priority' => '0.2'];
|
||||
$admin_approval = '';
|
||||
if(REQUIRE_APPROVAL){
|
||||
$admin_approval = PREFIX . 'onions.approved = 1 AND';
|
||||
}
|
||||
foreach ($L as $lang_code => $lang){
|
||||
$links []= ['loc' => CANONICAL_URL . "/onions.php?lang=$lang_code", 'changefreq' => 'daily', 'priority' => '0.5'];
|
||||
$stmt=$db->prepare('SELECT COUNT(*) FROM ' . PREFIX . "onions WHERE $admin_approval category=? AND address!='' AND id NOT IN (SELECT onion_id FROM " . PREFIX . 'phishing) AND timediff<604800;');
|
||||
foreach($categories as $cat => $name){
|
||||
$links []= ['loc' => CANONICAL_URL . "/onions.php?cat=$cat&lang=$lang_code", 'changefreq' => 'daily', 'priority' => '0.3'];
|
||||
$stmt->execute([$cat]);
|
||||
$num=$stmt->fetch(PDO::FETCH_NUM);
|
||||
$pages=ceil($num[0]/PER_PAGE);
|
||||
if($pages > 1) {
|
||||
while ( $pages > -1 ) {
|
||||
$links [] = [ 'loc' => CANONICAL_URL . "/onions.php?cat=$cat&pg=$pages&lang=$lang_code", 'changefreq' => 'daily', 'priority' => '0.3' ];
|
||||
--$pages;
|
||||
}
|
||||
}
|
||||
}
|
||||
$special=[
|
||||
$I['all']=>"address!='' AND category!=15 AND id NOT IN (SELECT onion_id FROM " . PREFIX . 'phishing) AND timediff<604800',
|
||||
$I['lastadded']=>"address!='' AND id NOT IN (SELECT onion_id FROM " . PREFIX . 'phishing)',
|
||||
$I['offline']=>"address!='' AND id NOT IN (SELECT onion_id FROM " . PREFIX . 'phishing) AND timediff>604800'
|
||||
];
|
||||
$cat=count($categories);
|
||||
foreach($special as $name=>$query){
|
||||
$links []= ['loc' => CANONICAL_URL . "/onions.php?cat=$cat&lang=$lang_code", 'changefreq' => 'daily', 'priority' => '0.3'];
|
||||
if($cat===count($categories)+1){
|
||||
$num[0]=PER_PAGE;
|
||||
}else{
|
||||
$num=$db->query('SELECT COUNT(*) FROM ' . PREFIX . "onions WHERE $admin_approval $query;")->fetch(PDO::FETCH_NUM);
|
||||
}
|
||||
$pages=ceil($num[0]/PER_PAGE);
|
||||
if($pages > 1) {
|
||||
while ( $pages > -1 ) {
|
||||
$links [] = [ 'loc' => CANONICAL_URL . "/onions.php?cat=$cat&pg=$pages&lang=$lang_code", 'changefreq' => 'daily', 'priority' => '0.3' ];
|
||||
--$pages;
|
||||
}
|
||||
}
|
||||
++$cat;
|
||||
}
|
||||
$links []= ['loc' => CANONICAL_URL . "/onions.php?cat=$cat&lang=$lang_code", 'changefreq' => 'daily', 'priority' => '0.3'];
|
||||
}
|
||||
$dom = new DOMDocument('1.0', 'UTF-8');
|
||||
$urlset= $dom->createElement('urlset');
|
||||
$urlset->setAttribute('xmlns', 'http://www.sitemaps.org/schemas/sitemap/0.9');
|
||||
$urlset->setAttribute('xmlns:xsi', 'http://www.w3.org/2001/XMLSchema-instance');
|
||||
$urlset->setAttribute('xsi:schemaLocation', 'http://www.sitemaps.org/schemas/sitemap/0.9 http://www.sitemaps.org/schemas/sitemap/0.9/sitemap.xsd');
|
||||
$dom->appendChild($urlset);
|
||||
foreach ($links as $link) {
|
||||
$url = $dom->createElement('url');
|
||||
$urlset->appendChild($url);
|
||||
$loc = $dom->createElement('loc', htmlspecialchars($link['loc']));
|
||||
$url->appendChild($loc);
|
||||
$changefreq = $dom->createElement('changefreq', $link['changefreq']);
|
||||
$url->appendChild($changefreq);
|
||||
$priority = $dom->createElement('priority', $link['priority']);
|
||||
$url->appendChild($priority);
|
||||
}
|
||||
header('Content-Type: text/xml; charset=UTF-8');
|
||||
echo $dom->saveXML();
|
@ -8,6 +8,7 @@ echo '<meta http-equiv="Content-Type" content="text/html; charset=utf-8">';
|
||||
echo '<meta name="author" content="Daniel Winzen">';
|
||||
echo '<meta name="viewport" content="width=device-width, initial-scale=1">';
|
||||
echo '<meta name="description" content="Test whether a Tor hidden service onion is online or offline">';
|
||||
echo '<link rel="canonical" href="' . CANONICAL_URL . $_SERVER['SCRIPT_NAME'] . '">';
|
||||
echo '<style type="text/css">'.$style.'</style>';
|
||||
echo '</head><body>';
|
||||
echo '<h1>Online-Test</h1>';
|
||||
@ -30,7 +31,8 @@ if(!empty($_REQUEST['addr'])){
|
||||
try{
|
||||
$db=new PDO('mysql:host=' . DBHOST . ';dbname=' . DBNAME . ';charset=utf8mb4', DBUSER, DBPASS, [PDO::ATTR_ERRMODE=>PDO::ERRMODE_WARNING, PDO::ATTR_PERSISTENT=>PERSISTENT]);
|
||||
}catch(PDOException $e){
|
||||
die('No DB connection');
|
||||
http_send_status(500);
|
||||
die($I['nodb']);
|
||||
}
|
||||
if(!preg_match('~(^(https?://)?([a-z0-9]*\.)?([a-z2-7]{16}|[a-z2-7]{56})(\.onion(/.*)?)?$)~i', trim($_REQUEST['addr']), $addr)){
|
||||
echo "<p class=\"red\" role=\"alert\">$I[invalonion]</p>";
|
||||
|
Reference in New Issue
Block a user