Projet

Général

Profil

Télécharger (1,93 ko) Statistiques
| Branche: | Tag: | Révision:

univnautes / usr / local / univnautes / sp / update-whitelists.sh @ 1d88bb1b

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
(8-8/8)