Advertisement
Guest User

Untitled

a guest
Sep 9th, 2017
107
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 4.78 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.omegleClient.disconnect()
  69.         self.xmppClient.sendPresence(typ='unavailable')
  70.         self.connected = False
  71.  
  72.     def kick(self):
  73.         self.sendToOmegle("** You have been kicked out of the groupchat for some reason or another.")
  74.         self.stop()
  75.  
  76.     def sendCaptcha(self, captchaText):
  77.         self.omegleClient.confirmCaptcha(unicode(captchaText).encode('utf-8'))
  78.  
  79.     def sendToOmegle(self, msg):
  80.         print '[o:' + self.nick + '] tx: ' + msg
  81.         self.omegleClient.sendMessage(unicode(msg).encode('utf-8'))
  82.  
  83.     def sendToXMPP(self, msg):
  84.         self.xmppClient.send(Message(self.muc, unicode(msg), 'groupchat'))
  85.  
  86.     def xmppMessageHandler(self, client, msg):
  87.         nick = msg.getFrom().getResource()
  88.         if not msg or not msg.getBody() or not nick or nick == self.nick:
  89.             return
  90.         text = msg.getBody().strip()
  91.         if text[:1] == '.' or text[:1] == '!':
  92.             return
  93.  
  94.  
  95.  
  96.         if self.omegleClient.isConnected():
  97.             s = u'<' + nick + u'> ' + unicode(text);
  98.             self.sendToOmegle(s)
  99.  
  100.     def xmppPresenceHandler(self, client, pres):
  101.         nick = pres.getFrom().getResource()
  102.         if pres.getType() == 'unavailable':
  103.             if nick == self.nick:
  104.                 self.kick()
  105.  
  106.     def omegleJoin(self):
  107.         presence = Presence(to=self.muc + '/' + self.nick)
  108.         presence.setTag('x', namespace=xmpp.NS_MUC).setTagData('password', '')
  109.         presence.getTag('x').addChild('history', {'maxchars': '0', 'maxstanzas': '0'});
  110.         self.xmppClient.send(presence)
  111.         self.connected = True
  112.         print '[o:' + self.nick + '] joined'
  113.         self.sendToXMPP('. ** A stranger has taken the bait!')
  114.         self.sendToOmegle('**PLEASE READ** Welcome to the Supernova groupchat! We request that you be kind and respect the rules, which are as follows- No flooding, no disrespect, and no sexchat which means no ASL and no M/F. You do NOT need a name, you have one already. Ask for it if you\'re curious, and don\'t be shy to ask us other information regarding the chat. We are neither on Omegle nor affiliated with it. So go ahead, and have fun!')
  115.  
  116.     def omegleMessage(self, msg):
  117.         print '[o:' + self.nick + '] rx: ' + msg
  118.         if 'asl' in msg:
  119.             self.sendToOmegle('No, that was lazy. Try again.')
  120.         else:
  121.             self.sendToXMPP(msg)
  122.  
  123.     def omegleLeave(self):
  124.         self.sendToOmegle('**We\'re sorry you didn\'t enjoy your stay.')
  125.         self.sendToXMPP('.** The stranger ran away!')
  126.         print '[o:' + self.nick + '] left'
  127.         self.stop()
  128.  
  129.     def omegleCaptchaRequired(self, url):
  130.         if not self.connected:
  131.             presence = Presence(to=self.muc + '/' + self.nick)
  132.             presence.setTag('x', namespace=xmpp.NS_MUC).setTagData('password', '')
  133.             presence.getTag('x').addChild('history', {'maxchars': '0', 'maxstanzas': '0'});
  134.             self.xmppClient.send(presence)
  135.         print '[o:' + self.nick + '] captcha: ' + url
  136.         self.sendToXMPP('.* CAPTCHA: ' + url)
  137.  
  138.     def omegleCaptchaRejected(self):
  139.         print '[o:' + self.nick + '] captcha rejected'
  140.         self.sendToXMPP('CAPTCHA rejected, disconnecting...')
  141.         self.stop()
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement