| INND(8) | System Manager's Manual | INND(8) |
innd, inndstart - InterNetNews daemon
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 ]
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ń.
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.
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:
Innd implementuje komendy NNTP zdefiniowane w RFC 977 z następującymi odstępstwami:
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
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ł.
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")
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.
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).
Napisane przez Richa $alza <rsalz@uunet.uu.net> dla InterNetNews. Jest to rewizja 1.24.2.4, z dnia 2000/08/20.
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:
Prosimy o pomoc w aktualizacji stron man - więcej informacji można znaleźć pod adresem http://sourceforge.net/projects/manpages-pl/.