diff --git a/server/curseforge-proxy/index.js b/server/curseforge-proxy/index.js index 42dac5c..733b727 100644 --- a/server/curseforge-proxy/index.js +++ b/server/curseforge-proxy/index.js @@ -1,58 +1,29 @@ 'use strict'; -/* - * AeroMC – CurseForge-Weiterleitung - * --------------------------------- - * Hält den CurseForge-API-Schlüssel und stellt die Anfragen stellvertretend - * für den Launcher. So bleibt der Schlüssel auf dem Server: in der verteilten - * .exe wäre er für jeden auslesbar, und CurseForge untersagt die Weitergabe - * an Dritte ausdrücklich. - * - * Wege: - * GET /health – Lebenszeichen, ohne Schlüsselangaben - * POST /v1/mods/files – Dateiliste auflösen (Rumpf: { fileIds: [...] }) - * GET /v1/download?url=... – Mod-Datei durchreichen (CDN verlangt seit - * Juli 2026 ebenfalls einen Schlüssel) - * - * Einstellungen über Umgebungsvariablen, siehe .env.example. - */ - const http = require('http'); const { Readable } = require('stream'); const KEY = (process.env.CF_API_KEY || '').trim(); const PORT = Number(process.env.PORT || 8420); const HOST = process.env.HOST || '0.0.0.0'; -/* - * Ein oder mehrere gültige Token, durch Komma getrennt. - * - * Mehrere deshalb, weil das Token in ausgelieferten Paketen steckt: Beim - * Wechsel trägst du eine Zeit lang altes und neues ein, damit ältere - * Installationen weiterlaufen, bis alle das Update haben. Danach das alte - * streichen. - */ + const TOKENS = new Set( String(process.env.CF_PROXY_TOKEN || '') .split(',').map((t) => t.trim()).filter(Boolean), ); const LIMIT_PRO_MIN = Number(process.env.RATE_LIMIT_PER_MIN || 60); const MAX_MB = Number(process.env.MAX_DOWNLOAD_MB || 512); -// Anzahl der Reverse-Proxies davor. 0 = keiner, 1 = z. B. Nginx Proxy Manager, -// 2 = z. B. Cloudflare vor dem Proxy Manager. + const PROXY_STUFEN = Math.max(0, Number(process.env.TRUST_PROXY || 0) || 0); const CF_API = 'https://api.curseforge.com/v1'; -// Ohne User-Agent weisen Dienste hinter Cloudflare Anfragen gerne mit 403 ab. const UA = 'AeroMC-Launcher-Proxy/1.0 (+https://git.viper.ipv64.net)'; function cfKopfzeilen(weitere) { return Object.assign({ 'x-api-key': KEY, Accept: 'application/json', 'User-Agent': UA }, weitere || {}); } -// Nur diese Hosts dürfen durchgereicht werden. Ohne diese Liste wäre der -// Server ein offenes Tor in dein Netz – jemand könnte ihn Adressen im -// Heimnetz abrufen lassen und die Antwort mitlesen. const ERLAUBTE_HOSTS = new Set([ 'edge.forgecdn.net', 'mediafilez.forgecdn.net', diff --git a/src/assets/agent/aeromc-capes.jar b/src/assets/agent/aeromc-capes.jar index 4abb88c..4780d95 100644 Binary files a/src/assets/agent/aeromc-capes.jar and b/src/assets/agent/aeromc-capes.jar differ diff --git a/src/assets/spieldesign/edition_alt.png b/src/assets/spieldesign/edition_alt.png new file mode 100644 index 0000000..0bfb72b Binary files /dev/null and b/src/assets/spieldesign/edition_alt.png differ diff --git a/src/assets/spieldesign/edition_neu.png b/src/assets/spieldesign/edition_neu.png new file mode 100644 index 0000000..0bfb72b Binary files /dev/null and b/src/assets/spieldesign/edition_neu.png differ diff --git a/src/assets/spieldesign/font_default.json b/src/assets/spieldesign/font_default.json new file mode 100644 index 0000000..756079d --- /dev/null +++ b/src/assets/spieldesign/font_default.json @@ -0,0 +1,13 @@ +{ + "providers": [ + { + "type": "bitmap", + "file": "aeromc:font/symbole.png", + "ascent": 7, + "height": 8, + "chars": [ + "\ue900\ue901\ue902\ue903\ue904\ue905" + ] + } + ] +} \ No newline at end of file diff --git a/src/assets/spieldesign/icon_128.rgba b/src/assets/spieldesign/icon_128.rgba new file mode 100644 index 0000000..9765285 Binary files /dev/null and b/src/assets/spieldesign/icon_128.rgba differ diff --git a/src/assets/spieldesign/icon_16.rgba b/src/assets/spieldesign/icon_16.rgba new file mode 100644 index 0000000..7bef6b5 Binary files /dev/null and b/src/assets/spieldesign/icon_16.rgba differ diff --git a/src/assets/spieldesign/icon_256.rgba b/src/assets/spieldesign/icon_256.rgba new file mode 100644 index 0000000..ad63195 Binary files /dev/null and b/src/assets/spieldesign/icon_256.rgba differ diff --git a/src/assets/spieldesign/icon_32.rgba b/src/assets/spieldesign/icon_32.rgba new file mode 100644 index 0000000..d0e84ca Binary files /dev/null and b/src/assets/spieldesign/icon_32.rgba differ diff --git a/src/assets/spieldesign/icon_48.rgba b/src/assets/spieldesign/icon_48.rgba new file mode 100644 index 0000000..1c08b12 Binary files /dev/null and b/src/assets/spieldesign/icon_48.rgba differ diff --git a/src/assets/spieldesign/icon_64.rgba b/src/assets/spieldesign/icon_64.rgba new file mode 100644 index 0000000..a56c8fd Binary files /dev/null and b/src/assets/spieldesign/icon_64.rgba differ diff --git a/src/assets/spieldesign/knopf.png b/src/assets/spieldesign/knopf.png new file mode 100644 index 0000000..5f6cfc2 Binary files /dev/null and b/src/assets/spieldesign/knopf.png differ diff --git a/src/assets/spieldesign/knopf.png.mcmeta b/src/assets/spieldesign/knopf.png.mcmeta new file mode 100644 index 0000000..b154853 --- /dev/null +++ b/src/assets/spieldesign/knopf.png.mcmeta @@ -0,0 +1,10 @@ +{ + "gui": { + "scaling": { + "type": "nine_slice", + "width": 200, + "height": 20, + "border": 3 + } + } +} \ No newline at end of file diff --git a/src/assets/spieldesign/knopf_4x.png b/src/assets/spieldesign/knopf_4x.png new file mode 100644 index 0000000..c6cb975 Binary files /dev/null and b/src/assets/spieldesign/knopf_4x.png differ diff --git a/src/assets/spieldesign/knopf_hell.png b/src/assets/spieldesign/knopf_hell.png new file mode 100644 index 0000000..42356c2 Binary files /dev/null and b/src/assets/spieldesign/knopf_hell.png differ diff --git a/src/assets/spieldesign/knopf_hell_4x.png b/src/assets/spieldesign/knopf_hell_4x.png new file mode 100644 index 0000000..44e80ca Binary files /dev/null and b/src/assets/spieldesign/knopf_hell_4x.png differ diff --git a/src/assets/spieldesign/ladelogo.png b/src/assets/spieldesign/ladelogo.png new file mode 100644 index 0000000..1dcd204 Binary files /dev/null and b/src/assets/spieldesign/ladelogo.png differ