Упаковка статей

Упаковщик новостей использует специфический формат, который является одним и тем же для B-news, C-News и INN. Каждой статье предшествует строка:

#! rnews count

count Где count задает число байтов в статье. Когда используется пакетное сжатие, возникающий в результате файл сжат в целом и содержать другую строку в соответствии c сообщением, которое нужно использовать для распаковки. Стандартное средство сжатия compress, которое отмечен как

#! cunbatch

Иногда при необходимости посылать пакеты через программное обеспечение почты, которое удаляет восьмой бит всех данных, сжатый пакет может быть защищен, используя c7-encoding;; эти пакеты будут отмечены как c7unbatch.

Когда пакет приходит на удаленную машину, rnews проверяет эти маркеры и обрабатывает пакет соответственно. Некоторые абоненты также используют другие инструментальные средства сжатия, подобные gzip. Такие файлы будут помечены как zunbatch. C-News не распознает подобные ненормативные заголовки; Вы должны изменить исходный код, чтобы поддерживать их.

В C-News пакетирование статьи выполняется командой /usr/lib/news/batch/sendbatches, которая берет список статей из файла site/togo и помещает их в отдельный newsbatches. Это должно быть выполнено раз в час или даже более часто, в зависимости от объема трафика. Операция управляется файлом batchparms в /var/lib/news . Этот файл описывает максимальный размер пакета для каждого сервера, программу пакетирования, необязательную программу сжатия и транспорт для доставки к этому удаленному серверу. Вы можете определять параметры пакетирования, также как набор заданных по умолчанию параметров для абонента.

При установке C-News Вы, вероятно, найдете файл batchparms, который содержит приемлемые заданные по умолчанию записи в дистрибутиве, так что есть хорошая возможность не изменять файл. На всякий случай я описываю его формат. Каждая строка состоит из шести полей, отделяемых пробелами или метками табуляции:


site size max batcher muncher transport

site

site имя сервера, для которого применяется запись. Файл togo для этого сервера должен постоянно находится в out.going/togo. Имя /default/ обозначает заданный по умолчанию сервер.

size

size максимальный размер созданных пакетов статей (перед сжатием). Для одиночных статей больших, чем этот размер, C-News делает исключение и помещает их в одиночный пакет.

max

max максимальное число пакетов, созданных и планируемых для передачи перед пакетированием для этого сервера. Это может пригодиться для серверов, которые доступны только в определенное время.

C-News определяет число поставленных в очередь пакетов, используя скрипт queuelen в /usr/lib/news . Если вы установили C-News в формате prepackaged, скрипт не должен нуждаться в редактировании, но если Вы должны использовать другую разновидность spool-каталогов, например, Taylor UUCP, Вам может быть необходимо написать Ваш собственный. Если Вы не заботитесь относительно числа spool-файлов (например, Вы единственный пользователь данного компьютера, и Вы не пишете статьи по мегабайту каждая), Вы можете заменить содержимое скрипта просто на команду exit 0.

batcher

Поле batcher содержит команду, используемую для создания пакета из списка статей в файле togo. Обычно это batcher. Для других целей можно использовать альтернативные команды. Например, протокол ihave/sendme требует, чтобы список статей был превращен в сообщения управления ihave или sendme, которые зарегистрированы в группе новостей to.site . Это выполняется batchih и batchsm.

muncher

Поле muncher определяет команду, используемую для сжатия. Обычно это compcun, команда, которая создает сжатый пакет. В качестве альтернативы, Вы могли бы использовать muncher, который использует gzip, скажем gzipcun. Вы должны удостовериться, что распаковщик на удаленном сервере исправлен так, чтобы распознать файлы, сжатые gzip .

Если удаленный сайт не имеет команды распаковки uncompress, Вы можете определить nocomp, который не выполняет сжатие.

transport

Последнее поле, transport, описывает транспорт, который нужно использовать. Доступно несколько стандартных команд для различных транспортов, чьи имена начинаются с via. sendbatches передает им имя машины адресата в командной строке. Если запись batchparms не /default/, sendbatches получает имя машины из поля site, удаляя все последующее, включая первую точку или наклонную черту вправо. Если запись batchparms была /default/, используются имена каталогов в out.going.

Чтобы выполнять пакетирование для специфического сервера, Вы вызываете это как:

# su news -c "/usr/lib/news/batch/sendbatches site"

Когда вызов происходит без аргументов, sendbatches обрабатывает все пакетные очереди. Интерпретация понятия “все” зависит от присутствия заданной по умолчанию записи в batchparms. Если она найдена, проверяются все каталоги в /var/spool/news/out.going, иначе циклически просматриваются все записи в batchparms. Обратите внимание, что sendbatches при просмотре каталога out.going берет только те каталоги, которые не содержат точку или знак @ как имя сервера.

Имеются две команды, которые используют uux, чтобы выполнить rnews на удаленной системе; viauux и viauuxz. Последняя устанавливает флаг –z для того, чтобы отменить сообщения об успехе для каждой переданной статьи. Другая команда, viamail, посылает пакеты статей пользователю rnews в удаленной системе по почте. Полный список транспорта есть на man-странице newsbatch.

Все команды из последних трех полей нужно расположть или в out.going/site, или в /usr/lib/news/batch. Большинство их сделаны так, чтобы Вы могли легко приспосабливать новые инструментальные средства для Ваших потребностей. Они вызываются как канал. Список статей подается дозатору на стандартном вводе, который создает пакет на стандартном выводе. Он канально передается в muncher и так далее.

Пример файла:

# batchparms file for the brewery
# site        | size   |max    |batcher  |muncher    |transport
#-------------+--------+-------+---------+-----------+-----------
/default/       100000  22      batcher   compcun     viauux
swim             10000  10      batcher   nocomp      viauux