Forcing lowercase User-Name with rlm_perl
oz
oz at bluemonk.de
Thu Jun 12 00:06:21 CEST 2008
Wow Chris, looks great and is very helpful!
I will test it tomorrow and give a short feedback whether it works.
Thanks a lot,
oz
On Wed, 11 Jun 2008 14:28:13 -0700
Chris <cjl at viptalk.net> wrote:
> I'm doing this:
>
> perl_tolower.pm:
> use strict;
> use vars qw(%RAD_REQUEST %RAD_REPLY %RAD_CHECK);
> #
> # This the remapping of return values
> #
> use constant RLM_MODULE_REJECT=> 0;# /* immediately
> reject the request */
> use constant RLM_MODULE_FAIL=> 1;# /* module failed,
> don't reply */
> use constant RLM_MODULE_OK=> 2;# /* the module is
> OK, continue */
> use constant RLM_MODULE_HANDLED=> 3;# /* the module
> handled the request, so stop. */
> use constant RLM_MODULE_INVALID=> 4;# /* the module
> considers therequest invalid. */
> use constant RLM_MODULE_USERLOCK=> 5;# /* reject the
> request (useris locked out) */
> use constant RLM_MODULE_NOTFOUND=> 6;# /* user not found
> */
> use constant RLM_MODULE_NOOP=> 7;# /* module succeeded
> withoutdoing anything */
> use constant RLM_MODULE_UPDATED=> 8;# /* OK (pairs
> modified) */
> use constant RLM_MODULE_NUMCODES=> 9;# /* How many
> return codes there are */
>
> sub authorize {
> $RAD_REQUEST{'User-Name'} = lc($RAD_REQUEST{'User-Name'});
> return RLM_MODULE_OK;
> }
>
> sub preacct {
> $RAD_REQUEST{'User-Name'} = lc($RAD_REQUEST{'User-Name'});
> return RLM_MODULE_OK;
> }
>
> radiusd.conf:
> modules {
> ...
> perl {
> module = /usr/local/etc/perl_tolower.pm
> }
> ...
> }
>
> In sites-enabled/default:
>
> authorize {
> preprocess
> perl
> ...
> }
>
> preacct {
> preprocess
> perl
> ...
> }
>
> Works great as long as you don't have occasion for upper-case in User-
> Name.
>
> I am pretty sure when you define the module, you can have multiple
> instances. It might be better to name this module perl-lc-username
> and use perl-lc-username in the authorize{} and preacct{} sections of
> sites-enabled/default.
>
> Like this:
>
> radiusd.conf:
>
> modules {
> ...
> perl-lc-username {
> module = /usr/local/etc/perl_tolower.pm
> }
> ...
> }
>
> In sites-enabled/default:
>
> authorize {
> preprocess
> perl-lc-username
> ...
> }
>
> preacct {
> preprocess
> perl-lc-username
> ...
> }
>
> That'd be a lot clearer when you're looking at it months or years
> later. I haven't tried this but it works with other modules.
>
> On Jun 11, 2008, at 1:04 PM, oz wrote:
>
> > On Sat, 17 May 2008 18:09:09 -0700
> > Chris <cjl at viptalk.net> wrote:
> >
> >> Thanks. I'll look at lc.
> >> I was actually more concerned about the interfacing with
> >> freeradius than the perl itself.
> >
> > Hello, another user here, who needs "lower_user = before" to be able
> > to
> > switch to freeradius-2.0.x. Our database is an historically grown
> > users-file.
> >
> > Were you or somebody else able to follow the advice of using
> > rlm_perl and lc()?
> >
> > I must admit, I'm not able to program freeradius-perl-plugins :-/, but
> > would test it if necessary. At the moment I don't even have the
> > rlm_perl in /usr/local/lib/, but that I could solve by myself I guess
> > (libperl-dev wasn't already installed during compile-time on my
> > minimal
> > Debian/lenny etc.).
> >
> > I know, there is nothing like a wishlist, but the lowercase-feature is
> > essential if we want to use 2.x it in the future.
> >
> > kind regards
More information about the Freeradius-Users
mailing list