9. PRYWATNA SKRZYNKA ELEKTRONICZNA
![]()
Skrzynka
elektroniczna programu pozwala na zapis prywatnych wiadomości i ich dalsz±
retransmisję w sieci. Dodatkowo możliwa jest także automatyczna rejestracja
wiadomości za pomoc± funkcji odczytu ("Mail scan") lub poprzez monitor selektywny.
W nagłówkach zapisywanych wiadomości podawany jest czas UTC,
przy czym różnica czasu lokalnego w stosunku do UTC musi być podana w konfiguracji
programu. Wiadomości w skrzynce s± uporz±dkowane w postaci rubryk, analogicznie jak
w regularnych skrzynkach sieci. Wybór i założenie odpowiednich rubryk należy do
operatora stacji. Rubryki niepoż±dane wymienione s± w zbiorze BADNAMES.WGT.
Retransmisja poczty wymaga dokładnego wypróbowania w celu uniknięcia zakłóceń w
pracy regularnych stacji sieci pakiet-radio. Zestaw rozkazów obsługi skrzynki i
ich składnia s± wzorowane na systemie Die-Box. W obecnej wersji nie można wywoływać
programów dodatkowych (znanych np. ze skrzynek BCM pod nazw± RUN).
Pisownia rozkazów jest dowolna - program nie odróżnia
dużych i małych liter. Większość rozkazów może być skrócona do części podanej w
instrukcji dużymi literami. Niektóre z rozkazów s± dostępne tylko dla operatora
stacji względnie dla osób którym przyznano uprawnienia operatora. Część rozkazów
(np. odczyt, kasowanie) wymaga podania jako parametru zakresu numerów wiadomości.
Użycie numeracji nie różni się od stosowanej w skrzynkach innych systemów.
Przykłady:
2-5 - oznacza wiadomości od drugiej do pi±tej.
1- - oznacza wszystkie wiadomości wł±cznie z pierwsz±.
-3 - oznacza wiadomości o numerach mniejszych lub równych 3.
10 - oznacza pojedyńcz± wiadomość.
W rozkazie CHECK można jako parametr podać hasło selekcji, np.
CHECK 1-100 < JNOS
Hasło poszukiwane jest w tytule wiadomości lub w adresie nadawcy (może to być
więc znak wywoławczy).
Parametry nieobowi±zkowe podane s± w nawiasach kwadratowych
(nie należy ich podawać w rozkazie). Alternatywne parametry rozkazów oddzielone s±
pionow± kresk±.
Spis rozkazów:
BBS - wywołuje informacje o znanych skrzynkach elektronicznych. Jest ona zawarta
w zbiorze HPATH.WGT. Jako parametr można podać znak skrzynki. Rozkaz BBS < WinGT
wywołuje spis stacji, w których opisie znajduje się symbol WinGT.
BID [identyfikator][-] - pozwala sprawdzić, czy w skrzynce występuje wiadomość o
podanym identyfikatorze BID. Podanie po identyfikatorze znaku minus powoduje
skasowanie wiadomości. Do jej odzyskania służy rozkaz NEU.
BIDCHECK - odpowiada rozkazowi CHECK z tym, że zamiast daty zapisu wiadomości
wyświetlany jest jej identyfikator BID. Może to ułatwiać automatyczn± selekcję
wiadomości. Dopuszczalnymi skrótami rozkazu s± BC lub CHECKB.
CHECK [rubryka][zakres][< hasło] - wyświetla spis wszystkich wiadomości albo spis
wiadomości spełniaj±cych podane kryteria.
Przykład: CHECK TCPIP 1-10
DEFLT - wyświetla domyślny czas składowania wiadomości w rubrykach, dla których
brak jest definicji w zbiorze RUBRIKEN.WGT. Wartość ta zawarta jest w zbiorze
WINGT.CFG w linii DEFAULTLT.
DES ON
ERASE [nazwa rubryki][zakres] - służy do logicznego skasowania wiadomości.
Wiadomości mog± być kasowane przez nadawcę, adresata albo operatora stacji.
ESTAT - wywołanie statystyki wypełnienia rubryk częściowo w postaci graficznej.
FORward [rubryka][zakres] > adres - rozkaz dostępny dla operatora. Pozwala on na
retransmisję wybranych wiadomości. Przykład: FOR TNC 1-5 > OE1KDA.
GARBAGE [+] - rozkaz dostępny tylko dla operatora. Powoduje fizyczne skasowanie
wiadomości usuniętych za pomoc± rozkazu ERASE. Znak plus powoduje skopiowanie
także nie zmienionych rubryk.
GTODOS - rozkaz dostępny tylko dla operatora. Służy do przejścia na poziom
systemu emulacji operacyjnego DOS. Do dyspozycji stoj± rozkazy: DIR, CD, MD,
MKDIR, RD, RMDIR, SPGET, DPGET, COPY, DEL, REN, VER i EXIT. Rozkazy SPGET i
BPGET służ± do odczytu zbiorów dwójkowych w formatach odpowiednio SP i DP.
HEAP [0|1|2] - powoduje wyświetlenie pojemności wolnego obszaru hałdy. Rozkaz
ma znaczenie diagnostyczne. Do jego wywołania konieczny jest poziom uprawnień
operatora (127).
HELP [rozkaz]- wywołanie pomocy. Teksty pomocy zawarte s± w zbiorze HELP.HLP
znajduj±cym się w katalogu \MAIL\HELP. Podanie jako parametru nazwy rozkazu
powoduje wywołanie bardziej szczegółowych informacji. Informacje te s± zawarte
w zbiorach nosz±cych nazwę rozkazu i rozszerzenie HLP, np. ERASE.HLP. Teksty
pomocy mog± zawierać metasymbole identyczne jak w tekstach powitalnych
(patrz: WINGT.CON).
HOLD - wywołanie spisu wiadomości zatrzymanych do dyspozycji operatora.
INFO - służy do wywołania informacji znajduj±cej się w zbiorze WINBOX.INF.
Tekst informacji może zawierać metasymbole.
ISREG - informuje o tym, czy operator korzysta z zarejestrowanej wersji WINGT.
LEVEL znak uprawnienia - służy do przyznania korespondentom odpowiednich
uprawnień. Operator stacji otrzymuje poziom 127 - poziom ten jest automatycznie
dostępny z konsoli.
LIFETIME rubryka [zakres] #wartość - ustala czas składowania wiadomości lub
dokonuje jego zmiany. Przykład LIFETIME TCPIP 1-100 #30.
Dopuszczalnym zakresem jest #0 do #365. Zero oznacza czas nieograniczony.
List [rubryka][zakres] - wywołanie spisu treści podanej albo bież±cej rubryki.
LOG [znak] - wywołanie wyciagu z dziennika stacji.
LT - odpowiada rozkazowi LIFETIME.
MBX rubryka zakres > @nowy_adres - powoduje retransmisję wiadomości pod nowy
adres. Mog± to być np. wiadomości błędnie zaadresowane.
MSG znak tekst - nadanie krótkiej wiadomości do użytkownika poł±czonego ze
skrzynk±, np. MSG oe1kda Cześć!.
MYBBS znak - podanie znaku skrzynki macierzystej.
NAME imię - podanie imienia przez użytkownika. Dane odnosz±ce się do użytkowników
stacji znajduj± się w zbiorze USERLOG.BIB.
PRINT [rubryka][zakres] - wydruk spisu treści podanej albo bież±cej rubryki.
PS - informacja o stacjach poł±czonych ze skrzynk±.
PW [hasło_dostępu] [-] - pozwala na wprowadzenie, zmianę lub skasowanie hasła
dostępu do skrzynki.
PWTYPE BCM|MD2|MD5|DES - służy do wyboru algorytmu generacji i sprawdzania
hasła dostępu. Najlepsze zabezpieczenie zapewniaj± ostatnie dwa algorytmy.
Quit - przerwanie poł±czenia. Nadawany jest tekst pożegnalny znajduj±cy się w
zbiorze WINBOX.DIS. Tekst może zawierać metasymbole.
READ [rubryka] zakres - odczyt wiadomości.
READLONG - odpowiada rozkazowi READ z tym, że wyświetlany jest pełny nagłówek
wiadomości.
RELEASE - udostępnienie dla wszystkich wiadomości zatrzymanych dla operatora
(patrz HOLD).
RELOAD - powoduje ponowne wczytanie zbiorów zawieraj±cych informacje organizacyjne
np. RUBRIKEN.WGT po dokonaniu w nich zmian.
Możliwymi parametrami s± SF (zbiory dotyczace retransmisji poczty), PATH (WINGT.LIN),
TRANSFER (TRANSFER.WGT), BADNAMES (BADNAMES.WGT), RUBRIKEN (RUBRIKEN.WGT) i ALL
(wszystkie). W nawiasach podano nazwy wczytywanych zbiorów.
REPLY [rubryka numer] - służy do nadania odpowiedzi na ostatnio przeczytan±
albo wymienion± wiadomość.
REROUTE - bez parametrów służy do sprawdzenia czy spis adresów dcelowych zawarty
w zbiorze I.IDX jest aktualny,czy tez wiadomości musz± być przekazane pod inny
adres. Parametr "zakres < skrzynka_docelowa" służy do zmiany adresu docelowego
dla wybranych wiadomości.
RESLOG - służy do wczytania protokółu resynchronizacji do rubryki RESYNC.
SEND znak @skrzynka #czas tytuł - służy do nadania wiadomości. W przypadku
opuszczenia szasu składowania przyjmowana jest domyślnie wartość 10 dni.
Opuszczenie w adresie części @skrzynka powoduje nadanie wiadomości do skrzynki
macierzystej adresata (podanej za pomoc± rozkazu MYBBS) albo w przypadku braku
tej informacji pozostawienie wiadomości w lokalnej skrzynce.
SETPW znak hasło|[-] - wprowadzenie hasła dostępu dla użytkownika lub jego
skasowanie.
SF znak - ręczne rozpoczęcie retransmisji poczty do danej skrzynki.
SFEXP - Rozkaz dostępny jest tylko dla operatora i powoduje zapis wiadomości
przeznaczonych do retransmisji w zbiorze o rozszerzeniu EXP, zamiat rzeczywistej
retransmisji. Zbiór pod nazw±
SFIMP - rozkaz dostępny jest tylko dla operatora i służy do wczytania do skrzynki
wiadomości ze zbioru EXP.
SFPW znak +|- - wł±czenie lub wył±czenie automatycznej generacji hasła dostępu
używanego w trakcie retransmisji poczty.
SHOWFILT - wyswietla spis zainstalowanych filtrow wiadomości. Filtry te musz±
znajdować się w katalogu FILTER.
STAT - wywołanie statystyki dotycz±cej pracy skrzynki.
SYSOP - rozpoczecie procedury zgłoszenia operatora skrzynki. Format zgłoszenia
odpowiada formatom TNN i BCM.
SYSCHK - sprawdzenie czy otrzymano uprawnienia. Odpowiedzi± jest słowo "OK".
TRANSFER rubryka zakres > rubryka_docelowa [@skrzynka] - służy do kopiowania lub
przesuwania wiadomości w skrzynce. Biuletyny s± przesuwane do rubryki docelowej,
natomiast wiadomości prywatne s± kopiowane.
USER [znak] - wywołanie spisu użytkowników wraz z ew. dodatkowymi informacjami.
UTC - służy do wprowadzenia różnicy czasu w stosunku do UTC.
Zbiory konfiguracyjne skrzynki musz± znajdować się w
katalogu MAIL.
Zbiór BADNAMES.WGT zawiera spis rubryk nie przyjmowanych
przez skrzynkę.
BOXLOG.WGT jest zakładany automatycznie i zawiera spis
wiadomości znajduj±cych się w skrzynce. Spis ten wykorzystywany jest przez rozkaz
CHECK.
HPATH.WGT zawiera informacje o znanych skrzynkach sieci i
trasach poł±czeń. Informacje te odczytywane s± z nagłówków otrzymanych wiadomości
(z linii zawieraj±cej oznaczenie "R:"). Informacje te wykorzystywane s± w trakcie
retransmisji poczty dodatkowo do tras wprowadzonych przez operatora. Mapa
poł±czeń może być wyświetlona w oknie "Mapa" ("BBS MAP"). Zawartość okna może
być przesuwana za pomoc± pasków lub klawiszy znacznika, POS1 i END. Podwójne
zaznaczenie okna za pomoc± prawego lub lewego klawisza myszy powoduje jego
powiększenie wzgl. zmniejszenie. Ten sam efekt osi±gany jest za pomoc± klawiszy
"+" lub "-" na bocznej klawiaturze numerycznej. Zaznaczenie stacji mysz± przy
naciśniętym klawiszu CTRL powoduje wyświetlenie znanych informacji o niej. Okno
informacyjne zamykane jest za pomoc± przycisku "OK".
MSGIDLOG.BIB zawiera spis identyfikatorów biuletynów
(BID).
LISTSERV.WGT zawiera spisy adresów (pseudorubryk) dla
wewnętrznego rozdziału poczty. Dla każdej z pseudorubryk należy następnie założyć
zbiór o tej samej nazwie i rozszerzeniu LST zawieraj±cy rozdzielnik (znaki i
adresy docelowe użytkowników). Wiadomości adresowane do każdej z wymienionych
pseudorubryk s± kopiowane do prywatnych rubryk adresatów wg. rozdzielnika.
Przykład: spis LISTSERV.WGT zawiera nazwę GRUPA_A. W zbiorze GRUPA_A.LST
znajduje się zapis OE1KDA @OE1XAB.AUT.EU itd. Wiadomość nadana pod adres
GRUPA_A (S GRUPA_A ....) zostanie więc przesłana m.in do OE1KDA jako wiadomość
prywatna.
RUBRIKEN.WGT zawiera spis rubryk, przyznanych im czasów
składowania wiadomości i niezbędnych uprawnień dostępu, składnia
RUBRYKA:CZAS:UPRAWNIENIA.
Rubryki nie wymienione w zbiorze otrzymuj± domyślne czasy składowania.
TCPIP.BOX zawiera spis stacji TCPIP.
TRANSFER.WGT zawiera przyporz±dkowanie nazw rubryk
lokalnych do adresów otrzymywanych w trakcie retransmisji poczty, np. TNC2 TNC
powoduje, że wszystkie wiadomości przeznaczone do rubryki TNC2 znajduj± się w
lokalnej rubryce TNC. Ułatwia to zachowanie przejrzystej struktury rubryk.
USERLOG.BIB zawiera informacje o znanych użytkownikach
skrzynki. Należ± do nich znak wywoławczy, imię, znak skrzynki macierzystej i
czas ostatniej ł±czności.
WINBOX.CON zawiera teksty powitalne. W tekstach mog±
znajdować się metasymbole.
WINBOX.DIS zawiera teksty pożegnalne.
WINBOX.INF zawiera informacje o skrzynce.
CMDLEVEL.WGT zawiera spis minimalnych poziomów uprawnień
koniecznych dla skorzystania z odpowiednich rozkazów skrzynki. Poziomy uprawnień
nie mog± być niższe aniżeli wartości graniczne zakodowane w programie. Zapobiega
to np. przed skorzystaniem z rozkazów zarezerwowanych dla operatora skrzynki.
REJECT.WGT - zawiera kryteria odrzucania poczty otrzymywanej
w drodze retransmisji. Mog± to być nazwy rubryk (oznaczone w zbiorze symbolem "%RUBRYKA"),
znaki skrzynek z których pochodzi poczta (symbol "@ZNAK"), znaki nadawców ("<ZNAK")
albo identyfikatory ("$BID").
Każda z linii zbioru zawiera jeden z podanych symboli wraz
z dalszymi danymi - znakami, nazwami rubryk itp. Przykłady:
%PORNO, %SOFTWARE@WW, <DG2MMV.
Katalog MAIL zawiera następuj±ce katalogi podrzędne:
- HELP - znajduj± się w nim teksty pomocy ogólne (zbiór HELP.HLP) i szczegółowe
(zbiory rozkaz.HLP). Zawartość zbiorów jest dowolna pod warunkiem, że będ± one
stanowić rzeczywist± pomoc dla użytkowników.
- SF - znajduj± się w nim zbiory *.SF zawieraj±ce informacje o trasach retransmisji
poczty. Zbiory te s± wczytywane tylko w momencie wywołania programu. Po dokonaniu
zmian należy więc ponownie uruchomić program.
Retransmisja poczty w zależności od jej adresu docelowego
(członu @skrzynka lub @obszar, np. @SP6KBL albo @POL) wymaga wprowadzenia przez
operatora dodatkowych informacji znajduj±cych się w zbiorach znak.SF (np. SP6KBL.SF).
Format zbiorów przejęty został z programu DP. Operator stacji musi zwrócić szczególn±
uwagę na poprawność informacji zwi±zanych z retransmisj± i starannie skontrolować jej
przebieg w celu uniknięcia zakłóceń w pracy sieci.
Zbiory zawieraj± następuj±ce informacje, poprzedzone słowami
zarezerwowanymi:
- SFPARMS - częstotliwości i czasy poł±czeń z dan± skrzynka sieci. Podane jest
9 parametrów, z których tylko część jest wykorzystywana przez WINGT. Parametrami
tymi s± w kolejności:
- odstęp czasu (częstotliwość poł±czeń) w minutach
- numer kontrolera tnc
- warunek - 0 brak poł±czeń, 1 w momencie napływu wiadomości, 2 jak w (1) albo
po upływie czasu "C2"
- maks. liczba użytkowników, parametr nie używany
- maks. liczba biuletynów, parametr nie używany
- maks. liczba propozycji, parametr nie używany
- czas C2, maksymalny czas oczekiwania dla warunku 2
- start, godzina poczatku, np. 1510 albo 0000
- zakończenie, najpóźniejsza godzina zakończenia, np. 2359.
Znaczenie słów zarezerwowanych:
- FOR - podaje adresy albo nazwy rubryk retransmitowanych do danej skrzynki.
- NOT - podaje adresy pomijane w retransmisji.
- NOTRUBRIK - podaje nazwy rubryk pomijane w retransmisji.
- NOTFROM - podaje znaki skrzynek, z których nie jest przyjmowana poczta.
Przykład (zawartość SP6KBL.SF):
FOR SP*
wszystkie wiadomości adresowane do stacji SP,
FOR EU POL WW
wszystkie wiadomości adresowane do @EU, @POl, @WW
NOTFROM OK1XYZ
wiadomości pochodz±ce od OK1XYZ nie s± retransmitowane dalej,
NOTRUBRIK GIF
wiadomości z rubryki GIF nie s± retransmitowane,
NOT THEBOX
wiadomości adresowane do @THEBOX nie s± retransmitowane.
Dla każdej ze skrzynek partnerskich (tu przykładowo SP6KBL)
należy założyć zbiór o nazwie znak.SF i podanej powyżej zawartości. W zbiorze
WINGT.CFG należy podać nazwę katalogu zawieraj±cego zbiory w postaci:
MAILDIR=C:\WINGT\MAIL
lub podobnie w zależnosci od instalacji programu.
W powyższym przykładzie zbiory *.SF musz± więc znajdować się w katalogu
C:\WINGT\MAIL\SF. Automatyczne poł±czenie ze skrzynk± SP6KBL (i każd± inn±) wymaga
umieszczenia w zbiorze SP6KBL wpisu "NODE=KBL_BOX". Zbiór WINGT.LIN musi też
zawierać wpis trasy "=KBL_BOX..".
Program WINGT może odczytywać imiona nadawców i znaki
ich skrzynek macierzystych z nagłówków retransmitowanej poczty podobnie jak w
przypadku bazy danych "WP" skrzynek F6FBB (patrz: "Literatura").
Treść i znaki nadawców lub adresatów wiadomości poczty
otrzymywanej w drodze retransmisji lub wpisywanej lokalnie do skrzynki mog± być
sprawdzane za pomoc± dodatkowych programów filtrujacych. Pozwala to na
automatyczne kasowanie lub zatrzymywanie do użytku operatora wiadomości
zawieraj±cych wybrane słowa, terminy lub adresy w celu zapobieżenia
rozpowszechnianiu poczty o treści obraźliwej lub niezgodnej z przepisami o
ł±czności amatorskiej. Odczyt wiadomości zatrzymanych wymaga poziomu uprawnień
operatora lub co najmniej poziomu 120. Wiadomości zatrzymane s± niewidoczne
dla użytkowników o niższych poziomach uprawnień. Filtry używane musz± być
zainstalowane w katalogu FILTER natomiast pozostałe rozprowadzane z porgramem
w katalogu UNUSED. Operator może więc wybrać zestaw aktywnych filtrow zgodny z
potrzebami. Zainstalowanie nowego filtru wymaga skopiowania go do katalogu
FILTER i ponownego uruchomienia programu WINGT/WINBOX.
Filtr służy do poszukiwania w tekstach wybranych
haseł lub ich fragmentów. Po ich znalezieniu podejmowana jest akcja ustalona
przez operatora. Działanie filtru polega na porównywaniu ciagów liter
stanowi±cych hasła z tekstem, dlatego też warto dobrze przemyśleć wybór
haseł tak aby np. fragmenty znalezionych słów nie powodowaly błędnej reakcji.
Zbyt duża liczba haseł odbija się niekorzystnie na szybkości pracy. Zbiór
haseł i poż±danych reakcji zawarty jest w zbiorze GREPBAD.TXT o następujacym
formacie:
H/D hasło, gdzie H oznacza zatrzymanie wiadomości a D jej skasowanie. Wiadomości
s± kasowane dopiero po znalezieniu w nich co najmniej 10 niedozwolonych słów lub
ich powtórzeń.
Przykłady:
D głupek
powoduje kasowanie wiadomości zawieraj±cych słowo "głupek".
D głup
powoduje skasowanie wiadomości zawieraj±cych sylabę "głup", a więc także i niewinne
słowo "głupstwo".
H PZK
powoduje zatrzymanie do przejrzenia przez operatora wiadomości, które mog± zawierać
wypowiedzi nt. PZK.
Powoduje zatrzymanie wiadomości pochodz±cych od nadawcy
o nieprawidłowym znaku (patrz: spis dozwolonych znaków).
Programy filtrów moga być pisane w dowolnym jezyku i
kompilowane za pomoc± dowolnego kompilatora pozwalaj±cego na generowanie
16-bitowych bibliotek DLL. Poniższy przykład napisany jest dla kompilatora
Delphi, doswiadczeni programiści mog± jednak bez trudu wykorzystać go do
pisania filtrów w jezyku "C":
Library Wgtplug;
Uses SysUtils, WinTypes, WinProcs;
Const md_Forward = $01;
md_Bin = $02;
md_Comp = $04;
md_Trans = $08;
md_NoUnDel = $10;
. md_Voice = $20;
{--- MsgFlags ---}
mf_Ack = $01;
mf_Private = $02;
mf_Bulletin = $04;
mf_System = $08;
mf_Readed = $10;
mf_Hold = $20; {--- dodano 17.6.97 ---}
HFILE_ERROR = $FFFF;
Type TSenderStr = String[6];
TBoardStr = String[8];
TBidStr = String[12];
TMBXStr = String[40];
TTitleStr = String[80];
CONST fa_OK = $0000;
fa_Hold = $0001;
fa_Delete = $0002;
TheFilterVersion = $0100;
TheFilterInfo = 'Beta-Demofilter fuer WinBox und WinGT >= 3.00 (c)1997 Gerd Mitlaender';
Function FilterVersion: Word; export;
Begin
Result:= TheFilterVersion;
end;
Function FilterInfo(AInfo: PChar; MaxLen: Word): Word; export;
Begin
Try
StrPCopy(AInfo, Copy(TheFilterInfo, 1, MaxLen));
Result:= strlen(AInfo);
Except
Result:= 0;
end;
end;
function FilterProc(Var BID : TBidStr;
Var Destination : TBoardStr;
DestIsCall : Bool;
Var Sender : TSenderStr; { 24 senders call }
SenderIsCall : Bool;
Var MBX_field : TMBXStr; { 32 @mbx }
MBXIsCall : Bool;
Var Title : TTitleStr; { 74 subject }
Var Datum : LongInt;
Var TXDatum : LongInt;
Var LifeTime : Word; {164 lifetime }
Var TXlifetime : Word; {166 original lifetime }
Var BodyCRC : Word; {168 for PACSAT broadc.}
Start : LongInt; {170 offset in .IFO}
PackSize : LongInt; {174 stored size }
Size : LongInt; {178 original size }
Var RXQrg : LongInt; {182 receive QRG }
Var RXFrom : TSenderStr; {186 received from }
Var Deleted : boolean; {194 delete flag }
Var Mode : byte; {195 binary, comp.type}
Var Level : byte; {196 min. level for read}
Var Fwdct : byte; {197 n * forwarded }
Var Gate : byte; {198 via tnc (unused)}
Var Msgflags : byte; {199 special }
Var AHandle : THandle;
Var TheStart,
TheLen : LongInt): WORD; export;
Var AText : Array[0..255] of Char;
Written: Word;
Begin
Try
Result:= fa_OK;
{--- szukanie do końca zbioru ---}
_llseek(AHandle, 0, 2);
{--- pisanie tekstu ---}
StrCopy(AText, #13#10#13#10'Filtered by: '#13#10'*** ');
StrCat(AText, TheFilterInfo);
StrCat(AText, ' ***'#13#10);
{--- ustalenie nowej długości zbioru ---}
Written:= _lwrite(AHandle, AText, StrLen(AText));
If (Written <> HFILE_ERROR) Then
Begin
TheLen := TheLen + Written;
end;
Except
Result:= fa_OK;
end;
end;
Exports FilterVersion,
FilterInfo,
FilterProc;
begin
end.
Biblioteka filtru musi zawierać trzy dostępne z
zewn±trz funkcje o nazwach FILTERVERSION, FILTERINFO i FILTERPROC.
Funkcja FILTERVERSION zwraca w odpowiedzi numer
wersji API, dla której jest przeznaczony. W przypadku programów WINGT/WINBOX
jest to $0100 lub 0x0100. Jest to zmienna typu WORD (Pascal, Delphi) lub
"unsigned int" ("C") - o długości 2 bajtów.
Funkcja FILTERINFO zwraca w odpowiedzi tekst opisuj±cy
biblioteke DLL. Jest to zmienna łańcuchowa (łańcuch znaków, ang. string) typu
PCHAR - tzn. zakończony znakiem 0x0 wg. konwencji języka "C". Długość tekstu
znajduje się w zmiennej typu WORD lub "unsigned int".
Funkcja FILTERPROC jest własciw± funkcj± filtruj±c± -
tzn. wykonuje zamierzone zadanie. Wynik działalności opisany jest przez wartość
odpowiedzi - stał± fa_OK ($0001 lub 0x0001), fa_Hold ($0002 lub 0x0002) albo
fa_Delete ($0003_albo 0x0003). Znaczenie odpowiedzi wynika z ich nazw i
nie wymaga dalszego wyjaśnienia.
Identyfikatory zbiorów (dla funkcji Windows _lread,
_lwrite itp.) zwi±zane z odczytem lub zapisem w zbiorze przekazywane s± w
zmiennej "AHandle". Pocz±tek i koniec analizowanej wiadomości przekazywane s±
za pomoc± zmiennych "TheStart" i "TheLen" typu LongInt lub "long". Znaczenie
zmiennych wynika z ich nazwy i nie wymaga komentarzy. Zmienna MODE kombinowana
jest ze stałymi zaczynaj±cymi się od "md_" za pomoc± funkcji "or" natomiast
zmienna "MsgFlags" - z "mf_".
Stałe o nazwach zaczynaj±cych się od "md_" opisuj±
właściwości wiadomości (ang. mode), natomiast stałe o nazwach zaczynaj±cych się
od "mf_" - stan wiadomości.
Definicje j.np. TSenderStr odpowiadaj± definicjom
zmiennych łańcuchowych w języku Pascal, tzn. długość łancucha znajduje się w
pierwszym bajcie. W powyższym przykładzie TSenderStr [6] oznacza zmienn± o
długości 7 bajtów, z tym że zasadnicza treść znajduje się w bajtach o numerach
1 do 6, natomiast długość w bajcie o numerze 0. W odróżnieniu od standardu
języka "C" na końcu brak jest znaku 0x0.
Biblioteka kompresji COMPDLL.DLL napisana jest częściowo
w języku Pascal (deklaracje) a częściowo w jezyku Asembler (właściwa treść
podprogramów). Zawarte w niej podprogramy mog± być wykorzystywane przez większ±
liczbę progamów pracuj±cych w środowisku Windows. Deklaracje biblioteki
przedstawione s± poniżej:
Unit Comp;
{$A+,B-,D+,E-,F-,G+,I-,L-,N-,O-,Q-,R-,S-,T-,V-}
{$C MOVEABLE DEMANDLOAD DISCARDABLE}
Interface
Function COMPVersion: Word;
Function COMPCode(Const Source; Len1: Word; Var Dest; Size: Word): Word;
Function COMPDecode(Const Source; Len1: Word; Var Dest; Size: Word): Word;
Implementation
Function COMPVersion; External 'COMPDLL';
Function COMPCode; External 'COMPDLL';
Function COMPDecode; External 'COMPDLL';
end.
Parametry SOURCE i DEST s± wskazaniami (ang. pointer)
adresuj±cymi obszary zawieraj±ce dane do kompresji wgzl. dane skomprymowane,
LEN1 jest długości± obszaru danych źródłowych a SIZE - maksymaln± długość
obszaru docelowego. Długość ta musi być co najmniej o 1 bajt większa od długości
obszaru źródłowego. Dane umieszczane w obszarze docelowym s± przekazywane jako
odpowiedź funkcji. Funkcja COMPVersion zwraca w odpowiedzi numer wersji - część
przed przecinkiem w wyższym bajcie natomiast część po przecinku - w niższym.
Przykład kompresji (maksymalna długość tekstu źródłowego
nie może przekraczać 254 znaków):
Byte(ZStr[0]):= COMPCode(QStr[1], Byte(QStr[0]), ZStr[1], SizeOf(ZStr)-1);
Przykład dekompresji:
Byte(ZStr[0]):= COMPDecode(QStr[1], Byte(QStr[0]), ZStr[1], SizeOf(ZStr)-1);
Pierwszy bajt skomprymowanego tekstu zawiera jego
długość - 1. Zawartość 255 oznacza tekst nie skomprymowany. W przypadku obróbki
zbiorów dwójkowych może się zdarzyć, że zawartość pierwszego bajtu nie odpowiada
podanym kryteriom. Dlatego też mozna podj±ć próbę dekompresji danych wygl±daj±cych
na skomprymowane. Jeżeli długość tekstu zdekomprymowanego jest dokładnie o jeden
bajt większa od długości tekstu źródłowego oznacza to, ze zbiór źródłowy był
skomprymowany.
Poziomy uprawnień mog± być przyznawane tylko przez
operatora stacji i maj± na celu ograniczenie dostępu użytkowników do poszczególnych
rubryk skrzynki. Dopuszczalnym zakresem wartości jest 1 do 127. Operator stacji w
trakcie dostępu z konsoli lub po zgłoszeniu się zdalnym otrzymuje zawsze poziom
równy 127. Minimalne uprawnienia dostępu do rubryk skrzynki podane s± w zbiorze
RUBRIKEN.WGT. Wartości± domyśln± jest 1. Po dokonaniu zmian w zbiorze należy
wczytać go ponownie za pomoc± rozkazu RELOAD ALL lub jeszcze raz uruchomić
program.
Poziom uprawnień dla poszczególnych korespondentów
definiowany jest za pomoc± rozkazu LEVEL znak poziom, np. LEVEL OE1KDA 100.
Korespondenci o wyższych poziomach uprawnień musz± podać właściwe hasło dostępu.
Hasła dostępu dla użytkowników mog± być wprowadzone
przez operatora za pomoc± rozkazu SETPW lub przez użytkowników za pomoc±
rozkazu PW (patrz: spis rozkazów). Operator może też wprowadzić hasła
ograniczaj±ce dostęp do retransmisji poczty (patrz rozkaz: SFPW).
WINGT wczytuje do skrzynki automatycznie wiadomości
znajduj±ce się w katalogu maildir\IMPORT. Sprawdzanie zawartości katalogu
odbywa się w odstępach 5-minutowych. Wiadomości te, zapisane przez dowolny
inny program mog± być więc regularnie rozprowadzane w sieci. Wiadomości musz±
mieć następuj±cy format:
OE1KDA @OE1KDA de:SP6FIG 09.01.1995 09:35 10 0 Bytes
treść.....
Główn± różnic± w stosunku do wiadomości w skrzynce jest
brak linii zawieraj±cej identyfikator BID. Identyfikator ten jest generowany
automatycznie po wczytaniu poczty do skrzynki. Pole "de:" musi zaczynać się na
pozycji 18 w linii. Wszystkie linie musz± być zakończone znakami CR-LF.
![]()