♻️ refactor: Refactor server management API endpoints and typings

This commit is contained in:
web
2025-08-26 09:37:15 -07:00
parent 217ddce60c
commit 4f7cc807af
141 changed files with 5665 additions and 10338 deletions
+18 -9
View File
@@ -1,27 +1,36 @@
{
"ADS Config": "ADS-Konfiguration",
"Announcement Management": "Ankündigungsverwaltung",
"Application Management": "Anwendungsverwaltung",
"Auth Control": "Authentifizierungskontrolle",
"Balance": "Guthaben",
"Commerce": "Handel",
"Commission": "Provision",
"Coupon Management": "Gutscheinverwaltung",
"Dashboard": "Armaturenbrett",
"Document Management": "Dokumentenverwaltung",
"Finance": "Finanzen",
"Email": "E-Mail",
"Gift": "Geschenk",
"Login": "Anmelden",
"Logs & Analytics": "Protokolle & Analysen",
"Maintenance": "Wartung",
"Marketing Management": "Marketingmanagement",
"Node Management": "Knotenverwaltung",
"Order Management": "Bestellverwaltung",
"Payment Config": "Zahlungskonfiguration",
"Product Management": "Produktmanagement",
"Protocol Management": "Protokollverwaltung",
"Rule Management": "Regelverwaltung",
"Server": "Dienst",
"Register": "Registrieren",
"Reset Subscribe": "Abonnement zurücksetzen",
"SMS": "SMS",
"Server Management": "Serververwaltung",
"Settings": "Einstellungen",
"Server Traffic": "Serververkehr",
"Subscribe": "Abonnieren",
"Subscribe Config": "Abonnieren-Konfiguration",
"Subscribe Traffic": "Abonnieren Verkehr",
"System": "System",
"System Config": "Systemkonfiguration",
"System Management": "Systemverwaltung",
"System Tool": "Systemwerkzeug",
"Ticket Management": "Ticketverwaltung",
"User": "Benutzer",
"User Detail": "Benutzerdetails",
"User Management": "Benutzerverwaltung"
"User Management": "Benutzerverwaltung",
"Users & Support": "Benutzer & Unterstützung"
}
+37
View File
@@ -0,0 +1,37 @@
{
"address": "Adresse",
"cancel": "Abbrechen",
"confirm": "Bestätigen",
"confirmDeleteDesc": "Diese Aktion kann nicht rückgängig gemacht werden.",
"confirmDeleteTitle": "Knoten löschen?",
"copied": "Kopiert",
"copy": "Kopieren",
"create": "Erstellen",
"created": "Erstellt",
"delete": "Löschen",
"deleted": "Gelöscht",
"drawerCreateTitle": "Knoten erstellen",
"drawerEditTitle": "Knoten bearbeiten",
"edit": "Bearbeiten",
"enabled": "Aktiviert",
"enabled_off": "Deaktiviert",
"enabled_on": "Aktiviert",
"errors": {
"nameRequired": "Bitte geben Sie einen Namen ein",
"portRange": "Der Port muss zwischen 1 und 65535 liegen",
"protocolRequired": "Bitte wählen Sie ein Protokoll aus",
"serverAddrRequired": "Bitte geben Sie eine Eingangsadresse ein",
"serverRequired": "Bitte wählen Sie einen Server aus"
},
"name": "Name",
"pageTitle": "Knoten",
"port": "Port",
"protocol": "Protokoll",
"select_protocol": "Protokoll auswählen…",
"select_server": "Server auswählen…",
"server": "Server",
"tags": "Tags",
"tags_description": "Berechtigungsgruppierungs-Tag (einschließlich Planbindung und Lieferrichtlinien).",
"tags_placeholder": "Verwenden Sie Enter oder Komma (,) um mehrere Tags hinzuzufügen",
"updated": "Aktualisiert"
}
+3 -58
View File
@@ -1,59 +1,6 @@
{
"actions": "Aktionen",
"app": {
"appDownloadURL": "App-Download-URL",
"appIcon": "App-Symbol",
"appList": "App-Liste",
"appName": "App-Name",
"backupDomains": "Liste der Backup-Domains",
"backupDomainsDescription": "Liste der Backup-Domains für die Domain-Auflösung, eine Domain pro Zeile",
"batchDelete": "Stapel löschen",
"cancel": "Abbrechen",
"communicationKey": "Kommunikationsschlüssel",
"communicationKeyDescription": "Schlüssel, der für die Kommunikation mit dem Client verwendet wird",
"config": "Konfiguration",
"configApp": "App-Konfiguration",
"confirm": "Bestätigen",
"confirmDelete": "Löschen bestätigen",
"create": "Erstellen",
"createApp": "App erstellen",
"createSuccess": "Erfolgreich erstellt",
"defaultVersion": "Standard",
"delete": "Löschen",
"deleteWarning": "Diese Aktion kann nicht rückgängig gemacht werden",
"describeDescription": "Wird verwendet, um die Anwendung zu beschreiben, wird in der App-Liste angezeigt",
"description": "Beschreibung",
"downloadLink": "Download-Link",
"edit": "Bearbeiten",
"editApp": "App bearbeiten",
"encryption": "Verschlüsselungsmethode",
"encryptionDescription": "Wählen Sie die Verschlüsselungsmethode für die Kommunikation mit dem Client. Wenn ausgewählt, wird der Client diese Methode verwenden, um mit dem Server zu kommunizieren.",
"nameDescription": "Anwendungsname, wird in der App-Liste angezeigt",
"platform": "Plattform",
"selectApp": "App auswählen",
"selectAppDescription": "Wählen Sie die App aus, die konfiguriert werden soll. Alle Einstellungen gelten für die ausgewählte App.",
"startupPicture": "Startbild",
"startupPictureDescription": "Startbild, unterstützt Netzwerk- und lokale Bilder. Für Netzwerkbilder bitte die vollständige Bild-URL eingeben",
"startupPicturePreview": "Vorschau des Startbildes",
"startupPictureSkip": "Überspringzeit des Startbildes",
"startupPictureSkipDescription": "Anzeigedauer des Startbildes in Sekunden, 0 eingeben, um nicht anzuzeigen",
"subscriptionProtocol": "Abonnementprotokoll",
"updateSuccess": "Erfolgreich aktualisiert",
"version": "Version"
},
"cancel": "Abbrechen",
"config": {
"singleSubscriptionMode": "Einzelabonnement-Modus",
"subscriptionDomain": "Abonnement-Domain",
"subscriptionDomainDescription": "Wird für Abonnements verwendet; leer lassen, um die Site-Domain zu verwenden",
"subscriptionDomainPlaceholder": "Abonnement-Domain eingeben, eine pro Zeile",
"subscriptionPath": "Abonnement-Pfad",
"subscriptionPathDescription": "Wird für Abonnements verwendet; starten Sie das System nach der Änderung neu, um die optimale Leistung zu gewährleisten",
"subscriptionPathPlaceholder": "Eingeben",
"updateSuccess": "Erfolgreich aktualisiert",
"wildcardResolution": "Wildcard-Auflösung",
"wildcardResolutionDescription": "Wird für Abonnements verwendet"
},
"confirm": "Bestätigen",
"confirmDelete": "Möchten Sie wirklich löschen?",
"copy": "Kopieren",
@@ -94,6 +41,9 @@
"name": "Name",
"noLimit": "Keine Begrenzung",
"noReset": "Kein Zurücksetzen",
"node": "Knoten",
"nodeGroup": "Knotengruppe",
"nodes": "Knoten",
"pricing": "Preisgestaltung",
"purchaseWithDiscount": "Abzug erlauben",
"purchaseWithDiscountDescription": "Aktivieren oder deaktivieren Sie die Abmeldefunktion. Nach der Aktivierung führt das System die Abzugsverarbeitung gemäß den konfigurierten Regeln und Anteilen durch, und der verbleibende Wert wird dem Guthaben gutgeschrieben.",
@@ -106,9 +56,6 @@
"selectResetCycle": "Bitte wählen Sie einen Zurücksetzungszyklus",
"selectSubscribeGroup": "Bitte Abonnementgruppe auswählen",
"selectUnitTime": "Bitte wählen Sie eine Zeiteinheit",
"server": "Dienst",
"serverGroup": "Dienstgruppe",
"servers": "Server",
"speedLimit": "Geschwindigkeitsbegrenzung ",
"traffic": "Datenvolumen",
"unitPrice": "Einheitspreis",
@@ -150,8 +97,6 @@
"subscribeGroup": "Gruppe abonnieren",
"tabs": {
"subscribe": "Abonnieren",
"subscribeApp": "App-Konfiguration",
"subscribeConfig": "Abonnement-Konfiguration",
"subscribeGroup": "Abonnieren Gruppe"
},
"traffic": "Verkehr",
-183
View File
@@ -1,183 +0,0 @@
{
"config": {
"addTimeSlot": "Zeitfenster hinzufügen",
"communicationKey": "Kommunikationsschlüssel",
"communicationKeyDescription": "Schlüssel für die Knotenkommunikation zur Gewährleistung der Datensicherheit",
"delete": "Löschen",
"dynamicMultiplier": "Dynamischer Multiplikator",
"dynamicMultiplierDescription": "Dynamischer Multiplikator bezieht sich auf die Verarbeitung von übertragenen Daten mit unterschiedlichen Multiplikatoren für verschiedene Knoten während unterschiedlicher Zeiträume.",
"endTime": "Endzeit",
"inputPlaceholder": "Eingeben",
"multiplier": "Multiplikator",
"nodePullInterval": "Knotenabfrageintervall",
"nodePullIntervalDescription": "Häufigkeit (in Sekunden), mit der Knoten Daten vom Panel abrufen",
"nodePushInterval": "Knotenübertragungsintervall",
"nodePushIntervalDescription": "Häufigkeit, mit der Knoten Daten an das Panel übertragen",
"reset": "Zurücksetzen",
"save": "Speichern",
"saveSuccess": "Erfolgreich gespeichert",
"startTime": "Startzeit",
"timeSlot": "Zeitfenster"
},
"group": {
"actions": "Aktionen",
"cancel": "Abbrechen",
"confirm": "Bestätigen",
"confirmDelete": "Möchten Sie wirklich löschen?",
"create": "Erstellen",
"createNodeGroup": "Knoten-Gruppe erstellen",
"createdSuccessfully": "Erfolgreich erstellt",
"delete": "Löschen",
"deleteWarning": "Nach dem Löschen können die Daten nicht wiederhergestellt werden, bitte vorsichtig vorgehen.",
"deletedSuccessfully": "Erfolgreich gelöscht",
"description": "Beschreibung",
"edit": "Bearbeiten",
"editNodeGroup": "Knoten-Gruppe bearbeiten",
"name": "Name",
"title": "Liste der Knoten-Gruppen",
"updatedAt": "Aktualisierungszeit"
},
"groupForm": {
"cancel": "Abbrechen",
"confirm": "Bestätigen",
"description": "Beschreibung",
"name": "Name"
},
"node": {
"abnormal": "Abnormalität",
"actions": "Aktionen",
"address": "Adresse",
"all": "Alle",
"basicInfo": "Grundlegende Informationen",
"cancel": "Abbrechen",
"confirm": "Bestätigen",
"confirmDelete": "Möchten Sie wirklich löschen?",
"copy": "Kopieren",
"copySuccess": "Erfolgreich kopiert",
"create": "Erstellen",
"createNode": "Knoten erstellen",
"createSuccess": "Erfolgreich erstellt",
"delete": "Löschen",
"deleteSuccess": "Erfolgreich gelöscht",
"deleteWarning": "Nach dem Löschen können die Daten nicht wiederhergestellt werden. Bitte vorsichtig vorgehen.",
"detail": "Einzelheiten",
"disabled": "Deaktiviert",
"disk": "Festplatte",
"edit": "Bearbeiten",
"editNode": "Knoten bearbeiten",
"enable": "Aktivieren",
"enabled": "Aktiviert",
"expireTime": "Ablaufzeit",
"hide": "Ausblenden",
"id": "ID",
"ipAddresses": "IP-Adressen",
"lastUpdated": "Zuletzt aktualisiert",
"location": "Standort",
"memory": "Speicher",
"name": "Name",
"noData": "--",
"node": "Knoten",
"nodeDetail": "Knotendetails",
"nodeGroup": "Knotengruppe",
"nodeStatus": "Knotenstatus",
"normal": "Normal",
"onlineCount": "Online-Anzahl",
"onlineUsers": "Online-Benutzer",
"protocol": "Protokoll",
"rate": "Rate",
"relay": "Relais",
"serverAddr": "Serveradresse",
"speedLimit": "Geschwindigkeitsbegrenzung",
"status": "Status",
"subscribeId": "Abonnieren ID",
"subscribeName": "Abonnieren Name",
"subscription": "Abonnement",
"tags": "Stichwörter",
"trafficRatio": "Verkehrsrate",
"trafficUsage": "Datenverbrauch",
"type": "Typ",
"updateSuccess": "Erfolgreich aktualisiert",
"updatedAt": "Aktualisierungszeit",
"user": "Benutzer",
"userDetail": "Benutzerdetails",
"userId": "Benutzer-ID"
},
"nodeForm": {
"allowInsecure": "Unsichere Verbindungen erlauben",
"cancel": "Abbrechen",
"city": "Stadt",
"confirm": "Bestätigen",
"congestionController": "Staukontrolle",
"country": "Land",
"disableSni": "SNI deaktivieren",
"edit": "Bearbeiten",
"editSecurity": "Sicherheitskonfiguration bearbeiten",
"enableTLS": "TLS aktivieren",
"encryptionMethod": "Verschlüsselungsmethode",
"fingerprint": "Fingerprint",
"flow": "Flusskontrollalgorithmus",
"groupId": "Knotengruppe",
"hopInterval": "Hop-Intervall",
"hopPorts": "Hop-Ports",
"hopPortsPlaceholder": "Mehrere Ports mit Kommas trennen",
"name": "Name",
"obfsPassword": "Obfuskationspasswort",
"obfsPasswordPlaceholder": "Für keine Obfuskation leer lassen",
"path": "Pfad",
"pleaseSelect": "Bitte auswählen",
"port": "Serverport",
"protocol": "Protokoll",
"reduceRtt": "RTT reduzieren",
"relayHost": "Relay-Host",
"relayMode": "Relay-Modus",
"relayPort": "Relay-Port",
"relayPrefix": "Relay-Präfix",
"remarks": "Bemerkungen",
"security": "Sicherheit",
"securityConfig": "Sicherheitskonfiguration",
"selectEncryptionMethod": "Verschlüsselungsmethode auswählen",
"selectNodeGroup": "Knotengruppe auswählen",
"selectProtocol": "Protokoll auswählen",
"selectRelayMode": "Relay-Modus auswählen",
"serverAddr": "Serveradresse",
"serverKey": "Server-Schlüssel",
"serverName": "Dienstname",
"speedLimit": "Geschwindigkeitsbegrenzung",
"speedLimitPlaceholder": "Unbegrenzt",
"tags": "Tags",
"tagsPlaceholder": "Verwenden Sie Enter oder Komma (,) um mehrere Tags einzugeben",
"trafficRatio": "Verkehrsrate",
"transport": "Transportprotokollkonfiguration",
"transportConfig": "Transportprotokollkonfiguration",
"transportHost": "Transport-Serveradresse",
"transportPath": "Transportpfad",
"transportServerName": "Transport-Servername",
"udpRelayMode": "UDP-Relay-Modus"
},
"relayModeOptions": {
"all": "Alle",
"none": "Keine",
"random": "Zufällig"
},
"securityConfig": {
"fingerprint": "Fingerprint",
"privateKey": "Privater Schlüssel",
"privateKeyPlaceholder": "Für automatische Generierung leer lassen",
"publicKey": "Öffentlicher Schlüssel",
"publicKeyPlaceholder": "Für automatische Generierung leer lassen",
"serverAddress": "Serveradresse",
"serverAddressPlaceholder": "REALITY-Zieladresse, standardmäßig SNI verwenden",
"serverName": "Servername (SNI)",
"serverNamePlaceholder": "REALITY erforderlich, konsistent mit Backend",
"serverPort": "Serverport",
"serverPortPlaceholder": "REALITY-Zielport, standardmäßig 443",
"shortId": "Kurze ID",
"shortIdPlaceholder": "Für automatische Generierung leer lassen",
"sni": "Server Name Indication (SNI)"
},
"tabs": {
"node": "Knoten",
"nodeConfig": "Knoten-Konfiguration",
"nodeGroup": "Knotengruppe"
}
}
+101
View File
@@ -0,0 +1,101 @@
{
"address": "Adresse",
"address_placeholder": "Serveradresse",
"cancel": "Abbrechen",
"city": "Stadt",
"config": {
"actions": {
"cancel": "Abbrechen",
"save": "Speichern"
},
"communicationKey": "Kommunikationsschlüssel",
"communicationKeyDescription": "Wird zur Authentifizierung des Knotens verwendet.",
"description": "Verwalten Sie die Kommunikationsschlüssel des Knotens, Pull/Push-Intervalle und dynamische Multiplikatoren.",
"dynamicMultiplier": "Dynamischer Multiplikator",
"dynamicMultiplierDescription": "Definieren Sie Zeitfenster und Multiplikatoren zur Anpassung der Verkehrsabrechnung.",
"endTime": "Endzeit",
"inputPlaceholder": "Bitte eingeben",
"multiplier": "Multiplikator",
"nodePullInterval": "Knoten-Pull-Intervall",
"nodePullIntervalDescription": "Wie oft der Knoten die Konfiguration abruft (Sekunden).",
"nodePushInterval": "Knoten-Push-Intervall",
"nodePushIntervalDescription": "Wie oft der Knoten Statistiken sendet (Sekunden).",
"reset": "Zurücksetzen",
"save": "Speichern",
"saveSuccess": "Erfolgreich gespeichert",
"startTime": "Startzeit",
"timeSlot": "Zeitfenster",
"title": "Knoten-Konfiguration"
},
"confirm": "Bestätigen",
"confirmDeleteDesc": "Diese Aktion kann nicht rückgängig gemacht werden.",
"confirmDeleteTitle": "Diesen Server löschen?",
"congestion_controller": "Staukontroller",
"copied": "Kopiert",
"copy": "Kopieren",
"country": "Land",
"cpu": "CPU",
"create": "Erstellen",
"created": "Erfolgreich erstellt",
"delete": "Löschen",
"deleted": "Erfolgreich gelöscht",
"disable_sni": "SNI deaktivieren",
"disk": "Festplatte",
"drawerCreateTitle": "Server erstellen",
"drawerEditTitle": "Server bearbeiten",
"edit": "Bearbeiten",
"enabled": "Aktiviert",
"encryption_method": "Verschlüsselungsmethode",
"expireTime": "Ablaufzeit",
"expired": "Abgelaufen",
"flow": "Fluss",
"hop_interval": "Hop-Intervall",
"hop_ports": "Hop-Ports",
"hop_ports_placeholder": "z.B. 1-65535",
"host": "Host",
"id": "ID",
"ipAddresses": "IP-Adressen",
"memory": "Speicher",
"name": "Name",
"noData": "Keine Daten",
"notAvailable": "Nicht verfügbar",
"obfs_password": "Obfuskationspasswort",
"obfs_password_placeholder": "Obfuskationspasswort eingeben",
"offline": "Offline",
"online": "Online",
"onlineUsers": "Online-Benutzer",
"pageTitle": "Server",
"path": "Pfad",
"please_select": "Bitte auswählen",
"port": "Port",
"protocols": "Protokolle",
"reduce_rtt": "RTT reduzieren",
"security_allow_insecure": "Unsichere Verbindungen zulassen",
"security_fingerprint": "Fingerprint",
"security_private_key": "Echter privater Schlüssel",
"security_private_key_placeholder": "Privaten Schlüssel eingeben",
"security_public_key": "Echter öffentlicher Schlüssel",
"security_public_key_placeholder": "Öffentlichen Schlüssel eingeben",
"security_server_address": "Echte Serveradresse",
"security_server_address_placeholder": "z.B. 1.2.3.4 oder Domain",
"security_server_port": "Echter Serverport",
"security_short_id": "Echte kurze ID",
"security_short_id_placeholder": "Hex-String (bis zu 16 Zeichen)",
"security_sni": "SNI",
"security_title": "Sicherheit",
"select_encryption_method": "Verschlüsselungsmethode auswählen",
"server_key": "Server-Schlüssel",
"service_name": "Dienstname",
"status": "Status",
"subscribeId": "Abonnement-ID",
"subscription": "Abonnement",
"traffic": "Verkehr",
"traffic_ratio": "Multiplikator",
"transport_title": "Transport",
"udp_relay_mode": "UDP-Relay-Modus",
"unitSecondsShort": "S",
"unlimited": "Unbegrenzt",
"updated": "Erfolgreich aktualisiert",
"user": "Benutzer",
"validation_failed": "Validierung fehlgeschlagen. Bitte überprüfen Sie das Formular."
}