[freeside-commits] branch master updated. 30fabfe8ce8c9a48fa96c6a50d48b32161b1680f

Christopher Burger burgerc at freeside.biz
Tue Sep 11 08:28:06 PDT 2018


The branch, master has been updated
       via  30fabfe8ce8c9a48fa96c6a50d48b32161b1680f (commit)
      from  dc04294e8be2526714fb652fed479d379e444a32 (commit)

Those revisions listed above that are new to this repository have
not appeared on any other notification email; so we list those
revisions in full, below.

- Log -----------------------------------------------------------------
commit 30fabfe8ce8c9a48fa96c6a50d48b32161b1680f
Author: Christopher Burger <burgerc at freeside.biz>
Date:   Tue Sep 11 11:27:42 2018 -0400

    RT# 39340 - configured the minimal selfservice to get mac address from radius account table

diff --git a/FS/FS/ClientAPI/MyAccount.pm b/FS/FS/ClientAPI/MyAccount.pm
index 263b3116b..57d42982d 100644
--- a/FS/FS/ClientAPI/MyAccount.pm
+++ b/FS/FS/ClientAPI/MyAccount.pm
@@ -184,6 +184,29 @@ sub skin_info {
 
 }
 
+sub get_mac_address {
+  my $p = shift;
+
+## access radius exports acct tables to get mac
+  my @part_export = ();
+  @part_export = (
+    qsearch( 'part_export', { 'exporttype' => 'sqlradius' } ),
+    qsearch( 'part_export', { 'exporttype' => 'sqlradius_withdomain' } ),
+    qsearch( 'part_export', { 'exporttype' => 'broadband_sqlradius' } ),
+  );
+
+  my @sessions;
+  foreach my $part_export (@part_export) {
+    push @sessions, ( @{ $part_export->usage_sessions( {
+      'ip' => $p->{'ip'},
+    } ) } );
+  }
+
+  my $mac = $sessions[0]->{'callingstationid'};
+
+  return { 'mac_address' => $mac, };
+}
+
 sub login_info {
   my $p = shift;
 
@@ -239,8 +262,11 @@ sub login {
 
   } elsif ( $p->{'domain'} eq 'ip_mac' ) {
 
-      my $svc_broadband = qsearchs( 'svc_broadband', { 'mac_addr' => $p->{'username'} } );
-      return { error => 'IP address not found' }
+      my $mac_address = $p->{'username'};
+      $mac_address =~ s/\://g;
+
+      my $svc_broadband = qsearchs( 'svc_broadband', { 'mac_addr' => $mac_address } );
+      return { error => 'MAC address not found '.$p->{'username'} }
         unless $svc_broadband;
       $svc_x = $svc_broadband;
 
diff --git a/FS/FS/ClientAPI_XMLRPC.pm b/FS/FS/ClientAPI_XMLRPC.pm
index dcf34fdaa..db0537c02 100644
--- a/FS/FS/ClientAPI_XMLRPC.pm
+++ b/FS/FS/ClientAPI_XMLRPC.pm
@@ -227,6 +227,7 @@ sub ss2clientapi {
   'quotation_add_pkg'         => 'MyAccount/quotation/quotation_add_pkg',
   'quotation_remove_pkg'      => 'MyAccount/quotation/quotation_remove_pkg',
   'quotation_order'           => 'MyAccount/quotation/quotation_order',
+  'get_mac_address'           => 'MyAccount/get_mac_address',
 
   'freesideinc_service'       => 'Freeside/freesideinc_service',
   };
diff --git a/min_selfservice/index.php b/min_selfservice/index.php
index c7e20c503..25ec33472 100644
--- a/min_selfservice/index.php
+++ b/min_selfservice/index.php
@@ -10,7 +10,7 @@
     <TABLE BORDER=0 CELLSPACING=2 CELLPADDING=0>
       <TR>
         <TD>
-          Sorry we were unable to locate your account with ip <? echo $username; ?>  .
+          Sorry we were unable to locate your account with MAC address <? echo $username; ?>  .
         </TD>
       </TR>
     </TABLE>
diff --git a/min_selfservice/login.php b/min_selfservice/login.php
index 91e19cd7f..b4e2b2651 100644
--- a/min_selfservice/login.php
+++ b/min_selfservice/login.php
@@ -4,16 +4,14 @@ require('freeside.class.php');
 $freeside = new FreesideSelfService();
 
 $ip = $_SERVER['REMOTE_ADDR'];
-# need a routine here to get mac address from radius account table based on ip address.  Every else should be good to go.
-$mac_addr = '1234567890FF';
+
+$mac_addr = $freeside->get_mac_address( array('ip' => $ip, ) );
 
 $response = $freeside->login( array( 
-  'username' => $mac_addr, 
+  'username' => $mac_addr['mac_address'],
   'domain'   => 'ip_mac',
 ) );
 
-#error_log("[login] received response from freeside: $response");
-
 $error = $response['error'];
 
 if ( $error ) {

-----------------------------------------------------------------------

Summary of changes:
 FS/FS/ClientAPI/MyAccount.pm | 30 ++++++++++++++++++++++++++++--
 FS/FS/ClientAPI_XMLRPC.pm    |  1 +
 min_selfservice/index.php    |  2 +-
 min_selfservice/login.php    |  8 +++-----
 4 files changed, 33 insertions(+), 8 deletions(-)




More information about the freeside-commits mailing list