From 644aa05ee48273213d42ed236f0ca390f40b684a Mon Sep 17 00:00:00 2001 From: bohung Date: Sun, 16 Oct 2022 15:13:12 +0800 Subject: [PATCH] Fix bug. --- app/models/site_construct.rb | 21 +++++++++++++--- .../site_panel/_server_manager_index.html.erb | 17 +++++++------ .../site_panel/_sites_list_table.html.erb | 7 ++++-- lib/tasks/change_site_cert.rake | 24 +++++++++++++------ 4 files changed, 50 insertions(+), 19 deletions(-) diff --git a/app/models/site_construct.rb b/app/models/site_construct.rb index eb89c1e..781e7f3 100644 --- a/app/models/site_construct.rb +++ b/app/models/site_construct.rb @@ -120,7 +120,14 @@ class SiteConstruct domain_name_str = ((domain_name_str.split(/\s+/) - [default_domain]) + [default_domain]).join(" ") end if old_server_block.present? - new_server_block = old_server_block.gsub(/(listen\s+)[^;]+/){|ff| "#{$1}#{port_text}"} + new_server_block = old_server_block.gsub('\n',"\n").gsub(/(listen\s+)[^;]+/){|ff| "#{$1}#{port_text}"} + if port_text == "80" + new_server_block = new_server_block.gsub(/^.*#\s*managed by Certbot(\n|$)/,'') + else + if self.site_cert && !(self.site_cert.is_certbot) + new_server_block = new_server_block.gsub(/#\s*managed by Certbot/,'') + end + end new_server_block = new_server_block.gsub(/(server_name\s+)[^;]+/m){|ff| "#{$1}#{domain_name_str}"} new_server_block = new_server_block.gsub(/\s*ssl_certificate[^;]+;/,'') level_2_block = parse_nginx_text_to_server_blocks(old_server_block,true,2) @@ -199,11 +206,19 @@ class SiteConstruct end def cert_file_remote_store_path site_cert = self.site_cert - "#{self.full_site_path}/ssl_certs/#{site_cert.id}/#{site_cert["cert_file"]}" + if site_cert.source_paths.present? && site_cert.source_paths.count == 2 + site_cert.source_paths[0] + else + "#{self.full_site_path}/ssl_certs/#{site_cert.id}/#{site_cert["cert_file"]}" + end end def private_key_remote_store_path site_cert = self.site_cert - "#{self.full_site_path}/ssl_certs/#{site_cert.id}/#{site_cert["private_key"]}" + if site_cert.source_paths.present? && site_cert.source_paths.count == 2 + site_cert.source_paths[1] + else + "#{self.full_site_path}/ssl_certs/#{site_cert.id}/#{site_cert["private_key"]}" + end end def get_path return self.path.to_s.gsub(" ","\\ ") diff --git a/app/views/admin/site_panel/_server_manager_index.html.erb b/app/views/admin/site_panel/_server_manager_index.html.erb index a153424..b1a34b9 100644 --- a/app/views/admin/site_panel/_server_manager_index.html.erb +++ b/app/views/admin/site_panel/_server_manager_index.html.erb @@ -20,6 +20,9 @@ ul.no_list_style li label { font-weight: bold; } + #info_texts{ + white-space: pre; + } @@ -63,7 +66,7 @@ <%=t("client_management.update_nginx_settings")%> <% end %> "><%=t(:edit)%> - ';}"><%=t(:remove)%> + ';}"><%=t(:remove)%>"><%= t('client_management.see_sites') %>Detect sites @@ -100,10 +103,10 @@ }) built_in_commands += "" $("#main-wrap").before("
"+ - "
"+ - built_in_commands+ - "

"+""+ - "
"); + "
"+ + built_in_commands+ + "

"+""+ + ""); }; $( "#exec-commands-dialog-confirm" ).dialog({ resizable: true, @@ -151,7 +154,7 @@ var infos = request.responseJSON.infos; var status = request.responseJSON.status; if($("#info_texts").length == 0) - return infos.join("
") + return infos.join("\n") else{ if(status == "") var status_text = "not yet create"; @@ -160,7 +163,7 @@ if(!status_text){ status_text = ""+status+""; } - $("#info_texts").html(status_text+"
"+infos.join("
")); + $("#info_texts").html(status_text+"
"+infos.join("\n")); msg_end.scrollIntoView(); timeout_id = window.setTimeout(see_infos(key),1000); } diff --git a/app/views/admin/site_panel/_sites_list_table.html.erb b/app/views/admin/site_panel/_sites_list_table.html.erb index cc7ea94..95addfc 100644 --- a/app/views/admin/site_panel/_sites_list_table.html.erb +++ b/app/views/admin/site_panel/_sites_list_table.html.erb @@ -5,6 +5,9 @@ ul.no_list_style li label { font-weight: bold; } + #info_texts{ + white-space: pre; + }
@@ -106,9 +109,9 @@ var infos = request.responseJSON.infos; var status = request.responseJSON.status; if($("#info_texts").length == 0) - return infos.join("
") + return infos.join("\n") else{ - $("#info_texts").html(infos.join("
")); + $("#info_texts").html(infos.join("\n")); if(status == "") var status_text = "not yet create"; else diff --git a/lib/tasks/change_site_cert.rake b/lib/tasks/change_site_cert.rake index 147890c..3a6fab6 100644 --- a/lib/tasks/change_site_cert.rake +++ b/lib/tasks/change_site_cert.rake @@ -105,13 +105,23 @@ namespace :create_site do auto_update_infos("Installing Cert on #{valid_domain_names.join(" , ")}") cert_file_content = [(@site_cert.cert_file.file.read.strip rescue ""),(@site_cert.ca_bundle.file.read.strip rescue "")].join("\n").strip private_key_content = @site_cert.private_key.file.read - cert_file_store_path = @site_construct.cert_file_remote_store_path - exec_ssh_command_by_sudo(ssh,"mkdir -p #{File.dirname(cert_file_store_path)}") - exec_command_by_user(ssh,"x='#{cert_file_content}'; echo '#{@password}' | sudo -S sh -c \"echo '$x' > #{cert_file_store_path}\"") - private_key_store_path = @site_construct.private_key_remote_store_path - exec_ssh_command_by_sudo(ssh,"mkdir -p #{File.dirname(private_key_store_path)}") - exec_command_by_user(ssh,"x='#{private_key_content}'; echo '#{@password}' | sudo -S sh -c \"echo '$x' > #{private_key_store_path}\"") - auto_update_infos("Finish copy.") + if is_certbot && @site_cert.source_paths.present? && @site_cert.source_paths.count == 2 + source_paths = @site_cert.source_paths + is_exist = exec_command_by_user(ssh, "echo '#{@password}'|sudo -S bash -c 'if [ -e \"#{source_paths[0]}\" ] && [ -e \"#{source_paths[1]}\" ] ; then echo 1; else echo 0; fi'").strip() == "1" + else + is_exist = false + end + if is_exist + auto_update_infos("Cert already exist.") + else + cert_file_store_path = @site_construct.cert_file_remote_store_path + exec_ssh_command_by_sudo(ssh,"mkdir -p #{File.dirname(cert_file_store_path)}") + exec_command_by_user(ssh,"x='#{cert_file_content}'; echo '#{@password}' | sudo -S sh -c \"echo '$x' > #{cert_file_store_path}\"") + private_key_store_path = @site_construct.private_key_remote_store_path + exec_ssh_command_by_sudo(ssh,"mkdir -p #{File.dirname(private_key_store_path)}") + exec_command_by_user(ssh,"x='#{private_key_content}'; echo '#{@password}' | sudo -S sh -c \"echo '$x' > #{private_key_store_path}\"") + auto_update_infos("Finish copy.") + end auto_update_infos("Setting Cert...") nginx_file_content = exec_command_by_user(ssh,"cat #{@site_construct.nginx_file}") all_ports = (@site_construct.port + ["443"]).uniq