]> jfr.im git - irc/quakenet/newserv.git/blobdiff - nick/nick.h
Implement notice flag +G for automated gline messages.
[irc/quakenet/newserv.git] / nick / nick.h
index c24c0089f087021267512d7a4d8264eccd63ac99..c140595f7548cf82c7743b6775b20a466419a224 100644 (file)
@@ -17,7 +17,7 @@
 #include <time.h>
 
 #ifndef MAXNICKEXTS
-#define MAXNICKEXTS       6
+#define MAXNICKEXTS       10
 #endif
 
 #define UMODE_INV       0x0001
@@ -34,8 +34,9 @@
 #define UMODE_REGPRIV   0x0800
 #define UMODE_HIDEIDLE  0x1000
 #define UMODE_PARANOID  0x2000
+#define UMODE_CLOAKED   0x4000
 
-#define UMODE_ALL       0x3FFF
+#define UMODE_ALL       0x7FFF
 
 #define AFLAG_STAFF     0x0001
 #define AFLAG_SUPPORT   0x0002
@@ -59,6 +60,7 @@
 #define IsRegPriv(x)      ((x)->umodes & UMODE_REGPRIV)
 #define IsHideIdle(x)     ((x)->umodes & UMODE_HIDEIDLE)
 #define IsParanoid(x)     ((x)->umodes & UMODE_PARANOID)
+#define IsCloaked(x)      ((x)->umodes & UMODE_CLOAKED)
 
 #define SetInvisible(x)    ((x)->umodes |= UMODE_INV)
 #define SetWallops(x)      ((x)->umodes |= UMODE_WALLOPS)
@@ -74,6 +76,7 @@
 #define SetRegPriv(x)      ((x)->umodes |= UMODE_REGPRIV)
 #define SetHideIdle(x)     ((x)->umodes |= UMODE_HIDEIDLE)
 #define SetParanoid(x)     ((x)->umodes |= UMODE_PARANOID)
+#define SetCloaked(x)      ((x)->umodes |= UMODE_CLOAKED)
 
 #define ClearInvisible(x)    ((x)->umodes &= ~UMODE_INV)
 #define ClearWallops(x)      ((x)->umodes &= ~UMODE_WALLOPS)
@@ -89,6 +92,7 @@
 #define ClearRegPriv(x)      ((x)->umodes &= ~UMODE_REGPRIV)
 #define ClearHideIdle(x)     ((x)->umodes &= ~UMODE_HIDEIDLE)
 #define ClearParanoid(x)     ((x)->umodes &= ~UMODE_PARANOID)
+#define ClearCloaked(x)      ((x)->umodes &= ~UMODE_CLOAKED)
 
 #define IsStaff(x)           ((x)->flags & AFLAG_STAFF)
 #define IsDeveloper(x)       ((x)->flags & AFLAG_DEVELOPER)
 #define ClearAdmin(x)        ((x)->flags &= ~AFLAG_ADMIN)
 #define ClearOperFlag(x)     ((x)->flags &= ~AFLAG_OPER)
 
+#define NickOnServiceServer(target)   SIsService(&serverlist[homeserver((target)->numeric)])
+
 typedef struct host {
   sstring *name;
   int clonecount;
@@ -138,7 +144,11 @@ typedef struct nick {
   authname *auth; /* This requires User ID numbers to work */
   time_t timestamp;
   time_t accountts;
+  sstring *away;
+  struct irc_in_addr ipaddress;
   patricia_node_t *ipnode;
+  unsigned int cloak_count;
+  struct nick *cloak_extra;
   unsigned int marker;
   struct nick *next;
   struct nick *nextbyhost;
@@ -149,7 +159,8 @@ typedef struct nick {
   void *exts[MAXNICKEXTS];
 } nick;
 
-#define p_ipaddr ipnode->prefix->sin
+#define p_ipaddr ipaddress
+#define p_nodeaddr ipnode->prefix->sin
 
 #define NICKHASHSIZE      60000
 #define HOSTHASHSIZE      40000
@@ -161,6 +172,7 @@ extern host *hosttable[HOSTHASHSIZE];
 extern realname *realnametable[REALNAMEHASHSIZE];
 extern const flag umodeflags[];
 extern const flag accountflags[];
+extern char *NULLAUTHNAME;
 
 #define MAXNUMERIC 0x3FFFFFFF
 
@@ -194,16 +206,21 @@ int findnickext(const char *name);
 void releasenickext(int index);
 char *visiblehostmask(nick *np, char *buf);
 char *visibleuserhost(nick *np, char *buf);
+int canseeuser(nick *np, nick *cloaked);
+void addcloaktarget(nick *cloaked, nick *target);
+void removecloaktarget(nick *target);
+void clearcloaktargets(nick *cloaked);
 
 /* nickhandlers.c functions */
 int handlenickmsg(void *source, int cargc, char **cargv);
 int handlequitmsg(void *source, int cargc, char **cargv);
 int handlekillmsg(void *source, int cargc, char **cargv);
 int handleusermodemsg(void *source, int cargc, char **cargv);
-int handlewhoismsg(void *source, int cargc, char **cargv);
 int handleaccountmsg(void *source, int cargc, char **cargv);
-int handlestatsmsg(void *source, int cargc, char **cargv);
 int handleprivmsg(void *source, int cargc, char **cargv);
+int handleawaymsg(void *source, int cargc, char **cargv);
+int handleaddcloak(void *source, int cargc, char **cargv);
+int handleclearcloak(void *source, int cargc, char **cargv);
 
 /* These functions have been replaced by macros 
 nick **gethandlebynumeric(long numeric);