summary |
shortlog |
log |
commit | commitdiff |
tree
raw |
patch |
inline | side by side (from parent 1:
eb6c2c4)
* Corrected the insane getRandomInt sub ;)
* Added new RSS Feeds module
* Fix bug in scheduler using random (sometimes negative or zero) times
* Adjusted scheduled task times to reflect new "seconds only" format
git-svn-id: https://svn.code.sf.net/p/infobot/code/trunk@1598
c11ca15a-4712-0410-83d8-
924469b57eb5
This controls if the bot should store uptime records or not.
This controls if the bot should store uptime records or not.
+=item B<set rssFeedTime E<lt>minutesE<gt>>
+
+Should you decide to use the RSS Feed module, this setting controls how often
+the feeds for all channels will be polled.
+
=back
=head2 Miscellaneous configuration options
=back
=head2 Miscellaneous configuration options
flags: D: "r" - remove factoid.
flags: D: "t" - teach/add factoid.
flags: D: "s" - Bypass +silent on channels
flags: D: "r" - remove factoid.
flags: D: "t" - teach/add factoid.
flags: D: "s" - Bypass +silent on channels
+
+rssfeeds: D: rssfeeds is used to control the RSS Feed tracking module
+rssfeeds: U: rssfeeds [command]
+rssfeeds: E: rssfeeds flush
+rssfeeds: D: flush - Will erase the cache file. (Must be chattr +o)
+rssfeeds: D: update - Force a manual update of the feeds. (Must be chattr +o)
# [0/1] Uptime logs
set Uptime true
# [0/1] Uptime logs
set Uptime true
+# [minutes] RSS Feeds refresh interval
+set rssFeedTime 30
+
#####
# Miscellaneous configuration options
#####
#####
# Miscellaneous configuration options
#####
&addCmdHook('RootWarn', ('CODEREF' => 'CmdrootWarn', 'Identifier' => 'RootWarn', 'Module' => 'RootWarn') );
&addCmdHook('OnJoin', ('CODEREF' => 'Cmdonjoin', 'Identifier' => 'OnJoin', 'Module' => 'OnJoin') );
&addCmdHook('Rss', ('CODEREF' => 'Rss::Rss', 'Identifier' => 'Rss', 'Cmdstats' => 'Rss', 'Forker' => 1, 'Help' => 'rss') );
&addCmdHook('RootWarn', ('CODEREF' => 'CmdrootWarn', 'Identifier' => 'RootWarn', 'Module' => 'RootWarn') );
&addCmdHook('OnJoin', ('CODEREF' => 'Cmdonjoin', 'Identifier' => 'OnJoin', 'Module' => 'OnJoin') );
&addCmdHook('Rss', ('CODEREF' => 'Rss::Rss', 'Identifier' => 'Rss', 'Cmdstats' => 'Rss', 'Forker' => 1, 'Help' => 'rss') );
+&addCmdHook('RSSFeeds',('CODEREF' => 'RSSFeeds::RSS', 'Identifier' => 'RSSFeeds', 'Forker' => 1, 'Help' => 'rssfeeds', 'Cmdstats' => 'RSSFeeds', 'Module' => 'RSSFeeds') );
&addCmdHook('sched(stats|info)', ('CODEREF' => 'scheduleList', ) );
&addCmdHook('scramble', ('CODEREF' => 'scramble::scramble', 'Identifier' => 'scramble', 'Cmdstats' => 'scramble', 'Forker' => 1, 'Module' => 'scramble') );
&addCmdHook('seen', ('CODEREF' => 'seen', 'Identifier' => 'seen') );
&addCmdHook('sched(stats|info)', ('CODEREF' => 'scheduleList', ) );
&addCmdHook('scramble', ('CODEREF' => 'scramble::scramble', 'Identifier' => 'scramble', 'Cmdstats' => 'scramble', 'Forker' => 1, 'Module' => 'scramble') );
&addCmdHook('seen', ('CODEREF' => 'seen', 'Identifier' => 'seen') );
&factoidCheck(2); # takes a couple of seconds on a 486. defer it
# TODO: convert to new format... or nuke altogether.
&newsFlush(2);
&factoidCheck(2); # takes a couple of seconds on a 486. defer it
# TODO: convert to new format... or nuke altogether.
&newsFlush(2);
# 1 for run straight away
&uptimeLoop(1);
# 1 for run straight away
&uptimeLoop(1);
sub ScheduleThis {
my ($interval, $codename, @args) = @_;
sub ScheduleThis {
my ($interval, $codename, @args) = @_;
- my $waittime = &getRandomInt($interval);
+ # Set to supllied value plus a random 0-60 seconds to avoid simultaneous runs
+ my $waittime = &getRandomInt("$interval-" . ($interval+&getRandomInt(60) ) );
if (!defined $waittime) {
&WARN("interval == waittime == UNDEF for $codename.");
if (!defined $waittime) {
&WARN("interval == waittime == UNDEF for $codename.");
#### LET THE FUN BEGIN.
####
#### LET THE FUN BEGIN.
####
+sub rssFeeds {
+ my $interval = $param{'rssFeedTime'} || 30;
+ if (@_) {
+ &ScheduleThis( $interval*60, 'rssFeeds' ); # minutes
+ return if ( $_[0] eq '2' ); # defer.
+ }
+ &Forker(
+ 'RSSFeeds',
+ sub {
+ my $line = &RSSFeeds::RSS();
+ return unless ( defined $line );
+
+ }
+ );
+}
+
sub randomQuote {
my $interval = &getChanConfDefault('randomQuoteInterval', 60, $chan);
if (@_) {
sub randomQuote {
my $interval = &getChanConfDefault('randomQuoteInterval', 60, $chan);
if (@_) {
- &ScheduleThis($interval, 'randomQuote');
+ &ScheduleThis($interval*60, 'randomQuote'); # every hour
return if ($_[0] eq '2'); # defer.
}
return if ($_[0] eq '2'); # defer.
}
my $interval = &getChanConfDefault('randomFactoidInterval', 60, $chan);
if (@_) {
my $interval = &getChanConfDefault('randomFactoidInterval', 60, $chan);
if (@_) {
- &ScheduleThis($interval, 'randomFactoid');
+ &ScheduleThis($interval*60, 'randomFactoid'); # minutes
return if ($_[0] eq '2'); # defer.
}
return if ($_[0] eq '2'); # defer.
}
- &ScheduleThis(60, 'logLoop');
+ &ScheduleThis(3600, 'logLoop'); # 1 hour
return if ($_[0] eq '2'); # defer.
}
return if ($_[0] eq '2'); # defer.
}
sub seenFlushOld {
if (@_) {
sub seenFlushOld {
if (@_) {
- &ScheduleThis(1440, 'seenFlushOld');
+ &ScheduleThis(86400, 'seenFlushOld'); # 1 day
return if ($_[0] eq '2'); # defer.
}
return if ($_[0] eq '2'); # defer.
}
sub newsFlush {
if (@_) {
sub newsFlush {
if (@_) {
- &ScheduleThis(60, 'newsFlush');
+ &ScheduleThis(3600, 'newsFlush'); # 1 hour
return if ($_[0] eq '2'); # defer.
}
return if ($_[0] eq '2'); # defer.
}
my $mynick=$conn->nick();
if (@_) {
my $mynick=$conn->nick();
if (@_) {
- &ScheduleThis($interval, 'chanlimitCheck');
+ &ScheduleThis($interval*60, 'chanlimitCheck'); # default 10 minutes
return if ($_[0] eq '2');
}
return if ($_[0] eq '2');
}
- &ScheduleThis(15, 'netsplitCheck');
+ &ScheduleThis(300, 'netsplitCheck'); # every 5 minutes
return if ($_[0] eq '2');
}
return if ($_[0] eq '2');
}
- &ScheduleThis(60, 'floodLoop'); # minutes.
+ &ScheduleThis(60, 'floodLoop'); # 1 minute
return if ($_[0] eq '2');
}
return if ($_[0] eq '2');
}
sub seenFlush {
if (@_) {
my $interval = &getChanConfDefault('seenFlushInterval', 60, $chan);
sub seenFlush {
if (@_) {
my $interval = &getChanConfDefault('seenFlushInterval', 60, $chan);
- &ScheduleThis($interval, 'seenFlush');
+ &ScheduleThis($interval*60, 'seenFlush'); # minutes
return if ($_[0] eq '2');
}
return if ($_[0] eq '2');
}
- &ScheduleThis(240, 'leakCheck');
+ &ScheduleThis(14400, 'leakCheck'); # every 4 hours
return if ($_[0] eq '2');
}
return if ($_[0] eq '2');
}
sub ignoreCheck {
if (@_) {
sub ignoreCheck {
if (@_) {
- &ScheduleThis(60, 'ignoreCheck');
+ &ScheduleThis(60, 'ignoreCheck'); # once every minute
return if ($_[0] eq '2'); # defer.
}
return if ($_[0] eq '2'); # defer.
}
- &ScheduleThis(15, 'ircCheck');
+ &ScheduleThis(300, 'ircCheck'); # every 5 minutes
return if ($_[0] eq '2'); # defer.
}
return if ($_[0] eq '2'); # defer.
}
sub miscCheck {
if (@_) {
sub miscCheck {
if (@_) {
- &ScheduleThis(120, 'miscCheck');
+ &ScheduleThis(7200, 'miscCheck'); # every 2 hours
return if ($_[0] eq '2'); # defer.
}
return if ($_[0] eq '2'); # defer.
}
sub miscCheck2 {
if (@_) {
sub miscCheck2 {
if (@_) {
- &ScheduleThis(240, 'miscCheck2');
+ &ScheduleThis(14400, 'miscCheck2'); # every 4 hours
return if ($_[0] eq '2'); # defer.
}
return if ($_[0] eq '2'); # defer.
}
# return unless &IsParam('Uptime');
if (@_) {
# return unless &IsParam('Uptime');
if (@_) {
- &ScheduleThis(60, 'uptimeLoop');
+ &ScheduleThis(3600, 'uptimeLoop'); # once per hour
return if ($_[0] eq '2'); # defer.
}
return if ($_[0] eq '2'); # defer.
}
sub slashdotLoop {
if (@_) {
sub slashdotLoop {
if (@_) {
- &ScheduleThis(60, 'slashdotLoop');
+ &ScheduleThis(3600, 'slashdotLoop'); # once per hour
return if ($_[0] eq '2');
}
return if ($_[0] eq '2');
}
- &ScheduleThis(60, 'plugLoop');
+ &ScheduleThis(3600, 'plugLoop'); # once per hour
return if ($_[0] eq '2');
}
return if ($_[0] eq '2');
}
sub kernelLoop {
if (@_) {
sub kernelLoop {
if (@_) {
- &ScheduleThis(240, 'kernelLoop');
+ &ScheduleThis(14400, 'kernelLoop'); # once every 4 hours
return if ($_[0] eq '2');
}
return if ($_[0] eq '2');
}
### TODO: ??
sub wingateWriteFile {
if (@_) {
### TODO: ??
sub wingateWriteFile {
if (@_) {
- &ScheduleThis(60, 'wingateWriteFile');
+ &ScheduleThis(3600, 'wingateWriteFile'); # once per hour
return if ($_[0] eq '2'); # defer.
}
return if ($_[0] eq '2'); # defer.
}
sub factoidCheck {
if (@_) {
sub factoidCheck {
if (@_) {
- &ScheduleThis(720, 'factoidCheck');
+ &ScheduleThis(43200, 'factoidCheck'); # ever 12 hours
return if ($_[0] eq '2'); # defer.
}
return if ($_[0] eq '2'); # defer.
}
return unless (scalar keys %{ $dcc{CHAT} });
if (@_) {
return unless (scalar keys %{ $dcc{CHAT} });
if (@_) {
- &ScheduleThis(10, 'dccStatus');
+ &ScheduleThis(600, 'dccStatus'); # every 10 minutes
return if ($_[0] eq '2'); # defer.
}
return if ($_[0] eq '2'); # defer.
}
return $array[int(rand(scalar @array))];
}
return $array[int(rand(scalar @array))];
}
-# Usage: &getRandomInt("30-60");
+# Usage: &getRandomInt("30-60"); &getRandomInt(5);
+# Desc : Returns a randomn integer between "X-Y" or 1 and the value passed
- if (!defined $str) {
- &WARN("gRI: str == NULL.");
- return;
- }
-
- srand();
-
- if ($str =~ /^(\d+(\.\d+)?)$/) {
- my $i = $1;
- my $fuzzy = int(rand 5);
- if ($i < 10) {
- return $i;
+ if ( !defined $str ) {
+ &WARN("getRandomInt: str == NULL.");
+ return undef;
- if (rand > 0.5) {
- return ($i - $fuzzy)*60;
+
+ if ( $str =~ /^(\d+(\.\d+)?)$/ ) {
+ return int( rand $str ) + 1;
+ } elsif ( $str =~ /^(\d+)-(\d+)$/ ) {
+ return $1 if $1 == $2;
+ my $min = $1 < $2 ? $1 : $2; # Swap is backwords
+ my $max = $2 > $1 ? $2 : $1;
+ return int( rand( $max - $min + 1 ) ) + $min;
- return ($i + $fuzzy)*60;
- }
- } elsif ($str =~ /^(\d+)-(\d+)$/) {
- return ($2 - $1)*int(rand $1)*60;
- } else {
- return $str; # hope we're safe.
- }
- &ERROR("getRandomInt: invalid arg '$str'.");
- return 1800;
+ # &ERROR("getRandomInt: invalid arg '$str'.");
+ return undef;
+ }
}
if (open(LOG, ">>$file{log}")) {
}
if (open(LOG, ">>$file{log}")) {
&status("Opened logfile $file{log}.");
LOG->autoflush(1);
} else {
&status("Opened logfile $file{log}.");
LOG->autoflush(1);
} else {
&status("WARN: cannot open $file: $!");
return;
}
&status("WARN: cannot open $file: $!");
return;
}
# TODO: better filename.
open(OUT, ">>debug.log");
# TODO: better filename.
open(OUT, ">>debug.log");
print OUT "DEBUG: $str\n";
# note: cannot call external functions because SIG{} does not allow us to.
print OUT "DEBUG: $str\n";
# note: cannot call external functions because SIG{} does not allow us to.
delete $param{'SQLDebug'};
return 0;
}
delete $param{'SQLDebug'};
return 0;
}
+ binmode(SQLDEBUG, ":utf8");
&status("Opened SQL Debug file: $param{'SQLDebug'}");
return 1;
&status("Opened SQL Debug file: $param{'SQLDebug'}");
return 1;