Annotation of embedaddon/coova-chilli/conf/functions.in, revision 1.1.1.1

1.1       misho       1: #!/bin/sh
                      2: #
                      3: # Copyright (c) 2006 David Bird <david@coova.com>
                      4: # Licensed under GPL. See http://coova.org/
                      5: #
                      6: 
                      7: IPTABLES=/sbin/iptables
                      8: IFCONFIG=/sbin/ifconfig
                      9: 
                     10: CHILLI=@ETCCHILLI@
                     11: RUN_D=@VARRUN@
                     12: SBIN=@SBINDIR@
                     13: ARPCHECK=$RUN_D/chilli.arp
                     14: LKFILE=$RUN_D/chilli.run
                     15: MAIN_CONF=$CHILLI/main.conf
                     16: LOCAL_CONF=$CHILLI/local.conf
                     17: HS_CONF=$CHILLI/hs.conf
                     18: HS_TEMP=/tmp/hs.conf
                     19: CMDSOCK=$RUN_D/chilli.sock
                     20: PIDFILE=$RUN_D/chilli.pid
                     21: 
                     22: [ -f $CHILLI/defaults ] && . $CHILLI/defaults
                     23: [ -f $CHILLI/config ]   && . $CHILLI/config
                     24: 
                     25: [ -f /etc/sysconfig/chilli ] && . /etc/sysconfig/chilli
                     26: 
                     27: HS_UAMPORT=${HS_UAMPORT:-3990}
                     28: HS_RADIUS=${HS_RADIUS:-$HS_UAMSERVER}
                     29: HS_RADSECRET=${HS_RADSECRET:-$HS_UAMSECRET}
                     30: HS_RADAUTH=${HS_RADAUTH:-1812}
                     31: HS_RADACCT=${HS_RADACCT=1813}
                     32: HS_ADMUSR=${HS_ADMUSR:-chillispot}
                     33: HS_ADMPWD=${HS_ADMPWD:-chillispot}
                     34: HS_ADMINTERVAL=${HS_ADMINTERVAL:-60}
                     35: HS_RADCONF=${HS_RADCONF:-off}
                     36: HS_RADCONF_SERVER=${HS_RADCONF_SERVER:-rad01.coova.org}
                     37: HS_RADCONF_SERVERS=${HS_RADCONF_SERVERS:+$(echo "$HS_RADCONF_SERVERS"|sed 's/[;, ]/ /g')}
                     38: HS_RADCONF_SECRET=${HS_RADCONF_SECRET:-coova-anonymous}
                     39: HS_RADCONF_AUTHPORT=${HS_RADCONF_AUTHPORT:-1812}
                     40: HS_RADCONF_ACCTPORT=${HS_RADCONF_ACCTPORT:-1813}
                     41: HS_RADCONF_USER=${HS_RADCONF_USER:-coovachilli}
                     42: HS_RADCONF_PWD=${HS_RADCONF_PWD:-coovachilli}
                     43: HS_DNS_DOMAIN=${HS_DNS_DOMAIN:-lan}
                     44: HS_MACAUTHMODE=${HS_MACAUTHMODE:-off}
                     45: HS_USELOCALUSERS=${HS_USELOCALUSERS:-off}
                     46: HS_OPENIDAUTH=${HS_OPENIDAUTH:-off}
                     47: HS_ACCTUPDATE=${HS_ACCTUPDATE:-off}
                     48: HS_WISPRLOGIN=${HS_WISPRLOGIN:-$HS_UAMSERVICE}
                     49: HS_PAP_OK=${HS_PAP_OK:-on}
                     50: HS_DNS1=${HS_DNS1:-$HS_DNS}
                     51: HS_DNS1=${HS_DNS1:-$(grep '^nameserver' /etc/resolv.conf | head -n1 | awk '{print $2}')}
                     52: HS_WANIF=${HS_WANIF:-$(route -n|grep '^0.0.0.0'|head -n1|awk '{print $8}')}
                     53: 
                     54: bailout() { echo $1; exit; }
                     55: 
                     56: check_required() {
                     57:     [ -z "$HS_MODE" ]  && bailout "HS_MODE is required"
                     58: }
                     59:     
                     60: configs1=
                     61: addconfig1() { [ -n "$*" ] && configs1="$configs1
                     62: $*"; }
                     63: configs2=
                     64: addconfig2() { [ -n "$*" ] && configs2="$configs2
                     65: $*"; }
                     66: 
                     67: writeconfig() {
                     68:     [ "$HS_ANYIP" = "on" ] && {
                     69:        addconfig1 "uamanyip"
                     70:     }
                     71: 
                     72:     addconfig1 ${HS_DYNIP:+"dynip $HS_DYNIP/${HS_DYNIP_MASK:-255.255.255.0}"}
                     73:     addconfig1 ${HS_STATIP:+"statip $HS_STATIP/${HS_STATIP_MASK:-255.255.255.0}"}
                     74:     addconfig1 ${HS_SSID:+"ssid $HS_SSID"}
                     75:     addconfig1 ${HS_NASIP:+"nasip $HS_NASIP"}
                     76:     addconfig1 ${HS_NASMAC:+"nasmac $HS_NASMAC"}
                     77:     addconfig1 ${HS_DNS_DOMAIN:+"domain $HS_DNS_DOMAIN"}
                     78:     addconfig1 ${HS_DNS1:+"dns1 $HS_DNS1"}
                     79:     addconfig1 ${HS_DNS2:+"dns2 $HS_DNS2"}
                     80: 
                     81:     addconfig1 ${HS_UAMHOMEPAGE:+"uamhomepage $(eval echo $HS_UAMHOMEPAGE)"}
                     82:     addconfig1 ${HS_WISPRLOGIN:+"wisprlogin $HS_WISPRLOGIN"}
                     83:     addconfig1 ${HS_WWWDIR:+"wwwdir $HS_WWWDIR"}
                     84:     addconfig1 ${HS_WWWBIN:+"wwwbin $HS_WWWBIN"}
                     85:     addconfig1 ${HS_UAMUIPORT:+"uamuiport $HS_UAMUIPORT"}
                     86: 
                     87:     [ -n "$HS_UAMDOMAINS" ] && {
                     88:        HS_UAMDOMAINS=$(echo $HS_UAMDOMAINS|sed 's/,/ /g')
                     89:        for s in $HS_UAMDOMAINS; do
                     90:            addconfig1 "uamdomain $s"
                     91:        done
                     92:     }
                     93: 
                     94:     HS_MACALLOW=$(echo $HS_MACALLOW|sed 's/ /,/g')
                     95:     HS_MACALLOW=$(echo $HS_MACALLOW|sed 's/[:-]//g')
                     96:     addconfig1 ${HS_MACALLOW:+"macallowed $HS_MACALLOW"}
                     97: 
                     98:     HS_UAMALLOW=$(echo $HS_UAMALLOW|sed 's/ /,/g')
                     99:     uamallow=${HS_UAMALLOW:+",$HS_UAMALLOW"}
                    100: 
                    101:     [ "$HS_WEB_ADMIN" = "http"  ] || [ "$HS_WEB_ADMIN" = "both" ] && webadmin="$webadmin,$HS_UAMLISTEN:80"
                    102:     [ "$HS_WEB_ADMIN" = "https" ] || [ "$HS_WEB_ADMIN" = "both" ] && webadmin="$webadmin,$HS_UAMLISTEN:443"
                    103:     [ "$HS_LOCAL" = "on" ] && webadmin="$webadmin,$HS_UAMLISTEN:$HS_LOCAL_PORT"
                    104:     [ "$HS_MACAUTHMODE" = "local" ] && addconfig1 "macallowlocal"
                    105:     [ "$HS_USELOCALUSERS" = "on" ] && {
                    106:        touch $CHILLI/localusers
                    107:        addconfig1 "localusers $CHILLI/localusers"
                    108:     }
                    109: 
                    110:     [ -n "$HS_LOC_NAME" ] && {
                    111:        loc_name=$(echo "$HS_LOC_NAME"   | sed 's/"//g')
                    112:        addconfig1 "locationname \"$loc_name\""
                    113:        isocc=$(echo    "$HS_LOC_ISOCC"  | sed 's/[^a-zA-Z]//g')
                    114:        cc=$(echo       "$HS_LOC_CC"     | sed 's/[^0-9]//g')
                    115:        ac=$(echo       "$HS_LOC_AC"     | sed 's/[^0-9]//g')
                    116:        network=$(echo  "$HS_LOC_NETWORK"| sed 's/[^a-zA-Z0-9]/_/g')
                    117:        provider=$(echo "$HS_PROVIDER"   | sed 's/[^a-zA-Z0-9]/_/g')
                    118:        [ -n "$provider" ] && provider="$provider,"
                    119:        [ -n "$HS_SSID" ] && { 
                    120:            [ -n "$network" ] && network="${network}_"
                    121:            network="$network$HS_SSID"
                    122:        }
                    123:        loc_name=$(echo "$HS_LOC_NAME"   | sed 's/[^a-zA-Z0-9]/_/g')
                    124:        loc_id="isocc=$isocc,cc=$cc,ac=$ac,network=$provider$network"
                    125:        addconfig1 "radiuslocationname $loc_name"
                    126:        addconfig1 "radiuslocationid $loc_id"
                    127:     }
                    128: 
                    129:     # Application walled garden entries:
                    130:     [ "$HS_USE_MAP" = "on" ] && addconfig1 "uamdomain .google.com"
                    131: 
                    132:     (cat <<EOF
                    133: # THIS FILE IS AUTOMATICALLY GENERATED
                    134: cmdsocket       $CMDSOCK
                    135: pidfile         $PIDFILE
                    136: net            $HS_NETWORK/$HS_NETMASK
                    137: uamlisten      $HS_UAMLISTEN
                    138: uamport         $HS_UAMPORT
                    139: dhcpif         $HS_LANIF
                    140: adminuser       $HS_ADMUSR
                    141: adminpasswd     $HS_ADMPWD
                    142: uamallowed     coova.org,$HS_UAMSERVER,$HS_RADIUS$webadmin$uamallow
                    143: uamanydns
                    144: $configs1
                    145: EOF
                    146:     ) > $MAIN_CONF 
                    147:     if [ "x$HS_RADCONF" != "xon" -a "x$HS_RADCONF" != "xurl" ]; then 
                    148:        rm -f $HS_CONF 2>/dev/null
                    149: 
                    150:        [ "$HS_PAP_OK" = "on" ] && addconfig2 "papalwaysok"
                    151:        [ "$HS_MACAUTH" = "on" ] && addconfig2 "macauth"
                    152:        [ "$HS_MACAUTHDENY" = "on" ] && addconfig2 "macauthdeny"
                    153:        [ "$HS_WPAGUESTS" = "on" ] && addconfig2 "wpaguests"
                    154:        [ "$HS_OPENIDAUTH" = "on" ] && addconfig2 "openidauth"
                    155:        [ "$HS_ACCTUPDATE" = "on" ] && addconfig2 "acctupdate"
                    156:        [ "$HS_DNSPARANOIA" = "on" ] && addconfig2 "dnsparanoia"
                    157:        [ -n "$HS_UAMSECRET" ] && addconfig2 "uamsecret $HS_UAMSECRET"
                    158:        test ${HS_DEFSESSIONTIMEOUT:-0} -gt 0 && addconfig2 "defsessiontimeout $HS_DEFSESSIONTIMEOUT"
                    159:        test ${HS_DEFIDLETIMEOUT:-0} -gt 0 && addconfig2 "defidletimeout $HS_DEFIDLETIMEOUT"
                    160:        test ${HS_DEFBANDWIDTHMAXDOWN:-0} -gt 0 && addconfig2 "defbandwidthmaxdown $HS_DEFBANDWIDTHMAXDOWN"
                    161:        test ${HS_DEFBANDWIDTHMAXUP:-0} -gt 0 && addconfig2 "ddefbandwidthmaxup $HS_DEFBANDWIDTHMAXUP"
                    162:        test ${HS_DEFINTERIMINTERVAL:-0} -gt 0 && addconfig2 "definteriminterval $HS_DEFINTERIMINTERVAL"
                    163:        test ${HS_COAPORT:-0} -gt 0 && addconfig2 "coaport $HS_COAPORT"
                    164:        [ -n "$HS_POSTAUTH_PROXY" -a -n "$HS_POSTAUTH_PROXYPORT" ] && {
                    165:            addconfig2 "postauthproxy $HS_POSTAUTH_PROXY"
                    166:            addconfig2 "postauthproxyport $HS_POSTAUTH_PROXYPORT"
                    167:        }
                    168: 
                    169:        # these are settings you would typically get from a centralized source
                    170:        # but, if not, they are also just configurable normally. a better way is needed
                    171:        # to manage settings and ensure they are not repeated
                    172: 
                    173:        (cat <<EOF
                    174: radiusserver1  $HS_RADIUS
                    175: radiusserver2  ${HS_RADIUS2:-$HS_UAMSERVER}
                    176: radiussecret   $HS_RADSECRET
                    177: radiusauthport  ${HS_RADAUTH:-1812}
                    178: radiusacctport  ${HS_RADACCT:-1813}
                    179: uamserver      $(eval echo $HS_UAMFORMAT)
                    180: radiusnasid    ${HS_NASID:-nas01}
                    181: $configs2
                    182: EOF
                    183:        ) >> $MAIN_CONF 
                    184:     fi
                    185: }
                    186: 
                    187: checkfornew() {
                    188:     if [ -x /usr/bin/cmp ]; then
                    189:        cmp -s $HS_TEMP $HS_CONF || (
                    190:            mv $HS_TEMP $HS_CONF
                    191:            killall -HUP chilli 2>/dev/null >/dev/null
                    192:        )
                    193:     else
                    194:         # no diff, so lets copy and let chilli
                    195:         # refresh on its own (interval option)
                    196:        mv $HS_TEMP $HS_CONF
                    197:     fi
                    198: }
                    199: 
                    200: radiusconfig() {
                    201:     touch $LOCAL_CONF $HS_CONF 
                    202:     if [ "x$HS_RADCONF" = "xurl" ]; then 
                    203:        for s in $HS_RADCONF_URL $HS_RADCONF_URLS; do
                    204:            sep='?'
                    205:            opt=
                    206:            qs="config=chilli&mac=$HS_NASMAC&nasid=$HS_NASID&nasip=$HS_NASIP&ssid=$HS_SSID"
                    207:            [ "$s" = "$(echo $s|awk -F'?' '{ print $1 }')" ] || sep='&'
                    208:            [ "$HS_RADCONF_USER" = "" ] || opt="-u '$HS_RADCONF_USER:$HS_RADCONF_PWD'"
                    209:            curl -k -A CoovaAP $opt "$s$sep$qs" 2>/dev/null > $HS_TEMP && { checkfornew; break; }
                    210:        done
                    211:     elif [ "x$HS_RADCONF" = "xon" ]; then 
                    212:        for s in $HS_RADCONF_SERVER $HS_RADCONF_SERVERS; do
                    213:            $SBIN/chilli_radconfig \
                    214:                --radiusserver1="$s" \
                    215:                --radiussecret="$HS_RADCONF_SECRET" \
                    216:                --radiusauthport="$HS_RADCONF_AUTHPORT" \
                    217:                --radiusacctport="$HS_RADCONF_ACCTPORT" \
                    218:                --nasip="$HS_NASIP" \
                    219:                --nasmac="$HS_NASMAC" \
                    220:                --adminuser="$HS_RADCONF_USER" \
                    221:                --adminpasswd="$HS_RADCONF_PWD" \
                    222:                > $HS_TEMP && { checkfornew; break; }
                    223:        done
                    224: #    elif [ "x$HS_LOCAL" != "xon" ]; then 
                    225: #      $SBIN/chilli_radconfig > $HS_TEMP && { checkfornew; break; }
                    226:     fi
                    227: }
                    228: 

FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>