Modified the behavior of ForEachUser() to do the two phase load/perform cycle
[citadel.git] / citadel / user_ops.h
index 8513c84a7d0e2ff2c3eb09acebc7abb308befb10..f58ec1bb6489cfbdfa5c1dfefc2598d58742ee1e 100644 (file)
@@ -1,92 +1,63 @@
-/* $Id$ */
+/* 
+ * Header file for server functions which perform operations on user objects.
+ *
+ * Copyright (c) 1987-2019 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.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ */
+
+#ifndef __USER_OPS_H__
+#define __USER_OPS_H__
+
+#include <ctype.h>
+#include <syslog.h>
+
 int hash (char *str);
-int getuser (struct ctdluser *, char *);
-int lgetuser (struct ctdluser *, char *);
-void putuser (struct ctdluser *);
-void lputuser (struct ctdluser *);
 int is_aide (void);
 int is_room_aide (void);
-int getuserbynumber (struct ctdluser *usbuf, long int number);
+int CtdlCheckInternetMailPermission(struct ctdluser *who);
 void rebuild_usersbynumber(void);
-void cmd_user (char *cmdbuf);
 void session_startup (void);
 void logged_in_response(void);
-void logout (void);
-void cmd_pass (char *buf);
 int purge_user (char *pname);
-int create_user (char *newusername, int become_user);
+int getuserbyuid(struct ctdluser *usbuf, uid_t number);
+
+int create_user(char *newusername, int become_user, uid_t uid);
+enum {
+       CREATE_USER_DO_NOT_BECOME_USER,
+       CREATE_USER_BECOME_USER
+};
+#define NATIVE_AUTH_UID (-1)
+
 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);
-void cmd_renu (char *cmdbuf);
+void ForEachUser(void (*CallBack) (char *, void *out_data), void *in_data);
 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 *authname, 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
-};
 
 
 
 
-int CtdlTryPassword(char *password);
 void CtdlSetPassword(char *new_pw);
 
-/*
- * Values which may be returned by CtdlTryPassword()
- */
-enum {
-       login_ok,
-       login_already_logged_in,
-       login_too_many_users,
-       login_not_found
-};
-
-
 int CtdlForgetThisRoom(void);
-void cmd_seen(char *argbuf);
-void cmd_gtsn(char *argbuf);
-void BumpNewMailCounter(long);
+
+void cmd_newu (char *cmdbuf);
 void start_chkpwd_daemon(void);
 
 
@@ -96,5 +67,9 @@ void start_chkpwd_daemon(void);
 #define RENAMEUSER_ALREADY_EXISTS      3       /* An account with the desired new name already exists */
 
 int rename_user(char *oldname, char *newname);
-INLINE void makeuserkey(char *key, char *username);
-int internal_create_user (char *username, struct ctdluser *usbuf, uid_t uid);
+
+long cutusername(char *username);
+void makeuserkey(char *key, const char *username, long len);
+int internal_create_user(char *username, struct ctdluser *usbuf, uid_t uid);
+
+#endif