Система трансляции экранов компьютеров учеников на доску
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 
doskast/student-connect/doskast-student-connect.sh

42 lines
1.9 KiB

#!/bin/bash
set -e
set -f
set -u
set -o pipefail
_zenity(){
zenity --width=250 --title="Doskast" "$@"
}
readonly config="/etc/doskastrc"
if ! . /etc/doskastrc ; then
# || : to stabilize return code if clicking "Cancel" in zenity
_zenity --error --text="Нет файла с настройками Doskast, запустите программу настройки!" || :
exit 1
fi
if [ -z "${board:-}" ]; then
_zenity --error --text="Неправильный файл настроек Doskast, запустите программу настройки!" || :
exit 1
fi
IFS='x' read -a area < <(xdpyinfo | grep -oP 'dimensions:\s+\K\S+')
width="${area[0]}"
height="${area[1]}"
if [ -z "$width" ] || [ -z "$height" ]; then
_zenity --error --text="Ошибка получения геометрии экрана." || :
exit 1
fi
# На серверной стороне может быть ограничено кол-во одновременных соединений с одного IP-адреса
# для защиты от DDoS-атак. Имеет смысл установить ограничение в 1 запрос. Однако, если curl
# или серверный обработчик по каким-то причинам зависнут, то соединение будет открыто,
# способа его прибить кнопкой не будет,а новые соединения сервер не примет, пока это не будет закрыто.
if ! timeout 5 curl --fail "http://${board}/cgi-bin/doskast-trigger-connect.cgi?width=${width}&height=${height}"; then
_zenity --error --text="Ошибка отправки запроса на доску." || :
exit 1
fi
_zenity --info --text="На доску отправлен запрос на трансляцию экрана этого компьютера." || :