Files
ops-Gazelle/classes/ajax_start.php
2020-03-02 09:39:59 +00:00

121 lines
3.7 KiB
PHP

<?php
use Gazelle\Util\{Crypto, Irc};
require_once(__DIR__.'/config.php');
require_once(__DIR__.'/classloader.php');
$Debug = new DEBUG;
$Cache = new CACHE($MemcachedServers);
$SSL = $_SERVER['SERVER_PORT'] === '443';
if (isset($_COOKIE['session'])) {
$LoginCookie = Crypto::decrypt($_COOKIE['session'], ENCKEY);
}
if (isset($LoginCookie)) {
list($SessionID, $UserID) = explode("|~|", Crypto::decrypt($LoginCookie, ENCKEY));
if (!$UserID || !$SessionID) {
die('Not logged in!');
}
if (!$Enabled = $Cache->get_value("enabled_$UserID")) {
require(SERVER_ROOT.'/classes/mysql.class.php'); //Require the database wrapper
$DB = new DB_MYSQL; //Load the database wrapper
$DB->query("
SELECT Enabled
FROM users_main
WHERE ID = '$UserID'");
list($Enabled) = $DB->next_record();
$Cache->cache_value("enabled_$UserID", $Enabled, 0);
}
} else {
die('Not logged in!');
}
function error($Error) {
die($Error);
}
function is_number($Str) {
if ($Str < 0) {
return false;
}
// We're converting input to a int, then string and comparing to original
return ($Str == strval(intval($Str)) ? true : false);
}
function display_str($Str) {
if ($Str != '') {
$Str = make_utf8($Str);
$Str = mb_convert_encoding($Str, 'HTML-ENTITIES', 'UTF-8');
$Str = preg_replace("/&(?![A-Za-z]{0,4}\w{2,3};|#[0-9]{2,5};)/m", '&amp;', $Str);
$Replace = [
"'",'"',"<",">",
'&#128;','&#130;','&#131;','&#132;','&#133;','&#134;','&#135;','&#136;','&#137;','&#138;','&#139;','&#140;','&#142;','&#145;','&#146;','&#147;','&#148;','&#149;','&#150;','&#151;','&#152;','&#153;','&#154;','&#155;','&#156;','&#158;','&#159;'
];
$With = [
'&#39;','&quot;','&lt;','&gt;',
'&#8364;','&#8218;','&#402;','&#8222;','&#8230;','&#8224;','&#8225;','&#710;','&#8240;','&#352;','&#8249;','&#338;','&#381;','&#8216;','&#8217;','&#8220;','&#8221;','&#8226;','&#8211;','&#8212;','&#732;','&#8482;','&#353;','&#8250;','&#339;','&#382;','&#376;'
];
$Str = str_replace($Replace, $With, $Str);
}
return $Str;
}
function make_utf8($Str) {
if ($Str != '') {
if (is_utf8($Str)) {
$Encoding = 'UTF-8';
}
if (empty($Encoding)) {
$Encoding = mb_detect_encoding($Str, 'UTF-8, ISO-8859-1');
}
if (empty($Encoding)) {
$Encoding = 'ISO-8859-1';
}
if ($Encoding == 'UTF-8') {
return $Str;
} else {
return @mb_convert_encoding($Str, 'UTF-8', $Encoding);
}
}
}
function is_utf8($Str) {
return preg_match('%^(?:
[\x09\x0A\x0D\x20-\x7E] // ASCII
| [\xC2-\xDF][\x80-\xBF] // non-overlong 2-byte
| \xE0[\xA0-\xBF][\x80-\xBF] // excluding overlongs
| [\xE1-\xEC\xEE\xEF][\x80-\xBF]{2} // straight 3-byte
| \xED[\x80-\x9F][\x80-\xBF] // excluding surrogates
| \xF0[\x90-\xBF][\x80-\xBF]{2} // planes 1-3
| [\xF1-\xF3][\x80-\xBF]{3} // planes 4-15
| \xF4[\x80-\x8F][\x80-\xBF]{2} // plane 16
)*$%xs', $Str
);
}
function display_array($Array, $DontEscape = []) {
foreach ($Array as $Key => $Val) {
if (!in_array($Key, $DontEscape)) {
$Array[$Key] = display_str($Val);
}
}
return $Array;
}
function make_secret($Length = 32) {
$NumBytes = (int) round($Length / 2);
$Secret = bin2hex(openssl_random_pseudo_bytes($NumBytes));
return substr($Secret, 0, $Length);
}
// Send a message to an IRC bot listening on SOCKET_LISTEN_PORT
function send_irc($Raw) {
\Gazelle\Util\Irc::sendRaw($Raw);
}