Mercurial > notdcc
view dccifd/dccif-test/dccif-test.pl @ 0:c7f6b056b673
First import of vendor version
author | Peter Gervai <grin@grin.hu> |
---|---|
date | Tue, 10 Mar 2009 13:49:58 +0100 |
parents | |
children |
line wrap: on
line source
#! /usr/local/bin/perl # test sample Perl interface to the DCC interface daemon # Copyright (c) 2008 by Rhyolite Software, LLC # # This agreement is not applicable to any entity which sells anti-spam # solutions to others or provides an anti-spam solution as part of a # security solution sold to other entities, or to a private network # which employs the DCC or uses data provided by operation of the DCC # but does not provide corresponding data to other users. # # Permission to use, copy, modify, and distribute this software without # changes for any purpose with or without fee is hereby granted, provided # that the above copyright notice and this permission notice appear in all # copies and any distributed versions or copies are either unchanged # or not called anything similar to "DCC" or "Distributed Checksum # Clearinghouse". # # Parties not eligible to receive a license under this agreement can # obtain a commercial license to use DCC by contacting Rhyolite Software # at sales@rhyolite.com. # # A commercial license would be for Distributed Checksum and Reputation # Clearinghouse software. That software includes additional features. This # free license for Distributed ChecksumClearinghouse Software does not in any # way grant permision to use Distributed Checksum and Reputation Clearinghouse # software # # THE SOFTWARE IS PROVIDED "AS IS" AND RHYOLITE SOFTWARE, LLC DISCLAIMS ALL # WARRANTIES WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES # OF MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL RHYOLITE SOFTWARE, LLC # BE LIABLE FOR ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES # OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, # WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, # ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS # SOFTWARE. # Rhyolite Software DCC 1.3.103-1.7 $Revision$ use strict 'subs', 'vars'; use Getopt::Std; my $usage = "usage: [-h homedir] [-o opts] [-c clnt-name] [-l heLo]" . " [-f env_from]\n" . " [-I infile] [-O outfile]" . " [-r rcpt1[:user1][,rcpt2[:user2],...]]\n"; my(%opts, $clnt_addr, $clnt_name, $rcpt, @rcpts, $body, @result); do('../dccif.pl') || die("could not get sample interface ../dccif.pl: $!\n"); $opts{I} = "-"; $opts{O} = "-"; if (!getopts('h:o:c:l:f:I:O:t:r:', \%opts) || @ARGV) { print STDERR $usage; exit 1; } if (! $opts{c}) { $clnt_addr = ""; $clnt_name = ""; } else { $clnt_name = $opts{c}; $clnt_addr = gethostbyname($clnt_name); if (!$clnt_addr) { $clnt_addr = ""; } else { $clnt_addr = inet_ntoa($clnt_addr); $clnt_name = "" if ($clnt_addr eq $clnt_name); } } # make array of env_To recipients # With no recipients, dccifd will understand a target count of 0. The # result is like `dccifd -Q`. @rcpts = (); if ($opts{r}) { my(@raw_rcpts, @raw_rcpt); @raw_rcpts = split(/,/, $opts{r}); while (@raw_rcpts) { $rcpt = shift(@raw_rcpts); $rcpt =~ s/;/\r/; push @rcpts, $rcpt; } } @result = dccif($opts{O}, $opts{o} ? $opts{o} : "", $clnt_addr, $clnt_name, $opts{l} ? $opts{l} : "", $opts{f} ? $opts{f} : "", \@rcpts, $opts{I}, $opts{h} ? $opts{h} : ""); print STDERR "result=@result\n";