| If server works it's available:Users & Virtual Hosts Current statistics Web mail (Last version, Forum, etc.) Download Web Mail An external script gives Web intrface for working with mail Download Sendmail emulator Registration. E-mail... |
This very small utility turns your computer into a fully functional Web-server. The program itself requires a minimal set of system resources, so the server's functioning doesn't influence your computer's performance. This server can function under a LAN networking or even under a Dial-Up networking. Webmasters can run this utility on their local computers and debug their CGI-scripts without going on-line.
This is probably the smallest HTTP server, but you shouldn't
underestimate its capabilities.
ASIS files also support. Those files content HTTP header in the beginning.
Such files are being used for redirect inbound request to other site. This
file must begins with keyword "Status: " after this returning code and your
header is going. After header one line is empty, and data. Extension must be
.asi or .asis
Parametr and comment | Key |
General Setting | |
Disable icon in notification area. Don't add icon into systrey (server's window always in back). In this case to get access to administration dialog box you must: To get server window you can press Ctrl-Alt-Del to open task manager, in task manager select HTTP, and try to kill it. Server will ask you "Do you want to close HTTP server?", -- If you reply "No" server show window. In server window's select system menu (Right button on title) and select advanced item "Server" Also if server is runed as NT service you may open server's window by Pause/Continue button in Service Control Manatger. | noicon |
Minimize on startup. | hide |
Create detailed log for POP/SMTP/FTP. (By default only basic events are added to the log). | detail |
Disable saving log. | nolog |
Log filename. | log=name.log |
Create a daily log (new log created after each day).It's necessary to get statistics for a day. Server will every day rename old log file (add date to name). It's necessary to get statistics for a day. | logday |
Enable remote administration. Otherwise, only statistics will be available for administrators. | radmin |
Number of simultaneous requests from each host. You can restrict number of simulate request from the same host. Usually one browser creates four simulate connections. Some browsers try to create much more simulate connections. This restriction includes all TCP connections (HTTP,FTP,POP,SMTP,Proxy) | from_same_host=## |
IPs that can access this server. Separe single IP by comma and IP ranges with hyphens. | ip_range={#.#.#.#[-#.#.#.#],} |
Deny IPs that can't access this server. Separe single IP by comma and IP ranges with hyphens. | ip_deny={#.#.#.#[-#.#.#.#],} |
HTTP server | |
TCP/IP port for HTTP server. Usually it's 80 | port=## |
Number of HTTP requests working simultaneous. Approcsimately 20Kb of memory is reserved for each thread. Usually 12 connections are enought for 3-8 visitors per minute. | max=## |
Default file name. Name when requested URL finished by "/". (Wildcards are accepted, such as index.* to allow any index file in folder) | def=name.ext |
Error file. Full path to file or script that will be returned if requested file is not found. For CGI or SSI PATH_INFO variable will contents the name of requested file. | error=path\name.ext |
Default web foulder. | dir=root_dir_name |
CGI ident.The part of a URL that indicates a CGI script. Default is "\cgi-bin\", but you could use e.g. "\cgi-", "\local-bin\", ".cgi", etc. | cgi_ident="\cgi-bin\" |
PERL interpreter. Interpreter for scripts with .pl extension | perl=path\name.exe |
Share dir. If you want this dir to be CGI current dir always, direct it here. Otherwise CGI current dir will be CGI script dir. | share=path |
Enable Server Side Includes (SSI) checking in HTML files. By default SSI checking in .sht*,.sml*,.asp* files only. Warning: SSI processing uses more memory, and and creates a small delay | ssihtm |
Key to check SSI in .sht*,.sml*,.asp* files only. | nossihtm |
Limit bytes received by POST method to. Note: Large value may use excessive PC and network resources. | post_limit=## |
Never execute .htm,.gif,.jpg files. Otherwise, server trays to run any file with CGI ident. | norunhtm |
Limit CGI execution time. (in seconds) | cgi_timeout=## |
ext=".ext;application;.ext;application;..." | |
mime=".ext1;mime-type1;.ext2;mime-type2;...;.extN;mime-typeN" | |
hostpath="hostname;path" Key may be repeated more then once. | |
Proxy server | |
Disable HTTP proxy. | noproxy |
TCP/IP port for proxy server. | proxy=#port |
Number of proxy requests working simultaneous. | proxy_max=#max |
IPs that can access this server. Separe single IP by comma and IP ranges with hyphens. | proxy_range={#.#.#.#[-#.#.#.#],} |
Deny IPs that can't access this server. Separe single IP by comma and IP ranges with hyphens. | proxy_deny={#.#.#.#[-#.#.#.#],} |
Do not save proxy cache to hard disk. | noproxy_dir |
Proxy cache directory. | proxy_dir=path |
For how many days files will be saved. Proxy can delete downloaded files from cache proxy directory after several days of last download. In any case, if user press "Reload" button files download again. | proxy_time=#days |
Ignore NO-CACHE in control headers of the pages. HTTP protocol has an opportunity to disable caching for page. Often site holders use this option to calculate the number of vistors. In any case, if user press "Reload" button files download again. | ignocache |
Proxy for avtorized users only. Proxy will be available for defined users with proxy access flag only | proxyusers |
DNS server | |
Hosts file. See also format of this file | hosts=hosts_file |
Disable DNS server. | nohosts |
Disable recursion. | noreqursion |
Size of cache for names. (in bytes) | dnscache |
Recursion call to higher level servers only. | dnsupl |
Return mailhost as host name, if MX record is not found. | dnsmx |
IPs that can access this server. Separe single IP by comma and IP ranges with hyphens. | dns_range={#.#.#.#[-#.#.#.#],} |
Deny IPs that can't access this server. Separe single IP by comma and IP ranges with hyphens. | dns_deny={#.#.#.#[-#.#.#.#],} |
To remote redirect server. Current IP notification | |
URL on redirect server. Full URL to update your IP address on dinamic DNS server. "$IP_ADDRESS" to insert your real IP address into URL. | ddns=url |
Time to re-confirm your IP on redirect server. | ddns_time=#N |
Disable dynamic DNS. | noddns |
FTP server | |
Disable FTP server | noftp |
Number of simultaneous requests. | ftp_max=max |
TCP/IP port for FTP server. Usually it is 21 | ftp_port=port |
User session timeout. (in second) Connection will close, if user is idle for this time. | ftp_timeout=#N |
Name of upload subdirectory.If FTP directory contents this subdirectory, users with \"read only\" access can still upload files here. E.g. /pub/" | ftp_upload="/dir/" |
Enable virtual directories for FTP. | ftp_vdirs |
POP3 server setting | |
Disable POP3 server. | nopop3 |
Number of simultaneous requests. | pop3_max=max |
TCP/IP port for POP3 server. Usually it is 110 | pop_port=port |
SMTP server setting | |
Disable SMTP server. | nosmtp |
Number of simultaneous requests. | smtp_max=max |
SMTP server name. (Domain name) | smtp_name=your.domain.name |
Use all virtual hosts as alias domain name. | vhalias |
TCP/IP port for SMTP server. Usually it's 25 | smtp_port=port |
Output path. Directory to store messages before sending | smtp_out=path |
Sent path. Directory to store sent messages | smtp_sent=path |
Error path. Directory to store messages, on failed send | smtp_err=path |
DNS server to get mail routing info. (May be your default DNS server) | smtp_dns=#.#.#.# |
Alow any "From" field. Otherwise server will send message from user_name@your.domain.name only | smtp_any |
IPs that can access this server. Separe single IP by comma and IP ranges with hyphens. | smtp_range={#.#.#.#[-#.#.#.#],} |
Deny IPs that can't access this server. Separe single IP by comma and IP ranges with hyphens. | smtp_deny={#.#.#.#[-#.#.#.#],} |
Blacklist of E-mail addresses of spamers. Separate addreses by space. Use *@host to block receiving from any address of this host) | blacklist="u@adr1 *@adr2 ..." |
Use instructions from the "forward" file in a user's directory. | forward |
Alow execution of applications from user's "forward" file. | fwdrun |
user="name;password;home_dir;type_of_access_flags"
type_of_access_flags -- It's sequence of next symbol:
Key may be repeated more then once.
user=anonymous;;c:\public;FWN user=ftp;;c:\readonly;F |
http.exe port=1080 def=index.html php="C:\PROGRAM FILES\PHP\php.exe" nologHere is an example of configuration file:
log=C:\TEMP\http.log perl=C:\PERL\BIN\perlis.dll # supported !!! max=12 def=index.stm @www.cfg # include other configuration file hostpath=www.name.www;C:\www1 hostpath=max.name.www;C:\www2 # End of file
HTTP,FTP,POP3,Proxy will receive request from IPs that include in allowed list and exclude denied list.
SMTP will receive the message for own domain (incoming for own users) from any addresses, exclude denied. The messages to send outside, it will get from allowed IPs only If you don't want get any messages from some IP -- just add it to denied list.
DNS server also retrieve local records to anybody, but recursion searching it do for IPs from allowed list only.
Current server version supports the following tags:
include
<!--#include virtual="path/file_name" -->
<!--#include file="full_path/file_name" -->
Both variants include the content of file_name in the document. In first
case it looks for the document from the web root directory, in the second
case you can define a path for the document. If the requested document
content cgi_ident in path, the server runs the file. If the file_name
contains the "?" symbol, the string after it is transmitted as a request
with parameters which should be processed by your script.
exec
<!--#exec cgi="file_name" -->
<!--#exec cmd="file_name" -->
Runs the script like with "include" tag, from /cgi_ident/ subdirectory
fsize & lastmod
<!--#fsize virtual="path/file_name" -->
<!--#fsize file="full_path/file_name" -->
<!--#lastmod virtual="path/file_name" -->
<!--#lastmod file="full_path/file_name" -->
Shows file size and last modified date.
echo
<!--#echo var="var" -->
Prints variable value.
printenv
<!--#printenv -->
Outputs the values of all variables.
break
<!--#break -->
Breaks procession of the document.
if -- elif -- else -- endif
<!--#if expr="expression" -->
text
<!--#elif expr="expression" -->
text
<!--#elif expr="expression" -->
text
...
<!--#else -->
text
<!--#endif -->
The text will be either shown or not depending on the outcomes of specified
conditions. The conditions can consist of variables and values as well as
different logical operators between them:
! -- "Not"
= or == -- "Equal to"
!= -- "Not equal to"
<,>,<=,>= -- "Less than", "Greater than", "Less than or equal to",
"Greater than or equal to".
~ -- "Part of..."
str1 ~ str2 -- the result is true, if the string str2
is the part of string str1
str1 =~ /pattern/ig -- pattern it is Regular expressions like Unix.
The result is be true, if in the string str1
has been found substring equal by pattern.
&& --"AND"
|| --"OR"
elif and else operators can be omitted, elif
can be repeated as many times as you need. It's necessary to put the
endif tag at the end of your statements.
set
<!--#set var="variable" value="value" -->
Sets or changes the value of the variable. Although, try not to use this
feature too often because the number of variables and memory allocated for
them is somewhat restricted.
If hard disk cache enabled server will store all incomming files except authorized pages. Server can delete downloaded files from cache proxy directory after several days of last download. You may chouse save downloaded data for long time, and in this case you will have lot of files, and quantity will be grow, and grow, and grow... Some file's systems slowly working when too much of files in directory. For this case use large mode, -- the server create 64 subdirectories and will save the files there. See also command line keys descriptions
This version content DNS server. To run you must specify hosts file.
File has format on the one hand compatible with system hosts file and on
the other hand may be alike with master file format recomended by RFC 1035.
For compatible with system hosts file, each lines may content IP address
and name of the host. Comments begin with symbol '#'. Domain name in
this file could begin from '*.' to descript all subdomain.
Example:
# Here is an example of hosts file for local network. 192.168.1.21 www.max.local 192.168.1.21 max.local 192.168.1.20 *.max.local 192.168.1.22 www.boss.local 192.168.1.23 serg.local 192.168.1.26 www.serg.local 192.168.1.24 *.andy.local 192.168.1.25 *.mary.local # etc ... # To create your own dialup network add last record: 192.168.1.21 * # -- Redirect all unknown incoming request to 192.168.1.21 # end of hosts fileAlso each line may content domain-name and RR description and comment may begin with ';' Next lines are supported:
Server may support reqursion call. To release resolving for any domain
you MUST direct NS record for root servers. If you check "Recursion call to
up level servers only" you must direct DNS server of your provider, instead
root servers, and program will call only to these servers. Otherwise,
server will call to different zone servers.
Example:
# Here is an example of hosts file for export domain to Internet, # and resolve other names. ; First, lines holds the information on root name servers needed to ; initialize cache of Internet domain name servers . IN NS a.root-servers.net a.root-servers.net IN A 198.41.0.4 . IN NS b.root-servers.net b.root-servers.net IN A 128.9.0.107 . IN NS c.root-servers.net c.root-servers.net IN A 192.33.4.12 . IN NS d.root-servers.net d.root-servers.net IN A 128.8.10.90 . IN NS e.root-servers.net e.root-servers.net IN A 192.203.230.10 . IN NS f.root-servers.net f.root-servers.net IN A 192.5.5.241 . IN NS g.root-servers.net g.root-servers.net IN A 192.112.36.4 . IN NS h.root-servers.net h.root-servers.net IN A 128.63.2.53 ; Now declare our domain $TTL 86400 ;TTL - 24 hours somedomain.net IN SOA somedomain.net max@somedomain.net ( 2002120602 ; Serial 36000 ; Refresh 3000 ; Retry 36000000 ; Expire 36000 ; Minimum ) IN NS ns.somedomain.net IN NS ns2.somedomain.net IN MX 1 relay1.somedomain.net IN MX 2 relay2.somedomain.net IN A 192.168.12.1 ns.somedomain.net IN A 192.168.12.1 ns2.somedomain.net IN A 192.168.12.2 relay1.somedomain.net IN A 192.168.12.1 relay2.somedomain.net IN A 192.168.12.2 pc2.somedomain.net IN A 192.168.12.2 IN NS ns2.somedomain.net IN MX 1 relay1.somedomain.net *.somedomain.net IN A 192.168.12.1 IN NS ns.somedomain.net IN NS ns2.somedomain.net IN MX 1 relay1.somedomain.net IN MX 2 relay2.somedomain.net ; also this file may contents lines in next format: 192.168.12.1 www.max.local 192.168.12.2 max.local 192.168.12.1 *.max.local # end of hosts file
SMTP server can:
# Begin of file @yahoo 4.79.181. 67.28.113. one@address.com lotto ? $sender == spamer@address ? ! $hello =~ /.+\.[a-z]{2,4}/ ? $control =~ /\[64.156.215.*\]/ # End of file
# Here is the example of forward file. #if $text =~ /\nFrom: .*?boss@address/i !d:\perl\bin\perl.exe check.pl #endif #if $in_text(100% FREE) #mv c:\probably\spam #elif $size_kb<=20 && ! ( $text =~ /^From: .*?([^< ]+?@[^> \r\n]+).*/i && ($1 == my@private.address || $1 == boss@address ) || $in_text(do not redirect) ) #cp c:\probably\importan my_home@address my_seccond_address@gmail.com #else !d:\perl\bin\perl.exe autoreply.pl $msgfile $1 #endif # End of forward file
# Here is the example of antivirus file. #if $text =~ /Content-Transfer-Encoding: ["`]?base64[\001-\xFF]*?\n\r?\nTVqQAAMA/ #if $text =~ /name=.*\.pif/ #mv c:\probably\virus #else !c:\DrWeb\drwebcl.exe /GO /TM- /WA- /TB- /ML #endif #elif $body =~ /<script language=/ && $body =~ /<!DOCTYPE HTML/ #mv c:\probably\spam #endif # End of file
(! ( $msg =~ /^From:[^\n\r]*<([^>\n\r]+)>/i || $msg =~ /^From:[ \t]*([^\n\r]+)/ ) ) || $1 != $sender || $msg =~ /^Subject:[^\n\r]*New site|You are win/i || $msg =~ /to|for[ \r\n\t]+unsubscribe[ \r\n\t]+[ \r\n\t]+press|go|open|reply|do not/iIn this example: first four lines check does field 'From' is present in the message, and get address from this field, and this address must be the same as sender address (return path); Next line search in the field Subject "New site" or "You are win"; and last line try to detect some strings like "To unsubscribe do something..."
POP3 server provide access to incomming mail. If POP3 proxy is enabled
then users may option their E-mail client's program to get mail from
another remote POP3 through this POP3. For it, user option in client's program must be:
local_user@remote_user@remote_host
Password must be: local_password@remote_password
Or @remote_password part may be added to user option.
Anywhere instead '@' may be used '#'.
If Web Mail enabled the users that have POP3 access may use it by
URL http://host.name/$_wmail_$ .
Web mail avilable only from IP addresses from POP3 range.
FTP server provide access to home directories of users and if option
"Enable virtual directories for FTP" is selected then provide access
to private virtual directories. Public virtual directories
are unavilable through FTP.
If FTP proxy is enabled
then users may option their FTP client's program to work with
remote FTP through this FTP. For it, user option in client's program must be:
local_user@remote_user@remote_host
Password must be: local_password@remote_password
Or @remote_password part may be added to user option.
Anywhere instead '@' may be used '#'.
Some FTP clients (e.g. FTP plugin for Far manager) support alike type of
FTP proxy. In this cliens you may option firewall setting to
your_host:FTP_port, and dirrect FTP URL like this:
ftp://local_user#remote_user:local_password#remote_password@ftp_host/
The server doesn't content real buildin TLS/SSL cryptographic functions, but includes interface to connect external TLS/SSL library. You may connect OpenSSL or GNU TLS to the server. Simple DLL based on OpenSSL 0.9.6j avilable here: seclib.zip