Description
This package is a collection of various
cgi-programms to make administrators live more easier. All scripts are
SHELL-Scripts! That means, they are possibly slow, and that something could
be made in another way. Feel free, if you want, to rewrite the scripts
with another language, i.e. perl.
The package is distributed under the terms
of the GNU General Public License (GPL)- you can modify and redistribute
them, but you have to do this under the GPL too. The GPL is attached
to this file. If anyone modifies the scripts, please drop me an line: tom@daemon.de.
What can you do with these scripts? You
can create users, edit some properties of a user, delete a user, and so
on - all you have to do to manage your users. A complete description of
every function are described below in the "usage"-section.
It creates automatically a backup of all
affected files, ones a day or every time it runs. It creates also a "lock"-file,
this avoids errors during editing of files if the script is used by more
then one person in the same time.
Please read this documentation carefully.
This package is in version 0.1! Don't forget that. I wrote it in a few
nights to 1. test, what is possible with shell-programming, and 2. because
I have needed a application like this, but I had not the time to write
a big C++ programm with a lot of pointer-errors and some days of debugging...
Because of this, I can't give you any guarantie
for this package or the results of its usage. Please make a complete backup
of your user-files. Open a root-terminal and let it open during testing
- so you can repair your system, when any fatal errors damaged it!
Installation
First you have to unpack the archive with
the following command.
gzip -cd admin-cgi.tar.gz | tar xf -
A new directory is now created with the
name admin-cgi. In this directory the following files will be located:
-
display.cgi - the mainprogramm, displays
the currently installed users and provide you any options, like creating
a new user or viewing some data
-
edit.cgi - edits the properties of
a user
-
chpasswd.cgi - changes the password
of a user
-
newuser.cgi - creates a new user
-
modify.cgi - will called from the other
scripts, this one does the job
-
modifi_min.cgi - the same, but Mail
or Aliases files are not affected
-
deluser.cgi - deletes user (!)
-
deluser_min.cgi - the same, but Mail
or Aliases files are not affected
-
showfiles.cgi - shows all edited files
like they currently really looks
-
showlistmembers.cgi - shows users in
the mailinglist
-
showconfig.cgi - shows config.sh
-
showdocu.cgi - shows this documentation
-
config.sh - config-file for Admin CGI
-
mkpasswd.c++ - programm for encryption
of passwords
-
proccgi.c - programm for parsing of
cgi-output (from Frank
Pilhofer, Thanks!)
-
create_login.cgi - creates a login
for httpd authentication (buildin capability of apache webserver)
After unpacking the archive you have to compile
the two C/C++ programms:
g++ mkpasswd.c++ -o mkpasswd
gcc proccgi.c -o proccgi
Now, create in your cgi-bin a subdirectory
for admin cgi, i.e. "admin". Copy all files to this new directory, make
sure, that your server has the right to execute programms in this subdirectory.
Protect the subdirectory against unautorisized usage! If you are using
apache, you can add these lines to your /etc/httpd/access.conf:
<Directory /usr/local/httpd/cgi-bin/admin>
order allow,deny
AllowOverride AuthConfig
allow from all
Options None
</Directory>
And you have to create a .htaccess file
in your admin-directory. This could look like this one:
AuthUserFile /usr/local/httpd/.htpasswd
AuthGroupFile /dev/null
AuthName servername
AuthType Basic
<Limit GET>
require valid-user
</Limit>
Of course a .htpasswd must exist. The
simpliest way to create such file, is to use the programm create_login.cgi,
included in my package. Simply create an empty file .htpasswd and run create_login.cgi
without any parameters from your browser. This programm creates the necessary
entrys in this file. Simply follow the instructions on the screen.
At the end you have to restart your webserver!
Configuration
The next important step is to edit the
supplied configuration-file config.sh. It is strongly recommended to do
this, otherwise it could cause irreparable damages on your system if you
run the scripts without editing the config-file!
HINT: At the first time running
the scripts, use dummy files, NOT your real user-files. Try the package
out, and take a look to this files to see what is happen!
It follows a complete description of every
parameter. Please read carefully:
This is the URL to your cgi-bin directory,
where the scripts are located:
CGIDIR="http://servername/cgi-bin/admin"
This is the real path to the script directory:
EXECDIR="/usr/local/httpd/cgi-bin/admin"
The directory, where the script copies
the backup, of course it must exist:
BACKUPDIR="/etc/admin/backup"
The directory to use for temporary files:
TMPDIR="/tmp"
The directory, where the files for your
mailinglist are located:
LISTDIR="/etc/mail/lists"
The file contains the subscribed users
of the mailinglist. ATTENTION: on our system this file contains
usernames, not email-adresses. If you have a mailinglist, but this
file contains Email-adresses, you MUST edit the scripts or you cannot
use this feature (set MODIFY_ALL to "no")
LIST="$LISTDIR/majordomo.list"
The directory containing all files we should
copy in a users home-directory, i.e. .bashrc or .profile. It must of course
exist:
HOMEDIR="/home/default"
The password file
PASSWD="/etc/passwd"
The Group File
GROUP="/etc/group"
The shadow file (containis encrypted
passwords):
SHADOW="/etc/shadow"
The aliases file (username-to-emailadress
mapping):
ALIASES="/etc/mail/aliases"
The file contains the usernames of all
your users. It is referenced in aliases and used to write mail messages
to all users on your machine, i.e. if you had installed a new software
and want to inform the people about that. The line in aliases should looks
like that: users: :include:/etc/mail/lists/users.
USERS="/etc/mail/users"
Archiv user for your mailinglist. This
user will not be editable:
LIST_ARCHIV="archiv"
This parameter defines, when we should
make backup.
If set to "no" then the backup will only
created once a day (at the first start of the scripts on one day).
If set to "yes" then the backup will created
every time the script runs.
BACKUP_RUN="no"
The programm we use to parse cgi output.
You shoud not edit this line:
PARSE="$EXECDIR/proccgi"
This defines what should be modified by
the scripts.
If set to "no" then only passwd, shadow
and users are affected. But it is really the best way to define the path
to your aliases file. It will not be modified but it will be displayed, which
is very usefull.
If set to "yes" also the aliases and mailinglist
file will be modified.
MODIFY_ALL="yes"
With this option you can turn on or off
the logging capabilities:
ADMIN_LOG="yes"
The location of the logfile. In the logfile
you can see when a user was created, modified, deleted or a backup was
made:
ADMIN_LOGFILE="/var/log/admin.log"
The colour of a link:
L_COL="\"#0000ff\""
The colour of a visited link:
VL_COL="\"#0000ff\""
The background colour of all pages:
BG_COL="\"a0a0a0\""
The background of tables (is not supported
from all browsers):
TAB_COL="\"#ffffff\""
The colour of a table header:
HEAD_COL="\"#e0e0e0\""
The colour of a table title:
TITLE_COL="\"#bbc0c0\""
The title of all pages:
TITLE="User Administration at foo.com"
Title of main site (display.cgi):
TAB_MAIN="Current users"
Title of edit table:
TAB_EDIT="Edit a user"
Title of delete user table:
TAB_DEL="User deleted"
Title of newuser table:
TAB_NEW="Create a new user"
Title of change-passwd table
TAB_CHPW="Password changed"
Title of user created table:
TAB_CREAT="A new user was created"
The caption of the "Back"-link on every
page, points to display.cgi:
BACK_CAPTION="Back"
Captions of the links on the main view:
C_NEWUSER="Create user"
C_SHOWCONFIG="Show Config"
C_SHOWLIST="Show List Members"
C_SHOWFILES="Show files"
C_DOCU="Documentation"
And there are various functions defined
in config.sh, that are used by the scripts. You can edit some of the functions
for your needs:
-
HTML_START - displays "content-type: text/html\n\n",
the html-header and the back-link
-
HTML_END - displays the html-footer
and the back-link
-
TABLE_HEAD - displays the table header
-
TABLE_END - displays the table footer
-
CHECK_RIGHTS - checks if all affected
files are writable
-
BACKUP - checks if we have to make
a backup and calls MAKE_BACKUP
-
MAKE_LOG - if logging is turned on,
this function create the entrys in the log-file
-
ADMIN_LOCK - is called from modify.cgi
and deluser.cgi when editing of files is in progress, creates a lock-file
-
ADMIN_UNLOCK - deletes the lock-file
-
CREATE_HOME - creates the home-dir
for a new user
Usage
If you are ready with installation and
configuration, you can run the mainscript the first time:
http://servename/cgi-bin/admin/display.cgi
Now a table should apear, which displays
all currently on your system installed users. Only users will displayed
with a userid bigger then 499. If you don't like this, edit display.cgi
to correct it. In a later version this will be a configurable variable.
You can click on a users link to edit him.
In the edit view cou can edit the following parameters:
-
a users home-directory (Attention: in this
version only passwd is edited if you change this parameter. The directory
itself is NOT affected! You have to copy/move manually)
-
the loginshell
-
if the user should get mailinglist mails
-
the E-mail adress of the user, this is recommended!
Additionally here you can find two links to:
-
delete a user
-
change a users password
In the mainview there are the following links
available (don' forget, that the caption of the links are configurable):
-
Create New User - Creates a new user, include
a home-directory, an aliases entry (if turned on) and a mailinglist entry.
It provide you with a default password. If you don't like this default
password, you have to edit the script newuser.cgi to change it.
-
Show Listmembers - Shows the currently to the
mailinglist subscribed user and theyr E-mail adresses
-
Show config - show the contents of the file
config.ch
-
Show files - shows all affested files, each
one in an extra table (this could be a really large file! Use with care!)
This feature is implemented for debugging. You can see, what the scripts
has made with your files.
With the script create_login.cgi you can
create a htaccess login for yourself or a collegue. Simply run it from
your browser (no links points to this programm!) and follow the instructions
on your sreen.
Copyright
Copyright for Admin CGI: Thomas Linden,
tom@daemon.de
Copyright fo proccgi: Frank
Pilhofer .
All scripts are distributed under the
terms of the GNU General Public License (GPL). Feel free to modify or to
redistribute the package or parts of it, but the result of the modifications
must be distributed under GPL too.
If you modify something, pleas a drop
me a line: tom@daemon.de .
GNU GENERAL PUBLIC LICENSE
Version 2, June 1991
Copyright
(C) 1989, 1991 Free Software Foundation, Inc.
675 Mass Ave, Cambridge, MA 02139, USA
Everyone is permitted to copy and distribute verbatim copies
of this license document, but changing it is not allowed.
Preamble
The licenses for most software are designed to take away your
freedom
to share and change it. By contrast, the GNU General Public
License
is intended to guarantee your freedom to share and change free
software--to
make sure the software is free for all its users. This
General
Public License applies to most of the Free Software
Foundation's
software and to any other program whose authors commit to
using
it. (Some other Free Software Foundation software is covered by
the GNU
Library General Public License instead.) You can apply it to
your programs,
too.
When we speak of free software, we are referring to freedom, not
price.
Our General Public Licenses are designed to make sure that you
have the
freedom to distribute copies of free software (and charge for
this service
if you wish), that you receive source code or can get it
if you
want it, that you can change the software or use pieces of it
in new
free programs; and that you know you can do these things.
To protect your rights, we need to make restrictions that forbid
anyone
to deny you these rights or to ask you to surrender the rights.
These
restrictions translate to certain responsibilities for you if you
distribute
copies of the software, or if you modify it.
For example, if you distribute copies of such a program, whether
gratis
or for a fee, you must give the recipients all the rights that
you have.
You must make sure that they, too, receive or can get the
source
code. And you must show them these terms so they know their
rights.
We protect your rights with two steps: (1) copyright the software, and
(2) offer
you this license which gives you legal permission to copy,
distribute
and/or modify the software.
Also, for each author's protection and ours, we want to make certain
that everyone
understands that there is no warranty for this free
software.
If the software is modified by someone else and passed on, we
want its
recipients to know that what they have is not the original, so
that any
problems introduced by others will not reflect on the original
authors'
reputations.
Finally, any free program is threatened constantly by software
patents.
We wish to avoid the danger that redistributors of a free
program
will individually obtain patent licenses, in effect making the
program
proprietary. To prevent this, we have made it clear that any
patent
must be licensed for everyone's free use or not licensed at all.
The precise terms and conditions for copying, distribution and
modification
follow.
GNU GENERAL PUBLIC LICENSE
TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
0. This License applies to any program or other work which contains
a notice
placed by the copyright holder saying it may be distributed
under
the terms of this General Public License. The "Program", below,
refers
to any such program or work, and a "work based on the Program"
means
either the Program or any derivative work under copyright law:
that is
to say, a work containing the Program or a portion of it,
either
verbatim or with modifications and/or translated into another
language.
(Hereinafter, translation is included without limitation in
the term
"modification".) Each licensee is addressed as "you".
Activities
other than copying, distribution and modification are not
covered
by this License; they are outside its scope. The act of
running
the Program is not restricted, and the output from the Program
is covered
only if its contents constitute a work based on the
Program
(independent of having been made by running the Program).
Whether
that is true depends on what the Program does.
1. You may copy and distribute verbatim copies of the Program's
source
code as you receive it, in any medium, provided that you
conspicuously
and appropriately publish on each copy an appropriate
copyright
notice and disclaimer of warranty; keep intact all the
notices
that refer to this License and to the absence of any warranty;
and give
any other recipients of the Program a copy of this License
along
with the Program.
You may
charge a fee for the physical act of transferring a copy, and
you may
at your option offer warranty protection in exchange for a fee.
2. You may modify your copy or copies of the Program or any portion
of it,
thus forming a work based on the Program, and copy and
distribute
such modifications or work under the terms of Section 1
above,
provided that you also meet all of these conditions:
a) You must cause the modified files to carry prominent notices
stating that you changed the files and the date of any change.
b) You must cause any work that you distribute or publish, that in
whole or in part contains or is derived from the Program or any
part thereof, to be licensed as a whole at no charge to all third
parties under the terms of this License.
c) If the modified program normally reads commands interactively
when run, you must cause it, when started running for such
interactive use in the most ordinary way, to print or display an
announcement including an appropriate copyright notice and a
notice that there is no warranty (or else, saying that you provide
a warranty) and that users may redistribute the program under
these conditions, and telling the user how to view a copy of this
License. (Exception: if the Program itself is interactive but
does not normally print such an announcement, your work based on
the Program is not required to print an announcement.)
These requirements
apply to the modified work as a whole. If
identifiable
sections of that work are not derived from the Program,
and can
be reasonably considered independent and separate works in
themselves,
then this License, and its terms, do not apply to those
sections
when you distribute them as separate works. But when you
distribute
the same sections as part of a whole which is a work based
on the
Program, the distribution of the whole must be on the terms of
this License,
whose permissions for other licensees extend to the
entire
whole, and thus to each and every part regardless of who wrote it.
Thus, it
is not the intent of this section to claim rights or contest
your rights
to work written entirely by you; rather, the intent is to
exercise
the right to control the distribution of derivative or
collective
works based on the Program.
In addition,
mere aggregation of another work not based on the Program
with the
Program (or with a work based on the Program) on a volume of
a storage
or distribution medium does not bring the other work under
the scope
of this License.
3. You may copy and distribute the Program (or a work based on it,
under
Section 2) in object code or executable form under the terms of
Sections
1 and 2 above provided that you also do one of the following:
a) Accompany it with the complete corresponding machine-readable
source code, which must be distributed under the terms of Sections
1 and 2 above on a medium customarily used for software interchange; or,
b) Accompany it with a written offer, valid for at least three
years, to give any third party, for a charge no more than your
cost of physically performing source distribution, a complete
machine-readable copy of the corresponding source code, to be
distributed under the terms of Sections 1 and 2 above on a medium
customarily used for software interchange; or,
c) Accompany it with the information you received as to the offer
to distribute corresponding source code. (This alternative is
allowed only for noncommercial distribution and only if you
received the program in object code or executable form with such
an offer, in accord with Subsection b above.)
The source
code for a work means the preferred form of the work for
making
modifications to it. For an executable work, complete source
code means
all the source code for all modules it contains, plus any
associated
interface definition files, plus the scripts used to
control
compilation and installation of the executable. However, as a
special
exception, the source code distributed need not include
anything
that is normally distributed (in either source or binary
form)
with the major components (compiler, kernel, and so on) of the
operating
system on which the executable runs, unless that component
itself
accompanies the executable.
If distribution
of executable or object code is made by offering
access
to copy from a designated place, then offering equivalent
access
to copy the source code from the same place counts as
distribution
of the source code, even though third parties are not
compelled
to copy the source along with the object code.
4. You may not copy, modify, sublicense, or distribute the Program
except
as expressly provided under this License. Any attempt
otherwise
to copy, modify, sublicense or distribute the Program is
void,
and will automatically terminate your rights under this License.
However,
parties who have received copies, or rights, from you under
this License
will not have their licenses terminated so long as such
parties
remain in full compliance.
5. You are not required to accept this License, since you have not
signed
it. However, nothing else grants you permission to modify or
distribute
the Program or its derivative works. These actions are
prohibited
by law if you do not accept this License. Therefore, by
modifying
or distributing the Program (or any work based on the
Program),
you indicate your acceptance of this License to do so, and
all its
terms and conditions for copying, distributing or modifying
the Program
or works based on it.
6. Each time you redistribute the Program (or any work based on the
Program),
the recipient automatically receives a license from the
original
licensor to copy, distribute or modify the Program subject to
these
terms and conditions. You may not impose any further
restrictions
on the recipients' exercise of the rights granted herein.
You are
not responsible for enforcing compliance by third parties to
this License.
7. If, as a consequence of a court judgment or allegation of patent
infringement
or for any other reason (not limited to patent issues),
conditions
are imposed on you (whether by court order, agreement or
otherwise)
that contradict the conditions of this License, they do not
excuse
you from the conditions of this License. If you cannot
distribute
so as to satisfy simultaneously your obligations under this
License
and any other pertinent obligations, then as a consequence you
may not
distribute the Program at all. For example, if a patent
license
would not permit royalty-free redistribution of the Program by
all those
who receive copies directly or indirectly through you, then
the only
way you could satisfy both it and this License would be to
refrain
entirely from distribution of the Program.
If any
portion of this section is held invalid or unenforceable under
any particular
circumstance, the balance of the section is intended to
apply
and the section as a whole is intended to apply in other
circumstances.
It is not
the purpose of this section to induce you to infringe any
patents
or other property right claims or to contest validity of any
such claims;
this section has the sole purpose of protecting the
integrity
of the free software distribution system, which is
implemented
by public license practices. Many people have made
generous
contributions to the wide range of software distributed
through
that system in reliance on consistent application of that
system;
it is up to the author/donor to decide if he or she is willing
to distribute
software through any other system and a licensee cannot
impose
that choice.
This section
is intended to make thoroughly clear what is believed to
be a consequence
of the rest of this License.
8. If the distribution and/or use of the Program is restricted in
certain
countries either by patents or by copyrighted interfaces, the
original
copyright holder who places the Program under this License
may add
an explicit geographical distribution limitation excluding
those
countries, so that distribution is permitted only in or among
countries
not thus excluded. In such case, this License incorporates
the limitation
as if written in the body of this License.
9. The Free Software Foundation may publish revised and/or new versions
of the
General Public License from time to time. Such new versions will
be similar
in spirit to the present version, but may differ in detail to
address
new problems or concerns.
Each version
is given a distinguishing version number. If the Program
specifies
a version number of this License which applies to it and "any
later
version", you have the option of following the terms and conditions
either
of that version or of any later version published by the Free
Software
Foundation. If the Program does not specify a version number of
this License,
you may choose any version ever published by the Free Software
Foundation.
10. If you wish to incorporate parts of the Program into other free
programs
whose distribution conditions are different, write to the author
to ask
for permission. For software which is copyrighted by the Free
Software
Foundation, write to the Free Software Foundation; we sometimes
make exceptions
for this. Our decision will be guided by the two goals
of preserving
the free status of all derivatives of our free software and
of promoting
the sharing and reuse of software generally.
NO WARRANTY
11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY
FOR THE
PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN
OTHERWISE
STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES
PROVIDE
THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED
OR IMPLIED,
INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
MERCHANTABILITY
AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS
TO THE
QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE
PROGRAM
PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING,
REPAIR
OR CORRECTION.
12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING
WILL ANY
COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR
REDISTRIBUTE
THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES,
INCLUDING
ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING
OUT OF
THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED
TO LOSS
OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY
YOU OR
THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER
PROGRAMS),
EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE
POSSIBILITY
OF SUCH DAMAGES.
END OF TERMS AND CONDITIONS
Appendix: How to Apply These Terms to Your New Programs
If you develop a new program, and you want it to be of the greatest
possible
use to the public, the best way to achieve this is to make it
free software
which everyone can redistribute and change under these terms.
To do so, attach the following notices to the program. It is safest
to attach
them to the start of each source file to most effectively
convey
the exclusion of warranty; and each file should have at least
the "copyright"
line and a pointer to where the full notice is found.
<one line to give the program's name and a brief idea of what it does.>
Copyright (C) 19yy <name of author>
This program is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation; either version 2 of the License, or
(at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program; if not, write to the Free Software
Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
Also add
information on how to contact you by electronic and paper mail.
If the
program is interactive, make it output a short notice like this
when it
starts in an interactive mode:
Gnomovision version 69, Copyright (C) 19yy name of author
Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'.
This is free software, and you are welcome to redistribute it
under certain conditions; type `show c' for details.
The hypothetical
commands `show w' and `show c' should show the appropriate
parts
of the General Public License. Of course, the commands you use may
be called
something other than `show w' and `show c'; they could even be
mouse-clicks
or menu items--whatever suits your program.
You should
also get your employer (if you work as a programmer) or your
school,
if any, to sign a "copyright disclaimer" for the program, if
necessary.
Here is a sample; alter the names:
Yoyodyne, Inc., hereby disclaims all copyright interest in the program
`Gnomovision' (which makes passes at compilers) written by James Hacker.
<signature of Ty Coon>, 1 April 1989
Ty Coon, President of Vice
This General
Public License does not permit incorporating your program into
proprietary
programs. If your program is a subroutine library, you may
consider
it more useful to permit linking proprietary applications with the
library.
If this is what you want to do, use the GNU Library General
Public
License instead of this License. |