Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- use strict;
- use Mac::Finder::DSStore::BuddyAllocator;
- use Mac::Finder::DSStore;
- use IO::File;
- use Data::Dumper;
- use LWP::Simple;
- use LWP::UserAgent;
- use Getopt::Long;
- use Pod::Usage;
- use Switch;
- my $verbose = ''; # option variable with default value (false)
- my $all = ''; # option variable with default value (false)
- my ($help, $type, $filename, $proxy, $type, $base_url);
- GetOptions (
- 'type=s' => \$type,
- 'filename=s' => \$filename,
- 'proxy:s' => \$proxy,
- 'base_url:s' => \$base_url,
- 'verbose' => \$verbose,
- 'help|?' => \$help
- ) or pod2usage(2);
- # Check for requests for help or for man (full documentation):
- Pod::Usage::pod2usage( -verbose => 1 ) if ( $help );
- unless ( defined($type) && defined($filename) && defined($base_url) ) {
- Pod::Usage::pod2usage( -exitstatus => 2 );
- }
- for ($type) {
- if (/^ds$/) {
- parse_dsstore ($filename, $base_url, $proxy, $verbose);
- } elsif (/^dr$/) {
- print "Not currently implemented, keep your eye out, it will be coming soon\n\n";
- } else {
- print "Unknown file type specified\n\n";
- Pod::Usage::pod2usage( -exitstatus => 2 );
- }
- }
- <<q=~q>>;
- print "verbose = ";
- print $verbose;
- print "\n";
- print "type = ";
- print $type;
- print "\n";
- print "filename = ";
- print $filename;
- print "\n";
- print "proxy = ";
- print $proxy;
- print "\n";
- q
- sub parse_dsstore {
- my $ua = new LWP::UserAgent;
- my ($input_filename, $base_url, $proxy);
- ($input_filename, $base_url, $proxy, $verbose) = @_;
- if (defined($proxy)) {
- if ($verbose) {
- print "Setting up proxy: " . $proxy . "\n";
- }
- # Various enhancement possibilities:
- $ua->max_size(100000); # 100k byte limit
- $ua->timeout(3); # 3 sec timeout is default
- $ua->proxy(['http'], $proxy); # set proxy
- $ua->agent("Mozilla/6.0"); # Or something equally mysterious
- }
- $Data::Dumper::Useqq = 1;
- my $store = Mac::Finder::DSStore::BuddyAllocator->open(new IO::File $input_filename, '<');
- my @ents = &Mac::Finder::DSStore::getDSDBEntries($store);
- undef $store;
- #print Dumper(\@ents);
- if (substr ($base_url, -1, 1) ne "/") {
- $base_url = $base_url . "/";
- }
- my $entry;
- foreach $entry (@ents) {
- my $url = $base_url . $entry->filename;
- if (defined($proxy)) {
- if ($verbose) {
- print "Getting URL: " . $url . "\n\r";
- }
- my $req = new HTTP::Request GET => $url;
- my $res = $ua->request($req);
- # print Dumper(\$res);
- if ($verbose) {
- printf "Response code: %2d (%s)\n", $res->code, $res->message;
- }
- } else {
- print "URL: " . $url . "\n\r";
- }
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement