]> jfr.im git - solanum.git/blobdiff - include/client.h
Implement the solanum.chat/identify-msg vendor cap
[solanum.git] / include / client.h
index 0f132160a76c6011c9a2cecaf2f0f2da82f15b58..cb5ec43d26210b8b8cf48e397748440538b4a06e 100644 (file)
@@ -1,5 +1,5 @@
 /*
- *  charybdis: A useful ircd.
+ *  Solanum: a slightly advanced ircd
  *  client.h: The ircd client header.
  *
  *  Copyright (C) 1990 Jarkko Oikarinen and University of Oulu, Co Center
@@ -371,7 +371,7 @@ struct ListClient
                                 (x)->handler = SERVER_HANDLER; }
 
 #define SetClient(x)            {(x)->status = STAT_CLIENT; \
-                                (x)->handler = IsOper((x)) ? \
+                                (x)->handler = IsOperGeneral((x)) ? \
                                        OPER_HANDLER : CLIENT_HANDLER; }
 #define SetRemoteClient(x)     {(x)->status = STAT_CLIENT; \
                                 (x)->handler = RCLIENT_HANDLER; }
@@ -429,6 +429,7 @@ struct ListClient
 #define FLAGS_EXEMPTSPAMBOT    0x02000000
 #define FLAGS_EXEMPTSHIDE      0x04000000
 #define FLAGS_EXEMPTJUPE       0x08000000
+#define FLAGS_IDENTIFIED       0x10000000      /* owns their current nick */
 
 
 /* flags for local clients, this needs stuff moved from above to here at some point */
@@ -444,7 +445,6 @@ struct ListClient
 #define UMODE_WALLOP       0x0002      /* send wallops to them */
 #define UMODE_OPERWALL     0x0004      /* Operwalls */
 #define UMODE_INVISIBLE    0x0008      /* makes user invisible */
-#define UMODE_CALLERID     0x0010      /* block unless caller id's */
 #define UMODE_LOCOPS       0x0020      /* show locops */
 #define UMODE_SERVICE      0x0040
 #define UMODE_DEAF        0x0080
@@ -495,6 +495,9 @@ struct ListClient
 #define IsTGExcessive(x)       ((x)->flags & FLAGS_TGEXCESSIVE)
 #define SetTGExcessive(x)      ((x)->flags |= FLAGS_TGEXCESSIVE)
 #define ClearTGExcessive(x)    ((x)->flags &= ~FLAGS_TGEXCESSIVE)
+#define IsIdentified(x)                ((x)->flags & FLAGS_IDENTIFIED)
+#define SetIdentified(x)       ((x)->flags |= FLAGS_IDENTIFIED)
+#define ClearIdentified(x)     ((x)->flags &= ~FLAGS_IDENTIFIED)
 
 /* local flags */
 
@@ -517,12 +520,8 @@ struct ListClient
 /* oper flags */
 #define MyOper(x)               (MyConnect(x) && IsOper(x))
 
-#define SetOper(x)              {(x)->umodes |= UMODE_OPER; \
-                                if (MyClient((x))) (x)->handler = OPER_HANDLER;}
-
-#define ClearOper(x)            {(x)->umodes &= ~(UMODE_OPER|UMODE_ADMIN); \
-                                if (MyClient((x)) && !IsOper((x)) && !IsServer((x))) \
-                                 (x)->handler = CLIENT_HANDLER; }
+#define SetOper(x)              ((x)->umodes |= UMODE_OPER)
+#define ClearOper(x)            ((x)->umodes &= ~(UMODE_OPER|UMODE_ADMIN))
 
 /* umode flags */
 #define IsInvisible(x)          ((x)->umodes & UMODE_INVISIBLE)
@@ -535,7 +534,6 @@ struct ListClient
 #define SendLocops(x)           ((x)->umodes & UMODE_LOCOPS)
 #define SendServNotice(x)       ((x)->umodes & UMODE_SERVNOTICE)
 #define SendOperwall(x)         ((x)->umodes & UMODE_OPERWALL)
-#define IsSetCallerId(x)       ((x)->umodes & UMODE_CALLERID)
 #define IsService(x)           ((x)->umodes & UMODE_SERVICE)
 #define IsDeaf(x)              ((x)->umodes & UMODE_DEAF)
 #define IsNoForward(x)         ((x)->umodes & UMODE_NOFORWARD)