Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <GUIConstantsEx.au3>
- #include <ColorConstants.au3>
- #include <File.au3>
- #RequireAdmin
- ;~ раз решает ошибку 300 пусть будет "тракториста"
- $mainwindow=GUICreate("Tractorista", 400,100)
- GUISetState(@SW_SHOW, $mainwindow)
- $host1=GUICtrlCreateLabel("latest.live.dbd.bhvronline.com",5,5)
- ;~ для отладки
- ;~ $host1=GUICtrlCreateLabel("ya.ru",5,5)
- $ip1=GUICtrlCreateLabel("255.255.255.255",180,5)
- $state1=GUICtrlCreateLabel(" ",280,5)
- $rotor1=GUICtrlCreateLabel(" |",335,5)
- $host2=GUICtrlCreateLabel("s3.amazonaws.com",5,25)
- $ip2=GUICtrlCreateLabel("255.255.255.255",180,25)
- $state2=GUICtrlCreateLabel(" ",280,25)
- $rotor2=GUICtrlCreateLabel(" |",335,25)
- $button=GUICtrlCreateButton("Записать в Hosts",5,45)
- GUICtrlSetState($button,$GUI_DISABLE)
- ;~ разобраться, почему интерфейс мигает, а пока - пусть будет пауза
- sleep(500)
- ;~ переписать на переменную среды
- readhosts ("C:\Windows\System32\drivers\etc\hosts")
- While 1
- if GUICtrlGetState ($button) = 144 Then
- if guictrlread($state1) = "OK!" and guictrlread($state2) = "OK!" Then GUICtrlSetState($button,$GUI_ENABLE)
- EndIf
- if guictrlread($state1) <> "OK!" Then checkstate(1)
- if guictrlread($state2) <> "OK!" Then checkstate(2)
- Switch GUIGetMsg()
- Case $GUI_EVENT_CLOSE
- ExitLoop
- Case $button
- ;~ переписать на переменную среды
- writehosts ("C:\Windows\System32\drivers\etc\hosts")
- ExitLoop
- EndSwitch
- WEnd
- func checkstate ($num)
- ;~ христом богом прошу тебя - выведи эту конструкцию со switch в отдельную функцию
- Switch $num
- Case 1
- $host=guictrlread($host1)
- Case 2
- $host=guictrlread($host2)
- EndSwitch
- ;~ отладка
- ;~ msgbox("","",$IP & " " & $state)
- TCPStartup()
- $IPaddress=TCPNameToIP($host)
- Switch $num
- Case 1
- GUICtrlSetData($ip1,$IPAddress)
- Case 2
- GUICtrlSetData($ip2,$IPAddress)
- EndSwitch
- ;~ йобанный хардкод когда разберусь, как проверять доступность сервера - уберу. Сейчас серваки не пингуются, не отдают html а просто говорят, что могут обрабатывать метод GET
- if $ipaddress="52.202.38.248" Then
- ;~ проверил реестр РКН вручную - из известных мне адресов, этот - единственный не в бане
- GUICtrlSetColor($state1,$color_green)
- GUICtrlSetData($state1,"OK!")
- return 1
- EndIf
- if ping($IPAddress) Then
- Switch $num
- Case 1
- GUICtrlSetColor($state1,$color_green)
- GUICtrlSetData($state1,"OK!")
- Case 2
- GUICtrlSetColor($state2,$color_green)
- GUICtrlSetData($state2,"OK!")
- EndSwitch
- return 1
- Else
- Switch $num
- Case 1
- GUICtrlSetColor($state1,$color_red)
- GUICtrlSetData($state1,"OFFLINE")
- Case 2
- GUICtrlSetColor($state2,$color_red)
- GUICtrlSetData($state2,"OFFLINE")
- EndSwitch
- refresh($num)
- return 0
- EndIf
- EndFunc
- func refresh ($num)
- Switch $num
- Case 1
- $rotor=guictrlread($rotor1)
- Case 2
- $rotor=guictrlread($rotor2)
- EndSwitch
- ;~ зря ты вообще эту крутилку добавил, но пока - пусть будет
- switch $rotor
- Case " |"
- $rotor="/"
- Case "/"
- $rotor="--"
- Case "--"
- $rotor="\"
- Case "\"
- $rotor=" |"
- EndSwitch
- Switch $num
- Case 1
- GUICtrlSetData($rotor1,$rotor)
- Case 2
- GUICtrlSetData($rotor2,$rotor)
- EndSwitch
- ;~ Это не обязательно и не знаю как будет работать, если сам днс сервер кэширует запросы. А ещё на это может ругаться антивирус, но пока - пусть будет
- Run(@ComSpec & " /c " & 'ipconfig /flushdns', "", @SW_HIDE)
- EndFunc
- ;~ куски от старой отладки, пока не удаляй
- ;~ $Hostname = "latest.live.dbd.bhvronline.com"
- ;~ $NSLookupCmd = Run(@ComSpec & " /c nslookup "& $Hostname, "", @SW_HIDE)
- ;~ TCPStartup()
- ;~ $IPaddress=TCPNameToIP($hostname)
- ;~ $state=ping($IPaddress)
- ;~ msgbox("","",$IPaddress & " " & $state)
- ;~ TCPShutdown()
- func readhosts ($file)
- local $line1=0
- local $line2=0
- for $i=1 to _FileCountLines($file)
- ;~ добавь проверку на случай, если будет больше двух записей
- if stringinstr(filereadline($file,$i),guictrlread($host1)) then $line1=$i
- if stringinstr(filereadline($file,$i),guictrlread($host2)) then $line2=$i
- Next
- if $line1+$line2<>0 Then
- if msgbox(1,"","Обнаружены строки:" & @crlf & filereadline($file,$line1) & @crlf & filereadline($file,$line2) & @crlf & "При продолжении, они будут удалены")=2 Then
- Exit
- Else
- ;~ добавь проверку на содержимое удаляемой строки.
- _FileWritetoLine($file,$line2,"",1)
- _FileWritetoLine($file,$line1,"",1)
- EndIf
- EndIf
- EndFunc
- func writehosts ($file)
- ;~ добавь проверку на корректность записи
- filewriteline($file, guictrlread($ip1)& " " & guictrlread($host1))
- filewriteline($file, guictrlread($ip2)& " " & guictrlread($host2))
- MsgBox ("","","Запись произведена. Можно запускать игру")
- EndFunc
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement