index.php
This commit is contained in:
parent
3f76fabfc4
commit
25c24b8305
|
@ -1,136 +1,80 @@
|
||||||
<?php
|
<?php
|
||||||
|
ignore_user_abort(true);
|
||||||
|
set_time_limit(180);
|
||||||
|
$toots = [];
|
||||||
|
$mastodon_servers = ['your.server.fqdn' => 'https://your.server.fqdn/write_this_block_yourself', 'yours2.fqdn' => 'https://...'];
|
||||||
|
shuffle_assoc($mastodon_servers);
|
||||||
|
$date_ym = gmdate('Ym');
|
||||||
$sqlme = @new mysqli('localhost', 'sseeccrreett', 'sseeccrreett', 'sseeccrreett');
|
$sqlme = @new mysqli('localhost', 'sseeccrreett', 'sseeccrreett', 'sseeccrreett');
|
||||||
if ($sqlme->connect_errno)
|
if ($sqlme->connect_errno)
|
||||||
{
|
{
|
||||||
exit;
|
exit;
|
||||||
}
|
}
|
||||||
$count_all = - 1;
|
foreach ($mastodon_servers as $svF => $svU)
|
||||||
if ($r = $sqlme->query("SELECT count(id) FROM toot_scanned;"))
|
|
||||||
{
|
{
|
||||||
$rr = mysqli_fetch_assoc($r);
|
$got = @json_decode(wget($svU) , true);
|
||||||
$r->free();
|
if (!is_array($got) || count($got) < 10 || !isset($got[0]))
|
||||||
$count_all = $rr['count(id)'];
|
{
|
||||||
|
continue;
|
||||||
}
|
}
|
||||||
$count_cf = - 1;
|
foreach ($got as $g)
|
||||||
if ($r = $sqlme->query("SELECT count(id) FROM toot_scanned WHERE iscf=1;"))
|
|
||||||
{
|
{
|
||||||
$rr = mysqli_fetch_assoc($r);
|
if (!isset($g['url']) || !preg_match("/write_this_block_yourself/", $g['url']))
|
||||||
$r->free();
|
{
|
||||||
$count_cf = $rr['count(id)'];
|
continue;
|
||||||
}
|
}
|
||||||
if ($count_all == - 1 || $count_cf == - 1)
|
if (!isset($g['content']) || strlen($g['content']) < 8)
|
||||||
{
|
{
|
||||||
exit;
|
continue;
|
||||||
}
|
}
|
||||||
$count_acpct = round(($count_cf * 100) / $count_all, 2);
|
if (!isset($g['account']) || !isset($g['account']['acct']) || !preg_match("/write_this_block_yourself/", $g['account']['acct']))
|
||||||
$count_all = number_format($count_all);
|
|
||||||
$count_cf = number_format($count_cf);
|
|
||||||
$count_waitask = - 1;
|
|
||||||
if ($r = $sqlme->query("SELECT count(fqdn) FROM toot_notcf_fqdn WHERE dl=0;"))
|
|
||||||
{
|
{
|
||||||
$rr = mysqli_fetch_assoc($r);
|
continue;
|
||||||
$r->free();
|
|
||||||
$count_waitask = $rr['count(fqdn)'];
|
|
||||||
}
|
}
|
||||||
$count_waitask = number_format($count_waitask);
|
if (strpos($g['account']['acct'], '@') === false)
|
||||||
$lastuptime = humanTiming(filemtime('/onion/sseeccrreett/data/mastodon.toot.scan'));
|
|
||||||
$var_who = htmlspecialchars($_GET['who'], ENT_QUOTES);
|
|
||||||
$resultHTML = '';
|
|
||||||
if (write_this_block_yourself)
|
|
||||||
{
|
{
|
||||||
$var_who = '';
|
$g['account']['acct'] = $g['account']['acct'] . '@' . $svF;
|
||||||
}
|
}
|
||||||
if (preg_match("/write_this_block_yourself/", $var_who))
|
$txt = array_unique(array_filter(array_map(function ($l)
|
||||||
{
|
{
|
||||||
$resultHTML .= '<br><table border=1>';
|
$isURL = (preg_match("/write_this_block_yourself/", $l) && !preg_match("/write_this_block_yourself/", $l)) ? true : false;
|
||||||
$person_a = 0;
|
return $isURL ? explode('/', explode('://', $l, 2) [1], 2) [0] : '';
|
||||||
if ($r = $sqlme->query("SELECT count(id) FROM toot_scanned WHERE who='{$var_who}';"))
|
|
||||||
{
|
|
||||||
$rr = mysqli_fetch_assoc($r);
|
|
||||||
$r->free();
|
|
||||||
$person_a = $rr['count(id)'];
|
|
||||||
}
|
}
|
||||||
$person_b = 0;
|
, explode('"', strip_tags($g['content'], '<a>')))));
|
||||||
if ($r = $sqlme->query("SELECT count(id) FROM toot_scanned WHERE who='{$var_who}' AND iscf=1;"))
|
if (count($txt) == 0)
|
||||||
{
|
{
|
||||||
$rr = mysqli_fetch_assoc($r);
|
continue;
|
||||||
$r->free();
|
|
||||||
$person_b = $rr['count(id)'];
|
|
||||||
}
|
}
|
||||||
$person_c = round(($person_b * 100) / $person_a, 2);
|
$cfFound = 0;
|
||||||
if (is_nan($person_c))
|
foreach ($txt as $fqdn)
|
||||||
{
|
{
|
||||||
$person_c = 0;
|
$tmp_id2 = sha1($g['url'] . ';' . $fqdn);
|
||||||
}
|
$junk = $sqlme->query("INSERT IGNORE INTO toot_sharefqdn (id,fqdn,ym) VALUES ('{$tmp_id2}','{$fqdn}','{$date_ym}');");
|
||||||
$person_a = number_format($person_a);
|
if (is_known_cf(get_domainname($fqdn) [1]))
|
||||||
$person_b = number_format($person_b);
|
|
||||||
$resultHTML .= "<tr><th>About</th><th>{$var_who}</th></tr>";
|
|
||||||
$resultHTML .= "<tr><td>Toots has links</td><td>{$person_a}</td></tr>";
|
|
||||||
$resultHTML .= "<tr><td>⮡ Toots has Cloudflare link</td><td>{$person_b} [<i>{$person_c}</i>%]</td></tr>";
|
|
||||||
$resultHTML .= "<tr><td> </td><td>Detected (LIMIT 100)</td></tr>";
|
|
||||||
if ($r = $sqlme->query("SELECT url FROM toot_cfsaid WHERE who='{$var_who}' LIMIT 100;"))
|
|
||||||
{
|
{
|
||||||
while ($row = mysqli_fetch_assoc($r))
|
$cfFound = 1;
|
||||||
{
|
|
||||||
$vurl = htmlspecialchars($row['url'], ENT_QUOTES);
|
|
||||||
$resultHTML .= "<tr><td></td><td><a href=\"{$vurl}\" target=\"_blank\">{$vurl}</a></td></tr>";
|
|
||||||
}
|
|
||||||
}
|
|
||||||
$resultHTML .= '</table>';
|
|
||||||
}
|
|
||||||
elseif ($var_who == 'a')
|
|
||||||
{
|
|
||||||
$resultHTML .= '<br><table border=1><tr><th>Shared any links</th><th>Toots</th></tr>';
|
|
||||||
if ($r = $sqlme->query("SELECT who,count(*) as count FROM toot_scanned GROUP BY who ORDER BY count DESC LIMIT 100;"))
|
|
||||||
{
|
|
||||||
while ($row = mysqli_fetch_assoc($r))
|
|
||||||
{
|
|
||||||
$rcount = number_format($row['count']);
|
|
||||||
$resultHTML .= "<tr><td><a href=\"./?who={$row['who']}\">{$row['who']}</a></td><td>{$rcount}</td></tr>";
|
|
||||||
}
|
|
||||||
}
|
|
||||||
$resultHTML .= '</table>';
|
|
||||||
}
|
|
||||||
elseif ($var_who == 'c')
|
|
||||||
{
|
|
||||||
$resultHTML .= '<br><table border=1><tr><th>Shared Cloudflare links</th><th>Toots</th></tr>';
|
|
||||||
if ($r = $sqlme->query("SELECT who,count(*) as count FROM toot_scanned WHERE iscf=1 GROUP BY who ORDER BY count DESC LIMIT 100;"))
|
|
||||||
{
|
|
||||||
while ($row = mysqli_fetch_assoc($r))
|
|
||||||
{
|
|
||||||
$rcount = number_format($row['count']);
|
|
||||||
$resultHTML .= "<tr><td><a href=\"./?who={$row['who']}\">{$row['who']}</a></td><td>{$rcount}</td></tr>";
|
|
||||||
}
|
|
||||||
}
|
|
||||||
$resultHTML .= '</table>';
|
|
||||||
}
|
|
||||||
elseif ($var_who == 'f')
|
|
||||||
{
|
|
||||||
$resultHTML .= '<br><table border=1><tr><th>Shared FQDN</th><th>Cloudflare</th><th>Found in Toots</th></tr>';
|
|
||||||
if ($r = $sqlme->query("SELECT fqdn,count(*) as count FROM toot_sharefqdn GROUP BY fqdn ORDER BY count DESC LIMIT 50;"))
|
|
||||||
{
|
|
||||||
while ($row = mysqli_fetch_assoc($r))
|
|
||||||
{
|
|
||||||
$rcount = number_format($row['count']);
|
|
||||||
$riscf = is_known_cf(get_domainname($row['fqdn']) [1]) ? '<font color="red">Yes</font>' : 'No';
|
|
||||||
$resultHTML .= "<tr><td>{$row['fqdn']}</td><td>{$riscf}</td><td>{$rcount}</td></tr>";
|
|
||||||
}
|
|
||||||
}
|
|
||||||
$resultHTML .= '</table>';
|
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
$resultHTML .= '<ul><li> <a href="./?who=a">Show Top 100 (Shared any links)</a></li>';
|
$junk = $sqlme->query("INSERT IGNORE INTO toot_notcf_fqdn (fqdn,dl) VALUES ('{$fqdn}','0');");
|
||||||
$resultHTML .= '<li> <a href="./?who=c">Show Top 100 (Shared Cloudflare links)</a></li>';
|
|
||||||
$resultHTML .= '<li> <a href="./?who=f">Show Top 50 (Shared FQDN)</a></li>';
|
|
||||||
$resultHTML .= '<li> <a href="#" onclick="location.href=\'./?who=\'+(prompt(\'user@example.com\')||\'\');">Search by Mastodon ID</a></li></ul>';
|
|
||||||
}
|
}
|
||||||
$finalpage = <<<HTMLRESULT
|
}
|
||||||
<html><title>Shared on Mastodon</title><br><br><div>
|
$toots[sha1($g['url']) ] = [$g['account']['acct'], $g['url'], $cfFound];
|
||||||
[ <a href="./">INDEX</a> ] Update <i>{$lastuptime} ago</i><br>
|
}
|
||||||
<b>Toots has links</b>: {$count_all}<br>
|
}
|
||||||
⮡ <b>Toots has Cloudflare link</b>: {$count_cf} [<i>{$count_acpct}</i>%]<br>
|
foreach ($toots as $k => $v)
|
||||||
<b>Pending Investigation</b>: {$count_waitask}<br>
|
{
|
||||||
<hr>{$resultHTML}</div></html>
|
$junk = $sqlme->query("INSERT IGNORE INTO toot_scanned (id,who,iscf,ym) VALUES ('{$k}','{$v[0]}','{$v[2]}','{$date_ym}');");
|
||||||
HTMLRESULT;
|
if ($v[2] == 1)
|
||||||
echo (str_replace("\n", '', $finalpage));
|
{
|
||||||
|
$junk = $sqlme->query("INSERT IGNORE INTO toot_cfsaid (id,who,url,ym) VALUES ('{$k}','{$v[0]}','{$v[1]}','{$date_ym}');");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if (gmdate('G') == 0)
|
||||||
|
{
|
||||||
|
$date_ym = gmdate('Ym', strtotime('7 months ago'));
|
||||||
|
$junk = $sqlme->query("DELETE FROM toot_scanned WHERE ym = '{$date_ym}';");
|
||||||
|
$junk = $sqlme->query("DELETE FROM toot_cfsaid WHERE ym = '{$date_ym}';");
|
||||||
|
$junk = $sqlme->query("DELETE FROM toot_sharefqdn WHERE ym = '{$date_ym}';");
|
||||||
|
}
|
||||||
|
file_put_contents('/onion/sseeccrreett/data/mastodon.toot.scan', '');
|
Loading…
Reference in New Issue