mirror of
https://github.com/louislam/dockge.git
synced 2025-08-12 22:07:58 +02:00
Compare commits
4 Commits
master
...
switch-bac
Author | SHA1 | Date | |
---|---|---|---|
bed3fe71f6 | |||
34c5fa37b9 | |||
1e83d78c28 | |||
cdf13cebd0 |
@ -106,7 +106,7 @@ docker compose pull && docker compose up -d
|
||||
## Motivations
|
||||
|
||||
- I have been using Portainer for some time, but for the stack management, I am sometimes not satisfied with it. For example, sometimes when I try to deploy a stack, the loading icon keeps spinning for a few minutes without progress. And sometimes error messages are not clear.
|
||||
- Try to develop with ES Module + TypeScript
|
||||
- Try to develop with ES Module + TypeScript (Originally, I planned to use Deno or Bun.js, but they don't have support for arm64, so I stepped back to Node.js)
|
||||
|
||||
If you love this project, please consider giving it a ⭐.
|
||||
|
||||
|
@ -38,11 +38,6 @@ export class TerminalSocketHandler extends AgentSocketHandler {
|
||||
try {
|
||||
checkLogin(socket);
|
||||
|
||||
// Throw an error if console is not enabled
|
||||
if (!server.config.enableConsole) {
|
||||
throw new ValidationError("Console is not enabled.");
|
||||
}
|
||||
|
||||
// TODO: Reset the name here, force one main terminal for now
|
||||
terminalName = "console";
|
||||
|
||||
@ -71,18 +66,6 @@ export class TerminalSocketHandler extends AgentSocketHandler {
|
||||
}
|
||||
});
|
||||
|
||||
// Check if MainTerminal is enabled
|
||||
agentSocket.on("checkMainTerminal", async (callback) => {
|
||||
try {
|
||||
checkLogin(socket);
|
||||
callbackResult({
|
||||
ok: server.config.enableConsole,
|
||||
}, callback);
|
||||
} catch (e) {
|
||||
callbackError(e, callback);
|
||||
}
|
||||
});
|
||||
|
||||
// Interactive Terminal for containers
|
||||
agentSocket.on("interactiveTerminal", async (stackName : unknown, serviceName : unknown, shell : unknown, callback) => {
|
||||
try {
|
||||
|
@ -136,11 +136,6 @@ export class DockgeServer {
|
||||
stacksDir: {
|
||||
type: String,
|
||||
optional: true,
|
||||
},
|
||||
enableConsole: {
|
||||
type: Boolean,
|
||||
optional: true,
|
||||
defaultValue: false,
|
||||
}
|
||||
});
|
||||
|
||||
@ -154,7 +149,6 @@ export class DockgeServer {
|
||||
this.config.hostname = args.hostname || process.env.DOCKGE_HOSTNAME || undefined;
|
||||
this.config.dataDir = args.dataDir || process.env.DOCKGE_DATA_DIR || "./data/";
|
||||
this.config.stacksDir = args.stacksDir || process.env.DOCKGE_STACKS_DIR || defaultStacksDir;
|
||||
this.config.enableConsole = args.enableConsole || process.env.DOCKGE_ENABLE_CONSOLE === "true" || false;
|
||||
this.stacksDir = this.config.stacksDir;
|
||||
|
||||
log.debug("server", this.config);
|
||||
|
@ -311,12 +311,7 @@ export class MainSocketHandler extends SocketHandler {
|
||||
throw new ValidationError("dockerRunCommand must be a string");
|
||||
}
|
||||
|
||||
// Option: 'latest' | 'v2x' | 'v3x'
|
||||
let composeTemplate = composerize(dockerRunCommand, "", "latest");
|
||||
|
||||
// Remove the first line "name: <your project name>"
|
||||
composeTemplate = composeTemplate.split("\n").slice(1).join("\n");
|
||||
|
||||
const composeTemplate = composerize(dockerRunCommand);
|
||||
callback({
|
||||
ok: true,
|
||||
composeTemplate,
|
||||
|
@ -4,6 +4,7 @@ import * as pty from "@homebridge/node-pty-prebuilt-multiarch";
|
||||
import { LimitQueue } from "./utils/limit-queue";
|
||||
import { DockgeSocket } from "./util-server";
|
||||
import {
|
||||
allowedCommandList, allowedRawKeys,
|
||||
PROGRESS_TERMINAL_ROWS,
|
||||
TERMINAL_COLS,
|
||||
TERMINAL_ROWS
|
||||
@ -15,6 +16,7 @@ import { log } from "./log";
|
||||
* Terminal for running commands, no user interaction
|
||||
*/
|
||||
export class Terminal {
|
||||
|
||||
protected static terminalMap : Map<string, Terminal> = new Map();
|
||||
|
||||
protected _ptyProcess? : pty.IPty;
|
||||
@ -270,11 +272,6 @@ export class MainTerminal extends InteractiveTerminal {
|
||||
constructor(server : DockgeServer, name : string) {
|
||||
let shell;
|
||||
|
||||
// Throw an error if console is not enabled
|
||||
if (!server.config.enableConsole) {
|
||||
throw new Error("Console is not enabled.");
|
||||
}
|
||||
|
||||
if (os.platform() === "win32") {
|
||||
if (commandExistsSync("pwsh.exe")) {
|
||||
shell = "pwsh.exe";
|
||||
@ -288,6 +285,21 @@ export class MainTerminal extends InteractiveTerminal {
|
||||
}
|
||||
|
||||
public write(input : string) {
|
||||
// For like Ctrl + C
|
||||
if (allowedRawKeys.includes(input)) {
|
||||
super.write(input);
|
||||
return;
|
||||
}
|
||||
|
||||
// Check if the command is allowed
|
||||
const cmdParts = input.split(" ");
|
||||
const executable = cmdParts[0].trim();
|
||||
log.debug("console", "Executable: " + executable);
|
||||
log.debug("console", "Executable length: " + executable.length);
|
||||
|
||||
if (!allowedCommandList.includes(executable)) {
|
||||
throw new Error("Command not allowed.");
|
||||
}
|
||||
super.write(input);
|
||||
}
|
||||
}
|
||||
|
@ -30,7 +30,6 @@ export interface Arguments {
|
||||
hostname? : string;
|
||||
dataDir? : string;
|
||||
stacksDir? : string;
|
||||
enableConsole? : boolean;
|
||||
}
|
||||
|
||||
// Some config values are required
|
||||
|
@ -107,6 +107,17 @@ export const COMBINED_TERMINAL_ROWS = 20;
|
||||
|
||||
export const ERROR_TYPE_VALIDATION = 1;
|
||||
|
||||
export const allowedCommandList : string[] = [
|
||||
"docker",
|
||||
"ls",
|
||||
"cd",
|
||||
"dir",
|
||||
];
|
||||
|
||||
export const allowedRawKeys = [
|
||||
"\u0003", // Ctrl + C
|
||||
];
|
||||
|
||||
export const acceptedComposeFileNames = [
|
||||
"compose.yaml",
|
||||
"docker-compose.yaml",
|
||||
|
@ -10,7 +10,7 @@ FROM louislam/dockge:base AS build
|
||||
WORKDIR /app
|
||||
COPY --chown=node:node ./package.json ./package.json
|
||||
COPY --chown=node:node ./package-lock.json ./package-lock.json
|
||||
RUN npm ci --omit=dev
|
||||
RUN npm ci
|
||||
|
||||
############################################
|
||||
# ⭐ Main Image
|
||||
|
@ -201,6 +201,7 @@ export default {
|
||||
} else {
|
||||
this.cursorPosition++;
|
||||
this.terminalInputBuffer += e.key;
|
||||
console.log(this.terminalInputBuffer);
|
||||
this.terminal.write(e.key);
|
||||
}
|
||||
});
|
||||
|
@ -32,7 +32,6 @@ const languageList = {
|
||||
"hu": "Magyar",
|
||||
"ca": "Català",
|
||||
"ga": "Gaeilge",
|
||||
"de-CH": "Schwiizerdütsch",
|
||||
};
|
||||
|
||||
let messages = {
|
||||
|
@ -112,21 +112,5 @@
|
||||
"dockgeAgent": "Dockge агент | Dockge агенти",
|
||||
"connecting": "Свързване",
|
||||
"agentRemovedSuccessfully": "Агентът е премахнат успешно.",
|
||||
"LongSyntaxNotSupported": "Дългият синтаксис не се поддържа тук. Моля, използвайте YAML редактора.",
|
||||
"Started": "Стартиран",
|
||||
"Updated": "Актуализиран",
|
||||
"Deleted": "Изтрит",
|
||||
"Deployed": "Внедрен",
|
||||
"Stopped": "Спрян",
|
||||
"Restarted": "Рестартиран",
|
||||
"Switch to sh": "Превключи на \"sh\"",
|
||||
"terminal": "Терминал",
|
||||
"New Container Name...": "Ново име на контейнер...",
|
||||
"Network name...": "Име на мрежата...",
|
||||
"Select a network...": "Изберете мрежа...",
|
||||
"Lost connection to the socket server. Reconnecting...": "Изгубена връзка със сокет сървъра. Повторно свързване...",
|
||||
"Saved": "Запазено",
|
||||
"Downed": "Свален",
|
||||
"CurrentHostname": "(Не е зададено: Следвай текущото име на хост)",
|
||||
"NoNetworksAvailable": "Няма налични мрежи. Първо трябва да добавите вътрешни мрежи или да активирате външни мрежи в дясната страна."
|
||||
"LongSyntaxNotSupported": "Дългият синтаксис не се поддържа тук. Моля, използвайте YAML редактора."
|
||||
}
|
||||
|
@ -19,7 +19,7 @@
|
||||
"restartStack": "Restartovat",
|
||||
"updateStack": "Aktualizovat",
|
||||
"startStack": "Spustit",
|
||||
"downStack": "Zastavit & Zneaktivnit",
|
||||
"downStack": "Zastavit & Vypnout",
|
||||
"editStack": "Upravit",
|
||||
"discardStack": "Zahodit",
|
||||
"saveStackDraft": "Uložit",
|
||||
@ -97,33 +97,5 @@
|
||||
"extra": "Extra",
|
||||
"reverseProxyMsg1": "Používáte Reverzní proxy server?",
|
||||
"reverseProxyMsg2": "Podívat se jak to nastavit pro WebSocket",
|
||||
"Cannot connect to the socket server.": "Nelze se připojit k serveru .",
|
||||
"Lost connection to the socket server. Reconnecting...": "Ztraceno spojení se serverem. Obnovuji spojení...",
|
||||
"newUpdate": "Nová aktualizace",
|
||||
"dockgeAgent": "Dockge Agent | Dockge Agenti",
|
||||
"agentOnline": "Online",
|
||||
"connecting": "Připojování",
|
||||
"agentOffline": "Offline",
|
||||
"dockgeURL": "Dockge URL (např. http://127.0.0.1:5001)",
|
||||
"LongSyntaxNotSupported": "Dlouhá syntaxe zde není podporována. Použijte, prosím, YAML editor.",
|
||||
"connecting...": "Připojování k socket serveru…",
|
||||
"connect": "Připojit",
|
||||
"addAgent": "Přidat Agenta",
|
||||
"agentAddedSuccessfully": "Agent byl úspěšně přidán.",
|
||||
"agentRemovedSuccessfully": "Agend byl úspěšně odebrán.",
|
||||
"removeAgent": "Odebrat Agenta",
|
||||
"removeAgentMsg": "Opravdu chcete tohoto agenta odebrat?",
|
||||
"Saved": "Uloženo",
|
||||
"Deployed": "Nasazeno",
|
||||
"Deleted": "Odstraněno",
|
||||
"Updated": "Aktualizovat",
|
||||
"Started": "Spuštěno",
|
||||
"Stopped": "Zastaveno",
|
||||
"Restarted": "Restartováno",
|
||||
"Switch to sh": "Přepnout na sh shell",
|
||||
"terminal": "Terminál",
|
||||
"New Container Name...": "Název nového kontejneru...",
|
||||
"Network name...": "Název sítě...",
|
||||
"Select a network...": "Vyberte síť...",
|
||||
"NoNetworksAvailable": "Žádná síť není dostupná. Musíte přidat interní síť nebo povolit externí sítě v pravé části."
|
||||
"Cannot connect to the socket server.": "Nelze se připojit k serveru ."
|
||||
}
|
||||
|
@ -58,8 +58,8 @@
|
||||
"Update Password": "Opdater adgangskode",
|
||||
"Advanced": "Avanceret",
|
||||
"Please use this option carefully!": "Brug venligst denne indstilling forsigtigt!",
|
||||
"Enable Auth": "Aktiver godkendelse",
|
||||
"Disable Auth": "Deaktiver godkendelse",
|
||||
"Enable Auth": "Aktiver godkændelse",
|
||||
"Disable Auth": "Deaktiver godkændelse",
|
||||
"I understand, please disable": "Jeg forstår, venligst deaktiver",
|
||||
"Leave": "Forlad",
|
||||
"Frontend Version": "Version",
|
||||
@ -72,7 +72,7 @@
|
||||
"Settings": "Indstillinger",
|
||||
"Logout": "Log ud",
|
||||
"Convert to Compose": "Konverter til Compose",
|
||||
"active": "aktiv",
|
||||
"active": "aktive",
|
||||
"exited": "forladt",
|
||||
"inactive": "inaktive",
|
||||
"Appearance": "Udseende",
|
||||
@ -112,15 +112,5 @@
|
||||
"agentRemovedSuccessfully": "Agent succesfuld fjernet.",
|
||||
"removeAgent": "Fjern agent",
|
||||
"removeAgentMsg": "Er du sikker på at du vil fjerne denne agent?",
|
||||
"LongSyntaxNotSupported": "Langt syntaks er ikke understøttet her. Forsøg venligst med YAML-editoren.",
|
||||
"Saved": "Gemt",
|
||||
"Deleted": "Slettet",
|
||||
"Updated": "Opdateret",
|
||||
"Started": "Startet",
|
||||
"Stopped": "Stoppet",
|
||||
"Restarted": "Genstartet",
|
||||
"terminal": "Terminal",
|
||||
"Network name...": "Netværksnavn...",
|
||||
"Select a network...": "Vælg et netværk...",
|
||||
"Deployed": "Udrullet"
|
||||
"LongSyntaxNotSupported": "Langt syntaks er ikke understøttet her. Forsøg venligst med YAML-editoren."
|
||||
}
|
||||
|
@ -1,132 +0,0 @@
|
||||
{
|
||||
"languageName": "Schwiizerdütsch",
|
||||
"Create your admin account": "Erstell dis Admin-Konto",
|
||||
"authIncorrectCreds": "Falsche Benutzername oder falsches Passwort.",
|
||||
"PasswordsDoNotMatch": "Passwörter stimmed nöd überein.",
|
||||
"Repeat Password": "Passwort wiederhole",
|
||||
"Create": "Erstelle",
|
||||
"signedInDisp": "Agmeldet als {0}",
|
||||
"signedInDispDisabled": "Ameldig deaktiviert.",
|
||||
"home": "Startsiite",
|
||||
"console": "Konsole",
|
||||
"registry": "Container Registry",
|
||||
"compose": "Compose",
|
||||
"addFirstStackMsg": "Stell din erste Stack zämme!",
|
||||
"stackName": "Stack-Name",
|
||||
"deployStack": "Deploye",
|
||||
"deleteStack": "Lösche",
|
||||
"stopStack": "Ahalte",
|
||||
"restartStack": "Neustarte",
|
||||
"updateStack": "Aktualisiere",
|
||||
"startStack": "Starte",
|
||||
"editStack": "Bearbeite",
|
||||
"discardStack": "Verwerfe",
|
||||
"saveStackDraft": "Speicher",
|
||||
"notAvailableShort": "N/V",
|
||||
"deleteStackMsg": "Wotsch de Stack würklich lösche?",
|
||||
"stackNotManagedByDockgeMsg": "De Stack wird nöd vo Dockge verwaltet.",
|
||||
"primaryHostname": "Primäre Hostname",
|
||||
"general": "Allgemein",
|
||||
"container": "Container",
|
||||
"scanFolder": "Stacks-Ordner durchsueche",
|
||||
"dockerImage": "Image",
|
||||
"restartPolicyUnlessStopped": "Falls nöd gstoppt",
|
||||
"restartPolicyAlways": "Immer",
|
||||
"restartPolicyOnFailure": "Bimene Fehler",
|
||||
"restartPolicyNo": "Kein Neustart",
|
||||
"environmentVariable": "Umgebigsvariable",
|
||||
"restartPolicy": "Neustart Richtlinie",
|
||||
"containerName": "Container-Name",
|
||||
"port": "Port / Ports",
|
||||
"volume": "Volume / Volumes",
|
||||
"network": "Netzwerk | Netzwerke",
|
||||
"dependsOn": "Container-Abhängigkeit/e",
|
||||
"addListItem": "{0} hinzuefüege",
|
||||
"deleteContainer": "Lösche",
|
||||
"addContainer": "Container hinzuefüege",
|
||||
"addNetwork": "Netzwerk hinzuefüege",
|
||||
"disableauth.message1": "Bisch der sicher, dass du d'<strong>Ameldung deaktiviere</strong> wotsch?",
|
||||
"disableauth.message2": "Es isch für Szenarien vorgseh, <strong>in dene du beabsichtigsch, e Drittabüter-Authentifizierig</strong> vor Dockge z'implementiere, wie zum Bispiel Cloudflare Access, Authelia oder anderi Authentifizierigsmechanisme.",
|
||||
"passwordNotMatchMsg": "s'wiederholte Passwort stimmt nöd überein.",
|
||||
"autoGet": "Automatisch lade",
|
||||
"add": "Hinzuefüege",
|
||||
"Edit": "Bearbeite",
|
||||
"applyToYAML": "Uf s'YAML awende",
|
||||
"createExternalNetwork": "Erstelle",
|
||||
"addInternalNetwork": "Hinzuefüege",
|
||||
"Save": "Speichere",
|
||||
"Language": "Sprach",
|
||||
"Current User": "Aktuelle Benutzer",
|
||||
"Change Password": "Passwort ändere",
|
||||
"Current Password": "Aktuells Passwort",
|
||||
"New Password": "Neus Passwort",
|
||||
"Repeat New Password": "Neus Passwort wiederhole",
|
||||
"Update Password": "Passwort aktualisiere",
|
||||
"Advanced": "Erwiitert",
|
||||
"Please use this option carefully!": "Bitte verwend die Option sorgfältig!",
|
||||
"Enable Auth": "Ameldig aktiviere",
|
||||
"Disable Auth": "Ameldig deaktiviere",
|
||||
"I understand, please disable": "Ich verstah, bitte deaktiviere",
|
||||
"Leave": "Verlah",
|
||||
"Frontend Version": "Frontend Version",
|
||||
"Check Update On GitHub": "Update uf GitHub überprüefe",
|
||||
"Show update if available": "Update azeige, wenn verfüegbar",
|
||||
"Also check beta release": "Au Beta-Version überprüefe",
|
||||
"Remember me": "Agmeldet blibe",
|
||||
"Login": "Amelde",
|
||||
"Username": "Benutzername",
|
||||
"Password": "Passwort",
|
||||
"Settings": "Istellige",
|
||||
"Logout": "Abmelde",
|
||||
"Lowercase only": "Nur Chliibuechstabe",
|
||||
"Convert to Compose": "In Compose-Syntax umwandle",
|
||||
"Docker Run": "Docker Run",
|
||||
"active": "aktiv",
|
||||
"exited": "beendet",
|
||||
"inactive": "inaktiv",
|
||||
"Appearance": "Erschiinigsbild",
|
||||
"Security": "Sicherheit",
|
||||
"About": "Über",
|
||||
"Allowed commands:": "Zueglasseni Befehl:",
|
||||
"Internal Networks": "Interni Netzwerk",
|
||||
"External Networks": "Externi Netzwerk",
|
||||
"No External Networks": "Kei externi Netzwerk",
|
||||
"Cannot connect to the socket server.": "Kei Verbindig zum Socket Server.",
|
||||
"reverseProxyMsg1": "Wird en Reverse Proxy benutzt?",
|
||||
"reconnecting...": "Erneute Verbindigsufbau…",
|
||||
"downStack": "Stoppe & Deaktiviere",
|
||||
"extra": "Extra",
|
||||
"url": "URL / URLs",
|
||||
"reverseProxyMsg2": "Lern wie er für WebSockets z'konfiguriere isch.",
|
||||
"connecting...": "Verbindigsufbau zum Socket Server…",
|
||||
"newUpdate": "Neues Update",
|
||||
"dockgeAgent": "Dockge Agent | Dockge Agente",
|
||||
"currentEndpoint": "Aktuell",
|
||||
"dockgeURL": "Dockge URL (z. B. http://127.0.0.1:5001)",
|
||||
"agentOnline": "Online",
|
||||
"agentOffline": "Offline",
|
||||
"connecting": "Verbinde",
|
||||
"connect": "Verbinde",
|
||||
"addAgent": "Agent Hinzuefüege",
|
||||
"agentAddedSuccessfully": "Agent erfolgriich hinzuegfüegt.",
|
||||
"agentRemovedSuccessfully": "Agent erfolgriich entfernt.",
|
||||
"removeAgent": "Agent Entferne",
|
||||
"removeAgentMsg": "Bisch der sicher, dass du de Agent entferne wotsch?",
|
||||
"LongSyntaxNotSupported": "Lange Syntax wird nöd unterstützt. Bitte verwend de YAML-Editor.",
|
||||
"Lost connection to the socket server. Reconnecting...": "Verbindig zum Socket Server verlore. Verbinde...",
|
||||
"Saved": "Gspeicheret",
|
||||
"Deleted": "Glöscht",
|
||||
"Started": "Gstartet",
|
||||
"Stopped": "Gstoppt",
|
||||
"Restarted": "Neugstartet",
|
||||
"New Container Name...": "Neue Container Name...",
|
||||
"Network name...": "Netzwerkname...",
|
||||
"Select a network...": "Netzwerk uswähle...",
|
||||
"Updated": "Aktualisiert",
|
||||
"Deployed": "Deployed",
|
||||
"Switch to sh": "Zu sh wechsle",
|
||||
"terminal": "Terminal",
|
||||
"CurrentHostname": "(nöd gsetzt: verwendet aktuelli Hostname)",
|
||||
"Downed": "Abegfahre",
|
||||
"NoNetworksAvailable": "Kei Netzwerk verfüegbar. Du muesch zersch interni Netzwerk hinzuefüege oder externi Netzwerk uf de rechte Siite aktiviere."
|
||||
}
|
@ -112,21 +112,5 @@
|
||||
"agentRemovedSuccessfully": "Agent erfolgreich entfernt.",
|
||||
"removeAgent": "Agent Entfernen",
|
||||
"removeAgentMsg": "Bist Du sicher, dass Du diesen Agent entfernen möchtest?",
|
||||
"LongSyntaxNotSupported": "Lange Syntax wird nicht unterstützt. Bitte verwende den YAML-Editor.",
|
||||
"Lost connection to the socket server. Reconnecting...": "Verbindung zu Socket Server verloren. Verbinden...",
|
||||
"Saved": "Gespeichert",
|
||||
"Deleted": "Gelöscht",
|
||||
"Started": "Gestartet",
|
||||
"Stopped": "Gestoppt",
|
||||
"Restarted": "Neugestartet",
|
||||
"New Container Name...": "Neuer Container Name...",
|
||||
"Network name...": "Netzwerkname...",
|
||||
"Select a network...": "Netzwerk auswählen...",
|
||||
"Updated": "Aktualisiert",
|
||||
"Deployed": "Deployed",
|
||||
"Switch to sh": "Zu sh wechseln",
|
||||
"terminal": "Terminal",
|
||||
"CurrentHostname": "(nicht gesetzt: verwende aktuellen Hostname)",
|
||||
"Downed": "Heruntergefahren",
|
||||
"NoNetworksAvailable": "Keine Netzwerke verfügbar. Du musst zunächst interne Netzwerke hinzufügen oder externe Netzwerke auf der rechten Seite aktivieren."
|
||||
"LongSyntaxNotSupported": "Lange Syntax wird nicht unterstützt. Bitte verwende den YAML-Editor."
|
||||
}
|
||||
|
@ -25,7 +25,6 @@
|
||||
"saveStackDraft": "Save",
|
||||
"notAvailableShort": "N/A",
|
||||
"deleteStackMsg": "Are you sure you want to delete this stack?",
|
||||
"cancel": "Cancel",
|
||||
"stackNotManagedByDockgeMsg": "This stack is not managed by Dockge.",
|
||||
"primaryHostname": "Primary Hostname",
|
||||
"general": "General",
|
||||
@ -129,10 +128,5 @@
|
||||
"New Container Name...": "New Container Name...",
|
||||
"Network name...": "Network name...",
|
||||
"Select a network...": "Select a network...",
|
||||
"NoNetworksAvailable": "No networks available. You need to add internal networks or enable external networks in the right side first.",
|
||||
"Console is not enabled": "Console is not enabled",
|
||||
"ConsoleNotEnabledMSG1": "Console is a powerful tool that allows you to execute any commands such as <code>docker</code>, <code>rm</code> within the Dockge's container in this Web UI.",
|
||||
"ConsoleNotEnabledMSG2": "It might be dangerous since this Dockge container is connecting to the host's Docker daemon. Also Dockge could be possibly taken down by commands like <code>rm -rf</code>" ,
|
||||
"ConsoleNotEnabledMSG3": "If you understand the risk, you can enable it by setting <code>DOCKGE_ENABLE_CONSOLE=true</code> in the environment variables.",
|
||||
"confirmLeaveStack": "You are currently editing a stack. Are you sure you want to leave?"
|
||||
"NoNetworksAvailable": "No networks available. You need to add internal networks or enable external networks in the right side first."
|
||||
}
|
||||
|
@ -100,33 +100,17 @@
|
||||
"connecting...": "Conectando al servidor del socket…",
|
||||
"url": "Dirección URL | Direcciones URLs",
|
||||
"extra": "Addicional",
|
||||
"currentEndpoint": "Actual",
|
||||
"currentEndpoint": "Corriente",
|
||||
"dockgeURL": "URL de Dockge (ej. http://127.0.0.1:5001)",
|
||||
"agentOnline": "En línea",
|
||||
"agentOnline": "Conectado",
|
||||
"agentOffline": "Desconectado",
|
||||
"connect": "Conectar",
|
||||
"addAgent": "Añadir Agente",
|
||||
"agentAddedSuccessfully": "Agente añadido satisfactoriamente.",
|
||||
"removeAgent": "Eliminar Agente",
|
||||
"removeAgentMsg": "¿Estás seguro que deseas eliminar este agente?",
|
||||
"removeAgent": "Remover Agente",
|
||||
"removeAgentMsg": "Estás seguro que deseas remover este agente?",
|
||||
"dockgeAgent": "Agentes Dockge",
|
||||
"connecting": "Conectando",
|
||||
"agentRemovedSuccessfully": "Agente eliminado satisfactoriamente.",
|
||||
"LongSyntaxNotSupported": "No hay soporte para la sintaxis larga. Por favor use el editor de YAML.",
|
||||
"Lost connection to the socket server. Reconnecting...": "Se ha perdido la conexión con el servidor de socket. Reconectando...",
|
||||
"Saved": "Guardado",
|
||||
"Deployed": "Desplegado",
|
||||
"Deleted": "Eliminado",
|
||||
"Updated": "Actualizado",
|
||||
"Started": "Arrancado",
|
||||
"Stopped": "Parado",
|
||||
"Restarted": "Reseteado",
|
||||
"Downed": "Caído",
|
||||
"Switch to sh": "Cambiar a sh",
|
||||
"terminal": "Terminal",
|
||||
"CurrentHostname": "(Vacío: Seguir hostname actual)",
|
||||
"New Container Name...": "Nombre del nuevo Container...",
|
||||
"Network name...": "Nombre de la red...",
|
||||
"Select a network...": "Selecciona una red...",
|
||||
"NoNetworksAvailable": "No hay redes disponibles. Primero debes agregar redes internas o habilitar redes externas en el lado derecho."
|
||||
"agentRemovedSuccessfully": "Agente removido satisfactoriamente.",
|
||||
"LongSyntaxNotSupported": "Aquí no hay soporte para la sintaxis larga. Por favor use el editor de YAML."
|
||||
}
|
||||
|
@ -112,21 +112,5 @@
|
||||
"currentEndpoint": "Actuel",
|
||||
"connect": "Connecter",
|
||||
"removeAgentMsg": "Êtes-vous sûr de vouloir supprimer cet agent ?",
|
||||
"LongSyntaxNotSupported": "La syntaxe longue n'est pas prise en charge ici. Veuillez utiliser l'éditeur YAML.",
|
||||
"Saved": "Enregistré",
|
||||
"Deployed": "Déployé",
|
||||
"Deleted": "Supprimé",
|
||||
"Updated": "Mis à jour",
|
||||
"Started": "démarrer",
|
||||
"Stopped": "Arrêté",
|
||||
"Restarted": "Redémarré",
|
||||
"Switch to sh": "Passer à sh",
|
||||
"terminal": "Terminal",
|
||||
"New Container Name...": "Nouveau nom du conteneur...",
|
||||
"Network name...": "Nom du réseau...",
|
||||
"Select a network...": "Sélectionnez un réseau...",
|
||||
"Downed": "Abattu",
|
||||
"Lost connection to the socket server. Reconnecting...": "Connexion au serveur socket perdue. Reconnexion...",
|
||||
"CurrentHostname": "(Non défini : suivre le nom d'hôte actuel)",
|
||||
"NoNetworksAvailable": "Aucun réseau disponible. Vous devez d'abord ajouter des réseaux internes ou activer les réseaux externes sur le côté droit."
|
||||
"LongSyntaxNotSupported": "La syntaxe longue n'est pas prise en charge ici. Veuillez utiliser l'éditeur YAML."
|
||||
}
|
||||
|
@ -112,21 +112,5 @@
|
||||
"containerName": "Ainm na gCoimeádán",
|
||||
"disableauth.message2": "Tá sé deartha do chúinsí <strong>ina bhfuil sé beartaithe agat tríú páirtí athbhreithniú a chur i bhfeidhm</strong> os comhair Dockge cosúil le Rochtain Cloudflare, Authelia nó múnlaí deimhniú eile.",
|
||||
"Settings": "Socruithe",
|
||||
"active": "gníomhach",
|
||||
"Lost connection to the socket server. Reconnecting...": "Ceangal caillte leis an bhfreastalaí soicéad. Ag athcheangal...",
|
||||
"Saved": "Shábháil",
|
||||
"Deployed": "Imlonnaithe",
|
||||
"Deleted": "Scriosta",
|
||||
"Updated": "Nuashonraithe",
|
||||
"Started": "Thosaigh",
|
||||
"Stopped": "Stopadh",
|
||||
"Restarted": "Atosaigh",
|
||||
"Downed": "Tugtha anuas",
|
||||
"Switch to sh": "Athraigh go sh",
|
||||
"terminal": "Teirminéal",
|
||||
"CurrentHostname": "(Díshuiteáil: Lean an t-óstainm reatha)",
|
||||
"New Container Name...": "Ainm Gabhdáin Nua...",
|
||||
"Network name...": "Ainm líonra...",
|
||||
"Select a network...": "Roghnaigh líonra...",
|
||||
"NoNetworksAvailable": "Níl líonraí ar fáil. Ní mór duit líonraí inmheánacha a chur leis nó líonraí seachtracha a chumasú ar an taobh deas ar dtús."
|
||||
"active": "gníomhach"
|
||||
}
|
||||
|
@ -47,7 +47,7 @@
|
||||
"Advanced": "Fejlett",
|
||||
"Enable Auth": "Hitelesítés Bekapcsolása",
|
||||
"Disable Auth": "Hitelesítés Kikapcsolása",
|
||||
"I understand, please disable": "Megértettem, kérem kapcsolja ki",
|
||||
"I understand, please disable": "Megértetten, kapcsolja ki",
|
||||
"Leave": "Kilépés",
|
||||
"Frontend Version": "Frontend Verzió",
|
||||
"Also check beta release": "Béta kiadás is",
|
||||
@ -112,21 +112,5 @@
|
||||
"connecting...": "Csatlakozás a socket szerver-hez…",
|
||||
"url": "URL | URL-ek",
|
||||
"dockgeURL": "Dockge URL (pl. http://127.0.0.1:5001)",
|
||||
"LongSyntaxNotSupported": "A hosszú szintaxis itt nem támogatott. Használja a YAML szerkesztőt.",
|
||||
"Lost connection to the socket server. Reconnecting...": "Megszakadt a kapcsolat a socket szerverrel. Újracsatlakozás...",
|
||||
"Saved": "Elmentve",
|
||||
"Deployed": "Telepítve",
|
||||
"Deleted": "Törölve",
|
||||
"Updated": "Frissítve",
|
||||
"Started": "Indult",
|
||||
"Stopped": "Megállítva",
|
||||
"Restarted": "Újraindítva",
|
||||
"Downed": "Leállított",
|
||||
"Switch to sh": "Váltás shell-re",
|
||||
"terminal": "Terminál",
|
||||
"CurrentHostname": "(Nincs beállítva: Az aktuális gazdagépnév követése)",
|
||||
"New Container Name...": "Új konténer név...",
|
||||
"Network name...": "Hálózat név...",
|
||||
"Select a network...": "Válasszon ki egy hálózatot...",
|
||||
"NoNetworksAvailable": "Nincs elérhető hálózat. Először hozzá kell adnia belső hálózatokat, vagy engedélyeznie kell a külső hálózatokat a jobb oldalon."
|
||||
"LongSyntaxNotSupported": "A hosszú szintaxis itt nem támogatott. Használja a YAML szerkesztőt."
|
||||
}
|
||||
|
@ -112,11 +112,5 @@
|
||||
"agentOnline": "Terhubung",
|
||||
"agentOffline": "Terputus",
|
||||
"removeAgentMsg": "Apakah anda yakin untuk menghapus agen ini?",
|
||||
"LongSyntaxNotSupported": "Sintaks yang panjang tidak didukung di sini. Silakan gunakan editor YAML.",
|
||||
"Saved": "Tersimpan",
|
||||
"Deleted": "Terhapus",
|
||||
"Updated": "Telah diperbaharui",
|
||||
"Started": "Aplikasi dimulai",
|
||||
"Stopped": "Aplikasi dihentikan",
|
||||
"Restarted": "Aplikasi memuat kembali"
|
||||
"LongSyntaxNotSupported": "Sintaks yang panjang tidak didukung di sini. Silakan gunakan editor YAML."
|
||||
}
|
||||
|
@ -107,23 +107,5 @@
|
||||
"agentRemovedSuccessfully": "エージェントは正常に削除されました。",
|
||||
"removeAgent": "エージェントを削除",
|
||||
"removeAgentMsg": "本当にこのエージェントを削除しますか?",
|
||||
"url": "URL | URL",
|
||||
"About": "Dockgeについて",
|
||||
"Docker Run": "Docker Run to Compose",
|
||||
"LongSyntaxNotSupported": "長い構文はここではサポートされていません。YAMLエディタを使用してください。",
|
||||
"Lost connection to the socket server. Reconnecting...": "ソケットサーバーとの接続が失われました。再接続中です...",
|
||||
"extra": "追加設定",
|
||||
"Saved": "保存済み",
|
||||
"Deployed": "デプロイ済み",
|
||||
"Deleted": "削除済み",
|
||||
"Updated": "アップデート済み",
|
||||
"Started": "開始済み",
|
||||
"Stopped": "停止済み",
|
||||
"Restarted": "再起動済み",
|
||||
"Switch to sh": "shに切り替え",
|
||||
"terminal": "ターミナル",
|
||||
"New Container Name...": "新しいコンテナ名...",
|
||||
"Network name...": "ネットワーク名...",
|
||||
"Select a network...": "ネットワークを選択...",
|
||||
"NoNetworksAvailable": "利用可能なネットワークがありません。まず右側の内部ネットワークを追加するか、外部ネットワークを有効にする必要があります。"
|
||||
"url": "URL | URL"
|
||||
}
|
||||
|
@ -112,21 +112,5 @@
|
||||
"extra": "Ekstra",
|
||||
"url": "URL | URLe",
|
||||
"reconnecting...": "Wznawianie połączenia…",
|
||||
"LongSyntaxNotSupported": "Nieobsługiwana składnia. Użyj edytora YAML.",
|
||||
"Saved": "Zapisano",
|
||||
"Switch to sh": "Przełącz na sh",
|
||||
"terminal": "Terminal",
|
||||
"Restarted": "Zrestartowano",
|
||||
"Deployed": "Wdrożono",
|
||||
"Deleted": "Usunięto",
|
||||
"Updated": "Zaktualizowano",
|
||||
"Started": "Uruchomiono",
|
||||
"Stopped": "Zatrzymano",
|
||||
"Downed": "Położono",
|
||||
"Lost connection to the socket server. Reconnecting...": "Utracono połączenie z socketem serwera. Ponawiam połączenie...",
|
||||
"New Container Name...": "Nazwa nowego kontenera...",
|
||||
"Network name...": "Nazwa sieci...",
|
||||
"Select a network...": "Wybierz sieć...",
|
||||
"NoNetworksAvailable": "Brak dostępnych sieci. Musisz najpierw dodać sieć wewnętrzną lub włączyć sieci zewnętrzne po prawej stronie.",
|
||||
"CurrentHostname": "(Odznacze: Podążaj za aktualnym hostem)"
|
||||
"LongSyntaxNotSupported": "Nieobsługiwana składnia. Użyj edytora YAML."
|
||||
}
|
||||
|
@ -112,21 +112,5 @@
|
||||
"agentRemovedSuccessfully": "Agente removido com sucesso.",
|
||||
"removeAgent": "Remover Agente",
|
||||
"removeAgentMsg": "Tem certeza de que deseja remover este agente?",
|
||||
"LongSyntaxNotSupported": "Sintaxe longa não é suportada aqui. Por favor, use o editor de YAML.",
|
||||
"Lost connection to the socket server. Reconnecting...": "Conexão perdida com o servidor de socket. Reconectando...",
|
||||
"Saved": "Salvo",
|
||||
"Deployed": "Implantado",
|
||||
"Deleted": "Excluído",
|
||||
"Updated": "Alterado",
|
||||
"Started": "Iniciado",
|
||||
"Stopped": "Parado",
|
||||
"Restarted": "Reiniciado",
|
||||
"Downed": "Finalizado",
|
||||
"Switch to sh": "Mudar para sh",
|
||||
"terminal": "Terminal",
|
||||
"CurrentHostname": "(Não definido: seguir o nome do host atual)",
|
||||
"New Container Name...": "Nome do novo container...",
|
||||
"Network name...": "Nome da rede...",
|
||||
"Select a network...": "Selecione uma rede...",
|
||||
"NoNetworksAvailable": "Nenhuma rede disponível. Você precisa adicionar redes internas ou habilitar redes externas no lado direito primeiro."
|
||||
"LongSyntaxNotSupported": "Sintaxe longa não é suportada aqui. Por favor, use o editor de YAML."
|
||||
}
|
||||
|
@ -86,11 +86,11 @@
|
||||
"reverseProxyMsg1": "Folosești un proxy invers?",
|
||||
"reverseProxyMsg2": "Verificați cum să-l configurați pentru WebSocket",
|
||||
"Cannot connect to the socket server.": "Nu se poate conecta la serverul socket.",
|
||||
"reconnecting...": "Reconectare…",
|
||||
"connecting...": "Se conectează la serverul socket…",
|
||||
"reconnecting...": "Reconectare...",
|
||||
"connecting...": "Se conectează la serverul socket...",
|
||||
"url": "URL | URLs",
|
||||
"extra": "Suplimentar",
|
||||
"downStack": "Opriți & Inactiv",
|
||||
"downStack": "Opriți & Coborâți",
|
||||
"saveStackDraft": "Salvați",
|
||||
"restartPolicyUnlessStopped": "Dacă nu este oprit",
|
||||
"environmentVariable": "Variabila de mediu | Variabile de mediu",
|
||||
@ -98,35 +98,5 @@
|
||||
"Please use this option carefully!": "Vă rugăm să utilizați această opțiune cu atenție!",
|
||||
"Show update if available": "Afișează actualizarea dacă este disponibilă",
|
||||
"disableauth.message1": "Sigur doriți să <strong>dezactivați autentificarea</strong>?",
|
||||
"disableauth.message2": "Este conceput pentru scenarii <strong>în care intenționați să implementați autentificarea terță</strong> în fața Dockge-lui, cum ar fi Cloudflare Access, Authelia sau alte mecanisme de autentificare.",
|
||||
"newUpdate": "Actualizare nouă",
|
||||
"dockgeAgent": "Agent Dockge | Agenții Dockge",
|
||||
"currentEndpoint": "Actual",
|
||||
"dockgeURL": "Dockge URL (de ex. http://127.0.0.1:5001)",
|
||||
"agentOnline": "Online",
|
||||
"agentOffline": "Offline",
|
||||
"connecting": "Se conectează",
|
||||
"addAgent": "Adaugă Agent",
|
||||
"connect": "Conectează",
|
||||
"agentRemovedSuccessfully": "Agentul a fost eliminat cu succes.",
|
||||
"removeAgent": "Șterge Agentul",
|
||||
"removeAgentMsg": "Ești sigur că vrei să elimini acest agent?",
|
||||
"LongSyntaxNotSupported": "Sintaxa lungă nu este acceptată aici. Vă rugăm să utilizați editorul YAML.",
|
||||
"agentAddedSuccessfully": "Agentul a fost adăugat cu succes.",
|
||||
"Lost connection to the socket server. Reconnecting...": "S-a pierdut conexiunea cu serverul socket. Se reconectează...",
|
||||
"Saved": "Salvat",
|
||||
"Deployed": "Lansat",
|
||||
"Deleted": "Șters",
|
||||
"Updated": "Actualizat",
|
||||
"Started": "Pornit",
|
||||
"Stopped": "Oprit",
|
||||
"Restarted": "Repornit",
|
||||
"Downed": "Coborât",
|
||||
"Switch to sh": "Schimbă la sh",
|
||||
"terminal": "Terminal",
|
||||
"CurrentHostname": "(Nesetat: Urmăriți numele de host curent)",
|
||||
"New Container Name...": "Nume nou de container...",
|
||||
"Network name...": "Numele rețelei...",
|
||||
"Select a network...": "Selectați o rețea...",
|
||||
"NoNetworksAvailable": "Nu există rețele disponibile. Mai întâi trebuie să adăugați rețele interne sau să activați rețele externe în partea dreaptă."
|
||||
"disableauth.message2": "Este conceput pentru scenarii <strong>în care intenționați să implementați autentificarea terță</strong> în fața Dockge-lui, cum ar fi Cloudflare Access, Authelia sau alte mecanisme de autentificare."
|
||||
}
|
||||
|
@ -112,21 +112,5 @@
|
||||
"removeAgentMsg": "Är du säker att du vill ta bort denna agent?",
|
||||
"dockgeAgent": "Dockge agenter | Dockge agenter",
|
||||
"agentAddedSuccessfully": "Agent tillagd.",
|
||||
"LongSyntaxNotSupported": "Lång syntax stöds inte här. Använd YAML-redigeraren.",
|
||||
"Lost connection to the socket server. Reconnecting...": "Tappade anslutning till socket-server. Återansluter...",
|
||||
"Saved": "Sparad",
|
||||
"Deployed": "Uppsatt",
|
||||
"Deleted": "Borttagen",
|
||||
"Updated": "Uppdaterad",
|
||||
"Started": "Startad",
|
||||
"Stopped": "Stoppad",
|
||||
"Restarted": "Omstartad",
|
||||
"Downed": "Nedstängd",
|
||||
"Switch to sh": "Byt till sh",
|
||||
"terminal": "Terminal",
|
||||
"CurrentHostname": "(Ej angedd: Följ nuvarande värdnamn)",
|
||||
"New Container Name...": "Nytt kontainernamn...",
|
||||
"Network name...": "Nätverksnamn...",
|
||||
"Select a network...": "Välj ett nätverk...",
|
||||
"NoNetworksAvailable": "Inga nätverk tillgängliga. Du måste lägga till interna nätverk eller aktivera externa nätverk på högra sidan först."
|
||||
"LongSyntaxNotSupported": "Lång syntax stöds inte här. Använd YAML-redigeraren."
|
||||
}
|
||||
|
@ -112,21 +112,5 @@
|
||||
"agentRemovedSuccessfully": "Aracı başarıyla kaldırıldı.",
|
||||
"removeAgent": "Aracıyı Kaldır",
|
||||
"removeAgentMsg": "Bu aracıyı kaldırmak istediğinize emin misiniz?",
|
||||
"LongSyntaxNotSupported": "Uzun syntax burada desteklenmiyor. Lütfen YAML editörünü kullanın.",
|
||||
"Lost connection to the socket server. Reconnecting...": "Soket sunucusuna bağlantı kesildi. Yeniden bağlanılıyor...",
|
||||
"NoNetworksAvailable": "Kullanılabilir ağ yok. Önce dahili ağları eklemeniz veya sağ tarafta harici ağları etkinleştirmeniz gerekir.",
|
||||
"Saved": "Kayıtlı",
|
||||
"Deployed": "Deploy Edildi",
|
||||
"Deleted": "Silindi",
|
||||
"Updated": "Güncellendi",
|
||||
"Started": "Başladı",
|
||||
"Stopped": "Durdu",
|
||||
"Restarted": "Yeniden başlatıldı",
|
||||
"Downed": "Düştü",
|
||||
"Switch to sh": "sh'ye çevir",
|
||||
"terminal": "Terminal",
|
||||
"CurrentHostname": "(Ayarlanmamış: Mevcut hostname'i takip et)",
|
||||
"New Container Name...": "Yeni Konteyner Adı...",
|
||||
"Network name...": "Ağ adı...",
|
||||
"Select a network...": "Bir ağ seçin..."
|
||||
"LongSyntaxNotSupported": "Uzun syntax burada desteklenmiyor. Lütfen YAML editörünü kullanın."
|
||||
}
|
||||
|
@ -112,21 +112,5 @@
|
||||
"agentRemovedSuccessfully": "Агент успішно видалено.",
|
||||
"agentAddedSuccessfully": "Агент успішно додано.",
|
||||
"removeAgentMsg": "Ви впевнені, що хочете видалити цей агент?",
|
||||
"LongSyntaxNotSupported": "Довгий синтаксис тут не підтримується. Будь ласка, використовуйте редактор YAML.",
|
||||
"Saved": "Збережено",
|
||||
"Deployed": "Розгорнуто",
|
||||
"Deleted": "Видалено",
|
||||
"Updated": "Оновлено",
|
||||
"Started": "Запущено",
|
||||
"Stopped": "Зупинено",
|
||||
"Downed": "Вимкнено",
|
||||
"Switch to sh": "Перемкнути на sh",
|
||||
"terminal": "Термінал",
|
||||
"New Container Name...": "Нова назва контейнера...",
|
||||
"Network name...": "Назва мережі...",
|
||||
"Select a network...": "Вибрати мережу...",
|
||||
"Lost connection to the socket server. Reconnecting...": "Втрачено зв'язок з сервером сокетів. Повторне підключення...",
|
||||
"Restarted": "Перезапущено",
|
||||
"CurrentHostname": "(Не встановлено: використовувати поточну назву хосту)",
|
||||
"NoNetworksAvailable": "Немає доступних мереж. Спочатку потрібно додати внутрішні мережі або увімкнути зовнішні мережі в правій частині."
|
||||
"LongSyntaxNotSupported": "Довгий синтаксис тут не підтримується. Будь ласка, використовуйте редактор YAML."
|
||||
}
|
||||
|
@ -112,21 +112,5 @@
|
||||
"removeAgent": "移除代理",
|
||||
"removeAgentMsg": "您确定要移除此代理?",
|
||||
"agentAddedSuccessfully": "代理添加成功。",
|
||||
"LongSyntaxNotSupported": "此处不支持Long syntax,请使用YAML编辑器。",
|
||||
"Lost connection to the socket server. Reconnecting...": "已断开socket服务器连接,重新连接中...",
|
||||
"Saved": "已保存",
|
||||
"Deployed": "已部署",
|
||||
"Deleted": "已删除",
|
||||
"Updated": "已更新",
|
||||
"Started": "已启动",
|
||||
"Stopped": "已停止",
|
||||
"Restarted": "已重启",
|
||||
"Switch to sh": "切换至sh",
|
||||
"terminal": "终端",
|
||||
"CurrentHostname": "未设置:沿用当前主机名",
|
||||
"New Container Name...": "新的容器名称...",
|
||||
"Network name...": "网络名称...",
|
||||
"Select a network...": "选择网络...",
|
||||
"NoNetworksAvailable": "网络不可用.你需要在正确的方向先添加内部网络或者启用外部网络.",
|
||||
"Downed": "已宕机"
|
||||
"LongSyntaxNotSupported": "此处不支持Long syntax,请使用YAML编辑器。"
|
||||
}
|
||||
|
@ -10,7 +10,7 @@
|
||||
"home": "首頁",
|
||||
"console": "主控台",
|
||||
"registry": "映像倉庫",
|
||||
"compose": "撰寫",
|
||||
"compose": "Compose",
|
||||
"addFirstStackMsg": "組合您的第一個堆疊!",
|
||||
"stackName": "堆疊名稱",
|
||||
"deployStack": "部署",
|
||||
@ -20,7 +20,7 @@
|
||||
"updateStack": "更新",
|
||||
"startStack": "啟動",
|
||||
"editStack": "編輯",
|
||||
"discardStack": "丟棄",
|
||||
"discardStack": "捨棄",
|
||||
"saveStackDraft": "儲存",
|
||||
"notAvailableShort": "不可用",
|
||||
"deleteStackMsg": "您確定要刪除這個堆疊嗎?",
|
||||
@ -46,7 +46,7 @@
|
||||
"addContainer": "新增容器",
|
||||
"addNetwork": "新增網路",
|
||||
"disableauth.message1": "您確定要<strong>停用身份驗證</strong>嗎?",
|
||||
"disableauth.message2": "該選項設計用於某些場景,<strong>例如在 Dockge 之介接接第三方身份驗證</strong>,例如 Cloudflare Access、Authelia 或其他身份驗證機制。",
|
||||
"disableauth.message2": "該選項設計用於某些場景,<strong>例如在 Dockge 之上接入第三方認證</strong>,如 Cloudflare Access、Authelia 或其他認證機制。如果您不清楚這個選項的作用,請不要停用驗證!",
|
||||
"passwordNotMatchMsg": "兩次輸入的密碼不一致。",
|
||||
"autoGet": "自動取得",
|
||||
"add": "新增",
|
||||
@ -100,33 +100,5 @@
|
||||
"url": "網址 | 網址",
|
||||
"extra": "額外",
|
||||
"newUpdate": "新版本",
|
||||
"currentEndpoint": "目前",
|
||||
"dockgeURL": "Dockge URL(例如:http://127.0.0.1:5001)",
|
||||
"agentOnline": "線上",
|
||||
"connecting": "正在連線",
|
||||
"agentOffline": "離線",
|
||||
"Lost connection to the socket server. Reconnecting...": "與伺服器斷線。正在重新連線...",
|
||||
"dockgeAgent": "Dockge代理 | Dockge代理",
|
||||
"Saved": "已儲存",
|
||||
"Switch to sh": "切換到 sh",
|
||||
"NoNetworksAvailable": "沒有可以使用的網路。您需要先在右側新增內部網路或啟用外部網路。",
|
||||
"LongSyntaxNotSupported": "這裡不支援長語法。請使用 YAML 編輯器。",
|
||||
"connect": "連接",
|
||||
"addAgent": "新增代理",
|
||||
"agentAddedSuccessfully": "代理新增成功。",
|
||||
"agentRemovedSuccessfully": "代理刪除成功。",
|
||||
"Deployed": "已佈署",
|
||||
"Deleted": "已刪除",
|
||||
"Updated": "已更新",
|
||||
"Started": "開始",
|
||||
"Stopped": "已停止",
|
||||
"Restarted": "重新啟動",
|
||||
"Downed": "斷線",
|
||||
"terminal": "終端",
|
||||
"CurrentHostname": "(取消設定:依據目前主機名稱)",
|
||||
"New Container Name...": "新容器名稱...",
|
||||
"Network name...": "網路名稱...",
|
||||
"Select a network...": "選擇網路...",
|
||||
"removeAgent": "刪除代理",
|
||||
"removeAgentMsg": "您確定要刪除這個代理嗎?"
|
||||
"currentEndpoint": "目前"
|
||||
}
|
||||
|
@ -279,6 +279,7 @@ export default defineComponent({
|
||||
});
|
||||
|
||||
socket.on("agentList", (res) => {
|
||||
console.log(res);
|
||||
if (res.ok) {
|
||||
this.agentList = res.agentList;
|
||||
}
|
||||
|
@ -1,7 +1,7 @@
|
||||
<template>
|
||||
<transition name="slide-fade" appear>
|
||||
<div>
|
||||
<h1 v-if="isAdd" class="mb-3">{{ $t("compose") }}</h1>
|
||||
<h1 v-if="isAdd" class="mb-3">{{$t("compose")}}</h1>
|
||||
<h1 v-else class="mb-3">
|
||||
<Uptime :stack="globalStack" :pill="true" /> {{ stack.name }}
|
||||
<span v-if="$root.agentCount > 1" class="agent-name">
|
||||
@ -150,7 +150,7 @@
|
||||
|
||||
<!-- Combined Terminal Output -->
|
||||
<div v-show="!isEditMode">
|
||||
<h4 class="mb-3">{{ $t("terminal") }}</h4>
|
||||
<h4 class="mb-3">{{$t("terminal")}}</h4>
|
||||
<Terminal
|
||||
ref="combinedTerminal"
|
||||
class="mb-3 terminal"
|
||||
@ -229,7 +229,7 @@
|
||||
</div>
|
||||
|
||||
<!-- Delete Dialog -->
|
||||
<BModal v-model="showDeleteDialog" :cancelTitle="$t('cancel')" :okTitle="$t('deleteStack')" okVariant="danger" @ok="deleteDialog">
|
||||
<BModal v-model="showDeleteDialog" :okTitle="$t('deleteStack')" okVariant="danger" @ok="deleteDialog">
|
||||
{{ $t("deleteStackMsg") }}
|
||||
</BModal>
|
||||
</div>
|
||||
@ -491,11 +491,6 @@ export default {
|
||||
},
|
||||
|
||||
requestServiceStatus() {
|
||||
// Do not request if it is add mode
|
||||
if (this.isAdd) {
|
||||
return;
|
||||
}
|
||||
|
||||
this.$root.emitAgent(this.endpoint, "serviceStatusList", this.stack.name, (res) => {
|
||||
if (res.ok) {
|
||||
this.serviceStatusList = res.serviceStatusList;
|
||||
@ -508,7 +503,7 @@ export default {
|
||||
|
||||
exitConfirm(next) {
|
||||
if (this.isEditMode) {
|
||||
if (confirm(this.$t("confirmLeaveStack"))) {
|
||||
if (confirm("You are currently editing a stack. Are you sure you want to leave?")) {
|
||||
this.exitAction();
|
||||
next();
|
||||
} else {
|
||||
|
@ -1,28 +1,35 @@
|
||||
<template>
|
||||
<transition name="slide-fade" appear>
|
||||
<div v-if="!processing">
|
||||
<h1 class="mb-3">{{ $t("console") }}</h1>
|
||||
<div>
|
||||
<h1 class="mb-3">Console</h1>
|
||||
|
||||
<Terminal v-if="enableConsole" class="terminal" :rows="20" mode="mainTerminal" name="console" :endpoint="endpoint"></Terminal>
|
||||
<div>
|
||||
<p>
|
||||
{{ $t("Allowed commands:") }}
|
||||
<template v-for="(command, index) in allowedCommandList" :key="command">
|
||||
<code>{{ command }}</code>
|
||||
|
||||
<div v-else class="alert alert-warning shadow-box" role="alert">
|
||||
<h4 class="alert-heading">{{ $t("Console is not enabled") }}</h4>
|
||||
<p v-html="$t('ConsoleNotEnabledMSG1')"></p>
|
||||
<p v-html="$t('ConsoleNotEnabledMSG2')"></p>
|
||||
<p v-html="$t('ConsoleNotEnabledMSG3')"></p>
|
||||
<!-- No comma at the end -->
|
||||
<span v-if="index !== allowedCommandList.length - 1">, </span>
|
||||
</template>
|
||||
</p>
|
||||
</div>
|
||||
|
||||
<Terminal class="terminal" :rows="20" mode="mainTerminal" name="console" :endpoint="endpoint"></Terminal>
|
||||
</div>
|
||||
</transition>
|
||||
</template>
|
||||
|
||||
<script>
|
||||
|
||||
import { allowedCommandList } from "../../../common/util-common";
|
||||
|
||||
export default {
|
||||
components: {
|
||||
},
|
||||
data() {
|
||||
return {
|
||||
processing: true,
|
||||
enableConsole: false,
|
||||
allowedCommandList,
|
||||
};
|
||||
},
|
||||
computed: {
|
||||
@ -31,10 +38,7 @@ export default {
|
||||
},
|
||||
},
|
||||
mounted() {
|
||||
this.$root.emitAgent(this.endpoint, "checkMainTerminal", (res) => {
|
||||
this.enableConsole = res.ok;
|
||||
this.processing = false;
|
||||
});
|
||||
|
||||
},
|
||||
methods: {
|
||||
|
||||
|
12
package-lock.json
generated
12
package-lock.json
generated
@ -53,7 +53,7 @@
|
||||
"@types/semver": "^7.7.0",
|
||||
"@typescript-eslint/eslint-plugin": "~6.8.0",
|
||||
"@typescript-eslint/parser": "~6.8.0",
|
||||
"@vitejs/plugin-vue": "~5.2.3",
|
||||
"@vitejs/plugin-vue": "~4.5.2",
|
||||
"@xterm/addon-fit": "beta",
|
||||
"@xterm/xterm": "beta",
|
||||
"bootstrap": "5.3.2",
|
||||
@ -2153,16 +2153,16 @@
|
||||
}
|
||||
},
|
||||
"node_modules/@vitejs/plugin-vue": {
|
||||
"version": "5.2.3",
|
||||
"resolved": "https://registry.npmjs.org/@vitejs/plugin-vue/-/plugin-vue-5.2.3.tgz",
|
||||
"integrity": "sha512-IYSLEQj4LgZZuoVpdSUCw3dIynTWQgPlaRP6iAvMle4My0HdYwr5g5wQAfwOeHQBmYwEkqF70nRpSilr6PoUDg==",
|
||||
"version": "4.5.2",
|
||||
"resolved": "https://registry.npmjs.org/@vitejs/plugin-vue/-/plugin-vue-4.5.2.tgz",
|
||||
"integrity": "sha512-UGR3DlzLi/SaVBPX0cnSyE37vqxU3O6chn8l0HJNzQzDia6/Au2A4xKv+iIJW8w2daf80G7TYHhi1pAUjdZ0bQ==",
|
||||
"dev": true,
|
||||
"license": "MIT",
|
||||
"engines": {
|
||||
"node": "^18.0.0 || >=20.0.0"
|
||||
"node": "^14.18.0 || >=16.0.0"
|
||||
},
|
||||
"peerDependencies": {
|
||||
"vite": "^5.0.0 || ^6.0.0",
|
||||
"vite": "^4.0.0 || ^5.0.0",
|
||||
"vue": "^3.2.25"
|
||||
}
|
||||
},
|
||||
|
@ -1,6 +1,6 @@
|
||||
{
|
||||
"name": "dockge",
|
||||
"version": "1.5.0",
|
||||
"version": "1.4.2",
|
||||
"type": "module",
|
||||
"engines": {
|
||||
"node": ">= 22.14.0"
|
||||
@ -72,7 +72,7 @@
|
||||
"@types/semver": "^7.7.0",
|
||||
"@typescript-eslint/eslint-plugin": "~6.8.0",
|
||||
"@typescript-eslint/parser": "~6.8.0",
|
||||
"@vitejs/plugin-vue": "~5.2.3",
|
||||
"@vitejs/plugin-vue": "~4.5.2",
|
||||
"@xterm/addon-fit": "beta",
|
||||
"@xterm/xterm": "beta",
|
||||
"bootstrap": "5.3.2",
|
||||
|
Reference in New Issue
Block a user