Will Greenberg
057c9acb40
wip
2025-04-14 11:59:54 -07:00
oopsbagel
9fe75ac961
chore: cargo fmt
2025-04-14 11:49:24 -07:00
Markus Unterwaditzer
151e186ef9
Fix delete all recordings, and panic on server startup
...
* Delete All Recordings did not work when recording was paused
* Because of the upgrade to axum 0.8, the webserver did not actually
start but panic.
2025-04-11 12:42:23 -07:00
Sashanoraa
c47be1074b
Add delete all recordings button to web ui
2025-04-04 12:21:51 -07:00
Sashanoraa
326d4106bd
Add a delete option to each recording in the web view
2025-04-04 12:21:51 -07:00
Markus Unterwaditzer
df8a1f5606
Fix RecordingStore::create
...
Bug introduced in #225
2025-04-03 15:22:08 -07:00
Markus Unterwaditzer
58f0071864
Fix malformed QMDL store writes
...
Fix https://github.com/EFForg/rayhunter/issues/199
Fix https://github.com/EFForg/rayhunter/issues/151
rayhunter updates manifest files using write **without truncation**.
This means that if the new manifest is shorter than the old one,
trailing bytes of the old data will persist in the new file.
Switch over to atomic file writes so that this bug is fixed + rayhunter
behaves correctly if it is killed mid-write.
https://github.com/EFForg/rayhunter/pull/182 could be reverted as it
seems to mostly be a workaround.
2025-04-03 12:09:19 -07:00
Sashanoraa
b41f61bfa6
Replace unnecessary File::options with File::create
2025-03-27 11:57:01 -07:00
Will Greenberg
c9dcbbe5d6
daemon: if we fail to parse the QMDL manifest, make a new one
...
If rayhunter doesn't exit cleanly (e.g. during a battery outage), the
QMDL manifest may end up in a corrupted state. If that's the case,
rayhunter should try to recover by creating a new manifest. This'll let
it continue, and will preserve previous recordings, but they won't be
visible through the UI.
2025-03-25 15:36:12 -07:00
oopsbagel
0b3c0de481
fix(lib/util): use better names for runtime metadata
...
- document RuntimeMetadata fields
- rename RayhunterMetadata to RuntimeMetadata
- rename RuntimeMetadata.os to RuntimeMetadata.system_os
- remove unpopulated hardware field
- remove unnecessary duplication of datastructure in analyzer harness
2025-03-19 11:48:54 -07:00
oopsbagel
188e9f436b
fix(qmdl-manifest): store os/arch/hardware in qmdl manifest.toml
...
Do not superfluously prefix these names with rayhunter_, as they describe the
hardware and not the binary.
2025-03-19 11:48:54 -07:00
oopsbagel
f2b5aa2743
feat: show rayhunter version/os/arch in pcap, ndjson, qmdl manifest
...
Create a util mod to provide information about the rayhunter binary and
system.
2025-03-19 11:48:54 -07:00
oopsbagel
b785a7f21c
feat(qmdl): add rayhunter version and os to manifest.toml
2025-03-19 11:48:54 -07:00
Will Greenberg
df84faa1f9
On-demand analysis of past recordings
...
* rayhunter-daemon: API for triggering and reading analysis
* rayhunter-daemon: rename readonly mode to debug mode
* rayhunter-daemon: debug mode allows live-loading frontend files
* rayhunter-check: rework to handle directories
* rayhunter-check: better output
* CI: build rayhunter-check
2024-10-08 14:58:46 -07:00
Will Greenberg
bc93c01890
bin: rm deprecated tempdir crate
2024-08-05 09:57:09 -07:00
Will Greenberg
bfc688ad21
daemon: switch to writing heuristics output to ND-JSON
...
ND-JSON (newline-delimited JSON) is just a file with a list of JSON
objects separated by newlines. This way, as the analyzer harness
processes new packets, it can simply append JSON-serialized results
to a file without parsing the entire thing first.
Also simplifies the analysis stuff to all operate in the diag thread.
2024-05-09 14:46:41 -07:00
Will Greenberg
df651fe334
qmdl_store: replace end_time with last_message_time
...
This way, even if the program exits unexpectedly, there's a reasonable
value for the "end time" of a log.
2024-02-22 19:10:31 -08:00
Will Greenberg
87f18c0c8b
Rename directories (again)
2024-01-30 09:58:05 -08:00