mirror of
https://0xacab.org/dCF/deCloudflare.git
synced 2025-01-28 18:22:12 -05:00
,
This commit is contained in:
parent
32e209072c
commit
1773fd386f
124
tool/altlinkIRC/code.php
Normal file
124
tool/altlinkIRC/code.php
Normal file
@ -0,0 +1,124 @@
|
||||
<?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;
|
||||
}
|
||||
}
|
||||
}
|
Loading…
Reference in New Issue
Block a user