From 8dcf822edbbe7fa3dd1912255dd5a9d8f3ad8865 Mon Sep 17 00:00:00 2001 From: Adam Dickmeiss Date: Fri, 3 May 2013 12:43:45 +0200 Subject: [PATCH] frontend_net: SSL/HTTPS server MP-441 because we can specify a certificate now. --- src/filter_frontend_net.cpp | 9 +++++++-- xml/schema/filter_frontend_net.rnc | 4 +++- 2 files changed, 10 insertions(+), 3 deletions(-) diff --git a/src/filter_frontend_net.cpp b/src/filter_frontend_net.cpp index 93319b7..ae2e9c6 100644 --- a/src/filter_frontend_net.cpp +++ b/src/filter_frontend_net.cpp @@ -47,6 +47,7 @@ namespace metaproxy_1 { friend class FrontendNet; std::string port; std::string route; + std::string cert_fname; int max_recv_bytes; }; class FrontendNet::Rep { @@ -627,8 +628,9 @@ void yf::FrontendNet::configure(const xmlNode * ptr, bool test_only, { Port port; - const char *names[4] = {"route", "max_recv_bytes", "port", 0}; - std::string values[3]; + const char *names[5] = {"route", "max_recv_bytes", "port", + "cert_fname", 0}; + std::string values[4]; mp::xml::parse_attr(ptr, names, values); port.route = values[0]; @@ -640,6 +642,7 @@ void yf::FrontendNet::configure(const xmlNode * ptr, bool test_only, port.port = values[2]; else port.port = mp::xml::get_text(ptr); + port.cert_fname = values[3]; ports.push_back(port); } else if (!strcmp((const char *) ptr->name, "threads")) @@ -714,6 +717,8 @@ void yf::FrontendNet::set_ports(std::vector &ports) // create a PDU assoc object (one per yf::FrontendNet::ZAssocServer) yazpp_1::PDU_Assoc *as = new yazpp_1::PDU_Assoc(&m_p->mySocketManager); + if (m_p->m_ports[i].cert_fname.length()) + as->set_cert_fname(m_p->m_ports[i].cert_fname.c_str()); // create ZAssoc with PDU Assoc m_p->az[i] = new yf::FrontendNet::ZAssocServer( as, m_p->m_ports[i].route, m_p.get()); diff --git a/xml/schema/filter_frontend_net.rnc b/xml/schema/filter_frontend_net.rnc index 4cbaacf..2ab4300 100644 --- a/xml/schema/filter_frontend_net.rnc +++ b/xml/schema/filter_frontend_net.rnc @@ -10,7 +10,9 @@ filter_frontend_net = element mp:port { attribute route { xsd:NCName }?, attribute max_recv_bytes { xsd:integer }?, - xsd:string + attribute port { xsd:integer }?, + attribute cert_fname { xsd:string }?, + xsd:string }+, element mp:timeout { xsd:integer }?, element mp:connect-max { xsd:integer }?, -- 1.7.10.4