aboutsummaryrefslogtreecommitdiff
path: root/nixpkgs/nixos/tests/xmpp/xmpp-sendmessage.nix
blob: 2a075a0181340133ca26d480e3b01761e16c3a8e (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
{ writeScriptBin, python3, connectTo ? "localhost" }:
writeScriptBin "send-message" ''
  #!${(python3.withPackages (ps: [ ps.sleekxmpp ])).interpreter}
  # Based on the sleekxmpp send_client example, look there for more details:
  # https://github.com/fritzy/SleekXMPP/blob/develop/examples/send_client.py
  import sleekxmpp

  class SendMsgBot(sleekxmpp.ClientXMPP):
      """
      A basic SleekXMPP bot that will log in, send a message,
      and then log out.
      """
      def __init__(self, jid, password, recipient, message):
          sleekxmpp.ClientXMPP.__init__(self, jid, password)

          self.recipient = recipient
          self.msg = message

          self.add_event_handler("session_start", self.start, threaded=True)

      def start(self, event):
          self.send_presence()
          self.get_roster()

          self.send_message(mto=self.recipient,
                            mbody=self.msg,
                            mtype='chat')

          self.disconnect(wait=True)


  if __name__ == '__main__':
      xmpp = SendMsgBot("cthon98@example.com", "nothunter2", "azurediamond@example.com", "hey, if you type in your pw, it will show as stars")
      xmpp.register_plugin('xep_0030') # Service Discovery
      xmpp.register_plugin('xep_0199') # XMPP Ping

      # TODO: verify certificate
      # If you want to verify the SSL certificates offered by a server:
      # xmpp.ca_certs = "path/to/ca/cert"

      if xmpp.connect(('${connectTo}', 5222)):
          xmpp.process(block=True)
      else:
          print("Unable to connect.")
          sys.exit(1)
''