fix DXCommandmode::run_cmd to detect errors earlier

Also fix localhost detection better both for IPV4 and IPV6 systems.
Add CTY1801 cty changes.
This commit is contained in:
Dirk Koopman 2008-02-19 17:10:50 +00:00
parent db1ab4fb25
commit cf757a24d8
6 changed files with 76 additions and 48 deletions

View File

@ -1,3 +1,9 @@
19Feb08=======================================================================
1. Added CTY-1801 cty.dat data.
2. Fix problem with entering non-ascii data and then executing commands that
are guessed from the "cleaned up" version of the string. Now if you enter
commands with invalid characters, it will error immediately.
3. fix a problem detecting IPV4 localhost on IPV6 enabled systems.
10Feb08=======================================================================
1. sort sh/node output. Also show more information.
05Feb08=======================================================================

View File

@ -19,7 +19,7 @@ Fiji: 32: 56: OC: -18.10: -178.40: -12.0: 3D2:
Conway Reef: 32: 56: OC: -21.40: -174.40: -13.0: 3D2/c:
3D2CI,3D2CY;
Rotuma: 32: 56: OC: -12.30: -177.70: -12.0: 3D2/r:
3D2RR,3D2RX;
3D2AG/P,3D2RR,3D2RX;
Swaziland: 38: 57: AF: -26.30: -31.10: -2.0: 3DA:
3DA;
Tunisia: 33: 37: AF: 36.80: -10.20: -1.0: 3V:
@ -54,7 +54,7 @@ Israel: 20: 39: AS: 31.80: -35.20: -2.0: 4X:
Libya: 34: 38: AF: 32.50: -12.50: -2.0: 5A:
5A;
Cyprus: 20: 39: AS: 35.20: -33.40: -2.0: 5B:
5B,C4,H2,P3;
5B,C4,EURO,H2,P3;
Tanzania: 37: 53: AF: -7.00: -39.50: -3.0: 5H:
5H,5I;
Nigeria: 35: 46: AF: 6.50: -3.40: -1.0: 5N:
@ -339,7 +339,7 @@ Shetland: 14: 27: EU: 60.40: 1.50: 0.0: *GM/s:
GM4SLV,GM4SSA,GM4SWU,GM4WXQ,GM4ZHL,GM7AFE,GM7GWW,GM8LNH,GM8MMA,GM8YEC,
MM0LSM,MM0XAU,MM0ZAL,MM1FJM,MM3VQO,MM5PSL,MS0ZCG;
Guernsey: 14: 27: EU: 49.50: 2.70: 0.0: GU:
2P,2U,GP,GU,MP,MU,GB0GUC,GB0JAG,GB0ON,GB2ECG,GB2GU,GB50LIB;
2P,2U,GP,GU,MP,MU,GB0GUC,GB0JAG,GB0ON,GB0U,GB2ECG,GB2GU,GB50LIB;
Wales: 14: 27: EU: 51.50: 3.20: 0.0: GW:
2C,2W,2X,2Y,GC,GW,MC,MW,GB0CCE,GB0CLC,GB0CVA,GB0GCR,GB0GIW,GB0GLV,GB0HEL,
GB0HMT,GB0ML,GB0MPA,GB0MWL,GB0NEW,GB0PSG,GB0RPO,GB0RSC,GB0SDD,GB0SH,
@ -450,9 +450,9 @@ United States: 05: 08: NA: 43.00: 87.90: 5.0: K:
KH6QAI(3)[6],KH6QAJ(3)[6],KH6RW(3)[6],KI6DY(4)[7],KK9A(5),KL0ET(4)[8],
KL0LN(4)[8],KL1IF(4)[8],KL7FDQ(3)[6],KL7WP(3)[6],KL7XX(4)[8],KM4FO(4),
KM6JD(5)[8],KN4Q(4),KN4QS(4)[7],KN5H(3)[6],KN6RO(5)[8],KN8J(5),KO7X(4)[7],
KP2N(5)[8],KP4E(4)[8],KS7T(4)[6],KU1CW(4)[7],KU8E(5),KY1V(4),KY4AA(4),
KY4Z(4)[7],N0AX(3)[6],N1LN(4)[7],N1SZ(4)[7],N1WI(4),N1ZP(4),N2BJ(4),
N2BJL(5),N2IC(4)[7],N2LA(4)[7],N2NB(3)[6],N2WN(4),N3AIU(4)[7],N3BB(4)[7],
KP2N(5)[8],KS7T(4)[6],KU1CW(4)[7],KU8E(5),KY1V(4),KY4AA(4),KY4Z(4)[7],
N0AX(3)[6],N1LN(4)[7],N1SZ(4)[7],N1WI(4),N1ZP(4),N2BJ(4),N2BJL(5),
N2IC(4)[7],N2LA(4)[7],N2NB(3)[6],N2WN(4),N3AIU(4)[7],N3BB(4)[7],
N3ZZ(3)[6],N4CVO(4),N4DD(4),N4DW(4),N4GK(4),N4GN(4),N4IR(4),N4IRR(5),
N4JF(4),N4KG(4),N4KZ(4),N4NO(4),N4OGW(4)[7],N4QS(4),N4SL(3)[6],N4TN(4),
N4TZ(4),N4UW(4),N4VV(4),N4XM(4),N4ZZ(4),N6AR(5)[8],N6MW(5)[8],N6MWA(3)[6],
@ -462,20 +462,21 @@ United States: 05: 08: NA: 43.00: 87.90: 5.0: K:
NH7C(5)[8],NJ4I(4),NL7AU(5)[8],NL7CO(4)[7],NL7XM(5)[8],NP3D(5)[8],NQ4U(4),
NU4B(4),NU4BP(5),NW7MT(4)[6],NW8U(5),NX9T(5),NY4N(4),NY6DX(5)[8],
W0RLI(3)[6],W0UCE(5)[8],W0YK(3)[6],W0YR(5)[8],W0YRN(4)[7],W0ZZ(3)[6],
W0ZZQ(4)[7],W1DY(4)[7],W1DYH(5)[8],W1DYJ(5)[8],W1MVY(3)[6],W1RH(3)[6],
W1SRD(3)[6],W2OO(4),W2VJN(3)[6],W3CP(3)[6],W3HDH(4),W4BCG(4),W4CID(4),
W4DAN(4),W4DHE(4),W4DVG(4),W4EEH(4),W4EF(3)[6],W4FMS(4),W4GKM(4),W4HZD(4),
W4JSI(4),W4KW(4),W4LC(4),W4LIA(4),W4NBS(4),W4NI(4),W4NTI(4),W4NZ(4),
W4PA(4),W4RYW(4),W4TDB(4),W4TYU(4),W4YOK(4)[7],W5KI(5)[8],W5REA(5)[8],
W6AAN(5)[8],W6DSQ(4)[8],W6FC(5)[8],W6IHG(5)[8],W6JV(5)[8],W6LFB(4)[7],
W6NWS(5)[8],W6TER(4)[7],W6UB(4)[8],W6XR(5)[8],W6YJ(4)[7],W7FG(4)[7],
W7LPF(5)[8],W7LR(4)[6],W7LRD(3)[6],W7QF(5)[8],W7SE(4)[7],W8AEF(3)[6],
W8FJ(5),W8HGH(5),W8TN(5),W8WEJ(5),W8ZA(5),W9GE(5),W9GEN(4),W9IGJ(5),
W9MAK(3)[6],W9NGA(3)[6],WA0KDS(3)[6],WA1FCN(4),WA1MKE(4),WA1UJU(4),
WA2MNO(4)[7],WA4GLH(4),WA4JA(4),WA4OSD(4),WA5VGI(3)[6],WA8WV(5),WB2ORD(4),
WB4YDL(4),WB4ZBI(4),WB6BWZ(5)[8],WB8YQJ(3)[6],WB8YYY(5),WD4K(4),WD4OHD(4),
WG7Y(4)[7],WH0AI(4)[8],WH6ASW/M(3)[6],WJ9B(5),WL7BPY(4)[7],WL7K(3)[6],
WN4M(4),WO4O(4),WO5D(5)[8],WP4JBG(4)[8],WS4Y(4)[7],WT5L(5)[8],WX4TM(4);
W0ZZQ(4)[7],W1AA/MSC(5)[8],W1DY(4)[7],W1DYH(5)[8],W1DYJ(5)[8],W1MVY(3)[6],
W1RH(3)[6],W1SRD(3)[6],W2OO(4),W2VJN(3)[6],W3CP(3)[6],W3HDH(4),W4BCG(4),
W4CID(4),W4DAN(4),W4DHE(4),W4DVG(4),W4EEH(4),W4EF(3)[6],W4FMS(4),W4GKM(4),
W4HZD(4),W4JSI(4),W4KW(4),W4LC(4),W4LIA(4),W4NBS(4),W4NI(4),W4NTI(4),
W4NZ(4),W4PA(4),W4RYW(4),W4TDB(4),W4TYU(4),W4YOK(4)[7],W5KI(5)[8],
W5REA(5)[8],W6AAN(5)[8],W6DSQ(4)[8],W6FC(5)[8],W6IHG(5)[8],W6JV(5)[8],
W6LFB(4)[7],W6NWS(5)[8],W6TER(4)[7],W6UB(4)[8],W6XR(5)[8],W6YJ(4)[7],
W7FG(4)[7],W7LPF(5)[8],W7LR(4)[6],W7LRD(3)[6],W7QF(5)[8],W7SE(4)[7],
W8AEF(3)[6],W8FJ(5),W8HGH(5),W8TN(5),W8WEJ(5),W8ZA(5),W9GE(5),W9GEN(4),
W9IGJ(5),W9MAK(3)[6],W9NGA(3)[6],WA0KDS(3)[6],WA1FCN(4),WA1MKE(4),
WA1UJU(4),WA2MNO(4)[7],WA4GLH(4),WA4JA(4),WA4OSD(4),WA5VGI(3)[6],WA8WV(5),
WB2ORD(4),WB4YDL(4),WB4ZBI(4),WB6BWZ(5)[8],WB8YQJ(3)[6],WB8YYY(5),WD4K(4),
WD4OHD(4),WG7Y(4)[7],WH0AI(4)[8],WH6ASW/M(3)[6],WJ9B(5),WL7BPY(4)[7],
WL7K(3)[6],WN4M(4),WO4O(4),WO5D(5)[8],WP4JBG(4)[8],WS4Y(4)[7],WT5L(5)[8],
WX4TM(4);
Guantanamo Bay: 08: 11: NA: 19.90: 75.20: 5.0: KG4:
KG4,KG44;
Mariana Is.: 27: 64: OC: 15.20: -145.80: -10.0: KH0:
@ -676,7 +677,7 @@ Mali: 35: 46: AF: 12.70: 8.00: 0.0: TZ:
TZ;
European Russia: 16: 29: EU: 55.80: -37.60: -3.0: UA:
R,RD4W[30],RK4W[30],RM4W[30],RN4W[30],RU4W[30],RV4W[30],RW4W[30],U,
UA4W[30],R7C,R7C/1,R7C/3,R7C/4;
UA4W[30],R245GS,R7C,R7C/1,R7C/3,R7C/4;
Kaliningrad: 15: 29: EU: 55.00: -20.50: -2.0: UA2:
R2,RA2,RB2,RC2,RD2,RE2,RF2,RG2,RH2,RI2,RJ2,RK2,RL2,RM2,RN2,RO2,RP2,RQ2,
RR2,RS2,RT2,RU2,RV2,RW2,RX2,RY2,RZ2,U2,UA2,UB2,UC2,UD2,UE2,UF2,UG2,UH2,
@ -764,7 +765,7 @@ Canada: 05: 09: NA: 45.00: 80.00: 4.0: VE:
VE2III(2),VE2IM(2),VE2KK(2),VE2MTA(2),VE2MTB(2),VE2NN(2),VE2NRK(2),
VE2PR(2),VE2QRZ(2),VE2RB(2),VE2TVU(2),VE2UA(2),VE2VH(2),VE2WDX(2),
VE2WT(2),VE2XAA/2(2),VE2XY(2),VE2YM(2),VE2Z(2),VE2ZC(5),VE2ZM(5),VE2ZV(5),
VE3EY/2(2),VE3NE/2(2),VE3RHJ/2(2),VE8AJ(2),VE8PW(2),VE8RCS(2),VER20080110,
VE3EY/2(2),VE3NE/2(2),VE3RHJ/2(2),VE8AJ(2),VE8PW(2),VE8RCS(2),VER20080212,
VY0AA(4)[3],VY0PW(4)[3],VY2MGY/3(4)[4];
Australia: 30: 59: OC: -22.00: -135.00: -10.0: VK:
AX,VH,VI,VJ,VK,VL,VM,VN,VZ;
@ -782,7 +783,7 @@ Mellish Reef: 30: 56: OC: -17.60: -155.80: -10.0: VK9M:
Norfolk I.: 32: 60: OC: -29.00: -168.00: -11.5: VK9N:
AX9,VH9,VI9,VJ9,VK9,VK9CN,VL9,VM9,VN9,VZ9;
Willis I.: 30: 55: OC: -16.30: -149.50: -10.0: VK9W:
AX9W,VH9W,VI9W,VJ9W,VK9FW,VK9KW,VK9W,VL9W,VM9W,VN9W,VZ9W;
AX9W,VH9W,VI9W,VJ9W,VK9FW,VK9KW,VK9W,VL9W,VM9W,VN9W,VZ9W,VK9DWX;
Christmas I.: 29: 54: OC: -10.50: -105.70: -7.0: VK9X:
AX9X,VH9X,VI9X,VJ9X,VK9FX,VK9KX,VK9X,VL9X,VM9X,VN9X,VZ9X;
Anguilla: 08: 11: NA: 18.30: 63.00: 4.0: VP2E:
@ -802,7 +803,7 @@ Falkland Is.: 13: 16: SA: -51.70: 57.90: 4.0: VP8:
South Georgia: 13: 73: SA: -54.30: 36.80: 2.0: VP8/g:
VP8DKX,VP8SGK;
South Shetland: 13: 73: SA: -62.00: 58.30: 4.0: VP8/h:
DT8A,HF0POL,HL8KSJ,LU/R1ANF,LU1ZC,LZ0A,R1ANF,VP8/LZ1UQ,VP8DJK;
DT8A,ED3RKL,HF0POL,HL8KSJ,LU/R1ANF,LU1ZC,LZ0A,R1ANF,VP8/LZ1UQ,VP8DJK;
South Orkney: 13: 73: SA: -60.00: 45.50: 3.0: VP8/o:
AY1ZA,LU1ZA,LU2ERA/Z;
South Sandwich: 13: 73: SA: -57.00: 26.70: 2.0: VP8/s:

View File

@ -34,6 +34,7 @@
'3D2/C' => '311',
'3D2/F' => '268',
'3D2/R' => '314',
'3D2AG/P' => '314',
'3D2CI' => '311',
'3D2CY' => '311',
'3D2RR' => '314',
@ -795,6 +796,7 @@
'EC8' => '36',
'EC9' => '347,348',
'ED' => '34',
'ED3RKL' => '208',
'ED5ON/6' => '35',
'ED6' => '35',
'ED8' => '36',
@ -828,6 +830,7 @@
'ES' => '190',
'ET' => '41',
'EU' => '178',
'EURO' => '278',
'EV' => '178',
'EW' => '178',
'EX' => '186',
@ -956,6 +959,7 @@
'GB0TCH' => '62',
'GB0TD' => '66',
'GB0TTT' => '66',
'GB0U' => '65',
'GB0WCY' => '61',
'GB0WOA' => '62',
'GB0WRC' => '66',
@ -1647,7 +1651,6 @@
'KP2N' => '220',
'KP3' => '115',
'KP4' => '115',
'KP4E' => '220',
'KP5' => '116',
'KQ0' => '468,474,478,485,486,490,491,503',
'KQ1' => '469,481,483,492,501,508',
@ -2501,6 +2504,7 @@
'R1FJ' => '174',
'R1MV' => '312',
'R2' => '175',
'R245GS' => '173,419,420,421,422',
'R3' => '420',
'R30ZF' => '176,426,431',
'R35NP' => '176,426,431',
@ -3390,7 +3394,7 @@
'VE8PW' => '191',
'VE8RCS' => '191',
'VE9' => '437',
'VER20080110' => '191',
'VER20080212' => '191',
'VERSION' => '537',
'VF' => '435',
'VF0' => '191',
@ -3454,6 +3458,7 @@
'VK9C' => '195',
'VK9CL' => '193',
'VK9CN' => '197',
'VK9DWX' => '198',
'VK9FC' => '195',
'VK9FL' => '193',
'VK9FM' => '196',
@ -3588,6 +3593,7 @@
'W0ZZ' => '220',
'W0ZZQ' => '220',
'W1' => '469,481,483,492,501,508',
'W1AA/MSC' => '220',
'W1DY' => '220',
'W1DYH' => '220',
'W1DYJ' => '220',

View File

@ -484,6 +484,20 @@ sub send_ans
}
}
}
sub _error_out
{
my $self = shift;
my $e = shift;
if (++$self->{errors} > $maxerrors) {
$self->send($self->msg('e26'));
$self->disconnect;
return ();
} else {
return ($self->msg($e));
}
}
#
# this is the thing that runs the command, it is done like this for the
# benefit of remote command execution
@ -497,19 +511,22 @@ sub run_cmd
my $cmdline = shift;
my @ans;
return () if length $cmdline == 0;
# split the command line up into parts, the first part is the command
my ($cmd, $args) = split /\s+/, $cmdline, 2;
$args = "" unless defined $args;
if ($cmd) {
# check cmd
if ($cmd =~ m|^/| || $cmd =~ m|[^-?\w/]|) {
LogDbg('DXCommand', "cmd: invalid characters in '$cmd'");
return $self->_error_out('e1');
}
# strip out // on command only
$cmd =~ s|//|/|g;
$cmd =~ s|^/||g; # no leading / either
$cmd =~ s|[^-?\w/]||g; # and no funny characters either
my ($path, $fcmd);
@ -520,7 +537,7 @@ sub run_cmd
if ($acmd) {
($cmd, $args) = split /\s+/, "$acmd $args", 2;
$args = "" unless defined $args;
dbg("aliased cmd: $cmd $args") if isdbg('command');
dbg("cmd: aliased $cmd $args") if isdbg('command');
}
# first expand out the entry to a command
@ -528,26 +545,23 @@ sub run_cmd
($path, $fcmd) = search($main::cmd, $cmd, "pl") unless $path && $fcmd;
if ($path && $cmd) {
dbg("path: $cmd cmd: $fcmd") if isdbg('command');
dbg("cmd: path $cmd cmd: $fcmd") if isdbg('command');
my $package = find_cmd_name($path, $fcmd);
return ($@) if $@;
if ($package) {
if ($package && DXCommandmode->can($package)) {
no strict 'refs';
dbg("package: $package") if isdbg('command');
dbg("cmd: package $package") if isdbg('command');
eval { @ans = &$package($self, $args) };
return (DXDebug::shortmess($@)) if $@;
} else {
dbg("cmd: $package not present") if isdbg('command');
return $self->_error_out('e1');
}
} else {
dbg("cmd: $cmd not found") if isdbg('command');
if (++$self->{errors} > $maxerrors) {
$self->send($self->msg('e26'));
$self->disconnect;
return ();
} else {
return ($self->msg('e1'));
}
return $self->_error_out('e1');
}
}
@ -831,14 +845,15 @@ sub find_cmd_name {
no strict 'refs';
if (exists $Cache{$package}) {
dbg("Redefining $package") if isdbg('command');
dbg("find_cmd_name: Redefining $package") if isdbg('command');
undef *$package;
} else {
dbg("Defining $package") if isdbg('command');
dbg("find_cmd_name: Defining $package") if isdbg('command');
}
eval $eval;
$Cache{$package} = {mtime => $mtime };
$Cache{$package} = {mtime => $mtime } unless $@;
}

View File

@ -104,7 +104,7 @@ sub dequeue
$msg = uc $msg;
if (is_callsign($msg) && $msg !~ m|/| ) {
my $sort = $conn->{csort};
$sort = 'local' if $conn->{peerhost} eq "127.0.0.1";
$sort = 'local' if $conn->{peerhost} =~ /127\.\d+\.\d+\.\d+$/ || $conn->{peerhost} eq '::1';
my $uref;
if ($main::passwdreq || ($uref = DXUser->get_current($msg)) && $uref->passwd ) {
$conn->conns($msg);
@ -126,7 +126,7 @@ sub dequeue
my $sort = $conn->{csort};
$conn->{echo} = $conn->{decho};
delete $conn->{decho};
$sort = 'local' if $conn->{peerhost} eq "127.0.0.1";
$sort = 'local' if $conn->{peerhost} =~ /127\.\d+\.\d+\.\d+$/ || $conn->{peerhost} eq '::1';
$conn->{usedpasswd} = 1;
$conn->to_connected($conn->{call}, 'A', $sort);
} else {

View File

@ -11,6 +11,6 @@ use vars qw($version $subversion $build);
$version = '1.54';
$subversion = '0';
$build = '205';
$build = '206';
1;