1. О программе
Маленький утиль Srif32 предназначен для работы совместно с FTN-мэйлерами в качестве внешнего обработчика файловых запросов. Менеджер работает в среде Windows9x, WindowsNT. Работа Srif32 опробована совместно с Аргусом и Т-Майлом. Возможна работа совместно с любыми другими мэйлерами, которые позволяют подключать внешний обработчик файловых запросов. Сервис Srif32 выполняет:
2. Лицензионное соглашение
Данный продукт фриварный и Вы можете его использовать без ограничений, особенно, если от этого использования Вы получаете выгоду. Со своей стороны, ничего не гарантирую и ничего не обещаю! В общем, все как всегда. Впрочем, с благодарностью приму Ваши замечания и предложения.
В архив включены (надеюсь :-)) следующие файлы:
BlackNote.txt | Файл для отправки системам из черного списка |
File_id.diz | Описание архива |
History.txt | Изменения и дополнения прошлых версий |
Note.txt | Пример файла-вставки для отчета |
Note.tpl | Пример файла-вставки от Serhiy Prosyanyk 2:463/485. Для его нормального отображения в lng-файле нужно заменить "не ограничено" на "не огр." |
sfmail.bat | bat-файл для запуска менеджера из sfmail |
Srif32.als | Пример файла описания алиасов |
Srif32.black | Пример файла черного списка |
Srif32.dirs | Пример файла со списком каталогов |
Srif32.doc.htm | Документация по Srif32 (в HTML формате) |
Srif32.Excl | Пример файла со списком исключаемых файлов |
Srif32.exe | Исполняемый файл |
Srif32.faq | Часто задаваемые вопросы (и ответы) |
Srif32.ini | Файл с настройками |
Srif32.lng | Файл языков интерфейса |
Srif32.ndx | Пример файла-индекса |
Srif32.pass | Пример файла со списком паролей |
Srif32.rDir | Пример файла со списком каталогов |
Srif32Config.exe | ГУЕвый конвигуратор для настройки менеджера |
Srif32Config.ini | Служебный файл конфигуратора |
Srif32Index.exe | Утиль для создания файлов-индексов |
SRIFStat.exe | Доп-утиль для сбора статистики по фрякам |
SRIFStat.tpl | Шаблон для файла статистики |
TMsrif.BAT | bat-файл для запуска менеджера из т-майла |
Для нормальной работы менеджера, ему следует передать один параметр - стандартный SRIF-файл (о формате файла см. ниже). Кроме того, в каталоге, где находится srif32.exe должен лежать srif32.ini. Если имя или местоположение этого файла отличается от указанного, то его можно передать в качестве второго параметра при запуске менеджера.
Вот, например, как это делается в
Аргусе: в меню Config\FileRequests поставьте галочку UseSRIF
и пропишите в поле для StandartRequestInformationFile следующую
строчку:
Путь\SRIF32.EXE %SRIF%
Вместо параметра %SRIF% Аргус сам пропишет имя srif-файла.
В Т-майле нельзя напрямую передать имя srif-файла, но, он (файл) создается
в каталоге флагов т-майла, его имя определяется переменной Flag_Session
(см. t-mail.ctl). Как правило, имя этого файла включает номер задачи
(%TASKNO%), а уж его то можно передать. Для этого можно использовать
прилагаемый батничек - он сформирует имя srif-файла и запустит менеджер. В
t-mail.ctl впишите процесс:
Process FREQ Путь\TMSRIF.BAT *T
и исправьте батничек в соответствии с Вашими путями и
переменными Flag_Session и Flag_Dir в t-mail.ctl.
При использовании других мэйлеров Вам нужно только указать имя стандартного SRIF-файла в качестве параметра при вызове менеджера. Вся необходимая информация для работы менеджера находится в этом файле (см. пример файла в разделе "SRIF-файл").
Встречаются мэйлеры, которые не создают такого файла. Как праило, они запускают внешний freq-процессор с набором параметров. Все что Вам нужно в этом случае - создать из этих параметров srif-файл, после чего запустить менеджер обычным образом. Рассмотрим такой случай на примере sf-mail. Из его доки узнаем, что внешний freq-процессор пускается через ключ FR_Xternal. При этом возможны слкдующие параметры (только те, что нам интересны):
*T - номер линии; *B - скорость текущего или последнего соединения; *A - адрес станции, с которой была последняя сессия; *Q - имя принятого файлового запроса (работает только с внешним реквест-процессором); *O - имя оператора станции, с которой идет или прошла сессия; *X - SECURE если сессия защищена паролем, и UNSECURE в противном случае; *R - файл ответа от внешнего реквест-процессора;Наши действия:
По аналогии можно настроить практически любой мэйлер, имеющий возможность запуска внешнего менеджера файловых запросов. Вопрос только в том, какие параметры сможет передать мэйлер, и, соответственно, насколько полно можно будет использовать srif32.
4. SRIF-файл
Это файл, содержащий информацию о системе, а также имя файла-запроса и имя файла, куда следует поместить ответ. Стандарт на файл описан в fsc-0086 Gordian Schuermann & Mirko Mucko. Файл создается мэйлером, поэтому Вам не надо беспокоиться о его формате и местонахождении. Вот пример файла, который создает Аргус:
Sysop Rodion Sagdeev AKA 2:5013/1.9 AKA 2:5013/5.1 Baud 28800 Time -1 RequestList 1.req ResponseList 1.out RemoteStatus PROTECTED SystemStatus LISTED SessionProtocol HYD Site RS System Location Magnitogorsk Phone 7-3511-***-*** DTE 115200 PORT 2 Mailer Argus MailerCode 00 SerialNumber UNREG Version 2.8/95 SessionType EMSI OurAKA 2:5013/1 TRANX 36BA0D76 Password 123
Вы можете использовать этот пример для проверки и настройки менеджера. Создайте файл (например, 1.srif), в который поместите вышеприведенные строчки. При необходимости отредактируйте нужные поля. Создайте файл 1.req, в который запишите запрос (см. раздел "Порядок построения запросов"). Запуская Srif32 с параметром 1.srif Вы увидите результаты работы в 1.out.
Рассмотрим основные поля (вернее - те, которые использует для своей работы менеджер).
Sysop - Здесь передается имя сисопа удаленной станции. Данное имя используется только для ведения лога и создания письма-отчета (поле "To:"). Если его длина окажется больше 35 символов, то оно будет обрезано. "Разделение" станций происходит исключительно по адресам. AKA - Адрес системы. Если удаленная система имеет несколько АКА, то все они передаются в нескольких строчках AKA. Обрабатывается первая строка АКА: именно она ищется в ini-файле и на этот адрес отправляется письмо-отчет. Но! для всех строчек AKA будут сохранены текущие суточные лимиты. Это несколько защищает от запросов одного юзера с разных адресов для обхода суточных лимитов.
Baud - Скорость соединения. Используется для проверки - соответствует ли скорость минимально разрешенной для фряков. Кроме того, исходя из скорости соединения, вычисляется время, необходимое на вытягивание запрошенных файлов. Вернее наоборот: исходя из разрешенного времени (см. описание ini-файла, параметр Koef) вычисляется максимальный объем (чтобы он уместился в это время).
RequestList - Имя файла-запроса. Это тот самый файл, который юзер послал Вашей системе в качестве запроса. В нем перечислены запрашиваемые файлы или маски файлов и (при необходимости) пароли на доступ к этим файлам. В каждой строчке запроса указан один файл (одна маска), и, через пробел+"!" пароль (если нужен). Если имя фрякаемого файла содержит пробелы, то оно должно быть заключено в кавычки.
ResponseList - Имя файла, куда менеджер должен поместить результаты своей работы. В этом файле в каждой строчке перечислены файлы, которые были найдены и прошли через все лимиты. Все эти файлы будут отправлены мэйлером удаленной стороне. Кроме того, еще добавляется имя файла-отчета (в формате *.PKT). Имя начинается с символа "^", что говорит мэйлеру о необходимости удалить этот файл после его отправки.
OurAKA - АКА Вашей системы для данного сеанса. Используется для создания письма-отчета (поле "From:") в том случае, если не указано в Ini-файле. Внимание! т-майл не создает этой строчки, поэтому, если в ini-файле не задан параметр OurAKA (см описание ini-файла), то он будет равен 0:0/0.0.
5. INI-файл
Для нормальной работы менеджера следует настроить ini-файл. Он должен находиться в рабочем каталоге SRIF-менеджера. Сразу обращаю внимание на то, что _ВСЕ_ ключи (кроме LogFile, MaxLogSize, AccessLogName и AccessLogSize) можно (и НУЖНО) переопределить в любой секции. Т.е. ЛЮБОЙ параметр может быть настроен индивидуально для отдельного адреса (группы адресов).
Файл разбит на отдельные секции. Заголовок секции - это адрес системы или маска для группы адресов в 4D формате. Заголовок секции заключается в квадратные скобки. После заголовка идут ключи, задающие настройку для этого адреса (группы адресов).
Секция [Main] является основной. Заданные в ней параметры будут параметрами "по умолчанию" для остальных секций (если они в этих секциях не определены). В ней также задаются имена лог-файлов и их размер.
В начале работы менеджера происходит чтение секции [Main]. Затем, поочередно читаются секции (если они присутствуют) [*:*/*.*], [Z:*/*.*], [Z:R/*.*], [Z:R/N.*], [Z:R/N.P], где Z,R,N,P - номера зоны, региона, ноды и поинта фрякающего.
Таким образом осуществляется наследование параметров по секциям.
Каждый ключ (кроме ключей задания параметров лог-файлов) может содержать три значения, разделенных пробелом. Первое значение выбирается для систем, сессия с которыми парольная (Protected). Второе значение - для непарольных сессий с системами, которые включены в нод/поинтлист (Listed-системы). Третье - для непарольных систем отсутствующих в нод/поинт-листах (Unlisted). Если один из параметров отсутствует, то он приравнивается более левому :-). Пример:
Time=90 30 10В этом примере время для фряков для Listed/Protected 90 минут, для Listed/UnProtected - 30 минут, для UnListed - 10 минут.
Если какой либо ключ отсутствует - его значение наследуется из "старшей" секции (см выше). Пример:
[main] Time=90 30 [2:5013/*.*] [2:5013/1.*] Time=120Здесь для UnListed системы будут следующие лимиты: если адрес системы 2:5013/1.* - 120 минут (унаследуется значение слева), а если адрес 2:5013/*.* - 10 минут (унаследуется от main, где, в свою очередь, унаследуется слева)
Если какой либо параметр будет равен '!BlackList!', то соответствующая сессия будет считаться "в черном списке" (подробнее см. " Черный список").
Для удобства настройки можно воспользоваться прилагаемой тулзой Srif32Config.
LogFile - Имя лог-файла. Если имя файла содержит пробелы - следует заключить его в кавычки. Если имя файла не определено, то лог вестись не будет. Этот параметр можно задать только в секции [Main]. Формат файла см. в разделе " Форматы файлов".
MaxLogSize - Максимальный размер лога, в Кб. При старте программы проверяется размер лог-файла и, при его превышении, производит укорачивание. Об этом также делается запись в лог-файл. Если размер не указан, или равен 0, то размер лога не отслеживается (это может ускорить обработку запросов, особенно на медленных системах). Этот параметр можно задать только в секции [Main].
AccessLogName - Имя файла-хронологии. Файл ведется в формате NCSA. В него записываются файлы, которые были переданы мэйлеру для отправки. Этот файл удобно анализировать любым NCSA-лог-анализатором (н-р AnaLog) или использовать прилагающуюся тулзу - SRIFStat. Этот параметр можно задать только в секции [Main]. Формат файла см. в разделе " Форматы файлов".
AccessLogSize - Максимальный размер файла-хронологии, в Кб. При старте программы проверяется размер файла и, при его превышении, производит укорачивание. Об этом делается запись в лог-файл. Если размер не указан, или равен 0, то размер файла-хронологии не отслеживается (это может ускорить обработку запросов, особенно на медленных системах). Этот параметр можно задать только в секции [Main].
LangFile - Имя языкового файла. По умолчанию Srif32.lng. Формат файла см. в разделе " Форматы файлов".
Language - Язык, который будет использоваться для отображения всех сообщений, для лога и для письма-отчета. По умолчанию English.
LimitFileName - Имя файла, в котором будет сохраняться информация о суточных лимитах (см. ниже). Если отсутствует или равно пустой строке, то информация о суточных лимитах будет сохраняться в Srif32.ini.
ResponseDel - Префикс для выходного файла, который указывает мэйлеру, что файл следует удалить после отправки. По стандарту (и по умолчанию) '-'. Для т-майла '^', для Аргуса '-'.
ResponseStay - Префикс для выходного файла, который указывает мэйлеру, что файл после отправки не должен изменятся. По стандарту и по умолчанию '+'. Для т-майла - пустая строка, для Аргуса '+'.
LastReq - Поведение мэйлера на повторный запрос после обрыва сессии. При обрыве сессии удаленная сторона не уничтожает запрос, и, при следующем коннекте он еще раз попадает на обработку к менеджеру. Этот ключ указывает, что должен делать SRIF32, если получит два подряд одинаковых запроса в течение суток. Возможные значения:
NONE | Повторный запрос обрабатывается как обычно. Это значение по умолчанию. |
REPEAT | Повторный запрос будет обработан, но информация о нем не будет записана в лог-файл, а также не будут обновлены суточные лимиты. Применяется для мэйлеров, которые при обрыве сессии уничтожают холд от внешнего Srif-менеджера (н-р т-майл). |
IGNORE | Повторный запрос игнорируется. Применяется для мэйлеров, которые оставляют результаты работы freq-менеджера на холде (н-р аргус). |
LastReqTime - Время, в течение которого текущий запрос, если он идентичен предыдущему, будет считаться повторным.
Debug - Отладочный режим. Если равен 1, то при работе менеджера в каталоге TempDir будет создан каталог с именем типа:
r.n.p |
|
В этот каталог упадут копии файлов:
SRIF-файла | , с расширением SRIF |
Файла-запроса | , с расширением Req |
Файла-ответа | , с расширением Out |
Файла-отчета | , с расширением Mail. |
Файла текущих установок | , с расширением Ini. |
Имя у этих файлов формируется из текущей даты без года (сначала месяц, потом день) и текущего времени (без секунд).
При Debug=2 кроме вышеперечисленного, в лог будет писаться информация о текущем исполняемом модуле. Будьте осторожны - в лог будет добавленно очень много записей - размер лога будет расти в несколько раз быстрее, чем обычно.
Ключ введен для отлаживания программы и в нормальной работе менеджера не нужен.
StartDir - Начальный каталог, где хранятся файлы для фреков. Если содержит пробелы, то его следует заключить в кавычки. Если задан этот каталог, то поиск запрошенных файлов начинается с него. Просматриваются также все подкаталоги в этом каталоге. По умолчанию не определено.
DirFileName - Имя файла, со списком каталогов, где хранятся файлы для фреков. Если имя содержит пробелы, то его следует заключить в кавычки. Каталоги обходятся без подкаталогов. Кроме того, в этом же файле для каждого каталога можно указать пароль на доступ к каталогу и/или список адресов, для которых разрешен/запрещен доступ к каталогам. Если не задан, то не используется. Формат файла см. в разделе " Форматы файлов".
RecurDirFileName - Имя файла, со списком каталогов, где хранятся файлы для фреков. Если имя содержит пробелы, то его следует заключить в кавычки. Каталоги обходятся с подкаталогами! Кроме того, в этом же файле для каждого каталога можно указать пароль на доступ к каталогу и/или список адресов, для которых разрешен/запрещен доступ к каталогам. Внимание! Пароль задается только для верхнего каталога. Подкаталоги будут иметь те же права! Формат файла см. в разделе "Форматы файлов".
AliasFileName - Файл описания алиасов. Если имя содержит пробелы, то его следует заключить в кавычки. Для каждого алиаса в файле можно указать пароль и/или список адресов, для которых разрешена/запрещена обработка алиасов. Если не указан, алиасы не обрабатываются. Формат файла см. в разделе "Форматы файлов".
IndexFileName
- Файл-индекс. В этом файле перечисленны пути и файлы, физически находящиеся
на медленном носителе, поиск по которому может затянуться. Реально в процессе
обработки фряка будет производиться поиск в этом файле, и только в случае
успеха, с такого носителя будут считаны размер и описание файла.
Возможно задание файла, в котором содержаться имена файлов-индексов.
При этом следует перед именем файла поставить собачку "@".
Формат файла см. в разделе
"Форматы файлов".
Для того, чтобы можно было уфрякать хоть что ни будь, следует задать хотя бы один из ключей: StartDir, DirFileName, RecurDirFileName, AliasFileName или IndexFileName. Постарайтесь при задании этих переменных избежать дублирования каталогов: поиск производится в каждом заданном каталоге - если один и тот же каталог будет описан в нескольких переменных, поиск по нему будут проходить несколько раз. Это не приведет к дублированию файлов и несколько замедлит работу менеджера. В большинстве случаев вообще достаточно использовать только один из ключей StartDir, DirFileName, RecurDirFileName или IndexFileName.
ExcludeFiles - имя файла со списком файлов, которые не должны отдаваться по запросу. Например, можно поместить туда Files.BBS и другие служебные файлы, и тогда при запросе типа *.* они не отдадутся. Если имя файла содержит пробелы, то его следует заключить кавычки. Аналогично, заключаются в кавычки имена файлов с пробелами в самом ExcludeFiles. Формат файла см. в разделе "Форматы файлов".
DLC - DownLoadCounter. Если не равно пустой строке, то при обработке запросов будут обновляться DownLoadCounter в Files.bbs (или в OffLineDLC). Задайте вид Вашего каунтера, для его обновления. Например: [001]. Здесь '[' и ']' - префикс и суффикс. '001' задает длину поля для счетчика и, кроме того, начальное значение счетчика, который будет создан при отсутствии DLC в files.bbs. Можно задать любую размерность, а также любые префиксы/суффиксы (в том числе и вообще - отсутствие префикса/суффикса).
Если перед цифровым полем поставить '%', то размер счетчика будет динамическим, начиная от кол-ва символов числового поля. Н-р, при DLC=[%001] счетчиками будут считаться [001],[0001] и т.д. Кроме того, будет производится автоинкремент разрядности в случае перехода "через ноль": т.е. [999] изменится на [1000].
По умолчанию DLC='', т.е. каунтеры не обновляются.
OffLineDLC Имя файла, в котором будут храниться Счетчики скачиваний (DLC) для _всех_ файлов. По умолчанию - счетчики обновляются в файлах files.bbs, в тех же каталогах, где лежат сами файлы. OffLineDLC можно использовать при наличии readOnly базы (например, если база на сидюке или в сети).
LongFileOutput - Если Ваш мэйлер не понимает длинных имен - установите этот параметр равным 0, тогда выходной файл будет содержать короткие имена файлов. По умолчанию = 1.
LongDescChar опpеделяет, какой cимвол иcпользуется для распознавания длинного комментаpия. По умолчанию - пустая строка. Кроме указанного символа, (и независимо от его установки), как начало длинного коментария используется пробел.
OEMOutput
- Если Вы используете досовый мэйлер, установите этот параметр равным 1.
Выходной файл будет имена файлов в кодировке DOS. По умолчанию =0.
Примечание: Прочтите "По поводу русских имен"
перед тем, как решиться использовать русские имена!
Cron - Разрешенное время для фряков. Можно задавать как в виде кронов (как в аргусе), так и в виде временных интервалов (как в т-майле). Например, чтобы разрешить фряки с 19:00 до 7:00 в будни, и круглосуточно - по выходным:
Cron="* 19-23,0-6 * * *; * 7-18 * * 6,7" или Cron="1.19:00-7.07:00, 6.7:00-7.19:00"Несколько кронов разделяются точкой-с-запятой. Интервалы можно разделять как точкой-с-запятой, так и просто запятой.
Speed - Минимальная скорость, при которой разрешены фряки. Если не определена, то лимиты по скорости не проверяются.
Koef - Коэффициент для подсчета CPS при вычислении лимита времени, в % ( см. ниже). Для нормальной линии равен 91%. Зависит от протокола и качества связи. Для HST обычно = 93%. Если плохая линия - уменьшите. Если не указан, равен 91.
Time - Максимальное время для фрякания, в мин. Время учитывается при определении максимального объема при данной скорости подключения. При этом средний CPS считаем как:
CPS=(Speed/8)*(Koef/100)Если не определено или =0, то лимиты по времени не проверяются.
Files - Максимальное количество файлов для фрякания. Если не определено или =0, то лимиты на количество файлов не проверяется.
Size - Максимальный размер фряка за один сеанс, в Кб. Если не указан или равен 0, то лимиты по размеру не проверяются.
DaySize - Дневной лимит, в кб. Кол-во, которое может быть уфрекано в течение суток. Если не указанно или равно 0, то проверка дневного лимита не производится.
DayCount - Дневной лимит на количество файлов. Если не указанно или равно 0, то проверка дневного лимита не производится.
OneFile Список лимитов. Если юзером будет запрошен только один файл, то будет проведена повторная проверка только указанных лимитов. Список лимитов см. Список лимитов. Если не задано - повторная проверка лимитов для одиночного файла не проводится.
Name - Имя, от которого будут отправляться письма-отчеты (поле "From:"). Длина - не более 35 символов (если больше - будет обрезано). По умолчанию - пустая строка.
Subj - Поле "Subj:" в письме-отчете. Длина - не более 71 символа (если больше - будет обрезано). По умолчанию - пустая строка.
Origin - Ориджин для письма-отчета. По умолчанию - пустая строка.
OurAKA - Адрес в поле From: для письма-отчета. Если отсутствует или равно пустой строке, то берется из SRIF-файла. Если же и там его не окажется, то будет приравнено "0:0/0.0".
BlackList - имя файла ЧерногоСписка. Формат файла см. "Форматы файлов".
BlackNote - имя файла, который будет вставлен в файл-отчет для систем, находящихся в ЧерномСписке.
AutoBlackList - Список лимитов, при невыполнении которых адрес системы (основной) будет занесен в ЧерныйСписок. Список лимитов см в Список лимитов
Note - Имя файла-шаблона для файл-отчета. В нем, например, можно указать разрешенное время для фряков, вставить баннер итд. Формат файла см. "Форматы файлов".
Формат файла - обычный текст в кодировке DOS. Кроме того, допускается использование специальных переменных (подробнее см описание переменных в формате языкового файла). Если Note='', то файл-отчет не создается. По умолчанию = пустая строка.PktPass
- Пароль для письма-отчета. Возможно указание внешнего файла с
паролями, например: PktPass=@c:\fido\t-mail\password.lst
Формат файла полностью соответствует аналогичному файлу в t-mail (о
формате файла см. в разделе
"Форматы файлов".
При PktPass=@SrifPassword пароль для ПКТ-шника будет браться из
srif-файла (см. srif-файл.
Кроме вышеописанных ключей создаются служебные ключи: Day, TodayCount и TodaySize. После обработки запроса менеджер обновляет текущие установки суточных лимитов для конкретного адреса. Для этого он создает в файле LimitFileName секцию с адресом системы и записывает в нее эти три ключа. Day означает день последнего фрякания данным узлом. TodayCount и TodaySize - количество и объем, в Кб, уфряканного в этот день.
Ниже описаны форматы применяемых файлов. Если в этих файлах Вы применяете имена с русскими символами, то они должны быть в ДОС-кодировке.
Большинство операций менеджера отражается в лог-файле. Каждая запись в логе имеет формат:
Флаг_записи Дата Время Сообщение.
Флаг - единичный символ, определяющий тип сообщения:
[ | Hачало сессии |
] | Конец сессии |
~ | Информация |
! | Критическая ошибка |
* | Некритическая ошибка |
. | Переданные файлы |
| | Ограничения, лимиты |
d | Тестовая информация |
b | Работа с Черным списком |
Начало сессии отделяется от предыдущей записи пустой строкой.
Ведет хронологию результатов фряка в формате NCSA. Каждая строка имеет
формат:
2:5013/1.9 - "Rodion Sagdeev" [01/Aug/1999:00:11:04]
"PUT d:\filebase\base\spc_lst.txt" 0 512
Здесь все в общем то понятно. Последнее число - размер файла в байтах.
Предпоследнее - еррорлевел. Можете присобачить какой либо стандартный
лог-анализатор для NSCA-логов.
Содержит несколько секций (каждая секция по названию языка) в которых определены стринги для интерфейса. Название секции служит названием языка для ключа Language в INI-файле. Первая буква ключа в языковом файле определяет "принадлежность" сообщения:
Описание ключей языкового файла можно найти в самом файле :-). Если какой либо ключ задать как пустую строку, то эта строка не появится в логе (файле-отчете и/или на экране).
В ключевых строках можно использовать переменные. Переменные
должны заключаться в %%. Если требуется форматирование вывода переменной, то
следует внутри %% оставить пробелы. При этом под переменную будет выделено
столько знакомест, сколько занимает само имя переменной (включая %%) и, кроме
того, будет произведено выравнивание к тому краю, к которому прижато имя
переменной. Если пробелы внутри %% будут с двух сторон от переменной, то
значение переменной будет отцентрировано. Например, строка
Ваши лимиты на сегодня % DaySize% кб
будет выглядеть как
Ваши лимиты на сегодня 1240 кб
А строка
Ваши лимиты на сегодня %DaySize % кб
выглядит как
Ваши лимиты на сегодня 1240 кб
А еще
Ваши лимиты на сегодня % DaySize % кб
выглядит как
Ваши лимиты на сегодня 1240 кб
Ну и строка
Ваши лимиты на сегодня %DaySize% кб
как
Ваши лимиты на сегодня 1240 кб
Если значение переменной окажется длиннее, чем выделенное поле, то
форматирования не произойдет.
Для переменной %fDiz% правила выравнивания действуют по другому: Позиция
fDiz в строке означает начало комментария. Если предыдущая строка длиннее,
чем эта позиции, комментарий перенесется на следующую строчку (с этой же
позиции). Если комментарий многострочный, то оставшиеся строчки будут
записаны с этой же позиции. Пример:
Получи %fdir%%fName% размерчик (fSize) % fDiz%
Получится что-то типа:
Получи c:\command.com размерчик (95192) Мой любимый
командный процессор
или так:
Получи c:\Windows\Command\command.com размерчик (95192)
Мой любимый
командный процессор
Ниже приведены переменные и их значения (в скобках даны короткие синонимы для некоторых переменных):
#n | Символ с кодом n в ANSI-кодировке (виндусовой). Если n>256, будет взят младший байт |
ADR | Строка адреса при ошибке его распознания |
AKA | Адрес удаленной системы |
ALIASFILENAME | Имя файла алиасов AliasFileName |
BAUD | Скорость текущего соединения |
BLACKLIST | Имя файла ЧерногоСписка |
CRON | Разрешенное время фряка для текущего соединения |
CCRON | Разрешенное время фряка для текущего ресурса |
DATE | Текущая дата. Формат времени соответствует установленному в настройках Windows |
DAYCOUNT (DC) | Дневной лимит по количеству файлов |
DAYSIZE (DS) | Дневной лимит по размеру |
DIRFILENAME | Имя файла каталогов DirFileName |
DIZFILENAME | Файл-описание files.bbs с путем |
EXCLUDEFILENAME | Имя файла со списком исключаемых файлов ExcludeFileName |
FDIR | Путь до текущего файла. Каталог оканчивается на "\" |
FDIZ | Описание текущего файла. В описание не будут включены DownLoad Counter-ы |
FILES (F) | Лимит по количеству файлов для текущего фрякающего |
FNAME | Текущее имя файла без пути |
FREQTIME (T) | Лимит по времени для текущего фрякающего |
FSIZE | Размер текущего файла |
INDEXFILENAME | Имя файла индексов IndexFileName |
INIFILENAME | Имя INI-файла |
LANGFILE | Имя языкового файла |
LDATE | Дата до которой укорочен лог-файл |
LDСHAR | Символ начала длинного коментария |
LIMITFILENAME | Имя файла лимитов |
MONTHNUM (MN) | То же, что и TodayNum, но за месяц |
MONTHSIZE (MS) | То же, что и TodaySize, но за месяц |
MCOUNT (MC) | То же, что и DayCount, но за месяц |
MSIZE (MZ) | То же, что и DaySize, но за месяц |
NOTE | Имя Note-файла |
OURAKA | Наше АКА для текущей сессии |
PASS | Пароль на текущий ресурс |
PTIME | Планируемое время на передачу файлов. Значение будет валидным только после постановки всех файлов в очередь, т.е. использовать в отчете нужно после @begin...@end. |
RECURDIRFILENAME | Имя файла рекурсивных каталогов RecurDirFileName |
REQUESTLIST | Имя файла со списком запрашиваемых файлов |
RESPONSELIST | Выходной файл |
RSTATUS | Protected/unprotected текущая сессия |
SFDIZ | Короткое описание файла (первая строчка из files.bbs) |
SIZE | Лимит по объему для текущего фрякающего |
SPEED | Лимит по скорости для текущего фрякающего |
SRIF | Имя SRIF-файла (того, который передается параметром) |
SSTATUS | Listet/Unlisted удаленная система |
SYSOP | Имя сисопа удаленной системы |
TEMPDIR | Служебный каталог для временных файлов |
TIME | Текущее время. Формат времени соответствует установленному в настройках Windows |
TODAYNUM (TN) | Количество уже уфряканного за сегодня |
TODAYSIZE (TS) | Объем уже уфряканного за сегодня |
TOTALNUM (N) | Общее количество уфряканных файлов за текущий сеанс |
TOTALSIZE (S) | Общий размер уфряканного за текущий сеанс |
WORD | Пароль на доступ к ресурсу, полученный от удаленной стороны |
WORKDIR | Рабочий каталог программы |
WEEKNUM (WN) | То же, что и TodayNum, но за неделю |
WEEKSIZE (WS) | То же, что и TodaySize, но за неделю |
WCOUNT (WC) | То же, что и DayCount, но за неделю |
WSIZE (WZ) | То же, что и DaySize, но за неделю |
Кроме вышеуказанных есть специальные переменные для содержимого srif-файла. Эти переменные начинаются с символа $ и имени параметра из srif-файла. Например, для файла, приведенного в разделе описания SRIF-файла будут созданы следующие переменные:
$Sysop $AKA0 $AKA1 $Baud $Time $RequestList $ResponseList $RemoteStatus $SystemStatus $SessionProtocol $Site $Location $Phone $DTE $PORT $Mailer $MailerCode $SerialNumber $Version $SessionType $OurAKA0 $TRANX $PasswordКроме того, будут созданы дополнительные переменные:
$NAKA - колличество АКА-шек у ремоты. $NOURAKA - колличество акашек OurAKA. $NSTATUS - статус системы в цифровом формате (1-протектед 2-анпротектед 3-анлистед).Диапазоны изменения n для $AKAn и $OurAKAn от 0 до $NAKA-1 и $NOurAKA-1 соответственно.
Перед использованием этих переменных убедитесь, что ваш мэйлер передает их в srif-файле! Т.к. даже для одного мэйлера в разные сеансы возможно различное его содержимое. При отсутствии в srif-файле соответствующей строки значение переменной будет пустой строкой.
Старайтесь использовать переменные "по месту". Например, не стоит во фразе "Лог-файл укорочен" использовать %FDiz%. Скорее всего ничего путного не получится.
Каждая строка файла содержит путь, по которому будут искаться запрошенные файлы. Просмотр вложенных каталогов не производится. Если в имени пути встречаются пробелы, то его следует заключить в кавычки.
На этой же строчке можно указать пароль для доступа к этому каталогу и/или
список адресов, имеющих доступ к каталогу, а также флаги и время, в которое
доступны фряки из этого каталога (см " Методы
разделения доступа"). Например:
c:\windows !LAMER 2:5013/1.* /5.0 !.9 #"All !Log" [* * * * *]
c:\windows\system 2:5013/*.* (* * * * 6-7)
"c:\Program Files" !Rulez #Baud
"c:\Program Files\Far"
Каждая строка файла содержит путь, по которому будут искаться запрошенные файлы. В отличие от предыдущего параметра каталоги, указанные в этом файле обходятся вместе с подкаталогами! Формат файла полностью аналогичен DirFileName. Следует учитывать, что управление доступом будет только для описанных каталогов. Все вложенные каталоги будут иметь те же права.
Строка файла состоит из алиаса и имени файла (с путем), сопоставляемое этому алиасу. Возможно указание модификатора и маски при указании имени файла. Модификатор определяет, какой из подходящих под маску файлов будет присвоен алиасу. Модификатор заключается в круглые скобки и может принимать значения:
OLDEST | самый старый из файлов, подходящих под маску |
LATEST | файл, имеющий наибольшую дату создания |
SMALLEST | самый маленький из файлов, подходящих под маску |
LAGEST | самый большой из файлов, подходящих под маску |
Существует специальное "магическое" расширение для описания алиаса. Если алиасу сопоставляется файл с расширением ".999", то будет выбран файл, у которого расширение состоит только из цифр, а дата создания - самая большая. Если при описании такого алиаса используется модификатор, то он игнорируется.
Для ограничения доступа к алиасу может добавляться пароль и/или список адресов, имеющих доступ к алиасу, а также флаги и время, в которое доступны фряки этого алиаса (см " Методы разделения доступа").
Если имя файла содержит пробелы, то его следует заключить в кавычки. Сам алиас не должен содержать пробелов.
Алиасу можно сопоставить список файлов. Такой список хранится в отдельном файле и подставляется в алиас через префикс "@". Если имя файла-списка содержит пробелы, то его следует заключить в кавычки вместе с префиксом "@" (например "@c:\program files\far\descript.ion").
При проверке алиаса регистр букв игнорируется.
Вот примеры правильных определений алиасов:
Dif (Latest) d:\fido\nodelist\nodediff.* #"Baud Log"
List d:\filebase\List.rar #"Baud Log" [00:00-23:59]
News @d:\filebase\news.txt 2:5013/*.* #"Baud Log"
Nodelist d:\fido\nodelist\nodelist.999 #"Baud" (* * * * *)
Private "d:\private dir\list.txt" !Private 2:5013\1.*
Rulez "@d:\private dir\rulez.lst" !Rulez
Файл содержит список путей и имен файлов. Пути начинаются с первой позиции в строке. Если строка начинается с пробела, то она считается именем файла. В строке с путями можно задать пароль и список доступа (как в DirFileName). Если для создания индексов использовать Srif32Index.exe с параметром @имя_файла (формат такого файла аналогичен DirFileName и RecurDirFileName), то пароли, списки адресов, флаги и интервалы времени будут перенесены из него.
Файл содержит просто список имен файлов (без путей), по одному на каждой строчке. Если имя файла содержит пробелы, то его следует заключить в кавычки. Допускаются маски.
Во время работы менеджера будет создан файл-отчет для фрекающей стороны. Это обычный pkt-файл, создается в рабочем каталоге менеджера c уникальным именем и расширением PKT. Письмо формируется по шаблону из файла Note. Если Note='', то файл-отчет не создается. Строчка, содержащая переменную %FName% будет повторена для всех найденных файлов, а в случае, если файл не прошел по лимитам и пр. - заменена на соответствующую строку из языкоаого файла.
Для того, чтобы этот файл был отправлен фрякающему, ссылка на него помещается в ResponseList. После отправки файл будет удален мэйлером.
Файл паролей для письма-отчета
Формат файла полностью соответствует аналогичному файлу в t-mail.
Пример
2:5013/1.9 Пароль,Пароль_на_ПКТ,Пароль
2:5013/1.10 ,Пароль_на_ПКТ,Пароль
2:5013/1.11 ,Пароль_на_ПКТ
2:5013/1.12 Пароль,,Пароль
Для пакетов используется второй пароль из списка. В примере у 1.12
пароль на пакеты отсутствует..
Это обычный текстовый файл. В нем можно применять переменные. Если строка содержит служебное слово @begin, то строки после этой и до строчки со служебным словом @end будут повторяться для каждого найденого файла. Сами строки со служебными словами не будут включены в отчет.
Строка, содержащая FName, при необходимости (не найден файл, ограниченные лимиты итп), будет заменяться на соответствующие строки из языкового файла.
В этот файл заносятся нежелательные линки. Возможно занесение как адресов, так и имен сисопов. Имена сисопов прописываются по одному на каждой строчке, а для адресов допустимы маски и логическое Not (см.Список адресов). Пример:
Vasya Pupkin !2:*/*.* 77:*/*.* 2:8888/*.* KrYt0j H/\цker
Для управления доступом служат системы паролей, списки адресов, флаги лимитов и интервалы времени.
Для управления доступом по паролям следует в строке описания ресурса записать пароль, который должен будет указать фрякающий для доступа к этому ресурсу.
Пароль отделяется от ресурса пробелом и символом "!". Сам "!" не является частью пароля и, между ним и паролем не должно быть пробелов. В пароле допускаются любые символы, кроме пробела. Желательно также не использовать русских букв (см раздел "По поводу русских имен"). Пароль является чувствительным к регистру букв.
Вот примеры описания ресурсов с применением паролей:
Files d:\filebase\spc_star.lst !password List d:\Filebase\Base\Filelist\Star.rar !Free
c:\windows !Yes c:\tools !Private
В списке адресов допускаются:
2:5013/1.0 2:5013/1.9
2:5013/1 2:5013/1.9
2:5013/1.* 2:5013/*.0
All !2:5013/1.999
.9 /*.0Внимание: будьте осторожны при использовании части адреса, т.к. OurAKA может принимать различные значения для разных систем.
Вот примеры правильного описания ресурсов с применением списка адресов и/или паролей:
Files d:\filebase\spc_star.lst !password All !2:5013/1.999 List d:\Filebase\Base\Filelist\Star.rar All !2:5013/1.*
c:\windows !Yes /1.* !/1.999 c:\tools 2:5013/*.*
Log - Записывать в AccessLog данные о сессии. Если не записать информацию в accesslog, то ее не будет в статистике. Не используется в автоблэклисте. Limit - Обновлять информацию о суточных лимитах. Если не задано, то суточные лимиты не обновляются. Не используется в автоблэклисте. Baud - Ограничение по скорости Time - Время фряка Files - Кол-во файлов в текущем фряке Size - Размер текущего фряка DayCount - Дневной лимит по количеству DaySize - Дневной лимит по размеру WeekCount - Hедельный лимит по количеству WeekSize - Hедельный лимит по размеру MonthCount - Месячный лимит по количеству MonthSize - Месячный лимит по размеру Cron - Кроны Password - Пароль на файл. Используется только для автоблэклиста. Если указан, то в блэклист система попадет при фряке с неверным паролем. Пустой пароль не считается (при запросе парольного файла без пароля система в Черный список не попадет). All - Все вышеперечисленное.
По умолчанию (при пустом списке лимитов) учитываются все лимиты (All). В описании ресурсов списки лимитов пишутся с префиксом # Если лимитов несколько, то их следует заключить в кавычки (префикс оставить перед кавычками). Например:
Files d:\filebase\spc_star.lst !password #"Baud Log" List d:\Filebase\Base\Filelist\Star.rar 2:5013/1.* #"Baud Log"
c:\windows !Yes #"Baud Log" c:\tools #"Baud Log Time"
Допустима инверсия (с помощью префикса "!"). Порядок проверки аналогичен списку адресов.
Кроны можно определять в виде, собственно, кронов (как в аргусе) или в виде интервалов времени (как в т-майле). Кратко о каждом формате:
Минуты Часы Дни Месяцы ДниНедели Диапазоны значений: Минуты 0-59 Часы 0-23 Дни 1-31 Месяцы 1-12 ДниНедели 1-7 (1-понедельник ... 7-воскресенье)Можно использовать список значений, разделенных запятыми (например 1,3,7), или записывать диапазон через "черточку" (например 1-5). '*' означает все возможные значения. Конструкция вида 1-10/2 означает каждый второй час в интервале от 1 до 10. Несколько кронов разделяются точкой-с-запятой.
ДеньНедели.Часы:Минуты-ДеньНедели.Часы:Минуты ^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^ Начало интервала Окончание интервалаДеньНедели можно опустить (вместе с точкой). Допустимы только корректные числовые значения (диапазоны - как у кронов, только в дне недели допускается 0 (воскресенье)). Несколько интервалов разделяются запятой или точкой-с-запятой.
Вот несколько примеров:
Files d:\filebase\spc_star.lst #"Baud Log" (* * * * *) List d:\Filebase\Base\Filelist\Star.rar [7.0:00-23:59, 1.19:00-6.6:00]
c:\windows !Yes [* * * * 1-5] c:\tools #"Baud Log Time" (* 19-5 * * 1-5; * * * * 6,7)
Если узел или сисоп окажется в черном списке, то на его запрос ему будет отослан файл BlackNote.
8. Порядок построения запросов
При построении запроса нет необходимости учитывать какие либо особенности
работы SRIF-менеджера. Главное, чтобы файл запроса содержал имена
запрашиваемых файлов по одному на каждой строчке. Если имена запрашиваемых
файлов содержат пробелы, то их следует заключить в кавычки. Например:
rar250.exe
"rar 250 for DOS.exe"
Допустимы маски, как в ДОСе. Кроме масок, допустимы подстановки путей:
rar*.*
archivators\*.*
archivators\rar\*.*
rar\*.*
Пути при поиске будут добавляться к каталогам, в которых производится поиск (описанным в DirFileName, StartDir, RecurDirFileName). Поэтому, права на доступ будут проверяться не для указанного в запросе каталога, а для того, который подставится из этих списков!
Подстановка путей позволяет указать конкретный файл, если в базе находится несколько файлов с одинаковыми именами, или, запросить всю директорию одной маской *.*.
При необходимости на строке с запрашиваемым файлом можно указать пароль.
Пароль отделяется от запрашиваемого файла пробелом и начинается с символа
"!". Пример:
rar250.exe !arc
*.mp3 !music
При запросе UpdatedRequest, вместе с именем файла
передается дата-время его создания. Запрос будет удовлетворен только, если
найденный файл будет моложе. При таких запросах подставляемый путь является
местом расположения файла на запрашивающей системе, поэтому при обработке
запроса он не учитывается. Дата-время файла передаются в виде количества
секунд, прошедших с 1970-го года до момента создания файла. Выглядит это
так:
c:\fido\filelist.txt +929577600
Знак "+" является признаком UpdatedRequest. При необходимости, после
даты-времени может следовать пароль:
c:\fido\filelist.txt +929577600 !Password
И еще. Если Вы (ни дай бог) решились использовать файлы с русскими именами, то учтите, что запрос таких файлов должен производиться в ДОС-кодировке!
В связи с наличием как минимум двух разных кодировок русского алфавита, а также, наличием программ использующих обе эти кодировки, работа менеджера с русскими именами файлов несколько нежелательна. При обработке запроса файлы с русскими именами должны в нем (в запросе) находиться в ДОС-кодировке. Кодировка ответа задается ключиком OemOutput. Однако, очень Вас прошу:
НЕ ИСПОЛЬЗУЙТЕ РУССКИХ ИМЕН!
Не, в принципе - фряки с русскими именами даже работают. Вы даже ни чего не заметите, до тех пор, пока у фрякающего будет такой-же мэйлер. Проблемы начнутся (не у Вас, а у фрякающего) при связке типа аргус-тмайл. В этом случае, один из мэйлеров будет слать имя файла в виндовой кодировке, а другой принимать его в досовой. В результате в инбаунде у фрякающего появится файл-кракозямба. Удалить его можно будет разве что дискедитом или используя команду del *.*.
Для тех, кто не понял (а такие встречаются) объясняю еще раз:
Один из мэйлеров (например аргус) берет найденый srif-ом файл в своей
кодировке (Win). При отправке имя файла (а затем и файл :-) передается
модему. Модем, это такая штука, которая ничего не знает о кодировках,
файлах и прочей бредятине. Он передает полученные символы (а эти из этих
символов состоит имя нашего файла - если его читать в вин-кодировке)
другому модему. Другой модем передает принятую последовательность
принимающему мэйлеру. Так вот, если этот мэйлер сможет правильно
сопоставить принятую последовательность байт имени файла (например,
если принимающий мэйлер тоже будет аргусом), то все в порядке. А если не
сумеет (например, если принимающий мэйлер т-майл), то принятая
последовательность окажется чем угодно, только не именем файла :-).
Если я вас еще не убедил - с этим в клинику (или куда угодно, только не ко мне :-(
Для построения индексов можно использовать прилагаемую приблуду Srif32Index.
Укажите ей начальный каталог и выходной файл.
Вместо начального каталога можно задать имя файла со списком каталогов.
Формат такого файла совпадает с форматом DirFileName
и RecurDirFileName.
Srif32Index.exe <StartDir|@DirFile> OutFile
Если задан ключ -r, то начальный каталог будет индексирован вместе с
подкаталогами (по умолчанию). Если -n, то без них.
Ключ -l строит индекс с длинными именами файлов (по умолчанию), а
-s - с короткими.
Если в DirFile для каталогов заданы пароли, списки адресов
доступа, списки лимитов или кроны, то они перейдут в создавшийся индексный
файл.
11. Обработка повторного запроса
Если во время передачи файлов произойдет обрыв сессии, то запрос на
удаленной стороне (у фрякающего) не будет удален (по крайней мере - у
известных мне мэйлеров). В результате, при следующем сеансе связи он будет
послан еще раз, и еще раз обработается. Дальше - все зависит от Вашего
мэйлера.
Аргус после получения ответа от внешнего srif-менеджера вешает
найденные файлы на холд. В результате, при повторном запросе, если
какие из файлов уже были отправлены, они холдятся еще раз.
Т-майл после обрыва сессии удаляет из очереди все файлы, полученные от
внешнего srif-менеджера. Повторный запрос начнет отправку файлов еще
раз.
В обоих случаях, при обработке повторного запроса будут "засорятся"
логи и "тратится" дневные лимиты. Чтобы как то облегчить эту участь,
можно использовать ключ LastReq. Он позволяет
задать реакцию менеджера на повторный запрос. Повторным считается
запрос, если он идентичен предыдущему и пришел не позднее, чем через
время, указанное в LastReqTime (в часах). Для
проверки на "идентичность" предыдущий запрос сохраняется в
TempDir. в виде файла Zone_Region_Node_Piont.Req.
Если запрос будет опознан как "повторный", то в зависимости от значения
LastReq будет сделано:
NONE | Ничего. Т.е. менеджер отработает запрос как обычно. |
IGNORE | Повторный запрос будет проигнорирован. Менеджер сразу закончит свою работу. Применяйте, если ваш мэйлер холдит результаты запроса (аргус) Действительно: зачем обрабатывать запрос повторно, если найденный файлы уже висят на холде. |
REPEAT | Менеджер отработает запрос как обычно, но при этом запись отправленных файлов в лог не ведется и дневные лимиты не уменьшаются. Используйте совместно с мэйлером, который удаляет результаты предыдущего запроса (т-майл). |
Небольшая утилька позволяет просканировать файл-хронологию SRIF32 и создать файл статистики SRIFStat.tmp. При запуске STRIFStat можно указать числовой параметр - на сколько суток назад просматривать лог-файл. Просмотр ведется от текущего времени. Если параметр не задан - то просматривается весь файл-хронология. Если вместо числа первым параметром указать "L", то просмотр будет осуществлятся начиная от даты, указанной в LastStat (см srifstat.ini) и до текущего момента. По окончании просмотра LastStat примет значение из последней обработаной строчки.
Кроме этого можно передать в качестве параметра любой ключ из srifstat.ini. Например, запуская
SrifStat.exe L Template=SrifStat.emlпосле каждого запуска srif32.exe будем получать srifstat.tmp с результатами последнего фряка, отформатироваными в соответствии с темплетом SrifStat.eml. Можно сразу отправлять этот файл себе на мыло - тогда Вы будете в курсе всех текущих фряков.
Местоположение файла-хронологии указывается в srifstat.ini, или определяется из SRIF32.ini (в этом случае SrifStat должен валяться в том же каталоге, где и SRIF32.ini)
В инишнике же можно указать список адресов (см Список адресов) которые не будут фигурировать в отчете.
Еще в инишнике нужно задать (если srifstat находится не в том же каталоге, где и srif32.ini) DLC и LongDescChar - для того, чтобы правильно отрабатывались переменные описания файлов.
Формат выходного файла определяется темплетом SrifStat.tpl. В нем можно применять следующие переменные:
AKA - Адрес системы SYSOP - Имя сисопа BDATE - Дата начала статистики EDATE - Дата конца статистики BTIME - Время начала статистики ETIME - Время конца статистики FDIR - Каталог, из которого был фрек FNAME - Имя файла FDIZ - Описание файла (правила выравнивания аналогичны fdiz для файл-отчета SFDIZ - Короткое описание файла FSIZE - Размер файла, байт DATE - Дата фряка TIME - Время фряка TOTALSIZE - Общий размер для данного АКА, кб TOTALNUM - Общее количество для данного АКА GRANDTOTALSIZE - Общий размер для всего периода, кб GRANDTOTALNUM - Общее количество для всего периода #n - символ с кодом n в СР1251. Если n>256, будет взят младший байтВсе это обворачивается в @begin_user ... @end_user (для перебора всех АКА), внутри которых цикл для перебора файлов - @begin_files ... @end_files
Этот тулз предназначен для наглядного конфигурирования srif32. Просто запустите его из того-же каталога, где лежит srif32.ini. Теоретически - там все понятно :-). Скажу только, что серым цветом выделяются значения, которые наследованы или их значение остается "по умолчанию". Если же поле белое - значит его значение вы задали явно! (даже если это значение "пустая строка")
На srif.chat.ru, если только таковые появятся :-)
Лично со мной можно связаться по адресу 2:5013/1.9 или rsagdeev@chat.ru. Лучше использовать фидошный адрес - часто это оперативнее и надежнее
Пожалуйста, если уж дошло до того, что Вы решились написать мне, не поленитесь, укажите версию srif32, которую Вы используете. Желательно также указать тип мэйлера и операционки. Попробуйте использовать ключ Debug, возможно Вы сможете решить свою проблему сами
В общем, ежели вспомню еще чего - напишу.
RS, (c) 1999,2000 |