Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- from xmpp.protocol import Message, Presence
- import config
- import libomegle
- import xmpp
- import xmppUtils
- from threading import Thread
- class OmegleClient:
- nick = None
- isPublic = True
- targetHandle = None
- muc = None
- omegleClient = None
- xmppClient = None
- connected = False
- thread = None
- def __init__(self, muc, nick='Stranger'):
- jid = xmpp.JID(config.get("id", "omegle"))
- user = jid.getNode()
- server = jid.getDomain()
- password = config.get("password")
- self.nick = nick
- self.muc = muc
- self.xmppClient = xmpp.Client(server, debug=[]);
- connResult = self.xmppClient.connect()
- if not connResult: print "Error connecting to server: " + server
- connResult = self.xmppClient.auth(user, password, nick)
- if not connResult: print "Error authenticating user: " + user
- self.xmppClient.sendInitPresence()
- self.xmppClient.RegisterHandler('message', self.xmppMessageHandler)
- self.xmppClient.RegisterHandler('presence', self.xmppPresenceHandler)
- self.omegleClient = libomegle.Omegle()
- self.omegleClient.registerHook('join', self.omegleJoin)
- self.omegleClient.registerHook('leave', self.omegleLeave)
- self.omegleClient.registerHook('message', self.omegleMessage)
- self.omegleClient.registerHook('captchaRequired', self.omegleCaptchaRequired)
- self.omegleClient.registerHook('captchaRejected', self.omegleCaptchaRejected)
- self.thread = Thread(target=self.loop)
- def start(self, isPublic=True):
- self.isPublic = isPublic
- if self.omegleClient.isConnected():
- self.sendToXMPP('Why are you starting me again?')
- return
- self.omegleClient.start()
- self.thread.start()
- def loop(self):
- while self.xmppClient.Process(0.1):
- self.omegleClient.step()
- if self.omegleClient.isConnected():
- self.omegleClient.disconnect()
- self.xmppClient.disconnect()
- def setScope(self, isPublic):
- self.isPublic = isPublic
- def stop(self):
- if self.omegleClient.isConnected():
- self.sendToOmegle('**We have stopped you for one reason or another.')
- self.omegleClient.disconnect()
- self.xmppClient.sendPresence(typ='unavailable')
- self.connected = False
- def kick(self):
- self.sendToOmegle("** You have been kicked out of the groupchat, likely because you were an ass. Better luck next time.")
- self.stop()
- def sendCaptcha(self, captchaText):
- self.omegleClient.confirmCaptcha(unicode(captchaText).encode('utf-8'))
- def sendToOmegle(self, msg):
- print '[o:' + self.nick + '] tx: ' + msg
- self.omegleClient.sendMessage(unicode(msg).encode('utf-8'))
- def sendToXMPP(self, msg):
- self.xmppClient.send(Message(self.muc, unicode(msg), 'groupchat'))
- def xmppMessageHandler(self, client, msg):
- nick = msg.getFrom().getResource()
- if not msg or not msg.getBody() or not nick or nick == self.nick:
- return
- text = msg.getBody().strip()
- if text[:1] == '.' or text[:1] == '!':
- return
- if self.omegleClient.isConnected():
- s = u'<' + nick + u'> ' + unicode(text);
- self.sendToOmegle(s)
- def xmppPresenceHandler(self, client, pres):
- nick = pres.getFrom().getResource()
- if pres.getType() == 'unavailable':
- if nick == self.nick:
- self.kick()
- def omegleJoin(self, msg):
- presence = Presence(to=self.muc + '/' + self.nick)
- presence.setTag('x', namespace=xmpp.NS_MUC).setTagData('password', '')
- presence.getTag('x').addChild('history', {'maxchars': '0', 'maxstanzas': '0'});
- self.connected = True
- self.sendToOmegle('Welcome to the friendly Testnova room. Do you agree to be an upstanding participant in the chat? If so, please enter \"I agree\".')
- if 'agree' in msg:
- self.xmppClient.send(presence)
- print '[o:' + self.nick + '] joined'
- self.sendToXMPP('. ** A stranger has taken the bait, and the filter works!')
- # self.sendToOmegle("**PLEASE READ** Welcome to the Testnova groupchat! We welcome you, and thank you for your generous contribution to a major coding project! We only ask that you do as we say, and it's fine if you question our motives. If you have any questions, feel free to ask Wheatley here, or to go to supernova.speeqe.com (our mother room) and ask for Skullz. RIGHT NOW WE ARE LOOKING FOR PEOPLE WITH EXPERIENCE WITH PYTHON. If you feel like you can help, then speak up and ask! Thank you again, and welcome! Cheers! :)")
- def omegleMessage(self, msg):
- print '[o:' + self.nick + '] rx: ' + msg
- if "asl" in msg:
- self.sendToOmegle('Testing, testing, 123.')
- if "fuck" in msg:
- self.sendToOmegle('That was nasty, but thanks for helping.')
- else:
- self.sendToXMPP(msg)
- def omegleLeave(self):
- self.sendToXMPP('.** The stranger ran away!')
- self.sendToOmegle('**We are sorry you didn\'t enjoy your stay, and wish you good luck in your future online endeavors!')
- print '[o:' + self.nick + '] left'
- self.stop()
- def omegleCaptchaRequired(self, url):
- if not self.connected:
- presence = Presence(to=self.muc + '/' + self.nick)
- presence.setTag('x', namespace=xmpp.NS_MUC).setTagData('password', '')
- presence.getTag('x').addChild('history', {'maxchars': '0', 'maxstanzas': '0'});
- self.xmppClient.send(presence)
- print '[o:' + self.nick + '] captcha: ' + url
- self.sendToXMPP('.* CAPTCHA: ' + url)
- def omegleCaptchaRejected(self):
- print '[o:' + self.nick + '] captcha rejected'
- self.sendToXMPP('CAPTCHA rejected, disconnecting...')
- self.stop()
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement