Manual en
Manual en
User Guide
2
Contents
63 Graphs
64 Domain Settings
64 General Settings
72 Authentication Settings
82 IP Access
83 IP Whitelisting
84 File Access
85 SFV Directory
87 Transfer Quota Limit
88 FTP Messages
89 Listeners
89 Users
89 User > General
91 User > Directory
92 User > Subfolder
92 User > Group
94 User > Limit
95 User > Ratio & Quota
96 User > IP Access
98 User > File Access
99 User > Access Time
99 Event Manager
Chapter 6 105 Advanced Features
105 Lua Language
107 Server Variables
108 Server Lua API
109 User & Group
116 Domain Function
130 System Function
140 Get/Set Options
143 Miscellaneous
147 Administrator
150 Database Schema
3
Wing FTP Server 1
Overview
Welcome to Wing FTP Server
Wing FTP Server is an enterprise FTP server software that can be used on Windows, Linux,
and Mac OS. It supports multiple file transfer protocols, including FTP, FTPS, HTTP, HTTPS,
and SFTP, giving your clients flexibility in how they connect to the server. And it provides
administrators with a web-based interface to administrate the server from anywhere. You can
also monitor server performance and online sessions and even receive email notifications
about various events taking place on the server.
· Free Edition - After the trial period, you can continue to use Wing FTP Server as a Free
· Cross-Platform - You can run this FTP server software on Windows, Linux, and Mac OS.
· Multiple Protocols - Supports FTP, FTPS, SFTP and HTTP/S web client. Free client FTP
· Web-Based Administration - Just with a web browser, you can administrate your FTP
· Web-Based Client - Transfer files via a web browser anytime, anywhere. Also support online
· Android & iOS App - This Android & iOS App helps mobile phone user transfer and manage
· Programmable Event Manager - Use the Event Manager to execute Lua script, send an
· Database & LDAP - Store user data via XML files or ODBC/Mysql database, also support
· Load Balance - Wing FTP Server can be clustered by Wing Gateway to meet load balance
· Task Scheduler - Use your Lua scripting tasks to appoint an action at a specified time.
· Audit & Report - All the FTP transactions will be captured into a database, you can analyze it
· Virtual Directories - Allows you to map virtual directories to physical directories, and you can
· Ratio, disk quota system - Every user can be assigned individual disk quota, ratio, and
bandwidth.
· IPv6 Support - You can easily add an IPv6-based listener (or IPv6-based IP access rules).
· Two-factor authentication - You can enable two-factor authentication (TOTP) for Web
Web Client contains basic functions like Windows Explorer and also brings the below excellent
features to you:
Multi-file Uploader - You can upload multiple files or an entire folder in Web Client easily, also
Multi-file Downloader - Using a Chrome (or Firefox) extension "Wing Download Manager", for
Online Text Editor - This function enables you to view or modify some text file without
downloading it.
Search Files - Users can recursively search for files using exact filename matches or wildcard
Built-in Media Player - This feature helps you to play video files (.MP4, .MOV) and audio files
Picture Viewer - You can simply view PNG, JPG, GIF, BMP images in the picture viewer.
Support for iOS/Android - The mobile version of Web Client has a simpler interface for iOS or
Android's browser.
WebLink - Share the files or folders with just a link, you can also set a limited number of
File Request Link - Request files from your client with just a link, you can also set the upload
Zip/Unzip - Creating zip archives or extracting zip archives on the server directly, save your
download/upload time.
Editions
Wing FTP Server is available in 4 editions: Free Edition, Standard Edition, Secure Edition, and
Corporate Edition.
You can download the installer file from our official website. If you never install WingFTP before,
then you can have a 30-day trial period with full functions. After 30 days, it will become Free
Edition automatically if you never register.
Please note, Free Edition is only for non-commercial use (personal use), and the other three
editions can get FREE email and remote assistance support for a lifetime.
If you are not sure which edition is right for you, please check the editions comparison chart
below:
Requirements
To properly run Wing FTP Server on your server machine or computer, the following
requirements are recommended:
Hardware
· CPU: 2 Cores x86 CPU
· Memory: 1GB of system memory (RAM)
Software
· Operating System: Windows 7/8/10/11, Windows Server 2008/2012/2016/2019/2022, Mac OS 10.5+,
Linux (Ubuntu 12.0+, RHEL 7.0+).
· Web browser for Administration & Web Client: Google Chrome, Firefox, Edge, Safari, etc.
How to upgrade?
Wing FTP Server is distributed under a shareware license, you can download and evaluate a
fully functional trial version for 30 days. After 30 days, you can continue to use it as Free edition
for non-commercial use.
If you need more features available in Standard / Secure / Corporate edition, please purchase
a license through our website: https://www.wftpserver.com/order.htm.
And the license includes a 2-year upgrade protection by default (the software itself never
expires, all updates can be downloaded for free within two years). However, if you want to get a
longer protection period, you can choose from the options we offer after you click the purchase
link. If your upgrade protection has expired or will expire soon, please contact us at
[email protected].
On payment approval, we will send you the registration code (license key) within 12 hours, and
it will be sent from email address: [email protected] (or no-reply@2checkout.
com). Please make sure your mail server won't block or filter this email address.
Installation
First, you need to download Wing FTP Server's installer file through our website: https://www.wftpserver.
com/download.htm
For Windows version, launch the installer file "WingFtpServer.exe", and fill out the required options to finish
the installation.
For Linux version, you can extract the downloaded installer file "wftpserver-linux-64bit.tar.gz" with the
following command line:
$ tar xzvf wftpserver-linux-64bit.tar.gz
That will extract the files from the package into a directory named "wftpserver", then jump into this directory
and setup Wing FTP Server:
$ cd wftpserver
$ sudo ./setup.sh
Login Administration
When the installation of Wing FTP Server is completed, you can launch a web browser and
type in http://127.0.0.1:5466 to start the web-based administration. 5466 here is the default
listener port for web administrator, and you can change it during installation.
Windows users can launch the administration simply by double-clicking the Wing FTP Server
icon in the system tray or on the desktop. Enter your admin name and password created during
installation, then click the "Login" button.
If no domain has been created before, then you will be asked whether you would like to create the first
domain. Click "Yes" and it will open the domain creation window:
You need to provide a unique name for the domain ID, and it is simply an identifier to distinguish the
domain from others.
If you want to keep all the default listeners, just click the button "OK".
Now your first domain has been created successfully! It is so easy, right? More domain settings can be
found and configured under "Domain -> Settings".
After your first domain is created, you need to add a user account for this domain. Navigate to "Domains ->
YourDomain -> Users", then click the button "Add User":
You need to input the username/password for the user account. To create an anonymous account, just
check the option "anonymous."
Adding a home directory is also necessary. Just switch to the tab "Directory" and click the button "Add
Directory," then choose a physical folder by clicking the "Browse" button (or enter a UNC path directly).
The final step is to grant access rights for that folder, and the default access rights are "File Read" and
"Directory List," which allows users to list files or download files.
Testing
Congratulations! Your Wing FTP Server is now accessible and ready for file sharing. If you've
enabled the HTTP protocol during domain creation, you can now test it with a web browser.
Enter http://127.0.0.1, and you will be taken to the login page shown below:
Type your account name and password, and click the button "Login".
Once you can see the file listing like the above screenshot, you have installed Wing FTP Server
successfully.
If your WingFTP server machine is in a private local-area network (LAN), and the FTP client
connections are from the internet, then you need to forward the necessary FTP ports in your
router/firewall.
1. Login WingFTP's Administration and navigate to "Domains -> Settings -> General Settings ->
FTP Passive Mode".
2. Select the option "Fixed IP address" and type the external IP address of your router/firewall. If
you don't know the external IP address, just select the option "Get IP from a web file".
3. Set the passive port range (FTP data ports) between 1024 and 1124.
Just take a few steps to forward the FTP listener ports and FTP passive data ports. Our test
scenario is based on a NETGEAR router (Nighthawk R7000), other devices may have the
similar process.
Email Notification
First, you need to add an SMTP server configuration with a few steps:
1. Navigate to "Domain -> Settings -> General Settings", and click the button "Add SMTP
Configuration".
2. If your SMTP server requires authentication, please check on the option "Need Auth".
5: You should check on the option "Use TLS/SSL" if your SMTP server requires a secure
connection.
Now you can Event Manager to send email notification when a file is uploaded, just open the
event "Domain -> Event Manager -> FTP Events -> OnFileUploaded", and check on "Enable
Send Email" like the below:
Administration Console
Administration Console is a handy tool for administrators, which is like the Linux "Shell" or the Windows
"Command Prompt." You can run administration commands or Lua scripts from the console.
Wing FTP Server provides two types of consoles - Application Console and Web-based Console.
Application Console is an internal application of Wing FTP Server. You can run this application with the
command prompt(or the Linux "shell") on the machine that is installed with Wing FTP Server. This
application can be very useful when you are running Linux without GUI, and you don't want to manage your
server from a remote web browser.
Open a command window (or Linux shell) and navigate to WingFTP's installation folder, then start the
program "wftpconsole" with the required parameters. If you are not sure how to do this, type command
"wftpconsole --help" and you will see a list of all allowed options as follows:
Allowed options:
--help Show this message
-u [ --username ] arg Username (Required field)
-p [ --password ] arg Password (Required field)
-h [ --host ] arg Remote host IP address,default is localhost
· Note 1: After successful connection to the local administration, please type the following command to
log in:
wftpconsole -u admin -p admin12345
· Note 2: The "lua>>" prompt indicates that you are in the Wing FTP Server administration, and it is ready
to receive your commands.
· Note 3: By entering command "help," you will get a list of useful administration commands.
· Note 4: You can input Lua script and execute it, like "print(1+2+3)".
· Note 5: Quit the console by typing "exit".
Web-based Console
The Web-based Console is quite similar to the Application Console. It is located in the Web-based
Administration. When you have logged on the Web admin, click on the left panel of "Administration ->
Console" and the Web-based Console will appear on the right panel.
Type the "help" command, and then you can see a list of administration commands.
Type the "domainlist" command to get the domain list on your server.
Lua Scripts
Apart from the Administration commands, normal lua script code can also be run here:
There are lots of server APIs and variables available for your scripts.
You can switch between the Single/Multiple line mode by clicking the icon before the "lua>>" prompt or by
pressing "Ctrl + M".
Single Line:
Multiple Lines:
Log Filename
All the admin log files will be stored under the folder "Log/Admin", the log filename supports certain
wildcard characters as outlined below:
Log Maxsize
The log file will no longer be written in when it reaches the size limit you set here.
Chapter 3 Administration 20
Administration 3
Listener
Here you can configure web admin's listener.
Listener Port
This web admin's listener port, default is 5466.
Listener Address
This web administration listener address, default "*" means the admin port listens on all available IPs.
If you change it into a single IP address, then the admin port will listen on that IP address only.
21 Chapter 3 Administration
Administration 3
IP Access
Configure IP access rules to allow or deny access for the administrators.
If you do not specify any IP address, the administrators can log on the server from any IP address. But if
you set allowed rules, the administrators will only gain access from the IP addresses specified in the
allowed rules. If you set denied rules, the administrators will have access to the server from any IP address
except those specified in the denied rules. The order of the rules is also critical.
For example:
Allow 192.168.1.188
Refuse connections from any IP except 192.168.1.188.
Supported wildcards
Wing FTP Server supports IP address ranges and wildcards, which are shown as below:
xxx.xxx.xxx.xxx
Chapter 3 Administration 22
Administration
IP address must be exactly matched(e.g., 192.168.1.1).
3
xxx.xxx.xxx.xxx-yyy
A specified range of IP addresses, e.g. 192.168.1.10-25.
xxx.xxx.xxx.xxx-yyy.yyy.yyy.yyy
A specified range of IP addresses, e.g. 192.168.1.0-192.168.5.255.
Admin User
An admin user account is required to administrate your server.
User Name
23 Chapter 3 Administration
Administration 3
Also known as the "Login ID," The administrator will log in using this username. The user name must be
unique to the server and can not contain any of the following special characters: \ / < > |:? *.
Password
A password is required for a session to be authenticated by the Server. A strong password contains at
least 6 characters including upper and lower case letters and at least one number. Restrictions can be
placed on the length and complexity of passwords through limits configuration.
Read-Only Administrator
If you enable the option "Read-Only Administrator," then that administrator can only view server settings
instead of changing them.
Domain Administrator
If you enable the option "Domain Administrator," you must select one or more domains below, then that
administrator can only administrate the selected domains (such as managing users, groups, or activities).
Base folder
You must enable the option "Domain Administrator" first, to specify a base folder for that domain
administrator. Then he can only be able to share files/folders under the base folder.
IP Access Tab
Chapter 3 Administration 24
Administration 3
You can define IP access rules to allow/deny users' access based on IP address for this administrator.
If you do not specify any IP address, this administrator can log on the server from any IP address. But if
you set allowed rules, the administrator will only gain access from the IP addresses specified in the
allowed rules. If you set denied rules, the administrator will have access to the server from any IP address
except those specified in the denied rules. The order of the rules is also critical.
For example:
Allow 192.168.1.188
Refuse connections from any IP except 192.168.1.188.
Supported wildcards
25 Chapter 3 Administration
Administration 3
Wing FTP Server supports IP address ranges and wildcards, shown as below:
xxx.xxx.xxx.xxx
The IP address must be exactly matched(e.g., 192.168.1.1).
xxx.xxx.xxx.xxx-yyy
A specified range of IP addresses, e.g. 192.168.1.10-25.
Admin Log
Here you can check logged administration activities.
Pause
Click this button to pause the log refreshing temporarily. This is useful on busy systems as it allows
particular sections of the log to be highlighted and copied before it is scrolled out of view. Once finished,
click this button again to resume the log refreshing.
Filter Log
Chapter 3 Administration 26
Administration 3
To quickly find and read through specific sections of the log, you will need the log filter. It is implemented
based on search strings. Click the button to brings up the Filter Log dialog. By providing a search string,
you can refresh the log to only display log entries containing the search string. To see the entire contents
of the log again, open the Filter Log dialog and clean up the search string.
27 Chapter 3 Administration
Server 4
Logs & Status
Server Status
View the server status, download/upload speeds, sent/received bytes, running time ...
Sessions
The number of online sessions under this server.
24 Hrs Sessions
The number of sessions that connected to the server in the past 24 hours.
Longest Session
The longest staying time for a session under this server.
Chapter 4 Server 28
Server
Total Sessions
4
The total number of sessions that have connected since being placed online.
Download Speed
Cumulative download bandwidth currently being used.
Upload Speed
Cumulative upload bandwidth being currently being used.
29 Chapter 4 Server
Server 4
Server Log
View the server logs here.
Pause
Click this button to pause the log refreshing temporarily. This is useful on busy systems so a particular
section of the log can be highlighted and copied before it is scrolled out of view. Once finished, click this
button again to resume the log refreshing.
Filter Log
To quickly find the related server logs.
Chapter 4 Server 30
Server 4
Settings
General Settings
Miscellaneous
31 Chapter 4 Server
Server
Enable FTP command 'SITE CHMOD' for Linux/Unix
4
When enabled, the FTP client can use the command "SITE CHMOD permissions filename" to change the
permissions of a file/folder. Note: only available on Unix-like operating systems.
WebLink Folder
All the WebLink files are stored under "Data/_WEBLINK" by default, and you can also specify a folder (like
a shared folder) to store them.
UploadLink Folder
All the UploadLink files are stored under "Data/_UPLOADLINK" by default, and you can also specify a
folder (like a shared folder) to store them.
Security
Chapter 4 Server 32
Server 4
Enable FIPS 140-2 Mode
When this option is enabled, Wing FTP Server will run all the cryptographic operations according to the
FIPS 140-2 standard.
Disable TLSv1.0/TLSv1.1
When this option is enabled, Wing FTP Server will run with the protocol TLSv1.2 only.
33 Chapter 4 Server
Server
Customized Logo
4
Use a customized logo to be displayed on the login and Web Client pages.
Reset to default
Reset your logo to the default "Wing FTP Server" logo image.
Chapter 4 Server 34
Server
Logs
4
Here you can enable "Audit & Report" and "System Log."
Log Filename
The log file must be given a name before information can be saved to a file. Your system log file will be put
in the directory "Log\System" by default. The log filename supports certain wildcard characters, as outlined
below.
Log Maxsize
The log file will no longer be written in when it reaches the limit you set here.
35 Chapter 4 Server
Server
SFTP Log Level
4
The SFTP debug logs will be stored in the file "Log/ssh_debug_log" by default, and there are 5 logs levels
you can choose:
// No logging at all
SSH_LOG_NOLOG
// Only warnings
SSH_LOG_WARNING
IP Access
Configure IP access rules to allow or deny access for the entire server.
You can define IP access rules to allow/deny users' access based on IP address for the entire server.
Chapter 4 Server 36
Server 4
If you do not specify an IP address, all the users can logon to the server from any IP address. But if you
set allowed rules, the users can only obtain access by IP addresses specified in the allowed rules. If you
set denied rules, the users can have access to the server by any IP address except those specified in the
denied rules.
For example:
Allow 127.0.0.1
Refuse connections from any IP except 127.0.0.1.
Supported wildcards
Wing FTP Server supports IP address ranges and wildcards, which are listed as below:
xxx.xxx.xxx.xxx
IP address must be exactly matched(e.g., 192.168.1.1).
xxx.xxx.xxx.xxx-yyy
A specified range of IP addresses, e.g. 192.168.1.10-25.
xxx.xxx.xxx.xxx-yyy.yyy.yyy.yyy
A specified range of IP addresses, e.g. 192.168.1.0-192.168.5.255.
Priority
The Server IP Access rules has priority over Domain IP Access rules.
37 Chapter 4 Server
Server
File Access
4
Configure File access rules to allow or deny access for the entire server.
Banned files are files that can't be accessed on the server.You can specify file/path mask (?, * supported) :
*.jpg, c:\path\images_200?\
Using this form, you can define rules for the entire server to allow or refuse access according to file names.
If you do not specify any file/path, all users will be able to access all the files on the server. But if you set
an allow list, all users will only be able to access the files in the list. If you set a deny list, all users can
access all the other files except those in the deny list. The order of the rules is very important too.
For example
Allow *.rar
Can not access/store any files except *.rar.
Deny *.zip
Can access/store any files except *.zip.
Rule list
The rule list shows the current list and order of file access rules. Rules can be added and removed from the
list using the Add and Delete buttons.
Also, the order of the rules can be altered using the Up and Down buttons on the right of the rule list.
Chapter 4 Server 38
Server 4
Supported wildcards
Priority
The server's File Access list has priority over the domain's.
SSL Certificate Manager
SSL Certificate is used for encrypting data exchanges between the user and the server. Without
certificates, you can not use the transfer protocols FTPS and HTTPS.
Click the "Add SSL Certificate" button to choose an existed SSL certificate.
Wing FTP Server supports standard PEM format only, so normally you need to provide a cert file, a key file
and the key password (if existing).
Note: If you have an existed PFX cert (which is normally used to store just one private key and it's
associated certificate chain), then you will need to convert it into a PEM format cert first.
If you do not have any certificate file, click the "Create Certificate File" button, then a certificate creation
form will appear.
39 Chapter 4 Server
Server 4
Certificate Name
This name will be used for the filename of cert files.
For example, you name the certifcate "new_ssl_cert", and choose "d:/certfiles" as the output directory,
then WingFTP will generate three files under "d:/certfiles":
"new_ssl_cert.crt": the self-signed certificate file.
"new_ssl_cert.key": the private key file. Please keep it secret to avoid other party misusing your SSL
certificate.
"new_ssl_cert.csr": the Certificate Signing Request file. You can send it to the Certificate Authorities(CAs)
to apply for a signed certificate.
Output directory
Output directory is where the created cert files are to be placed.
Key Size
Key size for the private key file.
Locality(City)
Chapter 4 Server 40
Server
Set this to the city or town where you are located.
4
Organization
Set this to the name of your company or organization, like "Wing FTP Software Co., Ltd." .
Organization unit
This should be set to the organizational unit that owns the certificate, like "Software Department " or "IT".
Contact E-mail
Set this to the e-mail address you want the clients to see.
Country
This has to be the 2-letter abbreviation of the country where you are located (as defined in the ISO-3166
standard), like "US" for the United States.
Afghanistan AF
Albania AL
Algeria DZ
American Samoa AS
Andorra AD
Angola AO
Anguilla AI
Antarctica AQ
Antigua and Barbuda AG
Argentina AR
Armenia AM
Aruba AW
Australia AU
Austria AT
Azerbaijan AZ
Bahamas BS
Bahrain BH
Bangladesh BD
Barbados BB
Belarus BY
Belgium BE
Belize BZ
Benin BJ
Bermuda BM
Bhutan BT
Bolivia BO
Bosnia and Herzegovina BA
Botswana BW
Bouvet Island BV
Brazil BR
British Indian Ocean Territory IO
Brunei Darussalam BN
Bulgaria BG
Burkina Faso BF
41 Chapter 4 Server
Server
Burundi BI
4
Cambodia KH
Cameroon CM
Canada CA
Cape Verde CV
Cayman Islands KY
Central African Republic CF
Chad TD
Chile CL
China CN
Christmas Island CX
Cocos (Keeling) Islands CC
Colombia CO
Comoros KM
Congo CG
Congo, The Democratic Republic Of The CD
Cook Islands CK
Costa Rica CR
Croatia HR
Cuba CU
Cyprus CY
Czech Republic CZ
Denmark DK
Djibouti DJ
Dominica DM
Dominican Republic DO
East Timor TP
Ecuador EC
Egypt EG
El Salvador SV
Equatorial Guinea GQ
Eritrea ER
Estonia EE
Ethiopia ET
Falkland Islands (Malvinas) FK
Faroe Islands FO
Fiji FJ
Finland FI
France FR
French Guiana GF
French Polynesia PF
French Southern Territories TF
Gabon GA
Gambia GM
Georgia GE
Germany DE
Ghana GH
Gibraltar GI
Greece GR
Greenland GL
Grenada GD
Guadeloupe GP
Guam GU
Guatemala GT
Chapter 4 Server 42
Server
Guinea GN
4
Guinea-Bissau GW
Guyana GY
Haiti HT
Heard Island and Mcdonald Islands HM
Holy See (Vatican City State) VA
Honduras HN
Hong Kong, China HK
Hungary HU
Iceland IS
India IN
Indonesia ID
Iran, Islamic Republic Of IR
Iraq IQ
Ireland IE
Israel IL
Italy IT
Jamaica JM
Japan JP
Jordan JO
Kazakstan KZ
Kenya KE
Kiribati KI
Korea, Democratic People's Republic Of KP
Korea, Republic Of KR
Kuwait KW
Kyrgyzstan KG
Lao People's Democratic Republic LA
Latvia LV
Lebanon LB
Lesotho LS
Liberia LR
Libyan Arab Jamahiriya LY
Liechtenstein LI
Lithuania LT
Luxembourg LU
Macau, China MO
Macedonia, The Former Yugoslav Republic Of MK
Madagascar MG
Malawi MW
Malaysia MY
Maldives MV
Mali ML
Malta MT
Marshall Islands MH
Martinique MQ
Mauritania MR
Mauritius MU
Mayotte YT
Mexico MX
Micronesia, Federated States Of FM
Moldova, Republic Of MD
Monaco MC
43 Chapter 4 Server
Server
Mongolia MN
4
Montserrat MS
Morocco MA
Mozambique MZ
Myanmar MM
Namibia NA
Nauru NR
Nepal NP
Netherlands NL
Netherlands Antilles AN
New Caledonia NC
New Zealand NZ
Nicaragua NI
Niger NE
Nigeria NG
Niue NU
Norfolk Island NF
Northern Mariana Islands MP
Norway NO
Oman OM
Pakistan PK
Palau PW
Palestinian Territory, occupied PS
Panama PA
Papua New Guinea PG
Paraguay PY
Peru PE
Philippines PH
Pitcairn PN
Poland PL
Portugal PT
Puerto Rico PR
Qatar QA
Romania RO
Russian Federation RU
Rwanda RW
Saint Helena SH
Saint Kitts and Nevis KN
Saint Lucia LC
Saint Pierre and Miquelon PM
Saint Vincent and The Grenadines VC
Samoa WS
San Marino SM
Sao Tome And Principe ST
Saudi Arabia SA
Senegal SN
Seychelles SC
Sierra Leone SL
Singapore SG
Slovakia SK
Slovenia SI
Solomon Islands SB
Somalia SO
Chapter 4 Server 44
Server
South Africa ZA
4
South Georgia and The South Sandwich Islands GS
Spain ES
Sri Lanka LK
Sudan SD
Suriname SR
Uzbekistan UZ
Vanuatu VU
Venezuela VE
Viet Nam VN
Virgin Islands, British VG
Virgin Islands, U.S. VI
Wallis and Futuna WF
Western Sahara EH
Yemen YE
Yugoslavia YU
Zambia ZM
Zimbabwe ZW
45 Chapter 4 Server
Server 4
SSH Host Key Manager
SSH host key is used for SFTP connection (not for the SSH public key authentication).
Click "Add SSH Host Key" button to add an SSH host key. First you need to specify a key name, then
you can choose a SSH host key from your hard disk.
If you do not have any SSH host key, just click the "Create Host Key File" button and create a SSH host
key then.
Chapter 4 Server 46
Server 4
47 Chapter 4 Server
Server 4
Click the "Add SMTP Configuration" button to add an SMTP server settings.
Name:
The identifier for you to distinguish this SMTP server from other SMTP servers.
Sender Name:
FTP server will use this as the sender's name.
Sender Email:
FTP server will use this as the sender's email address.
Need Auth:
If your SMTP server needs authentication, just enable this option and input the username/password.
SMTP Server:
The server address of this SMTP server. It should be a domain name (e.g., smtp.mail.com) or an IP
address (e.g., 231.56.789.24).
Chapter 4 Server 48
Server
SMTP Port:
4
The listener port of this SMTP server, default SMTP port is 25.
SMTP Username:
The account name is associated with authentication for the SMTP server.
Use TLS/SSL:
Whether the SMTP server requires TLS/SSL connection.
Gateway Manager
Since Wing FTP Server v5.1.2, we released a new product - Wing Gateway, it can provide
reverse proxy and load balance service for Wing FTP Server, the gateway software needs to be
downloaded and purchased separately, and you usually also need to install it another server
machine (located in the DMZ). To add a new gateway server, just navigate to "Server ->
Settings -> Gateway manager," and click on the button "Add Gateway":
And just input a few necessary fields like "Host IP," "Port," and "Password," and then click "OK":
49 Chapter 4 Server
Server 4
Chapter 4 Server 50
Server 4
After adding the Wing Gateway, you need to add the listener proxy for the gateway, just navigate
to "Domain -> Settings -> Listeners":
Double click on the existed listener (or add listener if no listener exists), then select the gateway
host and input a port which gateway will be listening:
51 Chapter 4 Server
Server 4
As the above screenshot settings, now Wing Gateway (192.168.31.162) will listen and accept
connections on its port 22, and forward all the connections (on port 22) to Wing FTP
server:2200.
That's all things about Wing Gateway settings! Very easy, right?
So if you have several Wing FTP server machines, and want to make an FTP server cluster,
you just need to add the same settings on another Wing FTP server machine, then Wing
Gateway will distribute incoming connections equally among multiple Wing FTP server
machines.
Additionally, for keeping the same user data in all the cluster nodes, you need to use database
or LDAP authentication, and for keeping the same file data in all the cluster nodes, you need to
use NAS server or shared folders. So here is an example of deployment diagram for Wing FTP
server cluster with Wing Gateway:
Chapter 4 Server 52
Server 4
Task Scheduler
Task Scheduler is used to take action at a specified time.
Click the button "Add Task," then you can define a task by Lua scripting.
For example, you can let the server start or stop at a specified time by adding a task scheduler.
Add Task
53 Chapter 4 Server
Server 4
Chapter 4 Server 54
Domain 5
Logs & Status
Domain Status
View the current domain status, the number of total sessions, download/upload speed, sent/received
bytes, total running time, and so on.
Sessions
The number of online sessions under this domain.
24 Hrs Sessions
The number of sessions that have connected in the past 24 hours.
Longest Session
The longest staying time for a session under this domain.
Total Sessions
55 Chapter 5 Domain
Domain
The total number of sessions that have connected since being placed online.
5
Download Speed
Cumulative download bandwidth currently used.
Upload Speed
Cumulative upload bandwidth currently used.
Chapter 5 Domain 56
Domain 5
Domain Log
View the domain logs here.
Pause
Click this button to pause the log refreshing temporarily. This is useful on busy systems, so a certain
section of the log can be highlighted and copied before it is scrolled out of view. Once finished, click this
button again to resume the log refreshing.
Filter Log
To quickly find the related domain logs.
57 Chapter 5 Domain
Domain 5
In the above interface, you can view all the transactions page by page, and you can also add filters to
display the data that meet the filtering criteria (just need to click the button "+" ).
Chapter 5 Domain 58
Domain 5
For a "LIKE" filter, you can use the wildcards "%", "*" and "_" for the username, filename and IP address.
"%" and "*" matches zero or more characters, and "_" matches a single character.
And for the actions "Create Dir", "Delete Dir", "Rename", the field "File name" means the full file path, like
"d:/download/backup/wingftp".
You can generate "Weekly Report" "Monthly Report" and "Custom Report", and for the custom report, you
can specify the start time, the end time, or the username.
59 Chapter 5 Domain
Domain 5
Finally, you will get a statistical report with general statistics and top downloaded/uploaded files, top
logged in IP addresses, and top logged in user accounts. You can print the report out or save it as an
HTML file.
Chapter 5 Domain 60
Domain 5
61 Chapter 5 Domain
Domain 5
Temp Ban
You can add, edit, or delete a Temporary IP Ban rule in the below interface.
Activity
You can see all the online sessions here.
To view the detailed information and access logs on a specific session, just double-click on the session.
Kick
Immediately kick the selected session, and there are some options available:
Chapter 5 Domain 62
Domain 5
· Disconnect - Immediately disconnects the session.
· Disconnect and ban IP - Immediately disconnects the session and bans their IP address for the specified
number of minutes, preventing them from immediately reconnecting.
· Disconnect and block IP permanently - Immediately disconnects the session and adds a deny IP access
rule for their IP address, preventing them from ever reconnecting from the same IP address.
Kick All
Kick all the online sessions immediately.
View Log
View the detailed information and access logs on a selected session.
Graphs
This graph chart reports domain traffics of the last 5 minutes, 5 hours or ten days.
63 Chapter 5 Domain
Domain 5
Domain Settings
General Settings
Miscellaneous
Enable FXP
Activate or deactivate FTP transfer from server to server.
Chapter 5 Domain 64
Domain
Transfer buffer size
5
Transfer buffer size used to transfer data (default is 65535). You can increase this value if you want the
server to read/write less often from/to the hard drive when clients transfer.
SSL Certificate
Select an SSL certificate for this domain. You can manage your SSL certificates in "Server -> Settings ->
SSL Certificate Manager". SSL certificate is used for encrypting data exchanges between the client and
the server. Without certificates, you can not establish TLS/SSL connections (FTPS or HTTPS).
SMTP Configuration
Select an SMTP configuration for this domain. You can manage your SMTP configurations at "Server ->
Settings -> SMTP Configuration Manager". SMTP configuration is used for sending emails.
65 Chapter 5 Domain
Domain
Domain Log
5
Here you can configure domain log settings.
Log Filename
All the domain log files will be stored under the folder "Log/YourDomain", and you can define the custom
filename for the log files, you can also use the following wildcard characters for filename:
%Y - Current year
%M - Current month, 1-12
%D - Current day, 1-31
%MM - Current month, 01-12
%DD - Current day, 01-31
%HH - Current hour, 00-23
Log Maxsize
The log file will be ignored if it reaches the limit you defined.
Chapter 5 Domain 66
Domain 5
Connection Limit
67 Chapter 5 Domain
Domain 5
TLS session timeout
Default value is 3600 seconds, it means TLS session can be reused in 3600 seconds to avoid a full
handshake.
Chapter 5 Domain 68
Domain 5
Enable file download link
When enabled, the client is able to generate a weblink for file sharing (your client can download files via
this link without login). You can also set the maximum download speed for file sharing.
Overwrite the existed file when uploading file via file request link
When enabled, it will overwrite the existed file for file request uploading.
FTP passive mode configuration, you can also check out this KB article: https://bbs.wftpserver.com/
viewtopic.php?f=5&t=5
69 Chapter 5 Domain
Domain 5
Default
Use the local IP address.
Fixed IP address
The fixed IP address points to this server, and normally it is the fixed internet IP address.
Dynamic DNS
If you are assigned a dynamic IP and are using a service like dyndns.org (or other) to keep your domain
name pointing to your IP.
Chapter 5 Domain 70
Domain
Always use the local IP address of the server machine if the client is from LAN.
5
Map the Passive mode ports automatically in Wing Gateway
If you use Wing Gateway for the failover or load balancing cluster, and Wing Gateway is also in the DMZ
zone, then checking on this option will be very helpful.
It will forward all the passive ports automatically in Wing Gateway. If you have tow or more Wing FTP
servers, you need to specify separate passive ports in each server, for example, Server A uses 1024 -
1124, Server B uses 2024 - 2124.
Here you can configure settings for the password and security.
71 Chapter 5 Domain
Domain
The user password will be stored with SHA256 hash by default, when this option is disabled, the user
5
password will use MD5 hash.
Enable Anti-hammer
Activate or deactivate anti-hammering function.
Authentication Settings
Wing FTP Server supports several authenticating methods: XML files, ODBC database, MySQL database,
Windows authentication (NTLM or Active Directory), and LDAP authentication.
Storage Way
Chapter 5 Domain 72
Domain 5
Note: The server will automatically create all the database tables for the first time. If you use MySQL,
please create a MySQL database first, the default database name is "wftp_database".
ODBC setting
73 Chapter 5 Domain
Domain 5
If you want to use ODBC database, just enter the ODBC source name (DSN), or username/password if you
have.
When everything is fine, user/group data can be stored in this database through using an ODBC driver.
Mysql setting
Chapter 5 Domain 74
Domain 5
If your database system is MySQL, we suggest you use "MySQL" instead of "ODBC", because it can
connect to MySQL database directly through C API, much faster than "ODBC".
You need to create a MySQL database "wftp_database" for the first time.
You need to fill the field "UnixSocket" if you are using Linux/Unix system. Otherwise, just keep it empty.
Windows Authentication
75 Chapter 5 Domain
Domain 5
Wing FTP Server can handle Windows NTLM or Windows Active Directory authentication, without the need
to import users or sync user data manually.
If you enable "Windows Authentication", you need to specify a default home directory for the AD account.
And if you want each AD account to have its own home directory, please enable the checkbox "Create a
folder under default home dir using the login name for each user".
If you want to have more control to the AD user like a local user of WingFTP, you can map the AD user to
a local user. First, create a local user at "Domains -> Users -> Add User", then click the button "Add AD
Users Mapping", input a new line in the format of "ADUser:LocalUser" (AD username and Local username
is separated by a colon). Since the version 6.3.2, the wildcard "*" is supported for the Windows AD
username, so you can write the mapping rule as: Tester*:LocalTester
Chapter 5 Domain 76
Domain 5
NOTE:
1) Domain Name
It's a string that specifies the name of the domain or server whose account database contains the AD
account. If this field is empty, the user name must be specified in user principal name(UPN) format,
user@DNS_domain_name. Otherwise, you can log in just with the username.
After the mapping, you can log in the server with [email protected]/ad_password or Jack_Local/
local_password. If you log in with [email protected]/ad_password, [email protected] will have all the
functions belong to the Jack_Local like virtual directories, group memberships, permissions, and other
settings.
77 Chapter 5 Domain
Domain 5
2-2-1-2) If there is no mapping for "BOB", take the AD authentication "Default Home Dir" as its
home directory.
2-2-2) If the AD authentication fails, the login fails too.
LDAP Authentication
Wing FTP Server supports using an LDAP(or LDAPS) database for authenticating users, and we have
tested it successfully with OpenLDAP and Microsoft's Active Directory.
When you enable the option "LDAP Authentication", you need to provide the following information:
User Filter: the filter to find the object for authenticating users. The special characters '%s' in the filter
string will be replaced with the real username.
Wing FTP Server uses default filter "(&(objectClass=posixAccount)(uid=%s))" for OpenLDAP. Or if you use
Chapter 5 Domain 78
Domain 5
Microsoft's Active Directory, the filter string would ususlly be "(&(objectClass=user)(sAMAccountName=%
s))".
Bind DN: the LDAP distinguished name string for simple authentication, e.g. "
cn=manager,dc=example,dc=com".
Bind Password: the bind password is the LDAP user password normally.
Note1: The LDAP database (except Windows Active Directory) must have an attribute 'userPassword' (RFC
3112), and the attribute 'userPassword' must be accessible. The following password format is supported:
plain text, {crypt}, {md5}, {sha}, {smd5}, {ssha}
Note2: The username in the LDAP database cannot contain some special characters: '%', '*', '?', ',', ''', '"'.
For security purposes.
You need to specify a default home directory for the LDAP account. And if you want each LDAP account to
have its own home directory, please enable check box "Create a folder under default home dir using the
login name for each user":
If you want to have more control to LDAP user like a local user of WingFTP, you can map the LDAP user
to a local user. First create a local user at "Domains -> Users -> Add User", then click the button "Add
LDAP Users Mapping", input a new line in the format of "LDAPUser:LocalUser" (LDAP username and
79 Chapter 5 Domain
Domain 5
Local username is separated by colon). Since the version 6.3.2, the wildcard "*" is supported for the LDAP
username, so you can write the mapping rule as: Tester*:LocalTester
After the mapping, you can login the server with Jack/ldap_password or Jack_Local/local_password.
Then LDAP user "Jack" will have all the functions belong to the "Jack_Local" like virtual directories, group
memberships, permissions and other settings.
Chapter 5 Domain 80
Domain 5
You can also map LDAP group to local user by clicking the button "Map LDAP group to local user", input a
new line in the format of "LDAPGroup:LocalUser"(LDAP group name and Local username is separated by
colon), then all the LDAP users belong to this LDAP group can have local user's permissions.
81 Chapter 5 Domain
Domain 5
IP Access
Configure IP access rules to allow or deny access for this domain
If you do not specify an IP address, all the domain users can logon to the server from any IP address. But if
you set allowed rules, the domain users can only obtain access by IP addresses specified in the allowed
rules. If you set denied rules, the domain users can have access to the server by any IP address except
those specified in the denied rules.
For example:
Allow 127.0.0.1
Refuse all the domain users' connection from any IP except 127.0.0.1.
Supported wildcards
IP address ranges and wildcards are supported by Wing FTP Server, as below:
xxx.xxx.xxx.xxx
IP address must be exactly matched(e.g. 192.168.1.1).
xxx.xxx.xxx.xxx-yyy
Chapter 5 Domain 82
Domain
A specified range of IP addresses, e.g. 192.168.1.10-25.
5
xxx.xxx.xxx.xxx-yyy.yyy.yyy.yyy
A specified range of IP addresses, e.g. 192.168.1.0-192.168.5.255.
Priority
The Domain IP Access rules has priority over User IP Access rules.
IP Whitelisting
IP whitelisting allows specific IPs to access server without any limitation.
Supported wildcards
IP address ranges and wildcards are supported by Wing FTP Server, as below:
xxx.xxx.xxx.xxx
IP address must be exactly matched(e.g. 192.168.1.1).
83 Chapter 5 Domain
Domain
xxx.xxx.xxx.xxx-yyy
5
A specified range of IP addresses, e.g. 192.168.1.10-25.
xxx.xxx.xxx.xxx-yyy.yyy.yyy.yyy
A specified range of IP addresses, e.g. 192.168.1.0-192.168.5.255.
File Access
Configure file access rules to allow or deny access to this domain.
Banned files are files that can't be accessed on the server. You can specify file/path mask (?, *
supported) : *.jpg, c:\path\images_200?\
Using this form, you can define deny/allow access based on Filename for this domain.
If you do not specify any file/path, all users can access all the files on the server. But if you set an allow
list, all users can only access the files allowed in the list. If you set a deny list, all users can access the
files except those in the deny list. The order of the rules is very important too.
For example
Chapter 5 Domain 84
Domain
Allow *.rar
5
Can not access/store any file except *.rar.
Deny *.zip
Can access/store any file except *.zip.
Rule list
The rule list shows the current list and order of file access rules. Rules can be added and removed from the
list using the Add and Delete buttons.
Also, the order of the rules may be altered using the Up and Down buttons on the right of the rule list.
Supported wildcards
Priority
The domain's File Access list has priority over the user account's File Access list.
SFV Directory
Simple file verification (SFV) is a file format for storing CRC32 checksums of files in order to verify the
integrity of files. SFV can be used to detect random corruptions in a file, but cannot be used for checking
the authenticity in any meaningful way. Typically, the .sfv extension is used on SFV files. SFV Check is
used to check the files the user uploaded. If you enable this option, when a client uploads an SFV file, the
server will start to check the files listed in the SFV file and send the result to the client. The client can
create SFV files by QuickSFV.
85 Chapter 5 Domain
Domain 5
Edit
Edit the selected directory.
Delete
Delete the selected directory.
Bad File
What to do when the server encounters a bad file. You can choose "Create a Tag File," "Rename the bad
Chapter 5 Domain 86
Domain
file," or "Delete the bad file."
5
Check Progress
How to indicate the check progress. You can choose "Create dirs to indicate progress," "Create files to
indicate progress," or "Do not indicate progress."
87 Chapter 5 Domain
Domain 5
FTP Messages
You can define the custom FTP reply messages here.
If you think the built-in messages are too cryptic for your clients or want to translate them, you can define
them by yourself.
The above window lists all the FTP reply messages which can be customized, just double click on a
message to edit it.
You can use server variables in the reply messages, please have a look at the chapter "Advanced Features
-> Server Variables".
Chapter 5 Domain 88
Domain 5
Listeners
Wing FTP Server can listen on multiple ports (or multiple IP addresses) for FTP/SFTP/HTTP protocols.
Listener Type
The supported transfer protocols: FTP, FTPS, HTTP, HTTPS and SFTP.
IP Address
This domain listener address, default "*" means the listener port listens on all the available IPs.
If you change it into a single IP address, then the listener port will listen on that IP address only.
Port
The available port is 1 - 65535.
Users
User > General
A user account is required in order to obtain access to the server. Click "Add User" or "Quick Add" button
to add a user account.
89 Chapter 5 Domain
Domain 5
User Name
User name must be unique, and can not contain any of the following special characters: \ / < > | : ? *.
Enable account
Uncheck this option to disable the user account, disabled accounts remain on the server but cannot log in.
Anonymous
When this option is checked, no password authentication needed.
Password
The user password should be complex to prevent brute force attacks.
Expire on
This account would be automatically disabled at the specified time.
Chapter 5 Domain 90
Domain
Enable two-factor authentication (TOTP) for Web Client
5
With this option, when you try to login the web client for the first time, you will be asked to install a TOTP
app and scan a QR code, then you should enter a dynamic TOTP code which is generated by TOTP app.
And the dynamic TOTP code will be required on any subsequent login, if client's 2FA device/data is lost,
you can reset TOTP secret code by clicking the button "Reset TOTP secret code".
Enabled protocols
Select the transfer protocols you want to enable for this user account.
Add Directory
It can be a home directory or virtual directories. If added as a virtual directory, the physical directory will be
shown to the user as a virtual directory. For example, "E:/book" will be shown as subdirectory "/book" and
"E:/movie" will be shown as subdirectory "/media/movie" (suppose you have a subfolder "/media" under the
home directory).
Edit
Edit the selected directory.
Delete
Delete the selected directory.
91 Chapter 5 Domain
Domain 5
User > Subfolder
If you want to hide some subfolders under the home directory or grant individual permissions for subfolders,
you may add some subfolder access rules.
Edit
Edit the selected directory.
Delete
Delete the selected directory.
Chapter 5 Domain 92
Domain 5
Add Group
Assign the user a group.
Delete
Remove the selected group.
Up/Down
Change the order of selected groups. Because a user can be a member of multiple groups, the order in
which group memberships are presented is critical.
93 Chapter 5 Domain
Domain 5
User > Limit
You can configure Connection Limitation and Data Transfer Limitation here.
Chapter 5 Domain 94
Domain
Limits the maximum upload bandwidth shared between all sessions associated with an individual User
5
account. Setting a limit of 0 KB/s means unlimited bandwidth.
Ratio uploads
New credit = current credit + (ratio download / Ratio upload )* file size
Ratio downloads
New credit = current credit - file size
95 Chapter 5 Domain
Domain 5
Count bytes overall sessions
The ratios apply to files uploaded or downloaded across sessions. The ratio will be calculated using the
number of bytes uploaded or downloaded. The Credit amount applies to all users of all sessions using this
account, and it is remembered by the server between sessions.
Quota
This is feature allows you to set the maximum space each user can use on your server. A user cannot
upload if he exceeds his quota. Then he needs to delete some files. If a user's quota is zero and he deletes
a file, his quota remains at zero.
You can define IP access rules to allow/deny users' access based on IP address for this user.
Chapter 5 Domain 96
Domain 5
If you do not specify any IP address, this user can log in from any IP address. But if you set allowed rules,
the user can only access from the IP addresses in the allowed rules. If you set denied rules, the user can
obtain access by all IP addresses except those in the denied rules.
For example:
Allow 127.0.0.1
Refuse connection from any IP except 127.0.0.1.
Supported wildcards
IP address ranges and wildcards are supported by Wing FTP Server, as below:
xxx.xxx.xxx.xxx
IP address must be exactly matched(e.g., 192.168.1.1).
xxx.xxx.xxx.xxx-yyy
A specified range of IP addresses, e.g. 192.168.1.10-25.
xxx.xxx.xxx.xxx-yyy.yyy.yyy.yyy
A specified range of IP addresses, e.g. 192.168.1.0-192.168.5.255.
97 Chapter 5 Domain
Domain 5
User > File Access
Configure File access rules to allow or deny access for this user.
Banned files are files that can't be accessed on the server.You can specify file/path mask (?, * supported) :
*.jpg, c:\path\images_200?\
Using this form, you can define allow/deny access based on Filename for this user account.
If you do not specify any file/path, this user can access all the files on the server. But if you set an allow
list, the user can only access the files allowed in the list. If you set a deny list, the user can access all the
files except those in the deny list. The order of the rules is critical too.
For example
Allow *.rar
Can not access/store any file except *.rar.
Deny *.zip
Can access/store any file except *.zip.
Rule list
The rule list shows the current list and order of file access rules. Rules can be added and removed from the
list using the Add and Delete buttons.
Also, the order of the rules may be altered using the Up and Down buttons on the right of the rule list.
Supported wildcards
Chapter 5 Domain 98
Domain
To define access rules, you can use the wildcards ? and *.
5
User > Access Time
This option defines the access time restriction for the user account.
When you enable this option, you must add some access time rules, otherwise, this user can't login any
more.
Edit
Edit your "Time Schedule."
Delete
Delete the selected "Time Schedule."
Delete All
Delete all "Time Schedule." This user can never log in again unless you disable "Access Time Schedule."
Event Manager
Use Event Manager to execute Lua script, send an email notification, or run 3rd party program when
triggering an event. For example, when you finish uploading a file, a notification email can be sent to the
administrator automatically.
99 Chapter 5 Domain
Domain 5
Event Actions
1. Execute Command
2. Write Log
3. Send Email
4. Lua Script
All the above actions can use many server variables, like "%Name" for the logged-in in username, "%
FileName" for the uploaded file name. You can see a list of the server variables under "Advanced
Features -> Server Variables 107 ".
Special Events
Some special events will be triggered before handling related activity: BeforeUserLoggedIn,
BeforeFileDownloaded, BeforeFileUploaded, BeforeFileDeleted, BeforeDirDeleted
You can use the Lua script to handle such event only. For example, event "BeforeFileUploaded" will be
triggered before uploading a file, if you want to block the uploading activity, just set the global variable
bCancelEvent into true.
The above Lua script will detect the file extension name, and if the user attempts to upload a .exe or .msi
file, then the event "BeforeFileUploaded" will block the uploading activity.
In the event "BeforeUserLoggedIn", the global variable bSelfAuthenticated can be used for customized
authentication, when you set this variable into true, the customized authentication is passed.
Wing FTP Server includes support for the Lua scripting language. Lua scripts can be used in several
cases, such as task scheduler, event manager, and administration console. It will help you to complete a
complex scheduler task or a useful FTP LOGIN event or just a simple console command.
You can write Lua scripts simply by using standard Lua libraries and Wing FTP Server's Lua API 108 . For
example, if you want to add a user to the server, you can call c_AddUser(...) API to implement it, then if
you want to delete the user, just call c_DeleteUser(...). It is simple yet powerful.
Simple example (a daily scheduler task for removing inactive users in domain "default" that have not
logged in within 15 days)
do
local strUserlist = c_GetUserList("default")
local userlist = Split(strUserlist,"\n")
for _,username in pairs(userlist) do
local user = c_GetUser("default",username)
local logintime = user.last_logintime
local logintime_t = c_TranslateTime(logintime)
if (os.time() - logintime_t) >= 3600*24*15 then
c_DeleteUser("default",username)
end
end
end
Here we will present an example in some programming languages. This example is very simple, just for
calculating the number of all the domains' online sessions.
PHP example:
$strResult = file_get_contents($strUrl.$strUrlParam.rawurlencode($strLuaScript));
VB script/ASP example:
Set xmlHttp = CreateObject("MSXML2.ServerXMLHTTP")
strUrl = "http://127.0.0.1:5466/admin_webservice.html"
strUrlParam = "?admin=demo&pass=demo123&cmd="
strLuaScript = "local nSessionCnt = 0 "_
&"for _,domain in pairs(c_GetDomainList()) do "_
&" nSessionCnt = nSessionCnt + c_GetSessionCount(domain) "_
&"end "_
&"print(nSessionCnt)"
xmlHttp.open "GET", strUrl&strUrlParam&URLEncode(strLuaScript), False
xmlHttp.send
strResult = xmlHttp.responseText
Function URLEncode(strInput)
For i = 1 To Len(strInput)
intAscii = Asc(Mid(strInput, i, 1))
If ((intAscii < 58) And (intAscii > 47)) Or ((intAscii < 91) And (intAscii > 64)) Or ((intAs
strOutput = strOutput & Chr(intAscii)
Else
If intAscii < 16 Then
strOutput = strOutput & "%0" & Trim(Hex(intAscii))
Else
strOutput = strOutput & "%" & Trim(Hex(intAscii))
End If
End If
Next
URLEncode = strOutput
End Function
JAVA example:
import java.io.*;
import java.net.*;
class GetUrlContent {
public static void main(String[] args) throws IOException {
String strUrl = "http://127.0.0.1:5466/admin_webservice.html";
String strUrlParam = "admin=demo&pass=demo123&cmd=";
Server Variables
%CurrentTime - The current time in local time format
%YYYY - Current year
%MM - Current month, 01-12
%DD - Current day, 01-31
%HH - Current hour, 00-23
%mm - Current minute, 00-59
%ss - Current second, 00-59
%ServOnlineSessions - The total online sessions under this server
%ServMaxOnlineSessions - The highest concurrent sessions record
%ServLast24HSessions - The total number of sessions that connected in the past 24 hours
%ServAverageSessionLife - The average staying time under this server
%ServMaxSessionLife - The longest staying time for a session under this server
%ServTotalSessions -The total number of sessions that have connected since being placed online.
%ServRealtimeDownloadSpeedKBS - The current download transfer rate in KB/s
%ServAverageDownloadSpeedKBS - The average download rate in KB/s
%ServDownloadBytes - The total amount of data downloaded since being placed online
%ServDownloadFiles - The total number of files downloaded since being placed online
%ServRealtimeUploadSpeedKBS - The current upload transfer rate in KB/s
%ServAverageUploadSpeedKBS - The average upload rate in KB/s
%ServUploadBytes - The total amount of data uploaded since being placed online
%ServUploadFiles - The total number of files uploaded since being placed online
Domain Variables
%DomOnlineSessions - The total online sessions under this domain
%DomMaxOnlineSessions - The highest concurrent sessions record
%DomLast24HSessions - The total number of sessions that connected in the past 24 hours
%DomAverageSessionLife - The average staying time under this domain
%DomMaxSessionLife - The longest staying time for a session under this domain
Parameters
[1]string the domain name
[2]string the user name
[3]string password with MD5 encryption
[4]int enabled protocols mask, FTP=1, FTPES(explicit SSL)=2, FTPS(implicit SSL)=4, HTTP=8, HTTP
(SSL)=16, SSH=32, if only FTP and HTTP are allowed, the mask number will be 1+8=9.
[5]int enable password, 1=yes, 0=no
[6]int enable account, 1=yes, 0=no
[7]int max download speed for one session
[8]int max upload speed for one session
[9]int max number of connections
[10]int ftp connection timeout value
[11]int ftp idle timeout value
[12]int max number of connections per Ip
[13]int max password length
[14]int show the hidden file?, 1=show,0=hide
[15]int user can change password?, 1=allow,0=deny
[16]int send chat message?, 1=allow,0=deny
[17]int credit ratio
[18]int download ratio
[19]int upload ratio
[20]int ratio count method, 0=count for files,1=count for bytes
[21]int enable ratio, 1=yes, 0=no
[22]int current quota size
[23]int max quota size
[24]int enable quota, 1=yes,0=no
Return Values
nil
Remarks
Add or modify a user account.
Parameters
[1]string the domain name
[2]string the user name
Remarks
Check whether the specified user exists.
Parameters
[1]string the domain name
[2]string the user name
Return Values
[1]table a user data table formated as {username,password,max_download,max_upload,
max_download_account,max_upload_account,max_connection,connect_timeout,idle_timeout,
connect_per_ip,pass_length,show_hidden_file,change_pass,send_message,ratio_credit,ratio_download,
ratio_upload,ratio_count_method,enable_ratio,current_quota,max_quota,enable_quota,note_name,
note_address,note_zip,note_phone,note_fax,note_email,note_memo,{Directories table},{Ipmasks table},
{Filemasks table},{Usergroups table},enable_group,enable_schedule,{Scheduler table},limit_reset_time,
limit_reset_type,limit_enable_upload,cur_upload_size,max_upload_size,limit_enable_download,
cur_download_size,max_download_size,enable_expire,expiretime,total_received,total_sent,login_count,
file_download,file_upload,failed_download,failed_upload,last_loginip,last_logintime,protocol_type,
enable_password,enable_account,ssh_pubkey_path,{Subfolder Rules table}}.
Remarks
Return a table of user data if the specified user exists, otherwise return nil.
Parameters
[1]string the domain name
[2]string the user name
Return Values
nil
Remarks
Delete a user.
Parameters
[1]string the domain name
[2]string the source user name
[3]string the destination user name
Return Values
[1]int the result code, 1=success, -1=source user not exists, -2=destination user already exists.
Remarks
Copy a user.
Parameters
[1]string the domain name
[2]string the user name
[3]string the directory path
[4]string alias of the directory, set "/" for home directory.
[5]bool is home directory?
[6]bool can user read files?
[7]bool can user write files?
[8]bool can user resume files uploading?
[9]bool can user delete files?
[10]bool can user see files listing?
[11]bool can user make a directory?
[12]bool can user remove a directory?
[13]bool can user rename a directory?
[14]bool can user rename a file?
[15]bool can user zip file or folder?
[16]bool can user unzip a zip file?
Return Values
nil
Remarks
Add a home directory or virtual directory for user account.
Parameters
[1]string the domain name
[2]string the user name
Return Values
nil
Remarks
Reset user's statistics.
c_GetUserList(string strDomain)
Parameters
[1]string the domain name
Return Values
[1]string username list string
Remarks
Returns user list, username in the list is separated with a carriage return sign.
Parameters
[1]string the domain name
[2]int the page number
Return Values
[1]string username list string
Remarks
This function is similar to c_GetUserList(), the difference is that it will be used when storing user data via
database, and the 2nd parameter tells records offset (20 records/page, 0=1~20, 1=21~40...).
c_GetUserPageCount(string strDomain)
Parameters
[1]string the domain name
Return Values
[1]int the total records of users
[2]int the total pages (20 records per page)
Remarks
Returns the total records of users in database, and the total pages (20 records per page).
Parameters
[1]string the domain name
[2]string the group name
[3]int max download speed for one session
[4]int max upload speed for one session
[5]int max number of connections
[6]int ftp connect timeout value
[7]int ftp idle timeout value
[8]int max number of connections per IP for group
[9]int max number of connections per user account
[10]int max number of connections per IP for user account
[11]int whether to show the hidden file, 1=show, 0=hide
[12]int whether to send message, 1=allow, 0=deny
[13]table a table list of group directories (group directory also is a table, its structure is formated as
{m_strDir,m_strAlias,m_bIsHomeDir,m_bFileRead,m_bFileWrite,m_bFileAppend,m_bFileDelete,
m_bDirectoryList,m_bDirectoryMake,m_bDirectoryDelete,m_bDirectoryRename,m_bFileRename,
m_bZipFile,m_bUnzipFile}).
[14]table a table list of group ipmasks (group ipmask also is a table, its structure is formated as {m_strIp,
m_bRefuse}).
Return Values
nil
Remarks
Add or modify a user group.
Parameters
[1]string the domain name
[2]string the group name
Return Values
[1]bool return true if the specified group exists in the specified domain, otherwise return false
Remarks
Check whether the specified group exists.
Parameters
[1]string the domain name
[2]string the group name
Return Values
[1]table a table of group, its structure is formated as {groupname,max_download,max_upload,
max_download_account,max_upload_account,max_connection,connect_timeout, idle_timeout,
connect_per_ip, max_session_per_user, max_ipsession_for_user, show_hidden_file,send_message,
{directory table},{Ipmask table},{Filemask table}, total_received, total_sent, login_count, file_download,
file_upload, failed_download, failed_upload,{Userlist table} }.
Remarks
Return a table of group data if the specified group exists, otherwise return nil.
Parameters
[1]string the domain name
[2]string the group name
Return Values
nil
Parameters
[1]string the domain name
[2]string the source group name
[3]string the destination group name
Return Values
[1]int the result code, 1=success, -1=source group not exists, -2=destination group already exists.
Remarks
Copy a group.
Parameters
[1]string the domain name
[2]string the group name
[3]string the directory path
[4]string alias of the directory, set "/" for home directory.
[5]bool is home directory?
[6]bool can user read files?
[7]bool can user write files?
[8]bool can user resume files uploading?
[9]bool can user delete files?
[10]bool can user see files listing?
[11]bool can user make a directory?
[12]bool can user remove a directory?
[13]bool can user rename a directory?
[14]bool can user rename a file?
[15]bool can user zip file or folder?
[16]bool can user unzip a zip file?
Return Values
nil
Remarks
Add virtual directory for a group.
Parameters
[1]string the domain name
[2]string the group name
Return Values
c_GetGroupList(string strDomain)
Parameters
[1]string the domain name
Return Values
[1]string groupname list string
Remarks
Returns the group list, and group name in the list is separated with a carriage return sign.
Parameters
[1]string the domain name
[2]int the page number
Return Values
[1]string groupname list string
Remarks
This function is similar to c_GetGroupList(), the difference is that it will be used when storing group data via
database, and the 2nd parameter tells records offset (20 records/page, 0=1~20, 1=21~40...).
c_GetGroupPageCount(string strDomain)
Parameters
[1]string the domain name
Return Values
[1]int the total records of groups
[2]int the total pages (20 records per page)
Remarks
Returns the total records of groups in database, and the total pages (20 records per page).
Domain Function
c_AccessDataWay(string strDomain)
Parameters
[1]string the domain name
Return Values
[1]int the method for database storage of accounts information, 1=xml file, 2=mysql, 3=ODBC
Remarks
Parameters
[1]string the domain name
Return Values
nil
Remarks
Reset all the user/group data in the specified domain.
c_ReconnectDB(string strDomain)
Parameters
[1]string the domain name
Return Values
nil
Remarks
Reconnects the database.
c_TestMysql(string strDomain)
Parameters
[1]string the domain name
Return Values
[1]bool return true if mysql connection is successful, otherwise return false
Remarks
Test mysql connection.
c_TestODBC(string strDomain)
Parameters
[1]string the domain name
Return Values
[1]bool return true if ODBC connection is successful, otherwise return false
Remarks
Test ODBC connection.
Parameters
Return Values
[1]int the result code,1=success, 0=failure
Remarks
Kill the specified session with full options.
Parameters
[1]string the domain name
[2]string the user name
Return Values
[1]int the result code,1=success, 0=failure
Remarks
Kill the online sessions of same names as parameter "strName".
c_KickAllSessions(string strDomain)
Parameters
[1]string the domain name
Return Values
[1]int the result code,1=success, 0=failure
Remarks
Kill all the online sessions.
c_GetConnectionsList(string strDomain)
Parameters
[1]string the domain name
Return Values
[1]table an online session(formatted as {id, username, protocol, ip, lastcommand,directory}) list table.
Remarks
Return a table list of online sessions.
Parameters
[1]string the domain name
Return Values
[1]string domain log text
Remarks
Get the log text of a specified domain.
Parameters
[1]string the domain name
[2]int the ftp event type, you can check them at the bottom.
[3]int whether to execute a program,1=yes, 0=no.
[4]string the physical path of third-party program.
[5]string the parameters of third-party program.
[6]int whether to write something to a log file,1=yes, 0=no.
[7]string the path of log file.
[8]string the log text.
[9]int whether to send an email,1=yes, 0=no.
[10]string the receiver's email address.
[11]string the email's subject.
[12]string the email's plain text.
[13]string the email's attachment file path.
[14]int the priority for sending email,1=normal, 2=high, 3=low
[15]int whether to execute lua script,1=yes, 0=no.
[16]string the lua script content.
Return Values
nil
Remarks
This function is used for configuring the ftp event's settings.
Parameters
[1]string the domain name
[2]int the ftp event type, you can check them at the bottom.
Return Values
[1]int whether to execute a program,1=yes,0=no.
[2]string the physical path of third-party program.
[3]string the parameters of third-party program.
[4]int whether to write something to a log file,1=yes, 0=no.
[5]string the path of log file.
[6]string the log text.
[7]int whether to send an email,1=yes, 0=no.
Remarks
Get specified ftp event's settings.
Parameters
same as c_SetFTPEvent()
Return Values
nil
Remarks
This function is used for configuring the ssh event's settings.
Parameters
[1]string the domain name
[2]int the ssh event type, you can check them at the bottom.
Return Values
same as c_SetFTPEvent()
Remarks
Get specified ssh event's settings.
Parameters
same as c_SetFTPEvent()
Return Values
nil
Remarks
This function is used for configuring http event's settings.
Return Values
same as c_SetFTPEvent()
Remarks
Get specified http event's settings.
c_GetListenerList(string strDomain)
Parameters
[1]string the domain name
Return Values
[1]table a domain listener(formatted as {ID,Type,Ip_Address,Port,Gateway_Host,Gateway_Port,
Is_Listening}) list table.
Remarks
Return a table list of domain listeners.
Parameters
[1]string the domain name
[2]int listener type,1=FTP, 2=FTPS, 3=HTTP, 4=HTTPS, 5=SFTP.
[3]string listener's IP address, * for all local addresses.
[4]int listener port
[5]string gateway host
[6]int gateway port
Return Values
[1]int the result code, 0=success, 1=invalid IP, 2=invalid port, 3=invalid index, 4=listener exists,
99=unknown error.
Remarks
Add a domain listener.
Parameters
[1]string the domain name
[2]int listener index
Return Values
[1]int the result code, 0=success, 1=invalid IP, 2=invalid port, 3=invalid index, 4=listener exists,
99=unknown error.
Remarks
Delete a domain listener.
Parameters
[1]string the domain name
[2]int listener index
[3]int listener type,1=FTP, 2=FTPS, 3=HTTP, 4=HTTPS, 5=SFTP.
[4]string listener's IP address, * for all local addresses.
[5]int listener port
[6]string gateway host
[7]int gateway port
Return Values
[1]int the result code, 0=success, 1=invalid IP, 2=invalid port, 3=invalid index, 4=listener exists,
99=unknown error.
Remarks
Modify a domain listener by specified index.
c_GetSfvDirList(string strDomain)
Parameters
[1]string the domain name
Return Values
[1]table the SFV directory list table.
Remarks
Return SFV directory list.
c_GetIPMaskList(string strDomain)
Parameters
[1]string the domain name
Return Values
[1]table the domain IPmask(formatted as {ip,refuse}) list table.
Remarks
Return domain's IPmask list.
c_GetFileMaskList(string strDomain)
Parameters
[1]string the domain name
Return Values
[1]table the domain Filemask(formatted as {filename,refuse}) list table.
Remarks
Parameters
[1]string the domain name
[2]table the SFV directory list table
Return Values
nil
Remarks
Set SFV directory list.
Parameters
[1]string the domain name
[2]table the IPmask list table (formatted as {ip,refuse})
Return Values
nil
Remarks
Set domain's IPmask list.
Parameters
[1]string the domain name
[2]table the filemask list table (formatted as {filename,refuse})
Return Values
nil
Remarks
Set domain's filemask list.
c_GetTransferLimit(string strDomain)
Parameters
[1]string the domain name
Return Values
[1]table the transfer limit table formatted as {enable_upload_never,cur_upload_size_never,
max_upload_size_never,enable_download_never,cur_download_size_never,
max_download_size_never,enable_upload_hourly,cur_upload_size_hourly,max_upload_size_hourly,
enable_download_hourly,cur_download_size_hourly,max_download_size_hourly,
enable_upload_daily,cur_upload_size_daily,max_upload_size_daily,enable_download_daily,
cur_download_size_daily,max_download_size_daily,enable_upload_weekly,
cur_upload_size_weekly,max_upload_size_weekly,enable_download_weekly,cur_download_size_weekly,
Remarks
Return a table of transfer limit settings.
Parameters
[1]string the domain name
[2]table the transfer limit table (like the return value format of c_GetTransferLimit() ).
Return Values
nil
Remarks
Set domain's transfer limit.
c_StartDomain(string strDomain)
Parameters
[1]string the domain name
Return Values
nil
Remarks
Put the domain online.
Parameters
[1]string the domain name
[2]int the options, 0=disconnect all clients, 1=wait for clients to disconnect, 2=wait for clients to terminate
their transfer.
Return Values
nil
Remarks
Put the domain offline.
c_IsDomainOnline(string strDomain)
Parameters
[1]string the domain name
Return Values
[1]bool return true if the domain is online, otherwise return false
c_GetSessionCount(string strDomain)
Parameters
[1]string the domain name
Return Values
[1]int the current session number
Remarks
Return the current session number in the specified domain.
Parameters
[1]string the domain name
[2]int the client session ID
Return Values
[1]int the live time of this session
Remarks
Return session's living time.
Parameters
[1]string the domain name
[2]int the client session ID
Return Values
[1]table session statistics table formatted as {down_speed,down_averagespeed,down_bytes,down_files,
up_speed,up_averagespeed,up_bytes,up_files}.
Remarks
Get session statistics.
c_GetDomainStatistic(string strDomain)
Parameters
[1]string the domain name
Return Values
[1]table domain statistics table formatted as {running_time,current_session,max_session,
last24hour_session,session_averagesec,session_maxsec,total_session,
down_speed,down_averagespeed,down_bytes,down_files,up_speed,up_averagespeed,up_bytes,up_files}.
Remarks
Get domain statistics.
Parameters
[1]string the domain name
[2]int the client session ID
[3]string the message text
Return Values
nil
Remarks
Send a message to the client(with FTP/FTPS protocol).
Parameters
[1]string the domain name
[2]string the message text
Return Values
nil
Remarks
Broadcast a message to all the clients(with FTP/FTPS protocol).
Parameters
[1]string the domain name
[2]int the client session ID
Return Values
[1]string the message text
Remarks
Return all the chatting message of the specified client.
Parameters
[1]string the domain name
[2]string the image path of your domain logo.
Return Values
nil
Remarks
Create a customized logo for the specified domain.
Parameters
[1]string the domain name
Return Values
[1]table temporary banned IP(formatted as {ip,sec}) list table
Remarks
Get the temporary banned IP list.
Parameters
[1]string the domain name
[2]string the banned IP address
[3]int value of banned seconds
Return Values
[1]bool return true if added the temporary banned IP successfully, otherwise return false
Remarks
Add a temporary banned IP.
Parameters
[1]string the domain name
[2]string the banned IP address
Return Values
[1]bool return true if removed the temporary banned IP successfully, otherwise return false
Remarks
Remove a temporary banned IP.
Parameters
[1]string the domain name
[2]string the user name
[3]string the current user directory
Return Values
[1]string return the physical path of current user directory
Remarks
Get the physical path of current user directory.
Return Values
[1]string return the input data for graphs chart of real-time server traffics.
Remarks
Get the input data for graphs chart of real-time server traffics.
Parameters
[1]string the domain name
[2]int get server's IP way in ftp pasv mode transfer
[3]string your server's IP on internet
[4]string the specified web url that will resolve your internet IP.
[5]string the specified dynamic DNS, will resolve the hostname as my.dnsdns.org.
[6]int the refreshed interval value for getting server's IP.
[7]int enable auto-forwarding pasv ports to router, 1=yes, 0=no.
[8]int the pasv ports range from.
[9]int the pasv ports range to.
Return Values
nil
Remarks
This function is used to change domain's FTP PASV options.
System Function
c_ExitServer()
Parameters
nil
Return Values
nil
Remarks
Safely shut down the server process.
c_StartServer()
Parameters
nil
Return Values
nil
Remarks
Put all the domains online.
c_StopServer()
Parameters
nil
Return Values
nil
Remarks
Parameters
[1]string the source string
Return Values
[1]string the string with replaced values.
Remarks
Replace all the global variables of the source string and return it.
Parameters
[1]string the receiver's email addresses, multiple email addresses can be separated by a comma
[2]string mail subject
[3]string mail content
[4]string attach file path
[5]string the smtp configuration name
[6]bool mail content is HTML?, true=yes, false=no.
Return Values
[1]bool return true if email is sent successfully, otherwise return false
Remarks
Send an email with a few options.
Parameters
[1]string the receiver's email addresses, multiple email addresses can be separated by a comma
[2]string mail subject
[3]string mail content
[4]string attach file path
[5]string the sender's email address
[6]string the sender's name
[7]string the smtp server's address
[8]int the smtp server's port
[9]string the smtp server's username
[10]string the smtp server's password
[11]bool need auth?, true=yes, false=no.
[12]bool need SSL?, true=yes, false=no.
[13]bool mail content is HTML?, true=yes, false=no.
Return Values
[1]bool return true if email is sent successfully, otherwise return false
c_GetVersion()
Parameters
nil
Return Values
[1]string the installed version of Wing FTP Server, such as "3.0.0"
Remarks
Get the installed version of Wing FTP Server.
c_GetLastVersion()
Parameters
nil
Return Values
[1]string the latest version of Wing FTP Server, such as "3.0.0"
Remarks
Get the latest version of Wing FTP Server.
c_GetOsType()
Parameters
nil
Return Values
[1]string the current operating system type, such as "Windows"
Remarks
Get the current operating system type.
c_ClearThumbCache()
Parameters
nil
Return Values
nil
Remarks
Clear all the thumbnail images cache.
c_CreateCustomLogo()
Return Values
nil
Remarks
Create a custom logo for all domains.
c_ResetDefaultLogo()
Parameters
nil
Return Values
nil
Remarks
Reset to the default logo for all domains.
c_GetGlobalIPMaskList()
Parameters
nil
Return Values
[1]table the domain IPmask(formatted as {ip,refuse}) list table.
Remarks
Return entire server's ipmask list.
c_GetGlobalFileMaskList()
Parameters
nil
Return Values
[1]table the domain Filemask(formatted as {filename,refuse}) list table.
Remarks
Return entire server's filemask list.
c_SetGlobalIPMaskList(table tabIpMask)
Parameters
[1]table the IPmask list table (formatted as {ip,refuse})
Return Values
nil
Remarks
Parameters
[1]table the Filemask list table (formatted as {filename,refuse})
Return Values
nil
Remarks
Set entire server's filemask list.
c_GetSystemLog()
Parameters
nil
Return Values
[1]string system log text
Remarks
Get all the system log text.
Parameters
[1]string the system log text
[2]int the system log type, you can check them at the bottom.
Return Values
nil
Remarks
Add a system log.
c_GetServerStatistic()
Parameters
nil
Return Values
[1]table server statistics table formatted as {running_time,current_session,max_session,
last24hour_session,session_averagesec,session_maxsec,total_session, down_speed,
down_averagespeed,down_bytes,down_files,up_speed,up_averagespeed,up_bytes,up_files}.
Remarks
Get server statistics.
Parameters
[1]string the certificate file name
[2]string the output directory
[3]int key size
[4]string 2-digit country code
[5]string full state or province
[6]string locality(city)
[7]string organization
[8]string organization unit
[9]string common name(your name or your server's hostname)
[10]string contact e-mail
[11]string SSL key password
Return Values
[1]bool return true if created SSL certificate file successfully, otherwise return false
Remarks
This function is used for creating an SSL certificate file .
c_GetSSLCertList()
Parameters
nil
Return Values
[1]table a table list of all the SSL configuration (formatted as {name,state})
Remarks
Return all the SSL certificate configurations.
c_GetSSLCertificate(string strName)
Parameters
[1]string the certificate configuration name
Return Values
[1]table a table formatted as {ssl_certpath,ssl_keypath,ssl_password}.
Remarks
Get an SSL certificate configuration table on success, or nil on error.
c_CheckSSLCertificate(string strName)
Parameters
[1]string the certificate configuration name
Return Values
[1]bool return true if SSL certificate is valid, otherwise return false
Parameters
[1]string the certificate configuration name
[2]string the certificate file path
[3]string the key file path
[4]string the key password
Return Values
[1]bool return true if successfully added an SSL certificate configuration, otherwise return false
Remarks
Add or modify an SSL certificate configuration.
c_DeleteSSLCertificate(string strName)
Parameters
[1]string the certificate configuration name
Return Values
[1]bool return true if successfully deleted an SSL certificate configuration, otherwise return false
Remarks
Delete an SSL certificate configuration.
Parameters
[1]string the certificate file name
[2]string the output directory
[3]int the key password
[4]int key size
[5]int key type, 0=RSA, 1=DSA
Return Values
[1]bool return true if created SSH key file successfully, otherwise return false
Remarks
This function is used for creating an SSH key file .
c_GetSSHKeyList()
Parameters
nil
Return Values
[1]table the list of all SSH configuration (formated as {name,state})
c_GetSSHKey(string strName)
Parameters
[1]string the SSH key configuration name
Return Values
[1]table a table formated as {ssh_keypath,ssh_password}.
Remarks
Get an SSH key configuration table on success, or nil on error.
c_CheckSSHKey(string strName)
Parameters
[1]string the SSH key configuration name
Return Values
[1]bool return true if SSH key is valid, otherwise return false
Remarks
Check whether the specified SSH key is valid.
Parameters
[1]string the certificate configuration name
[2]string the key file path
[3]string the ssh password
Return Values
[1]bool return true if added an SSH key configuration successfully, otherwise return false
Remarks
Add or modify an SSH key configuration.
c_DeleteSSHKey(string strName)
Parameters
[1]string the SSH key configuration name
Return Values
[1]bool return true if deleted an SSH key configuration successfully, otherwise return false
Remarks
Delete an SSH key configuration.
Parameters
nil
Return Values
[1]string smtp configuration list.
Remarks
Return all the smtp configurations, and configuration name in string is separated with a carriage return sign.
c_GetSMTP(string strName)
Parameters
[1]string the smtp configuration name
Return Values
[1]table a table formatted as {sender_name,sender_email,need_auth,smtp_server,smtp_port,
smtp_username,smtp_password,use_ssl}.
Remarks
Return an smtp configuration table on success, or nil on error.
Parameters
[1]string the smtp configure name
[2]string the sender's name
[3]string the sender's email address
[4]bool need auth?, true=yes,false=no.
[5]string the smtp server's address
[6]int the smtp server's port
[7]string the smtp server's username
[8]string the smtp server's password
[9]bool need SSL?, true=yes,false=no.
Return Values
nil
Remarks
Add or modify an smtp configuration.
c_DeleteSMTP(string strName)
Parameters
[1]string the smtp configuration name
Return Values
[1]bool return true if deleted an smtp configuration successfully, otherwise return false
Remarks
Parameters
nil
Return Values
[1]table the system task(formatted as {taskname,type,day,executed,datefrom,timefrom}) list table
Remarks
Return all the system tasks.
c_GetTask(string strTaskName)
Parameters
[1]string the task scheduler name
Return Values
[1]table a table formatted as {taskname,type,day,executed,datefrom,timefrom,script}.
Remarks
Get a task scheduler table on success, or nil on error.
Parameters
[1]string the task scheduler name
[2]int the task scheduler type,0=one time task,1=hourly task,2=daily task,3=weekly task,4=monthly task
[3]int means the day number when you select weekly task or monthly task.
[4]string the date string of first starting task, such as 2009-9-9
[5]string the time string of first starting task, such as 09:09:09
[6]string the lua script text for the task.
[7]bool whether to reset the task, true=yes, false=no.
Return Values
nil
Remarks
Add or modify a system task scheduler.
c_DeleteTask(string strTaskName)
Parameters
[1]string the task scheduler name
Return Values
[1]bool return true if deleted system task scheduler successfully, otherwise return false
Remarks
Parameters
[1]string the task scheduler name
Return Values
[1]bool return true if the specified task scheduler exists, otherwise return false
Remarks
Check whether the specified task scheduler exists.
Get/Set Options
Parameters
[1]string the domain name
[2]int the key of domain option
[3]int the integer value of domain option
Return Values
nil
Remarks
Set the integer value of a domain option.
for example:
c_SetOptionInt("domain", DOPTION_DATA_ACCESS_INTERFACE_INT, 1)
DOPTION_DATA_ACCESS_INTERFACE_INT is a macro definition of domain options, you can check them
at the bottom.
Parameters
[1]string the domain name
[2]int the key of domain option
[3]string the string value of domain option
Return Values
nil
Remarks
This function is similar to c_SetOptionInt(), it is used for setting the string value of a domain option.
Parameters
[1]string the domain name
[2]int the key of domain option
Remarks
Get the integer value of a domain option.
for example:
local interface = c_GetOptionInt("domain", DOPTION_DATA_ACCESS_INTERFACE_INT)
Parameters
[1]string the domain name
[2]int the key of domain option
Return Values
[1]string the string value of domain option
Remarks
Get the string value of a domain option.
Parameters
[1]int the key of global option
[2]int the integer value of global option
Return Values
nil
Remarks
Set the integer value of a global option.
for example:
c_SetGlobalOptionInt(GOPTION_SYSTEM_LOGFILE_ENABLE_INT, 1)
GOPTION_SYSTEM_LOGFILE_ENABLE_INT is a macro defination of global options, you can check them
on the bottom..
Parameters
[1]int the key of global option
[2]string the string value of global option
Return Values
nil
Remarks
This function is similar to c_SetGlobalOptionInt(), it is used for setting the string value of a global option.
c_GetGlobalOptionInt(int nKey)
Parameters
Remarks
Get the integer value of a global option.
for example:
local enable_systemlog = c_GetGlobalOptionInt(GOPTION_SYSTEM_LOGFILE_ENABLE_INT)
c_GetGlobalOptionStr(int nKey)
Parameters
[1]int the key of global option
Return Values
[1]string the string value of global option
Remarks
Get the string value of a global option.
Parameters
[1]int the key of admin option
[2]int the integer value of admin option
Return Values
nil
Remarks
Set the integer value of admin option.
for example:
c_SetAdminOptionInt(ADMIN_OPTION_LOGFILE_ENABLE_INT, 1)
ADMIN_OPTION_LOGFILE_ENABLE_INT is a macro defination of admin options, you can check them on
the bottom..
Parameters
[1]int the key of admin option
[2]string the string value of admin option
Return Values
nil
Remarks
This function is similar to c_SetAdminOptionInt(), it is used for setting the string value of an admin option.
c_GetAdminOptionInt(int nKey)
Return Values
[1]int the integer value of admin option
Remarks
Get the integer value of an admin option.
for example:
local enable_adminlog = c_GetAdminOptionInt(ADMIN_OPTION_LOGFILE_ENABLE_INT)
c_GetAdminOptionStr(int nKey)
Parameters
[1]int the key of admin option
Return Values
[1]string the string value of admin option
Remarks
Get the string value of an admin option.
Miscellaneous
md5(string strText)
Parameters
[1]string the original string
Return Values
[1]string the md5 hash of a string
Remarks
Calculate the md5 hash of a string.
c_GetAppPath()
Parameters
nil
Return Values
[1]string the application installation path
Remarks
Returns the absolute path where Wing FTP Server is installed.
c_IsDir(string strDirPath)
Parameters
[1]string the directory path
Remarks
Tells whether the path is a real directory.
c_MkDir(string strDirPath)
Parameters
[1]string the directory path
Return Values
[1]bool return true if created a directory successfully, otherwise return false
Remarks
Attempts to make a directory specified by strPath.
c_RemoveFileDir(string strPath)
Parameters
[1]string the directory path
Return Values
[1]bool return true if removed a file or a directory successfully, otherwise return false
Remarks
Attempts to remove a file or directory specified by strPath.
c_FileExist(string strFilePath)
Parameters
[1]string the file path
Return Values
[1]bool return true if strFilePath is a regular file, otherwise return false
Remarks
Check whether a regular file exists.
c_GetFileTime(string strFilePath)
Parameters
[1]string the file path
Return Values
[1]int the time when file content was changed
Remarks
Get the time when file content was changed.
Parameters
nil
Return Values
[1]int the milliseconds of current time
Remarks
Get the milliseconds of current time.
c_GetTimeUS()
Parameters
nil
Return Values
[1]int the microseconds of current time
Remarks
Get the microseconds of current time.
c_GetRandom()
Parameters
nil
Return Values
[1]int the random number
Remarks
Generate a system random number.
c_GetDir(string strDirPath)
Parameters
[1]string the directory path
Return Values
[1]string return an iterative directory name when no exception occurred, otherwise return nil.
Remarks
Returns an iterative directory name inside the specified path strDirPath. So you can use this function for
directory traversal,
for example:
for subdir in c_GetDir(rootpath) do
print(subdir)
end
c_GetFileDir(string strDirPath)
Return Values
[1]string return an iterative directory/file name when no exception occurred, otherwise return nil.
Remarks
Returns an iterative directory/file name inside the specified path strDirPath. So you can use this function for
directory/file traversal,
for example:
for subdirfile in c_GetFileDir(rootpath) do
print(subdirfile)
end
c_GetRootDir()
Parameters
nil
Return Values
[1]table a table list of local drivers in windows, and in other OS its subdirectory table under "/"
Remarks
Return local drivers string table in windows, subdirectory table under "/" in other OS.
for example:
for _,root_sub in pairs(c_GetRootDir()) do
if root_sub ~= nil and root_sub["isdir"] == true then
print(root_sub["dir"])
end
end
c_GetLocalIpList()
Parameters
nil
Return Values
[1]string the local IP list string
Remarks
Returns the local IP list, and IP in string is separated with a comma sign.
c_TranslateTime(string strTime)
Parameters
[1]string the time string, such as "2009-09-09 00:00:00"
Return Values
[1]int time_t value of the time
Remarks
Translate a time string to a time_t value .
Parameters
[1]string admin username
[2]string admin password
Return Values
[1]bool return true if check administrator login is successful, otherwise return false
Remarks
Administrator login ok?
Parameters
[1]string admin username
[2]string the client IP
Return Values
[1]bool return false when IP is banned, otherwise return true
Remarks
Check administrator login IP.
c_AdminLogout(string strSessionId)
Parameters
[1]string the session ID
Return Values
nil
Remarks
Administrator logout.
c_AdminExist(string strUserName)
Parameters
[1]string admin username
Return Values
[1]bool return true if specified admin exists, otherwise return false
Remarks
Check whether the specified administrator exists.
Return Values
nil
Remarks
Add or modify an administrator .
c_DeleteAdmin(string strUserName)
Parameters
[1]string admin username
Return Values
nil
Remarks
Delete an administrator.
c_GetAdmin(string strUsername)
Parameters
[1]string admin username
Return Values
[1]table administrator data table formated as {username,password,{Ipmask table}}.
Remarks
Return an administrator data table if the specified admin exists, otherwise return nil.
c_GetAdminType()
Parameters
[1]string the administrator name
Return Values
[1]bool return true if administrator is read-only admin, otherwise return false
Remarks
Get the administrator type.
c_GetAdminList()
Parameters
nil
Return Values
c_AddAdminFailedIp(string strIp)
Parameters
[1]string client IP
Return Values
nil
Remarks
Add the client IP to a banned list when login failed, for system anti-hammer.
c_RemoveAdminFailedIp(string strIp)
Parameters
[1]string the client IP
Return Values
nil
Remarks
Remove the specified IP from banned list when login is successful, for system anti-hammer.
c_ClearAdminSession()
Parameters
nil
Return Values
nil
Remarks
Clear all the expired admin sessions.
Parameters
[1]int administration listener's port
[1]bool whether to use SSL, 1=yes, 0=no
Return Values
[1]bool return true if change listener successfully, otherwise return false
Remarks
Modify the administrator's listener.
Parameters
nil
Return Values
[1]table the administrator IPmask(formated as {ip,refuse}) list table
Remarks
Return administrator IPmask list.
c_SetAdminIPMaskList(table tabIpmask)
Parameters
[1]table the administrator IPmask(formated as {ip,refuse}) list table
Return Values
nil
Remarks
Set administrator IPmask list.
c_GetAdminLog()
Parameters
nil
Return Values
[1]string admin log text
Remarks
Get all the admin log text.
Parameters
[1]string the admin log text
[2]int the admin log type, you can check them at the bottom.
Return Values
nil
Remarks
Add an admin log.
Database Schema
Note: You needn't to create database schemas or tables by yourself, Wing FTP
Server will create them automatically when configuring ODBC/Mysql settings(if
you use Mysql, please create a mysql database first, the default database name is
"wftp_database").