Allow classes from other modules to be specified at startup. For example,

using the postfixproxy module from Spambayes you might start smtpd up like

    smtpd.py -c spambayes.postfixproxy.SpambayesProxy :8025 :8026
This commit is contained in:
Skip Montanaro 2004-06-26 19:18:49 +00:00
parent 616f4f61ba
commit 90e0153940
1 changed files with 9 additions and 2 deletions

View File

@ -533,8 +533,15 @@ if __name__ == '__main__':
print >> sys.stderr, \
'Cannot setuid "nobody"; try running with -n option.'
sys.exit(1)
import __main__
class_ = getattr(__main__, options.classname)
classname = options.classname
if "." in classname:
lastdot = classname.rfind(".")
mod = __import__(classname[:lastdot], globals(), locals(), [""])
classname = classname[lastdot+1:]
else:
import __main__ as mod
print mod.__name__, dir(mod)
class_ = getattr(mod, classname)
proxy = class_((options.localhost, options.localport),
(options.remotehost, options.remoteport))
try: