This file is indexed.

/usr/share/perl5/Email/MIME/CreateHTML/Resolver.pm is in libemail-mime-createhtml-perl 1.030-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
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
###############################################################################
# Purpose : Pick the most appropriate resolver
# Author  : John Alden
# Created : Aug 2006
# CVS     : $Header: /home/cvs/software/cvsroot/email/lib/Email/MIME/CreateHTML/Resolver.pm,v 1.5 2006/08/24 21:41:38 johna Exp $
###############################################################################

package Email::MIME::CreateHTML::Resolver;

use strict;
use Carp;

use vars qw($VERSION $HaveCache $HaveLWP $HaveFilesystem);
$VERSION = sprintf "%d.%03d", q$Revision: 1.5 $ =~ /: (\d+)\.(\d+)/;

$HaveCache = 0;
eval {
	require Email::MIME::CreateHTML::Resolver::Cached;
	$HaveCache = 1;
};

$HaveLWP = 0;
eval {
	require Email::MIME::CreateHTML::Resolver::LWP;
	$HaveLWP = 1;
};

$HaveFilesystem = 0;
eval {
	require Email::MIME::CreateHTML::Resolver::Filesystem;
	$HaveFilesystem = 1;
};


#
# API
#

sub new {
	my ($class, $args) = @_;
	$args ||= {};

	#Do some sanity checking of inputs
	my $resolver = $args->{resolver};
	if(defined $resolver) {
		confess "resolver must be an object" unless ( UNIVERSAL::isa($resolver,'UNIVERSAL') );
		confess "resolver does not seem to use the expected interface (get_resource)" unless ($resolver->can('get_resource'));
	}

	my $object_cache = $args->{'object_cache'};
	if(defined $object_cache ) {
		confess "object_cache must be an object" unless ( UNIVERSAL::isa($object_cache,'UNIVERSAL') );
		confess "object_cache does not seem to use the expected cache interface (get and set methods)" 
			unless ($object_cache->can('get') && $object_cache->can('set'));
		warn("Caching support is not available - object_cache will not be used") unless($HaveCache);
	}

	#Construct object
	my $self = bless ({
		%$args
	}, $class);	
	return $self;
}

sub get_resource {
	my ($self, $uri) = @_;
	croak("get_resource without a URI") unless(defined $uri && length($uri));
	my $resolver = $self->_select_resolver($uri);
	return $resolver->get_resource($uri);	
}

#
# Private methods
#

sub _select_resolver {
	my ($self, $uri) = @_;	

	#Look at the start of the URI 
	my $start = (defined $self->{base} && length($self->{base}))? $self->{base} : $uri;
	
	#Pick an appropriate resolver...
	my $resolver;
	if($self->{resolver}) {
		#If we've been told to use a specific resolver we'll respect that
		$resolver = $self->{resolver};
	} else {
		#Decide on the best resolver to use - does URL start with protocol://		
		TRACE("Start is $start");
		if($HaveFilesystem && $start =~ /^file:\/\//){
			#Push file URLs through filesystem resolver if available (so File::Policy gets applied)
			$resolver = new Email::MIME::CreateHTML::Resolver::Filesystem($self);
		} elsif($start =~ /^\w+:\/\//) {
			die("External URLs in emails cannot be resolved without the LWP resolver (which is currently not installed)\n") unless($HaveLWP);
			$resolver = new Email::MIME::CreateHTML::Resolver::LWP($self);
		} else {		
			die("Local URLs in emails cannot be resolved without the Filesystem resolver (which is currently not installed)\n") unless($HaveFilesystem);
			$resolver = new Email::MIME::CreateHTML::Resolver::Filesystem($self);
		}
	}

	#Optionally wrap it with caching
	if($HaveCache && defined $self->{'object_cache'} ) {
		$resolver = new Email::MIME::CreateHTML::Resolver::Cached({resolver => $resolver, object_cache => $self->{'object_cache'}});
	}
	
	return $resolver;
}

sub TRACE {}
sub DUMP {}

1;


=head1 NAME

Email::MIME::CreateHTML::Resolver - provides the appropriate resource resolver

=head1 SYNOPSIS

	my $o = new Email::MIME::CreateHTML::Resolver(\%args)
	my ($content,$filename,$mimetype,$xfer_encoding) = $o->get_resource($uri)

=head1 DESCRIPTION

This is used by Email::MIME::CreateHTML to load resources.

=head1 METHODS

=over 4

=item $o = new Email::MIME::CreateHTML::Resolver(\%args)

=item ($content,$filename,$mimetype,$xfer_encoding) = $o->get_resource($uri)

=back

=head1 VERSION

$Revision: 1.5 $ on $Date: 2006/08/24 21:41:38 $ by $Author: johna $

=head1 AUTHOR

Tony Hennessy, Simon Flack and John Alden

=head1 COPYRIGHT

(c) BBC 2005,2006. This program is free software; you can redistribute it and/or modify it under the GNU GPL.

See the file COPYING in this distribution, or http://www.gnu.org/licenses/gpl.txt

=cut