version 1.638, 2005/06/13 20:23:54
|
version 1.639, 2005/06/17 16:48:13
|
Line 1381 sub extract_embedded_items {
|
Line 1381 sub extract_embedded_items {
|
); |
); |
my $p = HTML::Parser->new |
my $p = HTML::Parser->new |
( |
( |
xml_mode => 1, |
|
start_h => |
start_h => |
[sub { |
[sub { |
my ($tagname, $attr) = @_; |
my ($tagname, $attr) = @_; |
push (@state, $tagname); |
push (@state, $tagname); |
if (lc($tagname) eq 'img') { |
if (lc($tagname) eq 'img') { |
if (exists($$allfiles{$attr->{'src'}})) { |
&add_filetype($allfiles,$attr->{'src'},'src'); |
unless (grep/^src$/,@{$$allfiles{$attr->{'src'}}}) { |
|
push (@{$$allfiles{$attr->{'src'}}},&escape('src')); |
|
} |
|
} else { |
|
@{$$allfiles{$attr->{'src'}}} = (&escape('src')); |
|
} |
|
} |
} |
if (lc($tagname) eq 'object') { |
if (lc($tagname) eq 'object' || |
foreach my $item (keys (%javafiles)) { |
(lc($tagname) eq 'embed' && lc($state[-2]) ne 'object')) { |
|
foreach my $item (keys(%javafiles)) { |
$javafiles{$item} = ''; |
$javafiles{$item} = ''; |
} |
} |
} |
} |
if (lc($state[-2]) eq 'object') { |
if (lc($state[-2]) eq 'object' && lc($tagname) eq 'param') { |
if (lc($tagname) eq 'param') { |
my $name = lc($attr->{'name'}); |
my $name = lc($attr->{'name'}); |
foreach my $item (keys(%javafiles)) { |
foreach my $item (keys (%mediafiles)) { |
if ($name eq $item) { |
if ($name eq $item) { |
$javafiles{$item} = $attr->{'value'}; |
if (exists($$allfiles{$attr->{'value'}})) { |
last; |
unless(grep/^value$/,@{$$allfiles{$attr->{'value'}}}) { |
} |
push(@{$$allfiles{$attr->{'value'}}},&escape('value')); |
} |
} |
foreach my $item (keys(%mediafiles)) { |
} else { |
if ($name eq $item) { |
@{$$allfiles{$attr->{'value'}}} = (&escape('value')); |
&add_filetype($allfiles, $attr->{'value'}, 'value'); |
} |
last; |
last; |
} |
} |
} |
} |
} |
foreach my $item (keys (%javafiles)) { |
if (lc($tagname) eq 'embed' || lc($tagname) eq 'applet') { |
if ($name eq $item) { |
foreach my $item (keys(%javafiles)) { |
$javafiles{$item} = $attr->{'value'}; |
|
last; |
|
} |
|
} |
|
} |
|
} |
|
if (lc($tagname) eq 'embed') { |
|
unless (lc($state[-2]) eq 'object') { |
|
foreach my $item (keys (%javafiles)) { |
|
$javafiles{$item} = ''; |
|
} |
|
} |
|
foreach my $item (keys (%javafiles)) { |
|
if ($attr->{$item}) { |
if ($attr->{$item}) { |
$javafiles{$item} = $attr->{$item}; |
$javafiles{$item} = $attr->{$item}; |
last; |
last; |
} |
} |
} |
} |
foreach my $item (keys (%mediafiles)) { |
foreach my $item (keys(%mediafiles)) { |
if ($attr->{$item}) { |
if ($attr->{$item}) { |
if (exists($$allfiles{$attr->{$item}})) { |
&add_filetype($allfiles,$attr->{$item},$item); |
unless (grep/^$item$/,@{$$allfiles{$item}}) { |
|
push(@{$$allfiles{$attr->{$item}}},&escape($item)); |
|
} |
|
} else { |
|
@{$$allfiles{$attr->{$item}}} = (&escape($item)); |
|
} |
|
last; |
last; |
} |
} |
} |
} |
} |
} |
}, "tagname, attr"], |
}, "tagname, attr"], |
text_h => |
|
[sub { |
|
my ($text) = @_; |
|
}, "dtext"], |
|
end_h => |
end_h => |
[sub { |
[sub { |
my ($tagname) = @_; |
my ($tagname) = @_; |
unless ($javafiles{'codebase'} eq '') { |
if ($javafiles{'codebase'} ne '') { |
$javafiles{'codebase'} .= '/'; |
$javafiles{'codebase'} .= '/'; |
} |
} |
if (lc($tagname) eq 'object') { |
if (lc($tagname) eq 'applet' || |
&extract_java_items(\%javafiles,$allfiles,$codebase); |
lc($tagname) eq 'object' || |
|
(lc($tagname) eq 'embed' && lc($state[-2]) ne 'object') |
|
) { |
|
foreach my $item (keys(%javafiles)) { |
|
if ($item ne 'codebase' && |
|
$javafiles{$item} ne '') { |
|
my $file=$javafiles{'codebase'}. |
|
$javafiles{$item}; |
|
&add_filetype($allfiles,$file,$item); |
|
} |
|
} |
} |
} |
if (lc($tagname) eq 'embed') { |
|
unless (lc($state[-2]) eq 'object') { |
|
&extract_java_items(\%javafiles,$allfiles,$codebase); |
|
} |
|
} |
|
pop @state; |
pop @state; |
}, "tagname"], |
}, "tagname"], |
); |
); |
Line 1475 sub extract_embedded_items {
|
Line 1451 sub extract_embedded_items {
|
return 'ok'; |
return 'ok'; |
} |
} |
|
|
sub extract_java_items { |
sub add_filetype { |
my ($javafiles,$allfiles,$codebase) = @_; |
my ($allfiles,$file,$type)=@_; |
foreach my $item (keys(%{$javafiles})) { |
if (exists($allfiles->{$file})) { |
if ($item ne 'codebase') { |
unless (grep/^\Q$type\E$/, @{$allfiles->{$file}}) { |
if ($$javafiles{$item} ne '') { |
push(@{$allfiles->{$file}}, &escape($type)); |
my $file=$javafiles->{'codebase'}.$javafiles->{$item}; |
} |
if (exists($allfiles->{$file})) { |
} else { |
unless (scalar(grep(/^$item$/, @{$allfiles->{$file}}))) { |
@{$allfiles->{$file}} = (&escape($type)); |
push(@{$allfiles->{$file}}, &escape($item)); |
|
} |
|
} else { |
|
@{$allfiles->{$file}} = (&escape($item)); |
|
$codebase->{$file} = $javafiles->{'codebase'}; |
|
} |
|
} |
|
} |
|
} |
} |
} |
} |
|
|