mirror of
https://github.com/webmin/webmin.git
synced 2025-07-20 16:48:46 +00:00
55 lines
1.4 KiB
Perl
Executable File
55 lines
1.4 KiB
Perl
Executable File
#!/usr/local/bin/perl
|
|
# convert_slave.cgi
|
|
# Convert a slave/stub zone into a master
|
|
use strict;
|
|
use warnings;
|
|
no warnings 'redefine';
|
|
no warnings 'uninitialized';
|
|
# Globals
|
|
our (%access, %text, %in);
|
|
|
|
require './bind8-lib.pl';
|
|
&ReadParse();
|
|
&error_setup($text{'convert_err'});
|
|
|
|
my $zone = &get_zone_name_or_error($in{'zone'}, $in{'view'});
|
|
my $zconf = &zone_to_config($zone);
|
|
|
|
$access{'master'} || &error($text{'mcreate_ecannot'});
|
|
my $file = &find_value("file", $zconf->{'members'});
|
|
if (!$file) {
|
|
&error($text{'convert_efile'});
|
|
}
|
|
$file = &make_chroot(&absolute_path($file));
|
|
if (!-s $file) {
|
|
&error(&text('convert_efilesize', $file));
|
|
}
|
|
&lock_file(&make_chroot($zconf->{'file'}));
|
|
|
|
# Change the type directive
|
|
&save_directive($zconf, 'type', [ { 'name' => 'type',
|
|
'values' => [ 'master' ] } ], 1);
|
|
|
|
# Take out directives not allowed in masters
|
|
&save_directive($zconf, 'masters', [ ], 1);
|
|
&save_directive($zconf, 'max-transfer-time-in', [ ], 1);
|
|
|
|
&flush_file_lines();
|
|
&unlock_file(&make_chroot($zconf->{'file'}));
|
|
|
|
# Convert from binary slave format to text
|
|
if (&is_raw_format_records($file)) {
|
|
&has_command("named-compilezone") ||
|
|
&error($text{'convert_ebinary'});
|
|
my $temp = &transname();
|
|
©_source_dest($file, $temp);
|
|
my $out = &backquote_logged("named-compilezone -f raw -F text ".
|
|
"-o $file $zone->{'name'} $temp 2>&1");
|
|
&error(&text('convert_ecompile', "<tt>".&html_escape($out)."</tt>"))
|
|
if ($?);
|
|
&unlink_file($temp);
|
|
}
|
|
|
|
&redirect("");
|
|
|