Tag 0.0.18.

This commit is contained in:
Manuel Amador (Rudd-O) 2021-10-29 00:43:28 +00:00
parent 21c09202cc
commit 581a913999
2 changed files with 22 additions and 25 deletions

View File

@ -3,7 +3,7 @@
%define mybuildnumber %{?build_number}%{?!build_number:1}
Name: qubes-network-server
Version: 0.0.17
Version: 0.0.18
Release: %{mybuildnumber}%{?dist}
Summary: Turn your Qubes OS into a network server
BuildArch: noarch

View File

@ -2,23 +2,25 @@ import qubes.ext
def l(text, *parms):
return # This exists only to debug.
if parms:
text = text % parms
import sys
print("nsext:", text, file=sys.stderr)
sys.stderr.flush()
l("loaded")
class QubesNetworkServerExtension(qubes.ext.Extension):
class QubesNetworkServerExtension(qubes.ext.Extension):
def shutdown_routing_for_vm(self, netvm, appvm):
l("shutdown routing for vm %s %s", netvm, appvm)
self.reload_routing_for_vm(netvm, appvm, True)
def reload_routing_for_vm(self, netvm, appvm, shutdown=False):
'''Reload the routing method for the VM.'''
"""Reload the routing method for the VM."""
l("reload routing for vm %s %s shutdown %s", netvm, appvm, shutdown)
if not netvm.is_running():
return
@ -30,7 +32,7 @@ class QubesNetworkServerExtension(qubes.ext.Extension):
self.setup_forwarding_for_vm(netvm, appvm, ip, remove=shutdown)
def setup_forwarding_for_vm(self, netvm, appvm, ip, remove=False):
'''
"""
Record in Qubes DB that the passed VM may be meant to have traffic
forwarded to and from it, rather than masqueraded from it and blocked
to it.
@ -46,46 +48,41 @@ class QubesNetworkServerExtension(qubes.ext.Extension):
If `remove` is True, then we remove the respective routing method from
the Qubes DB instead.
'''
"""
l("setup forwarding for vm vm %s %s %s remove %s", netvm, appvm, ip, remove)
if ip is None:
return
routing_method = appvm.features.check_with_template(
'routing-method', 'masquerade'
"routing-method", "masquerade"
)
base_file = '/qubes-routing-method/{}'.format(ip)
base_file = "/qubes-routing-method/{}".format(ip)
if remove:
netvm.untrusted_qdb.rm(base_file)
elif routing_method == 'forward':
netvm.untrusted_qdb.write(base_file, 'forward')
elif routing_method == "forward":
netvm.untrusted_qdb.write(base_file, "forward")
else:
netvm.untrusted_qdb.write(base_file, 'masquerade')
netvm.untrusted_qdb.write(base_file, "masquerade")
@qubes.ext.handler(
'domain-feature-set:routing-method',
'domain-feature-delete:routing-method',
"domain-feature-set:routing-method",
"domain-feature-delete:routing-method",
)
def on_routing_method_changed(
self,
vm,
ignored_feature,
**kwargs
):
def on_routing_method_changed(self, vm, ignored_feature, **kwargs):
# pylint: disable=no-self-use,unused-argument
l("routing method changed %s", vm)
if 'oldvalue' not in kwargs or kwargs.get('oldvalue') != kwargs.get('value'):
if "oldvalue" not in kwargs or kwargs.get("oldvalue") != kwargs.get("value"):
if vm.netvm:
self.reload_routing_for_vm(vm.netvm, vm)
@qubes.ext.handler('domain-qdb-create')
@qubes.ext.handler("domain-qdb-create")
def on_domain_qdb_create(self, vm, event, **kwargs):
''' Fills the QubesDB with firewall entries. '''
""" Fills the QubesDB with firewall entries. """
# pylint: disable=unused-argument
l("domain create %s %s", vm, event)
if vm.netvm:
self.reload_routing_for_vm(vm.netvm, vm)
@qubes.ext.handler('domain-start')
@qubes.ext.handler("domain-start")
def on_domain_started(self, vm, event, **kwargs):
# pylint: disable=unused-argument
l("domain started %s %s", vm, event)
@ -95,7 +92,7 @@ class QubesNetworkServerExtension(qubes.ext.Extension):
except AttributeError:
pass
@qubes.ext.handler('domain-shutdown')
@qubes.ext.handler("domain-shutdown")
def on_domain_shutdown(self, vm, event, **kwargs):
# pylint: disable=unused-argument
l("domain shutdown %s %s", vm, event)
@ -107,7 +104,7 @@ class QubesNetworkServerExtension(qubes.ext.Extension):
if vm.netvm:
self.shutdown_routing_for_vm(vm.netvm, vm)
@qubes.ext.handler('net-domain-connect')
@qubes.ext.handler("net-domain-connect")
def on_net_domain_connect(self, vm, event):
# pylint: disable=unused-argument
l("domain connect %s %s", vm, event)