ViewVC Help
View File | Revision Log | Show Annotations | View Changeset | Root Listing
root/svn/ircd-hybrid/trunk/src/conf_parser.y
(Generate patch)

Comparing ircd-hybrid-8/src/conf_parser.y (file contents):
Revision 1490 by michael, Sat Jul 28 19:33:23 2012 UTC vs.
Revision 1549 by michael, Mon Oct 1 18:11:11 2012 UTC

# Line 113 | Line 113 | free_collect_item(struct CollectItem *it
113   }
114  
115   %token  ACCEPT_PASSWORD
116 %token  ACTION
116   %token  ADMIN
117   %token  AFTYPE
119 %token  T_ALLOW
118   %token  ANTI_NICK_FLOOD
119   %token  ANTI_SPAM_EXIT_MESSAGE_TIME
120   %token  AUTOCONN
121 < %token  T_BLOCK
124 < %token  BURST_AWAY
125 < %token  BYTES KBYTES MBYTES GBYTES TBYTES
121 > %token  BYTES KBYTES MBYTES
122   %token  CALLER_ID_WAIT
123   %token  CAN_FLOOD
124   %token  CHANNEL
# Line 141 | Line 137 | free_collect_item(struct CollectItem *it
137   %token  DISABLE_FAKE_CHANNELS
138   %token  DISABLE_REMOTE_COMMANDS
139   %token  DOTS_IN_IDENT
144 %token  DURATION
140   %token  EGDPOOL_PATH
141   %token  EMAIL
147 %token  ENABLE
142   %token  ENCRYPTED
143   %token  EXCEED_LIMIT
144   %token  EXEMPT
# Line 157 | Line 151 | free_collect_item(struct CollectItem *it
151   %token  GLINE_DURATION
152   %token  GLINE_ENABLE
153   %token  GLINE_EXEMPT
160 %token  GLINE_TIME
154   %token  GLINE_REQUEST_DURATION
155   %token  GLINE_MIN_CIDR
156   %token  GLINE_MIN_CIDR6
# Line 180 | Line 173 | free_collect_item(struct CollectItem *it
173   %token  KILL_CHASE_TIME_LIMIT
174   %token  KLINE
175   %token  KLINE_EXEMPT
183 %token  KLINE_REASON
184 %token  KLINE_WITH_REASON
176   %token  KNOCK_DELAY
177   %token  KNOCK_DELAY_CHANNEL
178   %token  LEAF_MASK
# Line 216 | Line 207 | free_collect_item(struct CollectItem *it
207   %token  NO_OPER_FLOOD
208   %token  NO_TILDE
209   %token  NUMBER
219 %token  NUMBER_PER_IDENT
210   %token  NUMBER_PER_CIDR
211   %token  NUMBER_PER_IP
222 %token  NUMBER_PER_IP_GLOBAL
212   %token  OPERATOR
213   %token  OPERS_BYPASS_CALLERID
214   %token  OPER_ONLY_UMODES
# Line 243 | Line 232 | free_collect_item(struct CollectItem *it
232   %token  REDIRSERV
233   %token  REGEX_T
234   %token  REHASH
246 %token  TREJECT_HOLD_TIME
235   %token  REMOTE
236   %token  REMOTEBAN
237   %token  RESTRICT_CHANNELS
250 %token  RESTRICTED
238   %token  RSA_PRIVATE_KEY_FILE
239   %token  RSA_PUBLIC_KEY_FILE
240   %token  SSL_CERTIFICATE_FILE
# Line 269 | Line 256 | free_collect_item(struct CollectItem *it
256   %token  T_CLUSTER
257   %token  TYPE
258   %token  SHORT_MOTD
272 %token  SILENT
259   %token  SPOOF
260   %token  SPOOF_NOTICE
261   %token  STATS_E_DISABLED
# Line 279 | Line 265 | free_collect_item(struct CollectItem *it
265   %token  STATS_P_OPER_ONLY
266   %token  TBOOL
267   %token  TMASKED
282 %token  T_REJECT
268   %token  TS_MAX_DELTA
269   %token  TS_WARN_DELTA
270   %token  TWODOTS
# Line 290 | Line 275 | free_collect_item(struct CollectItem *it
275   %token  T_CCONN
276   %token  T_CCONN_FULL
277   %token  T_SSL_CIPHER_LIST
293 %token  T_CLIENT_FLOOD
278   %token  T_DEAF
279   %token  T_DEBUG
280   %token  T_DLINE
297 %token  T_DRONE
281   %token  T_EXTERNAL
282   %token  T_FULL
283   %token  T_INVISIBLE
# Line 304 | Line 287 | free_collect_item(struct CollectItem *it
287   %token  T_MAX_CLIENTS
288   %token  T_NCHANGE
289   %token  T_OPERWALL
290 + %token  T_RECVQ
291   %token  T_REJ
292   %token  T_SERVER
293   %token  T_SERVNOTICE
# Line 323 | Line 307 | free_collect_item(struct CollectItem *it
307   %token  T_SERVICE
308   %token  T_SERVICES_NAME
309   %token  THROTTLE_TIME
326 %token  TOPICBURST
310   %token  TRUE_NO_OPER_FLOOD
328 %token  TKLINE
329 %token  TXLINE
330 %token  TRESV
311   %token  UNKLINE
312   %token  USER
313   %token  USE_EGD
334 %token  USE_EXCEPT
335 %token  USE_INVEX
336 %token  USE_KNOCK
314   %token  USE_LOGGING
338 %token  USE_WHOIS_ACTUALLY
315   %token  VHOST
316   %token  VHOST6
317   %token  XLINE
342 %token  WARN
318   %token  WARN_NO_NLINE
319   %token  T_SIZE
320   %token  T_FILE
# Line 956 | Line 931 | oper_entry: OPERATOR
931                    yy_aconf->rsa_public_key_file);
932  
933          file = BIO_new_file(yy_aconf->rsa_public_key_file, "r");
934 <        new_aconf->rsa_public_key = (RSA *)PEM_read_bio_RSA_PUBKEY(file,
934 >        new_aconf->rsa_public_key = PEM_read_bio_RSA_PUBKEY(file,
935                                                             NULL, 0, NULL);
936          BIO_set_close(file, BIO_CLOSE);
937          BIO_free(file);
# Line 1090 | Line 1065 | oper_rsa_public_key_file: RSA_PUBLIC_KEY
1065        break;
1066      }
1067  
1068 <    yy_aconf->rsa_public_key = (RSA *)PEM_read_bio_RSA_PUBKEY(file, NULL, 0, NULL);
1068 >    yy_aconf->rsa_public_key = PEM_read_bio_RSA_PUBKEY(file, NULL, 0, NULL);
1069  
1070      if (yy_aconf->rsa_public_key == NULL)
1071      {
# Line 1353 | Line 1328 | class_item:     class_name |
1328                  class_max_global |
1329                  class_max_local |
1330                  class_max_ident |
1331 <                class_sendq |
1331 >                class_sendq | class_recvq |
1332                  error ';' ;
1333  
1334   class_name: NAME '=' QSTRING ';'
# Line 1419 | Line 1394 | class_sendq: SENDQ '=' sizespec ';'
1394      yy_class->max_sendq = $3;
1395   };
1396  
1397 + class_recvq: T_RECVQ '=' sizespec ';'
1398 + {
1399 +  if (conf_parser_ctx.pass == 1)
1400 +    if ($3 >= CLIENT_FLOOD_MIN && $3 <= CLIENT_FLOOD_MAX)
1401 +      yy_class->max_recvq = $3;
1402 + };
1403 +
1404   class_cidr_bitlen_ipv4: CIDR_BITLEN_IPV4 '=' NUMBER ';'
1405   {
1406    if (conf_parser_ctx.pass == 1)
# Line 1725 | Line 1707 | auth_flags_item: SPOOF_NOTICE
1707      yy_aconf->flags |= CONF_FLAGS_NEED_PASSWORD;
1708   };
1709  
1728 /* XXX - need check for illegal hostnames here */
1710   auth_spoof: SPOOF '=' QSTRING ';'
1711   {
1712    if (conf_parser_ctx.pass == 2)
1713    {
1714      MyFree(yy_conf->name);
1715  
1716 <    if (strlen(yylval.string) < HOSTLEN)
1716 >    if (strlen(yylval.string) <= HOSTLEN && valid_hostname(yylval.string))
1717      {    
1718        DupString(yy_conf->name, yylval.string);
1719        yy_aconf->flags |= CONF_FLAGS_SPOOF_IP;
1720      }
1721      else
1722      {
1723 <      ilog(LOG_TYPE_IRCD, "Spoofs must be less than %d..ignoring it", HOSTLEN);
1723 >      ilog(LOG_TYPE_IRCD, "Spoof either is too long or contains invalid characters. Ignoring it.");
1724        yy_conf->name = NULL;
1725      }
1726    }
# Line 2190 | Line 2171 | connect_flags_item: AUTOCONN
2171   {
2172    if (conf_parser_ctx.pass == 2)
2173      SetConfAllowAutoConn(yy_aconf);
2193 } | BURST_AWAY
2194 {
2195  if (conf_parser_ctx.pass == 2)
2196    SetConfAwayBurst(yy_aconf);
2197 } | TOPICBURST
2198 {
2199  if (conf_parser_ctx.pass == 2)
2200    SetConfTopicBurst(yy_aconf);
2174   } | T_SSL
2175   {
2176    if (conf_parser_ctx.pass == 2)
# Line 2522 | Line 2495 | general_item:       general_hide_spoof_i
2495                      general_max_nick_time | general_max_nick_changes |
2496                      general_max_accept | general_anti_spam_exit_message_time |
2497                      general_ts_warn_delta | general_ts_max_delta |
2498 <                    general_kill_chase_time_limit | general_kline_with_reason |
2499 <                    general_kline_reason | general_invisible_on_connect |
2498 >                    general_kill_chase_time_limit |
2499 >                    general_invisible_on_connect |
2500                      general_warn_no_nline | general_dots_in_ident |
2501                      general_stats_o_oper_only | general_stats_k_oper_only |
2502                      general_pace_wait | general_stats_i_oper_only |
# Line 2537 | Line 2510 | general_item:       general_hide_spoof_i
2510                      general_opers_bypass_callerid | general_default_floodcount |
2511                      general_min_nonwildcard | general_min_nonwildcard_simple |
2512                      general_disable_remote_commands |
2540                    general_client_flood |
2513                      general_throttle_time | general_havent_read_conf |
2514                      general_ping_cookie |
2515                      general_disable_auth |
2516                      general_tkline_expire_notices | general_gline_enable |
2517                      general_gline_duration | general_gline_request_duration |
2518                      general_gline_min_cidr |
2519 <                    general_gline_min_cidr6 | general_use_whois_actually |
2520 <                    general_reject_hold_time | general_stats_e_disabled |
2519 >                    general_gline_min_cidr6 |
2520 >                    general_stats_e_disabled |
2521                      general_max_watch | general_services_name |
2522                      error;
2523  
# Line 2583 | Line 2555 | general_gline_min_cidr6: GLINE_MIN_CIDR6
2555    ConfigFileEntry.gline_min_cidr6 = $3;
2556   };
2557  
2586 general_use_whois_actually: USE_WHOIS_ACTUALLY '=' TBOOL ';'
2587 {
2588  ConfigFileEntry.use_whois_actually = yylval.number;
2589 };
2590
2591 general_reject_hold_time: TREJECT_HOLD_TIME '=' timespec ';'
2592 {
2593  GlobalSetOptions.rejecttime = yylval.number;
2594 };
2595
2558   general_tkline_expire_notices: TKLINE_EXPIRE_NOTICES '=' TBOOL ';'
2559   {
2560    ConfigFileEntry.tkline_expire_notices = yylval.number;
# Line 2670 | Line 2632 | general_havent_read_conf: HAVENT_READ_CO
2632    }
2633   };
2634  
2673 general_kline_with_reason: KLINE_WITH_REASON '=' TBOOL ';'
2674 {
2675  ConfigFileEntry.kline_with_reason = yylval.number;
2676 };
2677
2678 general_kline_reason: KLINE_REASON '=' QSTRING ';'
2679 {
2680  if (conf_parser_ctx.pass == 2)
2681  {
2682    MyFree(ConfigFileEntry.kline_reason);
2683    DupString(ConfigFileEntry.kline_reason, yylval.string);
2684  }
2685 };
2686
2635   general_invisible_on_connect: INVISIBLE_ON_CONNECT '=' TBOOL ';'
2636   {
2637    ConfigFileEntry.invisible_on_connect = yylval.number;
# Line 2975 | Line 2923 | general_default_floodcount: DEFAULT_FLOO
2923    ConfigFileEntry.default_floodcount = $3;
2924   };
2925  
2978 general_client_flood: T_CLIENT_FLOOD '=' sizespec ';'
2979 {
2980  ConfigFileEntry.client_flood = $3;
2981 };
2982
2926  
2927   /***************************************************************************
2928   *  section channel
# Line 2988 | Line 2931 | channel_entry: CHANNEL
2931    '{' channel_items '}' ';';
2932  
2933   channel_items:      channel_items channel_item | channel_item;
2934 < channel_item:       channel_use_except |
2992 <                    channel_use_invex | channel_use_knock | channel_max_bans |
2934 > channel_item:       channel_max_bans |
2935                      channel_knock_delay | channel_knock_delay_channel |
2936                      channel_max_chans_per_user | channel_max_chans_per_oper |
2937                      channel_quiet_on_ban | channel_default_split_user_count |
# Line 3009 | Line 2951 | channel_restrict_channels: RESTRICT_CHAN
2951    ConfigChannel.restrict_channels = yylval.number;
2952   };
2953  
3012 channel_use_except: USE_EXCEPT '=' TBOOL ';'
3013 {
3014  ConfigChannel.use_except = yylval.number;
3015 };
3016
3017 channel_use_invex: USE_INVEX '=' TBOOL ';'
3018 {
3019  ConfigChannel.use_invex = yylval.number;
3020 };
3021
3022 channel_use_knock: USE_KNOCK '=' TBOOL ';'
3023 {
3024  ConfigChannel.use_knock = yylval.number;
3025 };
3026
2954   channel_knock_delay: KNOCK_DELAY '=' timespec ';'
2955   {
2956    ConfigChannel.knock_delay = $3;

Diff Legend

Removed lines
+ Added lines
< Changed lines (old)
> Changed lines (new)