Advertisement
Guest User

mantabot code 17nov2014

a guest
Nov 17th, 2014
177
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
F# 3.93 KB | None | 0 0
  1. open System
  2. open System.IO
  3. open System.Net
  4. open System.Net.Sockets
  5. open System.Text.RegularExpressions
  6. open System.Net.Security
  7. open System.Security.Cryptography.X509Certificates
  8.  
  9. (* This bot cannot create or join some channels without registering; registration is also
  10.     required to join servers like idlechat which have daemon checkers.
  11.     Currently, SSL verification is bypassed.
  12. *)
  13. let test_toggle = 0
  14.  
  15. let server =
  16.     if test_toggle = 1 then "us.idlechat.net"
  17.     else "irc.geekshed.net"
  18. let port  = 6697
  19. let channel = "#batoto" //mantabot
  20. let nick = "mantabot"
  21. let username =
  22.     if server.Contains("idlechat") then "antaMay ayRay"
  23.     else "mantatanta"
  24. let password = "willSalykadi3?"
  25.  
  26. let mutable run = true
  27.  
  28. // establish and confirm a connection to the server
  29. let irc_client = new TcpClient()
  30. irc_client.Connect(server, port)
  31.  
  32. if (irc_client.Connected = false) then Console.WriteLine("Did not connect.")
  33. else Console.WriteLine("Connected to " + server)
  34.  
  35. // get the input and output streams in ssl
  36. //cheating verification
  37.  
  38. let validatecheat = RemoteCertificateValidationCallback(fun _ _ _ _ -> true)
  39. let selectioncheat = fun _ -> System.Security.Cryptography.X509Certificates.X509Certificate()
  40. let certificatecheat = LocalCertificateSelectionCallback( fun _ _ _ _ -> selectioncheat)
  41.    
  42. let irc_writer =
  43.     let stream = irc_client.GetStream()
  44.     let ssl = new SslStream(stream, true, validatecheat, certificatecheat)
  45.     ssl.AuthenticateAsClient(server)
  46.     ssl
  47.  
  48. //non ssl version, for testing
  49. (*
  50. let irc_writer =
  51.     let stream = irc_client.GetStream()
  52.     let write = new StreamWriter( stream )
  53.     write
  54.     *)
  55.  
  56. // identify with the server and join a room
  57.  
  58. let stream = new StreamReader(irc_writer, true)
  59.  
  60. let writer = new StreamWriter(irc_writer)
  61.  
  62. let send (data: string) =
  63.     writer.WriteLine(data + "\n\r")
  64.     writer.Flush()
  65.     Console.WriteLine("\n<{ " + data)
  66.  
  67.  
  68. Console.Write("\n}> "); Console.Write(stream.Read())
  69. send ("PASS " + password)
  70. Console.Write("\n}> "); Console.Write(stream.Read())
  71. send ("NICK " + nick)
  72. Console.Write("\n}> "); Console.Write(stream.Read())
  73. if server.Contains("idlechat") then
  74.     send ("USER " + nick + " " + nick + " " + nick + " :themantarays")// + username) //mantatanta
  75. else
  76.     send ("USER " + nick + " " + nick + " " + nick + " :mantatanta")
  77. Console.Write("\n}> "); Console.Write(stream.Read())
  78. send ("JOIN " + channel)
  79. Console.Write("\n}> "); Console.Write(stream.Read())
  80. (*
  81. send ("  :Hello")
  82. Console.Write("\n}> "); Console.Write(stream.Read())
  83. *)
  84.  
  85. // some flow control stuff
  86. (*
  87. let irc_privmsg ( writer : StreamWriter ) ( phrase : string ) =
  88.     writer.WriteLine( "PRIVMSG " + channel + phrase )
  89.  
  90. let irc_get_msg ( line : string )=
  91.     line.Substring( line.Substring(1).IndexOf(":") + 2)
  92.  *)
  93. // main loop operation; homeostasis
  94. while ((run = true) && (stream.EndOfStream = false)) do
  95.     let line = stream.ReadLine()
  96.     Console.Write("\n}> " + line)
  97.  
  98.     if (line.Contains("PING")) then
  99.         send ("PONG " + server)
  100.  
  101.     if (line.Contains("IP address instead")) then
  102.         if (server.Contains("idlechat")) then
  103.             send ("ID " + password)
  104.             send ("PRIVMSG NickServ ID " + password)
  105.         else
  106.             send ("PASS " + password)//("IDENTIFY " + password)
  107.             send ("PRIVMSG NickServ IDENTIFY " + password)
  108.             //send ("JOIN " + channel)
  109.  
  110.     (*if (line.Contains("PRIVMSG")) then
  111.         if (line.Contains("version") || line.Contains("VERSION")) then
  112.             send ("PRIVMSG " + nick + " on " + Environment.Version.ToString())
  113.         if (line.Contains("date") || line.Contains("DATE")) then
  114.             send (System.DateTime.Now.ToString())
  115.         else Console.Write(line)
  116.         send ("PONG " + server)*)
  117.  
  118.     //CHANNEL COMMANDS MATCHING
  119.     if (line.Contains("!!exit")) then
  120.         run <- false
  121.         send ("QUIT :Bye~")
  122.         stream.Dispose()
  123.         irc_client.Close()
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement