add umode +Z for SSL, can't be set or unset

This commit is contained in:
William Pitcock 2008-04-06 11:55:12 -05:00
parent 340a0ddd26
commit 3318e109f9
2 changed files with 23 additions and 18 deletions

View file

@ -288,8 +288,8 @@ struct LocalUser
char *mangledhost; /* non-NULL if host mangling module loaded and char *mangledhost; /* non-NULL if host mangling module loaded and
applicable to this client */ applicable to this client */
struct _ssl_ctl *ssl_ctl; /* which ssl daemon we're associate with */ struct _ssl_ctl *ssl_ctl; /* which ssl daemon we're associate with */
rb_uint32_t localflags; rb_uint32_t localflags;
struct ZipStats *zipstats; /* zipstats */ struct ZipStats *zipstats; /* zipstats */
rb_uint16_t cork_count; /* used for corking/uncorking connections */ rb_uint16_t cork_count; /* used for corking/uncorking connections */
struct ev_entry *event; /* used for associated events */ 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_DYNSPOOF 0x1000000 /* dynamic spoof, only opers see ip */
#define FLAGS_EXUNKNOWN 0x2000000 /* too many unknowns exit.. */ #define FLAGS_EXUNKNOWN 0x2000000 /* too many unknowns exit.. */
/* flags for local clients, this needs stuff moved from above to here at some point */ /* flags for local clients, this needs stuff moved from above to here at some point */
#define LFLAGS_SSL 0x00000001 #define LFLAGS_SSL 0x00000001
#define LFLAGS_FLUSH 0x00000002 #define LFLAGS_FLUSH 0x00000002
#define LFLAGS_CORK 0x00000004 #define LFLAGS_CORK 0x00000004
/* umodes, settable flags */ /* umodes, settable flags */
@ -449,6 +449,7 @@ struct exit_client_hook
/* user information flags, only settable by remote mode or local oper */ /* user information flags, only settable by remote mode or local oper */
#define UMODE_OPER 0x100000 /* Operator */ #define UMODE_OPER 0x100000 /* Operator */
#define UMODE_ADMIN 0x200000 /* Admin on server */ #define UMODE_ADMIN 0x200000 /* Admin on server */
#define UMODE_SSLCLIENT 0x400000 /* using SSL */
#define UMODE_ALL UMODE_SERVNOTICE #define UMODE_ALL UMODE_SERVNOTICE
@ -506,14 +507,14 @@ struct exit_client_hook
#define IsExUnknown(x) ((x)->flags & FLAGS_EXUNKNOWN) #define IsExUnknown(x) ((x)->flags & FLAGS_EXUNKNOWN)
#define SetExUnknown(x) ((x)->flags |= FLAGS_EXUNKNOWN) #define SetExUnknown(x) ((x)->flags |= FLAGS_EXUNKNOWN)
/* local flags */ /* local flags */
#define IsSSL(x) ((x)->localClient->localflags & LFLAGS_SSL) #define IsSSL(x) ((x)->localClient->localflags & LFLAGS_SSL)
#define SetSSL(x) ((x)->localClient->localflags |= LFLAGS_SSL) #define SetSSL(x) ((x)->localClient->localflags |= LFLAGS_SSL)
#define ClearSSL(x) ((x)->localClient->localflags &= ~LFLAGS_SSL) #define ClearSSL(x) ((x)->localClient->localflags &= ~LFLAGS_SSL)
#define IsFlush(x) ((x)->localClient->localflags & LFLAGS_FLUSH) #define IsFlush(x) ((x)->localClient->localflags & LFLAGS_FLUSH)
#define SetFlush(x) ((x)->localClient->localflags |= LFLAGS_FLUSH) #define SetFlush(x) ((x)->localClient->localflags |= LFLAGS_FLUSH)
#define ClearFlush(x) ((x)->localClient->localflags &= ~LFLAGS_FLUSH) #define ClearFlush(x) ((x)->localClient->localflags &= ~LFLAGS_FLUSH)
/* oper flags */ /* oper flags */
@ -569,9 +570,9 @@ struct exit_client_hook
#define IsFloodDone(x) ((x)->flags & FLAGS_FLOODDONE) #define IsFloodDone(x) ((x)->flags & FLAGS_FLOODDONE)
#define SetFloodDone(x) ((x)->flags |= FLAGS_FLOODDONE) #define SetFloodDone(x) ((x)->flags |= FLAGS_FLOODDONE)
/* These also operate on the uplink from which it came */ /* 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 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 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--) #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 void init_uid(void);
extern char *generate_uid(void); extern char *generate_uid(void);
void allocate_away(struct Client *); void allocate_away(struct Client *);
void free_away(struct Client *); void free_away(struct Client *);
#endif /* INCLUDED_client_h */ #endif /* INCLUDED_client_h */

View file

@ -94,7 +94,7 @@ int user_modes[256] = {
0, /* W */ 0, /* W */
0, /* X */ 0, /* X */
0, /* Y */ 0, /* Y */
0, /* Z */ UMODE_SSLCLIENT, /* Z */
/* 0x5B */ 0, 0, 0, 0, 0, 0, /* 0x60 */ /* 0x5B */ 0, 0, 0, 0, 0, 0, /* 0x60 */
UMODE_ADMIN, /* a */ UMODE_ADMIN, /* a */
0, /* b */ 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); add_to_id_hash(source_p->id, source_p);
} }
if (IsSSL(source_p))
source_p->umodes |= UMODE_SSLCLIENT;
if (source_p->umodes & UMODE_INVISIBLE) if (source_p->umodes & UMODE_INVISIBLE)
Count.invisi++; 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 */ /* can only be set on burst */
case 'S': case 'S':
case 'Z':
case ' ': case ' ':
case '\n': case '\n':
case '\r': case '\r':