|
|
b49908b |
--- a/libpurple/purple-url-handler 2016-01-13 09:45:03.988031246 +0100
|
|
|
b49908b |
+++ b/libpurple/purple-url-handler 2016-01-11 10:47:49.000000000 +0100
|
|
|
b49908b |
@@ -1,19 +1,22 @@
|
|
|
b49908b |
#!/usr/bin/env python
|
|
|
b49908b |
-
|
|
|
b49908b |
+from __future__ import print_function
|
|
|
b49908b |
import dbus
|
|
|
b49908b |
import re
|
|
|
b49908b |
import sys
|
|
|
b49908b |
import time
|
|
|
b49908b |
-import urllib
|
|
|
b49908b |
+try:
|
|
|
b49908b |
+ from urllib.parse import unquote_plus
|
|
|
b49908b |
+except ImportError:
|
|
|
b49908b |
+ from urllib import unquote_plus
|
|
|
b49908b |
|
|
|
b49908b |
bus = dbus.SessionBus()
|
|
|
b49908b |
obj = None
|
|
|
b49908b |
try:
|
|
|
b49908b |
obj = bus.get_object("im.pidgin.purple.PurpleService",
|
|
|
b49908b |
"/im/pidgin/purple/PurpleObject")
|
|
|
b49908b |
-except dbus.DBusException, e:
|
|
|
b49908b |
+except dbus.DBusException as e:
|
|
|
b49908b |
if e._dbus_error_name == "org.freedesktop.DBus.Error.ServiceUnknown":
|
|
|
b49908b |
- print "Error: no libpurple-powered client is running. Try starting Pidgin or Finch."
|
|
|
b49908b |
+ print("Error: no libpurple-powered client is running. Try starting Pidgin or Finch.")
|
|
|
b49908b |
sys.exit(1)
|
|
|
b49908b |
purple = dbus.Interface(obj, "im.pidgin.purple.PurpleInterface")
|
|
|
b49908b |
|
|
|
b49908b |
@@ -59,7 +62,7 @@
|
|
|
b49908b |
return value
|
|
|
b49908b |
|
|
|
b49908b |
def account_not_found():
|
|
|
b49908b |
- print "No matching account found."
|
|
|
b49908b |
+ print("No matching account found.")
|
|
|
b49908b |
sys.exit(1)
|
|
|
b49908b |
|
|
|
b49908b |
def bring_account_online(account):
|
|
|
b49908b |
@@ -122,16 +125,16 @@
|
|
|
b49908b |
protocol = "prpl-aim"
|
|
|
b49908b |
match = re.match(r"^aim:([^?]*)(\?(.*))", uri)
|
|
|
b49908b |
if not match:
|
|
|
b49908b |
- print "Invalid aim URI: %s" % uri
|
|
|
b49908b |
+ print("Invalid aim URI: %s" % uri)
|
|
|
b49908b |
return
|
|
|
b49908b |
|
|
|
b49908b |
- command = urllib.unquote_plus(match.group(1))
|
|
|
b49908b |
+ command = unquote_plus(match.group(1))
|
|
|
b49908b |
paramstring = match.group(3)
|
|
|
b49908b |
params = {}
|
|
|
b49908b |
if paramstring:
|
|
|
b49908b |
for param in paramstring.split("&"):
|
|
|
b49908b |
key, value = extendlist(param.split("=", 1), 2, "")
|
|
|
b49908b |
- params[key] = urllib.unquote_plus(value)
|
|
|
b49908b |
+ params[key] = unquote_plus(value)
|
|
|
b49908b |
accountname = params.get("account", "")
|
|
|
b49908b |
screenname = params.get("screenname", "")
|
|
|
b49908b |
|
|
|
b49908b |
@@ -148,10 +151,10 @@
|
|
|
b49908b |
protocol = "prpl-gg"
|
|
|
b49908b |
match = re.match(r"^gg:(.*)", uri)
|
|
|
b49908b |
if not match:
|
|
|
b49908b |
- print "Invalid gg URI: %s" % uri
|
|
|
b49908b |
+ print("Invalid gg URI: %s" % uri)
|
|
|
b49908b |
return
|
|
|
b49908b |
|
|
|
b49908b |
- screenname = urllib.unquote_plus(match.group(1))
|
|
|
b49908b |
+ screenname = unquote_plus(match.group(1))
|
|
|
b49908b |
account = findaccount(protocol)
|
|
|
b49908b |
goim(account, screenname)
|
|
|
b49908b |
|
|
|
b49908b |
@@ -159,16 +162,16 @@
|
|
|
b49908b |
protocol = "prpl-icq"
|
|
|
b49908b |
match = re.match(r"^icq:([^?]*)(\?(.*))", uri)
|
|
|
b49908b |
if not match:
|
|
|
b49908b |
- print "Invalid icq URI: %s" % uri
|
|
|
b49908b |
+ print("Invalid icq URI: %s" % uri)
|
|
|
b49908b |
return
|
|
|
b49908b |
|
|
|
b49908b |
- command = urllib.unquote_plus(match.group(1))
|
|
|
b49908b |
+ command = unquote_plus(match.group(1))
|
|
|
b49908b |
paramstring = match.group(3)
|
|
|
b49908b |
params = {}
|
|
|
b49908b |
if paramstring:
|
|
|
b49908b |
for param in paramstring.split("&"):
|
|
|
b49908b |
key, value = extendlist(param.split("=", 1), 2, "")
|
|
|
b49908b |
- params[key] = urllib.unquote_plus(value)
|
|
|
b49908b |
+ params[key] = unquote_plus(value)
|
|
|
b49908b |
accountname = params.get("account", "")
|
|
|
b49908b |
screenname = params.get("screenname", "")
|
|
|
b49908b |
|
|
|
b49908b |
@@ -185,10 +188,10 @@
|
|
|
b49908b |
protocol = "prpl-irc"
|
|
|
b49908b |
match = re.match(r"^irc:(//([^/]*))?/?([^?]*)(\?(.*))?", uri)
|
|
|
b49908b |
if not match:
|
|
|
b49908b |
- print "Invalid irc URI: %s" % uri
|
|
|
b49908b |
+ print("Invalid irc URI: %s" % uri)
|
|
|
b49908b |
return
|
|
|
b49908b |
|
|
|
b49908b |
- server = urllib.unquote_plus(match.group(2) or "")
|
|
|
b49908b |
+ server = unquote_plus(match.group(2) or "")
|
|
|
b49908b |
target = match.group(3) or ""
|
|
|
b49908b |
query = match.group(5) or ""
|
|
|
b49908b |
|
|
|
b49908b |
@@ -197,14 +200,14 @@
|
|
|
b49908b |
for modifier in target.split(",")[1:]:
|
|
|
b49908b |
modifiers[modifier] = True
|
|
|
b49908b |
|
|
|
b49908b |
- isnick = modifiers.has_key("isnick")
|
|
|
b49908b |
+ isnick = True if "isnick" in modifiers else False
|
|
|
b49908b |
|
|
|
b49908b |
paramstring = match.group(5)
|
|
|
b49908b |
params = {}
|
|
|
b49908b |
if paramstring:
|
|
|
b49908b |
for param in paramstring.split("&"):
|
|
|
b49908b |
key, value = extendlist(param.split("=", 1), 2, "")
|
|
|
b49908b |
- params[key] = urllib.unquote_plus(value)
|
|
|
b49908b |
+ params[key] = unquote_plus(value)
|
|
|
b49908b |
|
|
|
b49908b |
def correct_server(account):
|
|
|
b49908b |
username = cpurple.PurpleAccountGetUsername(account)
|
|
|
b49908b |
@@ -214,9 +217,9 @@
|
|
|
b49908b |
|
|
|
b49908b |
if (target != ""):
|
|
|
b49908b |
if (isnick):
|
|
|
b49908b |
- goim(account, urllib.unquote_plus(target.split(",")[0]), params.get("msg"))
|
|
|
b49908b |
+ goim(account, unquote_plus(target.split(",")[0]), params.get("msg"))
|
|
|
b49908b |
else:
|
|
|
b49908b |
- channel = urllib.unquote_plus(target.split(",")[0])
|
|
|
b49908b |
+ channel = unquote_plus(target.split(",")[0])
|
|
|
b49908b |
if channel[0] != "#":
|
|
|
b49908b |
channel = "#" + channel
|
|
|
b49908b |
gochat(account, {"server": server, "channel": channel, "password": params.get("key", "")}, params.get("msg"))
|
|
|
b49908b |
@@ -225,16 +228,16 @@
|
|
|
b49908b |
protocol = "prpl-msn"
|
|
|
b49908b |
match = re.match(r"^msnim:([^?]*)(\?(.*))", uri)
|
|
|
b49908b |
if not match:
|
|
|
b49908b |
- print "Invalid msnim URI: %s" % uri
|
|
|
b49908b |
+ print("Invalid msnim URI: %s" % uri)
|
|
|
b49908b |
return
|
|
|
b49908b |
|
|
|
b49908b |
- command = urllib.unquote_plus(match.group(1))
|
|
|
b49908b |
+ command = unquote_plus(match.group(1))
|
|
|
b49908b |
paramstring = match.group(3)
|
|
|
b49908b |
params = {}
|
|
|
b49908b |
if paramstring:
|
|
|
b49908b |
for param in paramstring.split("&"):
|
|
|
b49908b |
key, value = extendlist(param.split("=", 1), 2, "")
|
|
|
b49908b |
- params[key] = urllib.unquote_plus(value)
|
|
|
b49908b |
+ params[key] = unquote_plus(value)
|
|
|
b49908b |
screenname = params.get("contact", "")
|
|
|
b49908b |
|
|
|
b49908b |
account = findaccount(protocol)
|
|
|
b49908b |
@@ -244,19 +247,14 @@
|
|
|
b49908b |
elif command.lower() == "add":
|
|
|
b49908b |
addbuddy(account, screenname)
|
|
|
b49908b |
|
|
|
b49908b |
-def myim(uri):
|
|
|
b49908b |
- protocol = "prpl-myspace"
|
|
|
b49908b |
- print "TODO: send uri: ", uri
|
|
|
b49908b |
- assert False, "Not implemented"
|
|
|
b49908b |
-
|
|
|
b49908b |
def sip(uri):
|
|
|
b49908b |
protocol = "prpl-simple"
|
|
|
b49908b |
match = re.match(r"^sip:(.*)", uri)
|
|
|
b49908b |
if not match:
|
|
|
b49908b |
- print "Invalid sip URI: %s" % uri
|
|
|
b49908b |
+ print("Invalid sip URI: %s" % uri)
|
|
|
b49908b |
return
|
|
|
b49908b |
|
|
|
b49908b |
- screenname = urllib.unquote_plus(match.group(1))
|
|
|
b49908b |
+ screenname = unquote_plus(match.group(1))
|
|
|
b49908b |
account = findaccount(protocol)
|
|
|
b49908b |
goim(account, screenname)
|
|
|
b49908b |
|
|
|
b49908b |
@@ -264,20 +262,20 @@
|
|
|
b49908b |
protocol = "prpl-jabber"
|
|
|
b49908b |
match = re.match(r"^xmpp:(//([^/?#]*)/?)?([^?#]*)(\?([^;#]*)(;([^#]*))?)?(#(.*))?", uri)
|
|
|
b49908b |
if not match:
|
|
|
b49908b |
- print "Invalid xmpp URI: %s" % uri
|
|
|
b49908b |
+ print("Invalid xmpp URI: %s" % uri)
|
|
|
b49908b |
return
|
|
|
b49908b |
|
|
|
b49908b |
tmp = match.group(2)
|
|
|
b49908b |
if (tmp):
|
|
|
b49908b |
- accountname = urllib.unquote_plus(tmp)
|
|
|
b49908b |
+ accountname = unquote_plus(tmp)
|
|
|
b49908b |
else:
|
|
|
b49908b |
accountname = ""
|
|
|
b49908b |
|
|
|
b49908b |
- screenname = urllib.unquote_plus(match.group(3))
|
|
|
b49908b |
+ screenname = unquote_plus(match.group(3))
|
|
|
b49908b |
|
|
|
b49908b |
tmp = match.group(5)
|
|
|
b49908b |
if (tmp):
|
|
|
b49908b |
- command = urllib.unquote_plus(tmp)
|
|
|
b49908b |
+ command = unquote_plus(tmp)
|
|
|
b49908b |
else:
|
|
|
b49908b |
command = ""
|
|
|
b49908b |
|
|
|
b49908b |
@@ -286,7 +284,7 @@
|
|
|
b49908b |
if paramstring:
|
|
|
b49908b |
for param in paramstring.split(";"):
|
|
|
b49908b |
key, value = extendlist(param.split("=", 1), 2, "")
|
|
|
b49908b |
- params[key] = urllib.unquote_plus(value)
|
|
|
b49908b |
+ params[key] = unquote_plus(value)
|
|
|
b49908b |
|
|
|
b49908b |
account = findaccount(protocol, accountname)
|
|
|
b49908b |
|
|
|
b49908b |
@@ -304,16 +302,16 @@
|
|
|
b49908b |
protocol = "prpl-jabber"
|
|
|
b49908b |
match = re.match(r"^gtalk:([^?]*)(\?(.*))", uri)
|
|
|
b49908b |
if not match:
|
|
|
b49908b |
- print "Invalid gtalk URI: %s" % uri
|
|
|
b49908b |
+ print("Invalid gtalk URI: %s" % uri)
|
|
|
b49908b |
return
|
|
|
b49908b |
|
|
|
b49908b |
- command = urllib.unquote_plus(match.group(1))
|
|
|
b49908b |
+ command = unquote_plus(match.group(1))
|
|
|
b49908b |
paramstring = match.group(3)
|
|
|
b49908b |
params = {}
|
|
|
b49908b |
if paramstring:
|
|
|
b49908b |
for param in paramstring.split("&"):
|
|
|
b49908b |
key, value = extendlist(param.split("=", 1), 2, "")
|
|
|
b49908b |
- params[key] = urllib.unquote_plus(value)
|
|
|
b49908b |
+ params[key] = unquote_plus(value)
|
|
|
b49908b |
accountname = params.get("from_jid", "")
|
|
|
b49908b |
jid = params.get("jid", "")
|
|
|
b49908b |
|
|
|
b49908b |
@@ -329,17 +327,17 @@
|
|
|
b49908b |
protocol = "prpl-yahoo"
|
|
|
b49908b |
match = re.match(r"^ymsgr:([^?]*)(\?([^&]*)(&(.*))?)", uri)
|
|
|
b49908b |
if not match:
|
|
|
b49908b |
- print "Invalid ymsgr URI: %s" % uri
|
|
|
b49908b |
+ print("Invalid ymsgr URI: %s" % uri)
|
|
|
b49908b |
return
|
|
|
b49908b |
|
|
|
b49908b |
- command = urllib.unquote_plus(match.group(1))
|
|
|
b49908b |
- screenname = urllib.unquote_plus(match.group(3))
|
|
|
b49908b |
+ command = unquote_plus(match.group(1))
|
|
|
b49908b |
+ screenname = unquote_plus(match.group(3))
|
|
|
b49908b |
paramstring = match.group(5)
|
|
|
b49908b |
params = {}
|
|
|
b49908b |
if paramstring:
|
|
|
b49908b |
for param in paramstring.split("&"):
|
|
|
b49908b |
key, value = extendlist(param.split("=", 1), 2, "")
|
|
|
b49908b |
- params[key] = urllib.unquote_plus(value)
|
|
|
b49908b |
+ params[key] = unquote_plus(value)
|
|
|
b49908b |
|
|
|
b49908b |
account = findaccount(protocol)
|
|
|
b49908b |
|
|
|
b49908b |
@@ -353,8 +351,8 @@
|
|
|
b49908b |
|
|
|
b49908b |
def main(argv=sys.argv):
|
|
|
b49908b |
if len(argv) != 2 or argv[1] == "--help" or argv[1] == "-h":
|
|
|
b49908b |
- print "Usage: %s URI" % argv[0]
|
|
|
b49908b |
- print "Example: %s \"xmpp:romeo@montague.net?message\"" % argv[0]
|
|
|
b49908b |
+ print("Usage: %s URI" % argv[0])
|
|
|
b49908b |
+ print("Example: %s \"xmpp:romeo@montague.net?message\"" % argv[0])
|
|
|
b49908b |
|
|
|
b49908b |
if len(argv) != 2:
|
|
|
b49908b |
sys.exit(1)
|
|
|
b49908b |
@@ -375,8 +373,6 @@
|
|
|
b49908b |
irc(uri)
|
|
|
b49908b |
elif type == "msnim":
|
|
|
b49908b |
msnim(uri)
|
|
|
b49908b |
- elif type == "myim":
|
|
|
b49908b |
- myim(uri)
|
|
|
b49908b |
elif type == "sip":
|
|
|
b49908b |
sip(uri)
|
|
|
b49908b |
elif type == "xmpp":
|
|
|
b49908b |
@@ -386,9 +382,9 @@
|
|
|
b49908b |
elif type == "ymsgr":
|
|
|
b49908b |
ymsgr(uri)
|
|
|
b49908b |
else:
|
|
|
b49908b |
- print "Unknown protocol: %s" % type
|
|
|
b49908b |
- except dbus.DBusException, e:
|
|
|
b49908b |
- print "Error: %s" % (e.message)
|
|
|
b49908b |
+ print("Unknown protocol: %s" % type)
|
|
|
b49908b |
+ except dbus.DBusException as e:
|
|
|
b49908b |
+ print("Error: %s" % e.message)
|
|
|
b49908b |
sys.exit(1)
|
|
|
b49908b |
|
|
|
b49908b |
if __name__ == "__main__":
|