diff --git a/msrprelay b/msrprelay index 45d2171..b46ae0c 100644 --- a/msrprelay +++ b/msrprelay @@ -1,78 +1,81 @@ #!/usr/bin/env python """MSRP Relay""" if __name__ == "__main__": + import msrp import os import sys import signal - from optparse import OptionParser - from application.process import process, ProcessError + from application import log - import msrp + from application.process import process, ProcessError + from argparse import ArgumentParser name = "msrprelay" fullname = "MSRP Relay" description = "An open source MSRP Relay" default_pid = os.path.join(msrp.runtime_directory, "relay.pid") default_config = os.path.join(msrp.system_config_directory , msrp.configuration_filename) - parser = OptionParser(version="%%prog %s" % msrp.__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="pid_file", default=default_pid, help='pid file ("%s")' % default_pid, metavar="File") - parser.add_option("--config-file", dest="config_file", default=default_config, help='path to configuration file to read ("%s")' % msrp.configuration_filename, metavar="File") - (options, args) = parser.parse_args() + parser = ArgumentParser(usage='%(prog)s [options]') + parser.add_argument('--version', action='version', version='%(prog)s {}'.format(msrp.__version__)) + parser.add_argument('--no-fork', action='store_false', dest='fork', help='run in the foreground and log to terminal') + parser.add_argument('--pid', dest='pid_file', default=default_pid, help='pid file when forking ({})'.format(default_pid), metavar='FILE') + parser.add_argument('--config-file', default=default_config, help='configuration file to read', metavar='FILE') + + options = parser.parse_args() log.Formatter.prefix_format = '{record.levelname:<8s} ' pid_file = options.pid_file system_config_directory, msrp.configuration_filename = os.path.split(options.config_file) if system_config_directory != "": msrp.system_config_directory = system_config_directory process.system_config_directory = msrp.system_config_directory try: process.runtime_directory = msrp.runtime_directory except ProcessError, e: log.critical('Cannot start %s: %s' % (fullname, e)) sys.exit(1) if options.fork: try: process.daemonize(pid_file) except ProcessError, e: log.critical('Cannot start %s: %s' % (fullname, e)) sys.exit(1) log.use_syslog(name) log.info('Starting %s %s' % (fullname, msrp.__version__)) from msrp.relay import Relay, RelayConfig log.level.current = RelayConfig.log_level try: if not options.fork: from application.debug.memory import * relay = Relay() except Exception, e: log.critical('Failed to create %s: %s' % (fullname, e)) if e.__class__ is not RuntimeError: log.exception() sys.exit(1) process.signals.add_handler(signal.SIGHUP, lambda signum, frame: relay.reload()) try: relay.run() except Exception, e: log.critical('Failed to run %s: %s' % (fullname, e)) if e.__class__ is not RuntimeError: log.exception() sys.exit(1) if not options.fork: #from application.debug.memory import * memory_dump()