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 42fa784692
commit 16cb94cc53
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
applicable to this client */
struct _ssl_ctl *ssl_ctl; /* which ssl daemon we're associate with */
rb_uint32_t localflags;
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 */
#define LFLAGS_SSL 0x00000001
#define LFLAGS_FLUSH 0x00000002
/* 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 */
#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)
/* 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 */
#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++ )
/* 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 *);
void allocate_away(struct Client *);
void free_away(struct Client *);
#endif /* INCLUDED_client_h */

View 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':