NAME

FS::svc_acct - Object methods for svc_acct records


SYNOPSIS

  use FS::svc_acct;
  $record = new FS::svc_acct \%hash;
  $record = new FS::svc_acct { 'column' => 'value' };
  $error = $record->insert;
  $error = $new_record->replace($old_record);
  $error = $record->delete;
  $error = $record->check;
  $error = $record->suspend;
  $error = $record->unsuspend;
  $error = $record->cancel;
  %hash = $record->radius;


DESCRIPTION

An FS::svc_acct object represents an account. FS::svc_acct inherits from FS::svc_Common. The following fields are currently supported:

svcnum - primary key (assigned automatcially for new accounts)
username
_password - generated if blank
popnum - Point of presence (see the FS::svc_acct_pop manpage)
uid
gid
finger - GECOS
dir - set automatically if blank (and uid is not)
shell
quota - (unimplementd)
slipip - IP address
radius_Radius_Attribute - Radius-Attribute


METHODS

new HASHREF
Creates a new account. To add the account to the database, see insert.

insert
Adds this account to the database. If there is an error, returns the error, otherwise returns false.

The additional fields pkgnum and svcpart (see the FS::cust_svc manpage) should be defined. An FS::cust_svc record will be created and inserted.

If the configuration value (see the FS::Conf manpage) shellmachine exists, and the username, uid, and dir fields are defined, the command(s) specified in the shellmachine-useradd configuration are exectued on shellmachine via ssh. This behaviour can be surpressed by setting $FS::svc_acct::nossh_hack true. If the shellmachine-useradd configuration file does not exist,

  useradd -d $dir -m -s $shell -u $uid $username

is the default. If the shellmachine-useradd configuration file exists but it empty,

  cp -pr /etc/skel $dir; chown -R $uid.$gid $dir

is the default instead. Otherwise the contents of the file are treated as a double-quoted perl string, with the following variables available: $username, $uid, $gid, $dir, and $shell.

delete
Deletes this account from the database. If there is an error, returns the error, otherwise returns false.

The corresponding FS::cust_svc record will be deleted as well.

If the configuration value (see the FS::Conf manpage) shellmachine exists, the command(s) specified in the shellmachine-userdel configuration file are executed on shellmachine via ssh. This behavior can be surpressed by setting $FS::svc_acct::nossh_hack true. If the shellmachine-userdel configuration file does not exist,

  userdel $username

is the default. If the shellmachine-userdel configuration file exists but is empty,

  rm -rf $dir

is the default instead. Otherwise the contents of the file are treated as a double-quoted perl string, with the following variables available: $username and $dir.

replace OLD_RECORD
Replaces OLD_RECORD with this one in the database. If there is an error, returns the error, otherwise returns false.

If the configuration value (see the FS::Conf manpage) shellmachine exists, and the dir field has changed, the command(s) specified in the shellmachine-usermod configuraiton file are executed on shellmachine via ssh. This behavior can be surpressed by setting $FS::svc-acct::nossh_hack true. If the shellmachine-userdel configuration file does not exist or is empty, :

  [ -d $old_dir ] && mv $old_dir $new_dir || (
    chmod u+t $old_dir;
    mkdir $new_dir;
    cd $old_dir;
    find . -depth -print | cpio -pdm $new_dir;
    chmod u-t $new_dir;
    chown -R $uid.$gid $new_dir;
    rm -rf $old_dir
  )

is executed on shellmachine via ssh. This behaviour can be surpressed by setting $FS::svc_acct::nossh_hack true.

suspend
Suspends this account by prefixing *SUSPENDED* to the password. If there is an error, returns the error, otherwise returns false.

Called by the suspend method of FS::cust_pkg (see the FS::cust_pkg manpage).

unsuspend
Unsuspends this account by removing *SUSPENDED* from the password. If there is an error, returns the error, otherwise returns false.

Called by the unsuspend method of FS::cust_pkg (see the FS::cust_pkg manpage).

cancel
Just returns false (no error) for now.

Called by the cancel method of FS::cust_pkg (see the FS::cust_pkg manpage).

check
Checks all fields to make sure this is a valid service. If there is an error, returns the error, otherwise returns false. Called by the insert and replace methods.

Sets any fixed values; see the FS::part_svc manpage.

radius
Depriciated, use radius_reply instead.

radius_reply
Returns key/value pairs, suitable for assigning to a hash, for any RADIUS reply attributes of this record.

Note that this is now the preferred method for reading RADIUS attributes - accessing the columns directly is discouraged, as the column names are expected to change in the future.

radius_check
Returns key/value pairs, suitable for assigning to a hash, for any RADIUS check attributes of this record.

Accessing RADIUS attributes directly is not supported and will break in the future.


VERSION

$Id: svc_acct.html,v 1.3 2001-04-23 12:40:31 ivan Exp $


BUGS

The bits which ssh should fork before doing so (or maybe queue jobs for a daemon).

The $recref stuff in sub check should be cleaned up.

The suspend, unsuspend and cancel methods update the database, but not the current object. This is probably a bug as it's unexpected and counterintuitive.


SEE ALSO

the FS::svc_Common manpage, the FS::Record manpage, the FS::Conf manpage, the FS::cust_svc manpage, the FS::part_svc manpage, the FS::cust_pkg manpage, the Net::SSH manpage, ssh, the FS::svc_acct_pop manpage, schema.html from the base documentation.