#use FS::cust_main_county;
#use FS::cust_main;
use FS::session;
+use FS::port;
+use FS::svc_acct;
#require "configfile";
$Debug = 1;
}
if ( $command eq 'login' ) {
-
+ $error = &login(\%hash);
+ print $writer "$error\n";
} elsif ( $command eq 'logoff' ) {
-
+ $error = &logoff(\%hash);
+ print $writer "$error\n";
} elsif ( $command eq 'portnum' ) {
-
+ if ( exists $hash{'ip'} ) {
+ $hash{'ip'} =~ /^([\d\.]+)$/ or $1='nomatch';
+ $port = qsearchs('port', { 'ip' => $1 } );
+ } else {
+ $hash{'nasnum'} =~ /^(\d+)$/ and my $nasnum = $1;
+ $hash{'nasport'} =~ /^(\d+)$/ and my $nasport = $1;
+ $port = qsearchs('port', { 'nasnum'=>$nasnum, 'nasport'=>$nasport } );
+ }
+ print $writer ( $port ? $port->portnum : '' ), "\n";
} else {
warn "$me WARNING: unrecognized command";
}
+ }
+ #won't ever reach without code above to throw out of loop, but...
+ close $writer;
+ close $reader;
+ warn "connection to $machine lost!\n"
+ sleep 5;
+ warn "reconnecting...\n";
+}
+
+sub login {
+ my $href = shift;
+ $href->{'username'} =~ /^([a-z0-9_\-\.]+)$/ or return "Illegal username";
+ my $username = $1;
+ $svc_acct = qsearchs('svc_acct', { 'username' => $username } )
+ or return "Unknown user";
+ return "Incorrect password"
+ if defined($href->{'password'})
+ && $href->{'password'} ne $svc_acct->_password;
+ my $session = new FS::session {
+ 'portnum' => $href->{'portnum'},
+ 'svcnum' => $svc_acct->svcnum,
+ 'login' => $href->{'login'},
+ };
+ $session->insert;
+}
+
+sub logout {
+ my $href = shift;
+ $href->{'username'} =~ /^([a-z0-9_\-\.]+)$/ or return "Illegal username";
+ my $username = $1;
+ $svc_acct = qsearchs('svc_acct', { 'username' => $username } )
+ or return "Unknown user";
+ return "Incorrect password"
+ if defined($href->{'password'})
+ && $href->{'password'} ne $svc_acct->_password;
+ my $session = qsearchs FS::session {
+ 'portnum' => $href->{'portnum'},
+ 'svcnum' => $svc_acct->svcnum,
+ 'logoff' => '',
+ };
+ return "No currently open sessios found for that user/port!" unless $session;
+ my $nsession = new FS::session ( { $old->hash } );
+ $nsession->replace($session);
+}
+
+sub usage {
+ die "Usage:\n\n fs_session_server user machine\n";
+}