[srvx-commits] CVS: services/src opserv.c,1.308,1.309 nickserv.h,1.40,1.41 nickserv.c,1.232,1.233 me
Brought to you by:
entrope
|
From: Entrope <en...@us...> - 2003-06-05 14:28:08
|
Update of /cvsroot/srvx/services/src
In directory sc8-pr-cvs1:/tmp/cvs-serv17095/src
Modified Files:
opserv.c nickserv.h nickserv.c messages.h
Log Message:
Do not let an oper demote themself (I dub this the "Spike Special")
Index: opserv.c
===================================================================
RCS file: /cvsroot/srvx/services/src/opserv.c,v
retrieving revision 1.308
retrieving revision 1.309
diff -C2 -r1.308 -r1.309
*** opserv.c 24 May 2003 17:02:20 -0000 1.308
--- opserv.c 5 Jun 2003 14:28:01 -0000 1.309
***************
*** 382,402 ****
struct handle_info *hi;
const char *target;
! unsigned int new_level;
(void)channel;
target = (argc > 1) ? (const char*)argv[1] : user->nick;
if (!(hi = smart_get_handle_info(opserv, user, target))) return 0;
! if ((argc > 2) && oper_can_set_access(user, opserv) && oper_outranks(user, hi)) {
! new_level = strtoul(argv[2], NULL, 0);
! if (user->handle_info->opserv_level < new_level) {
! opserv_notice(user, OSMSG_OPSERV_LEVEL_BAD);
! } else {
! log(NS_LOG, LOG_INFO, "Account %s setting oper level for account %s to %d (from %d)\n",
! user->handle_info->handle, hi->handle, new_level, hi->opserv_level);
! hi->opserv_level = new_level;
! }
! }
opserv_notice(user, OSMSG_USER_ACCESS_IS, target, hi->handle, hi->opserv_level);
! return 1;
}
--- 382,393 ----
struct handle_info *hi;
const char *target;
! unsigned int res;
(void)channel;
target = (argc > 1) ? (const char*)argv[1] : user->nick;
if (!(hi = smart_get_handle_info(opserv, user, target))) return 0;
! res = (argc > 2) ? oper_try_set_access(user, opserv, hi, strtoul(argv[0], NULL, 0)) : 0;
opserv_notice(user, OSMSG_USER_ACCESS_IS, target, hi->handle, hi->opserv_level);
! return res;
}
Index: nickserv.h
===================================================================
RCS file: /cvsroot/srvx/services/src/nickserv.h,v
retrieving revision 1.40
retrieving revision 1.41
diff -C2 -r1.40 -r1.41
*** nickserv.h 11 Nov 2002 05:31:08 -0000 1.40
--- nickserv.h 5 Jun 2003 14:28:02 -0000 1.41
***************
*** 113,117 ****
struct handle_info *get_handle_info(const char *handle);
struct handle_info *smart_get_handle_info(struct userNode *service, struct userNode *user, const unsigned char *name);
! int oper_can_set_access(struct userNode *user, struct userNode *bot);
int oper_outranks(struct userNode *user, struct handle_info *hi);
struct nick_info *get_nick_info(const char *nick);
--- 113,117 ----
struct handle_info *get_handle_info(const char *handle);
struct handle_info *smart_get_handle_info(struct userNode *service, struct userNode *user, const unsigned char *name);
! int oper_try_set_access(struct userNode *user, struct userNode *bot, struct handle_info *target, unsigned int new_level);
int oper_outranks(struct userNode *user, struct handle_info *hi);
struct nick_info *get_nick_info(const char *nick);
Index: nickserv.c
===================================================================
RCS file: /cvsroot/srvx/services/src/nickserv.c,v
retrieving revision 1.232
retrieving revision 1.233
diff -C2 -r1.232 -r1.233
*** nickserv.c 24 May 2003 14:48:15 -0000 1.232
--- nickserv.c 5 Jun 2003 14:28:02 -0000 1.233
***************
*** 2170,2179 ****
int
! oper_can_set_access(struct userNode *user, struct userNode *bot) {
! return oper_has_access(user, bot, nickserv_conf.modoper_level, 0);
}
static OPTION_FUNC(opt_level)
{
if (!override) {
nickserv_notice(user, MSG_SETTING_PRIVILEGED, argv[0]);
--- 2170,2202 ----
int
! oper_try_set_access(struct userNode *user, struct userNode *bot, struct handle_info *target, unsigned int new_level) {
! if (!oper_has_access(user, bot, nickserv_conf.modoper_level, 0)) return 0;
! if ((user->handle_info->opserv_level < target->opserv_level)
! || ((user->handle_info->opserv_level == target->opserv_level)
! && (user->handle_info->opserv_level < 1000))) {
! send_message(user, bot, MSG_USER_OUTRANKED, target->handle);
! return 0;
! }
! if ((user->handle_info->opserv_level < new_level)
! || ((user->handle_info->opserv_level == new_level)
! && (user->handle_info->opserv_level < 1000))) {
! send_message(user, bot, NSMSG_OPSERV_LEVEL_BAD);
! return 0;
! }
! if (user->handle_info == target) {
! send_message(user, bot, MSG_STUPID_ACCESS_CHANGE);
! return 0;
! }
! if (target->opserv_level == new_level) return 0;
! log(NS_LOG, LOG_INFO, "Account %s setting oper level for account %s to %d (from %d)\n",
! user->handle_info->handle, target->handle, new_level, target->opserv_level);
! target->opserv_level = new_level;
! return 1;
}
static OPTION_FUNC(opt_level)
{
+ int res;
+
if (!override) {
nickserv_notice(user, MSG_SETTING_PRIVILEGED, argv[0]);
***************
*** 2181,2197 ****
}
! if (argc > 1) {
! if (oper_can_set_access(user, nickserv)) {
! unsigned int new_level = strtoul(argv[1], NULL, 0);
! if (user->handle_info->opserv_level < new_level) {
! nickserv_notice(user, NSMSG_OPSERV_LEVEL_BAD);
! } else {
! hi->opserv_level = new_level;
! }
! }
! }
!
nickserv_notice(user, NSMSG_NUM_SETTING, "LEVEL:", hi->opserv_level);
! return 1;
}
--- 2204,2210 ----
}
! res = (argc > 1) ? oper_try_set_access(user, nickserv, hi, strtoul(argv[1], NULL, 0)) : 0;
nickserv_notice(user, NSMSG_NUM_SETTING, "LEVEL:", hi->opserv_level);
! return res;
}
Index: messages.h
===================================================================
RCS file: /cvsroot/srvx/services/src/messages.h,v
retrieving revision 1.32
retrieving revision 1.33
diff -C2 -r1.32 -r1.33
*** messages.h 3 Dec 2002 20:08:59 -0000 1.32
--- messages.h 5 Jun 2003 14:28:03 -0000 1.33
***************
*** 67,70 ****
--- 67,71 ----
#define MSG_OPER_SUSPENDED "Your $b$O$b access has been suspended."
#define MSG_USER_OUTRANKED "$b%s$b outranks you (command has no effect)."
+ #define MSG_STUPID_ACCESS_CHANGE "Please ask someone $belse$b to demote you."
#define MSG_INVALID_CRITERIA "$b%s$b is an invalid search criteria."
|