problemi con OpenLayers e proxy.cgi

Previous Topic Next Topic
 
classic Classic list List threaded Threaded
1 message Options
Reply | Threaded
Open this post in threaded view
|

problemi con OpenLayers e proxy.cgi

Giuseppe Naponiello
Buongiorno a tutti, vado dritto al problema!

Su un server Hertzner, su cui gira Debian, ho sviluppato diverse webapp,
quelle che mi stanno dando problemi risalgono a diversi anni fa, tutte
scritte in php, la libreria usata è OpenLayers 2.

Negli anni, pacchetti e distro, sono stati sempre aggiornati e tutto ha
funzionato alla perfezione...motivo per cui non è mai stato fatto un
refactoring del codice (in realtà, il vero motivo, è che non c'erano
fondi per "svecchiare" le app!!!).

La struttura generale è la seguente:

  * distro: Debian stable
  * apache v. 2.4
  * tomcat v. 9
  * geoserver v. 2.13
  * openlayers 2
  * postgresql 13
  * postgis 3.1

Stendiamo un velo pietoso sull'utilizzo di openlayers 2, cause di forza
maggiore!

Tutte le geometrie sono gestite da postgis e servite da geoserver via
tomcat. Per la visualizzazione delle mappe le applicazioni utilizzano
sia il protocollo wms che wfs (per inserimento/modifica/eliminazione
delle geometrie).

Da qualche settimana ho notato un problema con le richieste wfs,
problema rilevato anche da firebug che mi dà il classico "internal
server error", mentre il log di apache dice che:
[cgi:error] [pid 7596] [client ::1:52300] AH01215: (8)Exec format error:
exec of '/usr/lib/cgi-bin/proxy.cgi' failed: /usr/lib/cgi-bin/proxy.cgi
[cgi:error] [pid 7596] [client ::1:52300] End of script output before
headers: proxy.cgi

In realtà, oltre a non visualizzare le geometrie vettoriali (di seguito
un esempio)
ubi_mater = new OpenLayers.Layer.Vector("ubi_mater", {
     strategies: [new OpenLayers.Strategy.BBOX()],
     protocol: new OpenLayers.Protocol.WFS({
       version:     wfsConf.version,
       url:         wfsConf.url,
       featureNS:   wfsConf.featureNS,
       srsName:     wfsConf.srsName,
       geometryName:wfsConf.geometryName,
       featureType: "ubi_mater",
       schema:      wfsConf.schema+"ubi_mater"
     })
   });
   map.addLayer(ubi_mater);

le applicazioni mi danno problemi anche con la funzione
"OpenLayers.Control.WMSGetFeatureInfo", con la quale mi tiro fuori l'id
della geometria che utilizzo per interrogare postgresql e mostrare tutta
una serie di info legate alla geometria interrogata, ma al click sulla
geometria invece dei dati ho un array vuota:

info = new OpenLayers.Control.WMSGetFeatureInfo({
     url: 'http://xxxx.xxx.xxx.xxx:8080/geoserver/wms',
     title: 'Informazioni sui livelli interrogati',
     queryVisible: true,
     layers: listalayer,
     infoFormat: 'application/vnd.ogc.gml',
     vendorParams: {buffer: 10},
     eventListeners: {
       getfeatureinfo: function(event) {
         var arr = new Array();
         var arrActive = new Array();
         var arrArea = new Array();
         for (var i = 0; i < event.features.length; i++) {
           var feature = event.features[i];
           var attributes = feature.attributes;
           var id_ai = attributes.id_geom;
           var id_area = attributes.id_area;
           arr.push("area_int_poly.id = "+id_ai);
           arrArea.push('id_area = '+id_area);
         }
         $(".ai:checked").map(function(){arrActive.push('dgn_tpsch =
'+$(this).attr('data-tipo'));});
         $.ajax({
           url: 'inc/popupAi.php',
           type: 'POST',
           data: {arr:arr,arrActive:arrActive,arrArea:arrArea},
           success: function(data){
             console.log(data)
             $("#result").animate({left:"0px"}).addClass('opened');
             $("#resultContent").html(data);
           }
         });
       }
     }
   });
   map.addControl(info);
   info.activate();

Ovviamente apache ha tutti i moduli correttamente abilitati, il file
proxy ha i permessi settati su 755, e i vari virtual host hanno tutte le
direttive relative all'esecuzione degli script cgi...e ovviamente il
codice non è stato recentemente modificato.

Vi riporto un esempio[0] di virtual host. Ho provato a fare diverse
operazioni, compresa quella di reinstallare e riconfigurare
completamente apache (magari c'era qualche configurazione strana!), ho
anche provato a replicare tutto sul mio pc, ho provato a modificare i
virtual host cambiando il percorso del proxy e inserendo quello di
default (/usr/lib/cgi-bin/proxy.cgi), ho cambiato l'intestazione del
file proxy indicando python3 come eseguibile da utilizzare, ma il
problema persiste.

Per completezza di informazioni vi dico che:

  * se provo ad aprire il link localhost/cgi-bin/proxy.cgi mi dà
    "internal server error"
  * se provo ad aprire il proxy.cgi presente nella cartella
    dell'applicazione specifica mi fa vedere il codice del file, come se
    non fosse presente il modulo cgi di apache (che ovviamente è abilitato)

Consigli? A parte di riscrivere il codice con librerie non obsolete!!!!

Grazie a tutti

-beppe-

[0] <VirtualHost localhost/cembra:80>
     ServerName localhost/cembra
     ServerAdmin beppenapo@gmailcom
     DocumentRoot /var/www/html/cembra
     ############## mia configurazione #############
     <Directory />
                 Options FollowSymLinks
                 AllowOverride None
         </Directory>
         <Directory /var/www/html/cembra>
                 Options +Indexes +FollowSymLinks +MultiViews +ExecCGI
                 AllowOverride None
                 AddHandler cgi-script .cgi
                 Require all granted
         </Directory>

         ScriptAlias /cgi-bin/ /var/www/html/cembra/cgi-bin/
         <Directory /var/www/html/cembra/cgi-bin>
                 AllowOverride None
                 Options +ExecCGI -MultiViews +SymLinksIfOwnerMatch
                 AddHandler cgi-script .cgi
                 Require all granted
         </Directory>

         ProxyPass /geoserver http://xxx.xxx.xxx.xxx:8080/geoserver
         ProxyPassReverse /geoserver http://xxx.xxx.xxx.xxx:8080/geoserver
         <Location /geoserver>
                 Require all granted
         </Location>
     ###############################################

     ErrorLog ${APACHE_LOG_DIR}/error.log
     CustomLog ${APACHE_LOG_DIR}/access.log combined
</VirtualHost>



_______________________________________________
[hidden email]
http://lists.gfoss.it/cgi-bin/mailman/listinfo/gfoss
Questa e' una lista di discussione pubblica aperta a tutti.
I messaggi di questa lista non hanno relazione diretta con le posizioni dell'Associazione GFOSS.it.
764 iscritti al 23/08/2019