summaryrefslogtreecommitdiff
path: root/src/conf_parser.y
diff options
context:
space:
mode:
authorRussell King <rmk+kernel@arm.linux.org.uk>2016-06-05 14:16:36 +0100
committerRussell King <rmk+kernel@armlinux.org.uk>2016-06-05 17:47:56 +0100
commit634111fc07826dcf7f1f408c5186dc9f842d2a5c (patch)
treef5afb868285fb4438f4f00574f63f1ef5c0392f0 /src/conf_parser.y
parent0a892daa10889c2c29855276c0ac34082dea6dfa (diff)
Add support for configurable initial channel modes
Diffstat (limited to 'src/conf_parser.y')
-rw-r--r--src/conf_parser.y37
1 files changed, 36 insertions, 1 deletions
diff --git a/src/conf_parser.y b/src/conf_parser.y
index 3534931..3a1948b 100644
--- a/src/conf_parser.y
+++ b/src/conf_parser.y
@@ -51,6 +51,7 @@
#include "numeric.h"
#include "s_user.h"
#include "motd.h"
+#include "channel_mode.h"
#ifdef HAVE_LIBCRYPTO
#include <openssl/rsa.h>
@@ -162,6 +163,7 @@ reset_block_state(void)
%token CONNECTFREQ
%token CYCLE_ON_HOST_CHANGE
%token DEFAULT_FLOODCOUNT
+%token DEFAULT_MODES
%token DEFAULT_SPLIT_SERVER_COUNT
%token DEFAULT_SPLIT_USER_COUNT
%token DENY
@@ -308,17 +310,22 @@ reset_block_state(void)
%token T_FULL
%token T_GLOBOPS
%token T_INVISIBLE
+%token T_INVITEONLY
%token T_IPV4
%token T_IPV6
%token T_LOCOPS
%token T_LOG
%token T_MAX_CLIENTS
+%token T_MODERATED
%token T_NCHANGE
%token T_NONONREG
+%token T_NOPRIVMSGS
%token T_OPERWALL
+%token T_PRIVATE
%token T_RECVQ
%token T_REJ
%token T_RESTART
+%token T_SECRET
%token T_SERVER
%token T_SERVICE
%token T_SERVICES_NAME
@@ -335,6 +342,7 @@ reset_block_state(void)
%token T_SSL_SERVER_METHOD
%token T_SSLV3
%token T_TLSV1
+%token T_TOPICLIMIT
%token T_UMODES
%token T_UNAUTH
%token T_UNDLINE
@@ -2878,7 +2886,8 @@ channel_item: channel_max_bans |
channel_no_create_on_split |
channel_no_join_on_split |
channel_jflood_count | channel_jflood_time |
- channel_disable_fake_channels | error;
+ channel_disable_fake_channels | channel_default_modes |
+ error;
channel_disable_fake_channels: DISABLE_FAKE_CHANNELS '=' TBOOL ';'
{
@@ -2940,6 +2949,32 @@ channel_jflood_time: JOIN_FLOOD_TIME '=' timespec ';'
GlobalSetOptions.joinfloodtime = $3;
};
+channel_default_modes: DEFAULT_MODES
+{
+ ConfigChannel.default_modes = 0;
+} '=' channel_default_mode_items ';' ;
+
+channel_default_mode_items: channel_default_mode_items ',' channel_default_mode_item | channel_default_mode_item;
+channel_default_mode_item: T_PRIVATE
+{
+ ConfigChannel.default_modes |= MODE_PRIVATE;
+} | T_SECRET
+{
+ ConfigChannel.default_modes |= MODE_SECRET;
+} | T_MODERATED
+{
+ ConfigChannel.default_modes |= MODE_MODERATED;
+} | T_TOPICLIMIT
+{
+ ConfigChannel.default_modes |= MODE_TOPICLIMIT;
+} | T_INVITEONLY
+{
+ ConfigChannel.default_modes |= MODE_INVITEONLY;
+} | T_NOPRIVMSGS
+{
+ ConfigChannel.default_modes |= MODE_NOPRIVMSGS;
+};
+
/***************************************************************************
* section serverhide
***************************************************************************/