mirror of
https://github.com/anope/anope.git
synced 2026-07-07 19:03:14 +02:00
Patch from Adam, reducing duplication in cs_modes. Untested.
git-svn-id: http://anope.svn.sourceforge.net/svnroot/anope/trunk@2135 5417fbe8-f217-4b02-8779-1006273d7864
This commit is contained in:
@@ -705,6 +705,7 @@ MDE bool moduleMinVersion(int major,int minor,int patch,int build); /* Checks if
|
||||
|
||||
/** Update the protect deatials, could be either protect or admin etc.. */
|
||||
MDE void updateProtectDetails(const char *level_info_protect_word, const char *level_info_protectme_word, const char *fant_protect_add, const char *fant_protect_del, const char *level_protect_word, const char *protect_set_mode, const char *protect_unset_mode);
|
||||
MDE void updateOwnerDetails(const char *fant_owner_add, const char *fant_owner_del, const char *owner_set_mode, const char *owner_del_mode);
|
||||
|
||||
/************************************************************************/
|
||||
|
||||
|
||||
@@ -1183,6 +1183,8 @@ typedef struct ircd_modes_ {
|
||||
#define MUT_HALFOP 5
|
||||
#define MUT_DEPROTECT 6
|
||||
#define MUT_PROTECT 7
|
||||
#define MUT_DEOWNER 8
|
||||
#define MUT_OWNER 9
|
||||
|
||||
/*************************************************************************/
|
||||
/* CAPAB stuffs */
|
||||
|
||||
@@ -111,8 +111,11 @@ CSModeUtil csmodeutils[] = {
|
||||
{ "VOICE", "voice", "+v", 0, CA_VOICE, CA_VOICEME },
|
||||
{ "DEHALFOP", "dehalfop", "-h", 0, CA_HALFOP, CA_HALFOPME },
|
||||
{ "HALFOP", "halfop", "+h", 0, CA_HALFOP, CA_HALFOPME },
|
||||
/* These get set later */
|
||||
{ "DEPROTECT", "", "", 0, CA_PROTECT, CA_PROTECTME },
|
||||
{ "PROTECT", "", "", 0, CA_PROTECT, CA_PROTECTME },
|
||||
{ "DEOWNER", "", "", 0, ACCESS_FOUNDER, ACCESS_FOUNDER},
|
||||
{ "OWNER", "", "", 0, ACCESS_FOUNDER, ACCESS_FOUNDER},
|
||||
{ NULL }
|
||||
};
|
||||
|
||||
@@ -1576,6 +1579,8 @@ int check_access(User * user, ChannelInfo * ci, int what)
|
||||
if (level > 0)
|
||||
ci->last_used = time(NULL);
|
||||
|
||||
if (what == ACCESS_FOUNDER)
|
||||
return is_founder(user, ci);
|
||||
if (level >= ACCESS_FOUNDER)
|
||||
return (what == CA_AUTODEOP || what == CA_NOJOIN) ? 0 : 1;
|
||||
/* Hacks to make flags work */
|
||||
|
||||
+2
-65
@@ -296,39 +296,7 @@ class CommandCSOwner : public Command
|
||||
|
||||
CommandReturn Execute(User *u, std::vector<std::string> ¶ms)
|
||||
{
|
||||
const char *av[2];
|
||||
const char *chan = params[0].c_str();
|
||||
const char *nick = params.size() > 1 ? params[1].c_str() : NULL;
|
||||
User *u2;
|
||||
Channel *c;
|
||||
ChannelInfo *ci;
|
||||
|
||||
if (!ircd->owner)
|
||||
{
|
||||
return MOD_CONT;
|
||||
}
|
||||
|
||||
if (!(c = findchan(chan))) {
|
||||
notice_lang(s_ChanServ, u, CHAN_X_NOT_IN_USE, chan);
|
||||
} else if (!(ci = c->ci)) {
|
||||
notice_lang(s_ChanServ, u, CHAN_X_NOT_REGISTERED, c->name);
|
||||
} else if (ci->flags & CI_FORBIDDEN) {
|
||||
notice_lang(s_ChanServ, u, CHAN_X_FORBIDDEN, ci->name);
|
||||
} else if (!(u2 = finduser(nick))) {
|
||||
notice_lang(s_ChanServ, u, NICK_X_NOT_IN_USE, nick);
|
||||
} else if (!is_on_chan(c, u2)) {
|
||||
notice_lang(s_ChanServ, u, NICK_X_NOT_ON_CHAN, u2->nick, c->name);
|
||||
} else if (!is_founder(u, ci)) {
|
||||
notice_lang(s_ChanServ, u, ACCESS_DENIED);
|
||||
} else {
|
||||
ircdproto->SendMode(whosends(ci), c->name, "%s %s", ircd->ownerset,
|
||||
u2->nick);
|
||||
|
||||
av[0] = ircd->ownerset;
|
||||
av[1] = u2->nick;
|
||||
chan_set_modes(s_ChanServ, c, 2, av, 1);
|
||||
}
|
||||
return MOD_CONT;
|
||||
return do_util(u, &csmodeutils[MUT_OWNER], (params.size() > 0 ? params[0].c_str() : NULL), NULL);
|
||||
}
|
||||
|
||||
bool OnHelp(User *u, const std::string &subcommand)
|
||||
@@ -350,38 +318,7 @@ class CommandCSDeOwner : public Command
|
||||
|
||||
CommandReturn Execute(User *u, std::vector<std::string> ¶ms)
|
||||
{
|
||||
const char *av[2];
|
||||
const char *chan = params[0].c_str();
|
||||
const char *nick = params.size() > 1 ? params[1].c_str() : NULL;
|
||||
User *u2;
|
||||
|
||||
Channel *c;
|
||||
ChannelInfo *ci;
|
||||
|
||||
if (!ircd->owner) {
|
||||
return MOD_CONT;
|
||||
}
|
||||
|
||||
if (!(c = findchan(chan))) {
|
||||
notice_lang(s_ChanServ, u, CHAN_X_NOT_IN_USE, chan);
|
||||
} else if (!(ci = c->ci)) {
|
||||
notice_lang(s_ChanServ, u, CHAN_X_NOT_REGISTERED, c->name);
|
||||
} else if (ci->flags & CI_FORBIDDEN) {
|
||||
notice_lang(s_ChanServ, u, CHAN_X_FORBIDDEN, ci->name);
|
||||
} else if (!(u2 = finduser(nick))) {
|
||||
notice_lang(s_ChanServ, u, NICK_X_NOT_IN_USE, nick);
|
||||
} else if (!is_on_chan(c, u2)) {
|
||||
notice_lang(s_ChanServ, u, NICK_X_NOT_ON_CHAN, u2->nick, c->name);
|
||||
} else if (!is_founder(u, ci)) {
|
||||
notice_lang(s_ChanServ, u, ACCESS_DENIED);
|
||||
} else {
|
||||
ircdproto->SendMode(whosends(ci), c->name, "%s %s", ircd->ownerunset, u2->nick);
|
||||
|
||||
av[0] = ircd->ownerunset;
|
||||
av[1] = u2->nick;
|
||||
chan_set_modes(s_ChanServ, c, 2, av, 1);
|
||||
}
|
||||
return MOD_CONT;
|
||||
return do_util(u, &csmodeutils[MUT_DEOWNER], (params.size() > 0 ? params[0].c_str() : NULL), NULL);
|
||||
}
|
||||
|
||||
bool OnHelp(User *u, const std::string &subcommand)
|
||||
|
||||
@@ -1035,6 +1035,25 @@ void updateProtectDetails(const char *level_info_protect_word,
|
||||
}
|
||||
}
|
||||
|
||||
void updateOwnerDetails(const char *fant_owner_add, const char *fant_owner_del, const char *owner_set_mode, const char *owner_del_mode)
|
||||
{
|
||||
CSModeUtil ptr;
|
||||
int i = 0;
|
||||
|
||||
ptr = csmodeutils[i];
|
||||
while (ptr.name) {
|
||||
if (!strcmp(ptr.name, "OWNER")) {
|
||||
csmodeutils[i].bsname = sstrdup(fant_owner_add);
|
||||
csmodeutils[i].mode = sstrdup(owner_set_mode);
|
||||
}
|
||||
else if (!strcmp(ptr.name, "DEOWNER")) {
|
||||
csmodeutils[i].bsname = sstrdup(fant_owner_del);
|
||||
csmodeutils[i].mode = sstrdup(owner_del_mode);
|
||||
}
|
||||
ptr = csmodeutils[++i];
|
||||
}
|
||||
}
|
||||
|
||||
void Module::NoticeLang(char *source, User * u, int number, ...)
|
||||
{
|
||||
va_list va;
|
||||
|
||||
@@ -1276,6 +1276,7 @@ void moduleAddIRCDMsgs() {
|
||||
Message *m;
|
||||
|
||||
updateProtectDetails("PROTECT","PROTECTME","protect","deprotect","AUTOPROTECT","+a","-a");
|
||||
updateOwnerDetails("OWNER", "DEOWNER", ircd->ownerset, ircd->ownerunset);
|
||||
|
||||
m = createMessage("436", anope_event_436); addCoreMessage(IRCD,m);
|
||||
m = createMessage("AWAY", anope_event_away); addCoreMessage(IRCD,m);
|
||||
|
||||
@@ -1331,6 +1331,7 @@ void moduleAddIRCDMsgs() {
|
||||
Message *m;
|
||||
|
||||
updateProtectDetails("PROTECT","PROTECTME","protect","deprotect","AUTOPROTECT","+a","-a");
|
||||
updateOwnerDetails("OWNER", "DEOWNER", ircd->ownerset, ircd->ownerunset);
|
||||
|
||||
m = createMessage("436", anope_event_436); addCoreMessage(IRCD,m);
|
||||
m = createMessage("AWAY", anope_event_away); addCoreMessage(IRCD,m);
|
||||
|
||||
@@ -1342,6 +1342,7 @@ void moduleAddIRCDMsgs() {
|
||||
Message *m;
|
||||
|
||||
updateProtectDetails("PROTECT","PROTECTME","protect","deprotect","AUTOPROTECT","+a","-a");
|
||||
updateOwnerDetails("OWNER", "DEOWNER", ircd->ownerset, ircd->ownerunset);
|
||||
|
||||
m = createMessage("436", anope_event_436); addCoreMessage(IRCD,m);
|
||||
m = createMessage("AWAY", anope_event_away); addCoreMessage(IRCD,m);
|
||||
|
||||
Reference in New Issue
Block a user