- 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.
#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
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 */
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 */
#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)"