aboutsummaryrefslogtreecommitdiffstats
path: root/skype/skyped.py
diff options
context:
space:
mode:
Diffstat (limited to 'skype/skyped.py')
-rw-r--r--skype/skyped.py64
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()