<ja.komp>

Firefox

Y U no validate

Pot, trąd

Jabber vs GaduGadu |

Ustrojstwa

repozytoria różne, własne | iptables hashlimit | C++ | Sitemonitor | nntp-notify |

HCI

Praca magisterska | Seminarium (art. + prezentacja) | PlasticPage | PagePortal |

NNTP Notifier


polski

Ogólnie

NNTP Notifier jest prostym narzędziem składającym się z dwóch skryptów -- jednego w Bashu i jednego w Perlu. Skrypt w Bashu -- nntp-requester.sh, odpowiada za komunikowanie się z serwerami grup dyskusyjnych i informowanie użytkownika o nowych wiadomościach. Korzysta przy tym z analizy komunikacji wykonywanej przez skrypt perlowy -- nntp-response-analyzer.pl. Ten kodem wykonania sygnalizuje wynik analizy -- brak nowych postów, nowe posty, błąd.

Komunikacja z serwerem

Na poziomie TCP/IP łączność zapewnia netcat traditional. Póki co zestaw użytych opcji jest też kompatybilny z netcat OpenBSD.

Wiadomości

Do serwera przekazywane są polecenia odpytujące o numery najnowszych postów na wybranych grupach dyskusyjnych. Numery te są porównywane z wcześniej zapamiętanymi a składowanymi w podkatalogu mail. Jeśli wystąpi sytuacja inna niż brak nowych postów, użytkownik jest o tym informowany.

Informowanie użytkownika

W zależności od ustawienia zmiennej USEXMESSAGE w nntp-requester.sh użytkownik jest informowany tylko w konsoli (0) albo jest mu wyświetlana informacja z logiem w graficznym oknie (1). W tym drugim przypadku w skrypcie zostanie domyślnie użyta komenda gmessage -- odpowiednik xmessage korzystający z GTK+ -- żeby okno wyglądało ładniej.

Dodatkowo warto zauważyć, że pliki z informacją o numerach postów są przechowywane w takim formacie, jaki stosuje między innymi Mozilla Thunderbird (mbox), w związku z czym do generowania graficznego powiadomienia z dźwiękami i innymi bajerami można użyć gotowego narzędzia Mail Notification.

Pliki i katalogi
f nntp-requester.sh - komunikacja z serwerami (ten skrypt jest głównym programem)
f nntp-response-analyzer.pl - analiza komunikacji
f start - link symboliczny do głównego programu
d conf - ustawienia serwerów
d mail - lista grup z numerami najnowszych postów
d log - log np. do wyświetlenia za pomocą gmessage
f cd.desktop - przykładowy plik skrótu na pasek/pulpit Gnome -- warto zajrzeć do środka
Definicja obserwowanych grup dyskusyjnych

Grupy definiuje się w katalogu conf w ten sposób, że nazwa pliku oznacza adres serwera, natomiast w samym pliku znajduje się lista grup do obserwowania -- każda w nowej linijce.

Ustawienia i dodatki
nntp-requester.sh:
DELAY - opóźnienie między kolejnymi sprawdzeniami, czy są nowe posty
USETMP - czy na czas działania programu składować log i mail w katalogu tymczasowym

Opcja USETMP związana jest z tym, że posiadam w laptopie dysk SSD i stwierdziłem, że nie chcę go zbyt szybko zużyć -- ograniczam więc ilość zapisów na niego. Katalog /tmp trzymam w pamięci:

tmpfs on /tmp type tmpfs (rw,size=128m)
Jeśli opcja USETMP jest włączona (1), podczas startu skrypt kopiuje katalogi log i mail do wskazanego katalogu tymczasowego (TMPDIR). Podczas kończenia swej pracy -- zamknięcie okna z konsolą, break -- skrypt powinien przekopiować tymczasowe wyniki z powrotem do swoich pierwotnych katalogów. Powinno się tak dziać dzięki ustawieniu pułapki na sygnał EXIT w skrypcie bashowym:
trap do_dump_tmp EXIT

Ściągnij

English

Summary

NNTP Notifier is a simple tool consisting of two scripts -- one written in Bash and one in Perl. The Bash script -- nntp-requester.sh, is responsible for talking to news servers and notifying the user about changes. It uses communication analysis made by the Perl script -- nntp-response-analyzer.pl. The latter outputs a status report by it's execution return code -- no news, there is some or an error.

Communicating with a server

netcat traditional is responsible for establishing a connection on the TCP/IP level. Parameter set used is compatible with netcat OpenBSD also.

News

The script sends commands to servers to retrieve numeric IDs of the newest messages. These numbers are compared to ones stored in the mail directory. If any other than the "no news" situation occurs the user is informed about it.

Notification

Depending on the USEXMESSAGE variable value in the nntp-requester.sh script user is notified only on the console (0) or a window with a message pops up (1). The second method executes the gmessage application -- a variant of the xmessage program but using the GTK+ library -- just to make the pop-up look pretty.

It's worth mentioning that files with message IDs are stored in the same format as the Mozilla Thunderbird mboxes. This allows you to use a more generic and better known application -- Mail Notification, to use graphic and audio notification.

Files and directories
f nntp-requester.sh - communication with servers (this is the main program)
f nntp-response-analyzer.pl - communication analysis
f start - a symbolic link to the main program
d conf - configuration
d mail - groups list with the newest messages IDs
d log - the log displayed by the gmessage application
f cd.desktop - an example of an application launcher for Gnome toolbar/desktop -- it's worth looking inside
Watched newsgroups settings

Newsgroups to watch are defined in the conf directory. Every filename is equal to the server address. In each file you can define newsgroups -- one per line.

Settings and tweaks
nntp-requester.sh:
DELAY - the delay between two subsequent checks
USETMP - should we use the temporary directory

The USETMP option was added because of my laptop's SSD. I thought it would be better not to wear off the disk to quickly -- so I decreased the number of writes to it. The /tmp directory resides in memory:

tmpfs on /tmp type tmpfs (rw,size=128m)
If the USETMP option is enabled (1) the script copies the log and the mail directories to a chosen temporary directory (TMPDIR) during startup. When the script shuts down -- by closing the terminal window or sending break -- the script should copy its temporary data back to its original location. It should happen because of a trap on the EXIT signal in the Bash script:
trap do_dump_tmp EXIT

Download