|
|
|
@ -10,9 +10,10 @@ ENABLED=yes
|
|
|
|
[[ ${ENABLED} == yes ]] || exit 0
|
|
|
|
[[ ${ENABLED} == yes ]] || exit 0
|
|
|
|
DEBUGMODE=no
|
|
|
|
DEBUGMODE=no
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
SELF_FILE=${SSC_ARGV0:-${0}}; SELF_NAME=${SELF_FILE##*/}; SELF_PATH=${SELF_FILE%/*}
|
|
|
|
[[ ! -f /init ]] && { ROOTFS= ; CMD_CHROOT= ; } || { [[ -d /sysroot ]] && ROOTFS="/sysroot" || ROOTFS="."; CMD_CHROOT="chroot ${ROOTFS}"; }
|
|
|
|
[[ ! -f /init ]] && { ROOTFS= ; CMD_CHROOT= ; } || { [[ -d /sysroot ]] && ROOTFS="/sysroot" || ROOTFS="."; CMD_CHROOT="chroot ${ROOTFS}"; }
|
|
|
|
SOURCE=${ROOTFS}/usr/lib/ublinux/functions; [[ -f ${SOURCE} ]] && . ${SOURCE} 2>/dev/null
|
|
|
|
SOURCE=${ROOTFS}/usr/lib/ublinux/functions; [[ -f ${SOURCE} ]] && . ${SOURCE} 2>/dev/null
|
|
|
|
debug_mode "${SSC_ARGV0:-$0}" "$@"
|
|
|
|
debug_mode "${SELF_FILE}" "$@"
|
|
|
|
SOURCE=${ROOTFS}/usr/lib/ublinux/default; [[ -f ${SOURCE} ]] && . ${SOURCE} 2>/dev/null
|
|
|
|
SOURCE=${ROOTFS}/usr/lib/ublinux/default; [[ -f ${SOURCE} ]] && . ${SOURCE} 2>/dev/null
|
|
|
|
|
|
|
|
|
|
|
|
SYSCONF="${ROOTFS}${SYSCONF}"
|
|
|
|
SYSCONF="${ROOTFS}${SYSCONF}"
|
|
|
|
@ -56,19 +57,19 @@ SOURCE=${FILE_ROOT_USERS}; [[ -f ${SOURCE} ]] && . ${SOURCE} 2>/dev/null
|
|
|
|
## Отключить автоматическое создание X11VNC для всех дисплеев
|
|
|
|
## Отключить автоматическое создание X11VNC для всех дисплеев
|
|
|
|
## X11VNC[display]=disable || X11VNC[nodisplay]=1 || X11VNC[disable]=1
|
|
|
|
## X11VNC[display]=disable || X11VNC[nodisplay]=1 || X11VNC[disable]=1
|
|
|
|
exec_x11vnc(){
|
|
|
|
exec_x11vnc(){
|
|
|
|
systemctl --quiet --wait is-system-running
|
|
|
|
x11vnc_service_enable(){
|
|
|
|
if [[ -n ${X11VNC[@]} ]]; then
|
|
|
|
|
|
|
|
OPTION_GLOBAL="-many -shared -no6"
|
|
|
|
OPTION_GLOBAL="-many -shared -no6"
|
|
|
|
#OPTION_GLOBAL="-many -shared -no6 -forever -dontdisconnect -noxdamage -xkb -rfbport 590%i "
|
|
|
|
#OPTION_GLOBAL="-many -shared -no6 -forever -dontdisconnect -noxdamage -xkb -rfbport 590%i "
|
|
|
|
if [[ -n ${X11VNC[password]} ]]; then
|
|
|
|
if [[ -n ${X11VNC[password]} ]]; then
|
|
|
|
|
|
|
|
PLAIN_PASSWORD=$(${ROOTFS}/usr/lib/ublinux/functions return_base64_password decode "${X11VNC[password]}")
|
|
|
|
# Добавить параметр в ${FILE_ROOT_USERS}=".users_credential" и удалить параметр X11VNC[password] из '/etc/ublinux/desktop
|
|
|
|
# Добавить параметр в ${FILE_ROOT_USERS}=".users_credential" и удалить параметр X11VNC[password] из '/etc/ublinux/desktop
|
|
|
|
if [[ -f ${FILE_ROOT_USERS} ]]; then
|
|
|
|
if [[ -f ${FILE_ROOT_USERS} ]]; then
|
|
|
|
sed "/X11VNC\[password\]=/d" -i "${FILE_ROOT_USERS}"
|
|
|
|
sed "/X11VNC\[password\]=/d" -i "${FILE_ROOT_USERS}"
|
|
|
|
[[ -n ${X11VNC[password]} ]] && echo "X11VNC[password]='${X11VNC[password]}'" >> ${FILE_ROOT_USERS}
|
|
|
|
[[ -n ${X11VNC[password]} ]] && echo "X11VNC[password]='$(${ROOTFS}/usr/lib/ublinux/functions return_base64_password hash "${X11VNC[password]}")'" >> ${FILE_ROOT_USERS}
|
|
|
|
fi
|
|
|
|
fi
|
|
|
|
[[ -f "${SYSCONF}/desktop" ]] && sed -E "s/(X11VNC\[password\])=.*/\1=secret/g" -i "${SYSCONF}/desktop"
|
|
|
|
[[ -f "${SYSCONF}/desktop" ]] && sed -E "s/(X11VNC\[password\])=.*/\1=secret/g" -i "${SYSCONF}/desktop"
|
|
|
|
[[ -d /root/.vnc ]] || mkdir -p /root/.vnc
|
|
|
|
[[ -d /root/.vnc ]] || mkdir -p /root/.vnc
|
|
|
|
/usr/bin/x11vnc -quiet -storepasswd "$(base64 -d <<< "${X11VNC[password]}")" /root/.vnc/.passwd &>/dev/null
|
|
|
|
/usr/bin/x11vnc -quiet -storepasswd "${PLAIN_PASSWORD}" /root/.vnc/.passwd &>/dev/null
|
|
|
|
chmod 600 /root/.vnc/.passwd
|
|
|
|
chmod 600 /root/.vnc/.passwd
|
|
|
|
## Show obscured password
|
|
|
|
## Show obscured password
|
|
|
|
#/usr/bin/x11vnc -showrfbauth /root/.vnc/passwd
|
|
|
|
#/usr/bin/x11vnc -showrfbauth /root/.vnc/passwd
|
|
|
|
@ -118,7 +119,7 @@ EOF
|
|
|
|
## Настройка VNC для TTY
|
|
|
|
## Настройка VNC для TTY
|
|
|
|
if [[ ${X11VNC_NEW} =~ ^tty[0-9]{1,2}$ ]]; then
|
|
|
|
if [[ ${X11VNC_NEW} =~ ^tty[0-9]{1,2}$ ]]; then
|
|
|
|
NUM_TTY=$(sed "s/tty//" <<< ${X11VNC_NEW})
|
|
|
|
NUM_TTY=$(sed "s/tty//" <<< ${X11VNC_NEW})
|
|
|
|
X11VNC[${X11VNC_NEW}]="${OPTION_GLOBAL} -rfbauth /root/.vnc/.passwd -rawfb vt${NUM_TTY} ${X11VNC[${X11VNC_NEW}]}"
|
|
|
|
X11VNC[${X11VNC_NEW}]="${OPTION_GLOBAL} ${OPTION_RFBAUTH_PASSWD} -rawfb vt${NUM_TTY} ${X11VNC[${X11VNC_NEW}]}"
|
|
|
|
fi
|
|
|
|
fi
|
|
|
|
FILE_X11VNC_SERVICE="/usr/lib/systemd/system/x11vnc-ublinux-${X11VNC_NEW}.service"
|
|
|
|
FILE_X11VNC_SERVICE="/usr/lib/systemd/system/x11vnc-ublinux-${X11VNC_NEW}.service"
|
|
|
|
OPTION_LOG="-o /var/log/x11vnc-ublinux-${X11VNC_NEW}.log"
|
|
|
|
OPTION_LOG="-o /var/log/x11vnc-ublinux-${X11VNC_NEW}.log"
|
|
|
|
@ -156,8 +157,8 @@ EOF
|
|
|
|
[[ -f ${FILE_X11VNC_SERVICE} ]] && systemctl --quiet enable ${FILE_X11VNC_SERVICE##*/} &>/dev/null && systemctl --quiet restart ${FILE_X11VNC_SERVICE##*/} &>/dev/null
|
|
|
|
[[ -f ${FILE_X11VNC_SERVICE} ]] && systemctl --quiet enable ${FILE_X11VNC_SERVICE##*/} &>/dev/null && systemctl --quiet restart ${FILE_X11VNC_SERVICE##*/} &>/dev/null
|
|
|
|
fi
|
|
|
|
fi
|
|
|
|
done
|
|
|
|
done
|
|
|
|
else
|
|
|
|
}
|
|
|
|
## Если в режиме полного сохранения настройку убрали, то отключаем
|
|
|
|
x11vnc_service_disable(){
|
|
|
|
local DAEMON_RELOAD=
|
|
|
|
local DAEMON_RELOAD=
|
|
|
|
[[ -f ${FILE_ROOT_USERS} ]] && sed "/X11VNC\[password\]=/d" -i "${FILE_ROOT_USERS}"
|
|
|
|
[[ -f ${FILE_ROOT_USERS} ]] && sed "/X11VNC\[password\]=/d" -i "${FILE_ROOT_USERS}"
|
|
|
|
[[ -f "${SYSCONF}/desktop" ]] && sed "/X11VNC\[password\]=/d" -i "${SYSCONF}/desktop"
|
|
|
|
[[ -f "${SYSCONF}/desktop" ]] && sed "/X11VNC\[password\]=/d" -i "${SYSCONF}/desktop"
|
|
|
|
@ -171,6 +172,29 @@ EOF
|
|
|
|
fi
|
|
|
|
fi
|
|
|
|
done
|
|
|
|
done
|
|
|
|
[[ -z ${DAEMON_RELOAD} ]] || systemctl daemon-reload &>/dev/null
|
|
|
|
[[ -z ${DAEMON_RELOAD} ]] || systemctl daemon-reload &>/dev/null
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
[[ $1 == @("set="|"set+="|"set++="|"set-="|"set--="|"remove") ]] && COMMAND=$1 && shift
|
|
|
|
|
|
|
|
[[ -n ${COMMAND} ]] || COMMAND="set="
|
|
|
|
|
|
|
|
local PARAM="$@"
|
|
|
|
|
|
|
|
if [[ -n ${PARAM} ]]; then
|
|
|
|
|
|
|
|
local X11VNC=
|
|
|
|
|
|
|
|
declare -A X11VNC=()
|
|
|
|
|
|
|
|
[[ ${PARAM} =~ ^[[:alnum:]_]+("="|"[".*"]=") ]] && eval "${PARAM%%=*}=\${PARAM#*=}"
|
|
|
|
|
|
|
|
fi
|
|
|
|
|
|
|
|
systemctl --quiet --wait is-system-running
|
|
|
|
|
|
|
|
if [[ ${COMMAND} == @("set="|"set+="|"set++=") ]]; then
|
|
|
|
|
|
|
|
if [[ ${#X11VNC[@]} != 0 ]]; then
|
|
|
|
|
|
|
|
x11vnc_service_enable
|
|
|
|
|
|
|
|
else
|
|
|
|
|
|
|
|
x11vnc_service_disable
|
|
|
|
|
|
|
|
fi
|
|
|
|
|
|
|
|
elif [[ ${COMMAND} == @("set-="|"set--="|"remove") ]]; then
|
|
|
|
|
|
|
|
if [[ ${#X11VNC[@]} != 0 ]]; then
|
|
|
|
|
|
|
|
x11vnc_service_enable
|
|
|
|
|
|
|
|
else
|
|
|
|
|
|
|
|
## Если в режиме полного сохранения настройку убрали, то отключаем
|
|
|
|
|
|
|
|
x11vnc_service_disable
|
|
|
|
|
|
|
|
fi
|
|
|
|
fi
|
|
|
|
fi
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
@ -180,5 +204,16 @@ EOF
|
|
|
|
|
|
|
|
|
|
|
|
# Если файл подключен как ресурс с функциями, то выйти
|
|
|
|
# Если файл подключен как ресурс с функциями, то выйти
|
|
|
|
return 0 2>/dev/null && return 0
|
|
|
|
return 0 2>/dev/null && return 0
|
|
|
|
|
|
|
|
if [[ -z $@ ]]; then
|
|
|
|
exec_x11vnc $@
|
|
|
|
while read -r FUNCTION; do
|
|
|
|
|
|
|
|
$"${FUNCTION##* }"
|
|
|
|
|
|
|
|
done < <(declare -F | grep "declare -f exec_")
|
|
|
|
|
|
|
|
else
|
|
|
|
|
|
|
|
FUNCTION=
|
|
|
|
|
|
|
|
while [[ $# -gt 0 ]]; do
|
|
|
|
|
|
|
|
# Что-бы передавать пустые параметры как аргументы, нужно для соблюдения очередности и кол-ва, отключил [[ -z ${1} ]] || {}
|
|
|
|
|
|
|
|
declare -f "${1}" &>/dev/null && FUNCTION+="; ${1}" || FUNCTION+=" '${1//\'/}'"
|
|
|
|
|
|
|
|
shift
|
|
|
|
|
|
|
|
done
|
|
|
|
|
|
|
|
eval ${FUNCTION#*; }
|
|
|
|
|
|
|
|
fi
|
|
|
|
|