NAZWA¶
innd, inndstart - InterNetNews daemon
SKŁADNIA¶
innd [
-a ] [
-c dni ] [
-C ] [
-d ] [
-f ] [
-H licznik ] [
-i licznik ] [
-Iadres_IP ] [
-l rozmiar ] [
-m
tryb ] [
-n flaga ] [
-o licznik ] [
-pfd_des ] [
-Pport ] [
-r ] [
-s ]
[
-t opóźnienie ] [
-T licznik ] [
-u ] [
-X sekundy ] [
-Z ]
inndstart [
flagi ]
OPIS¶
Uwaga! To tłumaczenie może być nieaktualne!
Innd, który jest demonem news (InterNetNews), obsługuje
wszystkie nadchodzące feedy. Najpierw wczytuje do pamięci pliki
active(5),
newsfeeds(5) i
incoming.conf(5). Potem otwiera
port NNTP do odbierania artykułów ze zdalnych stacji (zobacz
opcję ``
-p''). Jeśli w include/config.h zdefiniowano
HAVE_UNIX_DOMAIN_SOCKETS, to do odbioru artykułów od
lokalnych procesów, takich jak
nnrpd(8) i
rnews(1)
otwierane jest gniazdo strumieniowe dziedziny Uniksowej, a dla
ctlinnd(8) odwierane jest analogiczne gniazdo datagramowe. Gdy makro to
nie jest zdefiniowane, używane są łącza nazwane.
Ctlinnd(8) wykorzystywany jest do przekazywania serwerowi
poleceń wykonania określonych akcji. Otwiera
również bazę
history(5) i dwa pliki raportowe,
zastępujące jego standardowe wyjście i wyjście
błędu.
Po otwarciu wszystkich plików i gniazd,
innd oczekuje na
połączenia i dane na swoich portach, używając do
tego
select(2) i nieblokującego I/O. Jeśli nie ma
dostępnych danych, to wypróżni on swoje
wewnątrzrdzeniowe struktury danych. Domyślna liczba sekund
opóźnienia przed wypróżnieniem jest ustawiana jako
<DEFAULT_TIMEOUT w config.data> (zwykle
300) sekund.
Jeśli
innd otrzyma błąd ENOSPC (zobacz
intro(2)) podczas zapisu pliku
active, pliku article lub bazy
historii, to wyśle do siebie komendę ``throttle''. Stanie
się tak również, jeśli otrzyma zbyt wiele
błędów wejścia-wyjścia podczas zapisu do
jakiegoś pliku.
Niektóre parametry ustawiane w
inn.conf(5) mogą być
również podane w linii poleceń innd. W tym wypadku, opcje
z
inn.conf(5) będą nadpisane przez opcje linii
poleceń.
OPCJE¶
- -a
- Domyślnie, jeśli host nie jest wymieniony w pliku
incoming.conf to połączenie jest przekazywane do
nnrpd. Po użyciu tej flagi dowolny host może
się podłączyć i przesyłać
artykuły.
- -c
- innd odrzuca stare artykuły. Zasadniczo zachowanie to
może być sterowane przez bazę historii, lecz czasem
stacja wyrzuca w sieć paczkę bardzo starych
artykułów. Flaga `` '' określa
przedział czasu. Na przykład `` -c21'' odrzuca
wszelkie artykuły, wysłane dawniej niż 21 dni temu.
Wartość zerowa powstrzymuje ten test. Domyślną
wartością jest 14 dni, lecz można to zmienić
opcją ``artcutoff'' w inn.conf(5)
- -C
- Jeśli użyta jest flaga ``-C'', to innd
przyjmie i przesyła dalej, ale nie przetwarza wiadomości
anulowania i powstrzymania. Jest to przeznaczone dla stacji, w
których nadużywane są anulowania i które
wybierają mechanizm z lepszą autoryzacją.
- -d -f
- Innd normalnie przechodzi w tło, ustawia standardowe
wyjścia na pliki raportowe i odłącza się od
terminala. Po użyciu flagi `` -d'' serwer tego nie robi, a
po użyciu flagi `` -f'', serwer pozostaje na pierwszym
planie.
- -H -T -X
- Flagi ``-H'', ``-T'' i ``-X'' sterują
liczbą połączeń dozwolonych na minutę.
Ma to w założeniach działać jako ochrona
serwera przed czytnikami, które wykonują w ciągu
minuty zbyt wiele połączeń z serwerem. Zazwyczaj nie
używa się tego, chyba że rzeczywiście pojawia
się jakiś problem. Tablica używana do tych
sprawdzeń jest ograniczona do 128 wpisów i jest
używana jako pierścień (ring). Rozmiar został
wybrany do ułatwienia obliczania indeksu i do upewnienia
się, że nie zabraknie ci miejsca. Praktycznie wydaje
się wątpliwe, żebyś wykorzystał nawet
połowę tablicy naraz.
- Flaga ``-H'' określa maksymalną liczbę
połączeń pochodzących z danego hosta z
serwerem podczas `` -X'' sekund. Domyślnie 2.
- Flaga ``-T'' ogranicza całkowitą liczbę
nadchodzących połączeń innda w okresie ``
-X'' sekund. Maksymalną wartością jest 128.
Domyślną 60.
- Flaga ``-X'' ustawia liczbę sekund, używaną
przez `` -H'' i `` -T''. Wartość zerowa
wyłącza sprawdzanie. Domyślnie jest 0.
- -i
- Flaga ``-i'' ogranicza liczbę nadchodzących
połączeń NNTP. Wartość zerowa
wyłącza to sprawdzenie. Domyślną
wartością, jeśli w inn.conf(5) nie podano
opcji ``maxconnections'' jest 50. Wymieniona opcja jest zastępowana
wartością tej opcji.
- -I
- Opcja ta umożliwia wiązanie innda do podanego adresu
interfejsu IP. Adres IP musi być w postaci kropkowej czwórki
liczb (nnn.nnn.nnn.nnn). Zobacz też opcję ``bindaddress'' w
inn.conf(5).
- -l
- Flaga ``-l'' ogranicza rozmiar artykułu. Po użyciu
tej flagi, wszystkie artykuły większe niż
rozmiar bajtów będą odrzucane.
Domyślną wartością jest 1000000L
bajtów. Sprawdzanie można wyłączyć,
używając wartości zerowej. Patrz także opcje
``maxartsize'' i ``localmaxartsize'' w inn.conf(5).
- -m
- Flaga ``-m'' służy do uruchamiania serwera w
zatrzymanym lub stłumionym stanie (zobacz ctlinnd(8)).
Argument rozpoczyna się pojedynczą literą: g,
p lub t, wskazujące odpowiednio na ``go'' (startuj),
``pause'' (zatrzymaj) lub ``throttle'' (stłum).
- -n
- Flaga ``-n'' określa czy pauzowanie lub stłumienie serwera
powinno również wyłączyć
przyszłe procesy czytnikowe. Wartość `` y''
powoduje, że czytniki zachowują się jak serwer, a
wartość `` n'' umożliwia czytanie, nawet gdy
serwer nie pracuje. Domyślnie zezwala się na czytanie, a
zmienić można to opcją ``readerswhenstopped'' w
inn.conf(5).
- -o
- Flaga ``-o'' służy ograniczaniu liczby plików,
które są utrzymywane otwarte dla wychodzących
feedów plikowych. Domyślną wartością
jest liczba dostępnych deskryptorów minus
część zarezerwowana do użytku
wewnętrznego.
- -p
- Po użyciu flagi ``-p'' przyjmuje się, że port
NNTP jest otwierany na podanym deskryptorze. (Jeśli użyta
jest ta flaga, to innd zakłada, że pracuje z
właściwymi uprawnieniami i nie będzie
wołał chown(2) na żadnych z tworzonych
plików lub katalogów.)
- -P
- Jeśli użyta jest flaga ``-P'', to podany port jest
używany do nasłuchiwania połączeń.
innd musi mieć wystarczające uprawnienia startowe by
otworzyć podany port.
- -r
- Jeśli użyta jest flaga ``-r'', serwer przenumeruje
plik active zupełnie tak, jak po wysłaniu komendy
``renumber''.
- -s
- Jeśli użyta jest flaga ``-s'', to innd nic nie
będzie robić, lecz tylko sprawdzi składnię
pliku newsfeeds. Jeśli będą tam
błędy, to zgłosi kod błędu; rzeczywiste
błędy będą natomiast zgłoszone w
syslog(3).
- -t
- Zmienia czas opóźnienia przed wypróżnieniem do
timeout sekund.
- -u
- Raporty są normalnie buforowane; flaga ta wyłącza to
zachowanie.
Inndstart jest małym programem typu front-end, który
otwiera port NNTP, ustawia uid i gid na opiekuna news, a następnie
uruchamia demona
innd z flagą ``
-p'' i minimalnym
bezpiecznym środowiskiem. Jest to mały front-end dla stacji,
która nie chce uruchamiać
innd z uprawnieniami roota.
KOMUNIKATY STERUJĄCE¶
Artykuły przychodzące, mające nagłówek
Control są nazywane
komunikatami sterującymi. Poza
komunikatem anulowania, są one zaimplementowane przez zewnętrzne
programy w katalogu
<pathcontrol w inn.conf> o ile
<usecontrolchan w inn.conf> jest ustawione na ``false''.
(Komunikaty anulowania (cancel) odświeżają bazę
historii, więc muszą być obsługiwane
wewnętrznie; koszt synchronizowania, blokowania i odblokowywania
byłby zbyt wysoki przy odbiorze wielu takich komunikatów.)
Gdy nadchodzi komunikat sterujący, pierwsze słowo tekstu jest
konwertowane na małe litery i jest używane jako nazwa
uruchamianego programu. Jeśli program nie istnieje, wywoływany
jest domyślny program, określony przez
<pathcontrol w
inn.conf>/default.
Wszystkie programy sterujące są wywoływane z czterema
parametrami. Pierwszym jest adres nadawcy komunikatu; jest to pobierane z
nagłówka Sender. Jeśli nagłówek ten jest
pusty, to dane są pobierane z nagłówka From.
Następnym parametrem jest adres zwrotny replik; pobierany z
nagłówka Reply-To. Jeśli nagłówek ten jest
pusty, użyty zostanie adres nadawcy. Trzecim parametrem będzie
nazwa pliku, w którym znajduje się artykuł
względem katalogu składowego news. Czwartym parametrem jest
host, który wysłał artykuł. Jest to odczytywane z
linii Path.
Jeśli
<usecontrolchan w inn.conf> jest ustawione na
``true'', to żaden komunikat sterujący nie będzie
przetwarzany przez program zewnętrzny, forkowany przez innda. Zamiast
tego, będzie przetwarzany przez skrypt
controlchan, który
jest wywoływany jako program kanałowy innda. Musisz do
używania tego skryptu skonfigurować
newsfeeds(5).
Przetwarzanie z użyciem
controlchan może
zredukować nadmierne obciążenie, jeśli zbyt wiele
komunikatów sterujących pojawia się naraz.
Dystrybucja komunikatu sterującego jest odmienna od dystrybucji
standardowych artykułów.
Komunikaty sterujące normalnie wpadają do grupy dyskusyjnej
control. Mogą one być zapisywane w podgrupach, lecz w
oparciu o polecenie komunikatu sterującego. Na przykład
komunikat newgroup może być zapisany w grupie
control.newgroup lub w ogólnym
control, jeśli
specjalizowana podgrupa nie istnieje.
Stacje mogą jawnie udostępniać grupę ``control'' w
ich listach zapisowych, lecz zwykle lepiej jest ją
wyłączyć. Jeśli komunikat sterujący jest
wysyłany na grupę, której nazwa kończy się
czterema znakami ``.ctl'', to przyrostek jest obcinany, a to co pozostanie
jest używane jako nazwa grupy. Na przykład komunikat
anulujący, wysłany na ``news.admin.ctl'' zostanie
przesłany do wszystkich stacji zapisanych na grupy ``control'' lub
``news.admin''. Wiadomości newgroup lub rmgroup wymagają
dodatkowego specjalnego traktowania. Jeżeli wiadomość
jest zaakceptowana i została wysłana do tworzonej lub usuwanej
grupy, to ta wiadomość zostanie przesłana do wszystkich
serwerów, których wzorce subskrypcji grup pozwoliłyby na
odebranie wiadomości wysyłanych do tej grupy.
Jeśli
<mergetogroups w inn.conf> jest ustawione na ``true'',
to gdy artykuł jest wysyłany na grupę, która
rozpoczyna się trzema literami ``to.'', to zostanie potraktowany
specjalnie, jeśli grupa ta nie istnieje w pliku
active:
artukuł jest składowany do grupy ``to'' i jest wysyłany
do pierwszej stacji, nazwanej po przedrostku. Na przykład,
wysyłanie do ``to.uunet'' zostanie złożone do ``to'' i
przesłane do stacji ``uunet''. file:
RÓŻNICE PROTOKOŁU¶
Innd implementuje komendy NNTP zdefiniowane w RFC 977 z
następującymi odstępstwami:
- 1.
- Za `` list'' może występować dodatkowo
argument `` active'', `` active.times'', ``
newsgroups'' lub `` subscription''. Jest to popularne
rozszerzenie, lecz nie w pełni obsługiwane; zobacz
nnrpd(8).
- 2.
- Zaimplementowane są komendy `` authinfo user'' oraz ``
authinfo pass''. Zobacz draft-barber-nntp-imp-07.txt dla dalszych
szczegółów.
- 3.
- Udostępniona jest nowa komenda, `` mode reader''. Komenda ta
powoduje, że serwer przekazuje połączenie do
nnrpd. Komenda `` mode query'' przeznaczona jest dla
przyszłych zastosowań i obecnie jest traktowana tak
samo.
- 4.
- Udostępnione są komendy wspierające transfer
strumieniowy: `` check messageid'' i ``takethis
messageid''.
- 5.
- Udostępniona jest komenda transferu wsadowego ``xbatch
liczba-bajtów''. Komenda ta odczyta
liczbę-bajtów bajtów i zapisze je dla dalszego
przetwarzania przez rnews(1) (który należy uruchomić
oddzielnie). Obejrzyj programy innxbatch i sendxbatches.sh.
- 6.
- Pozostałymi zaimplementowanymi komendami są `` head''
, `` help'' , `` ihave'' , `` quit'' oraz ``
stat''.
MODYFIKACJE NAGŁÓWKÓW¶
Innd modyfikuje tak mało nagłówków, jak tylko
się da, lecz mógłby być lepszy.
Oto lista nagłówków, które jeśli
istnieją, są usuwane:
Date-Received
Posted
Posting-Version
Received
Relay-Version
Puste nagłówki oraz nagłówki
składające się z białych spacji
również są opuszczane.
Do nagłówka Path doklejana jest nazwa lokalnej stacji
(określanej przez wartość ``pathhost'' w
inn.conf(5)) i wyrzyknik (jeśli nazwa pierwszej stacji
nagłówka różni się od lokalnej).
Nagłówek Xref jest usuwany i tworzony jest nowy.
W przypadku nieobecności, nagłówek Lines jest dodawany.
Innd nie przepisuje nieprawidłowych
nagłówków. Na przykład nie będzie
zmieniać nieprawidłowego nagłówka Lines, ale
odrzuci artykuł.
RAPORTOWANIE¶
Innd raportuje wszystkie nadchodzące artykuły do pliku
raportowego. Jest to plik tekstowy o zmiennej ilości rozdzielanych
spacjami pól o jednym z następujących formatów:
mon dd hh:mm:ss.mmm + feed <Message-ID> stacja...
mon dd hh:mm:ss.mmm j feed <Message-ID> stacja...
mon dd hh:mm:ss.mmm c feed <Message-ID> stacja...
mon dd hh:mm:ss.mmm - feed <Message-ID> powód...
mon dd hh:mm:ss.mmm ? feed <Message-ID> powód...
Po polu Message-ID może być również pole nazwy hosta
i rozmiaru, zależnie od opcji ``nntplinklog'' i ``logsize'' z
inn.conf(5).
Pierwsze trzy pola są polami daty i czasu w rozdzielczości
milisekundowej. Piąte pole jest stacją, która
wysłała artykuł (odczytywane z nagłówka
Path). Szóste pole jest identyfikatorem artykułu; jeśli
informacja jest niedostępna, pojawi się w jej miejscu pytajnik.
Czwarte pole określa czy artykuł został przyjęty czy
nie. Jeśli jest tam znak plus, to został przyjęty.
Jeśli ``j'', to został przyjęty, lecz wszystkie grupy
mają w swoich rekordach
active ``j'', więc artykuł
został złożony do grupy ``junk''. Jeśli w polu
pojawiła się litera ``c'', to przed pojawieniem się
oryginalnego artykułu odebrany został komunikat
anulujący. We wszystkich tych przypadkach artykuł został
przyjęty i pole ``stacja...'' zawiera rozdzieloną spacjami
listę stacji, do których artykuł jest przesyłany.
Jeśli czwarte pole zawiera znak minusa, o artykuł został
odrzucony. Powodami odrzucenia mogą być:
"%s" header too long (za długi nagłówek)
"%s" wants to cancel <%s> by "%s" ("%s" chce anulować <%c> poprzez "%s")
Article exceeds local limit of %s bytes (Artykuł przekracza lokalny
limit %s bajtów)
Article posted in the future -- "%s" (Artykuł wysłany w przyszłości -- "%s")
Bad "%s" header (Zły nagłówek "%s")
Can't write history (Nie mogę zapisać historii)
Duplicate (Duplikat)
Duplicate "%s" header (Zduplikowany nagłówek "%s")
EOF in headers (EOF w nagłówkach)
Linecount %s != %s +- %s (Liczba linii %s != %s +- %s)
Missing %s header (Brak nagłówka %s)
No body (Brak ciała)
No colon-space in "%s" header (Brak dwukropka-spacji w nagłówku "%s")
No space (Brak spacji (albo miejsca???))
Space before colon in "%s" header (Spacja przed dwukropkiem w nagłówku "%s")
Too old -- "%s" (Za stare -- "%s")
Unapproved for "%s" (Niezatwierdzone dla "%s")
Unwanted newsgroup "%s" (Niechciana grupa dyskusyjna "%s")
Unwanted distribution "%s" (Niechciana dystrybucja "%s")
Whitespace in "Newsgroups" header -- "%s" (Biała spacja w nagłówku
"Newsgroups" -- "%s")
Gdzie ``%s'' jest podmieniane przez konretniejsze informacje.
Jeżeli w czwartym polu wystąpi znak ``?'', oznzcza to, że
atykuł zawiera dziwne łańcuchy znaków, tj. CR bez
LF lub LF bez CR. Te znaki są używane razem ``CRLF'', co oznacza
koniec linii. Obecnie taka informacja w logu oznacza dziwność
tego artykułu, ale
innd nigdy nie odrzuca artykułu z tego
powodu.
Zauważ, że jeśli artykuł jest przyjęty i
<wanttrash w inn.conf> jest ustawione na ``yes'' i żadna z grup
nie jest odpowiednia, to zostanie zraportowany w dwóch liniach: w linii
``j'' i ``-''.
Innd zgłasza też obszerne raporty poprzez
sysloga.
Pierwsze słowo komunikatu raportowego będzie: nazwą
stacji, jeśli wpis jest dla niej specyficzny (np. komunikat
``connected''); słowem ``SERVER'', jeśli komunikat jest
związany z serwerem, np. gdy pojawi się błąd
odczytu.
Jeśli drugim słowem są cztery litery ``cant'', to
zgłaszany jest błąd. W tym przypadku następne dwa
słowa ogólnie nazywają wywołanie systemowe lub
funkcję biblioteczną, która się nie
powiodła oraz obiekt, wokół którego wykonywane
były działania. Reszta linii może zawierać inne
informacje.
W innych przypadkach, drugie słowa określa rodzaj zmiany, a reszta
linii uściśla tę informację. Słowo
``internal'' ogólnie oznacza wewnętrzny błąd
logiczny.
SYGNAŁY¶
Innd przechwytuje sygnały SIGTERM i SIGDANGER i
wyłącza się po nich. Jeśli użyta jest flaga
``-d'', przechwytywany będzie również SIGINT i
będzie działał analogicznie.
Innd przechwytuje sygnał SIGUSR1 i odtwarza kanał
sterujący, wykorzystywany normalnie przez
ctlinnd(8).
HISTORIA¶
Napisane przez Richa $alza <rsalz@uunet.uu.net> dla InterNetNews. Jest to
rewizja 1.24.2.4, z dnia 2000/08/20.
ZOBACZ TAKŻE¶
active(5),
ctlinnd(8),
dbz(3),
history(5),
incoming.conf(5),
inn.conf(5),
newsfeeds(5),
nnrpd(8),
rnews(1), syslog(8).
Powyższe tłumaczenie pochodzi z nieistniejącego już
Projektu Tłumaczenia Manuali i
może nie być
aktualne. W razie zauważenia różnic między
powyższym opisem a rzeczywistym zachowaniem opisywanego programu lub
funkcji, prosimy o zapoznanie się z oryginalną
(angielską) wersją strony podręcznika za pomocą
polecenia:
- man --locale=C 8 innd
Prosimy o pomoc w aktualizacji stron man - więcej informacji można
znaleźć pod adresem
http://sourceforge.net/projects/manpages-pl/.