dns.lua hinzugefügt
This commit is contained in:
38
dns.lua
Normal file
38
dns.lua
Normal file
@@ -0,0 +1,38 @@
|
||||
local event = require("event")
|
||||
local minitel = require("minitel")
|
||||
local computer = require("computer")
|
||||
|
||||
local target = ...
|
||||
if not target then
|
||||
io.stderr:write("Usage: resolve <hostname>\n")
|
||||
return
|
||||
end
|
||||
|
||||
local GATEWAY = "home1"
|
||||
local PORT = 5353
|
||||
|
||||
-- eigenen Namen holen
|
||||
local f = io.open("/etc/hostname", "r")
|
||||
local me = f and f:read("*l") or "client"
|
||||
if f then f:close() end
|
||||
|
||||
-- Anfrage senden
|
||||
minitel.usend(GATEWAY, PORT, "Q " .. target .. " " .. me)
|
||||
|
||||
-- auf Antwort warten
|
||||
local deadline = computer.uptime() + 3
|
||||
while computer.uptime() < deadline do
|
||||
local _, from, port, data = event.pull(deadline - computer.uptime(), "net_msg")
|
||||
if port == PORT and type(data) == "string" then
|
||||
local cmd, a, b = data:match("^(%S+)%s+(%S+)%s*(%S*)")
|
||||
if cmd == "A" and a == target then
|
||||
print(b) -- b = Hardware-UUID
|
||||
return
|
||||
elseif cmd == "NX" and a == target then
|
||||
print("NXDOMAIN: " .. target)
|
||||
return
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
print("Timeout")
|
||||
Reference in New Issue
Block a user