diff --git a/app/src/main/java/io/xpipe/app/action/XPipeUrlProvider.java b/app/src/main/java/io/xpipe/app/action/XPipeUrlProvider.java index 279c5c3ba..338c83162 100644 --- a/app/src/main/java/io/xpipe/app/action/XPipeUrlProvider.java +++ b/app/src/main/java/io/xpipe/app/action/XPipeUrlProvider.java @@ -6,6 +6,7 @@ import io.xpipe.app.ext.ProcModuleProvider; import io.xpipe.app.prefs.AppPrefs; import io.xpipe.app.update.AppDistributionType; import io.xpipe.app.util.Base64Helper; +import io.xpipe.app.util.ThreadHelper; import io.xpipe.app.webtop.WebtopApp; import io.xpipe.app.webtop.WebtopAppListManager; @@ -25,24 +26,8 @@ public class XPipeUrlProvider implements LauncherUrlProvider { public AbstractAction createAction(URI uri) throws Exception { var a = uri.getHost(); - if ("mobile-connect".equals(a)) { - if (AppDistributionType.get() == AppDistributionType.WEBTOP) { - ProcModuleProvider.get().showLocalWebtopMobileConnectDialog(); - } - return null; - } - - if ("webtop-install".equals(a)) { - if (AppDistributionType.get() == AppDistributionType.WEBTOP && uri.getPath() != null) { - var ids = uri.getPath().split(";"); - var apps = Arrays.stream(ids).map(s -> WebtopApp.fromString(s)).flatMap(Optional::stream).toList(); - WebtopAppListManager.get().install(apps); - } - return null; - } - - if ("webtop-scan".equals(a)) { - AppDialog.information("webtopUrlDialog"); + if (a.equals("webtop")) { + ProcModuleProvider.get().openWebtopUrl(uri); return null; } diff --git a/app/src/main/java/io/xpipe/app/ext/ProcModuleProvider.java b/app/src/main/java/io/xpipe/app/ext/ProcModuleProvider.java index 09d27e340..b30fd9a03 100644 --- a/app/src/main/java/io/xpipe/app/ext/ProcModuleProvider.java +++ b/app/src/main/java/io/xpipe/app/ext/ProcModuleProvider.java @@ -20,6 +20,7 @@ import javafx.beans.property.Property; import io.modelcontextprotocol.spec.McpSchema; +import java.net.URI; import java.nio.file.Path; import java.util.List; import java.util.Optional; @@ -107,6 +108,8 @@ public abstract class ProcModuleProvider { public abstract void showLocalWebtopMobileConnectDialog(); + public abstract void openWebtopUrl(URI uri) throws Exception; + public abstract void importRdpFile(Path file) throws Exception; public abstract BaseRegionBuilder createCustomSshAgentTest(); diff --git a/app/src/main/java/io/xpipe/app/webtop/WebtopApp.java b/app/src/main/java/io/xpipe/app/webtop/WebtopApp.java index 4bbfd3195..b4bab600f 100644 --- a/app/src/main/java/io/xpipe/app/webtop/WebtopApp.java +++ b/app/src/main/java/io/xpipe/app/webtop/WebtopApp.java @@ -17,7 +17,7 @@ public enum WebtopApp { KEEPER("keeper"), KUBECTL("kubectl"), HCLOUD("hetznerCloud", "hcloud"), - NETBIRD("netbird"), + NETBIRD("netbird", "netbird", true), OPENBAO("openBao", "openbao"), PROTON_PASS("protonPass", "proton-pass"), TAILSCALE("tailscale", "tailscale", true), diff --git a/app/src/main/java/io/xpipe/app/webtop/WebtopAppListManager.java b/app/src/main/java/io/xpipe/app/webtop/WebtopAppListManager.java index 40d3fb004..da42674e1 100644 --- a/app/src/main/java/io/xpipe/app/webtop/WebtopAppListManager.java +++ b/app/src/main/java/io/xpipe/app/webtop/WebtopAppListManager.java @@ -226,7 +226,7 @@ public class WebtopAppListManager { TerminalLaunch.builder() .title("Install packages") - .localScript(ShellScript.lines(command, endCommand)) + .localScript(ShellScript.lines(command + endCommand)) .pauseOnExit(true) .terminal(term) .launch(); diff --git a/lang/strings/translations_de.properties b/lang/strings/translations_de.properties index c5d7ced8f..929d065a7 100644 --- a/lang/strings/translations_de.properties +++ b/lang/strings/translations_de.properties @@ -2172,8 +2172,8 @@ webtopDeploymentAccessScope=Zugriffsbereich webtopDeploymentAccessScopeDescription=Wie du auf Webtop zugreifen möchtest (beeinflusst die Container-Konfiguration) webtopDeploymentAccessConfig=Zugriffskontrolle webtopDeploymentAccessConfigDescription=Wie du die Zugriffskontrolle bzw. die Sichtbarkeit der Weboberfläche handhaben möchtest -webtopAccessVpnType=VPN-Typ -webtopAccessVpnTypeDescription=Wenn du bereits eines der unterstützten VPNs nutzt, verbinde den Webtop automatisch damit +webtopDeploymentVpnType=VPN-Typ +webtopDeploymentVpnTypeDescription=Wenn du bereits eines der unterstützten VPNs nutzt, verbinde den Webtop automatisch damit webtopAccessExposePorts=Ports freigeben webtopAccessExposePortsDescription=Mache Container-Ports von außen zugänglich webtopDeploymentTarget=Ziel diff --git a/lang/strings/translations_en.properties b/lang/strings/translations_en.properties index f76d6ca3d..808be4749 100644 --- a/lang/strings/translations_en.properties +++ b/lang/strings/translations_en.properties @@ -2214,7 +2214,8 @@ saveAs=Save as unlock=Unlock userLoginPasswordManagerDialogTitle=Additional vault unlock method available userLoginPasswordManagerDialogContent=You can now unlock the vault via your password manager as well. Simply click on the gear icon next to the passphrase field and configure the password manager entry. -webtopAccessVpnProvider=Connect via existing VPN (System will only be available within VPN) +#force +webtopAccessVpnProvider=Connect container itself to a VPN (System will only be available within VPN) webtopAccessSelfManaged=Manage access my way (Full control over how ports will be made available) webtopAccessSshAccess=Connect via app key (Only available in app) webtopPreconfiguredDialogTitle=XPipe Webtop @@ -2258,6 +2259,8 @@ webtopConnectHostDirect=Directly reachable host/IP keyAuth=SSH key authentication webtopConnectTailscaleDeviceName=Tailscale device name webtopConnectTailscaleDeviceNameDescription=The device identifier of the webtop system within the tailnet +webtopConnectNetbirdPeerName=Netbird peer name +webtopConnectNetbirdPeerDescription=The peer name of the webtop system within netbird webtopConnectAuth=Authentication webtopConnectAuthDescription=The authentication method to securely connect to the webtop remotely webtopConnectSshKey=SSH key diff --git a/version b/version index 2390298c1..645c6a762 100644 --- a/version +++ b/version @@ -1 +1 @@ -24.0-29 +24.0-30