diff --git a/ChangeLog b/ChangeLog index 0ccc0ba7..e213710d 100644 --- a/ChangeLog +++ b/ChangeLog @@ -3,7 +3,10 @@ NeoStats 3.x ChangeLog Anything we add/remove/fix/change is in here (even our rants) Fish (F), Mark (M) =============================================================================== -* NeoStats * Version 3.0.prealpha3-dev +* NeoStats * Version 3.0.a1-dev + - Add ModFini return value so modules can return errors if required. (M) + - Remove ModInit parameter since it is now redundant. (M) + - Command processor code split up. (M) - Add SET_VALIDATE stage to allow a module to override core SET validation and to potentially react to the previous setting prior to SET_CHANGE. (M) - Command processor code split up. (M) diff --git a/include/neostats.h b/include/neostats.h index 889fb28b..9d4d5502 100755 --- a/include/neostats.h +++ b/include/neostats.h @@ -1388,9 +1388,9 @@ EXPORTFUNC void os_free( void *ptr ); */ /* Module Basic Interface */ MODULEVAR extern ModuleInfo module_info; -MODULEFUNC int ModInit( Module *mod_ptr ); +MODULEFUNC int ModInit( void ); MODULEFUNC int ModSynch( void ); -MODULEFUNC void ModFini( void ); +MODULEFUNC int ModFini( void ); /* Module Event Interface */ MODULEVAR extern ModuleEvent module_events[]; /* Module Auth Interface */ diff --git a/modules/connectserv/cs.c b/modules/connectserv/cs.c index 27f7ea89..36985793 100644 --- a/modules/connectserv/cs.c +++ b/modules/connectserv/cs.c @@ -204,12 +204,12 @@ ModeDef OperSmodes[] = * Init handler * Loads connectserv configuration * - * @param pointer to my module + * @param none * * @return NS_SUCCESS if suceeds else NS_FAILURE */ -int ModInit( Module *mod_ptr ) +int ModInit( void ) { /* Load stored configuration */ ModuleConfig( cs_settings ); @@ -244,11 +244,12 @@ int ModSynch( void ) * * @param none * - * @return none + * @return NS_SUCCESS if suceeds else NS_FAILURE */ -void ModFini( void ) +int ModFini (void) { + return NS_SUCCESS; } /** @brief cs_report diff --git a/modules/extauth/extauth.c b/modules/extauth/extauth.c index 0c9cc279..acc0cbc1 100644 --- a/modules/extauth/extauth.c +++ b/modules/extauth/extauth.c @@ -259,12 +259,12 @@ static int ea_cmd_access( CmdParams *cmdparams ) * * Init handler * - * @param pointer to my module + * @param none * * @return NS_SUCCESS if suceeds else NS_FAILURE */ -int ModInit( Module *modptr ) +int ModInit( void ) { LoadAccessList(); return NS_SUCCESS; @@ -294,12 +294,13 @@ int ModSynch( void ) * * @param none * - * @return none + * @return NS_SUCCESS if suceeds else NS_FAILURE */ -void ModFini( void ) +int ModFini (void) { del_services_cmd_list( extauth_commands ); + return NS_SUCCESS; } /** @brief ModAuthUser diff --git a/modules/hostserv/hostserv.c b/modules/hostserv/hostserv.c index 3202240c..6b7bf81a 100644 --- a/modules/hostserv/hostserv.c +++ b/modules/hostserv/hostserv.c @@ -410,12 +410,12 @@ static int hs_event_umode (CmdParams *cmdparams) * * Init handler * - * @param pointer to my module + * @param none * * @return NS_SUCCESS if succeeds else NS_FAILURE */ -int ModInit (Module *mod_ptr) +int ModInit( void ) { vhost_list = list_create(-1); if (!vhost_list) { @@ -465,10 +465,10 @@ int ModSynch (void) * * @param none * - * @return none + * @return NS_SUCCESS if suceeds else NS_FAILURE */ -void ModFini (void) +int ModFini (void) { banentry *ban; hnode_t *hn; @@ -483,6 +483,7 @@ void ModFini (void) } hash_destroy(banhash); list_destroy_auto (vhost_list); + return NS_SUCCESS; } /** @brief new_vhost @@ -548,6 +549,8 @@ static int hs_cmd_bans_list (CmdParams *cmdparams) * Command handler for BANS ADD * * @param cmdparams + * cmdparams->av[1] = ban host mask + * cmdparams->av[2 - cmdparams->ac-1] = reason * * @return NS_SUCCESS if succeeds, else NS_FAILURE */ @@ -583,6 +586,7 @@ static int hs_cmd_bans_add (CmdParams *cmdparams) * Command handler for BANS DEL * * @param cmdparams + * cmdparams->av[1] = ban host mask * * @return NS_SUCCESS if succeeds, else NS_FAILURE */ @@ -619,6 +623,7 @@ static int hs_cmd_bans_del (CmdParams *cmdparams) * Command handler for BANS * * @param cmdparams + * cmdparams->av[0] = sub command * * @return NS_SUCCESS if succeeds, else NS_FAILURE */ @@ -646,6 +651,9 @@ static int hs_cmd_bans (CmdParams *cmdparams) * Command handler for CHPASS * * @param cmdparams + * cmdparams->av[0] = login + * cmdparams->av[1] = old password + * cmdparams->av[2] = new password * * @return NS_SUCCESS if succeeds, else NS_FAILURE */ @@ -669,7 +677,6 @@ static int hs_cmd_chpass (CmdParams *cmdparams) CommandReport(hs_bot, "%s changed the password for %s", cmdparams->source->name, vhe->nick); SaveVhost (vhe); - return NS_SUCCESS; } return NS_SUCCESS; } @@ -686,6 +693,10 @@ static int hs_cmd_chpass (CmdParams *cmdparams) * Command handler for ADD * * @param cmdparams + * cmdparams->av[0] = login + * cmdparams->av[1] = real host mask + * cmdparams->av[2] = vhost + * cmdparams->av[3] = password * * @return NS_SUCCESS if succeeds, else NS_FAILURE */ @@ -756,6 +767,7 @@ static int hs_cmd_add (CmdParams *cmdparams) * Command handler for LIST * * @param cmdparams + * cmdparams->av[0] = optionally max number to display * * @return NS_SUCCESS if succeeds, else NS_FAILURE */ @@ -816,6 +828,7 @@ static int hs_cmd_list (CmdParams *cmdparams) * Command handler for VIEW * * @param cmdparams + * cmdparams->av[0] = login to view * * @return NS_SUCCESS if succeeds, else NS_FAILURE */ @@ -847,6 +860,7 @@ static int hs_cmd_view (CmdParams *cmdparams) /** @brief hs_cmd_del * * Command handler for DEL + * cmdparams->av[0] = login to delete * * @param cmdparams * @@ -882,6 +896,8 @@ static int hs_cmd_del (CmdParams *cmdparams) * Command handler for LOGIN * * @param cmdparams + * cmdparams->av[0] = login + * cmdparams->av[1] = password * * @return NS_SUCCESS if succeeds, else NS_FAILURE */ @@ -889,19 +905,15 @@ static int hs_cmd_del (CmdParams *cmdparams) static int hs_cmd_login (CmdParams *cmdparams) { vhostentry *vhe; - char *login; - char *pass; SET_SEGV_LOCATION(); - login = cmdparams->av[0]; - pass = cmdparams->av[1]; /* Check HostName Against Data Contained in vhosts.data */ - vhe = lnode_find (vhost_list, login, findnick); + vhe = lnode_find (vhost_list, cmdparams->av[0], findnick); if (vhe) { - if (!ircstrcasecmp (vhe->passwd, pass)) { + if (!ircstrcasecmp (vhe->passwd, cmdparams->av[1])) { irc_svshost (hs_bot, cmdparams->source, vhe->vhost); irc_prefmsg (hs_bot, cmdparams->source, - "Your vhost %s has been set.", vhe->vhost); + "Your vhost has been set to %s", vhe->vhost); nlog (LOG_NORMAL, "%s used LOGIN to obtain vhost of %s", cmdparams->source->name, vhe->vhost); if( hs_cfg.verbose ) { diff --git a/modules/ircdauth/ircdauth.c b/modules/ircdauth/ircdauth.c index 3547b191..6bdf58ce 100644 --- a/modules/ircdauth/ircdauth.c +++ b/modules/ircdauth/ircdauth.c @@ -140,12 +140,12 @@ bot_cmd ircdauth_commands[] = * * Init handler * - * @param pointer to my module + * @param none * * @return NS_SUCCESS if suceeds else NS_FAILURE */ -int ModInit( Module *modptr ) +int ModInit( void ) { return NS_SUCCESS; } @@ -174,12 +174,13 @@ int ModSynch( void ) * * @param none * - * @return none + * @return NS_SUCCESS if suceeds else NS_FAILURE */ -void ModFini( void ) +int ModFini (void) { del_services_cmd_list( ircdauth_commands ); + return NS_SUCCESS; } /** @brief ModAuthUser diff --git a/modules/loveserv/loveserv.c b/modules/loveserv/loveserv.c index c3cac4d1..f712493c 100644 --- a/modules/loveserv/loveserv.c +++ b/modules/loveserv/loveserv.c @@ -95,12 +95,12 @@ static BotInfo ls_botinfo = * * Init handler * - * @param pointer to my module + * @param none * * @return NS_SUCCESS if suceeds else NS_FAILURE */ -int ModInit( Module *mod_ptr ) +int ModInit( void ) { return NS_SUCCESS; } @@ -131,11 +131,12 @@ int ModSynch( void ) * * @param none * - * @return none + * @return NS_SUCCESS if suceeds else NS_FAILURE */ -void ModFini( void ) +int ModFini (void) { + return NS_SUCCESS; } /** @brief ls_rose diff --git a/modules/modules.txt b/modules/modules.txt index 653fde7a..84de474b 100644 --- a/modules/modules.txt +++ b/modules/modules.txt @@ -141,11 +141,11 @@ configuration and starting databases. * * Init module * - * @param pointer to our module structure + * @param none * * @return NS_SUCCESS if suceeds else NS_FAILURE */ -int ModInit (Module *mod_ptr) +int ModInit( void ) { return NS_SUCCESS; } @@ -165,7 +165,7 @@ where you would init a bot if you wanted one. * @return NS_SUCCESS if suceeds else NS_FAILURE */ -int ModSynch (void) +int ModSynch( void ) { /* Introduce a bot onto the network saving the bot handle */ template_bot = AddBot (&template_bot_info); @@ -184,11 +184,12 @@ databases. * * @param none * - * @return none + * @return NS_SUCCESS if suceeds else NS_FAILURE */ -void ModFini (void) +int ModFini (void) { + return NS_SUCCESS; } NeoStats provides an API to send commands over IRC. These are designed diff --git a/modules/moraleserv/ms.c b/modules/moraleserv/ms.c index 1cdcbc88..0c32cee2 100644 --- a/modules/moraleserv/ms.c +++ b/modules/moraleserv/ms.c @@ -90,12 +90,12 @@ static BotInfo ms_botinfo = * * Init handler * - * @param pointer to my module + * @param none * * @return NS_SUCCESS if suceeds else NS_FAILURE */ -int ModInit( Module *mod_ptr ) +int ModInit( void ) { return NS_SUCCESS; } @@ -126,11 +126,12 @@ int ModSynch( void ) * * @param none * - * @return none + * @return NS_SUCCESS if suceeds else NS_FAILURE */ -void ModFini( void ) +int ModFini (void) { + return NS_SUCCESS; } /** @brief ms_hail diff --git a/modules/statserv/statserv.c b/modules/statserv/statserv.c index d06f97c0..da672519 100644 --- a/modules/statserv/statserv.c +++ b/modules/statserv/statserv.c @@ -148,12 +148,12 @@ int SaveStats(void) * * Init handler * - * @param pointer to my module + * @param none * * @return NS_SUCCESS if suceeds else NS_FAILURE */ -int ModInit (Module *mod_ptr) +int ModInit( void ) { SET_SEGV_LOCATION(); StatServ.shutdown = 0; @@ -220,10 +220,10 @@ int ModSynch (void) * * @param none * - * @return none + * @return NS_SUCCESS if suceeds else NS_FAILURE */ -void ModFini (void) +int ModFini (void) { StatServ.shutdown = 1; FiniServerStats (); @@ -235,6 +235,7 @@ void ModFini (void) #ifdef USE_BERKELEY DBACloseTable(); #endif + return NS_SUCCESS; } static int ss_set_html_cb (CmdParams *cmdparams, SET_REASON reason) diff --git a/modules/template/template.c b/modules/template/template.c index afe1f5fd..b0a0f2cd 100755 --- a/modules/template/template.c +++ b/modules/template/template.c @@ -256,7 +256,7 @@ ModuleEvent module_events[] = * * @return NS_SUCCESS if suceeds else NS_FAILURE */ -int ModInit( Module *mod_ptr ) +int ModInit( void ) { return NS_SUCCESS; } @@ -288,10 +288,11 @@ int ModSynch( void ) * * @param none * - * @return none + * @return NS_SUCCESS if suceeds else NS_FAILURE */ -void ModFini( void ) +int ModFini (void) { + return NS_SUCCESS; } diff --git a/modules/templateauth/templateauth.c b/modules/templateauth/templateauth.c index 5f659749..e27d7329 100644 --- a/modules/templateauth/templateauth.c +++ b/modules/templateauth/templateauth.c @@ -59,12 +59,12 @@ ModuleInfo module_info = * * Init handler * - * @param pointer to my module + * @param none * * @return NS_SUCCESS if suceeds else NS_FAILURE */ -int ModInit( Module *modptr ) +int ModInit( void ) { return NS_SUCCESS; } @@ -92,8 +92,9 @@ int ModSynch( void ) * @return none */ -void ModFini( void ) +int ModFini (void) { + return NS_SUCCESS; } /** @brief ModAuthUser diff --git a/src/modules.c b/src/modules.c index a696036f..8ff84b28 100644 --- a/src/modules.c +++ b/src/modules.c @@ -255,7 +255,7 @@ load_module (const char *modfilename, Client * u) ModuleInfo *info_ptr = NULL; ModuleEvent *event_ptr = NULL; Module *mod_ptr = NULL; - int (*ModInit) (Module *module_ptr); + int (*ModInit) (void); CmdParams *cmdparams; SET_SEGV_LOCATION(); @@ -339,7 +339,7 @@ load_module (const char *modfilename, Client * u) SET_SEGV_LOCATION(); SET_RUN_LEVEL(mod_ptr); DBAOpenDatabase (); - err = (*ModInit) (mod_ptr); + err = (*ModInit) (); RESET_RUN_LEVEL(); if (err < 1 || mod_ptr->error) { load_module_error (u, __("Unable to load module: %s. See %s.log for further information.",u), mod_ptr->info->name, mod_ptr->info->name); @@ -410,7 +410,7 @@ unload_module (const char *modname, Client * u) Module *mod_ptr; hnode_t *modnode; int moduleindex; - void (*ModFini) (); + int (*ModFini) ( void ); CmdParams *cmdparams; SET_SEGV_LOCATION(); diff --git a/src/rtaserv.c b/src/rtaserv.c index 6a83ed6a..2a47fef8 100644 --- a/src/rtaserv.c +++ b/src/rtaserv.c @@ -498,7 +498,7 @@ ModuleInfo module_info = { * @return NS_SUCCESS if suceeds else NS_FAILURE */ -int ModInit (Module *modptr) +int ModInit (void) { ModuleConfig (rta_settings); if (InitRTAServ () != NS_SUCCESS) { @@ -530,12 +530,13 @@ int ModSynch (void) * * @param none * - * @return none + * @return NS_SUCCESS if suceeds else NS_FAILURE */ -void ModFini (void) +int ModFini (void) { del_services_set_list (rta_settings); + return NS_SUCCESS; } #else