X-Git-Url: http://git.pk910.de/?p=ircu2.10.12-pk.git;a=blobdiff_plain;f=ircd%2Fircd_parser.y;fp=ircd%2Fircd_parser.y;h=38d725a41461ad571d6085a4f6d2c14e42940e3d;hp=64a112cb9e54000097c2ef1df176debd3c6b7db9;hb=7fbfc390d32f9acc3192d011b813f66f35370faa;hpb=0400a5a6479398d82526785c18c0df8bc8b92dce diff --git a/ircd/ircd_parser.y b/ircd/ircd_parser.y index 64a112c..38d725a 100644 --- a/ircd/ircd_parser.y +++ b/ircd/ircd_parser.y @@ -175,6 +175,10 @@ static void free_slist(struct SLink **link) { %token PROGRAM %token TOK_IPV4 TOK_IPV6 %token DNS +%token SSL +%token CERTFILE +%token KEYFILE +%token CAFILE /* and now a lot of privileges... */ %token TPRIV_CHAN_LIMIT TPRIV_MODE_LCHAN TPRIV_DEOP_LCHAN TPRIV_WALK_LCHAN %token TPRIV_LOCAL_KILL TPRIV_REHASH TPRIV_RESTART TPRIV_DIE @@ -199,7 +203,7 @@ static void free_slist(struct SLink **link) { %% /* Blocks in the config file... */ blocks: blocks block | block; -block: adminblock | generalblock | classblock | connectblock | +block: adminblock | generalblock | classblock | connectblock | sslblock | uworldblock | operblock | portblock | jupeblock | clientblock | killblock | cruleblock | motdblock | featuresblock | quarantineblock | pseudoblock | iauthblock | error ';'; @@ -406,6 +410,40 @@ admincontact: CONTACT '=' QSTRING ';' localConf.contact = $3; }; +sslblock: SSL +{ + MyFree(localConf.sslcertfile); + MyFree(localConf.sslkeyfile); + MyFree(localConf.sslcafile); + localConf.sslcertfile = localConf.sslkeyfile = localConf.sslcafile = NULL; +} +'{' sslitems '}' ';' +{ + if (localConf.sslcertfile == NULL) + DupString(localConf.sslcertfile, ""); + if (localConf.sslkeyfile == NULL) + DupString(localConf.sslkeyfile, ""); + if (localConf.sslcafile == NULL) + DupString(localConf.sslcafile, ""); +}; +sslitems: sslitems sslitem | sslitem; +sslitem: sslcertfile | sslkeyfile | sslcafile; +sslcertfile: CERTFILE '=' QSTRING ';' +{ + MyFree(localConf.sslcertfile); + localConf.sslcertfile = $3; +}; +sslkeyfile: KEYFILE '=' QSTRING ';' +{ + MyFree(localConf.sslkeyfile); + localConf.sslkeyfile = $3; +}; +sslcafile: CAFILE '=' QSTRING ';' +{ + MyFree(localConf.sslcafile); + localConf.sslcafile = $3; +}; + classblock: CLASS { tping = 90; } '{' classitems '}' ';' @@ -722,6 +760,7 @@ portblock: PORT '{' portitems '}' ';' { FlagSet(&flags_here, LISTEN_IPV6); break; } + if (link->flags & 65535) port = link->flags & 65535; add_listener(port, link->value.cp, pass, &flags_here); @@ -733,7 +772,7 @@ portblock: PORT '{' portitems '}' ';' { port = 0; }; portitems: portitem portitems | portitem; -portitem: portnumber | portvhost | portvhostnumber | portmask | portserver | porthidden; +portitem: portnumber | portvhost | portvhostnumber | portmask | portserver | portssl | porthidden; portnumber: PORT '=' address_family NUMBER ';' { if ($4 < 1 || $4 > 65535) { @@ -783,6 +822,14 @@ portserver: SERVER '=' YES ';' FlagClr(&listen_flags, LISTEN_SERVER); }; +portssl: SSL '=' YES ';' +{ + FlagSet(&listen_flags, LISTEN_SSL); +} | SSL '=' NO ';' +{ + FlagClr(&listen_flags, LISTEN_SSL); +}; + porthidden: HIDDEN '=' YES ';' { FlagSet(&listen_flags, LISTEN_HIDDEN);