Mercurial > notdcc
diff 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 diff
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/dccifd/dccif-test/dccif-test.pl Tue Mar 10 13:49:58 2009 +0100 @@ -0,0 +1,100 @@ +#! /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";