Palworld Config Editor
Beschreibung
Palworld Config Editor A Calagopus panel extension: an in-panel PalWorldSettings.ini editor for Palworld servers. Adds a typed REST API to the panel and a "Palworld" tab to the server view where owners can browse every Palworld world setting, see what it does, change it and save — without touching the file manager. Requires panel 1.1.0 or newer. Install Download ggir77palworldconfig.c7s.zip from the latest release, then on your panel: and rebuild/restart the panel as usual for backend extensions (the extension compiles into the panel binary and the frontend is bundled into the SPA build). What it does Palworld dedicated servers read all world settings from one file: The file is two lines: a section header and a single OptionSettings=(Key=Value,...) tuple with 108 entries. The game reads it on boot — and rewrites it from its in-memory values on shutdown (verified empirically: an edit made while the server ran was reverted byte-for-byte by a SIGTERM stop). Because of that, the editor only allows saving while Wings reports the server offline; a save while the server runs would be silently lost at the next stop. The UI disables Save with an explanation until the server is stopped, and the API enforces the same rule. The backend mounts two routes on the panel's client-server router (session-authenticated, server-scoped, subuser-permission aware): | Method | Path | Permission | Purpose | |---|---|---|---| | GET | /api/client/servers/{server}/palworld-config | files.read-content | Parse the INI via Wings; return typed values, managed keys, unknown keys | | PUT | /api/client/servers/{server}/palworld-config | files.create | Validate partial updates against the catalog, rewrite only changed values, write back via Wings | Both routes 404 for servers that are not Palworld (detected by egg name or a PalServer startup command). The frontend tab groups all settings into categories (world, Pals, players, PvP, guilds, ...), with descriptions, recommended ranges, units and flags (performance impact, no effect on dedicated servers) researched from the official Palworld server guide (docs.palworldgame.com), the Palworld wiki and community tooling. Managed keys Most Palworld eggs rewrite some keys (server name, passwords, ports, player cap) from panel startup variables on every boot — editing those in the INI would silently revert. The extension detects this per server instead of hardcoding an egg: • keys rewritten by the egg's config files (Wings file parser), • keys manipulated directly in the startup command (command-line flags, sed hacks), • keys driven by startup variables, either referenced in the startup command (-port={{SERVERPORT}}) or applied implicitly by pelican's PalworldServerConfigParser (detected via the egg's variable list). Detected keys are rejected by the API and shown read-only in the UI with a pointer to the Startup tab. Safety properties • Quote- and parenthesis-aware parser (string values may contain commas; CrossplayPlatforms=(Steam,Xbox,PS5,Mac) nests parens). • Untouched entries are preserved byte-for-byte; a save only rewrites the values that changed. • Every write is validated by type (bool/int/float/enum/text/lists), range capped, and sanitized (no quotes or control characters in strings, tech IDs must be [A-Za-z0-9]), so a malicious value cannot break the tuple or inject keys. • Keys present in the file but unknown to the catalog (added by future game updates) still round-trip and are editable as plain text, so the editor never goes stale-broken. • Writes are refused (409) unless the server is fully offline, because the game overwrites the file from memory on shutdown. • Writes are logged to the server activity log as server:palworld-config.update with the list of changed keys. backend/tests/liveformat.rs locks all of this against a sanitized real-world file captured from a live server: byte-identical round-trip, full catalog coverage and typed conversion of every key. Layout Development The crate builds inside a panel checkout: panel-rs extensions add places it under backend-extensions/ggir77palworldconfig and registers it. Backend unit tests (INI parser, catalog round-trip against a live-captured file) run with cargo test -p ggir77palworldconfig from the panel workspace. Releases are built by CI from tags (vX.Y.Z must match backend/Cargo.toml); each release ships the installable ggir77palworldconfig.c7s.zip. License MIT — see LICENSE.
Kostenlos & Open Source – Installation direkt aus dem Repository