Commit Graph
8 Commits
Author SHA1 Message Date
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 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 d7b6de7acb deploy: use raw ELF as GoldHEN payload, not fself/eboot
GoldHEN's /data/GoldHEN/payloads/ auto-loader takes a raw ELF named .bin.
SETUP.md/README told users to deploy the .fself (or the confusingly named
eboot .bin), which would not load. Deploy orbisrpc.elf as orbisrpc.bin;
rename the fself eboot output to orbisrpc-eboot.bin to avoid the trap.
2026-08-14 23:13:06 +02:00
SirHumza ac47151c7a fix(build): correct lld default path; docs: exact artifact sizes (KiB)
build.sh defaulted LLD to /usr/local/opt/lld@21/bin/ld.lld which
does not exist (lld 21 is built from source at /Users/mac/lldbuild/
build/bin/ld.lld). Bare ./scripts/build.sh now works with no env vars.
README size claims corrected to 182/188 KiB.
2026-08-14 11:09:38 +02:00
SirHumza af1a48dbf3 chore: rename project PS4RP -> orbisRPC
- Repo renamed to SirHumza/orbisRPC on GitHub
- Source dir PS4RP/ -> orbisrpc/
- Binaries ps4rp.{elf,fself,bin} -> orbisrpc.{elf,fself,bin}
- On-console config dir /data/PS4RP -> /data/orbisRPC
- Build outputs, HTTP UA, net pool/socket names, README, SETUP
  guide all updated to orbisRPC
2026-08-14 10:31:14 +02:00
SirHumza 5a0de111fe fix(build): link libSceLibreSSL, export OO_PS4_TOOLCHAIN for fself; docs: real macOS build path 2026-08-14 08:43:56 +02:00
SirHumza 20c13f1ead feat: PS4RP daemon source + working PS4 build
Full daemon source (C, PS4 native):
- log/cfg/jsonlite/b64: logging, /data/PS4RP/config.json, JSON, base64
- http.c: OAuth2 token exchange via SceHttp (authorization_code + refresh)
- ws.c: WebSocket over SceNet + LibreSSL (SSLv23_client_method),
  DNS via sceNetResolverStartNtoa, OrbisNetSockaddr packing
- discord.c: gateway connect/identify/heartbeat/presence set+clear
- detect.c: foreground game via sceUserServiceGetForegroundUser
  + app.xml/app.db title-name resolution
- main.c: poll loop (config poll_interval_s)

Build verified on macOS (LLVM 21 + OpenOrbis toolchain v0.5.4):
- 9 objects compile, lld 21 links build/ps4rp.elf (169KB)
- create-fself produces valid SCE ASLR payload build/ps4rp.fself
- libSceLibreSSL exports the OpenSSL-style TLS API used by ws.c
2026-08-14 08:43:09 +02:00