taildeck-plugin/main.py

40 lines
1.2 KiB
Python

import json
import os
import pathlib
import subprocess
import sys
class Plugin:
async def log(self, message=""):
print("frontend: " + message)
sys.stdout.flush()
async def whoami(self, *args):
return os.getuid()
async def _systemd_status(self, service = "tailscaled.service"):
result = subprocess.run(["/bin/sh", "-c", "systemctl status tailscaled.service | grep active"], stdout=subprocess.PIPE)
return result.stdout.decode("utf-8").split(": ")[1].strip()
async def install_state(self):
sysext = subprocess.run(["/usr/bin/systemd-sysext", "list", "--json=short"], stdout=subprocess.PIPE)
sysexts = json.loads(sysext.stdout.decode("utf-8"))
if len(sysexts) == 0:
return "not installed"
for ext in sysexts:
if ext["name"] != "tailscale":
continue
return await self._systemd_status()
return "impossible state"
async def install(self, *args):
subprocess.run(["/home/deck/homebrew/plugins/tailscale/deck_install.sh"])
# Asyncio-compatible long-running code, executed in a task when the plugin is loaded
async def _main(self):
pass