/ag-import
#!/usr/bin/perl use strict; use AwesomeGrid; use AwesomeGrid::Config; use AwesomeGrid::User; use AwesomeGrid::Keyring; use File::Copy; my @files = @ARGV; my $pwd = `pwd`; chomp $pwd; mkdir "$AwesomeGrid::confdir/users.new"; chdir "$AwesomeGrid::confdir/users.new"; my @trusted = AwesomeGrid::Config::trusted(); END {system('stty echo')} system('stty -echo'); print STDERR "GPG Passphrase: "; my $passphrase = <STDIN>; system('stty echo'); print "\n"; for my $f (@files) { AwesomeGrid::Keyring::gpgpass($passphrase, qq!--decrypt "$pwd/$f" | tar xfz -!); opendir USERS, "."; my @users = grep {/^[^.]/} readdir USERS; closedir USERS; for my $u (@users) { my $agu = AwesomeGrid::User->loadfrom($u); unless ($agu) { print "Unusable user info: $u\n"; unlink $u; next; } unless (grep { $_ eq $agu->{home} } @trusted) { print "Refusing to import ",$agu->{username}," from untrusted system ",$agu->{home},"\n"; unlink $u; next; } if (AwesomeGrid::User::exists($u)) { print "$u exists. Overwrite? [y/N] "; my $ans = <STDIN>; chomp $ans; if ($ans !~ /^[Yy]$/) { unlink $u; next; } } move $u, "$AwesomeGrid::confdir/users/" || die "Could not write to $AwesomeGrid::confdir/users/"; print "Imported $u\n"; } } chdir $pwd; rmdir "$AwesomeGrid::confdir/users.new";