summaryrefslogtreecommitdiff
path: root/fs_selfservice/FS-SelfService
diff options
context:
space:
mode:
Diffstat (limited to 'fs_selfservice/FS-SelfService')
-rw-r--r--fs_selfservice/FS-SelfService/Changes6
-rw-r--r--fs_selfservice/FS-SelfService/MANIFEST6
-rw-r--r--fs_selfservice/FS-SelfService/Makefile.PL19
-rw-r--r--fs_selfservice/FS-SelfService/SelfService.pm649
-rw-r--r--fs_selfservice/FS-SelfService/cgi/login.html29
-rw-r--r--fs_selfservice/FS-SelfService/cgi/make_payment.html120
-rw-r--r--fs_selfservice/FS-SelfService/cgi/myaccount.html47
-rw-r--r--fs_selfservice/FS-SelfService/cgi/passwd.html25
-rw-r--r--fs_selfservice/FS-SelfService/cgi/payment_results.html18
-rw-r--r--fs_selfservice/FS-SelfService/cgi/selfservice.cgi188
-rw-r--r--fs_selfservice/FS-SelfService/cgi/view_invoice.html21
-rw-r--r--fs_selfservice/FS-SelfService/freeside-selfservice-clientd256
-rw-r--r--fs_selfservice/FS-SelfService/test.pl17
13 files changed, 0 insertions, 1401 deletions
diff --git a/fs_selfservice/FS-SelfService/Changes b/fs_selfservice/FS-SelfService/Changes
deleted file mode 100644
index b9e26b7..0000000
--- a/fs_selfservice/FS-SelfService/Changes
+++ /dev/null
@@ -1,6 +0,0 @@
-Revision history for Perl extension FS::SelfService.
-
-0.01 Tue May 28 16:49:41 2002
- - original version; created by h2xs 1.21 with options
- -A -X -n FS::SelfService
-
diff --git a/fs_selfservice/FS-SelfService/MANIFEST b/fs_selfservice/FS-SelfService/MANIFEST
deleted file mode 100644
index ebd0d3b..0000000
--- a/fs_selfservice/FS-SelfService/MANIFEST
+++ /dev/null
@@ -1,6 +0,0 @@
-Changes
-Makefile.PL
-MANIFEST
-SelfService.pm
-test.pl
-freeside-selfservice-clientd
diff --git a/fs_selfservice/FS-SelfService/Makefile.PL b/fs_selfservice/FS-SelfService/Makefile.PL
deleted file mode 100644
index a14580e..0000000
--- a/fs_selfservice/FS-SelfService/Makefile.PL
+++ /dev/null
@@ -1,19 +0,0 @@
-use ExtUtils::MakeMaker;
-# See lib/ExtUtils/MakeMaker.pm for details of how to influence
-# the contents of the Makefile that is written.
-WriteMakefile(
- 'NAME' => 'FS::SelfService',
- 'VERSION_FROM' => 'SelfService.pm', # finds $VERSION
- 'EXE_FILES' => [ 'freeside-selfservice-clientd',
- 'freeside-selfservice-xmlrpc-server',
- ],
- 'INSTALLSCRIPT' => '/usr/local/sbin',
- 'INSTALLSITEBIN' => '/usr/local/sbin',
- 'PERM_RWX' => '750',
- 'PREREQ_PM' => {
- 'Storable' => 2.09,
- }, # e.g., Module::Name => 1.1
- ($] >= 5.005 ? ## Add these new keywords supported since 5.005
- (ABSTRACT_FROM => 'SelfService.pm', # retrieve abstract from module
- AUTHOR => 'Ivan Kohler <ivan-freeside-selfservice@420.am>') : ()),
-);
diff --git a/fs_selfservice/FS-SelfService/SelfService.pm b/fs_selfservice/FS-SelfService/SelfService.pm
deleted file mode 100644
index 7cbf5ec..0000000
--- a/fs_selfservice/FS-SelfService/SelfService.pm
+++ /dev/null
@@ -1,649 +0,0 @@
-package FS::SelfService;
-
-use strict;
-use vars qw($VERSION @ISA @EXPORT_OK $socket %autoload $tag);
-use Exporter;
-use Socket;
-use FileHandle;
-#use IO::Handle;
-use IO::Select;
-use Storable 2.09 qw(nstore_fd fd_retrieve);
-
-$VERSION = '0.03';
-
-@ISA = qw( Exporter );
-
-$socket = "/usr/local/freeside/selfservice_socket";
-$socket .= '.'.$tag if defined $tag && length($tag);
-
-#maybe should ask ClientAPI for this list
-%autoload = (
- 'passwd' => 'passwd/passwd',
- 'chfn' => 'passwd/passwd',
- 'chsh' => 'passwd/passwd',
- 'login' => 'MyAccount/login',
- 'customer_info' => 'MyAccount/customer_info',
- 'edit_info' => 'MyAccount/edit_info',
- 'invoice' => 'MyAccount/invoice',
- 'cancel' => 'MyAccount/cancel',
- 'payment_info' => 'MyAccount/payment_info',
- 'process_payment' => 'MyAccount/process_payment',
- 'list_pkgs' => 'MyAccount/list_pkgs',
- 'order_pkg' => 'MyAccount/order_pkg',
- 'cancel_pkg' => 'MyAccount/cancel_pkg',
- 'charge' => 'MyAccount/charge',
- 'signup_info' => 'Signup/signup_info',
- 'new_customer' => 'Signup/new_customer',
-);
-@EXPORT_OK = keys %autoload;
-
-$ENV{'PATH'} ='/usr/bin:/usr/ucb:/bin';
-$ENV{'SHELL'} = '/bin/sh';
-$ENV{'IFS'} = " \t\n";
-$ENV{'CDPATH'} = '';
-$ENV{'ENV'} = '';
-$ENV{'BASH_ENV'} = '';
-
-my $freeside_uid = scalar(getpwnam('freeside'));
-die "not running as the freeside user\n" if $> != $freeside_uid;
-
-foreach my $autoload ( keys %autoload ) {
-
- my $eval =
- "sub $autoload { ". '
- my $param;
- if ( ref($_[0]) ) {
- $param = shift;
- } else {
- $param = { @_ };
- }
-
- $param->{_packet} = \''. $autoload{$autoload}. '\';
-
- simple_packet($param);
- }';
-
- eval $eval;
- die $@ if $@;
-
-}
-
-sub simple_packet {
- my $packet = shift;
- socket(SOCK, PF_UNIX, SOCK_STREAM, 0) or die "socket: $!";
- connect(SOCK, sockaddr_un($socket)) or die "connect: $!";
- nstore_fd($packet, \*SOCK) or die "can't send packet: $!";
- SOCK->flush;
-
- #shoudl trap: Magic number checking on storable file failed at blib/lib/Storable.pm (autosplit into blib/lib/auto/Storable/fd_retrieve.al) line 337, at /usr/local/share/perl/5.6.1/FS/SelfService.pm line 71
-
- #block until there is a message on socket
-# my $w = new IO::Select;
-# $w->add(\*SOCK);
-# my @wait = $w->can_read;
- my $return = fd_retrieve(\*SOCK) or die "error reading result: $!";
- die $return->{'_error'} if defined $return->{_error} && $return->{_error};
-
- $return;
-}
-
-=head1 NAME
-
-FS::SelfService - Freeside self-service API
-
-=head1 SYNOPSIS
-
- # password and shell account changes
- use FS::SelfService qw(passwd chfn chsh);
-
- # "my account" functionality
- use FS::SelfService qw( login customer_info invoice cancel payment_info process_payment );
-
- my $rv = login( { 'username' => $username,
- 'domain' => $domain,
- 'password' => $password,
- }
- );
-
- if ( $rv->{'error'} ) {
- #handle login error...
- } else {
- #successful login
- my $session_id = $rv->{'session_id'};
- }
-
- my $customer_info = customer_info( { 'session_id' => $session_id } );
-
- #payment_info and process_payment are available in 1.5+ only
- my $payment_info = payment_info( { 'session_id' => $session_id } );
-
- #!!! process_payment example
-
- #!!! list_pkgs example
-
- #!!! order_pkg example
-
- #!!! cancel_pkg example
-
- # signup functionality
- use FS::SelfService qw( signup_info new_customer );
-
- my $signup_info = signup_info;
-
- $rv = new_customer( {
- 'first' => $first,
- 'last' => $last,
- 'company' => $company,
- 'address1' => $address1,
- 'address2' => $address2,
- 'city' => $city,
- 'state' => $state,
- 'zip' => $zip,
- 'country' => $country,
- 'daytime' => $daytime,
- 'night' => $night,
- 'fax' => $fax,
- 'payby' => $payby,
- 'payinfo' => $payinfo,
- 'paycvv' => $paycvv,
- 'paydate' => $paydate,
- 'payname' => $payname,
- 'invoicing_list' => $invoicing_list,
- 'referral_custnum' => $referral_custnum,
- 'pkgpart' => $pkgpart,
- 'username' => $username,
- '_password' => $password,
- 'popnum' => $popnum,
- 'agentnum' => $agentnum,
- }
- );
-
- my $error = $rv->{'error'};
- if ( $error eq '_decline' ) {
- print_decline();
- } elsif ( $error ) {
- reprint_signup();
- } else {
- print_success();
- }
-
-=head1 DESCRIPTION
-
-Use this API to implement your own client "self-service" module.
-
-If you just want to customize the look of the existing "self-service" module,
-see XXXX instead.
-
-=head1 PASSWORD, GECOS, SHELL CHANGING FUNCTIONS
-
-=over 4
-
-=item passwd
-
-=item chfn
-
-=item chsh
-
-=back
-
-=head1 "MY ACCOUNT" FUNCTIONS
-
-=over 4
-
-=item login HASHREF
-
-Creates a user session. Takes a hash reference as parameter with the
-following keys:
-
-=over 4
-
-=item username
-
-=item domain
-
-=item password
-
-=back
-
-Returns a hash reference with the following keys:
-
-=over 4
-
-=item error
-
-Empty on success, or an error message on errors.
-
-=item session_id
-
-Session identifier for successful logins
-
-=back
-
-=item customer_info HASHREF
-
-Returns general customer information.
-
-Takes a hash reference as parameter with a single key: B<session_id>
-
-Returns a hash reference with the following keys:
-
-=over 4
-
-=item name
-
-Customer name
-
-=item balance
-
-Balance owed
-
-=item open
-
-Array reference of hash references of open inoices. Each hash reference has
-the following keys: invnum, date, owed
-
-=item small_custview
-
-An HTML fragment containing shipping and billing addresses.
-
-=item The following fields are also returned: first last company address1 address2 city county state zip country daytime night fax ship_first ship_last ship_company ship_address1 ship_address2 ship_city ship_state ship_zip ship_country ship_daytime ship_night ship_fax
-
-=back
-
-=item edit_info HASHREF
-
-Takes a hash reference as parameter with any of the following keys:
-
-first last company address1 address2 city county state zip country daytime night fax ship_first ship_last ship_company ship_address1 ship_address2 ship_city ship_state ship_zip ship_country ship_daytime ship_night ship_fax
-
-If a field exists, the customer record is updated with the new value of that
-field. If a field does not exist, that field is not changed on the customer
-record.
-
-Returns a hash reference with a single key, B<error>, empty on success, or an
-error message on errors
-
-=item invoice HASHREF
-
-Returns an invoice. Takes a hash reference as parameter with two keys:
-session_id and invnum
-
-Returns a hash reference with the following keys:
-
-=over 4
-
-=item error
-
-Empty on success, or an error message on errors
-
-=item invnum
-
-Invoice number
-
-=item invoice_text
-
-Invoice text
-
-=back
-
-=item cancel HASHREF
-
-Cancels this customer.
-
-Takes a hash reference as parameter with a single key: B<session_id>
-
-Returns a hash reference with a single key, B<error>, which is empty on
-success or an error message on errors.
-
-=item payment_info HASHREF
-
-Returns information that may be useful in displaying a payment page.
-
-Takes a hash reference as parameter with a single key: B<session_id>.
-
-Returns a hash reference with the following keys:
-
-=over 4
-
-=item error
-
-Empty on success, or an error message on errors
-
-=item balance
-
-Balance owed
-
-=item payname
-
-Exact name on credit card (CARD/DCRD)
-
-=item address1
-
-=item address2
-
-=item city
-
-=item state
-
-=item zip
-
-=item payby
-
-Customer's current default payment type.
-
-=item card_type
-
-For CARD/DCRD payment types, the card type (Visa card, MasterCard, Discover card, American Express card, etc.)
-
-=item payinfo
-
-For CARD/DCRD payment types, the card number
-
-=item month
-
-For CARD/DCRD payment types, expiration month
-
-=item year
-
-For CARD/DCRD payment types, expiration year
-
-=item cust_main_county
-
-County/state/country data - array reference of hash references, each of which has the fields of a cust_main_county record (see L<FS::cust_main_county>). Note these are not FS::cust_main_county objects, but hash references of columns and values.
-
-=item states
-
-Array reference of all states in the current default country.
-
-=item card_types
-
-Hash reference of card types; keys are card types, values are the exact strings
-passed to the process_payment function
-
-=item paybatch
-
-Unique transaction identifier (prevents multiple charges), passed to the
-process_payment function
-
-=back
-
-=item process_payment HASHREF
-
-Processes a payment and possible change of address or payment type. Takes a
-hash reference as parameter with the following keys:
-
-=over 4
-
-=item session_id
-
-=item save
-
-If true, address and card information entered will be saved for subsequent
-transactions.
-
-=item auto
-
-If true, future credit card payments will be done automatically (sets payby to
-CARD). If false, future credit card payments will be done on-demand (sets
-payby to DCRD). This option only has meaning if B<save> is set true.
-
-=item payname
-
-=item address1
-
-=item address2
-
-=item city
-
-=item state
-
-=item zip
-
-=item payinfo
-
-Card number
-
-=item month
-
-Card expiration month
-
-=item year
-
-Card expiration year
-
-=item paybatch
-
-Unique transaction identifier, returned from the payment_info function.
-Prevents multiple charges.
-
-=back
-
-Returns a hash reference with a single key, B<error>, empty on success, or an
-error message on errors
-
-=item list_pkgs
-
-Returns package information for this customer.
-
-Takes a hash reference as parameter with a single key: B<session_id>
-
-Returns a hash reference containing customer package information. The hash reference contains the following keys:
-
-=over 4
-
-=item cust_pkg HASHREF
-
-Array reference of hash references, each of which has the fields of a cust_pkg record (see L<FS::cust_pkg>). Note these are not FS::cust_pkg objects, but hash references of columns and values.
-
-=back
-
-=item order_pkg
-
-Orders a package for this customer.
-
-Takes a hash reference as parameter with the following keys:
-
-=over 4
-
-=item session_id
-
-=item pkgpart
-
-=item svcpart
-
-optional svcpart, required only if the package definition does not contain
-one svc_acct service definition with quantity 1 (it may contain others with
-quantity >1)
-
-=item username
-
-=item _password
-
-=item sec_phrase
-
-=item popnum
-
-=back
-
-Returns a hash reference with a single key, B<error>, empty on success, or an
-error message on errors. The special error '_decline' is returned for
-declined transactions.
-
-=item cancel_pkg
-
-Cancels a package for this customer.
-
-Takes a hash reference as parameter with the following keys:
-
-=over 4
-
-=item session_id
-
-=item pkgpart
-
-=back
-
-Returns a hash reference with a single key, B<error>, empty on success, or an
-error message on errors.
-
-=back
-
-=head1 SIGNUP FUNCTIONS
-
-=over 4
-
-=item signup_info
-
-Returns a hash reference containing information that may be useful in
-displaying a signup page. The hash reference contains the following keys:
-
-=over 4
-
-=item cust_main_county
-
-County/state/country data - array reference of hash references, each of which has the fields of a cust_main_county record (see L<FS::cust_main_county>). Note these are not FS::cust_main_county objects, but hash references of columns and values.
-
-=item part_pkg
-
-Available packages - array reference of hash references, each of which has the fields of a part_pkg record (see L<FS::part_pkg>). Each hash reference also has an additional 'payby' field containing an array reference of acceptable payment types specific to this package (see below and L<FS::part_pkg/payby>). Note these are not FS::part_pkg objects, but hash references of columns and values. Requires the 'signup_server-default_agentnum' configuration value to be set.
-
-=item agent
-
-Array reference of hash references, each of which has the fields of an agent record (see L<FS::agent>). Note these are not FS::agent objects, but hash references of columns and values.
-
-=item agentnum2part_pkg
-
-Hash reference; keys are agentnums, values are array references of available packages for that agent, in the same format as the part_pkg arrayref above.
-
-=item svc_acct_pop
-
-Access numbers - array reference of hash references, each of which has the fields of an svc_acct_pop record (see L<FS::svc_acct_pop>). Note these are not FS::svc_acct_pop objects, but hash references of columns and values.
-
-=item security_phrase
-
-True if the "security_phrase" feature is enabled
-
-=item payby
-
-Array reference of acceptable payment types for signup
-
-=over 4
-
-=item CARD (credit card - automatic)
-
-=item DCRD (credit card - on-demand - version 1.5+ only)
-
-=item CHEK (electronic check - automatic)
-
-=item DCHK (electronic check - on-demand - version 1.5+ only)
-
-=item LECB (Phone bill billing)
-
-=item BILL (billing, not recommended for signups)
-
-=item COMP (free, definately not recommended for signups)
-
-=item PREPAY (special billing type: applies a credit (see FS::prepay_credit) and sets billing type to BILL)
-
-=back
-
-=item cvv_enabled
-
-True if CVV features are available (1.5+ or 1.4.2 with CVV schema patch)
-
-=item msgcat
-
-Hash reference of message catalog values, to support error message customization. Currently available keys are: passwords_dont_match, invalid_card, unknown_card_type, and not_a (as in "Not a Discover card"). Values are configured in the web interface under "View/Edit message catalog".
-
-=item statedefault
-
-Default state
-
-=item countrydefault
-
-Default country
-
-=back
-
-=item new_customer HASHREF
-
-Creates a new customer. Takes a hash reference as parameter with the
-following keys:
-
-=over 4
-
-=item first - first name (required)
-
-=item last - last name (required)
-
-=item ss (not typically collected; mostly used for ACH transactions)
-
-=item company
-
-=item address1 (required)
-
-=item address2
-
-=item city (required)
-
-=item county
-
-=item state (required)
-
-=item zip (required)
-
-=item daytime - phone
-
-=item night - phone
-
-=item fax - phone
-
-=item payby - CARD, DCRD, CHEK, DCHK, LECB, BILL, COMP or PREPAY (see L</signup_info> (required)
-
-=item payinfo - Card number for CARD/DCRD, account_number@aba_number for CHEK/DCHK, prepaid "pin" for PREPAY, purchase order number for BILL
-
-=item paycvv - Credit card CVV2 number (1.5+ or 1.4.2 with CVV schema patch)
-
-=item paydate - Expiration date for CARD/DCRD
-
-=item payname - Exact name on credit card for CARD/DCRD, bank name for CHEK/DCHK
-
-=item invoicing_list - comma-separated list of email addresses for email invoices. The special value 'POST' is used to designate postal invoicing (it may be specified alone or in addition to email addresses),
-
-=item referral_custnum - referring customer number
-
-=item pkgpart - pkgpart of initial package
-
-=item username
-
-=item _password
-
-=item sec_phrase - security phrase
-
-=item popnum - access number (index, not the literal number)
-
-=item agentnum - agent number
-
-=back
-
-Returns a hash reference with the following keys:
-
-=over 4
-
-=item error Empty on success, or an error message on errors. The special error '_decline' is returned for declined transactions; other error messages should be suitable for display to the user (and are customizable in under Sysadmin | View/Edit message catalog)
-
-=back
-
-
-=back
-
-=head1 BUGS
-
-=head1 SEE ALSO
-
-L<freeside-selfservice-clientd>, L<freeside-selfservice-server>
-
-=cut
-
-1;
-
diff --git a/fs_selfservice/FS-SelfService/cgi/login.html b/fs_selfservice/FS-SelfService/cgi/login.html
deleted file mode 100644
index 5607de7..0000000
--- a/fs_selfservice/FS-SelfService/cgi/login.html
+++ /dev/null
@@ -1,29 +0,0 @@
-<HTML><HEAD><TITLE>Login</TITLE></HEAD>
-<BODY BGCOLOR="#e8e8e8"><FONT SIZE=5>Login</FONT><BR><BR>
-<FONT SIZE="+1" COLOR="#ff0000"><%= $error %></FONT>
-<FORM ACTION="<%= $self_url %>" METHOD=POST>
-<INPUT TYPE="hidden" NAME="session" VALUE="login">
-<TABLE BGCOLOR="#c0c0c0" BORDER=0 CELLSPACING=2 CELLPADDING=0>
-<TR>
- <TH ALIGN="right">Username </TH>
- <TD>
- <INPUT TYPE="text" NAME="username" VALUE="<%= $username %>">
- </TD>
-</TR>
-<TR>
- <TH ALIGN="right">Domain </TH>
- <TD>
- <INPUT TYPE="text" NAME="domain" VALUE="<%= $domain %>">
- </TD>
-</TR>
-<!--<INPUT TYPE="hidden" NAME="domain" VALUE="myisp.com">-->
-<TR>
- <TH ALIGN="right">Password </TH>
- <TD>
- <INPUT TYPE="password" NAME="password">
- </TD>
-</TR>
-</TABLE>
-<BR><BR><INPUT TYPE="submit" VALUE="Login">
-</FORM></BODY></HTML>
-
diff --git a/fs_selfservice/FS-SelfService/cgi/make_payment.html b/fs_selfservice/FS-SelfService/cgi/make_payment.html
deleted file mode 100644
index 40cd83c..0000000
--- a/fs_selfservice/FS-SelfService/cgi/make_payment.html
+++ /dev/null
@@ -1,120 +0,0 @@
-<HTML><HEAD><TITLE>MyAccount</TITLE></HEAD>
-<BODY BGCOLOR="#eeeeee"><FONT SIZE=5>MyAccount</FONT><BR><BR>
-<%= $url = "$selfurl?session=$session_id;action="; ''; %>
-<TABLE BORDER=0 CELLPADDING=4><TR><TD VALIGN="top" HEIGHT=384 BGCOLOR="#dddddd">
-<A HREF="<%= $url %>myaccount">MyAccount</A><BR>
-<!-- <A HREF="<%= $url %>other">SomethingElse</A><BR> -->
-</TD><TD VALIGN="top">
-<FONT SIZE=4>Make a payment</FONT><BR><BR>
-<FORM NAME="OneTrueForm" METHOD="POST" ACTION="<%=$selfurl%>" onSubmit="document.OneTrueForm.process.disabled=true">
-<INPUT TYPE="hidden" NAME="session" VALUE="<%=$session_id%>">
-<INPUT TYPE="hidden" NAME="action" VALUE="payment_results">
-<TABLE BGCOLOR="#cccccc">
-<TR>
- <TD ALIGN="right">Amount&nbsp;Due</TD>
- <TD>
- <TABLE><TR><TD BGCOLOR="#ffffff">
- $<%=sprintf("%.2f",$balance)%>
- </TD></TR></TABLE>
- </TD>
-</TR>
-<TR>
- <TD ALIGN="right">Payment&nbsp;amount</TD>
- <TD>
- <TABLE><TR><TD BGCOLOR="#ffffff">
- $<INPUT TYPE="text" NAME="amount" SIZE=8 VALUE="<%=sprintf("%.2f",$balance)%>">
- </TD></TR></TABLE>
- </TD>
-</TR><TR>
- <TD ALIGN="right">Card&nbsp;type</TD>
- <TD>
- <SELECT NAME="card_type"><OPTION></OPTION>
- <%= foreach ( keys %card_types ) {
- $selected = $card_type eq $card_types{$_} ? ' SELECTED' : '';
- $OUT .= qq(<OPTION$selected VALUE="). $card_types{$_}. qq(">$_\n);
- } %>
- </SELECT>
- </TD>
-</TD><TR>
- <TD ALIGN="right">Card&nbsp;number</TD>
- <TD>
- <TABLE>
- <TR>
- <TD>
- <INPUT TYPE="text" NAME="payinfo" SIZE=20 MAXLENGTH=19 VALUE="<%=$payinfo%>"> </TD>
- <TD>Exp.</TD>
- <TD>
- <SELECT NAME="month">
- <%= for ( ( map "0$_", 1 .. 9 ), 11, 12 ) {
- $OUT .= '<OPTION'. ($_ eq $month ? ' SELECTED' : ''). ">$_\n";
- } %>
- </SELECT>
- </TD>
- <TD> / </TD>
- <TD>
- <SELECT NAME="year">
- <%= my @a = localtime; for ( $a[5]+1900 .. $a[5]+1915 ) {
- $OUT .= '<OPTION'. ($_ eq $year ? ' SELECTED' : ''). ">$_\n";
- } %>
- </SELECT>
- </TD>
- </TR>
- </TABLE>
- </TD>
-</TR><TR>
- <TD ALIGN="right">Exact&nbsp;name&nbsp;on&nbsp;card</TD>
- <TD><INPUT TYPE="text" SIZE=32 MAXLENGTH=80 NAME="payname" VALUE="<%=$payname%>"></TD>
-</TR><TR>
- <TD ALIGN="right">Card&nbsp;billing&nbsp;address</TD>
- <TD>
- <INPUT TYPE="text" SIZE=40 MAXLENGTH=80 NAME="address1" VALUE="<%=$address1%>">
- </TD>
-</TR><TR>
- <TD ALIGN="right">Address&nbsp;line&nbsp;2</TD>
- <TD>
- <INPUT TYPE="text" SIZE=40 MAXLENGTH=80 NAME="address2" VALUE="<%=$address2%>">
- </TD>
-</TR><TR>
- <TD ALIGN="right">City</TD>
- <TD>
- <TABLE>
- <TR>
- <TD>
- <INPUT TYPE="text" NAME="city" SIZE="12" MAXLENGTH=80 VALUE="<%=$city%>">
- </TD>
- <TD>State</TD>
- <TD>
- <SELECT NAME="state">
- <%= for ( @states ) {
- $OUT .= '<OPTION'. ($_ eq $state ? ' SELECTED' : '' ). ">$_\n";
- } %>
- </SELECT>
- </TD>
- <TD>Zip</TD>
- <TD>
- <INPUT TYPE="text" NAME="zip" SIZE=11 MAXLENGTH=10 VALUE="<%=$zip%>">
- </TD>
- </TR>
- </TABLE>
- </TD>
-</TR><TR>
- <TD COLSPAN=2>
- <INPUT TYPE="checkbox" CHECKED NAME="save" VALUE="1">
- Remember this information
- </TD>
-</TR><TR>
- <TD COLSPAN=2>
- <INPUT TYPE="checkbox"<%= $payby eq 'CARD' ? ' CHECKED' : '' %> NAME="auto" VALUE="1" onClick="if (this.checked) { document.OneTrueForm.save.checked=true; }">
- Charge future payments to this card automatically
- </TD>
-</TR>
-</TABLE>
-<BR>
-<INPUT TYPE="hidden" NAME="paybatch" VALUE="<%=$paybatch%>">
-<INPUT TYPE="submit" NAME="process" VALUE="Process payment"> <!-- onClick="this.disabled=true"> -->
-</FORM>
-</TD></TR></TABLE>
-<HR>
-<FONT SIZE="-2">powered by <a href="http://www.sisd.com/freeside">freeside</a></FONT>
-</BODY></HTML>
-
diff --git a/fs_selfservice/FS-SelfService/cgi/myaccount.html b/fs_selfservice/FS-SelfService/cgi/myaccount.html
deleted file mode 100644
index f48fded..0000000
--- a/fs_selfservice/FS-SelfService/cgi/myaccount.html
+++ /dev/null
@@ -1,47 +0,0 @@
-<HTML><HEAD><TITLE>MyAccount</TITLE></HEAD>
-<BODY BGCOLOR="#eeeeee"><FONT SIZE=5>MyAccount</FONT><BR><BR>
-<%= $url = "$selfurl?session=$session_id;action="; ''; %>
-<TABLE BORDER=0 CELLPADDING=4><TR><TD VALIGN="top" HEIGHT=384 BGCOLOR="#dddddd">
-<A HREF="<%= $url %>myaccount">MyAccount</A><BR>
-<!-- <A HREF="<%= $url %>other">SomethingElse</A><BR> -->
-</TD><TD VALIGN="top">
-
-Hello <%= $name %>!<BR><BR>
-<%= $small_custview %>
-<BR>
-<%= if ( $balance > 0 ) {
- $OUT .= qq! <B><A HREF="${url}make_payment">Make a payment</A></B><BR><BR>!;
-} %>
-<%=
- if ( @open_invoices ) {
- $OUT .= '<TABLE BORDER=0 CELLSPACING=0 CELLPADDING=2 BGCOLOR="#eeeeee">'.
- '<TR><TH BGCOLOR="#ff3333" COLSPAN=5>Open Invoices</TH><TD>';
- my $link = qq!<A HREF="<%= $url %>myaccount!;
- my $col1 = "ffffff";
- my $col2 = "dddddd";
- my $col = $col1;
-
- foreach my $invoice ( @open_invoices ) {
- my $td = qq!<TD BGCOLOR="#$col">!;
- my $a=qq!<A HREF="${url}view_invoice;invnum=!. $invoice->{'invnum'}. '">';
- $OUT .=
- "<TR>$td${a}Invoice #". $invoice->{'invnum'}. "</A></TD>$td</TD>".
- "$td$a". $invoice->{'date'}. "</A></TD>$td</TD>".
- qq!<TD BGCOLOR="#$col" ALIGN="right">$a\$!. $invoice->{'owed'}.
- '</A></TD>'.
- '</TR>';
- $col = $col eq $col1 ? $col2 : $col1;
- }
- $OUT .= '</TABLE>';
- } else {
- $OUT .= 'You have no outstanding invoices.<BR><BR>';
- }
-%>
-
-</TD></TR></TABLE>
-<HR>
-<FONT SIZE="-2">powered by <a href="http://www.sisd.com/freeside">freeside</a></FONT>
-</BODY></HTML>
-
-
-
diff --git a/fs_selfservice/FS-SelfService/cgi/passwd.html b/fs_selfservice/FS-SelfService/cgi/passwd.html
deleted file mode 100644
index fadc4df..0000000
--- a/fs_selfservice/FS-SelfService/cgi/passwd.html
+++ /dev/null
@@ -1,25 +0,0 @@
-<html>
- <head>
- <title>Change password</title>
- </head>
- <body bgcolor="#e8e8e8">
- <h3>Change password</h3>
- <form action="/cgi-bin/fs_passwd.cgi" method="post">
- <table bgcolor="#cccccc" border=0 cellspacing=2>
- <tr><th align="right">Username</th>
- <td><input type="text" name="username" size="18"></td>
- </tr>
- <tr><th align="right">Current password</th>
- <td><input type="password" name="old_password" size="18"></td>
- </tr>
- <tr><th align="right">New password</th>
- <td><input type="password" name="new_password" size="18"></td>
- </tr>
- <tr><th align="right">Re-enter new password</th>
- <td><input type="password" name="new_password2" size="18"></td>
- </tr>
- </table>
- <br><input type="submit" value="Change password">
- </body>
-</html>
-
diff --git a/fs_selfservice/FS-SelfService/cgi/payment_results.html b/fs_selfservice/FS-SelfService/cgi/payment_results.html
deleted file mode 100644
index 92c8cf5..0000000
--- a/fs_selfservice/FS-SelfService/cgi/payment_results.html
+++ /dev/null
@@ -1,18 +0,0 @@
-<HTML><HEAD><TITLE>MyAccount</TITLE></HEAD>
-<BODY BGCOLOR="#eeeeee"><FONT SIZE=5>MyAccount</FONT><BR><BR>
-<%= $url = "$selfurl?session=$session_id;action="; ''; %>
-<TABLE BORDER=0 CELLPADDING=4><TR><TD VALIGN="top" HEIGHT=384 BGCOLOR="#dddddd">
-<A HREF="<%= $url %>myaccount">MyAccount</A><BR>
-<!-- <A HREF="<%= $url %>other">SomethingElse</A><BR> -->
-</TD><TD VALIGN="top">
-<FONT SIZE=4>Payment results</FONT><BR><BR>
-<%= if ( $error ) {
- $OUT .= qq!<FONT SIZE="+1" COLOR="#ff0000">Error processing your payment: $error</FONT>!;
-} else {
- $OUT .= 'Your payment was processed sucessfully. Thank you.';
-} %>
-</TD></TR></TABLE>
-<HR>
-<FONT SIZE="-2">powered by <a href="http://www.sisd.com/freeside">freeside</a></FONT>
-</BODY></HTML>
-
diff --git a/fs_selfservice/FS-SelfService/cgi/selfservice.cgi b/fs_selfservice/FS-SelfService/cgi/selfservice.cgi
deleted file mode 100644
index 6d6716d..0000000
--- a/fs_selfservice/FS-SelfService/cgi/selfservice.cgi
+++ /dev/null
@@ -1,188 +0,0 @@
-#!/usr/bin/perl -Tw
-
-use strict;
-use vars qw($cgi $session_id $form_max $template_dir);
-use subs qw(do_template);
-use CGI;
-use CGI::Carp qw(fatalsToBrowser);
-use Text::Template;
-use FS::SelfService qw( login customer_info invoice payment_info
- process_payment );
-
-$template_dir = '.';
-
-$form_max = 255;
-
-$cgi = new CGI;
-
-unless ( defined $cgi->param('session') ) {
- do_template('login',{});
- exit;
-}
-
-if ( $cgi->param('session') eq 'login' ) {
-
- $cgi->param('username') =~ /^\s*([a-z0-9_\-\.\&]{0,$form_max})\s*$/i
- or die "illegal username";
- my $username = $1;
-
- $cgi->param('domain') =~ /^\s*([\w\-\.]{0,$form_max})\s*$/
- or die "illegal domain";
- my $domain = $1;
-
- $cgi->param('password') =~ /^(.{0,$form_max})$/
- or die "illegal password";
- my $password = $1;
-
- my $rv = login(
- 'username' => $username,
- 'domain' => $domain,
- 'password' => $password,
- );
- if ( $rv->{error} ) {
- do_template('login', {
- 'error' => $rv->{error},
- 'username' => $username,
- 'domain' => $domain,
- } );
- exit;
- } else {
- $cgi->param('session' => $rv->{session_id} );
- $cgi->param('action' => 'myaccount' );
- }
-}
-
-$session_id = $cgi->param('session');
-
-$cgi->param('action') =~
- /^(myaccount|view_invoice|make_payment|payment_results)$/
- or die "unknown action ". $cgi->param('action');
-my $action = $1;
-
-my $result = eval "&$action();";
-die $@ if $@;
-
-if ( $result->{error} eq "Can't resume session" ) { #ick
- do_template('login',{});
- exit;
-}
-
-#warn $result->{'open_invoices'};
-#warn scalar(@{$result->{'open_invoices'}});
-
-warn "processing template $action\n";
-do_template($action, {
- 'session_id' => $session_id,
- %{$result}
-});
-
-#--
-
-sub myaccount { customer_info( 'session_id' => $session_id ); }
-
-sub view_invoice {
-
- $cgi->param('invnum') =~ /^(\d+)$/ or die "illegal invnum";
- my $invnum = $1;
-
- invoice( 'session_id' => $session_id,
- 'invnum' => $invnum,
- );
-
-}
-
-sub make_payment {
- payment_info( 'session_id' => $session_id );
-}
-
-sub payment_results {
-
- use Business::CreditCard;
-
- $cgi->param('amount') =~ /^\s*(\d+(\.\d{2})?)\s*$/
- or die "illegal amount"; #!!!
- my $amount = $1;
-
- my $payinfo = $cgi->param('payinfo');
- $payinfo =~ s/\D//g;
- $payinfo =~ /^(\d{13,16})$/
- #or $error ||= $init_data->{msgcat}{invalid_card}; #. $self->payinfo;
- or die "illegal card"; #!!!
- $payinfo = $1;
- validate($payinfo)
- #or $error ||= $init_data->{msgcat}{invalid_card}; #. $self->payinfo;
- or die "invalid card"; #!!!
- cardtype($payinfo) eq $cgi->param('card_type')
- #or $error ||= $init_data->{msgcat}{not_a}. $cgi->param('CARD_type');
- or die "not a ". $cgi->param('card_type');
-
- $cgi->param('month') =~ /^(\d{2})$/ or die "illegal month";
- my $month = $1;
- $cgi->param('year') =~ /^(\d{4})$/ or die "illegal year";
- my $year = $1;
-
- $cgi->param('payname') =~ /^(.{0,80})$/ or die "illegal payname";
- my $payname = $1;
-
- $cgi->param('address1') =~ /^(.{0,80})$/ or die "illegal address1";
- my $address1 = $1;
-
- $cgi->param('address2') =~ /^(.{0,80})$/ or die "illegal address2";
- my $address2 = $1;
-
- $cgi->param('city') =~ /^(.{0,80})$/ or die "illegal city";
- my $city = $1;
-
- $cgi->param('state') =~ /^(.{2})$/ or die "illegal state";
- my $state = $1;
-
- $cgi->param('zip') =~ /^(.{0,10})$/ or die "illegal zip";
- my $zip = $1;
-
- my $save = 0;
- $save = 1 if $cgi->param('save');
-
- my $auto = 0;
- $auto = 1 if $cgi->param('auto');
-
- $cgi->param('paybatch') =~ /^([\w\-\.]+)$/ or die "illegal paybatch";
- my $paybatch = $1;
-
- process_payment(
- 'session_id' => $session_id,
- 'amount' => $amount,
- 'payinfo' => $payinfo,
- 'month' => $month,
- 'year' => $year,
- 'payname' => $payname,
- 'address1' => $address1,
- 'address2' => $address2,
- 'city' => $city,
- 'state' => $state,
- 'zip' => $zip,
- 'save' => $save,
- 'auto' => $auto,
- 'paybatch' => $paybatch,
- );
-
-}
-
-#--
-
-sub do_template {
- my $name = shift;
- my $fill_in = shift;
-
- $cgi->delete_all();
- $fill_in->{'selfurl'} = $cgi->self_url;
-
- my $template = new Text::Template( TYPE => 'FILE',
- SOURCE => "$template_dir/$name.html",
- DELIMITERS => [ '<%=', '%>' ],
- UNTAINT => 1, )
- or die $Text::Template::ERROR;
-
- print $cgi->header( '-expires' => 'now' ),
- $template->fill_in( HASH => $fill_in );
-}
-
diff --git a/fs_selfservice/FS-SelfService/cgi/view_invoice.html b/fs_selfservice/FS-SelfService/cgi/view_invoice.html
deleted file mode 100644
index d2b012b..0000000
--- a/fs_selfservice/FS-SelfService/cgi/view_invoice.html
+++ /dev/null
@@ -1,21 +0,0 @@
-<HTML><HEAD><TITLE>MyAccount</TITLE></HEAD>
-<BODY BGCOLOR="#eeeeee"><FONT SIZE=5>MyAccount</FONT><BR><BR>
-<%= $url = "$selfurl?session=$session_id;action="; ''; %>
-<TABLE BORDER=0 CELLPADDING=4><TR><TD VALIGN="top" HEIGHT=384 BGCOLOR="#dddddd">
-<A HREF="<%= $url %>myaccount">MyAccount</A><BR>
-<!-- <A HREF="<%= $url %>other">SomethingElse</A><BR> -->
-</TD><TD VALIGN="top">
-
-<A HREF="<%= $url %>myaccount"><-- back to MyAccount</A><BR><BR>
-
-<FONT SIZE="-1"><PRE>
-<%= $invoice_text %>
-</FONT></PRE>
-
-</TD></TR></TABLE>
-<HR>
-<FONT SIZE="-2">powered by <a href="http://www.sisd.com/freeside">freeside</a></FONT>
-</BODY></HTML>
-
-
-
diff --git a/fs_selfservice/FS-SelfService/freeside-selfservice-clientd b/fs_selfservice/FS-SelfService/freeside-selfservice-clientd
deleted file mode 100644
index ce9e14d..0000000
--- a/fs_selfservice/FS-SelfService/freeside-selfservice-clientd
+++ /dev/null
@@ -1,256 +0,0 @@
-#!/usr/bin/perl -w
-#
-# freeside-selfservice-clientd
-#
-# This is run REMOTELY over ssh by freeside-selfservice-server
-
-use strict;
-use subs qw(spawn logmsg lock_write unlock_write);
-use Fcntl qw(:flock);
-use POSIX qw(:sys_wait_h);
-use Socket;
-use Storable 2.09 qw(nstore_fd fd_retrieve);
-use IO::Handle qw(_IONBF);
-use IO::Select;
-use IO::File;
-
-#STDOUT->setbuf('');
-
-my $tag = scalar(@ARGV) ? '.'.shift : '';
-
-use vars qw( $Debug );
-$Debug = 2; #2 will turn on child logging, 3 will log packet contents,
- #including potentially compromising information
-
-my $socket = "/usr/local/freeside/selfservice_socket$tag";
-my $pid_file = "$socket.pid";
-
-my $log_file = "/usr/local/freeside/selfservice$tag.log";
-
-my $lock_file = "/usr/local/freeside/selfservice$tag.writelock";
-
-#my $me = '[client]';
-
-$|=1;
-
-$SIG{__WARN__} = \&_logmsg;
-
-#read data to be cached or something
-#warn "$me Reading init data\n" if $Debug;
-#my $signup_init =
-
-warn "Creating $lock_file\n" if $Debug;
-open(LOCKFILE,">$lock_file") or die "can't open $lock_file: $!";
-
-warn "Creating $socket\n" if $Debug;
-my $uaddr = sockaddr_un($socket);
-my $proto = getprotobyname('tcp');
-socket(Server,PF_UNIX,SOCK_STREAM,0) or die "socket: $!";
-unlink($socket);
-bind(Server, $uaddr) or die "bind: $!";
-listen(Server,SOMAXCONN) or die "listen: $!";
-
-if ( -e $pid_file ) {
- open(PIDFILE,"<$pid_file");
- my $old_pid = <PIDFILE>;
- close PIDFILE;
- $old_pid =~ /^(\d+)$/;
- kill 'TERM', $1;
-}
-open(PIDFILE,">$pid_file");
-print PIDFILE "$$\n";
-close PIDFILE;
-
-#my $waitedpid;
-#sub REAPER { $waitedpid = wait; $SIG{CHLD} = \&REAPER; }
-#$SIG{CHLD} = \&REAPER;
-
-warn "entering main loop\n" if $Debug;
-
-my %kids;
-
-my $s = new IO::Select;
-$s->add(\*STDIN);
-$s->add(\*Server);
-
-#for ( $waitedpid = 0;
-# accept(Client,Server) || $waitedpid;
-# $waitedpid = 0, close Client)
-#{
-# next if $waitedpid;
-
-#$SIG{PIPE} = sub { warn "SIGPIPE received" };
-#$SIG{CHLD} = sub { warn "SIGCHLD received" };
-
-#sub REAPER { warn "SIGCHLD received"; my $pid = wait; $SIG{CHLD} = \&REAPER; }
-#sub REAPER { my $pid = wait; $SIG{CHLD} = \&REAPER; }
-#sub REAPER { my $pid = wait; delete $kids{$pid}; $SIG{CHLD} = \&REAPER; }
-#$SIG{CHLD} = \&REAPER;
-
-my $undisp = 0;
-while (1) {
-
- &reap_kids;
-
- warn "waiting for connection\n" if $Debug && !$undisp;
-
- #my @handles = $s->can_read();
- my @handles = $s->can_read(5);
- $undisp = !scalar(@handles);
- foreach my $handle ( @handles ) {
-
- if ( $handle == \*STDIN ) {
-
- warn "receiving packet from server\n" if $Debug;
-
- my $packet = fd_retrieve(\*STDIN);
- my $token = $packet->{'_token'};
- warn "received packet from server with token $token\n".
- ( $Debug > 2
- ? join('', map { " $_=>$packet->{$_}\n" } keys %$packet )
- : '' )
- if $Debug;
-
- if ( exists($kids{$token}) ) {
- warn "sending return packet to $token via $kids{$token}\n"
- if $Debug;
- nstore_fd($packet, $kids{$token});
- warn "flushing to $token\n" if $Debug;
- until ( $kids{$token}->flush ) {
- warn "WARNING: error flushing: $!";
- sleep 1;
- }
- #no close or delete here - will block waiting for child
- warn "done with $token\n" if $Debug;
- } else {
- warn "WARNING: unknown token $token, discarding message";
- }
-
- } elsif ( $handle == \*Server ) {
-
- until ( accept(Client, Server) ) {
- warn "WARNING: accept failed: $!";
- next;
- }
-
- warn "received local connection; forking\n" if $Debug;
-
- spawn sub { #child
- warn "[child-$$] reading packet from local client" if $Debug > 1;
- my $packet = fd_retrieve(\*Client);
- warn "[child-$$] packet received:\n".
- join('', map { " $_=>$packet->{$_}\n" } keys %$packet )
- if $Debug > 2;
- my $command = $packet->{'command'};
- #handle some commands weirdly?
- $packet->{_token}=$$;
-
- warn "[child-$$] locking write stream\n" if $Debug > 1;
- lock_write;
-
- warn "[child-$$] sending packet to remote server\n" if $Debug > 1;
- nstore_fd($packet, \*STDOUT) or die "FATAL: can't send response: $!";
-
- warn "[child-$$] flushing write stream\n" if $Debug > 1;
- STDOUT->flush or die "FATAL: can't flush: $!";
-
- warn "[child-$$] releasing write lock\n" if $Debug > 1;
- unlock_write;
-
- warn "[child-$$] closing write stream\n" if $Debug > 1;
- close STDOUT or die "FATAL: can't close write stream: $!"; #??!
-
- warn "[child-$$] waiting for response from parent\n" if $Debug > 1;
- my $w = new IO::Select;
- $w->add(\*STDIN);
- until ( $w->can_read ) {
- warn "[child-$$] WARNING: interrupted select: $!\n";
- }
- my $rv = fd_retrieve(\*STDIN);
-
- #close STDIN;
-
- warn "[child-$$] sending response to local client" if $Debug > 1;
- nstore_fd($rv, \*Client);
- Client->flush or die "FATAL: can't flush to local client: $!";
- close Client or die "FATAL: can't close connection to local client: $!";
-
- warn "[child-$$] child exiting" if $Debug > 1;
- exit;
-
- }; #eo child
-
- #close Client;
-
- } else {
- die "wtf? $handle";
- }
-
- }
-
-}
-
-sub reap_kids {
- #warn "reaping kids\n";
- foreach my $pid ( keys %kids ) {
- my $kid = waitpid($pid, WNOHANG);
- if ( $kid > 0 ) {
- close $kids{$kid};
- delete $kids{$kid};
- }
- }
- #warn "done reaping\n";
-}
-
-sub spawn {
- my $coderef = shift;
-
- unless (@_ == 0 && $coderef && ref($coderef) eq 'CODE') {
- use Carp;
- confess "usage: spawn CODEREF";
- }
-
- my $pid;
- #if (!defined($pid = fork)) {
- my $kid = new IO::Handle;
- if (!defined($pid = open($kid, '|-'))) {
- warn "WARNING: cannot fork: $!";
- return;
- } elsif ($pid) {
- warn "begat $pid" if $Debug;
- $kids{$pid} = $kid;
- #$kids{$pid}->autoflush;
- return; # I'm the parent
- }
- # else I'm the child -- go spawn
-
-# open(STDIN, "<&Client") || die "can't dup client to stdin";
-# open(STDOUT, ">&Client") || die "can't dup client to stdout";
-# open(STDERR, ">&STDOUT") || die "can't dup stdout to stderr";
- exit &$coderef();
-}
-
-sub _logmsg {
- chomp( my $msg = shift );
- my $log = new IO::File ">>$log_file";
- die "can't open $log_file: $!" unless defined($log);
- flock($log, LOCK_EX);
- seek($log, 0, 2);
- print $log "[client] [". scalar(localtime). "] [$$] $msg\n";
- flock($log, LOCK_UN);
- close $log;
-}
-
-sub lock_write {
- #broken on freebsd?
- #flock(STDOUT, LOCK_EX) or die "FATAL: can't lock write stream: $!";
-
- flock(LOCKFILE, LOCK_EX) or die "FATAL: can't lock $lock_file: $!";
-}
-
-sub unlock_write {
- #broken on freebsd?
- #flock(STDOUT, LOCK_UN) or die "FATAL: can't release write lock: $!";
-
- flock(LOCKFILE, LOCK_UN) or die "FATAL: can't unlock $lock_file: $!";
-}
diff --git a/fs_selfservice/FS-SelfService/test.pl b/fs_selfservice/FS-SelfService/test.pl
deleted file mode 100644
index 7468ea4..0000000
--- a/fs_selfservice/FS-SelfService/test.pl
+++ /dev/null
@@ -1,17 +0,0 @@
-# Before `make install' is performed this script should be runnable with
-# `make test'. After `make install' it should work as `perl test.pl'
-
-#########################
-
-# change 'tests => 1' to 'tests => last_test_to_print';
-
-use Test;
-BEGIN { plan tests => 1 };
-use FS::SelfService;
-ok(1); # If we made it this far, we're ok.
-
-#########################
-
-# Insert your test code below, the Test module is use()ed here so read
-# its man page ( perldoc Test ) for help writing this test script.
-