Qt-based client for working with SecureDrop submissions on the SecureDrop Qubes Workstation
Set up a Python 3 virtual environment and set up dependencies:
pipenv install --dev
pipenv shell
Please install system libraries for PyQt rather than using PyPI-managed libraries- this makes packaging possible later. On Debian, apt install python3-pyqt5 python3-pyqt5.qtsvg
will install what you need.
You can run the client with an ephemeral data directory:
./run.sh
If you want to persist data across restarts, you will need to run the client with:
./run.sh --sdc-home /path/to/my/dir/
make test
alembic revision --autogenerate -m "describe your revision here"
alembic upgrade head
This client will sit in a Qubes vault AppVM:
It will use the SecureDrop SDK to interact with the SecureDrop Journalist API. Currently, this must be done by running the SecureDrop server dev container. To do this:
- Follow the instructions in the SecureDrop documentation to set up the development container. The journalist interface API will be running on
127.0.0.1:8081
with a test journalist, admin, and test sources and replies. - Clone the [SDK repository]((https://github.com/freedomofpress/securedrop-sdk) and install the package in the same virtualenv you are using to develop this client.
- Now at the Python interpreter you should be able to
import sdclientapi
without issue.
For further development, you should use the SDK methods to interact with the server.