]> jfr.im git - solanum.git/blobdiff - include/client.h
Make 5614c9e6f0b (opmod as fake statusmsg) optional
[solanum.git] / include / client.h
index e80a7768e0f04816257eecb9cacb8aa34b7449ed..d3ff6a570d4f92852aa5a16673acfccd9a42ca28 100644 (file)
@@ -79,6 +79,9 @@ struct User
        char *away;             /* pointer to away message */
        int refcnt;             /* Number of times this block is referenced */
 
+       char *opername; /* name of operator{} block being used or tried (challenge) */
+       struct PrivilegeSet *privset;
+
        char suser[NICKLEN+1];
 };
 
@@ -126,7 +129,7 @@ struct Client
        unsigned long serial;   /* used to enforce 1 send per nick */
 
        /* client->name is the unique name for a client nick or host */
-       char name[HOSTLEN + 1];
+       char name[NAMELEN + 1];
 
        /*
         * client->username is the username from ident or the USER message,
@@ -225,7 +228,6 @@ struct LocalUser
         */
        char *passwd;
        char *auth_user;
-       char *opername; /* name of operator{} block being used or tried (challenge) */
        char *challenge;
        char *fullcaps;
        char *cipher_string;
@@ -282,8 +284,6 @@ struct LocalUser
        uint16_t cork_count;                    /* used for corking/uncorking connections */
        struct ev_entry *event;                 /* used for associated events */
 
-       struct PrivilegeSet *privset;           /* privset... */
-
        char sasl_agent[IDLEN];
        unsigned char sasl_out;
        unsigned char sasl_complete;
@@ -316,6 +316,8 @@ struct PreClient
        struct AuthClient auth;
 
        struct rb_sockaddr_storage lip; /* address of our side of the connection */
+
+       char id[IDLEN]; /* UID/SID, unique on the network (unverified) */
 };
 
 struct ListClient
@@ -437,6 +439,7 @@ struct ListClient
 #define LFLAGS_FLUSH           0x00000002
 #define LFLAGS_CORK            0x00000004
 #define LFLAGS_SCTP            0x00000008
+#define LFLAGS_INSECURE        0x00000010      /* for marking SSL clients as insecure before registration */
 
 /* umodes, settable flags */
 /* lots of this moved to snomask -- jilles */
@@ -449,7 +452,6 @@ struct ListClient
 #define UMODE_SERVICE      0x0040
 #define UMODE_DEAF        0x0080
 #define UMODE_NOFORWARD    0x0100      /* don't forward */
-#define UMODE_REGONLYMSG   0x0200      /* only allow logged in users to msg */
 
 /* user information flags, only settable by remote mode or local oper */
 #define UMODE_OPER         0x1000      /* Operator */
@@ -511,6 +513,10 @@ struct ListClient
 #define SetSCTP(x)             ((x)->localClient->localflags |= LFLAGS_SCTP)
 #define ClearSCTP(x)           ((x)->localClient->localflags &= ~LFLAGS_SCTP)
 
+#define IsInsecure(x)          ((x)->localClient->localflags & LFLAGS_INSECURE)
+#define SetInsecure(x)         ((x)->localClient->localflags |= LFLAGS_INSECURE)
+#define ClearInsecure(x)       ((x)->localClient->localflags &= ~LFLAGS_INSECURE)
+
 /* oper flags */
 #define MyOper(x)               (MyConnect(x) && IsOper(x))
 
@@ -536,7 +542,6 @@ struct ListClient
 #define IsService(x)           ((x)->umodes & UMODE_SERVICE)
 #define IsDeaf(x)              ((x)->umodes & UMODE_DEAF)
 #define IsNoForward(x)         ((x)->umodes & UMODE_NOFORWARD)
-#define IsSetRegOnlyMsg(x)     ((x)->umodes & UMODE_REGONLYMSG)
 
 #define SetGotId(x)             ((x)->flags |= FLAGS_GOTID)
 #define IsGotId(x)              (((x)->flags & FLAGS_GOTID) != 0)
@@ -576,9 +581,15 @@ struct ListClient
 #define SHOW_IP 1
 #define MASK_IP 2
 
+enum
+{
+       D_LINED,
+       K_LINED
+};
+
 extern void check_banned_lines(void);
-extern void check_klines_event(void *unused);
 extern void check_klines(void);
+extern void check_one_kline(struct ConfItem *kline);
 extern void check_dlines(void);
 extern void check_xlines(void);
 extern void resv_nick_fnc(const char *mask, const char *reason, int temp_time);
@@ -590,6 +601,7 @@ extern void init_client(void);
 extern struct Client *make_client(struct Client *from);
 extern void free_pre_client(struct Client *client);
 
+extern void notify_banned_client(struct Client *, struct ConfItem *, int ban);
 extern int exit_client(struct Client *, struct Client *, struct Client *, const char *);
 
 extern void error_exit_client(struct Client *, int);