logger = logging.getLogger('updownLogger')
-handler = SysLogHandler(address='/dev/log', facility=SysLogHandler.LOG_DAEMON)
-handler.setFormatter(logging.Formatter('charon-updown: %(message)s'))
-logger.addHandler(handler)
-logger.setLevel(logging.INFO)
+
+
+def setup_logger():
+ handler = SysLogHandler(address='/dev/log', facility=SysLogHandler.LOG_DAEMON)
+ handler.setFormatter(logging.Formatter('charon-updown: %(message)s'))
+ logger.addHandler(handler)
+ logger.setLevel(logging.INFO)
def handle_interfaces(ike_sa, up):
def install_routes(ike_sa):
if_id_out = int(ike_sa['if-id-out'], 16)
ifname_out = "xfrm-{}-out".format(if_id_out)
- child_sa = next(ike_sa["child-sas"].itervalues())
+ child_sa = next(iter(ike_sa['child-sas'].values()))
for ts in child_sa['remote-ts']:
+ ts = ts.decode('UTF-8')
logger.info("add route to %s via %s", ts, ifname_out)
subprocess.call(["ip", "route", "add", ts, "dev", ifname_out])
# daemonize and run parallel to the IKE daemon
with daemon.DaemonContext():
+ setup_logger()
logger.debug("starting Python updown listener")
try:
session = vici.Session()
- ver = session.version()
+ ver = {k: v.decode("UTF-8") for k, v in session.version().items()}
logger.info("connected to {daemon} {version} ({sysname}, {release}, "
"{machine})".format(**ver))
except:
logger.debug("received event: %s %s", label, repr(event))
name = next((x for x in iter(event) if x != "up"))
- up = event.get("up", "") == "yes"
+ up = event.get("up", "") == b"yes"
ike_sa = event[name]
- if label == "ike-updown":
+ if label == b"ike-updown":
handle_interfaces(ike_sa, up)
- elif label == "child-updown" and up:
+ elif label == b"child-updown" and up:
install_routes(ike_sa)
except IOError: