mirror of
https://github.com/lollipopkit/flutter_server_box.git
synced 2025-12-17 07:14:28 +01:00
feat: custom shell script install path (#545)
This commit is contained in:
@@ -690,7 +690,7 @@
|
|||||||
ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
|
ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
|
||||||
CLANG_ENABLE_MODULES = YES;
|
CLANG_ENABLE_MODULES = YES;
|
||||||
CODE_SIGN_ENTITLEMENTS = Runner/Runner.entitlements;
|
CODE_SIGN_ENTITLEMENTS = Runner/Runner.entitlements;
|
||||||
CURRENT_PROJECT_VERSION = 1068;
|
CURRENT_PROJECT_VERSION = 1069;
|
||||||
DEVELOPMENT_TEAM = BA88US33G6;
|
DEVELOPMENT_TEAM = BA88US33G6;
|
||||||
ENABLE_BITCODE = NO;
|
ENABLE_BITCODE = NO;
|
||||||
INFOPLIST_FILE = "Runner/Info-$(CONFIGURATION).plist";
|
INFOPLIST_FILE = "Runner/Info-$(CONFIGURATION).plist";
|
||||||
@@ -700,7 +700,7 @@
|
|||||||
"$(inherited)",
|
"$(inherited)",
|
||||||
"@executable_path/Frameworks",
|
"@executable_path/Frameworks",
|
||||||
);
|
);
|
||||||
MARKETING_VERSION = 1.0.1068;
|
MARKETING_VERSION = 1.0.1069;
|
||||||
PRODUCT_BUNDLE_IDENTIFIER = com.lollipopkit.toolbox;
|
PRODUCT_BUNDLE_IDENTIFIER = com.lollipopkit.toolbox;
|
||||||
PRODUCT_NAME = "$(TARGET_NAME)";
|
PRODUCT_NAME = "$(TARGET_NAME)";
|
||||||
SWIFT_OBJC_BRIDGING_HEADER = "Runner/Runner-Bridging-Header.h";
|
SWIFT_OBJC_BRIDGING_HEADER = "Runner/Runner-Bridging-Header.h";
|
||||||
@@ -826,7 +826,7 @@
|
|||||||
ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
|
ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
|
||||||
CLANG_ENABLE_MODULES = YES;
|
CLANG_ENABLE_MODULES = YES;
|
||||||
CODE_SIGN_ENTITLEMENTS = Runner/Runner.entitlements;
|
CODE_SIGN_ENTITLEMENTS = Runner/Runner.entitlements;
|
||||||
CURRENT_PROJECT_VERSION = 1068;
|
CURRENT_PROJECT_VERSION = 1069;
|
||||||
DEVELOPMENT_TEAM = BA88US33G6;
|
DEVELOPMENT_TEAM = BA88US33G6;
|
||||||
ENABLE_BITCODE = NO;
|
ENABLE_BITCODE = NO;
|
||||||
INFOPLIST_FILE = "Runner/Info-$(CONFIGURATION).plist";
|
INFOPLIST_FILE = "Runner/Info-$(CONFIGURATION).plist";
|
||||||
@@ -836,7 +836,7 @@
|
|||||||
"$(inherited)",
|
"$(inherited)",
|
||||||
"@executable_path/Frameworks",
|
"@executable_path/Frameworks",
|
||||||
);
|
);
|
||||||
MARKETING_VERSION = 1.0.1068;
|
MARKETING_VERSION = 1.0.1069;
|
||||||
PRODUCT_BUNDLE_IDENTIFIER = com.lollipopkit.toolbox;
|
PRODUCT_BUNDLE_IDENTIFIER = com.lollipopkit.toolbox;
|
||||||
PRODUCT_NAME = "$(TARGET_NAME)";
|
PRODUCT_NAME = "$(TARGET_NAME)";
|
||||||
SWIFT_OBJC_BRIDGING_HEADER = "Runner/Runner-Bridging-Header.h";
|
SWIFT_OBJC_BRIDGING_HEADER = "Runner/Runner-Bridging-Header.h";
|
||||||
@@ -854,7 +854,7 @@
|
|||||||
ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
|
ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
|
||||||
CLANG_ENABLE_MODULES = YES;
|
CLANG_ENABLE_MODULES = YES;
|
||||||
CODE_SIGN_ENTITLEMENTS = Runner/Runner.entitlements;
|
CODE_SIGN_ENTITLEMENTS = Runner/Runner.entitlements;
|
||||||
CURRENT_PROJECT_VERSION = 1068;
|
CURRENT_PROJECT_VERSION = 1069;
|
||||||
DEVELOPMENT_TEAM = BA88US33G6;
|
DEVELOPMENT_TEAM = BA88US33G6;
|
||||||
ENABLE_BITCODE = NO;
|
ENABLE_BITCODE = NO;
|
||||||
INFOPLIST_FILE = "Runner/Info-$(CONFIGURATION).plist";
|
INFOPLIST_FILE = "Runner/Info-$(CONFIGURATION).plist";
|
||||||
@@ -864,7 +864,7 @@
|
|||||||
"$(inherited)",
|
"$(inherited)",
|
||||||
"@executable_path/Frameworks",
|
"@executable_path/Frameworks",
|
||||||
);
|
);
|
||||||
MARKETING_VERSION = 1.0.1068;
|
MARKETING_VERSION = 1.0.1069;
|
||||||
PRODUCT_BUNDLE_IDENTIFIER = com.lollipopkit.toolbox;
|
PRODUCT_BUNDLE_IDENTIFIER = com.lollipopkit.toolbox;
|
||||||
PRODUCT_NAME = "$(TARGET_NAME)";
|
PRODUCT_NAME = "$(TARGET_NAME)";
|
||||||
SWIFT_OBJC_BRIDGING_HEADER = "Runner/Runner-Bridging-Header.h";
|
SWIFT_OBJC_BRIDGING_HEADER = "Runner/Runner-Bridging-Header.h";
|
||||||
@@ -885,7 +885,7 @@
|
|||||||
CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = YES;
|
CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = YES;
|
||||||
CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE;
|
CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE;
|
||||||
CODE_SIGN_STYLE = Automatic;
|
CODE_SIGN_STYLE = Automatic;
|
||||||
CURRENT_PROJECT_VERSION = 1068;
|
CURRENT_PROJECT_VERSION = 1069;
|
||||||
DEVELOPMENT_TEAM = BA88US33G6;
|
DEVELOPMENT_TEAM = BA88US33G6;
|
||||||
GCC_C_LANGUAGE_STANDARD = gnu11;
|
GCC_C_LANGUAGE_STANDARD = gnu11;
|
||||||
GENERATE_INFOPLIST_FILE = YES;
|
GENERATE_INFOPLIST_FILE = YES;
|
||||||
@@ -898,7 +898,7 @@
|
|||||||
"@executable_path/Frameworks",
|
"@executable_path/Frameworks",
|
||||||
"@executable_path/../../Frameworks",
|
"@executable_path/../../Frameworks",
|
||||||
);
|
);
|
||||||
MARKETING_VERSION = 1.0.1068;
|
MARKETING_VERSION = 1.0.1069;
|
||||||
MTL_ENABLE_DEBUG_INFO = INCLUDE_SOURCE;
|
MTL_ENABLE_DEBUG_INFO = INCLUDE_SOURCE;
|
||||||
MTL_FAST_MATH = YES;
|
MTL_FAST_MATH = YES;
|
||||||
PRODUCT_BUNDLE_IDENTIFIER = com.lollipopkit.toolbox.StatusWidget;
|
PRODUCT_BUNDLE_IDENTIFIER = com.lollipopkit.toolbox.StatusWidget;
|
||||||
@@ -924,7 +924,7 @@
|
|||||||
CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = YES;
|
CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = YES;
|
||||||
CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE;
|
CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE;
|
||||||
CODE_SIGN_STYLE = Automatic;
|
CODE_SIGN_STYLE = Automatic;
|
||||||
CURRENT_PROJECT_VERSION = 1068;
|
CURRENT_PROJECT_VERSION = 1069;
|
||||||
DEVELOPMENT_TEAM = BA88US33G6;
|
DEVELOPMENT_TEAM = BA88US33G6;
|
||||||
GCC_C_LANGUAGE_STANDARD = gnu11;
|
GCC_C_LANGUAGE_STANDARD = gnu11;
|
||||||
GENERATE_INFOPLIST_FILE = YES;
|
GENERATE_INFOPLIST_FILE = YES;
|
||||||
@@ -937,7 +937,7 @@
|
|||||||
"@executable_path/Frameworks",
|
"@executable_path/Frameworks",
|
||||||
"@executable_path/../../Frameworks",
|
"@executable_path/../../Frameworks",
|
||||||
);
|
);
|
||||||
MARKETING_VERSION = 1.0.1068;
|
MARKETING_VERSION = 1.0.1069;
|
||||||
MTL_FAST_MATH = YES;
|
MTL_FAST_MATH = YES;
|
||||||
PRODUCT_BUNDLE_IDENTIFIER = com.lollipopkit.toolbox.StatusWidget;
|
PRODUCT_BUNDLE_IDENTIFIER = com.lollipopkit.toolbox.StatusWidget;
|
||||||
PRODUCT_NAME = "$(TARGET_NAME)";
|
PRODUCT_NAME = "$(TARGET_NAME)";
|
||||||
@@ -960,7 +960,7 @@
|
|||||||
CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = YES;
|
CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = YES;
|
||||||
CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE;
|
CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE;
|
||||||
CODE_SIGN_STYLE = Automatic;
|
CODE_SIGN_STYLE = Automatic;
|
||||||
CURRENT_PROJECT_VERSION = 1068;
|
CURRENT_PROJECT_VERSION = 1069;
|
||||||
DEVELOPMENT_TEAM = BA88US33G6;
|
DEVELOPMENT_TEAM = BA88US33G6;
|
||||||
GCC_C_LANGUAGE_STANDARD = gnu11;
|
GCC_C_LANGUAGE_STANDARD = gnu11;
|
||||||
GENERATE_INFOPLIST_FILE = YES;
|
GENERATE_INFOPLIST_FILE = YES;
|
||||||
@@ -973,7 +973,7 @@
|
|||||||
"@executable_path/Frameworks",
|
"@executable_path/Frameworks",
|
||||||
"@executable_path/../../Frameworks",
|
"@executable_path/../../Frameworks",
|
||||||
);
|
);
|
||||||
MARKETING_VERSION = 1.0.1068;
|
MARKETING_VERSION = 1.0.1069;
|
||||||
MTL_FAST_MATH = YES;
|
MTL_FAST_MATH = YES;
|
||||||
PRODUCT_BUNDLE_IDENTIFIER = com.lollipopkit.toolbox.StatusWidget;
|
PRODUCT_BUNDLE_IDENTIFIER = com.lollipopkit.toolbox.StatusWidget;
|
||||||
PRODUCT_NAME = "$(TARGET_NAME)";
|
PRODUCT_NAME = "$(TARGET_NAME)";
|
||||||
@@ -996,7 +996,7 @@
|
|||||||
CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = YES;
|
CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = YES;
|
||||||
CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE;
|
CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE;
|
||||||
CODE_SIGN_STYLE = Automatic;
|
CODE_SIGN_STYLE = Automatic;
|
||||||
CURRENT_PROJECT_VERSION = 1068;
|
CURRENT_PROJECT_VERSION = 1069;
|
||||||
DEVELOPMENT_ASSET_PATHS = "";
|
DEVELOPMENT_ASSET_PATHS = "";
|
||||||
DEVELOPMENT_TEAM = BA88US33G6;
|
DEVELOPMENT_TEAM = BA88US33G6;
|
||||||
ENABLE_PREVIEWS = YES;
|
ENABLE_PREVIEWS = YES;
|
||||||
@@ -1008,7 +1008,7 @@
|
|||||||
"$(inherited)",
|
"$(inherited)",
|
||||||
"@executable_path/Frameworks",
|
"@executable_path/Frameworks",
|
||||||
);
|
);
|
||||||
MARKETING_VERSION = 1.0.1068;
|
MARKETING_VERSION = 1.0.1069;
|
||||||
MTL_ENABLE_DEBUG_INFO = INCLUDE_SOURCE;
|
MTL_ENABLE_DEBUG_INFO = INCLUDE_SOURCE;
|
||||||
MTL_FAST_MATH = YES;
|
MTL_FAST_MATH = YES;
|
||||||
PRODUCT_BUNDLE_IDENTIFIER = com.lollipopkit.toolbox.WatchEnd;
|
PRODUCT_BUNDLE_IDENTIFIER = com.lollipopkit.toolbox.WatchEnd;
|
||||||
@@ -1037,7 +1037,7 @@
|
|||||||
CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = YES;
|
CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = YES;
|
||||||
CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE;
|
CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE;
|
||||||
CODE_SIGN_STYLE = Automatic;
|
CODE_SIGN_STYLE = Automatic;
|
||||||
CURRENT_PROJECT_VERSION = 1068;
|
CURRENT_PROJECT_VERSION = 1069;
|
||||||
DEVELOPMENT_ASSET_PATHS = "";
|
DEVELOPMENT_ASSET_PATHS = "";
|
||||||
DEVELOPMENT_TEAM = BA88US33G6;
|
DEVELOPMENT_TEAM = BA88US33G6;
|
||||||
ENABLE_PREVIEWS = YES;
|
ENABLE_PREVIEWS = YES;
|
||||||
@@ -1049,7 +1049,7 @@
|
|||||||
"$(inherited)",
|
"$(inherited)",
|
||||||
"@executable_path/Frameworks",
|
"@executable_path/Frameworks",
|
||||||
);
|
);
|
||||||
MARKETING_VERSION = 1.0.1068;
|
MARKETING_VERSION = 1.0.1069;
|
||||||
MTL_FAST_MATH = YES;
|
MTL_FAST_MATH = YES;
|
||||||
PRODUCT_BUNDLE_IDENTIFIER = com.lollipopkit.toolbox.WatchEnd;
|
PRODUCT_BUNDLE_IDENTIFIER = com.lollipopkit.toolbox.WatchEnd;
|
||||||
PRODUCT_NAME = ServerBox;
|
PRODUCT_NAME = ServerBox;
|
||||||
@@ -1075,7 +1075,7 @@
|
|||||||
CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = YES;
|
CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = YES;
|
||||||
CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE;
|
CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE;
|
||||||
CODE_SIGN_STYLE = Automatic;
|
CODE_SIGN_STYLE = Automatic;
|
||||||
CURRENT_PROJECT_VERSION = 1068;
|
CURRENT_PROJECT_VERSION = 1069;
|
||||||
DEVELOPMENT_ASSET_PATHS = "";
|
DEVELOPMENT_ASSET_PATHS = "";
|
||||||
DEVELOPMENT_TEAM = BA88US33G6;
|
DEVELOPMENT_TEAM = BA88US33G6;
|
||||||
ENABLE_PREVIEWS = YES;
|
ENABLE_PREVIEWS = YES;
|
||||||
@@ -1087,7 +1087,7 @@
|
|||||||
"$(inherited)",
|
"$(inherited)",
|
||||||
"@executable_path/Frameworks",
|
"@executable_path/Frameworks",
|
||||||
);
|
);
|
||||||
MARKETING_VERSION = 1.0.1068;
|
MARKETING_VERSION = 1.0.1069;
|
||||||
MTL_FAST_MATH = YES;
|
MTL_FAST_MATH = YES;
|
||||||
PRODUCT_BUNDLE_IDENTIFIER = com.lollipopkit.toolbox.WatchEnd;
|
PRODUCT_BUNDLE_IDENTIFIER = com.lollipopkit.toolbox.WatchEnd;
|
||||||
PRODUCT_NAME = ServerBox;
|
PRODUCT_NAME = ServerBox;
|
||||||
|
|||||||
@@ -1,4 +1,5 @@
|
|||||||
import 'package:server_box/core/extension/context/locale.dart';
|
import 'package:server_box/core/extension/context/locale.dart';
|
||||||
|
import 'package:server_box/data/provider/server.dart';
|
||||||
|
|
||||||
import 'package:server_box/data/res/build_data.dart';
|
import 'package:server_box/data/res/build_data.dart';
|
||||||
import 'package:server_box/data/model/server/system.dart';
|
import 'package:server_box/data/model/server/system.dart';
|
||||||
@@ -29,6 +30,9 @@ enum ShellFunc {
|
|||||||
/// Default is [scriptDirTmp]/[scriptFile], if this path is not accessible,
|
/// Default is [scriptDirTmp]/[scriptFile], if this path is not accessible,
|
||||||
/// it will be changed to [scriptDirHome]/[scriptFile].
|
/// it will be changed to [scriptDirHome]/[scriptFile].
|
||||||
static String getScriptDir(String id) {
|
static String getScriptDir(String id) {
|
||||||
|
final customScriptDir =
|
||||||
|
ServerProvider.pick(id: id)?.value.spi.custom?.scriptDir;
|
||||||
|
if (customScriptDir != null) return customScriptDir;
|
||||||
return _scriptDirMap.putIfAbsent(id, () {
|
return _scriptDirMap.putIfAbsent(id, () {
|
||||||
return scriptDirTmp;
|
return scriptDirTmp;
|
||||||
});
|
});
|
||||||
|
|||||||
@@ -3,6 +3,6 @@
|
|||||||
|
|
||||||
class BuildData {
|
class BuildData {
|
||||||
static const String name = "ServerBox";
|
static const String name = "ServerBox";
|
||||||
static const int build = 1068;
|
static const int build = 1069;
|
||||||
static const int script = 57;
|
static const int script = 57;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -161,6 +161,8 @@
|
|||||||
"size": "Größe",
|
"size": "Größe",
|
||||||
"snippet": "Snippet",
|
"snippet": "Snippet",
|
||||||
"softWrap": "Weicher Umbruch",
|
"softWrap": "Weicher Umbruch",
|
||||||
|
"specifyDev": "Gerät angeben",
|
||||||
|
"specifyDevTip": "Zum Beispiel bezieht sich die Standard-Netzwerkverkehrsstatistik auf alle Geräte. Hier können Sie ein bestimmtes Gerät angeben.",
|
||||||
"speed": "Tempo",
|
"speed": "Tempo",
|
||||||
"spentTime": "Benötigte Zeit: {time}",
|
"spentTime": "Benötigte Zeit: {time}",
|
||||||
"sshTermHelp": "Wenn das Terminal scrollbar ist, kann durch horizontales Ziehen Text ausgewählt werden. Durch Klicken auf die Tastentaste wird die Tastatur ein- oder ausgeschaltet. Das Dateisymbol öffnet den aktuellen Pfad SFTP. Die Zwischenablage-Schaltfläche kopiert den Inhalt, wenn Text ausgewählt ist, und fügt Inhalte aus der Zwischenablage in das Terminal ein, wenn kein Text ausgewählt ist und Inhalte in der Zwischenablage vorhanden sind. Das Codesymbol fügt Code-Schnipsel ins Terminal ein und führt sie aus.",
|
"sshTermHelp": "Wenn das Terminal scrollbar ist, kann durch horizontales Ziehen Text ausgewählt werden. Durch Klicken auf die Tastentaste wird die Tastatur ein- oder ausgeschaltet. Das Dateisymbol öffnet den aktuellen Pfad SFTP. Die Zwischenablage-Schaltfläche kopiert den Inhalt, wenn Text ausgewählt ist, und fügt Inhalte aus der Zwischenablage in das Terminal ein, wenn kein Text ausgewählt ist und Inhalte in der Zwischenablage vorhanden sind. Das Codesymbol fügt Code-Schnipsel ins Terminal ein und führt sie aus.",
|
||||||
|
|||||||
@@ -161,6 +161,8 @@
|
|||||||
"size": "Size",
|
"size": "Size",
|
||||||
"snippet": "Snippet",
|
"snippet": "Snippet",
|
||||||
"softWrap": "Soft wrap",
|
"softWrap": "Soft wrap",
|
||||||
|
"specifyDev": "Specify device",
|
||||||
|
"specifyDevTip": "For example, network traffic statistics are by default for all devices. You can specify a particular device here.",
|
||||||
"speed": "Speed",
|
"speed": "Speed",
|
||||||
"spentTime": "Spent time: {time}",
|
"spentTime": "Spent time: {time}",
|
||||||
"sshTermHelp": "When the terminal is scrollable, dragging horizontally can select text. Clicking the keyboard button turns the keyboard on/off. The file icon opens the current path SFTP. The clipboard button copies the content when text is selected, and pastes content from the clipboard into the terminal when no text is selected and there is content on the clipboard. The code icon pastes code snippets into the terminal and executes them.",
|
"sshTermHelp": "When the terminal is scrollable, dragging horizontally can select text. Clicking the keyboard button turns the keyboard on/off. The file icon opens the current path SFTP. The clipboard button copies the content when text is selected, and pastes content from the clipboard into the terminal when no text is selected and there is content on the clipboard. The code icon pastes code snippets into the terminal and executes them.",
|
||||||
|
|||||||
@@ -161,6 +161,8 @@
|
|||||||
"size": "Tamaño",
|
"size": "Tamaño",
|
||||||
"snippet": "Fragmento de código",
|
"snippet": "Fragmento de código",
|
||||||
"softWrap": "Salto de línea suave",
|
"softWrap": "Salto de línea suave",
|
||||||
|
"specifyDev": "Especificar dispositivo",
|
||||||
|
"specifyDevTip": "Por ejemplo, las estadísticas de tráfico de red son por defecto para todos los dispositivos. Aquí puede especificar un dispositivo en particular.",
|
||||||
"speed": "Velocidad",
|
"speed": "Velocidad",
|
||||||
"spentTime": "Tiempo gastado: {time}",
|
"spentTime": "Tiempo gastado: {time}",
|
||||||
"sshTermHelp": "Cuando el terminal es desplazable, arrastrar horizontalmente puede seleccionar texto. Hacer clic en el botón del teclado enciende/apaga el teclado. El icono de archivo abre el SFTP de la ruta actual. El botón del portapapeles copia el contenido cuando se selecciona texto y pega el contenido del portapapeles en el terminal cuando no se selecciona texto y hay contenido en el portapapeles. El icono de código pega fragmentos de código en el terminal y los ejecuta.",
|
"sshTermHelp": "Cuando el terminal es desplazable, arrastrar horizontalmente puede seleccionar texto. Hacer clic en el botón del teclado enciende/apaga el teclado. El icono de archivo abre el SFTP de la ruta actual. El botón del portapapeles copia el contenido cuando se selecciona texto y pega el contenido del portapapeles en el terminal cuando no se selecciona texto y hay contenido en el portapapeles. El icono de código pega fragmentos de código en el terminal y los ejecuta.",
|
||||||
|
|||||||
@@ -161,6 +161,8 @@
|
|||||||
"size": "Taille",
|
"size": "Taille",
|
||||||
"snippet": "Extrait",
|
"snippet": "Extrait",
|
||||||
"softWrap": "Retour à la ligne souple",
|
"softWrap": "Retour à la ligne souple",
|
||||||
|
"specifyDev": "Spécifier l'appareil",
|
||||||
|
"specifyDevTip": "Par exemple, les statistiques de trafic réseau concernent par défaut tous les appareils. Vous pouvez spécifier ici un appareil particulier.",
|
||||||
"speed": "Vitesse",
|
"speed": "Vitesse",
|
||||||
"spentTime": "Temps écoulé : {time}",
|
"spentTime": "Temps écoulé : {time}",
|
||||||
"sshTermHelp": "Lorsque le terminal est défilable, faire glisser horizontalement permet de sélectionner du texte. En cliquant sur le bouton du clavier, vous activez/désactivez le clavier. L'icône de fichier ouvre le chemin actuel SFTP. Le bouton du presse-papiers copie le contenu lorsque du texte est sélectionné, et colle le contenu du presse-papiers dans le terminal lorsqu'aucun texte n'est sélectionné et qu'il y a du contenu dans le presse-papiers. L'icône de code colle des extraits de code dans le terminal et les exécute.",
|
"sshTermHelp": "Lorsque le terminal est défilable, faire glisser horizontalement permet de sélectionner du texte. En cliquant sur le bouton du clavier, vous activez/désactivez le clavier. L'icône de fichier ouvre le chemin actuel SFTP. Le bouton du presse-papiers copie le contenu lorsque du texte est sélectionné, et colle le contenu du presse-papiers dans le terminal lorsqu'aucun texte n'est sélectionné et qu'il y a du contenu dans le presse-papiers. L'icône de code colle des extraits de code dans le terminal et les exécute.",
|
||||||
|
|||||||
@@ -161,6 +161,8 @@
|
|||||||
"size": "Ukuran",
|
"size": "Ukuran",
|
||||||
"snippet": "Snippet",
|
"snippet": "Snippet",
|
||||||
"softWrap": "Pembungkus lembut",
|
"softWrap": "Pembungkus lembut",
|
||||||
|
"specifyDev": "Tentukan perangkat",
|
||||||
|
"specifyDevTip": "Misalnya, statistik lalu lintas jaringan secara default adalah untuk semua perangkat. Anda dapat menentukan perangkat tertentu di sini.",
|
||||||
"speed": "Kecepatan",
|
"speed": "Kecepatan",
|
||||||
"spentTime": "Menghabiskan waktu: {time}",
|
"spentTime": "Menghabiskan waktu: {time}",
|
||||||
"sshTermHelp": "Ketika terminal dapat digulirkan, menggeser secara horizontal dapat memilih teks. Mengklik tombol keyboard mengaktifkan/menonaktifkan keyboard. Ikon file membuka SFTP jalur saat ini. Tombol papan klip menyalin konten saat teks dipilih, dan menempelkan konten dari papan klip ke terminal saat tidak ada teks yang dipilih dan ada konten di papan klip. Ikon kode menempelkan potongan kode ke terminal dan mengeksekusinya.",
|
"sshTermHelp": "Ketika terminal dapat digulirkan, menggeser secara horizontal dapat memilih teks. Mengklik tombol keyboard mengaktifkan/menonaktifkan keyboard. Ikon file membuka SFTP jalur saat ini. Tombol papan klip menyalin konten saat teks dipilih, dan menempelkan konten dari papan klip ke terminal saat tidak ada teks yang dipilih dan ada konten di papan klip. Ikon kode menempelkan potongan kode ke terminal dan mengeksekusinya.",
|
||||||
|
|||||||
@@ -161,6 +161,8 @@
|
|||||||
"size": "サイズ",
|
"size": "サイズ",
|
||||||
"snippet": "スニペット",
|
"snippet": "スニペット",
|
||||||
"softWrap": "ソフトラップ",
|
"softWrap": "ソフトラップ",
|
||||||
|
"specifyDev": "デバイスを指定",
|
||||||
|
"specifyDevTip": "例えば、ネットワークトラフィック統計はデフォルトですべてのデバイスに対するものです。ここで特定のデバイスを指定できます。",
|
||||||
"speed": "速度",
|
"speed": "速度",
|
||||||
"spentTime": "時間を費やしました: {time}",
|
"spentTime": "時間を費やしました: {time}",
|
||||||
"sshTermHelp": "ターミナルがスクロール可能な場合、横にドラッグするとテキストを選択できます。キーボードボタンをクリックするとキーボードのオン/オフが切り替わります。ファイルアイコンは現在のパスSFTPを開きます。クリップボードボタンは、テキストが選択されているときに内容をコピーし、テキストが選択されておらずクリップボードに内容がある場合には、その内容をターミナルに貼り付けます。コードアイコンは、コードスニペットをターミナルに貼り付けて実行します。",
|
"sshTermHelp": "ターミナルがスクロール可能な場合、横にドラッグするとテキストを選択できます。キーボードボタンをクリックするとキーボードのオン/オフが切り替わります。ファイルアイコンは現在のパスSFTPを開きます。クリップボードボタンは、テキストが選択されているときに内容をコピーし、テキストが選択されておらずクリップボードに内容がある場合には、その内容をターミナルに貼り付けます。コードアイコンは、コードスニペットをターミナルに貼り付けて実行します。",
|
||||||
|
|||||||
@@ -161,6 +161,8 @@
|
|||||||
"size": "Grootte",
|
"size": "Grootte",
|
||||||
"snippet": "Fragment",
|
"snippet": "Fragment",
|
||||||
"softWrap": "Zachte wrap",
|
"softWrap": "Zachte wrap",
|
||||||
|
"specifyDev": "Apparaat specificeren",
|
||||||
|
"specifyDevTip": "Bijvoorbeeld, netwerkverkeersstatistieken zijn standaard voor alle apparaten. Hier kunt u een specifiek apparaat opgeven.",
|
||||||
"speed": "Snelheid",
|
"speed": "Snelheid",
|
||||||
"spentTime": "Gebruikte tijd: {time}",
|
"spentTime": "Gebruikte tijd: {time}",
|
||||||
"sshTermHelp": "Wanneer het terminal scrollbaar is, kan horizontaal slepen tekst selecteren. Klikken op de toetsenbordknop schakelt het toetsenbord aan/uit. Het bestandsicoon opent de huidige pad SFTP. De klembordknop kopieert de inhoud wanneer tekst is geselecteerd en plakt inhoud van het klembord in de terminal wanneer geen tekst is geselecteerd en er inhoud op het klembord staat. Het code-icoon plakt codefragmenten in de terminal en voert ze uit.",
|
"sshTermHelp": "Wanneer het terminal scrollbaar is, kan horizontaal slepen tekst selecteren. Klikken op de toetsenbordknop schakelt het toetsenbord aan/uit. Het bestandsicoon opent de huidige pad SFTP. De klembordknop kopieert de inhoud wanneer tekst is geselecteerd en plakt inhoud van het klembord in de terminal wanneer geen tekst is geselecteerd en er inhoud op het klembord staat. Het code-icoon plakt codefragmenten in de terminal en voert ze uit.",
|
||||||
|
|||||||
@@ -161,6 +161,8 @@
|
|||||||
"size": "Tamanho",
|
"size": "Tamanho",
|
||||||
"snippet": "Snippet",
|
"snippet": "Snippet",
|
||||||
"softWrap": "Quebra de linha suave",
|
"softWrap": "Quebra de linha suave",
|
||||||
|
"specifyDev": "Especificar dispositivo",
|
||||||
|
"specifyDevTip": "Por exemplo, as estatísticas de tráfego de rede são por padrão para todos os dispositivos. Você pode especificar um dispositivo específico aqui.",
|
||||||
"speed": "Velocidade",
|
"speed": "Velocidade",
|
||||||
"spentTime": "Tempo gasto: {time}",
|
"spentTime": "Tempo gasto: {time}",
|
||||||
"sshTermHelp": "Quando o terminal é rolável, arrastar horizontalmente pode selecionar texto. Clicar no botão do teclado ativa/desativa o teclado. O ícone de arquivo abre o SFTP do caminho atual. O botão da área de transferência copia o conteúdo quando o texto é selecionado e cola o conteúdo da área de transferência no terminal quando nenhum texto é selecionado e há conteúdo na área de transferência. O ícone de código cola trechos de código no terminal e os executa.",
|
"sshTermHelp": "Quando o terminal é rolável, arrastar horizontalmente pode selecionar texto. Clicar no botão do teclado ativa/desativa o teclado. O ícone de arquivo abre o SFTP do caminho atual. O botão da área de transferência copia o conteúdo quando o texto é selecionado e cola o conteúdo da área de transferência no terminal quando nenhum texto é selecionado e há conteúdo na área de transferência. O ícone de código cola trechos de código no terminal e os executa.",
|
||||||
|
|||||||
@@ -161,6 +161,8 @@
|
|||||||
"size": "размер",
|
"size": "размер",
|
||||||
"snippet": "фрагмент",
|
"snippet": "фрагмент",
|
||||||
"softWrap": "Мягкий перенос",
|
"softWrap": "Мягкий перенос",
|
||||||
|
"specifyDev": "Указать устройство",
|
||||||
|
"specifyDevTip": "Например, статистика сетевого трафика по умолчанию относится ко всем устройствам. Здесь вы можете указать конкретное устройство.",
|
||||||
"speed": "скорость",
|
"speed": "скорость",
|
||||||
"spentTime": "Затрачено времени: {time}",
|
"spentTime": "Затрачено времени: {time}",
|
||||||
"sshTermHelp": "Когда терминал можно прокручивать, горизонтальное перетаскивание позволяет выделить текст. Нажатие на кнопку клавиатуры включает/выключает клавиатуру. Иконка файла открывает текущий путь SFTP. Кнопка буфера обмена копирует содержимое, когда текст выделен, и вставляет содержимое из буфера обмена в терминал, когда текст не выделен, а в буфере есть содержимое. Иконка кода вставляет фрагменты кода в терминал и выполняет их.",
|
"sshTermHelp": "Когда терминал можно прокручивать, горизонтальное перетаскивание позволяет выделить текст. Нажатие на кнопку клавиатуры включает/выключает клавиатуру. Иконка файла открывает текущий путь SFTP. Кнопка буфера обмена копирует содержимое, когда текст выделен, и вставляет содержимое из буфера обмена в терминал, когда текст не выделен, а в буфере есть содержимое. Иконка кода вставляет фрагменты кода в терминал и выполняет их.",
|
||||||
|
|||||||
@@ -161,6 +161,8 @@
|
|||||||
"size": "Boyut",
|
"size": "Boyut",
|
||||||
"snippet": "Parça",
|
"snippet": "Parça",
|
||||||
"softWrap": "Yumuşak kaydırma",
|
"softWrap": "Yumuşak kaydırma",
|
||||||
|
"specifyDev": "Cihazı belirle",
|
||||||
|
"specifyDevTip": "Örneğin, ağ trafiği istatistikleri varsayılan olarak tüm cihazlar içindir. Burada belirli bir cihazı belirtebilirsiniz.",
|
||||||
"speed": "Hız",
|
"speed": "Hız",
|
||||||
"spentTime": "Harcanan zaman: {time}",
|
"spentTime": "Harcanan zaman: {time}",
|
||||||
"sshTermHelp": "Terminal kaydırılabilir olduğunda, yatay sürükleme metni seçebilir. Klavye düğmesine tıklamak klavyeyi açar/kapatır. Dosya simgesi mevcut yolu SFTP'de açar. Pano düğmesi metin seçildiğinde içeriği kopyalar ve metin seçilmediğinde ve panoda içerik olduğunda panodaki içeriği terminale yapıştırır. Kod simgesi kod parçacıklarını terminale yapıştırır ve çalıştırır.",
|
"sshTermHelp": "Terminal kaydırılabilir olduğunda, yatay sürükleme metni seçebilir. Klavye düğmesine tıklamak klavyeyi açar/kapatır. Dosya simgesi mevcut yolu SFTP'de açar. Pano düğmesi metin seçildiğinde içeriği kopyalar ve metin seçilmediğinde ve panoda içerik olduğunda panodaki içeriği terminale yapıştırır. Kod simgesi kod parçacıklarını terminale yapıştırır ve çalıştırır.",
|
||||||
|
|||||||
@@ -161,6 +161,8 @@
|
|||||||
"size": "大小",
|
"size": "大小",
|
||||||
"snippet": "代码片段",
|
"snippet": "代码片段",
|
||||||
"softWrap": "自动换行",
|
"softWrap": "自动换行",
|
||||||
|
"specifyDev": "指定设备",
|
||||||
|
"specifyDevTip": "例如网络流量统计默认是所有设备,你可以在这里指定特定的设备",
|
||||||
"speed": "速度",
|
"speed": "速度",
|
||||||
"spentTime": "耗时: {time}",
|
"spentTime": "耗时: {time}",
|
||||||
"sshTermHelp": "在终端可滚动时,横向拖动可以选中文字。点击键盘按钮可以开启/关闭键盘。文件图标会打开当前路径 SFTP。剪切板按钮会在有选中文字时复制内容,在未选中并且剪切板有内容时粘贴内容到终端。代码图标会粘贴代码片段到终端并执行。",
|
"sshTermHelp": "在终端可滚动时,横向拖动可以选中文字。点击键盘按钮可以开启/关闭键盘。文件图标会打开当前路径 SFTP。剪切板按钮会在有选中文字时复制内容,在未选中并且剪切板有内容时粘贴内容到终端。代码图标会粘贴代码片段到终端并执行。",
|
||||||
|
|||||||
@@ -161,6 +161,8 @@
|
|||||||
"size": "大小",
|
"size": "大小",
|
||||||
"snippet": "程式片段",
|
"snippet": "程式片段",
|
||||||
"softWrap": "軟換行",
|
"softWrap": "軟換行",
|
||||||
|
"specifyDev": "指定裝置",
|
||||||
|
"specifyDevTip": "例如網路流量統計預設是所有裝置,你可以在這裡指定特定的裝置。",
|
||||||
"speed": "速度",
|
"speed": "速度",
|
||||||
"spentTime": "耗時: {time}",
|
"spentTime": "耗時: {time}",
|
||||||
"sshTermHelp": "在終端可滾動時,橫向拖動可以選中文字。點擊鍵盤按鈕可以開啟/關閉鍵盤。文件圖標會打開當前路徑 SFTP。剪貼簿按鈕會在有選中文字時複製內容,在未選中並且剪貼簿有內容時貼上內容到終端。代碼圖標會貼上代碼片段到終端並執行。",
|
"sshTermHelp": "在終端可滾動時,橫向拖動可以選中文字。點擊鍵盤按鈕可以開啟/關閉鍵盤。文件圖標會打開當前路徑 SFTP。剪貼簿按鈕會在有選中文字時複製內容,在未選中並且剪貼簿有內容時貼上內容到終端。代碼圖標會貼上代碼片段到終端並執行。",
|
||||||
|
|||||||
@@ -36,6 +36,8 @@ class _ServerEditPageState extends State<ServerEditPage> with AfterLayoutMixin {
|
|||||||
final _wolMacCtrl = TextEditingController();
|
final _wolMacCtrl = TextEditingController();
|
||||||
final _wolIpCtrl = TextEditingController();
|
final _wolIpCtrl = TextEditingController();
|
||||||
final _wolPwdCtrl = TextEditingController();
|
final _wolPwdCtrl = TextEditingController();
|
||||||
|
final _netDevCtrl = TextEditingController();
|
||||||
|
final _scriptDirCtrl = TextEditingController();
|
||||||
|
|
||||||
final _nameFocus = FocusNode();
|
final _nameFocus = FocusNode();
|
||||||
final _ipFocus = FocusNode();
|
final _ipFocus = FocusNode();
|
||||||
@@ -73,6 +75,8 @@ class _ServerEditPageState extends State<ServerEditPage> with AfterLayoutMixin {
|
|||||||
_wolMacCtrl.dispose();
|
_wolMacCtrl.dispose();
|
||||||
_wolIpCtrl.dispose();
|
_wolIpCtrl.dispose();
|
||||||
_wolPwdCtrl.dispose();
|
_wolPwdCtrl.dispose();
|
||||||
|
_netDevCtrl.dispose();
|
||||||
|
_scriptDirCtrl.dispose();
|
||||||
}
|
}
|
||||||
|
|
||||||
@override
|
@override
|
||||||
@@ -295,20 +299,52 @@ class _ServerEditPageState extends State<ServerEditPage> with AfterLayoutMixin {
|
|||||||
suggestion: false,
|
suggestion: false,
|
||||||
),
|
),
|
||||||
_buildAltUrl(),
|
_buildAltUrl(),
|
||||||
|
_buildScriptDir(),
|
||||||
_buildEnvs(),
|
_buildEnvs(),
|
||||||
..._buildPVEs(),
|
_buildPVEs(),
|
||||||
..._buildCustomCmds(),
|
_buildCustomCmds(),
|
||||||
CenterGreyTitle(l10n.temperature),
|
_buildCustomDev(),
|
||||||
|
_buildWOLs(),
|
||||||
|
],
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
Widget _buildScriptDir() {
|
||||||
|
return Input(
|
||||||
|
controller: _scriptDirCtrl,
|
||||||
|
type: TextInputType.text,
|
||||||
|
label: '${l10n.remotePath} (Shell ${l10n.install})',
|
||||||
|
icon: Icons.folder,
|
||||||
|
hint: '~/.config/server_box',
|
||||||
|
suggestion: false,
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
Widget _buildCustomDev() {
|
||||||
|
return Column(
|
||||||
|
mainAxisSize: MainAxisSize.min,
|
||||||
|
children: [
|
||||||
|
CenterGreyTitle(l10n.specifyDev),
|
||||||
|
ListTile(
|
||||||
|
leading: const Icon(MingCute.question_line),
|
||||||
|
title: TipText(libL10n.note, l10n.specifyDevTip),
|
||||||
|
).cardx,
|
||||||
Input(
|
Input(
|
||||||
controller: _preferTempDevCtrl,
|
controller: _preferTempDevCtrl,
|
||||||
type: TextInputType.text,
|
type: TextInputType.text,
|
||||||
label: libL10n.device,
|
label: l10n.temperature,
|
||||||
icon: MingCute.low_temperature_line,
|
icon: MingCute.low_temperature_line,
|
||||||
hint: 'nvme-pci-0400',
|
hint: 'nvme-pci-0400',
|
||||||
suggestion: false,
|
suggestion: false,
|
||||||
),
|
),
|
||||||
UIs.height7,
|
Input(
|
||||||
..._buildWOLs(),
|
controller: _netDevCtrl,
|
||||||
|
type: TextInputType.text,
|
||||||
|
label: l10n.net,
|
||||||
|
icon: ZondIcons.network,
|
||||||
|
hint: 'eth0',
|
||||||
|
suggestion: false,
|
||||||
|
),
|
||||||
],
|
],
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
@@ -325,102 +361,108 @@ class _ServerEditPageState extends State<ServerEditPage> with AfterLayoutMixin {
|
|||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
List<Widget> _buildPVEs() {
|
Widget _buildPVEs() {
|
||||||
const addr = 'https://127.0.0.1:8006';
|
const addr = 'https://127.0.0.1:8006';
|
||||||
return [
|
return Column(
|
||||||
const CenterGreyTitle('PVE'),
|
mainAxisSize: MainAxisSize.min,
|
||||||
Input(
|
children: [
|
||||||
controller: _pveAddrCtrl,
|
const CenterGreyTitle('PVE'),
|
||||||
type: TextInputType.url,
|
Input(
|
||||||
icon: MingCute.web_line,
|
controller: _pveAddrCtrl,
|
||||||
label: 'URL',
|
type: TextInputType.url,
|
||||||
hint: addr,
|
icon: MingCute.web_line,
|
||||||
suggestion: false,
|
label: 'URL',
|
||||||
),
|
hint: addr,
|
||||||
ListTile(
|
suggestion: false,
|
||||||
leading: const Icon(MingCute.certificate_line),
|
|
||||||
title: Text('PVE ${l10n.ignoreCert}'),
|
|
||||||
subtitle: Text(l10n.pveIgnoreCertTip, style: UIs.text12Grey),
|
|
||||||
trailing: ListenableBuilder(
|
|
||||||
listenable: _pveIgnoreCert,
|
|
||||||
builder: (_, __) => Switch(
|
|
||||||
value: _pveIgnoreCert.value,
|
|
||||||
onChanged: (val) {
|
|
||||||
_pveIgnoreCert.value = val;
|
|
||||||
},
|
|
||||||
),
|
|
||||||
),
|
),
|
||||||
).cardx,
|
ListTile(
|
||||||
];
|
leading: const Icon(MingCute.certificate_line),
|
||||||
|
title: TipText('PVE ${l10n.ignoreCert}', l10n.pveIgnoreCertTip),
|
||||||
|
trailing: ListenableBuilder(
|
||||||
|
listenable: _pveIgnoreCert,
|
||||||
|
builder: (_, __) => Switch(
|
||||||
|
value: _pveIgnoreCert.value,
|
||||||
|
onChanged: (val) {
|
||||||
|
_pveIgnoreCert.value = val;
|
||||||
|
},
|
||||||
|
),
|
||||||
|
),
|
||||||
|
).cardx,
|
||||||
|
],
|
||||||
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
List<Widget> _buildCustomCmds() {
|
Widget _buildCustomCmds() {
|
||||||
return [
|
return Column(
|
||||||
CenterGreyTitle(l10n.customCmd),
|
mainAxisSize: MainAxisSize.min,
|
||||||
_customCmds.listenVal(
|
children: [
|
||||||
(vals) {
|
CenterGreyTitle(l10n.customCmd),
|
||||||
return ListTile(
|
_customCmds.listenVal(
|
||||||
leading: const Icon(BoxIcons.bxs_file_json),
|
(vals) {
|
||||||
title: const Text('JSON'),
|
return ListTile(
|
||||||
subtitle: vals.isEmpty
|
leading: const Icon(BoxIcons.bxs_file_json),
|
||||||
? null
|
title: const Text('JSON'),
|
||||||
: Text(vals.keys.join(','), style: UIs.textGrey),
|
subtitle: vals.isEmpty
|
||||||
trailing: const Icon(Icons.keyboard_arrow_right),
|
? null
|
||||||
onTap: () async {
|
: Text(vals.keys.join(','), style: UIs.textGrey),
|
||||||
final res = await KvEditor.route.go(
|
trailing: const Icon(Icons.keyboard_arrow_right),
|
||||||
context,
|
onTap: () async {
|
||||||
args: KvEditorArgs(data: _customCmds.value),
|
final res = await KvEditor.route.go(
|
||||||
);
|
context,
|
||||||
if (res == null) return;
|
args: KvEditorArgs(data: _customCmds.value),
|
||||||
_customCmds.value = res;
|
);
|
||||||
},
|
if (res == null) return;
|
||||||
);
|
_customCmds.value = res;
|
||||||
},
|
},
|
||||||
).cardx,
|
);
|
||||||
ListTile(
|
},
|
||||||
leading: const Icon(MingCute.doc_line),
|
).cardx,
|
||||||
title: Text(libL10n.doc),
|
ListTile(
|
||||||
trailing: const Icon(Icons.open_in_new, size: 17),
|
leading: const Icon(MingCute.doc_line),
|
||||||
onTap: () => l10n.customCmdDocUrl.launch(),
|
title: Text(libL10n.doc),
|
||||||
).cardx,
|
trailing: const Icon(Icons.open_in_new, size: 17),
|
||||||
];
|
onTap: () => l10n.customCmdDocUrl.launch(),
|
||||||
|
).cardx,
|
||||||
|
],
|
||||||
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
List<Widget> _buildWOLs() {
|
Widget _buildWOLs() {
|
||||||
return [
|
return Column(
|
||||||
const Text('Wake On LAN (beta)', style: UIs.text13Grey),
|
mainAxisSize: MainAxisSize.min,
|
||||||
UIs.height7,
|
children: [
|
||||||
ListTile(
|
const CenterGreyTitle('Wake On LAN (beta)'),
|
||||||
leading: const Icon(BoxIcons.bxs_help_circle),
|
ListTile(
|
||||||
title: Text(libL10n.about),
|
leading: const Icon(BoxIcons.bxs_help_circle),
|
||||||
subtitle: Text(l10n.wolTip, style: UIs.text12Grey),
|
title: TipText(libL10n.about, l10n.wolTip),
|
||||||
).cardx,
|
).cardx,
|
||||||
Input(
|
Input(
|
||||||
controller: _wolMacCtrl,
|
controller: _wolMacCtrl,
|
||||||
type: TextInputType.text,
|
type: TextInputType.text,
|
||||||
label: 'MAC ${l10n.addr}',
|
label: 'MAC ${l10n.addr}',
|
||||||
icon: Icons.computer,
|
icon: Icons.computer,
|
||||||
hint: '00:11:22:33:44:55',
|
hint: '00:11:22:33:44:55',
|
||||||
suggestion: false,
|
suggestion: false,
|
||||||
),
|
),
|
||||||
Input(
|
Input(
|
||||||
controller: _wolIpCtrl,
|
controller: _wolIpCtrl,
|
||||||
type: TextInputType.text,
|
type: TextInputType.text,
|
||||||
label: 'IP ${l10n.addr}',
|
label: 'IP ${l10n.addr}',
|
||||||
icon: ZondIcons.network,
|
icon: ZondIcons.network,
|
||||||
hint: '192.168.1.x',
|
hint: '192.168.1.x',
|
||||||
suggestion: false,
|
suggestion: false,
|
||||||
),
|
),
|
||||||
Input(
|
Input(
|
||||||
controller: _wolPwdCtrl,
|
controller: _wolPwdCtrl,
|
||||||
type: TextInputType.text,
|
type: TextInputType.text,
|
||||||
obscureText: true,
|
obscureText: true,
|
||||||
label: l10n.pwd,
|
label: l10n.pwd,
|
||||||
icon: Icons.password,
|
icon: Icons.password,
|
||||||
hint: l10n.pwd,
|
hint: l10n.pwd,
|
||||||
suggestion: false,
|
suggestion: false,
|
||||||
),
|
),
|
||||||
];
|
],
|
||||||
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
Widget _buildFAB() {
|
Widget _buildFAB() {
|
||||||
@@ -518,6 +560,8 @@ class _ServerEditPageState extends State<ServerEditPage> with AfterLayoutMixin {
|
|||||||
cmds: customCmds.isEmpty ? null : customCmds,
|
cmds: customCmds.isEmpty ? null : customCmds,
|
||||||
preferTempDev: _preferTempDevCtrl.text.selfIfNotNullEmpty,
|
preferTempDev: _preferTempDevCtrl.text.selfIfNotNullEmpty,
|
||||||
logoUrl: _logoUrlCtrl.text.selfIfNotNullEmpty,
|
logoUrl: _logoUrlCtrl.text.selfIfNotNullEmpty,
|
||||||
|
netDev: _netDevCtrl.text.selfIfNotNullEmpty,
|
||||||
|
scriptDir: _scriptDirCtrl.text.selfIfNotNullEmpty,
|
||||||
);
|
);
|
||||||
|
|
||||||
final wolEmpty = _wolMacCtrl.text.isEmpty &&
|
final wolEmpty = _wolMacCtrl.text.isEmpty &&
|
||||||
@@ -612,6 +656,9 @@ class _ServerEditPageState extends State<ServerEditPage> with AfterLayoutMixin {
|
|||||||
}
|
}
|
||||||
|
|
||||||
_env.value = spi.envs ?? {};
|
_env.value = spi.envs ?? {};
|
||||||
|
|
||||||
|
_netDevCtrl.text = spi.custom?.netDev ?? '';
|
||||||
|
_scriptDirCtrl.text = spi.custom?.scriptDir ?? '';
|
||||||
}
|
}
|
||||||
|
|
||||||
Widget _buildWriteScriptTip() {
|
Widget _buildWriteScriptTip() {
|
||||||
|
|||||||
@@ -587,7 +587,7 @@ ${ss.err?.message ?? 'null'}
|
|||||||
Widget _buildNet(ServerStatus ss, String id) {
|
Widget _buildNet(ServerStatus ss, String id) {
|
||||||
final cardNoti = _getCardNoti(id);
|
final cardNoti = _getCardNoti(id);
|
||||||
final type = cardNoti.value.net ?? Stores.setting.netViewType.fetch();
|
final type = cardNoti.value.net ?? Stores.setting.netViewType.fetch();
|
||||||
final device = ServerProvider.pick(id: id)?.value.spi.custom?.netDev ?? 'tailscale0';
|
final device = ServerProvider.pick(id: id)?.value.spi.custom?.netDev;
|
||||||
final (a, b) = type.build(ss, dev: device);
|
final (a, b) = type.build(ss, dev: device);
|
||||||
return AnimatedSwitcher(
|
return AnimatedSwitcher(
|
||||||
duration: const Duration(milliseconds: 377),
|
duration: const Duration(milliseconds: 377),
|
||||||
|
|||||||
@@ -471,7 +471,7 @@
|
|||||||
CODE_SIGN_IDENTITY = "Apple Development";
|
CODE_SIGN_IDENTITY = "Apple Development";
|
||||||
CODE_SIGN_STYLE = Automatic;
|
CODE_SIGN_STYLE = Automatic;
|
||||||
COMBINE_HIDPI_IMAGES = YES;
|
COMBINE_HIDPI_IMAGES = YES;
|
||||||
CURRENT_PROJECT_VERSION = 1068;
|
CURRENT_PROJECT_VERSION = 1069;
|
||||||
DEVELOPMENT_TEAM = BA88US33G6;
|
DEVELOPMENT_TEAM = BA88US33G6;
|
||||||
INFOPLIST_FILE = Runner/Info.plist;
|
INFOPLIST_FILE = Runner/Info.plist;
|
||||||
INFOPLIST_KEY_CFBundleDisplayName = "Server Box";
|
INFOPLIST_KEY_CFBundleDisplayName = "Server Box";
|
||||||
@@ -481,7 +481,7 @@
|
|||||||
"@executable_path/../Frameworks",
|
"@executable_path/../Frameworks",
|
||||||
);
|
);
|
||||||
MACOSX_DEPLOYMENT_TARGET = 10.15;
|
MACOSX_DEPLOYMENT_TARGET = 10.15;
|
||||||
MARKETING_VERSION = 1.0.1068;
|
MARKETING_VERSION = 1.0.1069;
|
||||||
PRODUCT_BUNDLE_IDENTIFIER = com.lollipopkit.toolbox;
|
PRODUCT_BUNDLE_IDENTIFIER = com.lollipopkit.toolbox;
|
||||||
PRODUCT_NAME = "Server Box";
|
PRODUCT_NAME = "Server Box";
|
||||||
PROVISIONING_PROFILE_SPECIFIER = "";
|
PROVISIONING_PROFILE_SPECIFIER = "";
|
||||||
@@ -608,7 +608,7 @@
|
|||||||
CODE_SIGN_IDENTITY = "Apple Development";
|
CODE_SIGN_IDENTITY = "Apple Development";
|
||||||
CODE_SIGN_STYLE = Automatic;
|
CODE_SIGN_STYLE = Automatic;
|
||||||
COMBINE_HIDPI_IMAGES = YES;
|
COMBINE_HIDPI_IMAGES = YES;
|
||||||
CURRENT_PROJECT_VERSION = 1068;
|
CURRENT_PROJECT_VERSION = 1069;
|
||||||
DEVELOPMENT_TEAM = BA88US33G6;
|
DEVELOPMENT_TEAM = BA88US33G6;
|
||||||
INFOPLIST_FILE = Runner/Info.plist;
|
INFOPLIST_FILE = Runner/Info.plist;
|
||||||
INFOPLIST_KEY_CFBundleDisplayName = "Server Box";
|
INFOPLIST_KEY_CFBundleDisplayName = "Server Box";
|
||||||
@@ -618,7 +618,7 @@
|
|||||||
"@executable_path/../Frameworks",
|
"@executable_path/../Frameworks",
|
||||||
);
|
);
|
||||||
MACOSX_DEPLOYMENT_TARGET = 10.15;
|
MACOSX_DEPLOYMENT_TARGET = 10.15;
|
||||||
MARKETING_VERSION = 1.0.1068;
|
MARKETING_VERSION = 1.0.1069;
|
||||||
PRODUCT_BUNDLE_IDENTIFIER = com.lollipopkit.toolbox;
|
PRODUCT_BUNDLE_IDENTIFIER = com.lollipopkit.toolbox;
|
||||||
PRODUCT_NAME = "Server Box";
|
PRODUCT_NAME = "Server Box";
|
||||||
PROVISIONING_PROFILE_SPECIFIER = "";
|
PROVISIONING_PROFILE_SPECIFIER = "";
|
||||||
@@ -638,7 +638,7 @@
|
|||||||
"CODE_SIGN_IDENTITY[sdk=macosx*]" = "3rd Party Mac Developer Application";
|
"CODE_SIGN_IDENTITY[sdk=macosx*]" = "3rd Party Mac Developer Application";
|
||||||
CODE_SIGN_STYLE = Manual;
|
CODE_SIGN_STYLE = Manual;
|
||||||
COMBINE_HIDPI_IMAGES = YES;
|
COMBINE_HIDPI_IMAGES = YES;
|
||||||
CURRENT_PROJECT_VERSION = 1068;
|
CURRENT_PROJECT_VERSION = 1069;
|
||||||
DEVELOPMENT_TEAM = "";
|
DEVELOPMENT_TEAM = "";
|
||||||
"DEVELOPMENT_TEAM[sdk=macosx*]" = BA88US33G6;
|
"DEVELOPMENT_TEAM[sdk=macosx*]" = BA88US33G6;
|
||||||
INFOPLIST_FILE = Runner/Info.plist;
|
INFOPLIST_FILE = Runner/Info.plist;
|
||||||
@@ -649,7 +649,7 @@
|
|||||||
"@executable_path/../Frameworks",
|
"@executable_path/../Frameworks",
|
||||||
);
|
);
|
||||||
MACOSX_DEPLOYMENT_TARGET = 10.15;
|
MACOSX_DEPLOYMENT_TARGET = 10.15;
|
||||||
MARKETING_VERSION = 1.0.1068;
|
MARKETING_VERSION = 1.0.1069;
|
||||||
PRODUCT_BUNDLE_IDENTIFIER = com.lollipopkit.toolbox;
|
PRODUCT_BUNDLE_IDENTIFIER = com.lollipopkit.toolbox;
|
||||||
PRODUCT_NAME = "Server Box";
|
PRODUCT_NAME = "Server Box";
|
||||||
PROVISIONING_PROFILE_SPECIFIER = "";
|
PROVISIONING_PROFILE_SPECIFIER = "";
|
||||||
|
|||||||
@@ -1,7 +1,7 @@
|
|||||||
name: server_box
|
name: server_box
|
||||||
description: server status & toolbox app.
|
description: server status & toolbox app.
|
||||||
publish_to: 'none'
|
publish_to: 'none'
|
||||||
version: 1.0.1068+1068
|
version: 1.0.1069+1069
|
||||||
|
|
||||||
environment:
|
environment:
|
||||||
sdk: ">=3.0.0"
|
sdk: ">=3.0.0"
|
||||||
|
|||||||
Reference in New Issue
Block a user