From: Art Cancro Date: Sat, 3 Jun 2000 05:47:58 +0000 (+0000) Subject: * Replaced most of the very repetitive and very redundant access level checks X-Git-Tag: v7.86~7190 X-Git-Url: https://code.citadel.org/?p=citadel.git;a=commitdiff_plain;h=91b4061ec2f58e1a7e4691ea92ed405cad7755fb * Replaced most of the very repetitive and very redundant access level checks in most commands with a single API call: CtdlAccessLevelCheck() * serv_moderate.c: added (not finished) --- diff --git a/citadel/ChangeLog b/citadel/ChangeLog index 0698c9edb..fd655c359 100644 --- a/citadel/ChangeLog +++ b/citadel/ChangeLog @@ -1,4 +1,9 @@ $Log$ + Revision 572.3 2000/06/03 05:47:57 ajc + * Replaced most of the very repetitive and very redundant access level checks + in most commands with a single API call: CtdlAccessLevelCheck() + * serv_moderate.c: added (not finished) + Revision 572.2 2000/06/02 03:38:50 ajc * Bind unix socket prior to TCP socket for citadel protocol * Fixed bug in sendcommand.c which was causing it to crash on attach @@ -1894,3 +1899,4 @@ Sat Jul 11 00:20:48 EDT 1998 Nathan Bryant Fri Jul 10 1998 Art Cancro * Initial CVS import + diff --git a/citadel/Makefile.in b/citadel/Makefile.in index 22f59ade5..058f05b19 100644 --- a/citadel/Makefile.in +++ b/citadel/Makefile.in @@ -31,6 +31,7 @@ SERV_MODULES=modules/serv_chat$(SO) modules/serv_vcard$(SO) \ modules/serv_smtp$(SO) modules/serv_pop3$(SO) \ modules/serv_inetcfg$(SO) \ modules/serv_rwho$(SO) \ + modules/serv_moderate$(SO) \ modules/serv_bio$(SO) \ modules/serv_expire$(SO) $(SERV_ICQ) UTIL_TARGETS=aidepost netmailer netproc netsetup msgform readlog rcit \ @@ -83,7 +84,7 @@ SOURCES=aidepost.c citadel.c citmail.c citserver.c client_chat.c commands.c \ auth.c chkpwd.c client_icq.c html.c vcard.c serv_upgrade.c \ serv_smtp.c serv_pop3.c internet_addressing.c parsedate.c genstamp.c \ domain.c clientsocket.c serv_inetcfg.c serv_rwho.c serv_bio.c \ - client_passwords.c + serv_moderate.c client_passwords.c DEP_FILES=$(SOURCES:.c=.d) @@ -171,6 +172,12 @@ modules/serv_rwho.so: serv_rwho.mo modules/serv_rwho.mo: serv_rwho.mo ln -f serv_rwho.mo modules +modules/serv_moderate.so: serv_moderate.mo + $(LINK_SHARED) -o modules/serv_moderate.so serv_moderate.mo + +modules/serv_moderate.mo: serv_moderate.mo + ln -f serv_moderate.mo modules + modules/serv_bio.so: serv_bio.mo $(LINK_SHARED) -o modules/serv_bio.so serv_bio.mo diff --git a/citadel/citserver.c b/citadel/citserver.c index 2ed7016c1..c5417bede 100644 --- a/citadel/citserver.c +++ b/citadel/citserver.c @@ -511,11 +511,7 @@ void cmd_emsg(char *mname) char *dirs[2]; int a; - if (CC->usersupp.axlevel < 6) { - cprintf("%d You must be an Aide to edit system messages.\n", - ERROR+HIGHER_ACCESS_REQUIRED); - return; - } + if (CtdlAccessCheck(ac_aide)) return; extract(buf,mname,0); for (a=0; ainternal_pgm) return(0); + if (required_level >= ac_internal) { + cprintf("%d This is not a user-level command.\n", + ERROR+HIGHER_ACCESS_REQUIRED); + return(-1); + } + + if (CC->usersupp.axlevel >= 6) return(0); + if (required_level >= ac_aide) { + cprintf("%d This command requires Aide access.\n", + ERROR+HIGHER_ACCESS_REQUIRED); + return(-1); + } + + if (is_room_aide()) return(0); + if (required_level >= ac_room_aide) { + cprintf("%d This command requires Aide or Room Aide access.\n", + ERROR + HIGHER_ACCESS_REQUIRED); + return(-1); + } + + if (CC->logged_in) return(0); + if (required_level >= ac_logged_in) { + cprintf("%d Not logged in.\n", ERROR+NOT_LOGGED_IN); + return(-1); + } + + /* shhh ... succeed quietly */ + return(0); +} + /* @@ -588,16 +620,7 @@ void cmd_term(char *cmdbuf) struct CitContext *ccptr; int found_it = 0; - if (!CC->logged_in) { - cprintf("%d Not logged in.\n",ERROR+NOT_LOGGED_IN); - return; - } - - if (CC->usersupp.axlevel < 6) { - cprintf("%d You must be an Aide to terminate sessions.\n", - ERROR+HIGHER_ACCESS_REQUIRED); - return; - } + if (CtdlAccessCheck(ac_aide)) return; session_num = extract_int(cmdbuf, 0); if (session_num == CC->cs_pid) { @@ -669,16 +692,8 @@ void cmd_ipgm(char *argbuf) * Shut down the server */ void cmd_down(void) { - if (!CC->logged_in) { - cprintf("%d Not logged in.\n", ERROR+NOT_LOGGED_IN); - return; - } - if (CC->usersupp.axlevel < 6) { - cprintf("%d You must be an Aide to shut down the server.\n", - ERROR+HIGHER_ACCESS_REQUIRED); - return; - } + if (CtdlAccessCheck(ac_aide)) return; cprintf("%d Shutting down server. Goodbye.\n", OK); master_cleanup(); @@ -691,16 +706,7 @@ void cmd_scdn(char *argbuf) { int new_state; - if (!CC->logged_in) { - cprintf("%d Not logged in.\n",ERROR+NOT_LOGGED_IN); - return; - } - - if (CC->usersupp.axlevel < 6) { - cprintf("%d You must be an Aide to schedule a shutdown.\n", - ERROR+HIGHER_ACCESS_REQUIRED); - return; - } + if (CtdlAccessCheck(ac_aide)) return; new_state = extract_int(argbuf, 0); if ((new_state == 0) || (new_state == 1)) { diff --git a/citadel/citserver.h b/citadel/citserver.h index 8c5822951..1e6543f42 100644 --- a/citadel/citserver.h +++ b/citadel/citserver.h @@ -31,3 +31,19 @@ void GenerateRoomDisplay(char *real_room, struct CitContext *viewer); extern int do_defrag; char CtdlCheckExpress(void); + +int CtdlAccessCheck(int); + +/* 'required access level' values which may be passed to CtdlAccessCheck() + */ +enum { + ac_none, + ac_logged_in, + ac_room_aide, + ac_aide, + ac_internal +}; + + + + diff --git a/citadel/file_ops.c b/citadel/file_ops.c index 9c121825b..5bbe1a77a 100644 --- a/citadel/file_ops.c +++ b/citadel/file_ops.c @@ -20,23 +20,14 @@ #include "room_ops.h" #include "msgbase.h" #include "tools.h" +#include "citserver.h" void cmd_delf(char *filename) { char pathname[64]; int a; - if (!(CC->logged_in)) { - cprintf("%d Not logged in.\n",ERROR+NOT_LOGGED_IN); - return; - } - - if (!is_room_aide()) { - cprintf("%d Higher access required.\n", - ERROR+HIGHER_ACCESS_REQUIRED); - return; - } - + if (CtdlAccessCheck(ac_room_aide)) return; if ((CC->quickroom.QRflags & QR_DIRECTORY) == 0) { cprintf("%d No directory in this room.\n",ERROR+NOT_HERE); @@ -76,16 +67,7 @@ void cmd_movf(char *cmdbuf) extract(filename,cmdbuf,0); extract(newroom,cmdbuf,1); - if (!(CC->logged_in)) { - cprintf("%d Not logged in.\n",ERROR+NOT_LOGGED_IN); - return; - } - - if (!is_room_aide()) { - cprintf("%d Higher access required.\n", - ERROR+HIGHER_ACCESS_REQUIRED); - return; - } + if (CtdlAccessCheck(ac_room_aide)) return; if ((CC->quickroom.QRflags & QR_DIRECTORY) == 0) { cprintf("%d No directory in this room.\n",ERROR+NOT_HERE); @@ -150,16 +132,7 @@ void cmd_netf(char *cmdbuf) extract(filename,cmdbuf,0); extract(destsys,cmdbuf,1); - if (!(CC->logged_in)) { - cprintf("%d Not logged in.\n",ERROR+NOT_LOGGED_IN); - return; - } - - if (!is_room_aide()) { - cprintf("%d Higher access required.\n", - ERROR+HIGHER_ACCESS_REQUIRED); - return; - } + if (CtdlAccessCheck(ac_room_aide)) return; if ((CC->quickroom.QRflags & QR_DIRECTORY) == 0) { cprintf("%d No directory in this room.\n",ERROR+NOT_HERE); @@ -254,10 +227,7 @@ void cmd_open(char *cmdbuf) extract(filename,cmdbuf,0); - if (!(CC->logged_in)) { - cprintf("%d Not logged in.\n",ERROR+NOT_LOGGED_IN); - return; - } + if (CtdlAccessCheck(ac_logged_in)) return; if ((CC->quickroom.QRflags & QR_DIRECTORY) == 0) { cprintf("%d No directory in this room.\n",ERROR+NOT_HERE); @@ -361,10 +331,7 @@ void cmd_uopn(char *cmdbuf) extract(CC->upl_file,cmdbuf,0); extract(CC->upl_comment,cmdbuf,1); - if (!(CC->logged_in)) { - cprintf("%d Not logged in.\n",ERROR+NOT_LOGGED_IN); - return; - } + if (CtdlAccessCheck(ac_logged_in)) return; if ((CC->quickroom.QRflags & QR_DIRECTORY) == 0) { cprintf("%d No directory in this room.\n",ERROR+NOT_HERE); diff --git a/citadel/room_ops.c b/citadel/room_ops.c index ffc406940..9219639c6 100644 --- a/citadel/room_ops.c +++ b/citadel/room_ops.c @@ -443,10 +443,8 @@ void cmd_lrms(char *argbuf) if (strlen(argbuf) > 0) FloorBeingSearched = extract_int(argbuf, 0); - if (!(CC->logged_in)) { - cprintf("%d Not logged in.\n", ERROR + NOT_LOGGED_IN); - return; - } + if (CtdlAccessCheck(ac_logged_in)) return; + if (getuser(&CC->usersupp, CC->curr_user)) { cprintf("%d Can't locate user!\n", ERROR + INTERNAL_ERROR); return; @@ -480,10 +478,8 @@ void cmd_lkra(char *argbuf) if (strlen(argbuf) > 0) FloorBeingSearched = extract_int(argbuf, 0); - if (!(CC->logged_in)) { - cprintf("%d Not logged in.\n", ERROR + NOT_LOGGED_IN); - return; - } + if (CtdlAccessCheck(ac_logged_in)) return; + if (getuser(&CC->usersupp, CC->curr_user)) { cprintf("%d Can't locate user!\n", ERROR + INTERNAL_ERROR); return; @@ -519,10 +515,8 @@ void cmd_lkrn(char *argbuf) if (strlen(argbuf) > 0) FloorBeingSearched = extract_int(argbuf, 0); - if (!(CC->logged_in)) { - cprintf("%d Not logged in.\n", ERROR + NOT_LOGGED_IN); - return; - } + if (CtdlAccessCheck(ac_logged_in)) return; + if (getuser(&CC->usersupp, CC->curr_user)) { cprintf("%d Can't locate user!\n", ERROR + INTERNAL_ERROR); return; @@ -558,10 +552,8 @@ void cmd_lkro(char *argbuf) if (strlen(argbuf) > 0) FloorBeingSearched = extract_int(argbuf, 0); - if (!(CC->logged_in)) { - cprintf("%d Not logged in.\n", ERROR + NOT_LOGGED_IN); - return; - } + if (CtdlAccessCheck(ac_logged_in)) return; + if (getuser(&CC->usersupp, CC->curr_user)) { cprintf("%d Can't locate user!\n", ERROR + INTERNAL_ERROR); return; @@ -597,10 +589,8 @@ void cmd_lzrm(char *argbuf) if (strlen(argbuf) > 0) FloorBeingSearched = extract_int(argbuf, 0); - if (!(CC->logged_in)) { - cprintf("%d Not logged in.\n", ERROR + NOT_LOGGED_IN); - return; - } + if (CtdlAccessCheck(ac_logged_in)) return; + if (getuser(&CC->usersupp, CC->curr_user)) { cprintf("%d Can't locate user!\n", ERROR + INTERNAL_ERROR); return; @@ -712,10 +702,7 @@ void cmd_goto(char *gargs) char towhere[256]; char password[256]; - if ((!(CC->logged_in)) && (!(CC->internal_pgm))) { - cprintf("%d not logged in\n", ERROR + NOT_LOGGED_IN); - return; - } + if (CtdlAccessCheck(ac_logged_in)) return; extract(towhere, gargs, 0); extract(password, gargs, 1); @@ -788,17 +775,9 @@ void cmd_whok(void) struct usersupp temp; struct cdbdata *cdbus; - if ((!(CC->logged_in)) && (!(CC->internal_pgm))) { - cprintf("%d Not logged in.\n", ERROR + NOT_LOGGED_IN); - return; - } getuser(&CC->usersupp, CC->curr_user); + if (CtdlAccessCheck(ac_room_aide)) return; - if ((!is_room_aide()) && (!(CC->internal_pgm))) { - cprintf("%d Higher access required.\n", - ERROR + HIGHER_ACCESS_REQUIRED); - return; - } cprintf("%d Who knows room:\n", LISTING_FOLLOWS); cdb_rewind(CDB_USERSUPP); while (cdbus = cdb_next_item(CDB_USERSUPP), cdbus != NULL) { @@ -826,10 +805,8 @@ void cmd_rdir(void) FILE *ls, *fd; struct stat statbuf; - if (!(CC->logged_in)) { - cprintf("%d Not logged in.\n", ERROR + NOT_LOGGED_IN); - return; - } + if (CtdlAccessCheck(ac_logged_in)) return; + getroom(&CC->quickroom, CC->quickroom.QRname); getuser(&CC->usersupp, CC->curr_user); @@ -888,15 +865,7 @@ void cmd_rdir(void) */ void cmd_getr(void) { - if ((!(CC->logged_in)) && (!(CC->internal_pgm))) { - cprintf("%d Not logged in.\n", ERROR + NOT_LOGGED_IN); - return; - } - if ((!is_room_aide()) && (!(CC->internal_pgm))) { - cprintf("%d Higher access required.\n", - ERROR + HIGHER_ACCESS_REQUIRED); - return; - } + if (CtdlAccessCheck(ac_room_aide)) return; /******** if (is_noneditable(&CC->quickroom)) { @@ -929,16 +898,7 @@ void cmd_setr(char *args) int new_order = 0; int ne = 0; - if (!(CC->logged_in)) { - cprintf("%d Not logged in.\n", ERROR + NOT_LOGGED_IN); - return; - } - if (!is_room_aide()) { - cprintf("%d Higher access required.\n", - ERROR + HIGHER_ACCESS_REQUIRED); - return; - } - + if (CtdlAccessCheck(ac_room_aide)) return; if (is_noneditable(&CC->quickroom)) { ne = 1; @@ -1044,10 +1004,8 @@ void cmd_geta(void) { struct usersupp usbuf; - if ((!(CC->logged_in)) && (!(CC->internal_pgm))) { - cprintf("%d Not logged in.\n", ERROR + NOT_LOGGED_IN); - return; - } + if (CtdlAccessCheck(ac_logged_in)) return; + if (is_noneditable(&CC->quickroom)) { cprintf("%d Can't edit this room.\n", ERROR + NOT_HERE); return; @@ -1070,15 +1028,8 @@ void cmd_seta(char *new_ra) char buf[256]; int post_notice; - if (!(CC->logged_in)) { - cprintf("%d Not logged in.\n", ERROR + NOT_LOGGED_IN); - return; - } - if (!is_room_aide()) { - cprintf("%d Higher access required.\n", - ERROR + HIGHER_ACCESS_REQUIRED); - return; - } + if (CtdlAccessCheck(ac_room_aide)) return; + if (getuser(&usbuf, new_ra) != 0) { newu = (-1L); } else { @@ -1188,15 +1139,8 @@ void cmd_kill(char *argbuf) kill_ok = extract_int(argbuf, 0); - if (!(CC->logged_in)) { - cprintf("%d Not logged in.\n", ERROR + NOT_LOGGED_IN); - return; - } - if (!is_room_aide()) { - cprintf("%d Higher access required.\n", - ERROR + HIGHER_ACCESS_REQUIRED); - return; - } + if (CtdlAccessCheck(ac_room_aide)) return; + if (is_noneditable(&CC->quickroom)) { cprintf("%d Can't edit this room.\n", ERROR + NOT_HERE); return; @@ -1329,10 +1273,7 @@ void cmd_cre8(char *args) } } - if (!(CC->logged_in)) { - cprintf("%d Not logged in.\n", ERROR + NOT_LOGGED_IN); - return; - } + if (CtdlAccessCheck(ac_logged_in)) return; if (CC->usersupp.axlevel < config.c_createax) { cprintf("%d You need higher access to create rooms.\n", @@ -1402,15 +1343,8 @@ void cmd_einf(char *ok) char infofilename[256]; char buf[256]; - if (!(CC->logged_in)) { - cprintf("%d Not logged in.\n", ERROR + NOT_LOGGED_IN); - return; - } - if (!is_room_aide()) { - cprintf("%d Higher access required.\n", - ERROR + HIGHER_ACCESS_REQUIRED); - return; - } + if (CtdlAccessCheck(ac_room_aide)) return; + if (atoi(ok) == 0) { cprintf("%d Ok.\n", OK); return; @@ -1448,15 +1382,7 @@ void cmd_lflr(void) int a; struct floor flbuf; - if (!(CC->logged_in)) { - cprintf("%d Not logged in.\n", ERROR + NOT_LOGGED_IN); - return; - } - /* if (getuser(&CC->usersupp,CC->curr_user)) { - cprintf("%d Can't locate user!\n",ERROR+INTERNAL_ERROR); - return; - } - */ + if (CtdlAccessCheck(ac_logged_in)) return; cprintf("%d Known floors:\n", LISTING_FOLLOWS); @@ -1489,15 +1415,8 @@ void cmd_cflr(char *argbuf) cflr_ok = extract_int(argbuf, 1); - if (!(CC->logged_in)) { - cprintf("%d Not logged in.\n", ERROR + NOT_LOGGED_IN); - return; - } - if (CC->usersupp.axlevel < 6) { - cprintf("%d You need higher access to create rooms.\n", - ERROR + HIGHER_ACCESS_REQUIRED); - return; - } + if (CtdlAccessCheck(ac_aide)) return; + for (a = 0; a < MAXFLOORS; ++a) { getfloor(&flbuf, a); @@ -1548,16 +1467,8 @@ void cmd_kflr(char *argbuf) floor_to_delete = extract_int(argbuf, 0); kflr_ok = extract_int(argbuf, 1); + if (CtdlAccessCheck(ac_aide)) return; - if (!(CC->logged_in)) { - cprintf("%d Not logged in.\n", ERROR + NOT_LOGGED_IN); - return; - } - if (CC->usersupp.axlevel < 6) { - cprintf("%d You need higher access to delete floors.\n", - ERROR + HIGHER_ACCESS_REQUIRED); - return; - } lgetfloor(&flbuf, floor_to_delete); delete_ok = 1; @@ -1601,15 +1512,9 @@ void cmd_eflr(char *argbuf) cprintf("%d Usage error.\n", ERROR); return; } - if (!(CC->logged_in)) { - cprintf("%d Not logged in.\n", ERROR + NOT_LOGGED_IN); - return; - } - if (CC->usersupp.axlevel < 6) { - cprintf("%d You need higher access to edit floors.\n", - ERROR + HIGHER_ACCESS_REQUIRED); - return; - } + + if (CtdlAccessCheck(ac_aide)) return; + floor_num = extract_int(argbuf, 0); lgetfloor(&flbuf, floor_num); if ((flbuf.f_flags & F_INUSE) == 0) { diff --git a/citadel/serv_expire.c b/citadel/serv_expire.c index 8b78baedb..f8f2366e1 100644 --- a/citadel/serv_expire.c +++ b/citadel/serv_expire.c @@ -499,17 +499,7 @@ void cmd_expi(char *argbuf) { char cmd[256]; int retval; - - if ((!(CC->logged_in))&&(!(CC->internal_pgm))) { - cprintf("%d Not logged in.\n",ERROR+NOT_LOGGED_IN); - return; - } - - if ((!is_room_aide()) && (!(CC->internal_pgm)) ) { - cprintf("%d Higher access required.\n", - ERROR+HIGHER_ACCESS_REQUIRED); - return; - } + if (CtdlAccessCheck(ac_aide)) return; extract(cmd, argbuf, 0); if (!strcasecmp(cmd, "users")) { @@ -569,11 +559,7 @@ void cmd_fsck(char *argbuf) { struct roomref *ptr; int realcount; - if ( (!CC->logged_in) || (CC->usersupp.axlevel < 6) ) { - cprintf("%d Higher access required\n", - ERROR+HIGHER_ACCESS_REQUIRED); - return; - } + if (CtdlAccessCheck(ac_aide)) return; /* Lame way of checking whether anyone else is doing this now */ if (rr != NULL) { diff --git a/citadel/serv_moderate.c b/citadel/serv_moderate.c new file mode 100644 index 000000000..c9e08c7d2 --- /dev/null +++ b/citadel/serv_moderate.c @@ -0,0 +1,64 @@ +/* + * $Id$ + * + * + */ + +#include "sysdep.h" +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include "citadel.h" +#include "server.h" +#include +#include "sysdep_decls.h" +#include "citserver.h" +#include "support.h" +#include "config.h" +#include "control.h" +#include "dynloader.h" +#include "room_ops.h" +#include "user_ops.h" +#include "policy.h" +#include "database.h" +#include "msgbase.h" +#include "tools.h" + + + +/* + * moderate a message + */ +void cmd_mmod(char *argbuf) { + long msgnum; + int newlevel; + + /* user must be at least a Room Aide to moderate */ + if (CtdlAccessCheck(ac_room_aide)) return; + + msgnum = extract_long(argbuf, 0); + newlevel = extract_int(argbuf, 1); + + if ( (newlevel < (-63)) || (newlevel > (+63)) ) { + cprintf("%d %d is not a valid moderation level.\n", + newlevel, ERROR+ILLEGAL_VALUE); + } + + cprintf("%d FIXME ... actually do this!!!!!!!!\n", OK); +} + + +char *Dynamic_Module_Init(void) +{ + CtdlRegisterProtoHook(cmd_mmod, "MMOD", "Moderate a message"); + return "$Id$"; +} diff --git a/citadel/serv_rwho.c b/citadel/serv_rwho.c index 7519c3175..3c7979e07 100644 --- a/citadel/serv_rwho.c +++ b/citadel/serv_rwho.c @@ -170,11 +170,7 @@ void cmd_uchg(char *argbuf) extract(newusername, argbuf, 0); - if (CC->usersupp.axlevel < 6) { - cprintf("%d You must be an Aide to masquerade your name.\n", - ERROR+HIGHER_ACCESS_REQUIRED); - return; - } + if (CtdlAccessCheck(ac_aide)) return; if (strlen(newusername) > 0) { CC->cs_flags &= ~CS_STEALTH; @@ -204,16 +200,7 @@ void cmd_stel(char *cmdbuf) requested_mode = extract_int(cmdbuf,0); if (requested_mode !=0) requested_mode = 1; - if (!CC->logged_in) { - cprintf("%d Not logged in.\n",ERROR+NOT_LOGGED_IN); - return; - } - - if (CC->usersupp.axlevel < 6) { - cprintf("%d You must be an Aide to use stealth mode.\n", - ERROR+HIGHER_ACCESS_REQUIRED); - return; - } + if (CtdlAccessCheck(ac_aide)) return; if (CC->cs_flags & CS_STEALTH) { if (requested_mode == 0) diff --git a/citadel/user_ops.c b/citadel/user_ops.c index d8c09642d..5b2e47767 100644 --- a/citadel/user_ops.c +++ b/citadel/user_ops.c @@ -31,6 +31,7 @@ #include "config.h" #include "dynloader.h" #include "tools.h" +#include "citserver.h" /* @@ -213,6 +214,9 @@ int is_aide(void) { * Is the user currently logged in an Aide *or* the room aide for this room? */ int is_room_aide(void) { + + if (!CC->logged_in) return(0); + if ( (CC->usersupp.axlevel >= 6) || (CC->quickroom.QRroomaide == CC->usersupp.usernum) ) { return(1); @@ -714,10 +718,8 @@ void cmd_newu(char *cmdbuf) */ void cmd_setp(char *new_pw) { - if (!(CC->logged_in)) { - cprintf("%d Not logged in.\n",ERROR+NOT_LOGGED_IN); - return; - } + if (CtdlAccessCheck(ac_logged_in)) return; + if (CC->usersupp.uid != BBSUID) { cprintf("%d Not allowed. Use the 'passwd' command.\n",ERROR); return; @@ -739,10 +741,9 @@ void cmd_setp(char *new_pw) * get user parameters */ void cmd_getu(void) { - if (!(CC->logged_in)) { - cprintf("%d Not logged in.\n",ERROR+NOT_LOGGED_IN); - return; - } + + if (CtdlAccessCheck(ac_logged_in)) return; + getuser(&CC->usersupp,CC->curr_user); cprintf("%d %d|%d|%d|%d\n", OK, @@ -760,14 +761,13 @@ void cmd_setu(char *new_parms) { int new_mod; + if (CtdlAccessCheck(ac_logged_in)) return; + if (num_parms(new_parms) < 3) { cprintf("%d Usage error.\n",ERROR); return; } - if (!(CC->logged_in)) { - cprintf("%d Not logged in.\n",ERROR+NOT_LOGGED_IN); - return; - } + lgetuser(&CC->usersupp,CC->curr_user); CC->usersupp.USscreenwidth = extract_int(new_parms,0); CC->usersupp.USscreenheight = extract_int(new_parms,1); @@ -805,10 +805,7 @@ void cmd_slrp(char *new_ptr) long newlr; struct visit vbuf; - if (!(CC->logged_in)) { - cprintf("%d Not logged in.\n",ERROR+NOT_LOGGED_IN); - return; - } + if (CtdlAccessCheck(ac_logged_in)) return; if (!strncasecmp(new_ptr,"highest",7)) { newlr = CC->quickroom.QRhighest; @@ -838,16 +835,7 @@ void cmd_invt_kick(char *iuser, int op) char bbb[256]; struct visit vbuf; - if (!(CC->logged_in)) { - cprintf("%d Not logged in.\n",ERROR+NOT_LOGGED_IN); - return; - } - - if (is_room_aide()==0) { - cprintf("%d Higher access required.\n", - ERROR+HIGHER_ACCESS_REQUIRED); - return; - } + if (CtdlAccessCheck(ac_room_aide)) return; if (lgetuser(&USscratch,iuser)!=0) { cprintf("%d No such user.\n",ERROR); @@ -892,10 +880,7 @@ void cmd_invt_kick(char *iuser, int op) void cmd_forg(void) { struct visit vbuf; - if (!(CC->logged_in)) { - cprintf("%d Not logged in.\n",ERROR+NOT_LOGGED_IN); - return; - } + if (CtdlAccessCheck(ac_logged_in)) return; if (is_aide()) { cprintf("%d Aides cannot forget rooms.\n",ERROR); @@ -921,16 +906,7 @@ void cmd_gnur(void) { struct cdbdata *cdbus; struct usersupp usbuf; - if (!(CC->logged_in)) { - cprintf("%d Not logged in.\n",ERROR+NOT_LOGGED_IN); - return; - } - - if (CC->usersupp.axlevel < 6) { - cprintf("%d Higher access required.\n", - ERROR+HIGHER_ACCESS_REQUIRED); - return; - } + if (CtdlAccessCheck(ac_aide)) return; if ((CitControl.MMflags&MM_VALID)==0) { cprintf("%d There are no unvalidated users.\n",OK); @@ -981,16 +957,7 @@ void cmd_vali(char *v_args) extract(user,v_args,0); newax = extract_int(v_args,1); - if (!(CC->logged_in)) { - cprintf("%d Not logged in.\n",ERROR+NOT_LOGGED_IN); - return; - } - - if (CC->usersupp.axlevel < 6) { - cprintf("%d Higher access required.\n", - ERROR+HIGHER_ACCESS_REQUIRED); - return; - } + if (CtdlAccessCheck(ac_aide)) return; if (lgetuser(&userbuf,user)!=0) { cprintf("%d '%s' not found.\n",ERROR+NO_SUCH_USER,user); @@ -1078,10 +1045,7 @@ void cmd_chek(void) { int regis = 0; int vali = 0; - if (!(CC->logged_in)) { - cprintf("%d Not logged in.\n",ERROR+NOT_LOGGED_IN); - return; - } + if (CtdlAccessCheck(ac_logged_in)) return; getuser(&CC->usersupp,CC->curr_user); /* no lock is needed here */ if ((REGISCALL!=0)&&((CC->usersupp.flags&US_REGIS)==0)) regis = 1; @@ -1122,12 +1086,7 @@ void cmd_agup(char *cmdbuf) { struct usersupp usbuf; char requested_user[256]; - if ( (CC->internal_pgm==0) - && ( (CC->logged_in == 0) || (is_aide()==0) ) ) { - cprintf("%d Higher access required.\n", - ERROR + HIGHER_ACCESS_REQUIRED); - return; - } + if (CtdlAccessCheck(ac_aide)) return; extract(requested_user, cmdbuf, 0); if (getuser(&usbuf, requested_user) != 0) { @@ -1160,12 +1119,7 @@ void cmd_asup(char *cmdbuf) { int newax; int deleted = 0; - if ( (CC->internal_pgm==0) - && ( (CC->logged_in == 0) || (is_aide()==0) ) ) { - cprintf("%d Higher access required.\n", - ERROR + HIGHER_ACCESS_REQUIRED); - return; - } + if (CtdlAccessCheck(ac_aide)) return; extract(requested_user, cmdbuf, 0); if (lgetuser(&usbuf, requested_user) != 0) {