From 52b07e8abd3946578a6c2701ec9e5195ec6b17e6 Mon Sep 17 00:00:00 2001 From: ivan Date: Fri, 27 Oct 2000 20:15:50 +0000 Subject: session monitor --- fs_sesmon/FS-SessionClient/fs_sessiond | 64 ++++++++++++++++++++++++++++++++++ 1 file changed, 64 insertions(+) create mode 100644 fs_sesmon/FS-SessionClient/fs_sessiond (limited to 'fs_sesmon/FS-SessionClient/fs_sessiond') diff --git a/fs_sesmon/FS-SessionClient/fs_sessiond b/fs_sesmon/FS-SessionClient/fs_sessiond new file mode 100644 index 000000000..74d3aab31 --- /dev/null +++ b/fs_sesmon/FS-SessionClient/fs_sessiond @@ -0,0 +1,64 @@ +#!/usr/bin/perl -Tw +# +# fs_sessiond +# +# This is run REMOTELY over ssh by fs_session_server +# + +use strict; +use Socket; + +use vars qw( $Debug ); + +$Debug = 1; + +my $fs_session_socket = "/usr/local/freeside/fs_sessiond_socket"; + +$ENV{'PATH'} ='/usr/local/bin:/usr/bin:/usr/ucb:/bin'; +$ENV{'SHELL'} = '/bin/sh'; +$ENV{'IFS'} = " \t\n"; +$ENV{'CDPATH'} = ''; +$ENV{'ENV'} = ''; +$ENV{'BASH_ENV'} = ''; + +$|=1; + +my $me = "[fs_sessiond]"; + +warn "$me starting\n" if $Debug; +#nothing to read from server + +warn "$me creating $fs_sessiond_socket\n" if $Debug; +my $uaddr = sockaddr_un($fs_signupd_socket); +my $proto = getprotobyname('tcp'); +socket(Server,PF_UNIX,SOCK_STREAM,0) or die "socket: $!"; +unlink($fs_signup_socket); +bind(Server, $uaddr) or die "bind: $!"; +listen(Server,SOMAXCONN) or die "listen: $!"; + +warn "$me entering main loop\n" if $Debug; +my $paddr; +for ( ; $paddr = accept(Client,Server); close Client) { + + chomp( my $command = ); + + if ( $command eq 'login' || $command eq 'logout' || $command eq 'portnum' ) { + warn "$me reading data from local client\n" if $Debug; + my @data, $dos; + push @data, scalar() until $dos++ == 99 || $data[$#data] != "END\n"; + if ( $dos == 99 ) { + warn "$me WARNING: DoS attempt!" + } else { + warn "$me sending data to remote server\n" if $Debug; + print "$command\n", @data; + warn "$me reading result from remote server\n" if $Debug; + my $error = ; + warn "$me sending error to local client\n" if $Debug; + print Client $error; + } + } else { + warn "$me WARNING: unexpected command from client: $command"; + } + +} + -- cgit v1.2.1 From b90f8cdac9371c219a72dda16f8deecc7c44fc28 Mon Sep 17 00:00:00 2001 From: ivan Date: Sun, 3 Dec 2000 20:25:20 +0000 Subject: session monitor updates --- fs_sesmon/FS-SessionClient/fs_sessiond | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) (limited to 'fs_sesmon/FS-SessionClient/fs_sessiond') diff --git a/fs_sesmon/FS-SessionClient/fs_sessiond b/fs_sesmon/FS-SessionClient/fs_sessiond index 74d3aab31..d7284b252 100644 --- a/fs_sesmon/FS-SessionClient/fs_sessiond +++ b/fs_sesmon/FS-SessionClient/fs_sessiond @@ -12,7 +12,7 @@ use vars qw( $Debug ); $Debug = 1; -my $fs_session_socket = "/usr/local/freeside/fs_sessiond_socket"; +my $fs_sessiond_socket = "/usr/local/freeside/fs_sessiond_socket"; $ENV{'PATH'} ='/usr/local/bin:/usr/bin:/usr/ucb:/bin'; $ENV{'SHELL'} = '/bin/sh'; @@ -29,10 +29,10 @@ warn "$me starting\n" if $Debug; #nothing to read from server warn "$me creating $fs_sessiond_socket\n" if $Debug; -my $uaddr = sockaddr_un($fs_signupd_socket); +my $uaddr = sockaddr_un($fs_sessiond_socket); my $proto = getprotobyname('tcp'); socket(Server,PF_UNIX,SOCK_STREAM,0) or die "socket: $!"; -unlink($fs_signup_socket); +unlink($fs_sessiond_socket); bind(Server, $uaddr) or die "bind: $!"; listen(Server,SOMAXCONN) or die "listen: $!"; @@ -44,8 +44,8 @@ for ( ; $paddr = accept(Client,Server); close Client) { if ( $command eq 'login' || $command eq 'logout' || $command eq 'portnum' ) { warn "$me reading data from local client\n" if $Debug; - my @data, $dos; - push @data, scalar() until $dos++ == 99 || $data[$#data] != "END\n"; + my( @data, $dos ); + push @data, scalar() until $dos++ == 99 || $data[$#data] eq "END\n"; if ( $dos == 99 ) { warn "$me WARNING: DoS attempt!" } else { -- cgit v1.2.1 From c328bbcdf207c83be69c9b925e597d4f92288806 Mon Sep 17 00:00:00 2001 From: ivan Date: Sun, 10 Dec 2000 21:16:26 +0000 Subject: fix uninitialized value errors --- fs_sesmon/FS-SessionClient/fs_sessiond | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) (limited to 'fs_sesmon/FS-SessionClient/fs_sessiond') diff --git a/fs_sesmon/FS-SessionClient/fs_sessiond b/fs_sesmon/FS-SessionClient/fs_sessiond index d7284b252..bfdb20a1d 100644 --- a/fs_sesmon/FS-SessionClient/fs_sessiond +++ b/fs_sesmon/FS-SessionClient/fs_sessiond @@ -44,7 +44,8 @@ for ( ; $paddr = accept(Client,Server); close Client) { if ( $command eq 'login' || $command eq 'logout' || $command eq 'portnum' ) { warn "$me reading data from local client\n" if $Debug; - my( @data, $dos ); + my @data; + my $dos = 0; push @data, scalar() until $dos++ == 99 || $data[$#data] eq "END\n"; if ( $dos == 99 ) { warn "$me WARNING: DoS attempt!" -- cgit v1.2.1