dbmmanage revision b99dbaab171d91e1b664397cc40e039d0c087c65
# ====================================================================
# The Apache Software License, Version 1.1
#
# Copyright (c) 2000-2001 The Apache Software Foundation. All rights
# reserved.
#
# Redistribution and use in source and binary forms, with or without
# modification, are permitted provided that the following conditions
# are met:
#
# 1. Redistributions of source code must retain the above copyright
# notice, this list of conditions and the following disclaimer.
#
# 2. Redistributions in binary form must reproduce the above copyright
# notice, this list of conditions and the following disclaimer in
# distribution.
#
# 3. The end-user documentation included with the redistribution,
# if any, must include the following acknowledgment:
# "This product includes software developed by the
# Apache Software Foundation (http://www.apache.org/)."
# Alternately, this acknowledgment may appear in the software itself,
# if and wherever such third-party acknowledgments normally appear.
#
# 4. The names "Apache" and "Apache Software Foundation" must
# not be used to endorse or promote products derived from this
# software without prior written permission. For written
# permission, please contact apache@apache.org.
#
# 5. Products derived from this software may not be called "Apache",
# nor may "Apache" appear in their name, without prior written
# permission of the Apache Software Foundation.
#
# THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED
# WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
# OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
# DISCLAIMED. IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR
# ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
# LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
# USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
# ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
# OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
# OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
# SUCH DAMAGE.
# ====================================================================
#
# This software consists of voluntary contributions made by many
# individuals on behalf of the Apache Software Foundation. For more
# information on the Apache Software Foundation, please see
#
#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");
}
}
}