vici: Support non-Unix sockets for vici connections using Python

This commit is contained in:
Martin Willi
2015-03-18 13:59:14 +01:00
parent 358793389a
commit 61fb10c8cf
2 changed files with 9 additions and 7 deletions
@@ -11,10 +11,8 @@ class Transport(object):
HEADER_LENGTH = 4 HEADER_LENGTH = 4
MAX_SEGMENT = 512 * 1024 MAX_SEGMENT = 512 * 1024
def __init__(self, address="/var/run/charon.vici"): def __init__(self, sock):
self.address = address self.socket = sock
self.socket = socket.socket(socket.AF_UNIX)
self.socket.connect(address)
def send(self, packet): def send(self, packet):
self.socket.sendall(struct.pack("!I", len(packet)) + packet) self.socket.sendall(struct.pack("!I", len(packet)) + packet)
@@ -191,4 +189,4 @@ class FiniteStream(io.BytesIO):
return len(self.getvalue()) return len(self.getvalue())
def has_more(self): def has_more(self):
return self.tell() < len(self) return self.tell() < len(self)
@@ -1,4 +1,5 @@
import collections import collections
import socket
from .exception import SessionException from .exception import SessionException
from .protocol import Transport, Packet, Message from .protocol import Transport, Packet, Message
@@ -11,8 +12,11 @@ CommandResult = collections.namedtuple(
class Session(object): class Session(object):
def __init__(self, address="/var/run/charon.vici"): def __init__(self, sock=None):
self.handler = SessionHandler(Transport(address)) if sock is None:
sock = socket.socket(socket.AF_UNIX)
sock.connect("/var/run/charon.vici")
self.handler = SessionHandler(Transport(sock))
def version(self): def version(self):
"""Retrieve daemon and system specific version information. """Retrieve daemon and system specific version information.