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
Piotr F. Mieszkowski
0d852bc279
lacre.repositories: Fix IdentityRepository existence predicate
2023-12-04 22:57:43 +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
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
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
acd33fec1e
Fix inheritance issues
...
- Use accessor methods.
- Avoid data duplication.
2023-11-25 01:11:44 +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
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
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
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
41442e5b59
Add basic support for RDBMS-based keyring
2023-09-30 22:38:33 +02:00
Piotr F. Mieszkowski
fccabc083c
Fix unencrypted delivery arguments
...
When falling back to unencrypted mail delivery, do not pass sender information
to SendFrom.call method.
2023-09-21 20:21:01 +02:00
Piotr F. Mieszkowski
a30b5e7577
Handle missing Content-Type properly
...
- ContentManager sets default Content-Type even if it was missing in the
original message.
- Make sure that when Content-Type is missing, copying parameters doesn't
raise an error.
- Add a unit-test to check that.
2023-05-19 20:30:00 +02:00
Piotr F. Mieszkowski
518b823b5c
Fix simple filter: pass policy to as_bytes()
...
Also: adjust expected test output because it's now Base64-encoded.
2023-05-08 22:17:02 +02:00
Piotr F. Mieszkowski
61cf50effe
Fix MIME content sub-type handling for non-plain text messages
2023-05-08 22:17:02 +02:00
Piotr F. Mieszkowski
34e8b6a4eb
Move the last key-related function to keyring module
2023-05-08 22:17:02 +02:00
Piotr F. Mieszkowski
285f5dbf18
Don't overwrite CTE
...
We rely on Content Manager to select the right Content-Transfer-Encoding.
2023-05-08 22:17:02 +02:00
Piotr F. Mieszkowski
fdd11dba14
Log more information about FS events while reloading keys
2023-05-08 22:17:02 +02:00
Piotr F. Mieszkowski
682de14630
Split the code into smaller modules
...
Introduce modules:
- lacre.transport - for actual delivery via SMTP
- lacre.smime - to take care of S/MIME stuff
Implement lacre.transport.SendFrom class that does a almost exactly the same
thing as the original send_msg function, but without using global variable to
store original message sender.
2023-05-08 22:17:02 +02:00
Piotr F. Mieszkowski
ff6e0bfbdd
Move recipient-processing code to a dedicated module
2023-05-08 22:17:02 +02:00
Piotr F. Mieszkowski
5f5b374f84
Unify send_msg, add more type hints
2023-05-08 22:17:02 +02:00
Piotr F. Mieszkowski
f4e21217c2
[simple-filter] Retry delivery recoding text parts
2023-05-08 22:17:02 +02:00
Piotr F. Mieszkowski
1f1fe1dadb
Add lots of log messages
2023-05-08 22:17:02 +02:00
Piotr F. Mieszkowski
8a42f3fea1
Improve error-handling for simple filter and test relay
2023-05-08 22:17:02 +02:00
Piotr F. Mieszkowski
a5f79c1ae7
Wrap recipient lists
...
Instead of passing pairs of lists (emails and keys) separately, implement a
class RecipientList to wrap such pair of lists.
2023-05-08 22:17:02 +02:00
Piotr F. Mieszkowski
b2bd6a9926
Encapsulate recipient lists
...
Implement RecipientList class with:
- recipient (email) list,
- key (identity) list.
Cover with basic unit test.
2023-05-08 22:17:02 +02:00
Piotr F. Mieszkowski
603a88489e
Polish the code
2023-05-08 22:17:02 +02:00
Piotr F. Mieszkowski
ffd5f08ad9
Make PGP message recognition more thorough
2023-05-08 22:17:02 +02:00
Piotr F. Mieszkowski
d342f206de
Handle messages as EmailMessage
...
In the daemon, specify policy as SMTPUTF8. That sets the deafult message type
to EmailMessage.
EmailMessage class is richer, including support for Content Managers, giving
it the capability to properly handle textual data and its encodings.
Also: add another contract test.
2023-05-08 22:17:02 +02:00