Révision 1d30fbf1
Ajouté par Thomas Noël il y a plus de 9 ans
usr/local/univnautes/sp/update-whitelists.sh | ||
---|---|---|
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 |
sed 's#\(^[^/]*$\)#\1/32#' > $WLDIR/all |
|
58 |
|
|
59 |
|
|
60 |
/usr/local/bin/php -q << EOPHP |
|
61 |
<?php |
|
62 |
|
|
63 |
require_once("functions.inc"); |
|
64 |
require_once("filter.inc"); |
|
65 |
require_once("shaper.inc"); |
|
66 |
|
|
67 |
\$wladdresses = ''; |
|
68 |
\$wlfile = file('/var/tmp/univnautes-sp-whitelists/all', |
|
69 |
FILE_IGNORE_NEW_LINES + FILE_SKIP_EMPTY_LINES); |
|
70 |
foreach (\$wlfile as \$a) { |
|
71 |
\$wladdresses .= \$a . ' '; |
|
72 |
} |
|
73 |
|
|
74 |
if (!is_array(\$config['aliases']['alias'])) |
|
75 |
\$config['aliases']['alias'] = array(); |
|
76 |
\$a_aliases = &\$config['aliases']['alias']; |
|
77 |
|
|
78 |
foreach (\$a_aliases as \$n => \$alias) { |
|
79 |
if (\$alias['name'] == 'whitelist') { |
|
80 |
\$whitelist = &\$a_aliases[\$n]; |
|
81 |
break; |
|
82 |
} |
|
83 |
} |
|
84 |
|
|
85 |
\$whitelist['address'] = \$wladdresses; |
|
86 |
\$whitelist['detail'] = ''; |
|
87 |
\$whitelist['descr'] = 'DO NOT MODIFY THIS LIST ! auto-updated @ ' . date('r'); |
|
88 |
|
|
89 |
if (write_config()) { |
|
90 |
filter_configure(); |
|
91 |
exit(0); |
|
92 |
} else { |
|
93 |
exit(1); |
|
94 |
} |
|
95 |
|
|
96 |
?> |
|
97 |
EOPHP |
Formats disponibles : Unified diff
update-whitelists.sh (funny, isn't it ?)