+ Le chant du vario +

Développements et support => traces GPS => Discussion démarrée par: raf le 18 Mai 2010 - 17:41:00



Titre: moulinette en webservice ?
Posté par: raf le 18 Mai 2010 - 17:41:00
salut
j organise a l occasion des competes de parapentes online sur le simulateur dans google earth programmé sur paraglidingearth.com (les competes sont là : www.paraglidingearth.com/pgSimCompEvent )
mon probleme : je genere au cours du vol un fichier igc pour garder la trace du vol, stocké en base de données, et j aimerais pouvoir proposer les vols en kml une fois les manches finies.
d ou la question : la moulinette existe-t-elle en "webservice" : on soumet un fichier igc stocké en ligne et on recupere un fichier kml stockable en ligne ?
merci !!!


Titre: Re : moulinette en webservice ?
Posté par: marc le 18 Mai 2010 - 18:19:13
Tu peux remplir le formulaire simplement avec un lib genre curl. Par ex:
Code:
#!/bin/bash
CURL=curl
#OUTPUT=output.kmz
PILOT=$USER
DATE=`date +%d/%m/%y`
TIMESHIFT=`date +%z`
#TAKEOFF=undef
#LANDING=undef
#INPUT=input.igc
ANALYSIS=1
CFD=1
# no customization below
URL=http://trace.parawing.net/gps2ge.php
EXTRA=
if [ ! -z $ANALYSIS ]; then
  EXTRA+=" -F Analysis=checked "
fi
if [ ! -z $CFD ]; then
  EXTRA+=" -F cfd=checked "
fi
$CURL -o $OUTPUT \
      -F MAX_FILE_SIZE=1000000 \
      -F pilot=$PILOT \
      -F date=$DATE \
      -F timeshift=$TIMESHIFT \
      -F departure="$TAKEOFF" \
      -F arrival="$LANDING" \
      -F userfile=(@)$INPUT \
      $EXTRA \
      -F ' '=checked \
      $URL
Exemple d'utilisation:
Code:
$ INPUT=plomb-st-hil.igc OUTPUT=plom-st-hil.kmz TAKEOFF="Saint Hil Nord" LANDING="Lumbin" ~/bzr/misc-tools/gps2ge-cli/gps2ge.sh

En utilisant la lib curl depuis ton code php, tu peux obtenir le même résultat. Pas du webservice 2.0, mais c'est pas insurmontable non plus :) Après, y'a ptet une interface plus sexy, mais je l'ai jamais croisé...


Titre: Re : moulinette en webservice ?
Posté par: raf le 18 Mai 2010 - 19:35:43
hmm hmm, "remplir avec un lib genre curl" ?
j ai peur que ca depasse mes competences :(
moi quand c'est pas dans synaptic....

merci du coup de main, mais là je vois vraiment pas de quoi tu parles, désolé :?

du coup, si y a une interface plus sexy ;)


Titre: Re : moulinette en webservice ?
Posté par: marc le 18 Mai 2010 - 23:17:15
Tu veux quoi exactement ? Un bout de code php qui fait le boulot, ou un script shell ? Ou autre ? Moi je peux t'aider sans soucis si tu me dis quoi faire :D

(et sinon, si je me trompe pas, tu dois être le raf du GUC, parti à l'est ? on c'était rencontré y'a qqs année, à st hil... J'avais une xray violette :D)


Titre: Re : moulinette en webservice ?
Posté par: raf le 19 Mai 2010 - 10:58:06
salut marc,
merci de proposer ton aide, pour le coup un bout de php me sera effectivement plus utile (les scripts shell, je sais meme pas comment ca se prononce...) :)

et oui, je suis bien du guc et expatrié à beyrouth (depuis maintenant bientot trois ans) : ici ca vole bien, il manque juste une ecole, mais j'y travaille http://www.paraglidinglebanon.com ouverture prevue courant juin ;)


Titre: Re : moulinette en webservice ?
Posté par: raf le 24 Mai 2010 - 18:03:14
salut
j ai cherché trois minutes vingt quatre chez google et j'ai recopié un bout de code php auquel je ne comprends pas grand chose et qui ne donne rien :

Code:
<?php
$postfields 
= array();
$postfields["MAX_FILE_SIZE"] = "1000000";
$postfields["pilot"] = "Pilot Name";
$postfields["date"] = "12/10/2010";
$postfields["timeshift"] = "+3";
$postfields["departure"] = "takeoff name";
$postfields["arrival"] = "arrival name";
$postfields["userfile"] = "http://www.paraglidingearth.com/pgSimCompEvent/igc/event3/task3/raf.igc";
$postfields["Charts"] = "on";
$postfields["cfd"] = "off";
$postfields["Analysis"] = "off";
$postfields["choix"] = "on";

//url de la page de soumission
$url "http://trace.parawing.net/get_form_gps2ge.php";
$useragent "Mozilla/5.0";
$referer $url
 
//Initialise une session CURL
$ch curl_init($url);
//CURL options
curl_setopt($chCURLOPT_POST1);
//On poste les données du tableau $postfields
curl_setopt($chCURLOPT_POSTFIELDS$postfields);
//On définit un useragent ici Mozilla/5.0
curl_setopt($chCURLOPT_USERAGENT$useragent);
//On passe un referrer ici on passe la même page $url
curl_setopt($chCURLOPT_REFERER$referer);
//on récupère le contenu de la page de résultat de la soumission dans une chaine
curl_setopt($chCURLOPT_RETURNTRANSFER1);
// en cas de redirection (facultatif ici)
//curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1);
//Page de résultats et fermeture de session
$result curl_exec($ch);
curl_close($ch);
 
//on peut faire un echo du résultat obtenu
echo $result;
?>
la page mouline pendant un bout de temps, puis s arrete en n'affichant rien (j ai pas acces a l error log d'ici)
si corriger une erreur dans le script ci dessus peut suffire et permettre de faire gagner du temps...


Titre: Re : moulinette en webservice ?
Posté par: raf le 24 Mai 2010 - 18:38:07
hmmm, code modifié :
Code:
<?php
$postfields 
= array();
$postfields["MAX_FILE_SIZE"] = "1000000";
$postfields["pilot"] = "Pilot Name";
$postfields["date"] = "24/05/2010";
$postfields["timeshift"] = "+3";
$postfields["departure"] = "takeoff name";
$postfields["arrival"] = "arrival name";
$postfields["userfile"] = "http://www.paraglidingearth.com/pgSimCompEvent/igc/event3/task3/raf.igc";
$postfields["Charts"] = "on";
$postfields["cfd"] = "off";
$postfields["Analysis"] = "off";
$postfields["choix"] = "on";

//url de la page de soumission
//ici mon annuaire (qui a un captcha donc inutile de tenter la soumission auto, c'est pour l'exemple)
$url "http://trace.parawing.net/get_form_gps2ge.php";
$useragent "Mozilla/5.0";
$referer $url
 
//Initialise une session CURL
$ch curl_init($url);
//CURL options
curl_setopt($chCURLOPT_POST1);
//On poste les données du tableau $postfields
curl_setopt($chCURLOPT_POSTFIELDS$postfields);
//On définit un useragent ici Mozilla/5.0
curl_setopt($chCURLOPT_USERAGENT$useragent);
//On passe un referrer ici on passe la même page $url
curl_setopt($chCURLOPT_REFERER$referer);
//on récupère le contenu de la page de résultat de la soumission dans une chaine
//curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
// en cas de redirection (facultatif ici)
if (curl_setopt($chCURLOPT_FOLLOWLOCATION1)) echo "good";
//Page de résultats et fermeture de session
$result curl_exec($ch);
curl_close($ch);
 
//on peut faire un echo du résultat obtenu
//echo $result;
?>
resultat visible ici : http://www.paraglidingearth.com/pgSimCompEvent/igc2ge_autom.php
visiblement y a un petit probleme... :$


Titre: Re : moulinette en webservice ?
Posté par: piwaille le 25 Mai 2010 - 09:53:52
 :coucou:

désolé si je réponds à coté de la plaque ...mais pourquoi passer par CURL ?
pourquoi ne pas faire un (simple) formulaire ... qui ne contient que le bouton ok ... les autres champs peuvent être caché en prod, de toute façon ils seront remplis lors de la génération de ta page.

après ça donne simplement :
Code:
<form method="post" action="http://trace.parawing.net/get_form_gps2ge.php" enctype="multipart/form-data">
<input type="hidden" value="1000000" name="MAX_FILE_SIZE">
<input type="hidden" maxlength="30" size="30" value="Anonymous" name="pilot">
<input type="hidden" maxlength="10" size="10" value="25/05/2010" name="date">
<input type="hidden" maxlength="3" size="3" value="+3" name="timeshift">
<input type="hidden" maxlength="30" size="30" value="takeoff name" name="departure">
...
<input type="submit" value="sors-zy moi le KMZ" name="choix">
</form>


Titre: Re : moulinette en webservice ?
Posté par: marc le 25 Mai 2010 - 09:57:14
La plus grosse différence est que si tu fais un formulaire comme ça, c'est le client qui parle à parawing, et bon, pas glop de faire un POST vers un domaine différent du site sur lequel tu te balades. D'ailleurs, ça m'étonnerait pas que certains navigateurs coince un peu.
Ensuite, si le but c'est de stocker les kmz sur le serveur de pe, en passant par curl, tu t'évites un POST supplémentaire pour envoyer le kmz vers les serveur de paraglidingearth.

(raf, j'ai pas oublié, je tente de faire ce que j'ai dit rapidement)


Titre: Re : moulinette en webservice ?
Posté par: piwaille le 25 Mai 2010 - 11:05:52
:coucou:

je suis entièrement d'accord que d'un point de vue sécurité c'est cradissime (j'avais même soulevé le lièvre à man's à l'époque) ...
j'ai cru que le but c'était de générer à la demande le kmz ... après effectivement le but peut être de générer le KMZ lors de la soumission de l'IGC et de stocker le KMZ sur son serveur pour avoir une réponse plus rapide (et plus respectueuse des serveurs de parawing)... auquel cas, je botte en touche ;) je suis largement incompétent sur le sujet :canape: