findme 0.0.5 → 0.0.6
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.
- data/lib/findme.rb +24 -8
- data/lib/findme/version.rb +1 -1
- metadata +2 -2
data/lib/findme.rb
CHANGED
@@ -1,9 +1,9 @@
|
|
1
1
|
module Findme
|
2
|
-
|
2
|
+
|
3
3
|
AVAHI_SERVICE_DIR = "/etc/avahi/services/"
|
4
4
|
AVAHI_BROWSE = "/usr/bin/avahi-browse"
|
5
5
|
|
6
|
-
|
6
|
+
|
7
7
|
#return all the services running by avahi
|
8
8
|
def self.services
|
9
9
|
files_with_path = Dir.glob(AVAHI_SERVICE_DIR + "*.service")
|
@@ -28,7 +28,7 @@ module Findme
|
|
28
28
|
File.delete fs
|
29
29
|
end
|
30
30
|
end
|
31
|
-
|
31
|
+
|
32
32
|
def self._get_startup_time str
|
33
33
|
begin
|
34
34
|
pairs = str.strip.split(" ")
|
@@ -48,7 +48,7 @@ module Findme
|
|
48
48
|
services = discover
|
49
49
|
h = {}
|
50
50
|
h_out={}
|
51
|
-
|
51
|
+
|
52
52
|
#construct the hash, group the services of the same name
|
53
53
|
services.each do |s|
|
54
54
|
if h[s.service].nil?
|
@@ -57,7 +57,7 @@ module Findme
|
|
57
57
|
#existing hash, do nothing
|
58
58
|
end
|
59
59
|
h[s.service] << s
|
60
|
-
end
|
60
|
+
end
|
61
61
|
|
62
62
|
h.each do |k, v|
|
63
63
|
if (_get_startup_time v[0].txt).nil?
|
@@ -112,7 +112,7 @@ module Findme
|
|
112
112
|
end
|
113
113
|
|
114
114
|
|
115
|
-
def self.discover
|
115
|
+
def self.discover
|
116
116
|
res = `avahi-browse -arpt`
|
117
117
|
services = []
|
118
118
|
lines = res.split("\n")
|
@@ -147,7 +147,7 @@ module Findme
|
|
147
147
|
<name replace-wildcards="yes">%h</name>
|
148
148
|
|
149
149
|
<service protocol="' + protocol + '">
|
150
|
-
|
150
|
+
|
151
151
|
<type>'+ "_#{service_name}.#{type}" +'</type>
|
152
152
|
<port>'+ port.to_s + '</port>
|
153
153
|
<txt-record>' + txt.to_s + '</txt-record>
|
@@ -157,6 +157,18 @@ module Findme
|
|
157
157
|
File.open(AVAHI_SERVICE_DIR + service_name + ".service", "w" ){|f| f.write xml}
|
158
158
|
end
|
159
159
|
|
160
|
+
# Unregister a service, just remove .service file from avahi service directory.
|
161
|
+
# result: BOOLEAN, In most cases we don't care it.
|
162
|
+
def self.unregister service_name
|
163
|
+
service_file = AVAHI_SERVICE_DIR + service_name + ".service"
|
164
|
+
if File.exist? service_file
|
165
|
+
File.delete service_file
|
166
|
+
return true
|
167
|
+
end
|
168
|
+
rescue # Errno::EACCES: Permission denied
|
169
|
+
false
|
170
|
+
end
|
171
|
+
|
160
172
|
#find the mac address
|
161
173
|
def self.mac
|
162
174
|
return @mac_address if defined? @mac_address
|
@@ -170,7 +182,7 @@ module Findme
|
|
170
182
|
candidates = lines.map{|l| re.match( l )[1] rescue nil }.compact
|
171
183
|
@mac_address = candidates.first
|
172
184
|
end
|
173
|
-
|
185
|
+
|
174
186
|
def self.mac_short
|
175
187
|
self.mac.split(":").join("")
|
176
188
|
end
|
@@ -184,4 +196,8 @@ class AvahiService
|
|
184
196
|
[ip, port]
|
185
197
|
end
|
186
198
|
|
199
|
+
def inspect
|
200
|
+
"#<eth: #{eth}, ipv4: #{ipv4}, ip: #{ip}, hosttxt: #{hosttxt}, hostname: #{hostname}, port: #{port}, txt: #{txt}, service: #{service}>"
|
201
|
+
end
|
202
|
+
|
187
203
|
end
|
data/lib/findme/version.rb
CHANGED
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: findme
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0.
|
4
|
+
version: 0.0.6
|
5
5
|
prerelease:
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
@@ -9,7 +9,7 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date:
|
12
|
+
date: 2013-01-09 00:00:00.000000000 Z
|
13
13
|
dependencies: []
|
14
14
|
description: find neighborhood host and services with avahi / avahi-daemon. run this
|
15
15
|
for the first time to allow normal user to register services `sudo chmod a+w /etc/avahi/services/`
|