From a27f26bfc1df117bfab7fc816c0639eaccbe47e9 Mon Sep 17 00:00:00 2001 From: bohung Date: Sun, 16 Oct 2022 16:43:14 +0800 Subject: [PATCH] Fix bug, --- app/controllers/admin/site_panel_controller.rb | 6 ++++-- lib/tasks/exec_command.rake | 8 +++++++- 2 files changed, 11 insertions(+), 3 deletions(-) diff --git a/app/controllers/admin/site_panel_controller.rb b/app/controllers/admin/site_panel_controller.rb index d535dde..cc3ca72 100644 --- a/app/controllers/admin/site_panel_controller.rb +++ b/app/controllers/admin/site_panel_controller.rb @@ -338,11 +338,13 @@ class Admin::SitePanelController < OrbitAdminController idx = cmds.index('{{create_super_manager}}') cmds[idx] = create_super_manager_cmd(params[:account],params[:password]) end + exec_commands_args = {} if params[:id].blank? && !params[:server_names].blank? - Rake::Task['exec_commands:exec_commands'].execute(Rake::TaskArguments.new([:commands, :type, :server_name], [cmds.join('////'), 'exec_all', params[:server_names].join('////')])) + exec_commands_args = {:commands=>cmds.join('////'), :type=>'exec_all', :server_name=>params[:server_names].join('////')} else - Rake::Task['exec_commands:exec_commands'].execute(Rake::TaskArguments.new([:site_construct_id, :commands, :type], [params[:id], cmds.join('////'), 'exec_commands'])) + exec_commands_args = {:site_construct_id=>params[:id], :commands=>cmds.join('////'), :type=>'exec_commands'} end + system("bundle exec rake exec_commands:exec_commands[\"#{Base64.strict_encode64(exec_commands_args.to_json)}\"]") end end render :json =>{"success"=>true} diff --git a/lib/tasks/exec_command.rake b/lib/tasks/exec_command.rake index f0d10e4..5cb52b0 100644 --- a/lib/tasks/exec_command.rake +++ b/lib/tasks/exec_command.rake @@ -1,8 +1,14 @@ require 'net/ssh' require 'pathname' +require 'json' +require 'base64' namespace :exec_commands do desc "Exec commands Script" - task :exec_commands,[:site_construct_id,:commands,:type,:server_name,:rails_env] => :environment do |task,args| + task :exec_commands,[:base64_args,:site_construct_id,:commands,:type,:server_name,:rails_env] => :environment do |task,args| + if args.base64_args.present? + tmp = JSON.parse(Base64.decode64(args.base64_args)) rescue {} + args = Rake::TaskArguments.new(tmp.keys, tmp.values) + end @type = args.type if !args.site_construct_id.blank? @site_construct = SiteConstruct.find(args.site_construct_id)