Fix request handler with ssl socket for issue386
This commit is contained in:
1 parent
05c4ff16be
commit
41a289a722
2 files changed
+13
-11
No files matched your search
+11
-9
@@ -32,20 +32,22 @@ xmlrpclib.Marshaller.dispatch[Decimal] = \
|
||||
class SSLSocket(object):
|
||||
|
||||
def __init__(self, socket):
|
||||
self.socket = socket
|
||||
from OpenSSL import SSL
|
||||
ctx = SSL.Context(SSL.SSLv23_METHOD)
|
||||
ctx.use_privatekey_file(CONFIG['privatekey'])
|
||||
ctx.use_certificate_file(CONFIG['certificate'])
|
||||
self.ssl_socket = SSL.Connection(ctx, socket)
|
||||
if not hasattr(socket, 'sock_shutdown'):
|
||||
from OpenSSL import SSL
|
||||
ctx = SSL.Context(SSL.SSLv23_METHOD)
|
||||
ctx.use_privatekey_file(CONFIG['privatekey'])
|
||||
ctx.use_certificate_file(CONFIG['certificate'])
|
||||
self.socket = SSL.Connection(ctx, socket)
|
||||
else:
|
||||
self.socket = socket
|
||||
|
||||
def shutdown(self, how):
|
||||
return self.ssl_socket.sock_shutdown(how)
|
||||
return self.socket.sock_shutdown(how)
|
||||
|
||||
def __getattr__(self, name):
|
||||
if name == 'shutdown':
|
||||
return self.shutdown
|
||||
return getattr(self.ssl_socket, name)
|
||||
return getattr(self.socket, name)
|
||||
|
||||
|
||||
class Service(object):
|
||||
@@ -155,7 +157,7 @@ class SimpleXMLRPCRequestHandler(GenericXMLRPCRequestHandler,
|
||||
class SecureXMLRPCRequestHandler(SimpleXMLRPCRequestHandler):
|
||||
|
||||
def setup(self):
|
||||
self.connection = self.request
|
||||
self.connection = SSLSocket(self.request)
|
||||
self.rfile = socket._fileobject(self.request, "rb", self.rbufsize)
|
||||
self.wfile = socket._fileobject(self.request, "wb", self.wbufsize)
|
||||
|
||||
|
||||
@@ -8,7 +8,7 @@ from DAV.errors import *
|
||||
from DAV.constants import COLLECTION, OBJECT
|
||||
from DAV.utils import get_uriparentpath, get_urifilename
|
||||
from DAV.davcmd import copyone, copytree, moveone, movetree, delone, deltree
|
||||
from netsvc import LocalService
|
||||
from netsvc import LocalService, SSLSocket
|
||||
import security
|
||||
import pooler
|
||||
from version import PACKAGE, VERSION, WEBSITE
|
||||
@@ -317,6 +317,6 @@ class WebDAVAuthRequestHandler(AuthServer.BufferedAuthRequestHandler,
|
||||
class SecureWebDAVAuthRequestHandler(WebDAVAuthRequestHandler):
|
||||
|
||||
def setup(self):
|
||||
self.connection = self.request
|
||||
self.connection = SSLSocket(self.request)
|
||||
self.rfile = socket._fileobject(self.request, "rb", self.rbufsize)
|
||||
self.wfile = socket._fileobject(self.request, "wb", self.wbufsize)
|
||||
Reference in new issue
Block a user