/usr/sbin/sitesummary-upload is in sitesummary-client 0.1.28+deb9u1.
This file is owned by root:root, with mode 0o755.
The actual contents of the file can be viewed below.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 | #!/usr/bin/perl -w
# Written by Bill Allombert for the Debian popularity-contest project.
# This file is placed in the public domain.
# Rewritten for sitesummary by Petter Reinholdtsen
use strict;
use IO::Socket;
use Getopt::Std;
use File::Basename;
my %opts;
getopts("du:f:", \%opts);
sub usage {
print <<"EOF";
Usage: $0 [-Cd] [-u <url>] [-f <file>]
-d enable debugging
-u <url> submit to the given URL (default localhost)
-f <file> read popcon report from file (default stdin)
EOF
}
my ($submiturl) = $opts{'u'} || "http://localhost/cgi-bin/sitesummary-collector.cgi";
my ($file) = $opts{'f'} || "-";
my ($host) = $submiturl =~ m%http://([^/]+)%;
print "Unable to parse url\n" if ($opts{'d'} && ! $host);
# Configure the proxy:
my ($http_proxy,$proxy,$port,$remote);
$http_proxy=$ENV{'http_proxy'};
if (defined($http_proxy) && length($http_proxy))
{
$http_proxy =~ m{http://([^:]*)(?::([0-9]+))?}
or die ("unrecognized http_proxy");
$proxy=$1; $port=$2;
}
$proxy=$host unless (defined($proxy));
$port=80 unless (defined($port));
# Compress the report:
my ($str,$len);
my $encoding;
open FILE, "< $file" or die "reading from '$file'";
$encoding = "identity";
$str .= $_ while(<FILE>);
close(FILE);
$len = length($str);
# 30 second timeout on http connections
$SIG{ALRM} = sub { die "timeout in sitesummary-upload\n" };
alarm(30);
# Connect to server
$remote = IO::Socket::INET->new(Proto => "tcp", PeerAddr => $proxy,
PeerPort => $port);
unless ($remote) { die "cannot connect to $proxy:$port" }
my $boundary = "----------ThIs_Is_tHe_bouNdaRY_\$";
my $basefile = basename($file);
#Content-Length: $len
# text/plain; charset=utf-8
my $ORS = "\r\n"; # Use DOS line endings to make HTTP happy
my $form;
$form .= "--${boundary}$ORS";
$form .= "Content-Disposition: form-data; name=\"sitesummary\"; filename=\"$basefile\"$ORS";
$form .= "Content-Encoding: $encoding$ORS";
$form .= "Content-Type: application/octet-stream$ORS$ORS";
$form .= "$str$ORS";
$form .= "--${boundary}--$ORS";
$form .= "$ORS";
my $formlen = length($form);
#Send data
print $remote "POST $submiturl HTTP/1.1\r\n";
print $remote "User-Agent: sitesummary-upload\r\n";
print $remote "Host: $host\r\n";
print $remote "Content-Type: multipart/form-data; boundary=$boundary\r\n";
print $remote "Content-Length: $formlen\r\n";
print $remote "\r\n";
print $remote "$form";
#Get answer
my($answer)="";
while(<$remote>)
{
$answer.=$_;
m/SITESUMMARY HTTP-POST OK/ and last;
}
close ($remote);
#Check answer
my $status = ($answer =~ m/SITESUMMARY HTTP-POST OK/) ? 0 : 1;
print "Failed to upload, answer '$answer'\n" if $status && $opts{'d'};
exit $status;
|