Skip site navigation (1)Skip section navigation (2)

FreeBSD Manual Pages

  
 
  

home | help
HTTPD::UserAdmin(3)   User Contributed Perl Documentation  HTTPD::UserAdmin(3)

NAME
       HTTPD::UserAdmin	- Management of	HTTP server user databases

SYNOPSIS
	   use HTTPD::UserAdmin	();

DESCRIPTION
       This software is	meant to provide a generic interface that hides	the
       inconsistencies across HTTP server implementations of user and group
       databases.

METHODS
       new ()
	   Here's where	we find	out what's different about your	server.

	   Some	examples:

	       @DBM = (DBType => 'DBM',
		       DB     => '.htpasswd',
		       Server => 'apache');

	       $user = new HTTPD::UserAdmin @DBM;

	   This	creates	an object who's	database is a DBM file named
	   '.htpasswd',	in a format that the Apache server understands.

	       @Text = (DBType => 'Text',
			DB     => '.htpasswd',
			Server => 'ncsa');

	       $user = new HTTPD::UserAdmin @Text;

	   This	creates	an object whose	database is a plain text file named
	   '.htpasswd',	in a format that the NCSA server understands.

	       @SQL =  (DBType =>    "SQL",
			Host =>	     "",	     #server hostname
			Port =>	     "",	     #server port
			DB =>	     "www",	     #database name
			User =>	     "",	     #database login name
			Auth =>	     "",	     #database login password
			Encrypt	=>   "crypt",	     #encryption method
			Driver =>    "mSQL",	     #driver for DBI
			Server =>    "apache",	     #HTTP server type,	not required
			UserTable => "www-users",    #table with field names below
			NameField => "user",	     #field for	the name
			PasswordField => "password", #field for	the password
			);

	       $user = new HTTPD::UserAdmin @SQL;

	   This	creates	an object who's	mSQL database is named 'www', with a
	   schema that the Apache server (extention) understands.

	   Full	list of	constructor attributes:

	   Note: Attribute names are case-insensitive

	   DBType  - The type of database, one of 'DBM', 'Text', or 'SQL'
	   (Default is 'DBM')

	   DB	   - The database name (Default	is '.htpasswd' for DBM & Text
	   databases)

	   Server  - HTTP server name (Default is the generic class, that
	   works with NCSA, Apache and possibly	others)

	   Note: run 'perl t/support.t matrix' to see what support is
	   currently availible

	   Encrypt - One of 'crypt', 'MD5', or 'none' (no encryption.
	   Defaults to 'crypt'

	   Locking - Boolean, Lock Text	and DBM	files (Default is true)

	   Path	   - Relative DB files are resolved to this value  (Default is
	   '.')

	   Debug   - Boolean, Turn on debug mode

	   Flags   - The read, write and create	flags.	There are four modes:
	   rwc - the default, open for reading,	writing	and creating.  rw -
	   open	for reading and	writing.  r - open for reading only.  w	- open
	   for writing only.

	   Specific to DBM files:

	   DBMF	   - The DBM file implementation to use	(Default is 'NDBM')

	   Mode	   - The file creation mode, defaults to '0644'

	   Specific to DBI: We talk to an SQL server via Tim Bunce's DBI
	   interface. For more info see:
	   http://www.hermetica.com/technologia/DBI/

	   Host	     - Server hostname

	   Port	     - Server port

	   User	     - Database	login name

	   Auth	     - Database	login password

	   Driver    - Driver for DBI  (Default	is 'mSQL')

	   UserTable - Table with field	names below

	   NameField - Field for the name  (Default is 'user')

	   PasswordField - Field for the password  (Default is 'password')

	   From	here on	out, things should look	the same for everyone.

       add($username,$password,[@fields])
       add($username,$password,\%fields)
	   Add a user.

	   Fails if $username exists in	the database

	       if($user->add('dougm', 'secret')) {
		   print "You have the power!\n";
	       }

	   You may need	to pass	additional fields, such	as the user's real
	   name.  This depends on your server of course.

	       $user->add('JoeUser', 'try2guess', '', 'Joseph A. User');

	   You can also	pass a set of field name/value pairs in	the form of a
	   hash	ref.  Example

	      $user->add('JoeUser','try2guess','',
				   {'Name'=>'Joseph A. User','Credit_limit'=>2000});

       delete($username)
	   Delete a user

	       if($user->delete('dougm')) {
		   print "He's gone\n";
	       }

       suspend($username)
	   Suspend a user

	       if($user->suspend('dougm')) {
		   print "Account suspended\n";
	       }

       unsuspend($username)
	   Unsuspend a suspended user

	       if($user->unsuspend('dougm')) {
		   print "Account restored to normal\n";
	       }

       exists($username)
	   True	if $username is	found in the database

	       if($user->exists('dougm')) {
		   die "oh no!";
	       }

       password()
	   Returns the encrypted password for a	user

	       $passwd = $user->password("dougm");

	   Useful for copying users to another database.

       fetch($username,@fields)
	       Fetch a list of field values from the indicated user.  Field names may
	       be provided as a	list or	as an array reference.	The return value is a
	       reference to a hash containing the field/value pairs.

       list()
	   Returns a list of usernames in the current database

	       @users =	$user->list

       update($username,$password)
       update($username,$password,\%fields) SQL	only
	   Update $username with a new $password

	       if($user->update('dougm', 'idunno')) {
		   print "Updated\n";
	       }

	   With	SQL servers, you can update other fields in the	table by
	   passing a hash reference:

		  $user->update('dougm','idunno',{'credit_limit'=>1000});

	   An undefined	value in the password field will leave the field
	   unchanged.

       group()
	   Short cut for creating an HTTPD::GroupAdmin object.	All applicable
	   attributes are inherited, but can be	overridden.

	       $group =	$user->group(NAME => 'www-group');

	   (See	HTTPD::GroupAdmin)

       convert(@Attributes)
	   Convert a database.

	       $dbmuser	= $user->convert(@Apache);

       lock([$timeout])
       unlock()
	   These methods give you control of the locking mechanism.

	       $user = new HTTPD::UserAdmin (Locking =>	0); #turn off auto-locking
	       $user->lock; #lock the object's database
	       $user->add($username,$passwd); #write while file	is locked
	       $user->unlock; release the lock

       db($dbname);
	   Select a different database.

	       $olddb =	$user->db($newdb);
	       print "Now we're	reading	and writing '$newdb', done with	'$olddb'n\";

       flags([$flags])
	   Get or set read, write, create flags.

       commit
	   Commit changes to disk (for Text files).

Message	Digest User Databases
       Currently, you can store	user info in a format for servers who support
       Message Digest Authentication.  Here's an example:

	 $user = new HTTPD::UserAdmin (DB => '.htdigest', Encrypt => 'MD5');

	 ($username,$realm,$password) =	('JoeUser', 'SomePlace', '14me');

	 #The checksum contains	more info that just a password
	 $user->add($username, "$username:$realm:$password");
	 $user->update($username, "$username:$realm:newone");

	 $info = $user->password($username);
	 ($realm, $checksum) = split(":", $info);

	 $user->delete($username);

       See <URL:http://hoohoo.ncsa.uiuc.edu/docs/howto/md5_auth.html> for
       NCSA's implementation.

       So, it's	a little more work, but	don't worry, a nicer interface is on
       the way.

SEE ALSO
       HTTPD::GroupAdmin(3), HTTPD::Authen(3)

AUTHOR
       Doug MacEachern <dougm@osf.org>

       Copyright (c) 1996, Doug	MacEachern

       This library is free software; you can redistribute it and/or modify it
       under the same terms as Perl itself.

perl v5.32.0			  2003-01-16		   HTTPD::UserAdmin(3)

NAME | SYNOPSIS | DESCRIPTION | METHODS | Message Digest User Databases | SEE ALSO | AUTHOR

Want to link to this manual page? Use this URL:
<https://www.freebsd.org/cgi/man.cgi?query=HTTPD::UserAdmin&sektion=3&manpath=FreeBSD+12.2-RELEASE+and+Ports>

home | help