mirror of
https://github.com/webmin/webmin.git
synced 2026-02-03 14:13:29 +00:00
Custom map rebuild command
This commit is contained in:
@@ -38,4 +38,5 @@ Added an access control page option to prevent creation and editing of catchall
|
||||
---- Changes since 1.430 ----
|
||||
Autoreply messages containing non-ASCII characters are now properly quoted-printable encoded.
|
||||
---- Changes since 1.440 ----
|
||||
Added a module config option to control if the user is prompted for confirmation before deleting queued messages.
|
||||
Added a Module Config option to control if the user is prompted for confirmation before deleting queued messages.
|
||||
A custom command to rebuild all maps can be specified on the Module Config page, to be used instead of makemap or newaliases.
|
||||
|
||||
@@ -76,12 +76,14 @@ $_[0]->{'eline'} = scalar(@$lref)-1;
|
||||
&flush_file_lines($_[1]);
|
||||
|
||||
# Add to DBM
|
||||
if ($_[3] eq "dbm") {
|
||||
if (!&rebuild_map_cmd($_[1])) {
|
||||
if ($_[3] eq "dbm") {
|
||||
dbmopen(%acc, $_[2], 0644);
|
||||
$acc{$from} = $_[0]->{'action'};
|
||||
dbmclose(%acc);
|
||||
}
|
||||
else { &run_makemap($_[1], $_[2], $_[3]); }
|
||||
else { &run_makemap($_[1], $_[2], $_[3]); }
|
||||
}
|
||||
|
||||
# Add to cache
|
||||
$_[0]->{'num'} = scalar(@list_access_cache);
|
||||
@@ -104,12 +106,14 @@ splice(@$lref, $_[0]->{'line'}, $len);
|
||||
# Delete from DBM
|
||||
local $oldfrom = $_[0]->{'tag'} ? "$_[0]->{'tag'}:$_[0]->{'from'}"
|
||||
: $_[0]->{'from'};
|
||||
if ($_[3] eq "dbm") {
|
||||
if (!&rebuild_map_cmd($_[1])) {
|
||||
if ($_[3] eq "dbm") {
|
||||
dbmopen(%acc, $_[2], 0644);
|
||||
delete($acc{$oldfrom});
|
||||
dbmclose(%acc);
|
||||
}
|
||||
else { &run_makemap($_[1], $_[2], $_[3]); }
|
||||
else { &run_makemap($_[1], $_[2], $_[3]); }
|
||||
}
|
||||
|
||||
# Delete from cache
|
||||
local $idx = &indexof($_[0], @list_access_cache);
|
||||
@@ -137,13 +141,15 @@ splice(@$lref, $_[0]->{'line'}, $oldlen, @newlines);
|
||||
&flush_file_lines($_[2]);
|
||||
|
||||
# Update DBM
|
||||
if ($_[4] eq "dbm") {
|
||||
if (!&rebuild_map_cmd($_[2])) {
|
||||
if ($_[4] eq "dbm") {
|
||||
dbmopen(%virt, $_[3], 0644);
|
||||
delete($virt{$oldfrom});
|
||||
$virt{$from} = $_[1]->{'action'};
|
||||
dbmclose(%virt);
|
||||
}
|
||||
else { &run_makemap($_[2], $_[3], $_[4]); }
|
||||
else { &run_makemap($_[2], $_[3], $_[4]); }
|
||||
}
|
||||
|
||||
# Update cache
|
||||
local $idx = &indexof($_[0], @list_generics_cache);
|
||||
|
||||
@@ -184,7 +184,11 @@ local $str = ($_[0]->{'enabled'} ? "" : "# ") . $_[0]->{'name'} . ": " .
|
||||
push(@$lref, $str);
|
||||
$_[0]->{'eline'} = scalar(@$lref)-1;
|
||||
&flush_file_lines($_[1]->[0]);
|
||||
&system_logged("newaliases >/dev/null 2>&1") if (!$_[2]);
|
||||
if (!$_[2]) {
|
||||
if (!&rebuild_map_cmd($_[1]->[0])) {
|
||||
&system_logged("newaliases >/dev/null 2>&1");
|
||||
}
|
||||
}
|
||||
|
||||
# Add to the cache
|
||||
local $jfiles = join(",", @{$_[1]});
|
||||
@@ -203,7 +207,11 @@ local $lref = &read_file_lines($_[0]->{'file'});
|
||||
local $len = $_[0]->{'eline'} - $_[0]->{'line'} + 1;
|
||||
splice(@$lref, $_[0]->{'line'}, $len);
|
||||
&flush_file_lines($_[0]->{'file'});
|
||||
&system_logged("newaliases >/dev/null 2>&1") if (!$_[1]);
|
||||
if (!$_[1]) {
|
||||
if (!&rebuild_map_cmd($_[0]->{'file'})) {
|
||||
&system_logged("newaliases >/dev/null 2>&1");
|
||||
}
|
||||
}
|
||||
|
||||
# Remove from the cache
|
||||
local $jfiles = join(",", @{$_[0]->{'files'}});
|
||||
@@ -227,7 +235,11 @@ local $lref = &read_file_lines($_[0]->{'file'});
|
||||
local $len = $_[0]->{'eline'} - $_[0]->{'line'} + 1;
|
||||
splice(@$lref, $_[0]->{'line'}, $len, @newlines);
|
||||
&flush_file_lines($_[0]->{'file'});
|
||||
&system_logged("newaliases >/dev/null 2>&1") if (!$_[2]);
|
||||
if (!$_[2]) {
|
||||
if (!&rebuild_map_cmd($_[0]->{'file'})) {
|
||||
&system_logged("newaliases >/dev/null 2>&1");
|
||||
}
|
||||
}
|
||||
|
||||
local $jfiles = join(",", @{$_[0]->{'files'}});
|
||||
local $c = $list_aliases_cache{$jfiles};
|
||||
|
||||
@@ -38,3 +38,4 @@ mail_style=Mail file directory style,4,0-mail/username,1-mail/u/username,2-mail/
|
||||
mail_sync=User mail file synchronization,2,create-Create with user,delete-Delete with user,modify-Rename with user
|
||||
smrsh_dir=SMRSH directory,3,None
|
||||
queue_dirs=Extra mail queue directories,3,None
|
||||
rebuild_cmd=Command to rebuild all maps,3,Use makemap command
|
||||
|
||||
@@ -72,12 +72,14 @@ $_[0]->{'eline'} = scalar(@$lref)-1;
|
||||
&flush_file_lines($_[1]);
|
||||
|
||||
# Add to DBM
|
||||
if ($_[3] eq "dbm") {
|
||||
if (!&rebuild_map_cmd($_[1])) {
|
||||
if ($_[3] eq "dbm") {
|
||||
dbmopen(%dom, $_[2], 0644);
|
||||
$dom{$_[0]->{'from'}} = $_[0]->{'to'};
|
||||
dbmclose(%dom);
|
||||
}
|
||||
else { &run_makemap($_[1], $_[2], $_[3]); }
|
||||
else { &run_makemap($_[1], $_[2], $_[3]); }
|
||||
}
|
||||
|
||||
# Add to cache
|
||||
$_[0]->{'num'} = scalar(@list_domains_cache);
|
||||
@@ -98,12 +100,14 @@ splice(@$lref, $_[0]->{'line'}, $len);
|
||||
&flush_file_lines($_[1]);
|
||||
|
||||
# Delete from DBM
|
||||
if ($_[3] eq "dbm") {
|
||||
if (!&rebuild_map_cmd($_[1])) {
|
||||
if ($_[3] eq "dbm") {
|
||||
dbmopen(%dom, $_[2], 0644);
|
||||
delete($dom{$_[0]->{'from'}});
|
||||
dbmclose(%dom);
|
||||
}
|
||||
else { &run_makemap($_[1], $_[2], $_[3]); }
|
||||
else { &run_makemap($_[1], $_[2], $_[3]); }
|
||||
}
|
||||
|
||||
# Delete from cache
|
||||
local $idx = &indexof($_[0], @list_domains_cache);
|
||||
@@ -127,13 +131,15 @@ splice(@$lref, $_[0]->{'line'}, $oldlen, @newlines);
|
||||
&flush_file_lines($_[2]);
|
||||
|
||||
# Update DBM
|
||||
if ($_[4] eq "dbm") {
|
||||
if (!&rebuild_map_cmd($_[2])) {
|
||||
if ($_[4] eq "dbm") {
|
||||
dbmopen(%dom, $_[3], 0644);
|
||||
delete($dom{$_[0]->{'from'}});
|
||||
$dom{$_[1]->{'from'}} = $_[1]->{'to'};
|
||||
dbmclose(%dom);
|
||||
}
|
||||
else { &run_makemap($_[2], $_[3], $_[4]); }
|
||||
else { &run_makemap($_[2], $_[3], $_[4]); }
|
||||
}
|
||||
|
||||
# Update cache
|
||||
local $idx = &indexof($_[0], @list_domains_cache);
|
||||
|
||||
@@ -72,12 +72,16 @@ $_[0]->{'eline'} = scalar(@$lref)-1;
|
||||
&flush_file_lines($_[1]);
|
||||
|
||||
# Add to DBM
|
||||
if ($_[3] eq "dbm") {
|
||||
if (!&rebuild_map_cmd($_[1])) {
|
||||
if (!&rebuild_map_cmd($_[1])) {
|
||||
if ($_[3] eq "dbm") {
|
||||
dbmopen(%virt, $_[2], 0644);
|
||||
$virt{$_[0]->{'from'}} = $_[0]->{'to'};
|
||||
dbmclose(%virt);
|
||||
}
|
||||
else { &run_makemap($_[1], $_[2], $_[3]); }
|
||||
else { &run_makemap($_[1], $_[2], $_[3]); }
|
||||
}
|
||||
}
|
||||
|
||||
# Add to cache
|
||||
$_[0]->{'num'} = scalar(@list_generics_cache);
|
||||
@@ -98,12 +102,14 @@ splice(@$lref, $_[0]->{'line'}, $len);
|
||||
&flush_file_lines($_[1]);
|
||||
|
||||
# Delete from DBM
|
||||
if ($_[3] eq "dbm") {
|
||||
if (!&rebuild_map_cmd($_[1])) {
|
||||
if ($_[3] eq "dbm") {
|
||||
dbmopen(%virt, $_[2], 0644);
|
||||
delete($virt{$_[0]->{'from'}});
|
||||
dbmclose(%virt);
|
||||
}
|
||||
else { &run_makemap($_[1], $_[2], $_[3]); }
|
||||
else { &run_makemap($_[1], $_[2], $_[3]); }
|
||||
}
|
||||
|
||||
# Delete from cache
|
||||
local $idx = &indexof($_[0], @list_generics_cache);
|
||||
@@ -127,13 +133,15 @@ splice(@$lref, $_[0]->{'line'}, $oldlen, @newlines);
|
||||
&flush_file_lines($_[2]);
|
||||
|
||||
# Update DBM
|
||||
if ($_[4] eq "dbm") {
|
||||
if (!&rebuild_map_cmd($_[2])) {
|
||||
if ($_[4] eq "dbm") {
|
||||
dbmopen(%virt, $_[3], 0644);
|
||||
delete($virt{$_[0]->{'from'}});
|
||||
$virt{$_[1]->{'from'}} = $_[1]->{'to'};
|
||||
dbmclose(%virt);
|
||||
}
|
||||
else { &run_makemap($_[2], $_[3], $_[4]); }
|
||||
else { &run_makemap($_[2], $_[3], $_[4]); }
|
||||
}
|
||||
|
||||
# Update cache
|
||||
local $idx = &indexof($_[0], @list_generics_cache);
|
||||
|
||||
@@ -72,12 +72,14 @@ $_[0]->{'eline'} = scalar(@$lref)-1;
|
||||
&flush_file_lines();
|
||||
|
||||
# Write to the DBM
|
||||
if ($_[3] eq "dbm") {
|
||||
if (!&rebuild_map_cmd($_[1])) {
|
||||
if ($_[3] eq "dbm") {
|
||||
dbmopen(%mailer, $_[2], 0644);
|
||||
$mailer{$_[0]->{'domain'}} = "$_[0]->{'mailer'}:$_[0]->{'dest'}";
|
||||
dbmclose(%mailer);
|
||||
}
|
||||
else { &run_makemap($_[1], $_[2], $_[3]); }
|
||||
else { &run_makemap($_[1], $_[2], $_[3]); }
|
||||
}
|
||||
|
||||
# Update the cache
|
||||
$_[0]->{'num'} = scalar(@list_mailers_cache);
|
||||
@@ -100,13 +102,15 @@ splice(@$lref, $_[0]->{'line'}, $oldlen, @newlines);
|
||||
&flush_file_lines($_[2]);
|
||||
|
||||
# Update the DBM
|
||||
if ($_[3] eq "dbm") {
|
||||
if (!&rebuild_map_cmd($_[2])) {
|
||||
if ($_[3] eq "dbm") {
|
||||
dbmopen(%mailer, $_[3], 0644);
|
||||
delete($mailer{$_[0]->{'domain'}});
|
||||
$mailer{$_[1]->{'domain'}} = "$_[1]->{'mailer'}:$_[1]->{'dest'}";
|
||||
dbmclose(%mailer);
|
||||
}
|
||||
else { &run_makemap($_[2], $_[3], $_[4]); }
|
||||
else { &run_makemap($_[2], $_[3], $_[4]); }
|
||||
}
|
||||
|
||||
local $idx = &indexof($_[0], @list_mailers_cache);
|
||||
$_[1]->{'line'} = $_[0]->{'line'};
|
||||
@@ -127,12 +131,14 @@ splice(@$lref, $_[0]->{'line'}, $len);
|
||||
&flush_file_lines($_[1]);
|
||||
|
||||
# Delete f rom the DBM
|
||||
if ($_[3] eq "dbm") {
|
||||
if (!&rebuild_map_cmd($_[1])) {
|
||||
if ($_[3] eq "dbm") {
|
||||
dbmopen(%mailer, $_[2], 0644);
|
||||
delete($mailer{$_[0]->{'domain'}});
|
||||
dbmclose(%mailer);
|
||||
}
|
||||
else { &run_makemap($_[1], $_[2], $_[3]); }
|
||||
else { &run_makemap($_[1], $_[2], $_[3]); }
|
||||
}
|
||||
|
||||
# Update the cache
|
||||
local $idx = &indexof($_[0], @list_mailers_cache);
|
||||
|
||||
@@ -73,6 +73,8 @@ $in{'text'} =~ s/\r//g;
|
||||
&close_tempfile(FILE);
|
||||
&webmin_log("manual", $log, $file);
|
||||
|
||||
&system_logged("$post >/dev/null 2>&1") if ($post);
|
||||
if (!&rebuild_map_cmd($file)) {
|
||||
&system_logged("$post >/dev/null 2>&1") if ($post);
|
||||
}
|
||||
&redirect($return);
|
||||
|
||||
|
||||
@@ -192,11 +192,32 @@ else {
|
||||
}
|
||||
|
||||
# run_makemap(textfile, dbmfile, type)
|
||||
# Run makemap to rebuild some map. Calls error if it fails.
|
||||
sub run_makemap
|
||||
{
|
||||
local($out);
|
||||
$out = &backquote_logged("$config{'makemap_path'} $_[2] $_[1] <\"$_[0]\" 2>&1");
|
||||
if ($?) { &error("makemap failed : <pre>$out</pre>"); }
|
||||
$out = &backquote_logged(
|
||||
$config{'makemap_path'}." ".quotemeta($_[2])." ".quotemeta($_[1]).
|
||||
" <".quotemeta($_[0])." 2>&1");
|
||||
if ($?) { &error("makemap failed : <pre>".
|
||||
&html_escape($out)."</pre>"); }
|
||||
}
|
||||
|
||||
# rebuild_map_cmd(textfile)
|
||||
# If a map rebuild command is defined, run it and return 1, otherwise return 0.
|
||||
# Calls error if it fails.
|
||||
sub rebuild_map_cmd
|
||||
{
|
||||
local ($file) = @_;
|
||||
if ($config{'rebuild_cmd'}) {
|
||||
local $cmd = &substitute_template($config{'rebuild_cmd'},
|
||||
{ 'map_file' => $file });
|
||||
local $out = &backquote_logged("($cmd) 2>&1");
|
||||
if ($?) { &error("Map rebuild failed : <pre>".
|
||||
&html_escape($out)."</pre>"); }
|
||||
return 1;
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
|
||||
# find_textfile(config, dbm)
|
||||
|
||||
@@ -73,12 +73,14 @@ $_[0]->{'eline'} = scalar(@$lref)-1;
|
||||
&flush_file_lines($_[1]);
|
||||
|
||||
# Add to DBM
|
||||
if ($_[3] eq "dbm") {
|
||||
if (!&rebuild_map_cmd($_[1])) {
|
||||
if ($_[3] eq "dbm") {
|
||||
dbmopen(%virt, $_[2], 0644);
|
||||
$virt{$_[0]->{'from'}} = $_[0]->{'to'};
|
||||
dbmclose(%virt);
|
||||
}
|
||||
else { &run_makemap($_[1], $_[2], $_[3]); }
|
||||
else { &run_makemap($_[1], $_[2], $_[3]); }
|
||||
}
|
||||
|
||||
# Add to cache
|
||||
$_[0]->{'num'} = scalar(@list_virtusers_cache);
|
||||
@@ -99,12 +101,14 @@ splice(@$lref, $_[0]->{'line'}, $len);
|
||||
&flush_file_lines($_[1]);
|
||||
|
||||
# Delete from DBM
|
||||
if ($_[3] eq "dbm") {
|
||||
if (!&rebuild_map_cmd($_[1])) {
|
||||
if ($_[3] eq "dbm") {
|
||||
dbmopen(%virt, $_[2], 0644);
|
||||
delete($virt{$_[0]->{'from'}});
|
||||
dbmclose(%virt);
|
||||
}
|
||||
else { &run_makemap($_[1], $_[2], $_[3]); }
|
||||
else { &run_makemap($_[1], $_[2], $_[3]); }
|
||||
}
|
||||
|
||||
# Delete from cache
|
||||
local $idx = &indexof($_[0], @list_virtusers_cache);
|
||||
@@ -128,13 +132,15 @@ splice(@$lref, $_[0]->{'line'}, $oldlen, @newlines);
|
||||
&flush_file_lines($_[2]);
|
||||
|
||||
# Update DBM
|
||||
if ($_[4] eq "dbm") {
|
||||
if (!&rebuild_map_cmd($_[2])) {
|
||||
if ($_[4] eq "dbm") {
|
||||
dbmopen(%virt, $_[3], 0644);
|
||||
delete($virt{$_[0]->{'from'}});
|
||||
$virt{$_[1]->{'from'}} = $_[1]->{'to'};
|
||||
dbmclose(%virt);
|
||||
}
|
||||
else { &run_makemap($_[2], $_[3], $_[4]); }
|
||||
else { &run_makemap($_[2], $_[3], $_[4]); }
|
||||
}
|
||||
|
||||
# Update cache
|
||||
local $idx = &indexof($_[0], @list_virtusers_cache);
|
||||
|
||||
Reference in New Issue
Block a user