Class: Resolv::Hosts
- Inherits:
-
Object
- Object
- Resolv::Hosts
- Defined in:
- lib/resolv.rb
Constant Summary collapse
- DefaultFileName =
'/etc/hosts'
Instance Method Summary collapse
- #each_address(name, &proc) ⇒ Object
- #each_name(address, &proc) ⇒ Object
- #getaddress(name) ⇒ Object
- #getaddresses(name) ⇒ Object
- #getname(address) ⇒ Object
- #getnames(address) ⇒ Object
-
#initialize(filename = DefaultFileName) ⇒ Hosts
constructor
A new instance of Hosts.
- #lazy_initialize ⇒ Object
Constructor Details
#initialize(filename = DefaultFileName) ⇒ Hosts
Returns a new instance of Hosts.
288 289 290 291 292 |
# File 'lib/resolv.rb', line 288 def initialize(filename = DefaultFileName) @filename = filename @mutex = Mutex.new @initialized = nil end |
Instance Method Details
#each_address(name, &proc) ⇒ Object
336 337 338 339 340 341 |
# File 'lib/resolv.rb', line 336 def each_address(name, &proc) lazy_initialize if @name2addr.include?(name) @name2addr[name].each(&proc) end end |
#each_name(address, &proc) ⇒ Object
354 355 356 357 358 359 |
# File 'lib/resolv.rb', line 354 def each_name(address, &proc) lazy_initialize if @addr2name.include?(address) @addr2name[address].each(&proc) end end |
#getaddress(name) ⇒ Object
325 326 327 328 |
# File 'lib/resolv.rb', line 325 def getaddress(name) each_address(name) {|address| return address} raise ResolvError.new("#{@filename} has no name: #{name}") end |
#getaddresses(name) ⇒ Object
330 331 332 333 334 |
# File 'lib/resolv.rb', line 330 def getaddresses(name) ret = [] each_address(name) {|address| ret << address} return ret end |
#getname(address) ⇒ Object
343 344 345 346 |
# File 'lib/resolv.rb', line 343 def getname(address) each_name(address) {|name| return name} raise ResolvError.new("#{@filename} has no address: #{address}") end |
#getnames(address) ⇒ Object
348 349 350 351 352 |
# File 'lib/resolv.rb', line 348 def getnames(address) ret = [] each_name(address) {|name| ret << name} return ret end |
#lazy_initialize ⇒ Object
294 295 296 297 298 299 300 301 302 303 304 305 306 307 308 309 310 311 312 313 314 315 316 317 318 319 320 321 322 323 |
# File 'lib/resolv.rb', line 294 def lazy_initialize @mutex.synchronize { unless @initialized @name2addr = {} @addr2name = {} open(@filename) {|f| f.each {|line| line.sub!(/#.*/, '') addr, hostname, *aliases = line.split(/\s+/) next unless addr addr.untaint hostname.untaint @addr2name[addr] = [] unless @addr2name.include? addr @addr2name[addr] << hostname @addr2name[addr] += aliases @name2addr[hostname] = [] unless @name2addr.include? hostname @name2addr[hostname] << addr aliases.each {|n| n.untaint @name2addr[n] = [] unless @name2addr.include? n @name2addr[n] << addr } } } @name2addr.each {|name, arr| arr.reverse!} @initialized = true end } self end |