Advertisement
Guest User

Untitled

a guest
Aug 19th, 2017
107
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 5.30 KB | None | 0 0
  1. from xmpp.protocol import Message, Presence
  2. import config
  3. import libomegle
  4. import xmpp
  5. import xmppUtils
  6. from threading import Thread
  7.  
  8. class OmegleClient:
  9.     nick = None
  10.     isPublic = True
  11.     targetHandle = None
  12.     muc = None
  13.     omegleClient = None
  14.     xmppClient = None
  15.     connected = False
  16.     thread = None
  17.  
  18.     def __init__(self, muc, nick='Stranger'):
  19.         jid = xmpp.JID(config.get("id", "omegle"))
  20.         user = jid.getNode()
  21.         server = jid.getDomain()
  22.         password = config.get("password")
  23.         self.nick = nick
  24.         self.muc = muc
  25.         self.xmppClient = xmpp.Client(server, debug=[]);
  26.         connResult = self.xmppClient.connect()
  27.         if not connResult: print "Error connecting to server: " + server
  28.         connResult = self.xmppClient.auth(user, password, nick)
  29.         if not connResult: print "Error authenticating user: " + user
  30.  
  31.         self.xmppClient.sendInitPresence()
  32.         self.xmppClient.RegisterHandler('message', self.xmppMessageHandler)
  33.         self.xmppClient.RegisterHandler('presence', self.xmppPresenceHandler)
  34.  
  35.         self.omegleClient = libomegle.Omegle()
  36.         self.omegleClient.registerHook('join', self.omegleJoin)
  37.         self.omegleClient.registerHook('leave', self.omegleLeave)
  38.         self.omegleClient.registerHook('message', self.omegleMessage)
  39.         self.omegleClient.registerHook('captchaRequired', self.omegleCaptchaRequired)
  40.         self.omegleClient.registerHook('captchaRejected', self.omegleCaptchaRejected)
  41.  
  42.         self.thread = Thread(target=self.loop)
  43.  
  44.     def start(self, isPublic=True):
  45.         self.isPublic = isPublic
  46.  
  47.         if self.omegleClient.isConnected():
  48.             self.sendToXMPP('Why are you starting me again?')
  49.             return
  50.  
  51.         self.omegleClient.start()
  52.  
  53.         self.thread.start()
  54.  
  55.     def loop(self):
  56.         while self.xmppClient.Process(0.1):
  57.             self.omegleClient.step()
  58.  
  59.         if self.omegleClient.isConnected():
  60.             self.omegleClient.disconnect()
  61.         self.xmppClient.disconnect()
  62.  
  63.     def setScope(self, isPublic):
  64.         self.isPublic = isPublic
  65.  
  66.     def stop(self):
  67.         if self.omegleClient.isConnected():
  68.             self.sendToOmegle('**We have stopped you for one reason or another.')
  69.             self.omegleClient.disconnect()
  70.         self.xmppClient.sendPresence(typ='unavailable')
  71.         self.connected = False
  72.  
  73.     def kick(self):
  74.         self.sendToOmegle("** You have been kicked out of the groupchat, likely because you were an ass. Better luck next time.")
  75.         self.stop()
  76.  
  77.     def sendCaptcha(self, captchaText):
  78.         self.omegleClient.confirmCaptcha(unicode(captchaText).encode('utf-8'))
  79.  
  80.     def sendToOmegle(self, msg):
  81.         print '[o:' + self.nick + '] tx: ' + msg
  82.         self.omegleClient.sendMessage(unicode(msg).encode('utf-8'))
  83.  
  84.     def sendToXMPP(self, msg):
  85.         self.xmppClient.send(Message(self.muc, unicode(msg), 'groupchat'))
  86.  
  87.     def xmppMessageHandler(self, client, msg):
  88.         nick = msg.getFrom().getResource()
  89.         if not msg or not msg.getBody() or not nick or nick == self.nick:
  90.             return
  91.         text = msg.getBody().strip()
  92.         if text[:1] == '.' or text[:1] == '!':
  93.             return
  94.  
  95.  
  96.  
  97.         if self.omegleClient.isConnected():
  98.             s = u'<' + nick + u'> ' + unicode(text);
  99.             self.sendToOmegle(s)
  100.  
  101.     def xmppPresenceHandler(self, client, pres):
  102.         nick = pres.getFrom().getResource()
  103.         if pres.getType() == 'unavailable':
  104.             if nick == self.nick:
  105.                 self.kick()
  106.  
  107.     def omegleJoin(self, msg):
  108.         presence = Presence(to=self.muc + '/' + self.nick)
  109.         presence.setTag('x', namespace=xmpp.NS_MUC).setTagData('password', '')
  110.         presence.getTag('x').addChild('history', {'maxchars': '0', 'maxstanzas': '0'});
  111.         self.connected = True
  112.         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\".')
  113.         if 'agree' in msg:
  114.             self.xmppClient.send(presence)
  115.         print '[o:' + self.nick + '] joined'
  116.         self.sendToXMPP('. ** A stranger has taken the bait, and the filter works!')
  117. #       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! :)")
  118.  
  119.     def omegleMessage(self, msg):
  120.         print '[o:' + self.nick + '] rx: ' + msg
  121.         if "asl" in msg:
  122.             self.sendToOmegle('Testing, testing, 123.')
  123.         if "fuck" in msg:
  124.             self.sendToOmegle('That was nasty, but thanks for helping.')
  125.         else:
  126.             self.sendToXMPP(msg)
  127.  
  128.     def omegleLeave(self):
  129.         self.sendToXMPP('.** The stranger ran away!')
  130.         self.sendToOmegle('**We are sorry you  didn\'t enjoy your stay, and wish you good luck in your future online endeavors!')
  131.         print '[o:' + self.nick + '] left'
  132.         self.stop()
  133.  
  134.     def omegleCaptchaRequired(self, url):
  135.         if not self.connected:
  136.             presence = Presence(to=self.muc + '/' + self.nick)
  137.             presence.setTag('x', namespace=xmpp.NS_MUC).setTagData('password', '')
  138.             presence.getTag('x').addChild('history', {'maxchars': '0', 'maxstanzas': '0'});
  139.             self.xmppClient.send(presence)
  140.         print '[o:' + self.nick + '] captcha: ' + url
  141.         self.sendToXMPP('.* CAPTCHA: ' + url)
  142.  
  143.     def omegleCaptchaRejected(self):
  144.         print '[o:' + self.nick + '] captcha rejected'
  145.         self.sendToXMPP('CAPTCHA rejected, disconnecting...')
  146.         self.stop()
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement