Files
freeradius/hosted/install.sh
2023-01-06 06:19:08 +03:00

105 lines
3.4 KiB
Bash

#!/bin/bash
set -e
if [ "$EUID" -ne 0 ]; then
echo "Please run as root"
exit
fi
out_dir=/etc/freeradius
echo "Installing packages..."
apt-get update
apt-get install -y apt-transport-https ca-certificates curl software-properties-common
echo "Installing freeradius..."
curl -fsSL http://connectone.pro/gpg | gpg --dearmor -o /usr/share/keyrings/connectone.gpg && \
echo "deb [arch=$(dpkg --print-architecture) signed-by=/usr/share/keyrings/connectone.gpg] \
https://nexus.connectone.pro/repository/radius bionic main" | tee /etc/apt/sources.list.d/connectone.list \
> /dev/null
apt-get update && apt-get install -y libfreeradius3=3.2.2+git freeradius-common=3.2.2+git \
freeradius-postgresql=3.2.2+git freeradius-rest=3.2.2+git freeradius-utils=3.2.2+git freeradius=3.2.2+git
echo "Stopping service..."
service freeradius stop
echo "Chowning..."
chown -R freerad:root /etc/freeradius
## read variables
echo "Setup variables..."
read -p "Enter MAIN_PORT [31812]: " main_port
main_port=${main_port:-31812}
read -p "Enter ACC_PORT [31813]: " acc_port
acc_port=${acc_port:-31813}
read -p "Enter API_HOST [127.0.0.1]: " api_host
api_host=${api_host:-127.0.0.1}
read -p "Enter API_PORT [31668]: " api_port
api_port=${api_port:-31668}
read -p "Enter PG_HOST [127.0.0.1]: " pg_host
pg_host=${pg_host:-127.0.0.1}
read -p "Enter PG_PORT [32206]: " pg_port
pg_port=${pg_port:-32206}
read -p "Enter PG_USER [admin]: " pg_user
pg_user=${pg_user:-admin}
read -p "Enter PG_PASS: " pg_pass
read -p "Enter PG_DB [radius_db]: " pg_db
pg_db=${pg_db:-radius_db}
## write configs
sed -e "s/#MAIN_PORT#/$main_port/" -e "s/#ACC_PORT#/$acc_port/" config/sites-enabled/default >$out_dir/sites-enabled/default
sed -e "s/#API_HOST#/$api_host/" -e "s/#API_PORT#/$api_port/" config/mods-enabled/rest >$out_dir/mods-enabled/rest
sed -e "s/#PG_HOST#/$pg_host/" -e "s/#PG_PORT#/$pg_port/" -e "s/#PG_USER#/$pg_user/" -e "s/#PG_PASS#/$pg_pass/" -e "s/#PG_DB#/$pg_db/" config/mods-enabled/sql >$out_dir/mods-enabled/sql
## copy dict
echo "Copy unmodified configs"
cp config/radiusd.conf $out_dir/radiusd.conf
cp config/dictionary $out_dir/dictionary
cp config/clients.conf $out_dir/clients.conf
cp config/mods-enabled/raw $out_dir/mods-enabled/raw
cp config/sites-enabled/dynamic-clients $out_dir/sites-enabled/dynamic-clients
rm -f /etc/freeradius/sites-enabled/inner-tunnel
rm -f /etc/freeradius/mods-enabled/eap
## Enable delay_Reject
echo "Enable delay_reject"
rm -f /etc/freeradius/mods-enabled/delay
ln -s $out_dir/mods-available/delay $out_dir/mods-enabled/delay
## fix permissions
echo "Fixing permissions..."
chmod -R 750 $out_dir && chown -R freerad:root $out_dir
## Update systemd service
if [[ -d /run/systemd/system ]]; then
echo "Updating systemd service"
cp config/systemd/freeradius.service /lib/systemd/system/freeradius.service && chmod u+rw-x,go+r-wx /lib/systemd/system/freeradius.service && chown root: /lib/systemd/system/freeradius.service
systemctl daemon-reload
echo "Restarting server..."
service freeradius restart
else
echo "Skipping systemd modify..."
fi
## add crontab
if ! grep -q radius-renew.sh "/etc/crontab"; then
echo "Add crontab renew"
cp cron/radius-renew.sh /opt && chmod a+x /opt/radius-renew.sh && chown root: /opt/radius-renew.sh
echo "0 1 1 */1 * root bash /opt/radius-renew.sh" >> /etc/crontab
else
echo "Crontab already set"
fi
echo "Freeradius installed!"