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
- Paczka ze źródłami
- Repozytorium SVN
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
- Source package
- SVN repository