CfgTie
view release on metacpan or search on metacpan
lib/CfgTie/TieUser.pm view on Meta::CPAN
if (@FSet && scalar @FSet) {$FSUp = 1;}
}
my $X = $usermod_opt2->{$lkey};
if (!defined $X) {$X='';}
#Change the system tables
CfgTie::filever::system("$usermod ".$usermod_opt->{$lkey}." $val $X ".
$self->{name}."\n");
#If bad things should throw exception
if ($FSUp) {chown $val,-1, @FSet;}
$self->{$lkey} = $val;
}
else
{
#Extra setting that will be lost... 8(
$self->{$lkey}=$val;
}
}
sub DELETE
{
#Deletes a user setting
my ($self, $key) = @_;
my $lkey=lc($key);
if ($lkey eq 'authmethod')
{
CfgTie::filever::system("$usermod -A DEFAULT ".$self->{name});
}
elsif (exists $usermod_opt->{$lkey})
{
#This is something for user mod!
CfgTie::filever::system("$usermod ".$usermod_opt->{$lkey}." ".
$self->{name});
}
else
{
#Just remove our local copy
delete $self->{$lkey};
}
}
sub trx {CfgTie::Cfgfile::trx(@_);}
sub HTML($)
{
# A routine to HTMLize the user
my $self=shift;
my %Keys2 = map {$_,1} (keys %{$self});
$Keys2{'last'}=1;
delete $Keys2{gcos};
delete $Keys2{name};
delete $Keys2{id};
delete $Keys2{groupid};
delete $Keys2{password};
my ($G) = getgrgid($self->{groupid});
my $A='';
foreach my $I (sort keys %Keys2) {$A.=trx($I,$self->{$I});}
CfgTie::Cfgfile::table($self->{gcos},
trx("Full Name:", $self->{gcos}).
trx("Login (UID):",$self->{name}." (".$self->{id}.")").
trx("Group (GID):","<a href=\"group/$G\">".$G."</a> (".
$self->{groupid}.")").$A);
}
## --- Support for optional user prioritization --------------------------------
package CfgTie::TieUser_priority;
if (eval("use BSD::Resource;"))
{
#Add the BSD stuff in
$CfgTie::TieUser_rec::SDelegate{'priority'}='CfgTie::TieUser_priority';
$CfgTie::TieUser_rec::SDelegate{'rusage'}='CfgTie::TieUser_rusage';
}
sub TIESCALAR
{return bless {id=>$_[1]}, $_[0];}
sub FETCH
{
#Get the priority setting from the system
getpriority(PRIO_USER,$_[0]->{id});
}
sub STORE
{
my ($self,$val)=@_;
#Pass the priority setting onto the system
setpriority(PRIO_USER,$self->{id},$val);
}
## --- Support for optional user resources -------------------------------------
package CfgTie::TieUser_rusage;
sub TIEHASH
{return bless {id=>$_[1]}, $_[0];}
#Get the consumption data from the system
sub FETCH { [getrusage($_[0]->{id})]; }
## --- Support for optional Quotas --------------------------------------------
package CfgTie::TieUser_quota;
#This part attempts to tie in the quota package. It is not guaranteed to
#succeed. Quota from CPAN is recommended because of its completenes of API
#and broad range of platforms supported.
if (eval("use Quota;"))
{
#Add the quota stuff in
$CfgTie::TieUser_rec::HDelegate{'usage'}='CfgTie::TieUser_quota_usage';
$CfgTie::TieUser_rec::HDelegate{'limits'}='CfgTie::TieUser_quota_limits';
$CfgTie::TieUser_rec::HDelegate{'timeleft'}='CfgTie::TieUser_quota_timeleft';
}
my $DB={usage=>{},timeleft=>{},limits=>{}};
1;
( run in 1.796 second using v1.01-cache-2.11-cpan-7f9471e7e0a )