From 97316d268e5751a1d08a0a37e5a0456f2ce4815c Mon Sep 17 00:00:00 2001 From: ivan Date: Wed, 9 Aug 2006 10:47:18 +0000 Subject: self-service interface: add proper password changer and prevent "Setup my services" provisioner from showing broken links for services not handled yet --- fs_selfservice/FS-SelfService/cgi/selfservice.cgi | 38 ++++++++++++++++++++++- 1 file changed, 37 insertions(+), 1 deletion(-) (limited to 'fs_selfservice/FS-SelfService/cgi/selfservice.cgi') diff --git a/fs_selfservice/FS-SelfService/cgi/selfservice.cgi b/fs_selfservice/FS-SelfService/cgi/selfservice.cgi index 034a684c6..4ab13090f 100644 --- a/fs_selfservice/FS-SelfService/cgi/selfservice.cgi +++ b/fs_selfservice/FS-SelfService/cgi/selfservice.cgi @@ -13,6 +13,7 @@ use FS::SelfService qw( login customer_info invoice list_pkgs part_svc_info provision_acct provision_external unprovision_svc + list_svcs myaccount_passwd ); $template_dir = '.'; @@ -62,7 +63,7 @@ $session_id = $cgi->param('session'); #order|pw_list XXX ??? $cgi->param('action') =~ - /^(myaccount|view_invoice|make_payment|payment_results|recharge_prepay|recharge_results|logout|change_bill|change_ship|provision|provision_svc|process_svc_acct|process_svc_external|delete_svc)$/ + /^(myaccount|view_invoice|make_payment|payment_results|recharge_prepay|recharge_results|logout|change_bill|change_ship|provision|provision_svc|process_svc_acct|process_svc_external|delete_svc|change_password|process_change_password)$/ or die "unknown action ". $cgi->param('action'); my $action = $1; @@ -257,6 +258,41 @@ sub delete_svc { ); } +sub change_password { + list_svcs( + 'session_id' => $session_id, + 'svcdb' => 'svc_acct', + ); +}; + +sub process_change_password { + + my $result = myaccount_passwd( + 'session_id' => $session_id, + map { $_ => $cgi->param($_) } qw( svcnum new_password new_password2 ) + ); + + if ( exists $result->{'error'} && $result->{'error'} ) { + + $action = 'change_password'; + return { + $cgi->Vars, + %{ list_svcs( 'session_id' => $session_id, + 'svcdb' => 'svc_acct', + ) + }, + #'svcnum' => $cgi->param('svcnum'), + 'error' => $result->{'error'} + }; + + } else { + + return $result; + + } + +} + #-- sub do_template { -- cgit v1.2.1 From 429a0d0d2a609c340b2966d0ac55730943445f47 Mon Sep 17 00:00:00 2001 From: ivan Date: Mon, 23 Oct 2006 08:30:17 +0000 Subject: remove -w to prevent warnings from messing up otherwise working CGIs --- fs_selfservice/FS-SelfService/cgi/selfservice.cgi | 1 + 1 file changed, 1 insertion(+) (limited to 'fs_selfservice/FS-SelfService/cgi/selfservice.cgi') diff --git a/fs_selfservice/FS-SelfService/cgi/selfservice.cgi b/fs_selfservice/FS-SelfService/cgi/selfservice.cgi index 4ab13090f..115586943 100644 --- a/fs_selfservice/FS-SelfService/cgi/selfservice.cgi +++ b/fs_selfservice/FS-SelfService/cgi/selfservice.cgi @@ -1,3 +1,4 @@ +#!/usr/bin/perl -T #!/usr/bin/perl -Tw use strict; -- cgit v1.2.1 From 08a346b0fcd9fa0a9ee70083afb6369ca49f268c Mon Sep 17 00:00:00 2001 From: ivan Date: Sun, 5 Nov 2006 17:36:09 +0000 Subject: add some self-service debugging --- fs_selfservice/FS-SelfService/cgi/selfservice.cgi | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) (limited to 'fs_selfservice/FS-SelfService/cgi/selfservice.cgi') diff --git a/fs_selfservice/FS-SelfService/cgi/selfservice.cgi b/fs_selfservice/FS-SelfService/cgi/selfservice.cgi index 115586943..edf0de749 100644 --- a/fs_selfservice/FS-SelfService/cgi/selfservice.cgi +++ b/fs_selfservice/FS-SelfService/cgi/selfservice.cgi @@ -2,7 +2,7 @@ #!/usr/bin/perl -Tw use strict; -use vars qw($cgi $session_id $form_max $template_dir); +use vars qw($DEBUG $cgi $session_id $form_max $template_dir); use subs qw(do_template); use CGI; use CGI::Carp qw(fatalsToBrowser); @@ -19,6 +19,8 @@ use FS::SelfService qw( login customer_info invoice $template_dir = '.'; +$DEBUG = 1; + $form_max = 255; $cgi = new CGI; @@ -68,6 +70,9 @@ $cgi->param('action') =~ or die "unknown action ". $cgi->param('action'); my $action = $1; +warn "calling $action sub\n" + if $DEBUG; +$FS::SelfService::DEBUG = $DEBUG; my $result = eval "&$action();"; die $@ if $@; @@ -79,7 +84,8 @@ if ( $result->{error} eq "Can't resume session" ) { #ick #warn $result->{'open_invoices'}; #warn scalar(@{$result->{'open_invoices'}}); -warn "processing template $action\n"; +warn "processing template $action\n" + if $DEBUG; do_template($action, { 'session_id' => $session_id, 'action' => $action, #so the menu knows what tab we're on... -- cgit v1.2.1 From f6a3faac851c7fd1baa6d13053aa55ae01394bcd Mon Sep 17 00:00:00 2001 From: ivan Date: Sun, 5 Nov 2006 18:03:59 +0000 Subject: have card_type be an optional param anyway --- fs_selfservice/FS-SelfService/cgi/selfservice.cgi | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) (limited to 'fs_selfservice/FS-SelfService/cgi/selfservice.cgi') diff --git a/fs_selfservice/FS-SelfService/cgi/selfservice.cgi b/fs_selfservice/FS-SelfService/cgi/selfservice.cgi index edf0de749..dea6e4a4c 100644 --- a/fs_selfservice/FS-SelfService/cgi/selfservice.cgi +++ b/fs_selfservice/FS-SelfService/cgi/selfservice.cgi @@ -128,9 +128,12 @@ sub payment_results { 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'); + + if ( $cgi->param('card_type' ) { + 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; -- cgit v1.2.1 From 7d5f7731cd62642051cfa8915924eda1f70a267d Mon Sep 17 00:00:00 2001 From: ivan Date: Sun, 5 Nov 2006 18:06:33 +0000 Subject: for want of a paren --- fs_selfservice/FS-SelfService/cgi/selfservice.cgi | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'fs_selfservice/FS-SelfService/cgi/selfservice.cgi') diff --git a/fs_selfservice/FS-SelfService/cgi/selfservice.cgi b/fs_selfservice/FS-SelfService/cgi/selfservice.cgi index dea6e4a4c..ed6d623d9 100644 --- a/fs_selfservice/FS-SelfService/cgi/selfservice.cgi +++ b/fs_selfservice/FS-SelfService/cgi/selfservice.cgi @@ -129,7 +129,7 @@ sub payment_results { #or $error ||= $init_data->{msgcat}{invalid_card}; #. $self->payinfo; or die "invalid card"; #!!! - if ( $cgi->param('card_type' ) { + if ( $cgi->param('card_type') ) { 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'); -- cgit v1.2.1 From b5bd90f5ee35af1ca7989bf92dc50ada7c2cbcb8 Mon Sep 17 00:00:00 2001 From: jeff Date: Mon, 27 Nov 2006 07:11:53 +0000 Subject: order package from self-service --- fs_selfservice/FS-SelfService/cgi/selfservice.cgi | 61 +++++++++++++++++++++-- 1 file changed, 57 insertions(+), 4 deletions(-) (limited to 'fs_selfservice/FS-SelfService/cgi/selfservice.cgi') diff --git a/fs_selfservice/FS-SelfService/cgi/selfservice.cgi b/fs_selfservice/FS-SelfService/cgi/selfservice.cgi index ed6d623d9..0f8979cd8 100644 --- a/fs_selfservice/FS-SelfService/cgi/selfservice.cgi +++ b/fs_selfservice/FS-SelfService/cgi/selfservice.cgi @@ -1,4 +1,3 @@ -#!/usr/bin/perl -T #!/usr/bin/perl -Tw use strict; @@ -11,7 +10,7 @@ use HTML::Entities; use FS::SelfService qw( login customer_info invoice payment_info process_payment process_prepay - list_pkgs + list_pkgs order_pkg signup_info part_svc_info provision_acct provision_external unprovision_svc list_svcs myaccount_passwd @@ -66,7 +65,7 @@ $session_id = $cgi->param('session'); #order|pw_list XXX ??? $cgi->param('action') =~ - /^(myaccount|view_invoice|make_payment|payment_results|recharge_prepay|recharge_results|logout|change_bill|change_ship|provision|provision_svc|process_svc_acct|process_svc_external|delete_svc|change_password|process_change_password)$/ + /^(myaccount|view_invoice|make_payment|payment_results|recharge_prepay|recharge_results|logout|change_bill|change_ship|customer_order_pkg|process_order_pkg|provision|provision_svc|process_svc_acct|process_svc_external|delete_svc|change_password|process_change_password)$/ or die "unknown action ". $cgi->param('action'); my $action = $1; @@ -76,7 +75,9 @@ $FS::SelfService::DEBUG = $DEBUG; my $result = eval "&$action();"; die $@ if $@; -if ( $result->{error} eq "Can't resume session" ) { #ick +if ( $result->{error} eq "Can't resume session" + || $result->{error} eq "Expired session" ) { #ick + do_template('login',{}); exit; } @@ -107,6 +108,58 @@ sub view_invoice { } +sub customer_order_pkg { + my $init_data = signup_info( 'customer_session_id' => $session_id ); + return $init_data if ( $init_data->{'error'} ); + + my $customer_info = customer_info( 'session_id' => $session_id ); + return $customer_info if ( $customer_info->{'error'} ); + + return { + ( map { $_ => $init_data->{$_} } + qw( part_pkg security_phrase svc_acct_pop ), + ), + %$customer_info, + }; +} + +sub process_order_pkg { + + my $results = ''; + + unless ( length($cgi->param('_password')) ) { + my $init_data = signup_info( 'customer_session_id' => $session_id ); + $results = { 'error' => $init_data->{msgcat}{empty_password} }; + $results = { 'error' => $init_data->{error} } if($init_data->{error}); + } + if ( $cgi->param('_password') ne $cgi->param('_password2') ) { + my $init_data = signup_info( 'customer_session_id' => $session_id ); + $results = { 'error' => $init_data->{msgcat}{passwords_dont_match} }; + $results = { 'error' => $init_data->{error} } if($init_data->{error}); + $cgi->param('_password', ''); + $cgi->param('_password2', ''); + } + + $results ||= order_pkg ( + 'session_id' => $session_id, + map { $_ => $cgi->param($_) } + qw( custnum pkgpart username _password _password2 sec_phrase popnum ) + ); + + + if ( $results->{'error'} ) { + $action = 'customer_order_pkg'; + return { + $cgi->Vars, + %{customer_order_pkg()}, + 'error' => ''. $results->{'error'}. '', + }; + } else { + return $results; + } + +} + sub make_payment { payment_info( 'session_id' => $session_id ); } -- cgit v1.2.1 From dbb388836b7951a3db49deda05a1ff9ba5125c17 Mon Sep 17 00:00:00 2001 From: jeff Date: Thu, 30 Nov 2006 02:27:57 +0000 Subject: prepaid download/upload tracking --- fs_selfservice/FS-SelfService/cgi/selfservice.cgi | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) (limited to 'fs_selfservice/FS-SelfService/cgi/selfservice.cgi') diff --git a/fs_selfservice/FS-SelfService/cgi/selfservice.cgi b/fs_selfservice/FS-SelfService/cgi/selfservice.cgi index 0f8979cd8..1a2c74a64 100644 --- a/fs_selfservice/FS-SelfService/cgi/selfservice.cgi +++ b/fs_selfservice/FS-SelfService/cgi/selfservice.cgi @@ -65,7 +65,7 @@ $session_id = $cgi->param('session'); #order|pw_list XXX ??? $cgi->param('action') =~ - /^(myaccount|view_invoice|make_payment|payment_results|recharge_prepay|recharge_results|logout|change_bill|change_ship|customer_order_pkg|process_order_pkg|provision|provision_svc|process_svc_acct|process_svc_external|delete_svc|change_password|process_change_password)$/ + /^(myaccount|view_invoice|make_payment|payment_results|recharge_prepay|recharge_results|logout|change_bill|change_ship|customer_order_pkg|process_order_pkg|provision|provision_svc|process_svc_acct|process_svc_external|delete_svc|view_usage||change_password|process_change_password)$/ or die "unknown action ". $cgi->param('action'); my $action = $1; @@ -321,6 +321,14 @@ sub delete_svc { ); } +sub view_usage { + list_svcs( + 'session_id' => $session_id, + 'svcdb' => 'svc_acct', + 'ncancelled' => 1, + ); +} + sub change_password { list_svcs( 'session_id' => $session_id, -- cgit v1.2.1 From 6194551336a925ae5455cede68a7f73660b06bb6 Mon Sep 17 00:00:00 2001 From: jeff Date: Thu, 7 Dec 2006 02:40:32 +0000 Subject: retouch bandwidth countdown --- fs_selfservice/FS-SelfService/cgi/selfservice.cgi | 31 +++++++++++++++++++++-- 1 file changed, 29 insertions(+), 2 deletions(-) (limited to 'fs_selfservice/FS-SelfService/cgi/selfservice.cgi') diff --git a/fs_selfservice/FS-SelfService/cgi/selfservice.cgi b/fs_selfservice/FS-SelfService/cgi/selfservice.cgi index 1a2c74a64..e2fd7f6a4 100644 --- a/fs_selfservice/FS-SelfService/cgi/selfservice.cgi +++ b/fs_selfservice/FS-SelfService/cgi/selfservice.cgi @@ -10,7 +10,7 @@ use HTML::Entities; use FS::SelfService qw( login customer_info invoice payment_info process_payment process_prepay - list_pkgs order_pkg signup_info + list_pkgs order_pkg signup_info order_recharge part_svc_info provision_acct provision_external unprovision_svc list_svcs myaccount_passwd @@ -65,7 +65,7 @@ $session_id = $cgi->param('session'); #order|pw_list XXX ??? $cgi->param('action') =~ - /^(myaccount|view_invoice|make_payment|payment_results|recharge_prepay|recharge_results|logout|change_bill|change_ship|customer_order_pkg|process_order_pkg|provision|provision_svc|process_svc_acct|process_svc_external|delete_svc|view_usage||change_password|process_change_password)$/ + /^(myaccount|view_invoice|make_payment|payment_results|recharge_prepay|recharge_results|logout|change_bill|change_ship|customer_order_pkg|process_order_pkg|process_order_recharge|provision|provision_svc|process_svc_acct|process_svc_external|delete_svc|view_usage||change_password|process_change_password)$/ or die "unknown action ". $cgi->param('action'); my $action = $1; @@ -160,6 +160,33 @@ sub process_order_pkg { } +sub process_order_recharge { + + my $results = ''; + + $results ||= order_recharge ( + 'session_id' => $session_id, + map { $_ => $cgi->param($_) } + qw( svcnum ) + ); + + + if ( $results->{'error'} ) { + $action = 'view_usage'; + if ($results->{'error'} eq '_decline') { + $results->{'error'} = "There has been an error processing your account. Please contact customer support." + } + return { + $cgi->Vars, + %{view_usage()}, + 'error' => ''. $results->{'error'}. '', + }; + } else { + return $results; + } + +} + sub make_payment { payment_info( 'session_id' => $session_id ); } -- cgit v1.2.1 From 66bf9d2b3998894588d73a10a459aa1453283ef1 Mon Sep 17 00:00:00 2001 From: jeff Date: Fri, 5 Jan 2007 05:19:35 +0000 Subject: more self-servicey stuff (change package, detailed usage) --- fs_selfservice/FS-SelfService/cgi/selfservice.cgi | 58 +++++++++++++++++++++-- 1 file changed, 55 insertions(+), 3 deletions(-) (limited to 'fs_selfservice/FS-SelfService/cgi/selfservice.cgi') diff --git a/fs_selfservice/FS-SelfService/cgi/selfservice.cgi b/fs_selfservice/FS-SelfService/cgi/selfservice.cgi index e2fd7f6a4..1fc2e5f8b 100644 --- a/fs_selfservice/FS-SelfService/cgi/selfservice.cgi +++ b/fs_selfservice/FS-SelfService/cgi/selfservice.cgi @@ -7,13 +7,14 @@ use CGI; use CGI::Carp qw(fatalsToBrowser); use Text::Template; use HTML::Entities; +use Date::Format; use FS::SelfService qw( login customer_info invoice payment_info process_payment process_prepay list_pkgs order_pkg signup_info order_recharge part_svc_info provision_acct provision_external - unprovision_svc - list_svcs myaccount_passwd + unprovision_svc change_pkg + list_svcs list_svc_usage myaccount_passwd ); $template_dir = '.'; @@ -65,7 +66,7 @@ $session_id = $cgi->param('session'); #order|pw_list XXX ??? $cgi->param('action') =~ - /^(myaccount|view_invoice|make_payment|payment_results|recharge_prepay|recharge_results|logout|change_bill|change_ship|customer_order_pkg|process_order_pkg|process_order_recharge|provision|provision_svc|process_svc_acct|process_svc_external|delete_svc|view_usage||change_password|process_change_password)$/ + /^(myaccount|view_invoice|make_payment|payment_results|recharge_prepay|recharge_results|logout|change_bill|change_ship|customer_order_pkg|process_order_pkg|customer_change_pkg|process_change_pkg|process_order_recharge|provision|provision_svc|process_svc_acct|process_svc_external|delete_svc|view_usage|view_usage_details|change_password|process_change_password)$/ or die "unknown action ". $cgi->param('action'); my $action = $1; @@ -123,6 +124,24 @@ sub customer_order_pkg { }; } +sub customer_change_pkg { + my $init_data = signup_info( 'customer_session_id' => $session_id ); + return $init_data if ( $init_data->{'error'} ); + + my $customer_info = customer_info( 'session_id' => $session_id ); + return $customer_info if ( $customer_info->{'error'} ); + + return { + ( map { $_ => $init_data->{$_} } + qw( part_pkg security_phrase svc_acct_pop ), + ), + ( map { $_ => $cgi->param($_) } + qw( pkgnum pkg ) + ), + %$customer_info, + }; +} + sub process_order_pkg { my $results = ''; @@ -160,6 +179,30 @@ sub process_order_pkg { } +sub process_change_pkg { + + my $results = ''; + + $results ||= change_pkg ( + 'session_id' => $session_id, + map { $_ => $cgi->param($_) } + qw( pkgpart pkgnum ) + ); + + + if ( $results->{'error'} ) { + $action = 'customer_change_pkg'; + return { + $cgi->Vars, + %{customer_change_pkg()}, + 'error' => ''. $results->{'error'}. '', + }; + } else { + return $results; + } + +} + sub process_order_recharge { my $results = ''; @@ -356,6 +399,15 @@ sub view_usage { ); } +sub view_usage_details { + list_svc_usage( + 'session_id' => $session_id, + 'svcnum' => $cgi->param('svcnum'), + 'beginning' => $cgi->param('beginning') || '', + 'ending' => $cgi->param('ending') || '', + ); +} + sub change_password { list_svcs( 'session_id' => $session_id, -- cgit v1.2.1 From 25f6e4198b75ba4299753eceaa96f35739581ed9 Mon Sep 17 00:00:00 2001 From: ivan Date: Mon, 22 Jan 2007 02:42:08 +0000 Subject: accept CVV2 on self-service manual payment screen --- fs_selfservice/FS-SelfService/cgi/selfservice.cgi | 8 ++++++++ 1 file changed, 8 insertions(+) (limited to 'fs_selfservice/FS-SelfService/cgi/selfservice.cgi') diff --git a/fs_selfservice/FS-SelfService/cgi/selfservice.cgi b/fs_selfservice/FS-SelfService/cgi/selfservice.cgi index 1fc2e5f8b..975203dc8 100644 --- a/fs_selfservice/FS-SelfService/cgi/selfservice.cgi +++ b/fs_selfservice/FS-SelfService/cgi/selfservice.cgi @@ -238,6 +238,10 @@ sub payment_results { use Business::CreditCard; + #we should only do basic checking here for DoS attacks and things + #that couldn't be constructed by the web form... let process_payment() do + #the rest, it gives better error messages + $cgi->param('amount') =~ /^\s*(\d+(\.\d{2})?)\s*$/ or die "illegal amount"; #!!! my $amount = $1; @@ -258,6 +262,9 @@ sub payment_results { or die "not a ". $cgi->param('card_type'); } + $cgi->param('paycvv') =~ /^\s*(.{0,4})\s*$/ or die "illegal CVV2"; + my $paycvv = $1; + $cgi->param('month') =~ /^(\d{2})$/ or die "illegal month"; my $month = $1; $cgi->param('year') =~ /^(\d{4})$/ or die "illegal year"; @@ -294,6 +301,7 @@ sub payment_results { 'session_id' => $session_id, 'amount' => $amount, 'payinfo' => $payinfo, + 'paycvv' => $paycvv, 'month' => $month, 'year' => $year, 'payname' => $payname, -- cgit v1.2.1