[1527] in linux-announce channel archive

home help back first fref pref prev next nref lref last post

BBS-Util 1.0 Released

daemon@ATHENA.MIT.EDU (Lars Wirzenius)
Sat Jan 13 17:45:12 1996

Date: 	Sun, 7 Jan 1996 21:17:31 +0200
From: Lars Wirzenius <wirzeniu@cc.helsinki.fi>
To: linux-announce@vger.rutgers.edu

From: amm130@alf.usask.ca (Adam McKee)
Subject: BBS-Util 1.0 Released
Organization: University of Saskatchewan
Newsgroups: comp.os.linux.announce
Approved: linux-announce@news.ornl.gov (Lars Wirzenius)
Followup-to: comp.os.linux.development.apps

-----BEGIN PGP SIGNED MESSAGE-----

As of sometime today, you should be able to get the latest-and-greatest
version of BBS-Util in sunsite's Incoming directory.  This version of the
package implements a few suggestions made by users of 0.9, and includes a
few minor internal cleanups.  The code is pretty simple, but it is possible
I broke something when I was "cleaning it up".  If I did break something,
let me know and it'll be fixed right away.

I'll save myself some typing, and just include the README:


			  BBS-Util v1.0 for Linux
		 	       by Adam McKee

BBS-Util is a package designed to solve the basic problems associated with
administrating a BBS on a Linux system.  The functionality provided by the
package is as follows:

	- account management
	- enforcing time limits
	- subscriptions (temporarily increased time limit)
	- providing account status information to root and users

BBS-Util will _seldom_ offer a complete solution.  It is designed only to meet
your _administrative_ needs.  You'll probably want to look into using lynx or
something else as an interface for users who are not comfortable with the
shell.

Here is a quick summary of each utility:

- --- Programs Used by Users ----------------------------------------------------

timeleft:
	Tells users how much time they have left before they will be
	booted from the system (i.e. all their processes killed with
	extreme prejudice ;-).

daysleft:
	Tells users how many days they have left before their account
	expires.  Upon expiration, an account may be either deleted or
	unsubscribed.  (see user_renew, user_subscribe, user_unsubscribe)

- --- Programs Used by Administrator --------------------------------------------

user_add <login>:
	This is just a shell script that calls system-native programs to
	set up an account, then calls user_addrec to create a record in the
	BBS user database.

user_addrec <login> <days> <mins>:
	Creates a record in the BBS user database.  <days> specifies the
	# of days the account should be allowed to exist (0 -> forever),
	and <mins> is the # of mins/day the user should get.  You shouldn't
	run this directly unless you know what you are doing.

user_del <login>:
	A shell script that calls a system-native program to delete a user
	account, then calls user_delrec to remove the corresponding record
	in the BBS user database.

user_delrec <login>:
	Deletes a record from the BBS user database.  This is normally
	run from user_del, and you shouldn't run it directly unless you
	know what you're doing.

user_data <login>:
	Shows BBS user record in a readable format.

user_kick <login>:
	Give a user the boot (i.e. kill all of their processes).

user_purge <days>:
	Remove accounts which have not been used in a certain # of days.
	The <days> argument must be > 14, or the program will terminate
	with an error message.

user_renew:
	At midnight (or some other time), it is necessary to renew each users's
	time.  This is done by simply calling user_renew from root's crontab:

0 0 * * *	/usr/local/bin/user_renew

	user_renew also takes care of expired accounts and subscriptions.

user_subscribe <login> <days> <minutes>:
	Give a user <login> <mins> minutes / day for the next <days> days.
	For example, you could specify that you want user "smith" to be given
	90 minutes / day for the next month, and his present time limit would
	be restored automatically at the end of the month.  user_subscribe
	records certain fields in the user's BBS record, so that they can be
	restored later by user_unsubscribe.  (see user_unsubscribe)

user_sync:
	Used to synchronize the BBS user file with the password file.  Any
	records with a uid field that is NOT associated with a login name in
	/etc/passwd are deleted.  Also, duplicated accounts (which, of course,
	shouldn't exist in the first place) are taken care of.  user_sync
	should be run periodically just for the fun of it.

user_time <login> <days> <minutes>:
	Directly change the expiry date and daily time limit of a user.  A
	<days> argument of 0 means that there will be *no* expiry date for
	the user.

user_touch:
	Modify a user's "last online" field to equal the current date.  This
	is useful if you want to exempt certain users from the effects of
	user_purge.  (see user_purge)

user_unsubscribe <login>:
	Terminate a users's subscription.  This is normally called from
	user_expire, but can be run directly.  Terminating a subscription is
	simply a matter of restoring a user's daily time limit and expiry
	date to their values before the subscription was given.

user_updated:
	user_updated is a daemon that comes alive every 60 seconds and
	does the following routine:

	For any users currently logged in:
	  - update their "time left" field (i.e. subtract 1 from it)
	  - update their "last time online" field, so that user_purge can
	    use this information.
          - if they have used up all of their time, give 'em the *boot*.	
	If "guest" is not logged in, refresh his time limit.  The number of
	minutes to give the guest user is defined in user_updated.c

	You'll probably want to have user_updated started automatically from
	one of your system's init scripts.

- --- Installation Instructions -------------------------------------------------

To install BBS-Util:

	- run "make install"
	- edit "user_add", and "user_del" as required
	- make addition to root's crontab as outlined above

You should also implement a check in /etc/profile and /etc/csh.login (and
whatever other shell startup files...) to ensure that only users who actually
have some time left are allowed to get an interactive session.  It is also
a good idea to make sure that only 1 guest user can be logged in at once.
Here are examples for /etc/profile and /etc/csh.login:

- --- /etc/profile: ----------------------------------------

TLEFT=`timeleft | cut -d " " -f 1`
if [ "$TLEFT" = "0" ]; then
  echo
  echo No time left... 
  sleep 2
  logout
fi

if [ "$LOGNAME" = "guest" -a "$TLEFT" != "10" ]; then
  /bin/echo
  /bin/echo There is already one guest user using the system. 
  /bin/echo
  /bin/echo Call back in $TLEFT minute\(s\).
  sleep 2
  logout
fi

- --- /etc/csh.login: --------------------------------------

set TLEFT = `timeleft | cut -d " " -f 1`
if ( "$TLEFT" == "0" ) then
  echo -n \\n
  echo No time left...
  sleep 2
  logout
endif

if ( "$LOGNAME" == "guest" && "$TLEFT" != "10" ) then
  /bin/echo
  /bin/echo There is already one guest user using the system. 
  /bin/echo
  /bin/echo Call back in $TLEFT minute\(s\).
  sleep 2
  logout
endif

- -------------------------------------------------------------------------------

Bug reports, and ideas for improving BBS-Util will both be appreciated.
Also, feel free to let me know if BBS-Util is working great and serving
you well :-)

	- Adam McKee		<Adam.McKee@usask.ca>


-----BEGIN PGP SIGNATURE-----
Version: 2.6.2i

iQCVAwUBMPAaYIQRll5MupLRAQGd+AQAz+E+Pdh4CsaMvCm4uGkx6A8LOAQHRK2k
eEnzpS2Ngg08p+WdgGy3NeMHDc+WBHP3Fvbo+sYclLq6NOXDJ06/d+xSsPs5YzoL
vafEKzJTjG82E2n698d7QIDzC6Z7BcSJ1zTdEE/Xxm4M0PJfCRllmKd3mjsN7cAP
B1E8WmjTuVI=
=kMbF
-----END PGP SIGNATURE-----

-- 
This article has been digitally signed by the moderator, using PGP.
Finger wirzeniu@kruuna.helsinki.fi for PGP key needed for validating signature.
Send submissions for comp.os.linux.announce to: linux-announce@news.ornl.gov
PLEASE remember a short description of the software and the LOCATION.



home help back first fref pref prev next nref lref last post