Advertisement
Guest User

Untitled

a guest
Jun 7th, 2018
129
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
AutoIt 5.57 KB | None | 0 0
  1. #include <GUIConstantsEx.au3>
  2. #include <ColorConstants.au3>
  3. #include <File.au3>
  4.  
  5. #RequireAdmin
  6. ;~ раз решает ошибку 300 пусть будет "тракториста"
  7. $mainwindow=GUICreate("Tractorista", 400,100)
  8. GUISetState(@SW_SHOW, $mainwindow)
  9. $host1=GUICtrlCreateLabel("latest.live.dbd.bhvronline.com",5,5)
  10. ;~ для отладки
  11. ;~ $host1=GUICtrlCreateLabel("ya.ru",5,5)
  12.  
  13. $ip1=GUICtrlCreateLabel("255.255.255.255",180,5)
  14. $state1=GUICtrlCreateLabel("               ",280,5)
  15. $rotor1=GUICtrlCreateLabel(" |",335,5)
  16. $host2=GUICtrlCreateLabel("s3.amazonaws.com",5,25)
  17. $ip2=GUICtrlCreateLabel("255.255.255.255",180,25)
  18. $state2=GUICtrlCreateLabel("               ",280,25)
  19. $rotor2=GUICtrlCreateLabel(" |",335,25)
  20. $button=GUICtrlCreateButton("Записать в Hosts",5,45)
  21. GUICtrlSetState($button,$GUI_DISABLE)
  22. ;~ разобраться, почему интерфейс мигает, а пока - пусть будет пауза
  23. sleep(500)
  24. ;~              переписать на переменную среды
  25. readhosts ("C:\Windows\System32\drivers\etc\hosts")
  26.  
  27.     While 1
  28.       if GUICtrlGetState ($button) = 144 Then
  29.          if guictrlread($state1) = "OK!" and guictrlread($state2) = "OK!" Then GUICtrlSetState($button,$GUI_ENABLE)
  30.       EndIf
  31.       if guictrlread($state1) <> "OK!" Then checkstate(1)
  32.       if guictrlread($state2) <> "OK!" Then checkstate(2)
  33.         Switch GUIGetMsg()
  34.             Case $GUI_EVENT_CLOSE
  35.                 ExitLoop
  36.              Case $button
  37. ;~              переписать на переменную среды
  38.                 writehosts ("C:\Windows\System32\drivers\etc\hosts")
  39.                   ExitLoop
  40.         EndSwitch
  41.      WEnd
  42.  
  43.  
  44. func checkstate ($num)
  45. ;~    христом богом прошу тебя - выведи эту конструкцию со switch в отдельную функцию
  46.    Switch $num
  47.    Case 1
  48.       $host=guictrlread($host1)
  49.    Case 2
  50.       $host=guictrlread($host2)
  51.    EndSwitch
  52. ;~    отладка
  53. ;~ msgbox("","",$IP & " " & $state)
  54. TCPStartup()
  55.    $IPaddress=TCPNameToIP($host)
  56.    Switch $num
  57.    Case 1
  58.       GUICtrlSetData($ip1,$IPAddress)
  59.    Case 2
  60.       GUICtrlSetData($ip2,$IPAddress)
  61.    EndSwitch
  62. ;~    йобанный хардкод когда разберусь, как проверять доступность сервера - уберу. Сейчас серваки не пингуются, не отдают html а просто говорят, что могут обрабатывать метод GET
  63. if $ipaddress="52.202.38.248" Then
  64. ;~    проверил реестр РКН вручную - из известных мне адресов, этот - единственный не в бане
  65.       GUICtrlSetColor($state1,$color_green)
  66.       GUICtrlSetData($state1,"OK!")
  67.       return 1
  68. EndIf
  69. if ping($IPAddress) Then
  70.    Switch $num
  71.    Case 1
  72.       GUICtrlSetColor($state1,$color_green)
  73.       GUICtrlSetData($state1,"OK!")
  74.    Case 2
  75.       GUICtrlSetColor($state2,$color_green)
  76.       GUICtrlSetData($state2,"OK!")
  77.    EndSwitch
  78.    return 1
  79. Else
  80.       Switch $num
  81.    Case 1
  82.       GUICtrlSetColor($state1,$color_red)
  83.       GUICtrlSetData($state1,"OFFLINE")
  84.    Case 2
  85.       GUICtrlSetColor($state2,$color_red)
  86.       GUICtrlSetData($state2,"OFFLINE")
  87.    EndSwitch
  88.    refresh($num)
  89.    return 0
  90. EndIf
  91. EndFunc
  92.  
  93. func refresh ($num)
  94.  
  95.    Switch $num
  96.    Case 1
  97.       $rotor=guictrlread($rotor1)
  98.    Case 2
  99.       $rotor=guictrlread($rotor2)
  100.    EndSwitch
  101.  
  102. ;~ зря ты вообще эту крутилку добавил, но пока - пусть будет
  103.    switch $rotor
  104.    Case " |"
  105.       $rotor="/"
  106.    Case "/"
  107.       $rotor="--"
  108.    Case "--"
  109.       $rotor="\"
  110.    Case "\"
  111.       $rotor=" |"
  112.    EndSwitch
  113.  
  114.    Switch $num
  115.    Case 1
  116.       GUICtrlSetData($rotor1,$rotor)
  117.    Case 2
  118.       GUICtrlSetData($rotor2,$rotor)
  119.    EndSwitch
  120.  
  121. ;~ Это не обязательно и не знаю как будет работать, если сам днс сервер кэширует запросы. А ещё на это может ругаться антивирус, но пока - пусть будет
  122. Run(@ComSpec & " /c " & 'ipconfig /flushdns', "", @SW_HIDE)
  123. EndFunc
  124.  
  125. ;~ куски от старой отладки, пока не удаляй
  126. ;~ $Hostname = "latest.live.dbd.bhvronline.com"
  127. ;~ $NSLookupCmd = Run(@ComSpec & " /c nslookup "& $Hostname, "", @SW_HIDE)
  128. ;~ TCPStartup()
  129. ;~ $IPaddress=TCPNameToIP($hostname)
  130. ;~ $state=ping($IPaddress)
  131. ;~ msgbox("","",$IPaddress & " " & $state)
  132. ;~ TCPShutdown()
  133.  
  134. func readhosts ($file)
  135. local $line1=0
  136. local $line2=0
  137.    for $i=1 to _FileCountLines($file)
  138. ;~    добавь проверку на случай, если будет больше двух записей
  139.       if stringinstr(filereadline($file,$i),guictrlread($host1)) then $line1=$i
  140.       if stringinstr(filereadline($file,$i),guictrlread($host2)) then $line2=$i
  141.    Next
  142.    if $line1+$line2<>0 Then
  143.       if msgbox(1,"","Обнаружены строки:" & @crlf & filereadline($file,$line1) & @crlf & filereadline($file,$line2) & @crlf & "При продолжении, они будут удалены")=2 Then
  144.          Exit
  145.       Else
  146. ;~    добавь проверку на содержимое удаляемой строки.
  147.       _FileWritetoLine($file,$line2,"",1)
  148.       _FileWritetoLine($file,$line1,"",1)
  149.    EndIf
  150.    EndIf
  151. EndFunc
  152.  
  153. func writehosts ($file)
  154. ;~    добавь проверку на корректность записи
  155.       filewriteline($file, guictrlread($ip1)& " " & guictrlread($host1))
  156.       filewriteline($file, guictrlread($ip2)& " " & guictrlread($host2))
  157.    MsgBox ("","","Запись произведена. Можно запускать игру")
  158. EndFunc
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement