Exemplo n.º 1
0
 public static function log_changes(&$ircdata, $startup = false)
 {
     if (ircd::on_server(&$ircdata)) {
         ircd::handle_on_server(&$ircdata);
     }
     // let's us keep track of the linked servers
     if (ircd::on_squit(&$ircdata)) {
         ircd::handle_on_squit(&$ircdata);
     }
     // let's us keep track of the linked servers
     if (ircd::on_connect(&$ircdata)) {
         ircd::handle_on_connect(&$ircdata, $startup);
     }
     // log shit on connect, basically the users host etc.
     if (ircd::on_nick_change(&$ircdata)) {
         ircd::handle_nick_change(&$ircdata, $startup);
     }
     // on nick change, make sure the variable changes too.
     if (ircd::on_quit(&$ircdata)) {
         ircd::handle_quit(&$ircdata, $startup);
     }
     // on quit.
     if (ircd::on_fhost(&$ircdata)) {
         ircd::handle_host_change(&$ircdata);
     }
     // on hostname change.
     if (ircd::on_ident_change(&$ircdata)) {
         ircd::handle_ident_change(&$ircdata);
     }
     // on ident change
     if (ircd::on_gecos_change(&$ircdata)) {
         ircd::handle_gecos_change(&$ircdata);
     }
     // on realname (gecos) change
     if (ircd::on_mode(&$ircdata)) {
         ircd::handle_mode(&$ircdata);
     }
     // on mode
     if (ircd::on_ftopic(&$ircdata)) {
         ircd::handle_ftopic(&$ircdata);
     }
     // on ftopic
     if (ircd::on_topic(&$ircdata)) {
         ircd::handle_topic(&$ircdata);
     }
     // on topic
     if (ircd::on_chan_create(&$ircdata)) {
         ircd::handle_channel_create(&$ircdata);
     }
     // on channel create
     if (ircd::on_join(&$ircdata)) {
         ircd::handle_join(&$ircdata);
     }
     // on join
     if (ircd::on_part(&$ircdata)) {
         ircd::handle_part(&$ircdata);
     }
     // and on part.
     if (ircd::on_kick(&$ircdata)) {
         ircd::handle_kick(&$ircdata);
     }
     // and on kick.
     if (ircd::on_oper_up(&$ircdata)) {
         ircd::handle_oper_up(&$ircdata);
     }
     // on oper ups
 }
Exemplo n.º 2
0
 public function main(&$ircdata, $startup = false)
 {
     if (ircd::on_connect(&$ircdata)) {
         $nick = core::get_nick(&$ircdata, core::$config->server->ircd == 'inspircd12' ? 4 : 3);
         // get nick
         if ($user = services::user_exists($nick, false, array('display', 'identified', 'validated', 'last_hostmask', 'suspended'))) {
             if ($user->validated == 0 && $user->suspended == 0) {
                 ircd::on_user_logout($nick);
                 // they shouldn't really have registered mode
                 services::communicate(core::$config->nickserv->nick, $nick, &nickserv::$help->NS_AWAITING_VALIDATION);
             } elseif ($user->identified == 0 && $user->suspended == 0) {
                 self::_registered_nick($nick, $user);
             } elseif ($user->identified == 1 && $user->last_hostmask == core::get_full_hostname($nick)) {
                 ircd::on_user_login($nick);
                 if (!$startup) {
                     core::alog(core::$config->nickserv->nick . ': ' . core::$nicks[$nick]['ident'] . '@' . core::$nicks[$nick]['host'] . ' automatically identified for ' . $nick);
                 }
             } else {
                 self::_registered_nick($nick, $user);
             }
         }
         // is the user existing?
     }
     // on connect let them know that they're using
     // an identified nickname
     if (ircd::on_nick_change(&$ircdata)) {
         $nick = core::get_nick($ircdata, 2);
         $old_nick = core::$nicks[$nick]['onick'];
         // get the nicknames
         timer::remove(array('ns_identify', 'secured_callback', array($old_nick)));
         // remove the secured timer. if there is one
         ircd::on_user_logout($nick);
         // we remove the registered mode
         if ($user = services::user_exists($nick, false, array('display', 'identified', 'validated', 'last_hostmask', 'suspended'))) {
             if ($user->validated == 0 && $user->suspended == 0) {
                 ircd::on_user_logout($nick);
                 // they shouldn't really have registered mode
                 services::communicate(core::$config->nickserv->nick, $nick, &nickserv::$help->NS_AWAITING_VALIDATION);
             } elseif ($user->identified == 0 && $user->suspended == 0) {
                 self::_registered_nick($nick, $user);
             } elseif ($user->identified == 1 && $user->last_hostmask == core::get_full_hostname($nick)) {
                 ircd::on_user_login($nick);
                 core::alog(core::$config->nickserv->nick . ': ' . core::$nicks[$nick]['ident'] . '@' . core::$nicks[$nick]['host'] . ' automatically identified for ' . $nick);
             } else {
                 self::_registered_nick($nick, $user);
             }
         }
         // is the new nick registered? let them know
     }
     if (ircd::on_quit(&$ircdata)) {
         $nick = core::get_nick(&$ircdata, 0);
         timer::remove(array('ns_identify', 'secured_callback', array($nick)));
         // remove the secured timer. if there is one
         database::update('users', array('identified' => 0, 'last_timestamp' => core::$network_time), array('display', '=', $nick));
         // change nick to unidentified imo
     }
 }
Exemplo n.º 3
0
 public static function on_quit(&$ircdata)
 {
     if (ircd::on_quit(&$ircdata)) {
         $nick = core::get_nick(&$ircdata, 0);
         foreach (core::$chans as $chan => $data) {
             if (count(core::$chans[$chan]['users']) == 1 && isset(core::$chans[$chan]['users'][core::$config->chanserv->nick])) {
                 ircd::part_chan(core::$config->chanserv->nick, $chan);
                 // leave the channel.
             }
             // ok now we check whos left in the channel, if its only us lets leave
         }
         // are they in any channels?
     }
     // only trigger on_quit
 }
Exemplo n.º 4
0
 public function main(&$ircdata, $startup = false)
 {
     if (ircd::on_mode(&$ircdata)) {
         $nick = core::get_nick(&$ircdata, 0);
         $chan = core::get_chan(&$ircdata, 2);
         $mode_queue = core::get_data_after(&$ircdata, 4);
         if (strpos($nick, '.') !== false && core::$config->server->ircd != 'inspircd12') {
             $server = $nick;
         } elseif (strlen($nick) == 3 && core::$config->server->ircd == 'inspircd12') {
             $server = core::$servers[$nick]['sid'];
         } else {
             $server = '';
         }
         // we've found a.in nick, which means it's a server? And it's NOT insp1.2
         // OR we've noticed $nick is 3 chars long, which is a SID and it's insp1.2
         if ($server == core::$config->ulined_servers || is_array(core::$config->ulined_servers) && in_array($server, core::$config->ulined_servers)) {
             return false;
         }
         // ignore mode changing from ulined servers.
         if (!($channel = services::chan_exists($chan, array('channel')))) {
             return false;
         }
         // channel isnt registered
         $modelock = chanserv::get_flags($chan, 'm');
         // get the modelock
         if ($modelock != null) {
             $nmodelock = explode(' ', $modelock);
             foreach (str_split($nmodelock[0]) as $mode) {
                 if (strstr($mode_queue, $mode)) {
                     ircd::mode(core::$config->chanserv->nick, $chan, $modelock);
                 }
                 // reset the modes
             }
         }
         // modelock?
     }
     // we need to check for any modechanges here, for modelocking
     if (ircd::on_part(&$ircdata)) {
         $chan = core::get_chan(&$ircdata, 2);
         // get the channel
         if (chanserv::check_flags($chan, array('L'))) {
             timer::add(array('cs_flags', 'increase_limit', array($chan)), 10, 1);
             // add a timer to update the limit, in 15 seconds
         }
         // is there auto-limit enabled?
     }
     // on part we check for
     if (ircd::on_quit(&$ircdata)) {
         foreach (core::$chans as $chan => $data) {
             if (chanserv::check_flags($chan, array('L'))) {
                 timer::add(array('cs_flags', 'increase_limit', array($chan)), 10, 1);
                 // add a timer to update the limit, in 15 seconds
             }
             // is there auto-limit enabled?
         }
     }
     // on part we check for
     if (ircd::on_join(&$ircdata)) {
         $nick = core::get_nick(&$ircdata, 0);
         $chans = explode(',', $ircdata[2]);
         // find the nick & chan
         foreach ($chans as $chan) {
             if (!($channel = services::chan_exists($chan, array('channel')))) {
                 return false;
             }
             // channel isnt registered
             if (chanserv::check_flags($chan, array('I'))) {
                 if (chanserv::check_levels($nick, $chan, array('k', 'q', 'a', 'o', 'h', 'v', 'F'), true, false) === false) {
                     ircd::mode(core::$config->chanserv->nick, $chan, '+b *@' . core::$nicks[$nick]['host']);
                     ircd::kick(core::$config->chanserv->nick, $nick, $chan, '+k only channel.');
                     return false;
                 }
                 // they don't have +k, KICKEM
             }
             // is the channel +I, eg, +k users only?
             $welcome = chanserv::get_flags($chan, 'w');
             // get the welcome msg
             if ($welcome != null) {
                 ircd::notice(core::$config->chanserv->nick, $nick, '(' . $chan . ') ' . $welcome);
                 // we give them the welcome msg
             }
             // is there any welcome msg? notice it to them
             if (chanserv::check_flags($chan, array('L'))) {
                 timer::add(array('cs_flags', 'increase_limit', array($chan)), 10, 1);
                 // add a timer to update the limit, in 15 seconds
             }
             // is there auto-limit enabled?
         }
     }
     // on_join entry msg
     // this is just a basic JOIN trigger
     if (ircd::on_chan_create(&$ircdata)) {
         $chans = explode(',', $ircdata[2]);
         // chan
         foreach ($chans as $chan) {
             $nusers_str = implode(' ', $ircdata);
             $nusers_str = explode(':', $nusers_str);
             // right here we need to find out where the thing is
             $nusers = ircd::parse_users($chan, $nusers_str, 1);
             if (!($channel = services::chan_exists($chan, array('channel')))) {
                 return false;
             }
             // channel isnt registered
             if (chanserv::check_flags($chan, array('I'))) {
                 foreach ($nusers as $nick => $mode) {
                     if (chanserv::check_levels($nick, $chan, array('k', 'q', 'a', 'o', 'h', 'v', 'F'), true, false) === false) {
                         ircd::mode(core::$config->chanserv->nick, $chan, '+b *@' . core::$nicks[$nick]['host']);
                         ircd::kick(core::$config->chanserv->nick, $nick, $chan, '+k only channel.');
                     }
                     // they don't have +k, KICKEM
                 }
             }
             // is the channel +I, eg, +k users only?
             $welcome = chanserv::get_flags($chan, 'w');
             // get the welcome msg
             if ($welcome != null) {
                 foreach ($nusers as $nick => $mode) {
                     if ($nick == core::$config->chanserv->nick) {
                         continue;
                     }
                     // skip if it's chanserv
                     ircd::notice(core::$config->chanserv->nick, $nick, '(' . $chan . ') ' . $welcome);
                     // we give them the entrymsg
                 }
             }
             // check for a welcome msg, if so
             // message it to the joining users.
             if (chanserv::check_flags($chan, array('L'))) {
                 cs_flags::increase_limit($chan, 1);
                 // add a timer to update the limit, in 15 seconds
             }
             // is there auto-limit enabled?
         }
     }
     // on channel create, we send out the welcome message
     // if there is one.
 }