Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- 'CLASS SPECIFIC FUNCS
- Public Function ConnectBot(ByVal threadID) As Object
- 'FUNCTION NAME:ConnectBot
- 'INPUT :Thread ID as object
- 'EXISTANCE :Main Engine
- 'OUTPUT :Anything
- 'INSTANCE CLASS CHILD OBJECTS
- ChannelCommandClass.CmdPrefix = cmdPrefix
- MathChannelClass.cmdPrefix = cmdPrefix
- threadID = My.Settings.ThreadID
- 'DECLARE SOCKET VARS
- Dim RecvString As String = String.Empty
- Dim NumBytes As Integer = 0
- Dim RecvBytes(255) As [Byte]
- Dim nickname, ident, hostname, command2, channel, message
- Dim regexp As String
- Dim mythreatstarted As Boolean = False
- message = ""
- RecvString = ""
- tnSocket = New Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp)
- Dim x As System.Threading.Thread
- While True
- Try
- If (tnSocket.Connected = False) Then
- tnSocket = New Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp)
- tnSocket.Connect(currServer, PPort)
- If mythreatstarted = False Then
- x = New Thread(AddressOf PingServerWait)
- x.Start()
- mythreatstarted = True
- End If
- End If
- Do
- If NumBytes < 256 Then
- NumBytes = tnSocket.Receive(RecvBytes, RecvBytes.Length, 0)
- RecvString = Trim(RecvString + Encoding.ASCII.GetString(RecvBytes, 0, NumBytes))
- TheTextBox.AppendText(RecvString)
- Else
- NumBytes = 0 'RESET
- End If
- Loop While NumBytes = 256
- 'WE NOW HAVE RECV DATA
- While Not RecvString = "" Or ConnectedToServer = False
- 'DETERMINE IF WE HAVE TO QUIT OR EXIT BY SERVER OR CMD
- If Quit(RecvString, threadID) = True Then
- Exit While
- End If
- 'SERVER PING
- If PingServer(RecvString) Then
- End If
- 'SERVER SEND 004 WE NOW HAVE CONNECTED TO IT
- If InStr(RecvString, "004") > 0 And ConnectedToServer = False Then
- ConnectedToServer = True
- End If
- 'DETERMINE IF CONNECTED
- If ConnectedToServer Then
- '#############################
- '#DETERMINE Notice #
- '#############################
- regexp = "^\:(?<nickname>.+?)\!(?<ident>.+?)\@(?<hostname>.+?) NOTICE (?<user>.+) \:(?<message>.+)."
- Debug.Print(RecvString)
- If (IrcInputCheck(RecvString, regexp)) Then
- Dim re As New Regex(regexp)
- Dim user As String
- 'CHAT GRABBER
- mt = re.Match(RecvString)
- nickname = mt.Groups("nickname").ToString
- ident = mt.Groups("ident").ToString
- hostname = mt.Groups("hostname").ToString
- message = mt.Groups("message").ToString
- user = mt.Groups("user").ToString
- 'THIS WILL NEED TO BE FIXED BETTER
- If InStr(nickname, "Serv") > 0 Or InStr(nickname, "serv") > 0 Then
- RecvString = ""
- Else
- 'SET PASS NOTICE
- If RegXPChecker("^set pass:(?<item>.+) (?<item2>.+)", message) Then
- Dim item, item2 As String
- re = New Regex("^set pass:(?<item>.+) (?<item2>.+)")
- mt = re.Match(message)
- item = mt.Groups("item").ToString
- item2 = mt.Groups("item2").ToString
- If item = "" Or item2 = "" Then
- SendInfo("NOTICE " & nickname & " :Invalid syntax " & item & "." & vbCrLf, SendBytes, tnSocket)
- Else
- item2 = GenerateHash(item2)
- Debug.Print(item2)
- item2 = QueryClean(item2)
- item = QueryClean(item)
- SQL = "UPDATE tblauth SET Password=""" & QueryClean(item2) & """ WHERE BotID=" & BotID & " AND UserName=""" & QueryClean(item) & """"
- If UpdateRecords(SQL, "Set Pass Hash") = False Then
- Return False
- End If
- End If
- End If
- 'AUTH NOTICE
- If RegXPChecker("^auth:(?<item>.+)", message) Then
- Dim item As String
- re = New Regex("^auth:(?<item>.+)")
- mt = re.Match(message)
- item = mt.Groups("item").ToString
- SQL = "SELECT UserName FROM tblAuth Where BotID=" & BotID & " AND UserName=""" & QueryClean(nickname) & """"
- If CheckIfUserExists(nickname, SQL, BotID) Then
- item = GenerateHash(item)
- Debug.Print(item)
- If AclClass.PasswordVerification(nickname, BotID, item) Then
- SendInfo("NOTICE " & nickname & " :Authenticated" & vbCrLf, SendBytes, tnSocket)
- nickname = QueryClean(nickname)
- SQL = "UPDATE tblauth SET IsAuthed=1 WHERE botID=" & BotID & " AND UserName=""" & QueryClean(nickname) & """"
- If UpdateRecords(SQL, "Auth") Then
- End If
- Else
- SendInfo("NOTICE " & nickname & " :Invalid password" & vbCrLf, SendBytes, tnSocket)
- End If
- Else
- Return True
- End If
- End If
- End If
- 'Check if user is in user list
- RecvString = ""
- End If
- '#####################################
- '#DETERMINE Private Message to bot #
- '#####################################
- ':MrTwig!n=Jaw@unaffiliated/jawster NICK :Twig-Away
- ':ioudas!n=gc@cpe-74-75-90-244.maine.res.rr.com PRIVMSG assbott2 :hey
- regexp = "^\:(?<nickname>.+?)\!(?<ident>.+?)\@(?<hostname>.+?) PRIVMSG (?<user>.+?) \:(?<message>.+)."
- If (IrcInputCheck(RecvString, regexp)) Then
- Dim re As New Regex(regexp)
- Dim user As String
- mt = re.Match(RecvString)
- nickname = mt.Groups("nickname").ToString
- ident = mt.Groups("ident").ToString
- hostname = mt.Groups("hostname").ToString
- channel = "#" & mt.Groups("channel").ToString
- message = mt.Groups("message").ToString
- user = mt.Groups("user").ToString
- If InStr(user, "#") > 0 Then
- Else
- If InStr(message, "PING") > 0 Or InStr(message, "TIME") > 0 Or InStr(message, "VERSION") > 0 Then
- If CtcpReply(message, nickname) Then
- End If
- Else
- RecvString = "PING"
- End If
- End If
- End If
- '#####################################
- '#DETERMINE Chan/Server Kick Commands#
- '#####################################
- regexp = "^\:(?<nickname>.+?)\!(?<ident>.+?)\@(?<hostname>.+?) (?<command>.+?) #(?<channel>.+?) (?<userkicked>.+) \:(?<message>.+)."
- If IrcInputCheck(RecvString, regexp) Then
- Dim re As New Regex(regexp)
- mt = re.Match(RecvString)
- nickname = mt.Groups("nickname").ToString
- ident = mt.Groups("ident").ToString
- hostname = mt.Groups("hostname").ToString
- command2 = mt.Groups("command").ToString
- channel = "#" & mt.Groups("channel").ToString
- message = mt.Groups("message").ToString
- Dim botProtectRejoin As New BotProtection
- Select Case command2
- Case "KICK"
- 'run kick code
- If (botProtectRejoin.DetermineChannelJoin(BotID, channel)) Then
- SendInfo("JOIN " & channel, SendBytes, tnSocket)
- End If
- 'RecvString = ""
- Case "MODE"
- 'wee
- 'Mode protection goes here
- If botProtectRejoin.DetectBanAgainstMe(channel, True, tnSocket, SendBytes, "greg") Then
- End If
- End Select
- If (AclClass.IsMaster(nickname, BotID)) Then
- Master = True
- Else
- Master = False
- End If
- End If
- '####################################
- '#DETERMINE Chan/Server Commands #
- '####################################
- regexp = "^\:(?<nickname>.+?)\!(?<ident>.+?)\@(?<hostname>.+?) (?<command>.+?) #(?<channel>.+?) \:(?<message>.+)."
- If (IrcInputCheck(RecvString, regexp)) Then
- Dim re As New Regex(regexp)
- mt = re.Match(RecvString)
- nickname = mt.Groups("nickname").ToString
- ident = mt.Groups("ident").ToString
- hostname = mt.Groups("hostname").ToString
- command2 = mt.Groups("command").ToString
- channel = "#" & mt.Groups("channel").ToString
- message = mt.Groups("message").ToString
- If (AclClass.IsMaster(nickname, BotID)) Then
- Master = True
- Else
- Master = False
- End If
- 'RECONNECT COMMAND.
- If message = cmdPrefix & "reconnect" Then
- LocalFirstSW = True
- ChannelJoinSW = True
- tnSocket.Close()
- ConnectedToServer = False
- x.Abort()
- Exit While
- End If
- 'If :gregc!n=gc@cpe-74-75-90-244.maine.res.rr.com QUIT :
- If command2 = "QUIT" Then
- If AclClass.IsUserAuthed(nickname, BotID, channel) Then
- SQL = "UPDATE tblauth SET IsAuthed=0 WHERE BotID=" & BotID & " AND UserName=""" & QueryClean(nickname) & """"
- If UpdateRecords(SQL, "QUIT AUTH") Then
- End If
- Else
- End If
- End If
- 'DB INSERT OF RCVD DATA TO USER CHAT TABLE
- If Record Then
- If Not InStr(message, cmdPrefix & "last") > 0 Then
- If InStr(message, cmdPrefix & "seen") > 0 Then
- Else
- If RecordInsert(QueryClean(channel), QueryClean(nickname), QueryClean(message), BotID, ServerName) = False Then
- End If
- End If
- End If
- End If
- 'Channel Text
- If (ChannelGrab(message, channel, nickname)) Then
- RecvString = ""
- message = ""
- Exit While
- End If
- 'CTCP CHAN PING REPLY
- If CtcpReply(message, nickname) Then
- RecvString = ""
- Exit While
- End If
- If Len(message) > 0 Then
- RecvString = ""
- Exit While
- End If
- End If
- End If
- '####################################
- '#On server channel commands #
- '####################################
- 'PAST CHANNEL COMMANDS Server commands go here
- If RegXPChecker("\:.+ 433 \* .+ \:.+", RecvString) Then
- Dim newnick As String
- newnick = "testbot"
- SendInfo("NICK " & newnick & vbCrLf, SendBytes, tnSocket)
- End If
- Debug.Print(RecvString)
- If InStr(RecvString, "376") Then
- Debug.Print("")
- End If
- If RegXPChecker("\:.+ 376 .+", RecvString) Then
- InitialJoin()
- End If
- ':irc.mad-season.com 376 assbott2 :End of /MOTD command.
- 'ASSIGN SERVER NICK
- 'ALSO HANDLES CHANNEL JOINS
- SetNickOnServer(tnSocket)
- RecvString = ""
- End While
- Catch myerror As Exception
- 'NEED A BETTER METHOD FOR HANDLING
- Debug.Print(myerror.GetHashCode())
- Debug.Print(myerror.Message)
- Debug.Print(myerror.ToString)
- Dim thetime As String = Format(Today, "yyyy/MM/dd")
- Dim errorHandleStr As String = QueryClean(myerror.ToString)
- SQL = "INSERT INTO tblerrorlog(botid, ErrorNumber, ErrorMessage,HappenedWhen,BotName) VALUES(" & BotID & ", """ & errorHandleStr & """, """ & myerror.Message & " " & message & """,""" & thetime & """,""" & BotName & """)"
- Try
- If InsertRecords(SQL, "ErrorLog") Then
- End If
- Catch ex As Exception
- End Try
- Select Case myerror.GetHashCode()
- Case 1997173
- Exit While
- End Select
- End Try
- End While
- Command = Nothing
- RecvString = Nothing
- ConnectedToServer = False
- tnSocket.Close()
- tnSocket = Nothing
- RecvString = Nothing
- ThreadKillID = 9999
- GC.Collect()
- Return "Dead"
- End Function
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement