#!/usr/bin/python"""%(name)s, an IRC<->dAmn proxyVersion %(version)s<http://blog.doofsmack.com/frabjous/>Usage:%(progname)s\t [--help] [-i 0.0.0.0] [-p 6667]\t\t [-d [start|stop|restart]]\t\t [--logfile /tmp/frabjous.log]\t\t [--pidfile frabjous.pid]Arguments: --help: Show this message and quit -i or --ip: IP to bind to when listening for incoming connections. Use 127.0.0.1 to only listen for connections from localhost. Defaults to 0.0.0.0 (listen on all interfaces) -p or --port: Port to bind to when listening for incoming connections. Defaults to 6667 -d or --daemon: Start, stop, or restart as a daemon, depending on argument. If omitted, will not run as a daemon. --logfile: Specifies where to log to in daemon mode. Defaults to /tmp/frabjous.log --pidfile: Specifies where to store the pid file in daemon mode. Defaults to frabjous.pid in the current directory.%(gplinfo)s%(name)s is (c) 2005 Kevin Wallace<kevin@doofsmack.com><http://doofsmack.com/>"""import sysimport errnoimport ircdimport getoptimport SocketServer, socketimport daemonizename = ircd.NAMEversion = ircd.VERSIONprogname = sys.argv[0]gplinfo = """%(name)s comes with ABSOLUTELY NO WARRANTY.This is free software, you are welcome to redistribute it under certaincontitions. See LICENSE.txt for details.""" % vars()__doc__ = __doc__ % vars()def usage(progname): print __doc__def main(argv): progname = argv[0] # set defaults ip = "" port = 6667 daemon_action = False stdoutfile = "/tmp/frabjous.log" pidfile = "frabjous.pid" # grab arguments try: (list, args) = getopt.getopt(argv[1:], "i:p:d:", ["help", "ip=", "port=", "daemon=", "logfile=", "pidfile="]) if list == [] and len(args) == 1 and args[0] in ("start", "stop", "restart"): daemon_action = args[0] except getopt.GetoptError: usage(progname) sys.exit(2) # parse arguments for (opt, value) in list: if opt == "--help": usage(progname) sys.exit() elif opt in ("-i", "--ip"): ip = value elif opt in ("-p", "--port"): port = int(value) elif opt in ("-d", "--daemon"): daemon_action = value elif opt == "--logfile": stdoutfile = value elif opt == "--pidfile": pidfile = value print "%s\n" % gplinfo % vars() if daemon_action: daemonize.startstop(daemon_action, stdout=stdoutfile, pidfile=pidfile) try: server = SocketServer.ThreadingTCPServer((ip, port), ircd.dAmnIRCDHandler) except socket.error, (err, description): if err == errno.EADDRINUSE: print "Unable to start server: %s\n(is another instance of %s running?)" % (description, name) sys.exit(2) else: raise e if ip == "": print "Listening for incoming connections on *:%s" % (port) else: print "Listening for incoming connections on %s:%s" % (ip, port) try: server.serve_forever() except KeyboardInterrupt: print "Caught ctrl-c, quitting."if __name__ == "__main__": main(sys.argv)