shrinftdev commited on
Commit
e5a1f13
·
verified ·
1 Parent(s): 2f36456

Create Preview.sh

Browse files
Files changed (1) hide show
  1. Installer/Preview.sh +123 -0
Installer/Preview.sh ADDED
@@ -0,0 +1,123 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ #!/bin/bash
2
+
3
+ set -euo pipefail
4
+
5
+ VNC_DISPLAY="${VNC_DISPLAY:-:2}"
6
+ VNC_PORT="${VNC_PORT:-5902}"
7
+ NOVNC_PORT="${NOVNC_PORT:-8686}"
8
+ NOVNC_WEB_DIR="${NOVNC_WEB_DIR:-/usr/share/novnc}"
9
+ VNC_USER="${VNC_USER:-user}"
10
+ VNC_HOME="${VNC_HOME:-/home/${VNC_USER}}"
11
+ VNC_CONFIG_DIR="${VNC_CONFIG_DIR:-${VNC_HOME}/.config/tigervnc}"
12
+ CNB_BRANCH_NAME="${CNB_BRANCH:-}"
13
+
14
+ resolve_desktop_session() {
15
+ case "${CNB_BRANCH_NAME}" in
16
+ LXQT)
17
+ echo "lxqt"
18
+ ;;
19
+ LXDE)
20
+ echo "lxde"
21
+ ;;
22
+ XFace)
23
+ echo "xfce4"
24
+ ;;
25
+ Mate)
26
+ echo "mate"
27
+ ;;
28
+ Gnome)
29
+ echo "gnome"
30
+ ;;
31
+ Cinnamon)
32
+ echo "cinnamon"
33
+ ;;
34
+ Openbox)
35
+ echo "openbox"
36
+ ;;
37
+ Other)
38
+ echo "other"
39
+ ;;
40
+ ""|KDE|GPU|main|master)
41
+ echo "plasma"
42
+ ;;
43
+ *)
44
+ echo "plasma"
45
+ ;;
46
+ esac
47
+ }
48
+
49
+ DESKTOP_SESSION="${DESKTOP_SESSION:-$(resolve_desktop_session)}"
50
+
51
+ configure_desktop_session() {
52
+ local startup_command
53
+
54
+ case "${DESKTOP_SESSION}" in
55
+ plasma|kde)
56
+ startup_command="startplasma-x11"
57
+ ;;
58
+ lxqt)
59
+ startup_command="startlxqt"
60
+ ;;
61
+ lxde)
62
+ startup_command="startlxde"
63
+ ;;
64
+ xfce|xfce4|xface)
65
+ startup_command="startxfce4"
66
+ ;;
67
+ mate)
68
+ startup_command="mate-session"
69
+ ;;
70
+ gnome)
71
+ startup_command="gnome-session"
72
+ ;;
73
+ cinnamon)
74
+ startup_command="cinnamon-session"
75
+ ;;
76
+ openbox)
77
+ startup_command="openbox"
78
+ ;;
79
+ other|xterm)
80
+ startup_command="xterm -geometry 80x24+10+10 -ls"
81
+ ;;
82
+ *)
83
+ echo "Unsupported DESKTOP_SESSION: ${DESKTOP_SESSION}" >&2
84
+ exit 1
85
+ ;;
86
+ esac
87
+
88
+ for xstartup in /root/.vnc/xstartup "${VNC_HOME}/.vnc/xstartup"; do
89
+ if [ -f "${xstartup}" ]; then
90
+ sed -i "s|startplasma-x11|${startup_command}|" "${xstartup}"
91
+ fi
92
+ done
93
+ }
94
+
95
+ setup_vnc_config() {
96
+ install -d -m 700 "${VNC_HOME}/.vnc"
97
+ install -d -m 700 "${VNC_CONFIG_DIR}"
98
+
99
+ cat > "${VNC_CONFIG_DIR}/config" <<EOF
100
+ securitytypes=None
101
+ localhost=yes
102
+ EOF
103
+
104
+ rm -f "${VNC_HOME}/.vnc/passwd" "${VNC_CONFIG_DIR}/passwd"
105
+ chown -R "${VNC_USER}:${VNC_USER}" "${VNC_HOME}/.vnc" "${VNC_CONFIG_DIR}"
106
+ }
107
+
108
+ kill_stale_vnc_session() {
109
+ sudo -u "${VNC_USER}" vncserver -kill "${VNC_DISPLAY}" >/dev/null 2>&1 || true
110
+ rm -f /tmp/.X$(printf '%s' "${VNC_DISPLAY}" | tr -d ':')-lock
111
+ rm -f "/tmp/.X11-unix/X$(printf '%s' "${VNC_DISPLAY}" | tr -d ':')"
112
+ }
113
+
114
+ start_preview_services() {
115
+ sudo -u "${VNC_USER}" vncserver "${VNC_DISPLAY}" -SecurityTypes None -localhost yes
116
+ pkill -f "websockify.* ${NOVNC_PORT} " >/dev/null 2>&1 || true
117
+ websockify -D --web="${NOVNC_WEB_DIR}" "${NOVNC_PORT}" "localhost:${VNC_PORT}"
118
+ }
119
+
120
+ configure_desktop_session
121
+ setup_vnc_config
122
+ kill_stale_vnc_session
123
+ start_preview_services