[Mailman-Developers] [GSoC] Encrypted mailing lists
Jan Jancar
johny at neuromancer.sk
Sat May 20 17:00:18 EDT 2017
Hi all.
Currently still looking into what changes will be necessary
in core in order to cleanly implement encrypted mailing lists
as a plugin, so this is my second status report. I will start
doing these pretty much weekly now, and definitely weekly/
more frequent when the coding period starts.
All of my reports (currently only this one) can be found on:
https://neuromancer.sk/
https://neuromancer.sk/recent.atom
(https://neuromancer.sk/article/2)
Also pasting it here for clarity and replies:
## Plugin API enhancements in Core
To cleanly implement encrypted mailing lists as a plugin to
Mailman Core I propose several general changes to the plugin
api, to allow for cleaner integration of plugins, more flexibility
and easier plugin deployment. First I present the current state
of pluggability in Mailman core and then present the proposed
changes.
### Current state
Relevant mailman-developers thread from GSoC 2015:
https://mail.python.org/pipermail/mailman-developers/2015-March/024477.html
Example plugin:
http://threebean.org/blog/plugins-for-mailman3/
* A plugin creator has many ways of "injecting" his code to run
at certain phases of Mailman's operation, since Mailman looks for
its classes and components dynamically, it doesn't care whether
they are from a plugin or originally from core.
- Implementing IHandler, IChain, IRule, IEmailCommand,
ICLISubCommand or IStyle and placing modules containing
the classes in the appropriate directories where Mailman
finds them and instantiates them.
- Implementing IRunner and adding the custom runner to
mailman.cfg.
- Implementing IArchiver and adding the custom archiver to
mailman.cfg.
- Implementing IMailTransportAgentLifecycle and setting the
custom MTA in mailman.cfg.
- Setting a custom callable in pre_hook or post_hook
(only one callable per hook).
* Core config variable ext_dir is unused.
* There is not much documentation / examples of plugin creation,
however core is very well documented so it's just a matter of
figuring out what's pluggable or not.
### Proposed changes
* Add configuration option similar to config.styles.paths to
Handlers, Rules, Chains etc.. Which Mailman will use to look
for components, so that plugins can just be accessible on the
python path and not necessarily inside the Mailman package.
Or use just one path per plugin and a standardized plugin structure:
- plugin package
- handlers
- rules
- chains
- commands
- pipelines
- styles
* Let plugins add Pipelines the same way they can add Handlers etc...
- This means refactoring BasePipeline, OwnerPipeline,
PostingPipeline, VirginPipeline from mailman.core.pipelines.py
into a package mailman.pipelines
- Use find_components
* Let plugins subscribe to receive events.
* Let List creator specify List Style when creating it through
Postorius.
* Allow multiple callables in pre_hook and post_hook run
in order specified.
* Drop ext_dir.
Cheers,
--
Jan
______________________________________________________
/\ # PGP: 362056ADA8F2F4E421565EF87F4A448FE68F329D
/__\ # https://neuromancer.sk
/\ /\ # Eastern Seaboard Phishing Authority
/__\/__\ #
-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 862 bytes
Desc: OpenPGP digital signature
URL: <http://mail.python.org/pipermail/mailman-developers/attachments/20170520/519676ff/attachment.sig>
More information about the Mailman-Developers
mailing list