Italian community of Lazarus and Free Pascal

Programmazione => Lazarus e il web => Topic aperto da: xinyiman - Gennaio 05, 2014, 12:24:44 pm

Titolo: Synapse recuperare https
Inserito da: xinyiman - Gennaio 05, 2014, 12:24:44 pm
Ciao ragazzi, io ho bisogno di interrogare automaticamente google da una mia applicazione, solo che trovo difficoltà a recuperare il risultato quando si tratta (come per google) di https e non http. Io uso synapse con httpmethod ma non funziona, chi mi sa dire perchè?!

Quello che segue è il mio codice

Codice: [Seleziona]
uses
       ssl_openssl,ssl_openssl_lib


var http : THTTPSend;
begin

      http:=THTTPSend.Create;
      Http.Sock.CreateWithSSL(TSSLOpenSSL);
      http.Sock.SSLDoConnect;
      if not http.HTTPMethod('GET',Url) then
        begin
             RecuperaSSLHtml:='';
             exit;
        end
      else
        begin
          page.LoadFromStream(http.Document);
          for i:=0 to page.Count-1 do
              risultato:=risultato + UpCase(page[i]);
        end;
        http.Clear;
        page.Clear;
end;
Titolo: Re:Synapse recuperare https
Inserito da: nomorelogic - Gennaio 05, 2014, 03:38:47 pm
ho trovato una richiesta di aiuto analoga
http://stackoverflow.com/questions/11377320/synapse-delphi-https-ssl-get-request (http://stackoverflow.com/questions/11377320/synapse-delphi-https-ssl-get-request)

vedi se risolve
Titolo: Re:Synapse recuperare https
Inserito da: xinyiman - Gennaio 05, 2014, 08:24:32 pm
Grazie, avevo già visto quel post, ma non ho risolto e non so dove sbattere la testa.
Titolo: Re:Synapse recuperare https
Inserito da: nomorelogic - Gennaio 06, 2014, 11:03:22 am
Edit:

ho fatto delle prove mettendo un memo di nome page su un form e mi funziona.
Nella penultima riga del tuo codice, dovresti spazzare via (:D) l'istruzione 'page.Clear;' in quanto è fuori dall'if e quindi viene eseguito sempre, anche se l'interrogazione va a buon fine. Ho dei dubbi sul ciclo for e per questo l'ho commentato, non vorrei che il problema fosse tutto qua.

Manca anche la liberazione delle risorse (hhtp viene creato ma non distrutto),  prova con questo spezzone di codice:

Codice: [Seleziona]
begin

      http:=THTTPSend.Create;
      try
        Http.Sock.CreateWithSSL(TSSLOpenSSL);
        http.Sock.SSLDoConnect;
        if not http.HTTPMethod('GET',Url) then
          begin
               RecuperaSSLHtml:='';
               exit;
          end
        else
          begin
            page.Lines.LoadFromStream(http.Document);
            //for i:=0 to page.Count-1 do
            //    risultato:=risultato + UpCase(page[i]);
          end;
      finally
          http.Free;
      end;

end;


PS:
page di che tipo è?
Titolo: Re:Synapse recuperare https
Inserito da: xinyiman - Gennaio 06, 2014, 02:34:03 pm
Fammi un favore, mi alleghi la tua prova? Perchè a me HTTPMethod non ritorna nulla. E' li il problema.
Titolo: Re:Synapse recuperare https
Inserito da: nomorelogic - Gennaio 06, 2014, 03:10:43 pm
fatto
Titolo: Re:Synapse recuperare https
Inserito da: xinyiman - Gennaio 06, 2014, 03:23:34 pm
Provato, mi dice: nessun risultato. Inizio a pensare che mi manchi qualche libreria a livello di sistema operativo.
Titolo: Re:Synapse recuperare https
Inserito da: nomorelogic - Gennaio 06, 2014, 08:12:23 pm
strano
aggiorna synapse, io le ho aggiornate ad una settimana fa.
Titolo: Re:Synapse recuperare https
Inserito da: xinyiman - Gennaio 06, 2014, 10:29:58 pm
tu che versione hai di synapse?!
Titolo: Re:Synapse recuperare https
Inserito da: nomorelogic - Gennaio 07, 2014, 09:37:29 am
ho scaricato la versione in fase di sviluppo con SVN, trovi il link qua:
http://synapse.ararat.cz/doku.php/download (http://synapse.ararat.cz/doku.php/download)

ed è il seguente
SVN URL: https://svn.code.sf.net/p/synalist/code/trunk (Sourceforge account required)
Titolo: Re:Synapse recuperare https
Inserito da: xinyiman - Gennaio 07, 2014, 01:34:43 pm
Non funziona neanche così  >:(

Mi sa che si tratta di librerie del os
Titolo: Re:Synapse recuperare https
Inserito da: xinyiman - Gennaio 07, 2014, 02:23:52 pm
Infatti ho risolto così:

sudo apt-get install libssl-dev

Era una minchiata hahahahaha
Titolo: Re:Synapse recuperare https
Inserito da: xinyiman - Gennaio 07, 2014, 03:17:08 pm
Ora però ho un altro problema, quando eseguo una ricerca con google mi restituisce:

Codice: [Seleziona]
<!DOCTYPE HTML><HTML LANG=EN>  <META CHARSET=UTF-8>  <META NAME=VIEWPORT CONTENT="INITIAL-SCALE=1, MINIMUM-SCALE=1, WIDTH=DEVICE-WIDTH">  <TITLE>ERROR 404 (NOT FOUND)!!1</TITLE>  <STYLE>    *{MARGIN:0;PADDING:0}HTML,CODE{FONT:15PX/22PX ARIAL,SANS-SERIF}HTML{BACKGROUND:#FFF;COLOR:#222;PADDING:15PX}BODY{MARGIN:7% AUTO 0;MAX-WIDTH:390PX;MIN-HEIGHT:180PX;PADDING:30PX 0 15PX}* > BODY{BACKGROUND:URL(//WWW.GOOGLE.COM/IMAGES/ERRORS/ROBOT.PNG) 100% 5PX NO-REPEAT;PADDING-RIGHT:205PX}P{MARGIN:11PX 0 22PX;OVERFLOW:HIDDEN}INS{COLOR:#777;TEXT-DECORATION:NONE}A IMG{BORDER:0}@MEDIA SCREEN AND (MAX-WIDTH:772PX){BODY{BACKGROUND:NONE;MARGIN-TOP:0;MAX-WIDTH:NONE;PADDING-RIGHT:0}}  </STYLE>  <A HREF=//WWW.GOOGLE.COM/><IMG SRC=//WWW.GOOGLE.COM/IMAGES/ERRORS/LOGO_SM.GIF ALT=GOOGLE></A>  <P><B>404.</B> <INS>THAT’S AN ERROR.</INS>  <P>THE REQUESTED URL <CODE>/%23Q=WEBMAIL</CODE> WAS NOT FOUND ON THIS SERVER.  <INS>THAT’S ALL WE KNOW.</INS>

La sintassi della ricerca è

https://www.google.it/#q=webmail


se lo inserisco nel browser ovviamente funziona, mi sa che si tratta di cookies o altro. Qualcuno ha qualche idea?
Titolo: Re:Synapse recuperare https
Inserito da: nomorelogic - Gennaio 07, 2014, 03:30:46 pm
più che un cookie si tratta di una risorsa non trovata (err 404).

giusto per capire, che tipo di ricerca lanci?
Titolo: Re:Synapse recuperare https
Inserito da: xinyiman - Gennaio 07, 2014, 03:55:09 pm
Nello specifico, questo per fare delle prove

https://www.google.it/#q=webmail

ma poi in realta qualsiasi cosa parametrizzando questo

https://www.google.it/#q=
Titolo: Re:Synapse recuperare https
Inserito da: Stilgar - Gennaio 07, 2014, 05:04:38 pm
xinyiman ... leggi meglio cosa di dice goolge ;)

https://www.google.it/%23Q=WEBMAIL

Questa pagina, nemmeno col browser la trovi :p
(occhio alla codifica della request)
Stilgar
Titolo: Re:Synapse recuperare https
Inserito da: Stilgar - Gennaio 07, 2014, 05:11:58 pm
https://www.google.it/search?q=WEBMAIL
Prova a cambiare la request in questo modo ;)


Ciao
Stilgar
Titolo: Re:Synapse recuperare https
Inserito da: nomorelogic - Gennaio 07, 2014, 11:21:27 pm
Infatti ho risolto così:
sudo apt-get install libssl-dev
Era una minchiata hahahahaha

:D

Edit:
ottimo, i fantasmi non potevano essere ;)
Titolo: Re:Synapse recuperare https
Inserito da: Stilgar - Gennaio 07, 2014, 11:52:37 pm
mm a volte sembra che i pc siano posseduti ;)

Stilgar
Titolo: Re:Synapse recuperare https
Inserito da: nomorelogic - Gennaio 08, 2014, 12:22:56 am
mm a volte sembra che i pc siano posseduti ;)

si, dal fantasma delle "finestre" hahahahahaha
Titolo: Re:Synapse recuperare https
Inserito da: Stilgar - Gennaio 08, 2014, 09:25:10 am
Pensavo al fantasma formaggino ... ;)

Stilgar
Titolo: Re:Synapse recuperare https
Inserito da: El Salvador - Gennaio 08, 2014, 10:29:22 pm
Non è che il carattere # non venga correttamente codificato?

Codice: [Seleziona]
THE REQUESTED URL <code>/%23Q=WEBMAIL</CODE> WAS NOT FOUND ON THIS SERVER.
Titolo: Re:Synapse recuperare https
Inserito da: Stilgar - Gennaio 09, 2014, 09:12:35 am
http://www.obkb.com/dcljr/charstxt.html
 #                %23     #     Number sign

Per quello è codificato correttamente.
Ma google ha un .htaccess o simili che ricodifica al volo. ;) se la loro espressione regolare è cannata ... basta usare la request estesa :D

Stilgar
Titolo: Re:Synapse recuperare https
Inserito da: bonmario - Aprile 26, 2018, 08:28:02 am
Ciao a tutti,
scusatemi se sto riesumando questa vecchia discussione, ma ho un problema.

Devo scaricare degli allenamenti da SportTracker da link come questo:
https://www.sports-tracker.com/workout/tagallo/bt7nvahprultaoos (https://www.sports-tracker.com/workout/tagallo/bt7nvahprultaoos)

Se Guardo il link dal browser, tutto ok.

Invece, usando l'esempio che c'è a questo post http://www.lazaruspascal.it/index.php?topic=1270.msg6905#msg6905 (http://www.lazaruspascal.it/index.php?topic=1270.msg6905#msg6905), ho fatto questo:
- scarico la pagina con HTTPMethod
- la salvo con nome "pippo.html"
- apro "pippo.html" con il browser

Quello che vedo non ha niente a che fare con quello che vedo dal browser.

Cosa sto sbagliando?

Grazie in anticipo, Mario
Titolo: Re:Synapse recuperare https
Inserito da: xinyiman - Aprile 26, 2018, 06:23:34 pm
Ciao a tutti,
scusatemi se sto riesumando questa vecchia discussione, ma ho un problema.

Devo scaricare degli allenamenti da SportTracker da link come questo:
https://www.sports-tracker.com/workout/tagallo/bt7nvahprultaoos (https://www.sports-tracker.com/workout/tagallo/bt7nvahprultaoos)

Se Guardo il link dal browser, tutto ok.

Invece, usando l'esempio che c'è a questo post http://www.lazaruspascal.it/index.php?topic=1270.msg6905#msg6905 (http://www.lazaruspascal.it/index.php?topic=1270.msg6905#msg6905), ho fatto questo:
- scarico la pagina con HTTPMethod
- la salvo con nome "pippo.html"
- apro "pippo.html" con il browser

Quello che vedo non ha niente a che fare con quello che vedo dal browser.

Cosa sto sbagliando?

Grazie in anticipo, Mario
Perdonami, ma devi essere un po' più preciso. Cosa c'è di diverso? Inoltre sarebbe buona cosa allegare un esempio (piccolino) così noi possiami provarlo e dirti i nostri pareri.
Titolo: Re:Synapse recuperare https
Inserito da: bonmario - Aprile 26, 2018, 06:44:12 pm

Perdonami, ma devi essere un po' più preciso. Cosa c'è di diverso? Inoltre sarebbe buona cosa allegare un esempio (piccolino) così noi possiami provarlo e dirti i nostri pareri.

L'esempio è scaricabile dal post a cui facevo riferimento prima: http://www.lazaruspascal.it/index.php?topic=1270.msg6905#msg6905 (http://www.lazaruspascal.it/index.php?topic=1270.msg6905#msg6905)

Basta avviarlo, e mettere come link questo: https://www.sports-tracker.com/workout/tagallo/bt7nvahprultaoos (https://www.sports-tracker.com/workout/tagallo/bt7nvahprultaoos)

La differenza è che, invece di esserci quello che vedo aprendo il link dal browser, ci sono i link per scaricare l'app per Android / ios.

Ciao, Mario
Titolo: Re:Synapse recuperare https
Inserito da: xinyiman - Aprile 27, 2018, 09:26:57 am
Ciao, si ho verificato, in effetti scarica la pagina, uguale uguale a quella che c'è online a livello di sorgente. Però vedo che per la maggior parte è uno script javascript (e mi pare pure non in chiaro). Quindi bisognerebbe capire cosa fa quello script. Io purtroppo in questi giorni sarò fuori casa e non posso darti una mano. Hai provato a chiedere anche sul forum internazionale?
Titolo: Re:Synapse recuperare https
Inserito da: bonmario - Aprile 27, 2018, 09:57:58 am
Qui da me ha un altro comportamento ....
- se guardo la "pagina online" col browser, ad un certo punto c'è la durata di "00:00:07"
- se prendo la "pagina online", la apro col browser e, sempre col browser la salvo in un file html, e poi cerco "00:00:07" all'interno del file html, lo trovo.
- se cerco "00:00:07" all'interno del file scaricato con l'esempio da Lazarus, non lo trovo.

Se non ho capito male quello che hai scritto, se tu cerchi "00:00:07" all'interno del file che hai scaricato con l'esempio lo trovi. E' così oppure ho capito male?



P.S. In questi giorni dovrei fare altre prove, poi eventualmente chiedo nel forum internazionale.

Grazie, Mario
Titolo: Re:Synapse recuperare https
Inserito da: Stilgar - Aprile 27, 2018, 01:03:07 pm
Che user agent usi per scaricare con lazarus?
Se scarica codice diverso potrebbe esserci qualche controllo server sugli header delka richiesta
Titolo: Re:Synapse recuperare https
Inserito da: bonmario - Aprile 27, 2018, 01:20:17 pm
Onestamente non lo so.
E' possibile forzarlo tramite qualche proprietà?

Grazie, Mario
Titolo: Re:Synapse recuperare https
Inserito da: Stilgar - Aprile 27, 2018, 02:24:57 pm
Ciao.
Ho controllato il codice di httpsend.pas
Nel costruttore viene messo :

  FUserAgent := 'Mozilla/4.0 (compatible; Synapse)';

Quindi basta che usi l'oggetto e imposti il tuo UserAgent direttamente come una property normale ;)

Stilgar
Titolo: Re:Synapse recuperare https
Inserito da: Stilgar - Aprile 27, 2018, 02:30:44 pm
Ho controllato il link che hai messo.
C'è AngularJS di mezzo.

Se salvi la pagina col browser ha già caricato https://www.sports-tracker.com/views/workout/workout-laps.tpl.html e adattato il template al documento. Quindi trovi i tempi che dicevi non trovare con lo scarico via lazarus. Ed è giusto che tu non riesca a trovarli.
Il documento viene "completato" attraverso javascript.

Stilgar
Titolo: Re:Synapse recuperare https
Inserito da: bonmario - Aprile 27, 2018, 03:55:21 pm
Ho controllato il link che hai messo.
C'è AngularJS di mezzo.

Ho capito, grazie !!!
A questo punto, devo abbandonare l'idea di poter leggere le info che mi servono dal file HTML.

Fortunatamente nel frattempo ho trovato un "piano B", anche se un po' più macchinoso: ricavo le info che mi servono dal file ".gpx" che viene creato per ogni allenamento.

Grazie a tutti per l'aiuto, Mario
Titolo: Re:Synapse recuperare https
Inserito da: Stilgar - Aprile 27, 2018, 04:08:20 pm
I dati li prende da qui :
GET https://www.sports-tracker.com/apiserver/v1/workouts/bt7nvahprultaoos/combined (https://www.sports-tracker.com/apiserver/v1/workouts/bt7nvahprultaoos/combined)
Titolo: Re:Synapse recuperare https
Inserito da: bonmario - Aprile 27, 2018, 06:32:12 pm
Sei un grande !!!

Grazie, così mi obbligo ad usare il parser di files JSON ....

Ciao, Mario
Titolo: Re:Synapse recuperare https
Inserito da: Stilgar - Aprile 27, 2018, 06:34:21 pm
Grazie per il complimento.
Con le cose webbe ci porcono abbastanza tutti i giorni al lavoro ;)
Mi viene spontaneo smontare le pagine :)
Titolo: Re:Synapse recuperare https
Inserito da: bonmario - Settembre 15, 2018, 12:46:54 pm
Ciao a tutti, ho ancora un problema simile.
Stavolta il link è un po' "particolare", per cui ho preferito scriverlo nel file di testo allegato ...

Il problema è questo: se provo a verificare gli header tramite synapse, mi viene restituito l'errore HTTP 301 (Moved Permanently). Il problema è che il nuovo url scritto nell'header è lo stesso !!!!
Di solito, quando mi succedeva questo, i 2 url erano differenti.
Sicuramente sbaglio qualcosa io, perché se accedo allo stesso link da browser, o provo a scaricarlo con wget, viene scaricato il file html che mi aspetto.

C'è modo di capire a quale url punta veramente quel link ?

Grazie in anticipo, Mario
Titolo: Re:Synapse recuperare https
Inserito da: Stilgar - Settembre 15, 2018, 01:33:02 pm
Il 301 dovrebbe riportare anche il nuovo url ..
Dentro l'header non dentro il body.
Il browser lo intercetta.
Stampati a console tutti gli header che ottieni o cerca un parametro che gli dica di seguire i redirect
😊
Titolo: Re:Synapse recuperare https
Inserito da: Stilgar - Settembre 15, 2018, 01:36:19 pm
 In php sposti il browser ad nuovo link così
Codice: [Seleziona]
<?php
header("HTTP/1.1 301 Moved Permanently");
header("Location: http://www.miosito.it/nuova_pagina.php");
?>
Sono 2 header 😉
Titolo: Re:Synapse recuperare https
Inserito da: bonmario - Settembre 15, 2018, 05:47:59 pm
Ciao,
questo è quello che lancio:
Codice: [Seleziona]
if (not fHTTP.HTTPMethod('HEAD', LinkInternet)) then begin

E questo è l'header di ritorno (ho oscurato il link ....):
Citazione
HTTP/1.1 301 Moved Permanently
Date: Sat, 15 Sep 2018 15:41:03 GMT
Server: Apache
Expires: Thu, 19 Nov 1981 08:52:00 GMT
Cache-Control: no-store, no-cache, must-revalidate, post-check=0, pre-check=0
Pragma: no-cache
Set-Cookie: PHPSESSID=kkj3trop6eupsk9jh5pkqgvbn3; path=/
Location: https://xxxxxxxx.com/2013/11/10/yyyyyyyyyyyyyy/
Keep-Alive: timeout=5, max=100
Connection: Keep-Alive
Content-Type: text/html; charset=UTF-8

Il link della riga "Location:" è lo stesso che uso io per la chiamata !!!

Forse l'informazione che cerco è sul secondo haeder, ma come faccio a scaricare il secondo header ???


Grazie, Mario
Titolo: Re:Synapse recuperare https
Inserito da: Stilgar - Settembre 15, 2018, 06:59:46 pm
Perdi la sessione php e vai in loop? Mantieni i cookies.
Titolo: Re:Synapse recuperare https
Inserito da: bonmario - Settembre 15, 2018, 07:41:29 pm
Scusa, ma non so se sto capendo ....
Mi stai dicendo che, dopo aver letto l'header dal mio programma, dovrei usare PHP per vedere dove punta veramente?

Grazie, Mario
Titolo: Re:Synapse recuperare https
Inserito da: Stilgar - Settembre 15, 2018, 07:51:42 pm
PHPSESSID=kkj3trop6eupsk9jh5p
Php genera questo codice.
In pratica hai attivato una sessione sul server con la prima chiamata. Il 301 serve per obbligare il browser a passare il codice.
Quello è il codice della sessione php.
😊
Il server ha il modulo  php
Titolo: Re:Synapse recuperare https
Inserito da: bonmario - Settembre 16, 2018, 08:44:39 am
Scusami, ma stai usando una lingua che non conosco  :-[ :-[ :-[ :-[

Con Lazarus + Synapse, quando nell'header mi viene restituito il "PHPSESSID", come lo posso usare per capire qual è il link a cui trovo "realmente" il file che devo scaricare?


Al momento ho aggirato il problema scaricando direttamente tramite il comando wget, ma mi piacerebbe capire il meccanismo che c'è sotto per evitare di rompere le scatole qui tutte le volte !!!

Grazie, Mario
Titolo: Re:Synapse recuperare https
Inserito da: Stilgar - Settembre 16, 2018, 09:13:46 am
Apri un browser.
Chrome ad esempio.
Apri la console per sviluppatori. Controlla il tab rete. Verifica i 2 flag. Disabilita cache e quello di persistenza delle chiamate. abilita la persistenza.
Carica la pagina che interessa e verifica quante chiamate fa.
Mi aspetto che faccia 2 chiamate.
La prima ottiene 301. La seconda no.
Controlla tutti i messaggi spediti e trova le differenze tra i due.
Così capisci cosa dovresti inviare tra una chiamata e l'altra nel tuo programma.
😊
Titolo: Re:Synapse recuperare https
Inserito da: bonmario - Settembre 16, 2018, 10:48:38 am
Grazie per la pazienza, ma ci rinuncio: probabilmente è al di fuori delle mie capacità attuali.
Ho provato sia con Chrome che con Firefox e, se faccio tutto bene, vedo solo righe con stato 200 o 304, nessun 301.

Grazie ancora, Mario
Titolo: Re:Synapse recuperare https
Inserito da: bonmario - Settembre 17, 2018, 06:49:12 pm
Ciao a tutti,
casomai dovesse servire a qualcuno in futuro, oggi ho provato ad usare "fcl-web" al posto di Synapse, e tutto funziona alla grande: già alla prima richiesta, la risposta del server è 200, e non 301.
Avevo lo stesso problema al link qui sotto:
Citazione
https://www.cemambiente.it/sezione/comunicazioni/news/
Ho solo un piccolo problema: su Linux funziona tutto, su Windows invece funziona solo per i siti in "http", per quelli in https invece mi da errore. Domani vedo se riesco a risolvere !!!

Ciao, Mario
Titolo: Re:Synapse recuperare https
Inserito da: bonmario - Settembre 18, 2018, 08:38:05 am
Ciao a tutti,
Ho solo un piccolo problema: su Linux funziona tutto, su Windows invece funziona solo per i siti in "http", per quelli in https invece mi da errore.

Come non detto: a casa, nelle stesse condizioni funziona.
Qui al lavoro, mi da questo errore:
Citazione
Connect to xxxxxproxy01:8080 failed.

Se metto "http" al posto di "https", il tutto funziona.
Magari bisogna configurare i dati del proxy anche da qualche parte nelle impostazioni relative ad SSL, ma non so dove !!!


Ciao, Mario
Titolo: Re:Synapse recuperare https
Inserito da: Stilgar - Settembre 18, 2018, 08:43:18 am
Ssl deve essere innescata per i dati relativi alla comunicazione.
Controlla in fpclient.
La configurazione del proxy dovrebbe andare li.
Occhio che il proxy non blocchi quel dominio sulla 443.
Prova con https://google.it
O un sito che raggiungi col browser e wget 😊
Titolo: Re:Synapse recuperare https
Inserito da: bonmario - Settembre 18, 2018, 08:50:24 am
Occhio che il proxy non blocchi quel dominio sulla 443.

Esatto ... mi hai fatto ricordare che già in passato mi ero imbattuto nello stesso problema.

Grazie, Mario
Titolo: Re:Synapse recuperare https
Inserito da: blastiko - Novembre 26, 2018, 04:17:21 pm
Mi aggancio a questo post in quanto ho il seguente problema.
Ho sviluppato una procedura che contatta un mio server via https usando Free Pascal e la libreria Synapse.
Su pc con Linux (ubuntu) ho installato fpc 2.6.4 e synapse 40 e la procedura ha sempre funzionato e ancora funziona.
Lo stesso codice su una raspberry con Raspbian Jessie, fpc 2.6.4 e synapse 40 ha sempre funzionato e ancora funziona.
Ora su raspberry con Raspbian Stretch, fpc 3.0.4 e synapse 40 la procedura compila senza errori, ma la chiamata HTTPSend mi restituisce errore 500.

Questo uno spezzone della procedura:
...
HTTPSender := THTTPSend.Create;
HTTPSender.HTTPMethod('GET', 'https://www.mioserver.it');
if (HTTPSender.ResultCode >= 100) and (HTTPSender.ResultCode<=299) then begin...
...

Ho installato il pacchetto libssl-dev come suggerito in altro post, ma HTTPSender.ResultCode mi restituisce sempre 500.

Secondo voi esiste una incompatibilità tra fpc3.0.4, synapse 40 su raspbian stretch?

Premetto che la compilazione funziona e funzionava anche senza la libreria suddetta.

Grazie.
Titolo: Re:Synapse recuperare https
Inserito da: Stilgar - Novembre 26, 2018, 04:30:30 pm
Ciao.
Scusa la domanda.
Ma da browser, la chiamata https che vuoi fare, da un 200 o un 500?


:)


Stilgar
Titolo: Re:Synapse recuperare https
Inserito da: blastiko - Novembre 26, 2018, 06:49:24 pm
Si, da browser funziona (su pc).
Su raspbian non ho installato l'ambiente grafico in quanto l'applicativo funziona da console.
Sulla raspberry se faccio un wget verso il mio server (stesso indirizzo) funziona (nel senso che mi scarica la homepage).
Titolo: Re:Synapse recuperare https
Inserito da: Stilgar - Novembre 29, 2018, 03:03:40 pm
Ciao.Scusa il ritardo.Ho trovato dei problemi con Synapse e Linux nella versione  fpc 3.0.4 (Fedora 28)
Di base ha una dipendenza al bind synapse per l'openssl.Ho dovuto cambiare sistema operativo. Sotto Windows non da problemi.Confido che risolvano questa cosa un pelino fastidiosa :)Non ti so dire se anche le distro basate su debian abbiano lo stesso tipo di problema.
Stilgar
Titolo: Re:Synapse recuperare https
Inserito da: blastiko - Novembre 29, 2018, 03:13:29 pm
Ok, ho risolto e ora è tornato a funzionare tutto come sempre.

In pratica sembra esserci una incompatibilità tra la libreia synapse 40 e la libreria di sistema (Linux, Raspbian Stretch) che gestisce il protocollo SSL.

In Raspbian Stertch, tra le librerie di sistema presenti c'è sia la libssl_1.1.0 sia la libssl_1.0.2.
Un link simbolico fa in modo a tutto il sistema (e a chi ne ha bisogno) veda la nuova versione 1.1 e infatti synapse usa ciò che il sistema gli dice di utilizzare, purtroppo però l'interrogazione tramite HTTSender su un server via HTTPS genera un errore 500 (Internal Server Error).

Questo errore però può trarre in inganno in quanto (in genere) è un errore lato server più che lato client, ma non in questo caso.

Per ovviare al problema ci sono due strade:

1) modificare il link simbolico in modo che punti alla libssl 1.0.2, però se funziona con synapse non è detto che altri programmi o servizi di sistema invece si aspettino la libreria più aggiornata e cioè la 1.1

2) modificare il file ssl_openssl_lib.pas di synapse, modificando le righe:

Codice: [Seleziona]
DLLSSLName = 'libssl.so';
DLLUtilName = 'libcrypto.so';

con

Codice: [Seleziona]
DLLSSLName = '/usr/lib/arm-linux-gnueabihf/libssl.so.1.0.2';
DLLUtilName = '/usr/lib/arm-linux-gnueabihf/libcrypto.so.1.0.2';

*** non ho provato col full-path e se non funziona provare solo con 'libssl.so.1.0.2' e 'libcrypto.so.1.0.2' ***

dovete ovviamente sotituire la vers. 1.0.2 con quella presente nel vostro sistema (basta che sia inferiore alla 1.1 -> non l'ho testato ma credo che qualunque libreria 1.0.x funzioni senza problemi).

In effetti leggendo il commento introduttivo del file ssl_opnessl.pas di synapse si evince che...

Codice: [Seleziona]
Compatibility with OpenSSL versions:
0.9.6 should work, known mysterious crashing on FreePascal and Linux platform.
0.9.7 - 1.0.0 working fine.
1.1.0 should work, under testing.

OpenSSL libraries are loaded dynamicly - you not need OpenSSL librares even you
compile your application with this unit. SSL just not working when you not have
OpenSSL libraries.

...che sostiene in pieno l'ipotesi di non ancora piena compatibilità tra synapse 40 e la nuova libreria libssl 1.1

Ciao e scusate il mega post  :D
Titolo: Re:Synapse recuperare https
Inserito da: Stilgar - Novembre 29, 2018, 03:15:28 pm
Di nulla.Il forum serve a quello.Confrontarsi :)
Titolo: Re:Synapse recuperare https
Inserito da: bonmario - Novembre 29, 2018, 04:32:33 pm
Ciao.Scusa il ritardo.Ho trovato dei problemi con Synapse e Linux nella versione  fpc 3.0.4 (Fedora 28)
Di base ha una dipendenza al bind synapse per l'openssl.Ho dovuto cambiare sistema operativo. Sotto Windows non da problemi.Confido che risolvano questa cosa un pelino fastidiosa :)Non ti so dire se anche le distro basate su debian abbiano lo stesso tipo di problema.
Stilgar


Io lo uso con Ubuntu, e mi funziona.
Onestamente nei mesi scorsi ricordo di aver fatto qualcosa perché non funzionava più, ma non ricordo cosa ...

Ciao, Mario
Titolo: Re:Synapse recuperare https
Inserito da: Stilgar - Novembre 29, 2018, 04:38:41 pm
:)Quindi hanno una rogna sulle ditro Linux da sistemare ;)
Titolo: Re:Synapse recuperare https
Inserito da: blastiko - Novembre 29, 2018, 04:52:58 pm
...
Io lo uso con Ubuntu, e mi funziona.
Onestamente nei mesi scorsi ricordo di aver fatto qualcosa perché non funzionava più, ma non ricordo cosa ...

Ciao, Mario

Che versione di Ubuntu usi?
Che libreria ssl è presente in quella versione li di Ubuntu?
Titolo: Re:Synapse recuperare https
Inserito da: blastiko - Novembre 29, 2018, 04:55:07 pm
:)Quindi hanno una rogna sulle ditro Linux da sistemare ;)

già... v.1.1.0 under testing
magari gli scrivo nella sezione bug del loro forum...
Titolo: Re:Synapse recuperare https
Inserito da: bonmario - Novembre 29, 2018, 06:07:19 pm
Che versione di Ubuntu usi?
Che libreria ssl è presente in quella versione li di Ubuntu?

Uso la 18.10 64 bit.
Per quanto riguarda SSL, come faccio a saperlo ?

Ciao, Mario
Titolo: Re:Synapse recuperare https
Inserito da: blastiko - Novembre 29, 2018, 06:40:15 pm
Prova con un:
Codice: [Seleziona]
sudo find / | grep -i libssl
e manda output
Titolo: Re:Synapse recuperare https
Inserito da: Stilgar - Novembre 29, 2018, 06:44:20 pm
Un  -name al  find selvatico? 😂😂😂
Titolo: Re:Synapse recuperare https
Inserito da: blastiko - Novembre 29, 2018, 06:48:42 pm
meglio ancora:
Codice: [Seleziona]
sudo apt list --installed | grep -i libssl
Titolo: Re:Synapse recuperare https
Inserito da: bonmario - Novembre 29, 2018, 07:54:15 pm
meglio ancora:
Codice: [Seleziona]
sudo apt list --installed | grep -i libssl


Ecco il risultato del comando:
Citazione
WARNING: apt does not have a stable CLI interface. Use with caution in scripts.

libssl-doc/cosmic,cosmic,now 1.1.1-1ubuntu2 all [installato]
libssl1.0-dev/cosmic,now 1.0.2n-1ubuntu6 amd64 [installato]
libssl1.0.0/cosmic,now 1.0.2n-1ubuntu6 amd64 [installato, automatico]
libssl1.0.0/cosmic,now 1.0.2n-1ubuntu6 i386 [installato]
libssl1.1/cosmic,now 1.1.1-1ubuntu2 amd64 [installato, automatico]
libssl1.1/cosmic,now 1.1.1-1ubuntu2 i386 [installato, automatico]

Ciao, Mario