fluent-plugin-mobile-carrier 0.0.2 → 0.0.3

Sign up to get free protection for your applications and to get access to all the features.
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