~libravatar/libravatar/master

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
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
#!/bin/bash
# postinst script for libravatar-www
#
# see: dh_installdeb(1)

set -e

# summary of how this script can be called:
#        * <postinst> `configure' <most-recently-configured-version>
#        * <old-postinst> `abort-upgrade' <new version>
#        * <conflictor's-postinst> `abort-remove' `in-favour' <package>
#          <new-version>
#        * <postinst> `abort-remove'
#        * <deconfigured's-postinst> `abort-deconfigure' `in-favour'
#          <failed-install-package> <version> `removing'
#          <conflicting-package> <version>
# for details, see http://www.debian.org/doc/debian-policy/ or
# the debian-policy package

. /usr/share/debconf/confmodule

set_dbconfig () {
    perl -i -e '$field=shift;$value=shift if (scalar(@ARGV)>1);$value||="";while (<>) { s/^\s*("$field"\s*:\s*).*/$1"$value",/; print; }' "$1" "$2" "$3";
}

set_config () {
    perl -i -e '$field=shift;$value=shift if (scalar(@ARGV)>1);$value||="";while (<>) { s/^\s*($field\s*=\s*).*/$1"$value"/; print; }' "$1" "$2" "$3";
}

SETTINGS_PY=/etc/libravatar/settings.py
AVATAR_ROOT=/var/lib/libravatar/avatar
READY_FILES_ROOT=/var/lib/libravatar/ready
UPLOADED_FILES_ROOT=/var/lib/libravatar/uploaded
USER_FILES_ROOT=/var/lib/libravatar/user
EXPORT_FILES_ROOT=/var/lib/libravatar/export
APACHE_CONFIG=/etc/libravatar/www.apache2.conf
RULES_ABE=/usr/share/libravatar/libravatar/rules.abe
AWSTATS_CONFIG=/etc/libravatar/awstats.www.conf
AWSTATS_DIR=/var/lib/awstats/www


case "$1" in
    configure)
        cp /usr/share/libravatar/libravatar/settings.py.example ${SETTINGS_PY}

        # Add config entries to $SETTINGS_PY based on answers to debconf questions
        db_get libravatar-www/db_host
        set_dbconfig HOST "${RET}" ${SETTINGS_PY}

        db_get libravatar-www/db_port
        set_dbconfig PORT "${RET}" ${SETTINGS_PY}

        db_get libravatar-www/db_name
        set_dbconfig NAME "${RET}" ${SETTINGS_PY}

        db_get libravatar-www/db_user
        set_dbconfig USER "${RET}" ${SETTINGS_PY}

        db_get libravatar-www/db_pass
        set_dbconfig PASSWORD "${RET}" ${SETTINGS_PY}

        db_get libravatar-common/cdnservername
        set_config MEDIA_URL "http://${RET}/" ${SETTINGS_PY}

        db_get libravatar-common/seccdnservername
        VALUE=${RET}
        if [ "z${VALUE}" = "z" ] ; then
            set_config SECURE_MEDIA_URL "" ${SETTINGS_PY}
        else
            set_config SECURE_MEDIA_URL "https://${VALUE}/" ${SETTINGS_PY}
        fi

        db_get libravatar-common/wwwservername
        set_config SITE_URL "https://${RET}" ${SETTINGS_PY}

        db_get libravatar-www/sitename
        set_config SITE_NAME "${RET}" ${SETTINGS_PY}

        db_get libravatar-www/fromemail
        set_config SERVER_EMAIL "${RET}" ${SETTINGS_PY}

        db_get libravatar-www/supportemail
        set_config SUPPORT_EMAIL "${RET}" ${SETTINGS_PY}

        db_get libravatar-www/adminemail
        set_config ADMIN_EMAIL "${RET}" ${SETTINGS_PY}

        db_get libravatar-www/secretkey
        set_config SECRET_KEY "${RET}" ${SETTINGS_PY}

        set_config AVATAR_ROOT "${AVATAR_ROOT}/" ${SETTINGS_PY}
        set_config READY_FILES_ROOT "${READY_FILES_ROOT}/" ${SETTINGS_PY}
        set_config UPLOADED_FILES_ROOT "${UPLOADED_FILES_ROOT}/" ${SETTINGS_PY}
        set_config USER_FILES_ROOT "${USER_FILES_ROOT}/" ${SETTINGS_PY}
        set_config EXPORT_FILES_ROOT "${EXPORT_FILES_ROOT}/" ${SETTINGS_PY}

        # Create a restricted user to crop/resize images with
        adduser --system --quiet --disabled-login --shell /bin/false --no-create-home --home ${READY_FILES_ROOT} --gecos 'Libravatar Image Processor,,,' libravatar-img || true

        mkdir -p ${READY_FILES_ROOT}
        chown -R libravatar-img:root ${READY_FILES_ROOT}
        chmod o-rwx ${READY_FILES_ROOT}

        mkdir -p ${UPLOADED_FILES_ROOT}
        chown -R www-data:www-data ${UPLOADED_FILES_ROOT}

        mkdir -p ${USER_FILES_ROOT}
        chown -R root:root ${USER_FILES_ROOT}

        mkdir -p ${EXPORT_FILES_ROOT}
        chown -R root:root ${EXPORT_FILES_ROOT}

        mkdir -p ${AVATAR_ROOT}

        touch /var/log/libravatar/workers.log
        chown libravatar-img /var/log/libravatar/workers.log

        # Make a copy of the template rules.abe to work on, then copy into place
        cp ${RULES_ABE}.template ${RULES_ABE}.working

        for MARKER in $(grep -o -E '__[A-Z0-9_]+__' ${RULES_ABE}.working); do
            # Turns __MARKER__ into marker and puts packagename/ on the front
            DEBCONF_VAR=$(echo "${MARKER:2:${#MARKER}-4}" | tr '[:upper:]' '[:lower:]')
            db_get libravatar-common/$DEBCONF_VAR
            sed -i -e "s/${MARKER}/${RET}/g" ${RULES_ABE}.working
        done

        mv ${RULES_ABE}.working ${RULES_ABE}

        # Make a copy of the templates to work on, then copy into place
        cp ${APACHE_CONFIG} ${APACHE_CONFIG}.working
        cp ${AWSTATS_CONFIG} ${AWSTATS_CONFIG}.working

        for MARKER in __WWWSERVERALIAS__ __CDNSERVERALIAS__ __SECCDNSERVERALIAS__ ; do
            # Turns __MARKER__ into marker and puts packagename/ on the front
            DEBCONF_VAR=$(echo "${MARKER:2:${#MARKER}-4}" | tr '[:upper:]' '[:lower:]')

            db_get libravatar-common/$DEBCONF_VAR
            VALUE=${RET}
            if [ "z${VALUE}" = "z" ] ; then
                sed -i -e "s/${MARKER}//g" ${APACHE_CONFIG}.working
            else
                sed -i -e "s/${MARKER}/ServerAlias ${RET}/g" ${APACHE_CONFIG}.working
            fi
        done

        for MARKER in $(grep -o -E '__[A-Z0-9_]+__' ${APACHE_CONFIG}.working); do
            # Turns __MARKER__ into marker and puts packagename/ on the front
            DEBCONF_VAR=$(echo "${MARKER:2:${#MARKER}-4}" | tr '[:upper:]' '[:lower:]')
            db_get libravatar-common/$DEBCONF_VAR
            sed -i -e "s/${MARKER}/${RET}/g" ${APACHE_CONFIG}.working
        done
        for MARKER in $(grep -o -E '__[A-Z0-9_]+__' ${AWSTATS_CONFIG}.working); do
            # Turns __MARKER__ into marker and puts packagename/ on the front
            DEBCONF_VAR=$(echo "${MARKER:2:${#MARKER}-4}" | tr '[:upper:]' '[:lower:]')
            db_get libravatar-common/$DEBCONF_VAR
            sed -i -e "s/${MARKER}/${RET}/g" ${AWSTATS_CONFIG}.working
        done

        # Enable apache modules we want unconditionally
        a2enmod alias > /dev/null 2>&1
        a2enmod expires > /dev/null 2>&1
        a2enmod headers > /dev/null 2>&1
        a2enmod rewrite > /dev/null 2>&1
        a2enmod ssl > /dev/null 2>&1
        a2enmod wsgi > /dev/null 2>&1

        # We a2ensite the site the first time the config is installed, but not after
        ENABLE_SITE=""
        if [ ! -e /etc/apache2/sites-available/libravatar-www.conf ]; then
            ENABLE_SITE="true"
        fi

        mv ${APACHE_CONFIG}.working /etc/apache2/sites-available/libravatar-www.conf

        if [ "$ENABLE_SITE" != "" ]; then
            a2ensite libravatar-www
        fi

        echo ""
        echo "Libravatar is now ready for action. You need to restart apache for any"
        echo "configuration changes to take effect"
        echo ""

        mkdir -p /etc/awstats
        mv ${AWSTATS_CONFIG}.working /etc/awstats/awstats.www.conf

        mkdir -p ${AWSTATS_DIR}
        chown www-data:www-data ${AWSTATS_DIR}
    ;;

    abort-upgrade|abort-remove|abort-deconfigure)
    ;;

    *)
        echo "postinst called with unknown argument \`$1'" >&2
        exit 1
    ;;
esac

# dh_installdeb will replace this with shell code automatically
# generated by other debhelper scripts.

#DEBHELPER#

db_stop
exit 0