X-Git-Url: http://gb7djk.dxcluster.net/gitweb/gitweb.cgi?a=blobdiff_plain;f=perl%2Fclient.pl;h=642f80c6e0bf6b54604dbdf2758820bc035fde53;hb=02ab82e5a26f6055cc6379ef2ff1a16fc93be2e9;hp=db3bb80a1b720be88880cd3b5323c0d2e1e5410d;hpb=295f32fa75fefedcf1cd980c5afcc5de08417ba9;p=spider.git diff --git a/perl/client.pl b/perl/client.pl index db3bb80a..642f80c6 100755 --- a/perl/client.pl +++ b/perl/client.pl @@ -304,6 +304,14 @@ sub timeout cease(0); } +# handle callsign and connection type firtling +sub doclient +{ + my $line = shift; + my @f = split /\s+/, $line; + $call = uc $f[0] if $f[0]; + $csort = $f[1] if $f[1]; +} # # initialisation @@ -358,7 +366,7 @@ $stdout->autoflush(1); $SIG{'INT'} = \&sig_term; $SIG{'TERM'} = \&sig_term; -$SIG{'HUP'} = 'IGNORE'; +$SIG{'HUP'} = \&sig_term; $SIG{'CHLD'} = \&sig_chld; $SIG{'ALRM'} = \&timeout; @@ -369,6 +377,9 @@ if ($loginreq) { my $user; my $s; + $connsort = 'telnet' if $connsort eq 'local'; + setmode(); + if (-e "$data/issue") { open(I, "$data/issue") or die; local $/ = undef; @@ -386,26 +397,20 @@ if ($loginreq) { $stdout->print('login: '); $stdout->flush(); - local $\ = $nl; + local $\ = $mynl; $s = $stdin->getline(); chomp $s; $s =~ s/\s+//og; $s =~ s/-\d+$//o; # no ssids! - cease(0) unless $s gt ' ' && iscallsign($s); + cease(0) unless $s && $s gt ' '; + unless (iscallsign($s)) { + $stdout->print("Sorry, $s is an invalid callsign"); + cease(0); + } $call = uc $s; - $connsort = 'telnet' if $connsort eq 'local'; alarm(0); } -# handle callsign and connection type firtling -sub doclient -{ - my $line = shift; - my @f = split /\s+/, $line; - $call = uc $f[0] if $f[0]; - $csort = $f[1] if $f[1]; -} - # is this an out going connection? if ($connsort eq "connect") { my $mcall = lc $call; @@ -461,6 +466,20 @@ if ($connsort eq "connect") { $mode = ($connsort eq 'ax25') ? 1 : 2; setmode(); +# adjust the callsign if it has an SSID, SSID <= 8 are legal > 8 are netrom connections +my ($scall, $ssid) = split /-/, $call; +$ssid = undef unless $ssid && $ssid =~ /^\d+$/; +if ($ssid) { + $ssid = 15 if $ssid > 15; + if ($connsort eq 'ax25') { + if ($ssid > 8) { + $ssid = 15 - $ssid; + } + } + $call = "$scall-$ssid"; +} + + $conn = Msg->connect("$clusteraddr", $clusterport, \&rec_socket); if (! $conn) { if (-r "$data/offline") {