Piotr F. Mieszkowski
e8d0d248b3
lacre.repositories: Add missing import
2023-12-10 21:39:59 +01:00
Piotr F. Mieszkowski
23a05c11ac
Remove EncryptionException formatting test
2023-12-10 21:35:35 +01:00
Piotr F. Mieszkowski
8cc1136a90
lacre.daemon: When keys can't be loaded, fail gracefully
...
- Introduce '[daemon]bounce_on_keys_missing' option to let the admin decide if
they want Lacre to deliver cleartext message when identity database is
unreachable or throws exceptions. It defaults to 'no'.
- In IdentityRepository, use option mentioned above to decide what to do when
an exception is caught.
2023-12-10 21:27:05 +01:00
pfm
628de8a28d
Merge pull request 'Fix cron script and more' ( #134 ) from fix/cron-script into main
...
Reviewed-on: #134
2023-12-09 20:26:37 +00:00
Piotr F. Mieszkowski
c0b98649d4
lacre.admin: Document import command
2023-12-09 21:14:35 +01:00
Piotr F. Mieszkowski
fe2c0cbf76
Fix unprintable exception issue
2023-12-09 20:57:09 +01:00
Piotr F. Mieszkowski
75c48282b0
Rework encryption exception handling
...
Also: remove misleading comment about message.defects.
2023-12-09 20:38:46 +01:00
Piotr F. Mieszkowski
fc08813bdc
Improve unencryptable message logs
2023-12-09 19:48:20 +01:00
Piotr F. Mieszkowski
d51c675881
lacre.admin: Make import -r option a flag (Boolean)
2023-12-05 21:51:35 +01:00
Piotr F. Mieszkowski
abaf8820d7
lacre.admin: Add -r / --reload option to import command
...
With -r option, import command will first remove all identities and then load
them again from pubring.kbx.
2023-12-05 21:49:23 +01:00
Piotr F. Mieszkowski
94d0a62766
Identity removal: execute prepared DELETE
2023-12-05 21:33:19 +01:00
Piotr F. Mieszkowski
cc1bacbe3d
Move some imports to lacre.notify
2023-12-05 21:13:02 +01:00
pfm
4c603839b5
Merge pull request 'lacre.repositories: Fix IdentityRepository existence predicate' ( #133 ) from 132-fix-repo-upsert into main
...
Reviewed-on: #133
2023-12-04 21:59:00 +00:00
Piotr F. Mieszkowski
0d852bc279
lacre.repositories: Fix IdentityRepository existence predicate
2023-12-04 22:57:43 +01:00
pfm
b7713207ab
Merge pull request 'Fix unencrypted delivery and key removal' ( #130 ) from 129-key-removal into main
...
Reviewed-on: #130
2023-12-02 20:59:13 +00:00
Piotr F. Mieszkowski
ac5dddfa98
Remove configuration options no longer used
2023-12-02 21:48:17 +01:00
Piotr F. Mieszkowski
052551072e
Change table prefix from 'gpgmw' to 'lacre'
2023-12-02 20:02:59 +01:00
Piotr F. Mieszkowski
0975ce3a69
lacre.admin: Handle database exceptions
2023-11-26 19:52:58 +01:00
Piotr F. Mieszkowski
b44bd7b150
lacre.admin: Implement identity import, fix identity list
...
- Let the user specify a directory, using the one from configuration by
default.
- If user requested identity list without a specific email, list all. Drop
support for '-a' option.
2023-11-26 18:30:25 +01:00
Piotr F. Mieszkowski
0fe5e6b3dc
Make GnuPG.public_keys docstring more complete
2023-11-26 18:29:43 +01:00
Piotr F. Mieszkowski
aa8c353a05
Replace NBSP in doc/admin.md with a regular space
2023-11-26 18:29:09 +01:00
Piotr F. Mieszkowski
97c4f9f14a
lacre.repositories: Fix naming after refactoring
2023-11-25 16:09:23 +01:00
Piotr F. Mieszkowski
626fce5f2c
lacre.admin: Implement 'identities' sub-command
2023-11-25 16:08:54 +01:00
Piotr F. Mieszkowski
95c5802c38
Add test/lacre.db to gitignore
2023-11-25 15:09:00 +01:00
Piotr F. Mieszkowski
9b5c43b769
Fix crontest config, polish Makefile
2023-11-25 15:05:27 +01:00
Piotr F. Mieszkowski
7fe52ae8b5
Don't pass table definition to KeyConfirmationQueue
2023-11-25 15:02:48 +01:00
Piotr F. Mieszkowski
1ad0d2df0e
Implement lacre.admin CLI tool
2023-11-25 14:07:10 +01:00
Piotr F. Mieszkowski
becb39f139
Clean up database access
...
- Don't pass table definitions to repository constructors.
- Keep an internal reference to Engine in lacre.repository.
- Implement KeyConfirmationQueue.count_keys.
2023-11-25 14:04:32 +01:00
Piotr F. Mieszkowski
4950e0b9c3
Keep secondary keyring for test purposes
2023-11-25 01:13:43 +01:00
Piotr F. Mieszkowski
acd33fec1e
Fix inheritance issues
...
- Use accessor methods.
- Avoid data duplication.
2023-11-25 01:11:44 +01:00
Piotr F. Mieszkowski
72217e38ea
GnuPG module: make key-listing more thorough
...
- Flush key-collecting structures each time a new public key entry is found.
This will avoid adding sub-keys and overwriting main keys with them.
- Use parseaddr from email.utils to parse emails (and drop realname part).
- Record logs produced during unit tests.
- Fix a small bug in test code.
Also: add basic information about available test identities to testing
documentation.
2023-11-25 01:08:15 +01:00
Piotr F. Mieszkowski
7c2d32bf3c
Make IdentityRepository a KeyRing
...
- Keep only one class to provide access to identities stored in the database.
- Remove old code and its tests.
- Align KeyRing and IdentityRepository APIs.
- Implement a (very) simple unit test for IdentityRepository.
2023-11-24 22:59:21 +01:00
Piotr F. Mieszkowski
5efef3c9cb
Fix table name, unify metadata handling
2023-11-20 22:27:35 +01:00
Piotr F. Mieszkowski
89affde0d5
Add tests for GnuPG parsing routines
2023-11-20 22:11:37 +01:00
Piotr F. Mieszkowski
bfa2643dc7
Implement identity repository
...
Also: rename key_id to fingerprint.
2023-11-20 22:11:25 +01:00
Piotr F. Mieszkowski
56da7e0cb4
Refactor calculating execution time
...
- Implement a context manager logging execution time.
- Use that context manager in daemon's handle_DATA method.
2023-11-20 22:03:59 +01:00
Piotr F. Mieszkowski
4fbae908d6
Don't require less-than and greater-than around the email
...
Keys don't have to be surrounded with less-than and greater-than characters,
so this code could mishandle valid keys.
2023-11-19 22:45:08 +01:00
Piotr F. Mieszkowski
c6b2dbf618
Add docs, improve logging
2023-11-17 22:55:37 +01:00
Piotr F. Mieszkowski
7ac928af76
Handle gpg-mailgate.py missing params better
2023-11-17 22:51:09 +01:00
Piotr F. Mieszkowski
a3eb892df9
Remove duplicate logger initialisation
2023-11-15 20:25:42 +01:00
Piotr F. Mieszkowski
2edd842f90
Use lacre.dbschema definition of identities table
2023-11-12 20:20:38 +01:00
Piotr F. Mieszkowski
6ca5db2db3
Issue an INFO log entry after configuring logging
...
Also: reformat with spaces instead of tabs.
2023-11-12 19:57:12 +01:00
Piotr F. Mieszkowski
9bbc86bc53
Extract parts of cron script to modules
...
Introduce new Python modules:
- lacre.notify -- to send notifications from the cron script;
- lacre.dbschema -- to keep database schema definition as code (SQLAlchemy);
- lacre.repositories -- to define key and identity repositories with high
level APIs that we can then use elsewhere.
Also:
- rework GnuPG.add_key to return fingerprint so we can use it in the cron
script;
- rename cron-job's logger name, replacing dash with an underscore as logging
module doesn't like dashes.
2023-11-12 19:56:45 +01:00
Piotr F. Mieszkowski
bf677585be
Don't require watchdog anymore
2023-11-01 21:26:42 +01:00
Piotr F. Mieszkowski
5e108c189a
Replace file-based identity store with a dedicated db table
2023-10-29 19:39:08 +01:00
Piotr F. Mieszkowski
02edb4cc96
Validate keyring type config parameter on daemon startup
2023-10-27 23:53:17 +02:00
Piotr F. Mieszkowski
3dd6913599
Initialise db connection lazily, use isolated asyncio test case
2023-10-23 22:44:53 +02:00
Piotr F. Mieszkowski
e5339d264c
Improve asyncio usage
2023-10-23 22:35:27 +02:00
Piotr F. Mieszkowski
43f43a4137
Fix DatabaseKeyring tests
2023-10-23 20:26:23 +02:00
Piotr F. Mieszkowski
41442e5b59
Add basic support for RDBMS-based keyring
2023-09-30 22:38:33 +02:00