App-SilverSplash
view release on metacpan or search on metacpan
lib/App/SilverSplash/Apache2.pm view on Meta::CPAN
}
elsif ( $r->method_number == Apache2::Const::M_POST ) {
my $terms = $req->param('terms');
unless ($terms) {
$r->method_number(Apache2::Const::M_GET);
return $class->free($r);
}
# they clicked yes, authenticate
my $added = App::SilverSplash::IPTables->add_to_ads_chain( $mac, $ip );
unless ($added) {
$r->log->error("$$ error adding mac $mac to ads chain: $@");
return Apache2::Const::SERVER_ERROR;
}
my $location =
$class->make_post_url( $Config->sl_splash_href,
URI::Escape::uri_escape($url) );
$r->headers_out->set( Location => $location );
$r->no_cache(1);
return Apache2::Const::REDIRECT;
}
}
sub paid {
my ( $class, $r ) = @_;
my $ip = $r->connection->remote_ip;
my $mac = $class->mac_from_ip($ip);
return Apache2::Const::NOT_FOUND unless $mac;
my $req = Apache2::Request->new($r);
my $url = $req->param('url');
# serve the page or process the request
if ( $r->method_number == Apache2::Const::M_GET ) {
my $p = Business::PayPal->new;
my $id = $p->id;
my $b = $p->button(
'item_number' => 1,
'business' => $Config->sl_paypal_account,
'item_name' => 'airCloud WiFi Purchase',
'notify_url' => 'http://'
. $Config->sl_dmz_listen
. "/ipn_validate?url=$url&id=$id",
'return' => $Config->sl_splash_href,
'cancel_return' => 'http://'
. $class->lan_ip
. ":9999/paid?url=$url",
'amount' => '0.05',
'quantity' => 1,
'button_image' => CGI::image_button(
-name => 'submit',
-src =>
'http://s1.slwifi.com/images/buttons/3_hour_service.png',
-alt => 'Make payments with PayPal',
),
);
$class->set( "paypal_id|$id" => "$mac|$ip" );
my %tmpl = (
perlbal => 'http://'
. $class->lan_ip . ':'
. $Config->sl_perlbal_port,
cdn_host => $Config->sl_cdn_host,
mac => URI::Escape::uri_escape($mac),
url => $url, #URI::Escape::uri_escape($url),
cp_mac => URI::Escape::uri_escape( $class->wan_mac ),
provider_href => $Config->sl_account_website,
provider_logo => $Config->sl_account_logo,
button => $b,
);
my $output;
$Template->process( 'paid.tmpl', \%tmpl, \$output )
|| die $Template->error;
$r->content_type('text/html; charset=UTF-8');
$r->no_cache(1);
$r->rflush;
$r->print($output);
return Apache2::Const::OK;
}
elsif ( $r->method_number == Apache2::Const::M_POST ) {
my $terms = $req->param('terms');
unless ($terms) {
$r->method_number(Apache2::Const::M_GET);
return $class->free($r);
}
# they clicked yes, authenticate
my $added = App::SilverSplash::IPTables->add_to_paid_chain( $mac, $ip );
unless ($added) {
$r->log->error("$$ error adding mac $mac to paid chain: $@");
return Apache2::Const::SERVER_ERROR;
}
}
$mac = URI::Escape::uri_escape($mac);
$url = URI::Escape::uri_escape($url);
# else we have an authenticated user
my $location = $class->make_post_url( $Config->sl_splash_href, $url );
$r->headers_out->set( Location => $location );
$r->no_cache(1);
return Apache2::Const::REDIRECT;
}
sub make_post_url {
my ( $class, $splash_url, $dest_url ) = @_;
( run in 1.566 second using v1.01-cache-2.11-cpan-df04353d9ac )