A number of people have asked recently about prepaid card systems.

I have attached an example config file, showing how to implement a simple
prepaid card system using an SQL database.

This example will appear in goodies/prepaid.cfg in the next release.



# prepaid.cfg
#
# Example Radiator configuration file.
# This very simple file will allow you to get started with
# a simple prepaid system. You can then add and change features.
# We suggest you start simple, prove to yourself that it
# works and then develop a more complicated configuration.
#
# This example assumes you have an SQL database of prepaid cards.
# Each card has an row in the SUBSCRIBERS table something like this:
# create table SUBSCRIBERS (
#       USERNAME        char(50) NOT NULL,
#       PASSWORD        char(50),       # Cleartext password
#       TIMELEFT        int             # Seconds left
#);
#
# The database keeps track of the cards you have issued and the amount
# of prepaid time left on each card. Each time they log in, they get
# a Session-Timeout of the amount of time left (so they cant log on
# for more than the prepaid time). When they log out, the time
# left is reduced by the amount of time just used.
#
# You would populate this table with one row per prepaid card that you
# issue. The USERNAME would be the card number and the PASSWORD
# would be preset to the secret access code for the card
# You would initialise TIMELEFT to be the number of seconds
# of prepaid time on that card.
#
# If the customer 'tops-up' the card, your card managment application
# would increase the value of TIMELEFT.
#
# See radius.cfg for more complete examples of features and
# syntax, and refer to the reference manual for a complete description
# of all the features and syntax.
#
# You should consider this file to be a starting point only
# $Id: simple.cfg,v 1.4 2001/04/25 23:47:13 mikem Exp $

Foreground
LogStdout
LogDir          .
DbDir           .
# User a lower trace level in production systems:
Trace           4

# You will probably want to add other Clients to suit your site,
# one for each NAS you want to work with
<Client DEFAULT>
        Secret  mysecret
        DupInterval 0
</Client>

<Realm DEFAULT>

    <AuthBy SQL>
        # Adjust DBSource, DBUsername, DBAuth to suit your DB
        DBSource        dbi:mysql:radius
        DBUsername      mikem
        DBAuth          fred

        # Only one session per user at a time
        DefaultSimultaneousUse 1

        # Let the user in if they have any time left, set
        # the Session-timeout to the time left
        AuthSelect select PASSWORD, TIMELEFT from SUBSCRIBERS where USERNAME=%0
and TIMELEFT > 0
        AuthColumnDef   0,User-Password,check
        AuthColumnDef   1,Session-Timeout,reply

        # Adjust the time left when they log out
        AccountingStopsOnly
        AcctSQLStatement update SUBSCRIBERS set
TIMELEFT=TIMELEFT-0%{Acct-Session-Time} where USERNAME='%n'

    </AuthBy>
</Realm>


-- 
Mike McCauley                               [EMAIL PROTECTED]
Open System Consultants Pty. Ltd            Unix, Perl, Motif, C++, WWW
24 Bateman St Hampton, VIC 3188 Australia   http://www.open.com.au
Phone +61 3 9598-0985                       Fax   +61 3 9598-0955

Radiator: the most portable, flexible and configurable RADIUS server 
anywhere. SQL, proxy, DBM, files, LDAP, NIS+, password, NT, Emerald, 
Platypus, Freeside, TACACS+, PAM, external, Active Directory etc etc 
on Unix, Win95/8, 2000, NT, MacOS 9, MacOS X
===
Archive at http://www.open.com.au/archives/radiator/
Announcements on [EMAIL PROTECTED]
To unsubscribe, email '[EMAIL PROTECTED]' with
'unsubscribe radiator' in the body of the message.

Reply via email to