TiledViz
Loading...
Searching...
No Matches
start.sh
1#!/bin/bash
2
3RESOL=3840x2160
4
5ARGS=$@
6#echo ${ARGS[@]}
7
8#1920x1080
9myUID=1000
10myGID=1000
11myPORT=55555
12myFront=myuser@localhost
13if [ -z "$1" ]; then
14 echo Usage: $0 [-r RESOL_XxRESOL_Y] -u UID [-g GID] -p PORTserver -h Frontend
15 exit 1
16else
17 IFS=' ' read -ra ADDR <<< "$ARGS"
18 lenADDR=${#ADDR[@]}
19 if [ ${lenADDR} -gt 0 ]; then
20 i=0
21 while [ $i -lt ${lenADDR} ]; do
22 case "${ADDR[$i]}" in
23 '-r')
24 RESOL=${ADDR[$((i+1))]};;
25 '-u')
26 myUID=${ADDR[$((i+1))]};;
27 '-g')
28 myGID=${ADDR[$((i+1))]};;
29 '-p')
30 myPORT=${ADDR[$((i+1))]};;
31 '-h')
32 myFront=${ADDR[$((i+1))]};;
33 '.*')
34 myGID=${myUID}
35 esac
36 i=$((i+2));
37 done
38fi
39fi
40
41
42groupadd -g ${myGID} myuser
43useradd -r -u ${myUID} -g myuser myuser
44#adduser --disabled-password --gecos "My User" --uid 1000 myuser
45
46HOME_user=/home/myuser
47if [ -d ${HOME_user} ]; then
48 mkdir -p ${HOME_user}/.vnc
49fi
50chmod 700 ${HOME_user}/.vnc
51chown -R myuser:myuser ${HOME_user}
52
53chmod 600 ${HOME_user}/.ssh/config
54
55LOGFILE=${HOME_user}/.vnc/$(hostname).log
56touch $LOGFILE
57chown myuser:myuser $LOGFILE
58
59echo "start.sh with args : ${ARGS[*]}" >> $LOGFILE
60
61if ! [ -e ${HOME_user}/.vnc/passwd ]; then
62 if [ -z "$VNC_PASSWORD" ]; then
63 choose() { echo -n ${1:$((RANDOM%${#1})):1}; }
64 password=$({
65 for i in $(seq 1 8); do
66 choose "-._+0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ"
67 done
68 })
69 echo Random Password Generated: $password |tee -a $LOGFILE
70 echo "$password" |xargs -I@ x11vnc -storepasswd @ ${HOME_user}/.vnc/passwd
71 else
72 echo "$VNC_PASSWORD" |xargs -I@ x11vnc -storepasswd @ ${HOME_user}/.vnc/passwd
73 fi
74 chmod 600 ${HOME_user}/.vnc/passwd
75
76 sleep 1
77else
78 echo Random Password Generated: $(x11vnc -showrfbauth ${HOME_user}/.vnc/passwd |tail -1 |sed -e 's/.*pass: //' ) |tee -a $LOGFILE
79fi
80chown -R myuser:myuser ${HOME_user}
81
82echo "start X "
83
84xvfbLockFilePath="/tmp/.X1-lock"
85if [ -f "${xvfbLockFilePath}" ]
86then
87 log_i "Removing xvfb lock file '${xvfbLockFilePath}'..."
88 if ! rm -v "${xvfbLockFilePath}"
89 then
90 log_e "Failed to remove xvfb lock file"
91 exit 1
92 fi
93fi
94
95echo "export HOSTNAME="${HOSTNAME} >> /etc/profile.d/env_variable.sh
96
97# Set defaults if the user did not specify envs.
98export DISPLAY=:1
99#${XVFB_DISPLAY:-:1}
100screen=${XVFB_SCREEN:-0}
101resolution=${XVFB_RESOLUTION:-1280x960x24}
102timeout=${XVFB_TIMEOUT:-5}
103
104# Create the xstartup file
105echo "#!/bin/sh
106
107sleep 1
108xterm -rv -geometry ${RESOL}-0-0 -e /opt/client_python ${DOCKERID} ${myPORT} ${myFront} &
109
110sleep 1
111icewm
112xterm
113#unset SESSION_MANAGER
114#unset DBUS_SESSION_BUS_ADDRESS
115" >${HOME_user}/xstartup
116chmod 755 ${HOME_user}/xstartup
117
118chown -R myuser:myuser ${HOME_user}
119
120echo export DOCKERID=$DOCKERID >> ${HOME_user}/.bashrc
121
122
123# Run the vncserver
124cd
125echo $( hostname )
126su - myuser -c " Xvfb ${DISPLAY} -screen ${screen} ${resolution} &"
127loopCount=0
128until xdpyinfo -display ${DISPLAY} > /dev/null 2>&1
129do
130 loopCount=$((loopCount+1))
131 sleep 1
132 if [ ${loopCount} -gt ${timeout} ]
133 then
134 log_e "xvfb failed to start"
135 exit 1
136 fi
137done
138su - myuser -c "${HOME_user}/xstartup "
139#xinit -- :0"
140su - myuser -c "x11vnc -forever -rfbport 5902 -noncache -cursor arrow -shared -nowf -display ${DISPLAY} -rfbauth /home/myuser/.vnc/passwd -http > /tmp/out_x11vnc_$(date +%F_%H-%M) 2>&1"