]> git.donarmstrong.com Git - infobot.git/blobdiff - src/modules.pl
* Merge changes from prposed changes
[infobot.git] / src / modules.pl
index 5ab42ea9f081c98318a7f58c1f6ce889cf95be6f..3bb2bfa0057bd59d6374379a1aa5976321ff14d0 100644 (file)
@@ -5,9 +5,9 @@
 #     Created: 20000624
 #
 
-# use strict;  # TODO
+use strict;
 
-use vars qw($AUTOLOAD);
+use vars qw($AUTOLOAD $no_timehires $bot_version $bot_release);
 
 ###
 ### REQUIRED MODULES.
@@ -20,51 +20,11 @@ if ($@) {
 }
 &showProc(" (IO::Socket)");
 
-### MODULES.
-%myModules = (
-       "babelfish"     => "babelfish.pl",
-       "botmail"       => "botmail.pl",
-       "BZFlag"        => "BZFlag.pl",
-       "countdown"     => "countdown.pl",
-       "Debian"        => "Debian.pl",
-       "DebianExtra"   => "DebianExtra.pl",
-       "Dict"          => "Dict.pl",
-       "DumpVars"      => "DumpVars.pl",
-       "Exchange"      => "Exchange.pl",
-       "Factoids"      => "Factoids.pl",
-       "HTTPDtype"     => "HTTPDtype.pl",
-       "insult"        => "insult.pl",
-       "UserDCC"       => "UserDCC.pl",
-       "Kernel"        => "Kernel.pl",
-       "News"          => "News.pl",
-       "nickometer"    => "nickometer.pl",
-       "pager"         => "pager.pl",
-       "Math"          => "Math.pl",
-       "Plug"          => "Plug.pl",
-       "Quote"         => "Quote.pl",
-       "RootWarn"      => "RootWarn.pl",
-       "Rss"           => "Rss.pl",
-       "Search"        => "Search.pl",
-       "slashdot"      => "slashdot.pl",
-       "symdump"       => "DumpVars2.pl",
-       "topic"         => "Topic.pl",
-       "units"         => "Units.pl",
-       "uptime"        => "Uptime.pl",
-       "userinfo"      => "UserInfo.pl",
-       "weather"       => "Weather.pl",
-       "whatis"        => "WhatIs.pl",
-       "wikipedia"     => "wikipedia.pl",
-       "wingate"       => "Wingate.pl",
-       "wwwsearch"     => "W3Search.pl",
-       "zfi"           => "zfi.pl",
-       "zippy"         => "Zippy.pl",
-       "zsi"           => "zsi.pl",
-);
 ### THIS IS NOT LOADED ON RELOAD :(
 my @myModulesLoadNow;
 my @myModulesReloadNot;
 BEGIN {
-    @myModulesLoadNow  = ('topic', 'uptime', 'News', 'RootWarn', 'symdump', 'botmail');
+    @myModulesLoadNow  = ('Topic', 'Uptime', 'News', 'RootWarn', 'DumpVars2', 'botmail', 'OnJoin');
     @myModulesReloadNot        = ('IRC/Irc.pl','IRC/Schedulers.pl');
 }
 
@@ -84,7 +44,7 @@ sub loadCoreModules {
        }
 
        $moduleAge{$mod} = (stat $mod)[9];
-       &showProc(" ($_)") if (&IsParam("DEBUG"));
+       &showProc(" ($_)") if (&IsParam('DEBUG'));
     }
 }
 
@@ -92,7 +52,7 @@ sub loadDBModules {
     my $f;
     # TODO: use function to load module.
 
-    if ($param{'DBType'} =~ /^(mysql|SQLite|pgsql)$/i) {
+    if ($param{'DBType'} =~ /^(mysql|SQLite(2)?|pgsql)$/i) {
        eval "use DBI";
        if ($@) {
            &ERROR("No support for DBI::" . $param{'DBType'} . ", exiting!");
@@ -111,7 +71,7 @@ sub loadDBModules {
 }
 
 sub loadFactoidsModules {
-    if (!&IsParam("factoids")) {
+    if (!&IsParam('factoids')) {
        &status("Factoid support DISABLED.");
        return;
     }
@@ -128,7 +88,7 @@ sub loadFactoidsModules {
        }
 
        $moduleAge{$mod} = (stat $mod)[9];
-       &showProc(" ($_)") if (&IsParam("DEBUG"));
+       &showProc(" ($_)") if (&IsParam('DEBUG'));
     }
 }
 
@@ -155,7 +115,7 @@ sub loadIRCModules {
 
        # hrm... use another config option besides DEBUG to display
        # change in memory usage.
-       &status("Loading Modules \"$mod\"") if (!&IsParam("DEBUG"));
+       &status("Loading Modules \"$mod\"") if (!&IsParam('DEBUG'));
        eval "require \"$mod\"";
        if ($@) {
            &ERROR("require \"$mod\" => $@");
@@ -164,7 +124,7 @@ sub loadIRCModules {
        }
 
        $moduleAge{$mod} = (stat $mod)[9];
-       &showProc(" ($_)") if (&IsParam("DEBUG"));
+       &showProc(" ($_)") if (&IsParam('DEBUG'));
     }
 }
 
@@ -180,17 +140,12 @@ sub loadMyModulesNow {
            next;
        }
 
-       if (!&IsParam($_) and !&IsChanConf($_) and !&getChanConfList($_)) {
-           if (exists $myModules{$_}) {
-               &status("myModule: $myModules{$_} or $_ (1) not loaded.");
-           } else {
-               &DEBUG("myModule: $_ (2) not loaded.");
-           }
-
+       if (!&IsParam($_) and &IsChanConf($_) <= 0 and !&getChanConfList($_)) {
+           &DEBUG("loadMyModuleNow: $_ (2) not loaded.");
            next;
        }
 
-       &loadMyModule($myModules{$_});
+       &loadMyModule($_);
        $loaded++;
     }
 
@@ -199,10 +154,17 @@ sub loadMyModulesNow {
 
 ### rename to moduleReloadAll?
 sub reloadAllModules {
-    my $retval = "";
+    my $retval = '';
 
     &VERB("Module: reloading all.",2);
 
+    # Reload version and save
+    open(VERSION,"<VERSION");
+    $bot_release = <VERSION> || "(unknown version)";
+    chomp($bot_release);
+    $bot_version    = "infobot $bot_release -- $^O";
+    close(VERSION);
+
     # obscure usage of map and regex :)
     foreach (map { s/.*?\/?src/src/; $_ } keys %moduleAge) {
        $retval .= &reloadModule($_);
@@ -216,7 +178,7 @@ sub reloadAllModules {
 sub reloadModule {
     my ($mod)  = @_;
     my $file   = (grep /\/$mod/, keys %INC)[0];
-    my $retval = "";
+    my $retval = '';
 
     # don't reload if it's not our module.
     if ($mod =~ /::/ or $mod !~ /pl$/) {
@@ -248,8 +210,7 @@ sub reloadModule {
 
        if ($age < $moduleAge{$file}) {
            &WARN("rM: we're not gonna downgrade '$file'; use touch.");
-           &DEBUG("age => $age");
-           &DEBUG("mA{$file} => $moduleAge{$file}");
+           &DEBUG("age => $age, mA{$file} => $moduleAge{$file}");
            return $retval;
        }
 
@@ -302,32 +263,22 @@ sub loadPerlModule {
 }
 
 sub loadMyModule {
-    my ($tmp) = @_;
-    if (!defined $tmp) {
+    my ($modulename) = @_;
+    if (!defined $modulename) {
        &WARN("loadMyModule: module is NULL.");
        return 0;
     }
 
-    my ($modulename, $modulebase);
-    if (exists $myModules{$tmp}) {
-       ($modulename, $modulebase) = ($tmp, $myModules{$tmp});
-    } else {
-       $modulebase = $tmp;
-       if ($tmp = grep /^$modulebase$/, keys %myModules) {
-           &DEBUG("lMM: lame hack, file => name => $tmp.");
-           $modulename = $tmp;
-       }
-    }
-    my $modulefile = "$bot_src_dir/Modules/$modulebase";
+    my $modulefile = "$bot_src_dir/Modules/$modulename.pl";
 
     # call reloadModule() which checks age of file and reload.
-    if (grep /\/$modulebase$/, keys %INC) {
-       &reloadModule($modulebase);
+    if (grep /\/$modulename$/, keys %INC) {
+       &reloadModule($modulename);
        return 1;       # depend on reloadModule?
     }
 
     if (! -f $modulefile) {
-       &ERROR("lMM: module ($modulebase) does not exist.");
+       &ERROR("lMM: module ($modulename) does not exist.");
        if ($$ == $bot_pid) {   # parent.
            &shutdown() if (defined $shm and defined $dbh);
        } else {                        # child.
@@ -340,7 +291,7 @@ sub loadMyModule {
 
     eval "require \"$modulefile\"";
     if ($@) {
-       &ERROR("cannot load my module: $modulebase");
+       &ERROR("cannot load my module: $modulename");
        if ($bot_pid != $$) {   # child.
            &DEBUG("b4 delfork 2");
            &delForked($modulename);
@@ -351,8 +302,8 @@ sub loadMyModule {
     } else {
        $moduleAge{$modulefile} = (stat $modulefile)[9];
 
-       &status("Loaded $modulebase");
-       &showProc(" ($modulebase)");
+       &status("Loaded $modulename");
+       &showProc(" ($modulename)");
        return 1;
     }
 }
@@ -378,11 +329,9 @@ sub AUTOLOAD {
 
     $AUTOLOAD =~ s/^(\S+):://g;
 
-    if (exists $myModules{lc $AUTOLOAD}) {
-       # hopefully this will work.
-       &DEBUG("Trying to load module $AUTOLOAD...");
-       &loadMyModule(lc $AUTOLOAD);
-    }
+    # hopefully this will work.
+    &DEBUG("Trying to load module $AUTOLOAD...");
+    &loadMyModule($AUTOLOAD);
 }
 
 sub getPerlFiles {
@@ -405,3 +354,5 @@ sub getPerlFiles {
 }
 
 1;
+
+# vim:ts=4:sw=4:expandtab:tw=80