Annotation of embedaddon/coova-chilli/conf/functions.in, revision 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>