#!/usr/bin/python

# Copyright (C) 2007 AG Projects.
#

"""OpenXCAP"""


if __name__ == '__main__':
    import sys
    from optparse import OptionParser
    from application.process import process, ProcessError
    from application import log

    import xcap

    name = 'openxcap'
    fullname = 'Open XCAP'
    description = 'An open source XCAP Server'

    config_directory = '/etc/openxcap'
    runtime_directory = '/var/run/openxcap'
    default_pid = "%s/%s.pid" % (runtime_directory, name)

    parser = OptionParser(version="%%prog %s" % xcap.__version__)
    parser.add_option("--no-fork", action="store_false", dest="fork", default=1,
                      help="run the process in the foreground (for debugging)")
    parser.add_option("--pid", dest="pidFile", default=default_pid,
                      help="pid file (%s)" % default_pid,
                      metavar="File")

    (options, args) = parser.parse_args()

    pidFile = options.pidFile

    process._system_config_directory = config_directory
    try:
        process.runtime_directory = runtime_directory
    except ProcessError, e:
        log.msg("Fatal error: %s" % e)
        sys.exit(1)

    if options.fork:
        try:
            process.daemonize(pidFile)
        except ProcessError, e:
            log.fatal(str(e))
            sys.exit(1)
        log.startSyslog(name)
    else:
        pass
        #from application.debug.memory import *

    print "Starting %s %s" % (fullname, xcap.__version__)

    from xcap.server import XCAPServer
    try:
        server = XCAPServer()
    except Exception, why:
        print >>sys.stderr, "Failed to create Open XCAP: %s" % why
        sys.exit(1)

    try:
        server.start()
    except Exception, why:
        print >>sys.stderr, "Failed to start Open XCAP: %s" % why
        sys.exit(1)
