From: Martin Willi Date: Fri, 27 Feb 2015 12:59:23 +0000 (+0100) Subject: vici: Support non-Unix sockets for vici connections using Python X-Git-Tag: 5.3.0rc1~28^2~17 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=61fb10c8cf2fd432b1f154d8c5b1aaa2c5b4c7a1;p=thirdparty%2Fstrongswan.git vici: Support non-Unix sockets for vici connections using Python --- diff --git a/src/libcharon/plugins/vici/python/vici/protocol.py b/src/libcharon/plugins/vici/python/vici/protocol.py index fe4e5d7b50..60b94ede9e 100644 --- a/src/libcharon/plugins/vici/python/vici/protocol.py +++ b/src/libcharon/plugins/vici/python/vici/protocol.py @@ -11,10 +11,8 @@ class Transport(object): HEADER_LENGTH = 4 MAX_SEGMENT = 512 * 1024 - def __init__(self, address="/var/run/charon.vici"): - self.address = address - self.socket = socket.socket(socket.AF_UNIX) - self.socket.connect(address) + def __init__(self, sock): + self.socket = sock def send(self, packet): self.socket.sendall(struct.pack("!I", len(packet)) + packet) @@ -191,4 +189,4 @@ class FiniteStream(io.BytesIO): return len(self.getvalue()) def has_more(self): - return self.tell() < len(self) \ No newline at end of file + return self.tell() < len(self) diff --git a/src/libcharon/plugins/vici/python/vici/session.py b/src/libcharon/plugins/vici/python/vici/session.py index dd02493187..cffac6a8de 100644 --- a/src/libcharon/plugins/vici/python/vici/session.py +++ b/src/libcharon/plugins/vici/python/vici/session.py @@ -1,4 +1,5 @@ import collections +import socket from .exception import SessionException from .protocol import Transport, Packet, Message @@ -11,8 +12,11 @@ CommandResult = collections.namedtuple( class Session(object): - def __init__(self, address="/var/run/charon.vici"): - self.handler = SessionHandler(Transport(address)) + def __init__(self, sock=None): + if sock is None: + sock = socket.socket(socket.AF_UNIX) + sock.connect("/var/run/charon.vici") + self.handler = SessionHandler(Transport(sock)) def version(self): """Retrieve daemon and system specific version information.