/usr/share/perl5/Echolot/Fromlines.pm is in echolot 2.1.9-1.
This file is owned by root:root, with mode 0o644.
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 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 | package Echolot::Fromlines;
#
#
# This file is part of Echolot - a Pinger for anonymous remailers.
#
# Copyright (c) 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2012, 2014 Peter Palfrader <peter@palfrader.org>
#
# This program is free software. you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation; either version 2 of the License, or
# (at your option) any later version.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with this program; if not, write to the Free Software
# Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
#
=pod
=head1 Name
Echolot::Thesaurus - build from header page
=head1 DESCRIPTION
This package builds the from header page with the information we
received from pings.
=cut
use strict;
use English;
use Echolot::Log;
sub build_fromlines() {
return 1 unless Echolot::Config::get()->{'fromlines'};
my $data;
my @remailers = Echolot::Globals::get()->{'storage'}->get_addresses();
for my $remailer (@remailers) {
next unless $remailer->{'showit'};
my $addr = $remailer->{'address'};
my $nick = Echolot::Globals::get()->{'storage'}->get_nick($addr);
next unless defined $nick;
my $caps = Echolot::Globals::get()->{'storage'}->get_capabilities($addr);
next unless defined $caps;
next unless $caps !~ m/\btesting\b/i;
my $middleman = $caps =~ m/\bmiddle\b/;
next if $middleman;
for my $user_supplied (0, 1) {
$data->{$user_supplied}->{$addr}->{'nick'} = $nick;
$data->{$user_supplied}->{$addr}->{'address'} = $addr;
my @types = Echolot::Globals::get()->{'storage'}->get_types($addr);
my $from_types;
for my $type (@types) {
my $from_info = Echolot::Globals::get()->{'storage'}->get_fromline($addr, $type, $user_supplied);
my $from = $from_info->{'from'};
$from = 'Not Available' unless defined $from;
$from = 'Middleman Remailer' if $middleman;
my $disclaim_top = $from_info->{'disclaim_top'} && ! $middleman ? 1 : 0;
my $disclaim_bot = $from_info->{'disclaim_bot'} && ! $middleman ? 1 : 0;
#my $last_update = $from_info->{'last_update'};
#my ($sec,$min,$hour,$mday,$mon,$year,$wday,$yday) = gmtime($last_update);
my $frominfo = $disclaim_top.':'.$disclaim_bot.':'.$from;
#my $date = sprintf("%04d-%02d-%02d", $year+1900, $mon+1, $mday);
#my $value = $middleman ? $type : ($type." ($date)");
my $value = $type;
push @{$from_types->{$frominfo}}, $value;
};
my $types_from;
for my $frominfo (sort keys %$from_types) {
my $types = join ", ", sort { $a cmp $b } @{$from_types->{$frominfo}};
$types_from->{$types} = $frominfo;
};
my @types_from = map {
my ($disclaim_top, $disclaim_bot, $from) = split (/:/, $types_from->{$_}, 3);
{
nick => $nick,
address => $addr,
types => $_,
disclaim_top => $disclaim_top,
disclaim_bot => $disclaim_bot,
from => Echolot::Tools::escape_HTML_entities($from)
}
} sort { $a cmp $b } keys %$types_from;
$data->{$user_supplied}->{$addr}->{'data'} = \@types_from;
};
# Remove user supplied if identical
my $f0 = join ':', map {
$_->{'disclaim_top'}.':'.$_->{'disclaim_bot'}.$_->{'types'}.':'.$_->{'from'}
} @{$data->{0}->{$addr}->{'data'}};
my $f1 = join ':', map {
$_->{'disclaim_top'}.':'.$_->{'disclaim_bot'}.$_->{'types'}.':'.$_->{'from'}
} @{$data->{1}->{$addr}->{'data'}};
if ($f0 eq $f1) {
delete $data->{1}->{$addr};
};
};
my @data0 = map {$data->{0}->{$_}} (sort { $data->{0}->{$a}->{'nick'} cmp $data->{0}->{$b}->{'nick'} } keys (%{$data->{0}}));
my @data1 = map {$data->{1}->{$_}} (sort { $data->{1}->{$a}->{'nick'} cmp $data->{1}->{$b}->{'nick'} } keys (%{$data->{1}}));
Echolot::Tools::write_HTML_file(
Echolot::Config::get()->{'fromlinesindexfile'},
'fromlinesindexfile',
Echolot::Config::get()->{'buildfromlines'},
default => \@data0,
usersupplied => \@data1);
};
1;
# vim: set ts=4 shiftwidth=4:
|