Commit Graph
3 Commits
Author SHA1 Message Date
Qiaochu Hu 24cd271486 Fix overly permissive file permissions (os.ModePerm) (#4207)
Several file operations used os.ModePerm (0777) which makes files
world-writable and world-readable, violating the principle of least
privilege:

- database/db.go: InitDB directory creation → 0755
- xray/process.go: Xray config write → 0644
- xray/process.go: Crash report write → 0644
- web/service/server.go: Binary extraction → 0755

Also removes unused "io/fs" imports from the affected files.
2026-05-10 14:47:28 +02:00
Qiaochu Hu dee2525d5f Fix silently ignored errors in password migration seeder (#4206)
The runSeeders function in database/db.go had three database operations
whose errors were silently ignored:

1. Pluck("seeder_name", &seedersHistory) - if this fails, the seeder
   might re-run and double-hash already bcrypt'd passwords, corrupting
   them
2. Find(&users) - if this fails, no users get migrated but the seeder
   still marks itself as complete
3. Update("password", hashedPassword) - if this fails for a user, their
   password silently remains in the old format

All three now properly check and return errors with descriptive messages.
2026-05-10 14:46:42 +02:00
Qiaochu Hu 81b4ae5661 Fix silently ignored error when saving outbound test URL setting (#4209)
In the Xray settings update handler, the error from
SetXrayOutboundTestUrl was silently discarded. If the database write
failed, the user received a success toast ("Settings updated
successfully") but the outbound test URL was not actually saved.

Now properly checks the error and returns a failure response to the
user, consistent with how the preceding SaveXraySetting call is
handled.
2026-05-10 14:45:53 +02:00