unimedia_ip_checker 0.0.7 → 0.0.8

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.
Files changed (3) hide show
  1. checksums.yaml +8 -8
  2. data/lib/ip_checker.rb +19 -10
  3. metadata +1 -1
checksums.yaml CHANGED
@@ -1,15 +1,15 @@
1
1
  ---
2
2
  !binary "U0hBMQ==":
3
3
  metadata.gz: !binary |-
4
- YzNiNzM1ZGZiNjM1ODkzNDg1MmY3OTkyNDFlYzAyOWU2ZDc2ZmU3Yg==
4
+ ZTVhZTZhMTNiZTk0ZGM3NTk0N2FhYjlkMmNlMDMzZGQ1NDIyZWZhYw==
5
5
  data.tar.gz: !binary |-
6
- YjU4ZGQ4NGRmNTY2YmYwZDIxZDI1Y2JkMzQ2OTNmYjdlMWY0MDFkNg==
6
+ ZTcyOGM0YWJjY2MxZGU0YmMyMjc3ZGNmNjk3NjliMzc3YzYxM2M1ZA==
7
7
  SHA512:
8
8
  metadata.gz: !binary |-
9
- NzhlZmJhYmQ4NmYxOWNhMzM2ZDczYjAxZTk0OTExNDZkZGMxZGNiZDY4ZDlk
10
- MmJkZGI4YTI1OTVkNzJiNjY4OGM1ZDBjNmU5ZThhYWZlY2YyNTExZDUxNmU0
11
- NzVlMzk0MmU0Y2FkMTQ2YWI2NmI4NmQyYTQzZDMwOWZiZjdjOTc=
9
+ NzFlYWZjOTU3ZWY2ODVmOTEyZTRlMzQ5MzQ4MjU0MTI0YjgyMTk3M2I1ODFk
10
+ NzQwZDgxOWE0YWMyZjEyZTQwY2U4Yjg0Yzg0ZDlkYjk0MjRjMmJlMzNiZDcy
11
+ YWE3M2FhMDQzMzE1ZjVhMmQxNzA2NTIyNzkzNTRlY2NhODJlZGE=
12
12
  data.tar.gz: !binary |-
13
- ZDIwNmEzZTQyMTI4MWVlZGM5ODJmMTMyNjMwYTc2NGY1NzhlNTM5Mjg2MWYz
14
- NjIwYzIyMjRiZTc1NjI2MWZjODA4MTdlMzdmYjQ3OTNmZWQwYmNiODU5ZmVl
15
- NTk5YTBlNWRlZjRmMGI3MzhiMzQ4YzBlYjBiMTU1ZjViN2FjMzg=
13
+ NzVmNjMxMDQxMWMzODg0NzhkZWQ4MWZkYWEzOGI1NTJiNzIwNDk5ZmI2YWI2
14
+ NTA2YzJhMGRkZWQ1OGFhOWQ5OGQxMzY3ODAwNmExYTgxZWUzOGJmZjQxZWMw
15
+ NDQxY2U4NDhiOTJhYWNiM2JhMmI3NmVhOGNlOWYxMjQyMTI0OTc=
data/lib/ip_checker.rb CHANGED
@@ -1,25 +1,35 @@
1
+ require 'ipaddr'
2
+
1
3
  class IpChecker
2
4
  def initialize(project_name)
3
5
  @project_name = project_name
4
6
  end
5
7
 
6
- def is_block_ip(request)
8
+ def is_block_ip(request)
7
9
  ip_range = []
8
10
  cidr = []
9
-
10
11
  user_ip = request.env["HTTP_X_FORWARDED_FOR"] || request.remote_ip
11
12
  connection = ActiveRecord::Base.connection()
12
13
 
14
+ #check blacklist (true) or whitelist (false)
13
15
  is_black_list = is_black_list(connection)
14
16
 
15
- any_ip = connection.execute("SELECT * FROM dtb_ip_address_block
17
+ filter_ips = connection.execute("SELECT * FROM dtb_ip_address_block
16
18
  WHERE dtb_ip_address_block.ip_address != 'all'
17
19
  AND dtb_ip_address_block.project = '#{@project_name}';")
18
20
 
19
- any_ip.each do |ip|
21
+ filter_ips.each do |ip|
20
22
  begin
21
- cidr = NetAddr::CIDR.create(ip[1]).enumerate
22
- ip_range = ip_range + cidr
23
+ if ip[1].include?"-"
24
+ #create ip range
25
+ min, max = ip[1].split("-")
26
+ range = NetAddr.range(min, max, :Inclusive => true)
27
+ ip_range = ip_range + range
28
+ else
29
+ #create ip range by CIDR prefix
30
+ cidr = NetAddr::CIDR.create(ip[1]).enumerate
31
+ ip_range = ip_range + cidr
32
+ end
23
33
  rescue
24
34
  end
25
35
  end
@@ -39,8 +49,7 @@ class IpChecker
39
49
  dtb_ip_address_block.ip_address = 'all'
40
50
  AND dtb_ip_address_block.auth_type = 1
41
51
  AND dtb_ip_address_block.project = '#{@project_name}';")
42
-
43
52
  auth_type_ip.first && auth_type_ip.first[2].to_s == '1' ? true : false
44
- end
45
-
46
- end
53
+ end
54
+
55
+ end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: unimedia_ip_checker
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.7
4
+ version: 0.0.8
5
5
  platform: ruby
6
6
  authors:
7
7
  - Zulnemekh Bekhbat