#!/usr/bin/python

from ldaptor.apps import webui
from ldaptor.apps.webui import main
from ldaptor import usage
from ldaptor.checkers import LDAPBindingChecker
from ldaptor.protocols.ldap.distinguishedname import DistinguishedName

from twisted.internet import reactor
from twisted.python import log

from nevow import appserver

class MyOptions(usage.Options):
    """LDAPtor Web User Interface"""

    def __init__(self, *args, **kwargs):
	usage.Options.__init__(self, *args, **kwargs)

    optParameters = (
	('http-port', None, '38980', # think "ldap and http"
	 "listen on this port"),
	)

    def postOptions_httpport(self):
	try:
	    val = int(self.opts['http-port'])
	except ValueError:
	    raise usage.UsageError, "%s value must be numeric" % 'http-port'
	self.opts['http-port'] = val

if __name__ == '__main__':
    import sys
    try:
	opts = MyOptions()
	opts.parseOptions()
    except usage.UsageError, ue:
	sys.stderr.write('%s: %s\n' % (sys.argv[0], ue))
	sys.exit(1)
    log.startLogging(sys.stderr, setStdout=0)
    resource = main.getResource()

    sit = appserver.NevowSite(resource)

    reactor.listenTCP(opts['http-port'], sit)
    reactor.run()
