Sha256: ce4f4b4fff58b36d6b55e7aaacf47a49243d0f2d86b6e84f75cf29e6c7c549d0

Contents?: true

Size: 1.25 KB

Versions: 4

Compression:

Stored size: 1.25 KB

Contents

=begin rdoc
  Columbus Dns-sd lookup
  
  Server
=end
module Columbus
  class Server
    class << self
      
      attr_accessor :name, :description
      
      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
      
      def text_record
        @text_record = DNSSD::TextRecord.new
        @text_record['description'] = @description || map_ip_to_interface[@interface]
        @text_record
      end
      
      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
      
      def ifconfig
        %x{ifconfig}
      end
      
    end
  end
end

Version data entries

4 entries across 4 versions & 1 rubygems

Version Path
auser-columbus-0.0.3 lib/columbus/server.rb
auser-columbus-0.0.4 lib/columbus/server.rb
auser-columbus-0.0.5 lib/columbus/server.rb
auser-columbus-0.0.6 lib/columbus/server.rb