diff --git a/nginx/acl_security.pl b/nginx/acl_security.pl index a3ae00b3a..242409cda 100755 --- a/nginx/acl_security.pl +++ b/nginx/acl_security.pl @@ -10,7 +10,7 @@ sub acl_security_form { my ($o) = @_; -# Allowed virtual hosts +# Allowed server blocks print &ui_table_row($text{'acl_vhosts'}, &ui_radio("vhosts_def", $o->{'vhosts'} ? 0 : 1, [ [ 1, $text{'acl_hosts1'} ], @@ -22,6 +22,10 @@ print &ui_table_row($text{'acl_vhosts'}, print &ui_table_row($text{'acl_edit'}, &ui_yesno_radio("edit", $o->{'edit'})); +# Can create server blocks? +print &ui_table_row($text{'acl_create'}, + &ui_yesno_radio("create", !defined($o->{'create'}) || $o->{'create'})); + # Can stop and start Nginx? print &ui_table_row($text{'acl_stop'}, &ui_yesno_radio("stop", $o->{'stop'})); @@ -52,6 +56,7 @@ my ($o) = @_; $o->{'vhosts'} = $in{'vhosts_def'} ? "" : join(" ", split(/\s+/, $in{'vhosts'})); $o->{'edit'} = $in{'edit'}; +$o->{'create'} = $in{'create'}; $o->{'root'} = $in{'root'}; $o->{'global'} = $in{'global'}; $o->{'logs'} = $in{'logs'}; diff --git a/nginx/config.info b/nginx/config.info index 7ff290a1f..fd090ea4c 100644 --- a/nginx/config.info +++ b/nginx/config.info @@ -1,6 +1,6 @@ nginx_config=Full path to Nginx config file,0 -add_to=File or directory for new virtual hosts,3,None (add to main config file) -add_link=Directory for links to new virtual host files,3,None +add_to=File or directory for new server blocks,3,Add to main config file +add_link=Directory for links to new server block files,3,None nginx_cmd=Full path to Nginx command,0 start_cmd=Command to start Nginx,0 stop_cmd=Command to stop Nginx,0 diff --git a/nginx/config.info.nl b/nginx/config.info.nl index 0d9663b5b..ffcf9a693 100644 --- a/nginx/config.info.nl +++ b/nginx/config.info.nl @@ -1,6 +1,6 @@ nginx_config=Volledig pad naar de Nginx config file,0 -add_to=File of directory voor de nieuwe virtuele host files,3,Geen (toevoegen aan de hoofd config file) -add_link=Directory voor de links naar de nieuwe virtuele host files,3,Geen +add_to=File or directory for new server block files,3,Add to main config file +add_link=Directory for links to new server block files,3,Geen nginx_cmd=Volledig pad naar de Nginx opdracht,0 start_cmd=Opdracht om Nginx te starten,0 stop_cmd=Opdracht om Nginx te stoppen,0 diff --git a/nginx/defaultacl b/nginx/defaultacl index 26cbb04be..76fc1da86 100644 --- a/nginx/defaultacl +++ b/nginx/defaultacl @@ -3,5 +3,6 @@ root=/ global=1 user=root edit=1 +create=1 stop=1 logs=1 diff --git a/nginx/delete_servers.cgi b/nginx/delete_servers.cgi new file mode 100755 index 000000000..fed1a6ef7 --- /dev/null +++ b/nginx/delete_servers.cgi @@ -0,0 +1,61 @@ +#!/usr/local/bin/perl +# Delete selected server blocks + +use strict; +use warnings; +require './nginx-lib.pl'; +our (%text, %in, %config, %access); +&ReadParse(); +&error_setup($text{'delete_err'}); +$access{'edit'} || &error($text{'server_ecannotedit'}); + +my @ids = split(/\0/, $in{'d'} || ""); +@ids || &error($text{'delete_enone'}); + +# Validate the selected server blocks before locking config files. +foreach my $id (@ids) { + my $server = &find_server($id); + $server || &error($text{'server_egone'}); + &can_edit_server($server) || &error($text{'server_ecannot'}); + &is_default_server_block($server) && &error($text{'delete_edefault'}); + } + +&lock_all_config_files(); +my $conf = &get_config(); +my $http = &find("http", $conf); +if (!$http) { + &unlock_all_config_files(); + &error(&text('index_ehttp', "$config{'nginx_config'}")); + } +my @servers; +foreach my $id (@ids) { + my $server = &find_server($id); + if (!$server) { + &unlock_all_config_files(); + &error($text{'server_egone'}); + } + if (!&can_edit_server($server)) { + &unlock_all_config_files(); + &error($text{'server_ecannot'}); + } + if (&is_default_server_block($server)) { + &unlock_all_config_files(); + &error($text{'delete_edefault'}); + } + push(@servers, $server); + } +foreach my $server (@servers) { + &save_directive($http, [ $server ], [ ]); + } +&flush_config_file_lines(); +&unlock_all_config_files(); +foreach my $server (@servers) { + &delete_server_link($server); + } +my %done_file; +foreach my $server (@servers) { + next if ($done_file{$server->{'file'}}++); + &delete_server_file_if_empty($server); + } +&webmin_log("delete", "servers", scalar(@servers)); +&redirect(""); diff --git a/nginx/edit_fcgi.cgi b/nginx/edit_fcgi.cgi index 5412a1a30..7ae0c684e 100755 --- a/nginx/edit_fcgi.cgi +++ b/nginx/edit_fcgi.cgi @@ -1,5 +1,5 @@ #!/usr/local/bin/perl -# Show virtual host FCGI options +# Show server block FCGI options use strict; use warnings; diff --git a/nginx/edit_location.cgi b/nginx/edit_location.cgi index af52dd43c..29f7d100f 100644 --- a/nginx/edit_location.cgi +++ b/nginx/edit_location.cgi @@ -1,5 +1,5 @@ #!/usr/local/bin/perl -# Show the config for one location inside a virtual host +# Show the config for one location inside a server block use strict; use warnings; diff --git a/nginx/edit_saccess.cgi b/nginx/edit_saccess.cgi index 7f559e44b..17bba98e1 100755 --- a/nginx/edit_saccess.cgi +++ b/nginx/edit_saccess.cgi @@ -1,5 +1,5 @@ #!/usr/local/bin/perl -# Show virtual host access control options +# Show server block access control options use strict; use warnings; diff --git a/nginx/edit_sdocs.cgi b/nginx/edit_sdocs.cgi index 014f44d7f..d2be057bc 100755 --- a/nginx/edit_sdocs.cgi +++ b/nginx/edit_sdocs.cgi @@ -1,5 +1,5 @@ #!/usr/local/bin/perl -# Show document related options for a virtual host +# Show document related options for a server block use strict; use warnings; diff --git a/nginx/edit_server.cgi b/nginx/edit_server.cgi index f891b6cca..8df1bb388 100644 --- a/nginx/edit_server.cgi +++ b/nginx/edit_server.cgi @@ -8,8 +8,9 @@ our (%text, %in, %access); &ReadParse(); my $server; +my $can_create = !defined($access{'create'}) || $access{'create'}; if ($in{'new'}) { - $access{'vhosts'} && &error($text{'server_ecannotcreate'}); + $can_create || &error($text{'server_ecannotcreate'}); &ui_print_header(undef, $text{'server_create'}, ""); $server = { 'name' => 'server', 'members' => [ ] }; @@ -74,7 +75,7 @@ if ($in{'id'}) { print &ui_links_row(\@links); } -if ($access{'edit'}) { +if ($access{'edit'} || ($in{'new'} && $can_create)) { # Show form to edit name, IPs and root if (!$in{'new'}) { print &ui_hr(); diff --git a/nginx/edit_sgzip.cgi b/nginx/edit_sgzip.cgi index f25471b2b..a00bdb48e 100755 --- a/nginx/edit_sgzip.cgi +++ b/nginx/edit_sgzip.cgi @@ -1,5 +1,5 @@ #!/usr/local/bin/perl -# Show virtual host gzip options +# Show server block gzip options use strict; use warnings; diff --git a/nginx/edit_slogs.cgi b/nginx/edit_slogs.cgi index ac95d029e..fa1293c67 100755 --- a/nginx/edit_slogs.cgi +++ b/nginx/edit_slogs.cgi @@ -1,5 +1,5 @@ #!/usr/local/bin/perl -# Show virtual host logging options +# Show server block logging options use strict; use warnings; diff --git a/nginx/edit_sproxy.cgi b/nginx/edit_sproxy.cgi index a08fef3ac..6fa82a3fd 100755 --- a/nginx/edit_sproxy.cgi +++ b/nginx/edit_sproxy.cgi @@ -1,5 +1,5 @@ #!/usr/local/bin/perl -# Show virtual host proxy options +# Show server block proxy options use strict; use warnings; diff --git a/nginx/edit_srewrite.cgi b/nginx/edit_srewrite.cgi index 379ec0375..828469d02 100755 --- a/nginx/edit_srewrite.cgi +++ b/nginx/edit_srewrite.cgi @@ -1,5 +1,5 @@ #!/usr/local/bin/perl -# Show virtual host URL re-write options +# Show server block URL re-write options use strict; use warnings; diff --git a/nginx/edit_ssl.cgi b/nginx/edit_ssl.cgi index 0e6bf3c4c..876f8ddaf 100755 --- a/nginx/edit_ssl.cgi +++ b/nginx/edit_ssl.cgi @@ -1,5 +1,5 @@ #!/usr/local/bin/perl -# Show virtual host SSL options +# Show server block SSL options use strict; use warnings; diff --git a/nginx/edit_sssi.cgi b/nginx/edit_sssi.cgi index 4be1bc561..089e0e731 100755 --- a/nginx/edit_sssi.cgi +++ b/nginx/edit_sssi.cgi @@ -1,5 +1,5 @@ #!/usr/local/bin/perl -# Show virtual host server-side include options +# Show server block server-side include options use strict; use warnings; diff --git a/nginx/help/label.ar.auto.html b/nginx/help/label.ar.auto.html index bfc590b13..e508bf807 100644 --- a/nginx/help/label.ar.auto.html +++ b/nginx/help/label.ar.auto.html @@ -1 +1,7 @@ -
هل تم تمكين موقع Nginx الإلكتروني؟
إذا تم تحديده ، فسيكون لهذا الخادم الافتراضي موقع ويب مزود بواسطة خادم الويب Nginx.