@@ -39,34 +39,34 @@ download_file() {
39
39
fi
40
40
41
41
# shellcheck disable=SC2288
42
- " $$ {download_tool[@]}" " $url " > " $output " || {
43
- echo " ERROR: Failed to download $url "
42
+ " $$ {download_tool[@]}" " $$ url" > " $ $ output" || {
43
+ echo " ERROR: Failed to download $$ url"
44
44
exit 1
45
45
}
46
46
}
47
47
48
48
# Function to install kasmvncserver for debian-based distros
49
49
install_deb () {
50
- local url=$1
50
+ local url=$$ 1
51
51
local kasmdeb=" /tmp/kasmvncserver.deb"
52
52
53
- download_file " $url " " $kasmdeb "
53
+ download_file " $$ url" " $ $ kasmdeb"
54
54
55
55
CACHE_DIR=" /var/lib/apt/lists/partial"
56
56
# Check if the directory exists and was modified in the last 60 minutes
57
- if [[ ! -d " $CACHE_DIR " ]] || ! find " $CACHE_DIR " -mmin -60 -print -quit & > /dev/null; then
57
+ if [[ ! -d " $$ CACHE_DIR" ]] || ! find " $ $ CACHE_DIR" -mmin -60 -print -quit & > /dev/null; then
58
58
echo " Stale package cache, updating..."
59
59
# Update package cache with a 300-second timeout for dpkg lock
60
60
sudo apt-get -o DPkg::Lock::Timeout=300 -qq update
61
61
fi
62
62
63
- DEBIAN_FRONTEND=noninteractive sudo apt-get -o DPkg::Lock::Timeout=300 install --yes -qq --no-install-recommends --no-install-suggests " $kasmdeb "
64
- rm " $kasmdeb "
63
+ DEBIAN_FRONTEND=noninteractive sudo apt-get -o DPkg::Lock::Timeout=300 install --yes -qq --no-install-recommends --no-install-suggests " $$ kasmdeb"
64
+ rm " $$ kasmdeb"
65
65
}
66
66
67
67
# Function to install kasmvncserver for rpm-based distros
68
68
install_rpm () {
69
- local url=$1
69
+ local url=$$ 1
70
70
local kasmrpm=" /tmp/kasmvncserver.rpm"
71
71
local package_manager
72
72
@@ -88,26 +88,26 @@ install_rpm() {
88
88
exit 1
89
89
fi
90
90
91
- download_file " $url " " $kasmrpm "
91
+ download_file " $$ url" " $ $ kasmrpm"
92
92
93
93
# shellcheck disable=SC2288
94
- sudo " $$ {package_manager[@]}" " $kasmrpm " || {
95
- echo " ERROR: Failed to install $kasmrpm "
94
+ sudo " $$ {package_manager[@]}" " $$ kasmrpm" || {
95
+ echo " ERROR: Failed to install $$ kasmrpm"
96
96
exit 1
97
97
}
98
98
99
- rm " $kasmrpm "
99
+ rm " $$ kasmrpm"
100
100
}
101
101
102
102
# Function to install kasmvncserver for Alpine Linux
103
103
install_alpine () {
104
- local url=$1
104
+ local url=$$ 1
105
105
local kasmtgz=" /tmp/kasmvncserver.tgz"
106
106
107
- download_file " $url " " $kasmtgz "
107
+ download_file " $$ url" " $ $ kasmtgz"
108
108
109
- tar -xzf " $kasmtgz " -C /usr/local/bin/
110
- rm " $kasmtgz "
109
+ tar -xzf " $$ kasmtgz" -C /usr/local/bin/
110
+ rm " $$ kasmtgz"
111
111
}
112
112
113
113
# Detect system information
118
118
119
119
# shellcheck disable=SC1091
120
120
source /etc/os-release
121
- distro=" $ID "
122
- distro_version=" $VERSION_ID "
123
- codename=" $VERSION_CODENAME "
124
- arch=" $( uname -m) "
125
- if [[ " $ID " == " ol" ]]; then
121
+ distro=" $$ ID"
122
+ distro_version=" $$ VERSION_ID"
123
+ codename=" $$ VERSION_CODENAME"
124
+ arch=" $$ (uname -m)"
125
+ if [[ " $$ ID" == " ol" ]]; then
126
126
distro=" oracle"
127
127
distro_version=" $$ {distro_version%%.*}"
128
- elif [[ " $ID " == " fedora" ]]; then
129
- distro_version=" $( grep -oP ' \(\K[\w ]+' /etc/fedora-release | tr ' [:upper:]' ' [:lower:]' | tr -d ' ' ) "
128
+ elif [[ " $$ ID" == " fedora" ]]; then
129
+ distro_version=" $$ (grep -oP '\(\K[\w ]+' /etc/fedora-release | tr '[:upper:]' '[:lower:]' | tr -d ' ')"
130
130
fi
131
131
132
- echo " Detected Distribution: $distro "
133
- echo " Detected Version: $distro_version "
134
- echo " Detected Codename: $codename "
135
- echo " Detected Architecture: $arch "
132
+ echo " Detected Distribution: $$ distro"
133
+ echo " Detected Version: $$ distro_version"
134
+ echo " Detected Codename: $$ codename"
135
+ echo " Detected Architecture: $$ arch"
136
136
137
137
# Map arch to package arch
138
138
case " $arch " in
139
139
x86_64)
140
- if [[ " $distro " =~ ^(ubuntu| debian| kali)$ ]]; then
140
+ if [[ " $$ distro" =~ ^(ubuntu| debian| kali)$ ]]; then
141
141
arch=" amd64"
142
142
fi
143
143
;;
144
144
aarch64)
145
- if [[ " $distro " =~ ^(ubuntu| debian| kali)$ ]]; then
145
+ if [[ " $$ distro" =~ ^(ubuntu| debian| kali)$ ]]; then
146
146
arch=" arm64"
147
147
fi
148
148
;;
149
149
arm64)
150
150
: # This is effectively a noop
151
151
;;
152
152
* )
153
- echo " ERROR: Unsupported architecture: $arch "
153
+ echo " ERROR: Unsupported architecture: $$ arch"
154
154
exit 1
155
155
;;
156
156
esac
@@ -166,21 +166,21 @@ if ! check_installed; then
166
166
base_url=" https://github.com/kasmtech/KasmVNC/releases/download/v${KASM_VERSION} "
167
167
168
168
echo " Installing KASM version: ${KASM_VERSION} "
169
- case $distro in
169
+ case $$ distro in
170
170
ubuntu | debian | kali)
171
171
bin_name=" kasmvncserver_$$ {codename}_${KASM_VERSION} _$$ {arch}.deb"
172
- install_deb " $base_url /$bin_name "
172
+ install_deb " $$ base_url/$ $ bin_name"
173
173
;;
174
174
oracle | fedora | opensuse)
175
175
bin_name=" kasmvncserver_$$ {distro}_$$ {distro_version}_${KASM_VERSION} _$$ {arch}.rpm"
176
- install_rpm " $base_url /$bin_name "
176
+ install_rpm " $$ base_url/$ $ bin_name"
177
177
;;
178
178
alpine)
179
179
bin_name=" kasmvnc.alpine_$$ {distro_version//./}_$$ {arch}.tgz"
180
- install_alpine " $base_url /$bin_name "
180
+ install_alpine " $$ base_url/$ $ bin_name"
181
181
;;
182
182
* )
183
- echo " Unsupported distribution: $distro "
183
+ echo " Unsupported distribution: $$ distro"
184
184
exit 1
185
185
;;
186
186
esac
@@ -192,23 +192,23 @@ if command -v sudo &> /dev/null && sudo -n true 2> /dev/null; then
192
192
kasm_config_file=" /etc/kasmvnc/kasmvnc.yaml"
193
193
SUDO=sudo
194
194
else
195
- kasm_config_file=" $HOME /.vnc/kasmvnc.yaml"
195
+ kasm_config_file=" $$ HOME/.vnc/kasmvnc.yaml"
196
196
SUDO=" "
197
197
198
198
echo " WARNING: Sudo access not available, using user config dir!"
199
199
200
- if [[ -f " $kasm_config_file " ]]; then
200
+ if [[ -f " $$ kasm_config_file" ]]; then
201
201
echo " WARNING: Custom user KasmVNC config exists, not overwriting!"
202
202
echo " WARNING: Ensure that you manually configure the appropriate settings."
203
203
kasm_config_file=" /dev/stderr"
204
204
else
205
205
echo " WARNING: This may prevent custom user KasmVNC settings from applying!"
206
- mkdir -p " $HOME /.vnc"
206
+ mkdir -p " $$ HOME/.vnc"
207
207
fi
208
208
fi
209
209
210
- echo " Writing KasmVNC config to $kasm_config_file "
211
- $SUDO tee " $kasm_config_file " > /dev/null << EOF
210
+ echo " Writing KasmVNC config to $$ kasm_config_file"
211
+ $$ SUDO tee " $ $ kasm_config_file" > /dev/null << EOF
212
212
network:
213
213
protocol: http
214
214
interface: 127.0.0.1
224
224
# This password is not used since we start the server without auth.
225
225
# The server is protected via the Coder session token / tunnel
226
226
# and does not listen publicly
227
- echo -e " password\npassword\n" | vncpasswd -wo -u " $USER "
227
+ echo -e " password\npassword\n" | vncpasswd -wo -u " $$ USER"
228
228
229
229
get_http_dir () {
230
230
# determine the served file path
@@ -240,41 +240,41 @@ get_http_dir() {
240
240
fi
241
241
242
242
# Check the home directory for overriding values
243
- if [[ -e " $HOME /.vnc/kasmvnc.yaml" ]]; then
244
- d=$( grep -E ' ^\s*httpd_directory:.*$' " $HOME /.vnc/kasmvnc.yaml" | awk ' {print $$2}' )
243
+ if [[ -e " $$ HOME/.vnc/kasmvnc.yaml" ]]; then
244
+ d=$( grep -E ' ^\s*httpd_directory:.*$' " $$ HOME/.vnc/kasmvnc.yaml" | awk ' {print $$2}' )
245
245
if [[ -n " $$ d" && -d " $$ d" ]]; then
246
246
httpd_directory=$$ d
247
247
fi
248
248
fi
249
- echo $httpd_directory
249
+ echo $$ httpd_directory
250
250
}
251
251
252
252
fix_server_index_file () {
253
253
local fname=$$ {FUNCNAME[0]} # gets current function name
254
254
if [[ $# -ne 1 ]]; then
255
- error " $fname requires exactly 1 parameter:\n\tpath to KasmVNC httpd_directory"
255
+ error " $$ fname requires exactly 1 parameter:\n\tpath to KasmVNC httpd_directory"
256
256
fi
257
- local httpdir=" $1 "
258
- if [[ ! -d " $httpdir " ]]; then
259
- error " $fname : $httpdir is not a directory"
257
+ local httpdir=" $$ 1"
258
+ if [[ ! -d " $$ httpdir" ]]; then
259
+ error " $$ fname: $ $ httpdir is not a directory"
260
260
fi
261
- pushd " $httpdir " > /dev/null
261
+ pushd " $$ httpdir" > /dev/null
262
262
263
263
cat << 'EOH ' > /tmp/path_vnc.html
264
264
${PATH_VNC_HTML}
265
265
EOH
266
- $SUDO mv /tmp/path_vnc.html .
266
+ $$ SUDO mv /tmp/path_vnc.html .
267
267
# check for the switcheroo
268
268
if [[ -f " index.html" && -L " vnc.html" ]]; then
269
- $SUDO mv $httpdir /index.html $httpdir /vnc.html
269
+ $$ SUDO mv $$ httpdir/index.html $ $ httpdir/vnc.html
270
270
fi
271
- $SUDO ln -s -f path_vnc.html index.html
271
+ $$ SUDO ln -s -f path_vnc.html index.html
272
272
popd > /dev/null
273
273
}
274
274
275
275
patch_kasm_http_files () {
276
276
homedir=$( get_http_dir)
277
- fix_server_index_file " $homedir "
277
+ fix_server_index_file " $$ homedir"
278
278
}
279
279
280
280
if [[ " ${SUBDOMAIN} " == " false" ]]; then
@@ -287,17 +287,17 @@ VNC_LOG="/tmp/kasmvncserver.log"
287
287
printf " 🚀 Starting KasmVNC server...\n"
288
288
289
289
set +e
290
- vncserver -select-de " ${DESKTOP_ENVIRONMENT} " -disableBasicAuth > " $VNC_LOG " 2>&1
291
- RETVAL=$?
290
+ vncserver -select-de " ${DESKTOP_ENVIRONMENT} " -disableBasicAuth > " $$ VNC_LOG" 2>&1
291
+ RETVAL=$$ ?
292
292
set -e
293
293
294
- if [[ $RETVAL -ne 0 ]]; then
295
- echo " ERROR: Failed to start KasmVNC server. Return code: $RETVAL "
296
- if [[ -f " $VNC_LOG " ]]; then
294
+ if [[ $$ RETVAL -ne 0 ]]; then
295
+ echo " ERROR: Failed to start KasmVNC server. Return code: $$ RETVAL"
296
+ if [[ -f " $$ VNC_LOG" ]]; then
297
297
echo " Full logs:"
298
- cat " $VNC_LOG "
298
+ cat " $$ VNC_LOG"
299
299
else
300
- echo " ERROR: Log file not found: $VNC_LOG "
300
+ echo " ERROR: Log file not found: $$ VNC_LOG"
301
301
fi
302
302
exit 1
303
303
fi
0 commit comments