[Astpp-commit] SF.net SVN: astpp:[2276] trunk/freeswitch/astpp-fs-xml.pl.mod_perl
Brought to you by:
darrenkw
From: <dar...@us...> - 2009-10-06 03:39:38
|
Revision: 2276 http://astpp.svn.sourceforge.net/astpp/?rev=2276&view=rev Author: darrenkw Date: 2009-10-06 03:39:24 +0000 (Tue, 06 Oct 2009) Log Message: ----------- Remove temporary file. Removed Paths: ------------- trunk/freeswitch/astpp-fs-xml.pl.mod_perl Deleted: trunk/freeswitch/astpp-fs-xml.pl.mod_perl =================================================================== --- trunk/freeswitch/astpp-fs-xml.pl.mod_perl 2009-10-04 20:27:10 UTC (rev 2275) +++ trunk/freeswitch/astpp-fs-xml.pl.mod_perl 2009-10-06 03:39:24 UTC (rev 2276) @@ -1,350 +0,0 @@ -#!/usr/bin/perl -# -# ASTPP - Open Source Voip Billing -# -# Copyright (C) 2008, Aleph Communications -# -# Darren Wiebe (da...@al...) -# -# This program is Free Software and is distributed under the -# terms of the GNU General Public License version 2. -############################################################ -# -# Usage-example: -# - -use DBI; -use CGI; -use CGI qw/:standard Vars/; -use ASTPP; -use strict; -use lib qw(.); - -use vars - qw($params $ASTPP @output $config $freeswitch_db $astpp_db $verbosity ); -use Locale::gettext_pp qw(:locale_h); -require "/usr/local/astpp/astpp-common.pl"; -$ENV{LANGUAGE} = "en"; # de, es, br - whatever -print STDERR "Interface language is set to: " . $ENV{LANGUAGE} . "\n"; -bindtextdomain( "astpp", "/usr/local/share/locale" ); -textdomain("astpp"); -$verbosity = 2; -@output = ("STDERR"); -$ASTPP = ASTPP->new; -$ASTPP->set_verbosity(4); #Tell ASTPP debugging how verbose we want to be. - -sub initialize() { - $config = $ASTPP->load_config(); - $astpp_db = $ASTPP->connect_db( - dbengine => $config->{astpp_dbengine}, - dbname => $config->{dbname}, - dbhost => $config->{dbhost}, - dbuser => $config->{dbuser}, - dbpass => $config->{dbpass} - ); - $ASTPP->set_astpp_db($astpp_db); - $config = $ASTPP->load_config_db( config => $config ) if $astpp_db; - $freeswitch_db = $ASTPP->connect_db( - dbengine => "MySQL", - dbname => $config->{freeswitch_dbname}, - dbhost => $config->{freeswitch_dbhost}, - dbuser => $config->{freeswitch_dbuser}, - dbpass => $config->{freeswitch_dbpass} - ); - $ASTPP->set_freeswitch_db($freeswitch_db); -} - -################# Programs start here ####################################### -&initialize; -my ( $ipinfo, $xml, $maxlength, $maxmins, $callstatus,$astppdid,$didinfo ); -foreach my $param ( param() ) { - $params->{$param} = param($param); - $ASTPP->debug( debug => "$param $params->{$param}" ); -} -$xml = header( -type => 'text/plain' ); - -$ASTPP->debug( - debug => "Destination = $params->{'Caller-Destination-Number'}" ); - -if ( $params->{section} eq "dialplan" ) { - # Check to see if this is a DID. If it is we handle it differently. - # - $didinfo = $ASTPP->get_did( did => $params->{'Caller-Destination-Number'}); - if ($didinfo->{number}) { - $astppdid = "ASTPP-DID"; - $ASTPP->debug( debug => "This is a call for a DID: "); - $params->{variable_accountcode} = $didinfo->{account}; - } - - - if ( !$params->{variable_accountcode} ) { - - # First we strip off X digits to see if this account is prepending numbers - # as authentications - $ASTPP->debug( debug => "Checking CC Number: " - . $params->{'Caller-Destination-Number'} ); - my $cc = substr( $params->{'Caller-Destination-Number'}, - 0, $config->{cardlength} ); - my $sql = - $astpp_db->prepare("SELECT number FROM accounts WHERE cc = $cc"); - $sql->execute; - my $record = $sql->fetchrow_hashref; - $sql->finish; - $params->{variable_accountcode} = $record->{cardnum} - if ( $record->{cardnum} ); - } - if ( !$params->{variable_accountcode} ) { - $ASTPP->debug( - debug => "Checking IP Address:" . $params->{'Hunt-Network-Addr'} ); - $ipinfo = $ASTPP->ip_address_authenticate( - ip_address => $params->{'Hunt-Network-Addr'}, - destination => $params->{'Caller-Destination-Number'} - ); - if ($ipinfo->{account} ne "") { - $params->{variable_accountcode} = $ipinfo->{account}; - $params->{'Caller-Destination-Number'} =~ s/$ipinfo->{prefix}//g; - } - } - - $xml = $ASTPP->fs_dialplan_xml_header( - xml => $xml, - destination_number => $params->{'Caller-Destination-Number'}, - DID => $didinfo->{number}, - IP => $ipinfo->{account} - ); - - $ASTPP->debug( debug => -"$params->{variable_accountcode}, $params->{'Caller-Destination-Number'}" - ); - - my $carddata = $ASTPP->get_account(account => $params->{variable_accountcode}); - - if ( !$carddata->{number} ) - { # Check to see if the account exists. If not then exit. - $ASTPP->debug( debug => "CALLSTATUS 2" ); - $ASTPP->debug( debug => "CANNOT RETRIEVE CARD" ); - $xml .= - "<action application=\"reject\" data=\"CANNOT RETRIEVE ACCOUNT\"/>\n"; - $xml = $ASTPP->fs_dialplan_xml_footer( xml => $xml ); -# print $xml; - $ASTPP->debug( debug => "Returning nothing so dialplan can continue." ); - print ""; - exit(0); - } - - if ( $carddata->{dialed_modify} ) { - my @regexs = split( m/,/m, $carddata->{dialed_modify} ); - foreach my $regex (@regexs) { - $regex =~ s/"//g; #Strip off quotation marks - my ( $grab, $replace ) = split( m!/!i, $regex ) - ; # This will split the variable into a "grab" and "replace" as needed - $ASTPP->debug( debug => "Grab: $grab" ); - $ASTPP->debug( debug => "Replacement: $replace" ); - $ASTPP->debug( debug => - "Phone Before: $params->{'Caller-Destination-Number'}" ); - $$params->{'Caller-Destination-Number'} =~ s/$grab/$replace/is; - $ASTPP->debug( debug => - "Phone After: $params->{'Caller-Destination-Number'}" ); - } - } - - $ASTPP->debug( debug => "FINDING LIMIT FOR: " . $carddata->{number} ); - my $pricelistdata = $ASTPP->get_pricelist( - pricelist => $carddata->{pricelist}); - my $routeinfo; - ( $callstatus, $maxlength, $routeinfo ) = $ASTPP->max_length( - destination => $params->{'Caller-Destination-Number'}, - call_max_length => $config->{call_max_length}, - max_free_length => $config->{max_free_length}, - markup => $pricelistdata->{markup}, - account => $carddata->{number}, - account_creditlimit => $carddata->{credit_limit}, - account_maxchannels => $carddata->{maxchannels}, - debug => $config->{debug}, - account_pricelist => $carddata->{pricelist}, - account_reseller => $carddata->{reseller}, - default_brand => $config->{default_brand}, - ); -# &max_length( $astpp_db, $config, $carddata, -# $params->{'Caller-Destination-Number'} ); - -# my $routeinfo = &get_route( -# $astpp_db, $config, -# $params->{'Caller-Destination-Number'}, -# $carddata->{pricelist}, $carddata,$astppdid -# ); - - $ASTPP->debug( debug => "Cost: " . $routeinfo->{cost} ); - $ASTPP->debug( debug => "Pricelist: " . $routeinfo->{pricelist} ); - my $minimumcharge = $routeinfo->{cost}; - my @reseller_list; - $ASTPP->debug( debug => "CALLSTATUS: $callstatus MAX_LENGTH: $maxlength" ); - - if (!$routeinfo->{cost} && !$routeinfo->{pricelist}) { - $ASTPP->debug( debug => "COULD NOT FIND ROUTE. EXITING SO DIALPLAN CAN TAKE OVER" ); - exit(0); - } - while ( $carddata->{reseller} && $maxlength > 1 && $callstatus == 1 ) { - $ASTPP->debug( debug => "FINDING LIMIT FOR: $carddata->{reseller}" ); - $carddata = &ASTPP->get_account( account => $carddata->{reseller} ); - push @reseller_list, $carddata->{number}; - $ASTPP->debug( debug => -"ADDING $carddata->{number} to the list of resellers for this account" - ); - my ( $resellercallstatus, $resellermaxlength, $routeinfo ) = $ASTPP->max_length( - destination => $params->{'Caller-Destination-Number'}, - call_max_length => $config->{call_max_length}, - max_free_length => $config->{max_free_length}, - markup => $pricelistdata->{markup}, - account => $carddata->{number}, - account_creditlimit => $carddata->{credit_limit}, - account_maxchannels => $carddata->{maxchannels}, - debug => $config->{debug}, - account_pricelist => $carddata->{pricelist}, - account_reseller => $carddata->{reseller}, - default_brand => $config->{default_brand}, - - ); - - -# my ( $resellercallstatus, $resellermaxlength ) = -# &max_length( $astpp_db, $config, $carddata, -# $params->{'Caller-Destination-Number'} ); -# -# my $routeinfo = &get_route( -# $astpp_db, $config, -# $params->{'Caller-Destination-Number'}, -# $carddata->{pricelist}, $carddata -# ); - if ( $resellercallstatus != 1 ) { - $carddata->{reseller} = ""; - $callstatus = $resellercallstatus; - } - elsif ( $resellermaxlength < $maxlength ) { - $maxlength = $resellermaxlength; - } - $ASTPP->debug( debug => -"Reseller cost = $routeinfo->{cost} and minimum charge is $minimumcharge" - ); - if ( $resellermaxlength < 1 || $routeinfo->{cost} > $minimumcharge ) { - $ASTPP->debug( debug => - "Reseller call is priced too cheap! Call being barred!" ); - $xml .= -"<action application=\"reject\" data=\"Reseller call is priced too cheap! Call being barred!\"/>\n"; - $xml = $ASTPP->fs_dialplan_xml_footer( xml => $xml ); - print $xml; - exit(0); - } - $ASTPP->debug( debug => "RESELLER Max Length: $resellermaxlength" ); - $ASTPP->debug( debug => "RESELLER Call Status: $resellercallstatus" ); - } - - if ( $config->{debug} == 1 ) { - $ASTPP->debug( debug => "PRINTING LIST OF RESELLERS FOR THIS ACCOUNT" ); - foreach my $reseller (@reseller_list) { - $ASTPP->debugb( debug => "RESELLER: $reseller" ); - } - } - - $ASTPP->debug("Max Call Length: $maxlength minutes"); - $ASTPP->debug("Call Status: $callstatus"); - - if ( $maxlength <= 1 ) { - $ASTPP->debug( debug => "NOT ENOUGH CREDIT" ); - $xml .= "<action application=\"reject\" data=\"NOT ENOUGH CREDIT\"/>\n"; - $xml = $ASTPP->fs_dialplan_xml_footer( xml => $xml ); - print $xml; - exit(0); - } elsif ($config->{call_max_length} && $maxlength < $config->{call_max_length} / 1000){ - $maxlength = $config->{call_max_length} / 1000; - } - - $xml = $ASTPP->fs_dialplan_xml_timelimit( - xml => $xml, - max_length => $maxlength, - accountcode => $carddata->{number} - ); - -# Set the timelimit as well as other variables which are needed in the dialplan. - my $timelimit = - "L(" . sprintf( "%.0f", $maxlength * 60 * 1000 ) . ":60000:30000)"; - - $ASTPP->debug( debug => "Looking for outbound Route" ); -# my $routeinfo = &get_route( -# $astpp_db, $config, -# $params->{'Caller-Destination-Number'}, -# $carddata->{pricelist}, $carddata, $astppdid -# ); - - if ($didinfo->{number} ) { - $ASTPP->debug( debug => "THIS IS A DID CALL: $xml"); - my ($returned_data) = $ASTPP->fs_dialplan_xml_did( - did => $params->{'Caller-Destination-Number'} - ); - $xml .= $returned_data; - } else { - # Get the list of routes for the phone number. - my @outboundroutes = - &get_outbound_routes( $astpp_db, $params->{'Caller-Destination-Number'}, - $carddata, $routeinfo, @reseller_list ); - foreach my $route (@outboundroutes) { - $ASTPP->debug( debug => - "$route->{trunk}: cost $route->{cost}\t $route->{pattern}" ); - if ( $route->{cost} > $routeinfo->{cost} ) { - $ASTPP->debug( debug => -"$route->{trunk}: $route->{cost} > $routeinfo->{cost}, skipping" - ); - } - else { - my ($returned_data,$junk) = $ASTPP->fs_dialplan_xml_bridge( - destination_number => $params->{'Caller-Destination-Number'}, - route_prepend => $route->{prepend}, - trunk_name => $route->{trunk}, - route_id => $route->{id} - ); - $xml .= $returned_data; - } - } - } - $xml = $ASTPP->fs_dialplan_xml_footer( xml => $xml ); - $ASTPP->debug( debug => $xml ); - print $xml; -} -elsif ( $params->{section} eq "directory" ) { - - #hostname darren-laptop - #section directory - #tag_name domain - #key_name name - #key_value 192.168.2.119 - #action sip_auth - #sip_profile internal - #sip_user_agent Zoiper rev.1118 - #sip_auth_username 1000 - #sip_auth_realm 192.168.2.119 - #sip_auth_nonce 83005e62-7e13-11dd-9eb1-25560b0691a8 - #sip_auth_uri sip:192.168.2.119;transport=UDP - #sip_auth_qop auth - #sip_auth_cnonce a79169d2656f292a - #sip_auth_nc 00000001 - #sip_auth_response 4475154556879ec2017978f1347192a6 - #sip_auth_method REGISTER - #key id - #user 1000 - #domain 192.168.2.119 - #ip 192.168.2.119 - - if ($params->{'user'}) { - $xml = $ASTPP->fs_directory_xml_header( xml => $xml ); - $xml = $ASTPP->fs_directory_xml( - xml => $xml, - ip => $params->{'ip'}, - user => $params->{'user'}, - domain => $params->{'domain'} - ); - $xml = $ASTPP->fs_directory_xml_footer( xml => $xml ); - } - $ASTPP->debug( debug => $xml ); - print $xml; -} -exit(0); This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |