1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
|
NAME
FS::svc_acct - Object methods for svc_acct records
SYNOPSIS
use FS::svc_acct;
$record = create FS::svc_acct \%hash;
$record = create 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;
DESCRIPTION
An FS::svc_acct object represents an account. FS::svc_acct
inherits from FS::Record. 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
create HASHREF
Creates a new account. To add the account to the database,
see the section on "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
useradd -d $dir -m -s $shell -u $uid $username
is executed on shellmachine via ssh. This behaviour can be
surpressed by setting $FS::svc_acct::nossh_hack true.
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:
userdel $username
is executed on shellmachine via ssh. This behaviour can be
surpressed by setting $FS::svc_acct::nossh_hack true.
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:
[ -d $old_dir ] && (
chmod u+t $old_dir;
umask 022;
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.
BUGS
It doesn't properly override FS::Record yet.
The remote commands should be configurable.
The create method should set defaults from part_svc (like the
check method sets fixed values).
SEE ALSO
the FS::Record manpage, the FS::Conf manpage, the FS::cust_svc
manpage, the FS::part_svc manpage, the FS::cust_pkg manpage, the
FS::SSH manpage, the ssh manpage, the FS::svc_acct_pop manpage,
schema.html from the base documentation.
HISTORY
ivan@voicenet.com 97-jul-16 - 21
rewrite (among other things, now know about part_svc)
ivan@sisd.com 98-mar-8
Changed 'password' to '_password' because Pg6.3 reserves the
password word bmccane@maxbaud.net 98-apr-3
username length and shell no longer hardcoded ivan@sisd.com 98-
jun-28
eww but needed: ignore uid duplicates for 'fax' and 'hylafax'
ivan@sisd.com 98-jun-29
$nossh_hack ivan@sisd.com 98-jul-13
protections against UID/GID of 0 for incorrectly-setup RDBMSs
(also in bin/svc_acct.export) ivan@sisd.com 98-jul-13
arbitrary radius attributes ivan@sisd.com 98-aug-13
/var/spool/freeside/conf/shellmachine ivan@sisd.com 98-aug-13
pod and FS::conf ivan@sisd.com 98-sep-22
|