Wie Datei Download von https? SSL-Protokoll

Übersicht BlitzMax, BlitzMax NG Allgemein

Neue Antwort erstellen

Midimaster

Betreff: Wie Datei Download von https? SSL-Protokoll

BeitragSa, Feb 06, 2021 14:19
Antworten mit Zitat
Benutzer-Profile anzeigen
Hallo Leute, ich melde mich mal nach Ewigkeiten zurück hier. Ich habe einen Freund zum BlitzMax gebracht und nun coache ich ihn, wenn er nicht weiter weiß.

Heute kommt er mit einem sehr interessanten Problem. Bei der Recherche hierzu bin ich auf weitere Ungereimtheiten gestossen.

Er möchte eine CSV-Datei von einer Internetseite herunterladen. Der direkte Download im Browser funktioniert. Er will es aber direkt aus BlitzMax machen. Ich riet ihm zu ...

Code: [AUSKLAPPEN]
Global Stream:TStream=ReadFile("http::anydomain.de/beispiel.csv")


Hat aber nicht funktioniert, weil die Adresse "https://anydomain.de/beispiel.csv" lautet.

Beim anschließenden recherchieren in BlitzMax bin ich auf diesen Beispielcode für "http" gestoßen, der auch heute zwar noch für manche Dateien funktioniert, aber seltsamerweise nicht für alle. Direkt das code-Beispiel aus dem Form shlägt fehl:

Code: [AUSKLAPPEN]
Local Stream:TStream = ReadStream("http::blitzforum.de/upload/file.php?id=13177")
Local Data:TStream = WriteFile("Bild.png")
Local j%
While Not Eof(Stream)
   j=j+1
   WriteByte Data, ReadByte(Stream)
Wend
Print "Bytes=" + j


Bei dem File handelt es sich um ein PNG-Bild, das als Upload hier im Blitzforum (von mir) archiviert ist. Der Aufruf dieser Adresse in einem Browser bringt das Bild korrekt. Der Aufruf im BlitzMax funktioniert zunächst scheinbar auch. Die Datei ist aber anschließend nur halb so groß wie erwartet und das PNG lässt sich dann logischerweise auch nicht öffnen.

Fragen:
1.
Was mache ich falsch an diesem http-Beispiel-Code?

2.
Ich habe auf Brucey's Seiten ein LibCurlSSL-Modul gefunden. Hat das jemand schon mal ausprobiert und würde dies eine Lösung bei https bringen?
Gewinner des BCC #53 mit "Gitarrist vs Fussballer" http://www.midimaster.de/downl...ssball.exe

DC

Sieger des B2D Retro Wettbewerb / Aug 04

BeitragSa, Feb 06, 2021 14:42
Antworten mit Zitat
Benutzer-Profile anzeigen
1. Nichts. Außer dass du BlitzMax benutzt, was leider von Haus aus kein HTTPS kann. Vermutlich ist die Antwort eine Fehlermeldung o.ä. Du kannst sie dir ja mal als Text ausgeben lassen.

2. Ja, mit Brucey's LibCurl Modul sollte HTTPS möglich sein. Siehe https://www.syntaxbomb.com/index.php?topic=4679.0 hier versucht jemand damit Google via HTTPS aufzurufen. Ich habe es selber aber noch nicht ausprobiert.
Core i5 4670K | 4 x 3,40 GHZ | 16 GB Ram | GeForce GTX 960 | HTC Vive | Win 10 Pro
www.UnrealSoftware.de | www.StrandedOnline.de | www.CS2D.com |
www.CarnageContest.com | www.Stranded3.com
  • Zuletzt bearbeitet von DC am Sa, Feb 06, 2021 14:46, insgesamt 2-mal bearbeitet

Xeres

Moderator

BeitragSa, Feb 06, 2021 14:44
Antworten mit Zitat
Benutzer-Profile anzeigen
Du rufst schon mal die falsche Adresse ab:

Code: [AUSKLAPPEN]
> curl -I "http://blitzforum.de/upload/file.php?id=13177"

HTTP/1.1 301 Moved Permanently
Date: Sat, 06 Feb 2021 12:37:01 GMT
Server: Apache/2.2.22 (Debian)
Location: https://www.blitzforum.de/upload/file.php?id=13177
Vary: Accept-Encoding
Content-Type: text/html; charset=iso-8859-1


die domain ist www.blitzforum.de und das protokoll https - ansonsten bekommst du gar nicht erst die Datei.

LibCurlSSL hört sich auf jeden Fall wie der richtige Weg an.
Win10 Prof.(x64)/Ubuntu 16.04|CPU 4x3Ghz (Intel i5-4590S)|RAM 8 GB|GeForce GTX 960
Wie man Fragen richtig stellt || "Es geht nicht" || Video-Tutorial: Sinus & Cosinus
T
HERE IS NO FAIR. THERE IS NO JUSTICE. THERE IS JUST ME. (Death, Discworld)

Midimaster

BeitragSo, Feb 07, 2021 16:22
Antworten mit Zitat
Benutzer-Profile anzeigen
Ah ja, das waren dann schon mal zwei Fehler gleichzeitig von mir .
Danke schon mal für die Tipps hierzu.

jetzt geht es schon besser:

Der (veraltete) http-Zugriff auf https:www.blitzforum .de führt jetzt wenigstens schon mal zu der korrekten Meldung "Moved Permanently"

Jetzt möchte ich gerne libcurl für SSL zu blitzMax hinzufügen. Aber irgendwie funktionieren dabei die gefundenen Links nicht und bei den Modulen auf BlitzMax.Org bin ich mir nicht sicher, ob ich sie auch noch für das alte BlitzMax nutzen darf.


Folgender Link führt zu einem LibCurl-Modul bei dem ich mir nicht sicher bin ob das wirklich schon für SSL geeignet ist. Die dazugehörende BBDoc dazu sagt nein, die BMX-Files z.b. (example8) erwähnen aber ständig SSL oder HTTPS:

https://github.com/maxmods/bah...ibcurl.mod



Bei dem zweiten Link handelt es sich um die ehemalige BltzMax Modul-Seite von Brucey selbst, aber der Link für die dort aufgeführte LibCurlSSL führt ins Leere:

http://brucey.net/programming/...bahlibcurl



Die folgende BlitzMax.Org-Seite kennt diese Module, aber sind sie wirklich noch für BlitzMax.150 geeignet?

https://blitzmax.org/docs/en/community/networking/


Außerdem bin ich mir nicht sicher, ob ich nicht noch weitere Downloads holen/installieren muss. Teilweise wird davon gesprochen, dass die Download-Dateien nur Wrapper seien? Also braucht man noch was?

Weiß hier jemand Rat?

Bitte jetzt keine Tipps wie: "Up-date doch auf NG". Situation: Wir fügen das SSL in ein Uralt-Programm ein und wollen dafür das alte BlitzMax 1.50 nutzen dürfen und nicht den gesamten Code auf BlitzMax NG prüfen/aktualisieren müssen. (Kommt später bestimmt mal, aber momentan pressiert es (fränkisch für: "es ist dringend").
Gewinner des BCC #53 mit "Gitarrist vs Fussballer" http://www.midimaster.de/downl...ssball.exe

Mathias-Kwiatkowski

BeitragMo, Feb 08, 2021 0:48
Antworten mit Zitat
Benutzer-Profile anzeigen
die libcurlssl funktioniert nur unter blitzmaxng, es gab mal eine alte version aber diese ist lange schon tot, ich nutze libcurlssl immer z.b. bei browser games um etwas zu automatisieren

ich habe mir eine function gebastelt

A:TAccount nutz ich eig nur um die sessionid zu senden
seite=webseite worauf du zugreifgen willst
psotstring=der sting womit dui post msg senden willst

da du dich aber auch mit CURL auskennen solltest bzw musst... gebe ich dir mal die funktion.

die cacert.pem ist bei der lib dabei

Code: [AUSKLAPPEN]
Function LoadCurl:String(A:TAccount, Seite:String, PostString:String = "")
   Local Timer:Int = MilliSecs()
   Local curl:TCurlEasy = TCurlEasy.Create()
   If curl Then
      curl.setWriteString()
      curl.setOptInt(CURLOPT_VERBOSE, 0)
      curl.setOptInt(CURLOPT_FOLLOWLOCATION, 1)
      curl.setOptString(CURLOPT_CAINFO, "data/cacert.pem")
      curl.setOptString(CURLOPT_URL, Seite)
      curl.setOptString(CURLOPT_USERAGENT, "BigpointClient/" + ClientVersion)
      curl.setOptString(CURLOPT_COOKIE, "dosid=" + A.SessionID)
      If PostString <> "" Then
         curl.setOptString(CURLOPT_POST, 1)
         curl.setOptString(CURLOPT_POSTFIELDS, PostString)
      EndIf
      Local res:Int = curl.perform()
         
      
      If res = 0 Then
         curl.CleanUP()
         Timer = MilliSecs() - Timer
         Local Dlay:Int = 500 - timer
         If Dlay > 0 Then Delay Dlay         
      Else
         Print "Fehler: " + res
         'z.b. 404
      EndIf
   EndIf
End Function



da du aber nicht ng nutzen willst. wirst du dir die lib auf bm1.50 zurück basteln müssen :/
Skype: Anarchie1984
http://projektworks.de/maxbase/
Icq - Erneuert am 21.08.2017
Yahoo - Erneuert am 21.08.2017

Midimaster

BeitragSa, Feb 13, 2021 8:58
Antworten mit Zitat
Benutzer-Profile anzeigen
Also, jetzt habe ich mir grad mal BlitzMaxNG heruntergeladen und versuche aktuell die LibCurlSSL damit zum laufen zu bringen.

Nach dem Einfügen der libcurl.mod in den Modul-Ordner wollte ich brav auch "Build Modules" anklicken, wie das bei BlitzMax1.50 immer notwendig war. Und jetzt rödelt der Rechner seit 10min rum und scheint alles neu zu compilieren. Ist das normal?
Gewinner des BCC #53 mit "Gitarrist vs Fussballer" http://www.midimaster.de/downl...ssball.exe

Mathias-Kwiatkowski

BeitragDo, Feb 18, 2021 0:32
Antworten mit Zitat
Benutzer-Profile anzeigen
ja ist es, bm-ng hat viele module und vieles neue, was 1.50 nie hatte, daher dauert der prozess eine zeit lag, aber du hättest nicht alles neu kompilieren müssen, wenn du F5 drückst und auf relase bzw debug stehen hast, kompiliert er alles was fehlt für dein programm bzw alles was er benötigt. nungut bei mir dauert das "build modules" allerdings keine 10 min, aber das ist ehr rechner abhängig.
Skype: Anarchie1984
http://projektworks.de/maxbase/
Icq - Erneuert am 21.08.2017
Yahoo - Erneuert am 21.08.2017

Midimaster

BeitragDo, Feb 18, 2021 12:39
Antworten mit Zitat
Benutzer-Profile anzeigen
Inzwischen habe ich libCurl auf dem BlitzMax NG zum laufen bekommen. Für den Kollegen mit dem 1.50, der eigentlich das Https braucht habe ich nun einfach eine Mini-App geschrieben, die das benötigte Dokument vom Server abholt und sich dann wieder beendet.

BlitzMax NG:
BlitzMax: [AUSKLAPPEN]
SuperStrict
' *** HoleCsv.exe ***
' Connect to a website via HTTPS, without using a certificate bundle.

Framework BaH.libcurl
Import BRL.StandardIO
Import BRL.FileSystem

Local curl:TCurlEasy = TCurlEasy.Create()

curl.setOptInt(CURLOPT_FOLLOWLOCATION, 1)
curl.setOptInt(CURLOPT_SSL_VERIFYPEER, 0)

curl.setOptString(CURLOPT_URL, "https://www.blabla.de/daten.csv")
Local MyStream:TStream = WriteStream("temp.csv")
curl.setWriteStream(MyStream)
Local res:Int = curl.perform()
CloseStream Mystream
If res Then
Print CurlError(res)
End
End If
curl.cleanup()

Dieses Programm liegt im gleichen Verzeichnis wie sein Code und wird von BlitzMax 1.50 so gerufen:

BlitzMax 1.50
BlitzMax: [AUSKLAPPEN]

' *** Verarbeitung.exe ***
...
system_ "HoleCSV.exe"
Stream=OpenFile("temp.csv")
...


das wars schon.

Neue Antwort erstellen


Übersicht BlitzMax, BlitzMax NG Allgemein

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group