class Ukaz60All_2

Attributes

belgim_connector[RW]
belgim_login[RW]
belgim_password[RW]
belgim_url[RW]
forti_connector[RW]
staros_connector[RW]
telegram_messanger[RW]
ukaz60_add_func[RW]

Public Class Methods

new(telegram_api_url, telegram_chat_id, belgim_login, belgim_password, belgim_url, ansible_tmp_folder, local_tmp_directory, ansible_ssh_user, ansible_ssh_password, ansible_host, url_backup_dir, staros_login, staros_password, ukaz60_http_groups, ukaz60_https_groups, staros_hosts ) click to toggle source
# File lib/imperituroard/projects/ukaz60.rb, line 20
def initialize(telegram_api_url,
               telegram_chat_id,
               belgim_login,
               belgim_password,
               belgim_url,
               ansible_tmp_folder,
               local_tmp_directory,
               ansible_ssh_user,
               ansible_ssh_password,
               ansible_host,
               url_backup_dir,
               staros_login,
               staros_password,
               ukaz60_http_groups,
               ukaz60_https_groups,
               staros_hosts

)
  @telegram_messanger = Telegram_2.new(telegram_api_url, telegram_chat_id)
  @belgim_login = belgim_login
  @belgim_password = belgim_password
  @belgim_url = belgim_url
  @ukaz60_add_func = AddFuncUkaz60_2.new
  @belgim_connector = Belgim_2.new(telegram_api_url, telegram_chat_id, belgim_login, belgim_password, belgim_url)
  @forti_connector = FortiUkaz60_2.new(ansible_tmp_folder, local_tmp_directory, ansible_ssh_user, ansible_ssh_password, ansible_host, url_backup_dir)
  @staros_connector = Ukaz60Staros_2.new(staros_login, staros_password, ukaz60_http_groups, ukaz60_https_groups, staros_hosts)

end

Public Instance Methods

forti_process(get_belgim_data) click to toggle source
# File lib/imperituroard/projects/ukaz60.rb, line 49
def forti_process(get_belgim_data)
  forti_answer = {}
  begin
    format_for_forti = forti_connector.prepare_url_config_fortigate(get_belgim_data)
    if format_for_forti[:code] == 200
      url_uploading = forti_connector.upload_url(format_for_forti[:body][:to_fortigate])
      if url_uploading[:code] == 200
        #update_fortigate_ansible = forti_connector.update_weburl_fortigate
        update_fortigate_ansible = forti_connector.update_weburl_fortimanager
        if update_fortigate_ansible[:code] == 200
          forti_answer = {:code => 200, :result => "Fortigate processed", :data => update_fortigate_ansible[:body][:body], :num_uploaded_to_forti => format_for_forti[:body][:num_list]}
        else
          forti_answer = {:code => update_fortigate_ansible[:code], :result => update_fortigate_ansible[:result]}
        end
        forti_connector.clean_tmp_folders
      else
        forti_answer = {:code => 401, :result => "Failed for uploading data to ansible server"}
      end
    else
      forti_answer = {:code => 400, :result => "Error while processing data"}
    end
  rescue
    forti_answer = {:code => 507, :result => "Unknown error with Forti"}
  end
  forti_answer
end
no_pasaran() click to toggle source
# File lib/imperituroard/projects/ukaz60.rb, line 107
def no_pasaran

  answer_output = {}
  forti_answer = {}
  staros_answer = {}

  begin
    get_belgim_data = belgim_connector.belgim_ukaz60_get
    #p get_belgim_data

    if get_belgim_data[:code] == 200

      thr_forti = Thread.new do
        forti_answer = self.forti_process(get_belgim_data)
      end

      thr_staros = Thread.new do
        staros_answer = staros_process(get_belgim_data)
      end

      thr_staros.join
      thr_forti.join

      answer_output = {:code => 200, :result => "No pasaran", :fortigate => forti_answer, :staros => staros_answer, :info_belgim => get_belgim_data[:number]}
    else
      answer_output = {:code => 404, :result => "Failed to receive data from Belgim"}
    end

  rescue
    answer_output = {:code => 507, :result => "no_pasaran: Unknown SDK error"}
  end
  telegram_messanger.telegram_message(JSON.pretty_generate(answer_output))
  answer_output
end
staros_process(get_belgim_data) click to toggle source
# File lib/imperituroard/projects/ukaz60.rb, line 76
def staros_process(get_belgim_data)

  output_starprocess = {}

  begin
    #get data from staros
    staros_blocks_current = staros_connector.get_all_staros_ukaz60

    if staros_blocks_current[:code] == 200
      #compare data with belgim
      answ = ukaz60_add_func.staros_compare_http(staros_blocks_current, get_belgim_data)

      p answ

      if answ[:code] == 200
        #output_starprocess = {:code => 200, :result => "Staros processed", :data => {:block_me => answ[:body][:for_block][:notblocked_stat], :unblock_me =>answ[:body][:for_unblock][:for_unblock_stat]}}
        output_starprocess = ukaz60_add_func.format_star_processed_answ(answ)[:body][:to_message]
      else
        output_starprocess = answ
      end

    else
      output_starprocess = staros_blocks_current
    end
  rescue
    output_starprocess = {:code => 507, :result => "staros_process: Something wrong"}
  end

  output_starprocess
end