dbmmanage.in revision a2652f3451528565db1f85db6953fc30799d7ead
#!@perlbin@
#
# Copyright 2001-2006 The Apache Software Foundation or its licensors, as
# applicable.
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
#for more functionality see the HTTPD::UserAdmin module:
#
# usage: dbmmanage <DBMfile> <command> <user> <password> <groups> <comment>
# -ldb -lndbm -lgdbm -lsdbm
use strict;
use Fcntl;
sub usage {
die <<SYNTAX;
Usage: dbmmanage [enc] dbname command [username [pw [group[,group] [comment]]]]
where enc is -d for crypt encryption (default except on Win32, Netware)
-m for MD5 encryption (default on Win32, Netware)
-s for SHA1 encryption
-p for plaintext
command is one of: $cmds
pw of . for update command retains the old password
pw of - (or blank) for update command prompts for the password
groups or comment of . (or blank) for update command retains old values
groups or comment of - for update command clears the existing value
groups or comment of - for add and adduser commands is the empty value
SYNTAX
}
sub need_sha1_crypt {
print STDERR <<SHAERR;
dbmmanage SHA1 passwords require the interface or the module Digest::SHA1
available from CPAN:
http://www.cpan.org/modules/by-module/Digest/Digest-MD5-2.12.tar.gz
Please install Digest::SHA1 and try again, or use a different crypt option:
SHAERR
}
}
sub need_md5_crypt {
print STDERR <<MD5ERR;
dbmmanage MD5 passwords require the module Crypt::PasswdMD5 available from CPAN
http://www.cpan.org/modules/by-module/Crypt/Crypt-PasswdMD5-1.1.tar.gz
Please install Crypt::PasswdMD5 and try again, or use a different crypt option:
MD5ERR
}
}
# if your osname is in $newstyle_salt, then use new style salt (starts with '_' and contains
# four bytes of iteration count and four bytes of salt). Otherwise, just use
# the traditional two-byte salt.
# see the man page on your system to decide if you have a newer crypt() lib.
# The new style crypt() allows up to 20 characters of the password to be
# significant rather than only 8.
#
# Some platforms just can't crypt() for Apache
#
}
# Some platforms won't jump through our favorite hoops
#
}
shift @ARGV;
print STDERR
"Warning: Apache/$^O does not support crypt()ed passwords!\n\n";
}
}
shift @ARGV;
}
shift @ARGV;
print STDERR
"Warning: Apache/$^O does not support plaintext passwords!\n\n";
}
}
shift @ARGV;
}
}
# remove extension if any
my $x;
sub genseed {
my $psf;
}
else {
}
}
}
sub randchar {
}
sub saltpw_crypt {
return $newstyle_salt ?
}
sub cryptpw_crypt {
}
sub saltpw_md5 {
}
sub cryptpw_md5 {
}
sub cryptpw_sha1 {
}
sub cryptpw {
}
@_[0]; # otherwise return plaintext
}
sub getpass {
}
$pwd .= $c;
}
return $pwd;
}
$crypted_pwd = (split /:/, $DB{$key}, 3)[0] if $crypted_pwd eq '.';
if (!$crypted_pwd || $crypted_pwd eq '-') {
dbmc->adduser;
}
else {
dbmc->add;
}
}
sub dbmc::add {
unless($is_update) {
}
$DB{$key} = $crypted_pwd;
}
sub dbmc::adduser {
$crypted_pwd = cryptpw $value;
dbmc->add;
}
sub dbmc::delete {
}
sub dbmc::view {
}
sub dbmc::check {
} else {
}
? " password ok\n" : " password mismatch\n");
}
}
}