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