OC-DSS2/OpenOS/server/usr/bin/addalias.lua

40 lines
810 B
Lua

local component = require "component"
local sides = require "sides"
local tA = {...}
if #tA < 3 then
io.stderr:write("usage: addalias <address> <side> <hostname>")
return
end
local alines = {}
local f = io.open("/etc/talias","rb")
if f then
for line in f:lines() do
local lt = {}
for word in line:gmatch("%S+") do
lt[#lt+1] = word
end
alines[string.format("%s\t%s",table.remove(lt,1), table.remove(lt,1))] = lt
end
f:close()
end
local addr = component.get(tA[1])
local side = tonumber(tA[2]) or sides[tA[2]]
local aname = string.format("%s\t%s",addr,side)
alines[aname] = alines[aname] or {}
alines[aname][#alines[aname]+1] = tA[3]
local f = io.open("/etc/talias","wb")
for k,v in pairs(alines) do
f:write(k)
for _,w in ipairs(v) do
f:write("\t"..w)
end
f:write("\n")
end
f:close()