aboutsummaryrefslogtreecommitdiff
path: root/tools/XBMCLive/postinst
diff options
context:
space:
mode:
Diffstat (limited to 'tools/XBMCLive/postinst')
-rwxr-xr-xtools/XBMCLive/postinst129
1 files changed, 129 insertions, 0 deletions
diff --git a/tools/XBMCLive/postinst b/tools/XBMCLive/postinst
new file mode 100755
index 0000000000..25a5ca7e61
--- /dev/null
+++ b/tools/XBMCLive/postinst
@@ -0,0 +1,129 @@
+#!/bin/sh
+
+set -e
+
+case "$1" in
+ configure)
+ sed -i.bak-xbmc-live s/allowed_users=console/allowed_users=anybody/ /etc/X11/Xwrapper.config
+
+ # Add the 'xbmc' user
+ if ! getent passwd xbmc >/dev/null; then
+ adduser \
+ --gecos "XBMC Live User" \
+ xbmc
+ fi
+ # Add 'xbmc' user to the appropriate groups
+ # Below is a listing of groups and their purpose
+ # adm - For reading system logs (minimal systems may have this user only)
+ # sudo - allow optional passwordless sudo (with trivial intervention on /etc/sudoers)
+ # cdrom - optical disc drive access
+ # floppy - floppy drive access
+ # audio - audio device access
+ # video - video device access
+ # plugdev - enable automatic notifications of new devices
+ # netdev - managing network connections via NetworkManager
+ # powerdev - to be able to hibernate/suspend
+ # fuse - to be able to mount filesystems as normal user
+ GROUPS="adm
+ sudo
+ cdrom
+ floppy
+ audio
+ video
+ plugdev
+ netdev
+ powerdev
+ fuse"
+
+ # TODO: this probably isn't necessary anymore as PolicyKit is now being
+ # used
+ for GROUP in $GROUPS; do
+ if getent group $GROUP >/dev/null && \
+ ! getent group $GROUP | grep -q xbmc; then
+ adduser xbmc $GROUP
+ fi
+ done
+
+ # Add xbmc to the sudoers file
+ echo "#" >> /etc/sudoers
+ echo "# XBMC-specific configuration" >> /etc/sudoers
+ echo "#" >> /etc/sudoers
+ echo "Cmnd_Alias SHUTDOWN_CMDS = /sbin/shutdown, /sbin/reboot, /sbin/halt" >> /etc/sudoers
+ echo "Cmnd_Alias MOUNT_CMDS = /bin/mount, /bin/umount" >> /etc/sudoers
+ echo "xbmc ALL=(ALL) ALL" >> /etc/sudoers
+ echo "xbmc ALL=NOPASSWD: SHUTDOWN_CMDS, MOUNT_CMDS" >> /etc/sudoers
+
+ # Our set of PolicyKit actions
+
+ # This is a list of actions that the 'xbmc' user should be allowed to
+ # do. If we missed one, or we have one that's not necessary, please
+ # submit a bug report.
+ POLKIT_ACTIONS="org.freedesktop.hal.dockstation.undock
+ org.freedesktop.hal.wol.enabled
+ org.freedesktop.hal.wol.enable
+ org.freedesktop.hal.wol.supported
+ org.freedesktop.hal.leds.brightness
+ org.freedesktop.hal.device-access.audio-player
+ org.freedesktop.hal.device-access.camera
+ org.freedesktop.hal.device-access.cdrom
+ org.freedesktop.hal.device-access.dvb
+ org.freedesktop.hal.device-access.fingerprint-reader
+ org.freedesktop.hal.device-access.floppy
+ org.freedesktop.hal.device-access.ieee1394-avc
+ org.freedesktop.hal.device-access.ieee1394-iidc
+ org.freedesktop.hal.device-access.joystick
+ org.freedesktop.hal.device-access.mouse
+ org.freedesktop.hal.device-access.obex
+ org.freedesktop.hal.device-access.pda
+ org.freedesktop.hal.device-access.printer
+ org.freedesktop.hal.device-access.scanner
+ org.freedesktop.hal.device-access.sound
+ org.freedesktop.hal.device-access.video
+ org.freedesktop.hal.device-access.video4linux
+ org.freedesktop.hal.lock
+ org.freedesktop.hal.killswitch.bluetooth
+ org.freedesktop.hal.killswitch.wlan
+ org.freedesktop.hal.killswitch.wwan
+ org.freedesktop.hal.storage.mount-removable
+ org.freedesktop.hal.storage.eject
+ org.freedesktop.hal.storage.crypto-setup-removable
+ org.freedesktop.hal.power-management.shutdown
+ org.freedesktop.hal.power-management.reboot
+ org.freedesktop.hal.power-management.set-powersave
+ org.freedesktop.hal.power-management.suspend
+ org.freedesktop.hal.power-management.hibernate
+ org.freedesktop.hal.power-management.cpufreq
+ org.freedesktop.hal.power-management.lcd-panel
+ org.freedesktop.hal.power-management.light-sensor
+ org.freedesktop.hal.power-management.keyboard-backlight"
+
+ # Grant the 'xbmc' user each action from the list if not done already
+ for ACTION in $POLKIT_ACTIONS; do
+ if polkit-auth --user xbmc --show-obtainable | \
+ grep -q $ACTION; then
+ polkit-auth --user xbmc --grant $ACTION
+ fi
+ done
+ ;;
+
+ abort-upgrade|abort-remove|abort-deconfigure)
+ ;;
+
+ *)
+ echo "postinst called with unknown argument \`$1'" >&2
+ exit 1
+ ;;
+esac
+
+# Automatically added by dh_installinit
+if [ -x "/etc/init.d/xbmc-live" ]; then
+ update-rc.d xbmc-live defaults >/dev/null
+ if [ -x "`which invoke-rc.d 2>/dev/null`" ]; then
+ invoke-rc.d xbmc-live start || exit $?
+ else
+ /etc/init.d/xbmc-live start || exit $?
+ fi
+fi
+# End automatically added section
+
+exit 0