forked from mmatuska/sqlgrey
-
Notifications
You must be signed in to change notification settings - Fork 0
/
update_sqlgrey_config
executable file
·104 lines (90 loc) · 2.12 KB
/
update_sqlgrey_config
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
#!/bin/bash
# We need md5sum, diff and wget
MD5SUM=`which md5sum 2>/dev/null`
if [ $? -ne 0 ]
then
echo "md5sum not found in PATH, can't continue"
exit -1
fi
DIFF=`which diff 2>/dev/null`
if [ $? -ne 0 ]
then
echo "diff not found in PATH, can't continue"
exit -1
fi
WGET=`which wget 2>/dev/null`
if [ $? -ne 0 ]
then
echo "wget not found in PATH, can't continue"
exit -1
fi
# md5sum output parsing need a known locale
LANG=C
LC_ALL=C
MYDIR=/etc/sqlgrey
CONF=$MYDIR/sqlgrey.conf
# Get whitelists host and pidfile from conf
whitelist_host=`grep "^[[:space:]]*whitelists_host" $CONF | cut -d= -f2 | awk '{print $1}'`
if [ -z "$whitelists_host" ]
then
whitelists_host="sqlgrey.bouton.name"
fi
pidfile=`grep "^[[:space:]]*pidfile" $CONF | cut -d= -f2 | awk '{print $1}'`
if [ -z "$pidfile" ]
then
pidfile="/var/run/sqlgrey.pid"
fi
# Go into a temp directory
MYTMP=`mktemp -d ${TMPDIR:-/tmp}/sqlgrey.XXXXXX`
[ -n "$MYTMP" -a -d "$MYTMP" ] && cd $MYTMP || {
echo "Error creating temporary directory"
exit 1
}
# Setup a clean exit
clean_exit() {
cd ~sqlgrey
[ -n "$MYTMP" -a -d "$MYTMP" ] && rm -rf $MYTMP
exit $1
}
trap clean_exit 2 3 15
# Fetch MD5
$WGET -q http://$whitelists_host/MD5SUMS
# Check installed files
cd $MYDIR
TOUPDATE=`md5sum -c $MYTMP/MD5SUMS 2>/dev/null | grep FAILED | cut -d: -f1`
if [ -z "$TOUPDATE" ]
then
clean_exit 0
fi
cd $MYTMP
# copy old files
for whitelist in `cat MD5SUMS|awk '{print $2}'`
do
cp $MYDIR/$whitelist . 2>/dev/null
done
# fetch new ones
for todownload in $TOUPDATE
do
echo "updating $MYDIR/$todownload:"
rm $todownload 2>/dev/null
$WGET -N -q http://$whitelists_host/$todownload
if [ -f $MYDIR/$todownload ]; then
$DIFF -u $MYDIR/$todownload $todownload
else
echo "new file: $todownload"
fi
done
md5sum -c MD5SUMS >/dev/null 2>/dev/null
if [ $? -ne 0 ]
then
# Can only happen if remote site is borked or file got corrupt in transit
echo "Error fetching new files, try later"
clean_exit -1
fi
# MD5SUMS isn't needed anymore
rm MD5SUMS
# Replace whitelists
mv * $MYDIR
# Reload whitelists
kill -USR1 `cat $pidfile`
clean_exit 0