diff options
Diffstat (limited to 'skype/skyped.py')
-rw-r--r-- | skype/skyped.py | 64 |
1 files changed, 60 insertions, 4 deletions
diff --git a/skype/skyped.py b/skype/skyped.py index 12767bdc..6cf542e0 100644 --- a/skype/skyped.py +++ b/skype/skyped.py @@ -24,9 +24,8 @@ # USA. # -# makepkg configuration -""" GPL """ import sys +import os import signal import locale import time @@ -35,7 +34,9 @@ import dbus.service import dbus.mainloop.glib import gobject import socket +import getopt +__version__ = "0.1.1" SKYPE_SERVICE = 'com.Skype.API' CLIENT_NAME = 'SkypeApiPythonShell' @@ -69,7 +70,9 @@ def listener(sock, *args): return True def dprint(msg): - if len(sys.argv) > 1 and sys.argv[1] == "-d": + global options + + if options.debug: print msg class SkypeApi(dbus.service.Object): @@ -113,11 +116,64 @@ class SkypeApi(dbus.service.Object): dprint('<< ' + reply) return reply +class Options: + def __init__(self): + self.daemon = True + self.debug = False + self.help = False + self.port = 2727 + self.version = False + + def usage(self, ret): + print """Usage: skyped [OPTION]... + +skyped is a daemon that acts as a tcp server on top of a Skype instance. + +Options: + -d --debug enable debug messages + -h --help this help + -n --nofork don't run as daemon in the background + -p --port set the tcp port (default: %d) + -v --version display version information""" % self.port + sys.exit(ret) + if __name__=='__main__': + options = Options() + try: + opts, args = getopt.getopt(sys.argv[1:], "dhnp:v", ["daemon", "help", "nofork", "port=", "version"]) + except getopt.GetoptError: + options.usage(1) + for opt, arg in opts: + if opt in ("-d", "--debug"): + options.debug = True + elif opt in ("-h", "--help"): + options.help = True + elif opt in ("-n", "--nofork"): + options.daemon = False + elif opt in ("-p", "--port"): + options.port = arg + elif opt in ("-v", "--version"): + options.version = True + if options.help: + options.usage(0) + elif options.version: + print "skyped %s" % __version__ + sys.exit(0) + elif options.daemon: + pid = os.fork() + if pid == 0: + nullin = file('/dev/null', 'r') + nullout = file('/dev/null', 'w') + os.dup2(nullin.fileno(), sys.stdin.fileno()) + os.dup2(nullout.fileno(), sys.stdout.fileno()) + os.dup2(nullout.fileno(), sys.stderr.fileno()) + else: + print 'skyped is started on port %s, pid: %d' % (options.port, pid) + sys.exit(0) dbus.mainloop.glib.DBusGMainLoop(set_as_default=True) signal.signal(signal.SIGINT, sig_handler) mainloop = gobject.MainLoop() - server('localhost', 2727) + server('localhost', options.port) while True: skype = SkypeApi() mainloop.run() |