Sascha Ottolski <sascha.ottolski@gallileus.de> writes:
Now the missing piece is, to add the "HTTPS ON" Header only for request to port 443.
exactly. Thats why I wrote a patch. It adds a <https-server> stanza identical to <http-server> but adding the HTTPS ON header automatically. I think, it would be better to allow multiple <http-server> stanzas with embedded <cgi-environment> like: <http-server> address 443 <cgi-environment> HTTPS ON </cgi-environment> </http-sever> (THIS DOES NOT WORK NOW AS OF 2004-05-06 ITS A SUGGESTION !!!) but my solution was much simpler to implement. The patch is not large, so I think, it's ok to post it here, as others might well be interested as well. This is against Zope-2.7.0. --- /root/build/Zope-2.7.0/lib/python/ZServer/datatypes.py 2004-04-07 00:54:43.000000000 +0200 +++ lib/python/ZServer/datatypes.py 2004-04-07 13:36:19.000000000 +0200 @@ -74,6 +74,34 @@ from ZServer import HTTPServer return HTTPServer.zhttp_handler(self.module, '', self.cgienv) +class HTTPSServerFactory(ServerFactory): + def __init__(self, section): + ServerFactory.__init__(self, section.address) + self.force_connection_close = section.force_connection_close + # webdav-source-server sections won't have webdav_source_clients: + webdav_clients = getattr(section, "webdav_source_clients", None) + self.webdav_source_clients = webdav_clients + + def create(self): + from ZServer import HTTPServer + from ZServer.AccessLogger import access_logger + handler = self.createHandler() + handler._force_connection_close = self.force_connection_close + if self.webdav_source_clients: + handler.set_webdav_source_clients(self.webdav_source_clients) + server = HTTPServer.zhttp_server(ip=self.host, port=self.port, + resolver=self.dnsresolver, + logger_object=access_logger) + server.install_handler(handler) + return server + + def createHandler(self): + from ZServer import HTTPServer + cgienv = {} + cgienv.update(self.cgienv) + cgienv['HTTPS'] = 'ON' + return HTTPServer.zhttp_handler(self.module, '', cgienv) + class WebDAVSourceServerFactory(HTTPServerFactory): def createHandler(self): --- /root/build/Zope-2.7.0/lib/python/ZServer/component.xml 2003-03-24 23:32:39.000000000 +0100 +++ lib/python/ZServer/component.xml 2004-04-07 13:34:38.000000000 +0200 @@ -21,6 +21,19 @@ </key> </sectiontype> + <sectiontype name="https-server" + datatype=".HTTPSServerFactory" + implements="ZServer.server"> + <key name="address" datatype="inet-address"/> + <key name="force-connection-close" datatype="boolean" default="off"/> + <key name="webdav-source-clients"> + <description> + Regular expression used to identify clients who should + receive WebDAV source responses to GET requests. + </description> + </key> + </sectiontype> + <sectiontype name="webdav-source-server" datatype=".WebDAVSourceServerFactory" implements="ZServer.server"> -- -- *DON'T* TRY TO REACH ME DIRECTLY AT ABOVE EMAIL ADDRESS. Any reply -- received off-list at that address will be *silently* and -- *unconditionally* dropped. You can attribute this inconvenience to -- the proliferation of spammers on the Internet. I hope, you can -- understand my position and accept my counter measures.