long umode_get(char ch, int options, int (*allowed)(aClient *sptr, int what)) { long flag; if (UmodeAdd(NULL, ch, options, allowed, &flag)) return flag; return 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; }
void umode_init(void) { long val = 1; int i; Usermode_Table = MyMalloc(sizeof(Umode) * UMODETABLESZ); bzero(Usermode_Table, sizeof(Umode) * UMODETABLESZ); for (i = 0; i < UMODETABLESZ; i++) { Usermode_Table[i].mode = val; val *= 2; } Usermode_highest = 0; Snomask_Table = MyMalloc(sizeof(Snomask) * UMODETABLESZ); bzero(Snomask_Table, sizeof(Snomask) * UMODETABLESZ); val = 1; for (i = 0; i < UMODETABLESZ; i++) { Snomask_Table[i].mode = val; val *= 2; } Snomask_highest = 0; /* Set up modes */ /* 2004-02-11: note: TODO: 'umode_allow_opers' is in most cases * not completely correct since even opers shouldn't be allowed * to set most of these flags (eg locop trying to set +N), * it is currently handled by the m_umode() routine however, * but it would be better if we get rid of that and switch * completely to this umode->allowed system :). -- Syzop. */ UmodeAdd(NULL, 'i', UMODE_GLOBAL, NULL, &UMODE_INVISIBLE); UmodeAdd(NULL, 'o', UMODE_GLOBAL, umode_allow_opers, &UMODE_OPER); UmodeAdd(NULL, 'w', UMODE_GLOBAL, NULL, &UMODE_WALLOP); UmodeAdd(NULL, 'g', UMODE_GLOBAL, umode_allow_opers, &UMODE_FAILOP); UmodeAdd(NULL, 'h', UMODE_GLOBAL, NULL, &UMODE_HELPOP); UmodeAdd(NULL, 'r', UMODE_GLOBAL, NULL, &UMODE_REGNICK); UmodeAdd(NULL, 'a', UMODE_GLOBAL, umode_allow_opers, &UMODE_SADMIN); UmodeAdd(NULL, 'A', UMODE_GLOBAL, umode_allow_opers, &UMODE_ADMIN); UmodeAdd(NULL, 's', UMODE_LOCAL, NULL, &UMODE_SERVNOTICE); UmodeAdd(NULL, 'O', UMODE_LOCAL, umode_allow_opers, &UMODE_LOCOP); UmodeAdd(NULL, 'R', UMODE_GLOBAL, NULL, &UMODE_RGSTRONLY); UmodeAdd(NULL, 'T', UMODE_GLOBAL, NULL, &UMODE_NOCTCP); UmodeAdd(NULL, 'V', UMODE_GLOBAL, NULL, &UMODE_WEBTV); UmodeAdd(NULL, 'S', UMODE_GLOBAL, umode_allow_opers, &UMODE_SERVICES); UmodeAdd(NULL, 'x', UMODE_GLOBAL, NULL, &UMODE_HIDE); UmodeAdd(NULL, 'N', UMODE_GLOBAL, umode_allow_opers, &UMODE_NETADMIN); UmodeAdd(NULL, 'C', UMODE_GLOBAL, umode_allow_opers, &UMODE_COADMIN); UmodeAdd(NULL, 'W', UMODE_GLOBAL, NULL, &UMODE_WHOIS); UmodeAdd(NULL, 'q', UMODE_GLOBAL, umode_allow_opers, &UMODE_KIX); UmodeAdd(NULL, 'B', UMODE_GLOBAL, NULL, &UMODE_BOT); UmodeAdd(NULL, 'z', UMODE_GLOBAL, NULL, &UMODE_SECURE); UmodeAdd(NULL, 'v', UMODE_GLOBAL, umode_allow_opers, &UMODE_VICTIM); UmodeAdd(NULL, 'd', UMODE_GLOBAL, NULL, &UMODE_DEAF); UmodeAdd(NULL, 'H', UMODE_GLOBAL, umode_allow_opers, &UMODE_HIDEOPER); UmodeAdd(NULL, 't', UMODE_GLOBAL, NULL, &UMODE_SETHOST); UmodeAdd(NULL, 'G', UMODE_GLOBAL, NULL, &UMODE_STRIPBADWORDS); UmodeAdd(NULL, 'p', UMODE_GLOBAL, NULL, &UMODE_HIDEWHOIS); SnomaskAdd(NULL, 'k', umode_allow_all, &SNO_KILLS); SnomaskAdd(NULL, 'c', umode_allow_opers, &SNO_CLIENT); SnomaskAdd(NULL, 'f', umode_allow_opers, &SNO_FLOOD); SnomaskAdd(NULL, 'F', umode_allow_opers, &SNO_FCLIENT); SnomaskAdd(NULL, 'j', umode_allow_opers, &SNO_JUNK); SnomaskAdd(NULL, 'v', umode_allow_opers, &SNO_VHOST); SnomaskAdd(NULL, 'e', umode_allow_opers, &SNO_EYES); SnomaskAdd(NULL, 'G', umode_allow_opers, &SNO_TKL); SnomaskAdd(NULL, 'n', umode_allow_opers, &SNO_NICKCHANGE); SnomaskAdd(NULL, 'N', umode_allow_opers, &SNO_FNICKCHANGE); SnomaskAdd(NULL, 'q', umode_allow_opers, &SNO_QLINE); SnomaskAdd(NULL, 'S', umode_allow_opers, &SNO_SPAMF); SnomaskAdd(NULL, 's', umode_allow_all, &SNO_SNOTICE); SnomaskAdd(NULL, 'o', umode_allow_opers, &SNO_OPER); }