Level Extreme platform
Subscription
Corporate profile
Products & Services
Support
Legal
Français
SFTP ActiveX control
Message
 
To
11/01/2012 19:41:33
Jim Wiggins
Affordable Custom Software
Illinois, United States
General information
Forum:
Visual FoxPro
Category:
ActiveX controls in VFP
Environment versions
Visual FoxPro:
VFP 7
OS:
Windows XP
Miscellaneous
Thread ID:
01532751
Message ID:
01532771
Views:
59
Unfortunately WinInet doesn't work with SSL/SFTP which is why wwFtp doesn't support SFTP either.

I've been looking to add this with some other integration tools, but it's basically a full re-write plus another dependency.

+++ Rick ---

>If you decide to use wininet instead of an activeX control, below is an example of how I publish files to an FTP site. It's based mainly on the work of Rick Strahl.
>
>Jim Wiggins
>
>
>* For publishing all the files in cFromFolder using FTP
>LOCAL cPwd, cFileName, cUid, cServer, cFtpFolder, cFromFolder
>LOCAL lFailed, i, cError
>LOCAL lsFileFind
>lFailed = .f.
>cError = ""
>* NOTE: modify next five lines as appropriate
>cUid       = "<<the FTP user id>>"
>cServer    = "<<the FTP url>>"
>cPwd       = "<<the password>>"
>cFtpFolder = "<<the folder to publish to>>"
>cFromFolder= "<<the folder that contains the files to be published>>"
>
>#DEFINE INTERNET_INVALID_PORT_NUMBER 0
>#DEFINE INTERNET_SERVICE_FTP         1
>#DEFINE INTERNET_FLAG_PASSIVE 0x08000000
>#DEFINE INTERNET_FLAG_ACTIVE         0
>#DEFINE INTERNET_OPEN_TYPE_DIRECT    1
>#DEFINE FTP_TRANSFER_TYPE_ASCII      1
>#DEFINE FTP_TRANSFER_TYPE_BINARY     2
>
>DECLARE INTEGER InternetConnect IN wininet;
>    INTEGER hInternetSession,;
>    STRING  sServerName,;
>    INTEGER nServerPort,;
>    STRING  sUsername,;
>    STRING  sPassword,;
>    INTEGER lService,;
>    INTEGER lFlags,;
>    INTEGER lContext
> 
>DECLARE INTEGER InternetOpen IN wininet;
>	STRING sAgent, INTEGER lAccessType,;
>	STRING sProxyName, STRING sProxyBypass,;
>	INTEGER lFlags
>
>DECLARE INTEGER FtpSetCurrentDirectory IN wininet;
>    INTEGER hConnect,;
>    STRING @lpszDirectory
> 
>DECLARE INTEGER FtpCreateDirectory IN wininet;
>    INTEGER hConnect,;
>    STRING lpszDirectory
>
>DECLARE INTEGER FtpDeleteFile ;
>   IN WinInet.dll ;
>   INTEGER hFTPSession,;
>   STRING cFileName
>   
>DECLARE INTEGER FtpFindFirstFile ;
>   IN WININET.DLL ;
>   INTEGER hFTPSession,;
>   STRING cFileSpec,;
>   STRING @sFileFind,;
>   INTEGER nFlags,;
>   INTEGER nContext
>
>DECLARE INTEGER InternetFindNextFile ;
>   IN WinInet.DLL ;
>   INTEGER hFindHandle,;
>   STRING @lsFileFind
>
>DECLARE INTEGER FtpPutFile IN wininet;
>    INTEGER hConnect,;
>    STRING  lpszLocalFile,;
>    STRING  lpszNewRemoteFile,;
>    INTEGER dwFlags,;
>    INTEGER dwContext
>
>DECLARE INTEGER InternetOpenUrl IN wininet;
>    INTEGER hInternet,;
>    STRING  lpszUrl,;
>    STRING  lpszHeaders,;
>    INTEGER dwHeadersLength,;
>    INTEGER dwFlags,;
>    INTEGER dwContext
>    
>DECLARE INTEGER InternetCloseHandle IN wininet INTEGER hInet
>
>WAIT " Publishing... " WINDOW AT SROWS()/2-1, (SCOLS()/2)-50 NOWAIT 
>
>hInternet  = InternetOpen("FoxFtp", INTERNET_OPEN_TYPE_DIRECT, CHR(0), CHR(0), 0)
>IF ISNULL(hInternet)  && this may never happen. Seems to always work, even with no physical connection
>  lFailed = .t.
>  cError = "access the internet"
>ELSE   
>  hConnection = InternetConnect(m.hInternet, cServer, ;
>    	  INTERNET_INVALID_PORT_NUMBER, ;
>	      cUid, cPwd, INTERNET_SERVICE_FTP, INTERNET_FLAG_PASSIVE, 0)
>  IF hConnection = 0
>    lFailed = .t.
>    cError = "connect"
>  ELSE
>    FtpSetCurrentDirectory(m.hConnection, @cFtpFolder)
>    ADIR(aFiles,cFromFolder+"\*.*","",1)
>    FOR m.i = 1 TO ALEN(aFiles,1)
>      WAIT " Publishing "+STR(m.i,3,0)+" of "+STR(ALEN(aFiles,1),3,0) WINDOW AT SROWS()/2-1, (SCOLS()/2)-50 NOWAIT 
>      IF FtpPutFile(m.hConnection, cFromFolder+"\" + aFiles(m.i,1), ;
>                    aFiles(m.i,1), ;
>                    FTP_TRANSFER_TYPE_BINARY, 0) = 0
>        lFailed = .t.
>        cError = "Publish "+ aFiles(m.i,1)
>        EXIT 
>      ENDIF   
>    ENDFOR 
>  ENDIF       
>ENDIF
>
>IF VARTYPE(hInternet)="N"
>  InternetCloseHandle(m.hInternet)
>ENDIF
>  
>#UNDEFINE INTERNET_INVALID_PORT_NUMBER 0
>#UNDEFINE INTERNET_SERVICE_FTP         1
>#UNDEFINE INTERNET_FLAG_PASSIVE 0x08000000
>#UNDEFINE INTERNET_FLAG_ACTIVE         0
>#UNDEFINE INTERNET_OPEN_TYPE_DIRECT    1
>#UNDEFINE FTP_TRANSFER_TYPE_ASCII      1
>#UNDEFINE FTP_TRANSFER_TYPE_BINARY     2
>
>WAIT CLEAR 
>
>IF lFailed
>  MESSAGEBOX("The server did not respond. Please try again in a few minutes.",16,"Unable to " + cError + ".")
>  RETURN .f.
>ELSE
>  RETURN .t.  
>ENDIF 
>
+++ Rick ---

West Wind Technologies
Maui, Hawaii

west-wind.com/
West Wind Message Board
Rick's Web Log
Markdown Monster
---
Making waves on the Web

Where do you want to surf today?
Previous
Reply
Map
View

Click here to load this message in the networking platform