]> git.netwichtig.de Git - user/henk/code/inspircd.git/blobdiff - modulemanager
Fix m_cgiirc to set the user's host straight away when using WEBIRC.
[user/henk/code/inspircd.git] / modulemanager
index ff2bd3056137768cba3fa6cf69b10bb989c12f0c..86f9ca0c476405eb3e6f5b10ab731c0b8be3d2b1 100755 (executable)
 
 use strict;
 use warnings FATAL => qw(all);
-use LWP::Simple;
 
-use make::configure;
+use make::utilities;
+
+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!";
+       }
+
+}
 
-our @modlist;
+use File::Basename;
+use LWP::Simple;
 
 my %installed;
 # $installed{name} = $version
@@ -46,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+)/) {
@@ -116,8 +131,6 @@ while (<SRC>) {
 }
 close SRC;
 
-getmodules(1);
-
 # determine core version
 `./src/version.sh` =~ /InspIRCd-([0-9.]+)/ or die "Cannot determine inspircd version";
 $installed{core} = $1;
@@ -141,9 +154,8 @@ $modules{core}{$1} = {
 };
 
 # set up core module list
-for my $modname (@modlist) {
-       my $mod = "m_$modname";
-       my $modfile = "src/modules/$mod.cpp";
+for my $modname (<src/modules/m_*.cpp>) {
+       my $mod = basename($modname, '.cpp');
        my $ver = getmodversion($mod) || '0.0';
        $ver =~ s/\$Rev: (.*) \$/$1/; # for storing revision in SVN
        $installed{$mod} = $ver;
@@ -250,7 +262,7 @@ sub resolve_deps {
        }
 }
 
-my $action = lc shift @ARGV;
+my $action = $#ARGV >= 0 ? lc shift @ARGV : 'help';
 
 if ($action eq 'install') {
        for my $mod (@ARGV) {