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