[srvx-commits] CVS: services/patches ns_reclaim-flag102403.patch,NONE,1.1 ns_tried2reg102403.patch,N
Brought to you by:
entrope
From: Entrope <en...@us...> - 2003-12-09 02:26:12
|
Update of /cvsroot/srvx/services/patches In directory sc8-pr-cvs1:/tmp/cvs-serv25240/patches Added Files: ns_reclaim-flag102403.patch ns_tried2reg102403.patch Log Message: two new patches, courtesy of ProGamePlayer (PGPN)'s adam --- NEW FILE --- diff -urN services-dist/src/nickserv.c services/src/nickserv.c --- services-dist/src/nickserv.c Fri Oct 24 20:05:25 2003 +++ services/src/nickserv.c Fri Oct 24 21:08:01 2003 @@ -1977,7 +1977,7 @@ unsigned int i; char *set_display[] = { "INFO", "WIDTH", "TABLEWIDTH", "COLOR", "PRIVMSG", "STYLE", - "EMAIL", "ANNOUNCEMENTS", "MAXLOGINS" + "EMAIL", "ANNOUNCEMENTS", "MAXLOGINS", "RECLAIM" }; nickserv_notice(user, NSMSG_SETTING_LIST); @@ -2094,6 +2094,27 @@ return 1; } +static OPTION_FUNC(opt_reclaim) +{ + /* if nickserv's nick ownership functions are disabled, we don't want this. I wanted to send an error + * message to the user, but there appears to be no quick & easy method of doing so, so we'll hide instead -akl */ + if (nickserv_conf.disable_nicks) return 1; + + if (argc > 1) { + if (enabled_string(argv[1])) { + HANDLE_SET_FLAG(hi, NICKRECLAIM); + } else if (disabled_string(argv[1])) { + HANDLE_CLEAR_FLAG(hi, NICKRECLAIM); + } else { + nickserv_notice(user, MSG_INVALID_BINARY, argv[1]); + return 0; + } + } + + nickserv_notice (user, NSMSG_STR_SETTING, "RECLAIM:", HANDLE_FLAGGED(hi, NICKRECLAIM) ? "On - Your nicks are protected." : "Off."); + return 1; +} + static OPTION_FUNC(opt_privmsg) { if (argc > 1) { @@ -3305,6 +3326,9 @@ assert(user); assert(ni); + + if (!HANDLE_FLAGGED(ni->owner, NICKRECLAIM)) return; + switch (action) { case RECLAIM_NONE: /* do nothing */ @@ -3341,6 +3365,7 @@ irc_regnick(user); return 0; } + if (ni && !HANDLE_FLAGGED(ni->owner, NICKRECLAIM)) return 0; if (nickserv_conf.warn_nick_owned) { send_message(user, nickserv, NSMSG_RECLAIM_WARN, ni->nick, ni->owner->handle); } @@ -3534,6 +3559,7 @@ dict_insert(nickserv_opt_dict, "EPITHET", opt_epithet); dict_insert(nickserv_opt_dict, "ANNOUNCEMENTS", opt_announcements); dict_insert(nickserv_opt_dict, "MAXLOGINS", opt_maxlogins); + dict_insert(nickserv_opt_dict, "RECLAIM", opt_reclaim); nickserv_handle_dict = dict_new(); dict_set_free_keys(nickserv_handle_dict, free); diff -urN services-dist/src/nickserv.h services/src/nickserv.h --- services-dist/src/nickserv.h Fri Oct 24 20:05:25 2003 +++ services/src/nickserv.h Fri Oct 24 20:29:40 2003 @@ -37,8 +37,9 @@ #define HI_FLAG_FROZEN 0x00000040 #define HI_FLAG_NODELETE 0x00000080 #define HI_FLAG_NETWORK_HELPER 0x00000100 +#define HI_FLAG_NICKRECLAIM 0x00000200 /* Flag characters for the above. First char is LSB, etc. */ -#define HANDLE_FLAGS "SphgscfnH" +#define HANDLE_FLAGS "SphgscfnHR" /* HI_STYLE_* go into handle_info.userlist_style */ #define HI_STYLE_DEF 'd' --- NEW FILE --- diff -urN services-dist/src/hash.h services/src/hash.h --- services-dist/src/hash.h Fri Oct 24 20:05:25 2003 +++ services/src/hash.h Fri Oct 24 21:35:44 2003 @@ -56,6 +56,7 @@ #define FLAGS_STAMPED 0x1000 /* for users who have been stamped */ #define FLAGS_HIDDEN_HOST 0x2000 /* user's host is masked by their account */ #define FLAGS_REGNICK 0x4000 /* user owns their current nick */ +#define FLAGS_TRIED2REG 0x8000 /* user has used /msg NickServ@.. register already once this session */ #define IsOper(x) ((x)->modes & FLAGS_OPER) #define IsService(x) ((x)->modes & FLAGS_SERVICE) @@ -71,6 +72,7 @@ #define IsStamped(x) ((x)->modes & FLAGS_STAMPED) #define IsHiddenHost(x) ((x)->modes & FLAGS_HIDDEN_HOST) #define IsReggedNick(x) ((x)->modes & FLAGS_REGNICK) +#define HasTried2Reg(x) ((x)->modes & FLAGS_TRIED2REG) #define IsLocal(x) ((x)->uplink == self) #define NICKLEN 30 diff -urN services-dist/src/nickserv.c services/src/nickserv.c --- services-dist/src/nickserv.c Fri Oct 24 20:05:25 2003 +++ services/src/nickserv.c Fri Oct 24 21:36:24 2003 @@ -141,6 +141,7 @@ #define NSMSG_BAD_MAX_LOGINS "MaxLogins must be at most %d." #define NSMSG_MAX_LOGINS "Your account already has its limit of %d user(s) logged in." #define NSMSG_SETTEE_LOGGED_IN "%s is already logged in, so you cannot do that." +#define NSMSG_TRIED2REG "You have already attempted to use $bREGISTER$b once this session, you will have to reconnect to use it again." #define NSMSG_STAMPED_REGISTER "You have already authenticated to an account once this session; you may not register a new account." #define NSMSG_STAMPED_AUTH "You have already authenticated to an account once this session; you may not authenticate to another." @@ -1063,6 +1064,14 @@ return 0; } + if (HasTried2Reg(user)) { + /* On networks with email enabled, it is possible to use this cmd repeatedly, making + * potential damage to services very, very easy. This only allows a user to try once + * per session -akl */ + nickserv_notice(user, NSMSG_TRIED2REG); + return 0; + } + NICKSERV_MIN_PARMS((unsigned)3 + nickserv_conf.email_required); if (!is_valid_handle(argv[1])) { @@ -1136,6 +1145,8 @@ /* If they need to do email verification, tell them. */ if (no_auth) nickserv_make_cookie(user, hi, ACTIVATION, hi->passwd); + + user->modes |= FLAGS_TRIED2REG; return 1; } diff -urN services-dist/src/opserv.c services/src/opserv.c --- services-dist/src/opserv.c Fri Oct 24 20:05:25 2003 +++ services/src/opserv.c Fri Oct 24 21:33:03 2003 @@ -1195,6 +1195,7 @@ if (IsDeaf(target)) buffer[bpos++] = 'd'; if (IsHiddenHost(target)) buffer[bpos++] = 'x'; if (IsGagged(target)) buffer_cat(" (gagged)"); + if (HasTried2Reg(target)) buffer_cat(" (registered an account)"); buffer[bpos] = 0; if (bpos > 11) opserv_notice(user, buffer); } |