From 1010fe7d1151773ad3fa33be93543f7d18fb38e8 Mon Sep 17 00:00:00 2001 From: Alexander Zielonka Date: Thu, 8 Jan 2026 12:32:38 +0100 Subject: [PATCH] Add OpenTTD and Terraria support, improve config editors MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - Add OpenTTD server integration (config editor, server card, API) - Add Terraria server integration (config editor, API) - Add legends to all config editors for syntax highlighting - Simplify UserManagement: remove edit/delete buttons, add Discord avatars - Add auto-logout on 401/403 API errors - Update save button styling with visible borders đŸ¤– Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude Opus 4.5 --- gsm-frontend/public/openttd.png | Bin 0 -> 41003 bytes gsm-frontend/public/terraria.png | Bin 0 -> 57134 bytes gsm-frontend/src/api.js | 37 +++ .../src/components/OpenTTDConfigEditor.jsx | 244 ++++++++++++++++++ .../src/components/PalworldConfigEditor.jsx | 4 +- gsm-frontend/src/components/ServerCard.jsx | 16 ++ .../src/components/TerrariaConfigEditor.jsx | 230 +++++++++++++++++ .../src/components/UserManagement.jsx | 207 +++------------ .../src/components/ZomboidConfigEditor.jsx | 4 +- gsm-frontend/src/pages/Dashboard.jsx | 10 +- gsm-frontend/src/pages/ServerDetail.jsx | 24 ++ 11 files changed, 600 insertions(+), 176 deletions(-) create mode 100644 gsm-frontend/public/openttd.png create mode 100644 gsm-frontend/public/terraria.png create mode 100644 gsm-frontend/src/components/OpenTTDConfigEditor.jsx create mode 100644 gsm-frontend/src/components/TerrariaConfigEditor.jsx diff --git a/gsm-frontend/public/openttd.png b/gsm-frontend/public/openttd.png new file mode 100644 index 0000000000000000000000000000000000000000..0064c3d63f84902c52df01239c7fbbbd8d1108b9 GIT binary patch literal 41003 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 B$+rLi literal 0 HcmV?d00001 diff --git a/gsm-frontend/public/terraria.png b/gsm-frontend/public/terraria.png new file mode 100644 index 0000000000000000000000000000000000000000..0d301a20faad6d7e41d8f918a92cbeeec88cf659 GIT binary patch literal 57134 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

figJsg)_w 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 Cy3pzX literal 0 HcmV?d00001 diff --git a/gsm-frontend/src/api.js b/gsm-frontend/src/api.js index 7d48674..b89092b 100644 --- a/gsm-frontend/src/api.js +++ b/gsm-frontend/src/api.js @@ -9,6 +9,13 @@ async function fetchAPI(endpoint, options = {}) { }, }) + // Auto-logout on auth errors (invalid/expired token) + if (response.status === 401 || response.status === 403) { + localStorage.removeItem('gsm_token') + window.location.href = '/' + throw new Error('Session expired') + } + if (!response.ok) { const error = await response.json().catch(() => ({ message: 'Request failed' })) throw new Error(error.message || `HTTP ${response.status}`) @@ -243,6 +250,36 @@ export async function savePalworldConfig(token, filename, content) { }) } +// Terraria Config Management +export async function getTerrariaConfig(token) { + return fetchAPI('/servers/terraria/config', { + headers: { Authorization: `Bearer ${token}` }, + }) +} + +export async function saveTerrariaConfig(token, content) { + return fetchAPI('/servers/terraria/config', { + method: 'PUT', + headers: { Authorization: `Bearer ${token}` }, + body: JSON.stringify({ content }), + }) +} + +// OpenTTD Config Management +export async function getOpenTTDConfig(token) { + return fetchAPI('/servers/openttd/config', { + headers: { Authorization: `Bearer ${token}` }, + }) +} + +export async function saveOpenTTDConfig(token, content) { + return fetchAPI('/servers/openttd/config', { + method: 'PUT', + headers: { Authorization: `Bearer ${token}` }, + body: JSON.stringify({ content }), + }) +} + // Activity Log export async function getActivityLog(token, limit = 100) { return fetchAPI(`/servers/activity-log?limit=${limit}`, { diff --git a/gsm-frontend/src/components/OpenTTDConfigEditor.jsx b/gsm-frontend/src/components/OpenTTDConfigEditor.jsx new file mode 100644 index 0000000..b30dfa1 --- /dev/null +++ b/gsm-frontend/src/components/OpenTTDConfigEditor.jsx @@ -0,0 +1,244 @@ +import { useState, useEffect, useRef } from 'react' +import { FileText, Save, RefreshCw, AlertTriangle, Check, X } from 'lucide-react' +import { getOpenTTDConfig, saveOpenTTDConfig } from '../api' + +export default function OpenTTDConfigEditor({ token }) { + const [content, setContent] = useState('') + const [originalContent, setOriginalContent] = useState('') + const [loading, setLoading] = useState(true) + const [saving, setSaving] = useState(false) + const [error, setError] = useState(null) + const [success, setSuccess] = useState(null) + const [hasChanges, setHasChanges] = useState(false) + const textareaRef = useRef(null) + const highlightRef = useRef(null) + + useEffect(() => { + loadConfig() + }, [token]) + + useEffect(() => { + setHasChanges(content !== originalContent) + }, [content, originalContent]) + + const handleScroll = () => { + if (highlightRef.current && textareaRef.current) { + highlightRef.current.scrollTop = textareaRef.current.scrollTop + highlightRef.current.scrollLeft = textareaRef.current.scrollLeft + } + } + + async function loadConfig() { + setLoading(true) + setError(null) + try { + const data = await getOpenTTDConfig(token) + setContent(data.content) + setOriginalContent(data.content) + } catch (err) { + setError('Fehler beim Laden der Config: ' + err.message) + } finally { + setLoading(false) + } + } + + async function handleSave() { + if (!hasChanges) return + + setSaving(true) + setError(null) + setSuccess(null) + try { + await saveOpenTTDConfig(token, content) + setOriginalContent(content) + setSuccess('Config gespeichert! Server-Neustart erforderlich.') + setTimeout(() => setSuccess(null), 5000) + } catch (err) { + setError('Fehler beim Speichern: ' + err.message) + } finally { + setSaving(false) + } + } + + function handleDiscard() { + setContent(originalContent) + setError(null) + setSuccess(null) + } + + function highlightSyntax(text) { + if (!text) return '' + + const lines = text.split('\n') + + return lines.map((line) => { + let highlighted = line + .replace(/&/g, '&') + .replace(//g, '>') + + // Section headers [section] + if (line.trim().startsWith('[') && line.trim().endsWith(']')) { + highlighted = `${highlighted}` + } + // Comments (;) + else if (line.trim().startsWith(';')) { + highlighted = `${highlighted}` + } + // key = value + else if (line.includes('=')) { + const idx = line.indexOf('=') + const key = highlighted.substring(0, idx) + const value = highlighted.substring(idx + 1) + + // Color numbers, true/false, and quoted strings + let coloredValue = value + .replace(/\b(true|false)\b/gi, '$1') + .replace(/\b(\d+)\b/g, '$1') + + highlighted = `${key}=${coloredValue}` + } + + return highlighted + }).join('\n') + } + + if (loading) { + return ( +

+ + Lade Config... +
+ ) + } + + return ( +
+ {/* Header */} +
+
+ + openttd.cfg - Server-Einstellungen +
+ +
+ + {/* Error/Success messages */} + {error && ( +
+ + {error} +
+ )} + + {success && ( +
+ + {success} +
+ )} + + {/* Editor */} +
+