commit - 69803d6ff1ac8deb95e023bda6ad2aef435dc69a
commit + 8aac36680265124067994391e7efef4e241a0ffd
blob - 8f62279df460b838d9315a5a58105c15148ac6e8
blob + 8db59e892921efe47ba362e344fb3b16dfe54faf
--- src/ngircd/defines.h
+++ src/ngircd/defines.h
#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
blob - 66b3eeb24ed9677d4950709ac5fc06afe6c42b50
blob + 233e1731fa0e8b8124f0581e2dcb84429c5dbbc6
--- src/ngircd/irc-channel.c
+++ src/ngircd/irc-channel.c
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 */
blob - 3cceaeb898af3d90dd8df5b35daca4c438a00893
blob + ba44a3ba286f1e592058b2fced15e262183c747d
--- src/ngircd/irc-mode.c
+++ src/ngircd/irc-mode.c
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 */
blob - 12791d23d3a4ed319e34910d27bc3a25cf333524
blob + 78ac06893c6347e4c0fe9871d314c9eb5e176ff8
--- src/ngircd/messages.h
+++ src/ngircd/messages.h
#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)"