sshmitm.state module
State directory resolution for ssh-mitm.
Supports all relevant Linux deployment variants:
- pip / pipx / uv / virtualenv / conda
→ $XDG_STATE_HOME/ssh-mitm/ (or ~/.local/state/ssh-mitm/)
- Snap (confined + classic)
- → Snap redirects $XDG_STATE_HOME to ~/snap/<name>/current/.local/state/
automatically; no special handling required here.
- Flatpak
- → Flatpak redirects $XDG_STATE_HOME to ~/.var/app/<id>/.local/state/
automatically; no special handling required here.
- AppImage
- → $APPIMAGE / $APPDIR are set but filesystem is the host’s; standard
XDG path is used.
- systemd system service (StateDirectory=ssh-mitm)
→ $STATE_DIRECTORY=/var/lib/ssh-mitm (takes priority over XDG)
- systemd user service
→ $STATE_DIRECTORY if set, else standard XDG path
- root without systemd
→ /var/lib/ssh-mitm/
- Distro packages (.deb / .rpm / Nix / Homebrew)
→ follow the same rules as pip depending on how the service is started
- Last resort (read-only filesystem, permission errors everywhere)
→ /tmp/ssh-mitm-<uid>/ (ephemeral, warns the caller)
- class sshmitm.state.DeploymentVariant(value)
Bases:
Enum- APPIMAGE = 3
- FLATPAK = 2
- ROOT = 5
- SNAP = 1
- SYSTEMD = 4
- USER = 6
- sshmitm.state.detect_deployment()
- Return type:
- sshmitm.state.get_state_dir()
Return a writable state directory, creating it if necessary.
Logs a warning when falling back to /tmp and returns None only if every candidate path is unusable.
- Return type:
Path|None