Package Map
Directory Layout
odirscan/
config/ Configuration structs
scanner.go ScannerConfig
mullvad.go MullvadConfig
web.go WebConfig
internal/ Core scanning logic
scanner.go Scanner type, Scan(), Tag()
mullvad/ Mullvad VPN integration
mullvad.go StartUpdater, IsConnected, SelectProxies
updater.go Relay list fetching and caching
relay.go Generated types: MullvadRelays, Relay
ami.go Generated type: AmIConnected
messages/ Request/response message types
message.go Message interface
scan_request_message.go
scan_result_message.go
model/ Data model types
scan.go ScanFinding, ScanResult
web/ HTTP server
server.go Server type, ListenAndServe()
templates/
index.html Embedded SPA dashboard
main.go Entry point (local testing)
Dependency Graph
The config package has no intra-project imports, serving as the dependency root. All other packages import config for their configuration needs.
Generated Code
The files internal/mullvad/relay.go and internal/mullvad/ami.go are generated from JSON schemas in the resources/ directory using go-jsonschema. They define the type structures for the Mullvad relay list API and the "am I connected" API.