X-Git-Url: http://git.pk910.de/?a=blobdiff_plain;f=zncadmin.php;h=4949a10ccebc7022c73c737ac4b4c6c0877991ca;hb=35d6cfed78a76d9cf7a679faba96df2ccc40a111;hp=4fffe0e22ca993503b5e095432da45b9e7819ea4;hpb=d8a263cc8a2dda8ac9ac4932dc74af598a67d4a2;p=ZNCAdmin.git diff --git a/zncadmin.php b/zncadmin.php index 4fffe0e..4949a10 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; @@ -153,7 +159,7 @@ function zncadmin_search() { } $mask = preg_prepare($mask); $table = new Table(5); - $table->add("Server", "User", "Clients", "Server", "Nick"); + $table->add("Server", "User", "Clients", "Server"); $count = 0; foreach($zncservers as $zncserver) { $zncserver['conn'] = new ZNCServer($zncserver['host'], $zncserver['port']); @@ -203,7 +209,7 @@ function zncadmin_search() { } if($skip) continue; if(preg_match("#^".$mask."$#i", $user['user'])) { - $table->add($zncserver['name'], $user['user'], $user['clients'], $user['server'], $user['nick']); + $table->add($zncserver['name'], $user['user'], $user['clients'], $user['server']); $count++; } } @@ -310,6 +316,10 @@ function zncadmin_add() { foreach($zncservers as $zncserver) { if($argv[3] && (strtolower($argv[3]) != strtolower($zncserver['name']))) continue; if(!$argv[3] && $zncserver['priority'] < $priority) continue; + if($zncserver['protected'] === true && !$force) { + error("Access denied\n"); + return; + } $zncserver['conn'] = new ZNCServer($zncserver['host'], $zncserver['port']); $zncserver['conn']->login($zncserver['auser'], $zncserver['apass']); $zncserver['users'] = $zncserver['conn']->getUserList(); @@ -353,12 +363,15 @@ function zncadmin_add() { echo " Server Host: ".$addserv['public']." Port: ".$addserv['port']." SSL Port: ".$addserv['sslport']."\n"; echo " Password: ".$password."\n"; echo "[mIRC]\n"; - echo " /server -a ".$addserv['public']." -p ".$addserv['port']." -g KryptonZNC -w ".$argv[2].":".$password." -d KryptonZNC\n"; - echo " /AS addmask *@*.free-bnc.de\n"; - echo " /AS addmask *@*.krypton-bouncer.de\n"; - echo " /server -m KryptonZNC\n"; + echo " /server -a ".$addserv['public']." -p ".$addserv['port']." -g ".$add_settings['mirccmds']['groupname']." -w ".$argv[2].":".$password." -d ".$add_settings['mirccmds']['groupname']."\n"; + foreach($add_settings['mirccmds']['hosts'] AS $host) { + echo " /AS addmask *@*.".$host."\n"; + } + echo " /server -m ".$add_settings['mirccmds']['groupname']."\n"; echo"/log\n"; - $addserv['conn']->addChan($argv[2], "#Krypton"); + foreach($add_settings["channel"] AS $channel) { + $addserv['conn']->addChan($argv[2], $channel); + } } else error("Error while adding user."); } @@ -453,17 +466,107 @@ 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"; + } } } //SUBCOMMAND: stats function zncadmin_stats() { global $argv, $zncservers; - $table = new Table(5); - $table->add("Server", "Port / SSL Port", "Total ZNC's", "Connected (IRC)", "Online (User)"); + $table = new Table(6); + $table->add("Server", "Port / SSL Port", "Total ZNC's", "Connected (IRC)", "Online (User)", "Protected?"); $count = 0; foreach($zncservers as $zncserver) { $total = 0; @@ -476,7 +579,7 @@ function zncadmin_stats() { if($user['clients'] > 0) $online++; $total++; } - $table->add($zncserver['name'], $zncserver['port'].($zncserver['sslport'] ? "/".$zncserver['sslport'] : ""), $total.($zncserver['maxznc'] ? "/".$zncserver['maxznc'] : ""), $connected, $online); + $table->add($zncserver['name'], $zncserver['port'].($zncserver['sslport'] ? "/".$zncserver['sslport'] : ""), $total.($zncserver['maxznc'] ? "/".$zncserver['maxznc'] : ""), $connected, $online, ($zncserver['protected'] === true ? "X" : "")); $count++; } if($count) {