File: bandwidthd-pgsql.postinst

package info (click to toggle)
bandwidthd 2.0.1%2Bcvs20090917-18
  • links: PTS, VCS
  • area: main
  • in suites: forky, sid, trixie
  • size: 1,316 kB
  • sloc: sh: 3,010; ansic: 2,752; php: 1,263; yacc: 216; makefile: 152; lex: 36; sql: 27
file content (171 lines) | stat: -rw-r--r-- 4,344 bytes parent folder | download
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
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
#!/bin/sh

set -e

if [ "$BANDWIDTHD_PACKAGE_DEBUG" != "" ]; then
	echo "bandwidthd-pgsql.postinst: $*"
	set -x
fi

# Source debconf library in postinst.
. /usr/share/debconf/confmodule

# Source dbconfig-common library.
. /usr/share/dbconfig-common/dpkg/postinst.pgsql

# Calling dbc first because we are using the answers later
dbc_first_version="2.0.1+cvs20050208-12"

dbc_generate_include=php:/etc/bandwidthd/debian-db.php
dbc_generate_include_owner="www-data:www-data"
dbc_generate_include_perms="660"
dbc_go bandwidthd-pgsql $@

# -------------------------------------------------------------
# Create bandwidthd.conf based on debconf data, and install it.
# -------------------------------------------------------------

if [ "$1" = "configure" ]; then

db_get bandwidthd/dev || true
DEV=$RET

db_get bandwidthd/subnet || true
SUBNETS=$RET
# ATTENTION! $SUBNETS needs to be parsed and split.
# Example contents: 192.168.1.0/24, 172.20.0.0 255.255.0.0, 10.0.0.0/8


# Get pgsql-settings from dbconfig-common.
if [ -f /etc/dbconfig-common/bandwidthd-pgsql.conf ]; then
	. /etc/dbconfig-common/bandwidthd-pgsql.conf
fi

if [ "$dbc_install" = "true" ]; then
	PGSQL_USER=$dbc_dbuser
	PGSQL_PASS=$dbc_dbpass
	PGSQL_DB=$dbc_dbname
	PGSQL_HOST=$dbc_dbserver
	if [ -z "$PGSQL_HOST" ]; then
		PGSQL_HOST="localhost"
	fi
	PGSQL_PORT=$dbc_dbport
	if [ -z "$PGSQL_PORT" ]; then
		PGSQL_PORT=5432
	fi
else
	PGSQL_USER="bwduser"
	PGSQL_PASS="bwdpass"
	PGSQL_DB="bwddb"
	PGSQL_HOST="localhost"
	PGSQL_PORT=5432
fi

db_get bandwidthd-pgsql/sensorid || true
SENSORID=$RET

db_get bandwidthd/promisc || true
PROMISC=$RET


if [ "$BANDWIDTHD_PACKAGE_DEBUG" != "" ]; then
	echo "This is the bandwidthd postinst script reporting debconf settings:"
	echo "dev: $DEV"
	echo "subnets: $SUBNETS"
	echo "promisc: $PROMISC"
fi

# parse a bandwidthd.conf template and insert dev, subnet and
# recover_cdf rules, then use ucf to install config file.

TEMPDIR=$(mktemp -d)
TMPFILE=$TEMPDIR/bandwidthd.conf

cp /usr/share/bandwidthd-pgsql/bandwidthd-pgsql.conf.template $TMPFILE
chmod 640 $TMPFILE

RULE='s%^#DEBCONF_DEVS#$%dev "'$DEV'"%'
sed -ie "$RULE" $TMPFILE

PARSED_SUBNETS=$(echo $SUBNETS | sed -e 's/, */:/g')
#PARSED_SUBNETS=$(echo $PARSED_SUBNETS | sed -e 's/^/subnet /')
OLDIFS=$IFS
IFS=":"
for subnet in $PARSED_SUBNETS ; do
	# CIDR and dotted-quad subnets have different syntax:
	# subnet 1.2.3.4/24
	# subnet 4.3.2.1 255.255.255.0
	subnet=$(echo $subnet | sed -e 's#/\(.*\..*\)# \1#')
	RULE='s%^#DEBCONF_SUBNETS#$%subnet '$subnet'\
#DEBCONF_SUBNETS#%'
	sed -ie "$RULE" $TMPFILE
done
RULE='s%^#DEBCONF_SUBNETS#$%%'
sed -ie "$RULE" $TMPFILE
IFS=$OLDIFS


RULE='s%^#DEBCONF_PGSQL#$%pgsql_connect_string "user = '$PGSQL_USER' password = '$PGSQL_PASS' dbname = '$PGSQL_DB' host = '$PGSQL_HOST'"%'
sed -ie "$RULE" $TMPFILE

RULE='s%^#DEBCONF_SENSORID#$%sensor_id "'$SENSORID'"%'
sed -ie "$RULE" $TMPFILE


RULE='s%^#DEBCONF_PROMISC#$%promiscuous '$PROMISC'%'
sed -ie "$RULE" $TMPFILE

# Install new configuration...
chmod 640 $TMPFILE
ucf --debconf-ok $TMPFILE /etc/bandwidthd/bandwidthd.conf
chmod 640 /etc/bandwidthd/bandwidthd.conf


# create new password config file for psql (used in weekly cron script)
TMPFILE=$TEMPDIR/pgpass
echo "$PGSQL_HOST:$PGSQL_PORT:$PGSQL_DB:$PGSQL_USER:$PGSQL_PASS" > $TMPFILE
chown root:root $TMPFILE
chmod 0600 $TMPFILE
ucf --debconf-ok $TMPFILE /etc/bandwidthd/.pgpass


# clean up
rm -rf $TEMPDIR







	# Stop debhelper, we are done.
	db_stop

fi # "$1" = "configure"

# ----------------------------------------------------------------------

# move configuration file to new location for apache 2.4
dpkg-maintscript-helper mv_conffile \
	/etc/apache2/conf.d/bandwidthd /etc/apache2/conf-available/bandwidthd.conf 2.0.1+cvs20090917-6~ bandwidthd-pgsql -- "$@"

# From http://wiki.debian.org/Apache/PackagingFor24 :
# "In your postinst maintainer script invoke the enconf handler on fresh installations."
if [ -z "$2" ]; then
	if [ -e /usr/share/apache2/apache2-maintscript-helper ] ; then
		. /usr/share/apache2/apache2-maintscript-helper
		apache2_invoke enconf bandwidthd.conf
	fi
fi

# reload apache2 config for installed /bandwidthd alias.
if [ -e /usr/share/apache2/apache2-maintscript-helper ] ; then
	. /usr/share/apache2/apache2-maintscript-helper
	apache2_reload
fi



# debhelper autoinserted stuff:
#DEBHELPER#