rslp 0.0.2 → 0.1.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- checksums.yaml.gz.sig +0 -0
- data/CHANGES.md +7 -0
- data/lib/rslp.rb +45 -12
- data/lib/slp/functions.rb +4 -1
- data/rslp.gemspec +1 -1
- data/spec/rslp_spec.rb +2 -2
- data.tar.gz.sig +0 -0
- metadata +3 -3
- metadata.gz.sig +0 -0
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 6d18a5f649a8f64234f0ca36681d7700bc82c6f92d6f92fb7de5a15a3e0c9a75
|
4
|
+
data.tar.gz: 445016807c2bb1f53192df312f86e8da65948e2c5f634f16cb5fd91fcd49df10
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: c2150dfc89eae6d2a403151bcc6d4e1e683733225702cbd7e51cb2f6fc7d90e1e3b25504b2536d14a03fa629acb1fa4a8a093e6c45d72964feec43eac367fa94
|
7
|
+
data.tar.gz: 5051e0ec6e22438ada2b92729c64465b307201d0baf60a996627cf429efa2fbdb246ce602eeb627a29db60362bbd65944195d7ef46a7ef89880b052770572cbc
|
checksums.yaml.gz.sig
CHANGED
Binary file
|
data/CHANGES.md
CHANGED
@@ -1,3 +1,10 @@
|
|
1
|
+
## 0.1.0 - 19-Oct-2022
|
2
|
+
* Updated the constructor, now uses keyword arguments.
|
3
|
+
* Constructor now accepts a hostname, or a comma separate lists of hosts.
|
4
|
+
* Added the set_app_property_file singleton method.
|
5
|
+
* Changed the deregister method to return the url.
|
6
|
+
* Minor refactoring of callback procs.
|
7
|
+
|
1
8
|
## 0.0.2 - 12-Oct-2022
|
2
9
|
* Fixed the parse_service_url singleton method. The underlying SLPSrvURL
|
3
10
|
struct is now a managed struct.
|
data/lib/rslp.rb
CHANGED
@@ -11,7 +11,7 @@ module OpenSLP
|
|
11
11
|
extend OpenSLP::Functions
|
12
12
|
|
13
13
|
# The version of the rslp library.
|
14
|
-
VERSION = '0.0
|
14
|
+
VERSION = '0.1.0'.freeze
|
15
15
|
|
16
16
|
# Internal error raised whenever an openslp function fails.
|
17
17
|
class Error < StandardError; end
|
@@ -33,22 +33,30 @@ module OpenSLP
|
|
33
33
|
# the underlying handle is set to handle asynchronous operations or not. By
|
34
34
|
# default this value is false.
|
35
35
|
#
|
36
|
+
# The +host+ argument, if present, will associate the Host/IP with the OpenSLP
|
37
|
+
# handle. This is the Hostname/IP address of the Service Agent / Directory Agent
|
38
|
+
# from # which service is requested. For multicast, use a comma separated list of
|
39
|
+
# Hostnames/IP addresses.
|
40
|
+
#
|
36
41
|
# If a block is given, then the object itself is yielded to the block, and
|
37
42
|
# it is automatically closed at the end of the block.
|
38
43
|
#
|
39
44
|
# Examples:
|
40
45
|
#
|
41
|
-
#
|
46
|
+
# # Block form
|
47
|
+
# OpenSLP::SLP.new(lang: 'en-us', async: false, host: 'localhost') do |slp|
|
42
48
|
# # ... do stuff
|
43
49
|
# end
|
44
50
|
#
|
45
|
-
#
|
51
|
+
# # Non-block form
|
52
|
+
# slp = OpenSLP::SLP.new(lang: 'en-us')
|
46
53
|
# # Do stuff
|
47
54
|
# slp.close
|
48
55
|
#
|
49
|
-
def initialize(lang
|
56
|
+
def initialize(lang: '', async: false, host: nil)
|
50
57
|
@lang = lang
|
51
58
|
@async = async
|
59
|
+
@host = host
|
52
60
|
|
53
61
|
ptr = FFI::MemoryPointer.new(:ulong)
|
54
62
|
|
@@ -57,6 +65,16 @@ module OpenSLP
|
|
57
65
|
|
58
66
|
@handle = ptr.read_ulong
|
59
67
|
|
68
|
+
if @host
|
69
|
+
if @host.split(',').size > 1
|
70
|
+
result = SLPAssociateIFList(@handle, @host)
|
71
|
+
raise Error, "SLPAssociateIFList(): #{result}" if result != :SLP_OK
|
72
|
+
else
|
73
|
+
result = SLPAssociateIP(@handle, @host)
|
74
|
+
raise Error, "SLPAssociateIP(): #{result}" if result != :SLP_OK
|
75
|
+
end
|
76
|
+
end
|
77
|
+
|
60
78
|
if block_given?
|
61
79
|
begin
|
62
80
|
yield self
|
@@ -90,7 +108,7 @@ module OpenSLP
|
|
90
108
|
options[:attributes] ||= ""
|
91
109
|
options[:fresh] ||= true
|
92
110
|
|
93
|
-
options[:callback] ||= Proc.new{ |
|
111
|
+
options[:callback] ||= Proc.new{ |_hslp, err, _cookie| }
|
94
112
|
|
95
113
|
if options[:attributes] && options[:attributes] != ""
|
96
114
|
attributes = options[:attributes].map{ |k,v| "(#{k}=#{v})" }.join(',')
|
@@ -124,7 +142,7 @@ module OpenSLP
|
|
124
142
|
# is registered and all language locales.
|
125
143
|
#
|
126
144
|
def deregister(url)
|
127
|
-
callback = Proc.new{ |
|
145
|
+
callback = Proc.new{ |_hslp, err, _cookie| }
|
128
146
|
|
129
147
|
begin
|
130
148
|
cookie = FFI::MemoryPointer.new(:void)
|
@@ -134,7 +152,7 @@ module OpenSLP
|
|
134
152
|
cookie.free unless cookie.null?
|
135
153
|
end
|
136
154
|
|
137
|
-
|
155
|
+
url
|
138
156
|
end
|
139
157
|
|
140
158
|
# Deletes specified attributes from a registered service. The attributes
|
@@ -188,12 +206,15 @@ module OpenSLP
|
|
188
206
|
# form of an LDAP search filter. The default is an empty string, which
|
189
207
|
# will gather all services of the requested type.
|
190
208
|
#
|
209
|
+
# The result is an array of hashes, with the URL as the key and its lifetime
|
210
|
+
# as the value.
|
211
|
+
#
|
191
212
|
def find_services(type, scope = '', filter = '')
|
192
213
|
arr = []
|
193
214
|
|
194
|
-
callback = Proc.new{ |
|
215
|
+
callback = Proc.new{ |_hslp, url, lifetime, err, _cookie|
|
195
216
|
if err == SLP_OK
|
196
|
-
arr << {url =>
|
217
|
+
arr << {url => lifetime}
|
197
218
|
true
|
198
219
|
else
|
199
220
|
false
|
@@ -225,7 +246,7 @@ module OpenSLP
|
|
225
246
|
def find_service_types(auth = '*', scope = '')
|
226
247
|
arr = []
|
227
248
|
|
228
|
-
callback = Proc.new{ |
|
249
|
+
callback = Proc.new{ |_hslp, types, err, _cookie|
|
229
250
|
if err == SLP_OK
|
230
251
|
arr << types
|
231
252
|
true
|
@@ -237,7 +258,7 @@ module OpenSLP
|
|
237
258
|
begin
|
238
259
|
cookie = FFI::MemoryPointer.new(:void)
|
239
260
|
result = SLPFindSrvTypes(@handle, auth, scope, callback, cookie)
|
240
|
-
raise Error, "
|
261
|
+
raise Error, "SLPFindSrvTypes(): #{result}" if result != :SLP_OK
|
241
262
|
ensure
|
242
263
|
cookie.free unless cookie.null?
|
243
264
|
end
|
@@ -253,7 +274,7 @@ module OpenSLP
|
|
253
274
|
def find_service_attributes(url, attrs = '', scope = '')
|
254
275
|
arr = []
|
255
276
|
|
256
|
-
callback = Proc.new{ |
|
277
|
+
callback = Proc.new{ |_hslp, attrlist, err, _cookie|
|
257
278
|
if err == SLP_OK
|
258
279
|
arr << attrlist
|
259
280
|
true
|
@@ -350,5 +371,17 @@ module OpenSLP
|
|
350
371
|
|
351
372
|
str
|
352
373
|
end
|
374
|
+
|
375
|
+
# Set the application-specific configuration file full path name.
|
376
|
+
#
|
377
|
+
# The contents of this property file will override the contents of the
|
378
|
+
# default or global UA configuration file (usually /etc/slp.conf or
|
379
|
+
# C:\windows\slp.conf).
|
380
|
+
#
|
381
|
+
def self.set_app_property_file(path)
|
382
|
+
result = SLPSetAppPropertyFile(string)
|
383
|
+
raise Error, "SLPSetAppPropertyFile(): #{result}" if result != :SLP_OK
|
384
|
+
path
|
385
|
+
end
|
353
386
|
end
|
354
387
|
end
|
data/lib/slp/functions.rb
CHANGED
@@ -49,10 +49,12 @@ module OpenSLP
|
|
49
49
|
callback :SLPAttrCallback, [:handle, :string, :int, :pointer], :bool
|
50
50
|
callback :SLPRegReportCallback, [:handle, :int, :pointer], :void
|
51
51
|
|
52
|
+
attach_function :SLPAssociateIFList, [:handle, :string], SLPError
|
53
|
+
attach_function :SLPAssociateIP, [:handle, :string], SLPError
|
52
54
|
attach_function :SLPClose, [:handle], :void
|
53
|
-
attach_function :SLPEscape, [:string, :pointer, :bool], SLPError
|
54
55
|
attach_function :SLPDelAttrs, [:handle, :string, :string, :SLPRegReportCallback, :pointer], SLPError
|
55
56
|
attach_function :SLPDereg, [:handle, :string, :SLPRegReportCallback, :pointer], SLPError
|
57
|
+
attach_function :SLPEscape, [:string, :pointer, :bool], SLPError
|
56
58
|
|
57
59
|
attach_function :SLPFindAttrs,
|
58
60
|
[:handle, :string, :string, :string, :SLPAttrCallback, :pointer], SLPError
|
@@ -74,6 +76,7 @@ module OpenSLP
|
|
74
76
|
attach_function :SLPReg,
|
75
77
|
[:handle, :string, :ushort, :string, :string, :bool, :SLPRegReportCallback, :pointer], SLPError
|
76
78
|
|
79
|
+
attach_function :SLPSetAppPropertyFile, [:string], SLPError
|
77
80
|
attach_function :SLPSetProperty, [:string, :string], :void
|
78
81
|
attach_function :SLPUnescape, [:string, :pointer, :bool], SLPError
|
79
82
|
end
|
data/rslp.gemspec
CHANGED
data/spec/rslp_spec.rb
CHANGED
@@ -9,12 +9,12 @@ require 'rslp'
|
|
9
9
|
RSpec.describe OpenSLP::SLP do
|
10
10
|
before do
|
11
11
|
@lang = 'en-us'
|
12
|
-
@slp = described_class.new(@lang, false)
|
12
|
+
@slp = described_class.new(lang: @lang, async: false, host: 'localhost')
|
13
13
|
end
|
14
14
|
|
15
15
|
context "version" do
|
16
16
|
example "version is set to the expected value" do
|
17
|
-
expect(described_class::VERSION).to eq('0.0
|
17
|
+
expect(described_class::VERSION).to eq('0.1.0')
|
18
18
|
end
|
19
19
|
end
|
20
20
|
|
data.tar.gz.sig
CHANGED
Binary file
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: rslp
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0
|
4
|
+
version: 0.1.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Daniel J. Berger
|
@@ -35,7 +35,7 @@ cert_chain:
|
|
35
35
|
ORVCZpRuCPpmC8qmqxUnARDArzucjaclkxjLWvCVHeFa9UP7K3Nl9oTjJNv+7/jM
|
36
36
|
WZs4eecIcUc4tKdHxcAJ0MO/Dkqq7hGaiHpwKY76wQ1+8xAh
|
37
37
|
-----END CERTIFICATE-----
|
38
|
-
date: 2022-10-
|
38
|
+
date: 2022-10-20 00:00:00.000000000 Z
|
39
39
|
dependencies:
|
40
40
|
- !ruby/object:Gem::Dependency
|
41
41
|
name: ffi
|
@@ -131,7 +131,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
131
131
|
- !ruby/object:Gem::Version
|
132
132
|
version: '0'
|
133
133
|
requirements: []
|
134
|
-
rubygems_version: 3.3.
|
134
|
+
rubygems_version: 3.3.7
|
135
135
|
signing_key:
|
136
136
|
specification_version: 4
|
137
137
|
summary: Interface for the OpenSLP library
|
metadata.gz.sig
CHANGED
Binary file
|