Skip to content

ultimatecoder/securedrop-client

 
 

Repository files navigation

securedrop-client

CircleCI

Qt-based client for working with SecureDrop submissions on the SecureDrop Qubes Workstation

Getting Started

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.

Run the client

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/

Run tests

make test

Generate and run database migrations

alembic revision --autogenerate -m "describe your revision here"
alembic upgrade head

Qubes Integration

This client will sit in a Qubes vault AppVM:

diagram

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:

  1. 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.
  2. 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.
  3. 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.

About

a Qt-based GUI for SecureDrop journalists 📰🗞️

Resources

License

Code of conduct

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages

  • Python 98.0%
  • Makefile 1.1%
  • Other 0.9%