$self->{user} = $user if defined $user;
$self->{t} = time;
$self->{state} = 0;
+ $self->{oldstate} = 0;
bless $self, $pkg;
return $channels{$call} = $self;
}
foreach $line (@_) {
my $t = atime;
chomp $line;
- print main::DEBUG "$t > $sort $call $line\n" if defined DEBUG;
- print "> $sort $call $line\n";
+ print main::DEBUG "$t -> $sort $call $line\n" if defined DEBUG;
+ print "-> $sort $call $line\n";
$conn->send_now("$sort$call|$line");
}
}
foreach $line (@_) {
my $t = atime;
chomp $line;
- print main::DEBUG "$t > D $call $line\n" if defined DEBUG;
- print "> D $call $line\n";
+ print main::DEBUG "$t -> D $call $line\n" if defined DEBUG;
+ print "-> D $call $line\n";
$conn->send_later("D$call|$line");
}
}
$self->send(DXM::msg(@_));
}
+# change the state of the channel - lots of scope for debugging here :-)
+sub state
+{
+ my $self = shift;
+ $self->{oldstate} = $self->{state};
+ $self->{state} = shift;
+ print "Db $self->{call} channel state $self->{oldstate} -> $self->{state}\n" if $main::debug;
+}
+
1;
__END__;
$self->msg('l2',$name);
$self->send_file($main::motd) if (-e $main::motd);
$self->msg('pr', $call);
- $self->{state} = 10; # a bit of room for further expansion, passwords etc
+ $self->state('prompt'); # a bit of room for further expansion, passwords etc
$self->{priv} = 0; # set the connection priv to 0 - can be upgraded later
}
scan_cmd_dirs if (!defined %cmd);
# strip out any nasty characters like $@%&|. and double // etc.
- $cmd =~ s/[\%\@\$\&\|\.\`\~]//og;
+ $cmd =~ s/[%\@\$&\\.`~]//og;
$cmd =~ s|//|/|og;
# split the command up into parts
- my @parts = split |[/\b]+|, $cmd;
-
+ my @part = split /[\/\b]+/, $cmd;
+
+ # the bye command - temporary probably
+ if ($part[0] =~ /^b/io) {
+ $self->user_finish();
+ $self->state('bye');
+ return;
+ }
+
# first expand out the entry to a command, note that I will accept
# anything in any case with any (reasonable) seperator
$self->prompt();
my($self, $path, $cmdname) = @_;
my $package = valid_package_name($cmdname);
my $filename = "$path/$cmdname";
- my $mtime = -m $filename;
+ my $mtime = -M $filename;
my @r;
if(defined $Cache{$package}{mtime} && $Cache{$package}{mtime } <= $mtime) {
}
#cache it unless we're cleaning out each time
- $Cache{$package}{mtime} = $mtime unless $delete;
+ $Cache{$package}{mtime} = $mtime;
}
@r = eval {$package->handler;};
# the "message of the day" file
$motd = "$data/motd";
+
+# are we debugging ?
+$debug = 1;
my ($sort, $call, $line) = $data =~ /^(\w)(\S+)\|(.*)$/;
# do the really sexy console interface bit! (Who is going to do the TK interface then?)
- print DEBUG atime, " < $sort $call $line\n" if defined DEBUG;
- print "< $sort $call $line\n";
+ print DEBUG atime, " <- $sort $call $line\n" if defined DEBUG;
+ print "<- $sort $call $line\n";
# handle A records
my $user = $dxchan->{user};
} else {
$dxchan->user_normal($line);
}
+ disconnect($dxchan) if ($dxchan->{state} eq 'bye');
} elsif ($sort eq 'Z') {
disconnect($dxchan);
} else {