tiny news pl 3 7JOAZ233NHP5OYTXE2LT7SMOSVAEYVWKJYOMTCA


Newsy-Minimum: Opis sytemu ,,Newsy-Minimum'' Następna strona Poprzednia strona Spis treści 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ć. Następna strona Poprzednia strona Spis treści

Wyszukiwarka

Podobne podstrony:
Tiny News pl (2)
tiny news pl 4
Tiny News pl
tiny news pl 1
tiny news pl
tiny news pl 5
tiny news pl 2
EHDN News 072009 pl
tempest wil pl aktual news
wil pl aktual news komp pokl
wil pl aktual news prost ?
TI 99 08 19 B M pl(1)
bootdisk howto pl 8
BORODO STRESZCZENIE antastic pl
notatek pl sily wewnetrzne i odksztalcenia w stanie granicznym
WSM 10 52 pl(1)

więcej podobnych podstron