ActiveSocket Toolkit Add network capabilities to any Windows or .NET application

Quicklinks


ASP 2.x SFTP Client Sample Source Code

ActiveSocket provides an easy-to-use development interface to a variety of IP protocols. By using ActiveSocket, you can very easily create or enhance applications with network features.

ActiveSocket features the following: DNS, FTP, HTTP, HTTPs, ICMP Ping, IP-to-Country, MSN, NTP, RSH, SCP, SFTP, SNMP v1/v2c (Get, GetNext, Set), SNMP Traps, SNMP MIB, SSH, TCP, Telnet, TFTP, UDP, Telnet, Wake-On-LAN and more.

ActiveSocket can be well integrated into ASP environments.

This document describes how the ActiveSocket FtpServer object can be integrated into ASP projects.

The most important functions of the SFtp object are:

  • Connect - connect to the (remote) FTP server on port 21 or any alternate port;
  • Disconnect - to diconnect after a connect call;
  • GetCurrentDir - retrieve the current directory;
  • ChangeDir - change the current directory;
  • CreateDir - create a new directory;
  • RenameDir - rename a directory;
  • DeleteDir - delete a directory;
  • FindFile - find a specific file in the current directory;
  • FindFirstFile - iterate over all files in the current directory; find the first file;
  • FindNextFile - iterate over all files in the current directory; find the next file;
  • RenameFile - rename a file in the current directory;
  • DeleteFile - delete a file in the current directory;
  • GetFile - get (download) a file;
  • PutFile - put (upload) a file;

Step 1: Download and install ActiveSocket

Download ActiveSocket from the ActiveXperts Download Site and start the installation. The installation guides you through the installation process.

Step 2: Create a new Web Site

First, create a new directory on the IIS Server's file system. This directory will hold the ASP later on.

From the 'Start menu', click on 'Administrative Tools' and click on 'Internet Information Services (IIS) Manager'. Right-click on the 'Web Sites' container and choose 'New->Web Site':

ASP

(Click on the picture to enlarge)

The 'Web Site Creation Wizard' is shown, guiding you thorugh the process of creating a new web site. Provide all necessary information:

  • Description - a friendly description of the new site;
  • IP / Port / Host Header - choose your preferred way to distinguish between other web sites on the server;
  • Path - select the directory that will store the ASP file(s);
  • Web Site Access Permissions - in the Web Site Access Permissions dialog, enable 'Read' and 'Run scripts (such as ASP)';

You're now able to write an ASP script to use IP protocols with ActiveSocket.

Step 3: Create the from

First of all we need to create a form in HTML to get the login information for the ftp server. All we actually need is:

  • The log-in name.
  • The password.
  • The server we want to connect to.
  • And the directory we're going to list.

In this sample all we're going to do is create a ASP file that is able to list files and directories in a directory. Using ActiveSocket it is easy to create a page that makes you able to upload and to download files.

You can create a form that looks like this:

(Click on the picture to enlarge)

Step 4: Making it happen

You can list files using ActiveSocket ftp in 3 steps.

  1. Creating an object to use ActiveSocket
  2. Connect to the server
  3. List the files
Creating the object

Now that we have all the information we need, we need to create an object witch supports communicating through ActiveSocket. To do this we only need one line of code:

Set objFtp = Server.CreateObject( "ActiveXperts.FtpServer" )

Connecting to the server

To connect to the server we're using the ActiveSocket method "Connect".

objFtp.connect request("server"), request("username"), request("password")

This makes a code look like this:

if request("submitbutton") <> "" then

  dim objFiles

  ' create the object
  Set objSFtp = Server.CreateObject( "ActiveXperts.SFtp" )
	
  objSFtp.clear
	
  ' set the logfile
  objSFtp.logfile = request("logfile")
  
  ' connect
  Set objSFtp           = CreateObject("ActiveXperts.SFtp")   ' Create an SFtp instance
  objSFtp.Host          = "192.168.1.10"                      ' Hostname or IP address of remote UNIX/LINUX machine
  objSFtp.UserName      = "demo"                              ' Login as 'demo'
  objSFtp.Password      = "topsecret"                         ' Use a password to login

  ' Connect
  objSFtp.Connect                                             ' Connect to the SFTP server

  objSFtp.ChangeDir request("directory")
	
else
  ' do nothing
end if

Listing the files

If the previous actions have been succesfully executed, we can list the files. To list these files we're using two ActiveSocket methods:

  1. We're using "FindFirstFile" to find the first file.
  2. We're using "FindNextFile" to move on to the next.

When we know what the first file is we're starting a loop. If one file is listed, FindNextFile is used to move on to the next. If there is no more file, the software will return an error. Thats why we created the following code:

  ' find the first file
  if objSFtp.LastError <> 0 then
    response.write("Connection failed..<br>")
  else
    set objFiles = objSFtp.FindFirstFile(".")
  end if
	
  ' list the files
  if objSFtp.LastError <> 0 then
    response.write("<tr><td>Sorry.. Failed to list the files..</td></tr>")
  else
    getfiles
  end if	


sub getfiles

  'show the contents in a table
  response.write ("Files in directory " & request("directory") & " :")	
  response.write ("<table>")
	
  'the software will return an error if there is no more file to display, so:
  do while objSFtp.LastError = 0
     response.write("<tr>")
     response.write("<td>")
		 
     'display folders
     if objFiles.IsDirectory = 0 then
       response.write "File:"
     else
       response.write "Directory:"
     end if
	   
     response.write("</td>")
     response.write("<td class=files>")		 		 		 		 
	   
     'display the names
     response.write(objFiles.name)
		 
     response.write("</td>")
     response.write("</tr>")
		 
     'find the next file; continue the loop
     set objFiles = objSFtp.FindNextFile
  loop

  response.write "</table>"
	
end sub