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
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
|
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;
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 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.
VERSION
$Id: svc_acct.txt,v 1.4 1999-04-08 13:39:32 ivan Exp $
BUGS
The remote commands should be configurable.
The bits which ssh should fork before doing so.
The $recref stuff in sub check should be cleaned up.
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 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
$Log: svc_acct.txt,v $
Revision 1.4 1999-04-08 13:39:32 ivan
convert from pod for 1.2.0 release
Revision 1.7 1999/04/07 14:37:37 ivan use
FS::part_svc and FS::svc_acct_pop to avoid warnings
Revision 1.6 1999/01/25 12:26:15 ivan yet more mod_perl stuff
Revision 1.5 1999/01/18 21:58:09 ivan esthetic: eq and ne were
used in a few places instead of == and !=
Revision 1.4 1998/12/30 00:30:45 ivan svc_ stuff is more
properly OO - has a common superclass FS::svc_Common
Revision 1.2 1998/11/13 09:56:55 ivan change configuration file
layout to support multiple distinct databases (with own set of
config files, export, etc.)
|