chiark / gitweb /
Some macros replace some boilerplate formulae
[innduct.git] / samples / nnrpd_dynamic_wrapper.py
1 ##  $Id: nnrpd_dynamic_wrapper.py 7899 2008-06-22 18:22:07Z iulius $
2 ##
3 ##  Example wrapper for support of old Python authentication scripts,
4 ##  by Erik Klavon.
5 ##
6 ##  This file contains a sample Python script which can be used to
7 ##  duplicate the behaviour of the old nnrppythonauth functionality.
8 ##  This script only supports dynamic access control by group.
9 ##
10 ##  How to use this wrapper:
11 ##    - insert your authentication class into this file;
12 ##    - rename your authentication class OLDAUTH.
13 ##
14 ##  See the INN Python Filtering and Authentication Hooks documentation
15 ##  for more information.
16 ##  The use of this file is *discouraged*.
17
18 ##  Old AUTH class.
19 ##  Insert your old auth class here.
20 ##  Do not include the code which sets the hook.
21
22
23
24
25 ##  Wrapper DYNACCESS class.  It creates an instance of the old class and
26 ##  calls its methods.  Arguments and return values are munged as
27 ##  needed to fit the new way of doing things.
28
29 class MYDYNACCESS:
30     """Provide dynamic access callbacks to nnrpd."""
31     def dynamic_init(self):
32         self.old = OLDAUTH()
33
34     def dynamic(self, attributes):
35         return (self.old).authorize(attributes)
36
37     def dynamic_close(self):
38         (self.old).close()
39
40
41 ##  The rest is used to hook up the dynamic access module on nnrpd.  It is unlikely
42 ##  you will ever need to modify this.
43
44 ##  Import functions exposed by nnrpd.  This import must succeed, or nothing
45 ##  will work!
46 from nnrpd import *
47
48 ##  Create a class instance.
49 mydynaccess = MYDYNACCESS()
50
51 ##  ...and try to hook up on nnrpd.  This would make auth object methods visible
52 ##  to nnrpd.
53 try:
54     set_auth_hook(mydynaccess)
55     syslog('notice', "dynamic access module successfully hooked into nnrpd")
56 except Exception, errmsg:
57     syslog('error', "Cannot obtain nnrpd hook for dynamic access method: %s" % errmsg[0])