diff --git a/lib/tasks/copy_site.rake b/lib/tasks/copy_site.rake index 9f87057..e2b70d7 100644 --- a/lib/tasks/copy_site.rake +++ b/lib/tasks/copy_site.rake @@ -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")