wan-ip-gen 1.2.0 → 2.0.2

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 +25 -21
  3. metadata +3 -3
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: ff29b094affc12073631d6c5d31369a049f6323f057d85198fd076bd589e8da5
4
- data.tar.gz: 524ae3da828d58fe2a6333a19280c6f4f5d72438332f0a7bfde2ceddebf291eb
3
+ metadata.gz: 3a4b623e4b6a72fb648cb3d92abd790b422231c93ce37f059310219323a82ab4
4
+ data.tar.gz: 82f0db1e949a3d7ba98b73068fd3b2d731ec158eac9a183f20a8897a776fed4f
5
5
  SHA512:
6
- metadata.gz: ab71e8bcce34f87b472047f749f516f1dc5a952b9ac3cc8670ef406bed419bd79f10802ce6114d315294342ca059d7b86ceb0a39563a98207002463b7c8f92cc
7
- data.tar.gz: 9bd873188d41cd42f6cf47c22557a500ec8ed6b1dc2c7cff396cdd26053f33f5ece582c4aea5a6811c424d6c24491f3b2f7997f6b93a60692b5bf680d748dc58
6
+ metadata.gz: 00ea1138828ec1a25d0bacde1c19a77734772b7cd19208d754c36c1f5f9ee6458f4d32a19fb08c89ef50c308e171be8f4acd53de56f815c4c202aa010cd2c24a
7
+ data.tar.gz: 89d6d8632b71f6f3d07b7605ca317596b11c0ed4c2e153d8a56c72afd2339d55ab6186d97b0ec64d1df742752a4753315e9ee677f7101be371e3dc24d2a25e24
data/lib/wan-ip-gen.rb CHANGED
@@ -11,28 +11,33 @@ module IP
11
11
  class RandomWAN
12
12
  include Enumerable
13
13
 
14
- RANDOM_RANGE = (0x01000000...0xdfffffff).freeze # exclude current network and local broadcast
15
- EXCLUDE_RANGES = [
16
- (0xA000000..0xAFFFFFF), # 10.0.0.0 - 10.255.255.255
17
- (0x7F000000..0x7FFFFFFF), # 127.0.0.0 - 127.255.255.255
18
- (0x64400000..0x647FFFFF), # 100.64.0.0 - 100.127.255.255
19
- (0xAC100000..0xAC1FFFFF), # 172.16.0.0 - 172.31.255.255
20
- (0xC6120000..0xC613FFFF), # 198.18.0.0 - 198.19.255.255
21
- (0xA9FE0000..0xA9FEFFFF), # 169.254.0.0 - 169.254.255.255
22
- (0xC0A80000..0xC0A8FFFF), # 192.168.0.0 - 192.168.255.255
23
- (0xC0000000..0xC00000FF), # 192.0.0.0 - 192.0.0.255
24
- (0xC0000200..0xC00002FF), # 192.0.2.0 - 192.0.2.255
25
- (0xc0586300..0xc05863ff), # 192.88.99.0 - 192.88.99.255
26
- (0xC6336400..0xC63364FF), # 198.51.100.0 - 198.51.100.255
27
- (0xCB007100..0xCB0071FF), # 203.0.113.0 - 203.0.113.255
28
- (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)
29
27
  ].freeze
30
28
 
29
+ SIZES = RANGES.map(&:size)
30
+ TOTAL = SIZES.sum.to_f
31
+ PROBABILITIES = SIZES.map { |s| s / TOTAL }
32
+
33
+ def intip
34
+ p = rand
35
+ i = PROBABILITIES.index { |rp| p < rp || !(p -= rp) }
36
+ rand RANGES[i]
37
+ end
38
+
31
39
  def each(&block)
32
40
  loop do
33
- intip = rand(RANDOM_RANGE)
34
- next if EXCLUDE_RANGES.any? { |r| r.cover? intip }
35
-
36
41
  block.call [intip].pack('N').unpack('CCCC').join('.')
37
42
  end
38
43
  end
@@ -52,8 +57,7 @@ module IP
52
57
  end
53
58
 
54
59
  if $0 == __FILE__
55
- IP::RandomWAN.new.each_socket do |s|
56
- s << "GET / HTTP/1.1\r\nConnection: close\r\n\r\n"
57
- puts s.recv(1024)
60
+ IP::RandomWAN.new.each do |ip|
61
+ puts ip
58
62
  end
59
63
  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.2.0
4
+ version: 2.0.2
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-28 00:00:00.000000000 Z
11
+ date: 2023-01-04 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