<feed xmlns='http://www.w3.org/2005/Atom'>
<title>mailman.git/src/mailman/core, branch feature/drop-runner-priviliges</title>
<subtitle>The GNU Mailing List manager.</subtitle>
<id>https://git.neuromancer.sk/mailman.git/atom/src/mailman/core?h=feature%2Fdrop-runner-priviliges</id>
<link rel='self' href='https://git.neuromancer.sk/mailman.git/atom/src/mailman/core?h=feature%2Fdrop-runner-priviliges'/>
<link rel='alternate' type='text/html' href='https://git.neuromancer.sk/mailman.git/'/>
<updated>2017-06-19T21:42:34Z</updated>
<entry>
<title>Don't fail when plugins pre_hook or post_hook fails.</title>
<updated>2017-06-19T21:42:34Z</updated>
<author>
<name>J08nY</name>
</author>
<published>2017-06-19T13:04:12Z</published>
<link rel='alternate' type='text/html' href='https://git.neuromancer.sk/mailman.git/commit/?id=fc0e59c5c33779a1674fe3ddfbcc72d131036c21'/>
<id>urn:sha1:fc0e59c5c33779a1674fe3ddfbcc72d131036c21</id>
<content type='text'>
 - Catches all exceptions raised when running a plugins (pre|post)
   _hooks. If its pre_hook raises an exception, the plugin is disabled
   and removed, so its post_hook will not be run and its components
   will not be loaded. If its post_hook raises an exception we just
   continue and hope for the best.
</content>
</entry>
<entry>
<title>Make config.plugin_configs yield a dict with plugin names.</title>
<updated>2017-06-17T17:35:47Z</updated>
<author>
<name>J08nY</name>
</author>
<published>2017-06-06T13:51:10Z</published>
<link rel='alternate' type='text/html' href='https://git.neuromancer.sk/mailman.git/commit/?id=fbae9955db33b1d271c5e91368ef5cb5bf363bae'/>
<id>urn:sha1:fbae9955db33b1d271c5e91368ef5cb5bf363bae</id>
<content type='text'>
 - Allows to better loop over pluging configs and their names.
</content>
</entry>
<entry>
<title>Add per-plugin hooks, add docs about plugins.</title>
<updated>2017-06-17T17:35:47Z</updated>
<author>
<name>J08nY</name>
</author>
<published>2017-06-01T13:46:48Z</published>
<link rel='alternate' type='text/html' href='https://git.neuromancer.sk/mailman.git/commit/?id=6c58abe8a135bd8f572867c170fed19958ca9a09'/>
<id>urn:sha1:6c58abe8a135bd8f572867c170fed19958ca9a09</id>
<content type='text'>
 - Removes pre_hook, post_hook and ext_dir. With the latter being
   unused. Warns on startup if the hooks are present in config.

 - Adds IPlugin interface with pre_hook and post_hook methods.

 - Adds 'class' config parameter to plugins, which can be set to
   a class implementing the IPlugin interface, it will be
   initialized once on Mailman's startup, then before the DB
   setup the pre_hook will be run, after DB and other components
   the post_hook will be run. Plugin instances are stored in the
   config.plugins dict, with keys being their configuration section
   names.
</content>
</entry>
<entry>
<title>Add pluggable components.</title>
<updated>2017-06-17T17:35:47Z</updated>
<author>
<name>J08nY</name>
</author>
<published>2017-05-31T00:09:09Z</published>
<link rel='alternate' type='text/html' href='https://git.neuromancer.sk/mailman.git/commit/?id=765f327dfac9c4537184b2073ea4893cf4560ad7'/>
<id>urn:sha1:765f327dfac9c4537184b2073ea4893cf4560ad7</id>
<content type='text'>
 - Adds the notion of a 'plugin'.
   - A plugin has a package path and a flag specifying whether
     it's enabled or not.

 - Adds a find_pluggable_components function similar to the
   find_components one. This one dynamically searches not only
   the mailman package but all of plugins.
   - e.g. find_pluggable_components('rules', IRule) finds
     all IRule components in mailman.rules but also in
     example_plugin.rules for plugin names example_plugin.

 - Uses the find_pluggable_components function in place of
   find_components when searching for Rules, Handlers, Chains,
   EmailCommands, and Styles.
</content>
</entry>
<entry>
<title>Move pipelines to their own package, instantiate them dynamically.</title>
<updated>2017-06-17T13:20:31Z</updated>
<author>
<name>J08nY</name>
</author>
<published>2017-05-30T19:10:52Z</published>
<link rel='alternate' type='text/html' href='https://git.neuromancer.sk/mailman.git/commit/?id=c274d8ca000f8ede0dcc3399abd1d35e09355ae6'/>
<id>urn:sha1:c274d8ca000f8ede0dcc3399abd1d35e09355ae6</id>
<content type='text'>
</content>
</entry>
<entry>
<title>Provide a better way to avoid instantiating some components</title>
<updated>2017-06-17T03:33:38Z</updated>
<author>
<name>Barry Warsaw</name>
</author>
<published>2017-06-17T03:33:38Z</published>
<link rel='alternate' type='text/html' href='https://git.neuromancer.sk/mailman.git/commit/?id=88f40ac0add14cc9e7c106c5e2e9ec3d6f73df6e'/>
<id>urn:sha1:88f40ac0add14cc9e7c106c5e2e9ec3d6f73df6e</id>
<content type='text'>
</content>
</entry>
<entry>
<title>Enhance Switchboard.finish() to look for .pck if no .bak.</title>
<updated>2017-04-22T22:39:13Z</updated>
<author>
<name>Mark Sapiro</name>
</author>
<published>2017-04-22T22:39:13Z</published>
<link rel='alternate' type='text/html' href='https://git.neuromancer.sk/mailman.git/commit/?id=9b7a47dbf92abf9bf6e4226ad4fe7da470c8da5f'/>
<id>urn:sha1:9b7a47dbf92abf9bf6e4226ad4fe7da470c8da5f</id>
<content type='text'>
</content>
</entry>
<entry>
<title>Fix signal handler exception.</title>
<updated>2017-02-02T01:12:02Z</updated>
<author>
<name>Barry Warsaw</name>
</author>
<published>2017-02-02T01:12:02Z</published>
<link rel='alternate' type='text/html' href='https://git.neuromancer.sk/mailman.git/commit/?id=d113a345131b07e6b2001621556f71deea1ba771'/>
<id>urn:sha1:d113a345131b07e6b2001621556f71deea1ba771</id>
<content type='text'>
</content>
</entry>
<entry>
<title>Handle PEP 475 fallout.</title>
<updated>2017-01-28T18:19:58Z</updated>
<author>
<name>Barry Warsaw</name>
</author>
<published>2017-01-28T18:17:25Z</published>
<link rel='alternate' type='text/html' href='https://git.neuromancer.sk/mailman.git/commit/?id=7c97e8fbdb90a1a0de1526d7a6f108e95415d6a0'/>
<id>urn:sha1:7c97e8fbdb90a1a0de1526d7a6f108e95415d6a0</id>
<content type='text'>
Closes #255

As of Python 3.5, PEP 475 gets in our way.  Runners with long time.sleep()'s
in their _snooze() method (e.g. the retry runner) will have their system call
implemented time.sleep() automatically retried at the C layer.  The only
reliable way to prevent this is to raise an exception in the signal handler.
The standard run() method automatically suppresses this exception, meaning,
it's caught and ignored, but effectively breaks the run() loop, which is just
what we want.

The lmtp and rest runners implement their own run loops, so they also have to
handle this exception, by ignoring it.
</content>
</entry>
<entry>
<title>Bump copyright years.</title>
<updated>2017-01-04T15:30:17Z</updated>
<author>
<name>Barry Warsaw</name>
</author>
<published>2017-01-04T15:30:17Z</published>
<link rel='alternate' type='text/html' href='https://git.neuromancer.sk/mailman.git/commit/?id=8180990a2ed053f6e4880f93a75acd9845631793'/>
<id>urn:sha1:8180990a2ed053f6e4880f93a75acd9845631793</id>
<content type='text'>
</content>
</entry>
</feed>
