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/trunk/src/conf_parser.y (file contents):
Revision 4256 by michael, Fri Jul 18 20:37:01 2014 UTC vs.
Revision 4499 by michael, Sat Aug 16 18:29:23 2014 UTC

# Line 155 | Line 155 | reset_block_state(void)
155   %token  ANTI_NICK_FLOOD
156   %token  ANTI_SPAM_EXIT_MESSAGE_TIME
157   %token  AUTOCONN
158 + %token  AWAY_COUNT
159 + %token  AWAY_TIME
160   %token  BYTES KBYTES MBYTES
161   %token  CALLER_ID_WAIT
162   %token  CAN_FLOOD
# Line 473 | Line 475 | serverinfo_item:        serverinfo_name
475   serverinfo_ssl_certificate_file: SSL_CERTIFICATE_FILE '=' QSTRING ';'
476   {
477   #ifdef HAVE_LIBCRYPTO
478 <  if (conf_parser_ctx.pass == 2 && ServerInfo.server_ctx)
478 >  if (conf_parser_ctx.pass == 2)
479    {
480 <    if (!ServerInfo.rsa_private_key_file)
480 >    if (!ConfigServerInfo.rsa_private_key_file)
481      {
482        conf_error_report("No rsa_private_key_file specified, SSL disabled");
483        break;
484      }
485  
486 <    if (SSL_CTX_use_certificate_file(ServerInfo.server_ctx, yylval.string,
486 >    if (SSL_CTX_use_certificate_file(ConfigServerInfo.server_ctx, yylval.string,
487                                       SSL_FILETYPE_PEM) <= 0 ||
488 <        SSL_CTX_use_certificate_file(ServerInfo.client_ctx, yylval.string,
488 >        SSL_CTX_use_certificate_file(ConfigServerInfo.client_ctx, yylval.string,
489                                       SSL_FILETYPE_PEM) <= 0)
490      {
491        report_crypto_errors();
# Line 491 | Line 493 | serverinfo_ssl_certificate_file: SSL_CER
493        break;
494      }
495  
496 <    if (SSL_CTX_use_PrivateKey_file(ServerInfo.server_ctx, ServerInfo.rsa_private_key_file,
496 >    if (SSL_CTX_use_PrivateKey_file(ConfigServerInfo.server_ctx, ConfigServerInfo.rsa_private_key_file,
497                                      SSL_FILETYPE_PEM) <= 0 ||
498 <        SSL_CTX_use_PrivateKey_file(ServerInfo.client_ctx, ServerInfo.rsa_private_key_file,
498 >        SSL_CTX_use_PrivateKey_file(ConfigServerInfo.client_ctx, ConfigServerInfo.rsa_private_key_file,
499                                      SSL_FILETYPE_PEM) <= 0)
500      {
501        report_crypto_errors();
# Line 501 | Line 503 | serverinfo_ssl_certificate_file: SSL_CER
503        break;
504      }
505  
506 <    if (!SSL_CTX_check_private_key(ServerInfo.server_ctx) ||
507 <        !SSL_CTX_check_private_key(ServerInfo.client_ctx))
506 >    if (!SSL_CTX_check_private_key(ConfigServerInfo.server_ctx) ||
507 >        !SSL_CTX_check_private_key(ConfigServerInfo.client_ctx))
508      {
509        report_crypto_errors();
510        conf_error_report("Could not read RSA private key");
# Line 520 | Line 522 | serverinfo_rsa_private_key_file: RSA_PRI
522    if (conf_parser_ctx.pass != 1)
523      break;
524  
525 <  if (ServerInfo.rsa_private_key)
525 >  if (ConfigServerInfo.rsa_private_key)
526    {
527 <    RSA_free(ServerInfo.rsa_private_key);
528 <    ServerInfo.rsa_private_key = NULL;
527 >    RSA_free(ConfigServerInfo.rsa_private_key);
528 >    ConfigServerInfo.rsa_private_key = NULL;
529    }
530  
531 <  if (ServerInfo.rsa_private_key_file)
531 >  if (ConfigServerInfo.rsa_private_key_file)
532    {
533 <    MyFree(ServerInfo.rsa_private_key_file);
534 <    ServerInfo.rsa_private_key_file = NULL;
533 >    MyFree(ConfigServerInfo.rsa_private_key_file);
534 >    ConfigServerInfo.rsa_private_key_file = NULL;
535    }
536  
537 <  ServerInfo.rsa_private_key_file = xstrdup(yylval.string);
537 >  ConfigServerInfo.rsa_private_key_file = xstrdup(yylval.string);
538  
539    if ((file = BIO_new_file(yylval.string, "r")) == NULL)
540    {
# Line 540 | Line 542 | serverinfo_rsa_private_key_file: RSA_PRI
542      break;
543    }
544  
545 <  ServerInfo.rsa_private_key = PEM_read_bio_RSAPrivateKey(file, NULL, 0, NULL);
545 >  ConfigServerInfo.rsa_private_key = PEM_read_bio_RSAPrivateKey(file, NULL, 0, NULL);
546  
547    BIO_set_close(file, BIO_CLOSE);
548    BIO_free(file);
549  
550 <  if (ServerInfo.rsa_private_key == NULL)
550 >  if (ConfigServerInfo.rsa_private_key == NULL)
551    {
552      conf_error_report("Couldn't extract key, ignoring");
553      break;
554    }
555  
556 <  if (!RSA_check_key(ServerInfo.rsa_private_key))
556 >  if (!RSA_check_key(ConfigServerInfo.rsa_private_key))
557    {
558 <    RSA_free(ServerInfo.rsa_private_key);
559 <    ServerInfo.rsa_private_key = NULL;
558 >    RSA_free(ConfigServerInfo.rsa_private_key);
559 >    ConfigServerInfo.rsa_private_key = NULL;
560  
561      conf_error_report("Invalid key, ignoring");
562      break;
563    }
564  
565 <  if (RSA_size(ServerInfo.rsa_private_key) < 128)
565 >  if (RSA_size(ConfigServerInfo.rsa_private_key) < 128)
566    {
567 <    RSA_free(ServerInfo.rsa_private_key);
568 <    ServerInfo.rsa_private_key = NULL;
567 >    RSA_free(ConfigServerInfo.rsa_private_key);
568 >    ConfigServerInfo.rsa_private_key = NULL;
569  
570      conf_error_report("Ignoring serverinfo::rsa_private_key_file -- need at least a 1024 bit key size");
571    }
# Line 572 | Line 574 | serverinfo_rsa_private_key_file: RSA_PRI
574  
575   serverinfo_ssl_dh_param_file: SSL_DH_PARAM_FILE '=' QSTRING ';'
576   {
575 /* TBD - XXX: error reporting */
577   #ifdef HAVE_LIBCRYPTO
578 <  if (conf_parser_ctx.pass == 2 && ServerInfo.server_ctx)
578 >  if (conf_parser_ctx.pass == 2)
579    {
580      BIO *file = BIO_new_file(yylval.string, "r");
581  
# Line 589 | Line 590 | serverinfo_ssl_dh_param_file: SSL_DH_PAR
590          if (DH_size(dh) < 128)
591            conf_error_report("Ignoring serverinfo::ssl_dh_param_file -- need at least a 1024 bit DH prime size");
592          else
593 <          SSL_CTX_set_tmp_dh(ServerInfo.server_ctx, dh);
593 >          SSL_CTX_set_tmp_dh(ConfigServerInfo.server_ctx, dh);
594  
595          DH_free(dh);
596        }
597      }
598 +    else
599 +      conf_error_report("Ignoring serverinfo::ssl_dh_param_file -- could not open/read Diffie-Hellman parameter file");
600    }
601   #endif
602   };
# Line 601 | Line 604 | serverinfo_ssl_dh_param_file: SSL_DH_PAR
604   serverinfo_ssl_cipher_list: T_SSL_CIPHER_LIST '=' QSTRING ';'
605   {
606   #ifdef HAVE_LIBCRYPTO
607 <  if (conf_parser_ctx.pass == 2 && ServerInfo.server_ctx)
608 <    SSL_CTX_set_cipher_list(ServerInfo.server_ctx, yylval.string);
607 >  if (conf_parser_ctx.pass == 2)
608 >    SSL_CTX_set_cipher_list(ConfigServerInfo.server_ctx, yylval.string);
609   #endif
610   };
611  
612   serverinfo_ssl_message_digest_algorithm: SSL_MESSAGE_DIGEST_ALGORITHM '=' QSTRING ';'
613   {
614   #ifdef HAVE_LIBCRYPTO
615 <  if (conf_parser_ctx.pass == 2 && ServerInfo.server_ctx)
615 >  if (conf_parser_ctx.pass == 2)
616    {
617 <    if ((ServerInfo.message_digest_algorithm = EVP_get_digestbyname(yylval.string)) == NULL)
617 >    if ((ConfigServerInfo.message_digest_algorithm = EVP_get_digestbyname(yylval.string)) == NULL)
618      {
619 <      ServerInfo.message_digest_algorithm = EVP_sha256();
619 >      ConfigServerInfo.message_digest_algorithm = EVP_sha256();
620        conf_error_report("Ignoring serverinfo::ssl_message_digest_algorithm -- unknown message digest algorithm");
621      }
622    }
# Line 627 | Line 630 | serverinfo_ssl_dh_elliptic_curve: SSL_DH
630    int nid = 0;
631    EC_KEY *key = NULL;
632  
633 <  if (conf_parser_ctx.pass == 2 && ServerInfo.server_ctx)
633 >  if (conf_parser_ctx.pass == 2)
634    {
635      if ((nid = OBJ_sn2nid(yylval.string)) == 0)
636      {
# Line 641 | Line 644 | serverinfo_ssl_dh_elliptic_curve: SSL_DH
644        break;
645      }
646  
647 <    SSL_CTX_set_tmp_ecdh(ServerInfo.server_ctx, key);
647 >    SSL_CTX_set_tmp_ecdh(ConfigServerInfo.server_ctx, key);
648      EC_KEY_free(key);
649   }
650   #endif
# Line 651 | Line 654 | serverinfo_ssl_dh_elliptic_curve: SSL_DH
654   serverinfo_name: NAME '=' QSTRING ';'
655   {
656    /* this isn't rehashable */
657 <  if (conf_parser_ctx.pass == 2 && !ServerInfo.name)
657 >  if (conf_parser_ctx.pass == 2 && !ConfigServerInfo.name)
658    {
659      if (valid_servname(yylval.string))
660 <      ServerInfo.name = xstrdup(yylval.string);
660 >      ConfigServerInfo.name = xstrdup(yylval.string);
661      else
662      {
663        conf_error_report("Ignoring serverinfo::name -- invalid name. Aborting.");
# Line 666 | Line 669 | serverinfo_name: NAME '=' QSTRING ';'
669   serverinfo_sid: IRCD_SID '=' QSTRING ';'
670   {
671    /* this isn't rehashable */
672 <  if (conf_parser_ctx.pass == 2 && !ServerInfo.sid)
672 >  if (conf_parser_ctx.pass == 2 && !ConfigServerInfo.sid)
673    {
674      if (valid_sid(yylval.string))
675 <      ServerInfo.sid = xstrdup(yylval.string);
675 >      ConfigServerInfo.sid = xstrdup(yylval.string);
676      else
677      {
678        conf_error_report("Ignoring serverinfo::sid -- invalid SID. Aborting.");
# Line 682 | Line 685 | serverinfo_description: DESCRIPTION '='
685   {
686    if (conf_parser_ctx.pass == 2)
687    {
688 <    MyFree(ServerInfo.description);
689 <    ServerInfo.description = xstrdup(yylval.string);
688 >    MyFree(ConfigServerInfo.description);
689 >    ConfigServerInfo.description = xstrdup(yylval.string);
690    }
691   };
692  
# Line 696 | Line 699 | serverinfo_network_name: NETWORK_NAME '=
699      if ((p = strchr(yylval.string, ' ')))
700        *p = '\0';
701  
702 <    MyFree(ServerInfo.network_name);
703 <    ServerInfo.network_name = xstrdup(yylval.string);
702 >    MyFree(ConfigServerInfo.network_name);
703 >    ConfigServerInfo.network_name = xstrdup(yylval.string);
704    }
705   };
706  
# Line 706 | Line 709 | serverinfo_network_desc: NETWORK_DESC '=
709    if (conf_parser_ctx.pass != 2)
710      break;
711  
712 <  MyFree(ServerInfo.network_desc);
713 <  ServerInfo.network_desc = xstrdup(yylval.string);
712 >  MyFree(ConfigServerInfo.network_desc);
713 >  ConfigServerInfo.network_desc = xstrdup(yylval.string);
714   };
715  
716   serverinfo_vhost: VHOST '=' QSTRING ';'
# Line 728 | Line 731 | serverinfo_vhost: VHOST '=' QSTRING ';'
731      {
732        assert(res);
733  
734 <      memcpy(&ServerInfo.ip, res->ai_addr, res->ai_addrlen);
735 <      ServerInfo.ip.ss.ss_family = res->ai_family;
736 <      ServerInfo.ip.ss_len = res->ai_addrlen;
734 >      memcpy(&ConfigServerInfo.ip, res->ai_addr, res->ai_addrlen);
735 >      ConfigServerInfo.ip.ss.ss_family = res->ai_family;
736 >      ConfigServerInfo.ip.ss_len = res->ai_addrlen;
737        freeaddrinfo(res);
738  
739 <      ServerInfo.specific_ipv4_vhost = 1;
739 >      ConfigServerInfo.specific_ipv4_vhost = 1;
740      }
741    }
742   };
743  
744   serverinfo_vhost6: VHOST6 '=' QSTRING ';'
745   {
743 #ifdef IPV6
746    if (conf_parser_ctx.pass == 2 && *yylval.string != '*')
747    {
748      struct addrinfo hints, *res;
# Line 757 | Line 759 | serverinfo_vhost6: VHOST6 '=' QSTRING ';
759      {
760        assert(res);
761  
762 <      memcpy(&ServerInfo.ip6, res->ai_addr, res->ai_addrlen);
763 <      ServerInfo.ip6.ss.ss_family = res->ai_family;
764 <      ServerInfo.ip6.ss_len = res->ai_addrlen;
762 >      memcpy(&ConfigServerInfo.ip6, res->ai_addr, res->ai_addrlen);
763 >      ConfigServerInfo.ip6.ss.ss_family = res->ai_family;
764 >      ConfigServerInfo.ip6.ss_len = res->ai_addrlen;
765        freeaddrinfo(res);
766  
767 <      ServerInfo.specific_ipv6_vhost = 1;
767 >      ConfigServerInfo.specific_ipv6_vhost = 1;
768      }
769    }
768 #endif
770   };
771  
772   serverinfo_max_clients: T_MAX_CLIENTS '=' NUMBER ';'
# Line 779 | Line 780 | serverinfo_max_clients: T_MAX_CLIENTS '=
780  
781      snprintf(buf, sizeof(buf), "MAXCLIENTS too low, setting to %d", MAXCLIENTS_MIN);
782      conf_error_report(buf);
783 <    ServerInfo.max_clients = MAXCLIENTS_MIN;
783 >    ConfigServerInfo.max_clients = MAXCLIENTS_MIN;
784    }
785    else if ($3 > MAXCLIENTS_MAX)
786    {
# Line 787 | Line 788 | serverinfo_max_clients: T_MAX_CLIENTS '=
788  
789      snprintf(buf, sizeof(buf), "MAXCLIENTS too high, setting to %d", MAXCLIENTS_MAX);
790      conf_error_report(buf);
791 <    ServerInfo.max_clients = MAXCLIENTS_MAX;
791 >    ConfigServerInfo.max_clients = MAXCLIENTS_MAX;
792    }
793    else
794 <    ServerInfo.max_clients = $3;
794 >    ConfigServerInfo.max_clients = $3;
795   };
796  
797   serverinfo_max_nick_length: MAX_NICK_LENGTH '=' NUMBER ';'
# Line 801 | Line 802 | serverinfo_max_nick_length: MAX_NICK_LEN
802    if ($3 < 9)
803    {
804      conf_error_report("max_nick_length too low, setting to 9");
805 <    ServerInfo.max_nick_length = 9;
805 >    ConfigServerInfo.max_nick_length = 9;
806    }
807    else if ($3 > NICKLEN)
808    {
# Line 809 | Line 810 | serverinfo_max_nick_length: MAX_NICK_LEN
810  
811      snprintf(buf, sizeof(buf), "max_nick_length too high, setting to %d", NICKLEN);
812      conf_error_report(buf);
813 <    ServerInfo.max_nick_length = NICKLEN;
813 >    ConfigServerInfo.max_nick_length = NICKLEN;
814    }
815    else
816 <    ServerInfo.max_nick_length = $3;
816 >    ConfigServerInfo.max_nick_length = $3;
817   };
818  
819   serverinfo_max_topic_length: MAX_TOPIC_LENGTH '=' NUMBER ';'
# Line 823 | Line 824 | serverinfo_max_topic_length: MAX_TOPIC_L
824    if ($3 < 80)
825    {
826      conf_error_report("max_topic_length too low, setting to 80");
827 <    ServerInfo.max_topic_length = 80;
827 >    ConfigServerInfo.max_topic_length = 80;
828    }
829    else if ($3 > TOPICLEN)
830    {
# Line 831 | Line 832 | serverinfo_max_topic_length: MAX_TOPIC_L
832  
833      snprintf(buf, sizeof(buf), "max_topic_length too high, setting to %d", TOPICLEN);
834      conf_error_report(buf);
835 <    ServerInfo.max_topic_length = TOPICLEN;
835 >    ConfigServerInfo.max_topic_length = TOPICLEN;
836    }
837    else
838 <    ServerInfo.max_topic_length = $3;
838 >    ConfigServerInfo.max_topic_length = $3;
839   };
840  
841   serverinfo_hub: HUB '=' TBOOL ';'
842   {
843    if (conf_parser_ctx.pass == 2)
844 <    ServerInfo.hub = yylval.number;
844 >    ConfigServerInfo.hub = yylval.number;
845   };
846  
847   /***************************************************************************
# Line 859 | Line 860 | admin_name: NAME '=' QSTRING ';'
860    if (conf_parser_ctx.pass != 2)
861      break;
862  
863 <  MyFree(AdminInfo.name);
864 <  AdminInfo.name = xstrdup(yylval.string);
863 >  MyFree(ConfigAdminInfo.name);
864 >  ConfigAdminInfo.name = xstrdup(yylval.string);
865   };
866  
867   admin_email: EMAIL '=' QSTRING ';'
# Line 868 | Line 869 | admin_email: EMAIL '=' QSTRING ';'
869    if (conf_parser_ctx.pass != 2)
870      break;
871  
872 <  MyFree(AdminInfo.email);
873 <  AdminInfo.email = xstrdup(yylval.string);
872 >  MyFree(ConfigAdminInfo.email);
873 >  ConfigAdminInfo.email = xstrdup(yylval.string);
874   };
875  
876   admin_description: DESCRIPTION '=' QSTRING ';'
# Line 877 | Line 878 | admin_description: DESCRIPTION '=' QSTRI
878    if (conf_parser_ctx.pass != 2)
879      break;
880  
881 <  MyFree(AdminInfo.description);
882 <  AdminInfo.description = xstrdup(yylval.string);
881 >  MyFree(ConfigAdminInfo.description);
882 >  ConfigAdminInfo.description = xstrdup(yylval.string);
883   };
884  
885   /***************************************************************************
# Line 929 | Line 930 | logging_item:           logging_use_logg
930   logging_use_logging: USE_LOGGING '=' TBOOL ';'
931   {
932    if (conf_parser_ctx.pass == 2)
933 <    ConfigLoggingEntry.use_logging = yylval.number;
933 >    ConfigLog.use_logging = yylval.number;
934   };
935  
936   logging_file_entry:
# Line 1088 | Line 1089 | oper_entry: OPERATOR
1089  
1090        if ((pkey = PEM_read_bio_RSA_PUBKEY(file, NULL, 0, NULL)) == NULL)
1091          ilog(LOG_TYPE_IRCD, "Ignoring rsa_public_key_file -- key invalid; check key syntax");
1091
1092      if (RSA_size(pkey) > 128)
1093        ilog(LOG_TYPE_IRCD, "Ignoring rsa_public_key_file -- key size must be 1024 or below");
1092        else
1093 <        conf->rsa_public_key = pkey;
1093 >      {
1094 >        if (RSA_size(pkey) > 128)
1095 >          ilog(LOG_TYPE_IRCD, "Ignoring rsa_public_key_file -- key size must be 1024 or below");
1096 >        else
1097 >          conf->rsa_public_key = pkey;
1098 >      }
1099  
1100        BIO_set_close(file, BIO_CLOSE);
1101        BIO_free(file);
# Line 1616 | Line 1619 | port_item: NUMBER
1619   {
1620    if (conf_parser_ctx.pass == 2)
1621    {
1622 + #ifndef HAVE_LIBCRYPTO
1623      if (block_state.flags.value & LISTENER_SSL)
1624 < #ifdef HAVE_LIBCRYPTO
1625 <      if (!ServerInfo.server_ctx)
1624 >    {
1625 >      conf_error_report("SSL not available - port closed");
1626 >      break;
1627 >    }
1628   #endif
1623      {
1624        conf_error_report("SSL not available - port closed");
1625        break;
1626      }
1629      add_listener($1, block_state.addr.buf, block_state.flags.value);
1630    }
1631   } | NUMBER TWODOTS NUMBER
1632   {
1633    if (conf_parser_ctx.pass == 2)
1634    {
1635 + #ifndef HAVE_LIBCRYPTO
1636      if (block_state.flags.value & LISTENER_SSL)
1637 < #ifdef HAVE_LIBCRYPTO
1638 <      if (!ServerInfo.server_ctx)
1637 >    {
1638 >      conf_error_report("SSL not available - port closed");
1639 >      break;
1640 >    }
1641   #endif
1637      {
1638        conf_error_report("SSL not available - port closed");
1639        break;
1640      }
1642  
1643      for (int i = $1; i <= $3; ++i)
1644        add_listener(i, block_state.addr.buf, block_state.flags.value);
# Line 2224 | Line 2225 | connect_aftype: AFTYPE '=' T_IPV4 ';'
2225      block_state.aftype.value = AF_INET;
2226   } | AFTYPE '=' T_IPV6 ';'
2227   {
2227 #ifdef IPV6
2228    if (conf_parser_ctx.pass == 2)
2229      block_state.aftype.value = AF_INET6;
2230 #endif
2230   };
2231  
2232   connect_flags: IRCD_FLAGS
# Line 2460 | Line 2459 | general_entry: GENERAL
2459    '{' general_items '}' ';';
2460  
2461   general_items:      general_items general_item | general_item;
2462 < general_item:       general_hide_spoof_ips |
2462 > general_item:       general_away_count |
2463 >                    general_away_time |
2464 >                    general_hide_spoof_ips |
2465                      general_ignore_bogus_ts |
2466                      general_failed_oper_notice |
2467                      general_anti_nick_flood |
# Line 2511 | Line 2512 | general_item:       general_hide_spoof_i
2512                      error;
2513  
2514  
2515 + general_away_count: AWAY_COUNT '=' NUMBER ';'
2516 + {
2517 +  ConfigGeneral.away_count = $3;
2518 + };
2519 +
2520 + general_away_time: AWAY_TIME '=' timespec ';'
2521 + {
2522 +  ConfigGeneral.away_time = $3;
2523 + };
2524 +
2525   general_max_watch: MAX_WATCH '=' NUMBER ';'
2526   {
2527 <  ConfigFileEntry.max_watch = $3;
2527 >  ConfigGeneral.max_watch = $3;
2528   };
2529  
2530   general_cycle_on_host_change: CYCLE_ON_HOST_CHANGE '=' TBOOL ';'
2531   {
2532    if (conf_parser_ctx.pass == 2)
2533 <    ConfigFileEntry.cycle_on_host_change = yylval.number;
2533 >    ConfigGeneral.cycle_on_host_change = yylval.number;
2534   };
2535  
2536   general_gline_enable: GLINE_ENABLE '=' TBOOL ';'
2537   {
2538    if (conf_parser_ctx.pass == 2)
2539 <    ConfigFileEntry.glines = yylval.number;
2539 >    ConfigGeneral.glines = yylval.number;
2540   };
2541  
2542   general_gline_duration: GLINE_DURATION '=' timespec ';'
2543   {
2544    if (conf_parser_ctx.pass == 2)
2545 <    ConfigFileEntry.gline_time = $3;
2545 >    ConfigGeneral.gline_time = $3;
2546   };
2547  
2548   general_gline_request_duration: GLINE_REQUEST_DURATION '=' timespec ';'
2549   {
2550    if (conf_parser_ctx.pass == 2)
2551 <    ConfigFileEntry.gline_request_time = $3;
2551 >    ConfigGeneral.gline_request_time = $3;
2552   };
2553  
2554   general_gline_min_cidr: GLINE_MIN_CIDR '=' NUMBER ';'
2555   {
2556 <  ConfigFileEntry.gline_min_cidr = $3;
2556 >  ConfigGeneral.gline_min_cidr = $3;
2557   };
2558  
2559   general_gline_min_cidr6: GLINE_MIN_CIDR6 '=' NUMBER ';'
2560   {
2561 <  ConfigFileEntry.gline_min_cidr6 = $3;
2561 >  ConfigGeneral.gline_min_cidr6 = $3;
2562   };
2563  
2564   general_tkline_expire_notices: TKLINE_EXPIRE_NOTICES '=' TBOOL ';'
2565   {
2566 <  ConfigFileEntry.tkline_expire_notices = yylval.number;
2566 >  ConfigGeneral.tkline_expire_notices = yylval.number;
2567   };
2568  
2569   general_kill_chase_time_limit: KILL_CHASE_TIME_LIMIT '=' timespec ';'
2570   {
2571 <  ConfigFileEntry.kill_chase_time_limit = $3;
2571 >  ConfigGeneral.kill_chase_time_limit = $3;
2572   };
2573  
2574   general_hide_spoof_ips: HIDE_SPOOF_IPS '=' TBOOL ';'
2575   {
2576 <  ConfigFileEntry.hide_spoof_ips = yylval.number;
2576 >  ConfigGeneral.hide_spoof_ips = yylval.number;
2577   };
2578  
2579   general_ignore_bogus_ts: IGNORE_BOGUS_TS '=' TBOOL ';'
2580   {
2581 <  ConfigFileEntry.ignore_bogus_ts = yylval.number;
2581 >  ConfigGeneral.ignore_bogus_ts = yylval.number;
2582   };
2583  
2584   general_failed_oper_notice: FAILED_OPER_NOTICE '=' TBOOL ';'
2585   {
2586 <  ConfigFileEntry.failed_oper_notice = yylval.number;
2586 >  ConfigGeneral.failed_oper_notice = yylval.number;
2587   };
2588  
2589   general_anti_nick_flood: ANTI_NICK_FLOOD '=' TBOOL ';'
2590   {
2591 <  ConfigFileEntry.anti_nick_flood = yylval.number;
2591 >  ConfigGeneral.anti_nick_flood = yylval.number;
2592   };
2593  
2594   general_max_nick_time: MAX_NICK_TIME '=' timespec ';'
2595   {
2596 <  ConfigFileEntry.max_nick_time = $3;
2596 >  ConfigGeneral.max_nick_time = $3;
2597   };
2598  
2599   general_max_nick_changes: MAX_NICK_CHANGES '=' NUMBER ';'
2600   {
2601 <  ConfigFileEntry.max_nick_changes = $3;
2601 >  ConfigGeneral.max_nick_changes = $3;
2602   };
2603  
2604   general_max_accept: MAX_ACCEPT '=' NUMBER ';'
2605   {
2606 <  ConfigFileEntry.max_accept = $3;
2606 >  ConfigGeneral.max_accept = $3;
2607   };
2608  
2609   general_anti_spam_exit_message_time: ANTI_SPAM_EXIT_MESSAGE_TIME '=' timespec ';'
2610   {
2611 <  ConfigFileEntry.anti_spam_exit_message_time = $3;
2611 >  ConfigGeneral.anti_spam_exit_message_time = $3;
2612   };
2613  
2614   general_ts_warn_delta: TS_WARN_DELTA '=' timespec ';'
2615   {
2616 <  ConfigFileEntry.ts_warn_delta = $3;
2616 >  ConfigGeneral.ts_warn_delta = $3;
2617   };
2618  
2619   general_ts_max_delta: TS_MAX_DELTA '=' timespec ';'
2620   {
2621    if (conf_parser_ctx.pass == 2)
2622 <    ConfigFileEntry.ts_max_delta = $3;
2622 >    ConfigGeneral.ts_max_delta = $3;
2623   };
2624  
2625   general_havent_read_conf: HAVENT_READ_CONF '=' NUMBER ';'
# Line 2624 | Line 2635 | general_havent_read_conf: HAVENT_READ_CO
2635  
2636   general_invisible_on_connect: INVISIBLE_ON_CONNECT '=' TBOOL ';'
2637   {
2638 <  ConfigFileEntry.invisible_on_connect = yylval.number;
2638 >  ConfigGeneral.invisible_on_connect = yylval.number;
2639   };
2640  
2641   general_warn_no_connect_block: WARN_NO_CONNECT_BLOCK '=' TBOOL ';'
2642   {
2643 <  ConfigFileEntry.warn_no_connect_block = yylval.number;
2643 >  ConfigGeneral.warn_no_connect_block = yylval.number;
2644   };
2645  
2646   general_stats_e_disabled: STATS_E_DISABLED '=' TBOOL ';'
2647   {
2648 <  ConfigFileEntry.stats_e_disabled = yylval.number;
2648 >  ConfigGeneral.stats_e_disabled = yylval.number;
2649   };
2650  
2651   general_stats_o_oper_only: STATS_O_OPER_ONLY '=' TBOOL ';'
2652   {
2653 <  ConfigFileEntry.stats_o_oper_only = yylval.number;
2653 >  ConfigGeneral.stats_o_oper_only = yylval.number;
2654   };
2655  
2656   general_stats_P_oper_only: STATS_P_OPER_ONLY '=' TBOOL ';'
2657   {
2658 <  ConfigFileEntry.stats_P_oper_only = yylval.number;
2658 >  ConfigGeneral.stats_P_oper_only = yylval.number;
2659   };
2660  
2661   general_stats_u_oper_only: STATS_U_OPER_ONLY '=' TBOOL ';'
2662   {
2663 <  ConfigFileEntry.stats_u_oper_only = yylval.number;
2663 >  ConfigGeneral.stats_u_oper_only = yylval.number;
2664   };
2665  
2666   general_stats_k_oper_only: STATS_K_OPER_ONLY '=' TBOOL ';'
2667   {
2668 <  ConfigFileEntry.stats_k_oper_only = 2 * yylval.number;
2668 >  ConfigGeneral.stats_k_oper_only = 2 * yylval.number;
2669   } | STATS_K_OPER_ONLY '=' TMASKED ';'
2670   {
2671 <  ConfigFileEntry.stats_k_oper_only = 1;
2671 >  ConfigGeneral.stats_k_oper_only = 1;
2672   };
2673  
2674   general_stats_i_oper_only: STATS_I_OPER_ONLY '=' TBOOL ';'
2675   {
2676 <  ConfigFileEntry.stats_i_oper_only = 2 * yylval.number;
2676 >  ConfigGeneral.stats_i_oper_only = 2 * yylval.number;
2677   } | STATS_I_OPER_ONLY '=' TMASKED ';'
2678   {
2679 <  ConfigFileEntry.stats_i_oper_only = 1;
2679 >  ConfigGeneral.stats_i_oper_only = 1;
2680   };
2681  
2682   general_pace_wait: PACE_WAIT '=' timespec ';'
2683   {
2684 <  ConfigFileEntry.pace_wait = $3;
2684 >  ConfigGeneral.pace_wait = $3;
2685   };
2686  
2687   general_caller_id_wait: CALLER_ID_WAIT '=' timespec ';'
2688   {
2689 <  ConfigFileEntry.caller_id_wait = $3;
2689 >  ConfigGeneral.caller_id_wait = $3;
2690   };
2691  
2692   general_opers_bypass_callerid: OPERS_BYPASS_CALLERID '=' TBOOL ';'
2693   {
2694 <  ConfigFileEntry.opers_bypass_callerid = yylval.number;
2694 >  ConfigGeneral.opers_bypass_callerid = yylval.number;
2695   };
2696  
2697   general_pace_wait_simple: PACE_WAIT_SIMPLE '=' timespec ';'
2698   {
2699 <  ConfigFileEntry.pace_wait_simple = $3;
2699 >  ConfigGeneral.pace_wait_simple = $3;
2700   };
2701  
2702   general_short_motd: SHORT_MOTD '=' TBOOL ';'
2703   {
2704 <  ConfigFileEntry.short_motd = yylval.number;
2704 >  ConfigGeneral.short_motd = yylval.number;
2705   };
2706  
2707   general_no_oper_flood: NO_OPER_FLOOD '=' TBOOL ';'
2708   {
2709 <  ConfigFileEntry.no_oper_flood = yylval.number;
2709 >  ConfigGeneral.no_oper_flood = yylval.number;
2710   };
2711  
2712   general_true_no_oper_flood: TRUE_NO_OPER_FLOOD '=' TBOOL ';'
2713   {
2714 <  ConfigFileEntry.true_no_oper_flood = yylval.number;
2714 >  ConfigGeneral.true_no_oper_flood = yylval.number;
2715   };
2716  
2717   general_oper_pass_resv: OPER_PASS_RESV '=' TBOOL ';'
2718   {
2719 <  ConfigFileEntry.oper_pass_resv = yylval.number;
2719 >  ConfigGeneral.oper_pass_resv = yylval.number;
2720   };
2721  
2722   general_dots_in_ident: DOTS_IN_IDENT '=' NUMBER ';'
2723   {
2724 <  ConfigFileEntry.dots_in_ident = $3;
2724 >  ConfigGeneral.dots_in_ident = $3;
2725   };
2726  
2727   general_max_targets: MAX_TARGETS '=' NUMBER ';'
2728   {
2729 <  ConfigFileEntry.max_targets = $3;
2729 >  ConfigGeneral.max_targets = $3;
2730   };
2731  
2732   general_services_name: T_SERVICES_NAME '=' QSTRING ';'
2733   {
2734    if (conf_parser_ctx.pass == 2 && valid_servname(yylval.string))
2735    {
2736 <    MyFree(ConfigFileEntry.service_name);
2737 <    ConfigFileEntry.service_name = xstrdup(yylval.string);
2736 >    MyFree(ConfigGeneral.service_name);
2737 >    ConfigGeneral.service_name = xstrdup(yylval.string);
2738    }
2739   };
2740  
2741   general_ping_cookie: PING_COOKIE '=' TBOOL ';'
2742   {
2743 <  ConfigFileEntry.ping_cookie = yylval.number;
2743 >  ConfigGeneral.ping_cookie = yylval.number;
2744   };
2745  
2746   general_disable_auth: DISABLE_AUTH '=' TBOOL ';'
2747   {
2748 <  ConfigFileEntry.disable_auth = yylval.number;
2748 >  ConfigGeneral.disable_auth = yylval.number;
2749   };
2750  
2751   general_throttle_count: THROTTLE_COUNT '=' NUMBER ';'
2752   {
2753 <  ConfigFileEntry.throttle_count = $3;
2753 >  ConfigGeneral.throttle_count = $3;
2754   };
2755  
2756   general_throttle_time: THROTTLE_TIME '=' timespec ';'
2757   {
2758 <  ConfigFileEntry.throttle_time = $3;
2758 >  ConfigGeneral.throttle_time = $3;
2759   };
2760  
2761   general_oper_umodes: OPER_UMODES
2762   {
2763 <  ConfigFileEntry.oper_umodes = 0;
2763 >  ConfigGeneral.oper_umodes = 0;
2764   } '='  umode_oitems ';' ;
2765  
2766   umode_oitems:    umode_oitems ',' umode_oitem | umode_oitem;
2767   umode_oitem:     T_BOTS
2768   {
2769 <  ConfigFileEntry.oper_umodes |= UMODE_BOTS;
2769 >  ConfigGeneral.oper_umodes |= UMODE_BOTS;
2770   } | T_CCONN
2771   {
2772 <  ConfigFileEntry.oper_umodes |= UMODE_CCONN;
2772 >  ConfigGeneral.oper_umodes |= UMODE_CCONN;
2773   } | T_DEAF
2774   {
2775 <  ConfigFileEntry.oper_umodes |= UMODE_DEAF;
2775 >  ConfigGeneral.oper_umodes |= UMODE_DEAF;
2776   } | T_DEBUG
2777   {
2778 <  ConfigFileEntry.oper_umodes |= UMODE_DEBUG;
2778 >  ConfigGeneral.oper_umodes |= UMODE_DEBUG;
2779   } | T_FULL
2780   {
2781 <  ConfigFileEntry.oper_umodes |= UMODE_FULL;
2781 >  ConfigGeneral.oper_umodes |= UMODE_FULL;
2782   } | HIDDEN
2783   {
2784 <  ConfigFileEntry.oper_umodes |= UMODE_HIDDEN;
2784 >  ConfigGeneral.oper_umodes |= UMODE_HIDDEN;
2785   } | HIDE_CHANS
2786   {
2787 <  ConfigFileEntry.oper_umodes |= UMODE_HIDECHANS;
2787 >  ConfigGeneral.oper_umodes |= UMODE_HIDECHANS;
2788   } | HIDE_IDLE
2789   {
2790 <  ConfigFileEntry.oper_umodes |= UMODE_HIDEIDLE;
2790 >  ConfigGeneral.oper_umodes |= UMODE_HIDEIDLE;
2791   } | T_SKILL
2792   {
2793 <  ConfigFileEntry.oper_umodes |= UMODE_SKILL;
2793 >  ConfigGeneral.oper_umodes |= UMODE_SKILL;
2794   } | T_NCHANGE
2795   {
2796 <  ConfigFileEntry.oper_umodes |= UMODE_NCHANGE;
2796 >  ConfigGeneral.oper_umodes |= UMODE_NCHANGE;
2797   } | T_REJ
2798   {
2799 <  ConfigFileEntry.oper_umodes |= UMODE_REJ;
2799 >  ConfigGeneral.oper_umodes |= UMODE_REJ;
2800   } | T_UNAUTH
2801   {
2802 <  ConfigFileEntry.oper_umodes |= UMODE_UNAUTH;
2802 >  ConfigGeneral.oper_umodes |= UMODE_UNAUTH;
2803   } | T_SPY
2804   {
2805 <  ConfigFileEntry.oper_umodes |= UMODE_SPY;
2805 >  ConfigGeneral.oper_umodes |= UMODE_SPY;
2806   } | T_EXTERNAL
2807   {
2808 <  ConfigFileEntry.oper_umodes |= UMODE_EXTERNAL;
2808 >  ConfigGeneral.oper_umodes |= UMODE_EXTERNAL;
2809   } | T_SERVNOTICE
2810   {
2811 <  ConfigFileEntry.oper_umodes |= UMODE_SERVNOTICE;
2811 >  ConfigGeneral.oper_umodes |= UMODE_SERVNOTICE;
2812   } | T_INVISIBLE
2813   {
2814 <  ConfigFileEntry.oper_umodes |= UMODE_INVISIBLE;
2814 >  ConfigGeneral.oper_umodes |= UMODE_INVISIBLE;
2815   } | T_WALLOP
2816   {
2817 <  ConfigFileEntry.oper_umodes |= UMODE_WALLOP;
2817 >  ConfigGeneral.oper_umodes |= UMODE_WALLOP;
2818   } | T_SOFTCALLERID
2819   {
2820 <  ConfigFileEntry.oper_umodes |= UMODE_SOFTCALLERID;
2820 >  ConfigGeneral.oper_umodes |= UMODE_SOFTCALLERID;
2821   } | T_CALLERID
2822   {
2823 <  ConfigFileEntry.oper_umodes |= UMODE_CALLERID;
2823 >  ConfigGeneral.oper_umodes |= UMODE_CALLERID;
2824   } | T_LOCOPS
2825   {
2826 <  ConfigFileEntry.oper_umodes |= UMODE_LOCOPS;
2826 >  ConfigGeneral.oper_umodes |= UMODE_LOCOPS;
2827   } | T_NONONREG
2828   {
2829 <  ConfigFileEntry.oper_umodes |= UMODE_REGONLY;
2829 >  ConfigGeneral.oper_umodes |= UMODE_REGONLY;
2830   } | T_FARCONNECT
2831   {
2832 <  ConfigFileEntry.oper_umodes |= UMODE_FARCONNECT;
2832 >  ConfigGeneral.oper_umodes |= UMODE_FARCONNECT;
2833   };
2834  
2835   general_oper_only_umodes: OPER_ONLY_UMODES
2836   {
2837 <  ConfigFileEntry.oper_only_umodes = 0;
2837 >  ConfigGeneral.oper_only_umodes = 0;
2838   } '='  umode_items ';' ;
2839  
2840   umode_items:  umode_items ',' umode_item | umode_item;
2841   umode_item:   T_BOTS
2842   {
2843 <  ConfigFileEntry.oper_only_umodes |= UMODE_BOTS;
2843 >  ConfigGeneral.oper_only_umodes |= UMODE_BOTS;
2844   } | T_CCONN
2845   {
2846 <  ConfigFileEntry.oper_only_umodes |= UMODE_CCONN;
2846 >  ConfigGeneral.oper_only_umodes |= UMODE_CCONN;
2847   } | T_DEAF
2848   {
2849 <  ConfigFileEntry.oper_only_umodes |= UMODE_DEAF;
2849 >  ConfigGeneral.oper_only_umodes |= UMODE_DEAF;
2850   } | T_DEBUG
2851   {
2852 <  ConfigFileEntry.oper_only_umodes |= UMODE_DEBUG;
2852 >  ConfigGeneral.oper_only_umodes |= UMODE_DEBUG;
2853   } | T_FULL
2854   {
2855 <  ConfigFileEntry.oper_only_umodes |= UMODE_FULL;
2855 >  ConfigGeneral.oper_only_umodes |= UMODE_FULL;
2856   } | T_SKILL
2857   {
2858 <  ConfigFileEntry.oper_only_umodes |= UMODE_SKILL;
2858 >  ConfigGeneral.oper_only_umodes |= UMODE_SKILL;
2859   } | HIDDEN
2860   {
2861 <  ConfigFileEntry.oper_only_umodes |= UMODE_HIDDEN;
2861 >  ConfigGeneral.oper_only_umodes |= UMODE_HIDDEN;
2862   } | T_NCHANGE
2863   {
2864 <  ConfigFileEntry.oper_only_umodes |= UMODE_NCHANGE;
2864 >  ConfigGeneral.oper_only_umodes |= UMODE_NCHANGE;
2865   } | T_REJ
2866   {
2867 <  ConfigFileEntry.oper_only_umodes |= UMODE_REJ;
2867 >  ConfigGeneral.oper_only_umodes |= UMODE_REJ;
2868   } | T_UNAUTH
2869   {
2870 <  ConfigFileEntry.oper_only_umodes |= UMODE_UNAUTH;
2870 >  ConfigGeneral.oper_only_umodes |= UMODE_UNAUTH;
2871   } | T_SPY
2872   {
2873 <  ConfigFileEntry.oper_only_umodes |= UMODE_SPY;
2873 >  ConfigGeneral.oper_only_umodes |= UMODE_SPY;
2874   } | T_EXTERNAL
2875   {
2876 <  ConfigFileEntry.oper_only_umodes |= UMODE_EXTERNAL;
2876 >  ConfigGeneral.oper_only_umodes |= UMODE_EXTERNAL;
2877   } | T_SERVNOTICE
2878   {
2879 <  ConfigFileEntry.oper_only_umodes |= UMODE_SERVNOTICE;
2879 >  ConfigGeneral.oper_only_umodes |= UMODE_SERVNOTICE;
2880   } | T_INVISIBLE
2881   {
2882 <  ConfigFileEntry.oper_only_umodes |= UMODE_INVISIBLE;
2882 >  ConfigGeneral.oper_only_umodes |= UMODE_INVISIBLE;
2883   } | T_WALLOP
2884   {
2885 <  ConfigFileEntry.oper_only_umodes |= UMODE_WALLOP;
2885 >  ConfigGeneral.oper_only_umodes |= UMODE_WALLOP;
2886   } | T_SOFTCALLERID
2887   {
2888 <  ConfigFileEntry.oper_only_umodes |= UMODE_SOFTCALLERID;
2888 >  ConfigGeneral.oper_only_umodes |= UMODE_SOFTCALLERID;
2889   } | T_CALLERID
2890   {
2891 <  ConfigFileEntry.oper_only_umodes |= UMODE_CALLERID;
2891 >  ConfigGeneral.oper_only_umodes |= UMODE_CALLERID;
2892   } | T_LOCOPS
2893   {
2894 <  ConfigFileEntry.oper_only_umodes |= UMODE_LOCOPS;
2894 >  ConfigGeneral.oper_only_umodes |= UMODE_LOCOPS;
2895   } | T_NONONREG
2896   {
2897 <  ConfigFileEntry.oper_only_umodes |= UMODE_REGONLY;
2897 >  ConfigGeneral.oper_only_umodes |= UMODE_REGONLY;
2898   } | T_FARCONNECT
2899   {
2900 <  ConfigFileEntry.oper_only_umodes |= UMODE_FARCONNECT;
2900 >  ConfigGeneral.oper_only_umodes |= UMODE_FARCONNECT;
2901   };
2902  
2903   general_min_nonwildcard: MIN_NONWILDCARD '=' NUMBER ';'
2904   {
2905 <  ConfigFileEntry.min_nonwildcard = $3;
2905 >  ConfigGeneral.min_nonwildcard = $3;
2906   };
2907  
2908   general_min_nonwildcard_simple: MIN_NONWILDCARD_SIMPLE '=' NUMBER ';'
2909   {
2910 <  ConfigFileEntry.min_nonwildcard_simple = $3;
2910 >  ConfigGeneral.min_nonwildcard_simple = $3;
2911   };
2912  
2913   general_default_floodcount: DEFAULT_FLOODCOUNT '=' NUMBER ';'
2914   {
2915 <  ConfigFileEntry.default_floodcount = $3;
2915 >  ConfigGeneral.default_floodcount = $3;
2916   };
2917  
2918  

Diff Legend

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