Commit Graph
67 Commits
Author SHA1 Message Date
SirHumza 3eee7697ea Authoritative title identity via sandbox mounts (kills stale-title class) 2026-09-24 00:36:04 +02:00
SirHumza 893b6eb7b5 art_table: CUSA09303 Odyssey row 2026-09-24 00:32:13 +02:00
SirHumza d967c98526 Fast game switching via eboot-set change shortcut 2026-09-24 00:02:31 +02:00
SirHumza 1b76fc4ffd Title identity via app.pkg atime (beats sync-polluted mtimes) 2026-09-23 23:54:43 +02:00
SirHumza 7058022833 Live Sony TMDB over TLS-443 with table fallback (any game resolves) 2026-09-23 23:42:18 +02:00
SirHumza 563b682c33 Fix undeclared scan flag, guard transitions on unknown scans 2026-09-23 23:20:18 +02:00
SirHumza d11d46e5b1 Art: log raw response on mp parse miss 2026-09-23 23:07:23 +02:00
SirHumza c52234f41f Resolve cache removed (last-title reuse), art-table lookup API, save+appdir title signals 2026-09-23 23:02:10 +02:00
SirHumza 204e662cad Art: per-session mp cache refresh, eboot-set cache drop, quiet cache logs 2026-09-23 22:56:32 +02:00
SirHumza 4b7a645c7c e2e adapted to SDK line (contracts + linkage gate) 2026-09-23 22:43:31 +02:00
SirHumza 64b1d66388 Features: session persistence, media types, playtime ledger, home/rest presence 2026-09-23 22:35:53 +02:00
SirHumza 004bd67f9b Verify all targets: tests+asan green, payload+plugin link, compat dup fix, build lists complete 2026-09-23 21:56:49 +02:00
SirHumza 6a1f25524e Audit batch: reconnect backoff, heartbeat check, urandom masks, entropy fail-secure, TLS verify, manifest public API + sign test, cfg schema+fallible save 2026-09-23 21:43:26 +02:00
SirHumza 5a68bb63bf Green tests (portable tmpdir, snprintf), compat in test link, home/rest presence, mp art pipeline 2026-09-23 21:36:06 +02:00
SirHumza 1e49612e75 Daemon audit: SNTP rotation, reconnect backoff, heartbeat send check, urandom masks, fail-secure entropy, TLS verify, updater signed+redirects, health wiring, mp cache 2026-09-23 21:29:41 +02:00
SirHumza 44714eaeb1 WIP: injection guide (BinLoader, elfldr, one-shot rule, troubleshooting) 2026-09-23 21:09:23 +02:00
SirHumza d950661f78 WIP: default art pack URL (art works from first boot) 2026-09-23 20:57:24 +02:00
SirHumza 7dbb021290 WIP: mp: art resolution via external-assets + icon pack 2026-09-23 20:56:43 +02:00
SirHumza 49672ec2c8 WIP: SNTP wall-clock correction (PSN time blocked on jailbreak) 2026-09-23 20:34:08 +02:00
SirHumza fca5f17d74 WIP: socket timeouts always armed, per-minute alive tick 2026-09-23 20:22:11 +02:00
SirHumza 75835fff3b WIP: session resume window (flicker-proof timer) 2026-09-23 20:11:16 +02:00
SirHumza fb1c3aab37 WIP: lock checks peer process name (no recycled-PID deadlock) 2026-09-23 20:01:04 +02:00
SirHumza db38c05077 WIP: integer-ms timestamps (fixes 0:00), jl_new_int port 2026-09-23 19:10:59 +02:00
SirHumza 0d8c5cd254 WIP: presence display findings (art rules, Lanyard blind) 2026-09-23 19:05:35 +02:00
SirHumza de523d3c2e WIP: asset-key art only (URLs drop activities), own app id default, extended nametable 2026-09-23 19:04:13 +02:00
SirHumza 202d4012e3 WIP: single-instance lock (sysctl liveness), eboot+savedata detection for SDK builds 2026-09-23 18:06:39 +02:00
SirHumza c01fc3fb10 WIP: SDK-port net branches + findings archive 2026-09-23 16:56:25 +02:00
SirHumza 96c02b8cb4 WIP: debug gate, monotonic clock, titleId sessions, debounce, resolve cache 2026-09-22 17:58:07 +02:00
SirHumza c8fea26699 v04-plus: port TLS 1.2 ceiling + debug trace, since:null, titleId details, jl_new_null 2026-09-22 17:52:24 +02:00
SirHumza 3c7bf6180f Self-updater: versioned staged updates from GitHub releases 2026-09-19 11:28:35 +02:00
SirHumza 260b9dc8c0 Default art backend to public RPC app assets 2026-09-19 11:24:28 +02:00
SirHumza 63409c8e41 discord: single asset_key helper, drop duplicated lowering 2026-09-19 11:20:55 +02:00
SirHumza feec6f6695 daemon: document Rest Mode gap as unverified 2026-09-19 11:20:25 +02:00
SirHumza 825e10f3bb tmdb transport mirrors proven socket bring-up 2026-09-19 11:19:12 +02:00
SirHumza a16145df63 Docs: TMDB-first art and names 2026-09-19 11:17:18 +02:00
SirHumza cf76f1ebf8 Sony TMDB runtime names+icons; remove fuzzy appdb scan
- tmdb_crypto: self-contained SHA1/HMAC, URL builder, response parse,
  all verified against hashlib and Sony's live service in unit tests
- tmdb: plain-HTTP fetch with deadline plus 8-entry cache
- detect: TMDB in both resolve paths; artwork URL plumbed through
  detect_last_art into presence assets (official Sony CDN, no uploads)
- remove appdb byte-scan: boundary ambiguity returned wrong names,
  worse than raw IDs; also removes the multi-MB game-process read
- discord/daemon: full-URL artwork wins, pack URL next, asset key last
2026-09-19 11:16:09 +02:00
SirHumza e79ff0510d tls: local xorshift fallback instead of process-global rand 2026-09-19 10:28:59 +02:00
SirHumza 0dedb15ef8 jsonlite: depth cap + bounded number scan + hostile tests 2026-09-19 10:27:04 +02:00
SirHumza b671649d74 README status refresh to match verified reality 2026-09-19 10:25:38 +02:00
SirHumza 02d68410ac External-URL artwork pipeline + icon sync
- discord: large_image as <art_base_url><lower titleId>.png when
  configured (Discord accepts external URLs in asset fields);
  uploaded-asset keys remain as fallback via application_id
- cfg: art_base_url field with load/save support
- scripts/sync_icons.sh: FTP pulls all icon0.png (read-only)
- deploy/ARTWORK.md rewritten around URL-pack-first design
2026-09-19 10:24:20 +02:00
SirHumza 28f6275a05 Gateway precision, SFO OOB fix, build lists, artwork runbook
- discord: HELLO requires text frame; READY/HELLO timeout diagnostics;
  invalid-session fast retry path (-3); clamp warning; malformed close
- daemon: invalid session resets backoff instead of doubling it
- sfo: bounded key scan (no OOB on malformed files) + regression test
- build.sh + plugin Makefile compile sfo.c (link verified)
- deploy/ARTWORK.md: shared-app asset pipeline, no-URL rule
2026-09-19 10:18:39 +02:00
SirHumza cdb431cfa6 Names tiers, SFO parser, close-frame/diagnostics hardening
- detect: cost-tiered resolution; plugin path skips multi-MB app.db
  scan (game-process safety); payload tries pronunc, sfo, appxml,
  baked table, then app.db; sfo TITLE via app0/sce_sys paths
- sfo.c: bounds-checked PARAM.SFO parser + unit tests incl malformed
- nametable: generated fallback from title DB + generator script
- discord: malformed close frames reconnect loudly; one-time warning
  when artwork requested but no application_id configured
- ws comments de-BearSSLed; gitignore covers artifacts; drop .DS_Store,
  untrack test binary; README art claim corrected
2026-09-19 01:37:55 +02:00
SirHumza a7dd06ab5f README: backend status, names and art still open 2026-09-19 01:03:18 +02:00
SirHumza bf5579d6da Stable gateway backend: mbedTLS, 8MB READY, JSON-safe parsing
- BearSSL replaced with mbedTLS (TLSv1.3 passes Cloudflare)
- 8MB frame cap + truncation-proof gateway op/seq scanner
- Thread-safe compat, locked logging, atomic config with template
- Daemon keeps last-good config, persistent presence timer
- 256B token buffers, weak-libc shims, portable build preflights
- Tests: gateway spoof + OOM cases pass

Still open: display names fall back to titleId in sandbox,
cover art needs shared Discord app assets. Backend fully functional.
2026-09-19 01:03:17 +02:00
SirHumza 1ca687f8fb save work before cleanup 2026-09-18 18:00:13 +02:00
SirHumza 6dbfa1512c Harden networking, lifecycle, and build validation
Add BearSSL integration, strict utility handling, WebSocket validation,
plugin lifecycle cleanup, host regression tests, and reproducible GoldHEN
build support.
2026-08-27 20:38:39 +02:00
SirHumza 949240f590 daemon: auth via user session token; fix ws/gateway protocol bugs
The public Discord gateway rejects OAuth2 access tokens (close 4004),
so v1 could never set presence: switch config to a raw user token and
delete the oauth/http module.

- handle close frames; exit fatal on 4004 instead of looping forever
- fix reversed IPv4 packing in sceNetConnect (wrong host)
- fix SSL_read treating WANT_READ/no-data as disconnect
- keep frame bytes glued to the 101 handshake response (HELLO)
- grow recv buffer for large READY payloads; drain-and-skip >2MB
- mask all client frames incl. control; overflow-safe length checks
- drop RESUME (was dead: connect wiped session_id); fresh IDENTIFY
- clear presence stays online, add elapsed timestamps
- tick gateway every second so heartbeats never land late
- connect backoff 5s..300s; live config reload each cycle
2026-08-23 11:07:38 +02:00
SirHumza 91382fc53c daemon: reload config before each token attempt
The daemon loaded config once at startup and held it in memory, so an
operator editing auth_code/refresh_token on the console (FTP) while it
ran was ignored. Re-read the disk config each ensure_token() so edits
take effect live without a plugin reload.
2026-08-15 00:32:34 +02:00
SirHumza d5d1957668 plugin: run orbisRPC as a GoldHEN plugin (native auto-start)
/data/GoldHEN/payloads/ is not an auto-load folder (PPPwn only loads
goldhen.bin; folder auto-load is unimplemented GoldHEN feature #296), so the
ELF payload never ran regardless of reboots. Replace that route with the
GoldHEN plugin loader, which auto-starts into the game process at every boot
via plugins.ini [default] with no PC involvement.

- daemon.c/h: extract the payload main() loop into a shared daemon_run()
  usable from both the ELF entry (main.c thin wrapper) and the plugin
- detect.c/h: add detect_name_for_title() for the known-titleid plugin mode
- plugin/plugin.c: plugin_load() reads procInfo.titleid via sys_sdk_proc_info,
  skips non-game (NPXS/system) titles, starts daemon thread; plugin_unload()
  stops it cleanly
- plugin/Makefile: builds orbisrpc_plugin.prx against the GoldHEN SDK
  (libGoldHEN_Hook.a + crtprx.o)
- deploy/SETUP.md: rewrite for the plugin route; add plugins.ini [default]
  (plugin/plugins.ini.ps4)
- scripts/build.sh: include daemon.c
2026-08-15 00:23:33 +02:00
SirHumza c1565c3144 docs: identify-only scope; rpc.* scopes restricted to whitelisted apps 2026-08-14 23:19:52 +02:00