[Netpass-devel] NetPass/lib/NetPass Config.pm,1.45,1.46
Brought to you by:
jeffmurphy
|
From: jeff m. <jef...@us...> - 2005-06-03 19:41:30
|
Update of /cvsroot/netpass/NetPass/lib/NetPass In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv4343/lib/NetPass Modified Files: Config.pm Log Message: auth config gui Index: Config.pm =================================================================== RCS file: /cvsroot/netpass/NetPass/lib/NetPass/Config.pm,v retrieving revision 1.45 retrieving revision 1.46 diff -u -d -r1.45 -r1.46 --- Config.pm 3 Jun 2005 16:59:55 -0000 1.45 +++ Config.pm 3 Jun 2005 19:41:22 -0000 1.46 @@ -2336,6 +2336,160 @@ return undef; } +=head2 getLDAP($server) + +If server is "" it returns an array ref of all configured +LDAP servers (in hostname[:port] notation). If server is +formatted as "hostname[:port]" it will return a hashref containing +the keys: + + base the search base + filter the filter to use + passwordField the name of the password field + +RETURNS + arrayref on success + hashref on success + undef on failure or no-such-server + +=cut + +sub getLDAP { + my $self = shift; + my $s = shift; + $s ||= ""; + if (recur_exists($self->{'cfg'}, "ldap", $s)) { + return { 'base' => $self->{'cfg'}->obj('radius')->obj($s)->value('base'), + 'filter' => $self->{'cfg'}->obj('radius')->obj($s)->value('filter'), + 'passwordField' => $self->{'cfg'}->obj('radius')->obj($s)->value('passwordField'), + }; + } + elsif (recur_exists($self->{'cfg'}, "ldap")) { + return [ $self->{'cfg'}->keys('ldap') ]; + } + return undef; +} + + +=head2 setLDAP(-server => '', -base => '', -filter => '', -passwordField => ''); + +If all params (except server) are '' then the server is deleted. +Server can be either a hostname, ip address or either of those +followed by ":port". + +RETURNS + 0 on success + "invalid parameters" routine called improperly + +=cut + +sub setLDAP { + my $self = shift; + + my $parms = parse_parms({ + -parms => \@_, + -legal => [qw(-server -base -filter -passwordField)], + -required => [qw(-server)], + -defaults => { -server => '', + -filter => '', + -base => '', + -passwordField => '' } + } + ); + + if (!defined($parms)) { + return "invalid parameters ".Carp::longmess(Class::ParmList->error); + } + + my ($server, $base, $filter, $pfield) = + $parms->get('-server', '-base', '-filter', '-passwordField'); + + if (!recur_exists($self->{'cfg'}, 'ldap', $server)) { + $self->{'cfg'}->obj('ldap')->$server({}); + } + if ($base.$filter.$pfield ne "") { + $self->{'cfg'}->obj('ldap')->obj($server)->base($base); + $self->{'cfg'}->obj('ldap')->obj($server)->filter($filter); + $self->{'cfg'}->obj('ldap')->obj($server)->passwordField($pfield); + } + else { + $self->{'cfg'}->obj('ldap')->delete($server); + } + return 0; +} + +=head2 getRadius($server) + +If server is "" it returns an array ref of all configured +radius servers (in hostname:port notation). If server is +formatted as "hostname:port" it will return a hashref containing +the keys: + + secret the secret to use + +RETURNS + arrayref on success + hashref on success + undef on failure or no-such-server + +=cut + +sub getRadius { + my $self = shift; + my $s = shift; + $s ||= ""; + if (recur_exists($self->{'cfg'}, "radius", $s)) { + return { 'secret', + $self->{'cfg'}->obj('radius')->obj($s)->value('secret') + }; + } + elsif (recur_exists($self->{'cfg'}, "radius")) { + return [ $self->{'cfg'}->keys('radius') ]; + } + return undef; +} + +=head2 setRadius(-server => '', -secret => ''); + +If secret is '' then the server is deleted. Server can be either a +hostname, ip address or either of those followed by ":port". + +RETURNS + 0 on success + "invalid parameters" routine called improperly + +=cut + +sub setRadius { + my $self = shift; + + my $parms = parse_parms({ + -parms => \@_, + -legal => [qw(-server -secret)], + -required => [qw(-server)], + -defaults => { -server => '', -secret => '' } + } + ); + + if (!defined($parms)) { + return "invalid parameters ".Carp::longmess(Class::ParmList->error); + } + + my ($server, $secret) = $parms->get('-server', '-secret'); + + if (!recur_exists($self->{'cfg'}, 'radius', $server)) { + $self->{'cfg'}->obj('radius')->$server({}); + } + if ($secret ne "") { + $self->{'cfg'}->obj('radius')->obj($server)->secret($secret); + } + else { + $self->{'cfg'}->obj('radius')->delete($server); + } + return 0; +} + + =head2 B<recur_exists> This is a routine, not a method. Useful for checking if a deep configuration |