Fix to preserve submodule context in Virtualmin flows
Some checks failed
Tests / prove (push) Has been cancelled
Build / build (push) Has been cancelled

https://forum.virtualmin.com/t/editing-server-block-configure-nginx-website-does-not-reload-nginx/137282/16?u=ilia
This commit is contained in:
Ilia Ross
2026-05-30 02:29:04 +02:00
parent 7cf7d14f53
commit 111dcb5f21
42 changed files with 164 additions and 101 deletions

View File

@@ -14,6 +14,7 @@ $server || &error($text{'server_egone'});
print &ui_form_start("save_fcgi.cgi", "post");
print &ui_hidden("id", $in{'id'});
print &nginx_submod_hidden();
print &ui_table_start($text{'fcgi_header'}, undef, 2);
# XXX should be in location section
@@ -29,5 +30,5 @@ print &nginx_opt_input("fastcgi_buffer_size", $server, 10,
print &ui_table_end();
print &ui_form_end([ [ undef, $text{'save'} ] ]);
&ui_print_footer("edit_server.cgi?id=".&urlize($in{'id'}),
&ui_print_footer(&nginx_submod_url("edit_server.cgi?id=".&urlize($in{'id'})),
$text{'server_return'});

View File

@@ -17,6 +17,7 @@ $location || &error($text{'location_egone'});
print &ui_form_start("save_laccess.cgi", "post");
print &ui_hidden("id", $in{'id'});
print &ui_hidden("path", $in{'path'});
print &nginx_submod_hidden();
print &ui_table_start($text{'access_header'}, undef, 2);
print &nginx_access_input("allow", "deny", $location);
@@ -29,8 +30,8 @@ print &nginx_passfile_input("auth_basic_user_file", $location,
print &ui_table_end();
print &ui_form_end([ [ undef, $text{'save'} ] ]);
&ui_print_footer("edit_location.cgi?id=".&urlize($in{'id'}).
"&path=".&urlize($in{'path'}),
&ui_print_footer(&nginx_submod_url("edit_location.cgi?id=".&urlize($in{'id'}).
"&path=".&urlize($in{'path'})),
$text{'location_return'},
"edit_server.cgi?id=".&urlize($in{'id'}),
&nginx_submod_url("edit_server.cgi?id=".&urlize($in{'id'})),
$text{'server_return'});

View File

@@ -17,6 +17,7 @@ $location || &error($text{'location_egone'});
print &ui_form_start("save_ldocs.cgi", "post");
print &ui_hidden("id", $in{'id'});
print &ui_hidden("path", $in{'path'});
print &nginx_submod_hidden();
print &ui_table_start($text{'docs_header'}, undef, 2);
print &nginx_opt_input("index", $location, 60);
@@ -26,8 +27,8 @@ print &nginx_opt_input("default_type", $location, 20);
print &ui_table_end();
print &ui_form_end([ [ undef, $text{'save'} ] ]);
&ui_print_footer("edit_location.cgi?id=".&urlize($in{'id'}).
"&path=".&urlize($in{'path'}),
&ui_print_footer(&nginx_submod_url("edit_location.cgi?id=".&urlize($in{'id'}).
"&path=".&urlize($in{'path'})),
$text{'location_return'},
"edit_server.cgi?id=".&urlize($in{'id'}),
&nginx_submod_url("edit_server.cgi?id=".&urlize($in{'id'})),
$text{'server_return'});

View File

@@ -17,6 +17,7 @@ $location || &error($text{'location_egone'});
print &ui_form_start("save_lfcgi.cgi", "post");
print &ui_hidden("id", $in{'id'});
print &ui_hidden("path", $in{'path'});
print &nginx_submod_hidden();
print &ui_table_start($text{'fcgi_header'}, undef, 2);
print &nginx_opt_input("fastcgi_pass", $location, 50, $text{'fcgi_hostport'});
@@ -31,8 +32,8 @@ print &nginx_opt_input("fastcgi_buffer_size", $location, 10,
print &ui_table_end();
print &ui_form_end([ [ undef, $text{'save'} ] ]);
&ui_print_footer("edit_location.cgi?id=".&urlize($in{'id'}).
"&path=".&urlize($in{'path'}),
&ui_print_footer(&nginx_submod_url("edit_location.cgi?id=".&urlize($in{'id'}).
"&path=".&urlize($in{'path'})),
$text{'location_return'},
"edit_server.cgi?id=".&urlize($in{'id'}),
&nginx_submod_url("edit_server.cgi?id=".&urlize($in{'id'})),
$text{'server_return'});

View File

@@ -17,6 +17,7 @@ $location || &error($text{'location_egone'});
print &ui_form_start("save_lgzip.cgi", "post");
print &ui_hidden("id", $in{'id'});
print &ui_hidden("path", $in{'path'});
print &nginx_submod_hidden();
print &ui_table_start($text{'gzip_header'}, undef, 2);
print &nginx_onoff_input("gzip", $location);
@@ -31,8 +32,8 @@ print &nginx_opt_list_input("gzip_types", $location, 60, $text{'ssi_types'});
print &ui_table_end();
print &ui_form_end([ [ undef, $text{'save'} ] ]);
&ui_print_footer("edit_location.cgi?id=".&urlize($in{'id'}).
"&path=".&urlize($in{'path'}),
&ui_print_footer(&nginx_submod_url("edit_location.cgi?id=".&urlize($in{'id'}).
"&path=".&urlize($in{'path'})),
$text{'location_return'},
"edit_server.cgi?id=".&urlize($in{'id'}),
&nginx_submod_url("edit_server.cgi?id=".&urlize($in{'id'})),
$text{'server_return'});

View File

@@ -30,8 +30,9 @@ if ($in{'path'}) {
my @lpages = ( "ldocs", "lfcgi", "lssi", "lgzip", "lproxy",
"laccess", "lrewrite", );
&icons_table(
[ map { "edit_".$_.".cgi?id=".&urlize($in{'id'}).
"&path=".&urlize($in{'path'}) } @lpages ],
[ map { &nginx_submod_url("edit_".$_.".cgi?id=".
&urlize($in{'id'})."&path=".&urlize($in{'path'})) }
@lpages ],
[ map { $text{$_."_title"} } @lpages ],
[ map { "images/".$_.".gif" } @lpages ],
);
@@ -47,6 +48,7 @@ print &ui_form_start("save_location.cgi", "post");
print &ui_hidden("id", $in{'id'});
print &ui_hidden("new", $in{'new'});
print &ui_hidden("oldpath", $in{'path'});
print &nginx_submod_hidden();
print &ui_table_start($text{'location_header'}, "width=100%", 2);
# Location path
@@ -73,5 +75,5 @@ else {
[ 'delete', $text{'location_delete'} ] ]);
}
&ui_print_footer("edit_server.cgi?id=".&urlize($in{'id'}),
&ui_print_footer(&nginx_submod_url("edit_server.cgi?id=".&urlize($in{'id'})),
$text{'server_return'});

View File

@@ -17,6 +17,7 @@ $location || &error($text{'location_egone'});
print &ui_form_start("save_lproxy.cgi", "post");
print &ui_hidden("id", $in{'id'});
print &ui_hidden("path", $in{'path'});
print &nginx_submod_hidden();
print &ui_table_start($text{'proxy_header'}, undef, 2);
print &nginx_opt_input("proxy_pass", $location, 50, $text{'proxy_url'});
@@ -37,8 +38,8 @@ print &nginx_textarea_input("proxy_hide_header", $location, 60, 5);
print &ui_table_end();
print &ui_form_end([ [ undef, $text{'save'} ] ]);
&ui_print_footer("edit_location.cgi?id=".&urlize($in{'id'}).
"&path=".&urlize($in{'path'}),
&ui_print_footer(&nginx_submod_url("edit_location.cgi?id=".&urlize($in{'id'}).
"&path=".&urlize($in{'path'})),
$text{'location_return'},
"edit_server.cgi?id=".&urlize($in{'id'}),
&nginx_submod_url("edit_server.cgi?id=".&urlize($in{'id'})),
$text{'server_return'});

View File

@@ -18,6 +18,7 @@ $location || &error($text{'location_egone'});
print &ui_form_start("save_lrewrite.cgi", "post");
print &ui_hidden("id", $in{'id'});
print &ui_hidden("path", $in{'path'});
print &nginx_submod_hidden();
print &ui_table_start($text{'rewrite_header'}, undef, 2);
print &nginx_rewrite_input("rewrite", $location);
@@ -27,8 +28,8 @@ print &nginx_onoff_input("rewrite_log", $location);
print &ui_table_end();
print &ui_form_end([ [ undef, $text{'save'} ] ]);
&ui_print_footer("edit_location.cgi?id=".&urlize($in{'id'}).
"&path=".&urlize($in{'path'}),
&ui_print_footer(&nginx_submod_url("edit_location.cgi?id=".&urlize($in{'id'}).
"&path=".&urlize($in{'path'})),
$text{'location_return'},
"edit_server.cgi?id=".&urlize($in{'id'}),
&nginx_submod_url("edit_server.cgi?id=".&urlize($in{'id'})),
$text{'server_return'});

View File

@@ -17,6 +17,7 @@ $location || &error($text{'location_egone'});
print &ui_form_start("save_lssi.cgi", "post");
print &ui_hidden("id", $in{'id'});
print &ui_hidden("path", $in{'path'});
print &nginx_submod_hidden();
print &ui_table_start($text{'ssi_header'}, undef, 2);
print &nginx_onoff_input("ssi", $location);
@@ -30,8 +31,8 @@ print &nginx_opt_input("ssi_value_length", $location, 10);
print &ui_table_end();
print &ui_form_end([ [ undef, $text{'save'} ] ]);
&ui_print_footer("edit_location.cgi?id=".&urlize($in{'id'}).
"&path=".&urlize($in{'path'}),
&ui_print_footer(&nginx_submod_url("edit_location.cgi?id=".&urlize($in{'id'}).
"&path=".&urlize($in{'path'})),
$text{'location_return'},
"edit_server.cgi?id=".&urlize($in{'id'}),
&nginx_submod_url("edit_server.cgi?id=".&urlize($in{'id'})),
$text{'server_return'});

View File

@@ -17,6 +17,8 @@ $in{'file'} = &resolve_manual_config_file($in{'file'}, @files) ||
# Show file selector
print &ui_form_start("edit_manual.cgi");
print &nginx_submod_hidden();
print &ui_hidden("id", $in{'id'});
print "<b>$text{'manual_file'}</b>\n";
print &ui_select("file", $in{'file'}, \@files, 1, 0, 0, 0,
"onChange='form.submit()'");
@@ -26,6 +28,8 @@ print &ui_form_end();
# Show current file
print &ui_form_start("save_manual.cgi", "form-data");
print &ui_hidden("file", $in{'file'});
print &ui_hidden("id", $in{'id'});
print &nginx_submod_hidden();
print &ui_table_start(undef, "width=100%", 2);
print &ui_table_row(undef,

View File

@@ -14,6 +14,7 @@ $server || &error($text{'server_egone'});
print &ui_form_start("save_saccess.cgi", "post");
print &ui_hidden("id", $in{'id'});
print &nginx_submod_hidden();
print &ui_table_start($text{'access_header'}, undef, 2);
print &nginx_access_input("allow", "deny", $server);
@@ -25,5 +26,5 @@ print &nginx_passfile_input("auth_basic_user_file", $server, $in{'id'});
print &ui_table_end();
print &ui_form_end([ [ undef, $text{'save'} ] ]);
&ui_print_footer("edit_server.cgi?id=".&urlize($in{'id'}),
&ui_print_footer(&nginx_submod_url("edit_server.cgi?id=".&urlize($in{'id'})),
$text{'server_return'});

View File

@@ -14,6 +14,7 @@ $server || &error($text{'server_egone'});
print &ui_form_start("save_sdocs.cgi", "post");
print &ui_hidden("id", $in{'id'});
print &nginx_submod_hidden();
print &ui_table_start($text{'docs_header'}, undef, 2);
print &nginx_opt_input("root", $server, 60, undef,
@@ -26,5 +27,5 @@ print &nginx_opt_input("default_type", $server, 20);
print &ui_table_end();
print &ui_form_end([ [ undef, $text{'save'} ] ]);
&ui_print_footer("edit_server.cgi?id=".&urlize($in{'id'}),
&ui_print_footer(&nginx_submod_url("edit_server.cgi?id=".&urlize($in{'id'})),
$text{'server_return'});

View File

@@ -4,14 +4,19 @@
use strict;
use warnings;
require './nginx-lib.pl';
our (%text, %in, %access);
our (%text, %in, %access, %config);
&ReadParse();
my $from_submod = defined($in{'nmod'});
my $action_links = -r $config{'nginx_config'} &&
&has_command($config{'nginx_cmd'}) ?
&nginx_action_links() : "";
my $server;
my $can_create = !defined($access{'create'}) || $access{'create'};
if ($in{'new'}) {
$can_create || &error($text{'server_ecannotcreate'});
&ui_print_header(undef, $text{'server_create'}, "");
&ui_print_header(undef, $text{'server_create'}, "", undef, undef,
undef, undef, $action_links);
$server = { 'name' => 'server',
'members' => [ ] };
}
@@ -19,7 +24,8 @@ else {
$server = &find_server($in{'id'});
$server || &error($text{'server_egone'});
&can_edit_server($server) || &error($text{'server_ecannot'});
&ui_print_header(&server_desc($server), $text{'server_edit'}, "");
&ui_print_header(&server_desc($server), $text{'server_edit'}, "",
undef, undef, undef, undef, $action_links);
}
if ($in{'id'}) {
@@ -28,11 +34,14 @@ if ($in{'id'}) {
my @spages = ( $access{'logs'} ? ( "slogs" ) : ( ),
"sdocs", "ssl", "fcgi", "sssi", "sgzip", "sproxy",
"saccess", "srewrite", );
my @slinks = map { "edit_".$_.".cgi?id=".&urlize($in{'id'}) } @spages;
my @slinks = map { &nginx_submod_url("edit_".$_.".cgi?id=".
&urlize($in{'id'})) } @spages;
my @stitles = map { $text{$_."_title"} } @spages;
my @sicons = map { "images/".$_.".gif" } @spages;
if (&can_edit_manual_config() && &can_edit_manual_file($server->{'file'})) {
push(@slinks, "edit_manual.cgi?file=".&urlize($server->{'file'}));
push(@slinks, &nginx_submod_url("edit_manual.cgi?file=".
&urlize($server->{'file'}).
"&id=".&urlize($in{'id'})));
push(@stitles, $text{'manual_server'});
push(@sicons, "images/manual.gif");
}
@@ -45,8 +54,9 @@ if ($in{'id'}) {
# Show table for locations
print &ui_subheading($text{'server_locations'});
my @locations = &find("location", $server);
my @links = ( "<a href='edit_location.cgi?id=".&urlize($in{'id'}).
"&new=1'>$text{'server_addloc'}</a>" );
my @links = ( "<a href='".&nginx_submod_url("edit_location.cgi?id=".
&urlize($in{'id'})."&new=1").
"'>$text{'server_addloc'}</a>" );
if (@locations) {
print &ui_links_row(\@links);
print &ui_columns_start([ $text{'server_pathloc'},
@@ -62,9 +72,9 @@ if ($in{'id'}) {
my $auto = &find_value("autoindex", $l);
my @w = @{$l->{'words'}};
print &ui_columns_row([
"<a href='edit_location.cgi?id=".
"<a href='".&nginx_submod_url("edit_location.cgi?id=".
&urlize($in{'id'})."&path=".
&urlize($w[$#w])."'>".
&urlize($w[$#w]))."'>".
&html_escape($w[$#w])."</a>",
&match_desc(@w > 1 ? $w[0] : ""),
$rootdir ? $rootdir :
@@ -92,6 +102,7 @@ if ($access{'edit'} || ($in{'new'} && $can_create)) {
print &ui_form_start("save_server.cgi", "post");
print &ui_hidden("id", $in{'id'});
print &ui_hidden("new", $in{'new'});
print &nginx_submod_hidden();
print &ui_table_start($text{'server_header'}, "width=100%", 2);
# Server name
@@ -168,10 +179,18 @@ if ($access{'edit'} || ($in{'new'} && $can_create)) {
if ($in{'new'}) {
print &ui_form_end([ [ undef, $text{'create'} ] ]);
}
elsif ($from_submod) {
print &ui_form_end([ [ undef, $text{'save'} ] ]);
}
else {
print &ui_form_end([ [ undef, $text{'save'} ],
[ 'delete', $text{'server_delete'} ] ]);
}
}
&ui_print_footer("", $text{'index_return'});
if ($from_submod) {
&ui_print_footer();
}
else {
&ui_print_footer("", $text{'index_return'});
}

View File

@@ -14,6 +14,7 @@ $server || &error($text{'server_egone'});
print &ui_form_start("save_sgzip.cgi", "post");
print &ui_hidden("id", $in{'id'});
print &nginx_submod_hidden();
print &ui_table_start($text{'gzip_header'}, undef, 2);
print &nginx_onoff_input("gzip", $server);
@@ -28,5 +29,5 @@ print &nginx_opt_list_input("gzip_types", $server, 60, $text{'ssi_types'});
print &ui_table_end();
print &ui_form_end([ [ undef, $text{'save'} ] ]);
&ui_print_footer("edit_server.cgi?id=".&urlize($in{'id'}),
&ui_print_footer(&nginx_submod_url("edit_server.cgi?id=".&urlize($in{'id'})),
$text{'server_return'});

View File

@@ -15,6 +15,7 @@ $access{'logs'} || &error($text{'logs_ecannot'});
print &ui_form_start("save_slogs.cgi", "post");
print &ui_hidden("id", $in{'id'});
print &nginx_submod_hidden();
print &ui_table_start($text{'slogs_header'}, undef, 2);
print &nginx_error_log_input("error_log", $server);
@@ -26,5 +27,5 @@ print &nginx_logformat_input("log_format", $server);
print &ui_table_end();
print &ui_form_end([ [ undef, $text{'save'} ] ]);
&ui_print_footer("edit_server.cgi?id=".&urlize($in{'id'}),
&ui_print_footer(&nginx_submod_url("edit_server.cgi?id=".&urlize($in{'id'})),
$text{'server_return'});

View File

@@ -14,6 +14,7 @@ $server || &error($text{'server_egone'});
print &ui_form_start("save_sproxy.cgi", "post");
print &ui_hidden("id", $in{'id'});
print &nginx_submod_hidden();
print &ui_table_start($text{'proxy_header'}, undef, 2);
print &nginx_opt_input("proxy_buffer_size", $server, 10,
@@ -32,5 +33,5 @@ print &nginx_textarea_input("proxy_hide_header", $server, 60, 5);
print &ui_table_end();
print &ui_form_end([ [ undef, $text{'save'} ] ]);
&ui_print_footer("edit_server.cgi?id=".&urlize($in{'id'}),
&ui_print_footer(&nginx_submod_url("edit_server.cgi?id=".&urlize($in{'id'})),
$text{'server_return'});

View File

@@ -14,6 +14,7 @@ $server || &error($text{'server_egone'});
print &ui_form_start("save_srewrite.cgi", "post");
print &ui_hidden("id", $in{'id'});
print &nginx_submod_hidden();
print &ui_table_start($text{'rewrite_header'}, undef, 2);
print &nginx_rewrite_input("rewrite", $server);
@@ -23,5 +24,5 @@ print &nginx_onoff_input("rewrite_log", $server);
print &ui_table_end();
print &ui_form_end([ [ undef, $text{'save'} ] ]);
&ui_print_footer("edit_server.cgi?id=".&urlize($in{'id'}),
&ui_print_footer(&nginx_submod_url("edit_server.cgi?id=".&urlize($in{'id'})),
$text{'server_return'});

View File

@@ -14,6 +14,7 @@ $server || &error($text{'server_egone'});
print &ui_form_start("save_ssl.cgi", "post");
print &ui_hidden("id", $in{'id'});
print &nginx_submod_hidden();
print &ui_table_start($text{'ssl_header'}, undef, 2);
print &nginx_opt_input("ssl_certificate", $server, 50, $text{'ssl_file'},
@@ -30,5 +31,5 @@ print &nginx_multi_input("ssl_protocols", $server,
print &ui_table_end();
print &ui_form_end([ [ undef, $text{'save'} ] ]);
&ui_print_footer("edit_server.cgi?id=".&urlize($in{'id'}),
&ui_print_footer(&nginx_submod_url("edit_server.cgi?id=".&urlize($in{'id'})),
$text{'server_return'});

View File

@@ -14,6 +14,7 @@ $server || &error($text{'server_egone'});
print &ui_form_start("save_sssi.cgi", "post");
print &ui_hidden("id", $in{'id'});
print &nginx_submod_hidden();
print &ui_table_start($text{'ssi_header'}, undef, 2);
print &nginx_onoff_input("ssi", $server);
@@ -27,5 +28,5 @@ print &nginx_opt_input("ssi_value_length", $server, 10);
print &ui_table_end();
print &ui_form_end([ [ undef, $text{'save'} ] ]);
&ui_print_footer("edit_server.cgi?id=".&urlize($in{'id'}),
&ui_print_footer(&nginx_submod_url("edit_server.cgi?id=".&urlize($in{'id'})),
$text{'server_return'});

View File

@@ -30,6 +30,7 @@ print &ui_hidden("file", $in{'file'});
print &ui_hidden("old", $in{'user'});
print &ui_hidden("id", $in{'id'});
print &ui_hidden("path", $in{'path'});
print &nginx_submod_hidden();
print &ui_table_start($text{'user_header'}, undef, 2);
# Username
@@ -60,7 +61,6 @@ else {
[ 'delete', $text{'delete'} ] ]);
}
&ui_print_footer("list_users.cgi?file=".&urlize($in{'file'}).
"&id=".&urlize($in{'id'})."&path=".&urlize($in{'path'}),
&ui_print_footer(&nginx_submod_url("list_users.cgi?file=".&urlize($in{'file'}).
"&id=".&urlize($in{'id'})."&path=".&urlize($in{'path'})),
$text{'users_return'});

View File

@@ -15,16 +15,19 @@ $in{'file'} || &error($text{'users_efile'});
&switch_write_user(1);
my $users = &htaccess_htpasswd::list_users($in{'file'});
&switch_write_user(0);
my @links = ( "<a href='edit_user.cgi?new=1&file=".&urlize($in{'file'})."'>".
my @links = ( "<a href='".&nginx_submod_url("edit_user.cgi?new=1&file=".
&urlize($in{'file'})."&id=".&urlize($in{'id'}).
"&path=".&urlize($in{'path'}))."'>".
$text{'users_add'}."</a>" );
if (@$users) {
print &ui_links_row(\@links);
my @grid = map { my $h = "<a href='edit_user.cgi".
my @grid = map { my $url = &nginx_submod_url("edit_user.cgi".
"?user=".&urlize($_->{'user'}).
"&file=".&urlize($in{'file'}).
"&id=".&urlize($in{'id'}).
"&path=".&urlize($in{'path'})."'>".
&html_escape($_->{'user'})."</a>";
"&path=".&urlize($in{'path'}));
my $h = "<a href='$url'>".
&html_escape($_->{'user'})."</a>";
!$_->{'enabled'} ? "<i>$h</i>" : $h } @$users;
print &ui_grid_table(\@grid, 4, 100);
}
@@ -34,12 +37,12 @@ else {
print &ui_links_row(\@links);
if ($in{'path'}) {
&ui_print_footer("edit_location.cgi?id=".&urlize($in{'id'}).
"&path=".&urlize($in{'path'}),
&ui_print_footer(&nginx_submod_url("edit_location.cgi?id=".
&urlize($in{'id'})."&path=".&urlize($in{'path'})),
$text{'location_return'});
}
elsif ($in{'id'}) {
&ui_print_footer("edit_server.cgi?id=".&urlize($in{'id'}),
&ui_print_footer(&nginx_submod_url("edit_server.cgi?id=".&urlize($in{'id'})),
$text{'server_return'});
}
else {

View File

@@ -1390,8 +1390,9 @@ my ($name, $parent, $id, $path) = @_;
my $value = &find_value($name, $parent);
my $edit;
if ($value =~ /^\/\S/) {
$edit = " <a href='list_users.cgi?file=".&urlize($value).
"&id=".&urlize($id)."&path=".&urlize($path)."'>".
$edit = " <a href='".&nginx_submod_url("list_users.cgi?file=".
&urlize($value)."&id=".&urlize($id).
"&path=".&urlize($path))."'>".
$text{'access_edit'}."</a>";
}
return &nginx_opt_input($name, $parent, 50, $text{'access_pfile'},
@@ -1587,6 +1588,24 @@ $url .= "?$ENV{'QUERY_STRING'}"
return $url;
}
# nginx_submod_url(url)
# Adds the submodule context parameter to a URL, if present
sub nginx_submod_url
{
my ($url) = @_;
our %in;
return $url if (!defined($in{'nmod'}));
return $url.($url =~ /\?/ ? "&" : "?")."nmod=".&urlize($in{'nmod'});
}
# nginx_submod_hidden()
# Returns a hidden field for the submodule context parameter
sub nginx_submod_hidden
{
our %in;
return defined($in{'nmod'}) ? &ui_hidden("nmod", $in{'nmod'}) : "";
}
# test_config()
# Returns an error message if the config is invalid
sub test_config

View File

@@ -22,5 +22,4 @@ $server || &error($text{'server_egone'});
&unlock_all_config_files();
my $name = &find_value("server_name", $server);
&webmin_log("fcgi", "server", $name);
&redirect("edit_server.cgi?id=".&urlize($in{'id'}));
&redirect(&nginx_submod_url("edit_server.cgi?id=".&urlize($in{'id'})));

View File

@@ -25,6 +25,5 @@ $location || &error($text{'location_egone'});
my $name = &find_value("server_name", $server);
&webmin_log("access", "location", &location_path($location),
{ 'server' => $name });
&redirect("edit_location.cgi?id=".&urlize($in{'id'}).
"&path=".&urlize($in{'path'}));
&redirect(&nginx_submod_url("edit_location.cgi?id=".&urlize($in{'id'}).
"&path=".&urlize($in{'path'})));

View File

@@ -24,6 +24,5 @@ $location || &error($text{'location_egone'});
my $name = &find_value("server_name", $server);
&webmin_log("docs", "location", &location_path($location),
{ 'server' => $name });
&redirect("edit_location.cgi?id=".&urlize($in{'id'}).
"&path=".&urlize($in{'path'}));
&redirect(&nginx_submod_url("edit_location.cgi?id=".&urlize($in{'id'}).
"&path=".&urlize($in{'path'})));

View File

@@ -28,6 +28,5 @@ $location || &error($text{'location_egone'});
my $name = &find_value("server_name", $server);
&webmin_log("fcgi", "location", &location_path($location),
{ 'server' => $name });
&redirect("edit_location.cgi?id=".&urlize($in{'id'}).
"&path=".&urlize($in{'path'}));
&redirect(&nginx_submod_url("edit_location.cgi?id=".&urlize($in{'id'}).
"&path=".&urlize($in{'path'})));

View File

@@ -28,5 +28,5 @@ $location || &error($text{'location_egone'});
my $name = &find_value("server_name", $server);
&webmin_log("gzip", "location", &location_path($location),
{ 'server' => $name });
&redirect("edit_location.cgi?id=".&urlize($in{'id'}).
"&path=".&urlize($in{'path'}));
&redirect(&nginx_submod_url("edit_location.cgi?id=".&urlize($in{'id'}).
"&path=".&urlize($in{'path'})));

View File

@@ -56,12 +56,14 @@ if ($in{'delete'}) {
"<tt>".&html_escape(&location_path($location))."</tt>"),
[ [ 'id', $in{'id'} ],
[ 'oldpath', $in{'oldpath'} ],
(defined($in{'nmod'}) ? [ 'nmod', $in{'nmod'} ] : ( )),
[ 'delete', 1 ] ],
[ [ 'confirm', $text{'server_confirm'} ] ],
);
&ui_print_footer("edit_location.cgi?id=".&urlize($in{'id'}).
"&path=".&urlize($in{'oldpath'}),
&ui_print_footer(&nginx_submod_url("edit_location.cgi?id=".
&urlize($in{'id'}).
"&path=".&urlize($in{'oldpath'})),
$text{'server_return'});
}
}
@@ -95,7 +97,7 @@ if ($action) {
my $name = &find_value("server_name", $server);
&webmin_log($action, 'location', &location_path($location),
{ 'server' => $name });
&redirect("edit_server.cgi?id=".&urlize($in{'id'}));
&redirect(&nginx_submod_url("edit_server.cgi?id=".&urlize($in{'id'})));
}

View File

@@ -36,6 +36,5 @@ $location || &error($text{'location_egone'});
my $name = &find_value("server_name", $server);
&webmin_log("proxy", "location", &location_path($location),
{ 'server' => $name });
&redirect("edit_location.cgi?id=".&urlize($in{'id'}).
"&path=".&urlize($in{'path'}));
&redirect(&nginx_submod_url("edit_location.cgi?id=".&urlize($in{'id'}).
"&path=".&urlize($in{'path'})));

View File

@@ -23,6 +23,5 @@ $location || &error($text{'location_egone'});
my $name = &find_value("server_name", $server);
&webmin_log("rewrite", "location", &location_path($location),
{ 'server' => $name });
&redirect("edit_location.cgi?id=".&urlize($in{'id'}).
"&path=".&urlize($in{'path'}));
&redirect(&nginx_submod_url("edit_location.cgi?id=".&urlize($in{'id'}).
"&path=".&urlize($in{'path'})));

View File

@@ -28,6 +28,5 @@ $location || &error($text{'location_egone'});
my $name = &find_value("server_name", $server);
&webmin_log("ssi", "location", &location_path($location),
{ 'server' => $name });
&redirect("edit_location.cgi?id=".&urlize($in{'id'}).
"&path=".&urlize($in{'path'}));
&redirect(&nginx_submod_url("edit_location.cgi?id=".&urlize($in{'id'}).
"&path=".&urlize($in{'path'})));

View File

@@ -40,4 +40,9 @@ else {
}
&update_last_config_change();
&webmin_log("manual", undef, $in{'file'});
&redirect("");
if ($in{'id'}) {
&redirect(&nginx_submod_url("edit_server.cgi?id=".&urlize($in{'id'})));
}
else {
&redirect("index.cgi");
}

View File

@@ -22,5 +22,4 @@ $server || &error($text{'server_egone'});
&unlock_all_config_files();
my $name = &find_value("server_name", $server);
&webmin_log("access", "server", $name);
&redirect("edit_server.cgi?id=".&urlize($in{'id'}));
&redirect(&nginx_submod_url("edit_server.cgi?id=".&urlize($in{'id'})));

View File

@@ -28,4 +28,4 @@ $in{'root_def'} || &can_directory($in{'root'}) ||
my $name = &find_value("server_name", $server);
&webmin_log("sdocs", "server", $name);
&redirect("edit_server.cgi?id=".&urlize(&server_id($server)));
&redirect(&nginx_submod_url("edit_server.cgi?id=".&urlize(&server_id($server))));

View File

@@ -63,11 +63,13 @@ if ($in{'delete'}) {
&text('server_rusure',
"<tt>".&html_escape($name)."</tt>"),
[ [ 'id', $in{'id'} ],
(defined($in{'nmod'}) ? [ 'nmod', $in{'nmod'} ] : ( )),
[ 'delete', 1 ] ],
[ [ 'confirm', $text{'server_confirm'} ] ],
);
&ui_print_footer("edit_server.cgi?id=".&urlize($in{'id'}),
&ui_print_footer(&nginx_submod_url("edit_server.cgi?id=".
&urlize($in{'id'})),
$text{'server_return'});
}
}
@@ -177,5 +179,11 @@ elsif ($action eq 'delete') {
}
if ($action) {
&webmin_log($action, 'server', $name);
&redirect("");
if (defined($in{'nmod'}) && $action ne 'delete') {
&redirect(&nginx_submod_url("edit_server.cgi?id=".
&urlize(&server_id($server))));
}
else {
&redirect("");
}
}

View File

@@ -25,5 +25,4 @@ $server || &error($text{'server_egone'});
&unlock_all_config_files();
my $name = &find_value("server_name", $server);
&webmin_log("gzip", "server", $name);
&redirect("edit_server.cgi?id=".&urlize($in{'id'}));
&redirect(&nginx_submod_url("edit_server.cgi?id=".&urlize($in{'id'})));

View File

@@ -23,5 +23,4 @@ $access{'logs'} || &error($text{'logs_ecannot'});
&unlock_all_config_files();
my $name = &find_value("server_name", $server);
&webmin_log("slogs", "server", $name);
&redirect("edit_server.cgi?id=".&urlize($in{'id'}));
&redirect(&nginx_submod_url("edit_server.cgi?id=".&urlize($in{'id'})));

View File

@@ -31,5 +31,4 @@ $server || &error($text{'server_egone'});
&unlock_all_config_files();
my $name = &find_value("server_name", $server);
&webmin_log("proxy", "server", $name);
&redirect("edit_server.cgi?id=".&urlize($in{'id'}));
&redirect(&nginx_submod_url("edit_server.cgi?id=".&urlize($in{'id'})));

View File

@@ -20,5 +20,4 @@ $server || &error($text{'server_egone'});
&unlock_all_config_files();
my $name = &find_value("server_name", $server);
&webmin_log("rewrite", "server", $name);
&redirect("edit_server.cgi?id=".&urlize($in{'id'}));
&redirect(&nginx_submod_url("edit_server.cgi?id=".&urlize($in{'id'})));

View File

@@ -31,5 +31,4 @@ if ($in{'ssl'} && $in{"ssl_certificate_key_def"}) {
&unlock_all_config_files();
my $name = &find_value("server_name", $server);
&webmin_log("ssl", "server", $name);
&redirect("edit_server.cgi?id=".&urlize($in{'id'}));
&redirect(&nginx_submod_url("edit_server.cgi?id=".&urlize($in{'id'})));

View File

@@ -25,5 +25,4 @@ $server || &error($text{'server_egone'});
&unlock_all_config_files();
my $name = &find_value("server_name", $server);
&webmin_log("ssi", "server", $name);
&redirect("edit_server.cgi?id=".&urlize($in{'id'}));
&redirect(&nginx_submod_url("edit_server.cgi?id=".&urlize($in{'id'})));

View File

@@ -53,6 +53,5 @@ else {
&unlock_file($in{'file'});
&webmin_log($in{'new'} ? "create" : $in{'delete'} ? "delete" : "modify",
"user", $user->{'user'}, { 'file' => $in{'file'} });
&redirect("list_users.cgi?file=".&urlize($in{'file'}).
"&id=".&urlize($in{'id'})."&path=".&urlize($in{'path'}));
&redirect(&nginx_submod_url("list_users.cgi?file=".&urlize($in{'file'}).
"&id=".&urlize($in{'id'})."&path=".&urlize($in{'path'})));