+15Jan05=======================================================================
+1. knocked over a few possible ways of people annoying other people thru
+the use of scripts
+2. Fixed problem in DXCommandmode with an indirect call that did not work
+in perl < 5.8.0.
+3. Add Spanish translations of new scripting commands in help.
13Jan05=======================================================================
1. Fixed prompting in languages other than English.
2. Fixed language problem with spoof, but that simply hides a whole can of
=== 6^SET/STARTUP <call>^Create a user startup script
=== 0^SET/STARTUP^Create your own startup script
-=== 6^UNSET/STARTUP <call>^Remove a user startup script
-=== 0^UNSET/STARTUP^Remove your own startup script
Create a startup script of DXSpider commands which will be executed
everytime that you login into this node. You can only input the whole
script afresh, it is not possible to 'edit' it. Inputting a new script is
up the output. If you simply want a blank line, it is easier to
input one or more spaces and press the <return> key.
+See UNSET/STARTUP to remove a script.
+
+=== 6^UNSET/STARTUP <call>^Remove a user startup script
+=== 0^UNSET/STARTUP^Remove your own startup script
You can remove your startup script with UNSET/STARTUP.
=== 5^SET/SPIDER <call> [<call>..]^Make the callsign an DXSpider node
La única excepción que se le hace a un usuario no registrado es la
de poder enviar un TALK o un mensaje al sysop.
+=== 6^SET/STARTUP <Indicativo> Crea un fichero de inicio de conexión para un usuario.
+=== 0^SET/STARTUP Crea tu propio fichero de inicio de conexión.
+Crea un fichero de conexión con los comandos del cluster que se
+ejecutarán cada vez que conectes. Sólo se puede crear el fichero
+completo, no pudiéndolo editar parcialmente. Hacer un fichero
+personal de inicio de conexión es como hacer un mensaje con el
+comando SEND. Para terminar el fichero escribe: /EX en la última
+línea, para abandonar la creación de este fichero escribe: /ABORT.
+
+Puedes encontrar útil el comando "BLANK" para que la salida de datos
+que pedimos en el fichero de conexión la tengamos en líneas separadas.
+Si sólo quieres una línea en blanco, puedes hacer una línea con uno o
+más espacios en blanco y darle ENTER.
+
+Puedes borrar tu fichero de conexión con el comando UNSET/STARTUP.
+
+SHOW/STARTUP <Indicativo> Ver el fichero de inicio de conexión de un usuario.
+SHOW/STARTUP Ver tu propio fichero de inicio de conexión
+ Para ver el contenido del fichero de conexión creado con SET/STARTUP.
+
+=== 6^UNSET/STARTUP <Indicativo> Borra el fichero de inicio de conexión de un usuario
+=== 0^UNSET/STARTUP Borra tu fichero de inicio de conexión.
+Puedes borrar tu fichero de conexión con el comando UNSET/STARTUP.
+
=== 0^SET/TALK^Acepta mensajes TALK
=== 0^UNSET/TALK^Deshabilita la recepción de mensajes TALK
sh/route n2tly
+=== 6^SHOW/STARTUP <Indicativo> Ver el fichero de inicio de conexión de un usuario.
+=== 0^SHOW/STARTUP Ver tu propio fichero de inicio de conexión
+Para ver el contenido del fichero de conexión creado con SET/STARTUP.
+
=== 0^SHOW/SATELLITE <nombre> [<horas> <intervalo>]^Muestra datos de seguimiento
Muestra los datos para el seguimiento desde tu situación para un satélite
que elijas, desde ahora o para las próximas horas.
my ($self, $line) = @_;
my @f = split /\s+/, $line;
-return (1, $self->msg('e5')) if $self->remotecmd;
+return (1, $self->msg('e5')) if $self->remotecmd || $self->inscript;
return (1, $self->msg('e9')) if !@f;
return (1, $self->msg('e28')) unless $self->registered;
#
my $self = shift;
+return (1, $self->msg('e5')) if $self->inscript;
# log out text
if ($self->is_user && -e "$main::data/logout") {
my ($self, $line) = @_;
my @f = split /\s+/, $line, 2;
-return (1, $self->msg('e5')) if $self->remotecmd;
+return (1, $self->msg('e5')) if $self->remotecmd || $self->inscript;
return (1, $self->msg('e34')) unless @f == 2;
return (1, $self->msg('e28')) unless $self->registered;
return (1, $self->msg('e7', $call)) unless $dxchan;
return (1, $self->msg('e31', $call)) unless $dxchan->is_user;
-if ($self->remotecmd) {
+if ($self->remotecmd || $self->inscript) {
Log('DXCommand', "$mycall is trying to 'demo' to $call remotely");
return (1, $self->msg('e5'));
}
#
my ($self, $line) = @_;
-return (1, $self->msg('e5')) if $self->priv < 9 || $self->remotecmd;
+return (1, $self->msg('e5')) if $self->priv < 9 || $self->remotecmd || $self->inscript;
Log('DXCommand', $self->call . " do $line" );
eval "$line";
return (1, $@ ? $@ : "Ok, done $line" );
my @out;
my $valid = 0;
my $localonly;
-return (1, $self->msg('e5')) if $self->remotecmd;
+return (1, $self->msg('e5')) if $self->remotecmd || $self->inscript;
return (1, $self->msg('e28')) unless $self->registered;
my @bad;
my $ref;
my $fn;
-return (1, $self->msg("e5")) if $self->priv < 9 || $self->consort ne 'local' || $self->remotecmd;
+return (1, $self->msg("e5")) if $self->priv < 9 || $self->consort ne 'local' || $self->remotecmd || $self->inscript;
return (1, $self->msg("export1")) unless @f == 2 && $f[0] =~ /^\d+$/;
$msgno = $f[0];
my $line = shift;
my @f = split /\s+/, $line;
-return (1, $self->msg('e5')) if $self->priv < 8 || $self->remotecmd;
+return (1, $self->msg('e5')) if $self->priv < 8 || $self->remotecmd || $self->inscript;
my $call = uc shift @f;
my $dxchan = DXChannel->get($call);
#
my ($self, $line) = @_;
-return (1, $self->msg('e5')) if $self->priv < 9 || $self->remotecmd;
+return (1, $self->msg('e5')) if $self->priv < 9 || $self->remotecmd || $self->inscript;
my ($date_req, $time_req);
my $app_req = '>';
# $Id$
#
my ($self, $line) = @_;
-return (1, $self->msg('e5')) if $self->remotecmd;
+return (1, $self->msg('e5')) if $self->remotecmd || $self->inscript;
return (1, $self->msg('e36')) unless $self->state =~ /^prompt/;
my @out;
foreach $call (@args) {
$call = uc $call;
- unless ($self->remotecmd) {
+ unless ($self->remotecmd || $self->inscript) {
if ($ref = DXUser->get_current($call)) {
$ref->lockout(1);
$ref->put();
my $user;
my $ref;
-if ($self->remotecmd) {
+if ($self->remotecmd || $self->inscript) {
$call ||= $self->call;
Log('DXCommand', $self->call . " attempted to change passphrase for $call remotely");
return (1, $self->msg('e5'));
my $user;
my $ref;
-if ($self->remotecmd) {
+if ($self->remotecmd || $self->inscript) {
$call ||= $self->call;
Log('DXCommand', $self->call . " attempted to change password for $call remotely");
return (1, $self->msg('e5'));
my $user;
my $ref;
-if ($self->priv < 9 || $self->remotecmd) {
+if ($self->priv < 9 || $self->remotecmd || $self->inscript) {
Log('DXCommand', $self->call . " attempted to set privilege $priv for @args");
return (1, $self->msg('e5'));
}
foreach $call (@args) {
$call = uc $call;
- unless ($self->remotecmd) {
+ unless ($self->remotecmd || $self->inscript) {
if ($ref = DXChannel->get($call)) {
$ref->priv($priv);
$ref->user->priv($priv);
foreach $call (@args) {
$call = uc $call;
- unless ($self->remotecmd) {
+ unless ($self->remotecmd || $self->inscript) {
if ($ref = DXUser->get_current($call)) {
$ref->registered(1);
$ref->put();
# $Id$
#
my ($self, $line) = @_;
-return (1, $self->msg('e5')) if $self->remotecmd;
+return (1, $self->msg('e5')) if $self->remotecmd || $self->inscript;
return (1, $self->msg('e5')) if $line && $self->priv < 6;
return (1, $self->msg('e36')) unless $self->state =~ /^prompt/;
# $Id$
#
my ($self, $line) = @_;
-return (1, $self->msg('e5')) if $self->remotecmd;
+return (1, $self->msg('e5')) if $self->remotecmd || $self->inscript;
return (1, $self->msg('e5')) if $line && $self->priv < 5;
my @out;
#
my ($self, $line) = @_;
-return (1, $self->msg('e5')) if $self->priv < 9 || $self->remotecmd;
+return (1, $self->msg('e5')) if $self->priv < 9 || $self->remotecmd || $self->inscript;
return (1, $self->msg('e9')) unless $line;
my @f = split /\s+/, $line;
my $f;
my ($call, $newline) = split /\s+/, $line, 2;
return (1, $self->msg('nodee1', $call)) if DXChannel->get($call);
-if ($self->remotecmd) {
+if ($self->remotecmd || $self->inscript) {
Log('DXCommand', "$mycall is trying to spoof $call remotely");
return (1, $self->msg('e5'));
}
my $line;
my $from = $self->call;
my @out;
-return (1, $self->msg('e5')) if $self->remotecmd;
+return (1, $self->msg('e5')) if $self->remotecmd || $self->inscript;
# analyse the line there are four situations...
# 1) talk call
foreach $call (@args) {
$call = uc $call;
- unless ($self->remotecmd) {
+ unless ($self->remotecmd || $self->inscript) {
if ($ref = DXUser->get_current($call)) {
$ref->lockout(0);
$ref->put();
my $user;
my $ref;
-if ($self->remotecmd) {
+if ($self->remotecmd || $self->inscript) {
Log('DXCommand', $self->call . " attempted to unset passphrase for @args remotely");
return (1, $self->msg('e5'));
}
my $user;
my $ref;
-if ($self->remotecmd) {
+if ($self->remotecmd || $self->inscript) {
Log('DXCommand', $self->call . " attempted to unset password for @args remotely");
return (1, $self->msg('e5'));
}
foreach $call (@args) {
$call = uc $call;
- unless ($self->remotecmd) {
+ unless ($self->remotecmd || $self->inscript) {
if ($ref = DXUser->get_current($call)) {
$ref->registered(0);
$ref->put();
# $Id$
#
my ($self, $line) = @_;
-return (1, $self->msg('e5')) if $self->remotecmd;
+return (1, $self->msg('e5')) if $self->remotecmd || $self->inscript;
return (1, $self->msg('e5')) if $line && $self->priv < 5;
my @out;
my $t = ztime(time);
my $tonode;
my $sysopflag;
-return (1, $self->msg('e5')) if $self->remotecmd;
+return (1, $self->msg('e5')) if $self->remotecmd || $self->inscript;
return (1, $self->msg('e28')) unless $self->registered;
if ($sort eq "FULL") {
newroute => '1,New Style Routing,yesno',
ve7cc => '0,VE7CC program special,yesno',
lastmsgpoll => '0,Last Msg Poll,atime',
+ inscript => '9,In a script,yesno',
);
use vars qw($VERSION $BRANCH);
my $loc = $self->{loc} || confess "local var gone missing" ;
if ($line eq "\032" || $line eq '%1A' || uc $line eq "/EX") {
no strict 'refs';
- push @out, $loc->{endaction}($self);
+ push @out, &{$loc->{endaction}}($self); # like this for < 5.8.0
$self->func(undef);
$self->state('prompt');
} elsif ($line eq "\031" || uc $line eq "/ABORT" || uc $line eq "/QUIT") {
my $dxchan = shift;
foreach my $l (@{$self->{lines}}) {
unless ($l =~ /^\s*\#/ || $l =~ /^\s*$/) {
+ $dxchan->inscript(1);
my @out = DXCommandmode::run_cmd($dxchan, $l);
+ $dxchan->inscript(0);
if ($dxchan->can('send_ans')) {
$dxchan->send_ans(@out);
} else {