summaryrefslogtreecommitdiff
path: root/utils/rd-user
diff options
context:
space:
mode:
Diffstat (limited to 'utils/rd-user')
-rwxr-xr-xutils/rd-user119
1 files changed, 92 insertions, 27 deletions
diff --git a/utils/rd-user b/utils/rd-user
index 6b191be..2a032dd 100755
--- a/utils/rd-user
+++ b/utils/rd-user
@@ -30,51 +30,116 @@ if ($> != 0 ) {
exit 1;
}
-my $num_args = $#ARGV + 1;
-if ($num_args != 2 && $num_args !=3) {
- print STDERR "Usage: rd-user (check|add|remove) <username> [ fullname ]\n";
- exit 1;
+sub print_usage
+{
+ print STDERR "Usage: rd-user list\n" .
+ " rd-user (check|remove) <username>\n" .
+ " rd-user add <username> [ <fullname> ]\n";
+}
+
+sub list
+{
+ my ($dbh) = @_;
+
+ my @users = RHRD::rddb::list_users($dbh);
+ if(!defined $users[0] && defined $users[1]) {
+ print STDERR "$users[1]: $users[2]";
+ return 1;
+ }
+ for my $user (@users) {
+ print $user . "\n";
+ }
+ return 0;
}
+sub check
+{
+ my ($dbh, $username) = @_;
+
+ my ($result, $status, $errorstring) = RHRD::rddb::check_user($dbh, $username);
+ print STDERR "$result, $status: $errorstring\n";
+ return $result;
+}
+
+sub add
+{
+ my ($dbh, $username, $fullname) = @_;
+
+ my $token = mkpasswd(-length => 16, -minnum => 3, -minupper => 3, -minspecial => 0);
+ my ($cnt, undef, $errorstring) = RHRD::rddb::add_user($dbh, $username, $token, $fullname);
+ unless(defined $cnt) {
+ print STDERR "$errorstring\n";
+ return 1;
+ }
+ print int($cnt) . " rows affected\n";
+ return 0;
+}
+
+sub remove
+{
+ my ($dbh, $username) = @_;
+
+ my @results = RHRD::rddb::remove_user($dbh, $username);
+ if(!defined $results[0] && defined $results[2]) {
+ print STDERR "$results[2]\n";
+ return 1;
+ }
+ for my $href (@results) {
+ print int($href->{cnt}) . " " . $href->{name} . " deleted\n";
+ }
+ return 0;
+}
+
+
+my $num_args = $#ARGV + 1;
+if($num_args < 1) {
+ print_usage();
+ exit(1);
+}
my $cmd = $ARGV[0];
my $username = $ARGV[1];
-my $fullname = $ARGV[2];
+my $ret = 0;
my ($dbh, undef, $errorstring) = RHRD::rddb::opendb();
if(defined $dbh) {
- if($cmd eq "check") {
- (my $result, my $status, $errorstring) = RHRD::rddb::check_user($dbh, $username);
- print STDERR "$result, $status: $errorstring\n";
- RHRD::rddb::closedb($dbh);
- exit $result;
+ if($cmd eq "list") {
+ if($num_args != 1) {
+ print_usage();
+ $ret = 1;
+ } else {
+ $ret = list($dbh);
+ }
+ }
+ elsif($cmd eq "check") {
+ if($num_args != 2) {
+ print_usage();
+ $ret = 1;
+ } else {
+ $ret = check($dbh, $username);
+ }
} elsif($cmd eq "add") {
- my $token = mkpasswd(-length => 16, -minnum => 3, -minupper => 3, -minspecial => 0);
- (my $cnt, undef, $errorstring) = RHRD::rddb::add_user($dbh, $username, $token, $fullname);
- unless(defined $cnt) {
- print STDERR "$errorstring\n";
- RHRD::rddb::closedb($dbh);
- exit 1;
+ if($num_args < 2 || $num_args > 3) {
+ print_usage();
+ $ret = 1;
+ } else {
+ $ret = add($dbh, $username, $ARGV[2]);
}
- print int($cnt) . " rows affected\n";
} elsif($cmd eq "remove") {
- my @results = RHRD::rddb::remove_user($dbh, $username);
- if(!defined $results[0] && defined $results[2]) {
- print STDERR "$results[2]\n";
+ if($num_args != 2) {
+ print_usage();
+ $ret = 1;
} else {
- for my $href (@results) {
- print int($href->{cnt}) . " " . $href->{name} . " deleted\n";
- }
+ $ret = remove($dbh, $username);
}
} else {
print STDERR "unknown command\n";
- RHRD::rddb::closedb($dbh);
- exit 1;
+ $ret = 1;
}
RHRD::rddb::closedb($dbh);
} else {
print STDERR "$errorstring\n";
- exit 1;
+ $ret = 1;
}
-exit 0
+exit $ret;