Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #!/usr/bin/perl
- use strict;
- use warnings;
- use Sys::Syslog qw(:DEFAULT setlogsock);
- use IO::Socket;
- # backend (cbpolicyd)
- my $backend_host = "127.0.0.1";
- my $backend_port = "10031";
- # syslog
- my $syslog_socktype = 'unix'; # inet, unix, stream, console
- my $syslog_facility="mail";
- my $syslog_options="pid";
- setlogsock $syslog_socktype;
- openlog "cbpolicyd-proxy", $syslog_options, $syslog_facility;
- # Unbuffer standard output.
- select((select(STDOUT), $| = 1)[0]);
- my @lines = ();
- while (<STDIN>) {
- my $line = $_;
- chomp $line;
- if ($line eq '') {
- my $sock = IO::Socket::INET->new(PeerAddr => $backend_host, PeerPort => $backend_port, Proto => "tcp", Type => SOCK_STREAM);
- if (defined($sock)) {
- $sock->autoflush();
- print $sock join("\n", @lines). "\n\n";
- my @result = <$sock>;
- print STDOUT join("", @result);
- close($sock);
- } else {
- syslog "warning", "returning DUNNO because of socket error: $@";
- print $@;
- print STDOUT "action=DUNNO\n\n";
- }
- @lines = ();
- } else {
- push @lines, $line;
- }
- }
- exit 0;
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement