diff options
Diffstat (limited to 'src/actions.c')
-rw-r--r-- | src/actions.c | 91 |
1 files changed, 64 insertions, 27 deletions
diff --git a/src/actions.c b/src/actions.c index c97eb9930..e7f8eac6a 100644 --- a/src/actions.c +++ b/src/actions.c @@ -16,46 +16,52 @@ /*************************************************************************/ -/* Note a bad password attempt for the given user. If they've used up - * their limit, toss them off. +/** + * Note a bad password attempt for the given user. If they've used up + * their limit, toss them off. + * @param u the User to check + * @return void */ - void bad_password(User * u) { time_t now = time(NULL); - if (!u) { + if (!u || !BadPassLimit) { return; } - if (!BadPassLimit) - return; - if (BadPassTimeout > 0 && u->invalid_pw_time > 0 && u->invalid_pw_time < now - BadPassTimeout) u->invalid_pw_count = 0; u->invalid_pw_count++; u->invalid_pw_time = now; - if (u->invalid_pw_count >= BadPassLimit) + if (u->invalid_pw_count >= BadPassLimit) { kill_user(NULL, u->nick, "Too many invalid passwords"); + } } /*************************************************************************/ -/* Remove a user from the IRC network. `source' is the nick which should - * generate the kill, or NULL for a server-generated kill. +/** + * Remove a user from the IRC network. + * @param source is the nick which should generate the kill, or NULL for a server-generated kill. + * @param user to remove + * @param reason for the kill + * @return void */ - void kill_user(char *source, char *user, char *reason) { char buf[BUFSIZE]; - if (!user || !*user) + if (!user || !*user) { return; - if (!source || !*source) + } + if (!source || !*source) { source = ServerName; - if (!reason) + } + if (!reason) { reason = ""; + } snprintf(buf, sizeof(buf), "%s (%s)", source, reason); @@ -68,31 +74,35 @@ void kill_user(char *source, char *user, char *reason) /*************************************************************************/ +/** + * Check and enforce SQlines + * @param mask of the sqline + * @param reason for the sqline + * @return void + */ void sqline(char *mask, char *reason) { + int i; + Channel *c, *next; + char *av[3]; + struct c_userlist *cu, *cunext; + if (ircd->chansqline) { if (*mask == '#') { - int i; - Channel *c, *next; - - char *av[3]; - struct c_userlist *cu, *cunext; - anope_cmd_sqline(mask, reason); for (i = 0; i < 1024; i++) { for (c = chanlist[i]; c; c = next) { next = c->next; - if (!match_wild_nocase(mask, c->name)) + if (!match_wild_nocase(mask, c->name)) { continue; - + } for (cu = c->users; cu; cu = cunext) { cunext = cu->next; - - if (is_oper(cu->user)) + if (is_oper(cu->user)) { continue; - + } av[0] = c->name; av[1] = cu->user->nick; av[2] = reason; @@ -112,6 +122,12 @@ void sqline(char *mask, char *reason) /*************************************************************************/ +/** + * Unban the nick from a channel + * @param ci channel info for the channel + * @param nick to remove the ban for + * @return void + */ void common_unban(ChannelInfo * ci, char *nick) { int count, i; @@ -119,11 +135,13 @@ void common_unban(ChannelInfo * ci, char *nick) User *u; char *host; - if (!ci || !ci->c || !nick) + if (!ci || !ci->c || !nick) { return; + } - if (!(u = finduser(nick))) + if (!(u = finduser(nick))) { return; + } host = host_resolve(u->host); @@ -157,6 +175,13 @@ void common_unban(ChannelInfo * ci, char *nick) /*************************************************************************/ +/** + * Prepare to set SVSMODE and update internal user modes + * @param u user to apply modes to + * @param modes the modes to set on the user + * @param arg the arguments for the user modes + * @return void + */ void common_svsmode(User * u, char *modes, char *arg) { int ac = 1; @@ -174,6 +199,12 @@ void common_svsmode(User * u, char *modes, char *arg) /*************************************************************************/ +/** + * Get the vhost for the user, if set else return the host, on ircds without + * vhost this returns the host + * @param u user to get the vhost for + * @return vhost + */ char *common_get_vhost(User * u) { if (!u) { @@ -192,6 +223,12 @@ char *common_get_vhost(User * u) /*************************************************************************/ +/** + * Get the vident for the user, if set else return the ident, on ircds without + * vident this returns the ident + * @param u user to get info the vident for + * @return vident + */ char *common_get_vident(User * u) { if (!u) { |