X-Git-Url: https://jfr.im/git/irc/unrealircd/unrealircd-webpanel.git/blobdiff_plain/709b97f3b90d912cb85f532180d6715f93b2ffae..bdf7619aefc98b662efbf7336ea2118044db141e:/Classes/class-rpc.php diff --git a/Classes/class-rpc.php b/Classes/class-rpc.php index 76bdb65..886b974 100644 --- a/Classes/class-rpc.php +++ b/Classes/class-rpc.php @@ -1,131 +1,30 @@ content['sslverify'] = $sslverify; - $this->body['id'] = $this->generate_id(); - $this->body['jsonrpc'] = "2.0"; - $this->body['method'] = NULL; // MUST be set later - $this->body['params'] = []; // CAN be set later - } - function add_body(array $b) : void - { - array_merge($this->body, $b); - } - - private function generate_id() - { - $time = microtime(true); - $str = (string)$time; - $last = $str[strlen($str) - 1]; - $last = (int)$last; - $id = $time * $time * $last; - $id = md5(base64_encode($id)); - return $id; - } - - /** - * This function sets the method of the RPC call you're making. - * For a list of available methods, see: - * https://www.unrealircd.org/docs/JSON-RPC#JSON-RPC_Methods - */ - function set_method(String $method) : void - { - $this->body['method'] = $method; - } - - function set_params(array $params) : void - { - array_merge($this->body['params'], $params); - } - - function execute() - { - $this->content['body'] = json_encode($this->body); - if (!$this->content['body']) - return; - $url = "https://".UNREALIRCD_HOST.":".UNREALIRCD_PORT."/api"; - $curl = curl_init($url); - curl_setopt($curl, CURLOPT_URL, $url); - curl_setopt($curl, CURLOPT_POST, true); - curl_setopt($curl, CURLOPT_RETURNTRANSFER, true); - - $headers = array( - "Accept: application/json", - "Content-Type: application/json", - "Authorization: Basic ". base64_encode(UNREALIRCD_RPC_USER.":".UNREALIRCD_RPC_PASSWORD), - ); - curl_setopt($curl, CURLOPT_HTTPHEADER, $headers); - - curl_setopt($curl, CURLOPT_POSTFIELDS, $this->content['body']); - - //for debug only! - curl_setopt($curl, CURLOPT_SSL_VERIFYHOST, false); - curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, false); - - $apiResponse = curl_exec($curl); - curl_close($curl); - - $this->result = $apiResponse; - } - - function fetch_assoc() - { - return json_decode($this->result, true); - } - - static function die(array $err) - { - die("There was a problem processing the request: ".$err['message']." (".$err['code'].")
Please contact the plugin author.
". - "If you are a developer, see: https://www.unrealircd.org/docs/JSON-RPC#Error"); - } -} +use UnrealIRCd\Connection; +use UnrealIRCd\User; +use UnrealIRCd\Channel; class RPC_List { - static $user = []; - static $channel = []; - static $tkl = []; - static $spamfilter = []; + static $user = []; + static $channel = []; + static $tkl = []; + static $spamfilter = []; + static $server = []; + static $nameban = []; + static $exception = []; static $opercount = 0; static $services_count = 0; @@ -135,84 +34,62 @@ class RPC_List function rpc_pop_lists() { - $rpc = new RPC(); + GLOBAL $rpc; /* Get the user list */ - $rpc->set_method("user.list"); - $rpc->execute(); + $ret = $rpc->user()->getAll(); + // TODO: error checking - foreach($rpc->fetch_assoc() as $key => $value) + foreach($ret as $r) { - if ($key == "error") - { - RPC::die($value); - return; - } - if ($key == "result") - foreach($value['list'] as $r) - { - RPC_List::$user[] = $r; - if (strpos($r['user']['modes'],"o") !== false && strpos($r['user']['modes'],"S") == false) - RPC_List::$opercount++; - elseif (strpos($r['user']['modes'],"S") !== false) - RPC_List::$services_count++; - } + RPC_List::$user[] = $r; + if (strpos($r->user->modes,"o") !== false && strpos($r->user->modes,"S") == false) + RPC_List::$opercount++; + elseif (strpos($r->user->modes,"S") !== false) + RPC_List::$services_count++; } /* Get the channels list */ - $rpc->set_method("channel.list"); - $rpc->execute(); - - foreach($rpc->fetch_assoc() as $key => $value) + $ret = $rpc->channel()->getAll(); + foreach($ret as $r) { - if ($key == "error") + RPC_List::$channel[] = $r; + if ($r->num_users > RPC_List::$channel_pop_count) { - RPC::die($value); - return; + RPC_List::$channel_pop_count = $r->num_users; + RPC_List::$most_populated_channel = $r->name; } - if ($key == "result") - foreach($value['list'] as $r) - { - RPC_List::$channel[] = $r; - if ($r['num_users'] > RPC_List::$channel_pop_count) - { - RPC_List::$channel_pop_count = $r['num_users']; - RPC_List::$most_populated_channel = $r['name']; - } - } } - - /* Get the tkl list */ - $rpc->set_method("server_ban.list"); - $rpc->execute(); - foreach($rpc->fetch_assoc() as $key => $value) - { - if ($key == "error") - { - RPC::die($value); - return; - } - if ($key == "result") - foreach($value['list'] as $r) - RPC_List::$tkl[] = $r; - } - - /* Get the tkl list */ - $rpc->set_method("spamfilter.list"); - $rpc->execute(); - - foreach($rpc->fetch_assoc() as $key => $value) - { - if ($key == "error") - { - RPC::die($value); - return; - } - if ($key == "result") - foreach($value['list'] as $r) - RPC_List::$spamfilter[] = $r; - } + $ret = $rpc->serverban()->getAll(); + foreach($ret as $r) + RPC_List::$tkl[] = $r; + + /* Get the spamfilter list */ + $ret = $rpc->spamfilter()->getAll(); + foreach($ret as $r) + RPC_List::$spamfilter[] = $r; + + foreach ($rpc->nameban()->getAll() as $r) + RPC_List::$nameban[] = $r; + + foreach ($rpc->serverbanexception()->getAll() as $r) + RPC_List::$exception[] = $r; + + foreach ($rpc->server()->getAll() as $r) + RPC_List::$server[] = $r; +} +/** Convert the duration_string */ +function rpc_convert_duration_string($str) +{ + $tok = explode("w", $str); + $weeks = $tok[0]; + $tok = explode("d", $tok[1]); + $days = $tok[0]; + $tok = explode("h", $tok[1]); + $hours = $tok[0]; + return "$weeks weeks, $days days and $hours hours"; + } \ No newline at end of file