mirror of
https://github.com/webmin/webmin.git
synced 2025-07-21 23:40:34 +00:00
72 lines
1.6 KiB
Perl
Executable File
72 lines
1.6 KiB
Perl
Executable File
#!/usr/local/bin/perl
|
|
# import.cgi
|
|
# Add an imported connection to the config file
|
|
|
|
require './ipsec-lib.pl';
|
|
&ReadParseMime();
|
|
&error_setup($text{'import_err'});
|
|
|
|
# Get the file
|
|
if ($in{'mode'} == 0) {
|
|
$in{'upload'} || &error($text{'import_eupload'});
|
|
$in{'upload'} =~ s/\r//g;
|
|
@data = split(/\n/, $in{'upload'});
|
|
}
|
|
else {
|
|
$in{'file'} || &error($text{'import_efile'});
|
|
open(FILE, "<$in{'file'}") || &error($text{'import_eopen'});
|
|
while(<FILE>) {
|
|
s/\r|\n//g;
|
|
push(@data, $_);
|
|
}
|
|
close(FILE);
|
|
}
|
|
|
|
# Read and validate it
|
|
$temp = &transname();
|
|
open(TEMP, ">$temp");
|
|
print TEMP map { "$_\n" } @data;
|
|
close(TEMP);
|
|
@iconf = &get_config($temp);
|
|
unlink($temp);
|
|
if (@iconf != 1 || $iconf[0]->{'name'} ne 'conn') {
|
|
&error($text{'import_eformat'});
|
|
}
|
|
@conf = &get_config();
|
|
foreach $c (@conf) {
|
|
if (lc($c->{'value'}) eq lc($iconf[0]->{'value'})) {
|
|
$clash = $c;
|
|
if (!$in{'over'}) {
|
|
&error(&text('import_eclash',
|
|
"<tt>$iconf[0]->{'value'}</tt>"));
|
|
}
|
|
}
|
|
}
|
|
|
|
# Add to the real config file
|
|
if ($clash) {
|
|
&lock_file($clash->{'file'});
|
|
$lref = &read_file_lines($clash->{'file'});
|
|
splice(@$lref, $clash->{'line'},
|
|
$clash->{'eline'} - $clash->{'line'} + 1, @data);
|
|
}
|
|
else {
|
|
&lock_file($config{'file'});
|
|
$lref = &read_file_lines($config{'file'});
|
|
push(@$lref, @data);
|
|
}
|
|
&flush_file_lines();
|
|
&unlock_all_files();
|
|
|
|
# Tell the user
|
|
&ui_print_header(undef, $text{'import_title'}, "");
|
|
|
|
print "<p>",&text($clash ? 'import_done2' : 'import_done1',
|
|
"<tt>$iconf[0]->{'value'}</tt>"),"<p>\n";
|
|
|
|
&ui_print_footer("", $text{'index_return'});
|
|
|
|
# All done
|
|
&webmin_log("import", "conn", $iconf[0]->{'value'}, $iconf[0]->{'values'});
|
|
|