Você não pode selecionar mais de 25 tópicos Os tópicos devem começar com uma letra ou um número, podem incluir traços ('-') e podem ter até 35 caracteres.

check_controller.rb 1.4KB

4 anos atrás
4 anos atrás
2 anos atrás
2 anos atrás
3 anos atrás
1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859
  1. class CheckController < ApplicationController
  2. before_action :check_host, except: %i(index)
  3. helper_method :tls_type, :type
  4. def show
  5. enqueue_host unless @analysis
  6. @host = SimpleIDN.to_unicode @host
  7. respond_to do |format|
  8. format.html do
  9. return render :processing if @analysis.pending
  10. @result = @analysis.result.collect { |r| RecursiveOpenStruct.new r, recurse_over_arrays: true }
  11. end
  12. format.json { render json: @analysis }
  13. end
  14. end
  15. def refresh
  16. unless @result.pending
  17. if Rails.env == 'production'
  18. refresh_allowed = @result.updated_at + Rails.configuration.refresh_delay
  19. if Time.now < refresh_allowed
  20. flash[:warning] = "Merci d’attendre au moins #{l refresh_allowed} pour rafraîchir"
  21. return redirect_to action: :show, id: @host
  22. end
  23. end
  24. enqueue_host
  25. end
  26. redirect_to action: :show
  27. end
  28. protected
  29. def default_args
  30. end
  31. def enqueue_host
  32. @analysis = Analysis.pending! self.type, @host, @args
  33. self.worker.perform_async @analysis.host, *@analysis.args
  34. end
  35. def check_host
  36. @id = params[:id]
  37. if @id.end_with? '.json'
  38. @id = @id.sub /\.json$/, ''
  39. request.format = :json
  40. end
  41. @host, @args = @id.split ':'
  42. @host = SimpleIDN.to_ascii @host.downcase
  43. if /[^a-zA-Z0-9.-]/ =~ @host
  44. flash[:danger] = "Hôte #{@host} invalide"
  45. redirect_to action: :index
  46. return false
  47. end
  48. @args ||= default_args
  49. @analysis = Analysis[self.type, @host, @args]
  50. end
  51. end