#!/usr/bin/perl -I /usr/sausalito/perl
# $Id: ftplog2commonlog
#
# Convert ftp logs to common log format so they can be processed by 
# standard web log processing software.
#
# Ftplog2Commonlog v. 1.0 is copyright 1995, 1996, 1997 by Joey Hess.
# May be distributed under the terms of the GPL.
#
# Usage:
#   ftplog2commonlog < logfile
#

use CCE;
my $cce = new CCE;
$cce->connectuds();

my %group; # hash of site group name => site fqdn

my(@site_oids) = $cce->find('Vsite');
my($oid);
foreach $oid (@site_oids) {
    my($ok, $site) = $cce->get($oid);
    next unless ($ok);

    $group{$site->{name}} = $site->{fqdn};
    # print "Found site ".$site->{name}." -> ".$site->{fqdn}."\n";
}

# Set the tzoffset automagically..
$tzoffset = `/bin/date +%z`;
$tzoffset = sprintf ("%+.4d", $tzoffset );

while (<>) {
    ($mon,$mday,$time,$year,$host,$size,$filename,$io)=m/.*?\s+(.*?)\s+(\d+)\s+(.*?)\s+(\d+)\s+.*?\s+(.*?)\s+(\d+)\s+(.*?)\s+\S+\s+\S+\s+(\S+)\s+/;
    if (length($mday) == 1) { $mday="0$mday" }
    if (length($mon) == 1) { $mon="0$mon" }

    print "$host - - [$mday/$mon/$year:$time $tzoffset] \"GET $filename HTTP/1.0\" 200 $size";
    if ($filename =~ m#/(site\d+)/#) {
        print " \"http://$io/\" \"http://$group{$1}/\"";
    } else {
        print " \"http://$io/\" \"\"";
    }
    print "\n";
}

# 
# Copyright (c) 2008-2022 Michael Stauber, SOLARSPEED.NET
# Copyright (c) 2008-2022 Team BlueOnyx, BLUEONYX.IT
# Copyright (c) 2003 Sun Microsystems, Inc. 
# All Rights Reserved.
# 
# 1. Redistributions of source code must retain the above copyright 
#    notice, this list of conditions and the following disclaimer.
# 
# 2. Redistributions in binary form must reproduce the above copyright 
#    notice, this list of conditions and the following disclaimer in 
#    the documentation and/or other materials provided with the 
#    distribution.
# 
# 3. Neither the name of the copyright holder nor the names of its 
#    contributors may be used to endorse or promote products derived 
#    from this software without specific prior written permission.
# 
# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS 
# "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT 
# LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS 
# FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE 
# COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, 
# INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, 
# BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; 
# LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER 
# CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT 
# LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN 
# ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE 
# POSSIBILITY OF SUCH DAMAGE.
# 
# You acknowledge that this software is not designed or intended for 
# use in the design, construction, operation or maintenance of any 
# nuclear facility.
# 