FiveTech Support Forums

FiveWin / Harbour / xBase community
Board index FiveWin para Harbour/xHarbour Conectar SFTP con CURL
Posts: 1344
Joined: Wed Nov 16, 2005 09:14 PM
Conectar SFTP con CURL
Posted: Tue Sep 28, 2021 12:45 PM
Estimados:
Alguien ha conectado mediante CURL con un servidor SFTP para descargar / subir un archivo?
Lo hago así con FTP y funciona bien
Code (fw): Select all Collapse
#include "hbcurl.ch"
#include "fivewin.ch"

function Main()

  curl_global_init()
  callSFTP( "ftp.misitio.com.ar/archivos/miarchivo.jpg" )

   curl_global_cleanup()

return nil

function callSFTP( cServer )
LOCAL curlHandle, cFtpsURL := cServer, cFile, nFSize, cRet, nPort := 21 // En SFTP cambio por 22 o 122 que es el puerto que me abrieron
LOCAL curlErr
cFile := "C:\misdescargas\DOWNLOAD.JPG"

curlHandle:=curl_easy_init()
IF EMPTY(curlHandle)
  MsgStop("Error al iniciar cURL.","Error")  
  RETURN nil
ENDIF
curl_easy_reset( curlHandle )

curl_easy_setopt(curlHandle, HB_CURLOPT_URL, cftpsURL)
curl_easy_setopt(curlHandle, HB_CURLOPT_USERPWD, "usuario:password" )
curl_easy_setopt(curlHandle, HB_CURLOPT_PORT, nPort)

curl_easy_setopt(curlHandle, HB_CURLOPT_FOLLOWLOCATION, .T. )
curl_easy_setopt(curlHandle, HB_CURLOPT_SSL_VERIFYPEER, .F. )
curl_easy_setopt(curlHandle, HB_CURLOPT_SSL_VERIFYHOST, .F. )


curl_easy_setopt(curlHandle, HB_CURLOPT_DOWNLOAD, 1)
curl_easy_setopt(curlHandle, HB_CURLOPT_PROTOCOLS, HB_CURLPROTO_FTP )  // En SFTP cambio por  HB_CURLPROTO_SFTP
curl_easy_setopt(curlHandle, HB_CURLOPT_DL_FILE_SETUP, cFile)


/* Do everything */
curlErr := curl_easy_perform(curlHandle)
  
/* Report any errors */

cRet:=curl_easy_strerror(curlErr)
MsgInfo(cRet)

//Close
curl_global_cleanup( curlHandle )
RETURN nil


Pero si cambio el protocolo para un servidor SFTP no me esta funcionando. Siempre me da como respuesta "Unsupported Protocol"
Alguien lo ha hecho con SFTP?

Gracias de antemano
Posts: 400
Joined: Tue Oct 16, 2007 05:51 PM
Re: Conectar SFTP con CURL
Posted: Tue Feb 22, 2022 01:15 PM

Hola, Cesar Gomez.

Pudiste hacer trabajar CURL con un servidor SFTP ?

Saludos,
Regards,

Albeiro Valencia
www.avcsistemas.com
Posts: 1344
Joined: Wed Nov 16, 2005 09:14 PM
Re: Conectar SFTP con CURL
Posted: Tue Feb 22, 2022 03:33 PM

Hola!
No, no pude hacerlo conectar con SFTP.

Posts: 1515
Joined: Thu Oct 30, 2008 02:37 PM
Re: Conectar SFTP con CURL
Posted: Tue Feb 22, 2022 03:40 PM

Aunque no lo he usado, creo que el uso de pSftp.exe puede ser lo más rapido de implementar. Luego lo que más control aporta será usar la libreria CUrl.
En este hilo aparecen usos de ambos:

viewtopic.php?f=3t=40326hilit=sftpsid=6f12b5de4a5f32b751ec7cf4502e4cab#p240837

&&&

Posts: 400
Joined: Tue Oct 16, 2007 05:51 PM
Re: Conectar SFTP con CURL
Posted: Tue Feb 22, 2022 04:56 PM

Hola,
Cesar, gracias, lamentable que no se pueda usar curl para SFTP.
Hmpaquito, probare usando pSftp.exe, con respecto al uso de curl de harbour tal como lo dice Cesar, Siempre me da como respuesta "Protocolo no compatible".

Saludos,
Regards,

Albeiro Valencia
www.avcsistemas.com
Posts: 1515
Joined: Thu Oct 30, 2008 02:37 PM
Re: Conectar SFTP con CURL
Posted: Tue Feb 22, 2022 06:21 PM
albeiroval wrote:Hola,
Cesar, gracias, lamentable que no se pueda usar curl para SFTP.
Hmpaquito, probare usando pSftp.exe, con respecto al uso de curl de harbour tal como lo dice Cesar, Siempre me da como respuesta "Protocolo no compatible".



Si se puede. En el hilo que puse, además de la solucion psftp.exe, el maestro Navarro aporta una solucion para conexion por programa. El enlace más directo es este: viewtopic.php?f=3&t=40326&hilit=sftp&start=15#p240852

Aquí un ejemplo para FTP y con un pequeño cambio, para SFTP: https://groups.google.com/g/harbour-use ... JY7zJoAQAJ
Posts: 400
Joined: Tue Oct 16, 2007 05:51 PM
Re: Conectar SFTP con CURL
Posted: Wed Feb 23, 2022 03:20 AM
hmpaquito,

Este es el codigo que uso, y siempre sale el error "Unsoported protocol".
Uso las siguientes librerias en la compilacion con BorlandC : hbcurls.lib hbcurl.lib libcurl.lib
No se cual version de la libcurl.dll se debe usar para SSH (SFTP), yo uso la siguiente version de dll : libcurl/7.51.0 WinSSL WinIDN

Code (fw): Select all Collapse
curl_global_init()

    if !Empty( curl := curl_easy_init() ) 
        
     curl_easy_setopt( curl, HB_CURLOPT_FTPPORT, 22 )
     curl_easy_setopt( curl, HB_CURLOPT_URL, cUrlDel )
     curl_easy_setopt( curl, HB_CURLOPT_DL_BUFF_SETUP )
     curl_easy_setopt( curl, HB_CURLOPT_USERPWD, _FTPUSER + ":" + _FTPPASS )
     curl_easy_setopt( curl, HB_CURLOPT_USE_SSL, 0 )
     curl_easy_setopt( curl, HB_CURLOPT_PROTOCOLS, HB_CURLPROTO_SFTP )
     curl_easy_setopt( curl, HB_CURLOPT_POSTQUOTE, { "DELE " + cPathFile } )
     curl_easy_setopt( curl, HB_CURLOPT_VERBOSE, .F. )
     
     if ( nResult := curl_easy_perform( curl ) ) == CURLE_OK
         ? "Delete file :", nResult
     else 
         ? "Error CURL curl_easy_perform", curl_easy_strerror(nResult), nResult
     endif   

     curl_easy_reset( curl )
     
     curl_easy_cleanup( curl )
     
  endif
        
    curl_global_cleanup()


Si tienes un ejemplo funcional con SFTP, podrias ponerlo, por favor
Saludos,
Regards,

Albeiro Valencia
www.avcsistemas.com
Posts: 1515
Joined: Thu Oct 30, 2008 02:37 PM
Re: Conectar SFTP con CURL
Posted: Wed Feb 23, 2022 08:06 AM

Lo siento, no lo he usado, no tengo ejemplo funcional

Posts: 1344
Joined: Wed Nov 16, 2005 09:14 PM
Re: Conectar SFTP con CURL
Posted: Wed Feb 23, 2022 01:14 PM

Me interasa este tema, si alguien se ha conectado a un SFTP y quiere compartirlo, desde ya muy agradecido.

Posts: 27
Joined: Thu Feb 20, 2014 12:40 PM
Re: Conectar SFTP con CURL
Posted: Thu Mar 10, 2022 08:33 AM

Buenos días,
Estoy probando ejemplos de SFTP con CURL y me da los siguientes fallos. Se ve que me falta algo y no se que es. Si alguien me puede ayudar. Gracias

Turbo Incremental Link 5.69 Copyright (c) 1997-2005 Borland
Error: Unresolved external '_HB_FUN_CURL_GLOBAL_INIT' referenced from C:\PRO_WIN\1_PRG\2_FTP.OBJ
Error: Unresolved external '_HB_FUN_CURL_EASY_INIT' referenced from C:\PRO_WIN\1_PRG\2_FTP.OBJ
Error: Unresolved external '_HB_FUN_CURL_EASY_SETOPT' referenced from C:\PRO_WIN\1_PRG\2_FTP.OBJ
Error: Unresolved external '_HB_FUN_CURL_EASY_PERFORM' referenced from C:\PRO_WIN\1_PRG\2_FTP.OBJ
Error: Unresolved external '_HB_FUN_CURL_EASY_DL_BUFF_GET' referenced from C:\PRO_WIN\1_PRG\2_FTP.OBJ
Error: Unresolved external '_HB_FUN_CURL_GLOBAL_CLEANUP' referenced from C:\PRO_WIN\1_PRG\2_FTP.OBJ
* Linking errors *

Jose Garcia

Posts: 1515
Joined: Thu Oct 30, 2008 02:37 PM
Re: Conectar SFTP con CURL
Posted: Thu Mar 10, 2022 08:37 AM
Posts: 27
Joined: Thu Feb 20, 2014 12:40 PM
Re: Conectar SFTP con CURL
Posted: Thu Mar 10, 2022 10:12 AM

Muchas gracias,

Ya lo he hecho y ahora me sale una ventana de infirmacion que me dice "protocolo no soportado". Estoy intentando acceder a un SFTP de ionos.

gRACIAS

Posts: 1515
Joined: Thu Oct 30, 2008 02:37 PM
Re: Conectar SFTP con CURL
Posted: Thu Mar 10, 2022 10:44 AM

Por favor muestra el fuente, la parte del envio, tergiversando claves y direcciones electronicas

Posts: 27
Joined: Thu Feb 20, 2014 12:40 PM
Re: Conectar SFTP con CURL
Posted: Thu Mar 10, 2022 10:56 AM

Aqui lo tienes. Solo estoy haciendo pruebas hasta que consiga enlacar para liarme con el resto. Gracias

include "FiveWin.ch"

include "hbcurl2.ch"

static oWnd, oTimer, oReader, oTdif, oFTP, oInternet, nDis

//----------------------------------------------------------------------------//

function Main()

local fm:="test" , curl, cul

If ! Empty( curl := curl_easy_init() )
hb_default( @cul, "sftp://usuario:contraseña@direccion_hasta_fichero" )
curl_easy_setopt( curl, HB_CURLOPT_URL, cul )
curl_easy_setopt( curl, HB_CURLOPT_UPLOAD)
curl_easy_setopt( curl, HB_CURLOPT_PROTOCOLS, HB_CURLPROTO_SFTP )
curl_easy_setopt( curl, HB_CURLOPT_UL_FILE_SETUP, "C:\1\TEST.TXT" ) // fichero que va a salvar y donde.
curl_easy_setopt( curl, HB_CURLOPT_INFILESIZE, len(fm) )
curl_easy_perform( curl )
curl_easy_reset( curl )
curl_easy_cleanup( curl )
Endif
curl_global_cleanup()

return nil

Posts: 1515
Joined: Thu Oct 30, 2008 02:37 PM
Re: Conectar SFTP con CURL
Posted: Thu Mar 10, 2022 11:02 AM

Vale Pepe.

Pillate el programa WinSCP y metele tus parametros de conexion SFTP a ver si por ahi funciona