NAME
HTTPD::GroupAdmin - Management of HTTP server group databases
SYNOPSIS
use
HTTPD::GroupAdmin ();
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
=>
'.htgroup'
,
Server
=>
'apache'
);
$group
= new HTTPD::GroupAdmin
@DBM
;
This creates an object whose database is a DBM file named '.htgroup', in a format that the Apache server understands.
@Text
= (
DBType
=>
'Text'
,
DB
=>
'.htgroup'
,
Server
=>
'ncsa'
);
$group
= new HTTPD::GroupAdmin
@Text
;
This creates an object whose database is a plain text file named '.htgroup', in a format that the NCSA server understands.
Full list of constructor attributes:
Note: Attribute names are case-insensitive
Name - Group name
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
Path - Relative DB files are resolved to this value (Default is '.')
Locking - Boolean, Lock Text and DBM files (Default is true)
Debug - Boolean, Turn on debug mode
Specific to DBM files:
DBMF - The DBM file implementation to use (Default is 'NDBM')
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.
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')
GroupTable - Table with field names below
NameField - Field for the name (Default is 'user')
GroupField - Field for the group (Default is 'group')
From here on out, things should look the same for everyone.
- add($username[,$groupname])
-
Add user $username to group $groupname, or whatever the 'Name' attribute is set to.
Fails if $username exists in the database
if
(
$group
->add(
'dougm'
,
'www-group'
)) {
print
"Welcome!\n"
;
}
- delete($username[,$groupname])
-
Delete user $username from group $groupname, or whatever the 'Name' attribute is set to.
if
(
$group
->
delete
(
'dougm'
)) {
print
"He's gone from the group\n"
;
}
- exists($groupname, [$username])
-
True if $groupname is found in the database
if
(
$group
->
exists
(
'web-heads'
)) {
die
"oh no!"
;
}
if
(
$group
->
exists
(
$groupname
,
$username
) {
#$username is a member of $groupname
}
- list([$groupname])
-
Returns a list of group names, or users in a group if '$name' is present.
@groups = $group->list;
@users = $group->list('web-heads');
- user()
-
Short cut for creating an HTTPD::UserAdmin object. All applicable attributes are inherited, but can be overridden.
$user
=
$group
->user();
(See HTTPD::UserAdmin)
- convert(@Attributes)
-
Convert a database.
#not yet
- remove($groupname)
-
Remove group $groupname from the database
- name($groupname)
-
Change the value of 'Name' attribute.
$group
->name(
'bew-ediw-dlrow'
);
- debug($boolean)
-
Turn debugging on or off
- lock([$timeout]) =item unlock()
-
These methods give you control of the locking mechanism.
$group
= new HTTPD::GroupAdmin (
Locking
=> 0);
#turn off auto-locking
$group
->
lock
;
#lock the object's database
$group
->add(
$username
,
$passwd
);
#write while database is locked
$group
->unlock; release the
lock
- db($dbname);
-
Select a different database.
$olddb
=
$group
->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).
SEE ALSO
HTTPD::UserAdmin(3)
AUTHOR
Doug MacEachern <dougm@osf.org>
Copyright (c) 1996, 1997 Doug MacEachern
This library is free software; you can redistribute it and/or modify it under the same terms as Perl itself.