99 lines
3.3 KiB
Bash
99 lines
3.3 KiB
Bash
#!/bin/bash
|
|
export DISPLAY=:99
|
|
export XAUTHORITY=${DATA_DIR}/.Xauthority
|
|
|
|
echo "---Checking if 'winbox64.exe' is in main data directory...---"
|
|
if [ ! -f ${DATA_DIR}/winbox64.exe ]; then
|
|
if [ "${DOWNLOAD_WB64}" == "true" ]; then
|
|
echo "---'winbox64.exe not found. Downloading, please wait..."
|
|
if wget -q -nc --show-progress --progress=bar:force:noscroll -O ${DATA_DIR}/winbox64.exe "https://mt.lv/winbox64" ; then
|
|
echo "---Sucessfully downloaded 'winbox64.exe'---"
|
|
else
|
|
echo "---Something went wrong, can't download 'winbox64.exe', putting container in sleep mode---"
|
|
sleep infinity
|
|
fi
|
|
else
|
|
echo "---'winbox64.exe' not found, please make sure to put the executable in the main data directory!---"
|
|
fi
|
|
else
|
|
echo "---'winbox64.exe' found!---"
|
|
fi
|
|
|
|
echo "---Prepare Server---"
|
|
export WINEARCH=win64
|
|
export WINEPREFIX=${DATA_DIR}/WINE64
|
|
export WINEDEBUG=-all
|
|
echo "---Checking if WINE workdirectory is present---"
|
|
if [ ! -d ${DATA_DIR}/WINE64 ]; then
|
|
echo "---WINE workdirectory not found, creating please wait...---"
|
|
mkdir ${DATA_DIR}/WINE64
|
|
else
|
|
echo "---WINE workdirectory found---"
|
|
fi
|
|
echo "---Checking if WINE is properly installed---"
|
|
if [ ! -d ${DATA_DIR}/WINE64/drive_c/windows ]; then
|
|
echo "---Setting up WINE---"
|
|
cd ${DATA_DIR}
|
|
winecfg > /dev/null 2>&1
|
|
sleep 15
|
|
else
|
|
echo "---WINE properly set up---"
|
|
fi
|
|
|
|
echo "---Checking for old logfiles---"
|
|
if [ ! -f ${WINEPREFIX}/drive_c/users/${USER}/AppData/Roaming/Mikrotik/Winbox/settings.cfg.viw ]; then
|
|
echo "---Default view settings not found, copying default over---"
|
|
echo "Keep Password = Disabled"
|
|
echo "Open in New Window = Enabled"
|
|
echo "Auto Reconnect = Enabled"
|
|
echo
|
|
mkdir -p ${WINEPREFIX}/drive_c/users/${USER}/AppData/Roaming/Mikrotik/Winbox 2>/dev/null
|
|
cp /tmp/settings.cfg.viw ${WINEPREFIX}/drive_c/users/${USER}/AppData/Roaming/Mikrotik/Winbox/settings.cfg.viw 2>/dev/null
|
|
fi
|
|
|
|
find $DATA_DIR -name "XvfbLog.*" -exec rm -f {} \;
|
|
find $DATA_DIR -name "x11vncLog.*" -exec rm -f {} \;
|
|
echo "---Checking for old display lock files---"
|
|
rm -rf /tmp/.X99*
|
|
rm -rf /tmp/.X11*
|
|
rm -rf ${DATA_DIR}/.vnc/*.log ${DATA_DIR}/.vnc/*.pid
|
|
chmod -R ${DATA_PERM} ${DATA_DIR}
|
|
if [ -f ${DATA_DIR}/.vnc/passwd ]; then
|
|
chmod 600 ${DATA_DIR}/.vnc/passwd
|
|
fi
|
|
|
|
echo "---Resolution check---"
|
|
if [ -z "${CUSTOM_RES_W} ]; then
|
|
CUSTOM_RES_W=1024
|
|
fi
|
|
if [ -z "${CUSTOM_RES_H} ]; then
|
|
CUSTOM_RES_H=768
|
|
fi
|
|
|
|
if [ "${CUSTOM_RES_W}" -le 1024 ]; then
|
|
echo "---Width to low must be a minimal of 1024 pixels, correcting to 1024...---"
|
|
CUSTOM_RES_W=1024
|
|
fi
|
|
if [ "${CUSTOM_RES_H}" -le 768 ]; then
|
|
echo "---Height to low must be a minimal of 768 pixels, correcting to 768...---"
|
|
CUSTOM_RES_H=768
|
|
fi
|
|
|
|
echo "---Starting TurboVNC server---"
|
|
vncserver -geometry ${CUSTOM_RES_W}x${CUSTOM_RES_H} -depth ${CUSTOM_DEPTH} :99 -rfbport ${RFB_PORT} -noxstartup ${TURBOVNC_PARAMS} 2>/dev/null
|
|
sleep 2
|
|
echo "---Starting Fluxbox---"
|
|
screen -d -m env HOME=/etc /usr/bin/fluxbox
|
|
sleep 2
|
|
echo "---Starting noVNC server---"
|
|
websockify -D --web=/usr/share/novnc/ --cert=/etc/ssl/novnc.pem ${NOVNC_PORT} localhost:${RFB_PORT}
|
|
sleep 2
|
|
|
|
echo "---Starting winbox64---"
|
|
cd ${DATA_DIR}
|
|
if [ ! -f ${DATA_DIR}/winbox64.exe ]; then
|
|
echo "---Executable not found, putting container into sleep mode!---"
|
|
sleep infinity
|
|
else
|
|
wine64 ${DATA_DIR}/winbox64.exe
|
|
fi |