Initial commit – AufmaßCreater v2.35

This commit is contained in:
2026-06-10 11:03:43 +02:00
commit 84c933ea9c
2823 changed files with 490495 additions and 0 deletions
+833
View File
@@ -0,0 +1,833 @@
;~ #include <Array.au3>
;~ #include <Debug.au3>
; COM-Fehler anzeigen
Global $oMyError = ObjEvent("AutoIt.Error", "_ComErrFunc")
Global $g_iReqCounter = 0 ; Zähler für 01.header.txt, 01.response.txt, ...
Global $sUserAgent = "Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:146.0) Gecko/20100101 Firefox/146.0"
Global $sEVHOST = "https://evergabe.telekom.de"
Global $sPfadIni = @ScriptDir & "\daten\conf.ini"
;~ $sUsername = "fkramer_kpt" ;IniRead($sPfadIni, "EVergabe", "Benutzer", "xxx")
;~ $sPasswort = "Kpfk99LixCkpt!" ;IniRead($sPfadIni, "EVergabe", "Passwort", "xxx")
;~ $sRetrunLogin = _EV_Lobin_obj($sUsername, $sPasswort)
;~ If $sRetrunLogin = "True" Then
;~ ConsoleWrite("Login Erfolgreich" & @CRLF)
;~ _Write_to_Console("Login Erfolgreich")
;~ $sSMnr = "211293040"
;~
;~ $aSMDeatails = _EV_Search_SM_obj($oHttp, $sSMnr)
;~ _DebugArrayDisplay($aSMDeatails)
;~ _Write_to_Console($sHTML)
;~ Else
;~ _Write_to_Console("Login Fehler!!!")
;~
;~ EndIf
;test SM 208878700
Func _EV_Lobin_obj($sUsername, $sPasswort)
Global $oHttp = _HttpCreate()
Local $sHtml = _HttpGet($oHttp, $sEVHOST & "/public/login")
Local $sCsrfField = ""
Local $sCsrfValue = _ExtractCsrf($sHtml, $sCsrfField)
; 3. Cookies zu Debugzwecken
Local $sSetCookie = $oHttp.GetResponseHeader("Set-Cookie")
ConsoleWrite("+ Set-Cookie: " & $sSetCookie & @CRLF)
Local $sBody = _
"LoginForm[username]=" & _UrlEncode_obj($sUsername) & _
"&LoginForm[password]=" & _UrlEncode_obj($sPasswort) & _
"&" & $sCsrfField & "=" & _UrlEncode_obj($sCsrfValue)
_Write_to_Console($sBody)
;~ MsgBox(64, "", "")
$oHttp = _HttpPost($oHttp, $sEVHOST & "/public/login", $sBody)
Local $iStatus = $oHttp.Status
Local $sResp = $oHttp.ResponseText
If $iStatus <> 302 And StringInStr($sResp, "Logout") = 0 Then
ConsoleWrite("! Login fehlgeschlagen, HTTP " & $iStatus & @CRLF)
Return "False"
Else
Return "True"
EndIf
EndFunc ;==>_EV_Lobin_obj
Func _EV_Search_SM_obj($oHttp, $sSMnr)
If Not IsObj($oHttp) Then
MsgBox(16, "Fehler", "_EV_Search_SM: HTTP-Objekt ist ungültig.")
Return ""
EndIf
; hier wird DEINE _HttpGet()-Funktion genutzt
Local $sHtml = _HttpGet($oHttp, $sEVHOST & "/framework-agreement-call?OrderRecallSearch%5Bhead_line%5D=" & $sSMnr & "&OrderRecallSearch%5Bdocument_no%5D=&OrderRecallSearch%5Bincoming_date%5D=&OrderRecallSearch%5Border_date%5D=&OrderRecallSearch%5Bgeneral_agreement_id%5D=&OrderRecallSearch%5Bdocument_state%5D=-1", "https://www.evergabe.telekom.de/framework-agreement-call")
_Write_to_Console("Suche SM-Nr: | " & $sSMnr)
; optional: kurze Ausgabe, ob Nummer in der Seite vorkommt
If StringInStr($sHtml, $sSMnr) > 0 Then
_Write_to_Console("+ _EV_Search_SM: Treffer für " & $sSMnr & " gefunden." & @CRLF)
$aTitle = _EV_Abrufliste_GET_Title_obj($sHtml)
$aBedarfnr = _EV_Abrufliste_GET_Bedarfnr_obj($sHtml) ;SMnr
$aBelegEinDatum = _EV_Abrufliste_GET_Belegeingang_obj($sHtml) ;Eingang E-Vergabe
$aBelegnr = _EV_Abrufliste_GET_Belegnr_obj($sHtml) ;42Nr
$aAusfuehrungsfrist = _EV_Abrufliste_GET_Ausfuehrungsfrist_obj($sHtml) ;Ausführungsfrist
$aDetailID = _EV_Abrufliste_GET_DetailsID_obj($sHtml) ;DetailsID intern für E-Vergabe
$aRV = _EV_Abrufliste_GET_RV_obj($sHtml) ;Rahmenvertrag
$aStatus = _EV_Abrufliste_GET_Status_obj($sHtml) ;Status Angenommen Abgelehnt usw.
Dim $aReturn[UBound($aTitle)][8]
;~ _DebugArrayDisplay($aReturn)
For $i = 0 To UBound($aTitle) - 1
$aReturn[$i][0] = $aTitle[$i]
$aReturn[$i][1] = $aBedarfnr[$i]
$aReturn[$i][2] = $aBelegnr[$i]
$aReturn[$i][3] = $aDetailID[$i]
$aReturn[$i][4] = $aRV[$i]
$aReturn[$i][5] = $aBelegEinDatum[$i]
$aReturn[$i][6] = $aAusfuehrungsfrist[$i]
$aReturn[$i][7] = $aStatus[$i]
Next
;~ _DebugArrayDisplay($aReturn)
Return $aReturn
Else
_Write_to_Console("! _EV_Search_SM: Kein Treffer für " & $sSMnr & " gefunden." & @CRLF)
EndIf
EndFunc ;==>_EV_Search_SM_obj
Func _EV_Hole_Kopfdaten_obj()
$sUsername = IniRead(@ScriptDir & "\daten\conf.ini", "EVergabe", "Benutzer", "xxx")
$sPasswort = IniRead(@ScriptDir & "\daten\conf.ini", "EVergabe", "Passwort", "xxx")
$sRetrunLogin = _EV_Lobin_obj($sUsername, $sPasswort)
If $sRetrunLogin = "True" Then
;~ ConsoleWrite("Login Erfolgreich" & @CRLF)
_Write_to_Console("Login Erfolgreich")
$sSMnr = GUICtrlRead($kopf_tab_txt_smnr)
If $sSMnr = "" Then
_Write_to_Console("keine SMnr im Feld Kopfdaten")
Else
$aSMDeatails = _EV_Search_SM_obj($oHttp, $sSMnr)
;~ _DebugArrayDisplay($aSMDeatails)
;~ Row|Col 0|Col 1|Col 2|Col 3|Col 4|Col 5|Col 6|Col 7
;~ Row 0|Bahnhofstr. 16-18 78224 Singen SM 209173009|209173009|4213308114|19487501|4650014601|30.01.2025|17.05.2025|Angenommen
If UBound($aSMDeatails) > 1 Then
;~ ConsoleWrite(UBound($aArrayList) & @CRLF)
$sDetailsID = _create_Gui_Ausw($aSMDeatails)
;~ MsgBox(64, "123124", $sDetailsID)
$aAspadetails = _EV_Aspa_obj($sDetailsID)
;~ _DebugArrayDisplay($aAspadetails)
GUICtrlSetData($kopf_TAB_txt_aspa, $aAspadetails[0])
GUICtrlSetData($kopf_TAB_txt_telnr, $aAspadetails[2])
GUICtrlSetData($kopf_TAB_txt_detailsID, $sDetailsID)
_Write_to_Console("hole Kopfdaten erledigt.")
Else
$aAspadetails = _EV_Aspa_obj($aSMDeatails[0][3])
;~ _DebugArrayDisplay($aAspadetails)
GUICtrlSetData($kopf_TAB_txt_aspa, $aAspadetails[0])
GUICtrlSetData($kopf_TAB_txt_abrufnr, $aSMDeatails[0][2])
GUICtrlSetData($kopf_TAB_datum_start, $aSMDeatails[0][5])
GUICtrlSetData($kopf_TAB_txt_datum_ende, $aSMDeatails[0][6])
GUICtrlSetData($kopf_TAB_txt_detailsID, $aSMDeatails[0][3])
GUICtrlSetData($kopf_TAB_txt_telnr, $aAspadetails[2])
_Write_to_Console("hole Kopfdaten erledigt.")
EndIf
EndIf
Else
_Write_to_Console("Login Fehler!!!")
EndIf
;~ _EV_Logout()
EndFunc ;==>_EV_Hole_Kopfdaten_obj
Func _EV_Pos_eintragen_obj($aInhalt)
$sDatum = GUICtrlRead($kopf_tab_txt_datum)
$sBaustelle = GUICtrlRead($kopf_tab_txt_baustelle)
$sBauabschnitt = GUICtrlRead($kopf_tab_txt_bauabschnitt)
$sAbrufNR = GUICtrlRead($kopf_tab_txt_abrufnr)
$sSMnr = GUICtrlRead($kopf_tab_txt_smnr)
$sVertrag = GUICtrlRead($kopf_tab_chb_vertrag)
$sStartDatum = GUICtrlRead($kopf_tab_datum_start)
$sEndDatum = GUICtrlRead($kopf_tab_txt_datum_ende)
IniWrite(@ScriptDir & "\daten\conf.ini", "Kopfdaten", "Datum", $sDatum)
IniWrite(@ScriptDir & "\daten\conf.ini", "Kopfdaten", "Baustelle", $sBaustelle)
IniWrite(@ScriptDir & "\daten\conf.ini", "Kopfdaten", "Bauabschnitt", $sBauabschnitt)
IniWrite(@ScriptDir & "\daten\conf.ini", "Kopfdaten", "AbrufNr", $sAbrufNR)
IniWrite(@ScriptDir & "\daten\conf.ini", "Kopfdaten", "SMNr", $sSMnr)
IniWrite(@ScriptDir & "\daten\conf.ini", "Kopfdaten", "Vertrag", $sVertrag)
IniWrite(@ScriptDir & "\daten\conf.ini", "Kopfdaten", "StartZ", $sStartDatum)
IniWrite(@ScriptDir & "\daten\conf.ini", "Kopfdaten", "EndZ", $sEndDatum)
$sUsername = IniRead(@ScriptDir & "\daten\conf.ini", "EVergabe", "Benutzer", "xxx")
$sPasswort = IniRead(@ScriptDir & "\daten\conf.ini", "EVergabe", "Passwort", "xxx")
$sRetrunLogin = _EV_Lobin_obj($sUsername, $sPasswort)
If $sRetrunLogin = "True" Then
;~ ConsoleWrite("Login Erfolgreich" & @CRLF)
_Write_to_Console("Login Erfolgreich")
Global $sDetailsID
$sSMnr = IniRead(@ScriptDir & "\daten\conf.ini", "Kopfdaten", "SMNr", "")
If IsArray($aInhalt) Then
_Write_to_Console("Suche SM-Nr: | " & $sSMnr)
$aArrayList = _EV_Search_SM_obj($oHttp, $sSMnr)
;~ _DebugArrayDisplay($aArrayList)
If UBound($aArrayList) > 1 Then
$sDetailsID = _create_Gui_Ausw($aArrayList)
Else
$sDetailsID = $aArrayList[0][3]
EndIf
_Write_to_Console("DetailsID: " & $sDetailsID)
_Write_to_Console("Öffne DetailsID : | " & StringReplace($sDetailsID, "&c=1", ""))
;~ $sHtml = _send_WinhttpS_GET($aHosts[1][1], "/framework-agreement-call/details?id=" & $sDetailsID & "&c=1", "https://www.evergabe.telekom.de/")
Local $sHtml = _HttpGet($oHttp, $sEVHOST & "/framework-agreement-call/details?id=" & $sDetailsID & "&c=1", "https://www.evergabe.telekom.de/framework-agreement-call")
If Not StringInStr($sHtml, 'LERF nicht möglich') Then
;LEB anlegen
;~ $sHtml = _send_WinhttpS_GET($aHosts[1][1], "/sheet/index?c=1&importId=" & $sDetailsID, "https://www.evergabe.telekom.de/" & "/framework-agreement-call/details?id=" & $sDetailsID & "&c=1")
$sHtml = _HttpGet($oHttp, $sEVHOST & "/sheet/index?c=1&importId=" & $sDetailsID, "https://www.evergabe.telekom.de/" & "/framework-agreement-call/details?id=" & $sDetailsID & "&c=1")
;~ $sHtml = _send_WinhttpS_GET($aHosts[1][1], "/sheet/create-sheet?c=1&id=" & $sDetailsID, "https://www.evergabe.telekom.de/" & "/sheet/index?c=1&importId=" & $sDetailsID) ;evtl nicht direkt eingabe
$sHtml = _HttpGet($oHttp, $sEVHOST & "/sheet/create-sheet?c=1&id=" & $sDetailsID, "https://www.evergabe.telekom.de/" & "/sheet/index?c=1&importId=" & $sDetailsID) ;evtl nicht direkt eingabe
;~ $sCSRF = _EV_GET_CSRF($sHtml)
;~ Local $sCSRF = "False"
Local $sCsrfField = ""
Local $sCsrfValue = _ExtractCsrf($sHtml, $sCsrfField)
$sLeist_zeitv = IniRead(@ScriptDir & "\daten\conf.ini", "Kopfdaten", "StartZ", "")
$sLeist_zeitb = IniRead(@ScriptDir & "\daten\conf.ini", "Kopfdaten", "EndZ", "")
; mit UrlEncode
$sLeistungsort1 = IniRead(@ScriptDir & "\daten\conf.ini", "Kopfdaten", "Baustelle", "")
If StringLen($sLeistungsort1) >= 25 Then
$sLeistungsortso = $sLeistungsort1
$sLeistungsort1 = StringMid($sLeistungsort1, 1, 25)
Else
$sLeistungsortso = $sLeistungsort1
EndIf
$sLeistungsort = _URIEncode($sLeistungsort1) ; max 25 Zeichen
$sSachbearbeiter = IniRead(@ScriptDir & "\daten\conf.ini", "EVergabe", "Name", "xxx")
If StringLen($sSachbearbeiter) >= 12 Then
$sSachbearbeiter_temp = $sSachbearbeiter
$sSachbearbeiter = StringMid($sSachbearbeiter_temp, 1, 12)
;~ $sSachbearbeiter = $sSachbearbeiter_temp
EndIf
$sBauabschnitt = IniRead(@ScriptDir & "\daten\conf.ini", "Kopfdaten", "Bauabschnitt", "")
If StringLen($sBauabschnitt) >= 40 Then
$sBauabschnitt = StringMid($sBauabschnitt, 1, 39)
EndIf
$sBauabschnitt = _URIEncode($sBauabschnitt)
$sKurztext = "SM " ; max 40 Zeichen
$sKurztext = StringReplace($sKurztext, "SM ", "SM " & $sSMnr)
If StringLen($sKurztext) >= 40 Then
$sKurztext = StringMid($sKurztext, 1, 39)
EndIf
$sKurztext = _URIEncode($sKurztext)
; mit UrlEncode
$s_SMnrINi = IniRead(@ScriptDir & "\daten\conf.ini", "Kopfdaten", "SMNr", $sSMnr)
$sLangtext = IniRead(@ScriptDir & "\daten\conf.ini", "Kopfdaten", "Baustelle", "") & " " & IniRead(@ScriptDir & "\daten\conf.ini", "Kopfdaten", "Bauabschnitt", "") & " " & "SM " & $s_SMnrINi & @CRLF & GUICtrlRead($tab_plan_ed_SListe)
;~ $sLangtext = IniRead(@ScriptDir & "\daten\conf.ini", "Kopfdaten", "Baustelle", "") & " " & IniRead(@ScriptDir & "\daten\conf.ini", "Kopfdaten", "Bauabschnitt", "") & " " & "SM " & $sSMnr; alt
$sLangtext = _URIEncode($sLangtext)
Sleep(1000)
;~ MsgBox(64, "Langtext", $sLangtext)
$sHeader = "Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,*/*;q=0.8" & @CRLF & "Accept-Language: de,en-US;q=0.7,en;q=0.3" & @CRLF & "Accept-Encoding: gzip, deflate, br" & @CRLF & "Content-Type: application/x-www-form-urlencoded" & @CRLF & "Origin: https://www.evergabe.telekom.de" & @CRLF & "Upgrade-Insecure-Requests: 1" & @CRLF & "Sec-Fetch-Dest: document" & @CRLF & "Sec-Fetch-Mode: navigate" & @CRLF & "Sec-Fetch-Site: same-origin" & @CRLF & "Sec-Fetch-User: ?1" & @CRLF
If GUICtrlRead($kopf_TAB_rd_teilauf) = $GUI_CHECKED Then
$sPost = "_csrf=" & $sCsrfValue & "%3D%3D&BapiEssr%5Bfinal%5D=&BapiEssr%5Bfinal%5D=&BapiEssr%5Blzvon%5D=" & $sLeist_zeitv & "&BapiEssr%5Blzbis%5D=" & $sLeist_zeitb & "&BapiEssr%5Bdlort%5D=" & $sLeistungsort & "&BapiEssr%5Bsbnaman%5D=" & $sSachbearbeiter & "&BapiEssr%5Btxz01%5D=" & $sBauabschnitt & "&BapiEssr%5Bdescription%5D=" & $sLangtext & "&save+sheets="
EndIf
If GUICtrlRead($kopf_TAB_rd_schluss) = $GUI_CHECKED Then
$sPost = "_csrf=" & $sCsrfValue & "%3D%3D&BapiEssr%5Bfinal%5D=&BapiEssr%5Bfinal%5D=X&BapiEssr%5Blzvon%5D=" & $sLeist_zeitv & "&BapiEssr%5Blzbis%5D=" & $sLeist_zeitb & "&BapiEssr%5Bdlort%5D=" & $sLeistungsort & "&BapiEssr%5Bsbnaman%5D=" & $sSachbearbeiter & "&BapiEssr%5Btxz01%5D=" & $sBauabschnitt & "&BapiEssr%5Bdescription%5D=" & $sLangtext & "&save+sheets="
Else
$sPost = "_csrf=" & $sCsrfValue & "%3D%3D&BapiEssr%5Bfinal%5D=&BapiEssr%5Bfinal%5D=&BapiEssr%5Blzvon%5D=" & $sLeist_zeitv & "&BapiEssr%5Blzbis%5D=" & $sLeist_zeitb & "&BapiEssr%5Bdlort%5D=" & $sLeistungsort & "&BapiEssr%5Bsbnaman%5D=" & $sSachbearbeiter & "&BapiEssr%5Btxz01%5D=" & $sBauabschnitt & "&BapiEssr%5Bdescription%5D=" & $sLangtext & "&save+sheets="
EndIf
;weiter bei EVergabe.au3 in Zeile 386
;~ $aHTML = _WinHttpSimpleSSLRequest($aHosts[1][1], "POST", "/sheet/create-sheet?c=1&iid=" & $sDetailsID, "https://www.evergabe.telekom.de/sheet/create-sheet?c=1&iid=" & $sDetailsID, $sPost, $sHeader, True)
$sHtml = _HttpPost($oHttp, $sEVHOST & "/sheet/create-sheet?c=1&iid=" & $sDetailsID, $sPost, "https://www.evergabe.telekom.de/sheet/create-sheet?c=1&iid=" & $sDetailsID)
$sRespBody = $oHttp.ResponseText
;~ ClipPut($sHtml)
;~ MsgBox(64, "stop", "stop")
$aSheetID = StringRegExp($sRespBody, 'sheetId=(.*)">Kopfdaten', 3)
;~ _DebugArrayDisplay($aSheetID)
If IsArray($aSheetID) Then
Global $iSheetID = $aSheetID[0]
For $i = 0 To UBound($aInhalt) - 1
$sHtml = _HttpGet($oHttp, $sEVHOST & "/sheet-position/index?c=1&sheetId=" & $aSheetID[0], "https://www.evergabe.telekom.de/" & "/sheet/index?c=1&importId=" & $sDetailsID) ;evtl nicht direkt eingabe
$sPositionNr = $aInhalt[$i][1]
Local $sCsrfField = ""
Local $sCsrfValue = _ExtractCsrf($sHtml, $sCsrfField)
$sPost = "_csrf=" & $sCsrfValue & "%3D%3D&ServicePosition%5Bnumber%5D=" & $sPositionNr & "&insertPosition=0"
;~ $aHTML = _WinHttpSimpleSSLRequest($aHosts[1][1], "POST", "/sheet-position/index?c=1&sheetId=" & $aSheetID[0], "https://www.evergabe.telekom.de/sheet-position/index?c=1&sheetId=" & $aSheetID[0], $sPost, "", True)
$sHtml = _HttpPost($oHttp, $sEVHOST & "/sheet-position/index?c=1&sheetId=" & $aSheetID[0], $sPost, "https://www.evergabe.telekom.de/sheet-position/index?c=1&sheetId=" & $aSheetID[0])
$sHtml = $oHttp.ResponseText
;~ ClipPut($sHtml)
;~ MsgBox(64, "stop", "stop")
$aPosID = StringRegExp($sHtml, 'positionId=([^&]+)', 3)
If IsArray($aPosID) Then
$iSheetID = $aSheetID[0]
;~ $sHTML = _send_WinhttpS_GET($aHosts[1][1], "/sheet-position/create?insertPosition=0&positionId=" & $aPosID[0] & "&c=1&sheetId=" & $iSheetID, "")
$sHtml = _HttpGet($oHttp, $sEVHOST & "/sheet-position/create?insertPosition=0&positionId=" & $aPosID[0] & "&c=1&sheetId=" & $iSheetID, "https://www.evergabe.telekom.de/" & "/sheet/index?c=1&importId=" & $sDetailsID) ;evtl nicht direkt eingabe
Local $sCsrfField = ""
Local $sCsrfValue = _ExtractCsrf($sHtml, $sCsrfField)
Local $sCSRF = $sCsrfValue
Select
Case $aInhalt[$i][7] = "ST"
;bei Stück
_EV_ADD_ST_insert_obj($i, $aInhalt[$i][0], $aInhalt[$i][9], $aInhalt[$i][10], $aPosID[0], $iSheetID, $sCSRF, $aInhalt[$i][1] & "|" & $aInhalt[$i][8])
;~ _EV_ADD_ST_insert($aInhalt[$i][0], $aInhalt[$i][9], $aInhalt[$i][10], $aPosID[0], $iSheetID, $sCSRF)
;~ GUICtrlSetData($lbl_status,"Position: "&$aInhalt[$i][1] & " "& $aInhalt[$i][0] " hinzugefügt!")
Case $aInhalt[$i][7] = "M"
; bei Meter
_EV_ADD_M_insert_obj($i, $aInhalt[$i][0], $aInhalt[$i][9], $aInhalt[$i][2], $aInhalt[$i][3], $aPosID[0], $iSheetID, $sCSRF, $aInhalt[$i][1] & "|" & $aInhalt[$i][8]) ; alt
;~ _EV_ADD_M_insert($aInhalt[$i][0], $aInhalt[$i][9], $aInhalt[$i][2], $aInhalt[$i][3], $aPosID[0], $iSheetID, $sCSRF, $aInhalt[$i][1] & "|" & $aInhalt[$i][8])
;~ GUICtrlSetData($lbl_status,"Position: "&$aInhalt[$i][1] & " "& $aInhalt[$i][0] " hinzugefügt!")
Case $aInhalt[$i][7] = "M2"
; bei m2
_EV_ADD_M2_insert_obj($i, $aInhalt[$i][0], $aInhalt[$i][9], $aInhalt[$i][2], $aInhalt[$i][3], $aInhalt[$i][4], $aPosID[0], $iSheetID, $sCSRF, $aInhalt[$i][1] & "|" & $aInhalt[$i][8])
;~ GUICtrlSetData($lbl_status,"Position: "&$aInhalt[$i][1] & " "& $aInhalt[$i][0] " hinzugefügt!")
Case $aInhalt[$i][7] = "M3"
;m3
_EV_ADD_M3_insert_obj($i, $aInhalt[$i][0], $aInhalt[$i][9], $aInhalt[$i][2], $aInhalt[$i][3], $aInhalt[$i][4], $aInhalt[$i][5], $aPosID[0], $iSheetID, $sCSRF, $aInhalt[$i][1] & "|" & $aInhalt[$i][8])
;~ GUICtrlSetData($lbl_status,"Position: "&$aInhalt[$i][1] & " "& $aInhalt[$i][0] " hinzugefügt!")
Case $aInhalt[$i][7] = "STD"
; STD
_EV_ADD_STD_insert_obj($i, $aInhalt[$i][0], $aInhalt[$i][9], $aInhalt[$i][10], $aPosID[0], $iSheetID, $sCSRF, $aInhalt[$i][1] & "|" & $aInhalt[$i][8])
;~ GUICtrlSetData($lbl_status,"Position: "&$aInhalt[$i][1] & " "& $aInhalt[$i][0] " hinzugefügt!")
Case $aInhalt[$i][7] = "LE"
; LE
_EV_ADD_LE_insert_obj($i, $aInhalt[$i][0], $aInhalt[$i][9], $aInhalt[$i][10], $aPosID[0], $iSheetID, $sCSRF, $aInhalt[$i][1] & "|" & $aInhalt[$i][8])
;~ GUICtrlSetData($lbl_status,"Position: "&$aInhalt[$i][1] & " "& $aInhalt[$i][0] " hinzugefügt!")
EndSelect
EndIf
Next
Else
_Write_to_Console("sheetID link=> " & $sHtml & " Pattern: " & "sheetId=(.*)")
EndIf
EndIf
Else
_Write_to_Console("kein Aufmaß gefunden!")
EndIf
Else
_Write_to_Console("Login Fehler!!!")
EndIf
EndFunc ;==>_EV_Pos_eintragen_obj
Func _EV_ADD_LE_insert_obj($iZeile, $sAbschnitt, $sLangtext, $iLE, $iPosNrID, $iSheetID, $sCSRF, $sPosNrKurztext)
If StringLen($sAbschnitt) >= 25 Then
$sAbschnitt = StringMid($sAbschnitt, 1, 25)
EndIf
$sAbschnitt = _UrlEncode_obj($sAbschnitt)
$sLongText = _UrlEncode_obj($sLangtext) ; max 40
$iLE = StringReplace($iLE, ",", "%2C")
$sPost = "_csrf=" & $sCSRF & "%3D%3D&ServicePosition%5B0%5D%5BsectionText%5D=" & $sAbschnitt & "&ServicePosition%5B0%5D%5Bquantity%5D=" & $iLE & "&ServicePosition%5B0%5D%5BlongText%5D=" & $sLongText & "&ServicePosition%5B0%5D%5Bid%5D=" & $iPosNrID & "&clientId=1&sheetId=" & $iSheetID & "&insertPosition=" & $iZeile & "&save="
;~ &ServicePosition%5B0%5D%5BsectionText%5D=VAO &ServicePosition%5B0%5D%5Bquantity%5D=100 &ServicePosition%5B0%5D%5BlongText%5D=VAO &ServicePosition%5B0%5D%5Bid%5D=43945349 &clientId=1&sheetId=0006425482&insertPosition=0&save=
;~ $sHeader = "Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8" & @CRLF & "Accept-Language: de,en-US;q=0.7,en;q=0.3" & @CRLF & "Accept-Encoding: gzip, deflate, br" & @CRLF & "Content-Type: application/x-www-form-urlencoded" & @CRLF
;~ $aHTML = _WinHttpSimpleSSLRequest($aHosts[1][1], "POST", "/sheet-position/create?insertPosition=" & $iZeile & "&positionId=" & $iPosNrID & "&c=1&sheetId=" & $iSheetID, "https://www.evergabe.telekom.de//sheet-position/create?insertPosition=0&positionId=" & $iPosNrID & "&c=1&sheetId=" & $iSheetID, $sPost, $sHeader, True)
$sHtml = _HttpPost($oHttp, $sEVHOST & "/sheet-position/create?insertPosition=" & $iZeile & "&positionId=" & $iPosNrID & "&c=1&sheetId=" & $iSheetID, $sPost, "https://www.evergabe.telekom.de//sheet-position/create?insertPosition=0&positionId=" & $iPosNrID & "&c=1&sheetId=" & $iSheetID)
$sHtml = $oHttp.ResponseText
;~ ClipPut($sHtml)
;~ MsgBox(64, "stop", "stop")
If StringInStr($sHtml, "erfolgreich gespeichert") Then
_Write_to_Console($sPosNrKurztext & "|" & "... eingetragen!")
Else
_Write_to_Console($sPosNrKurztext & "|" & "... Fehlgeschlagen")
EndIf
EndFunc ;==>_EV_ADD_LE_insert_obj
Func _EV_ADD_STD_insert_obj($iZeile, $sAbschnitt, $sLangtext, $iStueck, $iPosNrID, $iSheetID, $sCSRF, $sPosNrKurztext)
If StringLen($sAbschnitt) >= 25 Then
$sAbschnitt = StringMid($sAbschnitt, 1, 25)
EndIf
$sAbschnitt = _UrlEncode_obj($sAbschnitt)
$sLongText = _UrlEncode_obj($sLangtext) ; max 40
$iStueck = StringReplace($iStueck, ",", "%2C")
;~ $sHeader = "Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8" & @CRLF & "Accept-Language: de,en-US;q=0.7,en;q=0.3" & @CRLF & "Accept-Encoding: gzip, deflate, br" & @CRLF & "Content-Type: application/x-www-form-urlencoded" & @CRLF
$sPost = "_csrf=" & $sCSRF & "%3D%3D&ServicePosition%5B0%5D%5BsectionText%5D=" & $sAbschnitt & "&ServicePosition%5B0%5D%5Bquantity%5D=" & $iStueck & "&ServicePosition%5B0%5D%5BlongText%5D=" & $sLongText & "&ServicePosition%5B0%5D%5Bid%5D=" & $iPosNrID & "&clientId=1&sheetId=" & $iSheetID & "&insertPosition=" & $iZeile & "&save="
;~ $aHTML = _WinHttpSimpleSSLRequest($aHosts[1][1], "POST", "/sheet-position/create?insertPosition=" & $iZeile & "&positionId=" & $iPosNrID & "&c=1&sheetId=" & $iSheetID, "https://www.evergabe.telekom.de/sheet-position/create?insertPosition=0&positionId=" & $iPosNrID & "&c=1&sheetId=" & $iSheetID, $sPost, $sHeader, True)
$sHtml = _HttpPost($oHttp, $sEVHOST & "/sheet-position/create?insertPosition=" & $iZeile & "&positionId=" & $iPosNrID & "&c=1&sheetId=" & $iSheetID, $sPost, "https://www.evergabe.telekom.de//sheet-position/create?insertPosition=0&positionId=" & $iPosNrID & "&c=1&sheetId=" & $iSheetID)
$sHtml = $oHttp.ResponseText
;~ ClipPut($sHtml)
;~ MsgBox(64, "stop", "stop")
If StringInStr($sHtml, "erfolgreich gespeichert") Then
_Write_to_Console($sPosNrKurztext & "|" & "... eingetragen!")
Else
_Write_to_Console($sPosNrKurztext & "|" & "... Fehlgeschlagen")
EndIf
EndFunc ;==>_EV_ADD_STD_insert_obj
Func _EV_ADD_M3_insert_obj($iZeile, $sAbschnitt, $sLangtext, $sFaktor, $iLang, $iBreit, $iTief, $iPosNrID, $iSheetID, $sCSRF, $sPosNrKurztext)
If StringLen($sAbschnitt) >= 25 Then
$sAbschnitt = StringMid($sAbschnitt, 1, 25)
EndIf
$sAbschnitt = _UrlEncode_obj($sAbschnitt)
$sFaktor = StringReplace($sFaktor, ",", "%2C")
$sLongText = _UrlEncode_obj($sLangtext) ; max 40
$iLang = StringReplace($iLang, ",", "%2C")
$iBreit = StringReplace($iBreit, ",", "%2C")
$iTief = StringReplace($iTief, ",", "%2C")
$sPost = "_csrf=" & $sCSRF & "%3D%3D&ServicePosition%5B0%5D%5BsectionText%5D=" & $sAbschnitt & "&ServicePosition%5B0%5D%5BformulaSymbol%5D=MV&ServicePosition%5B0%5D%5BformulaValueMultiplier%5D=" & $sFaktor & "&ServicePosition%5B0%5D%5BformulaValueLength%5D=" & $iLang & "&ServicePosition%5B0%5D%5BformulaValueWidth%5D=" & $iBreit & "&ServicePosition%5B0%5D%5BformulaValueDepth%5D=" & $iTief & "&ServicePosition%5B0%5D%5BlongText%5D=" & $sLongText & "&ServicePosition%5B0%5D%5Bid%5D=" & $iPosNrID & "&clientId=1&sheetId=" & $iSheetID & "&insertPosition=" & $iZeile & "&save="
;~ $sHeader = "Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8" & @CRLF & "Accept-Language: de,en-US;q=0.7,en;q=0.3" & @CRLF & "Accept-Encoding: gzip, deflate, br" & @CRLF & "Content-Type: application/x-www-form-urlencoded" & @CRLF
;~ $aHTML = _WinHttpSimpleSSLRequest($aHosts[1][1], "POST", "/sheet-position/create?insertPosition=" & $iZeile & "&positionId=" & $iPosNrID & "&c=1&sheetId=" & $iSheetID, "https://www.evergabe.telekom.de/sheet-position/create?insertPosition=0&positionId=" & $iPosNrID & "&c=1&sheetId=" & $iSheetID, $sPost, $sHeader, True)
;~ _DebugArrayDisplay($aHTML)
$sHtml = _HttpPost($oHttp, $sEVHOST & "/sheet-position/create?insertPosition=" & $iZeile & "&positionId=" & $iPosNrID & "&c=1&sheetId=" & $iSheetID, $sPost, "https://www.evergabe.telekom.de//sheet-position/create?insertPosition=0&positionId=" & $iPosNrID & "&c=1&sheetId=" & $iSheetID)
$sHtml = $oHttp.ResponseText
If StringInStr($sHtml, "erfolgreich gespeichert") Then
_Write_to_Console($sPosNrKurztext & "|" & "... eingetragen!")
Else
_Write_to_Console($sPosNrKurztext & "|" & "... Fehlgeschlagen")
EndIf
EndFunc ;==>_EV_ADD_M3_insert_obj
Func _EV_ADD_M2_insert_obj($iZeile, $sAbschnitt, $sLangtext, $sFaktor, $iLang, $iBreit, $iPosNrID, $iSheetID, $sCSRF, $sPosNrKurztext)
If StringLen($sAbschnitt) >= 25 Then
$sAbschnitt = StringMid($sAbschnitt, 1, 25)
EndIf
$sAbschnitt = _UrlEncode_obj($sAbschnitt)
;~ $sFaktor = StringReplace($sFaktor, ",", ".")
;~ If $sFaktor = "1.0" Then
;~ $sFaktor = "1"
;~ EndIf
;~ If $sFaktor = "1,0" Then
;~ $sFaktor = "1"
;~ EndIf
$sFaktor = StringReplace($sFaktor, ",", "%2C")
$sLongText = _UrlEncode_obj($sLangtext) ; max 40
$iLang = StringReplace($iLang, ",", "%2C")
$iBreit = StringReplace($iBreit, ",", "%2C")
;~ $sHeader = "Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8" & @CRLF & "Accept-Language: de,en-US;q=0.7,en;q=0.3" & @CRLF & "Accept-Encoding: gzip, deflate, br" & @CRLF & "Content-Type: application/x-www-form-urlencoded" & @CRLF
$sPost = "_csrf=" & $sCSRF & "%3D%3D&ServicePosition%5B0%5D%5BsectionText%5D=" & $sAbschnitt & "&ServicePosition%5B0%5D%5BformulaSymbol%5D=MF&ServicePosition%5B0%5D%5BformulaValueMultiplier%5D=" & $sFaktor & "&ServicePosition%5B0%5D%5BformulaValueLength%5D=" & $iLang & "&ServicePosition%5B0%5D%5BformulaValueWidth%5D=" & $iBreit & "&ServicePosition%5B0%5D%5BlongText%5D=" & $sLongText & "&ServicePosition%5B0%5D%5Bid%5D=" & $iPosNrID & "&clientId=1&sheetId=" & $iSheetID & "&insertPosition=" & $iZeile & "&save="
;~ $aHTML = _WinHttpSimpleSSLRequest($aHosts[1][1], "POST", "/sheet-position/create?insertPosition=" & $iZeile & "&positionId=" & $iPosNrID & "&c=1&sheetId=" & $iSheetID, "https://www.evergabe.telekom.de/sheet-position/create?insertPosition=0&positionId=" & $iPosNrID & "&c=1&sheetId=" & $iSheetID, $sPost, $sHeader, True)
;~ _DebugArrayDisplay($aHTML)
$sHtml = _HttpPost($oHttp, $sEVHOST & "/sheet-position/create?insertPosition=" & $iZeile & "&positionId=" & $iPosNrID & "&c=1&sheetId=" & $iSheetID, $sPost, "https://www.evergabe.telekom.de//sheet-position/create?insertPosition=0&positionId=" & $iPosNrID & "&c=1&sheetId=" & $iSheetID)
$sHtml = $oHttp.ResponseText
;~ ClipPut($sHtml)
;~ MsgBox(64, "stop", "stop")
If StringInStr($sHtml, "erfolgreich gespeichert") Then
_Write_to_Console($sPosNrKurztext & "|" & "... eingetragen!")
Else
_Write_to_Console($sPosNrKurztext & "|" & "... Fehlgeschlagen")
EndIf
EndFunc ;==>_EV_ADD_M2_insert_obj
Func _EV_ADD_ST_insert_obj($iZeile, $sAbschnitt, $sLangtext, $iStueck, $iPosNrID, $iSheetID, $sCSRF, $sPosNrKurztext)
If StringLen($sAbschnitt) >= 25 Then
$sAbschnitt = StringMid($sAbschnitt, 1, 25)
EndIf
$sAbschnitt = _UrlEncode_obj($sAbschnitt)
$sLongText = _UrlEncode_obj($sLangtext) ; max 40
$iStueck = StringReplace($iStueck, ",", "%2C")
;~ $sHeader = "Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8" & @CRLF & "Accept-Language: de,en-US;q=0.7,en;q=0.3" & @CRLF & "Accept-Encoding: gzip, deflate, br" & @CRLF & "Content-Type: application/x-www-form-urlencoded" & @CRLF
$sPost = "_csrf=" & $sCSRF & "%3D%3D&ServicePosition%5B0%5D%5BsectionText%5D=" & $sAbschnitt & "&ServicePosition%5B0%5D%5Bquantity%5D=" & $iStueck & "&ServicePosition%5B0%5D%5BlongText%5D=" & $sLongText & "&ServicePosition%5B0%5D%5Bid%5D=" & $iPosNrID & "&clientId=1&sheetId=" & $iSheetID & "&insertPosition=" & $iZeile & "&save="
;~ $aHTML = _WinHttpSimpleSSLRequest($aHosts[1][1], "POST", "/sheet-position/create?insertPosition=" & $iZeile & "&positionId=" & $iPosNrID & "&c=1&sheetId=" & $iSheetID, "https://www.evergabe.telekom.de/sheet-position/create?insertPosition=0&positionId=" & $iPosNrID & "&c=1&sheetId=" & $iSheetID, $sPost, $sHeader, True)
;~ _DebugArrayDisplay($aHTML)
$sHtml = _HttpPost($oHttp, $sEVHOST & "/sheet-position/create?insertPosition=" & $iZeile & "&positionId=" & $iPosNrID & "&c=1&sheetId=" & $iSheetID, $sPost, "https://www.evergabe.telekom.de//sheet-position/create?insertPosition=0&positionId=" & $iPosNrID & "&c=1&sheetId=" & $iSheetID)
$sHtml = $oHttp.ResponseText
;~ ClipPut($sHtml)
;~ MsgBox(64, "stop", "stop")
If StringInStr($sHtml, "erfolgreich gespeichert") Then
_Write_to_Console($sPosNrKurztext & "|" & "... eingetragen!")
Else
_Write_to_Console($sPosNrKurztext & "|" & "... Fehlgeschlagen")
EndIf
EndFunc ;==>_EV_ADD_ST_insert_obj
Func _EV_ADD_M_insert_obj($iZeile, $sAbschnitt, $sLangtext, $sFaktor, $sMeter, $iPosNrID, $iSheetID, $sCSRF, $sPosNrKurztext)
If StringLen($sAbschnitt) >= 25 Then
$sAbschnitt = StringMid($sAbschnitt, 1, 25)
EndIf
$sAbschnitt = _UrlEncode_obj($sAbschnitt)
$sFaktor = StringReplace($sFaktor, ",", "%2C")
$sMeter = StringReplace($sMeter, ",", "%2C")
$sLongText = _UrlEncode_obj($sLangtext) ; max 40
;~ $sHeader = "Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8" & @CRLF & "Accept-Language: de,en-US;q=0.7,en;q=0.3" & @CRLF & "Accept-Encoding: gzip, deflate, br" & @CRLF & "Content-Type: application/x-www-form-urlencoded" & @CRLF & "Origin: https://www.evergabe.telekom.de" & @CRLF
$sPost = "_csrf=" & $sCSRF & "%3D%3D&ServicePosition%5B0%5D%5BsectionText%5D=" & $sAbschnitt & "&ServicePosition%5B0%5D%5BformulaSymbol%5D=ME&ServicePosition%5B0%5D%5BformulaValueMultiplier%5D=" & $sFaktor & "&ServicePosition%5B0%5D%5BformulaValueLength%5D=" & $sMeter & "&ServicePosition%5B0%5D%5BlongText%5D=" & $sLongText & "&ServicePosition%5B0%5D%5Bid%5D=" & $iPosNrID & "&clientId=1&sheetId=" & $iSheetID & "&insertPosition=" & $iZeile & "&save="
;~ ;&ServicePosition[0][sectionText]=Abschnitt&ServicePosition[0][formulaSymbol]=ME&ServicePosition[0][formulaValueMultiplier]=1&ServicePosition[0][formulaValueLength]=95&ServicePosition[0][longText]=Langtext&ServicePosition[0][id]=82627311&clientId=1&sheetId=0008943838&insertPosition=&save=
;~ ConsoleWrite($sPost & @crlf)
;~ MsgBox(64, "", "")
;~ $aHTML = _WinHttpSimpleSSLRequest($aHosts[1][1], "POST", "/sheet-position/create?insertPosition=" & $iZeile & "&positionId=" & $iPosNrID & "&c=1&per-page=20&sheetId=" & $iSheetID, "https://www.evergabe.telekom.de/sheet-position/create?insertPosition=0&positionId=" & $iPosNrID & "&c=1&sheetId=" & $iSheetID, $sPost, $sHeader, True)
;~ _DebugArrayDisplay($aHTML)
$sHtml = _HttpPost($oHttp, $sEVHOST & "/sheet-position/create?insertPosition=" & $iZeile & "&positionId=" & $iPosNrID & "&c=1&sheetId=" & $iSheetID, $sPost, "https://www.evergabe.telekom.de//sheet-position/create?insertPosition=0&positionId=" & $iPosNrID & "&c=1&sheetId=" & $iSheetID)
$sHtml = $oHttp.ResponseText
;~ ClipPut($sHtml)
;~ MsgBox(64, "stop", "stop")
If StringInStr($sHtml, "erfolgreich gespeichert") Then
_Write_to_Console($sPosNrKurztext & "|" & "... eingetragen!")
Else
_Write_to_Console($sPosNrKurztext & "|" & "... Fehlgeschlagen")
EndIf
EndFunc ;==>_EV_ADD_M_insert_obj
Func _EV_Aspa_obj($sDetailsID)
$sUrl = "https://evergabe.telekom.de/framework-agreement-call/details?id=" & $sDetailsID & "&c=1"
$sRefer = "https://evergabe.telekom.de/framework-agreement-call/"
$sHtml = _HttpGet($oHttp, $sUrl, $sRefer = "")
Dim $aAspa[3]
;~ ClipPut($sHtml)
;~ MsgBox(64, "Read Aspa", "")
$aAspaName = StringRegExp($sHtml, "Name</th><td>([^<]+)</td>", 3)
$aAspaMail = StringRegExp($sHtml, 'mailto:([^"]+)', 3)
$aAspaTel = StringRegExp($sHtml, 'th>Telefon</th><td>([^<]+)', 3)
If IsArray($aAspaTel) Then
$aAspa[2] = $aAspaTel[0]
Else
$aAspa[2] = ""
EndIf
If IsArray($aAspaName) Then
$aAspa[0] = $aAspaName[0]
Else
$aAspa[0] = ""
EndIf
If IsArray($aAspaMail) Then
$aAspa[1] = $aAspaMail[1]
Else
$aAspa[1] = ""
EndIf
;~ _DebugArrayDisplay($aAspa)
Return $aAspa
EndFunc ;==>_EV_Aspa_obj
Func _EV_Abrufliste_GET_Title_obj($sQuellcode)
;Rückgabe Array sonst $error string
;~ local $aTitle = StringRegExp($sQuellcode, 'no-wrap" title="([^"]+)', 3)
Local $aTitle = StringRegExp($sQuellcode, '(?m)no-wrap" title="([^"]+)', 3)
;~ _DebugArrayDisplay($aTitle)
If IsArray($aTitle) Then
For $i = 0 To UBound($aTitle) - 1
$aTitle[$i] = StringReplace($aTitle[$i], "SM Auftragsnummer: 000", " SM ")
$aTitle[$i] = StringReplace($aTitle[$i], @CR, " ") ;CR out
$aTitle[$i] = StringReplace($aTitle[$i], @LF, " ") ;LF out
Next
Return $aTitle
Else
Return "Error"
EndIf
EndFunc ;==>_EV_Abrufliste_GET_Title_obj
Func _EV_Abrufliste_GET_Bedarfnr_obj($sQuellcode)
;SMNr
;Rückgabe Array sonst $error string
Local $aBedarfnr = StringRegExp($sQuellcode, 'Bedarfsnr.: 0([^<]+)<', 3)
;~ ConsoleWrite($sQuellcode & @CRLF)
;~ _DebugArrayDisplay($aBedarfnr)
;~ MsgBox(64, "", "")
If IsArray($aBedarfnr) Then
Return $aBedarfnr
Else
Return "Error"
EndIf
EndFunc ;==>_EV_Abrufliste_GET_Bedarfnr_obj
Func _EV_Abrufliste_GET_Belegeingang_obj($sQuellcode)
;42Nr
;Rückgabe Array sonst $error string
;~ Local $aBelegeingang = StringRegExp($sQuellcode, 'Bedarfsnr.: [^<]+</td><td>[^<]+</td><td>([^<]+)', 3)
Local $aBelegeingang = StringRegExp($sQuellcode, '(\d\d\.\d\d\.\d\d\d\d)', 3)
If IsArray($aBelegeingang) Then
Return $aBelegeingang
Else
Return "Error"
EndIf
EndFunc ;==>_EV_Abrufliste_GET_Belegeingang_obj
Func _EV_Abrufliste_GET_Belegnr_obj($sQuellcode)
;42Nr
;Rückgabe Array sonst $error string
Local $aBelegnr = StringRegExp($sQuellcode, '(42[^\/]+)\/0001', 3)
If IsArray($aBelegnr) Then
Return $aBelegnr
Else
Return "Error"
EndIf
EndFunc ;==>_EV_Abrufliste_GET_Belegnr_obj
Func _EV_Abrufliste_GET_Ausfuehrungsfrist_obj($sQuellcode)
;Ausführungsfrist
;Rückgabe Array sonst $error string
Local $aAusfuehrungsfrist = StringRegExp($sQuellcode, '(\d\d\.\d\d\.\d\d\d\d)</td><td><a href', 3)
If IsArray($aAusfuehrungsfrist) Then
Return $aAusfuehrungsfrist
Else
Return "Error"
EndIf
EndFunc ;==>_EV_Abrufliste_GET_Ausfuehrungsfrist_obj
Func _EV_Abrufliste_GET_DetailsID_obj($sQuellcode)
;DetailsID intern für E-Vergabe
;Rückgabe Array sonst $error string
Local $aDetailsID = StringRegExp($sQuellcode, 'call/details.id=([^&]+)&c=1', 3)
If IsArray($aDetailsID) Then
Return $aDetailsID
Else
Return "Error"
EndIf
EndFunc ;==>_EV_Abrufliste_GET_DetailsID_obj
Func _EV_Abrufliste_GET_RV_obj($sQuellcode)
;Rahmenvertrag
;Rückgabe Array sonst $error string
Local $aRV = StringRegExp($sQuellcode, '/framework-agreement/details.id=[^"]+">([^/]+)', 3)
If IsArray($aRV) Then
Return $aRV
Else
Return "Error"
EndIf
EndFunc ;==>_EV_Abrufliste_GET_RV_obj
Func _EV_Abrufliste_GET_Status_obj($sQuellcode)
;Stauts
;Rückgabe Array sonst $error string
Local $aStatus = StringRegExp($sQuellcode, '/framework-agreement/details.id=[^"]+">[^"]+"[^>]+>([^<]+)', 3)
If IsArray($aStatus) Then
Return $aStatus
Else
Return "Error"
EndIf
EndFunc ;==>_EV_Abrufliste_GET_Status_obj
Func _ComErrFunc()
Local $sMsg = "COM-Fehler!" & @CRLF & _
"Beschreibung: " & @error & @CRLF & _
"Zusatzzahl: " & @extended & @CRLF
ConsoleWrite("! " & $sMsg & @CRLF)
MsgBox(16, "COM-Fehler", $sMsg)
EndFunc ;==>_ComErrFunc
Func _HttpCreate()
Global $oHttp = ObjCreate("WinHttp.WinHttpRequest.5.1")
If Not IsObj($oHttp) Then
MsgBox(16, "Fehler", "WinHttp-Objekt konnte nicht erzeugt werden.")
Exit
EndIf
; Cookie Handling aktivieren
$oHttp.Option(6) = True ; WinHttpRequestOption_EnableCookie
Return $oHttp
EndFunc ;==>_HttpCreate
Func _HttpGet($oHttp, $sUrl, $sRefer = "")
If Not IsObj($oHttp) Then
MsgBox(16, "Fehler", "HTTP-Objekt ist ungültig vor GET.")
Exit
EndIf
Local $sMethod = "GET"
Local $sReqHeaders = ""
Local $sReqBody = ""
;~ ConsoleWrite("+ GET " & $sUrl & @CRLF)
$oHttp.Open($sMethod, $sUrl, False)
$oHttp.SetRequestHeader("User-Agent", $sUserAgent)
$oHttp.SetRequestHeader("Content-Type", "application/x-www-form-urlencoded")
If $sRefer = "" Then
;kein Refer angeben
Else
;refer übergeben
$oHttp.SetRequestHeader("Referer", $sRefer)
EndIf
; Für Logging: Request-Header rekonstruieren (was wir selbst gesetzt haben)
$sReqHeaders &= "User-Agent: " & $sUserAgent & @CRLF
$sReqHeaders &= "Content-Type: application/x-www-form-urlencoded" & @CRLF
If $sRefer = "" Then
;kein Refer angeben
$sReqHeaders &= "User-Agent: " & $sUserAgent & @CRLF
Else
;refer übergeben
$sReqHeaders &= "User-Agent: " & $sUserAgent & @CRLF
$sReqHeaders &= "Referer: " & $sRefer & @CRLF
EndIf
$oHttp.Send()
Local $iStatus = $oHttp.Status
; Response-Header holen
Local $sAllRespHeaders = $oHttp.GetAllResponseHeaders()
Local $sRespBody = $oHttp.ResponseText
$sRespBody = StringReplace($sRespBody, "amp;", "")
_Write_to_Console("öffne link: " & $sUrl)
If $iDebug = "True" Then
_LogRequestResponse($sMethod, $sUrl, $sReqHeaders, $sReqBody, $iStatus, $sAllRespHeaders, $sRespBody)
EndIf
Return $sRespBody
EndFunc ;==>_HttpGet
Func _HttpPost($oHttp, $sUrl, $sBody, $sRefer = "")
If Not IsObj($oHttp) Then
MsgBox(16, "Fehler", "HTTP-Objekt ist ungültig vor POST.")
Exit
EndIf
Local $sMethod = "POST"
Local $sReqHeaders = ""
Local $sReqBody = $sBody
;~ ConsoleWrite("+ POST " & $sUrl & @CRLF)
$oHttp.Open($sMethod, $sUrl, False)
$oHttp.SetRequestHeader("User-Agent", $sUserAgent)
$oHttp.SetRequestHeader("Content-Type", "application/x-www-form-urlencoded")
If $sRefer = "" Then
;kein Refer angeben
Else
;refer übergeben
$oHttp.SetRequestHeader("Referer", $sRefer)
EndIf
; Request-Header fürs Logging
;~ $sReqHeaders &= "User-Agent: " & $sUserAgent & @CRLF
;~ $sReqHeaders &= "Content-Type: application/x-www-form-urlencoded" & @CRLF
;~ $sReqHeaders &= "Referer: " & $sRefer & @CRLF
$oHttp.Send($sBody)
Local $iStatus = $oHttp.Status
Local $sAllRespHeaders = $oHttp.GetAllResponseHeaders()
Local $sRespBody = $oHttp.ResponseText
$sRespBody = StringReplace($sRespBody, "amp;", "")
$oHttp.ResponseText = StringReplace($oHttp.ResponseText, "amp;", "")
_Write_to_Console("öffne link: " & $sUrl)
If $iDebug = "True" Then
_LogRequestResponse($sMethod, $sUrl, $sReqHeaders, $sReqBody, $iStatus, $sAllRespHeaders, $sRespBody)
EndIf
Return $oHttp
EndFunc ;==>_HttpPost
; =================== Hilfsfunktionen ============================
Func _ExtractCsrf($sHtml, ByRef $sFieldName)
; Meta-Tag
Local $aMeta = StringRegExp($sHtml, '(?i)<meta[^>]+name="csrf-token"[^>]+content="([^"]+)"', 3)
If Not @error And UBound($aMeta) >= 1 Then
$sFieldName = "_csrf"
ConsoleWrite("+ CSRF (meta): " & $aMeta[0] & @CRLF)
Return $aMeta[0]
EndIf
; Hidden input
Local $a = StringRegExp($sHtml, '(?i)name="([^"]*csrf[^"]*)"[^>]*value="([^"]+)"', 3)
If @error Or UBound($a) < 2 Then
ConsoleWrite("! CSRF-Token nicht gefunden" & @CRLF)
FileWrite("debug_login_page.html", $sHtml)
Exit
EndIf
$sFieldName = $a[0]
ConsoleWrite("+ CSRF Feld: " & $a[0] & " = " & $a[1] & @CRLF)
Return $a[1]
EndFunc ;==>_ExtractCsrf
Func _UrlEncode_obj($s)
Local $i, $ch, $sOut = ""
For $i = 1 To StringLen($s)
$ch = StringMid($s, $i, 1)
Local $asc = Asc($ch)
If ($asc >= 48 And $asc <= 57) Or _
($asc >= 65 And $asc <= 90) Or _
($asc >= 97 And $asc <= 122) Or _
$ch = "-" Or $ch = "_" Or $ch = "." Or $ch = "~" Then
$sOut &= $ch
Else
$sOut &= "%" & Hex($asc, 2)
EndIf
Next
Return $sOut
EndFunc ;==>_UrlEncode_obj
Func _Pad2($i)
If $i < 10 Then
Return "0" & $i
EndIf
Return $i
EndFunc ;==>_Pad2
; Speichert Request- und Response-Daten als NN.header.txt / NN.response.txt
Func _LogRequestResponse($sMethod, $sUrl, $sReqHeaders, $sReqBody, _
$iStatus, $sRespHeaders, $sRespBody)
$g_iReqCounter += 1
Local $sIdx = _Pad2($g_iReqCounter)
; ----- Header-Datei -----
Local $sHeaderFile = $sIdx & ".header.txt"
Local $sHeaderContent = ""
$sHeaderContent &= "=== REQUEST " & $sIdx & " ===" & @CRLF
$sHeaderContent &= "Method: " & $sMethod & @CRLF
$sHeaderContent &= "URL: " & $sUrl & @CRLF & @CRLF
$sHeaderContent &= "[Request Headers]" & @CRLF & $sReqHeaders & @CRLF & @CRLF
$sHeaderContent &= "[Request Body]" & @CRLF & $sReqBody & @CRLF
FileWrite($sHeaderFile, $sHeaderContent)
; ----- Response-Datei -----
Local $sRespFile = $sIdx & ".response.txt"
Local $sRespContent = ""
$sRespContent &= "=== RESPONSE " & $sIdx & " ===" & @CRLF
$sRespContent &= "Status: " & $iStatus & @CRLF & @CRLF
$sRespContent &= "[Response Headers]" & @CRLF & $sRespHeaders & @CRLF & @CRLF
$sRespContent &= "[Response Body]" & @CRLF & $sRespBody & @CRLF
FileWrite($sRespFile, $sRespContent)
; ----- Konsolen-Ausgabe -----
ConsoleWrite("+ ==== REQUEST " & $sIdx & " " & $sMethod & " " & $sUrl & " ====" & @CRLF)
ConsoleWrite($sReqHeaders & @CRLF)
If $sReqBody <> "" Then
ConsoleWrite("Body:" & @CRLF & $sReqBody & @CRLF)
EndIf
ConsoleWrite("+ ==== RESPONSE " & $sIdx & " (HTTP " & $iStatus & ") ====" & @CRLF)
ConsoleWrite($sRespHeaders & @CRLF)
ConsoleWrite("Body :" & @CRLF & $sRespBody & @CRLF)
_Write_to_Console("+ ==== REQUEST " & $sIdx & " " & $sMethod & " " & $sUrl & " ====")
_Write_to_Console($sReqHeaders)
If $sReqBody <> "" Then
_Write_to_Console("Body:" & @CRLF & $sReqBody)
EndIf
_Write_to_Console("+ ==== RESPONSE " & $sIdx & " (HTTP " & $iStatus & ") ====")
_Write_to_Console($sRespHeaders)
_Write_to_Console("Body :" & @CRLF & $sRespBody)
EndFunc ;==>_LogRequestResponse