Fix quotation mark bug in copy_site nginx config writing

This commit is contained in:
junyi 2026-07-10 11:05:46 +00:00
parent 422a9404e8
commit 866987d3ed
1 changed files with 13 additions and 1 deletions

View File

@ -46,7 +46,19 @@ namespace :create_site do
update_infos("Setting nginx for #{args.site_name}")
nginx_setting_texts = @site_construct.generate_nginx_text
exec_ssh_command_by_sudo_for_copy(ssh,"touch /etc/nginx/orbit_sites/#{@site_construct.get_site_name}")
exec_ssh_command_by_sudo_for_copy(ssh,"x='#{nginx_setting_texts.gsub(/'{1,3}/,"\"\'\"")}'; echo '#{@password}' | sudo -S sh -c \"echo '$x' > /etc/nginx/orbit_sites/#{@site_construct.get_site_name}\"")
update_infos("Writing via safe stream...")
ssh.open_channel do |channel|
channel.exec("sudo -S sh -c 'cat > /etc/nginx/orbit_sites/#{@site_construct.get_site_name}'") do |ch, success|
ch.on_extended_data do |c, type, data|
if data =~ /password/i
c.send_data("#{@password}\n")
end
end
ch.send_data(nginx_setting_texts)
ch.eof!
end
end
ssh.loop
update_infos("Restarting nginx")
exec_ssh_command_by_sudo_for_copy(ssh,"sudo -p 'sudo password:' service nginx restart")
update_infos("Finish restarting nginx")