]> git.donarmstrong.com Git - infobot.git/blobdiff - src/modules.pl
* Security patch for binmode UTF8 handling for CVE-2007-5116
[infobot.git] / src / modules.pl
index a1cc28f256bfaca0a094e694aafa6a13dd5c82ce..47389d8bd49d6d9189e2a3246fba38484954ba4e 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.
@@ -24,7 +24,7 @@ if ($@) {
 my @myModulesLoadNow;
 my @myModulesReloadNot;
 BEGIN {
-    @myModulesLoadNow  = ('Topic', 'Uptime', 'News', 'RootWarn', 'DumpVars2', 'botmail');
+    @myModulesLoadNow  = ('Topic', 'Uptime', 'News', 'RootWarn', 'DumpVars2', 'botmail', 'OnJoin');
     @myModulesReloadNot        = ('IRC/Irc.pl','IRC/Schedulers.pl');
 }
 
@@ -44,7 +44,7 @@ sub loadCoreModules {
        }
 
        $moduleAge{$mod} = (stat $mod)[9];
-       &showProc(" ($_)") if (&IsParam("DEBUG"));
+       &showProc(" ($_)") if (&IsParam('DEBUG'));
     }
 }
 
@@ -52,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!");
@@ -71,7 +71,7 @@ sub loadDBModules {
 }
 
 sub loadFactoidsModules {
-    if (!&IsParam("factoids")) {
+    if (!&IsParam('factoids')) {
        &status("Factoid support DISABLED.");
        return;
     }
@@ -88,7 +88,7 @@ sub loadFactoidsModules {
        }
 
        $moduleAge{$mod} = (stat $mod)[9];
-       &showProc(" ($_)") if (&IsParam("DEBUG"));
+       &showProc(" ($_)") if (&IsParam('DEBUG'));
     }
 }
 
@@ -115,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\" => $@");
@@ -124,7 +124,7 @@ sub loadIRCModules {
        }
 
        $moduleAge{$mod} = (stat $mod)[9];
-       &showProc(" ($_)") if (&IsParam("DEBUG"));
+       &showProc(" ($_)") if (&IsParam('DEBUG'));
     }
 }
 
@@ -140,7 +140,7 @@ sub loadMyModulesNow {
            next;
        }
 
-       if (!&IsParam($_) and !&IsChanConf($_) and !&getChanConfList($_)) {
+       if (!&IsParam($_) and &IsChanConf($_) <= 0 and !&getChanConfList($_)) {
            &DEBUG("loadMyModuleNow: $_ (2) not loaded.");
            next;
        }
@@ -154,9 +154,16 @@ 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) {
@@ -171,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$/) {
@@ -203,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;
        }
 
@@ -348,3 +354,5 @@ sub getPerlFiles {
 }
 
 1;
+
+# vim:ts=4:sw=4:expandtab:tw=80