Files
DarkflameServer/.gitignore
Aaron Kimbrell 332bc04ce8 feat(capture): record whole packets of an account, a character or everything on every server
Staff arm a packet capture on the dashboard; master passes MESSAGE_CAPTURE_CONTROL ARM to
every world, auth and chat and arms its own. Each server's PacketCapture tap (dServer receive,
and a send hook in RakPeer::Send so replica constructions are seen too) records into one
preallocated chunk per server and ships sealed chunks through master on the main loop when
capture_flush_bytes or capture_flush_interval_ms is reached; past capture_buffer_max_mb the
oldest chunks are dropped and the dashboard records a gap. Nothing is armed: one flag check.

- targets: an account (from its login; packets before the login are kept per connection
  and added once auth or the world knows whose they are), a character (from when it is
  picked), or everything; up to 8 at once (a bit each in the record mask)
- worlds and auth record their clients' packets and the master link messages of a captured
  player (session keys by name, zone transfers by request, player added/removed, migration);
  chat finds the player in each packet; master records server traffic for everything
- secrets are never recorded: structs that carry them (login request, login response user
  key, world validation session key, session key messages between servers) are read,
  blanked and written again before recording; auth keeps only the handshake and login
- PacketDecoder: a registry by service and message id names every packet and decodes the
  registered structs; CaptureBundle is the file format (DLUBNDL1, metadata, records);
  CaptureTools orders records on one timeline, pulls movement out, makes bundles portable
  or anonymous and diffs replays
- the dashboard keeps packet captures in message_capture_sessions (capture_kind 1) and
  their packets in a file under capture_dir, one write per batch; arming is audited
- MESSAGE_CAPTURE_CONTROL/DATA only gain appended enum values and trailing fields

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-09-29 22:34:34 -05:00

146 lines
1.9 KiB
Plaintext

temp/
cmake-build-debug/
RelWithDebInfo/
docker/configs
# Third party libraries
thirdparty/mysql/
thirdparty/mysql_linux/
# Build folders
build/
linux_build/
# Codeblocks
*.layout
# User-specific files
*.rsuser
*.suo
*.user
*.userosscache
*.sln.docstates
# User-specific files (MonoDevelop/Xamarin Studio)
*.userprefs
# Build results
[Dd]ebug/
[Dd]ebugPublic/
[Rr]elease/
[Rr]eleases/
x64/
x86/
bld/
[Bb]in/
[Oo]bj/
[Ll]og/
# Visual Studio 2015/2017 cache/options directory
.vs/
# Files built by Visual Studio
*_i.c
*_p.c
*_h.h
*.ilk
*.meta
*.obj
*.iobj
*.pch
*.pdb
*.ipdb
*.idb
*.pgc
*.pgd
*.rsp
*.sbr
*.tlb
*.tli
*.tlh
*.tmp
*.tmp_proj
*_wpftmp.csproj
*.log
*.vspscc
*.vssscc
.builds
*.pidb
*.svclog
*.scc
*.lastbuildstate
# Visual C++ cache files
ipch/
*.aps
*.ncb
*.opendb
*.opensdf
*.sdf
*.cachefile
*.VC.db
*.VC.VC.opendb
# Visual Studio Log Files
*.tlog
*.log
# VS Code
.vscode
# Clion (IntelliJ)
.idea
.DS_Store
# Exceptions:
CMakeSettings.json
CMakeUserPresets.json
*.vcxproj
*.filters
*.cmake
CMakeCache.txt
*.bin
CMakeFiles/3.17.3/CompilerIdC/CMakeCCompilerId.c
CMakeFiles/3.17.3/CompilerIdCXX/CMakeCXXCompilerId.cpp
CMakeFiles/3.17.3/VCTargetsPath.txt
CMakeFiles/3e6b105f924142e3e299a1a30e09566e/generate.stamp.rule
CMakeFiles/cmake.check_cache
CMakeFiles/generate.stamp
CMakeFiles/generate.stamp.depend
CMakeFiles/generate.stamp.list
CMakeFiles/TargetDirectories.txt
*.sln
*.recipe
# clangd
.cache
thirdparty/zlib-1.2.11/
.env
docker/__pycache__
docker-compose.override.yml
!*Test.bin
# CMake scripts
!cmake/*
!cmake/toolchains/*
.mcp.json
.claude/
# Dashboard icon cache
dDashboardServer/icon_cache/
dashboard_jwt_secret
dashboard_oauth2_token.json
# CodeGraphContext generated report — regenerable, not committed (run `cgc report`).
CGC_REPORT.md
__pycache__/
*.pyc
# Packet captures, bundles and fixtures are player data: never committed (docs/CaptureReplay.md)
captures/
*.bundle
tests/fixtures-local/