Files
OpenDRS/RPiSetup/terminal-setup.sh

187 lines
5.3 KiB
Bash

#!/bin/bash
# terminal-setup.sh
# OpenDRS Online Maintenance Tracking System
# Copyright (C) 2021 Rod Wright
# SPDX-License-Identifier: GPL-2.0
current_user=`whoami`
if [ "$current_user" != "root" ]
then
echo "You must have root privileges to run this setup."
echo "Try 'sudo ./terminal-setup.sh'"
exit 1
fi
echo ""
echo ""
echo ""
echo ""
echo "This script will configure a Raspberry Pi to be an OpenDRS terminal."
echo ""
echo ""
echo "You should have already completed the following steps:"
echo ""
echo "1. Created a Raspberry Pi OS Lite SD card from the latest release."
echo "2. Installed the card in a Raspberry Pi, booted it, and logged in as pi."
echo "3. Ran sudo raspi-config and :"
echo " a. Set locale, timezone, keyboard layout, and wifi country under"
echo " Localisation Options. IMPORTANT: Do this first before setting"
echo " any passwords. Changing keyboard types usually changes character"
echo " mappings, meaning your password after the change may not be what"
echo " it was before the change."
echo " b. Set a strong password for the pi user."
echo " c. Set hostname and, if accessing a network through wifi, the SSID and"
echo " passphrase under Network Options."
echo " d. Enable SSH under Interfacing Options."
echo " e. Set overscan as required to get rid of any black borders around the"
echo " edge of the display."
echo " f. Reboot when prompted and logged back in as pi."
echo "4. Transferred the OpenDRS distribution package to /home/pi on the"
echo " Raspberry Pi and extracted it."
echo "5. Changed directory to RPiSetup in the extracted distribution directory."
echo ""
echo "If you have completed these steps, press enter to continue. If not,"
echo -n "press ctrl-c to quit."
read continueok
echo ""
echo ""
echo ""
echo ""
echo "Updating Raspberry Pi OS..."
sleep 10
echo ""
echo ""
echo ""
echo ""
apt update && apt dist-upgrade -y
echo ""
echo ""
echo ""
echo ""
echo "...done."
sleep 10
echo ""
echo ""
echo "Copying files..."
chmod +x usr/local/bin/*
cp usr/local/bin/* /usr/local/bin
cp etc/drs.conf /etc
cp etc/apt/sources.list.d/* /etc/apt/sources.list.d
cp lib/systemd/system/getty@tty1.service /lib/systemd/system
echo ""
echo ""
echo ""
echo ""
echo "...done."
sleep 10
echo ""
echo ""
echo "Installing required terminal packages..."
sleep 10
echo ""
echo ""
echo ""
echo ""
echo "deb https://download.webmin.com/download/repository sarge contrib" >/etc/apt/sources.list.d/webmin.list
wget https://download.webmin.com/jcameron-key.asc
cat jcameron-key.asc | gpg --dearmor >/etc/apt/trusted.gpg.d/jcameron-key.gpg
rm jcameron-key.asc
apt install apt-transport-https
apt update
apt install -y --no-install-recommends xorg openbox chromium-browser
apt install -y cups libcups2-dev cmake
apt install -y webmin
addgroup lpadmin
usermod -a -G lpadmin pi
systemctl enable getty@tty1.service
service cups-browsed stop
systemctl disable cups-browsed.service
cp etc/cups/cupsd.conf /etc/cups/
service cups restart
cd brlaser-master
cmake . && make && make install
cd ..
myhn=`hostname`
echo ""
echo ""
echo ""
echo ""
echo "Drivers have been installed for the Brother HL-L2300D printer that may come"
echo "with the terminal."
echo "After the terminal is set up and working, you can use another network"
echo "computer to point a web browser to $myhn:631 to add this or another printer"
echo "of your choosing."
echo -n "Press enter to continue."
read continueok
echo ""
echo "Creating customer user..."
sleep 10
echo ""
echo ""
echo ""
echo ""
cloneuser `who am i | awk '{print $1}'` customer
mkdir -p /home/customer/.config/openbox
cp home/customer/.profile /home/customer
cp home/customer/.config/openbox/rc.xml /home/customer/.config/openbox
chown -R customer:customer /home/customer/.config /home/customer/.profile
echo ""
echo ""
echo ""
echo ""
echo "...done."
echo ""
echo ""
echo "This terminal will need to communicate with an OpenDRS server. If"
echo "you intend to host the server directly on this terminal, leave this"
echo -n "blank. Otherwise, enter the server URL :"
read server_url
if [[ $server_url == "" ]]
then
conftype="Server/Terminal"
./server-setup.sh
else
conftype="Terminal"
sed -i 's,'DRS_SERVER=.*','DRS_SERVER="\"$server_url\""',' /etc/drs.conf
fi
echo ""
echo ""
./ap-setup.sh
if [ $? -ne 0 ]
then
echo "If you would like to configure this terminal as an access point at some"
echo "time in the future, log in, change directory to the"
echo "extracted distribution's RPiSetup directory, and run:"
echo " sudo ./ap-setup.sh"
fi
echo ""
echo ""
echo "$conftype configuration is now complete. "
echo ""
echo ""
echo "It is highly recommended that after rebooting, you run ssh pi@$HOSTNAME"
echo "from another computer on the network, then create new users for"
echo "yourself and any other administrators using the cloneuser command"
echo "(cloneuser pi <new username>)."
echo ""
echo ""
echo "Terminal setup complete."
echo ""
echo "If you would like to use this terminal as a DRS server, after rebooting"
echo "and logging back in, change directory to the extracted distribution's"
echo "RPiSetup directory, and run:"
echo " sudo ./server-setup.sh"
echo ""
echo ""
echo "A reboot is required to start using this terminal."
echo -n "Would you like to reboot now? [Y/n]: "
read rebootok
if [ "$rebootok" = "N" -o "$rebootok" = "n" ]
then
exit 0
else
reboot
fi