T-mail

12.Файловые запросы (FREQ)

Ограничения и требования при обработке файловых запросов

Список каталогов для файловых запросов

Псевдонимы

Запрос по полному пути

Транзитные и дистанционные файловые запросы

Вот пример такого письма:

Уведомления при файловых запросах

Индексирование файловых областей

 

В том случае, если одному узлу необходимо получить некоторый файл (или несколько), который есть в одной из файловых областей другого узла, то одним из вариантов для осуществления этого является отправление файлового запроса (File request, Freq).

T-Mail поддерживает файловые запросы типа WaZOO. Это означает, что при приеме .REQ-файла формируется список файлов, которые отсылаются в конце сеанса связи. (.REQ-файл представляет собой простой текстовый файл с перечнем запрашиваемых файлов).

При упаковке писем в почтовые пакеты, если встречаются письма (.msg), на которых установлен атрибут Freq или UpdFreq, формируется .REQ-файл, который пересылается во время сеанса связи. При этом письма с одновременно установленными атрибутами Freq (UpdFreq) и Hold не будет считаться письмом, содержащим файловый запрос.

Письмо с файловым запросом можно сформировать прямо из T-Mail с помощью клавишей Alt-R. При этом нужно указать имя запрашиваемого файла и адрес(а) систем, у которых запрашивается файл. Для парольного файлового запроса можно указать еще и пароль (после имени файла, с разделителем "!" или "|", по аналогии с заданием пароля в письме, см. ниже). Если для указанной системы телефон не известен (не указан в нодлистах и subst.lst), письмо сформировано не будет. Если имя запрашиваемого файла начинается с символа "!", то он он должен быть указан первым.

Могут использоваться также так называемые Update Request - файловые запросы новых файлов. В случае такого запроса запрашиваемый файл будет принят только в том случае, если на принимающей системе такого файла нет, или есть, но с более старой датой/временем создания.

При файловом запросе можно задать полное имя файла (с указанием пути), в этом случае:

  1. дляUpdateRequestпутьбудетуказывать местонахождение аналога запрашиваемого файлана вашей системе.В случае, еслидля UpdFreq путь не задан,то считается, что этот аналогнаходится в каталоге, заданном переменной Inbound (t-mail.ctl).
  2. если же путь задан дляобычного файлового запроса, то это означает, что осуществляетсязапрос файла, находящегосяв указанном каталоге на удаленной системе, при этомобычно должен быть задан пароль (см. раздел "Запрос по полному пути" этой главы).

Ограничения и требования при обработке файловых запросов

Традиционно существует масса возможностей для ограничения обработки файловых запросов - по времени, размеру, числу одновременно запрашиваемых файлов и т.п. Рассмотрим их (переменные из файла 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:══ Freqlabuda.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).