use proper python file io

Signed-off-by: Xe Iaso <me@christine.website>
This commit is contained in:
Cadey Ratio 2022-05-09 17:46:51 +00:00
parent 90c9fd1cde
commit d871074d29
1 changed files with 12 additions and 13 deletions

25
main.py
View File

@ -8,23 +8,22 @@ class Plugin:
return os.getuid()
def _systemd_status(self, service = "tailscaled.service"):
result = subprocess.run(["/bin/sh", "-c", "systemctl status tailscaled.service | grep active"])
return result.stdout.parse().split(": ")[1]
result = subprocess.run(["/bin/sh", "-c", "systemctl status tailscaled.service | grep active"], stdout=subprocess.PIPE)
return result.stdout.decode("utf-8").split(": ")[1]
async def install_state(self, *args):
sysext = subprocess.run(["/usr/bin/systemd-sysext", "list", "--json=short"])
sysexts = json.load(sysext.stdout)
for hier in sysexts:
if hier.hierarchy != "/usr":
sysext = subprocess.run(["/usr/bin/systemd-sysext", "list", "--json=short"], stdout=subprocess.PIPE)
sysexts = json.load(sysext.stdout.decode("utf-8"))
if sysexts.len() == 0:
return "not installed"
for ext in sysexts:
if ext.name != "tailscale":
continue
if hier.extensions == "none":
if pathlib.Path("/etc/extensions/tailscale").exists():
return "installed"
if "tailscale" in hier.extensions:
return self._systemd_status()
return self._systemd_status()
return "impossible state"
# Asyncio-compatible long-running code, executed in a task when the plugin is loaded