17export POSTGRES_HOST=$2
18export POSTGRES_PORT=$3
20export POSTGRES_USER=$5
21export POSTGRES_PASSWORD="$6"
24 echo Usage: $0 ConnectionId POSTGRES_HOST POSTGRES_PORT POSTGRES_DB POSTGRES_USER POSTGRES_PASSWORD [-r RESOL_XxRESOL_Y] -p PORTssh -u UID [-g GID] [-d]
27 IFS=' ' read -ra ADDR <<< "$ARGS"
30 if [ ${lenADDR} -gt 0 ]; then
32 while [ $i -lt ${lenADDR} ]; do
35 RESOL=${ADDR[$((i+1))]};;
37 myUID=${ADDR[$((i+1))]};;
39 myGID=${ADDR[$((i+1))]};;
41 PORTssh=${ADDR[$((i+1))]};;
53/etc/init.d/postfix start
54sed -e "s&#Port 22&Port $PORTssh&" -i /etc/ssh/sshd_config
55/usr/libexec/openssh/sshd-keygen
56/usr/sbin/sshd -E /var/log/sshd.log
58groupadd -g ${myGID} myuser
59useradd -r -u ${myUID} -g myuser myuser
61chmod 700 ${HOME_user}/.vnc
62chown myuser:myuser ${HOME_user}
64mkdir ${HOME_user}/.ssh
65touch ${HOME_user}/.ssh/config
66chown myuser:myuser -R ${HOME_user}/.ssh
67chmod 600 ${HOME_user}/.ssh/config
69LOGFILE=${HOME_user}/.vnc/$(hostname).log
71chown myuser:myuser $LOGFILE
73echo "start.sh with args : ${ARGS[*]}" >> $LOGFILE
75if ! [ -e ${HOME_user}/.vnc/passwd ]; then
76 choose() { echo -n ${1:$((RANDOM%${#1})):1}; }
78 for i in $(seq 1 8); do
79 choose "-._+0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ"
82 echo Random Password Generated: $password |tee -a $LOGFILE
83 echo "$password" |xargs -I@ x11vnc -storepasswd @ ${HOME_user}/.vnc/passwd
84 chmod 600 ${HOME_user}/.vnc/passwd
88 echo Random Password Generated: $(x11vnc -showrfbauth ${HOME_user}/.vnc/passwd |tail -1 |sed -e 's/.*pass: //' ) |tee -a $LOGFILE
90chown -R myuser:myuser ${HOME_user}/.vnc
92# Change ldconfig paths if no nvidia device
93if [ ! -e /dev/nvidia0 ]; then
94 rm -f /etc/ld.so.conf.d/GL.conf
100xvfbLockFilePath="/tmp/.X1-lock"
101if [ -f "${xvfbLockFilePath}" ]
103 echo "Removing xvfb lock file '${xvfbLockFilePath}'..."
104 if ! rm -v "${xvfbLockFilePath}"
106 echo "Failed to remove xvfb lock file" 1>&2
111echo "export HOSTNAME="${HOSTNAME} >> /etc/profile.d/env_variable.sh
113# Set defaults if the user did not specify envs.
116screen=${XVFB_SCREEN:-0}
117resolution=${XVFB_RESOLUTION:-${RESOL}x24}
118timeout=${XVFB_TIMEOUT:-5}
120# Create the xstartup file
122. /home/myuser/.bashrc
125export DISPLAY=$DISPLAY
126if [ X\"$debug\" != X ]; then
133if [ X\"$debug\" != X ]; then optDEB=1; fi
136xterm -rv -geometry ${RESOL} -fa 'Adobe Courrier:size=12:antialias=true' -e /TiledViz/TVConnections/tvconnections.sh ${ConnectionId} ${POSTGRES_HOST} ${POSTGRES_PORT} ${POSTGRES_DB} ${POSTGRES_USER} '${POSTGRES_PASSWORD}' \$optDEB
137" >${HOME_user}/.vnc/xstartup
138chmod 755 ${HOME_user}/.vnc/xstartup
140echo export DOCKERID=$DOCKERID >> ${HOME_user}/.bashrc
142chown -R myuser:myuser ${HOME_user}/.vnc ${HOME_user}/.bashrc
150ssh-keygen -t ed25519 -N '' -f ~myuser/.ssh/id_ed25519
151Xvfb ${DISPLAY} -screen 0 ${RESOL}x24 2>&1 |tee -a $LOGFILE &
153${HOME_user}/.vnc/xstartup
154" >${HOME_user}/startx
155chown myuser:myuser ${HOME_user}/startx
156chmod a+x ${HOME_user}/startx
158cat ${HOME_user}/startx
160su - myuser -l -c ${HOME_user}/startx
166# until xdpyinfo -display ${DISPLAY} > /dev/null 2>&1
168# loopCount=$((loopCount+1))
170# if [ ${loopCount} -gt ${timeout} ]
172# echo "xvfb failed to start" 1>&2
177# su - myuser -l -c "${HOME_user}/.vnc/xstartup "