So, Hier kommt ein HTTP-Server in der Blume-Version
Edit: Sprenger hatte die gleiche Idee Oo | Komisch *gedankenleser* hust.
Spoiler anzeigen
#NoTrayIcon
#include <Helper.au3>
#include <ButtonConstants.au3>
#include <GUIConstantsEx.au3>
#include <StaticConstants.au3>
#include <WindowsConstants.au3>
Global $iNewSocket, $iMainSocket
Global $fServerRun = False
Global $sServerTitle = "Blume-HTTP-Server"
Global $sRootDir = @ScriptDir & "\www\"
Global $sIP = @IPAddress1
Global $iPort = 82
Global $sServerAddress = "http://" & $sIP & ":" & $iPort & "/"
Global $iMaxUsers = 15
Global $sServerName = $sServerTitle & " (" & @OSVersion & ") AutoIt " & @AutoItVersion
Global $aSocket[$iMaxUsers]
Global $sBuffer[$iMaxUsers]
For $iX = 0 to (UBound($aSocket) - 1)
$aSocket[$iX] = -1
Next
TCPStartup()
[/autoit] [autoit][/autoit] [autoit]$iMainSocket = TCPListen($sIP, $iPort)
If @error Then
MsgBox(16, $sServerTitle, "Der Server konnte nicht erstellt werden")
Exit
EndIf
MsgBox(64, $sServerTitle, StringFormat("Server-Infos:\n\nIP: %s\nPort: %i\n\n%s", $sIP, $iPort, $sServerAddress))
$hMainForm = GUICreate($sServerTitle, 214, 66, 192, 124, -1, BitOR($WS_EX_TOOLWINDOW, $WS_EX_WINDOWEDGE))
$hStatusLabel = GUICtrlCreateLabel("Server Inaktiv", 8, 8, 196, 17, $SS_CENTER, $WS_EX_CLIENTEDGE)
GUICtrlSetFont(-1, 8, 800, 0, "MS Sans Serif")
GUICtrlSetBkColor(-1, 0xFF0000)
$hButtonServerStart = GUICtrlCreateButton("Starten", 8, 32, 75, 25, $WS_GROUP)
GUICtrlSetColor(-1, 0x00FF00)
GUICtrlSetBkColor(-1, 0x008000)
$hButtonServerStop = GUICtrlCreateButton("Stoppen", 128, 32, 75, 25, $WS_GROUP)
GUICtrlSetColor(-1, 0xFF0000)
GUICtrlSetBkColor(-1, 0x800000)
$hButtonInfo = GUICtrlCreateButton("??", 88, 32, 35, 25, $WS_GROUP)
GUICtrlSetColor(-1, 0xFFFF00)
GUICtrlSetBkColor(-1, 0x808000)
GUISetState(@SW_SHOW)
While 1
$nMsg = GUIGetMsg()
Switch $nMsg
Case $GUI_EVENT_CLOSE
TCPCloseSocket($iNewSocket)
TCPCloseSocket($iMainSocket)
TCPShutdown()
Exit
Case $hButtonServerStart
GUICtrlSetBkColor($hStatusLabel, 0x00FF00)
GUICtrlSetData($hStatusLabel, "Server Aktiv")
$fServerRun = True
AdlibRegister("_Server", 100)
Case $hButtonServerStop
GUICtrlSetBkColor($hStatusLabel, 0xFF0000)
GUICtrlSetData($hStatusLabel, "Server Inaktiv")
AdlibUnRegister("_Server")
Case $hButtonInfo
MsgBox(64, $sServerTitle, StringFormat("Blume-HTTP-Server\nCopyright (2010): DjBlume\n\nLizenz: CC", ""))
EndSwitch
WEnd
Func _Server()
If $fServerRun Then
$iNewSocket = TCPAccept($iMainSocket)
If $iNewSocket >= 0 Then
For $iX = 0 To UBound($aSocket) - 1
If $aSocket[$iX] = -1 Then
$aSocket[$iX] = $iNewSocket
ExitLoop
EndIf
Next
EndIf
For $iX = 0 To UBound($aSocket) - 1
If $aSocket[$iX] = -1 Then ContinueLoop
$sNewData = TCPRecv($aSocket[$iX], 1024)
If @error Then
$aSocket[$iX] = -1
ContinueLoop
ElseIf $sNewData Then
$sBuffer[$iX] &= $sNewData
If StringInStr(StringStripCR($sBuffer[$iX]), @LF & @LF) Then
$sFirstLine = StringLeft($sBuffer[$iX], StringInStr($sBuffer[$iX], @LF))
$sRequestType = StringLeft($sFirstLine, StringInStr($sFirstLine, " ") - 1)
If $sRequestType = "GET" Then
$sRequest = StringTrimRight(StringTrimLeft($sFirstLine, 4), 11)
If StringInStr(StringReplace($sRequest, "\", "/"), "/.") Then
_HTTP_SendFileNotFoundError($aSocket[$iX])
Else
If $sRequest = "/" Then
$sRequest = "/index.html"
EndIf
$sRequest = StringReplace($sRequest, "/", "\")
If FileExists($sRootDir & "\" & $sRequest) Then
$sFileType = StringRight($sRequest, 4)
Switch $sFileType
Case "html", ".htm"
_HTTP_SendFile($aSocket[$iX], $sRootDir & $sRequest, "text/html")
Case ".css"
_HTTP_SendFile($aSocket[$iX], $sRootDir & $sRequest, "text/css")
Case ".jpg", "jpeg"
_HTTP_SendFile($aSocket[$iX], $sRootDir & $sRequest, "image/jpeg")
Case ".png"
_HTTP_SendFile($aSocket[$iX], $sRootDir & $sRequest, "image/png")
Case Else
_HTTP_SendFile($aSocket[$iX], $sRootDir & $sRequest, "application/octet-stream")
EndSwitch
Else
_HTTP_SendFileNotFoundError($aSocket[$iX])
EndIf
EndIf
[/autoit] [autoit][/autoit] [autoit]EndIf
[/autoit] [autoit][/autoit] [autoit]$sBuffer[$iX] = ""
$aSocket[$iX] = -1
EndIf
EndIf
Next
EndIf
EndFunc ;==>_Server
Und einmal als .ZIP Archiv inkl. Include & Script und einer Test-Index :): (v2) | autoit.de/wcf/attachment/10273/
Edit: v2 ist nun Draußen: Mann kann abjetzt AutoIt-Code in einer HTML unterbringen.
Dazu einfach:
hinzufügen.
Außerdem kann man beim Starten des Servers wählen, Ob AutoIt-Code erlaubt ist.