mediawiki: make docs include plugin tags robuster for new MW version

Some (new) mediawiki versions can convert '<' and '>' to '&lt;' or
'&gt;', this resulted in a situation where our encoded tag did not
get detected by the decode logic, and thus a visitor only saw
something like the following:

> <--- @PVEDOCHACK@
> PCEtLSBhc2NpaWRvYyBIRUFERVIgLS0+DQo8c2NyaXB0IHR5.....
> @PVEDOCHACK@ -->

The word "HACK" was a bit unfortunate too, as it could be interpreted
as in the docs got hacked, by unknowing people. So change that too to
'PVEDOCS_BASE64'

Signed-off-by: Thomas Lamprecht <t.lamprecht@proxmox.com>
This commit is contained in:
Thomas Lamprecht 2019-07-25 17:22:35 +02:00
parent 02114e68c2
commit 3e5c017486

View File

@ -28,7 +28,7 @@ function efPvedocsParserFunction_Setup(&$parser) {
# similar code as in <htmlet> tag...
function efPvedocsPostProcessFunction($parser, &$text) {
$text = preg_replace_callback(
'/<--- @PVEDOCSHACK@ ([0-9a-zA-Z\\+\\/]+=*) @PVEDOCSHACK@ -->/sm',
'/-_- @PVEDOCS_BASE64@ ([0-9a-zA-Z\\+\\/]+=*) @PVEDOCS_BASE64@ -_-/sm',
function ($m) { return base64_decode("$m[1]"); },
$text);
@ -66,7 +66,9 @@ function efPvedocsParserFunction_Render($parser, $param1 = '', $param2 = '') {
$content = file_get_contents("/usr/share/pve-docs/$param1");
$output = '<--- @PVEDOCSHACK@ '.base64_encode($content).' @PVEDOCSHACK@ -->';
# do not use '<' or '>', it seems newer mediawiki converts it to '&lt;' and '&gt;'
# and then the regex for the decode in efPvedocsPostProcessFunction does not matches..
$output = '-_- @PVEDOCS_BASE64@ '.base64_encode($content).' @PVEDOCS_BASE64@ -_-';
return array($output, 'noparse' => true, 'isHTML' => true);
}