/lib/AwesomeGrid/User.pm
use strict;
use AwesomeGrid;
use AwesomeGrid::Config;
{
my $user = shift;
return -f "$AwesomeGrid::confdir/users/$user";
}
{
my $user = shift;
unlink "$AwesomeGrid::confdir/users/$user";
}
{
my $class = shift;
my $user = shift;
my $obj = {};
$obj->{ } = $user;
# Pick a random UID >= 10000 and < 65535
$obj->{ } = int(rand(55534)) + 10000;
$obj->{ } = AwesomeGrid::Config::hostname();
warn "invalid hostname" unless $obj->{ };
chomp $obj->{ };
return bless($obj, $class);
}
{
my $class = shift;
my $user = shift;
return $class->loadfrom("$AwesomeGrid::confdir/users/$user");
}
{
my $class = shift;
my $file = shift;
local $_;
open USER, $file || return undef;
$_ = <USER>;
unless (/^AWESOMEGRID USER (\d+\.\d+)$/) {
print STDERR "Invalid AwesomeGrid User format\n";
return undef;
}
if ($1 > $AwesomeGrid::version) {
print STDERR "Cowardly refusing to parse future AwesomeGrid format.\n";
return undef;
}
my $obj = {};
while (<USER>) {
if (/([A-Za-z0-9_-]+):\s+(.*)$/) {
$obj->{$1} = $2;
}
}
close USER;
return bless($obj, $class);
}
{
my $class = shift;
open USER, ">$AwesomeGrid::confdir/users/$class->{username}";
print USER "AWESOMEGRID USER $AwesomeGrid::version\n";
for (keys %$class) {
print USER "$_: $class->{$_}\n";
}
close USER;
}
1;