mirror of
https://0xacab.org/dCF/deCloudflare.git
synced 2025-01-17 12:41:46 -05:00
124 lines
4.5 KiB
PHP
124 lines
4.5 KiB
PHP
<?php
|
|
set_time_limit(0);
|
|
require '/collaboration/your_collaboration_matters.pr';
|
|
require '/collaboration/gitlab.pr';
|
|
require '/collaboration/irc.pr';
|
|
require '/collaboration/domains.pr';
|
|
//-
|
|
define('OBSERVE_SERVER', $argv[1]);
|
|
define('OBSERVE_CHAN', explode(',', $argv[2]));
|
|
define('MY_NAME', 'altlink_' . randBytes(9));
|
|
define('MAX_CONNECT_RETRY', 100);
|
|
//-
|
|
irc_connect();
|
|
$irc_connectcnt = 0;
|
|
$irc_lastACK = gmdate('U');
|
|
while (1) {
|
|
if ($irc_lastACK < gmdate('U', strtotime('9 minutes ago'))) {
|
|
$sox = false;
|
|
debugatme('[INFO] last PING was not heard.', false);
|
|
}
|
|
if ($sox === false) {
|
|
$irc_connectcnt++;
|
|
if ($irc_connectcnt < MAX_CONNECT_RETRY) {
|
|
debugatme('reconnect ' . OBSERVE_SERVER);
|
|
sleep(5);
|
|
irc_connect();
|
|
} else {
|
|
debugatme('[WARN] tried enough, disconnecting ' . OBSERVE_SERVER, true);
|
|
}
|
|
}
|
|
while ($data = fgets($sox, 2048)) {
|
|
flush();
|
|
$dataP = explode(' ', $data);
|
|
if ($dataP[0] == 'PING') {
|
|
$irc_connectcnt = 0;
|
|
$irc_lastACK = gmdate('U');
|
|
fwrite($sox, "PONG {$dataP[1]}\n");
|
|
continue;
|
|
}
|
|
if (strpos($dataP[0], ':') !== 0) {
|
|
continue;
|
|
}
|
|
$user_who = ltrim(explode('!', $dataP[0], 2)[0], ':');
|
|
if ($user_who == MY_NAME) {
|
|
continue;
|
|
}
|
|
if ($dataP[1] == 'KICK' && $dataP[3] == MY_NAME) {
|
|
debugatme("Murder {$dataP[2]} by {$user_who}", true);
|
|
}
|
|
if ($dataP[1] != 'PRIVMSG') {
|
|
continue;
|
|
}
|
|
$irc_connectcnt = 0;
|
|
$irc_lastACK = gmdate('U');
|
|
if (strpos($dataP[2], '#') === 0) {
|
|
$user_said = str_clnspace(explode($dataP[2] . ' :', $data, 2)[1]);
|
|
if (strpos($user_said, MY_NAME) !== false) {
|
|
$user_said = str_clean_str($user_said, MY_NAME);
|
|
if (strlen($user_said) < 10 || string_has_bitch($user_said)) {
|
|
continue;
|
|
}
|
|
debugatme(' sending to git!');
|
|
$got = @json_decode(gitlab_create_anonymous('[scrubbed]@' . OBSERVE_SERVER, get_clean_title($user_said), $user_said, 'IRC'), true);
|
|
if (isset($got['web_url'])) {
|
|
fwrite($sox, "PRIVMSG {$dataP[2]} :👍 {$got['web_url']}\n");
|
|
}
|
|
continue;
|
|
}
|
|
if (strlen($user_said) < 11 || strpos($user_said, '://') === false) {
|
|
continue;
|
|
}
|
|
$urls = array_values(
|
|
array_unique(
|
|
array_filter(
|
|
array_map(function ($l) {
|
|
return is_valid_url($l) ? $l : '';
|
|
}, explode(' ', $user_said))
|
|
)
|
|
)
|
|
);
|
|
if (count($urls) == 0) {
|
|
continue;
|
|
}
|
|
$kvs = [];
|
|
foreach ($urls as $url) {
|
|
$fqdn = explode('/', explode('://', $url, 2)[1], 2)[0];
|
|
if (strlen($fqdn) < 4) {
|
|
continue;
|
|
}
|
|
$domain = toBaseDomain($fqdn);
|
|
if (domain_typeWhite($domain)) {
|
|
continue;
|
|
}
|
|
dbcall_hi();
|
|
$yesCloudFlare = domain_typeCloudflare($domain);
|
|
dbcall_bye();
|
|
if (!$yesCloudFlare) {
|
|
continue;
|
|
}
|
|
if (!isset($kvs[$domain])) {
|
|
$kvs[$domain] = $url;
|
|
}
|
|
}
|
|
if (count(array_keys($kvs)) == 0) {
|
|
continue;
|
|
}
|
|
foreach ($kvs as $k => $v) {
|
|
fwrite($sox, "NOTICE {$dataP[2]} :📣 CloudFlare: {$k} | 🙆 Alternative: https://web.archive.org/web/{$v} , https://timetravel.mementoweb.org/list/" . gmdate('Ym') . "/{$v}\n");
|
|
}
|
|
} elseif ($dataP[2] == MY_NAME) {
|
|
$user_said = str_clean_str($data, MY_NAME);
|
|
if (strlen($user_said) < 10 || string_has_bitch($user_said)) {
|
|
continue;
|
|
}
|
|
debugatme(' sending to git!');
|
|
$got = @json_decode(gitlab_create_anonymous('[scrubbed]@' . OBSERVE_SERVER, get_clean_title($user_said), $user_said, 'IRC'), true);
|
|
if (isset($got['web_url'])) {
|
|
fwrite($sox, "PRIVMSG {$user_who} :👍 {$got['web_url']}\n");
|
|
}
|
|
} else {
|
|
continue;
|
|
}
|
|
}
|
|
} |