diff --git a/tool/mastodonwch/index.php b/tool/mastodonwch/index.php
index 395030531..4d57320d5 100644
--- a/tool/mastodonwch/index.php
+++ b/tool/mastodonwch/index.php
@@ -1,136 +1,80 @@
'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');
if ($sqlme->connect_errno)
{
exit;
}
-$count_all = - 1;
-if ($r = $sqlme->query("SELECT count(id) FROM toot_scanned;"))
+foreach ($mastodon_servers as $svF => $svU)
{
- $rr = mysqli_fetch_assoc($r);
- $r->free();
- $count_all = $rr['count(id)'];
-}
-$count_cf = - 1;
-if ($r = $sqlme->query("SELECT count(id) FROM toot_scanned WHERE iscf=1;"))
-{
- $rr = mysqli_fetch_assoc($r);
- $r->free();
- $count_cf = $rr['count(id)'];
-}
-if ($count_all == - 1 || $count_cf == - 1)
-{
- exit;
-}
-$count_acpct = round(($count_cf * 100) / $count_all, 2);
-$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);
- $r->free();
- $count_waitask = $rr['count(fqdn)'];
-}
-$count_waitask = number_format($count_waitask);
-$lastuptime = humanTiming(filemtime('/onion/sseeccrreett/data/mastodon.toot.scan'));
-$var_who = htmlspecialchars($_GET['who'], ENT_QUOTES);
-$resultHTML = '';
-if (write_this_block_yourself)
-{
- $var_who = '';
-}
-if (preg_match("/write_this_block_yourself/", $var_who))
-{
- $resultHTML .= '
';
- $person_a = 0;
- if ($r = $sqlme->query("SELECT count(id) FROM toot_scanned WHERE who='{$var_who}';"))
+ $got = @json_decode(wget($svU) , true);
+ if (!is_array($got) || count($got) < 10 || !isset($got[0]))
{
- $rr = mysqli_fetch_assoc($r);
- $r->free();
- $person_a = $rr['count(id)'];
+ continue;
}
- $person_b = 0;
- if ($r = $sqlme->query("SELECT count(id) FROM toot_scanned WHERE who='{$var_who}' AND iscf=1;"))
+ foreach ($got as $g)
{
- $rr = mysqli_fetch_assoc($r);
- $r->free();
- $person_b = $rr['count(id)'];
- }
- $person_c = round(($person_b * 100) / $person_a, 2);
- if (is_nan($person_c))
- {
- $person_c = 0;
- }
- $person_a = number_format($person_a);
- $person_b = number_format($person_b);
- $resultHTML .= "About | {$var_who} |
";
- $resultHTML .= "Toots has links | {$person_a} |
";
- $resultHTML .= "⮡ Toots has Cloudflare link | {$person_b} [{$person_c}%] |
";
- $resultHTML .= " | Detected (LIMIT 100) |
";
- if ($r = $sqlme->query("SELECT url FROM toot_cfsaid WHERE who='{$var_who}' LIMIT 100;"))
- {
- while ($row = mysqli_fetch_assoc($r))
+ if (!isset($g['url']) || !preg_match("/write_this_block_yourself/", $g['url']))
{
- $vurl = htmlspecialchars($row['url'], ENT_QUOTES);
- $resultHTML .= " | {$vurl} |
";
+ continue;
}
- }
- $resultHTML .= '
';
-}
-elseif ($var_who == 'a')
-{
- $resultHTML .= '
Shared any links | Toots |
';
- 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))
+ if (!isset($g['content']) || strlen($g['content']) < 8)
{
- $rcount = number_format($row['count']);
- $resultHTML .= "{$row['who']} | {$rcount} |
";
+ continue;
}
- }
- $resultHTML .= '
';
-}
-elseif ($var_who == 'c')
-{
- $resultHTML .= '
Shared Cloudflare links | Toots |
';
- 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))
+ if (!isset($g['account']) || !isset($g['account']['acct']) || !preg_match("/write_this_block_yourself/", $g['account']['acct']))
{
- $rcount = number_format($row['count']);
- $resultHTML .= "{$row['who']} | {$rcount} |
";
+ continue;
}
- }
- $resultHTML .= '
';
-}
-elseif ($var_who == 'f')
-{
- $resultHTML .= '
Shared FQDN | Cloudflare | Found in Toots |
';
- 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))
+ if (strpos($g['account']['acct'], '@') === false)
{
- $rcount = number_format($row['count']);
- $riscf = is_known_cf(get_domainname($row['fqdn']) [1]) ? 'Yes' : 'No';
- $resultHTML .= "{$row['fqdn']} | {$riscf} | {$rcount} |
";
+ $g['account']['acct'] = $g['account']['acct'] . '@' . $svF;
}
+ $txt = array_unique(array_filter(array_map(function ($l)
+ {
+ $isURL = (preg_match("/write_this_block_yourself/", $l) && !preg_match("/write_this_block_yourself/", $l)) ? true : false;
+ return $isURL ? explode('/', explode('://', $l, 2) [1], 2) [0] : '';
+ }
+ , explode('"', strip_tags($g['content'], '')))));
+ if (count($txt) == 0)
+ {
+ continue;
+ }
+ $cfFound = 0;
+ foreach ($txt as $fqdn)
+ {
+ $tmp_id2 = sha1($g['url'] . ';' . $fqdn);
+ $junk = $sqlme->query("INSERT IGNORE INTO toot_sharefqdn (id,fqdn,ym) VALUES ('{$tmp_id2}','{$fqdn}','{$date_ym}');");
+ if (is_known_cf(get_domainname($fqdn) [1]))
+ {
+ $cfFound = 1;
+ }
+ else
+ {
+ $junk = $sqlme->query("INSERT IGNORE INTO toot_notcf_fqdn (fqdn,dl) VALUES ('{$fqdn}','0');");
+ }
+ }
+ $toots[sha1($g['url']) ] = [$g['account']['acct'], $g['url'], $cfFound];
}
- $resultHTML .= '
';
}
-else
+foreach ($toots as $k => $v)
{
- $resultHTML .= '';
+ $junk = $sqlme->query("INSERT IGNORE INTO toot_scanned (id,who,iscf,ym) VALUES ('{$k}','{$v[0]}','{$v[2]}','{$date_ym}');");
+ if ($v[2] == 1)
+ {
+ $junk = $sqlme->query("INSERT IGNORE INTO toot_cfsaid (id,who,url,ym) VALUES ('{$k}','{$v[0]}','{$v[1]}','{$date_ym}');");
+ }
}
-$finalpage = <<Shared on Mastodon
-[
INDEX ] Update
{$lastuptime} ago
-
Toots has links: {$count_all}
-⮡
Toots has Cloudflare link: {$count_cf} [
{$count_acpct}%]
-
Pending Investigation: {$count_waitask}
-
{$resultHTML}