X-Git-Url: http://git.freeside.biz/gitweb/?a=blobdiff_plain;f=FS%2FFS%2Fpart_export%2Ftextradius.pm;h=869c7c7dcc44dedc623490adef140659a8460b52;hb=f9a181e4c2e505df84de16190ee3b75011326f3f;hp=450a0e57b2500e93375a1be448365c37fa8a0555;hpb=0d9e6fc32b9fc3b3a05c2bf0446ee57d484e79a9;p=freeside.git
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;
+