use lib 'lib';
use SIP2::SC;
-my $listen = '127.0.0.1:6001';
-my $server = '10.60.0.251:6001';
-
-warn "listen on $listen for SIP2/RAW\n";
-
-my $lsn = IO::Socket::INET->new(Listen => 1, LocalAddr => $listen, Reuse => 1) or die $!;
-my $sel = IO::Select->new($lsn);
-
-our $sc;
-
-local $/ = "\r";
-
-while (1) {
- for my $sock ($sel->can_read(1)) {
-
- if ($sock == $lsn) {
- my $new = $lsn->accept;
- my $ip = $sock->peerhost;
- warn "connection from $ip\n";
- $sel->add($new);
- } else {
- my $line = <$sock>;
- if ( ! defined $line ) {
- warn "disconnect from ", $sock->peerhost;
- $sel->remove( $sock );
- delete( $sc->{$sock} );
- close($sock);
- next;
+sub proxy {
+ my ( $listen, $server ) = @_;
+
+ warn "listen on $listen for SIP2/RAW and connect to $server\n";
+
+ my $lsn = IO::Socket::INET->new(Listen => 1, LocalAddr => $listen, Reuse => 1) or die $!;
+ my $sel = IO::Select->new($lsn);
+
+ my $sc;
+
+ local $/ = "\r";
+
+ while (1) {
+ for my $sock ($sel->can_read(1)) {
+
+ if ($sock == $lsn) {
+ my $new = $lsn->accept;
+ my $ip = $sock->peerhost;
+ warn "connection from $ip\n";
+ $sel->add($new);
+ } else {
+ my $line = <$sock>;
+ if ( ! defined $line ) {
+ warn "disconnect from ", $sock->peerhost;
+ $sel->remove( $sock );
+ delete( $sc->{$sock} );
+ close($sock);
+ next;
+ }
+ my $ip = $sock->peerhost;
+ warn "<< $ip ", dump($line);
+ if ( ! $sc->{$sock} ) {
+ warn "connect to $server for $sock\n";
+ $sc->{$sock} = SIP2::SC->new( $server );
+ }
+ $line .= "\n"; # lf to fix Koha ACS
+ print $sock $sc->{$sock}->message( $line )
}
- my $ip = $sock->peerhost;
- warn "<< $ip ", dump($line);
- if ( ! $sc->{$sock} ) {
- warn "connect to $server for $sock\n";
- $sc->{$sock} = SIP2::SC->new( $server );
- }
- $line .= "\n"; # lf to fix Koha ACS
- print $sock $sc->{$sock}->message( $line )
}
}
}