рд╕реБрд╡рд┐рдзрд╛рдЬрдирдХ рд╕реАрдПрд╕рдПрд╕ рд╕рдВрдкрд╛рджрди (рдХреНрд░реЛрдо + рд╕реАрдПрд╕рдПрд╕ + рдСрдЯреЛ рдЗрдЯ рд╕рд╣реЗрдЬреЗрдВ)

рдмрд╣реБрдд рд╕реЗ рд▓реЛрдЧ рдЬрд╛рдирддреЗ рд╣реИрдВ рдХрд┐ рдХреНрд░реЛрдо рдбреЗрд╡рд▓рдкрдореЗрдВрдЯ рдЯреВрд▓реНрд╕ рдореЗрдВ рдПрдХ рдЕрдВрддрд░реНрдирд┐рд╣рд┐рдд рд╕реАрдПрд╕рдПрд╕ рд╕рдВрдкрд╛рджрдХ рд╣реЛрддрд╛ рд╣реИ рдЬреЛ рддреБрд░рдВрдд рдкрд░рд┐рд╡рд░реНрддрди рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░рддрд╛ рд╣реИред рдПрдХрдорд╛рддреНрд░ рд╕рдорд╕реНрдпрд╛ рдЖрд╕рд╛рдиреА рд╕реЗ рдкрд░рд┐рд╡рд░реНрддрдиреЛрдВ рдХреЛ рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рд░реВрдк рд╕реЗ рд╕рд╣реЗрдЬрдиреЗ рдХреА рдХреНрд╖рдорддрд╛ рдХреА рдХрдореА рд╣реИред

рдСрдЯреЛрд╕реИрд╡ рдХрд╛рд░реНрдп рдХреЛ рд╣рд▓ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдХреНрд░реЛрдо рдХреЗ рд▓рд┐рдП рддреАрди рдПрдХреНрд╕рдЯреЗрдВрд╢рди рд╣реИрдВ: рджреЗрд╡рдЯреВрд▓ рдСрдЯреЛрд╕реИрд╡, рдЯрд┐рдирдХреНрд░, рдФрд░ рд╕реЗрд╡ рд╕реАрдПрд╕рдПрд╕ ред рдЪреВрдВрдХрд┐ рдПрдХреНрд╕рдЯреЗрдВрд╢рди рдкрд░ рдбрд┐рд╕реНрдХ рдкрд░ рдлрд╝рд╛рдЗрд▓реЛрдВ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдирд╛ рд╕рдВрднрд╡ рдирд╣реАрдВ рд╣реИ, рдЗрд╕рд▓рд┐рдП рд╡реЗ рд╕рднреА рд╕реАрдПрд╕рдПрд╕ рдкрд░рд┐рд╡рд░реНрддрди рдШрдЯрдирд╛ рдХреЛ рд░реЛрдХрддреЗ рд╣реИрдВ, рдФрд░ рдкрд░рд┐рд╡рд░реНрддрд┐рдд рдлрд╝рд╛рдЗрд▓ рдХрд╛ рдкрд╛рда (рдпрд╛ DevTools рдСрдЯреЛрд╕реНрд▓реЗрд╡ рдХреЗ рдорд╛рдорд▓реЗ рдореЗрдВ рдХреЗрд╡рд▓ рдПрдХ рдЯреБрдХрдбрд╝рд╛) рд╕реНрдерд╛рдиреАрдпрд╣реЛрд╕реНрдЯ рдХреЗ рдЕрдиреБрд░реЛрдз рдХреЗ рджреНрд╡рд╛рд░рд╛ рднреЗрдЬрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдЬрд┐рд╕ рдкрд░ рд╕рд░реНрд╡рд░ рдкреНрд░реЛрдЧреНрд░рд╛рдо рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдлрд╝рд╛рдЗрд▓ рдХреЛ рд╕реАрдзреЗ рдмрдЪрд╛рддрд╛ рд╣реИред

рдлрд╝рд╛рдЗрд▓ рдПрдХреНрд╕рдЯреЗрдВрд╢рди рдХреЛ рдкрд╛рдЗрдерди, Node.js рдпрд╛ Ruby рдореЗрдВ рд╕рд╣реЗрдЬрдиреЗ рдХреЗ рд▓рд┐рдП рдЙрдкрд░реЛрдХреНрдд рдПрдХреНрд╕рдЯреЗрдВрд╢рдиред рдореИрдВ, рдПрдХ PHP рдкреНрд░реЛрдЧреНрд░рд╛рдорд░ рдХреЗ рд░реВрдк рдореЗрдВ, рдЬреЛ рдЗрди рднрд╛рд╖рд╛рдУрдВ рд╕реЗ рдЬреБрдбрд╝рд╛ рдирд╣реАрдВ рдерд╛, рд╡рд┐рдВрдбреЛрдЬ рдХреЗ рд▓рд┐рдП рдПрдХ рд╕рд░рд▓ рдПрдХ рдХреНрд▓рд┐рдХ рд╕рдорд╛рдзрд╛рди рдЪрд╛рд╣рддрд╛ рдерд╛, рд╕рд░реНрд╡рд░ рд╕реНрдерд╛рдкрд┐рдд рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдХреЗ рдмрд┐рдирд╛ рдЬрд┐рд╕реЗ рдореБрдЭреЗ рдЕрдкрдиреЗ рдХрд╛рдо рдореЗрдВ рдЬрд╝рд░реВрд░рдд рдирд╣реАрдВ рдереАред

рдЗрд╕рд▓рд┐рдП, рдореИрдВрдиреЗ рд╡рд┐рдВрдбреЛрдЬ рдХреЗ рд▓рд┐рдП рдПрдХ рд╕рд░рд▓ рдЙрдкрдпреЛрдЧрд┐рддрд╛ рд▓рд┐рдЦрдиреЗ рдХрд╛ рдлреИрд╕рд▓рд╛ рдХрд┐рдпрд╛ рдЬреЛ рдЗрд╕ рд╕рдорд╕реНрдпрд╛ рдХреЛ рд╣рд▓ рдХрд░рддрд╛ рд╣реИред

AutoIt рдЬрд▓реНрджреА рд╕реЗ рдкрд░рд┐рдгрд╛рдо рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╕рдмрд╕реЗ рдЖрд╕рд╛рди рддрд░реАрдХрд╛ рдХреЗ рд░реВрдк рдореЗрдВ рдЪреБрдирд╛ рдЧрдпрд╛ рдерд╛ред

рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдкрд╛рда (рдЕрдкрдбреЗрдЯ рдХрд┐рдпрд╛ рдЧрдпрд╛ 18 рдЕрдкреНрд░реИрд▓, 2013)
#cs # save-css-server.au3: receive CSS and JS files from Chrome extension # and save files locally # # Author: Ilya Zenin # Based on AutoIt HTTP Server by Manadar # 18.01.2013 - Created # 16.02.2013 - Updated # 18.04.2013 - Updated #ce Local $sIP = "127.0.0.1"; ip address Local $iPort = 8080 ; the listening port Local $sBuffer = ""; Local $aSavedFilepaths = ""; needed to show tray tip only once per file Local $iStartTime = TimerInit() TCPStartup() $iMainSocket = TCPListen($sIP, $iPort, 10) If @error Then MsgBox(0x20, "Save CSS server", "Unable to create a socket on port " & $iPort & ".") Exit EndIf ConsoleWrite("Save CSS server running at port " & $iPort & "..."& @CRLF) TrayTip("Save CSS server", "Save CSS server running at port " & $iPort & "...", 0, 0) While True $iSock = TCPAccept($iMainSocket) ;Check for new connections If TimerDiff($iStartTime) > 250 Then ;reset tray icon to standart TraySetIcon() EndIf sleep(10) If $iSock = -1 Then ContinueLoop If _TCP_Server_ClientIP($iSock) <> "127.0.0.1" Then ConsoleWrite("External connection! Disconnect." & @CRLF) TCPCloseSocket($iSock) ; Kill any not local connections ContinueLoop EndIf ConsoleWrite("A new client has connected!" & @CRLF) $sBuffer = "" $break = false; Do $sRecv = TCPRecv($iSock, 2048) If $sRecv Then $sBuffer &= $sRecv $receivedLength = StringLen($sRecv); $bufferLength = StringLen($sBuffer); $headerLength = StringInStr($sBuffer, @CRLF&@CRLF) + 3 $array = StringRegExp($sBuffer, 'Content-Length: (.*)', 2) $contentLength = StringStripCR($array[1]) If ($contentLength + $headerLength == $bufferLength) Then $break = True EndIf EndIf Until $break ConsoleWrite("READY!" & @CRLF) $array = StringRegExp($sBuffer, 'X-origurl: (.*)', 2) $xOrigurl = StringStripCR($array[1]); $array = StringRegExp($sBuffer, 'X-filepath: (.*)', 2) $xFilepath = urldecode(StringStripCR($array[1])); $body = StringTrimLeft($sBuffer, $headerLength) ConsoleWrite("Saving file " & $xFilepath) Local $file = FileOpen($xFilepath, 2) $result = FileWrite ($file, $body) FileClose($file) If $result == 1 Then ConsoleWrite(" - Success " & @CRLF); If Not StringInStr($aSavedFilepaths, $xFilepath) Then ; show tray bubble only once per file TrayTip("Save CSS server", $xFilepath & " - saved!", 1, 0) $aSavedFilepaths &= '|'&$xFilepath; EndIf TraySetIcon("info"); $iStartTime = TimerInit() Else ConsoleWrite(" - ERROR!!!"& @CRLF); TrayTip("Save CSS server ERROR", $xFilepath & " - file save error!", 0, 3) EndIf $sBuffer = "" $sRecv = "" $iSock = -1 TCPSend($iMainSocket, "HTTP/1.1 200 OK"& @CRLF) TCPSend($iMainSocket, "Content-Length: 2"& @CRLF) TCPSend($iMainSocket, @CRLF) TCPSend($iMainSocket, "OK") TCPCloseSocket($iMainSocket) sleep(1000) TCPShutdown () TCPStartup() $iMainSocket = TCPListen($sIP, $iPort, 1) WEnd Func urldecode($str) Local $i, $return, $tmp $return = "" $str = StringReplace ($str, "+", " ") For $i = 1 To StringLen($str) $tmp = StringMid($str, $i, 3) If StringRegExp($tmp, "%[0-9A-Fa-f]{2}", 0) = 1 Then $i += 2 While StringRegExp(StringMid($str, $i+1, 3), "%[0-9A-Fa-f]{2}", 0) = 1 $tmp = $tmp & StringMid($str, $i+2, 2) $i += 3 Wend $return &= BinaryToString(StringRegExpReplace($tmp, "%([0-9A-Fa-f]*)", "0x$1"), 4) Else $return &= StringMid($str, $i, 1) EndIf Next Return $return EndFunc ; Function to return IP Address from a connected socket. ;---------------------------------------------------------------------- Func _TCP_Server_ClientIP($hSocket) Local $pSocketAddress, $aReturn $pSocketAddress = DllStructCreate("short;ushort;uint;char[8]") $aReturn = DllCall("Ws2_32.dll", "int", "getpeername", "int", $hSocket, "ptr", DllStructGetPtr($pSocketAddress), "int*", DllStructGetSize($pSocketAddress)) If @error Or $aReturn[0] <> 0 Then Return 0 $aReturn = DllCall("Ws2_32.dll", "str", "inet_ntoa", "int", DllStructGetData($pSocketAddress, 3)) If @error Then Return 0 $pSocketAddress = 0 Return $aReturn[0] EndFunc 



рд╕реНрдерд╛рдкрдирд╛


  1. рд╣рдордиреЗ рд╕реНрдЯреЛрд░ рд╕реЗ рд╕реЗрд╡ рд╕реАрдПрд╕рдПрд╕ рдПрдХреНрд╕рдЯреЗрдВрд╢рди рдХреЛ рдХреНрд░реЛрдо рдореЗрдВ рд░рдЦрд╛ рд╣реИ
  2. рдЖрдкрдХреЛ рдХреНрд░реЛрдо рд╕реЗрдЯрд┐рдВрдЧреНрд╕ рдореЗрдВ рдкреНрд░рдпреЛрдЧрд╛рддреНрдордХ рдПрдкреАрдЖрдИ рдХреЛ рд╕рдХреНрд╖рдо рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛ рд╕рдХрддреА рд╣реИ рдХреНрд░реЛрдо: // рдЭрдВрдбреЗ /
  3. рд╕рд░реНрд╡рд░ рднрд╛рдЧ рдХреА exe рдлрд╝рд╛рдЗрд▓ рдХреЛ рдбрд╛рдЙрдирд▓реЛрдб рдХрд░реЗрдВ рдФрд░ рдЪрд▓рд╛рдПрдВ (рдиреАрдЪреЗ рдкрдврд╝реЗ рдЧрдП EXE рдбрд╛рдЙрдирд▓реЛрдб рдХрд░рдиреЗ рдХреЗ рдбрд░ рд╕реЗ рд▓реЛрдЧреЛрдВ рдХреЗ рд▓рд┐рдП)
  4. Chrome рдореЗрдВ рдбреЗрд╡рд▓рдкрд░ рдЯреВрд▓ рдореЗрдВ, рд╣рдо рд╡рд░реНрдЪреБрдЕрд▓ рд╕рд░реНрд╡рд░ рдкрдереЛрдВ рдФрд░ рдбрд┐рд╕реНрдХ рдкрд░ рдлрд╝рд╛рдЗрд▓реЛрдВ рдХреЗ рдкрддреНрд░рд╛рдЪрд╛рд░ рдХреЛ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдХрд░рддреЗ рд╣реИрдВ, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдЬреИрд╕реЗ:
  5. рд▓рд╛рдн: рдЕрдм, рдЯреНрд░реЗ рдореЗрдВ рд╢реИрд▓рд┐рдпреЛрдВ рдХреЛ рдмрджрд▓рдиреЗ рдХреЗ рддреБрд░рдВрдд рдмрд╛рдж, рдлрд╝рд╛рдЗрд▓ рдХреЛ рд╕рд╣реЗрдЬрдиреЗ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдПрдХ рдЕрдзрд┐рд╕реВрдЪрдирд╛ рдкреЙрдк рдЕрдк рд╣реЛ рдЬрд╛рдПрдЧреАред рддрд╛рдХрд┐ рд▓рдЧрд╛рддрд╛рд░ рдкреЙрдк-рдЕрдк рд╕рдВрджреЗрд╢реЛрдВ рдореЗрдВ рд╣рд╕реНрддрдХреНрд╖реЗрдк рди рдХрд░реЗрдВ, рд╡реЗ рдкреНрд░рддрд┐ рдлрд╝рд╛рдЗрд▓ рдХреЗрд╡рд▓ 1 рдмрд╛рд░ рдкреЙрдк рдЕрдк рдХрд░рддреЗ рд╣реИрдВ, рдмрд╛рдж рдореЗрдВ рдСрдЯреЛ-рд╕реЗрд╡ рдХреЗрд╡рд▓ рдЖрдЗрдХрди рдХреЛ рдмреНрд▓реИрдВрдХ рдХрд░реЗрдЧрд╛:


рдХреИрдкреНрдЯрди рдкреИрд░рд╛рдиреЛрдЗрдпрд╛ рд╕реБрдЭрд╛рд╡ рджреЗрддреЗ рд╣реИрдВ рдХрд┐ рддреАрд╕рд░реЗ рдмрд┐рдВрджреБ рдХреЗ рдмрдЬрд╛рдп, рдЖрдк рдирд┐рдореНрди рдХрд╛рд░реНрдп рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ:

рдХреЗ рдЙрдкрдпреЛрдЧ


CSS рдЧреБрдг рдмрджрд▓рдиреЗ рдХреЗ рд▓рд┐рдП, рд╕рдВрдкрддреНрддрд┐ рдХреЗ рдирд╛рдо рдпрд╛ рдореВрд▓реНрдп рдкрд░ рдХреНрд▓рд┐рдХ рдХрд░реЗрдВ рдФрд░ рдХреАрдмреЛрд░реНрдб рд╕реЗ рджрд░реНрдЬ рдХрд░реЗрдВред
рдорд╛рдЙрд╕ рд╡реНрд╣реАрд▓ рдпрд╛ рдХреАрдмреЛрд░реНрдб рдкрд░ рдКрдкрд░ / рдиреАрдЪреЗ рддреАрд░ рдХреЗ рд╕рд╛рде рд╕рдВрдЦреНрдпрд╛рддреНрдордХ рдорд╛рди рднреА рдмрджрд▓реЗ рдЬрд╛ рд╕рдХрддреЗ рд╣реИрдВ
рдПрдХ рдирдИ рд╕рдВрдкрддреНрддрд┐ рдЬреЛрдбрд╝рдиреЗ рдХреЗ рд▓рд┐рдП, рдкреНрд░рддреАрдХ "}" рдХреЗ рд╕рд╛рде рд▓рд╛рдЗрди рдкрд░ рдбрдмрд▓-рдХреНрд▓рд┐рдХ рдХрд░реЗрдВ рдФрд░ рд╕рдВрдкрддреНрддрд┐ рдХрд╛ рдирд╛рдо рд▓рд┐рдЦреЗрдВ
рдХрд┐рд╕реА рд╕рдВрдкрддреНрддрд┐ рдХреЛ рд╣рдЯрд╛рдиреЗ рдХреЗ рд▓рд┐рдП, рдЙрд╕рдХрд╛ рдирд╛рдо рд╣рдЯрд╛рдПрдВ рдФрд░ рдПрдВрдЯрд░ рджрдмрд╛рдПрдВ

рдпрджрд┐ рд╕реАрдПрд╕рдПрд╕ рдлрд╝рд╛рдЗрд▓ рдореЗрдВ рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдВ рдпрд╛ рд╡рд┐рдХреНрд░реЗрддрд╛ рдЙрдкрд╕рд░реНрдЧ рд╣реИрдВ, рддреЛ рд╡реЗ рднреА рд╕рд╣реЗрдЬреЗ рдЬрд╛рдПрдВрдЧреЗред

рдЕрдкрдбреЗрдЯ 02.16.2013:
рдПрдХ рдмрдЧ рд╕реЙрдХреЗрдЯ рдХреЗ рдХрд╛рд░рдг рдПрдХ рдмрдЧ рдлрд┐рдХреНрд╕реНрдбред рдЕрдм рд╕рд░реНрд╡рд░ рд╕рд╣реА рддрд░реАрдХреЗ рд╕реЗ рдХрд╛рдо рдХрд░ рд░рд╣рд╛ рд╣реИред
рдКрдкрд░ рдХреА рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдФрд░ рд▓рд┐рдВрдХ рд╕реЗ рдПрдХреНрд╕рд╛рдИ рдлрд╝рд╛рдЗрд▓ рдЕрдкрдбреЗрдЯ рдХреА рдЬрд╛рддреА рд╣реИрдВред

рдЕрджреНрдпрддрди 04/18/2013:
рд╕реАрдПрд╕рдПрд╕ http рд╣реИрдбрд░ рдХреЗ рд╕рд╛рде рд╕рд╣реЗрдЬреЗ рдЬрд╛рдиреЗ рдкрд░ рдлрд┐рдХреНрд╕реНрдб рдмрдЧред
рдКрдкрд░ рдХреА рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдФрд░ рд▓рд┐рдВрдХ рд╕реЗ рдПрдХреНрд╕рд╛рдИ рдлрд╝рд╛рдЗрд▓ рдЕрдкрдбреЗрдЯ рдХреА рдЬрд╛рддреА рд╣реИрдВред

Exey Panteleev рджреНрд╡рд╛рд░рд╛ рдкрд╣рд▓реА рддрд╕реНрд╡реАрд░ рдХреЗ рд▓реЗрдЦрдХ
"рдпреВрдЬрд╝" рд╕реЗрдХреНрд╢рди рдХрд╛ рдЯреЗрдХреНрд╕реНрдЯ рдФрд░ рд╕реНрдХреНрд░реАрдирд╢реЙрдЯ рд▓реЗрдЦрдХ рдХреА рд╕рд╛рдЗрдЯ рд╕реЗрд╡ рд╕реАрдПрд╕рдПрд╕ рд╕реЗ рд▓рд┐рдпрд╛ рдЧрдпрд╛ рдерд╛

Source: https://habr.com/ru/post/In166587/


All Articles