diff --git a/app/src/main/resources/io/xpipe/app/resources/misc/api.md b/app/src/main/resources/io/xpipe/app/resources/misc/api.md
index 8a4b6301a..ad98bbb12 100644
--- a/app/src/main/resources/io/xpipe/app/resources/misc/api.md
+++ b/app/src/main/resources/io/xpipe/app/resources/misc/api.md
@@ -24,6 +24,9 @@ headingLevel: 2
XPipe API Documentation v10.0
The XPipe API provides programmatic access to XPipe’s features.
+You can get started by either using this page as an API reference or alternatively import the OpenAPI definition file into your API client of choice:
+
+OpenAPI .yaml specification
The XPipe application will start up an HTTP server that can be used to send requests.
You can change the port of it in the settings menu.
@@ -36,12 +39,12 @@ You get the command exit code and output as a response, allowing you to adapt yo
Any kind of passwords and other secrets are automatically provided by XPipe when establishing a shell connection.
If a required password is not stored and is set to be dynamically prompted, the running XPipe application will ask you to enter any required passwords.
-You can quickly get started by either using this page as an API reference or alternatively import the [OpenAPI definition file](/openapi.yaml) into your API client of choice.
See the authentication handshake below on how to authenticate prior to sending requests.
+For development you can also skip the authentication step by disabling it in the settings menu.
Base URLs:
-* http://localhost:21721
+* http://localhost:21723
Table of contents:
[TOC]
@@ -128,7 +131,7 @@ const headers = {
'Accept':'application/json'
};
-fetch('http://localhost:21721/handshake',
+fetch('http://localhost:21723/handshake',
{
method: 'POST',
body: inputBody,
@@ -161,14 +164,14 @@ data = """
}
}
"""
-r = requests.post('http://localhost:21721/handshake', headers = headers, data = data)
+r = requests.post('http://localhost:21723/handshake', headers = headers, data = data)
print(r.json())
```
```java
-var uri = URI.create("http://localhost:21721/handshake");
+var uri = URI.create("http://localhost:21723/handshake");
var client = HttpClient.newHttpClient();
var request = HttpRequest
.newBuilder()
@@ -210,7 +213,7 @@ func main() {
}
data := bytes.NewBuffer([]byte{jsonReq})
- req, err := http.NewRequest("POST", "http://localhost:21721/handshake", data)
+ req, err := http.NewRequest("POST", "http://localhost:21723/handshake", data)
req.Header = headers
client := &http.Client{}
@@ -222,7 +225,7 @@ func main() {
```shell
# You can also use wget
-curl -X POST http://localhost:21721/handshake \
+curl -X POST http://localhost:21723/handshake \
-H 'Content-Type: application/json' \ -H 'Accept: application/json' \
--data '
{
@@ -334,7 +337,7 @@ const headers = {
'Authorization':'Bearer {access-token}'
};
-fetch('http://localhost:21721/connection/query',
+fetch('http://localhost:21723/connection/query',
{
method: 'POST',
body: inputBody,
@@ -363,14 +366,14 @@ data = """
"typeFilter": "*"
}
"""
-r = requests.post('http://localhost:21721/connection/query', headers = headers, data = data)
+r = requests.post('http://localhost:21723/connection/query', headers = headers, data = data)
print(r.json())
```
```java
-var uri = URI.create("http://localhost:21721/connection/query");
+var uri = URI.create("http://localhost:21723/connection/query");
var client = HttpClient.newHttpClient();
var request = HttpRequest
.newBuilder()
@@ -409,7 +412,7 @@ func main() {
}
data := bytes.NewBuffer([]byte{jsonReq})
- req, err := http.NewRequest("POST", "http://localhost:21721/connection/query", data)
+ req, err := http.NewRequest("POST", "http://localhost:21723/connection/query", data)
req.Header = headers
client := &http.Client{}
@@ -421,7 +424,7 @@ func main() {
```shell
# You can also use wget
-curl -X POST http://localhost:21721/connection/query \
+curl -X POST http://localhost:21723/connection/query \
-H 'Content-Type: application/json' \ -H 'Accept: application/json' \ -H 'Authorization: Bearer {access-token}' \
--data '
{
@@ -489,7 +492,7 @@ const headers = {
'Authorization':'Bearer {access-token}'
};
-fetch('http://localhost:21721/shell/start',
+fetch('http://localhost:21723/shell/start',
{
method: 'POST',
body: inputBody,
@@ -515,14 +518,14 @@ data = """
"uuid": "f0ec68aa-63f5-405c-b178-9a4454556d6b"
}
"""
-r = requests.post('http://localhost:21721/shell/start', headers = headers, data = data)
+r = requests.post('http://localhost:21723/shell/start', headers = headers, data = data)
print(r.json())
```
```java
-var uri = URI.create("http://localhost:21721/shell/start");
+var uri = URI.create("http://localhost:21723/shell/start");
var client = HttpClient.newHttpClient();
var request = HttpRequest
.newBuilder()
@@ -557,7 +560,7 @@ func main() {
}
data := bytes.NewBuffer([]byte{jsonReq})
- req, err := http.NewRequest("POST", "http://localhost:21721/shell/start", data)
+ req, err := http.NewRequest("POST", "http://localhost:21723/shell/start", data)
req.Header = headers
client := &http.Client{}
@@ -569,7 +572,7 @@ func main() {
```shell
# You can also use wget
-curl -X POST http://localhost:21721/shell/start \
+curl -X POST http://localhost:21723/shell/start \
-H 'Content-Type: application/json' \ -H 'Authorization: Bearer {access-token}' \
--data '
{
@@ -635,7 +638,7 @@ const headers = {
'Authorization':'Bearer {access-token}'
};
-fetch('http://localhost:21721/shell/stop',
+fetch('http://localhost:21723/shell/stop',
{
method: 'POST',
body: inputBody,
@@ -661,14 +664,14 @@ data = """
"uuid": "f0ec68aa-63f5-405c-b178-9a4454556d6b"
}
"""
-r = requests.post('http://localhost:21721/shell/stop', headers = headers, data = data)
+r = requests.post('http://localhost:21723/shell/stop', headers = headers, data = data)
print(r.json())
```
```java
-var uri = URI.create("http://localhost:21721/shell/stop");
+var uri = URI.create("http://localhost:21723/shell/stop");
var client = HttpClient.newHttpClient();
var request = HttpRequest
.newBuilder()
@@ -703,7 +706,7 @@ func main() {
}
data := bytes.NewBuffer([]byte{jsonReq})
- req, err := http.NewRequest("POST", "http://localhost:21721/shell/stop", data)
+ req, err := http.NewRequest("POST", "http://localhost:21723/shell/stop", data)
req.Header = headers
client := &http.Client{}
@@ -715,7 +718,7 @@ func main() {
```shell
# You can also use wget
-curl -X POST http://localhost:21721/shell/stop \
+curl -X POST http://localhost:21723/shell/stop \
-H 'Content-Type: application/json' \ -H 'Authorization: Bearer {access-token}' \
--data '
{
@@ -805,7 +808,7 @@ const headers = {
'Authorization':'Bearer {access-token}'
};
-fetch('http://localhost:21721/shell/exec',
+fetch('http://localhost:21723/shell/exec',
{
method: 'POST',
body: inputBody,
@@ -833,14 +836,14 @@ data = """
"command": "echo $USER"
}
"""
-r = requests.post('http://localhost:21721/shell/exec', headers = headers, data = data)
+r = requests.post('http://localhost:21723/shell/exec', headers = headers, data = data)
print(r.json())
```
```java
-var uri = URI.create("http://localhost:21721/shell/exec");
+var uri = URI.create("http://localhost:21723/shell/exec");
var client = HttpClient.newHttpClient();
var request = HttpRequest
.newBuilder()
@@ -878,7 +881,7 @@ func main() {
}
data := bytes.NewBuffer([]byte{jsonReq})
- req, err := http.NewRequest("POST", "http://localhost:21721/shell/exec", data)
+ req, err := http.NewRequest("POST", "http://localhost:21723/shell/exec", data)
req.Header = headers
client := &http.Client{}
@@ -890,7 +893,7 @@ func main() {
```shell
# You can also use wget
-curl -X POST http://localhost:21721/shell/exec \
+curl -X POST http://localhost:21723/shell/exec \
-H 'Content-Type: application/json' \ -H 'Accept: application/json' \ -H 'Authorization: Bearer {access-token}' \
--data '
{
diff --git a/beacon/src/main/java/io/xpipe/beacon/BeaconClient.java b/beacon/src/main/java/io/xpipe/beacon/BeaconClient.java
index 80559fc12..a08ca1ed0 100644
--- a/beacon/src/main/java/io/xpipe/beacon/BeaconClient.java
+++ b/beacon/src/main/java/io/xpipe/beacon/BeaconClient.java
@@ -4,6 +4,7 @@ import com.fasterxml.jackson.databind.node.ObjectNode;
import io.xpipe.beacon.api.HandshakeExchange;
import io.xpipe.core.util.JacksonMapper;
import io.xpipe.core.util.XPipeInstallation;
+import lombok.SneakyThrows;
import java.io.IOException;
import java.net.URI;
@@ -80,13 +81,30 @@ public class BeaconClient {
try {
var reader = JacksonMapper.getDefault().readerFor(prov.getResponseClass());
- var v = (RES) reader.readValue(response.body());
+ var emptyResponseClass = prov.getResponseClass().getDeclaredFields().length == 0;
+ var body = response.body();
+ if (emptyResponseClass && body.isBlank()) {
+ return createDefaultResponse(prov);
+ }
+ var v = (RES) reader.readValue(body);
return v;
} catch (IOException ex) {
throw new BeaconConnectorException("Couldn't parse response", ex);
}
}
+
+ @SneakyThrows
+ @SuppressWarnings("unchecked")
+ private REQ createDefaultResponse(BeaconInterface> beaconInterface) {
+ var c = beaconInterface.getResponseClass().getDeclaredMethod("builder");
+ c.setAccessible(true);
+ var b = c.invoke(null);
+ var m = b.getClass().getDeclaredMethod("build");
+ m.setAccessible(true);
+ return (REQ) beaconInterface.getResponseClass().cast(m.invoke(b));
+ }
+
public RES performRequest(REQ req) throws BeaconConnectorException, BeaconClientException, BeaconServerException {
ObjectNode node = JacksonMapper.getDefault().valueToTree(req);
var prov = BeaconInterface.byRequest(req);
diff --git a/build.gradle b/build.gradle
index 2e2690578..8baa20c67 100644
--- a/build.gradle
+++ b/build.gradle
@@ -88,7 +88,7 @@ project.ext {
arch = getArchName()
privateExtensions = file("$rootDir/private_extensions.txt").exists() ? file("$rootDir/private_extensions.txt").readLines() : []
isFullRelease = System.getenv('RELEASE') != null && Boolean.parseBoolean(System.getenv('RELEASE'))
- isStage = true
+ isStage = System.getenv('STAGE') != null && Boolean.parseBoolean(System.getenv('STAGE'))
rawVersion = file('version').text.trim()
versionString = rawVersion + (isFullRelease || isStage ? '' : '-SNAPSHOT')
versionReleaseNumber = rawVersion.split('-').length == 2 ? Integer.parseInt(rawVersion.split('-')[1]) : 1
diff --git a/dist/changelogs/10.0.md b/dist/changelogs/10.0.md
index 711fda1b4..757ccdcf8 100644
--- a/dist/changelogs/10.0.md
+++ b/dist/changelogs/10.0.md
@@ -32,14 +32,6 @@ The scripting system has been reworked. There have been several issues with it b
If you have existing scripts, they will have to be manually adjusted by setting their execution types.
-## Proxmox improvements
-
-You can now automatically open the Proxmox dashboard website through the new service integration. This will also work with the service tunneling feature for remote servers.
-
-You can now open VNC sessions to Proxmox VMs.
-
-The Proxmox professional license requirement has been reworked to support one non-enterprise PVE node in the community edition.
-
## Docker improvements
The docker integration has been updated to support docker contexts. You can use the default context in the community edition, essentially being the same as before as XPipe previously only used the default context. Support for using multiple contexts is included in the professional edition.
@@ -48,6 +40,14 @@ Note that old docker container connections will be removed as they are incompati
There's now support for Windows docker containers running on HyperV.
+## Proxmox improvements
+
+You can now automatically open the Proxmox dashboard website through the new service integration. This will also work with the service tunneling feature for remote servers.
+
+You can now open VNC sessions to Proxmox VMs.
+
+The Proxmox professional license requirement has been reworked to support one non-enterprise PVE node in the community edition.
+
## Better connection organization
The toggle to show only running connections will now no longer actually remove the connections internally and instead just not display them.
diff --git a/ext/base/src/main/java/io/xpipe/ext/base/script/RunScriptAction.java b/ext/base/src/main/java/io/xpipe/ext/base/script/RunScriptAction.java
index 0cb12bf4d..1c200c5c2 100644
--- a/ext/base/src/main/java/io/xpipe/ext/base/script/RunScriptAction.java
+++ b/ext/base/src/main/java/io/xpipe/ext/base/script/RunScriptAction.java
@@ -49,6 +49,10 @@ public class RunScriptAction implements BrowserAction, BranchAction {
var scripts = ScriptStore.flatten(ScriptStore.getDefaultEnabledScripts());
var map = new LinkedHashMap();
for (SimpleScriptStore script : scripts) {
+ if (!script.isFileScript()) {
+ continue;
+ }
+
if (script.assemble(sc) == null) {
continue;
}
diff --git a/lang/app/strings/translations_da.properties b/lang/app/strings/translations_da.properties
index 73bc007b2..469fbd8fa 100644
--- a/lang/app/strings/translations_da.properties
+++ b/lang/app/strings/translations_da.properties
@@ -478,3 +478,4 @@ httpApi=HTTP API
isOnlySupportedLimit=understøttes kun med en professionel licens, når man har mere end $COUNT$ forbindelser
areOnlySupportedLimit=understøttes kun med en professionel licens, når man har mere end $COUNT$ forbindelser
enabled=Aktiveret
+enableGitStoragePtbDisabled=Git-synkronisering er deaktiveret for offentlige test-builds for at forhindre brug med almindelige release-git-lagre og for at modvirke, at man bruger en PTB-build som sin daglige driver.
diff --git a/lang/app/strings/translations_de.properties b/lang/app/strings/translations_de.properties
index 0349fcfd1..d25192710 100644
--- a/lang/app/strings/translations_de.properties
+++ b/lang/app/strings/translations_de.properties
@@ -472,3 +472,4 @@ httpApi=HTTP-API
isOnlySupportedLimit=wird nur mit einer professionellen Lizenz unterstützt, wenn mehr als $COUNT$ Verbindungen bestehen
areOnlySupportedLimit=werden nur mit einer professionellen Lizenz unterstützt, wenn mehr als $COUNT$ Verbindungen bestehen
enabled=Aktiviert
+enableGitStoragePtbDisabled=Die Git-Synchronisierung ist für öffentliche Test-Builds deaktiviert, um die Verwendung mit regulären Git-Repositories zu verhindern und um davon abzuraten, einen PTB-Build als täglichen Treiber zu verwenden.
diff --git a/lang/app/strings/translations_es.properties b/lang/app/strings/translations_es.properties
index 0fd80ce3b..84b5df2a6 100644
--- a/lang/app/strings/translations_es.properties
+++ b/lang/app/strings/translations_es.properties
@@ -459,3 +459,4 @@ httpApi=API HTTP
isOnlySupportedLimit=sólo es compatible con una licencia profesional cuando tiene más de $COUNT$ conexiones
areOnlySupportedLimit=sólo son compatibles con una licencia profesional cuando tienen más de $COUNT$ conexiones
enabled=Activado
+enableGitStoragePtbDisabled=La sincronización Git está desactivada para las compilaciones públicas de prueba, para evitar que se utilicen con los repositorios git de publicación regular y para desalentar el uso de una compilación PTB como tu conductor diario.
diff --git a/lang/app/strings/translations_fr.properties b/lang/app/strings/translations_fr.properties
index 23a13e413..a55f6295b 100644
--- a/lang/app/strings/translations_fr.properties
+++ b/lang/app/strings/translations_fr.properties
@@ -459,3 +459,4 @@ httpApi=API HTTP
isOnlySupportedLimit=n'est pris en charge qu'avec une licence professionnelle lorsqu'il y a plus de $COUNT$ connexions
areOnlySupportedLimit=ne sont pris en charge qu'avec une licence professionnelle lorsqu'il y a plus de $COUNT$ connexions
enabled=Activé
+enableGitStoragePtbDisabled=La synchronisation Git est désactivée pour les versions de test publiques afin d'éviter toute utilisation avec les dépôts git des versions régulières et de décourager l'utilisation d'une version PTB comme conducteur quotidien.
diff --git a/lang/app/strings/translations_it.properties b/lang/app/strings/translations_it.properties
index e03fa1dc6..4be98ba86 100644
--- a/lang/app/strings/translations_it.properties
+++ b/lang/app/strings/translations_it.properties
@@ -459,3 +459,4 @@ httpApi=API HTTP
isOnlySupportedLimit=è supportato solo con una licenza professionale quando ci sono più di $COUNT$ connessioni
areOnlySupportedLimit=sono supportati solo con una licenza professionale quando ci sono più di $COUNT$ connessioni
enabled=Abilitato
+enableGitStoragePtbDisabled=La sincronizzazione Git è disabilitata per le build di test pubbliche per evitare l'uso con i repository git di rilascio regolari e per scoraggiare l'uso di una build PTB come guida quotidiana.
diff --git a/lang/app/strings/translations_ja.properties b/lang/app/strings/translations_ja.properties
index b4760573d..fd6ed2404 100644
--- a/lang/app/strings/translations_ja.properties
+++ b/lang/app/strings/translations_ja.properties
@@ -459,3 +459,4 @@ httpApi=HTTP API
isOnlySupportedLimit=は、$COUNT$ を超える接続がある場合、プロフェッショナルライセンスでのみサポートされる。
areOnlySupportedLimit=$COUNT$ 以上の接続がある場合、プロフェッショナルライセンスでのみサポートされる。
enabled=有効にする
+enableGitStoragePtbDisabled=Gitの同期をパブリックテストビルドでは無効にしているのは、通常のリリース用gitリポジトリとの使い回しを防ぎ、PTBビルドをデイリードライバーとして使わないようにするためだ。
diff --git a/lang/app/strings/translations_nl.properties b/lang/app/strings/translations_nl.properties
index efa21afbc..86da28986 100644
--- a/lang/app/strings/translations_nl.properties
+++ b/lang/app/strings/translations_nl.properties
@@ -459,3 +459,4 @@ httpApi=HTTP API
isOnlySupportedLimit=wordt alleen ondersteund met een professionele licentie bij meer dan $COUNT$ verbindingen
areOnlySupportedLimit=worden alleen ondersteund met een professionele licentie bij meer dan $COUNT$ verbindingen
enabled=Ingeschakeld
+enableGitStoragePtbDisabled=Git synchronisatie is uitgeschakeld voor publieke test builds om gebruik met reguliere release git repositories te voorkomen en om het gebruik van een PTB build als je dagelijkse driver te ontmoedigen.
diff --git a/lang/app/strings/translations_pt.properties b/lang/app/strings/translations_pt.properties
index 63879d58d..20c79f5be 100644
--- a/lang/app/strings/translations_pt.properties
+++ b/lang/app/strings/translations_pt.properties
@@ -459,3 +459,4 @@ httpApi=API HTTP
isOnlySupportedLimit=só é suportado com uma licença profissional se tiver mais de $COUNT$ ligações
areOnlySupportedLimit=só são suportados com uma licença profissional quando têm mais de $COUNT$ ligações
enabled=Ativado
+enableGitStoragePtbDisabled=A sincronização do Git está desactivada para compilações de teste públicas para evitar a utilização com repositórios git de lançamento regulares e para desencorajar a utilização de uma compilação PTB como o teu condutor diário.
diff --git a/lang/app/strings/translations_ru.properties b/lang/app/strings/translations_ru.properties
index 32b3fc25e..e712268c1 100644
--- a/lang/app/strings/translations_ru.properties
+++ b/lang/app/strings/translations_ru.properties
@@ -459,3 +459,4 @@ httpApi=HTTP API
isOnlySupportedLimit=поддерживается только профессиональной лицензией при наличии более $COUNT$ соединений
areOnlySupportedLimit=поддерживаются только профессиональной лицензией при наличии более чем $COUNT$ соединений
enabled=Включено
+enableGitStoragePtbDisabled=Git-синхронизация отключена для публичных тестовых сборок, чтобы предотвратить их использование с обычными релизными git-репозиториями и не допустить использования PTB-сборки в качестве ежедневного драйвера.
diff --git a/lang/app/strings/translations_tr.properties b/lang/app/strings/translations_tr.properties
index 48afcd66d..e6a9ededd 100644
--- a/lang/app/strings/translations_tr.properties
+++ b/lang/app/strings/translations_tr.properties
@@ -460,3 +460,4 @@ httpApi=HTTP API
isOnlySupportedLimit=yalnızca $COUNT$ adresinden daha fazla bağlantıya sahip olunduğunda profesyonel lisans ile desteklenir
areOnlySupportedLimit=yalnızca $COUNT$ adresinden daha fazla bağlantıya sahip olunduğunda profesyonel lisans ile desteklenir
enabled=Etkin
+enableGitStoragePtbDisabled=Git senkronizasyonu, normal sürüm git depoları ile kullanımı önlemek ve günlük sürücünüz olarak bir PTB derlemesini kullanmaktan vazgeçirmek için genel test derlemeleri için devre dışı bırakılmıştır.
diff --git a/lang/app/strings/translations_zh.properties b/lang/app/strings/translations_zh.properties
index 3f230851d..942b535a3 100644
--- a/lang/app/strings/translations_zh.properties
+++ b/lang/app/strings/translations_zh.properties
@@ -459,3 +459,4 @@ httpApi=HTTP API
isOnlySupportedLimit=只有在连接数超过$COUNT$ 时才支持专业许可证
areOnlySupportedLimit=只有在连接数超过$COUNT$ 时才支持专业许可证
enabled=已启用
+enableGitStoragePtbDisabled=公共测试版已禁用 Git 同步功能,以防止与常规发布版本的 git 仓库一起使用,并避免将公共测试版作为日常驱动程序使用。
diff --git a/lang/base/strings/translations_da.properties b/lang/base/strings/translations_da.properties
index 5a1b47115..7c1ed04ba 100644
--- a/lang/base/strings/translations_da.properties
+++ b/lang/base/strings/translations_da.properties
@@ -157,7 +157,7 @@ serviceGroup.displayDescription=Gruppér flere tjenester i én kategori
initScript=Kører på shell init
shellScript=Gør script tilgængeligt under shell-session
fileScript=Gør det muligt at kalde et script med filargumenter i filbrowseren
-runScript=Kør script ...
+runScript=Kør script
copyUrl=Kopier URL
fixedServiceGroup.displayName=Service-gruppe
fixedServiceGroup.displayDescription=Liste over tilgængelige tjenester på et system
diff --git a/lang/base/strings/translations_de.properties b/lang/base/strings/translations_de.properties
index e1a4873ea..5870785e0 100644
--- a/lang/base/strings/translations_de.properties
+++ b/lang/base/strings/translations_de.properties
@@ -148,7 +148,7 @@ serviceGroup.displayDescription=Mehrere Dienste in einer Kategorie zusammenfasse
initScript=Auf der Shell init ausführen
shellScript=Skript während der Shell-Sitzung verfügbar machen
fileScript=Skriptaufruf mit Dateiargumenten im Dateibrowser zulassen
-runScript=Skript ausführen ...
+runScript=Skript ausführen
copyUrl=URL kopieren
fixedServiceGroup.displayName=Dienstgruppe
fixedServiceGroup.displayDescription=Liste der verfügbaren Dienste auf einem System
diff --git a/lang/base/strings/translations_en.properties b/lang/base/strings/translations_en.properties
index f56a9e925..2c3fbfc63 100644
--- a/lang/base/strings/translations_en.properties
+++ b/lang/base/strings/translations_en.properties
@@ -146,7 +146,7 @@ serviceGroup.displayDescription=Group multiple services into one category
initScript=Run on shell init
shellScript=Make script available during shell session
fileScript=Allow script to be called with file arguments in the file browser
-runScript=Run script with
+runScript=Run script
copyUrl=Copy URL
fixedServiceGroup.displayName=Service group
fixedServiceGroup.displayDescription=List the available services on a system
diff --git a/lang/base/strings/translations_es.properties b/lang/base/strings/translations_es.properties
index 6f01000e6..edcc7e69a 100644
--- a/lang/base/strings/translations_es.properties
+++ b/lang/base/strings/translations_es.properties
@@ -146,7 +146,7 @@ serviceGroup.displayDescription=Agrupa varios servicios en una categoría
initScript=Ejecutar en shell init
shellScript=Hacer que el script esté disponible durante la sesión shell
fileScript=Permitir llamar a un script con argumentos de archivo en el explorador de archivos
-runScript=Ejecutar script ...
+runScript=Ejecutar script
copyUrl=Copiar URL
fixedServiceGroup.displayName=Grupo de servicios
fixedServiceGroup.displayDescription=Enumerar los servicios disponibles en un sistema
diff --git a/lang/base/strings/translations_fr.properties b/lang/base/strings/translations_fr.properties
index bcbde2a14..1259827ac 100644
--- a/lang/base/strings/translations_fr.properties
+++ b/lang/base/strings/translations_fr.properties
@@ -146,7 +146,7 @@ serviceGroup.displayDescription=Regrouper plusieurs services dans une même cat
initScript=Exécute sur le shell init
shellScript=Rendre le script disponible pendant la session shell
fileScript=Permet d'appeler un script avec des arguments de fichier dans le navigateur de fichiers
-runScript=Exécute le script ...
+runScript=Exécuter un script
copyUrl=Copier l'URL
fixedServiceGroup.displayName=Groupe de service
fixedServiceGroup.displayDescription=Liste les services disponibles sur un système
diff --git a/lang/base/strings/translations_it.properties b/lang/base/strings/translations_it.properties
index 0d360788e..e1fc67d28 100644
--- a/lang/base/strings/translations_it.properties
+++ b/lang/base/strings/translations_it.properties
@@ -146,7 +146,7 @@ serviceGroup.displayDescription=Raggruppa più servizi in un'unica categoria
initScript=Eseguire su shell init
shellScript=Rendere disponibile lo script durante la sessione di shell
fileScript=Consente di richiamare uno script con argomenti di file nel browser di file
-runScript=Esegui script ...
+runScript=Esegui script
copyUrl=Copia URL
fixedServiceGroup.displayName=Gruppo di servizio
fixedServiceGroup.displayDescription=Elenco dei servizi disponibili su un sistema
diff --git a/lang/base/strings/translations_nl.properties b/lang/base/strings/translations_nl.properties
index e54d91144..1d12be150 100644
--- a/lang/base/strings/translations_nl.properties
+++ b/lang/base/strings/translations_nl.properties
@@ -146,7 +146,7 @@ serviceGroup.displayDescription=Groepeer meerdere diensten in één categorie
initScript=Uitvoeren op shell init
shellScript=Script beschikbaar maken tijdens shellsessie
fileScript=Laat toe dat een script wordt aangeroepen met bestandsargumenten in de bestandsbrowser
-runScript=Script uitvoeren ...
+runScript=Script uitvoeren
copyUrl=URL kopiëren
fixedServiceGroup.displayName=Servicegroep
fixedServiceGroup.displayDescription=Een lijst van beschikbare services op een systeem
diff --git a/lang/base/strings/translations_pt.properties b/lang/base/strings/translations_pt.properties
index 8d115e42f..488cb4a02 100644
--- a/lang/base/strings/translations_pt.properties
+++ b/lang/base/strings/translations_pt.properties
@@ -146,7 +146,7 @@ serviceGroup.displayDescription=Agrupa vários serviços numa categoria
initScript=Corre no shell init
shellScript=Torna o script disponível durante a sessão da shell
fileScript=Permite que o script seja chamado com argumentos de ficheiro no navegador de ficheiros
-runScript=Executa o script ...
+runScript=Executa o script
copyUrl=Copia o URL
fixedServiceGroup.displayName=Grupo de serviços
fixedServiceGroup.displayDescription=Lista os serviços disponíveis num sistema
diff --git a/lang/base/strings/translations_ru.properties b/lang/base/strings/translations_ru.properties
index 3640e64fc..b409eb006 100644
--- a/lang/base/strings/translations_ru.properties
+++ b/lang/base/strings/translations_ru.properties
@@ -146,7 +146,7 @@ serviceGroup.displayDescription=Сгруппируйте несколько се
initScript=Запуск на shell init
shellScript=Сделать скрипт доступным во время сеанса оболочки
fileScript=Разрешить вызов скрипта с аргументами в виде файлов в браузере файлов
-runScript=Запустите скрипт ...
+runScript=Запуск скрипта
copyUrl=Копировать URL
fixedServiceGroup.displayName=Группа услуг
fixedServiceGroup.displayDescription=Список доступных сервисов в системе
diff --git a/lang/base/strings/translations_tr.properties b/lang/base/strings/translations_tr.properties
index 3746f7bd2..c63bceddb 100644
--- a/lang/base/strings/translations_tr.properties
+++ b/lang/base/strings/translations_tr.properties
@@ -146,7 +146,7 @@ serviceGroup.displayDescription=Birden fazla hizmeti tek bir kategoride gruplay
initScript=Kabuk başlangıcında çalıştır
shellScript=Kabuk oturumu sırasında komut dosyasını kullanılabilir hale getirme
fileScript=Kodun dosya tarayıcısında dosya bağımsız değişkenleriyle çağrılmasına izin ver
-runScript=Komut dosyasını çalıştır ...
+runScript=Komut dosyasını çalıştır
copyUrl=URL'yi kopyala
fixedServiceGroup.displayName=Hizmet grubu
fixedServiceGroup.displayDescription=Bir sistemdeki mevcut hizmetleri listeleme
diff --git a/lang/base/strings/translations_zh.properties b/lang/base/strings/translations_zh.properties
index ce9853186..b67ba34b3 100644
--- a/lang/base/strings/translations_zh.properties
+++ b/lang/base/strings/translations_zh.properties
@@ -146,7 +146,7 @@ serviceGroup.displayDescription=将多项服务归为一类
initScript=在 shell init 上运行
shellScript=在 shell 会话中提供脚本
fileScript=允许在文件浏览器中使用文件参数调用脚本
-runScript=运行脚本 ...
+runScript=运行脚本
copyUrl=复制 URL
fixedServiceGroup.displayName=服务组
fixedServiceGroup.displayDescription=列出系统中可用的服务
diff --git a/lang/proc/strings/translations_da.properties b/lang/proc/strings/translations_da.properties
index 7dc24c6da..2ec2b93d9 100644
--- a/lang/proc/strings/translations_da.properties
+++ b/lang/proc/strings/translations_da.properties
@@ -357,3 +357,4 @@ containerActions=Container-handlinger
vmActions=VM-handlinger
dockerContextActions=Kontekst-handlinger
k8sPodActions=Pod-handlinger
+openVnc=Sæt VNC op
diff --git a/lang/proc/strings/translations_de.properties b/lang/proc/strings/translations_de.properties
index c5dcfed8d..20e5a6170 100644
--- a/lang/proc/strings/translations_de.properties
+++ b/lang/proc/strings/translations_de.properties
@@ -335,3 +335,4 @@ containerActions=Container-Aktionen
vmActions=VM-Aktionen
dockerContextActions=Kontextbezogene Aktionen
k8sPodActions=Pod-Aktionen
+openVnc=VNC einrichten
diff --git a/lang/proc/strings/translations_es.properties b/lang/proc/strings/translations_es.properties
index 3f92e9068..a91ec9f9e 100644
--- a/lang/proc/strings/translations_es.properties
+++ b/lang/proc/strings/translations_es.properties
@@ -331,3 +331,4 @@ containerActions=Acciones del contenedor
vmActions=Acciones VM
dockerContextActions=Acciones contextuales
k8sPodActions=Acciones del pod
+openVnc=Configurar VNC
diff --git a/lang/proc/strings/translations_fr.properties b/lang/proc/strings/translations_fr.properties
index 94b1521f5..8c31505ab 100644
--- a/lang/proc/strings/translations_fr.properties
+++ b/lang/proc/strings/translations_fr.properties
@@ -331,3 +331,4 @@ containerActions=Actions du conteneur
vmActions=Actions VM
dockerContextActions=Actions contextuelles
k8sPodActions=Actions de pods
+openVnc=Configurer VNC
diff --git a/lang/proc/strings/translations_it.properties b/lang/proc/strings/translations_it.properties
index e6c884dfb..1b5fa6877 100644
--- a/lang/proc/strings/translations_it.properties
+++ b/lang/proc/strings/translations_it.properties
@@ -331,3 +331,4 @@ containerActions=Azioni del contenitore
vmActions=Azioni della VM
dockerContextActions=Azioni contestuali
k8sPodActions=Azioni del pod
+openVnc=Configurare VNC
diff --git a/lang/proc/strings/translations_ja.properties b/lang/proc/strings/translations_ja.properties
index 69ed375d7..0eaae52be 100644
--- a/lang/proc/strings/translations_ja.properties
+++ b/lang/proc/strings/translations_ja.properties
@@ -331,3 +331,4 @@ containerActions=コンテナアクション
vmActions=VMアクション
dockerContextActions=コンテキストアクション
k8sPodActions=ポッドアクション
+openVnc=VNCを設定する
diff --git a/lang/proc/strings/translations_nl.properties b/lang/proc/strings/translations_nl.properties
index 272f69609..ee5a01b19 100644
--- a/lang/proc/strings/translations_nl.properties
+++ b/lang/proc/strings/translations_nl.properties
@@ -331,3 +331,4 @@ containerActions=Container acties
vmActions=VM-acties
dockerContextActions=Context acties
k8sPodActions=Pod acties
+openVnc=VNC instellen
diff --git a/lang/proc/strings/translations_pt.properties b/lang/proc/strings/translations_pt.properties
index 4dc225db1..d70108d17 100644
--- a/lang/proc/strings/translations_pt.properties
+++ b/lang/proc/strings/translations_pt.properties
@@ -331,3 +331,4 @@ containerActions=Acções de contentor
vmActions=Acções VM
dockerContextActions=Acções de contexto
k8sPodActions=Acções de pod
+openVnc=Configura o VNC
diff --git a/lang/proc/strings/translations_ru.properties b/lang/proc/strings/translations_ru.properties
index 3b6c79cfa..be7d8d6b9 100644
--- a/lang/proc/strings/translations_ru.properties
+++ b/lang/proc/strings/translations_ru.properties
@@ -331,3 +331,4 @@ containerActions=Действия с контейнером
vmActions=Действия виртуальной машины
dockerContextActions=Контекстные действия
k8sPodActions=Действия в капсуле
+openVnc=Настройте VNC
diff --git a/lang/proc/strings/translations_tr.properties b/lang/proc/strings/translations_tr.properties
index 663fd0b31..c9f57ef52 100644
--- a/lang/proc/strings/translations_tr.properties
+++ b/lang/proc/strings/translations_tr.properties
@@ -331,3 +331,4 @@ containerActions=Konteyner eylemleri
vmActions=VM eylemleri
dockerContextActions=Bağlam eylemleri
k8sPodActions=Pod eylemleri
+openVnc=VNC'yi ayarlama
diff --git a/lang/proc/strings/translations_zh.properties b/lang/proc/strings/translations_zh.properties
index 412fab15a..1e125f007 100644
--- a/lang/proc/strings/translations_zh.properties
+++ b/lang/proc/strings/translations_zh.properties
@@ -331,3 +331,4 @@ containerActions=容器操作
vmActions=虚拟机操作
dockerContextActions=上下文操作
k8sPodActions=Pod 操作
+openVnc=设置 VNC
diff --git a/openapi.yaml b/openapi.yaml
index 3a380f408..f2398de65 100644
--- a/openapi.yaml
+++ b/openapi.yaml
@@ -3,7 +3,10 @@ info:
title: XPipe API Documentation
description: |
The XPipe API provides programmatic access to XPipe’s features.
+ You can get started by either using this page as an API reference or alternatively import the OpenAPI definition file into your API client of choice:
+ OpenAPI .yaml specification
+
The XPipe application will start up an HTTP server that can be used to send requests.
You can change the port of it in the settings menu.
Note that this server is HTTP-only for now as it runs only on localhost. HTTPS requests are not accepted.
@@ -15,8 +18,8 @@ info:
Any kind of passwords and other secrets are automatically provided by XPipe when establishing a shell connection.
If a required password is not stored and is set to be dynamically prompted, the running XPipe application will ask you to enter any required passwords.
- You can quickly get started by either using this page as an API reference or alternatively import the [OpenAPI definition file](/openapi.yaml) into your API client of choice.
See the authentication handshake below on how to authenticate prior to sending requests.
+ For development you can also skip the authentication step by disabling it in the settings menu.
termsOfService: https://docs.xpipe.io/terms-of-service
contact:
name: XPipe - Contact us