public static function rehash_command($nick, $ircdata = array()) { $parser = new parser(CONFPATH . 'services.conf'); // load the parser $total_modules_exceptions = array(); $mod_info = array('cs' => 'chanserv', 'ns' => 'nickserv', 'os' => 'operserv', 'core' => 'core'); foreach ($mod_info as $short => $full) { $category_name = $full . '_modules'; foreach (core::$config->{$category_name} as $id => $module) { $total_modules[$short . '_' . $module] = array('type' => $short, 'file' => $module . '.' . $short . '.php'); } } // merge all the arrays to check that the loaded and excluded modules are all correct foreach (modules::$list as $name => $details) { if (!isset($total_modules[$name]) && $details['extra'] != 'static') { if (is_callable(array($name, 'modunload'), true) && method_exists($name, 'modunload')) { modules::$list[$name]['class']->modunload(); } // if the module has an unload method, call it now before we destroy the class. unset(modules::$list[$name]); modules::_unset_docs($name); // destory relevant data to the module core::alog(core::$config->operserv->nick . ': unloaded module ' . $name); ircd::globops(core::$config->operserv->nick, 'unloaded module ' . $name); // unset the module core::alog('rehash_command(): ' . $name . ' unloaded from rehash', 'BASIC'); // log what we need to log. } // the module is loaded and should be unloaded } // go through each set module and unset the now exempt modules foreach ($total_modules as $name => $details) { if (!isset(modules::$list[$name])) { if (!class_exists($name)) { modules::load_module($name, $details['file']); // load the module } else { if (!(modules::$list[$name]['class'] = new $name())) { core::alog('load_module(): unable to start: ' . $name . ' (boot error)', 'BASIC'); return false; } } core::alog(core::$config->operserv->nick . ': loaded module ' . $name); ircd::globops(core::$config->operserv->nick, 'loaded module ' . $name); // load it up core::alog('rehash_command(): ' . $name . ' loaded from rehash', 'BASIC'); // log what we need to log. modules::$list[$name]['class']->modload(); // onload handler. } } // go through every module // load the ones that are new. core::alog(core::$config->operserv->nick . ': Successfully reloaded configuration.'); ircd::globops(core::$config->operserv->nick, $nick . ' performed a REHASH'); core::alog('rehash_command(): sucessful rehash', 'BASIC'); // log what we need to log. }
public function __construct() { require BASEPATH . '/lang/' . core::$config->server->lang . '/nickserv.php'; self::$help =& $help; if (isset(core::$config->nickserv)) { ircd::introduce_client(core::$config->nickserv->nick, core::$config->nickserv->user, core::$config->nickserv->host, core::$config->nickserv->real); } else { return; } // connect the bot foreach (core::$config->nickserv_modules as $id => $module) { modules::load_module('ns_' . $module, $module . '.ns.php'); } // load the nickserv modules timer::add(array('nickserv', 'check_expire', array()), 300, 0); // set a timer! }
public function __construct() { require BASEPATH . '/lang/' . core::$config->server->lang . '/operserv.php'; self::$help =& $help; // load the help file if (isset(core::$config->operserv)) { ircd::introduce_client(core::$config->operserv->nick, core::$config->operserv->user, core::$config->operserv->host, core::$config->operserv->real); } else { return; } // connect the bot foreach (core::$config->operserv_modules as $id => $module) { modules::load_module('os_' . $module, $module . '.os.php'); } // load the operserv modules if (core::$config->operserv->override) { self::add_help('operserv', 'help', &self::$help->OS_HELP_OVERRIDE_1); self::add_help('operserv', 'help override', &self::$help->OS_HELP_OVERRIDE_ALL); // add the help self::add_command('override', 'operserv', 'override_command'); // add the override command } // if override is set to true }
public function boot_server() { if (!self::$booted) { self::$booted = true; ircd::init_server(self::$config->server->name, self::$config->conn->password, self::$config->server->desc, self::$config->server->numeric); // init the server foreach (self::$service_bots as $bot) { require BASEPATH . '/core/services/' . $bot . '.php'; $this->{$bot} = new $bot(); } // start our bots up. foreach (self::$config->core_modules as $id => $module) { modules::load_module('core_' . $module, $module . '.core.php'); } // we load core modules before the bots, incase there // is a module that changes an existing function w/e timer::init(); // setup the timer, socket_blocking to 0 is required. } }
public function modload_command($nick, $ircdata = array()) { $module = $ircdata[0]; // get the module thats been requested. if (services::is_root($nick)) { if (trim($module) == '') { services::communicate(core::$config->operserv->nick, $nick, &operserv::$help->OS_INVALID_SYNTAX_RE, array('help' => 'MODLOAD')); // wrong syntax return false; } if (isset(modules::$list[$module])) { services::communicate(core::$config->operserv->nick, $nick, &operserv::$help->OS_MODLOAD_3, array('name' => $module)); return false; } if (!class_exists($module)) { modules::load_module($name, $details['file']); // load the module } else { if (!(modules::$list[$module]['class'] = new $module())) { services::communicate(core::$config->operserv->nick, $nick, &operserv::$help->OS_MODLOAD_1, array('name' => $module)); core::alog(core::$config->operserv->nick . ': unable to load module ' . $module); core::alog('modload_command(): unable to load module ' . $module . ' (boot error)', 'BASIC'); // log what we need to log. return false; } // module failed to start } // load the module, if the class don't exist, include it modules::$list[$module]['class']->modload(); // onload handler. services::communicate(core::$config->operserv->nick, $nick, &operserv::$help->OS_MODLOAD_2, array('name' => $module)); core::alog(core::$config->operserv->nick . ': loaded module ' . $module); ircd::globops(core::$config->operserv->nick, $nick . ' loaded module ' . $module); // let everyone know } else { services::communicate(core::$config->operserv->nick, $nick, &operserv::$help->OS_ACCESS_DENIED); } }