Ограничения и требования при обработке файловых
запросов
Список каталогов для файловых запросов
Транзитные и дистанционные файловые запросы
Уведомления при файловых запросах
Индексирование файловых областей
В том случае, если одному
узлу необходимо получить некоторый файл (или несколько), который есть в одной
из файловых областей другого узла, то одним из вариантов для осуществления
этого является отправление файлового запроса (File request, Freq).
T-Mail
поддерживает файловые запросы типа WaZOO. Это означает, что при приеме .REQ-файла формируется
список файлов, которые отсылаются в конце сеанса связи. (.REQ-файл представляет
собой простой текстовый файл с перечнем запрашиваемых файлов).
При упаковке писем в
почтовые пакеты, если встречаются письма (.msg), на которых установлен атрибут Freq или UpdFreq, формируется .REQ-файл, который
пересылается во время сеанса связи. При этом письма с одновременно
установленными атрибутами Freq (UpdFreq) и Hold не будет считаться письмом, содержащим файловый
запрос.
Письмо с файловым
запросом можно сформировать прямо из T-Mail с помощью клавишей Alt-R. При этом нужно указать имя запрашиваемого файла
и адрес(а) систем, у которых запрашивается файл. Для парольного файлового
запроса можно указать еще и пароль (после имени файла, с разделителем
"!" или "|", по аналогии с заданием пароля в письме, см.
ниже). Если для указанной системы телефон не известен (не указан в нодлистах и subst.lst), письмо сформировано
не будет. Если имя запрашиваемого файла начинается с символа "!", то
он он должен быть указан первым.
Могут использоваться
также так называемые Update Request - файловые запросы новых файлов. В случае такого
запроса запрашиваемый файл будет принят только в том случае, если на
принимающей системе такого файла нет, или есть, но с более старой
датой/временем создания.═
При файловом запросе
можно задать полное имя файла (с указанием пути), в этом случае:
Традиционно существует
масса возможностей для ограничения обработки файловых запросов - по времени,
размеру, числу одновременно запрашиваемых файлов и т.п. Рассмотрим их (переменные
из файла t-mail.ctl).
Запросы удовлетворяются в
периоды времени, определяемые переменной Freq_Time.
Максимальное число
файлов, которые могут быть переданы во время одного сеанса связи в ответ на
файловый запрос, определяется переменной Freq_Number. Суммарный размер в килобайтах ограничивается
значением переменной Freq_Size.
Максимальное время в
минутах, которое может уйти на пересылку файлов в ответ на файловый запрос во
время одного сеанса связи, определяется переменной Freq_MaxTime.
Минимальная скорость
соединения (connection baudrate), при которой удовлетворяются файловые запросы,
определяется переменной Freq_MinBaud.
Лимиты на файловые
запросы в килобайтах для разных интервалов времени для каждой системы задают
следующие переменные:
Freq_Day_Lim══ ═<daily limit>══ ══════; в день
Freq_Week_Lim══ <week limit>══ ═══; за последние 7 дней
Freq_Month_Lim═ <month limit>══ ; за последние 30 дней
Значения по умолчанию - 0
(ограничение отсутствует). Пропущенные файлы (skipped) не засчитываются, файлы, переданные не до конца,
засчитываются частично.
Накопленные
статистические данные, которые описаны переменными Freq_Day_Lim, Freq_Week_Lim, Freq_Month_Lim в файле t-mail.ctl, хранятся в специальном файле freqlim.bin. Этот файл находится в
каталоге, из которого был запущен T-Mail, а если определена переменная Sys_Path (t-mail.ctl) - то в каталоге, заданном этой переменной. Для
просмотра и сброса этих данных используется утилита FREQLIM.EXE, входящая в комплект поставки T-Mail.
Синтаксис:
FreqLim [-F<filename>] <addr group> [CLEAR]
Утилита ищет файл freqlim.bin в текущем каталоге. С
помощью ключа -F может быть задано полное имя <filename> файла freqlim.bin, если он находится в другом каталоге. Если опция CLEAR не задана, то
утилита показывает текущие суммарные значения размеров файлов, отправленных в
ответ на файловые запросы, для адресов, указанных в <addr group>. В случае
задания опции CLEAR, программа очищает файл freqlim.bin от записей, соответствующих адресам в <addr group>, все значения
сбрасываются. При использовании группы адресов символ "*" должен
целиком заменять один элемент адреса.
T-Mail
предоставляет возможность определить адреса и/или группы адресов, файловые
запросы от которых подлежат обработке. Запросы от других систем в этом случае
будут проигнорированы.
Переменная Freq_Nodes (t-mail.ctl) задает список адресов систем, которым разрешены
файловые запросы.
Freq_Nodes═══ <address list>
Список каталогов, файлы в
которых доступны для запросов, содержится в текстовом файле, который
определяется переменной Freq_Dir:
Freq_Dir═══════════════════════ dir.frq
(если путь не определен,
то файл ищется в системном каталоге T-Mail).
Этот файл содержит
строки, каждая из которых определяет каталог. Кроме этого, для каждого каталога
может быть задан пароль и/или список адресов систем, которые имеют право
запрашивать файлы из этих каталогов. Число каталогов, которые можно определить,
неограничено. Кроме того, в файле dir.frq можно задавать индексные файлы (см. раздел
"Индексирование файловых областей" ниже в этой главе).
Синтаксис:
<path> [|<password>] [<address list>]
или
<index list> [|<password>] [<address
list>]
Пример (файл dir.frq):
c:\files\info
c:\files\area3 5030/*.* !5030/4 5020/* 5000/*.*
c:\files\area4 |
password_of_4 5030/*.* !5030/4 5020/*
5000/*.*
В первом случае просто
определен каталог, во втором - каталог и список адресов, в третьем - еще и
пароль для запросов из этого каталога.
Если задан пароль для
каталога, то запрос файла должен быть оформлен несколько иначе - например, для
файла labuda.ext из каталога area4 запрашивается
"файл" с именем 'labuda.ext !password_of_4'. Только в этом случае файл будет передан. Вместо
символа '!' можно использовать символ '|', но в этом случае на удаленной
системе должен быть установлен T-Mail, другие мэйлеры могут не обрабатывать═ такой синтаксис. Общий синтаксис поля Subj в заголовке письма
при этом допускает три варианта:
FILENAME.EXT !PASSWORD
FILENAME.EXT |PASSWORD
FILENAME.EXT|PASSWORD
Вот пример такого письма:
From:══ Andy Elkin══════════════ 5030/15
To:═════════ Sysop════ 5030/100
Subj:══ labuda.ext !password_of_4
[тело
письма - пустое]
Часто встречается случай,
когда запрос осуществляется не по имени файла, а по псевдониму. Например,
общеупотребителен псевдоним 'FILES'. При запросе этого "файла" передается
файл, содержащий полный список всех файлов системы, доступных для файловых
запросов. У каждой системы этот файл имеет собственное уникальное имя, но почти
везде можно запросить 'FILES' и получить что-нибудь вроде zeppall.arj в ответ.
Псевдонимы перечисляются
в файле, определенном переменной Freq_Ndx в файле t-mail.ctl.
Freq_Ndx═══ index.frq
Это текстовый файл,
каждая строка которого определяет один псевдоним:
Синтаксис:
[@]<alias> [(<modifier>)]═ <pathname/wildcards>═ [<command>]
где:
@══════════════════════════════ √═ необязательный символ, введенный для
совместимости с другим
программным обеспечением. Всегда игнорируется.
<alias>════════════════════ √═ псевдоним.══
Это═ любое══ слово.═
Никаких══ ограничений═ на
использование═ символов═ в═ alias═ нет. Нельзя использовать
только═ пробелы.═ Не═
рекомендуется═ начинать═ псевдоним═
с
символов "!" и "|".
<modifier>═══════════ √═ может
иметь следующие значения:
1.
Oldest══ - файл═ с═ наиболее═ старыми═
датой═ и═ временем создания из числа указанных в <wildcard>;
2.
Latest══ - файл═ с═ самыми═ последними═
датой═ и временем создания из
числа указанных в <wildcard>;
3.
Smallest - файл наименьшего размера═ из
числа указанных в <wildcard>;
4.
Largest═ - файл наибольшего размера═ из числа указанных в <wildcard>.
При задании <modifier> вместе с <whildcards> (маской
файлов OS)
будет подразумеваться только один файл, выбранный по признаку, указанному в
<modifier>.
Использование <modifier> с указанием лишь одного файла возможно, но
смысла не имеет. Использовать <modifier> со списком файлов нельзя.
<pathname/ ═════════ √ полное имя соответствующего
псевдониму файла или списка wildcards> файлов (предваряется символом "@"),
допускается использование маски файлов.
Command════════════════ √═ имя программы.
Если определена <command>, то она будет
выполнена перед формированием списка файлов, которые необходимо отослать в
ответ на файловый запрос. При этом в строке <command> можно использовать все макросы, используемые
в переменных Process (t-mail.ctl), кроме *N. При этом вместо макроса
*F будет
подставлен сам псевдоним.
Например:
Files c:\files\100all.arj
T-Mail c:\support\t-mail.lzh do_reg.bat *F *A *B
T-exe c:\support\t-2????.*
T-beta (Latest)══ c:\support\t-beta\t-25??.
DOS (Smallest)
d:\dos\*.*══ test.bat
Так, при запросе по
псевдониму T-Mail будет выполнен do_reg.bat с параметрами
(например: "do_reg.bat T-Mail 2:5030/6.0 14400").
Поскольку файловые
запросы удовлетворяются во время сеанса связи, следует минимизировать время
исполнения <command>.
Если есть необходимость,
в поле <pathname> можно определить список файлов, которые будут отосланы при запросе по
псевдониму.
Например:
T-Mail═ @c:\support\t-m.lst
При запросе по псевдониму
T-Mail будут посланы файлы,
перечисленные (каждый - с новой строки) в t-m.lst.
При задании маски файлов
можно использовать "магическое" расширение - ".999". Это
может быть использовано для тех файлов, у которых в качестве расширения
используются только цифры, например: filename.123, nodelist.077. При удовлетворении запроса в этом случае
будет послан файл, имя которого совпадает с запрошенным, в качестве расширения
используются только цифры, а дата и время создания - наиболее поздние,
например:
net5030═══ d:\nodelist\net5030.999
Допустим, что в данном
каталоге присутствуют файлы net5030.123, net5030.321, net5030.012, net5030.z07. В этом случае будет послан тот из первых трех
файлов, у которого дата и время создания наиболее поздние (последний файл будет
проигнорирован, так как в его расширении присутствует буква).
При использовании такого
"магического" расширения префиксы Oldest, Latest, Smallest, Largest игнорируются.
Если определен пароль,
задаваемый в t-mail.ctl переменной T-password, то возможны запросы по полному пути файла,
например:
"c:\support\reg.lst !my_password_no_5"
При этом не действуют
ограничения по времени и размеру запрашиваемых файлов.
Если на нашу систему
пришло письмо с атрибутом Freq (file request), и письмо это адресовано не на нашу систему (то
есть адрес назначения не совпадает ни с основным адресом, ни с одним из AKA нашей системы), то
дальнейшую судьбу этого письма определяет переменная Freq_Transit (t-mail.ctl). Если транзит файловых запросов разрешен (Freq_Transit Yes), то при упаковке
будет сформирован файловый запрос на систему с адресом, взятым из поля "To:" письма. Если
транзит запрещен (Freq_Transit No) или
письмо адресовано на нашу систему, то атрибут Freq этого письма будет игнорироваться.
Примечание. Следует иметь ввиду, что на письмах с обычными
файловыми запросами с нашей станции должен стоять атрибут Local, иначе такие запросы
будут считаться транзитными и обрабатываться соответственно.
Если сформированный таким
образом запрос будет удовлетворен, то соответствующие принятые файлы попадут не
автору запроса, а останутся на системе, которая их реально запросила и приняла.
Таково несомненное ограничение технологии FTN, которая определяет только прямые файловые
запросы.
Для того, чтобы
преодолеть это ограничение, введено понятие "дистанционных запросов".
Они работают таким образом: "я прошу T-Mail на удаленной системе запросить для меня файл и,
когда он будет получен, T-Mail его
мне перешлет".
Это делается служебным
письмом, адресованным T-Mail. Для
того, чтобы письмо было воспринято, необходимо указать пароль, который
определен переменной Freq_Password (или пароль, определенный переменной T-Password) в файле t-mail.ctl удаленной системы:
Freq_Password═══ Talon
From:══ Andy Elkin══════════════ 5030/15
To:═════════ T-Mail|talon═════════ 5030/100
Subj:══ Freq═ labuda.ext═ ══════5030/5
[тело
письма - пустое]
Когда это письмо придет
на узел 5030/100, T-Mail при
обработке этого письма сформирует файловый запрос "от себя" и
поставит его в очередь. Однако, в специальном файле будет сохраняться
информация о том, кто его заставил запросить этот файл.
Если этот файловый запрос
будет удовлетворен и действительно будет принят файл labuda.ext, T-Mail сформирует служебное письмо с атрибутом fileattached. Эти письмо и
файл будут отосланы автору запроса.
Следует иметь ввиду, что
с помощью дистанционного файлового запроса нельзя запросить файл по псевдониму.
В случае отказа в
выполнении файлового запроса T-Mail высылает письмо, в котором этот отказ
мотивирован. К телу этого письма прибавляется текст из файла, определенного
переменной Freq_Policy в
t-mail.ctl:
Freq_Policy══ policy.frq
Если же файловый запрос удовлетворен, то письмо будет содержать список файлов, которые были переданы и некоторые другие сведения (размер файлов, дата и т.п). Генерацию такого письма можно выключить, используя переменную Freq_Confirm в t-mail.ctl:
Freq_Confirm══ No
Если определена
переменная Freq_Note, то
к тексту уведомления о выполнении файлового запроса будет добавлено содержимое
файла, указанного в этой переменной:
Freq_Note══ confirm.frq
Если для файловых
запросов предоставляется большое число каталогов, тем более на устройстве с
медленным доступом (например, CD-ROM), то обработка файлового запроса может
производиться очень долго, что может привести к разрыву сеанса связи. Для того,
чтобы этого избежать, можно использовать индексирование файловых областей,
доступных для запросов. Эта операция проводится заранее с помощью утилиты FILNDX.EXE, входящей в комплект
поставки T-Mail.
Синтаксис: FILNDX
[-S][-Q][-O<indname>] directory [directory...] или FILNDX
[-S][-Q][-O<indname>] @dirlist
где:
-S √
включать подкаталоги;
-Q √ подавить вывод информации на экран;
-O √ задается имя создаваемого индексного файла <indname>
directory √ индексируемые каталоги.
@dirlist √ файл со списком индексируемых каталогов.
Одновременно может быть
задано несколько каталогов для индексирования, либо список в текстовом файле
(каждая строка этого файла - один каталог для индексации, с начала строки). После
индексирования индексные файлы включаются в файл, описанный в конфигурационном
файле t-mail.ctl переменной Freq_Dir (dir.frq), с использованием
символа '@' (отдельными строками). Для индексных файлов можно задавать пароли и
списки адресов так же, как и просто для каталогов.
Примеры:
FilNDX.exe -S -Od:\indexes\watcom.ndx e:\watcom d:\watpch
(индексируются═ два═
каталога═ со══ всеми═
подкаталогами═ и═ создается═
индексный файл watcom.ndx)
FilNDX.exe -S -Od:\indexes\my.ndx @listdir.txt
(индексируются═ каталоги со═
всеми подкаталогами═ из списка,
заданного файлом listdir.txt,
создается индексный файл my.ndx)
(файл DIR.FRQ)
d:\files═══════ ;
просто каталог
@d:\indexes\watcom.ndx══ ; созданный индексный файл
......
При использовании
индексных файлов есть только одно существенное ограничение: в файловых запросах
к индексированным каталогам НЕЛЬЗЯ использовать маски файлов (wildcards).