00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022 #ifndef _EGG_USERS_H_
00023 #define _EGG_USERS_H_
00024
00025 #define USER_HASH_SIZE 50
00026 #define HOST_HASH_SIZE 50
00027
00028
00029 #define USER_DELETED 1
00030 #define USER_BOT 2
00031 #define USER_LINKED_BOT 4
00032 #define USER_LINKING_BOT 8
00033
00034
00035 #define BTN_USER_CHANGE_FLAGS "uflags"
00036 #define BTN_USER_CHANGE_SETTINGS "uset"
00037 #define BTN_USER_DELETE "udelete"
00038
00039 typedef struct {
00040
00041 char *chan;
00042
00043
00044 flags_t flags;
00045
00046
00047 xml_node_t *extended;
00048 } user_setting_t;
00049
00050 typedef struct user {
00051
00052 char *handle;
00053 int uid;
00054
00055
00056 char **ircmasks;
00057 int nircmasks;
00058
00059
00060 user_setting_t *settings;
00061 int nsettings;
00062
00063
00064 int flags;
00065 } user_t;
00066
00067 int user_init(void);
00068 int user_shutdown(void);
00069
00070 void user_walk(hash_table_node_func callback, void *data);
00071 int user_load(const char *fname);
00072 int user_save(const char *fname);
00073 const char *user_invalid_handle(const char *handle);
00074 user_t *user_new(const char *handle);
00075 int user_delete(user_t *u);
00076 user_t *user_lookup_by_handle(const char *handle);
00077 user_t *user_lookup_authed(const char *handle, const char *pass);
00078 user_t *user_lookup_by_uid(int uid);
00079 user_t *user_lookup_by_irchost_nocache(const char *irchost);
00080 user_t *user_lookup_by_irchost(const char *irchost);
00081 int user_add_ircmask(user_t *u, const char *ircmask);
00082 int user_del_ircmask(user_t *u, const char *ircmask);
00083 int user_get_setting(user_t *u, const char *chan, const char *setting, char **valueptr);
00084 int user_set_setting(user_t *u, const char *chan, const char *setting, const char *newvalue);
00085
00086 int user_get_flags(user_t *u, const char *chan, flags_t *flags);
00087 int user_set_flags(user_t *u, const char *chan, flags_t *flags);
00088 int user_set_flags_str(user_t *u, const char *chan, const char *flags);
00089
00090 int user_check_flags(user_t *u, const char *chan, flags_t *flags);
00091 int user_check_flags_str(user_t *u, const char *chan, const char *flags);
00092 int user_check_partial_flags(user_t *u, const char *chan, flags_t *flags);
00093 int user_check_partial_flags_str(user_t *u, const char *chan, const char *flags);
00094
00095 int user_has_pass(user_t *u);
00096 int user_check_pass(user_t *u, const char *pass);
00097 int user_set_pass(user_t *u, const char *pass);
00098 int user_count();
00099 int user_rand_pass(char *buf, int bufsize);
00100 int user_change_handle(user_t *u, const char *newhandle);
00101 int partyline_cmd_match_ircmask(void *p, const char *mask, long start, long limit);
00102 int partyline_cmd_match_attr(void *p, const char *attr, const char *chan, long start, long limit);
00103
00104 #endif