-
Notifications
You must be signed in to change notification settings - Fork 46
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Implementing a journalist client #88
Comments
A basic client will be part of the version to be audited. This initial client will still download submissions to the local filesystem, that is, you will still use a file manager to open a previously downloaded submission or message. However, the graphical client should handle all the key operations of the journalist UI:
All of these operations are already supported in the API available in the |
Distilling a conversation with @joshuathayer about the practical realities of working on workstation code, we should:
For now, we're recommending that developers use the SecureDrop "staging" VMs, provisioned on the API branch, in order to host the API, for use when developing the GUI client application. In so far as the API remains stable, that's acceptable, but in general, use of the containerized dev env would be useful to all folks running Qubes (covered by #106). |
On @conorsch 's third point above
that's not naively supported in the architecture that @redshiftzero and @kushaldas and I came up with (and is diagrammed above). In our design, the client runs in a networkless VM, communicating with the server via a proxy running in a separate VM. The proxy accepts qubes-rpc calls from the client and makes corresponding HTTP requests to the server. So, simply running the client in the same VM as the server container isn't sufficient: we'd also need to install and configure the proxy in that same VM. When the client wants to make a request against the server, it would make a qubes-rpc call to its configured proxy, which happens to end up on the same VM. The proxy would make an HTTP call to its configured server, which happens to be in a container on the same VM. The server's response flows back from the container to the proxy, then back to the client. In this way we're able to develop the server, client, and proxy all on the same VM. We could follow the same pattern if we want for Of course we'd still develop salt configurations to create each component's VM, deploy the code to the correct places, and configure |
Dropping some initial thoughts about the implementation of the Two basic points:
In the thoughts that follow, “initially” means it’s something we should have for the initial prototype, “eventually” is something that will come in a future version When client program starts up:
Local database should contain:
Open questions:
|
here's a more detailed structure for the initial client (I'm going to make a separate repo for the client and start breaking this up so we can focus the discussion down a bit on the next few steps):
Storage/controller layerThis layer will basically control the models which describes the database (below) so that functionally the Qt parts of our code are interacting with storage, not sqlalchemy directly, and act a presentation/view layer Utility functions
|
this was implemented, closing: |
Currently the Qubes workstation has a much better user experience compared to the manual workflow. Eventually, we plan to deprecate the use of the Journalist Interface in Tor Browser in favor of a custom native application. @kushaldas, @joshuathayer and I discussed one way this client can be implemented, described briefly below.
There are two proposed applications to replicate the current workflow :
securedrop-api-proxy
- this application lives in thesd-journalist
AppVM (which is connected to the internet via thesd-whonix
VM). Thesecuredrop-api-proxy
is simply aqrexec
service that is an API proxy: it passes requests and responses between the to the SecureDrop Journalist API server-side and a program running in thesd-svs
VM. It does not need to have any UI.securedrop-client
- this application lives in thesd-svs
AppVM and is the application that has the user interface. The user interface would allow users to do all the same things they have previously done through the Journalist interface: read messages, send messages to sources, open submitted files from sources (see [issue incoming]), etc. Thesd-svs
AppVM has no internet connectivity and passes API requests/responses throughsecuredrop-api-proxy
insd-journalist
.The text was updated successfully, but these errors were encountered: