case "add":
zncadmin_add();
break;
+ case "addonce":
+ zncadmin_addOnce();
+ break;
case "del":
zncadmin_del();
break;
case "search":
zncadmin_search();
break;
+ case "whois":
+ zncadmin_whois();
+ break;
case "seen":
zncadmin_seen();
break;
}
$mask = preg_prepare($mask);
$table = new Table(5);
- $table->add("Server", "User", "Clients", "Server");
+ $table->add("Server", "User", "Clients", "Server", "");
$count = 0;
foreach($zncservers as $zncserver) {
- $zncserver['conn'] = new ZNCServer($zncserver['host'], $zncserver['port']);
+ $zncserver['conn'] = new ZNCServer($zncserver['host'], $zncserver['port'], (isset($zncserver['version']) ? $zncserver['version'] : NULL));
$zncserver['conn']->login($zncserver['auser'], $zncserver['apass']);
foreach($zncserver['conn']->getUserList() as $user) {
$skip = false;
}
if($skip) continue;
if(preg_match("#^".$mask."$#i", $user['user'])) {
- $table->add($zncserver['name'], $user['user'], $user['clients'], $user['server']);
+ $extra = "";
+ if(isset($user['nick'])) {
+ if($extra != "")
+ $extra .= ", ";
+ $extra .= "Nick: ".$user['nick'];
+ }
+ $table->add($zncserver['name'], $user['user'], $user['clients'], $user['server'], $extra);
$count++;
}
}
}
}
-//SUBCOMMAND: search
+//SUBCOMMAND: seen
function zncadmin_seen() {
global $argv, $zncservers;
$time = $argv[2];
$table->add("Server", "User", "Seen", "Info");
$found = false;
foreach($zncservers as $zncserver) {
- $zncserver['conn'] = new ZNCServer($zncserver['host'], $zncserver['port']);
+ $zncserver['conn'] = new ZNCServer($zncserver['host'], $zncserver['port'], (isset($zncserver['version']) ? $zncserver['version'] : NULL));
$zncserver['conn']->login($zncserver['auser'], $zncserver['apass']);
foreach($zncserver['conn']->getSeenList() as $user) {
if(preg_match("#^".$mask."$#i", $user['user']) && (($over_time && $user['seen_unix'] < $time) || (!$over_time && $user['seen_unix'] > $time))) {
foreach($zncservers as $zncserver) {
if($argv[3] && (strtolower($argv[3]) != strtolower($zncserver['name']))) continue;
if($username == strtolower($zncserver['auser'])) continue;
- $zncserver['conn'] = new ZNCServer($zncserver['host'], $zncserver['port']);
+ $zncserver['conn'] = new ZNCServer($zncserver['host'], $zncserver['port'], (isset($zncserver['version']) ? $zncserver['version'] : NULL));
$zncserver['conn']->login($zncserver['auser'], $zncserver['apass']);
foreach($zncserver['conn']->getUserList() as $user) {
if(strtolower($user['user']) == $username) {
error("Access denied\n");
return;
}
- $zncserver['conn'] = new ZNCServer($zncserver['host'], $zncserver['port']);
+ $zncserver['conn'] = new ZNCServer($zncserver['host'], $zncserver['port'], (isset($zncserver['version']) ? $zncserver['version'] : NULL));
$zncserver['conn']->login($zncserver['auser'], $zncserver['apass']);
$zncserver['users'] = $zncserver['conn']->getUserList();
$existing = false;
$settings['nick'] = $argv[2];
$settings['altnick'] = $argv[2]."`";
$settings['ident'] = $username;
- $ret = $addserv['conn']->addZNC($argv[2], $password, $settings, $add_settings['servers'], $add_settings['modules'], $add_settings['other']);
+ $ret = $addserv['conn']->addZNC($argv[2], $password, $settings, $add_settings['servers'], $add_settings['modules'], $add_settings['netmodules'], $add_settings['other']);
+ if($ret) {
+ echo "Added user ".$argv[2]." to Server ".$addserv['name'].".\n";
+ 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 ".$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";
+ foreach($add_settings["channel"] AS $channel) {
+ $addserv['conn']->addChan($argv[2], $channel);
+ }
+ } else
+ error("Error while adding user.");
+}
+
+
+function zncadmin_addOnce() {
+ global $argv, $zncservers, $add_settings, $force;
+ $username = strtolower($argv[2]);
+ if(!$username) {
+ error("missing username");
+ return;
+ }
+ $addserv = array();
+ $priority = 1;
+ $existing = false;
+ 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'], (isset($zncserver['version']) ? $zncserver['version'] : NULL));
+ $zncserver['conn']->login($zncserver['auser'], $zncserver['apass']);
+ $zncserver['users'] = $zncserver['conn']->getUserList();
+ foreach($zncserver['users'] as $user) {
+ if(strtolower($user['user']) == $username) {
+ $existing = true;
+ break;
+ }
+ }
+ if($existing)
+ break;
+ if(count($zncserver['users']) < $zncserver['maxznc']) {
+ if($zncserver['priority'] > $priority) {
+ $priority = $zncserver['priority'];
+ $addserv = array();
+ }
+ $addserv[] = $zncserver;
+ }
+ }
+ if($existing) {
+ error("A User with username \002".$username."\002 already exists.");
+ return;
+ }
+ if(count($addserv) > 1) {
+ //select server with lowest user count
+ $usercount = count($addserv[0]['users']);
+ $selected = 0;
+ for($i = 1; $i < count($addserv); $i++) {
+ if(count($addserv[$i]['users']) < $usercount) {
+ $usercount = count($addserv[$i]['users']);
+ $selected = $i;
+ }
+ }
+ $addserv = $addserv[$selected];
+ } else if(count($addserv) == 0) {
+ error("Couldn't find a server the user could be added to.");
+ return;
+ } else {
+ $addserv = $addserv[0];
+ }
+ $password = generate_password();
+ $settings = array();
+ $settings['nick'] = $argv[2];
+ $settings['altnick'] = $argv[2]."`";
+ $settings['ident'] = $username;
+ $ret = $addserv['conn']->addZNC($argv[2], $password, $settings, $add_settings['servers'], $add_settings['modules'], $add_settings['netmodules'], $add_settings['other']);
if($ret) {
echo "Added user ".$argv[2]." to Server ".$addserv['name'].".\n";
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 ."$add_settings['mirccmds']['groupname']." -w ".$argv[2].":".$password." -d 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";
}
foreach($zncservers as $zncserver) {
if($argv[3] && (strtolower($argv[3]) != strtolower($zncserver['name']))) continue;
if($username == strtolower($zncserver['auser'])) continue;
- $zncserver['conn'] = new ZNCServer($zncserver['host'], $zncserver['port']);
+ $zncserver['conn'] = new ZNCServer($zncserver['host'], $zncserver['port'], (isset($zncserver['version']) ? $zncserver['version'] : NULL));
$zncserver['conn']->login($zncserver['auser'], $zncserver['apass']);
foreach($zncserver['conn']->getUserList() as $user) {
if(strtolower($user['user']) == $username) {
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'] = new ZNCServer($zncserver['host'], $zncserver['port'], (isset($zncserver['version']) ? $zncserver['version'] : NULL));
$zncserver['conn']->login($zncserver['auser'], $zncserver['apass']);
foreach($zncserver['conn']->getUserList() as $user) {
if(strtolower($user['user']) == $username) {
}
}
+//SUBCOMMAND: whois
+function zncadmin_whois() {
+ global $argv, $zncservers, $force;
+ $username = strtolower($argv[2]);
+ $server = strtolower($argv[3]);
+ if(!$username) {
+ error("missing username");
+ return;
+ }
+ if($server) {
+ $found = false;
+ foreach($zncservers as $zncserver) {
+ if(strtolower($server) == strtolower($zncserver['name'])) {
+ $found = true;
+ break;
+ }
+ }
+ if(!$found) {
+ $server = null;
+ }
+ }
+ $foundusers = 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'], (isset($zncserver['version']) ? $zncserver['version'] : NULL));
+ $zncserver['conn']->login($zncserver['auser'], $zncserver['apass']);
+ foreach($zncserver['conn']->getUserList() as $user) {
+ if(strtolower($user['user']) == $username) {
+ $foundusers[] = array("server" => $zncserver, "user" => $user);
+ }
+ }
+ }
+ if(count($foundusers) > 1) {
+ error($argv[2]." exists on multiple servers! please add the server name the user is on.");
+ echo"Found User on following Servers:\n";
+ foreach($foundusers as $server) {
+ echo "\002".$server['server']['name']."\002 Server: ".$server['user']['server']." Nick: ".$server['user']['nick']." Clients: ".$server['user']['clients']."\n";
+ }
+ } else if(count($foundusers) == 0) {
+ error("Couldn't find an user called \002".$argv[2]."\002.");
+ } else if($foundusers[0]['server']['protected'] && !$force) {
+ error("Access denied\n");
+ } else {
+ $founduser = $foundusers[0];
+ $info = $founduser['server']['conn']->getUserInfo($founduser['user']['user'], true);
+ if(!$info) {
+ error("failed getting infos for user ".$founduser['user']['user']." on ".$founduser['server']['name']);
+ } else {
+
+ echo "User: ".$founduser['user']['user']." (".$founduser['server']['name'].") || Conected to IRC: ".$founduser['user']['server']." || Conected to ZNC: ".$founduser['user']['clients']."\n";
+
+ $modulesstr = "User Modules: ";
+ foreach($info['loadmod'] as $module) {
+ if(strlen($module) == 0) continue;
+ if($modulesstr == "")
+ $modulesstr = " ";
+ $modulesstr .= $module." ";
+ if(strlen($modulesstr) >= 170) {
+ echo $modulesstr."\n";
+ $modulesstr = "";
+ }
+ }
+ if($modulesstr != "")
+ echo $modulesstr."\n";
+
+ foreach($info['networks'] as $network) {
+ echo "Network \002".$network['name']."\002\n";
+ echo " Nickname: ".$network['nick']."\n";
+ $servers = str_replace(array("\r"), array(""), $network['settings']['servers']);
+ echo " Server:\n";
+ foreach(explode("\n", $servers) as $server) {
+ if(strlen($server) == 0) continue;
+ echo " ".$server."\n";
+ }
+ $channelstr = " Channel: ";
+ foreach($network['settings']['channel'] as $chan) {
+ if(strlen($chan) == 0) continue;
+ if($channelstr == "")
+ $channelstr = " ";
+ $channelstr .= $chan." ";
+ if(strlen($channelstr) >= 170) {
+ echo $channelstr."\n";
+ $channelstr = "";
+ }
+ }
+ if($channelstr != "")
+ echo $channelstr."\n";
+
+ $modulesstr = " Modules: ";
+ foreach($network['settings']['loadmod'] as $module) {
+ if(strlen($module) == 0) continue;
+ if($modulesstr == "")
+ $modulesstr = " ";
+ $modulesstr .= $module." ";
+ if(strlen($modulesstr) >= 170) {
+ echo $modulesstr."\n";
+ $modulesstr = "";
+ }
+ }
+ if($modulesstr != "")
+ echo $modulesstr."\n";
+ }
+
+ }
+ }
+}
+
//SUBCOMMAND: block
function zncadmin_block() {
global $argv, $zncservers, $force;
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'] = new ZNCServer($zncserver['host'], $zncserver['port'], (isset($zncserver['version']) ? $zncserver['version'] : NULL));
$zncserver['conn']->login($zncserver['auser'], $zncserver['apass']);
foreach($zncserver['conn']->getUserList() as $user) {
if(strtolower($user['user']) == $username) {
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'] = new ZNCServer($zncserver['host'], $zncserver['port'], (isset($zncserver['version']) ? $zncserver['version'] : NULL));
$zncserver['conn']->login($zncserver['auser'], $zncserver['apass']);
foreach($zncserver['conn']->getUserList() as $user) {
if(strtolower($user['user']) == $username) {
//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;
$connected = 0;
$online = 0;
- $zncserver['conn'] = new ZNCServer($zncserver['host'], $zncserver['port']);
+ $zncserver['conn'] = new ZNCServer($zncserver['host'], $zncserver['port'], (isset($zncserver['version']) ? $zncserver['version'] : NULL));
$zncserver['conn']->login($zncserver['auser'], $zncserver['apass']);
foreach($zncserver['conn']->getUserList() as $user) {
if($user['server'] != "-N/A-") $connected++;
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) {