X-Git-Url: https://code.citadel.org/?a=blobdiff_plain;f=citadel%2Fuser_ops.h;h=3afe55013250e39fcaf495079f9db904e453661e;hb=ef347e598ab670b87e178af7fc6b00795494303a;hp=7b06f5d96016ae495a9ee18fe2952237383e98dd;hpb=6e3ac9b743a16b4ab69fec6575f92d5e6de25d65;p=citadel.git diff --git a/citadel/user_ops.h b/citadel/user_ops.h index 7b06f5d96..3afe55013 100644 --- a/citadel/user_ops.h +++ b/citadel/user_ops.h @@ -1,86 +1,100 @@ -/* $Id$ */ +#ifndef __USER_OPS_H__ +#define __USER_OPS_H__ + +#include +#include int hash (char *str); -int getuser (struct ctdluser *, char *); -int lgetuser (struct ctdluser *, char *); -void putuser (struct ctdluser *); -void lputuser (struct ctdluser *); +/* getuser is deprecated, use CtdlGetUser instead */ +int getuser (struct ctdluser *, char *) __attribute__ ((deprecated)); +/* lgetuser is deprecated, use CtdlGetUserLock instead */ +int lgetuser (struct ctdluser *, char *) __attribute__ ((deprecated)); +/* putuser is deprecated, use CtdlPutUser instead */ +void putuser (struct ctdluser *) __attribute__ ((deprecated)); +/* lputuser is deprecated, use CtdlPutUserLock instead */ +void lputuser (struct ctdluser *) __attribute__ ((deprecated)); int is_aide (void); int is_room_aide (void); -int getuserbynumber (struct ctdluser *usbuf, long int number); +/* getuserbynumber is deprecated, use CtdlGetUserByNumber instead */ +int getuserbynumber (struct ctdluser *usbuf, long int number) __attribute__ ((deprecated)); +void rebuild_usersbynumber(void); void cmd_user (char *cmdbuf); void session_startup (void); -void logout (struct CitContext *who); -void cmd_pass (char *buf); +void logged_in_response(void); int purge_user (char *pname); -int create_user (char *newusername, int become_user); +int create_user (const char *newusername, long len, int become_user); void do_login(void); -void cmd_newu (char *cmdbuf); -void cmd_creu (char *cmdbuf); -void cmd_setp (char *new_pw); -void cmd_getu (void); -void cmd_setu (char *new_parms); -void cmd_slrp (char *new_ptr); int CtdlInvtKick(char *iuser, int op); -void cmd_invt_kick (char *iuser, int op); -void cmd_forg (void); -void cmd_gnur (void); -void cmd_vali (char *v_args); void ForEachUser(void (*CallBack)(struct ctdluser *EachUser, void *out_data), void *in_data); void ListThisUser(struct ctdluser *usbuf, void *data); -void cmd_list (char *); -void cmd_chek (void); -void cmd_qusr (char *who); -void cmd_agup (char *cmdbuf); -void cmd_asup (char *cmdbuf); -void cmd_view (char *cmdbuf); int NewMailCount(void); int InitialMailCheck(void); -void put_visit(struct visit *newvisit); -void CtdlGetRelationship(struct visit *vbuf, - struct ctdluser *rel_user, - struct ctdlroom *rel_room); -void CtdlSetRelationship(struct visit *newvisit, - struct ctdluser *rel_user, - struct ctdlroom *rel_room); +void put_visit(visit *newvisit); +/* MailboxName is deprecated us CtdlMailboxName instead */ void MailboxName(char *buf, size_t n, const struct ctdluser *who, - const char *prefix); + const char *prefix) __attribute__ ((deprecated)); int GenerateRelationshipIndex( char *IndexBuf, long RoomID, long RoomGen, long UserID); int CtdlAssociateSystemUser(char *screenname, char *loginname); -int CtdlLoginExistingUser(char *username); -/* - * Values which may be returned by CtdlLoginExistingUser() - */ -enum { - pass_ok, - pass_already_logged_in, - pass_no_user, - pass_internal_error, - pass_wrong_password -}; +void CtdlSetPassword(char *new_pw); + +int CtdlForgetThisRoom(void); + +void cmd_newu (char *cmdbuf); +void start_chkpwd_daemon(void); -int CtdlTryPassword(char *password); + +#define RENAMEUSER_OK 0 /* Operation succeeded */ +#define RENAMEUSER_LOGGED_IN 1 /* Cannot rename a user who is currently logged in */ +#define RENAMEUSER_NOT_FOUND 2 /* The old user name does not exist */ +#define RENAMEUSER_ALREADY_EXISTS 3 /* An account with the desired new name already exists */ + +int rename_user(char *oldname, char *newname); + +///#ifndef CTDL_INLINE_USR +////#define CTDL_INLINE_USR static INLINE +///#endif + +///CTDL_INLINE_USR +static INLINE long cutuserkey(char *username) { + long len; + len = strlen(username); + if (len >= USERNAME_SIZE) + { + syslog(LOG_INFO, "Username too long: %s", username); + cit_backtrace (); + len = USERNAME_SIZE - 1; + username[len]='\0'; + } + return len; +} /* - * Values which may be returned by CtdlTryPassword() + * makeuserkey() - convert a username into the format used as a database key + * (it's just the username converted into lower case) */ -enum { - login_ok, - login_already_logged_in, - login_too_many_users, - login_not_found -}; +///CTDL_INLINE_USR +static INLINE void makeuserkey(char *key, const char *username, long len) { + int i; + if (len >= USERNAME_SIZE) + { + syslog(LOG_INFO, "Username too long: %s", username); + cit_backtrace (); + len = USERNAME_SIZE - 1; + } + for (i=0; i<=len; ++i) { + key[i] = tolower(username[i]); + } +} -int CtdlForgetThisRoom(void); -void cmd_seen(char *argbuf); -void cmd_gtsn(char *argbuf); -void BumpNewMailCounter(long); -void start_chkpwd_daemon(void); + +int internal_create_user (const char *username, long len, struct ctdluser *usbuf, uid_t uid); + +#endif