wan-ip-gen 1.1.2 → 2.0.1

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 +4 -4
  2. data/lib/wan-ip-gen.rb +29 -23
  3. metadata +3 -3
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 53b574ab0e64afd52af4138f5977ffdf688580ab6dc16b8f81d825cbb15fd413
4
- data.tar.gz: d52c37644af5bec0aa591130fad56d10a99e7f65a28fde9fe9546c94b6edc7a8
3
+ metadata.gz: 1c372328396335732a9a46fbb018c599d971e07028914d121c6c23aa8fa8b189
4
+ data.tar.gz: 3775679c5386e95b7eaa93bc12eab4b3a2098f1ea72dc93d4ad6b22a0fee42c6
5
5
  SHA512:
6
- metadata.gz: c12af8954d98f50325fc7b64446a32423d1642ce6210f0a7c22b74f3fb44447a01f28fe98560adf2862a23a3c57787ad95cb9dfb08d32a5d234e162fef19e6f4
7
- data.tar.gz: 887605e74f85639d8350443c45dacf8075eaa2621cc7a5ceeaccb0312518b1a1402a95f21e6eed3166e48519edc79589d90ed1a8d5a329f692dc4a1450325881
6
+ metadata.gz: af70738908fbce854945ec3ab7bfa2f7bbd4b168e0145233908ba9b428166632da49c54960226f323837c05e8c52fdb3b0bcd2a56ad6f06dda3dec11897a2344
7
+ data.tar.gz: 436fbe92943b402d20e53b626e34f4b41516cedcdaa0142ea61441531c4032cbbcce5d1c4e69b12f624878a53bbc304efad76a7d56b64b186c35308bf4b2dba6
data/lib/wan-ip-gen.rb CHANGED
@@ -11,30 +11,37 @@ module IP
11
11
  class RandomWAN
12
12
  include Enumerable
13
13
 
14
- RANDOM_RANGE = (0x01000000...0xffffffff).freeze # exclude current network and local broadcast
15
- EXCLUDE_RANGES = [
16
- (0xe0000000..0xefffffff), # 224.0.0.0 - 239.255.255.255
17
- (0xf0000000..0xfffffffe), # 240.0.0.0 - 255.255.255.254
18
- (0xA000000..0xAFFFFFF), # 10.0.0.0 - 10.255.255.255
19
- (0x7F000000..0x7FFFFFFF), # 127.0.0.0 - 127.255.255.255
20
- (0x64400000..0x647FFFFF), # 100.64.0.0 - 100.127.255.255
21
- (0xAC100000..0xAC1FFFFF), # 172.16.0.0 - 172.31.255.255
22
- (0xC6120000..0xC613FFFF), # 198.18.0.0 - 198.19.255.255
23
- (0xA9FE0000..0xA9FEFFFF), # 169.254.0.0 - 169.254.255.255
24
- (0xC0A80000..0xC0A8FFFF), # 192.168.0.0 - 192.168.255.255
25
- (0xC0000000..0xC00000FF), # 192.0.0.0 - 192.0.0.255
26
- (0xC0000200..0xC00002FF), # 192.0.2.0 - 192.0.2.255
27
- (0xc0586300..0xc05863ff), # 192.88.99.0 - 192.88.99.255
28
- (0xC6336400..0xC63364FF), # 198.51.100.0 - 198.51.100.255
29
- (0xCB007100..0xCB0071FF), # 203.0.113.0 - 203.0.113.255
30
- (0xe9fc0000..0xe9fc00ff) # 233.252.0.0 - 233.252.0.255
14
+ RANGES = [
15
+ (0xb000000..0x643fffff),
16
+ (0x80000000..0xa9fdffff),
17
+ (0x64800000..0x7effffff),
18
+ (0xcb007200..0xdfffffff),
19
+ (0xac200000..0xbfffffff),
20
+ (0xc0a90000..0xc611ffff),
21
+ (0xc6336500..0xcb0070ff),
22
+ (0xa9ff0000..0xac0fffff),
23
+ (0xc0000300..0xc05862ff),
24
+ (0xc0586400..0xc0a7ffff),
25
+ (0xc6140000..0xc63363ff),
26
+ (0xc0000100..0xc00001ff)
31
27
  ].freeze
32
28
 
29
+ SIZES = RANGES.map(&:size)
30
+ TOTAL = SIZES.sum.to_f
31
+ PROBABILITIES = SIZES.map { |w| w / TOTAL }
32
+ RANGES_P = RANGES.zip(PROBABILITIES).freeze
33
+
34
+ def intip
35
+ p = rand
36
+ RANGES_P.each do |range, range_p|
37
+ return rand range if p < range_p
38
+
39
+ p -= range_p
40
+ end
41
+ end
42
+
33
43
  def each(&block)
34
44
  loop do
35
- intip = rand(RANDOM_RANGE)
36
- next if EXCLUDE_RANGES.any? { |r| r.cover? intip }
37
-
38
45
  block.call [intip].pack('N').unpack('CCCC').join('.')
39
46
  end
40
47
  end
@@ -54,8 +61,7 @@ module IP
54
61
  end
55
62
 
56
63
  if $0 == __FILE__
57
- IP::RandomWAN.new.each_socket do |s|
58
- s << "GET / HTTP/1.1\r\nConnection: close\r\n\r\n"
59
- puts s.recv(1024)
64
+ IP::RandomWAN.new.each do |ip|
65
+ puts ip
60
66
  end
61
67
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: wan-ip-gen
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.1.2
4
+ version: 2.0.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Mikhail Yudin
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2022-11-16 00:00:00.000000000 Z
11
+ date: 2023-01-03 00:00:00.000000000 Z
12
12
  dependencies: []
13
13
  description: WAN range random IP generator
14
14
  email: fagci.nsk@gmail.com
@@ -36,7 +36,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
36
36
  - !ruby/object:Gem::Version
37
37
  version: '0'
38
38
  requirements: []
39
- rubygems_version: 3.3.23
39
+ rubygems_version: 3.4.1
40
40
  signing_key:
41
41
  specification_version: 4
42
42
  summary: WAN range random IP generator