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 UAS\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"); fwrite($fd, "QUIT\r\n"); fclose($fd); echo "ok"; } if (defined("ANNOUNCE_NNTPSERVER")) { echo "nntp "; $fd = fsockopen(ANNOUNCE_NNTPSERVER, 119, $errno, $errstr, 5); fwrite($fd, "AUTHINFO USER ".ANNOUNCE_NNTPUSER."\r\n"); fwrite($fd, "AUTHINFO PASS ".ANNOUNCE_NNTPPASS."\r\n"); fread($fd, 1024); // flush fwrite($fd, "POST\r\n"); do { $read = fread($fd, 1024); } while (!str_contains($read, "Message-ID")); /* Assumes CRLF */ $msgidheader = substr($read, strpos($read, "Message-ID"), -2); $msgidheader = str_replace("Message-ID", "Message-ID:", $msgidheader); $message = "From: System \r\n". "Reply-To: ".getuserbyid($id)["email"]."\r\n". "Newsgroups: ".ANNOUNCE_NNTPGROUP."\r\n". "Subject: ".$_POST["subject"]."\r\n". "Date: ".date("r")."\r\n". $msgidheader."\r\n". "Organization: ARFNET\r\n". "User-Agent: ARFNET CSTIMS UAS\r\n\r\n". $_POST["body"]."\r\n". ".\r\n"; $response = fread($fd, 1024); fwrite($fd, "QUIT\r\n"); fclose($fd); if (str_contains($response, "240 Article received")) echo "ok"; else echo "error $response
"; } die(); } function getuserbyid($id) { global $users; foreach ($users as $user) { if ($user["id"] == $id) { return $user; } } } ?> ARFNET CSTIMS
ARFNET

ARFNET Client Service Ticket and Invoice Management System

panel

Publish announcement

" method="post">