Implemented user mode "R" and channel mode "R"
- User mode "R": indicates that the nick name of this user is "registered". This mode isn't handled by ngIRCd itself, but must be set and unset by IRC services like Anope. - Channel mode "R": only registered users (having the user mode "R" set) are allowed to join this channel.
This commit is contained in:
parent
69803d6ff1
commit
8aac366802
|
@ -82,8 +82,8 @@
|
|||
#define RECONNECT_DELAY 3 /* Time to delay re-connect attempts
|
||||
in seconds. */
|
||||
|
||||
#define USERMODES "aciorswx" /* Supported user modes. */
|
||||
#define CHANMODES "biIklmnoOPstvz" /* Supported channel modes. */
|
||||
#define USERMODES "aciorRswx" /* Supported user modes. */
|
||||
#define CHANMODES "biIklmnoOPRstvz" /* Supported channel modes. */
|
||||
|
||||
#define CONNECTED true /* Internal status codes. */
|
||||
#define DISCONNECTED false
|
||||
|
|
|
@ -137,6 +137,13 @@ join_allowed(CLIENT *Client, CHANNEL *chan, const char *channame,
|
|||
return false;
|
||||
}
|
||||
|
||||
if (strchr(channel_modes, 'R') && !strchr(Client_Modes(Client), 'R')) {
|
||||
/* Only registered users are allowed! */
|
||||
IRC_WriteStrClient(Client, ERR_REGONLYCHANNEL_MSG,
|
||||
Client_ID(Client), channame);
|
||||
return false;
|
||||
}
|
||||
|
||||
return true;
|
||||
} /* join_allowed */
|
||||
|
||||
|
|
|
@ -479,6 +479,7 @@ Channel_Mode(CLIENT *Client, REQUEST *Req, CLIENT *Origin, CHANNEL *Channel)
|
|||
case 'i': /* Invite only */
|
||||
case 'm': /* Moderated */
|
||||
case 'n': /* Only members can write */
|
||||
case 'R': /* Registered users only */
|
||||
case 's': /* Secret channel */
|
||||
case 't': /* Topic locked */
|
||||
case 'z': /* Secure connections only */
|
||||
|
|
|
@ -120,6 +120,7 @@
|
|||
#define ERR_CHANNELISFULL_MSG "471 %s %s :Cannot join channel (+l)"
|
||||
#define ERR_SECURECHANNEL_MSG "471 %s %s :Cannot join channel (+z)"
|
||||
#define ERR_OPONLYCHANNEL_MSG "471 %s %s :Cannot join channel (+O)"
|
||||
#define ERR_REGONLYCHANNEL_MSG "471 %s %s :Cannot join channel (+R)"
|
||||
#define ERR_UNKNOWNMODE_MSG "472 %s: %c :is unknown mode char for %s"
|
||||
#define ERR_INVITEONLYCHAN_MSG "473 %s %s :Cannot join channel (+i)"
|
||||
#define ERR_BANNEDFROMCHAN_MSG "474 %s %s :Cannot join channel (+b)"
|
||||
|
|
Loading…
Reference in New Issue