/[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

Contents of /sysplogd

Parent Directory Parent Directory | Revision Log Revision Log


Revision 1 - (show annotations)
Fri Apr 10 17:49:49 2009 UTC (14 years, 11 months ago) by dpavlin
File size: 992 byte(s)
simple perl syslog server

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