+++ /dev/null
-#!/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});
-}
+++ /dev/null
-<?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);
-}
-
-?>