URL et login

Vous débutez et vous avez besoin d'aide ? N'hésitez pas à poser vos questions
Avatar de l’utilisateur
MetalOS
Messages : 1498
Inscription : mar. 20/juin/2006 22:17
Localisation : Lorraine
Contact :

URL et login

Message par MetalOS »

Salut les amis,

Pour un projet j'ai besoin de me connecter à un serveur pour télécharger un fichier de données. Pour me connecter à ce serveur je doit utiliser une url avec un nom d'utilisateur et un mot de passe.

Exemple d'url:

Code : Tout sélectionner

http://loginname:password@MonSiteInternet/Data/Fichier.txt
Seulement quand je test dans safari sur Mac l'url voici ce que j'obtient.

Image

Du coup quand j'utilise cet url avec la commande ReceiveHTTPFile() pour télécharger le fichier ca ne marche pas. J'ai testé sous Linux et Windows également et j'ai le même problème. Faut il employer le login et password différemment pour accéder au fichier ?

Merci d'avance pour votre aide.

PS: je ne peut pas vous donner la vrai url car l'administrateur de ces données me l'interdit.
doudouvs
Messages : 244
Inscription : jeu. 07/mars/2013 19:02
Localisation : France Alsace / Espagne Girona

Re: URL et login

Message par doudouvs »

Salut,

Protection de l'url par .htaccess

C'est normal avec safari d'avoir ce message avec Chrome aussi si mes souvenirs sont bon, avec firefox tu aura un message du style "vous êtes sur le point de vous connecter..." en gros les navigateur contrôlent que tu envoi le login/pass via l'url. avec Pb tu n'aura pas le message cela doit donc marcher.

Si tu à un Apache qui tourne tu peux crée un .htaccess pour faire le test.
GCC 7.4.0 / PureBasic 5.71 / Ubuntu 18.04.3 LTS
Avatar de l’utilisateur
MetalOS
Messages : 1498
Inscription : mar. 20/juin/2006 22:17
Localisation : Lorraine
Contact :

Re: URL et login

Message par MetalOS »

Non justement avec PB sa ne fonctionne pas, le fichier ne ce télécharge pas.
doudouvs
Messages : 244
Inscription : jeu. 07/mars/2013 19:02
Localisation : France Alsace / Espagne Girona

Re: URL et login

Message par doudouvs »

Ah effectivement j'ai une erreur du header

Code : Tout sélectionner

 InitNetwork()

  Header$ = GetHTTPHeader("http://testpb:MetalOS@www.fouineweb.com/testpb/file.txt")

  Repeat
   Index+1
   Line$ = StringField(Header$, Index, #LF$)
   Debug Line$
  Until Line$ = ""
Réponse du Header

Code : Tout sélectionner

HTTP/1.1 401 Authorization Required
Date: Sat, 28 Dec 2013 16:34:25 GMT
Server: Apache
WWW-Authenticate: Basic realm="Acces test PB"
Vary: Accept-Encoding
Content-Type: text/html; charset=iso-8859-1
GCC 7.4.0 / PureBasic 5.71 / Ubuntu 18.04.3 LTS
Avatar de l’utilisateur
MetalOS
Messages : 1498
Inscription : mar. 20/juin/2006 22:17
Localisation : Lorraine
Contact :

Re: URL et login

Message par MetalOS »

A moins d'utiliser un script php qui récupère le fichier pour le stocker sur mon serveur perso et ensuite je pourrais l'exploiter dans mon code depuis mon serveur. Mais je ne connais rien à php lol.
doudouvs
Messages : 244
Inscription : jeu. 07/mars/2013 19:02
Localisation : France Alsace / Espagne Girona

Re: URL et login

Message par doudouvs »

ben utilise un wget

Code : Tout sélectionner

wget http://testpb:MetalOS@www.fouineweb.com/testpb/file.txt
autrement en php

Code : Tout sélectionner

<?php
function copyfile($Source, $Destination)
{
    $Fichier = fopen ($Source, "r");
    $ContentFichier ='';
    while (!feof($Fichier)) $ContentFichier .= fread($Fichier, 8192);
    fclose ($Fichier);
    $Fichier = fopen ($Destination, "w+");
    if ( !fwrite($Fichier, $ContentFichier)) die('Impossible d\'écrire dans le fichier');
    fclose ($Fichier);
}
copyfile('http://testpb:MetalOS@www.fouineweb.com/testpb/file.txt', '.file.txt');
?>

Si tu à la main sur ton serveur le mieux et de passer par wget avec un cron qui va bien
GCC 7.4.0 / PureBasic 5.71 / Ubuntu 18.04.3 LTS
Avatar de l’utilisateur
falsam
Messages : 7317
Inscription : dim. 22/août/2010 15:24
Localisation : IDF (Yvelines)
Contact :

Re: URL et login

Message par falsam »

Tu peux aussi utiliser les fonctionnalités ftp.
Configuration : Windows 11 Famille 64-bit - PB 6.20 x64 - AMD Ryzen 7 - 16 GO RAM
Vidéo NVIDIA GeForce GTX 1650 Ti - Résolution 1920x1080 - Mise à l'échelle 125%
Avatar de l’utilisateur
MetalOS
Messages : 1498
Inscription : mar. 20/juin/2006 22:17
Localisation : Lorraine
Contact :

Re: URL et login

Message par MetalOS »

Merci pour script doudouvs. Autrement c'est vrai que je n'avais pas pensé à regarder du côté des commandes ftp, mais comme c'est une adresse en http ca risque de ne pas fonctionner non ?
doudouvs
Messages : 244
Inscription : jeu. 07/mars/2013 19:02
Localisation : France Alsace / Espagne Girona

Re: URL et login

Message par doudouvs »

Effectivement cela risque de ne pas marcher, si il n'y à pas de serveur ftp.

Si tu à la main sur ton serveur perso je peux te faire un bash avec le cron qui va bien
GCC 7.4.0 / PureBasic 5.71 / Ubuntu 18.04.3 LTS
Avatar de l’utilisateur
MetalOS
Messages : 1498
Inscription : mar. 20/juin/2006 22:17
Localisation : Lorraine
Contact :

Re: URL et login

Message par MetalOS »

Oui je veut bien merci.
doudouvs
Messages : 244
Inscription : jeu. 07/mars/2013 19:02
Localisation : France Alsace / Espagne Girona

Re: URL et login

Message par doudouvs »

Fichier que tu sauvegarde sous getfileclient.sh

Code : Tout sélectionner

#!/bin/bash
dir=/repertoire
wget -O $dir/nom_de_ton_fichier_local.txt "http://testpb:MetalOS@www.fouineweb.com/testpb/file.txt"
Tu fait un "chmod +x getfileclient.sh" sur le fichier pour le rendre exécutable

Pour le cron tu rajoute dans crontab :
Exécuter un script à toutes les heures

Code : Tout sélectionner

# m h  dom mon dow   command
0 */1 * * * /repertoire/getfileclient.sh >/dev/null 2>&1
GCC 7.4.0 / PureBasic 5.71 / Ubuntu 18.04.3 LTS
Avatar de l’utilisateur
MetalOS
Messages : 1498
Inscription : mar. 20/juin/2006 22:17
Localisation : Lorraine
Contact :

Re: URL et login

Message par MetalOS »

Merci pour ton aide doudouvs mais je vient de me rendre compte que mon hébergeur ne me permet pas ce genre de manipulation.

Pas cool, je pense que seul un script php qui rapatrie le fichier chez mon hébergeur et la solution.
lepiaf31
Messages : 510
Inscription : dim. 25/mars/2007 13:44
Localisation : Toulouse, France
Contact :

Re: URL et login

Message par lepiaf31 »

En PB (fait à l'arrache):

Code : Tout sélectionner

Procedure receiveHttpFileWithAuthorization(url.s, login.s, password.s)
  Protected host.s, page.s, request.s, input.s, encodedLogin.s, socket.i, service.sockaddr_in
  Protected *buffer, bufferSize.i, received.i, *hostent.HOSTENT, ipString.s
  Dim ip.a(4)
  
  host = GetURLPart(url, #PB_URL_Site)
  page = GetURLPart(url, #PB_URL_Path)
  If GetURLPart(url, #PB_URL_Parameters) <> ""
    page + "?" + GetURLPart(url, #PB_URL_Parameters)
  EndIf
  input = login + ":" + password
  encodedLogin = Space(Len(input)*2)
  Base64Encoder(@input, Len(input), @encodedLogin, Len(input)*2)
  encodedLogin = Trim(encodedLogin)
  
  *hostent = gethostbyname_(host)
  CopyMemory(PeekI(*hostent\h_addr_list), @ip(), 4)
  ipString = Str(ip(0))+"."+Str(ip(1))+"."+Str(ip(2))+"."+Str(ip(3))
  
  request = "GET /" + page + " HTTP/1.1" + #CRLF$
  request + "Host: " + host + #CRLF$
  request + "Connection: close" + #CRLF$
  request +  "Authorization: Basic " + encodedLogin + #CRLF$ 
  request + #CRLF$
  
  bufferSize = 2048
  *buffer = AllocateMemory(bufferSize)
  socket = SOCKET_(#AF_INET, #SOCK_STREAM, #IPPROTO_TCP)
  If socket <> #INVALID_SOCKET
    service\sin_addr = inet_addr_(ipString)
    service\sin_family = #AF_INET
    service\sin_port = htons_(80)
    If connect_(socket, @service, SizeOf(sockaddr_in)) <> #SOCKET_ERROR
      send_(socket, @request, Len(request), 0)
      
      Repeat
        received = recv_(socket, *buffer, bufferSize, 0)
        
        If received > 0
          
          ;--- Fais ce que tu veux ici: ---
          Debug PeekS(*buffer, received)
          ;--------------------------------
          
        EndIf
        
      Until received = 0
      
    EndIf
    closesocket_(socket)
  EndIf
EndProcedure

InitNetwork()
receiveHttpFileWithAuthorization("http://www.fouineweb.com/testpb/file.txt", "testpb", "MetalOS")
Avatar de l’utilisateur
MetalOS
Messages : 1498
Inscription : mar. 20/juin/2006 22:17
Localisation : Lorraine
Contact :

Re: URL et login

Message par MetalOS »

Je vais tester ton code et je te tiens au courant. Merci lepiaf ;-)
Avatar de l’utilisateur
MetalOS
Messages : 1498
Inscription : mar. 20/juin/2006 22:17
Localisation : Lorraine
Contact :

Re: URL et login

Message par MetalOS »

J'ai un structure not found sur service.sockaddr_in ligne 2.
Répondre