Newsy-Minimum
Newsy-Minimum
Kenneth M. Lewis, Jr., <kent@fiona.umsmed.edu>
v?, 25 maja 1995
Wersja polska: Tomasz 'tsca' Sienicki, <tsca@edb.dk>
v1.02, 13 grudnia 2001
Dokument opisuje użycie serwera INN do obsługi niewielkiej ilości grup
dyskusyjnych off-line.
1. O dokumencie
1.1 Aktualny status dokumentu
(Stan na dzień 14.10.1997)
Dokument Newsy-Minimum
nie jest już aktualizowany przez autora. Jeśli chciałbyś podjąć się opieki
nad tym dokumentem, skontaktuj się z <tjbynum@metalab.unc.edu>.
1.2 Prawa autorskie
Copyright (c) May 25, 1995 Kent Lewis (Kenneth M. Lewis, Jr.)
Jeśli dokument ten zostanie zaakceptowany przez Linux Documentation Project,
wolno będzie rozpowszechniać go zgodnie z zasadami opisanymi w LDP HOWTO
z zastrzeżeniem, że autor chciałby przejrzeć ostateczną formę niniejszego
dokumentu przed włączeniem go do ww. zasobów.
2. Wstęp
Używam Linuksa, a z siecią łączę się za pomocą modemu. Do niedawna musiałem
utrzymywać stałe połączenie z siecią aby móc czytać grupy dyskusyjne. Nie
mogę jednak zbyt długo pozostawać on-line -- korzystam z usług odległego
dostawcy łącza, za czas on-line płacę więc stawki międzymiastowe; oznacza
to wysokie rachunki telefoniczne. Dlatego zacząłem się zastanawiać nad
zminimalizowaniem kosztów dostępu do sieci bez utraty korzyści z tego dostępu
płynących. Sposób taki znalazłem; mam nadzieję, że przyda się on również innym.
Dokument niniejszy opisuje jak używać INNa z niewielkim tylko zestawem grup.
Za pomocą prostego skryptu perlowego artykuły są jednocześnie ściągane i
wysyłane podczas krótko trwającego połączenia z siecią. Całość jest w wersji
,,alfa'' -- jeśli pojawią się nie opisane tu problemy, będziesz musiał sam
sobie z nimi poradzić.
3. Opis sytemu ,,Newsy-Minimum''
3.1 Wymagania
Musisz mieć dostęp do serwera news (NNTP). Żeby sprawdzić, czy możesz z danego
serwera czytać grupy i na nie pisać, sprawdź programem telnet port 119 tego
serwera -- pojawi się informacja na temat Twoich uprawnień. Jeśli już używasz
danego serwera, to wiesz, że dostęp masz -- w takim wypadku nie ma co
sprawdzać. :-) Natomiast jeśli dostępu nie masz, postaraj się o niego przed
przeczytaniem reszty niniejszego dokumentu.
Musisz mieć wystarczającą ilość miejsca na twardym dysku na składowanie
artykułów. Moja linuksowa partycja ma 300 MB, a dwudniowy urobek około
piętnastu grup zajmuje wg. df
zaledwie od 1 do 2% pojemności dysku. Na wszelki jednak wypadek najlepiej
zacząć od niewielkiej ilości grup i sukcesywnie dodawać kolejne.
Potrzebujesz Perla i INNa. Jeśli ich nie masz, ściągnij je z
ftp://sunsite.unc.edu (lub któregoś z mirrorów).
Perla prawdopodobnie znajdziesz w katalogu
/pub/Linux/devel/perl, a INNa w /pub/Linux/system/Mail/news.
Jeśli jeszcze tego nie zrobiłeś, zainstaluj te dwa programy. Ja swojego INNa
wziąłem z dystrybucji Slackware 2.2. Dołączona dokumentacja była bardzo dobra,
po zapoznaniu się z nią nie powinieneś mieć problemu z instalacją. Perl, już
skompilowany, również dołączony jest do Slackware 2.2 -- postaraj się zdobyć
wersję skompilowaną, dokument niniejszy nie zawiera pomocy w instalacji
i konfiguracji Perla.
3.2 Instalacja i rozruch
Nie zapomnij o założeniu grup ,,junk'' i ,,control'' -- bez nich program innd
nie ruszy. Będziesz musiał założyć je ręcznie, ponieważ polecenie ctlinnd
zakłada, że demon innd jest już uruchomiony. Po wystartowaniu tego demona
utwórz poleceniem ctlinnd newgroup ... ...
katalog do składowania newsów. Szczegółów szukaj w podręczniku systemowym
(man ctlinnd).
Teraz musisz zmodyfikować plik /etc/news/newsfeeds -- dzięki temu INN
utworzy plik w katalogu /usr/spool/news/out.going/; plik ten
wykorzystywany będzie przez zamieszczony poniżej skrypt perlowy do
publikowania napisanych off-line artykułów. Informacje na temat zawartości
/etc/news/newsfeeds znajdziesz w dokumentacji INNa; przeczytaj też
odpowiednią stronę podręcznika systemowego (man newsfeeds). WAŻNE:
wpisy w /etc/news/newsfeeds powinny być umieszczone w takiej
kolejności, aby pierwszym polem w pliku
/usr/spool/news/out.going/$NEWSFEED były pełne ścieżki do artykułów,
które chcesz wysłać. Jeśli pierwsze pole będzie zawierało co innego, skrypt
będzie próbował wysłać na newsy owo ,,co innego'' zamiast Twoich artykułów,
co z pewnością wywoła niepożądane efekty.
Nie zapomnij o zablokowaniu w pliku control.ctl
możliwości automatycznego zakładania nowych grup. Jeśli tego nie zrobisz,
to w miarę napływania z nadrzędnego serwera wiadomości kontrolnych liczba
ściąganych grup będzie się powiększała, co spowoduje zwiększenie obciążenia
i spowolnienie twojego systemu -- a w niniejszym HOWTO chodzi przecież o coś
zupełnie przeciwnego.
Wejdź do wybranego przez siebie katalogu i wykonaj w nim polecenie
touch -t $WCZORAJ lastget
Zamiast $WCZORAJ
użyj ciągu oznaczającego dzień wczorajszy (w formacie opisanym w podręczniku
systemowym (man touch)).
Umieść poniższy skrypt w tym katalogu i nadaj mu prawa wykonywania.
Zmień $NEWSPATH
na katalog, w którym zainstalowałeś INNa (u mnie jest to
/usr/lib/news). Zmień $SCRIPTPATH
na ścieżkę do katalogu, w którym umieściłeś skrypt (u mnie
/usr/lib/news). W tym samym katalogu znajdować się musi
wspomniany wyżej plik lastget.
Zmień $PROVIDER
na adres serwera news, z którego będziesz korzystać. Zmień $NEWSFEED
na nazwę feedu, której użyłeś w /etc/news/newsfeeds.
Przeczytaj strony ,,inews'' i ,,nntpsend'' podręcznika systemowego,
aby zorientować się w działaniu poniższego skryptu.
-----------------------------------------------------------------------------
#!/usr/bin/perl
##
## pobierz nowe artykuly
##
open(LIST, "$NEWSPATH/active")
|| die "nie moglem otworzyc listy grup do pobrania!";
while (<LIST>) {
@newsgroup = split(' ', $_); ## dzieli kolejne linie pliku active wg spacji,
## umieszcza dane w tablicy @newsgroup
## @newsgroup[0] zawiera teraz nazwę grupy
system "$NEWSPATH/bin/nntpget -f $SCRIPTPATH/lastget -n @newsgroup[0] -o -v $PROVIDER"
|| print "nie moglem sciagnac postow z grupy @newsgroup[0]\n";
}
close(LIST);
system "touch $SCRIPTPATH/lastget";
##
## usun naglowek "NNTP-Posting-Host: " z postow do wyslania
##
open(LIST, "/usr/spool/news/out.going/$NEWSFEED")
|| die "nie moglem otworzyc listy postow do przygotowania do wyslania";
while (<LIST>) {
if (@article = split(' ', $_)) {
$article = @article[0];
rename("$article", "$article" . '.bak');
$backup = "$article.bak";
open(OUTPUT, ">> $article");
open(INPUT, "$backup");
select(OUTPUT);
while (<INPUT>) {
print unless ?^NNTP-Posting-Host.*\n?
}
close(OUTPUT);
close(INPUT);
unlink("$backup");
reset;
}
}
select(STDOUT);
close(LIST);
##
## wyslij posty
##
$ENV{'NNTPSERVER'} = "$PROVIDER";
open(LIST, '/usr/spool/news/out.going/$NEWSFEED')
|| die "nie moglem otworzyc listy postow do wyslania";
while (<LIST>) {
if (@article = split(' ', $_)) {
$article = @article[0];
system "inews -h $article";
}
}
close(LIST);
------------------------------------------------------------------------------
3.3 Sposób użycia
Powiedzmy, że nazwałeś powyższy skrypt ,,foonews''. Przy następnym połączeniu
z siecią wykonaj polecenie $SCRIPTPATH/foonews.
Jeśli przez ekran zaczną przewijać się identyfikatory wiadomości (Message-ID),
to znaczy, że wszystko działa jak powinno. Być może będziesz musiał poczekać
kilka sekund na pojawienie się pierwszych Message-ID. Po zakończeniu tej
operacji powinieneś mieć na dysku wszystkie wiadomości wysłane na newsy od
czasu ostatniej modyfikacji pliku $SCRIPTPATH/lastget, a wszystkie
napisane przez Ciebie posty powinny być wysłane do serwera, z którym się
łączyłeś; serwer rozpropaguje te wiadomości dalej. Po wszystkim plik
$SCRIPTPATH/lastget będzie miał dzisiejszą datę ostatniej
modyfikacji; jutro, kiedy ponownie uruchomisz ,,foonews'', skrypt ściągnie
newsy wysłane na newsy między tą datą, a momentem uruchomienia skryptu.
Będziesz musiał ręcznie usuwać zawartość pliku
/usr/local/news/out.going/$NEWSFEED. Umyślnie nie dopisałem tej
funkcji do skryptu, żeby móc sprawdzić, czy moje artykuły rzeczywiście zostały
wysłane... i jakoś nie zabrałem się jeszcze do zautomatyzowania tego zadania.
Po pierwszym uruchomieniu skryptu najpierw sprawdziłem, czy artykuły zostały
wysłane, a dopiero potem usunąłem zawartość tego pliku; możesz zrobić tak samo.
Jeśli poprawnie skonfigurowałeś INNa, to skrypt
$NEWSPATH/bin/news.daily
zajmie się poprawnym działaniem całej konstrukcji.
W tej chwili wszystko robię ręcznie, jednak nic nie szkodzi na przeszkodzie,
aby proces ten zautomatyzować. Kilka wpisów w cronie powinno załatwić sprawę.
I ostatnia uwaga: wcale nie uważam, że mój skrypt jest elegancko napisany,
ani że sposób jest idiotoodporny i niezawodny. Ale SOA#1 -- u mnie działa
-- więc postanowiłem się nim podzielić.
4. Podziękowania...
...dla wszystkich, dzięki którym Linux jest taki fajny!
Kent Lewis
kent@fiona.umsmed.edu
5. Od tłumacza
5.1 Inne źródła informacji
Polskie tłumaczenia pozostałych dokumentów HOWTO znajdują się pod adresem
http://www.jtz.org.pl/. Z pewnością szczególnie zainteresuje Cię
INN+SUCK mini HOWTO, które znacznie poszerza informacje zawarte
w niniejszym dokumencie. Problem czytania newsów off-line rozwiązać możesz też
za pomocą odpowiedniego czytnika, więcej na ten temat znajdziesz w
FAQ grupy pl.news.czytniki.
5.2 O tłumaczeniu
Dokument oryginalny dostępny jest wyłącznie w formacie txt (patrz
http://sunsite.unc.edu/LDP/); znaczniki sgml i podział
na rozdziały pochodzą ode mnie.
Copyright for the translation:
(c) 2001 by Tomasz `tsca' Sienicki, tsca@edb.dk
Wyszukiwarka
Podobne podstrony:
tiny news pl 4Tiny News pltiny news pl 1tiny news pl 3tiny news pltiny news pl 5tiny news pl 2EHDN News 072009 pltempest wil pl aktual newswil pl aktual news komp poklwil pl aktual news prost ?TI 99 08 19 B M pl(1)bootdisk howto pl 8BORODO STRESZCZENIE antastic plnotatek pl sily wewnetrzne i odksztalcenia w stanie granicznymWSM 10 52 pl(1)więcej podobnych podstron