use vars qw($VERSION $BRANCH);
$VERSION = sprintf( "%d.%03d", q$Revision$ =~ /(\d+)\.(\d+)/ );
-$BRANCH = sprintf( "%d.%03d", q$Revision$ =~ /\d+\.\d+\.(\d+)\.(\d+)/ ) || 0;
+$BRANCH = sprintf( "%d.%03d", q$Revision$ =~ /\d+\.\d+\.(\d+)\.(\d+)/ || (0,0));
$main::build += $VERSION;
$main::branch += $BRANCH;
# do we need to send a forward/opernam?
my $lastoper = $user->lastoper || 0;
my $homenode = $user->homenode || "";
- if ($homenode eq $main::mycall && $lastoper + $DXUser::lastoperinterval < $main::systime) {
+ if ($homenode eq $main::mycall && $main::systime >= $lastoper + $DXUser::lastoperinterval) {
run_cmd($main::me, "forward/opernam $call");
- $user->lastoper($main::systime);
+ $user->lastoper($main::systime + ((int rand(10)) * 86400));
}
# run a script send the output to the punter
my $self = shift;
my $cmdline = shift;
my @ans;
+
+ # save this for them's that need it
+ my $rawline = $cmdline;
# remove leading and trailing spaces
$cmdline =~ s/^\s*(.*)\s*$/$1/;
}
$self->state('prompt');
delete $self->{talklist};
- } elsif ($cmdline =~ m(^/\w+)) {
- $cmdline =~ s(^/)();
- $self->send_ans(run_cmd($self, $cmdline));
+ } elsif ($cmdline =~ m|^/+\w+|) {
+ $cmdline =~ s|^/||;
+ my $sendit = $cmdline =~ s|^/+||;
+ my @in = $self->run_cmd($cmdline);
+ $self->send_ans(@in);
+ if ($sendit && $self->{talklist} && @{$self->{talklist}}) {
+ foreach my $l (@in) {
+ my @bad;
+ if (@bad = BadWords::check($l)) {
+ $self->badcount(($self->badcount||0) + @bad);
+ Log('DXCommand', "$self->{call} swore: $l");
+ } else {
+ for (@{$self->{talklist}}) {
+ $self->send_talks($_, $l);
+ }
+ }
+ }
+ }
$self->send($self->talk_prompt);
} elsif ($self->{talklist} && @{$self->{talklist}}) {
# send what has been said to whoever is in this person's talk list
Log('DXCommand', "$self->{call} swore: $cmdline");
} else {
for (@{$self->{talklist}}) {
- $self->send_talks($_, $cmdline);
+ $self->send_talks($_, $rawline);
}
}
$self->send($self->talk_prompt) if $self->{state} eq 'talk';
no strict 'refs';
my @ans;
if (ref $self->{edit}) {
- eval { @ans = $self->{edit}->$func($self, $cmdline)};
+ eval { @ans = $self->{edit}->$func($self, $rawline)};
} else {
- eval { @ans = &{$self->{func}}($self, $cmdline) };
+ eval { @ans = &{$self->{func}}($self, $rawline) };
}
if ($@) {
$self->send_ans("Syserr: on stored func $self->{func}", $@);
return ();
}
}
- return (@ans);
+ return map {s/([^\s])\s+$/$1/; $_} @ans;
}
#
no strict 'refs';
for (keys %Cache) {
- undef *{$_};
+ undef *{$_} unless /cmd_cache/;
dbg("Undefining cmd $_") if isdbg('command');
}
%cmd_cache = ();