src/server/daemon/config.c

changeset 130
198ad9d8cec1
parent 129
fd324464f56f
child 133
87b405d61f64
equal deleted inserted replaced
129:fd324464f56f 130:198ad9d8cec1
554 return 0; 554 return 0;
555 } 555 }
556 556
557 int cfg_handle_listener(ServerConfiguration *cfg, ServerConfigObject *obj) { 557 int cfg_handle_listener(ServerConfiguration *cfg, ServerConfigObject *obj) {
558 ListenerConfig lc; 558 ListenerConfig lc;
559 ZERO(&lc, sizeof(ListenerConfig));
559 lc.cfg = cfg; 560 lc.cfg = cfg;
560 lc.port = 8080; 561 lc.port = 8080;
561 lc.nacceptors = 1; 562 lc.nacceptors = 1;
562 563
563 // TODO: use sstrdup_pool? 564 // TODO: use sstrdup_pool?
575 sstr("Threadpool"))); 576 sstr("Threadpool")));
576 577
577 sstr_t ssl = cfg_directivelist_get_str(obj->directives, S("SSL")); 578 sstr_t ssl = cfg_directivelist_get_str(obj->directives, S("SSL"));
578 if(util_getboolean_s(ssl, WS_FALSE)) { 579 if(util_getboolean_s(ssl, WS_FALSE)) {
579 sstr_t cert = cfg_directivelist_get_str(obj->directives, S("Cert")); 580 sstr_t cert = cfg_directivelist_get_str(obj->directives, S("Cert"));
580 sstr_t privkey = cfg_directivelist_get_str(obj->directives, S("PrivateKey")); 581 sstr_t privkey = cfg_directivelist_get_str(obj->directives, S("Key"));
581 sstr_t chain = cfg_directivelist_get_str(obj->directives, S("Chain")); 582 sstr_t chain = cfg_directivelist_get_str(obj->directives, S("CertChain"));
583 sstr_t disableprot = cfg_directivelist_get_str(
584 obj->directives,
585 S("SSLDisableProtocol"));
586
582 WSBool config_ok = WS_TRUE; 587 WSBool config_ok = WS_TRUE;
583 // TODO: log error 588 // TODO: log error
584 if(!cert.ptr && !chain.ptr) { 589 if(!cert.ptr && !chain.ptr) {
590 log_ereport(
591 LOG_MISCONFIG,
592 "SSL Listener %s: Missing Cert or ChainCert directive",
593 lc.name.ptr);
585 config_ok = WS_FALSE; 594 config_ok = WS_FALSE;
586 } 595 }
587 if(!privkey.ptr) { 596 if(!privkey.ptr) {
597 log_ereport(
598 LOG_MISCONFIG,
599 "SSL Listener %s: Missing Key directive",
600 lc.name.ptr);
588 config_ok = WS_FALSE; 601 config_ok = WS_FALSE;
589 } 602 }
603
590 if(config_ok) { 604 if(config_ok) {
591 lc.certfile = cert; 605 lc.certfile = cert;
592 lc.privkeyfile = privkey; 606 lc.privkeyfile = privkey;
593 lc.chainfile = chain; 607 lc.chainfile = chain;
608 lc.disable_proto = disableprot;
594 lc.ssl = WS_TRUE; 609 lc.ssl = WS_TRUE;
595 } 610 }
596 } else { 611 } else {
597 lc.ssl = WS_FALSE; 612 lc.ssl = WS_FALSE;
598 } 613 }

mercurial