Anope IRC Services  Version 1.8
Functions | Variables
modules.c File Reference
#include "modules.h"
#include "language.h"
#include "version.h"
Include dependency graph for modules.c:

Go to the source code of this file.

Functions

int displayCommand (Command *c)
 
int displayCommandFromHash (CommandHash *cmdTable[], char *name)
 
int displayMessageFromHash (char *name)
 
int displayMessage (Message *m)
 
char * ModuleGetErrStr (int status)
 
void modules_init (void)
 
void modules_core_init (int number, char **list)
 
int encryption_module_init (void)
 
int protocol_module_init (void)
 
void modules_delayed_init (void)
 
void modules_unload_all (boolean fini, boolean unload_proto)
 
ModulecreateModule (char *filename)
 
int destroyModule (Module *m)
 
int addModule (Module *m)
 
int delModule (Module *m)
 
ModulefindModule (char *name)
 
int protocolModuleLoaded ()
 
int encryptionModuleLoaded ()
 
int moduleCopyFile (char *name, char *output)
 
int loadModule (Module *m, User *u)
 
int unloadModule (Module *m, User *u)
 
void moduleSetType (MODType type)
 
int prepForUnload (Module *m)
 
CommandcreateCommand (const char *name, int(*func)(User *u), int(*has_priv)(User *u), int help_all, int help_reg, int help_oper, int help_admin, int help_root)
 
int destroyCommand (Command *c)
 
int addCoreCommand (CommandHash *cmdTable[], Command *c)
 
int moduleAddCommand (CommandHash *cmdTable[], Command *c, int pos)
 
int moduleDelCommand (CommandHash *cmdTable[], char *name)
 
int addCommand (CommandHash *cmdTable[], Command *c, int pos)
 
int delCommand (CommandHash *cmdTable[], Command *c, char *mod_name)
 
CommandfindCommand (CommandHash *cmdTable[], const char *name)
 
MessagecreateMessage (const char *name, int(*func)(char *source, int ac, char **av))
 
MessagefindMessage (MessageHash *msgTable[], const char *name)
 
int addMessage (MessageHash *msgTable[], Message *m, int pos)
 
int addCoreMessage (MessageHash *msgTable[], Message *m)
 
int moduleAddMessage (Message *m, int pos)
 
int moduleDelMessage (char *name)
 
int delMessage (MessageHash *msgTable[], Message *m, char *mod_name)
 
int destroyMessage (Message *m)
 
void moduleAddVersion (const char *version)
 
void moduleAddAuthor (const char *author)
 
int moduleAddCallback (char *name, time_t when, int(*func)(int argc, char *argv[]), int argc, char **argv)
 
void moduleCallBackRun (void)
 
void moduleCallBackDeleteEntry (ModuleCallBack *prev)
 
ModuleCallBackmoduleCallBackFindEntry (char *mod_name, boolean *found)
 
void moduleDelCallback (char *name)
 
void moduleCallBackPrepForUnload (char *mod_name)
 
char * moduleGetLastBuffer (void)
 
int moduleAddRootHelp (Command *c, int(*func)(User *u))
 
int moduleAddAdminHelp (Command *c, int(*func)(User *u))
 
int moduleAddOperHelp (Command *c, int(*func)(User *u))
 
int moduleAddRegHelp (Command *c, int(*func)(User *u))
 
int moduleAddHelp (Command *c, int(*func)(User *u))
 
void moduleSetNickHelp (void(*func)(User *u))
 
void moduleSetChanHelp (void(*func)(User *u))
 
void moduleSetMemoHelp (void(*func)(User *u))
 
void moduleSetBotHelp (void(*func)(User *u))
 
void moduleSetOperHelp (void(*func)(User *u))
 
void moduleSetHostHelp (void(*func)(User *u))
 
void moduleSetHelpHelp (void(*func)(User *u))
 
void moduleDisplayHelp (int service, User *u)
 
int moduleDataDebug (ModuleData **md)
 
int moduleAddData (ModuleData **md, char *key, char *value)
 
char * moduleGetData (ModuleData **md, char *key)
 
void moduleDelData (ModuleData **md, char *key)
 
void moduleDelAllData (ModuleData **md)
 
void moduleDelAllDataMod (Module *m)
 
void moduleCleanStruct (ModuleData **moduleData)
 
boolean moduleMinVersion (int major, int minor, int patch, int build)
 
void updateProtectDetails (char *level_info_protect_word, char *level_info_protectme_word, char *fant_protect_add, char *fant_protect_del, char *level_protect_word, char *protect_set_mode, char *protect_unset_mode)
 
int moduleGetConfigDirective (Directive *d)
 
void moduleInsertLanguage (int langNumber, int ac, char **av)
 
void moduleNoticeLang (char *source, User *u, int number,...)
 
char * moduleGetLangString (User *u, int number)
 
void moduleDeleteLanguage (int langNumber)
 
void queueModuleOperation (Module *m, ModuleOperation op, User *u)
 
int queueModuleLoad (char *name, User *u)
 
int queueModuleUnload (char *name, User *u)
 
void handleModuleOperationQueue (void)
 
void ModuleRunTimeDirCleanUp (void)
 

Variables

CommandHashHOSTSERV [MAX_CMD_HASH]
 
CommandHashBOTSERV [MAX_CMD_HASH]
 
CommandHashMEMOSERV [MAX_CMD_HASH]
 
CommandHashNICKSERV [MAX_CMD_HASH]
 
CommandHashCHANSERV [MAX_CMD_HASH]
 
CommandHashHELPSERV [MAX_CMD_HASH]
 
CommandHashOPERSERV [MAX_CMD_HASH]
 
MessageHashIRCD [MAX_CMD_HASH]
 
ModuleHashMODULE_HASH [MAX_CMD_HASH]
 
Modulemod_current_module
 
char * mod_current_module_name = NULL
 
char * mod_current_buffer = NULL
 
Usermod_current_user
 
ModuleCallBackmoduleCallBackHead = NULL
 
ModuleQueuemod_operation_queue = NULL
 

Function Documentation

int addCommand ( CommandHash cmdTable[],
Command c,
int  pos 
)

Add a command to a command table. only add if were unique, pos = 0; if we want it at the "head" of that command, pos = 1 at the tail, pos = 2

Parameters
cmdTablethe table to add the command to
cthe command to add
posthe position in the cmd call stack to add the command
Returns
MOD_ERR_OK will be returned on success.

Definition at line 1293 of file modules.c.

References alog(), c, CommandHash_::c, CMD_HASH, current, debug, EVENT_ADDCOMMAND, fatal(), mod_current_module_name, MOD_ERR_EXISTS, MOD_ERR_NO_MOD_NAME, MOD_ERR_OK, MOD_ERR_PARAMS, Command_::mod_name, Command_::name, CommandHash_::name, Command_::next, CommandHash_::next, send_event(), Command_::service, sstrdup(), and stricmp().

Referenced by addCoreCommand(), and moduleAddCommand().

int addCoreCommand ( CommandHash cmdTable[],
Command c 
)

Add a CORE command ot the given command hash

Parameters
cmdTablethe command table to add the command to
cthe command to add
Returns
MOD_ERR_OK on success

Definition at line 1063 of file modules.c.

References addCommand(), Command_::core, MOD_ERR_PARAMS, and Command_::next.

Referenced by moduleAddOperServCmds().

int addCoreMessage ( MessageHash msgTable[],
Message m 
)

Add the given message (m) to the MessageHash marking it as a core command

Parameters
msgTablethe MessageHash we want to add to
mthe Message we are adding
Returns
MOD_ERR_OK on a successful add.

Definition at line 1597 of file modules.c.

References addMessage(), Message_::core, and MOD_ERR_PARAMS.

Referenced by moduleAddIRCDMsgs(), and moduleAddMsgs().

int addMessage ( MessageHash msgTable[],
Message m,
int  pos 
)

Add a message to the MessageHash.

Parameters
msgTablethe MessageHash we want to add a message to
mthe Message we want to add
posthe position we want to add the message to, E.G. MOD_HEAD, MOD_TAIL, MOD_UNIQUE
Returns
MOD_ERR_OK on a successful add.

Definition at line 1531 of file modules.c.

References alog(), CMD_HASH, current, debug, fatal(), ircd, MessageHash_::m, MOD_ERR_EXISTS, MOD_ERR_OK, MOD_ERR_PARAMS, Message_::name, MessageHash_::name, Message_::next, MessageHash_::next, sstrdup(), stricmp(), ircdvars_::tokencaseless, and UseTokens.

Referenced by addCoreMessage(), and moduleAddMessage().

int addModule ( Module m)

Add the module to the list of currently loaded modules.

Parameters
mthe currently loaded module
Returns
MOD_ERR_OK on success, anything else on fail

Definition at line 404 of file modules.c.

References CMD_HASH, current, fatal(), ModuleHash_::m, MOD_ERR_EXISTS, MOD_ERR_OK, Module_::name, ModuleHash_::name, ModuleHash_::next, sstrdup(), stricmp(), and Module_::time.

Referenced by loadModule().

Command* createCommand ( const char *  name,
int(*)(User *u)  func,
int(*)(User *u)  has_priv,
int  help_all,
int  help_reg,
int  help_oper,
int  help_admin,
int  help_root 
)

Create a Command struct ready for use in anope.

Parameters
namethe name of the command
funcpointer to the function to execute when command is given
has_privpointer to function to check user priv's
help_allhelp file index for all users
help_reghelp file index for all regustered users
help_operhelp file index for all opers
help_adminhelp file index for all admins
help_roothelp file indenx for all services roots
Returns
a "ready to use" Command struct will be returned

Definition at line 987 of file modules.c.

References Command_::admin_help, Command_::all_help, c, fatal(), Command_::has_priv, Command_::help_param1, Command_::help_param2, Command_::help_param3, Command_::help_param4, Command_::helpmsg_admin, Command_::helpmsg_all, Command_::helpmsg_oper, Command_::helpmsg_reg, Command_::helpmsg_root, Command_::mod_name, Command_::name, Command_::next, Command_::oper_help, Command_::regular_help, Command_::root_help, Command_::routine, Command_::service, and sstrdup().

Referenced by addMessageList(), AnopeInit(), moduleAddOperServCmds(), and my_event_addcommand().

Message* createMessage ( const char *  name,
int(*)(char *source, int ac, char **av)  func 
)

Create a new Message struct.

Parameters
namethe name of the message
funca pointer to the function to call when we recive this message
Returns
a new Message object

Definition at line 1470 of file modules.c.

References fatal(), Message_::func, Message_::mod_name, Message_::name, Message_::next, and sstrdup().

Referenced by AnopeInit(), moduleAddIRCDMsgs(), and moduleAddMsgs().

Module* createModule ( char *  filename)
int delCommand ( CommandHash cmdTable[],
Command c,
char *  mod_name 
)

Remove a command from the command hash.

Parameters
cmdTablethe command table to remove the command from
cthe command to remove
mod_namethe name of the module who owns the command
Returns
MOD_ERR_OK will be returned on success

Definition at line 1367 of file modules.c.

References CommandHash_::c, CMD_HASH, current, EVENT_DELCOMMAND, MOD_ERR_NOEXIST, MOD_ERR_OK, MOD_ERR_PARAMS, Command_::mod_name, Command_::name, CommandHash_::name, Command_::next, CommandHash_::next, send_event(), and stricmp().

Referenced by moduleDelCommand(), and prepForUnload().

int delMessage ( MessageHash msgTable[],
Message m,
char *  mod_name 
)

remove the given message from the given message hash, for the given module

Parameters
msgTablewhich MessageHash we are removing from
mthe Message we want to remove the name of the module we are removing
Returns
MOD_ERR_OK on success, althing else on fail.

Definition at line 1668 of file modules.c.

References CMD_HASH, current, MessageHash_::m, MOD_ERR_NOEXIST, MOD_ERR_OK, MOD_ERR_PARAMS, Message_::mod_name, Message_::name, MessageHash_::name, Message_::next, MessageHash_::next, and stricmp().

Referenced by moduleDelMessage(), and prepForUnload().

int delModule ( Module m)

Remove the module from the list of loaded modules.

Parameters
mmodule to remove
Returns
MOD_ERR_OK on success anything else on fail

Definition at line 439 of file modules.c.

References CMD_HASH, current, destroyModule(), ModuleHash_::m, MOD_ERR_NOEXIST, MOD_ERR_OK, MOD_ERR_PARAMS, Module_::name, ModuleHash_::name, ModuleHash_::next, and stricmp().

Referenced by modules_unload_all(), and unloadModule().

int destroyCommand ( Command c)

Destroy a command struct freeing any memory.

Parameters
cCommand to destroy
Returns
MOD_ERR_OK on success, anything else on fail

Definition at line 1028 of file modules.c.

References Command_::core, Command_::has_priv, Command_::helpmsg_admin, Command_::helpmsg_all, Command_::helpmsg_oper, Command_::helpmsg_reg, Command_::helpmsg_root, MOD_ERR_OK, MOD_ERR_PARAMS, MOD_ERR_UNKNOWN, Command_::mod_name, Command_::name, Command_::next, Command_::routine, and Command_::service.

Referenced by moduleDelCommand(), and prepForUnload().

int destroyMessage ( Message m)

Destory a message, freeing its memory.

Parameters
mthe message to be destroyed
Returns
MOD_ERR_SUCCESS on success

Definition at line 1739 of file modules.c.

References Message_::func, MOD_ERR_OK, MOD_ERR_PARAMS, Message_::mod_name, Message_::name, and Message_::next.

Referenced by moduleDelMessage(), and prepForUnload().

int destroyModule ( Module m)

Destory the module. free up all memory used by our module struct.

Parameters
mthe module to free
Returns
MOD_ERR_OK on success, anything else on fail

Definition at line 362 of file modules.c.

References Module_::author, Module_::filename, Module_::handle, mod_current_module_name, MOD_ERR_OK, MOD_ERR_PARAMS, moduleDeleteLanguage(), Module_::name, NUM_LANGS, and Module_::version.

Referenced by delModule(), encryption_module_init(), handleModuleOperationQueue(), modules_core_init(), modules_delayed_init(), modules_init(), and protocol_module_init().

int displayCommand ( Command c)

Output the command stack into the log files. This will print the call-stack for a given command into the log files, very useful for debugging.

Parameters
cthe command struct to print
Returns
0 is returned, it has no relevence yet :)

Definition at line 1227 of file modules.c.

References alog(), Command_::name, and Command_::next.

Referenced by displayCommandFromHash().

int displayCommandFromHash ( CommandHash cmdTable[],
char *  name 
)

Output the command stack into the log files. This will print the call-stack for a given command into the log files, very useful for debugging.

Parameters
cmdTablethe command table to read from
namethe name of the command to print
Returns
0 is returned, it has no relevence yet :)

Definition at line 1201 of file modules.c.

References alog(), CommandHash_::c, CMD_HASH, current, debug, displayCommand(), CommandHash_::name, CommandHash_::next, and stricmp().

Referenced by moduleAddCommand(), and moduleDelCommand().

int displayMessage ( Message m)

Displays a message list for a given message. Again this is of little use other than debugging.

Parameters
mthe message to display
Returns
0 is returned and has no meaning

Definition at line 1270 of file modules.c.

References alog(), Message_::name, and Message_::next.

Referenced by displayMessageFromHash().

int displayMessageFromHash ( char *  name)

Display the message call stak. Prints the call stack for a message based on the message name, again useful for debugging and little lese :)

Parameters
namethe name of the message to print info for
Returns
the return int has no relevence atm :)

Definition at line 1245 of file modules.c.

References alog(), CMD_HASH, current, debug, displayMessage(), MessageHash_::m, MessageHash_::name, MessageHash_::next, and stricmp().

Referenced by moduleAddMessage(), and moduleDelMessage().

int encryption_module_init ( void  )
int encryptionModuleLoaded ( )

Search all loaded modules looking for an encryption module. @ return 1 if one is loaded

Definition at line 514 of file modules.c.

References current, ENCRYPTION, ModuleHash_::m, MAX_CMD_HASH, ModuleHash_::next, and Module_::type.

Referenced by loadModule().

Command* findCommand ( CommandHash cmdTable[],
const char *  name 
)

Search the command table gieven for a command.

Parameters
cmdTablethe name of the command table to search
namethe name of the command to look for
Returns
returns a pointer to the found command struct, or NULL

Definition at line 1442 of file modules.c.

References CommandHash_::c, CMD_HASH, current, CommandHash_::name, CommandHash_::next, and stricmp().

Referenced by AnopeInit(), mod_help_cmd(), mod_run_cmd(), moduleDelCommand(), and reload_config().

Message* findMessage ( MessageHash msgTable[],
const char *  name 
)

find a message in the given table. Looks up the message <name> in the MessageHash given

Parameters
MessageHashthe message table to search for this command, will almost always be IRCD
namethe name of the command were looking for
Returns
NULL if we cant find it, or a pointer to the Message if we can

Definition at line 1494 of file modules.c.

References CMD_HASH, current, ircd, MessageHash_::m, MessageHash_::name, MessageHash_::next, stricmp(), ircdvars_::tokencaseless, and UseTokens.

Referenced by find_message(), and moduleDelMessage().

Module* findModule ( char *  name)
void handleModuleOperationQueue ( void  )
int loadModule ( Module m,
User u 
)
int moduleAddAdminHelp ( Command c,
int(*)(User *u)  func 
)

Add help for Admins.

Parameters
cthe Command to add help for
functhe function to run when this help is asked for

Definition at line 2022 of file modules.c.

References Command_::admin_help, MOD_CONT, and MOD_STOP.

Referenced by AnopeInit().

void moduleAddAuthor ( const char *  author)

Add the modules author info

Parameters
authorthe author of the module

Definition at line 1772 of file modules.c.

References Anope_Free, Module_::author, and sstrdup().

Referenced by AnopeInit().

int moduleAddCallback ( char *  name,
time_t  when,
int(*)(int argc, char *argv[])  func,
int  argc,
char **  argv 
)

Adds a timed callback for the current module. This allows modules to request that anope executes one of there functions at a time in the future, without an event to trigger it

Parameters
namethe name of the callback, this is used for refrence mostly, but is needed it you want to delete this particular callback later on
whenwhen should the function be executed, this is a time in the future, seconds since 00:00:00 1970-01-01 UTC
functhe function to be executed when the callback is ran, its format MUST be int func(int argc, char **argv);
argcthe argument count for the argv paramter
atgva argument list to be passed to the called function.
Returns
MOD_ERR_OK on success, anything else on fail.
See also
moduleDelCallBack

Definition at line 1794 of file modules.c.

References alog(), debug, mod_current_module_name, MOD_ERR_MEMORY, MOD_ERR_OK, moduleCallBackHead, ModuleCallBack_::next, sstrdup(), and ModuleCallBack_::when.

Referenced by addBan(), and AnopeInit().

int moduleAddCommand ( CommandHash cmdTable[],
Command c,
int  pos 
)

Add a module provided command to the given service. e.g. moduleAddCommand(NICKSERV,c,MOD_HEAD);

Parameters
cmdTablethe services to add the command to
cthe command to add
posthe position to add to, MOD_HEAD, MOD_TAIL, MOD_UNIQUE
See also
createCommand
Returns
MOD_ERR_OK on successfully adding the command

Definition at line 1082 of file modules.c.

References addCommand(), alog(), Command_::core, debug, displayCommandFromHash(), MOD_ERR_NOSERVICE, MOD_ERR_OK, MOD_ERR_PARAMS, MOD_ERR_UNKNOWN, Command_::mod_name, Module_::name, Command_::name, s_BotServ, s_ChanServ, s_HelpServ, s_HostServ, s_MemoServ, s_NickServ, s_OperServ, Command_::service, and sstrdup().

Referenced by addMessageList(), AnopeInit(), and my_event_addcommand().

int moduleAddData ( ModuleData **  md,
char *  key,
char *  value 
)

Add module data to a struct. This allows module coders to add data to an existing struct

Parameters
mdThe module data for the struct to be used
keyThe Key for the key/value pair
valueThe value for the key/value pair, this is what will be stored for you
Returns
MOD_ERR_OK will be returned on success

Definition at line 2225 of file modules.c.

References alog(), debug, do_backtrace(), ModuleData_::key, mod_current_module_name, MOD_ERR_MEMORY, MOD_ERR_OK, MOD_ERR_PARAMS, moduleDataDebug(), moduleDelData(), ModuleData_::moduleName, ModuleData_::next, sstrdup(), and ModuleData_::value.

Referenced by mLoadData(), myAddChanInfo(), and myAddNickInfo().

int moduleAddHelp ( Command c,
int(*)(User *u)  func 
)

Add help for all users

Parameters
cthe Command to add help for
functhe function to run when this help is asked for

Definition at line 2064 of file modules.c.

References Command_::all_help, MOD_CONT, and MOD_STOP.

Referenced by AnopeInit().

int moduleAddMessage ( Message m,
int  pos 
)

Add a module message to the IRCD message hash

Parameters
mthe Message to add
posthe Position to add the message to, e.g. MOD_HEAD, MOD_TAIL, MOD_UNIQUE
Returns
MOD_ERR_OK on success, althing else on fail.

Definition at line 1612 of file modules.c.

References addMessage(), Message_::core, debug, displayMessageFromHash(), MOD_ERR_PARAMS, MOD_ERR_UNKNOWN, Message_::mod_name, Module_::name, Message_::name, and sstrdup().

Referenced by AnopeInit().

int moduleAddOperHelp ( Command c,
int(*)(User *u)  func 
)

Add help for opers..

Parameters
cthe Command to add help for
functhe function to run when this help is asked for

Definition at line 2036 of file modules.c.

References MOD_CONT, MOD_STOP, and Command_::oper_help.

Referenced by AnopeInit().

int moduleAddRegHelp ( Command c,
int(*)(User *u)  func 
)

Add help for registered users

Parameters
cthe Command to add help for
functhe function to run when this help is asked for

Definition at line 2050 of file modules.c.

References MOD_CONT, MOD_STOP, and Command_::regular_help.

Referenced by AnopeInit().

int moduleAddRootHelp ( Command c,
int(*)(User *u)  func 
)

Add help for Root admins.

Parameters
cthe Command to add help for
functhe function to run when this help is asked for

Definition at line 2008 of file modules.c.

References MOD_CONT, MOD_STOP, and Command_::root_help.

Referenced by AnopeInit().

void moduleAddVersion ( const char *  version)

Add the modules version info.

Parameters
versionthe version of the current module

Definition at line 1760 of file modules.c.

References Anope_Free, sstrdup(), and Module_::version.

Referenced by AnopeInit().

void moduleCallBackDeleteEntry ( ModuleCallBack prev)

Removes a entry from the modules callback list

Parameters
preva pointer to the previous entry in the list, NULL for the head

Definition at line 1870 of file modules.c.

References ModuleCallBack_::argc, ModuleCallBack_::argv, ModuleCallBack_::func, moduleCallBackHead, ModuleCallBack_::name, ModuleCallBack_::next, and ModuleCallBack_::owner_name.

Referenced by moduleCallBackPrepForUnload(), moduleCallBackRun(), and moduleDelCallback().

ModuleCallBack* moduleCallBackFindEntry ( char *  mod_name,
boolean found 
)

Search the module callback list for a given module

Parameters
mod_namethe name of the module were looking for
foundhave we found it?
Returns
a pointer to the ModuleCallBack struct or NULL - dont forget to check the found paramter!

Definition at line 1901 of file modules.c.

References current, moduleCallBackHead, and channel_::next.

Referenced by moduleCallBackPrepForUnload().

void moduleCallBackPrepForUnload ( char *  mod_name)

Remove all outstanding module callbacks for the given module. When a module is unloaded, any callbacks it had outstanding must be removed, else when they attempt to execute the func pointer will no longer be valid, and we'll seg.

Parameters
mod_namethe name of the module we are preping for unload

Definition at line 1968 of file modules.c.

References alog(), debug, moduleCallBackDeleteEntry(), and moduleCallBackFindEntry().

Referenced by prepForUnload().

void moduleCallBackRun ( void  )
void moduleCleanStruct ( ModuleData **  moduleData)

Remove any data from any module used in the given struct. Useful for cleaning up when a User leave's the net, a NickCore is deleted, etc...

Parameters
moduleDatathe moduleData struct to "clean"

Definition at line 2439 of file modules.c.

References current, ModuleData_::key, ModuleData_::moduleName, ModuleData_::next, and ModuleData_::value.

Referenced by delchan(), delcore(), delete_user(), delmemo(), delnick(), do_del(), and moduleDelAllDataMod().

int moduleCopyFile ( char *  name,
char *  output 
)

Copy the module from the modules folder to the runtime folder. This will prevent module updates while the modules is loaded from triggering a segfault, as the actaul file in use will be in the runtime folder.

Parameters
namethe name of the module to copy
outputthe destination to copy the module to
Returns
MOD_ERR_OK on success

Definition at line 538 of file modules.c.

References alog(), debug, MOD_ERR_FILE_IO, MOD_ERR_NOEXIST, MOD_ERR_OK, and MODULE_EXT.

Referenced by loadModule().

int moduleDataDebug ( ModuleData **  md)

Output module data information into the log file. This is a vwey "debug only" function to dump the whole contents of a moduleData struct into the log files.

Parameters
mdThe module data for the struct to be used
Returns
0 is always returned;

Definition at line 2205 of file modules.c.

References alog(), current, ModuleData_::key, ModuleData_::moduleName, ModuleData_::next, and ModuleData_::value.

Referenced by moduleAddData().

void moduleDelAllData ( ModuleData **  md)

This will remove all data for a particular module from existing structs. Its primary use is modulePrepForUnload() however, based on past expericance with module coders wanting to do just about anything and everything, its safe to use from inside the module.

Parameters
mdThe module data for the struct to be used

Definition at line 2345 of file modules.c.

References alog(), current, debug, do_backtrace(), ModuleData_::key, mod_current_module_name, ModuleData_::moduleName, ModuleData_::next, sstrdup(), stricmp(), and ModuleData_::value.

Referenced by moduleDelAllDataMod().

void moduleDelAllDataMod ( Module m)
void moduleDelCallback ( char *  name)

Allow module coders to delete a callback by name.

Parameters
namethe name of the callback they wish to delete

Definition at line 1927 of file modules.c.

References alog(), current, debug, mod_current_module_name, moduleCallBackDeleteEntry(), moduleCallBackHead, ModuleCallBack_::name, ModuleCallBack_::next, and ModuleCallBack_::owner_name.

Referenced by AnopeInit().

int moduleDelCommand ( CommandHash cmdTable[],
char *  name 
)

Delete a command from the service given.

Parameters
cmdTablethe cmdTable for the services to remove the command from
namethe name of the command to delete from the service
Returns
returns MOD_ERR_OK on success

Definition at line 1161 of file modules.c.

References c, debug, delCommand(), destroyCommand(), displayCommandFromHash(), findCommand(), MOD_ERR_NOEXIST, MOD_ERR_UNKNOWN, Command_::mod_name, Module_::name, Command_::next, and stricmp().

Referenced by my_event_delcommand().

void moduleDelData ( ModuleData **  md,
char *  key 
)

Delete the key/value pair indicated by "key" for the current module. This allows module coders to remove a previously stored key/value pair.

Parameters
mdThe module data for the struct to be used
keyThe key to delete the key/value pair for

Definition at line 2301 of file modules.c.

References alog(), current, debug, do_backtrace(), ModuleData_::key, mod_current_module_name, ModuleData_::moduleName, ModuleData_::next, sstrdup(), stricmp(), and ModuleData_::value.

Referenced by moduleAddData(), myAddChanInfo(), and myAddNickInfo().

void moduleDeleteLanguage ( int  langNumber)

Delete a language from a module

Parameters
langNumberthe language Number to delete

Definition at line 2763 of file modules.c.

References Anope_Free, ModuleLang_::argc, ModuleLang_::argv, findModule(), Module_::lang, mod_current_module_name, and Module_::name.

Referenced by destroyModule(), and moduleInsertLanguage().

int moduleDelMessage ( char *  name)

remove the given message from the IRCD message hash

Parameters
namethe name of the message to remove
Returns
MOD_ERR_OK on success, althing else on fail.

Definition at line 1640 of file modules.c.

References debug, delMessage(), destroyMessage(), displayMessageFromHash(), findMessage(), MOD_ERR_NOEXIST, MOD_ERR_UNKNOWN, Module_::name, and Message_::name.

void moduleDisplayHelp ( int  service,
User u 
)

Display any extra module help for the given service.

Parameters
serviceswhich services is help being dispalyed for?
uwhich user is requesting the help

Definition at line 2162 of file modules.c.

References Module_::botHelp, Module_::chanHelp, current, Module_::helpHelp, Module_::hostHelp, ModuleHash_::m, MAX_CMD_HASH, Module_::memoHelp, mod_current_module, mod_current_module_name, ModuleHash_::name, ModuleHash_::next, Module_::nickHelp, and Module_::operHelp.

Referenced by do_help().

int moduleGetConfigDirective ( Directive d)

Deal with modules who want to lookup config directives!

Parameters
hThe Directive to lookup in the config file
Returns
1 on success, 0 on error

Definition at line 2553 of file modules.c.

References alog(), Anope_Free, linenum, MAXPARAMS, myStrGetOnlyToken(), myStrGetTokenRemainder(), Directive::name, normalizeBuffer(), PARAM_NONE, PARAM_STRING, Directive::params, parse_directive(), Directive::ptr, SERVICES_CONF, stricmp(), and Directive::type.

Referenced by load_config(), mLoadConfig(), mReadConfig(), and my_load_config().

char* moduleGetData ( ModuleData **  md,
char *  key 
)

Returns the value from a key/value pair set. This allows module coders to retrive any data they have previuosly stored in any given struct

Parameters
mdThe module data for the struct to be used
keyThe key to find the data for
Returns
the value paired to the given key will be returned, or NULL

Definition at line 2266 of file modules.c.

References alog(), current, debug, do_backtrace(), ModuleData_::key, mod_current_module_name, ModuleData_::moduleName, ModuleData_::next, sstrdup(), stricmp(), and ModuleData_::value.

Referenced by mSaveData(), myChanInfo(), and myNickInfo().

char * ModuleGetErrStr ( int  status)
char* moduleGetLangString ( User u,
int  number 
)

Get the text of the given lanugage string in the corrent language, or in english.

Parameters
uThe user to send the message to
numberThe message number

Definition at line 2731 of file modules.c.

References alog(), ModuleLang_::argc, ModuleLang_::argv, findModule(), Module_::lang, LANG_EN_US, nickcore_::language, mod_current_module_name, user_::na, Module_::name, nickalias_::nc, and NSDefLanguage.

char* moduleGetLastBuffer ( void  )

Return a copy of the complete last buffer. This is needed for modules who cant trust the strtok() buffer, as we dont know who will have already messed about with it. a pointer to a copy of the last buffer - DONT mess with this, copy if first if you must do things to it.

Definition at line 1988 of file modules.c.

References mod_current_buffer.

Referenced by do_tban(), hs_do_activate(), hs_do_list_out(), hs_do_reject(), hs_do_request(), my_cs_appendtopic(), my_cs_enforce(), my_ns_register(), my_ns_set(), myAddChanInfo(), myAddNickInfo(), myChanInfo(), and myNickInfo().

void moduleInsertLanguage ( int  langNumber,
int  ac,
char **  av 
)

Allow a module to add a set of language strings to anope

Parameters
langNumberthe language number for the strings
acThe language count for the strings
avThe language sring list.

Definition at line 2650 of file modules.c.

References alog(), ModuleLang_::argc, ModuleLang_::argv, debug, findModule(), Module_::lang, mod_current_module_name, moduleDeleteLanguage(), Module_::name, and sstrdup().

Referenced by m_AddLanguages(), mAddLanguages(), and my_add_languages().

boolean moduleMinVersion ( int  major,
int  minor,
int  patch,
int  build 
)

Check the current version of anope against a given version number Specifiying -1 for minor,patch or build

Parameters
majorThe major version of anope, the first part of the verison number
minorThe minor version of anope, the second part of the version number
patchThe patch version of anope, the third part of the version number
buildThe build revision of anope from SVN
Returns
True if the version newer than the version specified.

Definition at line 2465 of file modules.c.

void moduleNoticeLang ( char *  source,
User u,
int  number,
  ... 
)
void ModuleRunTimeDirCleanUp ( void  )
void modules_core_init ( int  number,
char **  list 
)

Load up a list of core modules from the conf.

Parameters
numberThe number of modules to load
listThe list of modules to load

Definition at line 127 of file modules.c.

References alog(), createModule(), debug, destroyModule(), findModule(), loadModule(), mod_current_module_name, MOD_ERR_OK, ModuleGetErrStr(), and Module_::name.

Referenced by moduleAddBotServCmds(), moduleAddChanServCmds(), moduleAddHelpServCmds(), moduleAddHostServCmds(), moduleAddMemoServCmds(), moduleAddNickServCmds(), and moduleAddOperServCmds().

void modules_delayed_init ( void  )

Automaticaly load modules at startup, delayed. This function waits until the IRCD link has been made, and then attempts to load the specified modules.

Definition at line 235 of file modules.c.

References alog(), createModule(), destroyModule(), findModule(), loadModule(), mod_current_module_name, MOD_ERR_OK, ModuleGetErrStr(), ModulesDelayedAutoload, ModulesDelayedNumber, Module_::name, and nothird.

Referenced by init_tertiary().

void modules_init ( void  )

Automaticaly load modules at startup. This will load modules at startup before the IRCD link is attempted, this allows admins to have a module relating to ircd support load

Definition at line 91 of file modules.c.

References alog(), createModule(), destroyModule(), findModule(), loadModule(), mod_current_module_name, MOD_ERR_OK, ModuleGetErrStr(), ModulesAutoload, ModulesNumber, Module_::name, and nothird.

Referenced by init_secondary().

void modules_unload_all ( boolean  fini,
boolean  unload_proto 
)

Unload ALL loaded modules, no matter what kind of module it is. Do NEVER EVER, and i mean NEVER (and if that isn't clear enough yet, i mean: NEVER AT ALL) call this unless we're shutting down, or we'll fuck up Anope badly (protocol handling won't work for example). If anyone calls this function without a justified need for it, i reserve the right to break their legs in a painful way. And if that isn't enough discouragement, you'll wake up with your both legs broken tomorrow ;) -GD

Definition at line 276 of file modules.c.

References alog(), ano_modclose, ano_moderr, ano_modsym, delModule(), Module_::handle, ModuleHash_::m, MAX_CMD_HASH, mod_current_module_name, MOD_ERR_OK, Module_::name, ModuleHash_::next, prepForUnload(), PROTOCOL, and Module_::type.

Referenced by main(), services_restart(), services_shutdown(), and sighandler().

void moduleSetBotHelp ( void(*)(User *u)  func)

Add output to botserv help. when doing a /msg botserv help, your function will be called to allow it to send out a notice() with the code you wish to dispaly

Parameters
funca pointer to the function which will display the code

Definition at line 2114 of file modules.c.

References Module_::botHelp.

Referenced by AnopeInit().

void moduleSetChanHelp ( void(*)(User *u)  func)

Add output to chanserv help. when doing a /msg chanserv help, your function will be called to allow it to send out a notice() with the code you wish to dispaly

Parameters
funca pointer to the function which will display the code

Definition at line 2090 of file modules.c.

References Module_::chanHelp.

Referenced by AnopeInit().

void moduleSetHelpHelp ( void(*)(User *u)  func)

Add output to helpserv help. when doing a /msg helpserv help, your function will be called to allow it to send out a notice() with the code you wish to dispaly

Parameters
funca pointer to the function which will display the code

Definition at line 2150 of file modules.c.

References Module_::helpHelp.

void moduleSetHostHelp ( void(*)(User *u)  func)

Add output to hostserv help. when doing a /msg hostserv help, your function will be called to allow it to send out a notice() with the code you wish to dispaly

Parameters
funca pointer to the function which will display the code

Definition at line 2138 of file modules.c.

References Module_::hostHelp.

Referenced by AnopeInit().

void moduleSetMemoHelp ( void(*)(User *u)  func)

Add output to memoserv help. when doing a /msg memoserv help, your function will be called to allow it to send out a notice() with the code you wish to dispaly

Parameters
funca pointer to the function which will display the code

Definition at line 2102 of file modules.c.

References Module_::memoHelp.

Referenced by AnopeInit().

void moduleSetNickHelp ( void(*)(User *u)  func)

Add output to nickserv help. when doing a /msg nickserv help, your function will be called to allow it to send out a notice() with the code you wish to dispaly

Parameters
funca pointer to the function which will display the code

Definition at line 2078 of file modules.c.

References Module_::nickHelp.

Referenced by AnopeInit().

void moduleSetOperHelp ( void(*)(User *u)  func)

Add output to operserv help. when doing a /msg operserv help, your function will be called to allow it to send out a notice() with the code you wish to dispaly

Parameters
funca pointer to the function which will display the code

Definition at line 2126 of file modules.c.

References Module_::operHelp.

Referenced by AnopeInit().

void moduleSetType ( MODType  type)

Module setType() Lets the module set a type, CORE,PROTOCOL,3RD etc..

Definition at line 818 of file modules.c.

References Module_::type.

Referenced by AnopeInit(), encryption_module_init(), and protocol_module_init().

int prepForUnload ( Module m)

Prepare a module to be unloaded. Remove all commands and messages this module is providing, and delete any callbacks which are still pending.

Parameters
mthe module to prepare for unload
Returns
MOD_ERR_OK on success

ok, im going to walk every hash looking for commands we own, now, not exactly elegant or efficiant :)

Definition at line 830 of file modules.c.

References c, CommandHash_::c, current, delCommand(), delEventHandler(), delEventHook(), delMessage(), destroyCommand(), destroyEventHandler(), destroyEventHook(), destroyMessage(), EVENT, EVENTHOOKS, EvtHookHash_::evh, EvtMessageHash_::evm, MessageHash_::m, MAX_CMD_HASH, MOD_ERR_OK, MOD_ERR_PARAMS, Command_::mod_name, Message_::mod_name, EvtMessage_::mod_name, EvtHook_::mod_name, moduleCallBackPrepForUnload(), moduleDelAllDataMod(), Module_::name, Command_::next, CommandHash_::next, Message_::next, MessageHash_::next, EvtMessage_::next, EvtMessageHash_::next, EvtHook_::next, EvtHookHash_::next, and stricmp().

Referenced by modules_unload_all(), and unloadModule().

int protocol_module_init ( void  )
int protocolModuleLoaded ( )

Search all loaded modules looking for a protocol module.

Returns
1 if one is found.

Definition at line 495 of file modules.c.

References current, ModuleHash_::m, MAX_CMD_HASH, ModuleHash_::next, PROTOCOL, and Module_::type.

Referenced by loadModule().

int queueModuleLoad ( char *  name,
User u 
)

Enqueue a module to load

Parameters
nameName of the module to load
uUser who requested the load
Returns
1 on success, 0 on error

Definition at line 2801 of file modules.c.

References createModule(), findModule(), MOD_OP_LOAD, and queueModuleOperation().

Referenced by do_modload().

void queueModuleOperation ( Module m,
ModuleOperation  op,
User u 
)

Enqueue a module operation (load/unload/reload)

Parameters
mModule to perform the operation on
opOperation to perform on the module
uUser who requested the operation

Definition at line 2783 of file modules.c.

References ModuleQueue_::m, mod_operation_queue, ModuleQueue_::next, ModuleQueue_::op, scalloc(), and ModuleQueue_::u.

Referenced by queueModuleLoad(), and queueModuleUnload().

int queueModuleUnload ( char *  name,
User u 
)

Enqueue a module to unload

Parameters
nameName of the module to unload
uUser who requested the unload
Returns
1 on success, 0 on error

Definition at line 2822 of file modules.c.

References findModule(), MOD_OP_UNLOAD, and queueModuleOperation().

Referenced by do_modunload().

int unloadModule ( Module m,
User u 
)

Unload the given module.

Parameters
mthe module to unload
uthe user who unloaded it
Returns
MOD_ERR_OK on success, anything else on fail

Definition at line 747 of file modules.c.

References alog(), ano_modclose, ano_moderr, ano_modsym, anope_cmd_global(), delModule(), ENCRYPTION, EVENT_MODUNLOAD, Module_::handle, mod_current_module_name, MOD_ERR_NOUNLOAD, MOD_ERR_OK, MOD_ERR_PARAMS, MOD_ERR_UNKNOWN, Module_::name, user_::nick, notice_lang(), prepForUnload(), PROTOCOL, s_OperServ, send_event(), and Module_::type.

Referenced by handleModuleOperationQueue(), and loadModule().

void updateProtectDetails ( char *  level_info_protect_word,
char *  level_info_protectme_word,
char *  fant_protect_add,
char *  fant_protect_del,
char *  level_protect_word,
char *  protect_set_mode,
char *  protect_unset_mode 
)

Allow ircd protocol files to update the protect level info tables.

Definition at line 2512 of file modules.c.

References csmodeutil_::bsname, CA_AUTOPROTECT, CA_PROTECT, CA_PROTECTME, csmodeutils, levelinfo, csmodeutil_::mode, csmodeutil_::name, LevelInfo::name, sstrdup(), and LevelInfo::what.

Referenced by moduleAddIRCDMsgs().

Variable Documentation

Definition at line 43 of file modules.c.

Definition at line 46 of file modules.c.

Definition at line 47 of file modules.c.

Declare all the list's we want to use here

Definition at line 42 of file modules.c.

Definition at line 49 of file modules.c.

Definition at line 44 of file modules.c.

char* mod_current_buffer = NULL

Definition at line 54 of file modules.c.

Referenced by moduleGetLastBuffer(), process(), and services_shutdown().

Module* mod_current_module
char* mod_current_module_name = NULL
User* mod_current_user

Definition at line 55 of file modules.c.

ModuleQueue* mod_operation_queue = NULL

Definition at line 57 of file modules.c.

Referenced by queueModuleOperation().

ModuleHash* MODULE_HASH[MAX_CMD_HASH]

Definition at line 50 of file modules.c.

ModuleCallBack* moduleCallBackHead = NULL

Definition at line 45 of file modules.c.

Definition at line 48 of file modules.c.