*/
/* Extensions */
-#loadmodule "extensions/chm_operonly_compat.la";
-#loadmodule "extensions/chm_quietunreg_compat.la";
-#loadmodule "extensions/chm_sslonly_compat.la";
-#loadmodule "extensions/chm_operpeace.la";
-#loadmodule "extensions/createauthonly.la";
-#loadmodule "extensions/extb_account.la";
-#loadmodule "extensions/extb_canjoin.la";
-#loadmodule "extensions/extb_channel.la";
-#loadmodule "extensions/extb_combi.la";
-#loadmodule "extensions/extb_extgecos.la";
-#loadmodule "extensions/extb_hostmask.la";
-#loadmodule "extensions/extb_oper.la";
-#loadmodule "extensions/extb_realname.la";
-#loadmodule "extensions/extb_server.la";
-#loadmodule "extensions/extb_ssl.la";
-#loadmodule "extensions/hurt.la";
-#loadmodule "extensions/m_extendchans.la";
-#loadmodule "extensions/m_findforwards.la";
-#loadmodule "extensions/m_identify.la";
-#loadmodule "extensions/no_oper_invis.la";
-#loadmodule "extensions/sno_farconnect.la";
-#loadmodule "extensions/sno_globalkline.la";
-#loadmodule "extensions/sno_globalnickchange.la";
-#loadmodule "extensions/sno_globaloper.la";
-#loadmodule "extensions/sno_whois.la";
-#loadmodule "extensions/override.la";
-#loadmodule "extensions/no_kill_services.la";
+#loadmodule "extensions/chm_operonly_compat";
+#loadmodule "extensions/chm_quietunreg_compat";
+#loadmodule "extensions/chm_sslonly_compat";
+#loadmodule "extensions/chm_operpeace";
+#loadmodule "extensions/createauthonly";
+#loadmodule "extensions/extb_account";
+#loadmodule "extensions/extb_canjoin";
+#loadmodule "extensions/extb_channel";
+#loadmodule "extensions/extb_combi";
+#loadmodule "extensions/extb_extgecos";
+#loadmodule "extensions/extb_hostmask";
+#loadmodule "extensions/extb_oper";
+#loadmodule "extensions/extb_realname";
+#loadmodule "extensions/extb_server";
+#loadmodule "extensions/extb_ssl";
+#loadmodule "extensions/hurt";
+#loadmodule "extensions/m_extendchans";
+#loadmodule "extensions/m_findforwards";
+#loadmodule "extensions/m_identify";
+#loadmodule "extensions/no_oper_invis";
+#loadmodule "extensions/sno_farconnect";
+#loadmodule "extensions/sno_globalkline";
+#loadmodule "extensions/sno_globalnickchange";
+#loadmodule "extensions/sno_globaloper";
+#loadmodule "extensions/sno_whois";
+#loadmodule "extensions/override";
+#loadmodule "extensions/no_kill_services";
/*
* IP cloaking extensions: use ip_cloaking_4.0
* releases.
*/
-#loadmodule "extensions/ip_cloaking_4.0.la";
-#loadmodule "extensions/ip_cloaking.la";
+#loadmodule "extensions/ip_cloaking_4.0";
+#loadmodule "extensions/ip_cloaking";
serverinfo {
name = "hades.arpa";
* Charybdis contains several extensions that are not enabled by default.
* To use them, uncomment the lines below.
*
- * Channel mode +-A (admin only) -- chm_adminonly.la
- * Channel mode +-O (oper only) -- chm_operonly.la
- * Channel mode +-S (ssl only) -- chm_sslonly.la
- * Emulates channel mode +-O (oper only) (+-iI $o) -- chm_operonly_compat.la
- * Emulates channel mode +-R (quiet unreg) (+-q $~a) -- chm_quietunreg_compat.la
- * Emulates channel mode +-S (ssl only) (+-b $~z) -- chm_sslonly_compat.la
- * Channel mode +-M (disallow KICK on IRC ops) -- chm_operpeace.la
- * Restrict channel creation to logged in users -- createauthonly.la
- * Account bans (+b $a[:mask]) -- extb_account.la
- * Banned from another channel (+b $j:mask) -- extb_canjoin.la
- * Other-channel bans (+b $c:mask) -- extb_channel.la
- * Combination extbans -- extb_combi.la
- * Extended ban (+b $x:mask) -- extb_extgecos.la
- * Hostmask bans (for combination extbans) -- extb_hostmask.la
- * Oper bans (+b $o) -- extb_oper.la
- * Realname (gecos) bans (+b $r:mask) -- extb_realname.la
- * Server bans (+b $s:mask) -- extb_server.la
- * SSL bans (+b $z) -- extb_ssl.la
- * Helpops system (umode +H) -- helpops.la
- * HURT system -- hurt.la
- * New host mangling (umode +x) -- ip_cloaking_4.0.la
- * Old host mangling (umode +h) -- ip_cloaking.la
- * Dynamically extend channel limits -- m_extendchans.la
- * Find channel forwards -- m_findforwards.la
- * /identify support -- m_identify.la
- * Opers cannot be invisible (umode +i) -- no_oper_invis.la
- * Far connection notices (snomask +F) -- sno_farconnect.la
- * Remote k/d/x line active notices -- sno_globalkline.la
- * Remote oper up notices -- sno_globaloper.la
- * Global nick-change notices -- sno_globalnickchange.la
- * /whois notifications (snomask +W) -- sno_whois.la
- * Oper-override (modehacking only) -- override.la
- * Stop services kills -- no_kill_services.la
+ * Channel mode +-A (admin only) -- chm_adminonly
+ * Channel mode +-O (oper only) -- chm_operonly
+ * Channel mode +-S (ssl only) -- chm_sslonly
+ * Emulates channel mode +-O (oper only) (+-iI $o) -- chm_operonly_compat
+ * Emulates channel mode +-R (quiet unreg) (+-q $~a) -- chm_quietunreg_compat
+ * Emulates channel mode +-S (ssl only) (+-b $~z) -- chm_sslonly_compat
+ * Channel mode +-M (disallow KICK on IRC ops) -- chm_operpeace
+ * Restrict channel creation to logged in users -- createauthonly
+ * Account bans (+b $a[:mask]) -- extb_account
+ * Banned from another channel (+b $j:mask) -- extb_canjoin
+ * Other-channel bans (+b $c:mask) -- extb_channel
+ * Combination extbans -- extb_combi
+ * Extended ban (+b $x:mask) -- extb_extgecos
+ * Hostmask bans (for combination extbans) -- extb_hostmask
+ * Oper bans (+b $o) -- extb_oper
+ * Realname (gecos) bans (+b $r:mask) -- extb_realname
+ * Server bans (+b $s:mask) -- extb_server
+ * SSL bans (+b $z) -- extb_ssl
+ * Helpops system (umode +H) -- helpops
+ * HURT system -- hurt
+ * New host mangling (umode +x) -- ip_cloaking_4.0
+ * Old host mangling (umode +h) -- ip_cloaking
+ * Dynamically extend channel limits -- m_extendchans
+ * Find channel forwards -- m_findforwards
+ * /identify support -- m_identify
+ * Opers cannot be invisible (umode +i) -- no_oper_invis
+ * Far connection notices (snomask +F) -- sno_farconnect
+ * Remote k/d/x line active notices -- sno_globalkline
+ * Remote oper up notices -- sno_globaloper
+ * Global nick-change notices -- sno_globalnickchange
+ * /whois notifications (snomask +W) -- sno_whois
+ * Oper-override (modehacking only) -- override
+ * Stop services kills -- no_kill_services
*/
-#loadmodule "extensions/chm_adminonly.la";
-#loadmodule "extensions/chm_operonly.la";
-#loadmodule "extensions/chm_sslonly.la";
-#loadmodule "extensions/chm_operonly_compat.la";
-#loadmodule "extensions/chm_quietunreg_compat.la";
-#loadmodule "extensions/chm_sslonly_compat.la";
-#loadmodule "extensions/chm_operpeace.la";
-#loadmodule "extensions/createauthonly.la";
-#loadmodule "extensions/extb_account.la";
-#loadmodule "extensions/extb_canjoin.la";
-#loadmodule "extensions/extb_channel.la";
-#loadmodule "extensions/extb_combi.la";
-#loadmodule "extensions/extb_extgecos.la";
-#loadmodule "extensions/extb_hostmask.la";
-#loadmodule "extensions/extb_oper.la";
-#loadmodule "extensions/extb_realname.la";
-#loadmodule "extensions/extb_server.la";
-#loadmodule "extensions/extb_ssl.la";
-#loadmodule "extensions/helpops.la";
-#loadmodule "extensions/hurt.la";
-#loadmodule "extensions/ip_cloaking_4.0.la";
-#loadmodule "extensions/ip_cloaking.la";
-#loadmodule "extensions/m_extendchans.la";
-#loadmodule "extensions/m_findforwards.la";
-#loadmodule "extensions/m_identify.la";
-#loadmodule "extensions/no_oper_invis.la";
-#loadmodule "extensions/sno_farconnect.la";
-#loadmodule "extensions/sno_globalkline.la";
-#loadmodule "extensions/sno_globalnickchange.la";
-#loadmodule "extensions/sno_globaloper.la";
-#loadmodule "extensions/sno_whois.la";
-#loadmodule "extensions/override.la";
-#loadmodule "extensions/no_kill_services.la";
+#loadmodule "extensions/chm_adminonly";
+#loadmodule "extensions/chm_operonly";
+#loadmodule "extensions/chm_sslonly";
+#loadmodule "extensions/chm_operonly_compat";
+#loadmodule "extensions/chm_quietunreg_compat";
+#loadmodule "extensions/chm_sslonly_compat";
+#loadmodule "extensions/chm_operpeace";
+#loadmodule "extensions/createauthonly";
+#loadmodule "extensions/extb_account";
+#loadmodule "extensions/extb_canjoin";
+#loadmodule "extensions/extb_channel";
+#loadmodule "extensions/extb_combi";
+#loadmodule "extensions/extb_extgecos";
+#loadmodule "extensions/extb_hostmask";
+#loadmodule "extensions/extb_oper";
+#loadmodule "extensions/extb_realname";
+#loadmodule "extensions/extb_server";
+#loadmodule "extensions/extb_ssl";
+#loadmodule "extensions/helpops";
+#loadmodule "extensions/hurt";
+#loadmodule "extensions/ip_cloaking_4.0";
+#loadmodule "extensions/ip_cloaking";
+#loadmodule "extensions/m_extendchans";
+#loadmodule "extensions/m_findforwards";
+#loadmodule "extensions/m_identify";
+#loadmodule "extensions/no_oper_invis";
+#loadmodule "extensions/sno_farconnect";
+#loadmodule "extensions/sno_globalkline";
+#loadmodule "extensions/sno_globalnickchange";
+#loadmodule "extensions/sno_globaloper";
+#loadmodule "extensions/sno_whois";
+#loadmodule "extensions/override";
+#loadmodule "extensions/no_kill_services";
/* serverinfo {}: Contains information about the server. (OLD M:) */
serverinfo {
flags = compressed, topicburst;
};
-connect "ipv6.lame.server" {
+connect "ipv6me.server" {
/* Hosts that are IPv6 addresses must be in :: shortened form
* if applicable. Addresses starting with a colon get an extra
* zero prepended, for example: 0::1
* all - share all of the above
*/
- /* share klines/unklines/xlines with *.lan */
- name = "*.lan";
+ /* share klines/unklines/xlines with *n */
+ name = "*n";
flags = kline, unkline, xline;
/* share locops with irc.ircd-ratbox.org and ircd.ircd-ratbox.org */
path = "/usr/local/ircd/modules/autoload";
/* module: the name of a module to load on startup/rehash */
- #module = "some_module.la";
+ #module = "some_module";
};
#include <ltdl.h>
+#ifndef LT_MODULE_EXT
+# error "Charybdis requires loadable module support."
+#endif
+
struct module **modlist = NULL;
static const char *core_module_table[] = {
DIR *system_module_dir = NULL;
struct dirent *ldirent = NULL;
char module_fq_name[PATH_MAX + 1];
- int len;
-
+ static size_t module_ext_len = strlen(LT_MODULE_EXT);
+
modules_init();
modlist = (struct module **) rb_malloc(sizeof(struct module *) * (MODS_INCREMENT));
while ((ldirent = readdir(system_module_dir)) != NULL)
{
+ struct stat s;
+ size_t len;
+
len = strlen(ldirent->d_name);
- if((len > 3) && !strcmp(ldirent->d_name+len-3, ".la"))
+ if(len > module_ext_len && !strcasecmp(ldirent->d_name + (len - module_ext_len), LT_MODULE_EXT))
{
(void) snprintf(module_fq_name, sizeof(module_fq_name), "%s/%s", AUTOMODPATH, ldirent->d_name);
(void) load_a_module(module_fq_name, warn, MAPI_ORIGIN_CORE, 0);
for (i = 0; core_module_table[i]; i++)
{
- snprintf(module_name, sizeof(module_name), "%s/%s%s", MODPATH,
- core_module_table[i], ".la");
+ snprintf(module_name, sizeof(module_name), "%s/%s", MODPATH,
+ core_module_table[i]);
if(load_a_module(module_name, warn, MAPI_ORIGIN_CORE, 1) == -1)
{
ilog(L_MAIN,
- "Error loading core module %s%s: terminating ircd",
- core_module_table[i], ".la");
+ "Error loading core module %s: terminating ircd",
+ core_module_table[i]);
exit(0);
}
}
mod_basename = rb_basename(path);
- tmpptr = lt_dlopen(path);
+ tmpptr = lt_dlopenext(path);
if(tmpptr == NULL)
{
return -1;
}
-
/*
* _mheader is actually a struct mapi_mheader_*, but mapi_version
* is always the first member of this structure, so we treate it