]> jfr.im git - solanum.git/commitdiff
add umode +Z for SSL, can't be set or unset
authorWilliam Pitcock <redacted>
Sun, 6 Apr 2008 16:55:12 +0000 (11:55 -0500)
committerWilliam Pitcock <redacted>
Sun, 6 Apr 2008 16:55:12 +0000 (11:55 -0500)
include/client.h
src/s_user.c

index edf585f5a4f78f4f537f25ec3bf6d95fe10b1cd2..ead280e99dd3f0999d4db812c2abe4afd9b4f052 100644 (file)
@@ -288,8 +288,8 @@ struct LocalUser
        char *mangledhost; /* non-NULL if host mangling module loaded and
                              applicable to this client */
 
-       struct _ssl_ctl *ssl_ctl;               /* which ssl daemon we're associate with */\r
-       rb_uint32_t localflags;\r
+       struct _ssl_ctl *ssl_ctl;               /* which ssl daemon we're associate with */
+       rb_uint32_t localflags;
        struct ZipStats *zipstats;              /* zipstats */
        rb_uint16_t cork_count;                 /* used for corking/uncorking connections */
        struct ev_entry *event;                 /* used for associated events */
@@ -428,9 +428,9 @@ struct exit_client_hook
 #define FLAGS_DYNSPOOF     0x1000000   /* dynamic spoof, only opers see ip */
 #define FLAGS_EXUNKNOWN           0x2000000    /* too many unknowns exit.. */
 
-/* flags for local clients, this needs stuff moved from above to here at some point */\r
-#define LFLAGS_SSL             0x00000001\r
-#define LFLAGS_FLUSH           0x00000002\r
+/* flags for local clients, this needs stuff moved from above to here at some point */
+#define LFLAGS_SSL             0x00000001
+#define LFLAGS_FLUSH           0x00000002
 #define LFLAGS_CORK            0x00000004
 
 /* umodes, settable flags */
@@ -449,6 +449,7 @@ struct exit_client_hook
 /* user information flags, only settable by remote mode or local oper */
 #define UMODE_OPER         0x100000    /* Operator */
 #define UMODE_ADMIN        0x200000    /* Admin on server */
+#define UMODE_SSLCLIENT    0x400000    /* using SSL */
 
 #define UMODE_ALL         UMODE_SERVNOTICE
 
@@ -506,14 +507,14 @@ struct exit_client_hook
 #define IsExUnknown(x)         ((x)->flags & FLAGS_EXUNKNOWN)
 #define SetExUnknown(x)                ((x)->flags |= FLAGS_EXUNKNOWN)
 
-/* local flags */\r
-\r
-#define IsSSL(x)               ((x)->localClient->localflags & LFLAGS_SSL)\r
-#define SetSSL(x)              ((x)->localClient->localflags |= LFLAGS_SSL)\r
-#define ClearSSL(x)            ((x)->localClient->localflags &= ~LFLAGS_SSL)\r
-\r
-#define IsFlush(x)             ((x)->localClient->localflags & LFLAGS_FLUSH)\r
-#define SetFlush(x)            ((x)->localClient->localflags |= LFLAGS_FLUSH)\r
+/* local flags */
+
+#define IsSSL(x)               ((x)->localClient->localflags & LFLAGS_SSL)
+#define SetSSL(x)              ((x)->localClient->localflags |= LFLAGS_SSL)
+#define ClearSSL(x)            ((x)->localClient->localflags &= ~LFLAGS_SSL)
+
+#define IsFlush(x)             ((x)->localClient->localflags & LFLAGS_FLUSH)
+#define SetFlush(x)            ((x)->localClient->localflags |= LFLAGS_FLUSH)
 #define ClearFlush(x)          ((x)->localClient->localflags &= ~LFLAGS_FLUSH)
 
 /* oper flags */
@@ -569,9 +570,9 @@ struct exit_client_hook
 #define IsFloodDone(x)          ((x)->flags & FLAGS_FLOODDONE)
 #define SetFloodDone(x)         ((x)->flags |= FLAGS_FLOODDONE)
 
-/* These also operate on the uplink from which it came */\r
-#define IsCork(x)              (MyConnect(x) ? (x)->localClient->cork_count : (x)->from->localClient->cork_count)\r
-#define SetCork(x)             (MyConnect(x) ? (x)->localClient->cork_count++ : (x)->from->localClient->cork_count++ )\r
+/* These also operate on the uplink from which it came */
+#define IsCork(x)              (MyConnect(x) ? (x)->localClient->cork_count : (x)->from->localClient->cork_count)
+#define SetCork(x)             (MyConnect(x) ? (x)->localClient->cork_count++ : (x)->from->localClient->cork_count++ )
 #define ClearCork(x)           (MyConnect(x) ? (x)->localClient->cork_count-- : (x)->from->localClient->cork_count--)
 
 /*
@@ -626,7 +627,7 @@ extern void close_connection(struct Client *);
 extern void init_uid(void);
 extern char *generate_uid(void);
 
-void allocate_away(struct Client *);\r
+void allocate_away(struct Client *);
 void free_away(struct Client *);
 
 #endif /* INCLUDED_client_h */
index 774fdb3e50964392089ee0a065d3bfc1f8b4530a..30450d87c7d479e96e076c97a1009600e23c2a75 100644 (file)
@@ -94,7 +94,7 @@ int user_modes[256] = {
        0,                      /* W */
        0,                      /* X */
        0,                      /* Y */
-       0,                      /* Z */
+       UMODE_SSLCLIENT,        /* Z */
        /* 0x5B */ 0, 0, 0, 0, 0, 0, /* 0x60 */
        UMODE_ADMIN,            /* a */
        0,                      /* b */
@@ -522,6 +522,9 @@ register_local_user(struct Client *client_p, struct Client *source_p, const char
                add_to_id_hash(source_p->id, source_p);
        }
 
+       if (IsSSL(source_p))
+               source_p->umodes |= UMODE_SSLCLIENT;
+
        if (source_p->umodes & UMODE_INVISIBLE)
                Count.invisi++;
 
@@ -1007,6 +1010,7 @@ user_mode(struct Client *client_p, struct Client *source_p, int parc, const char
 
                /* can only be set on burst */
                case 'S':
+               case 'Z':
                case ' ':
                case '\n':
                case '\r':