main/freeradius: improve setup-freeradius enable-mod

This commit is contained in:
Jakub Jirutka 2020-02-17 16:34:31 +01:00
parent 802673c5f1
commit 1512fdcfee
2 changed files with 28 additions and 6 deletions

View File

@ -394,7 +394,7 @@ sha512sums="513ed0a5d9e6b9a8d89a9b02c86ff528a9ff14d928f4c1040ca44702465abd711588
c3ae1ee6bd7743f883310612ba2c20c6ff7f288fedc308735df05b097ecb2f7fa4d1679b844e262757808978c7bb2d7630b99e4b87ce6d6ba7f84013f9c49f1d freeradius.logrotated
bb3df1fa2c9ed95514ae090e0f6619c4e3280f424c4351bc79f5254bf1a327fa7d27e5fe3add5ab8d9e5ba3792c9553bd9a0481fe9c5bc34945ce46627ef2638 radiusd.confd
a66ab5d3f1c86450e9c50aa8be10a40fb4118467670048773ad8c80b5f3fb958dd3addc6ef245289d93ce2b184ce2c9882a8a2585d4a134d55c2326c9559f558 radiusd.initd
0a3d7c5a3d33186903fdf0fd9d0d817bdc3e81567dbd72646492652cddbad458936d7cd662f41b747a023f59ddbab1456b9cdd6c6997d9bc5d039bd4be92fb4f setup-freeradius.in
9f6a4f76fd06e81cfcfe4536f1f8be494634b07e548a6f7e651e5501aded24b030ed7d57dbdc867ae0eb39ee4a090234c4122a89bed84c13733c77de36b9c2cf setup-freeradius.in
5f940e200aa39b2fbbfaf5b24f2ad99869fa75bb7e2008876940ea96cb9dbc7f2b27dd1672aa56cdb5243faabdcbc38875594dd8792af965987183c0aa2aefd1 print-var.mk
c49e5eec7497fccde5fd09dba1ea9b846e57bc88015bd81640aa531fb5c9b449f37136f42c85fe1d7940c5963aed664b85da28442b388c9fb8cc27873df03b2d musl-fix-headers.patch
41d478c0e40ff82fc36232964037c1ab8ffca9fdbb7dca02ed49319906e751c133b5d7bc7773c645cec6d9d39d1de69cba25e8d59afa8d6662563dd17f35f234 fix-scopeid.patch

View File

@ -3,6 +3,19 @@ set -eu
PROGNAME='setup-freeradius'
DEFAULT_MODULES='@@DEFAULT_MODULES@@'
# <subpkgname|module-name> <module-name>...
EXTRA_MODULES='
dhcp
eap inner-eap
krb5
ldap
pam
perl
python3
redis rediswho
rest
sql abfab_psk_sql dhcp_sqlippool sqlcounter sqlippool
'
MODS_AVAILABLE_DIR='/etc/raddb/mods-available'
MODS_ENABLED_DIR='/etc/raddb/mods-enabled'
SITES_AVAILABLE_DIR='/etc/raddb/sites-available'
@ -14,6 +27,13 @@ die() {
exit $1
}
find_mod_pkg() {
echo "$EXTRA_MODULES" \
| grep -m 1 -w "$1" \
| sed -En 's/^\s*(\S+).*/freeradius-\1/p' \
| grep .
}
case "${1:-}" in
'' | -h | --help)
cat >&2 <<-EOF
@ -33,21 +53,23 @@ case "${1:-}" in
EOF
exit 2
;;
enable-mod)
enable-mod | enable-module)
name=$2
modlink="$MODS_ENABLED_DIR/$name"
if [ -L "$modlink" ]; then
exit 0
elif [ -f "$MODS_AVAILABLE_DIR/$name" ]; then
fi
if pkgname=$(find_mod_pkg "$name"); then
apk add "$pkgname"
fi
if [ ! -L "$modlink" ] && [ -f "$MODS_AVAILABLE_DIR/$name" ]; then
ln -sv ../mods-available/$name "$MODS_ENABLED_DIR/$name"
elif apk info -q "freeradius-$name" >/dev/null; then
apk add "freeradius-$name"
else
die 3 "module '$name' is not available!"
fi
;;
disable-mod)
disable-mod | disable-modules)
name=$2
modlink="$MODS_ENABLED_DIR/$name"