1
|
#!/bin/sh
|
2
|
|
3
|
COMMAND=$(basename $0 .sh)
|
4
|
WLDIR=/var/tmp/univnautes-sp-whitelists/
|
5
|
|
6
|
# lock to avoid concurrent updates
|
7
|
LOCK=/var/run/univnautes-sp-$COMMAND.lock
|
8
|
if [ -r $LOCK ]
|
9
|
then
|
10
|
PID=`cat $LOCK`
|
11
|
echo "$COMMAND locked by $LOCK"
|
12
|
ps waux | grep "$PID" | grep $COMMAND | grep -vq grep && exit
|
13
|
echo "... but PID $PID is not a $COMMAND, continue"
|
14
|
fi
|
15
|
unlock() {
|
16
|
rm -f $LOCK
|
17
|
exit
|
18
|
}
|
19
|
trap unlock INT TERM EXIT
|
20
|
echo $$ > $LOCK
|
21
|
|
22
|
## real start
|
23
|
|
24
|
log() {
|
25
|
logger -p local4.info -t update-whitelist "$*"
|
26
|
}
|
27
|
|
28
|
rm -rf $WLDIR
|
29
|
|
30
|
cd /usr/local/univnautes/sp
|
31
|
./manage.py prepare-whitelists
|
32
|
|
33
|
cd $WLDIR
|
34
|
for wl in *
|
35
|
do
|
36
|
. ${wl}/conf.sh
|
37
|
log "download whitelist $CODENAME from $URL"
|
38
|
if [ -r ${wl}/cacert.pem ]
|
39
|
then
|
40
|
CHECK="--ca-certificate=${WLDIR}/${wl}/cacert.pem"
|
41
|
else
|
42
|
CHECK="--no-check-certificate"
|
43
|
log "warn: --no-check-certificate for whitelist $CODENAME"
|
44
|
fi
|
45
|
wget --quiet --tries=1 --timeout=10 $CHECK -O ${wl}/whitelist $URL
|
46
|
RET=$?
|
47
|
if [ $RET -ne 0 ]
|
48
|
then
|
49
|
rm -f ${wl}/whitelist
|
50
|
log "warn: ERROR while downloading $URL"
|
51
|
fi
|
52
|
done
|
53
|
|
54
|
cat $WLDIR/*/whitelist | \
|
55
|
grep -v "\(^[[:space:]]*#\)\|\(^[[:space:]]*$\)" | \
|
56
|
tr -d '
|
57
|
' | \
|
58
|
sed 's#\(^[^/]*$\)#\1/32#' > $WLDIR/all
|
59
|
|
60
|
|
61
|
/usr/local/bin/php -q << EOPHP
|
62
|
<?php
|
63
|
|
64
|
require_once("functions.inc");
|
65
|
require_once("filter.inc");
|
66
|
require_once("shaper.inc");
|
67
|
|
68
|
\$wladdresses = '';
|
69
|
\$wlfile = file('$WLDIR/all',
|
70
|
FILE_IGNORE_NEW_LINES + FILE_SKIP_EMPTY_LINES);
|
71
|
foreach (\$wlfile as \$a) {
|
72
|
\$wladdresses .= \$a . ' ';
|
73
|
}
|
74
|
|
75
|
if (!is_array(\$config['aliases']['alias']))
|
76
|
\$config['aliases']['alias'] = array();
|
77
|
\$a_aliases = &\$config['aliases']['alias'];
|
78
|
|
79
|
foreach (\$a_aliases as \$n => \$alias) {
|
80
|
if (\$alias['name'] == 'whitelist') {
|
81
|
\$whitelist = &\$a_aliases[\$n];
|
82
|
break;
|
83
|
}
|
84
|
}
|
85
|
|
86
|
\$whitelist['address'] = \$wladdresses;
|
87
|
\$whitelist['detail'] = '';
|
88
|
\$whitelist['descr'] = 'DO NOT MODIFY THIS LIST ! auto-updated @ ' . date('r');
|
89
|
|
90
|
if (write_config()) {
|
91
|
filter_configure();
|
92
|
exit(0);
|
93
|
} else {
|
94
|
exit(1);
|
95
|
}
|
96
|
|
97
|
?>
|
98
|
EOPHP
|