added files to config services, added default logic for creating files from templates, added new method to provide extra data to templates, updated gui to display templates raw

This commit is contained in:
Blake Harnden 2020-01-20 15:02:04 -08:00
parent 9447ddb94f
commit 7b5df11dc7
11 changed files with 120 additions and 52 deletions

View file

@ -7,6 +7,7 @@ class VpnClient(ConfigService):
name = "VPNClient"
group = GROUP_NAME
directories = []
files = ["vpnclient.sh"]
executables = ["openvpn", "ip", "killall"]
dependencies = []
startup = ["sh vpnclient.sh"]
@ -14,6 +15,3 @@ class VpnClient(ConfigService):
shutdown = ["killall openvpn"]
validation_mode = ConfigServiceMode.BLOCKING
default_configs = []
def create_files(self):
self.render_template("vpnclient.sh")

View file

@ -1,3 +1,5 @@
from typing import Any, Dict
import netaddr
from core import utils
@ -12,6 +14,7 @@ class DefaultRoute(ConfigService):
name = "DefaultRoute"
group = GROUP_NAME
directories = []
files = ["defaultroute.sh"]
executables = ["ip"]
dependencies = []
startup = ["sh defaultroute.sh"]
@ -24,7 +27,7 @@ class DefaultRoute(ConfigService):
Configuration(_id="value3", _type=ConfigDataTypes.STRING, label="Value 3"),
]
def create_files(self):
def data(self) -> Dict[str, Any]:
addresses = []
for netif in self.node.netifs():
if getattr(netif, "control", False):
@ -33,14 +36,14 @@ class DefaultRoute(ConfigService):
net = netaddr.IPNetwork(addr)
if net[1] != net[-2]:
addresses.append(net[1])
data = dict(addresses=addresses)
self.render_template("defaultroute.sh", data)
return dict(addresses=addresses)
class IpForwardService(ConfigService):
name = "IPForward"
group = GROUP_NAME
directories = []
files = ["ipforward.sh"]
executables = ["sysctl"]
dependencies = []
startup = ["sh ipforward.sh"]
@ -49,10 +52,9 @@ class IpForwardService(ConfigService):
validation_mode = ConfigServiceMode.BLOCKING
default_configs = []
def create_files(self) -> None:
def data(self) -> Dict[str, Any]:
devnames = []
for ifc in self.node.netifs():
devname = utils.sysctl_devname(ifc.name)
devnames.append(devname)
data = dict(devnames=devnames)
self.render_template("ipforward.sh", data)
return dict(devnames=devnames)

View file

@ -5,6 +5,7 @@ class SimpleService(ConfigService):
name = "Simple"
group = "SimpleGroup"
directories = []
files = ["test1.sh"]
executables = []
dependencies = []
startup = []
@ -13,10 +14,10 @@ class SimpleService(ConfigService):
validation_mode = ConfigServiceMode.BLOCKING
default_configs = []
def create_files(self):
text = """
# sample script
# node id(${node.id}) name(${node.name})
echo hello
"""
self.render_text("test1.sh", text)
def get_text(self, name: str) -> str:
if name == "test1.sh":
return """
# sample script
# node id(${node.id}) name(${node.name})
echo hello
"""