diff options
| -rw-r--r-- | src/ngircd/defines.h | 2 | ||||
| -rw-r--r-- | src/ngircd/irc-mode.c | 10 |
2 files changed, 11 insertions, 1 deletions
diff --git a/src/ngircd/defines.h b/src/ngircd/defines.h index 579d5521..01b60373 100644 --- a/src/ngircd/defines.h +++ b/src/ngircd/defines.h @@ -80,7 +80,7 @@ #define RECONNECT_DELAY 3 /* Time to delay re-connect attempts in seconds. */ -#define USERMODES "aciorsw" /* Supported user modes. */ +#define USERMODES "aciorswx" /* Supported user modes. */ #define CHANMODES "biIklmnoPstvz" /* Supported channel modes. */ #define CONNECTED true /* Internal status codes. */ diff --git a/src/ngircd/irc-mode.c b/src/ngircd/irc-mode.c index 45defeb2..df464a7d 100644 --- a/src/ngircd/irc-mode.c +++ b/src/ngircd/irc-mode.c @@ -185,6 +185,7 @@ Client_Mode( CLIENT *Client, REQUEST *Req, CLIENT *Origin, CLIENT *Target ) ERR_NOPRIVILEGES_MSG, Client_ID(Origin)); break; + case 'o': /* IRC operator (only unsettable!) */ if(( ! set ) || ( Client_Type( Client ) == CLIENT_SERVER )) { @@ -199,6 +200,15 @@ Client_Mode( CLIENT *Client, REQUEST *Req, CLIENT *Origin, CLIENT *Target ) else ok = IRC_WriteStrClient( Origin, ERR_RESTRICTED_MSG, Client_ID( Origin )); break; + case 'x': /* Cloak hostname */ + if (Client_HasMode(Client, 'r')) + IRC_WriteStrClient(Origin, + ERR_RESTRICTED_MSG, + Client_ID(Origin)); + else + x[0] = 'x'; + break; + default: Log( LOG_DEBUG, "Unknown mode \"%c%c\" from \"%s\"!?", set ? '+' : '-', *mode_ptr, Client_ID( Origin )); if( Client_Type( Client ) != CLIENT_SERVER ) ok = IRC_WriteStrClient( Origin, ERR_UMODEUNKNOWNFLAG2_MSG, Client_ID( Origin ), set ? '+' : '-', *mode_ptr ); |