Advertisement
Guest User

Untitled

a guest
Sep 24th, 2018
77
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.56 KB | None | 0 0
  1. use strict;
  2. use Mac::Finder::DSStore::BuddyAllocator;
  3. use Mac::Finder::DSStore;
  4. use IO::File;
  5. use Data::Dumper;
  6. use LWP::Simple;
  7. use LWP::UserAgent;
  8. use Getopt::Long;
  9. use Pod::Usage;
  10. use Switch;
  11.  
  12. my $verbose = ''; # option variable with default value (false)
  13. my $all = ''; # option variable with default value (false)
  14.  
  15. my ($help, $type, $filename, $proxy, $type, $base_url);
  16.  
  17. GetOptions (
  18. 'type=s' => \$type,
  19. 'filename=s' => \$filename,
  20. 'proxy:s' => \$proxy,
  21. 'base_url:s' => \$base_url,
  22. 'verbose' => \$verbose,
  23. 'help|?' => \$help
  24. ) or pod2usage(2);
  25.  
  26. # Check for requests for help or for man (full documentation):
  27.  
  28. Pod::Usage::pod2usage( -verbose => 1 ) if ( $help );
  29.  
  30. unless ( defined($type) && defined($filename) && defined($base_url) ) {
  31. Pod::Usage::pod2usage( -exitstatus => 2 );
  32. }
  33.  
  34. for ($type) {
  35. if (/^ds$/) {
  36. parse_dsstore ($filename, $base_url, $proxy, $verbose);
  37. } elsif (/^dr$/) {
  38. print "Not currently implemented, keep your eye out, it will be coming soon\n\n";
  39. } else {
  40. print "Unknown file type specified\n\n";
  41. Pod::Usage::pod2usage( -exitstatus => 2 );
  42. }
  43. }
  44.  
  45. <<q=~q>>;
  46. print "verbose = ";
  47. print $verbose;
  48. print "\n";
  49.  
  50. print "type = ";
  51. print $type;
  52. print "\n";
  53.  
  54. print "filename = ";
  55. print $filename;
  56. print "\n";
  57.  
  58. print "proxy = ";
  59. print $proxy;
  60. print "\n";
  61. q
  62.  
  63. sub parse_dsstore {
  64. my $ua = new LWP::UserAgent;
  65. my ($input_filename, $base_url, $proxy);
  66.  
  67. ($input_filename, $base_url, $proxy, $verbose) = @_;
  68.  
  69. if (defined($proxy)) {
  70. if ($verbose) {
  71. print "Setting up proxy: " . $proxy . "\n";
  72. }
  73. # Various enhancement possibilities:
  74. $ua->max_size(100000); # 100k byte limit
  75. $ua->timeout(3); # 3 sec timeout is default
  76. $ua->proxy(['http'], $proxy); # set proxy
  77.  
  78. $ua->agent("Mozilla/6.0"); # Or something equally mysterious
  79. }
  80.  
  81. $Data::Dumper::Useqq = 1;
  82.  
  83. my $store = Mac::Finder::DSStore::BuddyAllocator->open(new IO::File $input_filename, '<');
  84. my @ents = &Mac::Finder::DSStore::getDSDBEntries($store);
  85. undef $store;
  86.  
  87. #print Dumper(\@ents);
  88.  
  89. if (substr ($base_url, -1, 1) ne "/") {
  90. $base_url = $base_url . "/";
  91. }
  92. my $entry;
  93. foreach $entry (@ents) {
  94. my $url = $base_url . $entry->filename;
  95. if (defined($proxy)) {
  96. if ($verbose) {
  97. print "Getting URL: " . $url . "\n\r";
  98. }
  99. my $req = new HTTP::Request GET => $url;
  100. my $res = $ua->request($req);
  101. # print Dumper(\$res);
  102. if ($verbose) {
  103. printf "Response code: %2d (%s)\n", $res->code, $res->message;
  104. }
  105. } else {
  106. print "URL: " . $url . "\n\r";
  107. }
  108. }
  109. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement