[résolu] htaccess/htpasswd et ReceiveHTTPFile

Vous débutez et vous avez besoin d'aide ? N'hésitez pas à poser vos questions
Avatar de l’utilisateur
tinangel
Messages : 56
Inscription : ven. 18/janv./2008 6:14

[résolu] htaccess/htpasswd et ReceiveHTTPFile

Message par tinangel »

Bonsoir,

J'ai une petite question concernant le "couplage" entre ReceiveHTTPFile et un Serveur Web.

En fait il s'avère que je sécurise l'accès à un répertoire sur un serveur FTP que je vais appelé TOTO_FTP. Le programme PB quand à lui, se connecte sur le Serveur Web TOTO_FTP pour essayer d'y récupérer un fichier et le télécharger sur le disque dur du client, ce fichier s'appelle HELLO.

Pour ça j'utilise la fonction ReceiveHTTPFile, et pour éviter la boite de dialogue demandant le USER et PASS de mon dossier sécurisé TOTO_FTP je mets ceci dans mon ReceiveHTTPFile --> http://mon_user:mon_pass@www.TOTO_FTP.fr/HELLO.

En fait ma question n'est pas vraiment lié au code (je sais que mon code affiche la page sécurisée ... j'ai effectué un test avec SetGadgetText(0, "http://mon_user:mon_pass@www.TOTO_FTP.fr/HELLO" ) grâce à un WebGadget) mais plutôt mais plutôt à la fonction ReceiveHTTPFile.

La fonction est-elle capable de récupérer un fichier au travers d'un htaccess/htpasswd ?

Je sais qu'il me reste toujours l'alternative de gérer ça par FTP mais si je pouvais éviter (pour des questions de performance et de robustesse de serveur).

Je suis ouvert à n'importe quelle alternative.

Je vous en remercie d'avance.

Tinangel.

Pour info en utilisant le moteur de recherche interne avec les mots clés htaccess, htpasswd, htpassword, ReceiveHTTPFile j'ai pas trouvé grand chose d'intéressant (je m'en vais demander à mon ami Google au cas où. Merci encore.

[edit]
Pas terrible les résultats Google. :cry:
--> Oh pinaise je viens de tomber là dessus, j'ai l'impression que ça pourrait-être ce que je recherche ou en tout cas une piste mais c'est une usine à gaz : http://forums.purebasic.com/french/view ... 38&start=0
[/edit]

[edit2]
Méga puissant, je sais pas qui qui est l'auteur mais balaise le type, tout ça pour dire que ça marche nickel :
Voilà mon code adapté à ma situation, mais avant créez un lib externe et copier le code en entier (moi je l'ai appelé purehttp.pb)

Code : Tout sélectionner

   ;Début de votre fichier
   XIncludeFile  "purehttp.pb"
   ;....
   ;   Ici votre code PB
   ;....
   monfichier._PureHTTP_GET_FILE
   monfichier\Host = "www.TOTO_FTP.fr"
   monfichier\Path = "/HELLO"
   monfichier\outputfile = "/dossier_sur_le_disque_dur_du_client/hello"
   monfichier\userID = "mon_user"
   monfichier\userPass = "mon_pass"
   PureHTTP_Get_File(@monfichier)
 
Merci à l'auteur Marius Eckardt (Thalius) :)

[/edit2]
nico
Messages : 3702
Inscription : ven. 13/févr./2004 0:57

Re: [résolu] htaccess/htpasswd et ReceiveHTTPFile

Message par nico »

Solution trouvée sur le net à expérimenter:

en passant par l'URL : http://user:pass@host/path

Par le code, en Wininet par exemple : hURL = InternetConnect_(hInet, WEBHost, Port, WEBUser, WEBPassword, #INTERNET_SERVICE_HTTP, 0, 0)
Avatar de l’utilisateur
tinangel
Messages : 56
Inscription : ven. 18/janv./2008 6:14

Re: [résolu] htaccess/htpasswd et ReceiveHTTPFile

Message par tinangel »

Bonsoir,

Merci Nico pour ta réponse.

L'utilisation de PureHTTP est un gain de temps énorme. Pour ma part en tout cas. Je voulais obtenir une barre de chargement de fichier (HTTP) et c'est nickel (une fois qu'on a compris le principe). Voilà ce que j'obtiens me concernant :

Image
En bas de la fenêtre on a ma barre de chargement qui affiche en parallèle de nombre d'octet chargé (ici c'est des mégas octet car j'ai effectué une conversion de valeur).

Alors je vais en profiter pour les personnes qui ne savent pas utilisé la libraire pour leur fournir un exemple. J'ai eu du mal au début puis après ça là fait.

Ce qui vous faut :

1/ Copier le script dans un nouveau fichier (moi il s'appelle purehttp.pb) −> celui que propose "Le soldat inconnu" sur ce post : http://forums.purebasic.com/french/view ... 38&start=0
2/ L'inclure dans votre programme :

Code : Tout sélectionner

XIncludeFile  "purehttp.pb"

3/ On va créer un Thread qui va lancer en parallèle la fonction PureHTTP_Get_File(@myfile). Ma procedure s'appelle DowloadThread.

Code : Tout sélectionner

Procedure DownloadThread(myfile)
    PureHTTP_Get_File(myfile)
EndProcedure

4/ Je créer un fenêtre contenant une boucle Repeat-Until (d'un OpenWindow par exemple). Je structure mas fenêtre comme je le souhaite (à l'aide des gadgets, ect...). Puis je détermine une action à un gadget (moi dans mon cas c'est un bouton) :

Code : Tout sélectionner

          Repeat 
            ;Ici je vais gérer mes évènements:
            Event = WaitWindowEvent(500)

            If Event = #PB_Event_Gadget
                Select EventGadget()
                  Case 1
                          myfile._PureHTTP_GET_FILE
                          myfile\Host = "www.mon_site_internet.fr"
                          myfile\Path = "/mon_repertoire/mon_fichier.ext"
                          myfile\outputfile = "C:\mon_répertoire_sur_le_disque_dur\nom_de_mon_fichier_sur_le_disque_dur.ext" 
                          myfile\userID = "mon_user_htpasswd"
                          myfile\userPass = "mon_mot_de_passe_htpasswd" 
                          download_thread = CreateThread(@DownloadThread(), @myfile)
                 EndSelect
             EndIf   
5/ Pour obtenir les informations (le nombre d'octet en cours de chargement ou encore l'état du téléchargement) vous pouvez utiliser ces exemples (toujours dans la boucle Repeat/Until) :

Code : Tout sélectionner

            If  myfile\Status = #PureHTTP_STATUS_FINISHED
               SetGadgetText(2, "Téléchargement terminé.")
            EndIf 

            If  myfile\Status = #PureHTTP_STATUS_TIMEOUT
              SetGadgetText(2, "Connexion au serveur impossible.")
            EndIf 
            
            If  myfile\Status = #PureHTTP_STATUS_HTTPERROR  Or myfile\Status = #PureHTTP_STATUS_FILEERROR  Or  myfile\Status = #PureHTTP_STATUS_ABORT  
              SetGadgetText(2, "Une erreur est survenue, veuillez réessayer ultérieurement.")
            EndIf 

ATTENTION : en utilisant le code ci-dessus prenez le soin de mettre ceci myfile._PureHTTP_GET_FILE avant la boucle Repeat sinon le compilateur vous renverra une erreur.

Une autre chose à savoir pour ne pas bloquer votre fenêtre. Si vous créez un Thread et que vous tentiez de fermer la fenêtre par précaution mettez ceci dans la boucle Repeat :

Code : Tout sélectionner

            If Event = #PB_Event_CloseWindow
                If download_thread>0:  KillThread(download_thread)
                EndIf                   
                End  
            EndIf
Le code ci-dessus permettra de tuer le Thread s'il a été lancé par l'utilisateur avant de mettre fin au programme.

En espérant que cela puisse simplifier les choses à certains.

Cordialement,

Tinangel.
Avatar de l’utilisateur
wood51
Messages : 122
Inscription : ven. 05/juin/2009 13:04
Localisation : orléans

[résolu] htaccess/htpasswd et ReceiveHTTPFile

Message par wood51 »

Merci
Compétences : Bricoleur PureBasic du dimanche
Crâmage de cerveau en cours 100% :D
Projet en cours : http://purepicbasic.frenchboard.com/
Répondre