]> git.netwichtig.de Git - user/henk/code/inspircd.git/blobdiff - modulemanager
Merge pull request #1071 from SaberUK/insp20+fix-lusers
[user/henk/code/inspircd.git] / modulemanager
index 7884654af1fd07a8a5d9b939c81f1a82bf8ad94d..af5bf113caa6f75b1d16b43bfbb5c8b74d193bb0 100755 (executable)
@@ -24,15 +24,13 @@ use warnings FATAL => qw(all);
 
 use make::configure;
 
-
-if (!module_installed("LWP::Simple"))
-{
-       die "Your system is missing the LWP::Simple Perl module!";
-}
-
-if (!module_installed("Crypt::SSLeay") && !module_installed("IO::Socket::SSL"))
-{
-       die "Your system is missing the Crypt::SSLeay or IO::Socket::SSL Perl modules!";
+BEGIN {
+       unless (module_installed("LWP::Simple")) {
+               die "Your system is missing the LWP::Simple Perl module!";
+       }
+       unless (module_installed("Crypt::SSLeay") || module_installed("IO::Socket::SSL")) {
+               die "Your system is missing the Crypt::SSLeay or IO::Socket::SSL Perl modules!";
+       }
 }
 
 use LWP::Simple;
@@ -58,15 +56,20 @@ sub parse_url;
 
 # retrieve and parse entries from sources.list
 sub parse_url {
-       my $src = shift;
+       chomp(my $src = shift);
        return if $url_seen{$src};
        $url_seen{$src}++;
 
-       my $doc = get($src);
-       die "Could not retrieve $_" unless defined $doc;
+       my $ua = LWP::UserAgent->new(ssl_opts => { verify_hostname => 0 });
+       my $response = $ua->get($src);
+
+       unless ($response->is_success) {
+               my $err = $response->message;
+               die "Could not retrieve $src: $err";
+       }
 
        my $mod;
-       for (split /\n+/, $doc) {
+       for (split /\n+/, $response->decoded_content) {
                s/^\s+//; # ignore whitespace at start
                next if /^#/;
                if (/^module (\S+) (\S+) (\S+)/) {
@@ -262,7 +265,7 @@ sub resolve_deps {
        }
 }
 
-my $action = $#ARGV > 0 ? lc shift @ARGV : 'help';
+my $action = $#ARGV >= 0 ? lc shift @ARGV : 'help';
 
 if ($action eq 'install') {
        for my $mod (@ARGV) {
@@ -345,11 +348,16 @@ for my $mod (sort keys %todo) {
        }
        $mod_versions{$mod} = $ver;
 
-       my $stat = getstore($url, "src/modules/$mod.cpp");
-       if ($stat == 200) {
+       my $ua = LWP::UserAgent->new(ssl_opts => { verify_hostname => 0 });
+       my $response = $ua->get($url);
+
+       if ($response->is_success) {
+               open(MF, ">src/modules/$mod.cpp") or die "\nFilesystem not writable: $!";
+               print MF $response->decoded_content;
+               close(MF);
                print " - done\n";
        } else {
-               print " - HTTP $stat\n";
+               printf "\nHTTP %s: %s\n", $response->code, $response->message;
        }
 }