fetch_all(MYSQLI_ASSOC);
/*
* Announce to
* - mailing list (hereby the announcement archive at lists.arf20.com)
* - discord webhook
* - irc (bridged) announcement notice
* - NNTP?
* - phpBB?
* - another, custom, archive ARFNET-ly
*/
// POST actions
if ($_SERVER["REQUEST_METHOD"] == "POST") {
// Send email
if (defined("ANNOUNCE_MAIL")) {
echo "email ";
$mailer->addAddress(ANNOUNCE_MAIL);
$mailer->addReplyTo(getuserbyid($id)["email"]);
$mailer->Subject = "[ARFNET Announcement] ".$_POST["subject"];
$mailer->Body = $_POST["body"];
if (!$mailer->send()) {
echo 'Mailer Error [ask arf20]: ' . $mailer->ErrorInfo;
} else echo "ok
";
}
// Send discord message
if (defined("ANNOUNCE_DISCORD")) {
echo "discord ";
$json_data = json_encode([
"content" => "@everyone \nSubject: ".$_POST["subject"]."\n".$_POST["body"]
], JSON_UNESCAPED_SLASHES | JSON_UNESCAPED_UNICODE);
$ch = curl_init(ANNOUNCE_DISCORD);
curl_setopt($ch, CURLOPT_HTTPHEADER, array('Content-type: application/json'));
curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_POSTFIELDS, $json_data);
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1);
curl_setopt($ch, CURLOPT_HEADER, 0);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
$response = curl_exec($ch);
curl_close($ch);
if ($response == false) {
echo 'Curl Error [ask arf20]: ' . $response;
} else echo "ok
";
}
// Send IRC notification
if (defined("ANNOUNCE_IRCSERVER")) {
echo "irc ";
$fd = fsockopen(ANNOUNCE_IRCSERVER, 6667, $errno, $errstr, 5);
$read = fread($fd, 1024); // flush
// send login
fwrite($fd, "NICK system\r\n");
fwrite($fd, "USER system 0 * ARFNET CSTIMS Announcement System\r\n");
// read ping
do {
$read = fread($fd, 1024);
} while (!str_contains($read, "PING"));
$rndstr = substr($read, strpos($read, ":", 1) + 1);
// answer ping
fwrite($fd, "PONG :".$rndstr."\r\n");
// join channel
fwrite($fd, "JOIN ".ANNOUNCE_IRCCHANNEL."\r\n");
$read = fread($fd, 1024); // flush
// send message
fwrite($fd, "PRIVMSG ".ANNOUNCE_IRCCHANNEL." :New announcement: ".$_POST["subject"]."\r\n");
fclose($fd);
echo "ok";
}
die();
}
function getuserbyid($id) {
global $users;
foreach ($users as $user) {
if ($user["id"] == $id) {
return $user;
}
}
}
?>