X-Git-Url: https://code.citadel.org/?a=blobdiff_plain;f=citadel%2Fmodules%2Fctdlproto%2Fserv_user.c;h=10921b48dc41723513c60145c288ea4159f83c77;hb=1e949b1854d32c7e1ce3556b3b19a529e6dbf7e0;hp=eee6516b864d0af2be766d0ce9f89e8d4f650269;hpb=d3439d1bc968e5b5c99a4845a563ab8df8678bce;p=citadel.git diff --git a/citadel/modules/ctdlproto/serv_user.c b/citadel/modules/ctdlproto/serv_user.c index eee6516b8..10921b48d 100644 --- a/citadel/modules/ctdlproto/serv_user.c +++ b/citadel/modules/ctdlproto/serv_user.c @@ -1,7 +1,7 @@ /* * Server functions which perform operations on user objects. * - * Copyright (c) 1987-2011 by the citadel.org team + * Copyright (c) 1987-2017 by the citadel.org team * * This program is open source software; you can redistribute it and/or * modify it under the terms of the GNU General Public License, version 3. @@ -12,17 +12,16 @@ * GNU General Public License for more details. */ + #include "support.h" #include "control.h" #include "ctdl_module.h" - #include "citserver.h" - +#include "config.h" #include "user_ops.h" #include "internet_addressing.h" - /* * USER cmd */ @@ -31,11 +30,9 @@ void cmd_user(char *cmdbuf) char username[256]; int a; - CON_syslog(LOG_DEBUG, "cmd_user(%s)\n", cmdbuf); extract_token(username, cmdbuf, 0, '|', sizeof username); - CON_syslog(LOG_DEBUG, "username: %s\n", username); striplt(username); - CON_syslog(LOG_DEBUG, "username: %s\n", username); + syslog(LOG_DEBUG, "user_ops: cmd_user(%s)", username); a = CtdlLoginExistingUser(NULL, username); switch (a) { @@ -47,7 +44,7 @@ void cmd_user(char *cmdbuf) "Too many users are already online " "(maximum is %d)\n", ERROR + MAX_SESSIONS_EXCEEDED, - config.c_nodename, config.c_maxsessions); + CtdlGetConfigStr("c_nodename"), CtdlGetConfigInt("c_maxsessions")); return; case login_ok: cprintf("%d Password required for %s\n", @@ -99,13 +96,13 @@ void cmd_newu(char *cmdbuf) long len; char username[SIZ]; - if (config.c_auth_mode != AUTHMODE_NATIVE) { + if (CtdlGetConfigInt("c_auth_mode") != AUTHMODE_NATIVE) { cprintf("%d This system does not use native mode authentication.\n", ERROR + NOT_HERE); return; } - if (config.c_disable_newu) { + if (CtdlGetConfigInt("c_disable_newu")) { cprintf("%d Self-service user account creation " "is disabled on this system.\n", ERROR + NOT_HERE); return; @@ -118,7 +115,8 @@ void cmd_newu(char *cmdbuf) if (CC->nologin) { cprintf("%d %s: Too many users are already online (maximum is %d)\n", ERROR + MAX_SESSIONS_EXCEEDED, - config.c_nodename, config.c_maxsessions); + CtdlGetConfigStr("c_nodename"), CtdlGetConfigInt("c_maxsessions")); + return; } extract_token(username, cmdbuf, 0, '|', sizeof username); strproc(username); @@ -153,6 +151,7 @@ void cmd_newu(char *cmdbuf) } } + /* * set password - citadel protocol implementation */ @@ -224,16 +223,13 @@ void cmd_creu(char *cmdbuf) safestrncpy(tmp.password, password, sizeof(tmp.password)); CtdlPutUserLock(&tmp); } - cprintf("%d User '%s' created %s.\n", CIT_OK, username, - (!IsEmptyStr(password)) ? "and password set" : - "with no password"); + cprintf("%d User '%s' created %s.\n", CIT_OK, username, (!IsEmptyStr(password)) ? "and password set" : "with no password"); return; } else if (a == ERROR + ALREADY_EXISTS) { cprintf("%d '%s' already exists.\n", ERROR + ALREADY_EXISTS, username); return; - } else if ( (config.c_auth_mode != AUTHMODE_NATIVE) && (a == ERROR + NO_SUCH_USER) ) { - cprintf("%d User accounts are not created within Citadel in host authentication mode.\n", - ERROR + NO_SUCH_USER); + } else if ( (CtdlGetConfigInt("c_auth_mode") != AUTHMODE_NATIVE) && (a == ERROR + NO_SUCH_USER) ) { + cprintf("%d User accounts are not created within Citadel in host authentication mode.\n", ERROR + NO_SUCH_USER); return; } else { cprintf("%d An error occurred creating the user account.\n", ERROR + INTERNAL_ERROR); @@ -241,23 +237,19 @@ void cmd_creu(char *cmdbuf) } - /* * get user parameters */ void cmd_getu(char *cmdbuf) { - if (CtdlAccessCheck(ac_logged_in)) return; CtdlGetUser(&CC->user, CC->curr_user); - cprintf("%d 80|24|%d|\n", - CIT_OK, - (CC->user.flags & US_USER_SET) - ); + cprintf("%d 80|24|%d|\n", CIT_OK, (CC->user.flags & US_USER_SET)); } + /* * set user parameters */ @@ -270,13 +262,14 @@ void cmd_setu(char *new_parms) cprintf("%d Usage error.\n", ERROR + ILLEGAL_VALUE); return; } - CtdlGetUserLock(&CC->user, CC->curr_user); + CtdlLockGetCurrentUser(); CC->user.flags = CC->user.flags & (~US_USER_SET); CC->user.flags = CC->user.flags | (extract_int(new_parms, 2) & US_USER_SET); - CtdlPutUserLock(&CC->user); + CtdlPutCurrentUserLock(); cprintf("%d Ok\n", CIT_OK); } + /* * set last read pointer */ @@ -296,7 +289,7 @@ void cmd_slrp(char *new_ptr) newlr = atol(new_ptr); } - CtdlGetUserLock(&CC->user, CC->curr_user); + CtdlLockGetCurrentUser(); CtdlGetRelationship(&vbuf, &CC->user, &CC->room); memcpy(&original_vbuf, &vbuf, sizeof(visit)); @@ -309,7 +302,7 @@ void cmd_slrp(char *new_ptr) CtdlSetRelationship(&vbuf, &CC->user, &CC->room); } - CtdlPutUserLock(&CC->user); + CtdlPutCurrentUserLock(); cprintf("%d %ld\n", CIT_OK, newlr); } @@ -351,6 +344,7 @@ void cmd_gtsn(char *argbuf) { client_write(HKEY("\n")); } + /* * INVT and KICK commands */ @@ -366,15 +360,13 @@ void cmd_invt_kick(char *iuser, int op) { /* access granted */ } else { /* access denied */ - cprintf("%d Higher access or room ownership required.\n", - ERROR + HIGHER_ACCESS_REQUIRED); + cprintf("%d Higher access or room ownership required.\n", ERROR + HIGHER_ACCESS_REQUIRED); return; } - if (!strncasecmp(CC->room.QRname, config.c_baseroom, + if (!strncasecmp(CC->room.QRname, CtdlGetConfigStr("c_baseroom"), ROOMNAMELEN)) { - cprintf("%d Can't add/remove users from this room.\n", - ERROR + NOT_HERE); + cprintf("%d Can't add/remove users from this room.\n", ERROR + NOT_HERE); return; } @@ -390,8 +382,15 @@ void cmd_invt_kick(char *iuser, int op) { return; } -void cmd_invt(char *iuser) {cmd_invt_kick(iuser, 1);} -void cmd_kick(char *iuser) {cmd_invt_kick(iuser, 0);} + +void cmd_invt(char *iuser) { + cmd_invt_kick(iuser, 1); +} + + +void cmd_kick(char *iuser) { + cmd_invt_kick(iuser, 0); +} /* @@ -412,6 +411,7 @@ void cmd_forg(char *argbuf) } } + /* * Get Next Unregistered User */ @@ -424,7 +424,7 @@ void cmd_gnur(char *argbuf) return; } - if ((CitControl.MMflags & MM_VALID) == 0) { + if ((CtdlGetConfigInt("MMflags") & MM_VALID) == 0) { cprintf("%d There are no unvalidated users.\n", CIT_OK); return; } @@ -435,12 +435,9 @@ void cmd_gnur(char *argbuf) cdb_rewind(CDB_USERS); while (cdbus = cdb_next_item(CDB_USERS), cdbus != NULL) { memset(&usbuf, 0, sizeof(struct ctdluser)); - memcpy(&usbuf, cdbus->ptr, - ((cdbus->len > sizeof(struct ctdluser)) ? - sizeof(struct ctdluser) : cdbus->len)); + memcpy(&usbuf, cdbus->ptr, ((cdbus->len > sizeof(struct ctdluser)) ? sizeof(struct ctdluser) : cdbus->len)); cdb_free(cdbus); - if ((usbuf.flags & US_NEEDVALID) - && (usbuf.axlevel > AxDeleted)) { + if ((usbuf.flags & US_NEEDVALID) && (usbuf.axlevel > AxDeleted)) { cprintf("%d %s\n", MORE_DATA, usbuf.fullname); cdb_close_cursor(CDB_USERS); return; @@ -452,13 +449,12 @@ void cmd_gnur(char *argbuf) */ begin_critical_section(S_CONTROL); - get_control(); - CitControl.MMflags = CitControl.MMflags & (~MM_VALID); - put_control(); + int flags; + flags = CtdlGetConfigInt("MMflags"); + flags = flags & (~MM_VALID); + CtdlSetConfigInt("MMflags", flags); end_critical_section(S_CONTROL); cprintf("%d *** End of registration.\n", CIT_OK); - - } @@ -474,9 +470,7 @@ void cmd_vali(char *v_args) extract_token(user, v_args, 0, '|', sizeof user); newax = extract_int(v_args, 1); - if (CtdlAccessCheck(ac_aide) || - (newax > AxAideU) || - (newax < AxDeleted)) { + if (CtdlAccessCheck(ac_aide) || (newax > AxAideU) || (newax < AxDeleted)) { return; } @@ -514,8 +508,6 @@ void cmd_list(char *cmdbuf) } - - /* * assorted info we need to check at login */ @@ -529,18 +521,18 @@ void cmd_chek(char *argbuf) return; } - CtdlGetUser(&CC->user, CC->curr_user); /* no lock is needed here */ - if ((REGISCALL != 0) && ((CC->user.flags & US_REGIS) == 0)) + CtdlGetUser(&CC->user, CC->curr_user); // no lock is needed here + if ((REGISCALL != 0) && ((CC->user.flags & US_REGIS) == 0)) { regis = 1; + } if (CC->user.axlevel >= AxAideU) { - get_control(); - if (CitControl.MMflags & MM_VALID) + if (CtdlGetConfigInt("MMflags") & MM_VALID) { vali = 1; + } } - /* check for mail */ - mail = InitialMailCheck(); + mail = InitialMailCheck(); // check for mail cprintf("%d %d|%d|%d|%s|\n", CIT_OK, mail, regis, vali, CC->cs_inet_email); } @@ -592,7 +584,6 @@ void cmd_agup(char *cmdbuf) } - /* * Administrative Set User Parameters */ @@ -643,16 +634,16 @@ void cmd_asup(char *cmdbuf) if (deleted) { snprintf(notify, SIZ, - "User \"%s\" has been deleted by %s.\n", - usbuf.fullname, - (CC->logged_in ? CC->user.fullname : "an administrator") + "User \"%s\" has been deleted by %s.\n", + usbuf.fullname, (CC->logged_in ? CC->user.fullname : "an administrator") ); CtdlAideMessage(notify, "User Deletion Message"); } cprintf("%d Ok", CIT_OK); - if (deleted) + if (deleted) { cprintf(" (%s deleted)", requested_user); + } cprintf("\n"); } @@ -720,7 +711,8 @@ void cmd_renu(char *cmdbuf) return; case RENAMEUSER_LOGGED_IN: cprintf("%d '%s' is currently logged in and cannot be renamed.\n", - ERROR + ALREADY_LOGGED_IN , oldname); + ERROR + ALREADY_LOGGED_IN , oldname + ); return; case RENAMEUSER_NOT_FOUND: cprintf("%d '%s' does not exist.\n", ERROR + NO_SUCH_USER, oldname); @@ -734,7 +726,6 @@ void cmd_renu(char *cmdbuf) } - void cmd_quit(char *argbuf) { cprintf("%d Goodbye.\n", CIT_OK);