diff options
author | Stephen Hemminger <stephen.hemminger@vyatta.com> | 2009-06-02 14:22:15 -0700 |
---|---|---|
committer | An-Cheng Huang <ancheng@vyatta.com> | 2009-07-17 14:30:20 -0700 |
commit | ba60053e94147f401efd298fe1bd4d38cf9f34f7 (patch) | |
tree | 0a52ff1572e9a8f7d6ff55c5297a719f60721726 | |
parent | 6859b8c8e408817161a1723a19396c880ae6e889 (diff) | |
download | vyatta-cfg-system-ba60053e94147f401efd298fe1bd4d38cf9f34f7.tar.gz vyatta-cfg-system-ba60053e94147f401efd298fe1bd4d38cf9f34f7.zip |
Change API for login modules
The login modules aren't really objects (if Perl really had objects), so
just use dynamic invoke of update routine.
(cherry picked from commit 37ba59896d4c9ac5c914d1901d86ed7e7d844871)
-rw-r--r-- | lib/Vyatta/Login/RadiusServer.pm | 16 | ||||
-rwxr-xr-x | lib/Vyatta/Login/User.pm | 33 | ||||
-rw-r--r-- | scripts/system/vyatta_update_login.pl | 13 |
3 files changed, 13 insertions, 49 deletions
diff --git a/lib/Vyatta/Login/RadiusServer.pm b/lib/Vyatta/Login/RadiusServer.pm index 97ae4eb6..34da8a31 100644 --- a/lib/Vyatta/Login/RadiusServer.pm +++ b/lib/Vyatta/Login/RadiusServer.pm @@ -83,25 +83,11 @@ sub add_radius_servers { return 1; } -sub new { - my $that = shift; - my $class = ref($that) || $that; +sub update { my $rconfig = new Vyatta::Config; $rconfig->setLevel("system login radius-server"); my %servers = $rconfig->listNodeStatus(); - my $self = \%servers; - - bless $self, $class; - - return $self; -} - -sub update { - my $self = shift; - my %servers = %$self; my $server_str = ''; - my $rconfig = new Vyatta::Config; - $rconfig->setLevel('system login radius-server'); if (%servers) { remove_radius_servers(); diff --git a/lib/Vyatta/Login/User.pm b/lib/Vyatta/Login/User.pm index f053abf1..c4870986 100755 --- a/lib/Vyatta/Login/User.pm +++ b/lib/Vyatta/Login/User.pm @@ -20,29 +20,6 @@ use warnings; use lib "/opt/vyatta/share/perl5"; use Vyatta::Config; -sub new { - my ( $that ) = @_; - my $class = ref($that) || $that; - my $config = new Vyatta::Config; - $config->setLevel("system login user"); - my %users = $config->listNodeStatus(); - my @user_keys = sort keys %users; - - if ( ( scalar(@user_keys) <= 0 ) - || !( grep /^root$/, @user_keys ) - || ( $users{'root'} eq 'deleted' ) ) - { - - # root is deleted - die "User \"root\" cannot be deleted\n"; - } - - my $self = \%users; - bless $self, $class; - - return $self; -} - # Exit codes form useradd.8 man page my %reasons = ( 0 => 'success', @@ -81,10 +58,14 @@ sub get_groups { } sub update { - my $self = shift; - my %users = %$self; my $membership = get_groups(); - my $uconfig = new Vyatta::Config; + my $uconfig = new Vyatta::Config; + $uconfig->setLevel("system login user"); + my %users = $uconfig->listNodeStatus(); + + die "All users deleted!\n" unless %users; + die "User root cannot be deleted\n" + if (! defined $users{'root'} || $users{'root'} eq 'deleted'); foreach my $user ( keys %users ) { if ( $users{$user} eq 'deleted' ) { diff --git a/scripts/system/vyatta_update_login.pl b/scripts/system/vyatta_update_login.pl index b854427b..94e88ed1 100644 --- a/scripts/system/vyatta_update_login.pl +++ b/scripts/system/vyatta_update_login.pl @@ -30,13 +30,10 @@ foreach my $type ($config->listNodes()) { my $kind = ucfirst $type; $kind =~ s/-server/Server/; - my $location = "Vyatta/Login/$kind.pm"; - my $class = "Vyatta::Login::$kind"; - - require $location; + # Dynamically load the module to handle that login method + require "Vyatta/Login/$kind.pm"; - my $obj = $class->new(); - die "Don't understand $type" unless $obj; - - $obj->update(); + # Dynamically invoke update for this type + my $login = "Vyatta::Login::$kind"; + $login->update(); } |