type => "internal",
default => [qw{mdwn link inline htmlscrubber passwordauth
openid signinedit lockedit conditional
- recentchanges parentlinks}],
+ recentchanges parentlinks editpage}],
description => "plugins to enable by default",
safe => 0,
rebuild => 1,
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 () { #{{{
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;
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;
} #}}}