mirror of
https://github.com/xpipe-io/xpipe.git
synced 2026-05-03 03:10:34 +00:00
Rework state and license checks
This commit is contained in:
@@ -5,7 +5,7 @@ import io.xpipe.app.comp.base.PrettyImageHelper;
|
||||
import io.xpipe.app.comp.base.StackComp;
|
||||
import io.xpipe.app.resources.AppResources;
|
||||
import io.xpipe.app.util.BindingsHelper;
|
||||
import io.xpipe.core.process.OsNameState;
|
||||
import io.xpipe.core.process.SystemState;
|
||||
import io.xpipe.core.store.FileNames;
|
||||
|
||||
import javafx.beans.binding.Bindings;
|
||||
@@ -43,7 +43,7 @@ public class OsLogoComp extends SimpleComp {
|
||||
}
|
||||
|
||||
var ps = wrapper.getPersistentState().getValue();
|
||||
if (!(ps instanceof OsNameState ons)) {
|
||||
if (!(ps instanceof SystemState ons)) {
|
||||
return null;
|
||||
}
|
||||
|
||||
|
||||
@@ -1,9 +1,6 @@
|
||||
package io.xpipe.app.resources;
|
||||
|
||||
import io.xpipe.core.process.OsType;
|
||||
import io.xpipe.core.process.ShellControl;
|
||||
import io.xpipe.core.process.ShellDialects;
|
||||
import io.xpipe.core.process.ShellStoreState;
|
||||
import io.xpipe.core.process.*;
|
||||
import io.xpipe.core.store.DataStore;
|
||||
import io.xpipe.core.store.StatefulDataStore;
|
||||
|
||||
@@ -23,16 +20,16 @@ public class SystemIcons {
|
||||
@Override
|
||||
public boolean isApplicable(DataStore store) {
|
||||
return store instanceof StatefulDataStore<?> statefulDataStore
|
||||
&& statefulDataStore.getState() instanceof ShellStoreState shellStoreState
|
||||
&& shellStoreState.getShellDialect() == ShellDialects.OPNSENSE;
|
||||
&& statefulDataStore.getState() instanceof SystemState systemState
|
||||
&& systemState.getShellDialect() == ShellDialects.OPNSENSE;
|
||||
}
|
||||
},
|
||||
new SystemIcon("pfsense", "pfsense") {
|
||||
@Override
|
||||
public boolean isApplicable(DataStore store) {
|
||||
return store instanceof StatefulDataStore<?> statefulDataStore
|
||||
&& statefulDataStore.getState() instanceof ShellStoreState shellStoreState
|
||||
&& shellStoreState.getShellDialect() == ShellDialects.PFSENSE;
|
||||
&& statefulDataStore.getState() instanceof SystemState systemState
|
||||
&& systemState.getShellDialect() == ShellDialects.PFSENSE;
|
||||
}
|
||||
},
|
||||
new ContainerAutoSystemIcon("file-browser", "file browser", name -> name.contains("filebrowser")),
|
||||
|
||||
@@ -129,6 +129,7 @@ public class AppDownloads {
|
||||
req.put("version", AppProperties.get().getVersion());
|
||||
req.put("first", first);
|
||||
req.put("license", LicenseProvider.get().getLicenseId());
|
||||
req.put("dist", XPipeDistributionType.get().getId());
|
||||
var url = URI.create("https://api.xpipe.io/version");
|
||||
|
||||
var builder = HttpRequest.newBuilder();
|
||||
|
||||
@@ -53,10 +53,10 @@ public class OptionsBuilder {
|
||||
return new ChainedValidator(allValidators);
|
||||
}
|
||||
|
||||
public OptionsBuilder choice(IntegerProperty selectedIndex, Map<String, OptionsBuilder> options) {
|
||||
public OptionsBuilder choice(IntegerProperty selectedIndex, Map<ObservableValue<String>, OptionsBuilder> options) {
|
||||
var list = options.entrySet().stream()
|
||||
.map(e -> new ChoicePaneComp.Entry(
|
||||
AppI18n.observable(e.getKey()),
|
||||
e.getKey(),
|
||||
e.getValue() != null ? e.getValue().buildComp() : Comp.empty()))
|
||||
.toList();
|
||||
var validatorList = options.values().stream()
|
||||
|
||||
@@ -8,6 +8,7 @@ import io.xpipe.app.storage.DataStoreEntry;
|
||||
import io.xpipe.core.process.ShellControl;
|
||||
import io.xpipe.core.process.ShellStoreState;
|
||||
import io.xpipe.core.process.ShellTtyState;
|
||||
import io.xpipe.core.process.SystemState;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
@@ -19,9 +20,9 @@ public class ScanAlert {
|
||||
ThreadHelper.runAsync(() -> {
|
||||
var showForCon = entry == null
|
||||
|| (entry.getStore() instanceof ShellStore
|
||||
&& (!(entry.getStorePersistentState() instanceof ShellStoreState shellStoreState)
|
||||
|| shellStoreState.getTtyState() == null
|
||||
|| shellStoreState.getTtyState() == ShellTtyState.NONE));
|
||||
&& (!(entry.getStorePersistentState() instanceof SystemState systemState)
|
||||
|| systemState.getTtyState() == null
|
||||
|| systemState.getTtyState() == ShellTtyState.NONE));
|
||||
if (showForCon) {
|
||||
showForShellStore(entry);
|
||||
}
|
||||
|
||||
@@ -5,6 +5,7 @@ import io.xpipe.app.comp.base.HorizontalComp;
|
||||
import io.xpipe.app.comp.base.SecretFieldComp;
|
||||
import io.xpipe.app.comp.base.TextFieldComp;
|
||||
import io.xpipe.app.core.App;
|
||||
import io.xpipe.app.core.AppI18n;
|
||||
import io.xpipe.app.prefs.AppPrefs;
|
||||
import io.xpipe.app.storage.DataStoreSecret;
|
||||
|
||||
@@ -12,6 +13,7 @@ import javafx.beans.property.Property;
|
||||
import javafx.beans.property.SimpleIntegerProperty;
|
||||
import javafx.beans.property.SimpleObjectProperty;
|
||||
|
||||
import javafx.beans.value.ObservableValue;
|
||||
import org.kordamp.ikonli.javafx.FontIcon;
|
||||
|
||||
import java.util.Arrays;
|
||||
@@ -88,14 +90,14 @@ public class SecretRetrievalStrategyHelper {
|
||||
new SimpleObjectProperty<>(strat instanceof SecretRetrievalStrategy.PasswordManager i ? i : null);
|
||||
var customCommand =
|
||||
new SimpleObjectProperty<>(strat instanceof SecretRetrievalStrategy.CustomCommand i ? i : null);
|
||||
var map = new LinkedHashMap<String, OptionsBuilder>();
|
||||
var map = new LinkedHashMap<ObservableValue<String>, OptionsBuilder>();
|
||||
if (allowNone) {
|
||||
map.put("app.none", new OptionsBuilder());
|
||||
map.put(AppI18n.observable("app.none"), new OptionsBuilder());
|
||||
}
|
||||
map.put("app.password", inPlace(inPlace));
|
||||
map.put("app.passwordManager", passwordManager(passwordManager));
|
||||
map.put("app.customCommand", customCommand(customCommand));
|
||||
map.put("app.prompt", new OptionsBuilder());
|
||||
map.put(AppI18n.observable("app.password"), inPlace(inPlace));
|
||||
map.put(AppI18n.observable("app.passwordManager"), passwordManager(passwordManager));
|
||||
map.put(AppI18n.observable("app.customCommand"), customCommand(customCommand));
|
||||
map.put(AppI18n.observable("app.prompt"), new OptionsBuilder());
|
||||
|
||||
int offset = allowNone ? 0 : -1;
|
||||
var selected = new SimpleIntegerProperty(
|
||||
|
||||
@@ -1,6 +0,0 @@
|
||||
package io.xpipe.core.process;
|
||||
|
||||
public interface OsNameState {
|
||||
|
||||
String getOsName();
|
||||
}
|
||||
@@ -56,10 +56,10 @@ public interface ShellControl extends ProcessControl {
|
||||
|
||||
String getOsName();
|
||||
|
||||
boolean isLicenseCheck();
|
||||
|
||||
ReentrantLock getLock();
|
||||
|
||||
void requireLicensedFeature(String id);
|
||||
|
||||
ShellDialect getOriginalShellDialect();
|
||||
|
||||
void setOriginalShellDialect(ShellDialect dialect);
|
||||
|
||||
@@ -14,7 +14,7 @@ import lombok.extern.jackson.Jacksonized;
|
||||
@EqualsAndHashCode(callSuper = true)
|
||||
@SuperBuilder(toBuilder = true)
|
||||
@Jacksonized
|
||||
public class ShellStoreState extends DataStoreState implements OsNameState {
|
||||
public class ShellStoreState extends DataStoreState implements SystemState {
|
||||
|
||||
OsType.Any osType;
|
||||
String osName;
|
||||
|
||||
@@ -6,6 +6,11 @@ public class StubShellControl extends WrapperShellControl {
|
||||
super(parent);
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean canHaveSubshells() {
|
||||
return parent.canHaveSubshells();
|
||||
}
|
||||
|
||||
@Override
|
||||
public void close() throws Exception {}
|
||||
}
|
||||
|
||||
@@ -0,0 +1,12 @@
|
||||
package io.xpipe.core.process;
|
||||
|
||||
public interface SystemState {
|
||||
|
||||
OsType getOsType();
|
||||
|
||||
String getOsName();
|
||||
|
||||
ShellDialect getShellDialect();
|
||||
|
||||
ShellTtyState getTtyState();
|
||||
}
|
||||
@@ -112,13 +112,13 @@ public class WrapperShellControl implements ShellControl {
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean isLicenseCheck() {
|
||||
return parent.isLicenseCheck();
|
||||
public ReentrantLock getLock() {
|
||||
return parent.getLock();
|
||||
}
|
||||
|
||||
@Override
|
||||
public ReentrantLock getLock() {
|
||||
return parent.getLock();
|
||||
public void requireLicensedFeature(String id) {
|
||||
parent.requireLicensedFeature(id);
|
||||
}
|
||||
|
||||
@Override
|
||||
|
||||
@@ -10,6 +10,7 @@ import io.xpipe.app.storage.DataStoreEntryRef;
|
||||
import io.xpipe.app.terminal.TerminalLauncher;
|
||||
import io.xpipe.core.process.ShellStoreState;
|
||||
import io.xpipe.core.process.ShellTtyState;
|
||||
import io.xpipe.core.process.SystemState;
|
||||
import io.xpipe.ext.base.script.ScriptHierarchy;
|
||||
|
||||
import javafx.beans.property.SimpleStringProperty;
|
||||
@@ -259,14 +260,14 @@ public class RunScriptActionMenu implements ActionProvider {
|
||||
@Override
|
||||
public boolean isApplicable(DataStoreEntryRef<ShellStore> o) {
|
||||
var state = o.get().getStorePersistentState();
|
||||
if (state instanceof ShellStoreState shellStoreState) {
|
||||
return (shellStoreState.getShellDialect() == null
|
||||
|| shellStoreState
|
||||
if (state instanceof SystemState systemState) {
|
||||
return (systemState.getShellDialect() == null
|
||||
|| systemState
|
||||
.getShellDialect()
|
||||
.getDumbMode()
|
||||
.supportsAnyPossibleInteraction())
|
||||
&& (shellStoreState.getTtyState() == null
|
||||
|| shellStoreState.getTtyState() == ShellTtyState.NONE);
|
||||
&& (systemState.getTtyState() == null
|
||||
|| systemState.getTtyState() == ShellTtyState.NONE);
|
||||
} else {
|
||||
return false;
|
||||
}
|
||||
@@ -276,7 +277,7 @@ public class RunScriptActionMenu implements ActionProvider {
|
||||
public List<? extends ActionProvider> getChildren(DataStoreEntryRef<ShellStore> store) {
|
||||
var replacement = ProcessControlProvider.get().replace(store);
|
||||
var state = replacement.getEntry().getStorePersistentState();
|
||||
if (!(state instanceof ShellStoreState shellStoreState) || shellStoreState.getShellDialect() == null) {
|
||||
if (!(state instanceof SystemState systemState) || systemState.getShellDialect() == null) {
|
||||
return List.of(new NoScriptsActionProvider());
|
||||
}
|
||||
|
||||
@@ -285,7 +286,7 @@ public class RunScriptActionMenu implements ActionProvider {
|
||||
return false;
|
||||
}
|
||||
|
||||
if (!ref.getStore().isCompatible(shellStoreState.getShellDialect())) {
|
||||
if (!ref.getStore().isCompatible(systemState.getShellDialect())) {
|
||||
return false;
|
||||
}
|
||||
|
||||
|
||||
@@ -9,6 +9,7 @@ import io.xpipe.app.util.ScanAlert;
|
||||
import io.xpipe.core.process.ShellStoreState;
|
||||
import io.xpipe.core.process.ShellTtyState;
|
||||
|
||||
import io.xpipe.core.process.SystemState;
|
||||
import javafx.beans.value.ObservableValue;
|
||||
|
||||
import lombok.Value;
|
||||
@@ -37,14 +38,14 @@ public class ScanStoreAction implements ActionProvider {
|
||||
@Override
|
||||
public boolean isApplicable(DataStoreEntryRef<ShellStore> o) {
|
||||
var state = o.get().getStorePersistentState();
|
||||
if (state instanceof ShellStoreState shellStoreState) {
|
||||
return (shellStoreState.getShellDialect() == null
|
||||
|| shellStoreState
|
||||
if (state instanceof SystemState systemState) {
|
||||
return (systemState.getShellDialect() == null
|
||||
|| systemState
|
||||
.getShellDialect()
|
||||
.getDumbMode()
|
||||
.supportsAnyPossibleInteraction())
|
||||
&& (shellStoreState.getTtyState() == null
|
||||
|| shellStoreState.getTtyState() == ShellTtyState.NONE);
|
||||
&& (systemState.getTtyState() == null
|
||||
|| systemState.getTtyState() == ShellTtyState.NONE);
|
||||
} else {
|
||||
return true;
|
||||
}
|
||||
|
||||
@@ -13,6 +13,7 @@ import io.xpipe.app.storage.DataStoreEntry;
|
||||
import io.xpipe.app.terminal.TerminalLauncher;
|
||||
import io.xpipe.app.util.ShellStoreFormat;
|
||||
import io.xpipe.core.process.ShellStoreState;
|
||||
import io.xpipe.core.process.SystemState;
|
||||
import io.xpipe.ext.base.script.ScriptStore;
|
||||
|
||||
import javafx.beans.property.BooleanProperty;
|
||||
@@ -29,8 +30,8 @@ public interface ShellStoreProvider extends DataStoreProvider {
|
||||
ShellStore store = replacement.getStore().asNeeded();
|
||||
var control = ScriptStore.controlWithDefaultScripts(store.tempControl());
|
||||
control.onInit(sc -> {
|
||||
if (entry.getStorePersistentState() instanceof ShellStoreState shellStoreState
|
||||
&& shellStoreState.getShellDialect() == null) {
|
||||
if (entry.getStorePersistentState() instanceof SystemState systemState
|
||||
&& systemState.getShellDialect() == null) {
|
||||
var found = SystemIcons.detectForSystem(sc);
|
||||
if (found.isPresent()) {
|
||||
entry.setIcon(found.get().getIconName(), false);
|
||||
|
||||
@@ -25,11 +25,11 @@ containerName=Navn på container
|
||||
#custom
|
||||
containerNameDescription=Det brugerdefinerede container navn
|
||||
vm=Virtuel maskine
|
||||
yubikeyPiv=Yubikey PIV (Pro)
|
||||
yubikeyPiv=Yubikey PIV
|
||||
vmDescription=Den tilknyttede konfigurationsfil.
|
||||
vmwareScan=VMware desktop hypervisors
|
||||
library=Bibliotek
|
||||
customPkcs11Library=Brugerdefineret PKCS#11-bibliotek (Pro)
|
||||
customPkcs11Library=Brugerdefineret PKCS#11-bibliotek
|
||||
vmwareMachine.displayName=VMware Virtual Machine
|
||||
vmwareMachine.displayDescription=Opret forbindelse til en virtuel maskine via SSH
|
||||
vmwareInstallation.displayName=Installation af VMware desktop hypervisor
|
||||
@@ -285,7 +285,7 @@ configLocation=Konfig-placering
|
||||
configLocationDescription=Filstien til konfigurationsfilen
|
||||
#custom
|
||||
pageant=Pageant agent
|
||||
gpgAgent=GPG Agent (Pro)
|
||||
gpgAgent=GPG-agent
|
||||
gateway=Gateway
|
||||
#custom
|
||||
gatewayDescription=Den gateway, der skal bruges når der oprettes forbindelse.
|
||||
|
||||
@@ -22,11 +22,11 @@ imageNameDescription=Die zu verwendende Kennung des Containerbildes
|
||||
containerName=Container-Name
|
||||
containerNameDescription=Der optionale benutzerdefinierte Containername
|
||||
vm=Virtuelle Maschine
|
||||
yubikeyPiv=Yubikey PIV (Pro)
|
||||
yubikeyPiv=Yubikey PIV
|
||||
vmDescription=Die zugehörige Konfigurationsdatei.
|
||||
vmwareScan=VMware Desktop-Hypervisoren
|
||||
library=Bibliothek
|
||||
customPkcs11Library=Benutzerdefinierte PKCS#11-Bibliothek (Pro)
|
||||
customPkcs11Library=Benutzerdefinierte PKCS#11-Bibliothek
|
||||
vmwareMachine.displayName=VMware Virtuelle Maschine
|
||||
vmwareMachine.displayDescription=Verbindung zu einer virtuellen Maschine über SSH
|
||||
vmwareInstallation.displayName=VMware Desktop Hypervisor Installation
|
||||
@@ -266,7 +266,7 @@ configHostDescription=Der Host, auf dem sich die Konfiguration befindet
|
||||
configLocation=Config-Speicherort
|
||||
configLocationDescription=Der Dateipfad der Konfigurationsdatei
|
||||
pageant=Pageant
|
||||
gpgAgent=GPG Agent (Pro)
|
||||
gpgAgent=GPG-Agent
|
||||
gateway=Gateway
|
||||
gatewayDescription=Das optionale Gateway, das bei der Verbindung verwendet wird.
|
||||
connectionInformation=Verbindungsinformationen
|
||||
|
||||
@@ -21,11 +21,13 @@ imageNameDescription=The container image identifier to use
|
||||
containerName=Container name
|
||||
containerNameDescription=The optional custom container name
|
||||
vm=Virtual machine
|
||||
yubikeyPiv=Yubikey PIV (Pro)
|
||||
#force
|
||||
yubikeyPiv=Yubikey PIV
|
||||
vmDescription=The associated configuration file.
|
||||
vmwareScan=VMware desktop hypervisors
|
||||
library=Library
|
||||
customPkcs11Library=Custom PKCS#11 library (Pro)
|
||||
#force
|
||||
customPkcs11Library=Custom PKCS#11 library
|
||||
vmwareMachine.displayName=VMware Virtual Machine
|
||||
vmwareMachine.displayDescription=Connect to a virtual machine via SSH
|
||||
vmwareInstallation.displayName=VMware desktop hypervisor installation
|
||||
@@ -264,7 +266,8 @@ configHostDescription=The host on which the config is located on
|
||||
configLocation=Config location
|
||||
configLocationDescription=The file path of the config file
|
||||
pageant=Pageant
|
||||
gpgAgent=GPG Agent (Pro)
|
||||
#force
|
||||
gpgAgent=GPG Agent
|
||||
gateway=Gateway
|
||||
gatewayDescription=The optional gateway to use when connecting.
|
||||
connectionInformation=Connection information
|
||||
|
||||
@@ -21,11 +21,11 @@ imageNameDescription=El identificador de la imagen contenedora a utilizar
|
||||
containerName=Nombre del contenedor
|
||||
containerNameDescription=El nombre opcional del contenedor personalizado
|
||||
vm=Máquina virtual
|
||||
yubikeyPiv=Yubikey PIV (Pro)
|
||||
yubikeyPiv=Yubikey PIV
|
||||
vmDescription=El archivo de configuración asociado.
|
||||
vmwareScan=Hipervisores de escritorio VMware
|
||||
library=Biblioteca
|
||||
customPkcs11Library=Biblioteca PKCS#11 personalizada (Pro)
|
||||
customPkcs11Library=Biblioteca PKCS#11 personalizada
|
||||
vmwareMachine.displayName=Máquina virtual VMware
|
||||
vmwareMachine.displayDescription=Conectarse a una máquina virtual mediante SSH
|
||||
vmwareInstallation.displayName=Instalación del hipervisor de escritorio VMware
|
||||
@@ -263,7 +263,7 @@ configHostDescription=El host en el que se encuentra la configuración
|
||||
configLocation=Ubicación de la configuración
|
||||
configLocationDescription=La ruta del archivo de configuración
|
||||
pageant=Concurso
|
||||
gpgAgent=Agente GPG (Pro)
|
||||
gpgAgent=Agente GPG
|
||||
gateway=Pasarela
|
||||
gatewayDescription=La puerta de enlace opcional que se utilizará al conectarse.
|
||||
connectionInformation=Información de conexión
|
||||
|
||||
@@ -21,11 +21,11 @@ imageNameDescription=L'identifiant de l'image du conteneur à utiliser
|
||||
containerName=Nom du conteneur
|
||||
containerNameDescription=Le nom facultatif du conteneur personnalisé
|
||||
vm=Machine virtuelle
|
||||
yubikeyPiv=Yubikey PIV (Pro)
|
||||
yubikeyPiv=Yubikey PIV
|
||||
vmDescription=Le fichier de configuration associé.
|
||||
vmwareScan=Hyperviseurs de bureau VMware
|
||||
library=Bibliothèque
|
||||
customPkcs11Library=Bibliothèque PKCS#11 personnalisée (Pro)
|
||||
customPkcs11Library=Bibliothèque PKCS#11 personnalisée
|
||||
vmwareMachine.displayName=Machine virtuelle VMware
|
||||
vmwareMachine.displayDescription=Se connecter à une machine virtuelle via SSH
|
||||
vmwareInstallation.displayName=Installation de l'hyperviseur de bureau VMware
|
||||
@@ -263,7 +263,7 @@ configHostDescription=L'hôte sur lequel se trouve le config
|
||||
configLocation=Emplacement de la configuration
|
||||
configLocationDescription=Le chemin d'accès au fichier de configuration
|
||||
pageant=Pageant
|
||||
gpgAgent=Agent GPG (Pro)
|
||||
gpgAgent=Agent GPG
|
||||
gateway=Passerelle
|
||||
gatewayDescription=La passerelle optionnelle à utiliser lors de la connexion.
|
||||
connectionInformation=Informations sur la connexion
|
||||
|
||||
@@ -21,11 +21,11 @@ imageNameDescription=L'identificatore dell'immagine del contenitore da utilizzar
|
||||
containerName=Nome del contenitore
|
||||
containerNameDescription=Il nome opzionale del contenitore personalizzato
|
||||
vm=Macchina virtuale
|
||||
yubikeyPiv=Yubikey PIV (Pro)
|
||||
yubikeyPiv=Yubikey PIV
|
||||
vmDescription=Il file di configurazione associato.
|
||||
vmwareScan=Ipervisori desktop VMware
|
||||
library=Biblioteca
|
||||
customPkcs11Library=Libreria PKCS#11 personalizzata (Pro)
|
||||
customPkcs11Library=Libreria PKCS#11 personalizzata
|
||||
vmwareMachine.displayName=Macchina virtuale VMware
|
||||
vmwareMachine.displayDescription=Connettersi a una macchina virtuale tramite SSH
|
||||
vmwareInstallation.displayName=Installazione dell'hypervisor desktop VMware
|
||||
@@ -263,7 +263,7 @@ configHostDescription=L'host su cui si trova la configurazione
|
||||
configLocation=Posizione della configurazione
|
||||
configLocationDescription=Il percorso del file di configurazione
|
||||
pageant=Pagina
|
||||
gpgAgent=Agente GPG (Pro)
|
||||
gpgAgent=Agente GPG
|
||||
gateway=Gateway
|
||||
gatewayDescription=Il gateway opzionale da utilizzare per la connessione.
|
||||
connectionInformation=Informazioni sulla connessione
|
||||
|
||||
@@ -21,11 +21,11 @@ imageNameDescription=使用するコンテナ画像識別子
|
||||
containerName=コンテナ名
|
||||
containerNameDescription=オプションのカスタムコンテナ名
|
||||
vm=仮想マシン
|
||||
yubikeyPiv=ユビキーPIV(プロ)
|
||||
yubikeyPiv=ユビキーPIV
|
||||
vmDescription=関連する設定ファイル。
|
||||
vmwareScan=VMwareデスクトップハイパーバイザー
|
||||
library=ライブラリ
|
||||
customPkcs11Library=カスタムPKCS#11ライブラリ(Pro)
|
||||
customPkcs11Library=カスタムPKCS#11ライブラリ
|
||||
vmwareMachine.displayName=VMware仮想マシン
|
||||
vmwareMachine.displayDescription=SSH経由で仮想マシンに接続する
|
||||
vmwareInstallation.displayName=VMwareデスクトップハイパーバイザーのインストール
|
||||
@@ -263,7 +263,7 @@ configHostDescription=コンフィグが置かれているホスト
|
||||
configLocation=設定場所
|
||||
configLocationDescription=コンフィグファイルのファイルパス
|
||||
pageant=ページェント
|
||||
gpgAgent=GPGエージェント(Pro)
|
||||
gpgAgent=GPGエージェント
|
||||
gateway=ゲートウェイ
|
||||
gatewayDescription=接続時に使用するオプションのゲートウェイ。
|
||||
connectionInformation=接続情報
|
||||
|
||||
@@ -21,11 +21,11 @@ imageNameDescription=De te gebruiken container image identifier
|
||||
containerName=Containernaam
|
||||
containerNameDescription=De optionele aangepaste containernaam
|
||||
vm=Virtuele machine
|
||||
yubikeyPiv=Yubikey PIV (Pro)
|
||||
yubikeyPiv=Yubikey PIV
|
||||
vmDescription=Het bijbehorende configuratiebestand.
|
||||
vmwareScan=VMware desktop hypervisors
|
||||
library=Bibliotheek
|
||||
customPkcs11Library=Aangepaste PKCS#11-bibliotheek (Pro)
|
||||
customPkcs11Library=Aangepaste PKCS#11-bibliotheek
|
||||
vmwareMachine.displayName=VMware virtuele machine
|
||||
vmwareMachine.displayDescription=Verbinding maken met een virtuele machine via SSH
|
||||
vmwareInstallation.displayName=VMware desktop hypervisor installatie
|
||||
@@ -263,7 +263,7 @@ configHostDescription=De host waarop de config zich bevindt
|
||||
configLocation=Configuratie locatie
|
||||
configLocationDescription=Het bestandspad van het configuratiebestand
|
||||
pageant=Verkiezing
|
||||
gpgAgent=GPG Agent (Pro)
|
||||
gpgAgent=GPG-agent
|
||||
gateway=Gateway
|
||||
gatewayDescription=De optionele gateway om te gebruiken bij het verbinden.
|
||||
connectionInformation=Verbindingsinformatie
|
||||
|
||||
@@ -21,11 +21,11 @@ imageNameDescription=O identificador de imagem de contentor a utilizar
|
||||
containerName=Nome do contentor
|
||||
containerNameDescription=O nome opcional do contentor personalizado
|
||||
vm=Máquina virtual
|
||||
yubikeyPiv=Yubikey PIV (Pro)
|
||||
yubikeyPiv=Yubikey PIV
|
||||
vmDescription=O ficheiro de configuração associado.
|
||||
vmwareScan=Hipervisores de desktop VMware
|
||||
library=Biblioteca
|
||||
customPkcs11Library=Biblioteca PKCS#11 personalizada (Pro)
|
||||
customPkcs11Library=Biblioteca PKCS#11 personalizada
|
||||
vmwareMachine.displayName=Máquina virtual VMware
|
||||
vmwareMachine.displayDescription=Liga-te a uma máquina virtual através de SSH
|
||||
vmwareInstallation.displayName=Instalação do hipervisor de ambiente de trabalho VMware
|
||||
@@ -263,7 +263,7 @@ configHostDescription=O host no qual a configuração está localizada
|
||||
configLocation=Local de configuração
|
||||
configLocationDescription=O caminho do ficheiro de configuração
|
||||
pageant=Concurso
|
||||
gpgAgent=Agente GPG (Pro)
|
||||
gpgAgent=Agente GPG
|
||||
gateway=Gateway
|
||||
gatewayDescription=O gateway opcional a utilizar quando estabelece a ligação.
|
||||
connectionInformation=Informação de ligação
|
||||
|
||||
@@ -21,11 +21,11 @@ imageNameDescription=Идентификатор образа контейнер
|
||||
containerName=Название контейнера
|
||||
containerNameDescription=Необязательное пользовательское название контейнера
|
||||
vm=Виртуальная машина
|
||||
yubikeyPiv=Yubikey PIV (Pro)
|
||||
yubikeyPiv=Yubikey PIV
|
||||
vmDescription=Связанный с ним файл конфигурации.
|
||||
vmwareScan=Гипервизоры VMware для настольных компьютеров
|
||||
library=Библиотека
|
||||
customPkcs11Library=Пользовательская библиотека PKCS#11 (Pro)
|
||||
customPkcs11Library=Пользовательская библиотека PKCS#11
|
||||
vmwareMachine.displayName=Виртуальная машина VMware
|
||||
vmwareMachine.displayDescription=Подключение к виртуальной машине через SSH
|
||||
vmwareInstallation.displayName=Установка гипервизора VMware для настольных компьютеров
|
||||
@@ -263,7 +263,7 @@ configHostDescription=Хост, на котором расположен кон
|
||||
configLocation=Расположение конфигурации
|
||||
configLocationDescription=Путь к файлу конфигурации
|
||||
pageant=Pageant
|
||||
gpgAgent=GPG Agent (Pro)
|
||||
gpgAgent=Агент GPG
|
||||
gateway=Шлюз
|
||||
gatewayDescription=Дополнительный шлюз, который нужно использовать при подключении.
|
||||
connectionInformation=Информация о подключении
|
||||
|
||||
@@ -21,11 +21,11 @@ imageNameDescription=Kullanılacak konteyner imaj tanımlayıcısı
|
||||
containerName=Konteyner adı
|
||||
containerNameDescription=İsteğe bağlı özel konteyner adı
|
||||
vm=Sanal makine
|
||||
yubikeyPiv=Yubikey PIV (Pro)
|
||||
yubikeyPiv=Yubikey PIV
|
||||
vmDescription=İlişkili yapılandırma dosyası.
|
||||
vmwareScan=VMware masaüstü hipervizörleri
|
||||
library=Kütüphane
|
||||
customPkcs11Library=Özel PKCS#11 kütüphanesi (Pro)
|
||||
customPkcs11Library=Özel PKCS#11 kütüphanesi
|
||||
vmwareMachine.displayName=VMware Sanal Makinesi
|
||||
vmwareMachine.displayDescription=SSH aracılığıyla bir sanal makineye bağlanma
|
||||
vmwareInstallation.displayName=VMware masaüstü hipervizör kurulumu
|
||||
@@ -263,7 +263,7 @@ configHostDescription=Yapılandırmanın üzerinde bulunduğu ana bilgisayar
|
||||
configLocation=Konfigürasyon konumu
|
||||
configLocationDescription=Yapılandırma dosyasının dosya yolu
|
||||
pageant=Pageant
|
||||
gpgAgent=GPG Agent (Pro)
|
||||
gpgAgent=GPG Temsilcisi
|
||||
gateway=Ağ Geçidi
|
||||
gatewayDescription=Bağlanırken kullanılacak isteğe bağlı ağ geçidi.
|
||||
connectionInformation=Bağlantı bilgileri
|
||||
|
||||
@@ -21,11 +21,11 @@ imageNameDescription=要使用的容器图像标识符
|
||||
containerName=容器名称
|
||||
containerNameDescription=可选的自定义容器名称
|
||||
vm=虚拟机
|
||||
yubikeyPiv=Yubikey PIV (Pro)
|
||||
yubikeyPiv=Yubikey PIV
|
||||
vmDescription=相关的配置文件。
|
||||
vmwareScan=VMware 桌面管理程序
|
||||
library=图书馆
|
||||
customPkcs11Library=自定义 PKCS#11 库(专业版)
|
||||
customPkcs11Library=自定义 PKCS#11 库
|
||||
vmwareMachine.displayName=VMware 虚拟机
|
||||
vmwareMachine.displayDescription=通过 SSH 连接虚拟机
|
||||
vmwareInstallation.displayName=安装 VMware 桌面管理程序
|
||||
@@ -263,7 +263,7 @@ configHostDescription=配置所在的主机
|
||||
configLocation=配置位置
|
||||
configLocationDescription=配置文件的文件路径
|
||||
pageant=页面
|
||||
gpgAgent=GPG 代理(专业版)
|
||||
gpgAgent=GPG 代理
|
||||
gateway=网关
|
||||
gatewayDescription=连接时使用的可选网关。
|
||||
connectionInformation=连接信息
|
||||
|
||||
Reference in New Issue
Block a user