X-Git-Url: http://git.pk910.de/?p=ZNCAdmin.git;a=blobdiff_plain;f=zncadmin.php;h=78937925953b5c40ba70e4cfc35f10bebecceef9;hp=4fffe0e22ca993503b5e095432da45b9e7819ea4;hb=6cd66f219f6024ce6400f25b7b0165d37449e49f;hpb=d8a263cc8a2dda8ac9ac4932dc74af598a67d4a2 diff --git a/zncadmin.php b/zncadmin.php index 4fffe0e..7893792 100644 --- a/zncadmin.php +++ b/zncadmin.php @@ -56,6 +56,12 @@ switch(strtolower($argv[1])) { case "simul": zncadmin_simul(); break; + case "block": + zncadmin_block(); + break; + case "unblock": + zncadmin_unblock(); + break; case "stats": zncadmin_stats(); break; @@ -453,9 +459,99 @@ function zncadmin_simul() { error("Access denied\n"); } else { $deluser = $delusers[0]; - $deluser['server']['conn']->simulZNC($deluser['user']['user'], $raw); - echo "Simuled \002".$deluser['user']['user']."\002 on Server ".$deluser['server']['name'].": ".$raw."\n"; - echo"/log\n"; + $ret = $deluser['server']['conn']->simulZNC($deluser['user']['user'], $raw); + if($ret == ERR_MODULE_NOT_FOUND) { + error("send_raw module is not installed or not activated for user ".$deluser['server']['auser']." on ".$deluser['server']['name']); + } else { + echo "Simuled \002".$deluser['user']['user']."\002 on Server ".$deluser['server']['name'].": ".$raw."\n"; + echo"/log\n"; + } + } +} + +//SUBCOMMAND: block +function zncadmin_block() { + global $argv, $zncservers, $force; + $username = strtolower($argv[2]); + $server = strtolower($argv[3]); + if(!$username) { + error("missing username"); + return; + } + $delusers = array(); + foreach($zncservers as $zncserver) { + if($server && (strtolower($server) != strtolower($zncserver['name']))) continue; + if($username == strtolower($zncserver['auser'])) continue; + $zncserver['conn'] = new ZNCServer($zncserver['host'], $zncserver['port']); + $zncserver['conn']->login($zncserver['auser'], $zncserver['apass']); + foreach($zncserver['conn']->getUserList() as $user) { + if(strtolower($user['user']) == $username) { + $delusers[] = array("server" => $zncserver, "user" => $user); + } + } + } + if(count($delusers) > 1) { + error($argv[2]." exists on multiple servers! please add the server name the user should be blocked on."); + echo"Found User on following Servers:\n"; + foreach($delusers as $server) { + echo "\002".$server['server']['name']."\002 Server: ".$server['user']['server']." Nick: ".$server['user']['nick']." Clients: ".$server['user']['clients']."\n"; + } + } else if(count($delusers) == 0) { + error("Couldn't find an user called \002".$argv[2]."\002."); + } else if($delusers[0]['server']['protected'] && !$force) { + error("Access denied\n"); + } else { + $deluser = $delusers[0]; + $ret = $deluser['server']['conn']->blockZNC($deluser['user']['user'], true); + if($ret == ERR_MODULE_NOT_FOUND) { + error("blockuser module is not installed or not activated on ".$deluser['server']['name']); + } else { + echo "Blocked \002".$deluser['user']['user']."\002 on Server ".$deluser['server']['name'].".\n"; + echo"/log\n"; + } + } +} + +//SUBCOMMAND: unblock +function zncadmin_unblock() { + global $argv, $zncservers, $force; + $username = strtolower($argv[2]); + $server = strtolower($argv[3]); + if(!$username) { + error("missing username"); + return; + } + $delusers = array(); + foreach($zncservers as $zncserver) { + if($server && (strtolower($server) != strtolower($zncserver['name']))) continue; + if($username == strtolower($zncserver['auser'])) continue; + $zncserver['conn'] = new ZNCServer($zncserver['host'], $zncserver['port']); + $zncserver['conn']->login($zncserver['auser'], $zncserver['apass']); + foreach($zncserver['conn']->getUserList() as $user) { + if(strtolower($user['user']) == $username) { + $delusers[] = array("server" => $zncserver, "user" => $user); + } + } + } + if(count($delusers) > 1) { + error($argv[2]." exists on multiple servers! please add the server name the user should be unblocked on."); + echo"Found User on following Servers:\n"; + foreach($delusers as $server) { + echo "\002".$server['server']['name']."\002 Server: ".$server['user']['server']." Nick: ".$server['user']['nick']." Clients: ".$server['user']['clients']."\n"; + } + } else if(count($delusers) == 0) { + error("Couldn't find an user called \002".$argv[2]."\002."); + } else if($delusers[0]['server']['protected'] && !$force) { + error("Access denied\n"); + } else { + $deluser = $delusers[0]; + $ret = $deluser['server']['conn']->blockZNC($deluser['user']['user'], false); + if($ret == ERR_MODULE_NOT_FOUND) { + error("blockuser module is not installed or not activated on ".$deluser['server']['name']); + } else { + echo "Unblocked \002".$deluser['user']['user']."\002 on Server ".$deluser['server']['name'].".\n"; + echo"/log\n"; + } } }