mirror of
https://git.proxmox.com/git/pve-docs
synced 2025-04-29 05:36:41 +00:00
236 lines
5.6 KiB
Perl
Executable File
236 lines
5.6 KiB
Perl
Executable File
#!/usr/bin/perl
|
|
|
|
use strict;
|
|
use warnings;
|
|
use Data::Dumper;
|
|
|
|
use IO::File;
|
|
use File::Basename;
|
|
use MediaWiki::API;
|
|
|
|
use JSON;
|
|
|
|
my $data_str = "";
|
|
while (<main::DATA>) { $data_str .= $_; }
|
|
|
|
my $fileinfo = decode_json($data_str);
|
|
|
|
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/mediawiki/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_old = {
|
|
'ha-manager-plain.html' => {
|
|
title => "High Availability",
|
|
category => $cat_refdoc,
|
|
},
|
|
'pve-installation-plain.html' => {
|
|
title => "Installation",
|
|
category => $cat_refdoc,
|
|
},
|
|
'pve-usbstick-plain.html' => {
|
|
title => "Install from USB Stick",
|
|
category => $cat_refdoc,
|
|
},
|
|
'pve-system-requirements-plain.html' => {
|
|
title => "System Requirements",
|
|
category => $cat_refdoc,
|
|
},
|
|
'getting-help-plain.html' => {
|
|
title => "Getting Help",
|
|
category => $cat_refdoc,
|
|
},
|
|
'pve-network-plain.html' => {
|
|
title => "Network Configuration",
|
|
category => $cat_refdoc,
|
|
},
|
|
'pve-disk-health-monitoring-plain.html' => {
|
|
title => "Disk Health Monitoring",
|
|
category => $cat_refdoc,
|
|
},
|
|
'local-lvm-plain.html' => {
|
|
title => "Logical Volume Manager (LVM)",
|
|
category => $cat_refdoc,
|
|
},
|
|
'pve-package-repos-plain.html' => {
|
|
title => "Package Repositories",
|
|
category => $cat_refdoc,
|
|
},
|
|
'system-software-updates-plain.html' => {
|
|
title => "System Software Updates",
|
|
category => $cat_refdoc,
|
|
},
|
|
'sysadmin-plain.html' => {
|
|
title => "Host System Administration",
|
|
category => $cat_refdoc,
|
|
},
|
|
'pct-plain.html' => {
|
|
title => "Linux Container",
|
|
category => $cat_refdoc,
|
|
},
|
|
'pmxcfs-plain.html' => {
|
|
title => "Proxmox Cluster File System (pmxcfs)",
|
|
category => $cat_refdoc,
|
|
},
|
|
'pve-bibliography-plain.html' => {
|
|
title => "Bibliography",
|
|
category => $cat_refdoc,
|
|
},
|
|
'pvecm-plain.html' => {
|
|
title => "Cluster Manager",
|
|
category => $cat_refdoc,
|
|
},
|
|
'pve-faq-plain.html' => {
|
|
title => "FAQ",
|
|
category => $cat_refdoc,
|
|
},
|
|
'pve-firewall-plain.html' => {
|
|
title => "Firewall",
|
|
category => $cat_refdoc,
|
|
},
|
|
'pvesm-plain.html' => {
|
|
title => "Storage",
|
|
category => $cat_refdoc,
|
|
},
|
|
'pveum-plain.html' => {
|
|
title => "User Management",
|
|
category => $cat_refdoc,
|
|
},
|
|
'qm-plain.html' => {
|
|
title => "Qemu/KVM Virtual Machines",
|
|
category => $cat_refdoc,
|
|
},
|
|
'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,
|
|
},
|
|
'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,
|
|
},
|
|
};
|
|
|
|
my $wiki_man5_pages = {
|
|
'datacenter.cfg.adoc' => 1,
|
|
'qm.conf.adoc' => 1,
|
|
'pct.conf.adoc' => 1,
|
|
};
|
|
|
|
my $docs = {};
|
|
foreach my $source (sort keys %{$fileinfo->{toplevel}->{wiki}}) {
|
|
my $title = $fileinfo->{titles}->{wiki}->{$source};
|
|
my $doctype = $fileinfo->{doctype}->{wiki}->{$source};
|
|
|
|
my $suffix = $wiki_man5_pages->{$source} ? '.5-plain.html' : '-plain.html';
|
|
my $filename = $source;
|
|
$filename =~ s/\.adoc//;
|
|
$filename .= $suffix;
|
|
|
|
my $path = "/usr/share/pve-docs/$filename";
|
|
die "no such file '$path'" if ! -f $path;
|
|
|
|
update_page($title, $filename, category => $cat_refdoc);
|
|
}
|
|
|
|
# also update 'Get support' page, because this is used since a long
|
|
# time and is referenced from outside
|
|
update_page("Get support", 'getting-help-plain.html', 'HOWTO');
|
|
|
|
__END__
|