#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 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,
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
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;
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. */