File: vdr.postinst

package info (click to toggle)
vdr 2.6.9-3
  • links: PTS, VCS
  • area: main
  • in suites: forky, sid, trixie
  • size: 6,512 kB
  • sloc: ansic: 63,196; perl: 966; makefile: 724; sh: 637; python: 86
file content (135 lines) | stat: -rw-r--r-- 4,146 bytes parent folder | download | duplicates (3)
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
#! /bin/sh
# postinst script for vdr
#
# 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>
#        * <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
#
# quoting from the policy:
#     Any necessary prompting should almost always be confined to the
#     post-installation script, and should be protected with a conditional
#     so that unnecessary prompting doesn't happen if a package's
#     installation fails and the `postinst' is called with `abort-upgrade',
#     `abort-remove' or `abort-deconfigure'.

# source debconf lib
. /usr/share/debconf/confmodule

#
# Create /var/lib/video if /var/lib/video does not exist.
# If /var/lib/video.00 exists, /var/lib/video will become a symlink
#
TryCreateVideoDir() {
    if [ ! -e /var/lib/video -a ! -L /var/lib/video ]; then
        if [ -e /var/lib/video.00 ]; then
            # No /var/lib/video but /var/lib/video.00 -> Make video a symlink pointing to video.00
            ln -s video.00 /var/lib/video
        else
            # create /var/lib/video
            mkdir /var/lib/video
        fi
    fi
}

InstallChannelsConf() {
    [ -e /var/lib/vdr/channels.conf ] && return
    case "$1" in
        Satellite)
            cp /usr/share/vdr/channels.conf-examples/channels.conf.sat /var/lib/vdr/channels.conf
            chmod 644 /var/lib/vdr/channels.conf
            ;;
        Terrestrial)
            cp /usr/share/vdr/channels.conf-examples/channels.conf.terr /var/lib/vdr/channels.conf
            chmod 644 /var/lib/vdr/channels.conf
            ;;
        Cable)
            cp /usr/share/vdr/channels.conf-examples/channels.conf.cable /var/lib/vdr/channels.conf
            chmod 644 /var/lib/vdr/channels.conf
            ;;
    esac
}

InstallUserAndGroupVdr() {
    USER=vdr
    GROUP=vdr
    if ! getent group "$GROUP"| grep -q "^$GROUP:" ; then
        echo -n "Adding group $GROUP.."
        addgroup --quiet --system $GROUP
        echo "..done"
    fi
    if ! getent passwd "$USER"| grep -q "^$USER:"; then
        echo -n "Adding user $USER.."
        adduser --system --home /var/lib/vdr --shell /bin/false \
                --gecos "VDR user" --no-create-home \
                --disabled-login --disabled-password \
                --ingroup $GROUP \
                $USER
        echo "...done"
    fi

    # put vdr in group video so that it can access the DVB device nodes
    adduser $USER video > /dev/null || true
}

ConfigureOwnerShip() {
    # ensure that vdr's config and recording files are correctly owned
    [ -e /var/lib/video ] && chown $USER:$GROUP /var/lib/video/
    if [ -e /var/lib/vdr ] ; then
        chown $USER:$GROUP /var/lib/vdr
        chown $USER:$GROUP /var/lib/vdr/* > /dev/null 2>&1 || true
    fi
    if [ -e /var/cache/vdr ] ; then
        chown $USER:$GROUP /var/cache/vdr
        chown $USER:$GROUP /var/cache/vdr/* > /dev/null 2>&1|| true
    fi

    # make /usr/lib/vdr/vdr-shutdown.wrapper setuid/setgid
    # (owner root:vdr, mode 6750)
    if [ -e /usr/lib/vdr/vdr-shutdown.wrapper ] ; then
        chown root:$GROUP /usr/lib/vdr/vdr-shutdown.wrapper && \
        chmod 6750 /usr/lib/vdr/vdr-shutdown.wrapper
    fi
}

case "$1" in
    configure)
        db_get vdr/select_dvb_card
        InstallChannelsConf "$RET"

        db_get vdr/create_video_dir
        if $RET; then
            TryCreateVideoDir
        fi

        InstallUserAndGroupVdr

        ConfigureOwnerShip
    ;;

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

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

db_stop

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

exit 0