File: docker-entrypoint.sh

package info (click to toggle)
gerbera 2.4.1%2Bdfsg-1
  • links: PTS, VCS
  • area: main
  • in suites: forky, sid, trixie
  • size: 15,412 kB
  • sloc: cpp: 44,738; javascript: 13,430; xml: 5,730; ansic: 2,692; sh: 1,555; sql: 237; python: 191; makefile: 13
file content (101 lines) | stat: -rwxr-xr-x 3,163 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
#!/usr/bin/env sh
# Gerbera - https://gerbera.io/
#
# docker-entrypoint.sh - this file is part of Gerbera.
#
# Copyright (C) 2021-2025 Gerbera Contributors
#
# Gerbera is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License version 2
# as published by the Free Software Foundation.
#
# Gerbera is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
# NU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with Gerbera.  If not, see <http://www.gnu.org/licenses/>.
#
# $Id$

_UID=${UID-$IMAGE_UID}
_GID=${GID-$IMAGE_GID}

if [ "${_UID}" -ne "$IMAGE_UID" -a "${_UID}" -gt 0 ]; then
  sudo usermod -u "${_UID}" "$IMAGE_USER"
fi

if [ "${_GID}" -ne "$IMAGE_GID" -a "${_GID}" -gt 0 ]; then
  sudo groupmod -g "${_GID}" "$IMAGE_GROUP" || usermod -a -G "${_GID}" "$IMAGE_USER"
fi

if [ ! -d /var/run/gerbera/.config/gerbera ]; then
  # Make default config dir (only applies of config was generated by older version)
  sudo mkdir -p /var/run/gerbera/.config/gerbera
fi

if [ ! -f /var/run/gerbera/config.xml ]; then
  # Generate a config file with home set
  gerbera --create-config --home /var/run/gerbera > /var/run/gerbera/config.xml

  # Automatically scan /content with inotify (for a volume mount)
  sed 's|<import hidden-files="no">|<import hidden-files="no">\n\
    <autoscan use-inotify="yes">\n\
    <directory location="/mnt/content" mode="inotify" \
               recursive="yes" hidden-files="no"/>\n\
    </autoscan>|' -i /var/run/gerbera/config.xml

  # Add directory for custom JavaScript scripts
  sed 's|</common>|</common>\
        <custom>/mnt/customization/js</custom>|' -i /var/run/gerbera/config.xml

  # Allow customization of Gerbera configuration file
  if [ -x /mnt/customization/shell/gerbera_config.sh ]; then
    . /mnt/customization/shell/gerbera_config.sh
  fi
fi

if [ -e /dev/video10 ]; then
  # Add permission to all users on /dev/video10 device
  sudo chown root:video /dev/video10
fi

if [ -e /dev/video11 ]; then
  # Add permission to all users on /dev/video11 device
  sudo chown root:video /dev/video11
fi

if [ -e /dev/video12 ]; then
  # Add permission to all users on /dev/video12 device
  sudo chown root:video /dev/video12
fi

if [ -e /dev/dri ]; then
  # Add permission to all users on /dev/dri device
  sudo chown root:video /dev/dri
fi

sudo chown -R $IMAGE_USER:$IMAGE_GROUP /var/run/gerbera

# If we are root, chown home and drop privs
if [ "$1" = 'gerbera' -a "$(id -u)" = '0' ]; then

    if ! (command su-exec 2>&1) > /dev/null
    then
        sudo touch /var/run/gerbera/run.sh
        sudo chown $IMAGE_USER:$IMAGE_GROUP /var/run/gerbera/run.sh
        sudo chmod 777 /var/run/gerbera/run.sh
        sudo echo $@ > /var/run/gerbera/run.sh
        exec su - $IMAGE_USER -c "/var/run/gerbera/run.sh"
    else
        exec su-exec $IMAGE_USER "$@"
    fi

else
    # Otherwise run as the user provided
    if [ "$1" = "--" ]; then
        shift
    fi
    exec "$@"
fi