- if ($state == 0) {
- $stdout->print('login: ');
- $stdout->flush();
- local $\ = $nl;
- $s = $stdin->getline();
- chomp $s;
- $s =~ s/\s+//og;
- $s =~ s/-\d+$//o; # no ssids!
- cease(0) unless $s gt ' ';
- $call = uc $s;
- $user = DXUser->get($call);
- $state = 1;
- } elsif ($state == 1) {
- $stdout->print('password: ');
- $stdout->flush();
- local $\ = $nl;
- $s = $stdin->getline();
- chomp $s;
- $state = 2;
- if (!$user || ($user->passwd && $user->passwd ne $s)) {
- $stdout->print("sorry...$nl");
- 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];
+ $stdout->print('login: ');
+ $stdout->flush();
+ local $\ = $mynl;
+ $s = $stdin->getline();
+ chomp $s;
+ $s =~ s/\s+//og;
+ $s =~ s/-\d+$//o; # no ssids!
+ cease(0) unless $s && $s gt ' ';
+ unless (iscallsign($s)) {
+ $stdout->print("Sorry, $s is an invalid callsign");
+ cease(0);
+ }
+ $call = uc $s;
+ alarm(0);