diff options
Diffstat (limited to 'bin')
-rwxr-xr-x | bin/fetch_and_expand_taxes | 55 | ||||
-rwxr-xr-x | bin/reassemble_taxes | 35 |
2 files changed, 90 insertions, 0 deletions
diff --git a/bin/fetch_and_expand_taxes b/bin/fetch_and_expand_taxes new file mode 100755 index 000000000..186d6df8a --- /dev/null +++ b/bin/fetch_and_expand_taxes @@ -0,0 +1,55 @@ +#!/usr/bin/perl -w + +use strict; +use LWP::UserAgent; +use HTTP::Request; +use HTTP::Response; +use FS::UID qw(adminsuidsetup); +use FS::Conf; + +my $user = shift or die &usage; +my $dir = shift or die &usage; + + +adminsuidsetup $user; + +my $conf = new FS::Conf; + +chdir $dir or die "can't change to $dir: $!\n"; + +die "direct download of tax data not enabled\n" + unless $conf->exists('taxdatadirectdownload'); +my ( $urls, $username, $secret, $states ) = + $conf->config('taxdatadirectdownload'); +die "No tax download URL provided. ". + "Did you set the taxdatadirectdownload configuration value?\n" + unless $urls; + +my $ua = new LWP::UserAgent; + foreach my $url (split ',', $urls) { + my @name = split '/', $url; #somewhat restrictive + my $name = pop @name; + $name =~ /(.*)/; # untaint that which we trust; + $name = $1; + + open my $taxfh, ">$name" or die "Can't open $name: $!\n"; + + my $res = $ua->request( + new HTTP::Request( GET => $url), + sub { #my ($data, $response_object) = @_; + print $taxfh $_[0] or die "Can't write to $dir.new/$name: $!\n"; + }, + ); + die "download of $url failed: ". $res->status_line + unless $res->is_success; + close $taxfh; + $secret =~ /(.*)/; # untaint that which we trust; + $secret = $1; + system('unzip', "-P", $secret, $name) == 0 + or die "unzip -P $secret $name failed"; +} + +sub usage { + die "Usage:\n\n fetch_and_expand_taxes user dir\n"; +} + diff --git a/bin/reassemble_taxes b/bin/reassemble_taxes new file mode 100755 index 000000000..001240ba5 --- /dev/null +++ b/bin/reassemble_taxes @@ -0,0 +1,35 @@ +#!/usr/bin/perl -w + +use strict; +use FS::UID qw(adminsuidsetup); +use FS::Conf; + +my $user = shift or die &usage; +my $dir = shift or die &usage; + + +adminsuidsetup $user; + +my $conf = new FS::Conf; + +chdir $dir or die "can't change to $dir: $!\n"; +die "pmzclfull.zip already exists\n" if -f 'pmzclfull.zip'; + +die "direct download of tax data not enabled\n" + unless $conf->exists('taxdatadirectdownload'); +my ( $urls, $username, $secret, $states ) = + $conf->config('taxdatadirectdownload'); +die "No tax download URL provided. ". + "Did you set the taxdatadirectdownload configuration value?\n" + unless $urls; + +my @filelist = qw( code.dbf detail.dbf geocode.dbf npanxx.dbf plus4.dbf + txmatrix.dbf zip.dbf ); + +system('zip', "-P", $secret, 'pmzclfull.zip', @filelist) == 0 + or die "zip failed\n"; + +sub usage { + die "Usage:\n\n reassemble_taxes user dir\n"; +} + |