XML päringute kontroll

From ICO wiki

Probleem

Asutused, kes ei tohiks teha SOAP päringuid serveri pihta on vaja tuvastada.

On olemas dokumendivahetuskeskus(edasipidi DVK), mis vahendab asutuste erinevate dokumendihaldussüsteemide(edaspidi DHS) dokumente. Selleks, et dokumente allalaadida ning muid toiminguid teha, teeb DHS erinevaid päringuid DVKsse. Et vähendada koormust on vaja välja uurida kõik asutuste registrikoodid, kes ei tohiks tegelikult päringuid teha.

Skripti kirjeldus

Skriptile antakse sisendiks päringute logi fail. Logi failist parsitakse välja registrikoodid. Seejärel on meil olemas kõik registrikoodid, kes on päringuid teinud vastavalt logi ajavahemikule. Peale seda laeme alla asutuste registrikoodid kellele on lubatud päringuid teha. Siis võrdleme registrikoode ning saame teada, kes teevad päringuid olenemata, kas nad võivad teha.

Skript

#!/bin/bash
export LC_ALL=C

echo "Palun sisesta tehtud päringute logi faili nimi:"
# Salvestame muutujana logi faili nime, mida on tarvis töödelda, otsida
# üles tehtud päringute registrikoodid. Kasutame tsüklid ning if lauset,
# et sisendiks oleks kindlasti eksisteeriv fail.
while [ ! -f LOGI ]; do
read LOGI
if [ ! -f $LOGI ]
then
    echo "Sellist faili $LOGI ei eksisteeri! Palun sisesta õige faili nimi:"
elif [ -f $LOGI ]
then
    echo "Fail eksisteerib!"
    break
fi
done

echo "Koostan tehtud päringute registrikoodide nimekirja"
# Eraldame registrikoodid tehtud päringutest, registrikoodid asuvad 
# <xtee:asutus> ning </xtee:asutus> elementida vahel ja salvestame
# tulemused ajutisse faili tegijad2.txt
sed -n 's|.*<\(xtee:asutus\)>\(.*\)</*\1>.*|\2|p' $LOGI > tegijad2.txt

echo "Toimub registrikoodide loendus ja sorteerimine, jäetakse alles ainult unikaalsed"
# Sorteerime faili tegijad2.txt sisu nii, et jäetakse alles ainult 
# unikaalsed registrikoodid ning pannakse numbrilisse järjekorda
sort tegijad2.txt | uniq | sort -n > tegijad.txt
# Kustutame ajutise faili
rm tegijad2.txt

echo "Laen alla lubatud päringu tegijate registrikoodid: http://www.eesti.ee/portaal/dvk.asutused"
# Laeme alla aadressilt http://www.eesti.ee/portaal/dvk.asutused lehe ninf
# salvestame ajutisse faili lubatud2.txt, kusjuures wget infot ei näidata
wget -O lubatud2.txt http://www.eesti.ee/portaal/dvk.asutused --quiet

echo "Eraldame registrikoodid allalaetud tabelist"
# Ajutisest failist võtame read, mis algavad <tr><td> tagidega, seejärel
# võtame stringid/registrikoodid, mis jäävad <tr><td> ning </td><td> vahele
# ja salvestame tulemuse faili lubatud.txt
cat lubatud2.txt | grep "<tr><td>" | sed -e 's/^<tr><td>//' -e 's/<\/td><td>.*$//' > lubatud.txt
# Kustutame ajutise faili
rm lubatud2.txt

echo -e "\nJärgmised asutused ei tohiks päringuid serveri pihta teha:"
grep -v -f lubatud.txt tegijad.txt > keelatud.txt
cat keelatud.txt
echo "Need registrikoodid salvestati faili keelatud.txt"

# Kustutame ajutised failid
rm lubatud.txt tegijad.txt

Autor

--Marko Valing, AK31(2010) 10:43, 28 January 2011 (EET)