Hi Brian,<div><br></div><div>Yes, I've looked into rlm_otp already, however the token I'm going to use does not work with OTPd's algorithms.</div><div><br></div><div>Anyway, thanks for the splitting code. I've tryed to do this before without success. I'll try your sample code.</div>

<div><br></div><div>Your answer was very helphul. Thanks!</div><div><br><div class="gmail_quote">On Sun, Mar 13, 2011 at 04:38, Brian Candler <span dir="ltr"><<a href="mailto:B.Candler@pobox.com">B.Candler@pobox.com</a>></span> wrote:<br>

<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex;"><div class="im">On Fri, Mar 11, 2011 at 06:13:45PM -0300, Herbert Fischer wrote:<br>
>    This module will do OTP two way authentication. It will extract part of<br>
>    the password (ex.: latest 6 digits) to verify and the remaining<br>
>    "password" will be returned to Freeradius to test against another<br>
>    module (LDAP for example).<br>
</div>...<br>
<div class="im">>    What do you suggest? Is there any other way to do this two way<br>
>    authentication without needing to develop a module for it?<br>
<br>
</div>Have you looked in the src/modules directory? And you've seen that there's<br>
src/modules/rlm_otp already?  If that does the OTP part in the way you need,<br>
then splitting the password into two is easy.<br>
<br>
    if (User-Password =~ /^(......)(.*)$/) {<br>
        update request {<br>
            # The OTP password for rlm_otp to check<br>
            User-Password = "%{1}"<br>
            # The remainder to check against mysql or ldap<br>
            Tmp-String-0 = "%{2}"<br>
        }<br>
    }<br>
    ... continue<br>
<br>
See "man unlang" for the details. This won't work for<br>
CHAP-Challenge/CHAP-Password, obviously - only PAP.<br>
<br>
(rlm_otp appears to be undocumented, so if you want to update<br>
<a href="http://wiki.freeradius.org/Rlm_otp" target="_blank">http://wiki.freeradius.org/Rlm_otp</a> as you work with it, that would be a<br>
useful contribution)<br>
<br>
Otherwise, to make a completely custom module which links against an<br>
existing C library, you can start with rlm_example and borrow logic from<br>
other modules as required.  But you're right, it's tricky to do properly.<br>
<br>
If that were necessary, I'd say you'd be better off using rlm_perl or<br>
rlm_python and writing the logic there.<br>
<br>
Regards,<br>
<font color="#888888"><br>
Brian.<br>
</font><div><div></div><div class="h5">-<br>
List info/subscribe/unsubscribe? See <a href="http://www.freeradius.org/list/devel.html" target="_blank">http://www.freeradius.org/list/devel.html</a><br>
</div></div></blockquote></div><br></div>