1 package FS::SignupClient;
4 use vars qw($VERSION @ISA @EXPORT_OK $fs_signupd_socket);
9 use Storable qw(nstore_fd fd_retrieve);
13 @ISA = qw( Exporter );
14 @EXPORT_OK = qw( signup_info new_customer );
16 $fs_signupd_socket = "/usr/local/freeside/fs_signupd_socket";
18 $ENV{'PATH'} ='/usr/bin:/usr/ucb:/bin';
19 $ENV{'SHELL'} = '/bin/sh';
20 $ENV{'IFS'} = " \t\n";
23 $ENV{'BASH_ENV'} = '';
25 my $freeside_uid = scalar(getpwnam('freeside'));
26 die "not running as the freeside user\n" if $> != $freeside_uid;
30 FS::SignupClient - Freeside signup client API
34 use FS::SignupClient qw( signup_info new_customer );
36 ( $locales, $packages, $pops ) = signup_info;
38 $error = new_customer ( {
42 'comapny' => $company,
43 'address1' => $address1,
44 'address2' => $address2,
49 'country' => $country,
50 'daytime' => $daytime,
54 'payinfo' => $payinfo,
55 'paydate' => $paydate,
56 'payname' => $payname,
57 'invoicing_list' => $invoicing_list,
58 'referral_custnum' => $referral_custnum,
59 'comments' => $comments,
60 'pkgpart' => $pkgpart,
61 'username' => $username,
62 '_password' => $password,
63 'sec_phrase' => $sec_phrase,
65 'agentnum' => $agentnum, #optional
70 This module provides an API for a remote signup server.
72 It needs to be run as the freeside user. Because of this, the program which
73 calls these subroutines should be written very carefully.
81 Returns three array references of hash references.
83 The first set of hash references is of allowable locales. Each hash reference
84 has the following keys:
90 The second set of hash references is of allowable packages. Each hash
91 reference has the following keys:
95 The third set of hash references is of allowable POPs (Points Of Presence).
96 Each hash reference has the following keys:
103 (Future expansion: fourth argument is the $init_data hash reference)
108 socket(SOCK, PF_UNIX, SOCK_STREAM, 0) or die "socket: $!";
109 connect(SOCK, sockaddr_un($fs_signupd_socket)) or die "connect: $!";
110 print SOCK "signup_info\n";
113 my $init_data = fd_retrieve(\*SOCK);
116 (map { $init_data->{$_} } qw( cust_main_county part_pkg svc_acct_pop ) ),
121 =item new_customer HASHREF
123 Adds a customer to the remote Freeside system. Requires a hash reference as
124 a paramater with the following keys:
152 Returns a scalar error message, or the empty string for success.
159 socket(SOCK, PF_UNIX, SOCK_STREAM, 0) or die "socket: $!";
160 connect(SOCK, sockaddr_un($fs_signupd_socket)) or die "connect: $!";
161 print SOCK "new_customer\n";
163 my $signup_data = { map { $_ => $hashref->{$_} } qw(
164 first last ss company address1 address2 city county state zip country
165 daytime night fax payby payinfo paydate payname invoicing_list
166 referral_custnum comments pkgpart username _password sec_phrase popnum
169 $signup_data->{agentnum} = $hashref->{agentnum} if $hashref->{agentnum};
171 nstore_fd($signup_data, \*SOCK) or die "can't send customer signup: $!";
174 chop( my $error = <SOCK> );
184 L<fs_signupd>, L<FS::cust_main>