SashegDev
a2073044e9
v1.0.16.13 — TSPU/SNI-obkhod: domain selection at login + dynamic mirrors
...
- add DomainSelector: probe every API candidate at launcher startup, pick
fastest reachable (primary api.zern.cc, legacy .ru/.online, geo pl/swe);
integrate into CLI start and JFX network init
- Config.setServerUrl() + persist chosen domain in launcher.properties
- ZHttpClient: default BASE_URL and ZERN_SERVER health-check follow the
selected domain (runtime failover instead of hardcoded api.zernmc.ru)
- server: LAUNCHER_MIRRORS main=api.zern.cc (primary), legacy .ru/.online,
geo-pl api.pl.zern.cc, geo-swe api.swe.zern.cc; /launcher/mirrors exposes them
- diag: check all TLD+geo API hosts (api.{pl,ru,swe}.zern.cc, .ru, .online)
for DNS/TCP/HTTP, known server IPs for all 4 geo nodes
- reverse-proxy geo boxes (pl, swe) -> main:1582 so clients bypass TSPU via
an unblocked SNI; ru left as-is (VLESS VPN box, not proxying API)
2026-08-18 22:19:55 +00:00
SashegDev
a815d685d3
v1.0.16.2 — fix NeoForge/Forge install (bundled JRE for installers, visible progress in JFX UI, skip existing vanilla files), hide zernmc-cli.exe from users
2026-08-15 07:29:43 +00:00
SashegDev
21cd30c1c3
v1.0.16.0 — fix Zern-OBT asset index (1.20.1->5), JavaFX 23->23.0.1 (WebKit WebSocket fix), drop embedded JavaFX from jar (scope=provided), deliver JavaFX 23.0.1 via incremental update, JFXBridge for safe CLI fallback
2026-08-14 07:29:23 +00:00
SashegDev
77fd97ad24
v1.0.15.3 — non-blocking logger (fix install freeze), URL-encode pack file paths, news ordering by mtime
2026-08-13 19:56:42 +00:00
SashegDev
f857d91e4d
v1.0.15.1 — fix server re-extract of launcher zips; correct Forge launch command (-cp per version.json)
2026-08-13 09:33:44 +00:00
SashegDev
7881ee64b0
fix: add missing Mojang CDN domains (piston-data, libraries.minecraft.net, maven repos) to proxy allow list, increase proxy timeout to 300s
2026-07-30 15:36:06 +00:00
SashegDev
f180663cef
v1.0.13.1 — pack download stability, proxy for MC/Forge downloads, build.version priority
2026-07-30 14:31:13 +00:00
SashegDev
48fd1d2d82
fix: preserve username case in register/login validators
2026-07-30 13:03:48 +00:00
SashegDev
cebe90d5f6
feat: auto-detect new ZIP archives in builds/ + fix exe download path
2026-07-30 11:29:45 +00:00
SashegDev
de0dbab4c8
fix: support 4-part Windows version in version comparison
2026-07-30 11:12:08 +00:00
SashegDev
fc55882d59
ForgeFix и новые фичи в интерфейсе
2026-07-13 13:16:51 +00:00
SashegDev
8d8fe0e99c
DevBlog №4 | массовый фикс JFX и фиксы связанные с самим лаунчером, добавление админ меню
2026-07-01 19:36:52 +00:00
SashegDev
6063743cb4
fix: автодетект --cli в Bootstrap, отображение локальных сборок в JFX, обработка ошибок установки и друзей
2026-06-30 13:44:26 +00:00
SashegDev
1ac663d6c0
fix: критичные баги — отсутствие auth на pack файлах, сломанный proxy fallback, race condition installInProgress, JSON парсинг, падение loadMetadata
2026-06-30 10:58:24 +00:00
SashegDev
d93fac3e7e
minor fixes
2026-06-07 16:36:50 +03:00
SashegDev
c041881776
иним чиним чиним чиним а так же новая система друзей и бутстраппера
2026-06-07 12:32:34 +00:00
SashegDev
8acf4e5f1f
попытка оптимизации и ДЖЛЫВОСШФРСЖДЛВОФЖДЛОВСМДЖЛФ ИНТЕРФЕЙС ФИКСЕСССС БЛЯЯЯ
2026-05-10 01:24:47 +00:00
SashegDev
c5ee482308
Launcher UI redesign + server mirror sync + file download optimization
2026-05-09 23:47:04 +00:00
SashegDev
fac4cfabf1
Server: generate meta.json for builds/ on startup for incremental updates
2026-05-08 18:51:15 +00:00
SashegDev
737b048b31
Bootstrap: incremental update via meta, server: fix file endpoint paths
2026-05-08 18:45:42 +00:00
SashegDev
e105f73d4e
Debug: log server version response
2026-05-08 15:45:23 +00:00
SashegDev
7ec41919a3
Fix: Fabric loader launch and Bootstrap paths
...
- Add Fabric support in LaunchCommandBuilder.findVersionJson()
- Fix Bootstrap to properly use bin/ directory for launcher JAR
- Fix server.py to accept both ZernMC-win-*.zip and ZernMCLauncher-*.zip
- Add debug output for version.json resolution
2026-05-08 11:04:45 +00:00
SashegDev
12c3be84ea
Fix: Multiple launcher issues
...
- Fix CLI arrow keys: remove 50ms timeout in escape sequence handling (ArrowMenu, LoginMenu)
- Add network logs polling to UI via /api/logs endpoint
- Display user role in launcher header (AuthManager, AuthService, JFXLauncher, UI)
- Capture and display game logs in launcher via /api/game-logs endpoint
- Fix demo mode bug in VersionManifest.ruleMatches() - was incorrectly adding --demo flag
- Fix modloader launch: pass proper auth info (accessToken, uuid) from AuthManager
- Add game log capture in MinecraftLib and LaunchService
2026-05-08 10:11:49 +00:00
SashegDev
4189df9163
Server: Add launcher version scanning on startup
...
- Scan versions/ directory and generate meta.json for each version
- Log progress: 'Scanning launcher versions...', 'Launcher meta ready: vX (Y files)'
- Meta cached in memory for faster access
2026-05-07 18:50:07 +00:00
SashegDev
4b055172b5
Server: Add launcher meta system for incremental updates
...
- Create versions/ folder structure for new format builds
- Generate meta.json with SHA256 hashes for each file
- Add endpoints:
- GET /launcher/meta - list all versions with meta
- GET /launcher/meta/{version} - meta for specific version
- POST /launcher/diff - get diff between local and server files
- GET /launcher/file/{version}/{path} - download individual file
- GET /launcher/download/zip/{version} - download full ZIP for new install
- Legacy builds (ZIP files) remain unchanged
2026-05-07 18:40:00 +00:00
SashegDev
abf667ebdb
Server: Default to 1 worker - better for file downloads
...
- Multiple workers cause contention and slow down large file downloads
- Single worker with async handles concurrent requests fine
2026-05-07 18:03:37 +00:00
SashegDev
07ca5c3668
Server: Reduce rate limit log spam - periodic summary only
...
- Instead of logging every rate limit warning, now logs summary every 60s
- Shows: IP_blocked=X, rate_limited=Y
2026-05-07 17:56:46 +00:00
SashegDev
566f9c13b3
Server: Add direct_passthrough for faster file serving
...
- FileResponse with direct_passthrough=True bypasses buffering
- Should improve file download speeds
2026-05-07 17:54:03 +00:00
SashegDev
3e85ff3a22
Server: Skip logging for file downloads
...
- Don't log every /pack/*/file/* request to reduce overhead
- Helps with large file downloads
2026-05-07 17:53:08 +00:00
SashegDev
3063153a97
Server: Fix /docs endpoint - allow openapi.json and swagger
...
- Remove openapi.json, swagger-ui, api/docs from suspicious paths
- Fix is_suspicious_path() to allow swagger/openapi patterns
2026-05-07 17:48:54 +00:00
SashegDev
805b55b85d
Server: Remove broken PID-based logging
...
- is_master() doesn't work with uvicorn workers
- Keeping clean logs from cache + disabled httpx debug
2026-05-07 17:46:42 +00:00
SashegDev
58603a3e6a
Server: PID-based logging - only master logs startup
...
- Only master PID logs blocklist loading, pack scanning, etc.
- Worker processes stay silent during startup
- Much cleaner logs
2026-05-07 17:45:36 +00:00
SashegDev
1241fbffcd
Server: Add file lock for blocklist loading
...
- Only one worker downloads blocklist
- Other workers wait and read from cache
- Prevents duplicate downloads on startup
2026-05-07 17:43:21 +00:00
SashegDev
87a55f1dd1
Server: Cache blocklist to file + disable httpx debug logs
...
- Blocklist now cached to data/blocklist_cache.txt
- Only downloads once, then reuses cache
- Disable httpx/httpcore debug logs to reduce noise
2026-05-07 17:42:15 +00:00
SashegDev
91533d76cc
Server: Fix blocklist loading - only once at startup
...
- Move public blocklist loading into lifespan (not on import)
- Avoids loading 8 times with 4 workers
- Cleaner startup logs
2026-05-07 17:40:32 +00:00
SashegDev
f2365f9bcc
Server: Auto-load public IP blocklists
...
- Load known bad IPs from FireHOL blocklists on startup
- ~4400 IPs blocked by default
- Set PUBLIC_BLOCKLIST=false to disable
- Combined with manual BLOCKED_IPS env var
2026-05-07 17:38:08 +00:00
SashegDev
c8a705249c
Server: Simplify IP filtering - only blacklist
...
- Remove whitelist (not needed for public launcher)
- Only BLOCKED_IPS env var supported now
2026-05-07 17:14:47 +00:00
SashegDev
094e40979e
Server: Add bot protection middleware
...
- Global rate limiting (60 requests/minute per IP)
- IP whitelist/blacklist via ALLOWED_IPS and BLOCKED_IPS env vars
- Bot detection - silent 404 for suspicious paths (.env, phpinfo, etc.)
- Path traversal detection
- Reduced noise in logs from bot scanners
2026-05-07 17:09:45 +00:00
SashegDev
a288dca5f9
Server: Add legacy build support
...
- Add version parsing to distinguish new vs legacy format builds
- New format: ZernMC-win-*.zip (1.0.8+ with bundled JRE21/JavaFX)
- Legacy: ZernMCLauncher-*.zip (< 1.0.8 or with suffix)
- /launcher/download/latest now returns new format by default
- Add /launcher/download/legacy endpoint for old builds
- Add legacy info to /launcher/info and /launcher/version responses
- Update download_zip to accept both ZernMCLauncher- and ZernMC-win- patterns
2026-05-07 16:44:10 +00:00
SashegDev
37e7c990a7
feat: add NeoForge support, fix Forge installPack bug, update server proxy
...
- Fix MinecraftLib.installPack() returning false for Forge (was dead code)
- Add NeoForgeInstaller.java with installer download and execution
- Update LaunchCommandBuilder with NeoForge JVM args, classpath, launch args
- Update LaunchMenu with NeoForge option, version selector, support check
- Update Instance.java loader type comment (vanilla, fabric, forge, neoforge)
- Update PackDownloader to handle neoforge loader type
- Update ZHttpClient with NEOFORGE_MAVEN service type and detection
- Add NeoForge proxy endpoints (/proxy/neoforge/versions, /proxy/neoforge/maven)
- Add maven.neoforged.net to proxy allowed_domains
- Add asset_index to PackMeta model and pack_manager scanning
- Include asset_index in /packs list endpoint response
2026-05-04 22:53:22 +00:00
SashegDev
a80c00f91c
test(server): add client-facing endpoint tests (20 tests), fix pack contract assertions
...
- Add test_client.py with comprehensive client-server contract tests:
- TestAuthFlowClient: full register → login → refresh → validate → /admin/me → logout lifecycle
- TestPacksClientContract: /packs response fields matching ServerPack.java
- TestPackManifestClientContract: /pack/{name} fields matching PackManifest.java
- TestPackDiffClientContract: /pack/{name}/diff matching DiffResponse/FileInfo.java
(all-new, no-changes, outdated-file, extra-local-file scenarios)
- TestPackFileDownload: file serving, 404, path traversal security
- TestPackPermissions: auth/pass requirements for /packs and /diff
- TestLauncherVersion: /launcher/version endpoint
- TestProxyEndpoints: /proxy/status, /proxy/fabric/versions/loader
- Add logged_in_user_with_pass fixture (role=1) for pack-related tests
- Add pack_fixture: creates temp pack with mod file, scans it, cleans up
- Fix manifest test: files don't have 'url' field (only in diff response)
- Fix /pack/{name} test: endpoint is public, no auth required
Total: 67 tests passing (47 existing + 20 new)
2026-05-04 22:28:12 +00:00
SashegDev
ff921def7f
test(server): add comprehensive test suite (47 tests), fix DB lock and schema bugs
...
- Add pytest test suite: test_auth.py, test_admin.py, test_pass.py,
test_proxy.py, test_rate_limit.py, test_client_contract.py
- Fix SQLite 'database is locked' errors: moved log_audit() calls outside
with get_db() blocks in register, login, logout, refresh, activate_pass
- Enable WAL mode and busy_timeout in get_db() for concurrent access
- Fix /admin/me: removed non-existent 'email' column from query
- Fix /admin/users list: disambiguated activated_at column in JOIN query
- Fix /auth/refresh: now returns refresh_token + expires_in + username/uuid/role
to match AuthManager.AuthSession expectations; revokes old refresh token
- Fix conftest.py: unique usernames per test to avoid conflicts
- All 47 tests passing
2026-05-04 22:14:06 +00:00
SashegDev
ba4eea8c4e
fix(server,security): add ban check to validate_token, replace rate_limit DB with TTLCache
2026-05-04 21:12:35 +00:00
SashegDev
7daaedd327
chore(server): remove unused models, delete http_logger.py, rename viev_logs.py → view_logs.py
2026-05-04 21:10:11 +00:00
SashegDev
95e5338635
refactor(server): clean main.py — remove duplicate imports, dead code, unify logging, fix proxy lifecycle
2026-05-04 21:09:10 +00:00
SashegDev
d78c6c27a5
feat(server): add /auth/pass/activate endpoint for pass code activation
2026-05-04 21:06:56 +00:00
SashegDev
466f155e0e
feat(server): connect admin_router to FastAPI app
2026-05-04 21:06:02 +00:00
SashegDev
014ffc4fae
fix(server): add role aliases in roles.py to fix broken admin_router imports
2026-05-04 21:04:44 +00:00
SashegDev
ce8237c0db
last commit to uuuuh idl
2026-05-04 15:19:46 +00:00
SashegDev
75d87084e3
The fuck was hapanned тут
2026-04-22 12:54:57 +00:00