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 )