mirror of
https://github.com/xpipe-io/xpipe.git
synced 2024-11-21 15:10:23 +00:00
Various fixes
This commit is contained in:
parent
4426eb2424
commit
5ce9538633
39 changed files with 99 additions and 49 deletions
|
@ -24,6 +24,9 @@ headingLevel: 2
|
|||
<h1 id="xpipe-api-documentation">XPipe API Documentation v10.0</h1>
|
||||
|
||||
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:
|
||||
|
||||
<a href="/openapi.yaml" style="font-size: 20px">OpenAPI .yaml specification</a>
|
||||
|
||||
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:
|
||||
|
||||
* <a href="http://localhost:21721">http://localhost:21721</a>
|
||||
* <a href="http://localhost:21723">http://localhost:21723</a>
|
||||
|
||||
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 '
|
||||
{
|
||||
|
|
|
@ -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> 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 <REQ, RES> RES performRequest(REQ req) throws BeaconConnectorException, BeaconClientException, BeaconServerException {
|
||||
ObjectNode node = JacksonMapper.getDefault().valueToTree(req);
|
||||
var prov = BeaconInterface.byRequest(req);
|
||||
|
|
|
@ -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
|
||||
|
|
16
dist/changelogs/10.0.md
vendored
16
dist/changelogs/10.0.md
vendored
|
@ -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.
|
||||
|
|
|
@ -49,6 +49,10 @@ public class RunScriptAction implements BrowserAction, BranchAction {
|
|||
var scripts = ScriptStore.flatten(ScriptStore.getDefaultEnabledScripts());
|
||||
var map = new LinkedHashMap<String, SimpleScriptStore>();
|
||||
for (SimpleScriptStore script : scripts) {
|
||||
if (!script.isFileScript()) {
|
||||
continue;
|
||||
}
|
||||
|
||||
if (script.assemble(sc) == null) {
|
||||
continue;
|
||||
}
|
||||
|
|
|
@ -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.
|
||||
|
|
|
@ -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.
|
||||
|
|
|
@ -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.
|
||||
|
|
|
@ -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.
|
||||
|
|
|
@ -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.
|
||||
|
|
|
@ -459,3 +459,4 @@ httpApi=HTTP API
|
|||
isOnlySupportedLimit=は、$COUNT$ を超える接続がある場合、プロフェッショナルライセンスでのみサポートされる。
|
||||
areOnlySupportedLimit=$COUNT$ 以上の接続がある場合、プロフェッショナルライセンスでのみサポートされる。
|
||||
enabled=有効にする
|
||||
enableGitStoragePtbDisabled=Gitの同期をパブリックテストビルドでは無効にしているのは、通常のリリース用gitリポジトリとの使い回しを防ぎ、PTBビルドをデイリードライバーとして使わないようにするためだ。
|
||||
|
|
|
@ -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.
|
||||
|
|
|
@ -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.
|
||||
|
|
|
@ -459,3 +459,4 @@ httpApi=HTTP API
|
|||
isOnlySupportedLimit=поддерживается только профессиональной лицензией при наличии более $COUNT$ соединений
|
||||
areOnlySupportedLimit=поддерживаются только профессиональной лицензией при наличии более чем $COUNT$ соединений
|
||||
enabled=Включено
|
||||
enableGitStoragePtbDisabled=Git-синхронизация отключена для публичных тестовых сборок, чтобы предотвратить их использование с обычными релизными git-репозиториями и не допустить использования PTB-сборки в качестве ежедневного драйвера.
|
||||
|
|
|
@ -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.
|
||||
|
|
|
@ -459,3 +459,4 @@ httpApi=HTTP API
|
|||
isOnlySupportedLimit=只有在连接数超过$COUNT$ 时才支持专业许可证
|
||||
areOnlySupportedLimit=只有在连接数超过$COUNT$ 时才支持专业许可证
|
||||
enabled=已启用
|
||||
enableGitStoragePtbDisabled=公共测试版已禁用 Git 同步功能,以防止与常规发布版本的 git 仓库一起使用,并避免将公共测试版作为日常驱动程序使用。
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -146,7 +146,7 @@ serviceGroup.displayDescription=Сгруппируйте несколько се
|
|||
initScript=Запуск на shell init
|
||||
shellScript=Сделать скрипт доступным во время сеанса оболочки
|
||||
fileScript=Разрешить вызов скрипта с аргументами в виде файлов в браузере файлов
|
||||
runScript=Запустите скрипт ...
|
||||
runScript=Запуск скрипта
|
||||
copyUrl=Копировать URL
|
||||
fixedServiceGroup.displayName=Группа услуг
|
||||
fixedServiceGroup.displayDescription=Список доступных сервисов в системе
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -146,7 +146,7 @@ serviceGroup.displayDescription=将多项服务归为一类
|
|||
initScript=在 shell init 上运行
|
||||
shellScript=在 shell 会话中提供脚本
|
||||
fileScript=允许在文件浏览器中使用文件参数调用脚本
|
||||
runScript=运行脚本 ...
|
||||
runScript=运行脚本
|
||||
copyUrl=复制 URL
|
||||
fixedServiceGroup.displayName=服务组
|
||||
fixedServiceGroup.displayDescription=列出系统中可用的服务
|
||||
|
|
|
@ -357,3 +357,4 @@ containerActions=Container-handlinger
|
|||
vmActions=VM-handlinger
|
||||
dockerContextActions=Kontekst-handlinger
|
||||
k8sPodActions=Pod-handlinger
|
||||
openVnc=Sæt VNC op
|
||||
|
|
|
@ -335,3 +335,4 @@ containerActions=Container-Aktionen
|
|||
vmActions=VM-Aktionen
|
||||
dockerContextActions=Kontextbezogene Aktionen
|
||||
k8sPodActions=Pod-Aktionen
|
||||
openVnc=VNC einrichten
|
||||
|
|
|
@ -331,3 +331,4 @@ containerActions=Acciones del contenedor
|
|||
vmActions=Acciones VM
|
||||
dockerContextActions=Acciones contextuales
|
||||
k8sPodActions=Acciones del pod
|
||||
openVnc=Configurar VNC
|
||||
|
|
|
@ -331,3 +331,4 @@ containerActions=Actions du conteneur
|
|||
vmActions=Actions VM
|
||||
dockerContextActions=Actions contextuelles
|
||||
k8sPodActions=Actions de pods
|
||||
openVnc=Configurer VNC
|
||||
|
|
|
@ -331,3 +331,4 @@ containerActions=Azioni del contenitore
|
|||
vmActions=Azioni della VM
|
||||
dockerContextActions=Azioni contestuali
|
||||
k8sPodActions=Azioni del pod
|
||||
openVnc=Configurare VNC
|
||||
|
|
|
@ -331,3 +331,4 @@ containerActions=コンテナアクション
|
|||
vmActions=VMアクション
|
||||
dockerContextActions=コンテキストアクション
|
||||
k8sPodActions=ポッドアクション
|
||||
openVnc=VNCを設定する
|
||||
|
|
|
@ -331,3 +331,4 @@ containerActions=Container acties
|
|||
vmActions=VM-acties
|
||||
dockerContextActions=Context acties
|
||||
k8sPodActions=Pod acties
|
||||
openVnc=VNC instellen
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -331,3 +331,4 @@ containerActions=Действия с контейнером
|
|||
vmActions=Действия виртуальной машины
|
||||
dockerContextActions=Контекстные действия
|
||||
k8sPodActions=Действия в капсуле
|
||||
openVnc=Настройте VNC
|
||||
|
|
|
@ -331,3 +331,4 @@ containerActions=Konteyner eylemleri
|
|||
vmActions=VM eylemleri
|
||||
dockerContextActions=Bağlam eylemleri
|
||||
k8sPodActions=Pod eylemleri
|
||||
openVnc=VNC'yi ayarlama
|
||||
|
|
|
@ -331,3 +331,4 @@ containerActions=容器操作
|
|||
vmActions=虚拟机操作
|
||||
dockerContextActions=上下文操作
|
||||
k8sPodActions=Pod 操作
|
||||
openVnc=设置 VNC
|
||||
|
|
|
@ -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:
|
||||
|
||||
<a download href="/openapi.yaml" style="font-size: 20px">OpenAPI .yaml specification</a>
|
||||
|
||||
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
|
||||
|
|
Loading…
Reference in a new issue