chore(release): bump to 0.1.3; robust sudo/paths for tailscale

This commit is contained in:
Markus F.J. Busche
2025-09-20 16:12:09 +02:00
parent 667ecc5e72
commit 6654db26b7
3 changed files with 33 additions and 7 deletions

View File

@@ -74,14 +74,30 @@ class TailscaleInterface:
"""
Check if tailscale is installed
"""
result = self._run_command("which tailscale")
return result["success"] and result["output"] != ""
# Try PATH lookup, absolute path, or a sudo check that doesn't prompt
candidates = [
"command -v tailscale",
"test -x /usr/bin/tailscale && echo /usr/bin/tailscale",
"test -x /usr/local/bin/tailscale && echo /usr/local/bin/tailscale",
]
result = self._run_first_success(candidates)
if result and result["success"] and result.get("output"):
return True
# Fallback: ask tailscale for version via sudo -n (non-interactive)
version_check = self._run_command("sudo -n tailscale version")
return version_check["success"]
def is_tailscale_running(self):
"""
Check if tailscale is running
"""
result = self._run_command("tailscale status --json")
# Prefer non-interactive sudo to avoid PATH/permission issues
result = self._run_first_success([
"sudo -n tailscale status --json",
"tailscale status --json",
"/usr/bin/tailscale status --json",
"/usr/local/bin/tailscale status --json",
])
return result["success"]
def get_tailscale_status(self):
@@ -109,7 +125,12 @@ class TailscaleInterface:
if not self.is_tailscale_installed():
raise TailscaleNotInstalledError("Tailscale is not installed")
result = self._run_command("tailscale funnel status --json")
result = self._run_first_success([
"sudo -n tailscale funnel status --json",
"tailscale funnel status --json",
"/usr/bin/tailscale funnel status --json",
"/usr/local/bin/tailscale funnel status --json",
])
if result["success"]:
try:
status = json.loads(result["output"]) if result["output"] else {}
@@ -204,7 +225,12 @@ class TailscaleInterface:
if not self.is_tailscale_installed():
raise TailscaleNotInstalledError("Tailscale is not installed")
result = self._run_command("tailscale funnel status --json")
result = self._run_first_success([
"sudo -n tailscale funnel status --json",
"tailscale funnel status --json",
"/usr/bin/tailscale funnel status --json",
"/usr/local/bin/tailscale funnel status --json",
])
if result["success"]:
try:
status = json.loads(result["output"]) if result["output"] else {}

View File

@@ -14,7 +14,7 @@ plugin_package = "octoprint_tailscale_funnel"
plugin_name = "OctoPrint-Tailscale-Funnel"
# The plugin's version. Can be overwritten within OctoPrint's internal data via __plugin_version__ in the plugin module
plugin_version = "0.1.2"
plugin_version = "0.1.3"
# The plugin's description. Can be overwritten within OctoPrint's internal data via __plugin_description__ in the plugin
# module

View File

@@ -1,4 +1,4 @@
{
"version": "0.1.2"
"version": "0.1.3"
}