Freeside:1.7:Documentation:Developer/FS/svc acct

From Freeside
Jump to: navigation, search

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;

 %hash = $record->radius_reply;

 %hash = $record->radius_check;

 $domain = $record->domain;

 $svc_domain = $record->svc_domain;

 $email = $record->email;

 $seconds_since = $record->seconds_since($timestamp);

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; sec_phrase - security phrase; popnum - Point of presence (see FS::svc_acct_pop); uid; gid; finger - GECOS; dir - set automatically if blank (and uid is not); shell; quota - (unimplementd); slipip - IP address; seconds -; upbytes -; downbytes -; totalbytes -; domsvc - svcnum from svc_domain; radius_Radius_Attribute - Radius-Attribute (reply); rc_Radius_Attribute - Radius-Attribute (check)

METHODS

new HASHREF
Creates a new account. To add the account to the database, see "insert".
search_sql STRING
Class method which returns an SQL fragment to search for the given string.
label [ END_TIMESTAMP [ START_TIMESTAMP ] ]
Returns the "username@domain" string for this account.
END_TIMESTAMP and START_TIMESTAMP can optionally be passed when dealing with history records.
label_long [ END_TIMESTAMP [ START_TIMESTAMP ] ]
Returns a longer string label for this acccount ("Real Name <username@domain>" if available, or "username@domain").
END_TIMESTAMP and START_TIMESTAMP can optionally be passed when dealing with history records.
insert [ , OPTION => VALUE ... ]
Adds this account to the database. If there is an error, returns the error, otherwise returns false.
The additional fields pkgnum and svcpart (see FS::cust_svc) should be defined. An FS::cust_svc record will be created and inserted.
The additional field usergroup can optionally be defined; if so it should contain an arrayref of group names. See FS::radius_usergroup.
The additional field child_objects can optionally be defined; if so it should contain an arrayref of FS::tablename objects. They will have their svcnum fields set and will be inserted after this record, but before any exports are run. Each element of the array can also optionally be a two-element array reference containing the child object and the name of an alternate field to be filled in with the newly-inserted svcnum, for example [ $svc_forward, 'srcsvc' ]
Currently available options are: depend_jobnum
If depend_jobnum is set (to a scalar jobnum or an array reference of jobnums), all provisioning jobs will have a dependancy on the supplied jobnum(s) (they will not run until the specific job(s) complete(s)).
(TODOC: FS::queue and freeside-queued)
(TODOC: new exports!)
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.
(TODOC: new exports!)
replace OLD_RECORD
Replaces OLD_RECORD with this one in the database. If there is an error, returns the error, otherwise returns false.
The additional field usergroup can optionally be defined; if so it should contain an arrayref of group names. See FS::radius_usergroup.
queue_fuzzyfiles_update
Used by insert & replace to update the fuzzy search cache
suspend
Suspends this account by calling export-specific suspend hooks. If there is an error, returns the error, otherwise returns false.
Called by the suspend method of FS::cust_pkg (see FS::cust_pkg).
unsuspend
Unsuspends this account by by calling export-specific suspend hooks. If there is an error, returns the error, otherwise returns false.
Called by the unsuspend method of FS::cust_pkg (see FS::cust_pkg).
cancel
Called by the cancel method of FS::cust_pkg (see FS::cust_pkg).
If the auto_unset_catchall configuration option is set, this method will automatically remove any references to the canceled service in the catchall field of svc_domain. This allows packages that contain both a svc_domain and its catchall svc_acct to be canceled in one step.
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 FS::part_svc.
_check_system
Internal function to check the username against the list of system usernames from the system_usernames configuration value. Returns true if the username is listed on the system username list.
_check_duplicate
Internal function to check for duplicates usernames, username@domain pairs and uids.
If the global_unique-username configuration value is set to username or username@domain, enforces global username or username@domain uniqueness.
In all cases, check for duplicate uids and usernames or username@domain pairs per export and with identical svcpart values.
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.
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.
snapshot
This method instructs the object to "snapshot" or freeze RADIUS check and reply attributes to the current values.
forget_snapshot
This methos instructs the object to forget any previously snapshotted RADIUS check and reply attributes.
domain [ END_TIMESTAMP [ START_TIMESTAMP ] ]
Returns the domain associated with this account.
END_TIMESTAMP and START_TIMESTAMP can optionally be passed when dealing with history records.
svc_domain
Returns the FS::svc_domain record for this account's domain (see FS::svc_domain).
cust_svc
Returns the FS::cust_svc record for this account (see FS::cust_svc).
email [ END_TIMESTAMP [ START_TIMESTAMP ] ]
Returns an email address associated with the account.
END_TIMESTAMP and START_TIMESTAMP can optionally be passed when dealing with history records.
acct_snarf
Returns an array of FS::acct_snarf records associated with the account. If the acct_snarf table does not exist or there are no associated records, an empty list is returned
decrement_upbytes OCTETS
Decrements the upbytes field of this record by the given amount. If there is an error, returns the error, otherwise returns false.
increment_upbytes OCTETS
Increments the upbytes field of this record by the given amount. If there is an error, returns the error, otherwise returns false.
decrement_downbytes OCTETS
Decrements the downbytes field of this record by the given amount. If there is an error, returns the error, otherwise returns false.
increment_downbytes OCTETS
Increments the downbytes field of this record by the given amount. If there is an error, returns the error, otherwise returns false.
decrement_totalbytes OCTETS
Decrements the totalbytes field of this record by the given amount. If there is an error, returns the error, otherwise returns false.
increment_totalbytes OCTETS
Increments the totalbytes field of this record by the given amount. If there is an error, returns the error, otherwise returns false.
decrement_seconds SECONDS
Decrements the seconds field of this record by the given amount. If there is an error, returns the error, otherwise returns false.
increment_seconds SECONDS
Increments the seconds field of this record by the given amount. If there is an error, returns the error, otherwise returns false.
recharge HASHREF
 Increments usage columns by the amount specified in HASHREF as
 column=>amount pairs.

is_rechargeable
Returns true if this svc_account can be "recharged" and false otherwise.
seconds_since TIMESTAMP
Returns the number of seconds this account has been online since TIMESTAMP, according to the session monitor (see FS::Session).
TIMESTAMP is specified as a UNIX timestamp; see "time" in perlfunc. Also see Time::Local and Date::Parse for conversion functions.
seconds_since_sqlradacct TIMESTAMP_START TIMESTAMP_END
Returns the numbers of seconds this account has been online between TIMESTAMP_START (inclusive) and TIMESTAMP_END (exclusive), according to an external SQL radacct table, specified via sqlradius export. Sessions which started in the specified range but are still open are counted from session start to the end of the range (unless they are over 1 day old, in which case they are presumed missing their stop record and not counted). Also, sessions which end in the range but started earlier are counted from the start of the range to session end. Finally, sessions which start before the range but end after are counted for the entire range.
TIMESTAMP_START and TIMESTAMP_END are specified as UNIX timestamps; see "time" in perlfunc. Also see Time::Local and Date::Parse for conversion functions.
attribute_since_sqlradacct TIMESTAMP_START TIMESTAMP_END ATTRIBUTE
Returns the sum of the given attribute for all accounts (see FS::svc_acct) in this package for sessions ending between TIMESTAMP_START (inclusive) and TIMESTAMP_END (exclusive).
TIMESTAMP_START and TIMESTAMP_END are specified as UNIX timestamps; see "time" in perlfunc. Also see Time::Local and Date::Parse for conversion functions.
get_session_history TIMESTAMP_START TIMESTAMP_END
Returns an array of hash references of this customers login history for the given time range. (document this better)
last_login_text
Returns text describing the time of last login.
get_cdrs TIMESTAMP_START TIMESTAMP_END [ 'OPTION' => 'VALUE ... ]; radius_groups
Returns all RADIUS groups for this account (see FS::radius_usergroup).
clone_suspended
Constructor used by FS::part_export::_export_suspend fallback. Document better.
clone_kludge_unsuspend
Constructor used by FS::part_export::_export_unsuspend fallback. Document better.
check_password
Checks the supplied password against the (possibly encrypted) password in the database. Returns true for a successful authentication, false for no match.
Currently supported encryptions are: classic DES crypt() and MD5
crypt_password [ DEFAULT_ENCRYPTION_TYPE ]
Returns an encrypted password, either by passing through an encrypted password in the database or by encrypting a plaintext password from the database.
The optional DEFAULT_ENCRYPTION_TYPE parameter can be set to crypt (classic UNIX DES crypt), md5 (md5 crypt supported by most modern Linux and BSD distrubtions), or (eventually) blowfish (blowfish hashing supported by OpenBSD, SuSE, other Linux distibutions with pam_unix2, etc.). The default encryption type is only used if the password is not already encrypted in the database.
ldap_password [ DEFAULT_ENCRYPTION_TYPE ]
Returns an encrypted password in "LDAP" format, with a curly-bracked prefix describing the format, for example, "{CRYPT}94pAVyK/4oIBk" or "{PLAIN-MD5}5426824942db4253f87a1009fd5d2d4f".
The optional DEFAULT_ENCRYPTION_TYPE is not yet used, but the idea is for it to work the same as the /crypt_password method.
domain_slash_username
Returns $domain/$username/
virtual_maildir
Returns $domain/maildirs/$username/

SUBROUTINES

send_email
This is the FS::svc_acct job-queue-able version. It still uses FS::Misc::send_email under-the-hood.
check_and_rebuild_fuzzyfiles; rebuild_fuzzyfiles; all_username; append_fuzzyfiles USERNAME; radius_usergroup_selector GROUPS_ARRAYREF [ SELECTNAME ]; reached_threshold
Performs some activities when svc_acct thresholds (such as number of seconds remaining) are reached.

BUGS

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.

radius_usergroup_selector? putting web ui components in here? they should probably live somewhere else...

insertion of RADIUS group stuff in insert could be done with child_objects now (would probably clean up export of them too)

SEE ALSO

FS::svc_Common, edit/part_svc.cgi from an installed web interface, export.html from the base documentation, FS::Record, FS::Conf, FS::cust_svc, FS::part_svc, FS::cust_pkg, FS::queue, freeside-queued), FS::svc_acct_pop, schema.html from the base documentation.

domain_select_hash %OPTIONS
Returns a hash SVCNUM => DOMAIN ... representing the domains this customer may at present purchase.
Currently available options are: pkgnum svcpart

POD ERRORS

Hey! The above document had some coding errors, which are explained below:

Around line 2522:
'=item' outside of any '=over'