mirror of
https://github.com/openwrt/packages.git
synced 2026-10-12 21:07:04 +04:00
This adds more config options for use in UCI, esp. new configuration options that were introduced in newer radsecproxy versions and it fixes an escaping issue in the init script where a string containing single quotes would still be escaped using single quotes, causing radsecproxy to reject the config. This also bumps the PKG_RELEASE in the Makefile Signed-off-by: Jan-Frederik Rieckers <rieckers@dfn.de>
156 lines
4.0 KiB
Bash
156 lines
4.0 KiB
Bash
#!/bin/sh /etc/rc.common
|
|
# Copyright (C) 2006-2011 OpenWrt.org
|
|
|
|
START=70
|
|
|
|
USE_PROCD=1
|
|
PROG=/usr/sbin/radsecproxy
|
|
CONFFILE=/var/etc/radsecproxy.conf
|
|
LIST_SEP="
|
|
"
|
|
append_params() {
|
|
local param
|
|
local value
|
|
local section="$1"
|
|
shift
|
|
for param in "$@"; do
|
|
config_get value "$section" "$param"
|
|
[ -z "$value" ] && {
|
|
param=$(echo "$param" | tr 'A-Z' 'a-z')
|
|
config_get value "$section" "$param"
|
|
}
|
|
IFS="$LIST_SEP"
|
|
for value in $value; do
|
|
[ -n "$value" ] && {
|
|
case "$value" in
|
|
*"'"*) echo " $param \"$value\"" >> "$CONFFILE" ;;
|
|
*) echo " $param '$value'" >> "$CONFFILE" ;;
|
|
esac
|
|
}
|
|
done
|
|
unset IFS
|
|
done
|
|
}
|
|
|
|
append_bools() {
|
|
local param
|
|
local value
|
|
local section="$1"
|
|
shift
|
|
for param in "$@"; do
|
|
config_get_bool value "$section" "$param"
|
|
[ -z "$value" ] && {
|
|
param=$(echo "$param" | tr 'A-Z' 'a-z')
|
|
config_get_bool value "$section" "$param"
|
|
}
|
|
[ -n "$value" ] && {
|
|
[ "$value" -eq 0 ] && echo " $param off" >> "$CONFFILE"
|
|
[ "$value" -eq 1 ] && echo " $param on" >> "$CONFFILE"
|
|
}
|
|
done
|
|
}
|
|
|
|
radsecproxy_options() {
|
|
local cfg="$1"
|
|
append_params "$cfg" \
|
|
Include PidFile LogLevel LogDestination FTicksReporting FTicksMAC FTicksKey \
|
|
FTicksSyslogFacility ListenUDP ListenTCP ListenTLS ListenDTLS SourceUDP \
|
|
SourceTCP SourceTLS SourceDTLS TTLAttribute AddTTL FTicksPrefix LogMAC \
|
|
LogKey
|
|
append_bools "$cfg" \
|
|
LoopPrevention IPv4Only IPv6Only SNI VerifyEAP LogThreadId LogFullUsername
|
|
}
|
|
|
|
tls_block() {
|
|
local cfg="$1"
|
|
local name
|
|
config_get name "$cfg" name
|
|
echo "tls '$name' {" >> "$CONFFILE"
|
|
append_params "$cfg" \
|
|
Include CACertificateFile CACertificatePath certificateFile certificateKeyFile \
|
|
certificateKeyPassword cacheExpiry policyOID CipherList CipherSuites \
|
|
TLSVersion DTLSVersion
|
|
append_bools "$cfg" \
|
|
CRLCheck
|
|
echo "}" >> "$CONFFILE"
|
|
}
|
|
|
|
rewrite_block() {
|
|
local cfg="$1"
|
|
local name
|
|
config_get name "$cfg" name
|
|
echo "rewrite '$name' {" >> "$CONFFILE"
|
|
append_params "$cfg" \
|
|
Include addAttribute addVendorAttribute removeAttribute removeVendorAttribute \
|
|
modifyAttribute modifyVendorAttribute supplementAttribute supplementVendorAttribute \
|
|
whitelistAttribute whitelistVendorAttribute
|
|
append_bools "$cfg" \
|
|
whitelistMode
|
|
echo "}" >> "$CONFFILE"
|
|
}
|
|
|
|
client_block() {
|
|
local cfg="$1"
|
|
local name
|
|
config_get name "$cfg" name
|
|
echo "client '$name' {" >> "$CONFFILE"
|
|
append_params "$cfg" \
|
|
Include host type secret tls matchCertificateAttribute duplicateInterval \
|
|
AddTTL fticksVISCOUNTRY fticksVISINST rewrite rewriteIn rewriteOut \
|
|
rewriteAttribute serverName PSKkey PSKidentity
|
|
append_bools "$cfg" \
|
|
IPv4Only IPv6Only certificateNameCheck requireMessageAuthenticator \
|
|
requireMessageAuthenticatorProxy
|
|
echo "}" >> "$CONFFILE"
|
|
}
|
|
|
|
server_block() {
|
|
local cfg="$1"
|
|
local name
|
|
config_get name "$cfg" name
|
|
echo "server '$name' {" >> "$CONFFILE"
|
|
append_params "$cfg" \
|
|
Include host port type secret tls matchCertificateAttribute \
|
|
AddTTL rewrite rewriteIn rewriteOut retryCount dynamicLookupCommand \
|
|
retryInterval serverName SNIservername PSKkey PSKidentity DTLSForceMTU \
|
|
source
|
|
append_bools "$cfg" \
|
|
IPv4Only IPv6Only certificateNameCheck statusServer LoopPrevention SNI \
|
|
requireMessageAuthenticator blockingStartup
|
|
echo "}" >> "$CONFFILE"
|
|
}
|
|
|
|
realm_block() {
|
|
local cfg="$1"
|
|
local name
|
|
config_get name "$cfg" name
|
|
echo "realm '$name' {" >> "$CONFFILE"
|
|
append_params "$cfg" \
|
|
Include server accountingServer replyMessage
|
|
append_bools "$cfg" \
|
|
accountingResponse
|
|
echo "}" >> "$CONFFILE"
|
|
}
|
|
|
|
start_service() {
|
|
mkdir -p $(dirname $CONFFILE)
|
|
echo "# auto-generated config file from /etc/config/radsecproxy" > $CONFFILE
|
|
config_load 'radsecproxy'
|
|
config_foreach radsecproxy_options options
|
|
config_foreach tls_block tls
|
|
config_foreach rewrite_block rewrite
|
|
config_foreach client_block client
|
|
config_foreach server_block server
|
|
config_foreach realm_block realm
|
|
|
|
procd_open_instance
|
|
procd_set_param command $PROG -f -c $CONFFILE
|
|
procd_set_param file $CONFFILE
|
|
procd_set_param respawn
|
|
procd_close_instance
|
|
}
|
|
|
|
service_triggers() {
|
|
procd_add_reload_trigger 'radsecproxy'
|
|
}
|