radsecproxy.init (3517B)
1 #!/bin/sh /etc/rc.common 2 # Copyright (C) 2006-2011 OpenWrt.org 3 4 START=70 5 6 USE_PROCD=1 7 PROG=/usr/sbin/radsecproxy 8 CONFFILE=/var/etc/radsecproxy.conf 9 LIST_SEP=" 10 " 11 append_params() { 12 local param 13 local value 14 local section="$1" 15 shift 16 for param in $*; do 17 config_get value "$section" "$param" 18 [ -z "$value" ] && { 19 param=$(echo $param | tr [A-Z] [a-z]) 20 config_get value "$section" "$param" 21 } 22 IFS="$LIST_SEP" 23 for value in $value; do 24 [ -n "$value" ] && echo " $param '$value'" >> "$CONFFILE" 25 done 26 unset IFS 27 done 28 } 29 30 append_bools() { 31 local param 32 local value 33 local section="$1" 34 shift 35 for param in $*; do 36 config_get_bool value "$section" "$param" 37 [ -z "$value" ] && { 38 param=$(echo $param | tr [A-Z] [a-z]) 39 config_get_bool value "$section" "$param" 40 } 41 [ -n "$value" ] && { 42 [ "$value" -eq 0 ] && echo " $param off" >> "$CONFFILE" 43 [ "$value" -eq 1 ] && echo " $param on" >> "$CONFFILE" 44 } 45 done 46 } 47 48 radsecproxy_options() { 49 local cfg="$1" 50 append_params "$cfg" \ 51 Include PidFile LogLevel LogDestination FTicksReporting FTicksMAC FTicksKey \ 52 FTicksSyslogFacility ListenUDP ListenTCP ListenTLS ListenDTLS SourceUDP \ 53 SourceTCP SourceTLS SourceDTLS TTLAttribute AddTTL 54 append_bools "$cfg" \ 55 LoopPrevention IPv4Only IPv6Only 56 } 57 58 tls_block() { 59 local cfg="$1" 60 local name 61 config_get name "$cfg" name 62 echo "tls '$name' {" >> "$CONFFILE" 63 append_params "$cfg" \ 64 Include CACertificateFile CACertificatePath certificateFile certificateKeyFile \ 65 certificateKeyPassword cacheExpiry policyOID 66 append_bools "$cfg" \ 67 CRLCheck 68 echo "}" >> "$CONFFILE" 69 } 70 71 rewrite_block() { 72 local cfg="$1" 73 local name 74 config_get name "$cfg" name 75 echo "rewrite '$name' {" >> "$CONFFILE" 76 append_params "$cfg" \ 77 Include addAttribute addVendorAttribute removeAttribute removeVendorAttribute \ 78 modifyAttribute 79 echo "}" >> "$CONFFILE" 80 } 81 82 client_block() { 83 local cfg="$1" 84 local name 85 config_get name "$cfg" name 86 echo "client '$name' {" >> "$CONFFILE" 87 append_params "$cfg" \ 88 Include host type secret tls matchCertificateAttribute duplicateInterval \ 89 AddTTL fticksVISCOUNTRY fticksVISINST rewrite rewriteIn rewriteOut \ 90 rewriteAttribute 91 append_bools "$cfg" \ 92 IPv4Only IPv6Only certificateNameCheck 93 echo "}" >> "$CONFFILE" 94 } 95 96 server_block() { 97 local cfg="$1" 98 local name 99 config_get name "$cfg" name 100 echo "server '$name' {" >> "$CONFFILE" 101 append_params "$cfg" \ 102 Include host port type secret tls matchCertificateAttribute \ 103 AddTTL rewrite rewriteIn rewriteOut retryCount dynamicLookupCommand \ 104 retryInterval 105 append_bools "$cfg" \ 106 IPv4Only IPv6Only certificateNameCheck statusServer LoopPrevention 107 echo "}" >> "$CONFFILE" 108 } 109 110 realm_block() { 111 local cfg="$1" 112 local name 113 config_get name "$cfg" name 114 echo "realm '$name' {" >> "$CONFFILE" 115 append_params "$cfg" \ 116 Include server accountingServer replyMessage 117 append_bools "$cfg" \ 118 accountingResponse 119 echo "}" >> "$CONFFILE" 120 } 121 122 start_service() { 123 mkdir -p $(dirname $CONFFILE) 124 echo "# auto-generated config file from /etc/config/radsecproxy" > $CONFFILE 125 config_load 'radsecproxy' 126 config_foreach radsecproxy_options options 127 config_foreach tls_block tls 128 config_foreach rewrite_block rewrite 129 config_foreach client_block client 130 config_foreach server_block server 131 config_foreach realm_block realm 132 133 procd_open_instance 134 procd_set_param command $PROG -f -c $CONFFILE 135 procd_set_param file $CONFFILE 136 procd_set_param respawn 137 procd_close_instance 138 } 139 140 service_triggers() { 141 procd_add_reload_trigger 'radsecproxy' 142 }