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 +5 -5
- data/README.md +46 -1
- data/lib/lib/bootp/packet/ip_address.rb +4 -24
- data/lib/lib/bootp/version.rb +1 -1
- data/lib-bootp.gemspec +4 -0
- metadata +18 -4
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
|
-
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
2
|
+
SHA256:
|
3
|
+
metadata.gz: e2223b20ccb51ae041606827b59764750331e36200a4d20ac69901e905e01238
|
4
|
+
data.tar.gz: 260d82295af335aaea0ebc27a25ec234b45de52d723096ae1808aaf29b36b349
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 82ad61f8f6db41f6698eab1a5ad0f3c6087fa73ffd05e12d2ee9b5d6754e794d661678794a7553f32c1133312f7fb4cbaf5b527dd7ff5d28bfbcb2ff843d1f3d
|
7
|
+
data.tar.gz: dc4b2f7dbc810b088e21d82cffaac6221dd1d89975fe7f134d1fb6e6c1a61507b1f2add9b7e684502811b92b2331594dc8ed00a767aab876ed66956ae6246634
|
data/README.md
CHANGED
@@ -1,6 +1,7 @@
|
|
1
1
|
# Lib::BOOTP
|
2
2
|
|
3
|
-
|
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 '
|
7
|
-
|
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
|
-
|
35
|
-
[@ip.to_i].pack('N')
|
15
|
+
[self.to_i].pack('N')
|
36
16
|
end
|
37
17
|
|
38
18
|
def self.unpack(ip)
|
data/lib/lib/bootp/version.rb
CHANGED
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.
|
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:
|
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:
|
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.
|
120
|
+
rubygems_version: 2.7.4
|
107
121
|
signing_key:
|
108
122
|
specification_version: 4
|
109
123
|
summary: BOOTP protocol library
|