[freeside-commits] branch master updated. 7404ff9d5df7679054dd73f17b3737f5474e5512

Mark Wells mark at 420.am
Thu Aug 2 15:00:14 PDT 2012


The branch, master has been updated
       via  7404ff9d5df7679054dd73f17b3737f5474e5512 (commit)
      from  4d6c465f4b32a49f8bce091f6cb5abb209123ec2 (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 7404ff9d5df7679054dd73f17b3737f5474e5512
Author: Mark Wells <mark at freeside.biz>
Date:   Thu Aug 2 14:59:53 2012 -0700

    fix some illegal RADIUS attributes during import, #18751

diff --git a/FS/FS/part_export/sqlradius.pm b/FS/FS/part_export/sqlradius.pm
index d7cd459..7213966 100644
--- a/FS/FS/part_export/sqlradius.pm
+++ b/FS/FS/part_export/sqlradius.pm
@@ -1160,6 +1160,7 @@ sub import_attrs {
 SELECT groupname, attribute, op, value, \'C\' FROM radgroupcheck
 UNION
 SELECT groupname, attribute, op, value, \'R\' FROM radgroupreply';
+  my @fixes; # things that need to be changed on the radius db
   foreach my $row ( @{ $dbh->selectall_arrayref($sql) } ) {
     my ($groupname, $attrname, $op, $value, $attrtype) = @$row;
     warn "$groupname.$attrname\n";
@@ -1181,6 +1182,20 @@ SELECT groupname, attribute, op, value, \'R\' FROM radgroupreply';
     my $old = $a->{$attrname};
     my $new;
 
+    if ( $attrtype eq 'R' ) {
+      # Freeradius tolerates illegal operators in reply attributes.  We don't.
+      if ( !grep ($_ eq $op, FS::radius_attr->ops('R')) ) {
+        warn "$groupname.$attrname: changing $op to +=\n";
+        # Make a note to change it in the db
+        push @fixes, [
+          'UPDATE radgroupreply SET op = \'+=\' WHERE groupname = ? AND attribute = ? AND op = ? AND VALUE = ?',
+          $groupname, $attrname, $op, $value
+        ];
+        # and import it correctly.
+        $op = '+=';
+      }
+    }
+
     if ( defined $old ) {
       # replace
       $new = new FS::radius_attr {
@@ -1210,6 +1225,13 @@ SELECT groupname, attribute, op, value, \'R\' FROM radgroupreply';
     }
     $attrs_of{$groupname}->{$attrname} = $new;
   } #foreach $row
+
+  foreach (@fixes) {
+    my ($sql, @args) = @$_;
+    my $sth = $dbh->prepare($sql);
+    $sth->execute(@args) or warn $sth->errstr;
+  }
+    
   return;
 }
 

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

Summary of changes:
 FS/FS/part_export/sqlradius.pm |   22 ++++++++++++++++++++++
 1 files changed, 22 insertions(+), 0 deletions(-)




More information about the freeside-commits mailing list