]> sipb.mit.edu Git - ikiwiki.git/blobdiff - IkiWiki.pm
htmltidy robustness fixes
[ikiwiki.git] / IkiWiki.pm
index 01798941c173bbcd264cf2ca45151fd076ab536c..c15ec38220b8680b87e9dfbba0d88deb829d0280 100644 (file)
@@ -20,7 +20,7 @@ use Exporter q{import};
 our @EXPORT = qw(hook debug error template htmlpage add_depends pagespec_match
                  bestlink htmllink readfile writefile pagetype srcfile pagename
                  displaytime will_render gettext urlto targetpage
-                add_underlay
+                add_underlay pagetitle titlepage linkpage
                  %config %links %pagestate %renderedfiles
                  %pagesources %destsources);
 our $VERSION = 2.00; # plugin interface version, next is ikiwiki version
@@ -395,6 +395,13 @@ sub getsetup () { #{{{
                safe => 0,
                rebuild => 0,
        },
+       allow_symlinks_before_srcdir => {
+               type => "string",
+               default => 0,
+               description => "allow symlinks in the path leading to the srcdir (potentially insecure)",
+               safe => 0,
+               rebuild => 0,
+       },
 } #}}}
 
 sub defaultconfig () { #{{{
@@ -513,7 +520,11 @@ sub loadplugin ($) { #{{{
        foreach my $dir (defined $config{libdir} ? possibly_foolish_untaint($config{libdir}) : undef,
                         "$installdir/lib/ikiwiki") {
                if (defined $dir && -x "$dir/plugins/$plugin") {
-                       require IkiWiki::Plugin::external;
+                       eval { require IkiWiki::Plugin::external };
+                       if ($@) {
+                               my $reason=$@;
+                               error(sprintf(gettext("failed to load external plugin needed for %s plugin: %s"), $plugin, $reason));
+                       }
                        import IkiWiki::Plugin::external "$dir/plugins/$plugin";
                        $loaded_plugins{$plugin}=1;
                        return 1;
@@ -607,7 +618,7 @@ sub pagename ($) { #{{{
 
        my $type=pagetype($file);
        my $page=$file;
-       $page=~s/\Q.$type\E*$// if defined $type;
+       $page=~s/\Q.$type\E*$// if defined $type && !$hooks{htmlize}{$type}{keepextension};
        return $page;
 } #}}}