|
|
Когда сервер запущен доступны:Пользователи и Виртуальные хосты Текущая статистика (Последняя версия, Форум, и т.д.) Сгрузить Web Mail Внешний скрипт предоставляющий Web интерфейс для работы с почтой Регистрация. Реклама: |
Эта очень небольшая утилита превращает ваш компьютер в полноценный
Web-сервер. Сама программа задействует минимальное количество
системных ресурсов, функционирование сервера не должно сказаться на
производительности вашего компьютера. Сервер может работать в локальной
сети или даже на DialUp-е. Веб-мастера могут запускать эту утилиту даже на
своем локальном компьютере, и не входя в сеть отлаживать CGI-скрипты.
| Параметры и коментарии | ключи |
| Общие параметры | |
| Не показывать иконку в таскбаре. Не добавлять иконку в таскбар. В этом случае, когда окно спрятано, для доступа к диалогу администрирования вы должны: Что бы открыть окно, нажмите Ctrl-Alt-Del, в появившемся таск-менетжере выберите Http, и попробуйте закрыть его. Сервер спросит: "Do you want to close HTTP server?" , Если ответить "Нет", то откроется его окно. В окне сервера вызовите системное меню (Правой кнопка мыши на заголовке) и выберите дополнительный элемент "Server". Если программа запущена как служба NT то окно можно вызвать из менетжера служб, кнопкой Pause | noicon |
| Сворачиваться при старте. | hide |
| Подробный отчет для POP/SMTP/FTP. Иначе фиксируются только основные события. | detail |
| Не сохранять лог. | nolog |
| Сохранять лог. Выберите имя лог-файла. | log=name.log |
| Новый лог файл каждый день. Это нужно, что бы получать статистику по дням. | logday |
| Разрешить удаленное администрирование. Иначе, для администраторов будут доступны только страницы статистики. | radmin |
| Максимальное количество одновременных подключений с одного и того же хоста. Для снятия ограничений можно использовать 0. Ограничения распространяются на все TCP соединения (HTTP,FTP,POP,SMTP,Proxy) | from_same_host=## |
| IP адреса, для которых сервер будет доступен. Указывайте IP адреса через запятую и диапазоны младший через дефис старший. Например: 192.168.0.1-192.168.0.16,127.0.0.1 | ip_range={#.#.#.#[-#.#.#.#],} |
| Запрещенные IP адреса, для которых сервер будет не доступен. Указывайте IP адреса через запятую и диапазоны младший через дефис старший. Например: 192.168.0.1-192.168.0.16,127.0.0.1 | ip_deny={#.#.#.#[-#.#.#.#],} |
| Параметры HTTP сервера: | |
| TCP/IP порт для HTTP сервера. Обычно это 80 | port=## |
| Сколько HTTP запросов будут обрабатываться одновременно. Около 20Kb памяти будет резервироваться для ждущих нитей. Обычно 5-12 соединений достаточно для 3-8 посетителей в минуту. | max=## |
| Имя файла по умолчанию. (Можно использовать шаблон '*'. Например index.* для любого index-а) | def=name.ext |
| Файл ошибки. Полный путь к файлу или скрипту возвращаемому при отсудствии запрошенного файла. Для скриптов и SSI переменная QUERY_STRING будет содержать имя запрошенного файла. | error=path\name.ext |
| Корневая Web папка по умолчанию. Каталог с которогр будет начинаться ваш сайт. | dir=root_dir_name |
| CGI идентификатор. Часть URL для определения CGI. По умолчанию это \"\\cgi-bin\\\", но можно использовать, например, \"\\cgi-\", \"\\local-bin\\\", \".cgi\", и т.д. | cgi_ident="\cgi-bin\" |
| PERL интерпретатор. Интерпретатор для скриптов с расширением .pl | perl=path\name.exe |
| Разделяемый каталог. Если вы хотите что бы для всех CGI был один и тот же каталог запуска, укажите его здесь. Иначе каталогом запуска, будет каталог самого скрипта. | share=path |
| Разрешить обрабатывать Server Side Includes (SSI) в HTML файлах. По умолчанию сервер проверяет SSI только в .sht*,.sml*,.asp* файлах. Предостережение: Обработка SSI требует больше памяти и это медленнее | ssihtm |
| Отменяет предыдущий ключ. | nossihtm |
| Предельное количество байт принимаемое по методу POST. Не указывайте большие значения т.к. это даст хакерам возможность серьезно загрузить вашу сеть, и затребовать много памяти | post_limit=## |
| Никогда не запускать .htm,.gif,.jpg файлы. Иначе, сервер пытается запустить любой файл с CGI идентификатором. | norunhtm |
| Максимальное время на выполнение CGI В секундах. | cgi_timeout=## |
ext=".ext;application;.ext;application;..." | |
mime=".ext1;mime-type1;.ext2;mime-type2;...;.extN;mime-typeN" | |
hostpath="hostname;path" Ключ может повторятся много раз. | |
| Параметры Proxy сервера | |
| Запретить HTTP proxy. | noproxy |
| TCP/IP порт для proxy сервера. | proxy=#port |
| Сколько proxy запросов будут обрабатываться одновременно. | proxy_max=#max |
| IP адреса, для которых сервер будет доступен. Указывайте IP адреса через запятую и диапазоны младший через дефис старший. | proxy_range={#.#.#.#[-#.#.#.#],} |
| Запрещенные IP адреса, для которых сервер будет не доступен. Указывайте IP адреса через запятую и диапазоны младший через дефис старший. Например: 192.168.0.1-192.168.0.16,127.0.0.1 | proxy_deny={#.#.#.#[-#.#.#.#],} |
| Запретить кэш на жестком диске. | noproxy_dir |
| Каталог для сохранения кеша. | proxy_dir=path |
| Сколько дней должны храниться данные в кэше. Proxy может загруженные файлы из кэша по прошествии указанного количества дней поле загрузки. В любом случае если юзер использует кнопку "Reload" файл перегружаетя. | proxy_time=#days |
| Игнорировать NO-CACHE в управляющих заголовках страниц. | ignocache |
| Proxy только для авторизованых пользователей. | proxyusers |
| Параметры DNS сервера | |
| Hosts file. See also format of this file | hosts=hosts_file |
| Запретить DNS сервер | nohosts |
| Для сервера удаленного перенаправления запросов. Уведомления о текущем IP адресе: | |
| URL запроса. Полный URL для сообщения вашего IP адреса серверу динамических перенаправлений. Можно использовать \"$IP_ADDRESS\" переменную что бы вставить ваш IP адрес в URL. | ddns=url |
| Интервал переподтверждения. | ddns_time=#N |
| Запретить уведомления о текущем IP адресе. | noddns |
| Параметры FTP сервера | |
| Запретить FTP сервера | noftp |
| Сколько FTP запросов будут обрабатываться одновременно. | ftp_max=max |
| TCP/IP порт для FTP сервера. Обычно это 21 | ftp_port=port |
| Таймаут по бездействию в секундах. По прошествии этого времени, после последней операции, соединение будет закрыто. | ftp_timeout=#N |
| Имя для загрузок. Если FTP каталог содержит такой подкаталог то пользователи с доступом только для чтения могут загружать туда файлы. | ftp_upload="/dir/" |
| Разрешить виртуальные директории для FTP. | ftp_vdirs |
| Параметры POP3 сервера | |
| Запретить POP3 сервер. | nopop3 |
| Сколько запросов будут обрабатываться одновременно. | pop3_max=max |
| TCP/IP порт для POP3 сервера. Обычно это 110 | pop_port=port |
| Параметры SMTP сервера | |
| Запретить SMTP сервера. | nosmtp |
| Сколько запросов будут обрабатываться одновременно. | smtp_max=max |
| Имя SMTP сервера. (Имя домена) | smtp_name=your.domain.name |
| Использовать все виртуальные хосты как синонимы имени домена. | vhalias |
| TCP/IP порт для SMTP сервера. Обычно это 25 | smtp_port=port |
| Output каталог. Каталог для сохранения сообщений перед отправкой. | smtp_out=path |
| Sent каталог. Каталог для сохранения сообщений после отправки. | smtp_sent=path |
| Error каталог. Каталог для сохранения сообщений, которые не удалось доставить адресату. | smtp_err=path |
| DNS сервер, через который будет искаться информация о почтовом пути. (Это может быть ваш обычный DNS сервер) | smtp_dns=#.#.#.# |
| Принимать для отправки сообщения с любым полем "From". Иначе сервер будет отсылать сообщения только от извесный_пользователь@имя.домена | smtp_any |
| IP адреса, для которых сервер будет доступен. Указывайте IP адреса через запятую и диапазоны младший через дефис старший. | smtp_range={#.#.#.#[-#.#.#.#],} |
| Запрещенные IP адреса, для которых сервер будет не доступен. Указывайте IP адреса через запятую и диапазоны младший через дефис старший. Например: 192.168.0.1-192.168.0.16,127.0.0.1 | smtp_deny={#.#.#.#[-#.#.#.#],} |
| Черный список. E-mail адреса спамеров через пробел. (Можно *@имя.хоста чтобы запретить принимать сообщения от всех с этого хоста) | blacklist="u@adr1 *@adr2 ..." |
| Проверять наличие \"forward\" файла в каталоге пользователя и выполнять инструкции из него. | forward |
| Разрешить исполнение приложений из пользовательского \"forward\" файла. | fwdrun |
user="имя;пароль;домашний_каталог;тип_доступа"
тип_доступа -- это последовательность следующих символов:
Ключ может повторяться несколько раз.
user=anonymous;;c:\public;FWN user=ftp;;c:\readonly;F | |
http.exe port=1080 def=index.html php="C:\PROGRAM FILES\PHP\php.exe" nologВот пример конфигурационного файла:
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 будут принимать запросы только с IP адресов входящих в список разрешенных и не поподающих в список запрещенных.
SMTP сервер будет принимать письма своего домена (входящие для своих пользователей) с любых адресов, кроме запрещенных. Письма для отправки наружу, он будет принимать только с адресов из разрешенного списка Если вы не хотите принимать письма с какого-то IP -- добавте его в список запрещенных адресов.
DNS сервер также возвращает локальные записи всем желающим, но вот рекурсивный поиск имен делает только для адресов из разрешенного диапазона.
Данная версия сервера поддерживает следующие теги:
include
<!--#include virtual="patch/file_name" -->
<!--#include file="full_patch/file_name" -->
Оба варианта этой директивы включают в документ содержимое файла
file_name. В первом случае документ ищется, начиная с каталога
сервера. Во втором случае, начиная с каталога текущего документа. В
обоих случаях path вообще может быть опущен. Если в результате
подстановки обнаруживается, что запрашиваемый документ находится на
сервере в подкаталоге /CGI-BIN/ то он воспринимается как CGI и
запускается. Выходной поток соответственно транслируется, начало до
последовательности "\r\n\r\n" убирается. При этом если в имени не
содержалось символа '?' то CGI передается исходный запрос, с которым
обратились к родительскому документу. Если обнаружен '?' то дальнейшая
последовательность будет передана как запрос, она должна быть
соответственно преобразована Вами.
exec
<!--#exec cgi="file_name" -->
<!--#exec cmd="full_patch/file_name" -->
Запуск скрипта. Все аналогично include. В первом случае файл
запускается из каталога CGI-BIN, во втором должен быть задан
полный маршрут.
fsize и lastmod
<!--#fsize virtual="patch/file_name" -->
<!--#fsize file="full_patch/file_name" -->
<!--#lastmod virtual="patch/file_name" -->
<!--#lastmod file="full_patch/file_name" -->
Подставляет размер или дату последней модификации файла.
echo
<!--#echo var="var" -->
Выводит значение переменной.
printenv
<!--#printenv -->
Выводит все переменные.
break
<!--#break -->
Вызывает прекращение обработки документа.
if -- elif -- else -- endif
<!--#if expr="выражение" -->
текст
<!--#elif expr="выражение" -->
текст
<!--#elif expr="выражение" -->
текст
...
<!--#else -->
текст
<!--#endif -->
Подстановка по условию. Текст будет передаваться пользователю в зависимости
от истинности условий. Выражение может содержать переменные и значения
разделенные знаками логических операций и скобками:
! -- перед выражением -- простое отрицание
= или == -- равно
!= -- не равно
<,>,<=,>= -- соответственно.
&& между выражениями логическое и.
|| между выражениями логическое или.
str1~str2 -- результат истина, если строка str2 является
частью строки str1.
str1 =~ /pattern/ig -- pattern это регулярное выражение Юникс.
Результат истина, если в строке str1 обнаруживается подстрока
соответствующая шаблону pattern
Если вообще нет никакого знака сравнения, то значение
выражения сравнивается с "undefined".
Части elif и else могут быть пропущены.
Часть elif может повторяться сколько угодно раз.
Обязательно долен быть закрывающий тег endif.
set
<!--#set var="переменная" value="значение" -->
Добавление или изменение значения переменной. Не стоит злоупотреблять этой
опцией, так как и количество переменных которые можно добавить и размер
буфера под них ограничены.
Для анализа входящих переменных можно использовать поиск по шаблону. Шаблон это регулярное выражение, соответствует синтаксису принятому в Юниксе, и позволяет найти и выделить фрагмент практически любой сложности. (Расширенный синтаксис регулярных выражений допускаемый в Переле пока не поддерживается) Регулярное выражение представляет из себя подстроку поиска в которой также могут присудствовать, распозноваться и подставлятся метасимволы, модификаторы и переменные. Понимаются следующии метасимволы:
Эта версия включает в себя http прокси сервер. Вы можете указать порт для прокси, одновременное число подключений. Кэш на жестком диске. позволяет сохранять весь принятый трафик определенное количество дней. HTTP протокол предусматривает запрет кеширования определенных страниц. Часто владельцы сайтов пользуются этим только для того, что бы подсчитывать реальное число посещений. По вашему указанию сервер может игнорировать NO-CACHE. В этом случае страничка будет перегружаться только когда один из пользователей прокси нажмет кнопку Reload в своем браузере. Можно включить авторизованый доступ к прокси, и добавить пользователей для которых он разрешен. Смотрите так же описания ключей командной строки.
Эта версия включает в себя DNS сервер. Для запуска вы должны
указать hosts-файл. Формат этого файла с одной стороны совместим со
стандартным виндосовким, с другой стороны дополнен
возможностью быть похожим на формат мастер-файла рекомендованого в RFC 1035.
Для совместимости с системным хост-файлом, каждая строка должна состоять
из IP адреса и имени хоста. Комментарии начинаются с символа '#'.
В отличие от виндосовкого формата доменные имена в этом файле могут
начинаться с последовательности '*.' для описания всех поддоменов. Вот
пример такого файла:
# Here example of hosts file for local network begins. 192.168.1.21 www.max.local 192.168.1.21 max.local 192.168.1.21 max.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 ... # end of hosts fileТак же каждая строка может соответствовать рекомендациям RFC и содержать имя домена и RR описание. Коментарии могут начинаться с ';'
Сервер может поддерживать рекурсию. Для реализации резольвинга любого
домена вы должны указать NS записи корневых серверов. Если вы выбрали
"Рекурсивные вызовы только к серверам верхнего уровня." вместо корневых
серверов укажите DNS сервера вашего, провайдера. Все запросы будут идти
к ним. Иначе, сервер будет обращатся к различным серверам,
предположительно близким к запрошенной зоне.
Пример:
# 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.1.21 www.max.local 192.168.1.21 max.local 192.168.1.20 *.max.local # end of hosts file
SMTP сервер может:
# 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@yahoo.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Фильтр разрыва, это специальное вырожение которое может осуществить проверку после того как сервер получил первые 8Kb сообщения. Если результат этого выражения исина, собщение не будет приниматья дальше, Комбинация "отправитель+IP адрес+приветствие сервера+получатели" будет помещена во временный черный список и последующие попытки отправить это сообщения будут присекаться еще до начала приема данных.
(! ( $msg =~ /^From:[^\n\r]*<([^>\n\r]+)>/i ||
$msg =~ /^From:[ \t]*([^\n\r]+)/i )
)
|| $1 != $sender
|| $msg =~ /^Subject:[^\n\r]*семинар|руководителю|бухгалтеру/i
|| $msg =~ /aдpес[ \r\n\t]+пoлучен[ \r\n\t]+из[ \r\n\t]+oткpытыx[ \r\n\t]+истoчнuкoв/i
|| $msg =~ /р[ \r\n\t]*А[ \r\n\t]*м[ \r\n\t]*е[ \r\n\t]*р[ \r\n\t]*и[ \r\n\t]*к[ \r\n\t]*а[ \r\n\t]*н[ \r\n\t]*с[ \r\n\t]*к.*А[ \r\n\t]*н[ \r\n\t]*г[ \r\n\t]*л[ \r\n\t]*и[ \r\n\t]*/i
В данном примере: первые четыре строки проверяют наличие в сообщении
поля From, выделяют адрес из этого поля и требуют совпадения этого адреса
с адресом отправителя;
следующая строка в поле Subject ищет любое из слов "семинар","руководителю","бухгалтеру";
следущей строкой в теле сообщения ищется строка
"aдpес пoлучен из oткpытыx истoчнuкoв", при этом между словами может
быть любое количество пробелов;
последняя строка ослеживает различные модификации производные от строки
"Центр Американского Английского"
POP3 сервер предоставляет доступ к входящей почте. Если POP3 прокси разрешен
то пользователи могут настроить свои почтовые программы чтобы забирать почту
с любых удаленных POP3 через этот POP3. Для этого, user настройка в почтовой
программе должна иметь вид:
local_user@remote_user@remote_host
Пароль должна иметь вид:
local_password@remote_password
Или @remote_password часть может быть добавлена к user настройке.
Везде вместо '@' может использоваться '#'.
FTP сервер предоставляет доступ к домашним каталогам пользователей и если
опция
"Разрешить виртуальные директории для FTP" выбрана то и к
приватным виртуальным каталогам. Открытые виртуальные каталоги
недоступны через FTP.
Если FTP прокси разрешен
то пользователи могут настроить свои FTP программы чтобы забирать почту
с любых удаленных FTP через этот FTP. Для этого, user настройка в FTP
программе должна иметь вид:
local_user@remote_user@remote_host
Пароль должна иметь вид:
local_password@remote_password
Или @remote_password часть может быть добавлена к user настройке.
Везде вместо '@' может использоваться '#'.
Некоторые FTP клиенты (например FTP плагин в Far-е) поддерживает
схожий тип FTP proxy. В этих клиентах в настройках файрвола можно указать
your_host:FTP_port, и указывать FTP URL-ы в виде:
ftp://local_user#remote_user:local_password#remote_password@ftp_host/
Сервер не содержит встроенных TLS/SSL криптографических функций, но включает интерфейс для подключения внешней TLS/SSL билиотеки. Вы можете подключить к серверу OpenSSL или GNU TLS. Простая DLL базирующаяся на OpenSSL 0.9.6j лежит здесь: seclib.zip
М. Феоктистов