File: update_sqlgrey_config

package info (click to toggle)
sqlgrey 1%3A1.8.0-5.2
  • links: PTS, VCS
  • area: main
  • in suites: forky, sid, trixie
  • size: 568 kB
  • sloc: perl: 3,029; sh: 244; makefile: 79
file content (104 lines) | stat: -rwxr-xr-x 2,167 bytes parent folder | download | duplicates (5)
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