From 54a78752a0fc9a82c82dacd111289e886cca6532 Mon Sep 17 00:00:00 2001 From: Mark Wells Date: Fri, 31 May 2013 14:58:10 -0700 Subject: [PATCH] allow broadband_nas services to be reexported, #23147 --- FS/FS/part_export/broadband_nas.pm | 37 ++++++++++++++++++++++++++++--------- 1 file changed, 28 insertions(+), 9 deletions(-) diff --git a/FS/FS/part_export/broadband_nas.pm b/FS/FS/part_export/broadband_nas.pm index 5a8ffac3b..8c152be45 100644 --- a/FS/FS/part_export/broadband_nas.pm +++ b/FS/FS/part_export/broadband_nas.pm @@ -50,6 +50,11 @@ FS::UID->install_callback( address and description of the broadband service. This can be used with 'sqlradius' or 'broadband_sqlradius' exports to maintain entries in the client table on a RADIUS server.

+

The checkboxes at the bottom of this page correspond to RADIUS server +databases that Freeside knows about (i.e. 'sqlradius' or 'broadband_sqlradius' +exports that you have configured). Check the box for each server that you +want the NAS entries to be exported to. Do not create multiple broadband_nas +exports for the same service definition; this will fail.

Most broadband configurations should not use this, even if they use RADIUS for access control.

END @@ -67,19 +72,33 @@ will be applied to the attached NAS record. sub export_insert { my $self = shift; my $svc_broadband = shift; - my %hash = map { $_ => $svc_broadband->get($_) } FS::nas->fields; - my $nas = $self->default_nas( - %hash, + my %hash = ( 'nasname' => $svc_broadband->ip_addr, 'description' => $svc_broadband->description, 'svcnum' => $svc_broadband->svcnum, ); - - my $error = - $nas->insert() - || $nas->process_m2m('link_table' => 'export_nas', - 'target_table' => 'part_export', - 'params' => { $self->options }); + foreach (FS::nas->fields) { + if ( length($svc_broadband->get($_)) ) { + $hash{$_} = $svc_broadband->get($_); + } + } + # if there's somehow a completely identical NAS in the table already, + # use that one. + my $nas = qsearchs('nas', \%hash); + my $error; + if ($nas) { + # propagate the export message + foreach my $part_export ($nas->part_export) { + $error = $part_export->export_nas_insert($nas); + die $error if $error; + } + } else { + $nas = $self->default_nas( %hash ); + $error = $nas->insert || + $nas->process_m2m('link_table' => 'export_nas', + 'target_table' => 'part_export', + 'params' => { $self->options }); + } die $error if $error; return; } -- 2.11.0