Class: Columbus::Server

Inherits:
Object
  • Object
show all
Defined in:
lib/columbus/server.rb

Class Attribute Summary collapse

Class Method Summary collapse

Class Attribute Details

.descriptionObject

Returns the value of attribute description.



10
11
12
# File 'lib/columbus/server.rb', line 10

def description
  @description
end

.nameObject

Returns the value of attribute name.



10
11
12
# File 'lib/columbus/server.rb', line 10

def name
  @name
end

Class Method Details

.announce(interface = "vmnet8", t = "_presence", proto = "tcp", port = 9419) ⇒ Object



12
13
14
15
16
17
18
19
20
# File 'lib/columbus/server.rb', line 12

def announce(interface="vmnet8", t="_presence", proto="tcp", port=9419)
  @interface = interface
  while true do
    DNSSD.register(name, "#{t}._#{proto}", 'local', port, text_record.encode) do |rr|
      vprint "."
    end
    sleep(90)
  end
end

.ifconfigObject



44
45
46
# File 'lib/columbus/server.rb', line 44

def ifconfig
  %x{ifconfig}
end

.map_ip_to_interface(str = ifconfig) ⇒ Object



28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
# File 'lib/columbus/server.rb', line 28

def map_ip_to_interface(str=ifconfig)
  out = {}
  @current_interface = nil
  str.split("\n").collect do |line|          
    iface = line.match(/^([a-zA-Z]+(\d)+)(:)?/)
    @current_interface = iface.captures.first.to_s if iface

    ip = line.match(/inet (addr:)?(\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3})/i)
    if ip && @current_interface
      ip = ip.captures.compact.to_s.gsub(/addr:/, '')
      out.merge!({@current_interface => ip})
    end
  end
  out
end

.text_recordObject



22
23
24
25
26
# File 'lib/columbus/server.rb', line 22

def text_record
  @text_record = DNSSD::TextRecord.new
  @text_record['description'] = @description || map_ip_to_interface[@interface]
  @text_record
end