You are viewing a plain text version of this content. The canonical link for it is here.
Posted to apache-bugdb@apache.org by Philip Warner <pj...@rhyme.com.au> on 1999/02/02 00:18:43 UTC

general/3810: Minor addition to dbmmanage

>Number:         3810
>Category:       general
>Synopsis:       Minor addition to dbmmanage
>Confidential:   no
>Severity:       non-critical
>Priority:       medium
>Responsible:    apache
>State:          open
>Class:          change-request
>Submitter-Id:   apache
>Arrival-Date:   Mon Feb  1 15:20:00 PST 1999
>Last-Modified:
>Originator:     pjw@rhyme.com.au
>Organization:
apache
>Release:        1.3.4
>Environment:
Linux 2.0.34, Gnu etc...
>Description:
The following patch makes dbmmanage maintain a list of groups for each user in the DB file; the format for entries is:

encrypted-password:comma-separated-list-of-groups

This allows for users in multiple groups, and a single DB file when using mod_auth_db.
>How-To-Repeat:

>Fix:
The patch file follows:
-----------------------------------------
*** /usr/bin/dbmmanage  Mon Feb  1 17:15:37 1999
--- /usr/bin/dbmunge    Tue Feb  2 08:58:57 1999
***************
*** 97,103 ****

  sub usage {
      my $cmds = join "|", sort keys %dbmc::;
!     die "usage: $0 filename [$cmds] [username]\n";
  }

  my $x;
--- 97,103 ----

  sub usage {
      my $cmds = join "|", sort keys %dbmc::;
!     die "usage: $0 filename [$cmds] [username] [value]\n";
  }

  my $x;
***************
*** 151,163 ****

  sub dbmc::add {
      die "Can't use empty password!\n" unless $crypted_pwd;
!     unless($is_update) {
        die "Sorry, user `$key' already exists!\n" if $DB{$key};
!     }
!     $DB{$key} = $crypted_pwd;
      my $action = $is_update ? "updated" : "added";
!     print "User $key $action with password encrypted to $DB{$key}\n";
  }

  sub dbmc::adduser {
      my $value = getpass "New password:";
--- 151,196 ----

  sub dbmc::add {
      die "Can't use empty password!\n" unless $crypted_pwd;
!
!     if ($is_update) {
!         $DB{$key} =~ s/^[^:]*/$crypted_pwd/;
!     } else {
        die "Sorry, user `$key' already exists!\n" if $DB{$key};
!         $DB{$key} = $crypted_pwd;
!     };
!
      my $action = $is_update ? "updated" : "added";
!     print "User $key $action. New record is: $DB{$key}\n";
! }
!
! sub dbmc::addtogroup {
!     die "Sorry, user `$key' doesn't exist!\n" unless $DB{$key};
!     $DB{$key} =~ /([^:]*).?([^:]*)(.*)/;
!     my ($hpwd,$grps,$other) = ($1,$2,$3);
!     $grps =~ s/ //g;
!     die "Sorry, user `$key' is already in group $crypted_pwd!\n" if ($grps =~ m/(^|,)$crypted_pwd(,|$)/
);
!     if ($grps eq "") {
!       $grps = $crypted_pwd;
!     } else {
!       $grps = "$grps,$crypted_pwd";
!     };
!     $DB{$key} = "$hpwd:$grps$other";
!     print "User $key added to group $crypted_pwd, new record is: $hpwd:$grps$other\n";
  }
+
+ sub dbmc::delfromgroup {
+     die "Sorry, user `$key' doesn't exist!\n" unless $DB{$key};
+     $DB{$key} =~ /([^:]*).?([^:]*)(.*)/;
+     my ($hpwd,$grps,$other) = ($1,$2,$3);
+     $grps =~ s/ //g;
+     die "Sorry, user `$key' is not in group $crypted_pwd!\n" if (!($grps =~ m/(^|,)$crypted_pwd(,|$)/))
;
+     $grps =~ s/^$crypted_pwd(,|$)//g;
+     $grps =~ s/,$crypted_pwd(,|$)/$1/g;
+
+     $DB{$key} = "$hpwd:$grps$other";
+     print "User $key delete from group $crypted_pwd, new record is: $hpwd:$grps$other\n";
+ }
+

  sub dbmc::adduser {
      my $value = getpass "New password:";
>Audit-Trail:
>Unformatted:
[In order for any reply to be added to the PR database, ]
[you need to include <ap...@Apache.Org> in the Cc line ]
[and leave the subject line UNCHANGED.  This is not done]
[automatically because of the potential for mail loops. ]
[If you do not include this Cc, your reply may be ig-   ]
[nored unless you are responding to an explicit request ]
[from a developer.                                      ]
[Reply only with text; DO NOT SEND ATTACHMENTS!         ]