unimedia_ip_checker 0.0.6 → 0.0.7

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 +37 -28
  3. metadata +2 -2
checksums.yaml CHANGED
@@ -1,15 +1,15 @@
1
1
  ---
2
2
  !binary "U0hBMQ==":
3
3
  metadata.gz: !binary |-
4
- NzQ0YmFkY2JlNDk0ODc3OWEwNDkzMWFkMDlhMjc3NTM3ZjlmOTQ4Nw==
4
+ YzNiNzM1ZGZiNjM1ODkzNDg1MmY3OTkyNDFlYzAyOWU2ZDc2ZmU3Yg==
5
5
  data.tar.gz: !binary |-
6
- ZmNiYmFjZDJjMmIwYjY2N2YwNGUzOWEyOGUzNzAyY2Y4YWVkYThhZg==
6
+ YjU4ZGQ4NGRmNTY2YmYwZDIxZDI1Y2JkMzQ2OTNmYjdlMWY0MDFkNg==
7
7
  SHA512:
8
8
  metadata.gz: !binary |-
9
- MDFmYTVkYzEwYTRkZTQyNWE0NTMyY2RjNTA2Yjk0MzYzMzM2NzU4YjY0YmM4
10
- ZjI4YzM4ZGQ3MmMxNjJjYmI2NmM3NzM0MmEzYWNjYmQzY2M0ZTc3OGFkN2Jj
11
- ZDM5Y2ZlZjhhOWJhZGE3OTBmYzk4YjhhNjIyZWRhMWMzYTcxMTg=
9
+ NzhlZmJhYmQ4NmYxOWNhMzM2ZDczYjAxZTk0OTExNDZkZGMxZGNiZDY4ZDlk
10
+ MmJkZGI4YTI1OTVkNzJiNjY4OGM1ZDBjNmU5ZThhYWZlY2YyNTExZDUxNmU0
11
+ NzVlMzk0MmU0Y2FkMTQ2YWI2NmI4NmQyYTQzZDMwOWZiZjdjOTc=
12
12
  data.tar.gz: !binary |-
13
- ZjY3ZmRmNGEwOTVlNTIwMDYwOGI0ZDIwMmM3OTEzMDg5OWY1MTVlZGE3OTkw
14
- NjBjZDE0MGFhMjhlMTE3MTYzYTQyZTNlZWIwNTQ5N2IyZDk2NzFhMDBmNTEx
15
- NTg1MzdiNjQ3YzgwMjgyZGVhYjFiNDE0YjJkMDYwNDRkYjZhYzc=
13
+ ZDIwNmEzZTQyMTI4MWVlZGM5ODJmMTMyNjMwYTc2NGY1NzhlNTM5Mjg2MWYz
14
+ NjIwYzIyMjRiZTc1NjI2MWZjODA4MTdlMzdmYjQ3OTNmZWQwYmNiODU5ZmVl
15
+ NTk5YTBlNWRlZjRmMGI3MzhiMzQ4YzBlYjBiMTU1ZjViN2FjMzg=
data/lib/ip_checker.rb CHANGED
@@ -3,35 +3,44 @@ class IpChecker
3
3
  @project_name = project_name
4
4
  end
5
5
 
6
- def is_block_ip(request)
7
- ip = request.env["HTTP_X_FORWARDED_FOR"] || request.remote_ip
8
- # :auth_type = 1 block
9
- # :auth_type = 0 allow
10
- connection = ActiveRecord::Base.connection()
11
- any_ip = connection.execute("SELECT *
12
- FROM
13
- dtb_ip_address_block
14
- WHERE
15
- dtb_ip_address_block.ip_address = 'all'
16
- AND dtb_ip_address_block.auth_type = 1
17
- AND dtb_ip_address_block.project = '#{@project_name}';")
18
-
19
- white_list_ip = any_ip.first && any_ip.first[2].to_s == '1' ? true : false
20
-
21
- ip_address = connection.execute(" SELECT *
22
- FROM
23
- dtb_ip_address_block
24
- WHERE
25
- dtb_ip_address_block.ip_address = '#{ip}'
26
- AND dtb_ip_address_block.project = '#{@project_name}'")
27
-
28
- if white_list_ip
29
- return true if ip_address.first
30
- else
31
- return true unless ip_address.first
32
- end
33
- return false
6
+ def is_block_ip(request)
7
+ ip_range = []
8
+ cidr = []
34
9
 
10
+ user_ip = request.env["HTTP_X_FORWARDED_FOR"] || request.remote_ip
11
+ connection = ActiveRecord::Base.connection()
12
+
13
+ is_black_list = is_black_list(connection)
14
+
15
+ any_ip = connection.execute("SELECT * FROM dtb_ip_address_block
16
+ WHERE dtb_ip_address_block.ip_address != 'all'
17
+ AND dtb_ip_address_block.project = '#{@project_name}';")
18
+
19
+ any_ip.each do |ip|
20
+ begin
21
+ cidr = NetAddr::CIDR.create(ip[1]).enumerate
22
+ ip_range = ip_range + cidr
23
+ rescue
24
+ end
25
+ end
26
+
27
+ if ip_range.include?(user_ip)
28
+ return is_black_list ? false : true
29
+ else
30
+ return is_black_list ? true : false
31
+ end
35
32
  end
33
+
34
+ def is_black_list(connection)
35
+ auth_type_ip = connection.execute("SELECT *
36
+ FROM
37
+ dtb_ip_address_block
38
+ WHERE
39
+ dtb_ip_address_block.ip_address = 'all'
40
+ AND dtb_ip_address_block.auth_type = 1
41
+ AND dtb_ip_address_block.project = '#{@project_name}';")
42
+
43
+ auth_type_ip.first && auth_type_ip.first[2].to_s == '1' ? true : false
44
+ end
36
45
 
37
46
  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.6
4
+ version: 0.0.7
5
5
  platform: ruby
6
6
  authors:
7
7
  - Zulnemekh Bekhbat
@@ -18,7 +18,7 @@ extensions: []
18
18
  extra_rdoc_files: []
19
19
  files:
20
20
  - lib/ip_checker.rb
21
- homepage: https://github.com/zulnemekh/unimedia_ip_checker
21
+ homepage: http://gitlab.unimedia.mn/crowdsourcing/unimedia_ip_checker
22
22
  licenses:
23
23
  - Unimedia solutions
24
24
  metadata: {}