pidgin/pidgin

msn: Workaround servers sending nearly-empty Allow list.
release-2.x.y
2014-11-18, Elliott Sales de Andrade
9afe309dc92a
msn: Workaround servers sending nearly-empty Allow list.

If buddy is on neither Allow nor Block list, then add to Allow list.
At some point, we should figure out if the NetworkInfo really is used
for this sort of thing.
#!/usr/bin/env python
# This is a simple purple notification server.
# It shows notifications when your buddy signs on or you get an IM message.
#
# This script requires Python 2.4 and PyGTK bindings
#
# Note that all function names are resolved dynamically, no
# purple-specific library is needed.
import dbus
import dbus.glib
import dbus.decorators
import gobject
import os
def ensureimconversation(conversation, account, name):
if conversation != 0:
return conversation
else:
# 1 = PURPLE_CONV_IM
return purple.PurpleConversationNew(1, account, name)
def receivedimmsg(account, name, message, conversation, flags):
buddy = purple.PurpleFindBuddy(account, name)
if buddy != 0:
alias = purple.PurpleBuddyGetAlias(buddy)
else:
alias = name
text = "%s says %s" % (alias, message)
code = os.spawnlp(os.P_WAIT, "xmessage", "xmessage", "-buttons",
"'So what?','Show me',Close,Abuse", text)
if code == 101: # so what?
pass
else:
conversation = ensureimconversation(conversation, account, name)
if code == 102: # show me
window = purple.PurpleConversationGetWindow(conversation)
purple.PurpleConvWindowRaise(window)
if code == 103: # close
purple.PurpleConversationDestroy(conversation)
if code == 104: # abuse
im = purple.PurpleConversationGetImData(conversation)
purple.PurpleConvImSend(im, "Go away you f...")
def buddysignedon(buddyid):
alias = purple.PurpleBuddyGetAlias(buddyid)
text = "%s is online" % alias
code = os.spawnlp(os.P_WAIT, "xmessage", "xmessage", "-buttons",
"'So what?','Let's talk'", text)
if code == 101: # so what?
pass
if code == 102: # talk
name = purple.PurpleBuddyGetName(buddyid)
account = purple.PurpleBuddyGetAccount(buddyid)
purple.PurpleConversationNew(1, account, name)
bus = dbus.SessionBus()
obj = bus.get_object("im.pidgin.purple.PurpleService", "/im/pidgin/purple/PurpleObject")
purple = dbus.Interface(obj, "im.pidgin.purple.PurpleInterface")
bus.add_signal_receiver(receivedimmsg,
dbus_interface = "im.pidgin.purple.PurpleInterface",
signal_name = "ReceivedImMsg")
bus.add_signal_receiver(buddysignedon,
dbus_interface = "im.pidgin.purple.PurpleInterface",
signal_name = "BuddySignedOn")
print "This is a simple purple notification server."
print "It shows notifications when your buddy signs on or you get an IM message."
loop = gobject.MainLoop()
loop.run()