mourningdove/cgi-bin/DW/Hooks/ProxyCSSLinks.pm

39 lines
1 KiB
Perl
Raw Normal View History

2026-05-24 01:03:05 +00:00
#
# Use this hook to upgrade insecure CSS resources, indicated
# by url() functions in CSS, using the https_url function.
#
# Authors:
# Jen Griffin <kareila@livejournal.com>
#
# Copyright (c) 2017 by Dreamwidth Studios, LLC.
#
# This program is free software; you may redistribute it and/or modify it under
# the same terms as Perl itself. For a copy of the license, please reference
# 'perldoc perlartistic' or 'perldoc perlgpl'.
#
package DW::Hooks::ProxyCSSLinks;
use strict;
use LJ::Hooks;
use LJ::CleanHTML;
LJ::Hooks::register_hook(
'css_cleaner_transform',
sub {
my $textref = $_[0];
return unless ref $textref && $$textref; # nothing to do
my $ssl_url = sub {
my ( $url, $q ) = @_;
$q ||= '"'; # provide double quotes if none specified
$url = LJ::CleanHTML::https_url($url);
return "url($q$url$q)";
};
$$textref =~ s/\burl\(\s*(['"]?)(.*?)\1\s*\)/$ssl_url->($2,$1)/geis;
}
);
1;