#!/bin/bash VERSION="1.1.6" SCRIPT_NAME="FreeRadius Install" # log file: /usr/local/var/log/radius/radius.log . /usr/src/m2/framework/various_functions.sh . /usr/src/m2/framework/bash_functions.sh k_start FREERADIUS_VERSION=$(cat /etc/m2/system.conf | grep freeradius_version | awk '{print $3}') if [ "$FREERADIUS_VERSION" == "" ]; then FREERADIUS_VERSION=2 fi FREERADIUS_2_VERSION="2.2.5" FREERADIUS_3_VERSION="3.0.20" function install_freeradius_depend() { yum -y install wget gcc openssl openssl-devel svn if [ "$FREERADIUS_VERSION" == "3" ]; then yum -y install libtalloc-devel fi } function install_freeradius_server() { report "Installing FreeRADIUS version $FREERADIUS_VERSION" 3 # Delete old files rm -fr /usr/src/freeradius-server &> /dev/null rm -fr /usr/src/freeradius-server-"$FREERADIUS_3_VERSION" &> /dev/null rm -fr /usr/src/freeradius-server-"$FREERADIUS_3_VERSION".tar.gz &> /dev/null rm -fr /usr/src/freeradius-server-"$FREERADIUS_2_VERSION" &> /dev/null rm -fr /usr/src/freeradius-server-"$FREERADIUS_2_VERSION".tar.gz &> /dev/null # Delete old freeradius directory rm -fr /usr/local/etc/raddb &> /dev/null # Delete old dictionary rm -fr /usr/local/share/freeradius &> /dev/null # Delete old module rm -fr /usr/local/lib/rlm_m2* &> /dev/null cd /usr/src/ if [ "$FREERADIUS_VERSION" == "3" ]; then k_download_packet freeradius-server-"$FREERADIUS_3_VERSION".tar.gz extract_gz freeradius-server-"$FREERADIUS_3_VERSION".tar.gz rm -f freeradius-server-"$FREERADIUS_3_VERSION".tar.gz ln -s /usr/src/freeradius-server-"$FREERADIUS_3_VERSION" /usr/src/freeradius-server cd /usr/src/freeradius-server else k_download_packet freeradius-server-"$FREERADIUS_2_VERSION".tar.gz extract_gz freeradius-server-"$FREERADIUS_2_VERSION".tar.gz rm -f freeradius-server-"$FREERADIUS_2_VERSION".tar.gz cd freeradius-server-"$FREERADIUS_2_VERSION" fi ./configure make -j $CPU_THREAD_COUNT make install } function install_freeradius_client() { if [ ! -d "/usr/src/freeradius-client" ]; then git clone https://github.com/FreeRADIUS/freeradius-client.git /usr/src/freeradius-client fi cd /usr/src/freeradius-client git reset --hard b06690c78901751ad4466a0162c565981278dccc ./configure make -j $CPU_THREAD_COUNT make install ldconfig } function configure_freeradius_server() { if [ "$FREERADIUS_VERSION" == "3" ]; then # main conf /bin/cp -fr /usr/src/m2/freeradius/radiusd_3.conf /usr/local/etc/raddb/radiusd.conf # disable all freeradius modules rm -fr /usr/local/etc/raddb/mods-enabled/* &> /dev/null # disable default virtual servers rm -fr /usr/local/etc/raddb/sites-enabled/* &> /dev/null # enable m2 virtual server /bin/cp -fr /usr/src/m2/freeradius/m2_virtual_server /usr/local/etc/raddb/sites-available/m2 ln -s /usr/local/etc/raddb/sites-available/m2 /usr/local/etc/raddb/sites-enabled/m2 chmod 0755 -R /usr/local/etc/raddb/sites-enabled/ chmod 0755 -R /usr/local/etc/raddb/sites-available/ # enable m2 module configuration /bin/cp -fr /usr/src/m2/freeradius/m2_module_conf /usr/local/etc/raddb/mods-available/m2 ln -s /usr/local/etc/raddb/mods-available/m2 /usr/local/etc/raddb/mods-enabled/m2 else # main conf /bin/cp -fr /usr/src/m2/freeradius/radiusd_2.conf /usr/local/etc/raddb/radiusd.conf # m2 module conf /bin/cp -fr /usr/src/m2/freeradius/m2_module_conf /usr/local/etc/raddb/modules # site configuration for m2 /bin/cp -fr /usr/src/m2/freeradius/m2_default_site /usr/local/etc/raddb/sites-enabled/default fi # set configure clients.conf /bin/cp -fr /usr/src/m2/freeradius/clients.conf /usr/local/etc/raddb/clients.conf # permissions for radius configuration file chmod 644 /usr/local/etc/raddb/radiusd.conf # certificate generation cd /usr/local/etc/raddb/certs ./bootstrap k_detect_os if [[ $centos_version != 6 ]]; then # centos 7 / rocky 9 /bin/cp -fr /usr/src/m2/freeradius/radiusd.service /etc/systemd/system/ systemctl daemon-reload systemctl enable radiusd.service else # centos 6 /bin/cp -fr /usr/src/m2/freeradius/freeradius_init /etc/init.d/radiusd chkconfig radiusd on fi # set core dump file size to unlimited /bin/cp -fr /usr/src/m2/freeradius/radiusd_sysconfig /etc/sysconfig/radiusd # put logs in proper place if [ ! -e /var/log/radius ]; then ln -s /usr/local/var/log/radius /var/log/radius fi # easy access to configuration ln -sfn /usr/local/etc/raddb /etc/freeradius ln -sfn /usr/local/etc/raddb /etc/radius chmod 0755 /usr/local/var/log/radius } install_freeradius_depend install_freeradius_server install_freeradius_client configure_freeradius_server report "FreeRADIUS installation finished" 3 /usr/src/m2/freeradius/freeradius_update.sh # code from the old /core/m2_core_fs_install.sh mkdir -p /var/log/m2 mkdir -p /var/m2 # create symlink for m2 commands k_symlink_create /usr/src/m2/core/m2_core_commands.sh /usr/bin/m2 # create directory for m2 core command result output mkdir -p /tmp/m2/m2_core_command_result chmod 777 -R /tmp/m2/m2_core_command_result # permissions for call tracing chmod a+r -R /usr/local/etc/raddb/dictionary # ----- k_exit $EXIT_CODE