1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
|
-- acf model for /etc/dhcp/*
-- Copyright(c) 2007 A. Brodmann - Licensed under terms of GPL2
module (..., package.seeall)
local subnet = { }
local cfgdir = "/etc/dhcp/"
subnet_read = function( name )
local filename = cfgdir .. name .. ".subnet"
local net = { name = cfe({ type="message", value=name, label="Name" }),
defleasetime = cfe({ label="Default Lease Time" }),
maxleasetime = cfe({ label="Maximum Lease Time" }),
gateway = cfe({ label="Gateway"}),
domainname = cfe({ label="Domainname" }),
dnssrv1 = cfe({ label="DNS Server 1" }),
dnssrv2 = cfe({ label="DNS Server 2" }),
subnet = cfe({ label="Subnet" }),
netmask = cfe({ label="Netmask" }),
leaserangestart = cfe({ label="Lease Range Start" }),
leaserangeend = cfe({ label="Lease Range End" }),
wpad = cfe({ label="Web Proxy Auto Discovery" })
}
for line in io.lines(filename) do
if (string.sub(line, 1, 15) == "def-lease-time:") then
net.defleasetime.value = string.sub(line, 17)
elseif (string.sub(line, 1, 15) == "max-lease-time:") then
net.maxleasetime.value = string.sub(line, 17)
elseif (string.sub(line, 1, 8) == "gateway:") then
net.gateway.value = string.sub(line, 10)
elseif (string.sub(line, 1, 12) == "domain-name:") then
net.domainname.value = string.sub(line, 14)
elseif (string.sub(line, 1, 10) == "dns-srv-1:") then
net.dnssrv1.value = string.sub(line, 12)
elseif (string.sub(line, 1, 10) == "dns-srv-2:") then
net.dnssrv2.value = string.sub(line, 12)
elseif (string.sub(line, 1, 7) == "subnet:") then
net.subnet.value = string.sub(line, 9)
elseif (string.sub(line, 1, 8) == "netmask:") then
net.netmask.value = string.sub(line, 10)
elseif (string.sub(line, 1, 18) == "lease-range-start:") then
net.leaserangestart.value = string.sub(line, 20)
elseif (string.sub(line, 1, 16) == "lease-range-end:") then
net.leaserangeend.value = string.sub(line, 18)
elseif (string.sub(line, 1, 5) == "wpad:") then
net.wpad.value = string.sub(line, 7)
end
end
return net
end
subnet_write = function( net )
local filename = cfgdir .. net.name.value .. ".subnet"
local file = io.open( filename, "w+" )
file:write( "def-lease-time: " .. net.defleasetime.value .. "\n" )
file:write( "max-lease-time: " .. net.maxleasetime.value .. "\n" )
file:write( "gateway: " .. net.gateway.value .. "\n" )
file:write( "domain-name: " .. net.domainname.value .. "\n" )
file:write( "dns-srv-1: " .. net.dnssrv1.value .. "\n" )
file:write( "dns-srv-2: " .. net.dnssrv2.value .. "\n" )
file:write( "subnet: " .. net.subnet.value .. "\n" )
file:write( "netmask: " .. net.netmask.value .. "\n" )
file:write( "lease-range-start: " .. net.leaserangestart.value .. "\n" )
file:write( "lease-range-end: " .. net.leaserangeend.value .. "\n" )
file:write( "wpad: " .. net.wpad.value .. "\n" )
file:close()
return net
end
read_file = function ( filename )
local contents = ""
local line = ""
local file = io.open( filename, "r" )
if file ~= nil then
line = file:read( "*l" )
while line ~= nil do
contents = contents .. "\n" .. line
line = file:read( "*l" )
end
file:close()
else
contents = "\n Error: File not found!\n\n"
end
return contents
end
is_running = function( process )
local retval = false
local file = io.popen("pidof " .. process)
if file ~= nil then
local line = file:read( "*l" )
file:close()
if #line > 0 then
retval = true
end
end
return retval
end
get_dhcpd_version = function()
local retval = "dhcpd"
local file = io.popen("/usr/sbin/dhcpd --version")
if file ~= nil then
local line = file:read( "*a" )
if #line > 0 then
retval = line
end
file:close()
end
return retval
end
service_control = function ( command )
local retval = ""
local line = ""
local file = io.popen( "/etc/init.d/dhcpd " .. command )
if file ~= nil then
line = file:read( "*l" )
while line ~= nil do
retval = retval .. "\n" .. line
line = file:read( "*l" )
end
file:close()
end
return retval
end
function nonil( value )
local retval = ""
if value ~= nil then
retval = value
end
return retval
end
|