#define MODE_HIDEMODE 0x02000000 /* +L hide modes */
#define MODE_APASS 0x04000000 /* +A adminpass */
#define MODE_UPASS 0x08000000 /* +U userpass */
+#define MODE_ADMINSONLY 0x10000000 /* +a Admins only */
#define MODE_REMOVE 0x80000000
-#define FLAGS_OPER 0x0001 /* global operator +o */
-#define FLAGS_LOCOP 0x0002 /* Local operator +o */
-#define FLAGS_INVISIBLE 0x0004 /* invisible +i */
-#define FLAGS_WALLOP 0x0008 /* receives wallops +w */
-#define FLAGS_SERVNOTICE 0x0010 /* receives server notices +s */
-#define FLAGS_DEAF 0x0020 /* deaf +d */
-#define FLAGS_SERVICE 0x0040 /* cannot be kicked, killed or deoped +k */
-#define FLAGS_GLOBAL 0x0080 /* receives global messages +g */
-#define FLAGS_SETHOST 0x0100 /* sethost +h */
-#define FLAGS_PERSISTENT 0x0200 /* for reserved nicks, this isn't just one-shot */
-#define FLAGS_GAGGED 0x0400 /* for gagged users */
-#define FLAGS_AWAY 0x0800 /* for away users */
-#define FLAGS_STAMPED 0x1000 /* for users who have been stamped */
-#define FLAGS_HIDDEN_HOST 0x2000 /* user's host is masked by their account */
-#define FLAGS_REGNICK 0x4000 /* user owns their current nick */
-#define FLAGS_REGISTERING 0x8000 /* user has issued account register command, is waiting for email cookie */
-#define FLAGS_DUMMY 0x10000 /* user is not announced to other servers */
-#define FLAGS_NOIDLE 0x20000 /* hide idle time in whois +I */
-#define FLAGS_NOCHAN 0x40000 /* hide the users channels +n */
+#define FLAGS_OPER 0x000001 /* Operator +O */
+#define FLAGS_LOCOP 0x000002 /* Local operator +o */
+#define FLAGS_INVISIBLE 0x000004 /* invisible +i */
+#define FLAGS_WALLOP 0x000008 /* receives wallops +w */
+#define FLAGS_SERVNOTICE 0x000010 /* receives server notices +s */
+#define FLAGS_DEAF 0x000020 /* deaf +d */
+#define FLAGS_SERVICE 0x000040 /* cannot be kicked, killed or deoped +k */
+#define FLAGS_GLOBAL 0x000080 /* receives global messages +g */
+#define FLAGS_SETHOST 0x000100 /* sethost +h */
+#define FLAGS_PERSISTENT 0x000200 /* for reserved nicks, this isn't just one-shot */
+#define FLAGS_GAGGED 0x000400 /* for gagged users */
+#define FLAGS_AWAY 0x000800 /* for away users */
+#define FLAGS_STAMPED 0x001000 /* for users who have been stamped */
+#define FLAGS_HIDDEN_HOST 0x002000 /* user's host is masked by their account */
+#define FLAGS_REGNICK 0x004000 /* user owns their current nick */
+#define FLAGS_REGISTERING 0x008000 /* user has issued account register command, is waiting for email cookie */
+#define FLAGS_BOT 0x010000 /* Bot +B */
+#define FLAGS_HIDECHANS 0x020000 /* Hidden channels +n */
+#define FLAGS_HIDEIDLE 0x040000 /* Hidden idle time +I */
+#define FLAGS_XTRAOP 0x080000 /* Hidden idle time */
+#define FLAGS_CLOAKHOST 0x100000 /* user has cloaked host */
+#define FLAGS_CLOAKIP 0x200000 /* user has cloaked ip */
#define IsOper(x) ((x)->modes & FLAGS_OPER)
#define IsService(x) ((x)->modes & FLAGS_SERVICE)
#define IsDeaf(x) ((x)->modes & FLAGS_DEAF)
#define IsInvisible(x) ((x)->modes & FLAGS_INVISIBLE)
#define IsGlobal(x) ((x)->modes & FLAGS_GLOBAL)
-#define IsNoChan(x) ((x)->modes & FLAGS_NOCHAN)
#define IsWallOp(x) ((x)->modes & FLAGS_WALLOP)
#define IsServNotice(x) ((x)->modes & FLAGS_SERVNOTICE)
+#define IsBotM(x) ((x)->modes & FLAGS_BOT)
+#define IsHideChans(x) ((x)->modes & FLAGS_HIDECHANS)
+#define IsHideIdle(x) ((x)->modes & FLAGS_HIDEIDLE)
+#define IsXtraOp(x) ((x)->modes & FLAGS_XTRAOP)
#define IsSetHost(x) ((x)->modes & FLAGS_SETHOST)
#define IsGagged(x) ((x)->modes & FLAGS_GAGGED)
#define IsPersistent(x) ((x)->modes & FLAGS_PERSISTENT)
#define IsHiddenHost(x) ((x)->modes & FLAGS_HIDDEN_HOST)
#define IsReggedNick(x) ((x)->modes & FLAGS_REGNICK)
#define IsRegistering(x) ((x)->modes & FLAGS_REGISTERING)
-#define IsDummy(x) ((x)->modes & FLAGS_DUMMY)
-#define IsNoIdle(x) ((x)->modes & FLAGS_NOIDLE)
#define IsFakeHost(x) ((x)->fakehost[0] != '\0')
#define IsLocal(x) ((x)->uplink == self)
#define REALLEN 50
#define TOPICLEN 250
#define CHANNELLEN 200
-#define MARKLEN 20
+#define MARKLEN 200
#define MAXOPLEVEL 999
#define MAXMODEPARAMS 6
PRIV_REMOTEREHASH, /**< oper can remote REHASH */
PRIV_RESTART, /**< oper can RESTART */
PRIV_DIE, /**< oper can DIE */
+ PRIV_ZLINE, /**< oper can ZLINE */
+ PRIV_LOCAL_ZLINE, /**< oper can local ZLINE */
PRIV_GLINE, /**< oper can GLINE */
PRIV_LOCAL_GLINE, /**< oper can local GLINE */
PRIV_SHUN, /**< oper can SHUN */
PRIV_DISPLAY, /**< "Is an oper" displayed */
PRIV_SEE_OPERS, /**< display hidden opers */
PRIV_WIDE_GLINE, /**< oper can set wider G-lines */
+ PRIV_WIDE_ZLINE, /**< oper can set wider Z-Lines */
PRIV_WIDE_SHUN, /**< oper can set wider G-lines */
PRIV_LIST_CHAN, /**< oper can list secret channels */
PRIV_FORCE_OPMODE, /**< can hack modes on quarantined channels */
PRIV_FORCE_LOCAL_OPMODE, /**< can hack modes on quarantined local channels */
PRIV_CHECK, /**< oper can use CHECK */
PRIV_SEE_SECRET_CHAN, /**< oper can see +s channels in whois */
+ PRIV_WHOIS_NOTICE, /**< oper can set/unset user mode +W */
+ PRIV_HIDE_IDLE, /**< oper can set/unset user mode +I */
+ PRIV_XTRAOP, /**< oper can set/unset user mode +X */
+ PRIV_HIDE_CHANNELS, /**< oper can set/unset user mode +n */
PRIV_LAST_PRIV /**< number of privileges */
};
time_t timestamp; /* Time of last nick change */
struct server *uplink; /* Server that user is connected to */
- time_t idle_since;
struct modeList channels; /* Vector of channels user is in */
struct Privs privs;
typedef void (*nick_change_func_t)(struct userNode *user, const char *old_nick);
void reg_nick_change_func(nick_change_func_t handler);
void NickChange(struct userNode* user, const char *new_nick, int no_announce);
+void SVSNickChange(struct userNode* user, const char *new_nick);
typedef void (*account_func_t) (struct userNode *user, const char *stamp);
void reg_account_func(account_func_t handler);