lib-bootp 0.1.0 → 0.1.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.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
- SHA1:
3
- metadata.gz: cff1a108551607985c80a8b032204b539f6534f9
4
- data.tar.gz: '031192352b530dfa03e1b8d70304d5c588693739'
2
+ SHA256:
3
+ metadata.gz: e2223b20ccb51ae041606827b59764750331e36200a4d20ac69901e905e01238
4
+ data.tar.gz: 260d82295af335aaea0ebc27a25ec234b45de52d723096ae1808aaf29b36b349
5
5
  SHA512:
6
- metadata.gz: 9ce33dfc7523edf9464eca445d855afe33efbf270ea0a9455234f3cf51db9b0d286042efc6a3ddb7979c2ad5fddc59a45d5921fb94abe6dd19e944553b05821b
7
- data.tar.gz: a92c15c0f4f6775557b667cf2a5f2c1dac3d895c97c86024d25649e85080e330eff0ef4e1bac165db80f52ae6e7da6986e5f639bcd044e962c79432b85d99dc4
6
+ metadata.gz: 82ad61f8f6db41f6698eab1a5ad0f3c6087fa73ffd05e12d2ee9b5d6754e794d661678794a7553f32c1133312f7fb4cbaf5b527dd7ff5d28bfbcb2ff843d1f3d
7
+ data.tar.gz: dc4b2f7dbc810b088e21d82cffaac6221dd1d89975fe7f134d1fb6e6c1a61507b1f2add9b7e684502811b92b2331594dc8ed00a767aab876ed66956ae6246634
data/README.md CHANGED
@@ -1,6 +1,7 @@
1
1
  # Lib::BOOTP
2
2
 
3
- BOOT Library written in ruby.
3
+ BOOTP Library written in ruby.
4
+ https://tools.ietf.org/html/rfc951
4
5
 
5
6
  ## Installation
6
7
 
@@ -17,6 +18,50 @@ And then execute:
17
18
  Or install it yourself as:
18
19
 
19
20
  $ gem install lib-bootp
21
+
22
+ ## Usage
23
+
24
+ Creating BOOTP package and sending it to BOOTP server
25
+
26
+ ```ruby
27
+ bootp = Lib::BOOTP::Packet.new(
28
+ op: 1, # BOOTREQUEST = 1, BOOTREPLAY = 2, Default is 1
29
+ htype: 1, # Hardware Address Type, Default 1 is Ethernet (10Mb)
30
+ hlen: 6, # Hardware Address Length, Default is 6
31
+ hops: 0, # Hops count, Default is 0
32
+ xid: 1, # Transaction ID, by default is generate if not specific
33
+ secs: 0, # Second counts, Default is 0
34
+ flags: 0, # Broadcast flags, Default is not set
35
+ ciaddr: '0.0.0.0', # Client IP Address, Default is '0.0.0.0'
36
+ yiaddr: '0.0.0.0', # Your IP Address, Default is '0.0.0.0'
37
+ siaddr: '0.0.0.0', # Server IP Address, Default is '0.0.0.0'
38
+ giaddr: '0.0.0.0', # Gateway IP Address, Default is '0.0.0.0'
39
+ chaddr: '00:11:22:33:44:55', # Client hardware address, Default is not set
40
+ sname: '.', # Optional server host name
41
+ file: '.', # Boot file name
42
+ )
43
+
44
+ client = UDPSocket.new
45
+
46
+ packet = bootp.pack # Building BOOTP packet to send via UDP socket
47
+
48
+ client.send packet, 0, "255.255.255.255", 67
49
+ ```
50
+
51
+ Reading and parsing packet from socket
52
+
53
+ ```ruby
54
+ server = UDPSocket.new
55
+ server.setsockopt(Socket::SOL_SOCKET, Socket::SO_BROADCAST, true)
56
+ server.bind("127.0.0.1", 67)
57
+ data = server.recvfrom(1500)[0]
58
+ bootp = Lib::BOOTP::Packet.unpack(data)
59
+
60
+ # Get Operations code
61
+ bootp.op.to_s
62
+ #=> 'BOOTREQUEST'
63
+
64
+ ```
20
65
 
21
66
  ## Contributing
22
67
 
@@ -3,36 +3,16 @@
3
3
  # Copyright 18.03.2016 by Piotr Wojcieszonek
4
4
 
5
5
  require 'forwardable'
6
- require 'ipaddr'
7
- #require 'comparable'
6
+ require 'net/address'
7
+
8
8
 
9
9
  module Lib
10
10
  module BOOTP
11
11
  class Packet
12
- class IPAddress
13
- extend Forwardable
14
- include Comparable
15
-
16
- def_delegators :@ip, :to_s, :to_i
17
-
18
- def initialize(ip)
19
- @ip = if ip.is_a?(IPAddr)
20
- ip
21
- else
22
- raise ArgumentError, "Wrong IP Address #{ip}" if ip.nil? || ip == ''
23
- IPAddr.new(ip, Socket::AF_INET)
24
- end
25
- raise ArgumentError, "Wrong IP Address #{ip}" unless @ip.is_a?(IPAddr)
26
- end
27
-
28
- def <=>(other)
29
- other = IPAddr.new(other, Socket::AF_INET) unless other.is_a?(IPAddr)
30
- self.to_i <=> other.to_i
31
- end
12
+ class IPAddress < ::Net::Address::IPv4
32
13
 
33
14
  def pack
34
- @ip = 0 if @ip.nil?
35
- [@ip.to_i].pack('N')
15
+ [self.to_i].pack('N')
36
16
  end
37
17
 
38
18
  def self.unpack(ip)
@@ -1,5 +1,5 @@
1
1
  module Lib
2
2
  module BOOTP
3
- VERSION = '0.1.0'
3
+ VERSION = '0.1.1'
4
4
  end
5
5
  end
data/lib-bootp.gemspec CHANGED
@@ -23,4 +23,8 @@ Gem::Specification.new do |spec|
23
23
  spec.add_development_dependency "bundler", "~> 1.16"
24
24
  spec.add_development_dependency "rake", "~> 10.0"
25
25
  spec.add_development_dependency "rspec", "~> 3.0"
26
+
27
+ spec.add_dependency 'net-address', '~> 0.1'
28
+
29
+ spec.required_ruby_version = '>= 2.2.0'
26
30
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: lib-bootp
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.0
4
+ version: 0.1.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Piotr Wojcieszonek
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2017-12-22 00:00:00.000000000 Z
11
+ date: 2018-01-08 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler
@@ -52,6 +52,20 @@ dependencies:
52
52
  - - "~>"
53
53
  - !ruby/object:Gem::Version
54
54
  version: '3.0'
55
+ - !ruby/object:Gem::Dependency
56
+ name: net-address
57
+ requirement: !ruby/object:Gem::Requirement
58
+ requirements:
59
+ - - "~>"
60
+ - !ruby/object:Gem::Version
61
+ version: '0.1'
62
+ type: :runtime
63
+ prerelease: false
64
+ version_requirements: !ruby/object:Gem::Requirement
65
+ requirements:
66
+ - - "~>"
67
+ - !ruby/object:Gem::Version
68
+ version: '0.1'
55
69
  description: Set of classes to low level handle the BOOTP protocol
56
70
  email:
57
71
  - piotr@wojcieszonek.pl
@@ -95,7 +109,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
95
109
  requirements:
96
110
  - - ">="
97
111
  - !ruby/object:Gem::Version
98
- version: '0'
112
+ version: 2.2.0
99
113
  required_rubygems_version: !ruby/object:Gem::Requirement
100
114
  requirements:
101
115
  - - ">="
@@ -103,7 +117,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
103
117
  version: '0'
104
118
  requirements: []
105
119
  rubyforge_project:
106
- rubygems_version: 2.6.14
120
+ rubygems_version: 2.7.4
107
121
  signing_key:
108
122
  specification_version: 4
109
123
  summary: BOOTP protocol library