예제 #1
0
/* This is called on module init, before Server Ready */
DLLFUNC int MOD_INIT(m_dummy)(ModuleInfo *modinfo)
{
	CmodeInfo req;
	ircd_log(LOG_ERROR, "debug: mod_init called from chmodetst module");
	ModuleSetOptions(modinfo->handle, MOD_OPT_PERM);
	sendto_realops("chmodetst loading...");
	/* TODO: load mode here */
	/* +w doesn't do anything, it's just for testing */
	memset(&req, 0, sizeof(req));
	req.paracount = 0;
	req.is_ok = extcmode_default_requirechop;
	req.flag = 'w';
	ModeTest = CmodeAdd(modinfo->handle, req, &EXTCMODE_TEST);
	/* +y doesn't do anything except that you can set/unset it with a
	 * numeric parameter (1-100)
	 */
	memset(&req, 0, sizeof(req));
	req.paracount = 1;
	req.is_ok = modey_is_ok;
	req.put_param = modey_put_param;
	req.get_param = modey_get_param;
	req.conv_param	= modey_conv_param;
	req.free_param = modey_free_param;
	req.sjoin_check = modey_sjoin_check;
	req.dup_struct = modey_dup_struct;
	req.flag = 'y';
	ModeTest2 = CmodeAdd(modinfo->handle, req, &EXTCMODE_TEST2);
	return MOD_SUCCESS;
}
예제 #2
0
DLLFUNC int MOD_INIT(jumpserver)(ModuleInfo *modinfo)
{
	ModuleSetOptions(modinfo->handle, MOD_OPT_PERM);
	CommandAdd(modinfo->handle, MSG_JUMPSERVER, TOK_JUMPSERVER, m_jumpserver, 3, M_USER);
	HookAddEx(modinfo->handle, HOOKTYPE_PRE_LOCAL_CONNECT, jumpserver_preconnect);
	return MOD_SUCCESS;
}
예제 #3
0
DLLFUNC int MOD_INIT(nocodeschmode)(ModuleInfo *modinfo)
{
	CmodeInfo ModeNC;

#ifndef STATIC_LINKING
	ModuleSetOptions(modinfo->handle, MOD_OPT_PERM);
#endif
	memset(&ModeNoCodes, 0, sizeof ModeNoCodes);
	ModeNC.paracount	= 0;
	ModeNC.is_ok		= extcmode_default_requirechop;
	ModeNC.flag		= FLAG_NOCODES;
	ModeNoCodes		= CmodeAdd(modinfo->handle, ModeNC, &MODE_NOCODES);
#ifndef STATIC_LINKING
        if (ModuleGetError(modinfo->handle) != MODERR_NOERROR || !ModeNoCodes)
        {
            config_error("Error adding channel mode +%c when loading module %s: %s",
                ModeNC.flag,MOD_HEADER(nocodeschmode).name,ModuleGetErrorStr(modinfo->handle));
        }
#else
        if (!ModeNoCodes)
        {
            config_error("Error adding channel mode +%c when loading module %s:",
                ModeNC.flag,MOD_HEADER(nocodeschmode).name);
        }
#endif


        HookAddPCharEx(modinfo->handle, HOOKTYPE_CHANMSG, h_nocodes_chanmsg);
	return MOD_SUCCESS;
}
예제 #4
0
DLLFUNC int MOD_INIT(m_restrictcolors)(ModuleInfo *modinfo)
{
    ModuleSetOptions(modinfo->handle, MOD_OPT_PERM);
    CmodeInfo req;
    ircd_log(LOG_ERROR, "debug: mod_init called from m_restrictcolors");
    sendto_realops("loading m_restrictcolors");
    memset(&req, 0, sizeof(req));
    req.paracount = 0;
    req.is_ok = extcmode_default_requirehalfop;
    req.flag = 'W';
    ModeRcolors = CmodeAdd(modinfo->handle, req, &RESTRICT_COLORS);

    bcopy(modinfo,&RestrictColorsModInfo,modinfo->size);
    CheckMsg = HookAddPCharEx(RestrictColorsModInfo.handle, HOOKTYPE_CHANMSG, restrictcolors_checkmsg);
    return MOD_SUCCESS;
}
예제 #5
0
DLLFUNC int MOD_INIT(m_nocaps)(ModuleInfo *modinfo)
{
    ModuleSetOptions(modinfo->handle, MOD_OPT_PERM);
    CmodeInfo req;
    ircd_log(LOG_ERROR, "debug: mod_init called from m_nocaps");
    sendto_realops("loading m_nocaps");
    memset(&req, 0, sizeof(req));
    req.paracount = 0;
    req.is_ok = extcmode_default_requirehalfop;
    req.flag = 'd';
    ModeBlock = CmodeAdd(modinfo->handle, req, &NOCAPS_BLOCK);

    bcopy(modinfo,&NoCapsModInfo,modinfo->size);
    CheckMsg = HookAddPCharEx(NoCapsModInfo.handle, HOOKTYPE_CHANMSG, nocaps_checkmsg);
    return MOD_SUCCESS;
}
예제 #6
0
파일: m_staff.c 프로젝트: wirelesspt/unreal
DLLFUNC int MOD_INIT(m_staff)(ModuleInfo *modinfo)
{
#ifdef USE_LIBCURL
	memset(&Download, 0, sizeof Download);
	ModuleSetOptions(modinfo->handle, MOD_OPT_PERM);
#endif
	memset(&staff, 0, sizeof(staff));
	InitConf();

	if (!AddCommand(modinfo->handle, MSG_STAFF, TOK_STAFF, m_staff))
		return MOD_FAILED;
	HookAddEx(modinfo->handle, HOOKTYPE_CONFIGRUN, cb_conf);
	HookAddEx(modinfo->handle, HOOKTYPE_REHASH, cb_rehash);
	HookAddEx(modinfo->handle, HOOKTYPE_REHASHFLAG, cb_rehashflag);
	HookAddEx(modinfo->handle, HOOKTYPE_STATS, cb_stats);

	return MOD_SUCCESS;
}
예제 #7
0
DLLFUNC int MOD_INIT(m_privdeaf)(ModuleInfo *modinfo)
{
	UmodePrivdeaf = UmodeAdd(modinfo->handle, 'D', UMODE_GLOBAL, umode_allow_all, &UMODE_PRIVDEAF);
	if (!UmodePrivdeaf)
	{
		/* I use config_error() here because it's printed to stderr in case of a load
		 * on cmd line, and to all opers in case of a /rehash.
		 */
		config_error("m_privdeaf: Could not add usermode 'D': %s", ModuleGetErrorStr(modinfo->handle));
		return MOD_FAILED;
	}
	
	CheckMsg = HookAddPCharEx(modinfo->handle, HOOKTYPE_USERMSG, privdeaf_checkmsg);

	/* Ah well.. we'll just go perm for now. */
	ModuleSetOptions(modinfo->handle, MOD_OPT_PERM);

	return MOD_SUCCESS;
}
예제 #8
0
DLLFUNC int MOD_INIT(m_banlink)(ModuleInfo *modinfo)
{
	CmodeInfo req;
	ModuleSetOptions(modinfo->handle, MOD_OPT_PERM);

	memset(&req, 0, sizeof(req));
	req.paracount = 1;
	req.is_ok = mode_is_ok;
	req.put_param = mode_put_param;
	req.get_param = mode_get_param;
	req.free_param = mode_free_param;
	req.sjoin_check = mode_sjoin_check;
	req.conv_param = mode_conv_param;
	req.dup_struct = mode_dup_struct;
	req.flag = 'B';
	ModeBANLINK = CmodeAdd(modinfo->handle, req, &EXTCMODE_BANLINK);

	HookJoin	= HookAddEx(modinfo->handle, HOOKTYPE_PRE_LOCAL_JOIN, cb_join);

	return MOD_SUCCESS;
}