blob: 1d9629fdd241819e40ab2f18018f7f9e97881964 [file] [log] [blame]
#!/bin/sh
. /etc/utils.sh
runoregano="/app/oregano/runoregano"
if ! is-html-tv-ui; then
echo "configured for sage"
exit 0
fi
parent_comm=$(ps -o comm= $PPID)
echo $PPID
if [ "$parent_comm" = "gsetsid" ]; then
# Special case; when something executes '<action> oregano' it goes
# via <action> and then gsetsid - but we want the real parent. So
# let's head up the chain to the real parent.
action_pid=$(cat /proc/$PPID/status | grep PPid | cut -d':' -f2 | sed -r 's/\s+//g')
if [ "$action_pid" != "" ]; then
real_ppid=$(cat /proc/"$action_pid"/status | grep PPid | cut -d':' -f2 | sed -r 's/\s+//g')
real_parent=$(ps -o comm= $real_ppid)
parent_comm="$parent_comm ($real_parent)"
fi
fi
case "$1" in
start)
echo "S99oregano: start called by $parent_comm" | logos oregano
(
wait-until-created /tmp/mcnmp_ready
wait-until-created /tmp/time.synced
if is-tv-box; then
(
if [ "$(id -u)" != "0" ]; then
# We are already not running as root, keep current user
$runoregano
touch /tmp/renice_oregano
else
nice -n -5 setuid appclient:video $runoregano
fi
) 2>&1 | logos oregano 0 20000000 &
fi
) &
;;
stop)
echo "S99oregano: stop called by $parent_comm" | logos oregano
# If startupvideo is running, it prevents miniclient from starting up.
pkillwait -x startupvideo &
# Stop the scripts invoked above due to 'start oregano' (which will also
# stop any babysitters they may have).
( pkillwait -x 'runoregano' ;
# End the Oregano start_chromium binary (which will also end its babysitter).
pkillwait -x 'start_chromium' ;
pkillwait -x 'browser_shell' ) &
# End any dangling HTTP request Futures from authTokens.dart attempts.
pkillwait -f '(dart.*)([a]uthTokens\.dart)' &
pkillwait -x waitpower &
pkillwait -x netflix &
pkillwait -x vudu &
wait
;;
restart)
echo "S99oregano: restart called by $parent_comm" | logos oregano
$0 stop; $0 start
;;
*)
echo "Usage: $0 {start|stop|restart}"
exit 1
esac