added inscript test to selected commands
authorminima <minima>
Sat, 15 Jan 2005 22:03:46 +0000 (22:03 +0000)
committerminima <minima>
Sat, 15 Jan 2005 22:03:46 +0000 (22:03 +0000)
fixed problem with dxcommandmode in perl < 5.8
added spanish translations for script commands

32 files changed:
Changes
cmd/Commands_en.hlp
cmd/Commands_es.hlp
cmd/announce.pl
cmd/bye.pl
cmd/chat.pl
cmd/demonstrate.pl
cmd/do.pl
cmd/dx.pl
cmd/export.pl
cmd/pc.pl
cmd/save.pl
cmd/send.pl
cmd/set/lockout.pl
cmd/set/passphrase.pl
cmd/set/password.pl
cmd/set/privilege.pl
cmd/set/register.pl
cmd/set/startup.pl
cmd/show/startup.pl
cmd/show/var.pl
cmd/spoof.pl
cmd/talk.pl
cmd/unset/lockout.pl
cmd/unset/passphrase.pl
cmd/unset/password.pl
cmd/unset/register.pl
cmd/unset/startup.pl
cmd/wx.pl
perl/DXChannel.pm
perl/DXCommandmode.pm
perl/Script.pm

diff --git a/Changes b/Changes
index 8904dd808c29b3773d64de9db7f6a1f3a34864f5..8c10c30c88c4031411f75f74f37e7db24fb8a64d 100644 (file)
--- a/Changes
+++ b/Changes
@@ -1,3 +1,9 @@
+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
index 3aecaab0bb6cc7e55be735141ba9d03978e6ac50..dfdf929213b9c0290cb5b256af1c81b979dc1e3b 100644 (file)
@@ -1754,8 +1754,6 @@ SEND messages to the sysop.
 
 === 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
@@ -1766,6 +1764,10 @@ You may find the (curiously named) command BLANK useful to break
 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
index 88536209588890a4255bafab3b786e279c8af455..d7147319fef85abeb9bf524a35fa4d086a17155c 100644 (file)
@@ -1739,6 +1739,30 @@ en modo de SOLO-RECIBIR no pudiendo usar los comandos DX, ANN, etc.
 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
 
@@ -2118,6 +2142,10 @@ especifiques. podr
 
 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.
index 6b66d68eb9947dfb2c181bdac6bfb0d1863e1abb..5e0ff58c998c4c1c440d3a6a66ac66d0698ae4e8 100644 (file)
@@ -17,7 +17,7 @@
 
 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;
 
index 653e939407a4067141f4da5bad97e11074af859a..9a842efd09b8268776af292d56275fc7e589daf7 100644 (file)
@@ -5,6 +5,7 @@
 #
 
 my $self = shift;
+return (1, $self->msg('e5')) if $self->inscript;
 
 # log out text
 if ($self->is_user && -e "$main::data/logout") {
index a6321f5fa66664c2db07cce19c25e9e2d82c0c12..cace4508250816edf5eae169ffcedd554e8dfe5d 100644 (file)
@@ -10,7 +10,7 @@
 
 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;
 
index 53437b966dd5317517b8dc62bb697a00eee58457..7ef0277ead9151680821f25abf82f25298302f26 100644 (file)
@@ -16,7 +16,7 @@ my $mycall = $self->call;
 
 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'));
 }
index 7001d987f7af757b01532d438a8137f5aba9e40f..5fdeeb3db446df6badcd90dab135b46e1a43998e 100644 (file)
--- a/cmd/do.pl
+++ b/cmd/do.pl
@@ -9,7 +9,7 @@
 #
 
 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" );
index b0be3bd83038c781f454acb5db9b54ff82d1e372..02fc3ca448604706d3ecd06996027faf155bfe24 100644 (file)
--- a/cmd/dx.pl
+++ b/cmd/dx.pl
@@ -16,7 +16,7 @@ my $freq;
 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;
index 0e803a2fa8c8010d08468e8588b0e8fd9828d029..fc1ebfd5dc3a405166f295a25d4725efb4f52af0 100644 (file)
@@ -14,7 +14,7 @@ my @body;
 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];
index 8e371ef21355d1b7f9ec3ed790b02f59baa4618f..dcc2f668e86682391d11ab23e7f25a6326bd890d 100644 (file)
--- a/cmd/pc.pl
+++ b/cmd/pc.pl
@@ -9,7 +9,7 @@ my $self = shift;
 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);
index 02835ef721dee95edbe115037d5657462e665baa..0c4c8b225288be4c6580a4372fb79e43d9f3723b 100644 (file)
@@ -9,7 +9,7 @@
 #
 
 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 = '>';
index 722200b70e031c6004938810ea1f79e1af87ef74..97a1c535026b3984753075b5e99e5ff04869badf 100644 (file)
@@ -17,7 +17,7 @@
 # $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;
index b5c010fdd9e3274aac7305f7876ce6f6cf90928a..d25a526108637d53755fef47593900b2dfa6eda4 100644 (file)
@@ -20,7 +20,7 @@ if ($self->priv < 9) {
 
 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();
index 41334ffda9ebe5e4ddd9db84ac2bc9e7b348757e..9cd270c61cb697053984667fd399da120a603676 100644 (file)
@@ -13,7 +13,7 @@ my @out;
 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'));
index c007299ac6dfa59bd20f438814648fcab97633cd..3a1dc242480cc9c58a6ce5ed3559b69b254cbe2a 100644 (file)
@@ -14,7 +14,7 @@ my @out;
 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'));
index ea9e218ded0ab26a9b85b2df17181373a7475af8..6d5fd4d20cd053a443fc3911e3edffb7b69a0d68 100644 (file)
@@ -15,7 +15,7 @@ my @out;
 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'));
 }
@@ -26,7 +26,7 @@ if ($priv < 0 || $priv > 9) {
 
 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);
index 3fa3fcb9a6f077404e97333e092fb42929641238..3a7c7db5f9bf0306189961166474a69780d4d6d6 100644 (file)
@@ -21,7 +21,7 @@ return (1, $self->msg('reginac')) unless $main::reqreg;
 
 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();
index 0c0c24b969765179a05441e26ec706954b5216ef..aff00ca1a49b4cf520448f7a1fe3d13bd37efe94 100644 (file)
@@ -6,7 +6,7 @@
 # $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/;
 
index 1f160c1bd0084d6ba96fa96ee8c75760b2cf74e7..6bb3e854caef134908a0443810a02f6c57a2664b 100644 (file)
@@ -6,7 +6,7 @@
 # $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;
index eee2432feddf5321eefa9c388d6e97fea27f8e14..f68577f85741e90460f4ca1f7be6070dd07dd69b 100644 (file)
@@ -9,7 +9,7 @@
 #
 
 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;
index e8ee5c55d96ddd04b5e8fd9dbc23f7c49afcf315..5336a3248c2d673face8f0fa0b5513f144e0b34d 100644 (file)
@@ -15,7 +15,7 @@ my $mylang = $self->lang;
 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'));
 }
index f21e2851bc90790891003b6a24cd43869147fe47..2815ad39c710896b82e72e0a04575b7b14686b7b 100644 (file)
@@ -12,7 +12,7 @@ my $via;
 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
index 5cc1ac3dda1260cb966a03bc30cd397d4bf2bc15..d8c8a1265ea8f4fd80c7b6550e1043d4ca7011c7 100644 (file)
@@ -20,7 +20,7 @@ if ($self->priv < 9) {
 
 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();
index 213e4f92a676baffc1d09382aa2ee1c104b78f7a..9bf6a61cdf8ad49618b7a8eba25d437d28cbc371 100644 (file)
@@ -12,7 +12,7 @@ my @out;
 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'));
 }
index 6fdc92576e9e3ff27d4496289cd4edcf4e8f1813..fcaa4c747bb0c626e0f584a0411fc0b0e4689a8e 100644 (file)
@@ -12,7 +12,7 @@ my @out;
 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'));
 }
index 8685a13becaf222a22eb75b9912711a793211052..555fe02149116536b88c515ed6e5291830493ae9 100644 (file)
@@ -21,7 +21,7 @@ return (1, $self->msg('reginac')) unless $main::reqreg;
 
 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();
index 36ee830d4844b726a8da3952fd9ea14e8c2d9093..77cc3ea4ad6a5096d017331e2e08570483be4d80 100644 (file)
@@ -6,7 +6,7 @@
 # $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;
index 17aef89efb772ef05a718a347697b63e9553adee..22b5e0ccc262075b1908d6802837a766c520464d 100644 (file)
--- a/cmd/wx.pl
+++ b/cmd/wx.pl
@@ -23,7 +23,7 @@ my $from = $self->call;
 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") {
index 0f25a5dd3c90cadada415e94caffa0e93c0a68ff..ca3afd6f1277bcc617e5d4a4321d5d1d16f12f25 100644 (file)
@@ -116,6 +116,7 @@ $count = 0;
                  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);
index 7b69ad22c1b17d4e462f588b196418e5121c04d0..80a31ed517a6829d91c4cf5ae034478403cf711f 100644 (file)
@@ -958,7 +958,7 @@ sub do_entry_stuff
                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") {
index 8fdd806496c34df3c684abad02b98b46326fb6d7..24593aee92fa22e85b436a2efca7c134b467cdc3 100644 (file)
@@ -57,7 +57,9 @@ sub run
        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 {