#!/bin/sh # Copyright (C) 2009-2011 Coova Technologies, LLC. # # This program is free software: you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation, either version 3 of the License, or # (at your option) any later version. # # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this program. If not, see . . ./functions.sh . ./uam.sh . ./wispr.sh USERS=@ETCCHILLI@/localusers COOVA_USERURL=$COOKIE_COOVA_USERURL COOVA_SESSIONID=$CHI_SESSION_ID COOVA_CHALLENGE=$CHI_CHALLENGE PORTAL_SESSIONID=${COOKIE_PORTAL_SESSIONID:-$SESSIONID} FORM_userurl=${FORM_userurl:-http://www.coova.org/} http_redirect2() { cat <
EOF exit } http_header() { # [ "$HS_MODE" = "hotspot" ] || { # http_redirect2 "/www/disabled.chi" # } cat<" uamfile title 0 echo " " echo "" echo "$1" uamfile "header" 1 echo "
" } footer() { echo "
" uamfile "footer" 1 echo "
Powered by
" } error() { echo "
$1
"; } href() { echo "$2" } form() { echo "
$2
" } loginform() { case "$AUTHENTICATED" in 1) ;; *) [ "$HS_OPENIDAUTH" = "on" ] && { \ echo "" form "login.chi" "$(uamfile openid_form 1)" } form "login.chi" "$(uamfile login_form 1)" ;; esac } local_login_url() { if [ "$HS_USELOCALUSERS" = "on" ]; then line=$(head -1 $USERS) if [ "$line" = "" ]; then echo "tos:$(echo '$$$(date)'|md5sum|cut -f1)" >> $USERS line=$(head -1 $USERS) fi if [ "$line" != "" ]; then user=$(echo "$line" | cut -f1 -d:) pass=$(echo "$line" | cut -f2 -d:) echo -n $(chi_login_url "$user" "$pass") fi else user=$REMOTE_MAC pass=$HS_ADMPWD echo -n $(chi_login_url "$user" "$pass") fi } reply_message() { case "$AUTHENTICATED" in 1) echo "You are now on-line!" ;; *) echo "$FORM_reply" ;; esac } image() { ext=$(echo "$1"|awk -v FS=. '{ print tolower($NF) }') base=$(echo "$1"|awk -v FS=/ '{ gsub(/[^a-zA-Z0-9_\/-]/,""); print tolower($NF) }') echo -n "img-$base.$ext" } registerform() { form "register.chi" "$(uamfile register_form 1)" } contactform() { form "contact.chi" "$(uamfile contact_form 1)" } termsform() { form "tos.chi" "$(uamfile terms_form 1)" } runlogin() { out=$($CHILLI_QUERY login sessionid "$COOVA_SESSIONID" username "$1" password "$2") } chi_login_url() { case "$HS_RAD_PROTO" in pap) response=$($CHILLI_RESPONSE -pap "$CHI_CHALLENGE" "$HS_UAMSECRET" "$2") echo -n "http://$HS_UAMLISTEN:$HS_UAMPORT/login?username=$1&password=${response}&userurl=${3:-$COOVA_USERURL}" ;; mschapv2) response=$($CHILLI_RESPONSE -nt "$CHI_CHALLENGE" "$HS_UAMSECRET" "$1" "$2") echo -n "http://$HS_UAMLISTEN:$HS_UAMPORT/login?username=$1&ntresponse=${response}&userurl=${3:-$COOVA_USERURL}" ;; *) response=$($CHILLI_RESPONSE "$CHI_CHALLENGE" "$HS_UAMSECRET" "$2") echo -n "http://$HS_UAMLISTEN:$HS_UAMPORT/login?username=$1&response=${response}&userurl=${3:-$COOVA_USERURL}" ;; esac } dologin() { url=$(chi_login_url "$FORM_username" "$FORM_password" "$FORM_userurl") cat < ENDHTML wisprLoginResultsURL "$url" } domail() { from=$1;to=$2;file=$3 (uamfile "$file" 0 echo echo "-------------------------------------------------" echo "Powered by Coova - http://www.coova.org/" echo) | /usr/sbin/sendmail -t -f "$from" && return 0 return 1; } FORM_username="${FORM_username:-$FORM_UserName}" FORM_username="${FORM_username:-$FORM_Username}" FORM_password="${FORM_password:-$FORM_Password}" # For WISPr 2.0 EAP, bounce back to chilli [ "$FORM_res" = "wispr" ] && \ [ "$FORM_WISPrEAPMsg" != "" ] && \ [ "$FORM_WISPrVersion" = "2.0" ] && { http_redirect2 "http://$HS_UAMLISTEN:$HS_UAMPORT/login?username=$FORM_username&WISPrEAPMsg=$FORM_WISPrEAPMsg&WISPrVersion=2.0" } if [ "$FORM_uamip" != "" ] && [ "$HS_UAMSECRET" != "" ] then if [ "$FORM_res" != "wispr" ] then QS=$(echo $QUERY_STRING | sed 's/&md=[^&=]*$//') HTTP="http" [ "$HTTPS" = "on" ] && HTTP="https" URL="$HTTP://$SERVER_NAME/$REQUEST_URI?$QS" CHECK="$URL$HS_UAMSECRET" CHECK_MD5=$(echo -n "$CHECK" |md5sum|cut -d' ' -f1|tr 'a-z' 'A-Z'); if [ "$CHECK_MD5" = "$FORM_md" ]; then COOVA_USERURL=$FORM_userurl else http_redirect "/www/error.chi" fi fi fi