Advertisement
Guest User

Untitled

a guest
Sep 30th, 2016
105
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 17.54 KB | None | 0 0
  1. 'CLASS SPECIFIC FUNCS
  2.  
  3. Public Function ConnectBot(ByVal threadID) As Object
  4. 'FUNCTION NAME:ConnectBot
  5. 'INPUT :Thread ID as object
  6. 'EXISTANCE :Main Engine
  7. 'OUTPUT :Anything
  8.  
  9. 'INSTANCE CLASS CHILD OBJECTS
  10. ChannelCommandClass.CmdPrefix = cmdPrefix
  11. MathChannelClass.cmdPrefix = cmdPrefix
  12. threadID = My.Settings.ThreadID
  13.  
  14. 'DECLARE SOCKET VARS
  15. Dim RecvString As String = String.Empty
  16. Dim NumBytes As Integer = 0
  17. Dim RecvBytes(255) As [Byte]
  18. Dim nickname, ident, hostname, command2, channel, message
  19. Dim regexp As String
  20. Dim mythreatstarted As Boolean = False
  21.  
  22. message = ""
  23. RecvString = ""
  24. tnSocket = New Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp)
  25. Dim x As System.Threading.Thread
  26. While True
  27. Try
  28. If (tnSocket.Connected = False) Then
  29. tnSocket = New Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp)
  30. tnSocket.Connect(currServer, PPort)
  31. If mythreatstarted = False Then
  32. x = New Thread(AddressOf PingServerWait)
  33. x.Start()
  34. mythreatstarted = True
  35. End If
  36. End If
  37.  
  38. Do
  39. If NumBytes < 256 Then
  40. NumBytes = tnSocket.Receive(RecvBytes, RecvBytes.Length, 0)
  41. RecvString = Trim(RecvString + Encoding.ASCII.GetString(RecvBytes, 0, NumBytes))
  42. TheTextBox.AppendText(RecvString)
  43. Else
  44. NumBytes = 0 'RESET
  45. End If
  46. Loop While NumBytes = 256
  47.  
  48. 'WE NOW HAVE RECV DATA
  49. While Not RecvString = "" Or ConnectedToServer = False
  50. 'DETERMINE IF WE HAVE TO QUIT OR EXIT BY SERVER OR CMD
  51. If Quit(RecvString, threadID) = True Then
  52. Exit While
  53. End If
  54.  
  55. 'SERVER PING
  56. If PingServer(RecvString) Then
  57. End If
  58.  
  59. 'SERVER SEND 004 WE NOW HAVE CONNECTED TO IT
  60. If InStr(RecvString, "004") > 0 And ConnectedToServer = False Then
  61. ConnectedToServer = True
  62. End If
  63.  
  64. 'DETERMINE IF CONNECTED
  65. If ConnectedToServer Then
  66. '#############################
  67. '#DETERMINE Notice #
  68. '#############################
  69.  
  70. regexp = "^\:(?<nickname>.+?)\!(?<ident>.+?)\@(?<hostname>.+?) NOTICE (?<user>.+) \:(?<message>.+)."
  71. Debug.Print(RecvString)
  72.  
  73. If (IrcInputCheck(RecvString, regexp)) Then
  74. Dim re As New Regex(regexp)
  75. Dim user As String
  76.  
  77. 'CHAT GRABBER
  78. mt = re.Match(RecvString)
  79. nickname = mt.Groups("nickname").ToString
  80. ident = mt.Groups("ident").ToString
  81. hostname = mt.Groups("hostname").ToString
  82. message = mt.Groups("message").ToString
  83. user = mt.Groups("user").ToString
  84.  
  85. 'THIS WILL NEED TO BE FIXED BETTER
  86. If InStr(nickname, "Serv") > 0 Or InStr(nickname, "serv") > 0 Then
  87. RecvString = ""
  88. Else
  89. 'SET PASS NOTICE
  90. If RegXPChecker("^set pass:(?<item>.+) (?<item2>.+)", message) Then
  91. Dim item, item2 As String
  92. re = New Regex("^set pass:(?<item>.+) (?<item2>.+)")
  93. mt = re.Match(message)
  94. item = mt.Groups("item").ToString
  95. item2 = mt.Groups("item2").ToString
  96. If item = "" Or item2 = "" Then
  97. SendInfo("NOTICE " & nickname & " :Invalid syntax " & item & "." & vbCrLf, SendBytes, tnSocket)
  98. Else
  99. item2 = GenerateHash(item2)
  100. Debug.Print(item2)
  101. item2 = QueryClean(item2)
  102. item = QueryClean(item)
  103. SQL = "UPDATE tblauth SET Password=""" & QueryClean(item2) & """ WHERE BotID=" & BotID & " AND UserName=""" & QueryClean(item) & """"
  104.  
  105. If UpdateRecords(SQL, "Set Pass Hash") = False Then
  106. Return False
  107. End If
  108. End If
  109. End If
  110.  
  111. 'AUTH NOTICE
  112. If RegXPChecker("^auth:(?<item>.+)", message) Then
  113. Dim item As String
  114. re = New Regex("^auth:(?<item>.+)")
  115. mt = re.Match(message)
  116. item = mt.Groups("item").ToString
  117.  
  118. SQL = "SELECT UserName FROM tblAuth Where BotID=" & BotID & " AND UserName=""" & QueryClean(nickname) & """"
  119. If CheckIfUserExists(nickname, SQL, BotID) Then
  120. item = GenerateHash(item)
  121. Debug.Print(item)
  122.  
  123. If AclClass.PasswordVerification(nickname, BotID, item) Then
  124. SendInfo("NOTICE " & nickname & " :Authenticated" & vbCrLf, SendBytes, tnSocket)
  125. nickname = QueryClean(nickname)
  126. SQL = "UPDATE tblauth SET IsAuthed=1 WHERE botID=" & BotID & " AND UserName=""" & QueryClean(nickname) & """"
  127. If UpdateRecords(SQL, "Auth") Then
  128.  
  129. End If
  130. Else
  131. SendInfo("NOTICE " & nickname & " :Invalid password" & vbCrLf, SendBytes, tnSocket)
  132. End If
  133. Else
  134. Return True
  135. End If
  136. End If
  137. End If
  138. 'Check if user is in user list
  139. RecvString = ""
  140. End If
  141.  
  142. '#####################################
  143. '#DETERMINE Private Message to bot #
  144. '#####################################
  145.  
  146. ':MrTwig!n=Jaw@unaffiliated/jawster NICK :Twig-Away
  147. ':ioudas!n=gc@cpe-74-75-90-244.maine.res.rr.com PRIVMSG assbott2 :hey
  148. regexp = "^\:(?<nickname>.+?)\!(?<ident>.+?)\@(?<hostname>.+?) PRIVMSG (?<user>.+?) \:(?<message>.+)."
  149.  
  150. If (IrcInputCheck(RecvString, regexp)) Then
  151. Dim re As New Regex(regexp)
  152. Dim user As String
  153.  
  154. mt = re.Match(RecvString)
  155. nickname = mt.Groups("nickname").ToString
  156. ident = mt.Groups("ident").ToString
  157. hostname = mt.Groups("hostname").ToString
  158. channel = "#" & mt.Groups("channel").ToString
  159. message = mt.Groups("message").ToString
  160. user = mt.Groups("user").ToString
  161.  
  162. If InStr(user, "#") > 0 Then
  163. Else
  164. If InStr(message, "PING") > 0 Or InStr(message, "TIME") > 0 Or InStr(message, "VERSION") > 0 Then
  165.  
  166. If CtcpReply(message, nickname) Then
  167. End If
  168. Else
  169. RecvString = "PING"
  170. End If
  171. End If
  172. End If
  173.  
  174. '#####################################
  175. '#DETERMINE Chan/Server Kick Commands#
  176. '#####################################
  177.  
  178. regexp = "^\:(?<nickname>.+?)\!(?<ident>.+?)\@(?<hostname>.+?) (?<command>.+?) #(?<channel>.+?) (?<userkicked>.+) \:(?<message>.+)."
  179. If IrcInputCheck(RecvString, regexp) Then
  180. Dim re As New Regex(regexp)
  181.  
  182. mt = re.Match(RecvString)
  183. nickname = mt.Groups("nickname").ToString
  184. ident = mt.Groups("ident").ToString
  185. hostname = mt.Groups("hostname").ToString
  186. command2 = mt.Groups("command").ToString
  187. channel = "#" & mt.Groups("channel").ToString
  188. message = mt.Groups("message").ToString
  189. Dim botProtectRejoin As New BotProtection
  190. Select Case command2
  191. Case "KICK"
  192. 'run kick code
  193.  
  194. If (botProtectRejoin.DetermineChannelJoin(BotID, channel)) Then
  195. SendInfo("JOIN " & channel, SendBytes, tnSocket)
  196. End If
  197. 'RecvString = ""
  198.  
  199. Case "MODE"
  200. 'wee
  201. 'Mode protection goes here
  202. If botProtectRejoin.DetectBanAgainstMe(channel, True, tnSocket, SendBytes, "greg") Then
  203.  
  204. End If
  205. End Select
  206.  
  207. If (AclClass.IsMaster(nickname, BotID)) Then
  208. Master = True
  209. Else
  210. Master = False
  211. End If
  212. End If
  213.  
  214. '####################################
  215. '#DETERMINE Chan/Server Commands #
  216. '####################################
  217.  
  218. regexp = "^\:(?<nickname>.+?)\!(?<ident>.+?)\@(?<hostname>.+?) (?<command>.+?) #(?<channel>.+?) \:(?<message>.+)."
  219. If (IrcInputCheck(RecvString, regexp)) Then
  220. Dim re As New Regex(regexp)
  221. mt = re.Match(RecvString)
  222. nickname = mt.Groups("nickname").ToString
  223. ident = mt.Groups("ident").ToString
  224. hostname = mt.Groups("hostname").ToString
  225. command2 = mt.Groups("command").ToString
  226. channel = "#" & mt.Groups("channel").ToString
  227. message = mt.Groups("message").ToString
  228.  
  229. If (AclClass.IsMaster(nickname, BotID)) Then
  230. Master = True
  231. Else
  232. Master = False
  233. End If
  234.  
  235. 'RECONNECT COMMAND.
  236.  
  237. If message = cmdPrefix & "reconnect" Then
  238. LocalFirstSW = True
  239. ChannelJoinSW = True
  240. tnSocket.Close()
  241. ConnectedToServer = False
  242. x.Abort()
  243. Exit While
  244. End If
  245.  
  246. 'If :gregc!n=gc@cpe-74-75-90-244.maine.res.rr.com QUIT :
  247. If command2 = "QUIT" Then
  248. If AclClass.IsUserAuthed(nickname, BotID, channel) Then
  249. SQL = "UPDATE tblauth SET IsAuthed=0 WHERE BotID=" & BotID & " AND UserName=""" & QueryClean(nickname) & """"
  250. If UpdateRecords(SQL, "QUIT AUTH") Then
  251. End If
  252. Else
  253. End If
  254. End If
  255.  
  256. 'DB INSERT OF RCVD DATA TO USER CHAT TABLE
  257. If Record Then
  258. If Not InStr(message, cmdPrefix & "last") > 0 Then
  259. If InStr(message, cmdPrefix & "seen") > 0 Then
  260. Else
  261. If RecordInsert(QueryClean(channel), QueryClean(nickname), QueryClean(message), BotID, ServerName) = False Then
  262. End If
  263. End If
  264. End If
  265. End If
  266.  
  267. 'Channel Text
  268. If (ChannelGrab(message, channel, nickname)) Then
  269. RecvString = ""
  270. message = ""
  271. Exit While
  272. End If
  273.  
  274. 'CTCP CHAN PING REPLY
  275. If CtcpReply(message, nickname) Then
  276. RecvString = ""
  277. Exit While
  278. End If
  279.  
  280.  
  281. If Len(message) > 0 Then
  282. RecvString = ""
  283. Exit While
  284. End If
  285. End If
  286. End If
  287.  
  288. '####################################
  289. '#On server channel commands #
  290. '####################################
  291.  
  292. 'PAST CHANNEL COMMANDS Server commands go here
  293. If RegXPChecker("\:.+ 433 \* .+ \:.+", RecvString) Then
  294. Dim newnick As String
  295. newnick = "testbot"
  296. SendInfo("NICK " & newnick & vbCrLf, SendBytes, tnSocket)
  297. End If
  298.  
  299. Debug.Print(RecvString)
  300.  
  301. If InStr(RecvString, "376") Then
  302. Debug.Print("")
  303. End If
  304.  
  305.  
  306. If RegXPChecker("\:.+ 376 .+", RecvString) Then
  307. InitialJoin()
  308. End If
  309. ':irc.mad-season.com 376 assbott2 :End of /MOTD command.
  310. 'ASSIGN SERVER NICK
  311. 'ALSO HANDLES CHANNEL JOINS
  312. SetNickOnServer(tnSocket)
  313.  
  314. RecvString = ""
  315.  
  316.  
  317. End While
  318.  
  319. Catch myerror As Exception
  320. 'NEED A BETTER METHOD FOR HANDLING
  321. Debug.Print(myerror.GetHashCode())
  322. Debug.Print(myerror.Message)
  323. Debug.Print(myerror.ToString)
  324.  
  325. Dim thetime As String = Format(Today, "yyyy/MM/dd")
  326. Dim errorHandleStr As String = QueryClean(myerror.ToString)
  327.  
  328. SQL = "INSERT INTO tblerrorlog(botid, ErrorNumber, ErrorMessage,HappenedWhen,BotName) VALUES(" & BotID & ", """ & errorHandleStr & """, """ & myerror.Message & " " & message & """,""" & thetime & """,""" & BotName & """)"
  329. Try
  330. If InsertRecords(SQL, "ErrorLog") Then
  331.  
  332. End If
  333.  
  334. Catch ex As Exception
  335.  
  336. End Try
  337.  
  338. Select Case myerror.GetHashCode()
  339. Case 1997173
  340. Exit While
  341. End Select
  342. End Try
  343. End While
  344.  
  345.  
  346. Command = Nothing
  347. RecvString = Nothing
  348. ConnectedToServer = False
  349. tnSocket.Close()
  350. tnSocket = Nothing
  351. RecvString = Nothing
  352. ThreadKillID = 9999
  353. GC.Collect()
  354. Return "Dead"
  355.  
  356. End Function
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement