Hello Alan,

As much as I would want to, that is my current limitation. In my earlier 
message, I already mentioned that I can only write in BASH.

Anyway, in connection with sending back the reply to the client either in 
Access-Accept or Access-Reject, how can I send my custom reply messages on 
different reasons for the Access-Reject?

Regards,

MP

From: [email protected]
To: [email protected]; [email protected]
CC: [email protected]
Date: Wed, 29 Jun 2011 08:13:05 +0100
Subject: Re: [RADIATOR] Executing an external script from Radiator








Theres a a lot of external shell stuff going on there. Personally I would be 
using built in perl functions and perl modules for handling the strings and 
dealing with that URL. It's then also easier to do sanity checks , as this 
stands you could get some very
 interesting results with the correctly formed username and/or password (out of 
scope for this list, suggest looking into secure coding or best practice perl 
references)



alan



----- Reply message -----

From: "M P" <[email protected]>

Date: Wed, Jun 29, 2011 05:31

Subject: [RADIATOR] Executing an external script from Radiator

To: "[email protected]" <[email protected]>

Cc: "[email protected]" <[email protected]>




Hello Martin,



Thank you for the hint. I am now able to get the two values.



Now, I have a follow-up question. What is your recommended way to send the 
reply back to the user, be it an Access-Accept or Access-Reject? I am thinking 
of adding the reply back whatever the output of my if statement when comparing 
the password received from
 the user and the password I got from my wget command.



Below is my updated BASH script for your reference.



- - - < s n i p > - - -

#!/bin/bash



HOST=192.168.1.101

HTTP_PORT=80

RETVAL=0



set -x



function die()

{

    echo -e "$@" >> /var/log/messages

    exit 1

}



while read LINE

do

    if [[ $LINE =~ User-Name ]] ; then

        USERNAME=$(echo $LINE | awk -F'61|@' '{print $2}')

    fi



    if [[ $LINE =~ User-Password ]] ; then

 &nb sp;      PASSWORD=$(echo $LINE | awk -F'= ' '{print $2}' | awk -F'"|"' 
'{print $2}')

    fi

done



if echo "" | telnet $HOST $HTTP_PORT 2>&1 | grep -i Connected ; then



    
URL="http://$HOST/credentials.php?command=password_retrieve&phonenumber=$USERNAME";



    if [ $PASSWORD == $(wget -c -O - $URL | cut -d\| -f 1) ] ; then

    #    Make an Access-Accept reply to the user.

    else

    #    Make an Access-Reject reply to the user.

    fi



else

    die "ERROR: The $HOST is down or unreachable on $(date)."

fi



exit ${RETVAL}

- - - < s n i p > - - -



Please advice. Thank you in advance.



Regards,



MP



Date: Tue, 28 Jun 2011 12:04:54 +0100

From: [email protected]

To: [email protected]

Subject: Re: [RADIATOR] Executing an external script from Radiator



You're not iterating over stdin.
 
Try something like:
 
 
martin@apollo:~$ cat test.sh
#!/bin/bash
 
#iterate over stdin and pull out the relevant fields.
while read LINE
do
        if [[ $LINE =~ User-Name ]]; then
                USERNAME=$( echo $LINE | awk -F'= ' '{print $2}')
        fi
        if [[ $LINE =~ User-Password ]]; then
                PASSWORD=$( echo $LINE | awk -F'= ' '{print $2}')
        fi
done
 
echo username is $USERNAME
echo password is $PASSWORD
 
 
martin@apollo:~$ echo -e "User-Name = \"Fred\"\nUser-Password =
\"supersecret\"" | ./test.sh
username is "Fred"
password is "supersecret"
 
 
 
On 28/06/11 10:00, M P wrote:
> 
> Hello all,
> 
> If you have noticed, I am trying to get the values of the User-Name and 
> User-Password attributes in my BASH script that is being ex
 ecuted by the Command parameter inside my <AuthBy EXTERNAL> clause. In my 
test, I can only get the value of the User-Name attribute but not with the 
User-Password attribute as it appears blank. If I can pass the value of the 
User-Password attribute to the $PASSWORD variable, I will be able to compare it 
with the return value when I do the wget command.
> 
> Please advice on how am I able to proceed from here.
> 
> Regards,
> 
> MP
> 
> 
> From: [email protected]
> To: [email protected]
> Date: Tue, 28 Jun 2011 14:50:51 +0800
> Subject: Re: [RADIATOR] Executing an external script from Radiator
> 
> 
> 
> 
> 
> 
> 
> 
> 
>  Hello all,
>  
> How am I able to read the value of the User-Password attribute and pass it to 
> a variable from an (AuthBy) EXTERNAL BASH script? Also, how am I able to send 
> back the result to the user eith
 er successful (Access-Accept) or failed (Access-Reject)?
>  
> Below is a snippet of my Radiator configuration:
>  
> - - - < s n i p > - - -
> <Realm DEFAULT>
>     <AuthBy EXTERNAL>
>         DecryptPassword
>         Command /usr/local/sbin/testauth.sh
>         Fork
>         RejectEmptyPassword
>     </AuthBy>
>         AcctLogFileName %L/accounting/detail-%Y%m%d.log
> </Realm>
> - - - < s n i p > - - -
>  
> Below is my BASH script:
>  
> - - - < s n 
>  i p > - - -
> #!/bin/bash
> USERNAME=$(grep -i User-Name | awk -F'61|@' '{print $2}')
> PASSWORD=$(grep -i User-Password | awk -F'= ' '{print $2}')
> HOST=192.168.1.101
> HTTP_PORT=80
> URL="http://$HOST/credentials.php?command=password_retrieve&phonenumber=$USERNAME";
> RETVAL=0
> set -x
> function die()
&
 gt; {
>     echo -e "$@" >> /var/log/messages
>     exit 1
> }
> if echo "" | telnet $HOST $HTTP_PORT 2>&1 | grep -i Connected ; then
>     if [ $PASSWORD == $(wget -c -O - $URL | cut -d\| -f 1) ] ; then
>     #    Make an Access-Accept reply to the user.
>     else
>     #    Make an Access-Reject reply to the user.
>     fi
> else
>     die "ERROR: The $HOST is dow
>  n or unreachable on $(date)."
> fi
> exit ${RETVAL}
> - - - < s n i p > - - -
>  
> Lastly, I am getting the below line in my radiusd.log file:
>  
> Tue Jun 28 13:53:01 2011 476732: ERR: Bad attribute=value pair: Connected to 
> 192.168.1.201.
>  
> Please advice. Thank you in advance.
>  
> Regards,
>  
> MP 
> From: [email protected]
> To: [email protected]
> Date: Wed, 22 Jun 2011 13:50:30 +0800
> Subject: Re: [RAD
 IATOR] Executing an external script from Radiator
> 
> 
> 
> 
> 
> 
> 
> 
> Hello all,
>  
> Thank you for all who responded to my e-mail.
>  
> Now, I have a problem though. First, I am just going to write the script in 
> BASH as I don't know Perl. Second, there is no database here to verify the 
> User-Name and User-Password. Everytime there is an Access-Request that is 
> received by the Radiator, it should execute the BASH script to (maybe) wget 
> or curl with an input parameter of the User-Name from an HTTP or HTTPS URL 
> and will receive the output with the User-Name and User-Password to verify 
> and then reply back with an Access-Accept. If during the wget or curl from 
> the URL and the output is other than what I expect (the User-Name and 
> User-Password), then Radiator should respond with an Access-Reject.
>  
> [NAS Client] <---> (RADIUS TRaffic) <---> [Radiator] <---> (Execut
 e Script) <---> (HTTP/HTTPS Traffic) <---> [HTTP Server]
>  
> Please ad
>  vice. Thank you in advance.
>  
> From: [email protected]
> To: [email protected]
> Date: Tue, 21 Jun 2011 14:34:37 +0800
> Subject: [RADIATOR] Executing an external script from Radiator
> 
> 
> 
> 
> 
> 
> 
> 
> 
> 
> 
> Hello all,
>  
> How am I going to execute an external script when Radiator receives an 
> Access-Request? This script will actually do an HTTP API request from an 
> external HTTP server to get the userid then once the script have it on the 
> same server as where the Radiator is running, Radiator will now respond an 
> Access-Accept.
>  
> Please advice. Thank you in advance.
>                                         
> 
> _______________________________________________
> radiator mailing list
> [email protected]
> http://www.open.com.au/mailman/listinfo/radiator                              
>           
> 
> _______________________________________________
> radiator mailing list
> [email protected]
> http://www.open.com.au/mailman/listinfo/radiator                              
>           
> 
> _______________________________________________
> radiator mailing list
> [email protected]
> http://www.open.com.au/mailman/listinfo/radiator                              
>           
> 
> 
> 
> _______________________________________________
> radiator mailing list
> [email protected]
> http://www.open.com.au/mailman/listinfo/radiator
 
-- 
Martin Burton
Seni
 or Systems Administrator               \\\|||///
Special Projects Team                     \\  ^ ^  //
Wellcome Trust Sanger Institute            (  6 6  )
-----------------------------------------oOOo-(_)-oOOo---
t: +44 (0)1223 496945             http://www.sanger.ac.uk
 



_______________________________________________ radiator mailing list 
[email protected] http://www.open.com.au/mailman/listinfo/radiator

                                          
_______________________________________________
radiator mailing list
[email protected]
http://www.open.com.au/mailman/listinfo/radiator

Reply via email to