Class: Ipecache::Plugins::CloudFlare
- Defined in:
- lib/ipecache/plugins/cloudflare.rb
Instance Method Summary collapse
Methods inherited from Plugin
#continue_on_error, #enabled?, hook, hooks, #initialize, #log_file, name, #name, #plugin_puts, #plugin_puts_error, #quiet_mode, #urls
Constructor Details
This class inherits a constructor from Ipecache::Plugins::Plugin
Instance Method Details
#perform ⇒ Object
9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 |
# File 'lib/ipecache/plugins/cloudflare.rb', line 9 def perform safe_require 'uri' safe_require 'faraday_middleware' safe_require 'json' safe_require 'public_suffix' login = config.login api_key = config.api_key if login.nil? plugin_puts "CloudFlare login not specified, Exiting..." exit 1 end if api_key.nil? plugin_puts "CloudFlare API key not specified, Exiting..." exit 1 end plugin_puts "Beginning URL Purge from CloudFlare..." urls.each do |u| url = u.chomp plugin_puts "Purging #{url}" uri = URI.parse(url) zone = PublicSuffix.parse(uri.host).domain connection = Faraday::Connection.new( {:url => "https://www.cloudflare.com", :headers => { :accept => 'application/json', :user_agent => 'Ipecache' }, :ssl => { :verify => true } }) do |builder| builder.request :url_encoded builder.adapter Faraday.default_adapter end response = connection.get("/api_json.html", { :act => 'zone_file_purge', :tkn => api_key, :email => login, :z => zone, :url => url }) response_json = JSON.parse(response.body) response_result = response_json['result'] if response_result != 'success' plugin_puts_error(url,"Purge failed!") plugin_puts response.body exit 1 unless continue_on_error else plugin_puts "Purge successful!" end end end |