#define HI_FLAG_NODELETE 0x00000080
#define HI_FLAG_NETWORK_HELPER 0x00000100
#define HI_FLAG_BOT 0x00000200
+#define HI_FLAG_AUTOHIDE 0x00000400
+#define HI_FLAG_INVI 0x00000800
+
/* Flag characters for the above. First char is LSB, etc. */
-#define HANDLE_FLAGS "SphgscfnHb"
+#define HANDLE_FLAGS "SphgscfnHbxI"
/* HI_STYLE_* go into handle_info.userlist_style */
-#define HI_STYLE_DEF 'd'
-#define HI_STYLE_ZOOT 'Z'
+#define HI_STYLE_DEF 'd'
+#define HI_STYLE_ZOOT 'Z'
#define HI_DEFAULT_FLAGS (HI_FLAG_MIRC_COLOR)
#define HI_DEFAULT_STYLE HI_STYLE_DEF
#define IsHelping(user) (user->handle_info && HANDLE_FLAGGED(user->handle_info, HELPING))
#define IsStaff(user) (IsOper(user) || IsSupportHelper(user) || IsNetworkHelper(user))
#define IsBot(user) (user->handle_info && HANDLE_FLAGGED(user->handle_info, BOT))
+#define IsInvi(user) (user->handle_info && HANDLE_FLAGGED(user->handle_info, INVI))
enum cookie_type {
ACTIVATION,
struct handle_info *hi;
char *data;
enum cookie_type type;
- time_t expires;
+ unsigned long expires;
char cookie[COOKIELEN+1];
};
struct handle_note {
struct handle_note *next;
- time_t expires;
- time_t set;
+ unsigned long expires;
+ unsigned long set;
int id;
char setter[NICKSERV_HANDLE_LEN+1];
char note[1];
};
+struct authlogEntry {
+ unsigned long login_time;
+ unsigned long logout_time;
+ const char *hostmask;
+ const char *quit_reason;
+ struct userNode *user;
+ struct authlogEntry *next;
+};
+
struct handle_info {
struct nick_info *nicks;
struct string_list *masks;
struct handle_cookie *cookie;
struct handle_note *notes;
struct language *language;
+ struct authlogEntry *authlog;
+ char *website;
+ char *devnull;
char *email_addr;
char *epithet;
char *infoline;
char *handle;
char *fakehost;
-#ifdef WITH_PROTOCOL_BAHAMUT
+ char *fakeident;
unsigned long id;
-#endif
- time_t registered;
- time_t lastseen;
+ unsigned long registered;
+ unsigned long lastseen;
+ int karma;
unsigned short flags;
unsigned short opserv_level;
+ unsigned short staff_level;
unsigned short screen_width;
unsigned short table_width;
unsigned char userlist_style;
- unsigned char announcements;
unsigned char maxlogins;
char passwd[MD5_CRYPT_LENGTH+1];
char last_quit_host[USERLEN+HOSTLEN+2];
struct modeNode *find_handle_in_channel(struct chanNode *channel, struct handle_info *handle, struct userNode *except);
int nickserv_modify_handle_flags(struct userNode *user, struct userNode *bot, const char *str, unsigned long *add, unsigned long *remove);
int oper_has_access(struct userNode *user, struct userNode *bot, unsigned int min_level, unsigned int quiet);
+int staff_has_access(struct userNode *user, struct userNode *bot, unsigned int min_level, unsigned int quiet);
void nickserv_show_oper_accounts(struct userNode *user, struct svccmd *cmd);
+struct handle_info *checklogin(const char *user, const char *pass, const char *numeric, const char *hostmask, const char *ipmask);
+char *getfakehost(const char *user);
+void nickserv_devnull_delete(char *name);
+void nickserv_devnull_rename(char *oldname, char *newname);
+char *generate_fakehost(struct handle_info *handle);
+char *generate_fakeident(struct handle_info *handle, struct userNode *user);
+void apply_fakehost(struct handle_info *handle, struct userNode *user);
/* auth_funcs are called when a user gets a new handle_info. They are
* called *after* user->handle_info has been updated. */