From 43e5bd0e635f71e15c5879e78f35a27a44badf3d Mon Sep 17 00:00:00 2001 From: pk910 Date: Wed, 27 May 2015 18:33:42 +0200 Subject: [PATCH] added addOnce command --- zncadmin.php | 85 ++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 85 insertions(+) diff --git a/zncadmin.php b/zncadmin.php index f5397ff..11bf566 100644 --- a/zncadmin.php +++ b/zncadmin.php @@ -41,6 +41,9 @@ switch(strtolower($argv[1])) { case "add": zncadmin_add(); break; + case "addonce": + zncadmin_addOnce(); + break; case "del": zncadmin_del(); break; @@ -385,6 +388,88 @@ function zncadmin_add() { 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 ".$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."); +} + //SUBCOMMAND: resetpass function zncadmin_resetpass() { global $argv, $zncservers, $force; -- 2.20.1