From 4f9cba0b3378be57299de4a9fe8a986430e5a5ce Mon Sep 17 00:00:00 2001 From: Ilia Rostovtsev Date: Tue, 1 Feb 2022 22:44:00 +0300 Subject: [PATCH 1/2] Fix to drop beloved line separators for Apache config formatter --- apache/apache-lib.pl | 56 -------------------------------------------- 1 file changed, 56 deletions(-) diff --git a/apache/apache-lib.pl b/apache/apache-lib.pl index 9b8ccf671..2863b90b2 100755 --- a/apache/apache-lib.pl +++ b/apache/apache-lib.pl @@ -2168,23 +2168,6 @@ foreach my $l (@{$conf_lref}) { if ($conf_block_opening == $conf_block_closing) { my $conf_lvl = 0; - my $conf_prev_line; - my $conf_curr_line; - my $conf_virthost; - my @confs_separate = - ( - 'Protocols', - 'SuexecUserGroup', - 'ServerName', - 'ScriptAlias', - 'DocumentRoot', - 'ErrorLog', - 'DirectoryIndex', - 'Alias', - 'RewriteEngine', - 'Fcgid', - 'SSL', - ); foreach my $l (@{$conf_lref}) { my $indent_current = $indent x $conf_lvl; @@ -2194,59 +2177,20 @@ if ($conf_block_opening == $conf_block_closing) { # Indent up next line if a new block if ($l =~ /(<[a-zA-Z]+).*>/) { $conf_lvl++; - if ($l =~ /(/) { - $conf_virthost++; - } } # Indent down next line if a closing block if ($l =~ /(<\/[a-zA-Z]+).*>/) { $conf_lvl--; - if ($l =~ /(<\/VirtualHost).*>/) { - $conf_virthost--; - } - # Change current indent right now as it is a closing block $indent_current = $indent x $conf_lvl; } } - # Store previous and current lines - $conf_prev_line = &trim($conf_curr_line); - $conf_curr_line = &trim($l); - # Replace beginning spaces with needed indent $l =~ s/^\s*/$indent_current/ if($l); - - - # Check if current line needs to be prepended - # with a new line for better readability - if (!$config{'format_config_lines'}) { - # Allow new line insertion only inside of VirtualHost block - if ($conf_virthost) { - # If current line is not part of a commented block - if ($conf_curr_line !~ /^\s*#/) { - # If previous line is not already an empty line - if (length($conf_prev_line)) { - # If the previous line was something - # we want to take a break before and after match - if (grep {$conf_curr_line =~ /^$_/} @confs_separate && - grep {$conf_prev_line !~ /^$_/} @confs_separate) { - # If not the first directive in VirtualHost - if($conf_prev_line !~ /(^/) { - $l = "\n$l" - } - } - # If current is opening block - elsif ($conf_curr_line =~ /(^<[a-zA-Z]+).*>/) { - $l = "\n$l"; - } - } - } - } - } } } } From 323e789c16384d2e1644fee9df808f2d4333953c Mon Sep 17 00:00:00 2001 From: Ilia Rostovtsev Date: Wed, 2 Feb 2022 01:08:27 +0300 Subject: [PATCH 2/2] Fix to `quotemeta` when generating certs https://github.com/virtualmin/virtualmin-gpl/issues/363#issuecomment-1026438307 --- usermin/newkey.cgi | 7 ++++--- webmin/webmin-lib.pl | 4 ++-- 2 files changed, 6 insertions(+), 5 deletions(-) diff --git a/usermin/newkey.cgi b/usermin/newkey.cgi index 2fda08420..35c8fac5c 100755 --- a/usermin/newkey.cgi +++ b/usermin/newkey.cgi @@ -32,7 +32,7 @@ $ctemp = &transname(); $ktemp = &transname(); $outtemp = &transname(); $size = $in{'size_def'} ? $default_key_size : $in{'size'}; -&open_execute_command(CA, "$cmd req -newkey rsa:$size -x509 -nodes -out $ctemp -keyout $ktemp -days $in{'days'} >$outtemp 2>&1", 0); +&open_execute_command(CA, "$cmd req -newkey rsa:$size -x509 -nodes -out ".quotemeta($ctemp)." -keyout ".quotemeta($ktemp)." -days $in{'days'} >".quotemeta($outtemp)." 2>&1", 0); print CA ($in{'countryName'} || "."),"\n"; print CA ($in{'stateOrProvinceName'} || "."),"\n"; print CA ($in{'cityName'} || "."),"\n"; @@ -42,7 +42,8 @@ print CA ($in{'commonName_def'} ? "*" : $in{'commonName'}),"\n"; print CA ($in{'emailAddress'} || "."),"\n"; close(CA); $rv = $?; -$out = `cat $outtemp`; +$qouttemp = quotemeta($outtemp); +$out = `cat $qouttemp`; &unlink_file($outtemp); if (!-r $ctemp || !-r $ktemp || $?) { print "

$text{'newkey_essl'}
\n"; @@ -51,7 +52,7 @@ if (!-r $ctemp || !-r $ktemp || $?) { exit; } &lock_file($in{'newfile'}); -&execute_command("cat $ctemp $ktemp 2>&1 >'$in{'newfile'}'", undef, \$catout); +&execute_command("cat ".quotemeta($ctemp)." ".quotemeta($ktemp)." 2>&1 >'$in{'newfile'}'", undef, \$catout); &unlink_file($ctemp); &unlink_file($ktemp); if ($catout || $?) { diff --git a/webmin/webmin-lib.pl b/webmin/webmin-lib.pl index 7a6648391..960f7486f 100755 --- a/webmin/webmin-lib.pl +++ b/webmin/webmin-lib.pl @@ -2021,9 +2021,9 @@ my $subject = &build_ssl_subject($in{'countryName'}, $in{'emailAddress'}); my $conf = &build_ssl_config(\@cns); my $out = &backquote_logged( - "$cmd req -newkey rsa:$size -x509 -sha256 -nodes -out $ctemp -keyout $ktemp ". + "$cmd req -newkey rsa:$size -x509 -sha256 -nodes -out ".quotemeta($ctemp)." -keyout ".quotemeta($ktemp)." ". "-days ".quotemeta($in{'days'})." -subj ".quotemeta($subject)." ". - "-config $conf -reqexts v3_req -utf8 2>&1"); + "-config ".quotemeta($conf)." -reqexts v3_req -utf8 2>&1"); if (!-r $ctemp || !-r $ktemp || $?) { return $text{'newkey_essl'}."
"."

".&html_escape($out)."
"; }