X-Git-Url: https://jfr.im/git/irc/unrealircd/unrealircd-webpanel.git/blobdiff_plain/709b97f3b90d912cb85f532180d6715f93b2ffae..05252a1458855a3a9a3909601e1e894dc1aae590:/Classes/class-rpc.php diff --git a/Classes/class-rpc.php b/Classes/class-rpc.php index 76bdb65..7e2b80d 100644 --- a/Classes/class-rpc.php +++ b/Classes/class-rpc.php @@ -1,28 +1,14 @@ body['method'] = $method; } function set_params(array $params) : void { - array_merge($this->body['params'], $params); + do_log("Set params:", $params); + $this->body['params'] = $params; } function execute() { $this->content['body'] = json_encode($this->body); - if (!$this->content['body']) + if (!$this->content['body']) return; $url = "https://".UNREALIRCD_HOST.":".UNREALIRCD_PORT."/api"; $curl = curl_init($url); @@ -92,10 +80,13 @@ class RPC $headers = array( "Accept: application/json", "Content-Type: application/json", - "Authorization: Basic ". base64_encode(UNREALIRCD_RPC_USER.":".UNREALIRCD_RPC_PASSWORD), + "Authorization: Basic ". base64_encode(UNREALIRCD_RPC_USER.":".UNREALIRCD_RPC_PASSWORD), ); curl_setopt($curl, CURLOPT_HTTPHEADER, $headers); + if (UNREALIRCD_DEBUG) + do_log("SENDING JSON:", $this->content['body']); + curl_setopt($curl, CURLOPT_POSTFIELDS, $this->content['body']); //for debug only! @@ -110,6 +101,7 @@ class RPC function fetch_assoc() { + do_log("RPC::fetch_assoc()", $this->result); return json_decode($this->result, true); } @@ -122,10 +114,10 @@ class RPC class RPC_List { - static $user = []; - static $channel = []; - static $tkl = []; - static $spamfilter = []; + static $user = []; + static $channel = []; + static $tkl = []; + static $spamfilter = []; static $opercount = 0; static $services_count = 0; @@ -151,6 +143,7 @@ function rpc_pop_lists() 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++; @@ -215,4 +208,77 @@ function rpc_pop_lists() RPC_List::$spamfilter[] = $r; } +} + + +/** RPC TKL Add */ +function rpc_tkl_add($name, $type, $expiry, $reason) : bool +{ + $rpc = new RPC(); + $rpc->set_method("server_ban.add"); + $rpc->set_params(["name" => $name, "type" => $type, "reason" => $reason, "duration_string" => $expiry]); + $rpc->execute(); + $result = $rpc->fetch_assoc(); + if (isset($result['error'])) + { + $msg = "The $type could not be added: $name - ".$result['error']['message'] . " (" . $result['error']['code'] . ")"; + Message::Fail($msg); + return false; + } + return true; +} + + +/** RPC TKL Delete */ +function rpc_tkl_del($name, $type) : bool +{ + $rpc = new RPC(); + $rpc->set_method("server_ban.del"); + $rpc->set_params(["name" => $name, "type" => $type]); + $rpc->execute(); + $result = $rpc->fetch_assoc(); + if (isset($result['error'])) + { + $msg = "The $type could not be deleted: $name - ".$result['error']['message'] . " (" . $result['error']['code'] . ")"; + Message::Fail($msg); + return false; + } + return true; +} + +/** RPC Spamfilter Delete + * + */ +function rpc_sf_del($name, $mtype, $targets, $action) : bool +{ + $rpc = new RPC(); + $rpc->set_method("spamfilter.del"); + $rpc->set_params(["name" => $name, "match_type" => $mtype, "spamfilter_targets" => $targets, "ban_action" => $action, "set_by" => "YoMama"]); + $rpc->execute(); + $result = $rpc->fetch_assoc(); + if (isset($result['error'])) + { + $msg = "The spamfilter entry could not be deleted: $name - ".$result['error']['message'] . " (" . $result['error']['code'] . ")"; + Message::Fail($msg); + return false; + } + else + { + $r = $result['result']['tkl']; + Message::Success("Deleted spamfilter entry: ".$r['name']." [type: ".$r['match_type']."] [targets: ".$r['spamfilter_targets']. "] [action: ".$r['ban_action']."] [reason: ".$r['reason']."] [set by: ".$r['set_by']."]"); + } + return true; +} + +/** 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