X-Git-Url: http://git.freeside.biz/gitweb/?p=freeside.git;a=blobdiff_plain;f=FS%2FFS%2Fpart_export%2Ftextradius.pm;h=869c7c7dcc44dedc623490adef140659a8460b52;hp=450a0e57b2500e93375a1be448365c37fa8a0555;hb=f4723862a096bd9eecd47727c9a99ebedc131ac9;hpb=0d9e6fc32b9fc3b3a05c2bf0446ee57d484e79a9 diff --git a/FS/FS/part_export/textradius.pm b/FS/FS/part_export/textradius.pm index 450a0e57b..869c7c7dc 100644 --- a/FS/FS/part_export/textradius.pm +++ b/FS/FS/part_export/textradius.pm @@ -1,13 +1,36 @@ package FS::part_export::textradius; -use vars qw(@ISA $prefix); +use vars qw(@ISA %info $prefix); use Fcntl qw(:flock); +use Tie::IxHash; use FS::UID qw(datasrc); use FS::part_export; @ISA = qw(FS::part_export); -$prefix = "/usr/local/etc/freeside/export."; +tie my %options, 'Tie::IxHash', + 'user' => { label=>'Remote username', default=>'root' }, + 'users' => { label=>'users file location', default=>'/etc/raddb/users' }, +; + +%info = ( + 'svc' => 'svc_acct', + 'desc' => + 'Real-time export to a text /etc/raddb/users file (Livingston, Cistron)', + 'options' => \%options, + 'notes' => <<'END' +This will edit a text RADIUS users file in place on a remote server. +Requires installation of +RADIUS::UserFile +from CPAN. If using RADIUS::UserFile 1.01, make sure to apply +this patch. Also +make sure rsync is installed on the +remote machine, and SSH is setup for unattended +operation. +END +); + +$prefix = "%%%FREESIDE_CONF%%%/export."; sub rebless { shift; } @@ -126,10 +149,13 @@ sub textradius_download { $rsync->exec( { src => "$user\@$host:$users", dest => $dest, - } ) or die "error downloading $user\@$host:$users : ". - 'exit status: '. $rsync->status. ', '. - 'STDERR: '. join(" / ", $rsync->err). ', '. - 'STDOUT: '. join(" / ", $rsync->out); + } ); # true/false return value from exec is not working, alas + if ( $rsync->err ) { + die "error downloading $user\@$host:$users : ". + 'exit status: '. $rsync->status. ', '. + 'STDERR: '. join(" / ", $rsync->err). ', '. + 'STDOUT: '. join(" / ", $rsync->out); + } $dest; } @@ -148,13 +174,18 @@ sub textradius_upload { $rsync->exec( { src => "$dir/users", dest => "$user\@$host:$users", - } ) or die "error uploading to $user\@$host:$users : ". - 'exit status: '. $rsync->status. ', '. - 'STDERR: '. join(" / ", $rsync->err). ', '. - 'STDOUT: '. join(" / ", $rsync->out); + } ); # true/false return value from exec is not working, alas + if ( $rsync->err ) { + die "error uploading to $user\@$host:$users : ". + 'exit status: '. $rsync->status. ', '. + 'STDERR: '. join(" / ", $rsync->err). ', '. + 'STDOUT: '. join(" / ", $rsync->out); + } flock(LOCK,LOCK_UN); close LOCK; } +1; +