/[sysplogd]/sysplogd
This is repository of my old source code which isn't updated any more. Go to git.rot13.org for current projects!
ViewVC logotype

Annotation of /sysplogd

Parent Directory Parent Directory | Revision Log Revision Log


Revision 1 - (hide annotations)
Fri Apr 10 17:49:49 2009 UTC (15 years ago) by dpavlin
File size: 992 byte(s)
simple perl syslog server

1 dpavlin 1 #!/usr/bin/perl
2    
3     use warnings;
4     use strict;
5    
6     use IO::Socket;
7     use Data::Dump qw/dump/;
8    
9     my $port = 514;
10    
11     my $MAXLEN = 1524;
12    
13     my @facilities = ( qw/
14     kernel user mail system security internal printer news uucp clock security2
15     FTP NTP audit alert clock2 local0 local1 local2 local3 local4 local5 local6 local7
16     / );
17    
18     # Start Listening on UDP port 514
19     my $sock = IO::Socket::INET->new(
20     LocalPort => $port,
21     Proto => 'udp'
22     # ReuseAddr => 1,
23     ) || die "can't listen to $port: $!";
24    
25     print "INFO: listen on $port",$/;
26    
27     my $rin = '';
28     my $buf;
29     while(1) {
30     $sock->recv($buf, $MAXLEN);
31     my ($port, $ipaddr) = sockaddr_in($sock->peername);
32     my $hostname = gethostbyaddr($ipaddr, AF_INET);
33     my $ip = join('.', unpack('C4',$ipaddr));
34     warn "# ",dump( $port, $ipaddr, $hostname, $buf );
35     if ( $buf=~/<(\d+)>(.*?):(.*)/ ) {
36     my $pri=$1;
37     my $head=$2;
38     my $msg=$3;
39     my $sev=$pri % 8;
40     my $fac=($pri-$sev) / 8;
41     print dump( $ip, $port, $hostname, $pri, $head, $msg, $sev, $fac, $facilities[$fac] ),$/;
42     }
43     }

Properties

Name Value
svn:executable

  ViewVC Help
Powered by ViewVC 1.1.26