use utf8;
use strict;
use warnings;
use Cf qw($WDESCR);
use Dbase::Globals qw(find_descr);
use Regexp::Common qw(net);

# Ticket #10040371: In den Proxy-Logs tauchen hin und wieder kaputte URLs auf.
# Da der Proxy damit aber scheint's was tut, accounten wir die kurzerhand auf
# Ziel unbekannt:
my $unbekannt = '>' . find_descr( ziel => unbekannt => 1 );

sub acct_cache {
	my $acct = do_start(want=>"kunde,domain,ip,ip_de",dienst=>"cache",quelle=>$WDESCR,logdir=>"cache",do_reverse=>0);
	return "Kein Accounting" unless ref $acct;

	while( defined( my $line = get_line($acct) ) ) {
		my($locadr,$remadr,$volpack,$hitmiss);
		if ( ($locadr, $hitmiss, $volpack, my $url) = $line =~ /^\d+\.\d+\s+\d+ ($RE{net}{IPv4}) (\S+)\/\d+ (\d+) \S+ (.*?) \S+ \S+\/\S+ \S+$/ ) {
			($remadr) = $url =~ m#^\w+://+([^:/]+)#
			  or ($remadr) = $url =~ m#^([^:/]+):\d+$#;
		} else {
			warn "Unknown format at line $.: $line";
			next;
		}

		$remadr =~ s/.*\@// if defined $remadr;

		next if $volpack == 0;
		my($cust) = $acct->who_ip($locadr);

		# ->who_dom() ist eigentlich nur bedingt sinnvoll,
		# da uns eigentlich nur die Ziel-IP-Adresse interessieren sollte
		# und nicht, ob die Domain einem Kunden zugeordnet ist,
		# der den Webspace ja trotzdem anderswo hosten kann.
		my ($remagg) =
		    defined $remadr
		  ? $remadr =~ /^$RE{net}{IPv4}$/
		  ? $acct->who_ip($remadr)
		  : $acct->who_dom($remadr)
		  : $unbekannt;

		my $idienst;
		if($hitmiss =~ /tcp_.*_?hit/i) {
			$idienst = $acct->{'idienst2'};
		} else {
			$idienst = $acct->{'idienst'};
		}

		$acct->acct($cust,$idienst, $remagg,undef, 1,$volpack);
	}
	do_end($acct);
}

1;
