diff --git a/app/controllers/admin/site_panel_controller.rb b/app/controllers/admin/site_panel_controller.rb index 4536491..597efb3 100644 --- a/app/controllers/admin/site_panel_controller.rb +++ b/app/controllers/admin/site_panel_controller.rb @@ -327,22 +327,23 @@ class Admin::SitePanelController < OrbitAdminController render :json =>{"success"=>true} end def edit_site - if params[:type] == 'delete' + case params[:type] + when 'delete' Thread.new do system("bundle exec rake create_site:delete_site[#{params[:id]}]") end - elsif params[:type] == 'close' + when 'close' Thread.new do Rake::Task['exec_commands:exec_commands'].execute(Rake::TaskArguments.new([:site_construct_id,:commands,:type], [params[:id], '', 'close_site'])) end - elsif params[:type] == 'open' || params[:type] == 'restart' + when 'open', 'restart' Thread.new do Rake::Task['exec_commands:exec_commands'].execute(Rake::TaskArguments.new([:site_construct_id,:commands,:type,:server_name,:rails_env], [params[:id], '', 'open_site', '', params[:env]])) end - elsif params[:type] == 'detail' + when 'detail' @site_construct = SiteConstruct.find(params[:id]) render 'see_detail_for_created_site' and return - elsif params[:type] == 'change_server_name' + when 'change_server_name' site_construct = SiteConstruct.find(params[:id]) site_construct.update_attributes(update_site_params) site_construct.update(:domain_name=>params[:site_construct][:domain_name]) @@ -352,14 +353,14 @@ class Admin::SitePanelController < OrbitAdminController Bundler.with_clean_env{system(cmd)} end redirect_to admin_site_panel_edit_site_path(:id=>params[:id],:type=>'detail',:status=>'changing') and return - elsif params[:type] == 'delete_from_list' + when 'delete_from_list' SiteConstruct.find(params[:id]).destroy if Is_Rails5 redirect_back(fallback_location: { action: "sites_list"}) else redirect_to :back and return end - elsif params[:type] == 'select_cert' + when 'select_cert' is_certbot = true if params[:server_names] is_certbot = false @@ -386,7 +387,7 @@ class Admin::SitePanelController < OrbitAdminController system("bundle exec rake create_site:change_site_cert[#{params[:id]},#{is_certbot},#{params[:is_server]}]") end end - elsif params[:type] == 'apply_change_users' + when 'apply_change_users' Thread.new do exec_commands_args = {} site_server = nil 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 df8734b..e3e880e 100644 --- a/app/views/admin/site_panel/_server_manager_index.html.erb +++ b/app/views/admin/site_panel/_server_manager_index.html.erb @@ -169,7 +169,9 @@ if(need_close_info && status != 'execing'){ close_info = true; window.setTimeout(function(){ - window.location.reload(); + if(window.confirm("<%=t('client_management.finished_reload_page')%>")){ + window.location.reload(); + } },1000); }else{ if(status == 'execing'){ @@ -204,10 +206,17 @@ open: function(){ $(this).parent().css("top",$(document).height() - $(window).height() + "px"); }, - close: function(){close_info = true;}, + close: function(){ + close_info = true; + need_close_info = false; + }, buttons: { - "<%= t('client_management.confirm') %>": function(){$( this ).dialog( "close" );close_info = true;}, - "stop update": function(){close_info = true;} + "<%= t('client_management.confirm') %>": function(){ + $( this ).dialog( "close" ); + }, + "stop update": function(){ + close_info = true; + } } }); } 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 87f0681..154e601 100644 --- a/app/views/admin/site_panel/_sites_list_table.html.erb +++ b/app/views/admin/site_panel/_sites_list_table.html.erb @@ -146,10 +146,12 @@ if(current_location_search == ''){ current_location_search = '?'; } - if(new_params_text == current_location_search){ - window.location.reload(); - }else{ - window.location.search = new_params_text; + if(window.confirm("<%=t('client_management.finished_reload_page')%>")){ + if(new_params_text == current_location_search){ + window.location.reload(); + }else{ + window.location.search = new_params_text; + } } }, 1000); } @@ -187,10 +189,17 @@ maxHeight: 400, modal: true, width: '80%', - close: function(){$( this ).dialog( "close" );close_info = true;}, + close: function(){ + close_info = true; + need_close_info = false; + }, buttons: { - "<%= t('client_management.confirm') %>": function(){$( this ).dialog( "close" );close_info = true;}, - "stop update": function(){close_info = true;} + "<%= t('client_management.confirm') %>": function(){ + $( this ).dialog( "close" ); + }, + "stop update": function(){ + close_info = true; + } } }); } diff --git a/config/locales/en.yml b/config/locales/en.yml index 2cec32f..f1d1ea1 100644 --- a/config/locales/en.yml +++ b/config/locales/en.yml @@ -7,6 +7,7 @@ en: upload_cert: Upload Cert cert_management: Cert Management client_management: + finished_reload_page: "Finished!\\nReload Page!" apply_change: "Apply Change" are_you_sure_to_delete: "Are you sure to delete?" user_name: "User Account" diff --git a/config/locales/zh_tw.yml b/config/locales/zh_tw.yml index d2d1d93..dc886b4 100644 --- a/config/locales/zh_tw.yml +++ b/config/locales/zh_tw.yml @@ -7,6 +7,7 @@ zh_tw: upload_cert: 上傳憑證 cert_management: 憑證管理 client_management: + finished_reload_page: "已完成!\\n重新載入頁面!" apply_change: "設定生效" are_you_sure_to_delete: "您確定要刪除嗎?" user_name: "使用者帳號" diff --git a/lib/tasks/exec_command.rake b/lib/tasks/exec_command.rake index 42f969f..296dc0b 100644 --- a/lib/tasks/exec_command.rake +++ b/lib/tasks/exec_command.rake @@ -188,11 +188,6 @@ namespace :exec_commands do end def update_infos_for_exec(info,update_last=false,update_array=false) return if @site_construct.nil? - if(update_array) - info.map!{|i| i.encode!("UTF-8", :invalid => :replace, :undef => :replace, :replace => '')} - else - info.encode!("UTF-8", :invalid => :replace, :undef => :replace, :replace => '') - end if update_last && !@site_construct.infos.empty? @site_construct.infos[-1] += info.to_s else @@ -238,12 +233,16 @@ namespace :exec_commands do channel.exec("LANG=en.UTF8 #{command}") do |ch, success| abort "could not execute command: #{command}" unless success channel.on_data do |ch, data| - if data.to_s.include?("sudo password:") || data.to_s.include?("Password:") + data_str = data.to_s + data_str.encode!("UTF-8", :invalid => :replace, :undef => :replace, :replace => '') + if data_str.include?("sudo password:") || data_str.include?("Password:") channel.send_data "#{@password}\n" else - print "#{data}" - data_str = data.to_s - if data.include?("\n") || outputs.empty? + print data_str unless @no_stdout + data_str.gsub!("\r\n", "\n") + data_str.sub!(/\r$/, '') + next if data_str.length == 0 + if data_str.include?("\n") || outputs.empty? output_lines = data_str.split("\n") first_output = output_lines[0] if first_output