3 use Sys::Syslog qw(syslog);
5 use NCIP::Configuration;
7 use Socket qw(:DEFAULT :crlf);
8 use base qw(Net::Server::PreFork);
10 our $VERSION = '0.01';
12 # This sets up the configuration
14 my %transports = ( RAW => \&raw_transport, );
18 my $server = $self->{'server'};
19 my $config = NCIP::Configuration->new( $server->{'config_dir'} );
20 my $server_params = $config->('NCIP.server-params');
21 while ( my ( $key, $val ) = each %$server_params ) {
22 $server->{$key} = $val;
24 my $listeners = $config->('NCIP.listeners');
25 foreach my $svc ( keys %$listeners ) {
26 $server->{'port'} = $listeners->{$svc}->{'port'};
28 $self->{'local_config'} = $config;
31 # Debug, remove before release
33 sub post_configure_hook {
39 # this handles the actual requests
42 my $sockname = getsockname(STDIN);
43 my ( $port, $sockaddr ) = sockaddr_in($sockname);
44 $sockaddr = inet_ntoa($sockaddr);
45 my $proto = $self->{server}->{client}->NS_proto();
47 $self->{'local_config'}->find_service( $sockaddr, $port, $proto );
48 if ( !defined( $self->{service} ) ) {
50 "process_request: Unknown recognized server connection: %s:%s/%s",
51 $sockaddr, $port, $proto );
52 die "process_request: Bad server connection";
54 my $transport = $transports{ $self->{service}->{transport} };
55 if ( !defined($transport) ) {
58 "Unknown transport '%s', dropping",
59 $self->{'service'}->{transport}
71 my $service = $self->{service};
73 # place holder code, just echo at the moment
75 local $SIG{ALRM} = sub { die "raw_transport Timed Out!\n"; };
78 print "You said $input";