summaryrefslogtreecommitdiff
path: root/fs_selfservice/FS-SelfService/SelfService.pm
diff options
context:
space:
mode:
authorivan <ivan>2002-07-16 12:28:02 +0000
committerivan <ivan>2002-07-16 12:28:02 +0000
commit6ff02eb18af2dd61ce2dca064414ca183fa02e6e (patch)
treed1ef22718ad3cc2cd34116e9f56655441ed47592 /fs_selfservice/FS-SelfService/SelfService.pm
parent2db0b73231b1cc8b9203d8c482ea9da2973f2768 (diff)
invoice viewing...
Diffstat (limited to 'fs_selfservice/FS-SelfService/SelfService.pm')
-rw-r--r--fs_selfservice/FS-SelfService/SelfService.pm41
1 files changed, 29 insertions, 12 deletions
diff --git a/fs_selfservice/FS-SelfService/SelfService.pm b/fs_selfservice/FS-SelfService/SelfService.pm
index 3cd4fd94e..9019ea4f8 100644
--- a/fs_selfservice/FS-SelfService/SelfService.pm
+++ b/fs_selfservice/FS-SelfService/SelfService.pm
@@ -1,7 +1,7 @@
package FS::SelfService;
use strict;
-use vars qw($VERSION @ISA @EXPORT_OK $socket);
+use vars qw($VERSION @ISA @EXPORT_OK $socket %autoload );
use Exporter;
use Socket;
use FileHandle;
@@ -12,10 +12,19 @@ use Storable qw(nstore_fd fd_retrieve);
$VERSION = '0.03';
@ISA = qw( Exporter );
-@EXPORT_OK = qw( passwd );
$socket = "/usr/local/freeside/selfservice_socket";
+%autoload = (
+ 'passwd' => 'passwd/passwd',
+ 'chfn' => 'passwd/passwd',
+ 'chsh' => 'passwd/passwd',
+ 'login' => 'MyAccount/login',
+ 'customer_info' => 'MyAccount/customer_info',
+ 'invoice' => 'MyAccount/invoice',
+);
+@EXPORT_OK = keys %autoload;
+
$ENV{'PATH'} ='/usr/bin:/usr/ucb:/bin';
$ENV{'SHELL'} = '/bin/sh';
$ENV{'IFS'} = " \t\n";
@@ -49,17 +58,25 @@ Returns the empty value on success, or an error message on errors.
=cut
-sub passwd {
- my $param;
- if ( ref($_[0]) ) {
- $param = shift;
- } else {
- $param = { @_ };
- }
+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);
+ }';
- $param->{_packet} = 'passwd';
+ eval $eval;
+ die $@ if $@;
- simple_packet($param);
}
sub simple_packet {
@@ -78,7 +95,7 @@ sub simple_packet {
my $return = fd_retrieve(\*SOCK) or die "error reading result: $!";
die $return->{'_error'} if defined $return->{_error} && $return->{_error};
- $return->{'error'};
+ $return;
}
=back