File: chrome-remote-desktop.init

package info (click to toggle)
chromium 138.0.7204.183-1
  • links: PTS, VCS
  • area: main
  • in suites: trixie
  • size: 6,071,908 kB
  • sloc: cpp: 34,937,088; ansic: 7,176,967; javascript: 4,110,704; python: 1,419,953; asm: 946,768; xml: 739,971; pascal: 187,324; sh: 89,623; perl: 88,663; objc: 79,944; sql: 50,304; cs: 41,786; fortran: 24,137; makefile: 21,806; php: 13,980; tcl: 13,166; yacc: 8,925; ruby: 7,485; awk: 3,720; lisp: 3,096; lex: 1,327; ada: 727; jsp: 228; sed: 36
file content (113 lines) | stat: -rwxr-xr-x 2,527 bytes parent folder | download | duplicates (11)
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
#!/bin/bash

### BEGIN INIT INFO
# Provides:             chrome-remote-desktop
# Required-Start:       $remote_fs $syslog
# Required-Stop:        $remote_fs $syslog
# Default-Start:        2 3 4 5
# Default-Stop:         0 1 6
# Short-Description:    Chrome Remote Desktop service
### END INIT INFO

# /etc/init.d/chrome-remote-desktop: Start and stop Chrome Remote Desktop host daemon.

HOST_PATH=/opt/google/chrome-remote-desktop/chrome-remote-desktop

# Group of users for which Chrome Remote Desktop is enabled. Users are added
# to that group when they start the host for the first time.
CHROME_REMOTING_GROUP=chrome-remote-desktop

test -x $HOST_PATH || exit 0

. /lib/lsb/init-functions

if [ "$(whoami)" = "root" ]; then
  # Extract list of users in the chrome-remoting group.
  USERS=$(getent group $CHROME_REMOTING_GROUP |
          awk -F ':' '{ gsub(",", " ", $4); print $4 }')
else
  USERS=$(whoami)
fi

# Tries to wait for 10 seconds until specified command exits and then kills it.
run_with_timeout() {
  "$@" &
  pid=$!
  local time_left=10
  while [ $time_left -gt 0 ]; do
    (kill -0 $pid 2>/dev/null) || return `wait $pid`
    sleep 1
    time_left=$((time_left - 1))
  done
  (kill -0 $pid 2>/dev/null) || return `wait $pid`

  echo command \"$@\" has timed out >&2
  kill $pid
  return 1
}

# Usage: run_and_ignore_error user action
# Carries out the specified action, ignoring any errors.
run_and_ignore_error() {
  user="$1"
  action="$2"

  set +e
  sudo -u "$user" "$HOST_PATH" "$action"
}

do_start() {
  log_begin_msg "Starting Chrome Remote Desktop host for $1..."
  run_and_ignore_error $1 --start
  log_end_msg $?
}

do_stop() {
  log_begin_msg "Stopping Chrome Remote Desktop host for $1..."
  run_with_timeout run_and_ignore_error $1 --stop
  log_end_msg $?
}

do_reload() {
  log_begin_msg "Reloading Chrome Remote Desktop host configuration for $1..."
  run_and_ignore_error $1 --reload
  log_end_msg $?
}

do_restart() {
  log_begin_msg "Restarting Chrome Remote Desktop host for $1..."
  run_and_ignore_error $1 --stop
  run_and_ignore_error $1 --start
  log_end_msg $?
}

for_each_user() {
  for user in $USERS; do
    $1 $user
  done
}

case "$1" in
  start)
    for_each_user do_start
    ;;

  stop)
    for_each_user do_stop
    ;;

  reload|force-reload)
    for_each_user do_reload
    ;;

  restart)
    for_each_user do_restart
    ;;

  *)
    log_success_msg "Usage: /etc/init.d/chrome-remote-desktop" \
        "{start|stop|reload|force-reload|restart}"
    exit 1
esac

exit 0