zFTPserver is a fast, powerful and extensible Windows FTP server. It is free for both personal and commercial use. zFTPserver can be extended by several extensions, including event-driven scripting, custom authentication scripts and more to come. Download zFTPserver today. * Low on resources * High transfer speed * Remote administration * Virtual filesystem * System service support * Strong SSL/TLS encryption * IP access management * Anti-Hammering * Multiple and complex group memberships * Advanced passive mode Look at the features page for more information. In addition to the free zFTPServer Suite, a Windows FTP Server Västgöta-Data AB now offers extensions to zFTPServer. These extensions add very powerfull features for the expert user. * Events and Messages : Reactive * Events and Messages : Proactive The extensions cover advanced functionality most likely applicable for expert users and businesses with specific needs. The extensions offer great functionality such as scanning files on completed uploads, customized logs, and much more! Look at the extensions page for more information. As a Windows XP FTP Server, or Windows 2003 Server FTP Server. Run your zFTPServer as a system service (Windows NT / Windows 2000 / Windows XP / Windows 2003 Server) or in application mode. zFTPServer supports active and passive mode connections allowing administrators to specify both IP-adresses or host names for servers with dynamic ip adresses and/or behind firewalls (e.g. myserver.no-ip.com) It is possible to customize the messages sent from the FTP Server to the connecting user. This enables the user to, for example, get information of loading statistics, server information and date and time of commands. Administrators can use the built-in scripting facilities to adapt the way zFTPServer reacts to certain events. You can get zFTPServer to enforce your rules and policies. For example, you can script virus checks to be run on all uploaded files, to automatically transform between file formats, and to send notifications about special events. zFTPServer is an enterprise class scriptable Windows FTP Server. Dynamically access user and group account information from your Windows NT Domain Controller or Active Directory, including authentication information, home directories, and other settings. Any changes made to the Windows NT User/Group information will be immediately available in zFTPServer. The most powerful Windows FTP Server. zFTPServer Suite is designed to be easy to use. Most features are self explanatory or explained within the graphical user interface. Some of the more advanced features are explained more in-depth on this page. These scripts utilizes the administration protocol to manage the server from custom applications. This technique may be used to integrate zFTPServer Suite with custom systems, such as web applications or business systems. * Send SMS when a specific user logs in * Scan uploaded files for viruses with AVG * Create thumbnails of uploaded images * Automatically backup a file before it is to be overwritten * Only allow login during office hours * Only allow upload of specific file types * Only allow SAP users to download SAP-documents * Extreme login security using SMS audit. One of those superb applications that can provide you with the free equivalent of a secure commercial FTP server. It is not often you find something so well done, so user friendly and freeware at the same time. zFTPServer is AMAZING. I still can't believe how good it is! zFTPServer Suite is an Enterprise class Windows FTP Server that is constantly under development, as a Windows FTP Server, and have over the years gotten quite a few awards. The most enjoyable awards, of course, are the reactions we get from our satisfied users. We would like to take the opportunity to thank all the people who help us in reporting bugs, that have made suggestions for functionality and that have made translations. Since the key developer now work at Västgöta-Data (a swedish IT consultant company); zFTPServer Suite is now targeted for further development. The server will remain free for both business and home use but with the possibility to buy additional extensions for powerful features. This extension allows the FTP server to authenticate users against a Windows Domain / Server / Active Directory. With this extension enabled Windows users will automatically be able to logon to the FTP server without the need to add them to zFTP! - The users in zFTP will take precedence, so if a user exists in zFTP (and is not connected to a Windows account) then the zFTP account will be used for login. - If Authentication Integration for Windows is enabled, and a user tries to log in, access will be authenticated against the given Windows Domain (or Server). - Access to FTP can also be restricted based on certain Windows group memberships, so it will be very easy to administer which accounts that should be able to login through FTP using only Windows group management (e.g. in the AD)

Manage zFTPServer Suite using PERL

#!"c:/perl/bin/perl.exe"

use Strict;
use Net::Telnet;
use CGI;
   $CGI::POST_MAX=1024 * 5;  # max 5K posts
       $CGI::DISABLE_UPLOADS = 1;  # no uploads
use File::Path::Stderr;

my $query = new CGI;
my $t = new Net::Telnet ();



   my $port = 3145;
   my $admin_uname = "Admin";
   my ($admin_passwd, $uname, $passwd, $real_name, $new_domain, $vhpath);

   $admin_passwd = $query->param('Admin_pass');
   $uname = $query->param('new_user');
   $passwd = $query->param('new_password');
   $real_name = $query->param('real_name');
   $domain_name = $query->param('domain');
   $vhpath = "c\:\\sites\\vh\\$domain_name\.vh";

   mkpath("c\:\\sites\\$domain_name\\logs");
   mkpath("c\:\\sites\\$domain_name\\httpdocs");
   mkpath("c\:\\sites\\$domain_name\\cgi-bin");

   my @lines;
   $lines[0] = '<VirtualHost *:80>';
   $lines[1] = '   ServerAdmin admin@dj69.com';
   $lines[2] = '   DocumentRoot C:/sites/'.$domain_name.'/httpdocs/';
   $lines[3] = '   ServerName '.$domain_name;
   $lines[4] = '   ServerAlias www.'.$domain_name;
   $lines[5] = '   ErrorLog C:/sites/'.$domain_name.'/logs/error_log';
   $lines[6] = '   CustomLog C:/sites/'.$domain_name.'/logs/access_log common';
   $lines[7] = '   ScriptAlias /cgi-bin/ C:/sites/'.$domain_name.'/cgi-bin/';
   $lines[8] = '<Directory "C:/sites/'.$domain_name.'/httpdocs/">';
   $lines[9] = '   Options Includes';
   $lines[10] = '   AllowOverride None';
   $lines[11] = '   Order allow,deny';
   $lines[12] = '   Allow from all';
   $lines[13] = '</Directory>';
   $lines[14] = '</VirtualHost>';

   open FH, ">$vhpath";
   my $listitem;
   foreach $listitem ( @lines )
   {
      print FH $listitem, "\n";
   }


   close(FH);

print "Content-type:text/html\n\n";

   $t->open(port => $port);
print "port open\n";

# Next line is not needed from some reason.....
#   $t->waitfor('/200\s\./');
   print 'Got 220 (Got in)<br>';

# sending admin's user name
   $t->print('user ', $admin_uname);
   print "gave username<br>";

# checking for the correct response (331).
   $t->waitfor('/331 .*/') or die "dowant pass\n";
   print "Got 331 User name received, need password.<br>";

# sending admin's password
   $t->print('pass ', $admin_passwd);
   print "gave password.<br>";

#checking for the correct response (230).
   $t->waitfor('/230 .*/') or die "pass is not correct\n";
   print "got 230 User logged in, proceed.<br>";

#Adding the new user
   print "Adding new user $uname";
   $t->print('ADDUSER "', $uname, '" "', $passwd, '" "', $real_name, '"');
   $t->waitfor('/200 .*/') or die "user has not been creates\n";
   print "Got 200 User created successfully.<br>";

#connecting resources to the user.
   print "connecting resources";
   $t->print('SETRESOURCE "', $uname, '" "cgi-bin" "c\:\\sites\\', $domain_name, '\cgi-bin" "RF,WF,DF,AF,LD,MD,DD,RR"');
   $t->waitfor('/200 .*/') or die "user did not update\n";
print "Got 200 User(s) updated successfully.<br>";
   $t->print('SETRESOURCE "', $uname, '" "httpdocs" "c\:\\sites\\', $domain_name, '\httpdocs" "RF,WF,DF,AF,LD,MD,DD,RR"');
   $t->waitfor('/200 .*/') or die "user did not update\n";
print "Got 200 User(s) updated successfully.<br>";
   $t->print('SETRESOURCE "', $uname, '" "logs" "c\:\\sites\\', $domain_name, '\logs" "RF,LD,RR"');
   $t->waitfor('/200 .*/') or die "user did not update\n";
print "Got 200 User(s) updated successfully.<br>";



#   print "deleting user\n";
#   $t->print('DELUSER "', $uname, '"');
#   $t->waitfor('/200 .*/') or die "user has not been deleted\n";
#print "User(s) removed successfully.\n";

print "Quitting\n";
   $t->print('quit');
   $t-close;
Script submitted by Roi