mirror of
https://git.proxmox.com/git/pve-docs
synced 2025-05-01 04:16:47 +00:00
add new pve-docs-mediawiki package
This commit is contained in:
parent
0a3c58e0af
commit
cfabc2e9b3
20
Makefile
20
Makefile
@ -4,6 +4,7 @@ include ./pve-doc-generator.mk
|
|||||||
|
|
||||||
GEN_PACKAGE=pve-doc-generator
|
GEN_PACKAGE=pve-doc-generator
|
||||||
DOC_PACKAGE=pve-docs
|
DOC_PACKAGE=pve-docs
|
||||||
|
MEDIAWIKI_PACKAGE=pve-docs-mediawiki
|
||||||
|
|
||||||
# also update debian/changelog
|
# also update debian/changelog
|
||||||
PKGREL=7
|
PKGREL=7
|
||||||
@ -14,6 +15,7 @@ ARCH:=$(shell dpkg-architecture -qDEB_BUILD_ARCH)
|
|||||||
|
|
||||||
GEN_DEB=${GEN_PACKAGE}_${DOCRELEASE}-${PKGREL}_${ARCH}.deb
|
GEN_DEB=${GEN_PACKAGE}_${DOCRELEASE}-${PKGREL}_${ARCH}.deb
|
||||||
DOC_DEB=${DOC_PACKAGE}_${DOCRELEASE}-${PKGREL}_all.deb
|
DOC_DEB=${DOC_PACKAGE}_${DOCRELEASE}-${PKGREL}_all.deb
|
||||||
|
MEDIAWIKI_DEB=${MEDIAWIKI_PACKAGE}_${DOCRELEASE}-${PKGREL}_all.deb
|
||||||
|
|
||||||
CHAPTER_LIST= \
|
CHAPTER_LIST= \
|
||||||
sysadmin \
|
sysadmin \
|
||||||
@ -220,16 +222,15 @@ api-viewer/apidoc.js: api-viewer/apidata.js api-viewer/PVEAPI.js
|
|||||||
cat api-viewer/apidata.js api-viewer/PVEAPI.js >$@
|
cat api-viewer/apidata.js api-viewer/PVEAPI.js >$@
|
||||||
|
|
||||||
.PHONY: dinstall
|
.PHONY: dinstall
|
||||||
dinstall: ${GEN_DEB} ${DOC_DEB}
|
dinstall: ${GEN_DEB} ${DOC_DEB} ${MEDIAWIKI_DEB}
|
||||||
dpkg -i ${GEN_DEB} ${DOC_DEB}
|
dpkg -i ${GEN_DEB} ${DOC_DEB} ${MEDIAWIKI_DEB}
|
||||||
|
|
||||||
.PHONY: deb
|
.PHONY: deb
|
||||||
deb:
|
deb:
|
||||||
rm -f ${GEN_DEB} ${DOC_DEB};
|
rm -f ${GEN_DEB} ${DOC_DEB} ${MEDIAWIKI_DEB};
|
||||||
make ${GEN_DEB};
|
make ${GEN_DEB} ${DOC_DEB} ${MEDIAWIKI_DEB};
|
||||||
make ${DOC_DEB};
|
|
||||||
|
|
||||||
${GEN_DEB} ${DOC_DEB}: index.html ${INDEX_INCLUDES} ${WIKI_IMPORTS} ${API_VIEWER_SOURCES} ${GEN_DEB_SOURCES}
|
${GEN_DEB} ${DOC_DEB} ${MEDIAWIKI_DEB}: index.html ${INDEX_INCLUDES} ${WIKI_IMPORTS} ${API_VIEWER_SOURCES} ${GEN_DEB_SOURCES}
|
||||||
rm -rf build
|
rm -rf build
|
||||||
mkdir build
|
mkdir build
|
||||||
rsync -a debian/ build/debian
|
rsync -a debian/ build/debian
|
||||||
@ -247,19 +248,20 @@ ${GEN_DEB} ${DOC_DEB}: index.html ${INDEX_INCLUDES} ${WIKI_IMPORTS} ${API_VIEWER
|
|||||||
# install api doc viewer
|
# install api doc viewer
|
||||||
mkdir build/usr/share/${DOC_PACKAGE}/api-viewer
|
mkdir build/usr/share/${DOC_PACKAGE}/api-viewer
|
||||||
install -m 0644 ${API_VIEWER_SOURCES} build/usr/share/${DOC_PACKAGE}/api-viewer
|
install -m 0644 ${API_VIEWER_SOURCES} build/usr/share/${DOC_PACKAGE}/api-viewer
|
||||||
# build debain package
|
# build Debian packages
|
||||||
cd build; dpkg-buildpackage -rfakeroot -b -us -uc
|
cd build; dpkg-buildpackage -rfakeroot -b -us -uc
|
||||||
lintian ${GEN_DEB}
|
lintian ${GEN_DEB}
|
||||||
lintian ${DOC_DEB}
|
lintian ${DOC_DEB}
|
||||||
|
lintian ${MEDIAWIKI_DEB}
|
||||||
|
|
||||||
.PHONY: upload
|
.PHONY: upload
|
||||||
upload: ${GEN_DEB} ${DOC_DEB}
|
upload: ${GEN_DEB} ${DOC_DEB} ${MEDIAWIKI_DEB}
|
||||||
umount /pve/${DOCRELEASE}; mount /pve/${DOCRELEASE} -o rw
|
umount /pve/${DOCRELEASE}; mount /pve/${DOCRELEASE} -o rw
|
||||||
mkdir -p /pve/${DOCRELEASE}/extra
|
mkdir -p /pve/${DOCRELEASE}/extra
|
||||||
rm -f /pve/${DOCRELEASE}/extra/${GEN_PACKAGE}_*.deb
|
rm -f /pve/${DOCRELEASE}/extra/${GEN_PACKAGE}_*.deb
|
||||||
rm -f /pve/${DOCRELEASE}/extra/${DOC_PACKAGE}_*.deb
|
rm -f /pve/${DOCRELEASE}/extra/${DOC_PACKAGE}_*.deb
|
||||||
rm -f /pve/${DOCRELEASE}/extra/Packages*
|
rm -f /pve/${DOCRELEASE}/extra/Packages*
|
||||||
cp ${GEN_DEB} ${DOC_DEB} /pve/${DOCRELEASE}/extra
|
cp ${GEN_DEB} ${DOC_DEB} ${MEDIAWIKI_DEB} /pve/${DOCRELEASE}/extra
|
||||||
cd /pve/${DOCRELEASE}/extra; dpkg-scanpackages . /dev/null > Packages; gzip -9c Packages > Packages.gz
|
cd /pve/${DOCRELEASE}/extra; dpkg-scanpackages . /dev/null > Packages; gzip -9c Packages > Packages.gz
|
||||||
umount /pve/${DOCRELEASE}; mount /pve/${DOCRELEASE} -o ro
|
umount /pve/${DOCRELEASE}; mount /pve/${DOCRELEASE} -o ro
|
||||||
|
|
||||||
|
8
debian/control
vendored
8
debian/control
vendored
@ -19,3 +19,11 @@ Section: doc
|
|||||||
Architecture: all
|
Architecture: all
|
||||||
Description: Proxmox VE Documentation
|
Description: Proxmox VE Documentation
|
||||||
This package contains the Proxmox VE Documentation files.
|
This package contains the Proxmox VE Documentation files.
|
||||||
|
|
||||||
|
Package: pve-docs-mediawiki
|
||||||
|
Architecture: all
|
||||||
|
Section: doc
|
||||||
|
Depends: ${misc:Depends}, pve-docs
|
||||||
|
Suggests: apache2
|
||||||
|
Description: Proxmox VE Documentation - mediawiki plugin
|
||||||
|
This package contains tools to view Proxmox VE Documentation with mediakiki.
|
||||||
|
1
debian/pve-docs-mediawiki.docs
vendored
Normal file
1
debian/pve-docs-mediawiki.docs
vendored
Normal file
@ -0,0 +1 @@
|
|||||||
|
debian/tree/pve-docs-mediawiki/README
|
3
debian/pve-docs-mediawiki.install
vendored
Normal file
3
debian/pve-docs-mediawiki.install
vendored
Normal file
@ -0,0 +1,3 @@
|
|||||||
|
debian/tree/pve-docs-mediawiki/pvedocs-include.php /etc/mediawiki-extensions/extensions-available/
|
||||||
|
debian/tree/pve-docs-mediawiki/pve-docs-mediawiki-import /usr/bin/
|
||||||
|
debian/tree/pve-docs-mediawiki/pve-docs.conf /etc/apache2/sites-available/
|
14
debian/tree/pve-docs-mediawiki/README
vendored
Normal file
14
debian/tree/pve-docs-mediawiki/README
vendored
Normal file
@ -0,0 +1,14 @@
|
|||||||
|
To enable the apache site use:
|
||||||
|
|
||||||
|
# a2ensite pve-docs.conf
|
||||||
|
# /etc/init.d/apache2 reload
|
||||||
|
|
||||||
|
Now you should be able to access the documentation at:
|
||||||
|
|
||||||
|
* Admin Guide and Manual pages
|
||||||
|
http://your-server/pve-docs
|
||||||
|
|
||||||
|
* API Viewer
|
||||||
|
http://your-server/pve-docs/api-viewer
|
||||||
|
|
||||||
|
|
173
debian/tree/pve-docs-mediawiki/pve-docs-mediawiki-import
vendored
Executable file
173
debian/tree/pve-docs-mediawiki/pve-docs-mediawiki-import
vendored
Executable file
@ -0,0 +1,173 @@
|
|||||||
|
#!/usr/bin/perl
|
||||||
|
|
||||||
|
use strict;
|
||||||
|
use warnings;
|
||||||
|
use Data::Dumper;
|
||||||
|
|
||||||
|
use IO::File;
|
||||||
|
use File::Basename;
|
||||||
|
use MediaWiki::API;
|
||||||
|
|
||||||
|
my $config_fn = "/root/.pve-docs"; # format 'username:pw'
|
||||||
|
|
||||||
|
my $fh = IO::File->new("$config_fn") ||
|
||||||
|
die "Please configure the mediawiki user/passswd in '$config_fn'\n";
|
||||||
|
|
||||||
|
my $api_url = "http://localhost/api.php";
|
||||||
|
|
||||||
|
my $config = <$fh>;
|
||||||
|
chomp $config;
|
||||||
|
|
||||||
|
my ($username, $passwd) = split(':', $config, 2);
|
||||||
|
|
||||||
|
my $mw = MediaWiki::API->new();
|
||||||
|
$mw->{config}->{api_url} = $api_url;
|
||||||
|
|
||||||
|
# log in to the wiki
|
||||||
|
$mw->login({ lgname => $username, lgpassword => $passwd })
|
||||||
|
|| die $mw->{error}->{code} . ': ' . $mw->{error}->{details};
|
||||||
|
|
||||||
|
sub update_page {
|
||||||
|
my ($pagename, $include, $category) = @_;
|
||||||
|
|
||||||
|
print "update mediawiki page: $pagename\n";
|
||||||
|
|
||||||
|
my $ref = $mw->get_page( { title => $pagename } );
|
||||||
|
my $page = $ref->{'*'} || '';
|
||||||
|
|
||||||
|
if ($page !~ m/^\{\{#pvedocs:.*\}\}\s*$/m) {
|
||||||
|
$page = "{{#pvedocs:$include}}\n$page";
|
||||||
|
} else {
|
||||||
|
$page =~ s/^\{\{#pvedocs:.*\}\}\s*$/\{\{#pvedocs:$include\}\}\n/m;
|
||||||
|
}
|
||||||
|
|
||||||
|
if ($category) {
|
||||||
|
my $catstr = "Category:$category";
|
||||||
|
|
||||||
|
if ($page !~ m/^\[\[$catstr\]\]\s*$/m) {
|
||||||
|
$page .= "\n[[$catstr]]\n";
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
my $timestamp = $ref->{timestamp};
|
||||||
|
my $wcmd = {
|
||||||
|
action => 'edit',
|
||||||
|
title => $pagename,
|
||||||
|
basetimestamp => $timestamp, # to avoid edit conflicts
|
||||||
|
text => $page,
|
||||||
|
};
|
||||||
|
|
||||||
|
$mw->edit($wcmd) ||
|
||||||
|
die $mw->{error}->{code} . ': ' . $mw->{error}->{details};
|
||||||
|
}
|
||||||
|
|
||||||
|
my $cat_refdoc = "Reference Documentation";
|
||||||
|
|
||||||
|
my $docs = {
|
||||||
|
'chapter-ha-manager-plain.html' => {
|
||||||
|
title => "High Availability",
|
||||||
|
category => $cat_refdoc,
|
||||||
|
},
|
||||||
|
'chapter-sysadmin-plain.html' => {
|
||||||
|
title => "Host System Administration",
|
||||||
|
category => $cat_refdoc,
|
||||||
|
},
|
||||||
|
'chapter-pct-plain.html' => {
|
||||||
|
title => "Linux Container",
|
||||||
|
category => $cat_refdoc,
|
||||||
|
},
|
||||||
|
'chapter-pmxcfs-plain.html' => {
|
||||||
|
title => "Proxmox Cluster File System (pmxcfs)",
|
||||||
|
category => $cat_refdoc,
|
||||||
|
},
|
||||||
|
'chapter-pve-bibliography-plain.html' => {
|
||||||
|
title => "Bibliography",
|
||||||
|
category => $cat_refdoc,
|
||||||
|
},
|
||||||
|
'chapter-pvecm-plain.html' => {
|
||||||
|
title => "Cluster Manager",
|
||||||
|
category => $cat_refdoc,
|
||||||
|
},
|
||||||
|
'chapter-pve-faq-plain.html' => {
|
||||||
|
title => "FAQ",
|
||||||
|
category => $cat_refdoc,
|
||||||
|
},
|
||||||
|
'chapter-pve-firewall-plain.html' => {
|
||||||
|
title => "Firewall",
|
||||||
|
category => $cat_refdoc,
|
||||||
|
},
|
||||||
|
'chapter-pvesm-plain.html' => {
|
||||||
|
title => "Storage",
|
||||||
|
category => $cat_refdoc,
|
||||||
|
},
|
||||||
|
'chapter-pveum-plain.html' => {
|
||||||
|
title => "User Management",
|
||||||
|
category => $cat_refdoc,
|
||||||
|
},
|
||||||
|
'chapter-qm-plain.html' => {
|
||||||
|
title => "Qemu/KVM Virtual Machines",
|
||||||
|
category => $cat_refdoc,
|
||||||
|
},
|
||||||
|
'chapter-vzdump-plain.html' => {
|
||||||
|
title => "Backup and Restore",
|
||||||
|
category => $cat_refdoc,
|
||||||
|
},
|
||||||
|
'qm.conf.5-plain.html' => {
|
||||||
|
title => "Manual: vm.conf",
|
||||||
|
category => $cat_refdoc,
|
||||||
|
},
|
||||||
|
'pct.conf.5-plain.html' => {
|
||||||
|
title => "Manual: pct.conf",
|
||||||
|
category => $cat_refdoc,
|
||||||
|
},
|
||||||
|
'datacenter.cfg.5-plain.html' => {
|
||||||
|
title => "Manual: datacenter.cfg",
|
||||||
|
category => $cat_refdoc,
|
||||||
|
},
|
||||||
|
# Storage Plugins
|
||||||
|
'pve-storage-dir-plain.html' => {
|
||||||
|
title => "Storage: Directory",
|
||||||
|
category => $cat_refdoc,
|
||||||
|
},
|
||||||
|
'pve-storage-glusterfs-plain.html' => {
|
||||||
|
title => "Storage: GlusterFS",
|
||||||
|
category => $cat_refdoc,
|
||||||
|
},
|
||||||
|
'pve-storage-iscsidirect-plain.html' => {
|
||||||
|
title => "Storage: User Mode iSCSI",
|
||||||
|
category => $cat_refdoc,
|
||||||
|
},
|
||||||
|
'pve-storage-iscsi-plain.html' => {
|
||||||
|
title => "Storage: iSCSI",
|
||||||
|
category => $cat_refdoc,
|
||||||
|
},
|
||||||
|
'pve-storage-lvm-plain.html' => {
|
||||||
|
title => "Storage: LVM",
|
||||||
|
category => $cat_refdoc,
|
||||||
|
},q
|
||||||
|
'pve-storage-lvmthin-plain.html' => {
|
||||||
|
title => "Storage: LVM Thin",
|
||||||
|
category => $cat_refdoc,
|
||||||
|
},
|
||||||
|
'pve-storage-nfs-plain.html' => {
|
||||||
|
title => "Storage: NFS",
|
||||||
|
category => $cat_refdoc,
|
||||||
|
},
|
||||||
|
'pve-storage-rbd-plain.html' => {
|
||||||
|
title => "Storage: RBD",
|
||||||
|
category => $cat_refdoc,
|
||||||
|
},
|
||||||
|
'pve-storage-zfspool-plain.html' => {
|
||||||
|
title => "Storage: ZFS",
|
||||||
|
category => $cat_refdoc,
|
||||||
|
},
|
||||||
|
};
|
||||||
|
|
||||||
|
#update_page("testpage1", $filename, $d->{category});
|
||||||
|
|
||||||
|
foreach my $filename (keys %$docs) {
|
||||||
|
my $path = "/usr/share/pve-docs/$filename";
|
||||||
|
die "no such file '$path'" if ! -f $path;
|
||||||
|
my $d = $docs->{$filename};
|
||||||
|
update_page($d->{title}, $filename, $d->{category});
|
||||||
|
}
|
7
debian/tree/pve-docs-mediawiki/pve-docs.conf
vendored
Normal file
7
debian/tree/pve-docs-mediawiki/pve-docs.conf
vendored
Normal file
@ -0,0 +1,7 @@
|
|||||||
|
<Directory /usr/share/pve-docs>
|
||||||
|
AllowOverride None
|
||||||
|
Order allow,deny
|
||||||
|
allow from all
|
||||||
|
</Directory>
|
||||||
|
|
||||||
|
Alias /pve-docs /usr/share/pve-docs/
|
69
debian/tree/pve-docs-mediawiki/pvedocs-include.php
vendored
Normal file
69
debian/tree/pve-docs-mediawiki/pvedocs-include.php
vendored
Normal file
@ -0,0 +1,69 @@
|
|||||||
|
<?php
|
||||||
|
|
||||||
|
# see http://www.mediawiki.org/wiki/Manual:Parser_functions
|
||||||
|
|
||||||
|
$wgExtensionCredits['parserhook'][] = array(
|
||||||
|
'name' => "PVE Documenation Pages",
|
||||||
|
'description' => "Display PVE Documentation Pages",
|
||||||
|
'author' => "Dietmar Maurer",
|
||||||
|
);
|
||||||
|
|
||||||
|
# Define a setup function
|
||||||
|
$wgHooks['ParserFirstCallInit'][] = 'efPvedocsParserFunction_Setup';
|
||||||
|
|
||||||
|
# Add a hook to initialise the magic word
|
||||||
|
$wgHooks['LanguageGetMagic'][] = 'efPvedocsParserFunction_Magic';
|
||||||
|
|
||||||
|
function efPvedocsParserFunction_Setup(&$parser) {
|
||||||
|
# Set a function hook associating the "pvedocs" magic
|
||||||
|
# word with our function
|
||||||
|
$parser->setFunctionHook( 'pvedocs', 'efPvedocsParserFunction_Render' );
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
function efPvedocsParserFunction_Magic(&$magicWords, $langCode) {
|
||||||
|
# Add the magic word
|
||||||
|
# The first array element is whether to be case sensitive,
|
||||||
|
# in this case (0) it is not case sensitive, 1 would be sensitive
|
||||||
|
# All remaining elements are synonyms for our parser function
|
||||||
|
$magicWords['pvedocs'] = array( 0, 'pvedocs' );
|
||||||
|
|
||||||
|
# unless we return true, other parser functions extensions won't get loaded.
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
function encodeURI($uri) {
|
||||||
|
return preg_replace_callback("{[^0-9a-z_.!~*'();,/?:@&=+$#-]}i",
|
||||||
|
function ($m) { return sprintf('%%%02X', ord($m[0])); }, $uri);
|
||||||
|
}
|
||||||
|
|
||||||
|
function efPvedocsParserFunction_Render($parser, $param1 = '', $param2 = '') {
|
||||||
|
|
||||||
|
$parser->disableCache();
|
||||||
|
|
||||||
|
# only allow simply names, so that users can only include
|
||||||
|
# files from within "/usr/share/pve-docs/"
|
||||||
|
if (!preg_match("/[a-z0-9.-]+\.html/i", $param1)) {
|
||||||
|
die("no such manual page");
|
||||||
|
}
|
||||||
|
|
||||||
|
$content = file_get_contents("/usr/share/pve-docs/$param1");
|
||||||
|
|
||||||
|
$output = "<noscript><div><p>" .
|
||||||
|
"This page requires java-script. To view " .
|
||||||
|
"this page without java-script goto " .
|
||||||
|
"<a href='/pve-docs/$param1'>$param1</a>" .
|
||||||
|
"</div></noscript>\n";
|
||||||
|
|
||||||
|
# hack to inject html without modifications my mediawiki parser
|
||||||
|
$encHtml = encodeURI($content);
|
||||||
|
$output .= "<div id='pve_embed_data'></div>";
|
||||||
|
$output .= "<script>" .
|
||||||
|
"var data = decodeURI(\"".$encHtml."\");" .
|
||||||
|
"document.getElementById('pve_embed_data').innerHTML = data;" .
|
||||||
|
"</script>";
|
||||||
|
|
||||||
|
return array($output, 'noparse' => true, 'isHTML' => true);
|
||||||
|
}
|
||||||
|
|
||||||
|
?>
|
Loading…
Reference in New Issue
Block a user