securedrop-client
securedrop-client copied to clipboard
Implement proxy v2 architecture, in Rust
This was migrated from https://github.com/freedomofpress/securedrop-proxy/pull/127
Status
Ready for review
Description
Implement the proxy v2 architecture; see individual commits messages for more detail.
- Fixes https://github.com/freedomofpress/securedrop-client/issues/1678.
- Fixes #1778
- Fixes https://github.com/freedomofpress/securedrop-workstation/issues/853
- Refs https://github.com/freedomofpress/securedrop-client/issues/1848
- Fixes https://github.com/freedomofpress/securedrop-client/issues/1831
- Fixes https://github.com/freedomofpress/securedrop-client/issues/1681
- Fixes https://github.com/freedomofpress/securedrop-client/issues/1684
- Fixes https://github.com/freedomofpress/securedrop-client/issues/1685
- Fixes https://github.com/freedomofpress/securedrop-client/issues/1690
- Fixes https://github.com/freedomofpress/securedrop-client/issues/1694
- Fixes https://github.com/freedomofpress/securedrop-client/issues/1717
- Fixes https://github.com/freedomofpress/securedrop-client/issues/1761
- Fixes https://github.com/freedomofpress/securedrop-security/issues/73
Test Plan
- [x] CI passes
- [ ] Visual review:
- [x] @cfm reviews commit by commit
- [ ] @legoktm reviews commit by commit
- [ ] Third review (TBD) reviews the major commits specially, since @cfm and @legoktm co-authored most everything here:
- [ ] df803d5ffcf638d4c6e027684d4255f420868100
- [ ] 1f3c2c84466f350954531d2d60d066f5431d69fc
- [ ] bc67129b44d76581ae29780ee5a5be12ac907ebe
- [ ] Third reviewer (TBD) spot-checks VCR cassettes regenerated in:
- [ ] 1f3c2c84466f350954531d2d60d066f5431d69fc
- [ ] 98867666c6867f7711f04de2777b0661282700c6
- [x] Start dev instance with
cd client && ./run.sh
and test syncing, sending replies and downloading attachments works fine - [ ] Build and install debs onto Qubes 4.2 system, test syncing, sending replies and downloading attachments works fine
Checklist
If these changes modify code paths involving cryptography, the opening of files in VMs or network (via the RPC service) traffic, Qubes testing in the staging environment is required. For fine tuning of the graphical user interface, testing in any environment in Qubes is required. Please check as applicable:
- [ ] I have tested these changes in the appropriate Qubes environment
- I do not have an appropriate Qubes OS workstation set up (the reviewer will need to test these changes)
- These changes should not need testing in Qubes
If these changes add or remove files other than client code, the AppArmor profile may need to be updated. Please check as applicable:
- I have updated the AppArmor profile
- No update to the AppArmor profile is required for these changes
- I don't know and would appreciate guidance
- [x] AppArmor will be done as a follow-up: https://github.com/freedomofpress/securedrop-client/issues/1889
If these changes modify the database schema, you should include a database migration. Please check as applicable:
- I have written a migration and upgraded a test database based on
main
and confirmed that the migration is self-contained and applies cleanly - I have written a migration but have not upgraded a test database based on
main
and would like the reviewer to do so - I need help writing a database migration
- [x] No database schema changes are needed