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.
73 lines
2.2 KiB
73 lines
2.2 KiB
4 years ago
|
#! /bin/bash
|
||
|
|
||
|
install_dir='/opt/yubilock/'
|
||
|
logging_dir='/var/log/yubilock/'
|
||
|
|
||
|
script_dir="$(dirname $(readlink -f $0))"
|
||
|
# exit when any command fails
|
||
|
set -e
|
||
|
|
||
|
# Make sure running as root
|
||
|
if [ `id -u` -ne 0 ]; then
|
||
|
echo 'Please run as root'
|
||
|
exit 1
|
||
|
fi
|
||
|
|
||
|
echo "Create yubilock user"
|
||
|
adduser --system --home "$install_dir" --shell "/usr/sbin/nologin" --group --gecos "xscreensaver yubilock daemon" -q 'yubilock'
|
||
|
|
||
|
echo "Making sure python3 and virtualenv are installed"
|
||
|
python3 --version || apt-get install python3
|
||
|
python3 -m venv -h >/dev/null 2>&1 || apt-get install python3-venv
|
||
|
|
||
|
|
||
|
echo "Create virualenv"
|
||
|
[ -f "$install_dir/venv/bin/activate" ] || python3 -m venv "$install_dir/venv"
|
||
|
. "$install_dir/venv/bin/activate"
|
||
|
pip install setuptools wheel
|
||
|
pip install -r "$script_dir/requirements.txt"
|
||
|
|
||
|
|
||
|
echo "Copy over application files"
|
||
|
cp "$script_dir/xscreensaver_yubilock.py" "$install_dir"
|
||
|
cp "$script_dir/uninstall.sh" "$install_dir"
|
||
|
cp "$script_dir/config_example.ini" "$install_dir/config.ini"
|
||
|
|
||
|
# Remove first line from config
|
||
|
sed -i '1d' "$install_dir/config.ini"
|
||
|
|
||
|
chown -R yubilock:yubilock "$install_dir"
|
||
|
chown root:yubilock "$install_dir"
|
||
|
chmod 775 "$install_dir"
|
||
|
|
||
|
|
||
|
echo "Create logging directory"
|
||
|
mkdir -p "$logging_dir"
|
||
|
chown --from=root:root root:yubilock "$logging_dir"
|
||
|
chmod 775 "$logging_dir"
|
||
|
sed -i "s+^logfile\ =.*+logfile\ =\ ${logging_dir}daemon.log+g" "$install_dir/config.ini"
|
||
|
|
||
|
|
||
|
echo "Allow yubilock user access to X host"
|
||
|
touch "$install_dir/.Xauthority"
|
||
|
chown yubilock:yubilock "$install_dir/.Xauthority"
|
||
|
hexkey=`sudo -u link xauth list | cut -d ' ' -f 5`
|
||
|
export XAUTHORITY="/opt/yubilock/.Xauthority"
|
||
|
echo sudo -u yubilock xauth add \":0\" . "$hexkey"
|
||
|
sudo -u yubilock xauth add ":0" . "$hexkey"
|
||
|
|
||
|
|
||
|
echo "Fix udev usb rights for yubilock"
|
||
|
cp "$script_dir/debian/91-usbftdi.rules" '/etc/udev/rules.d/'
|
||
|
chown root:root '/etc/udev/rules.d/91-usbftdi.rules'
|
||
|
udevadm control --reload-rules
|
||
|
|
||
|
|
||
|
echo "Enable as systemd service"
|
||
|
cp "$script_dir/debian/yubilock.service" "/etc/systemd/system"
|
||
|
sed -i "s+^ExecStart=.*+ExecStart=${install_dir}venv/bin/python ${install_dir}xscreensaver_yubilock.py+g" '/etc/systemd/system/yubilock.service'
|
||
|
systemctl enable yubilock.service
|
||
|
|
||
|
|
||
|
#(Uninstall script)
|