Commit Graph

83 Commits

Author SHA1 Message Date
Houmgaor
d32e77efba refactor: replace panic calls with structured error handling
Replace ~25 panic() calls in non-fatal code paths with proper
s.logger.Error + return patterns. Panics in handler code crashed
goroutines (caught by defer/recover but still disruptive) instead
of failing gracefully.

Key changes:
- SJISToUTF8 now returns (string, error); all 30+ callers updated
- Handler DB/IO panics replaced with log + return/ack fail
- Unhandled switch-case panics replaced with logger.Error
- Sign server Accept() panic replaced with log + continue
- Dead unreachable panic in guild_model.go removed
- deltacomp patch error logs and returns partial data

Panics intentionally kept: ByteFrame sentinel, unimplemented
packet stubs, os.Exit in main.go.
2026-02-20 19:11:41 +01:00
Houmgaor
06cb3afa57 refactor: standardize logging on zap across all packages
Replace all fmt.Printf/Println and log.Printf/Fatal with structured
zap.Logger calls to eliminate inconsistent logging (anti-pattern #12).

- network/crypt_conn: inject logger via NewCryptConn, replace 6 fmt calls
- signserver/session: use existing s.logger for debug packet dumps
- entranceserver: use s.logger for inbound/outbound debug logging
- api/utils: accept logger param in verifyPath, replace fmt.Println
- api/endpoints: use s.logger for screenshot path diagnostics
- config: replace log.Fatal with error return in getOutboundIP4
- deltacomp: replace log.Printf with zap.L() global logger
2026-02-20 18:59:12 +01:00
Houmgaor
5f3c843082 refactor(config): eliminate ErupeConfig global variable
Replace the mutable global `_config.ErupeConfig` with dependency
injection across 79 files. Config is now threaded through existing
paths: `ClientContext.RealClientMode` for packet encoding, `s.server.
erupeConfig` for channel handlers, and explicit parameters for utility
functions. This removes hidden coupling, enables test parallelism
without global save/restore, and prevents low-level packages from
reaching up to the config layer.

Key changes:
- Enrich ClientContext with RealClientMode for packet files
- Add mode parameter to CryptConn, mhfitem, mhfcourse functions
- Convert handlers_commands init() to lazy sync.Once initialization
- Delete global var, init(), and helper functions from config.go
- Update all tests to pass config explicitly
2026-02-20 17:07:42 +01:00
Houmgaor
2bd5f98f32 docs: add doc.go files and godoc comments to all packages
Add package-level documentation (doc.go) to all 22 first-party
packages and godoc comments to ~150 previously undocumented
exported symbols across common/, network/, and server/.
2026-02-18 21:39:13 +01:00
Houmgaor
c64dabc3ba fix: check all Close() return values for errcheck lint
Add explicit error discards (_ =) for Close() calls on network
connections, SQL rows, and file handles across 28 files. Also add
.golangci.yml with standard linter defaults to match CI configuration.
2026-02-17 23:57:14 +01:00
Houmgaor
2a0e3e2c84 fix: re-enable CI lint job and fix ~65 lint errors (partial)
Re-enable the golangci-lint job in CI (disabled Oct 2025), update to
Go 1.25 and golangci-lint-action v7. Fix errcheck, gosimple S1009,
staticcheck SA4031 and SA2001 errors across 54 files. Remaining ~39
lint errors will be addressed in follow-up commits.
2026-02-17 17:59:00 +01:00
Houmgaor
d2b5bb72f8 refactor: extract gametime package, replace fmt.Printf with zap logging
Move time utilities (TimeAdjusted, TimeMidnight, TimeWeekStart, TimeWeekNext,
TimeGameAbsolute) from channelserver into common/gametime to break the
inappropriate dependency where signserver, entranceserver, and api imported
the 38K-line channelserver package just for time functions.

Replace all fmt.Printf debug logging in sys_session.go and handlers_object.go
with structured zap logging for consistent observability.
2026-02-17 17:54:51 +01:00
Houmgaor
0bd724f74e test: backport remaining test files from v9.2.x-stable
Import 18 network packet test files and 5 server infrastructure test
files, adapted for main branch APIs: fix config import alias (_config),
remove non-existent DevMode field, use global handlerTable instead of
per-server handlers map, and correct validateToken mock expectations
to include both token and tokenID arguments.

Adds go-sqlmock dependency for database mocking in signserver tests.
2026-02-17 00:09:41 +01:00
Houmgaor
73e874f43f fix: array bound crashes on clans. 2025-10-21 00:21:50 +02:00
Houmgaor
fc6e479df9 fix(lint): fixing more complex formatters problems. 2025-10-19 22:46:21 +02:00
wish
aa5d95e7c5 fix sjis ngwords 2024-07-22 23:44:53 +10:00
wish
5de6570510 ascii working, sjis not working 2024-07-16 01:13:17 +10:00
wish
ca38f5671d ascii working, sjis not working 2024-07-16 01:12:02 +10:00
wish
632aa081b9 decode SMC table 2024-07-16 00:57:59 +10:00
wish
0caaeac3af initial ngword commit 2024-07-15 01:07:50 +10:00
stratic-dev
4d134d0624 Remove reformatting 2024-03-20 19:44:54 +00:00
stratic-dev
7d7fd50ba8 init ps4 support 2024-03-20 19:12:57 +00:00
wish
bfb22951f2 fix PatchServer response 2024-03-10 11:05:41 +11:00
wish
89c1db4712 remove PS3 Patch Server default 2024-03-09 14:58:12 +11:00
wish
f5c772413e rename instances of HRP to HR 2024-02-25 22:20:12 +11:00
wish
a968f18438 add support for SIGN requests 2024-02-20 14:53:59 +11:00
wish
4fbfd569df Merge pull request #111 from ZeruLight/feature/moderation
feature/moderation
2024-01-11 23:04:29 +11:00
wish
2685476022 check against unwrapped error 2024-01-11 23:01:53 +11:00
wish
a7bf38388c fix package collision 2024-01-11 23:01:32 +11:00
wish
e0615dcd0c add support for operator accounts & bans 2024-01-03 19:08:45 +11:00
wish
0ea0dc217b simplify config 2023-12-31 12:51:24 +11:00
wish
b8f431ae66 parse CapLink responses 2023-12-17 17:47:35 +11:00
wish
dfc359f5e2 structure & change config for MezFes 2023-11-26 19:42:27 +11:00
wish
a0fbfc248b fix TimeWeekX inconsistencies & limit MezFes duration 2023-11-26 19:21:31 +11:00
wish
86f63d6a38 properly support PS3 account linking 2023-08-09 22:04:15 +10:00
wish
6c68b2f3ed prevent PSN fake login from attempting to create a character 2023-08-02 21:04:08 +10:00
wish
2eeab72c1c update legacy WIIU code 2023-07-25 00:45:11 +10:00
wish
7edf07d853 use universal Sign request names 2023-07-25 00:44:19 +10:00
wish
a3e1207dfd fix conflicts 2023-07-24 23:42:51 +10:00
wish
2a9504cd26 Merge remote-tracking branch 'origin/main' into feature/psn-link
# Conflicts:
#	server/signserver/dbutils.go
#	server/signserver/dsgn_resp.go
#	server/signserver/session.go
2023-07-24 23:36:38 +10:00
wish
436d92cd7e fix MezFes Tickets not resetting & cleanup 2023-07-08 22:18:41 +10:00
wish
053343befb prevent Login Notices from overflowing 2023-07-08 22:17:41 +10:00
wish
ab83e64f84 fix limited friends & clanmates amount 2023-07-08 00:35:15 +10:00
wish
76a3d73102 add WIIUSGN:000 2023-07-03 03:59:00 +10:00
wish
1f93419cb7 add support for more versions 2023-07-03 00:30:44 +10:00
wish
35b383cba6 Merge pull request #72 from ZeruLight/fix/dynamic-tune-vals
dynamic tune values
2023-07-01 23:59:57 +10:00
wish
e96e6372f5 hacky fix for PSSGN panic 2023-06-27 22:39:44 +10:00
wish
b4df642ee3 add ClientMode config option 2023-06-18 20:31:18 +10:00
wish
086b338f84 automatically create new character when none exist 2023-05-13 01:21:37 +10:00
wish
e1eea87d73 add mezfes tickets to gameplay options 2023-05-04 23:53:45 +10:00
wish
a260500bb5 further sign server rewrite 2023-04-30 13:51:30 +10:00
wish
6601285218 unfinished proof of concept 2023-04-30 01:32:38 +10:00
wish
4d6a2b3ea9 fix multiple login notices 2023-04-29 15:00:13 +10:00
wish
9bcf7e7b43 support language swapping on patch servers 2023-04-26 19:37:54 +10:00
wish
058c387b11 only read first 64 bytes of wiiusgn key 2023-04-16 21:03:21 +10:00