ipecache 0.0.9 → 0.0.10

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,15 +1,15 @@
1
1
  ---
2
2
  !binary "U0hBMQ==":
3
3
  metadata.gz: !binary |-
4
- YzEyYzJiZDRmZjk2MzBiODMzMTAwYjI0ZTdjNzc3NTZhOGE2NWVjNA==
4
+ ZTdkNDBiMDBhNWNiMGUxYThkMmUxZmZlOTZlYTM1NTdlZWI2MTI0Yg==
5
5
  data.tar.gz: !binary |-
6
- YTNhYzUyODJmNmFiOGMyMzllNDU3OWFiMTQxODJjZjZjMTJmMTYxYw==
6
+ NzdjZjA2MjY3ZDM0ZmY0Mjk0ZmZlMmRmODNkOWI2YTVhM2ZjYWZmOQ==
7
7
  SHA512:
8
8
  metadata.gz: !binary |-
9
- ZDM5YTA0ZGQ0MTUzOTZjNjkyZWFiNDdmYWEyNmQ0ZjgyZmZkOTQzMTQ0OTZm
10
- OGI2ZGQ3Yjc1YmRmNzZlZDRjYWE4ZDZmOWE4NDFhNDk3ZDk1Y2MzNDdjMGIx
11
- MWRlZWEzNTJmNWQwODE1NzhlODk0ZTBjMjRkOTAzMmJiZjI3NjA=
9
+ ODI5YWYxMzY3OTAyMmFkY2Q3NTgzN2E5OThiZTFjMGIzYmUwZDVkNWIzZTJk
10
+ N2EzMDMwNjgxOWRlNGY5ZjIyODJlMzJiZDBhNDU1OWZkOWQ2NzRhOWMxY2Fm
11
+ Njg5NzAwNjgwNzhkYjQxZmQ2YTM1NGZiOTMxYWQzY2UyNjJkN2U=
12
12
  data.tar.gz: !binary |-
13
- ZmEwYzNlMGZiMjVjZTgwOTZiYzUyYjI2MzIwYTk0ZDA5YmJjMjBmYmNiMjcw
14
- OTdhOWRjM2JmMzE5OTAyNjM3NjhjOTUyMWQ0NmIzNzY0Yjg1MDExOTE3ZTUx
15
- NjM1NWRlMDdiNmVjMGNlMjE2YjhjNGFhOGRlYmFlNWQ3MWYyYzA=
13
+ ZTRlODk2ZmU0ZTNlMmQxZmY1YTg0MTAxNGU4ZGNjMjA0MTIxNjk4MzBjOGMw
14
+ ZGY0NGNjOTU3OTJjZDcyMzU1Mjc0ZmFiN2MyZmE5YTU1ZmViYWNjMmJiMDgw
15
+ MzA0YzU2ZTkyMWMzY2U3MDdhZjRkYWU0MGI0Nzg4MDA4MTEwMzQ=
@@ -0,0 +1,2 @@
1
+ *.gem
2
+ .idea/
@@ -1,9 +1,16 @@
1
- ## 0.0.9 (October 25th, 2014)
1
+ ## 0.0.10 (January 8th, 2015)
2
+
3
+ Bugfixes:
4
+
5
+ - Fix Fastly plugin to work without SSLv3, due to it being deprecated as a result of the POODLE vulnerability (Re-fixing https://github.com/jonlives/ipecache/issues/10)
6
+
7
+
8
+ ## 0.0.9 (December 16th, 2014)
2
9
 
3
10
  Features:
4
11
 
5
- - Fix bug in SWISSTXT plugin (Thanks to https://github.com/niwo)
6
-
12
+ - Cloudfront plugin (Thanks to https://github.com/danieleva)
13
+
7
14
  ## 0.0.8 (August 14th, 2014)
8
15
 
9
16
  Features:
data/README.md CHANGED
@@ -56,6 +56,14 @@ plugins:
56
56
  swisstxt_cdn:
57
57
  api_key: sample_key_e8e55aff-61e3-4588-ab98-4d3ea58be7c8
58
58
  api_secret: xyz5678xyz5678xyz5678xyz5678xyz5678xyz5678xyz5678
59
+ cloudfront:
60
+ access_key_id: yyyyyyyyyyyyyyyy
61
+ secret_access_key: xxxxxxxxxxxxxxxxxx
62
+ region: eu-west-1
63
+ batch_size: 3000
64
+ distributions:
65
+ - distribution1
66
+ - distribution2
59
67
  ```
60
68
 
61
69
  #### atschef
@@ -79,6 +87,8 @@ For more information on how to configure the Local plugin, please read the [plug
79
87
  #### SWISS TXT CDN
80
88
  For more information on how to configure the SWISS TXT CDN plugin, please read the [plugins/SWISS_TXT_CDN.md](plugins/SWISS_TXT_CDN.md) file.
81
89
 
90
+ #### Amazon Cloudfront
91
+ For more information on how to configure the Amazon Cloudfront CDN plugin, please read the [plugins/Cloudfront.md](plugins/Cloudfront.md) file.
82
92
 
83
93
  Ipecache Usage
84
94
  -----------
@@ -2,7 +2,7 @@ $:.push File.expand_path('../lib', __FILE__)
2
2
 
3
3
  Gem::Specification.new do |gem|
4
4
  gem.name = 'ipecache'
5
- gem.version = '0.0.9'
5
+ gem.version = '0.0.10'
6
6
  gem.authors = ["Jon Cowie"]
7
7
  gem.email = 'jonlives@gmail.com'
8
8
  gem.homepage = 'https://github.com/jonlives/ipecache'
@@ -19,4 +19,5 @@ Gem::Specification.new do |gem|
19
19
  gem.add_runtime_dependency 'choice', '>= 0.1.6'
20
20
  gem.add_runtime_dependency 'faraday_middleware', '>= 0.9.0'
21
21
  gem.add_runtime_dependency 'public_suffix', '>= 1.4.2'
22
+ gem.add_runtime_dependency 'aws-sdk-v1', '>= 1.0'
22
23
  end
@@ -0,0 +1,69 @@
1
+ require 'ipecache/plugins/plugin'
2
+
3
+ module Ipecache
4
+ module Plugins
5
+ class CloudFront < Plugin
6
+ name :cloudfront
7
+ hooks :cdn_purge
8
+
9
+ def perform
10
+ safe_require 'aws-sdk-v1'
11
+ safe_require 'uri'
12
+
13
+ access_key_id = config.access_key_id
14
+ secret_access_key = config.secret_access_key
15
+ region = config.region
16
+ distributions = config.distributions
17
+ batch_size = config.batch_size || 3000
18
+
19
+ if access_key_id.nil?
20
+ plugin_puts "Cloudfront access id not specified, Exiting..."
21
+ exit 1
22
+ end
23
+
24
+ if secret_access_key.nil?
25
+ plugin_puts "Cloudfront access key not specified, Exiting..."
26
+ exit 1
27
+ end
28
+
29
+ if distributions.nil?
30
+ plugin_puts "Cloudfront distributions not specified, Exiting..."
31
+ exit 1
32
+ end
33
+
34
+ if region.nil?
35
+ plugin_puts "Cloudfront region not specified, Exiting..."
36
+ exit 1
37
+ end
38
+
39
+ plugin_puts "Beginning URL Purge from CloudFront..."
40
+
41
+ AWS.config(
42
+ :access_key_id => access_key_id,
43
+ :secret_access_key => secret_access_key,
44
+ :region => region
45
+ )
46
+ cf = AWS::CloudFront.new()
47
+
48
+ urls.each_slice(batch_size) do |u|
49
+ paths = []
50
+ u.each { |x| paths << URI.parse(x).path}
51
+ distributions.each do |distri|
52
+ plugin_puts "Purging #{u.length} items from #{distri}"
53
+ result = cf.client.create_invalidation(
54
+ :distribution_id => distri,
55
+ :invalidation_batch => {
56
+ :paths => {
57
+ :quantity => paths.length,
58
+ :items => paths
59
+ },
60
+ :caller_reference => "Ipecache_#{Time.now}"
61
+ }
62
+ )
63
+ plugin_puts "#{result[:id]}: #{result[:status]}, #{result[:invalidation_batch][:paths][:items].length} item(s)"
64
+ end
65
+ end
66
+ end
67
+ end
68
+ end
69
+ end
@@ -22,10 +22,10 @@ module Ipecache
22
22
  urls.each do |u|
23
23
  url = u.chomp
24
24
  plugin_puts ("Purging #{url}")
25
- hostname = URI.parse(url).host
26
- path = URI.parse(url).path
27
25
 
28
- http = Net::HTTP.new("api.fastly.com", "443")
26
+ uri = URI.parse("https://api.fastly.com/purge/#{url}")
27
+
28
+ http = Net::HTTP.new(uri.host, uri.port)
29
29
  http.use_ssl = true
30
30
 
31
31
  # Fix for https://github.com/jonlives/ipecache/issues/10
@@ -33,16 +33,12 @@ module Ipecache
33
33
  # which causes Fastly's API to return a 400
34
34
  # as the hostname is changed to the URL being purged after
35
35
  # SSL handshake.
36
- http.ssl_version = 'SSLv3'
37
36
  http.verify_mode = OpenSSL::SSL::VERIFY_PEER
38
37
 
39
- request = Net::HTTP::Purge.new(path)
40
- request.add_field("X-Forwarded-For", "0.0.0.0")
38
+ request = Net::HTTP::Post.new(uri.request_uri)
41
39
  request.add_field("Accept", "application/json")
42
40
  request.add_field("User-Agent", "Ipecache")
43
- request.add_field("Content-Type", "application/x-www-form-urlencoded")
44
- request.add_field("X-Fastly-Key", api_key)
45
- request.add_field("Host", hostname)
41
+ request.add_field("Fastly-Key", api_key)
46
42
 
47
43
  response = http.request(request)
48
44
 
@@ -0,0 +1,46 @@
1
+ CloudFront
2
+ ==========
3
+ Purge URLs from the CloudFront CDN.
4
+
5
+ Hooks
6
+ -----
7
+ - `cdn_purge`
8
+
9
+ Configuration
10
+ -------------
11
+ ```yaml
12
+ plugins:
13
+ cloudfront:
14
+ access_key_id: yyyyyyyyyyyyyyyy
15
+ secret_access_key: xxxxxxxxxxxxxxxxxx
16
+ region: eu-west-1
17
+ batch_size: 3000
18
+ distributions:
19
+ - distribution1
20
+ - distribution2
21
+ ```
22
+
23
+ #### access_key_id
24
+ This is your aws access id
25
+
26
+ - Type: `String`
27
+
28
+ #### secret_access_key
29
+ This is your aws access key
30
+
31
+ - Type: `String`
32
+
33
+ #### distributions
34
+ This is a list of CF distributions
35
+
36
+ - Type `Array`
37
+
38
+ ### region
39
+ This is the AWS region of your CF distributions
40
+
41
+ - Type `String`
42
+
43
+ ### batch_size
44
+ This is the number of items to be included for each invalidation request, default to 3000 (aws max limit)
45
+
46
+ - Type `Integer`
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: ipecache
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.9
4
+ version: 0.0.10
5
5
  platform: ruby
6
6
  authors:
7
7
  - Jon Cowie
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2014-10-25 00:00:00.000000000 Z
11
+ date: 2015-01-08 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: app_conf
@@ -66,6 +66,20 @@ dependencies:
66
66
  - - ! '>='
67
67
  - !ruby/object:Gem::Version
68
68
  version: 1.4.2
69
+ - !ruby/object:Gem::Dependency
70
+ name: aws-sdk-v1
71
+ requirement: !ruby/object:Gem::Requirement
72
+ requirements:
73
+ - - ! '>='
74
+ - !ruby/object:Gem::Version
75
+ version: '1.0'
76
+ type: :runtime
77
+ prerelease: false
78
+ version_requirements: !ruby/object:Gem::Requirement
79
+ requirements:
80
+ - - ! '>='
81
+ - !ruby/object:Gem::Version
82
+ version: '1.0'
69
83
  description: An extensible tool for purging urls from caches and CDNs
70
84
  email: jonlives@gmail.com
71
85
  executables:
@@ -73,6 +87,7 @@ executables:
73
87
  extensions: []
74
88
  extra_rdoc_files: []
75
89
  files:
90
+ - .gitignore
76
91
  - CHANGELOG.md
77
92
  - Gemfile
78
93
  - Gemfile.lock
@@ -86,6 +101,7 @@ files:
86
101
  - lib/ipecache/plugins/akamai.rb
87
102
  - lib/ipecache/plugins/ats_chef.rb
88
103
  - lib/ipecache/plugins/cloudflare.rb
104
+ - lib/ipecache/plugins/cloudfront.rb
89
105
  - lib/ipecache/plugins/edgecast.rb
90
106
  - lib/ipecache/plugins/fastly.rb
91
107
  - lib/ipecache/plugins/local.rb
@@ -95,6 +111,7 @@ files:
95
111
  - plugins/ATSChef.md
96
112
  - plugins/Akamai.md
97
113
  - plugins/CloudFlare.md
114
+ - plugins/Cloudfront.md
98
115
  - plugins/Edgecast.md
99
116
  - plugins/Fastly.md
100
117
  - plugins/Local.md