fluent-plugin-mobile-carrier 0.0.2 → 0.0.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 20be1c78bf84e8b363f212e110a376e2bca311b2
4
- data.tar.gz: 2d75667be13afef1b4a956eba1d0e6380db8f972
3
+ metadata.gz: 37f66f0f03c0ed29abcf31b9a6c5174c529354ba
4
+ data.tar.gz: 5ad53ba37d32da1998c7a12178091ff73ad1fc02
5
5
  SHA512:
6
- metadata.gz: 85d4a6a0d9a1d1677b6092fabb5032b78fa76151db1df89e481303a8b8d3427a3100e9e40484ae1b51080de2242b24f20179e3b5bb8e30c61e7161d521b9325c
7
- data.tar.gz: 56e529ba4933c5d94820b94ee1306000c537921d21e5542b9033c81d1c158cb4f996f4ad55d241d5610361fb948f36a58bc2ac9dcd1dc8926830ba0baac66b4d
6
+ metadata.gz: 02c8dd9d8878d00225e0db6a0b9e6f2c2b89a93f3224eb71ca032a89f852e62a7034a20c1dd0c3646b3a367229ab412e16fa48adb596e36c01bd0b54bd8bbe27
7
+ data.tar.gz: 13b2cabb3a75f5a9221ebf3aedfd756e189ec8888a689e63325f29c46d2cb7658639b78f8e8e9ac190e5e2c63aba1c90679d0ffd7febb6d7d9d1acbdd6d0a743
@@ -2,7 +2,7 @@
2
2
 
3
3
  Gem::Specification.new do |gem|
4
4
  gem.name = 'fluent-plugin-mobile-carrier'
5
- gem.version = '0.0.2'
5
+ gem.version = '0.0.3'
6
6
  gem.authors = ['HARUYAMA Seigo']
7
7
  gem.email = ['haruyama@unixuser.org']
8
8
  gem.description = %q{judge mobile carrier by ip address.}
@@ -1,4 +1,3 @@
1
-
2
1
  # mobile carrieroutput
3
2
  class Fluent::MobileCarrierOutput < Fluent::Output
4
3
  Fluent::Plugin.register_output('mobile_carrier', self)
@@ -13,7 +12,6 @@ class Fluent::MobileCarrierOutput < Fluent::Output
13
12
 
14
13
  def initialize
15
14
  super
16
- require 'ipaddr'
17
15
  require 'yaml'
18
16
  end
19
17
 
@@ -59,7 +57,7 @@ class Fluent::MobileCarrierOutput < Fluent::Output
59
57
  config = {}
60
58
  raw_config.each { |carrier, ip_address_list|
61
59
  config[carrier] = ip_address_list.map { |ip_address|
62
- IPAddr.new(ip_address)
60
+ TubeAddress.new(ip_address)
63
61
  }
64
62
  }
65
63
  config
@@ -85,3 +83,35 @@ class Fluent::MobileCarrierOutput < Fluent::Output
85
83
  chain.next
86
84
  end
87
85
  end
86
+
87
+ # https://github.com/jordansissel/experiments/blob/master/ruby/ipaddr-is-slow/code.rb
88
+ class TubeAddress
89
+ IPv4MASK = 0xFFFFFFFF # 255.255.255.255
90
+
91
+ def initialize(addr)
92
+ @address, cidr, _ = addr.split("/") + ["32"]
93
+
94
+ @address_int = self.class.ip_to_num(@address)
95
+ @cidr = cidr.to_i
96
+ @base = @address_int & cidr_mask
97
+ end
98
+
99
+ def cidr_mask
100
+ # Convert /24 to 0xffffff00, etc
101
+ @cidr_mask ||= IPv4MASK ^ ((1 << (32 - @cidr)) - 1)
102
+ end
103
+
104
+ def include?(addr)
105
+ return false if addr.nil?
106
+ self.class.ip_to_num(addr) & @cidr_mask == @base
107
+ end
108
+
109
+ def self.ip_to_num(addr)
110
+ return addr.split(".").reduce(0) { |s,c| s = (s << 8) + (c.to_i) }
111
+ end
112
+
113
+ def to_s
114
+ return "#{@address}/#{@cidr}"
115
+ end
116
+ end
117
+
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: fluent-plugin-mobile-carrier
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.2
4
+ version: 0.0.3
5
5
  platform: ruby
6
6
  authors:
7
7
  - HARUYAMA Seigo