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
|
module(..., package.seeall)
-- This is the object/text used when we want to add a new record
require("format")
local newrecordtxt = "[New]"
local list_redir = function (self)
self.conf.action = "status"
self.conf.type = "redir"
error (self.conf)
end
mvc = {}
mvc.on_load = function(self, parent)
if (self.worker[self.conf.action] == nil ) or ( self.conf.action == "init" ) then
self.worker[self.conf.action] = list_redir(self)
end
end
local function displaycmdmanagement(disablestart,disablestop,disablerestart)
-- Add a management buttons
local management = {}
management.start = cfe({ name="cmdmanagement",
label="Program control-panel",
value="Start",
type="submit",
})
management.stop = cfe({ name="cmdmanagement",
label="Program control-panel",
value="Stop",
type="submit",
})
management.restart = cfe({ name="cmdmanagement",
label="Program control-panel",
value="Restart",
type="submit",
})
-- Disable management buttons based on if the process is running or not
if (disablestart) then management.start.disabled = "yes" end
if (disablestop) then management.stop.disabled = "yes" end
if (disablerestart) then management.restart.disabled = "yes" end
return management
end
-- ################################################################################
-- PUBLIC FUNCTIONS
function status(self)
return { status=self.model.getstatus() }
end
expert = function (self)
local modifications = self.clientdata.filecontent or ""
if ( self.clientdata.cmdsave ) then
modifications = self.model:update_filecontent(modifications)
end
local url = ENV["SCRIPT_NAME"] .. self.conf.prefix .. self.conf.controller
-- Start/Stop/Restart process
local cmdmanagement
if ( self.clientdata.cmdmanagement) then
cmdmanagement = cfe({
name="cmdmanagement",
label="Previous action result",
action=cfe({
name="cmdmanagement",
value=string.lower(self.clientdata.cmdmanagement), -- This row contains start/stop/restart (one of these commands)
}),
})
local actionresult, cmdmanagement = self.model:startstop_service( cmdmanagement.action )
end
local status=self.model.getstatus()
local file = self.model:get_filedetails()
-- Add buttons
file.cmdsave = cfe ({
name="cmdsave",
label="Apply settings",
value="Apply",
type="submit",
})
if (self.clientdata.cmdsave) then
file.cmdsave.descr="* Changes has been saved!"
end
-- Management buttons
local disablestart,disablestop,disablerestart
-- Disable management buttons based on if the process is running or not
if (string.lower(status.status.value) == "enabled" ) then
disablestart = "yes"
else
disablestop = "yes"
end
-- Display management buttons
management = displaycmdmanagement(disablestart,disablestop,disablerestart)
return ( {
status = status,
file = file,
modifications = modifications,
management = management,
cmdmanagement = cmdmanagement,
url = url, } )
end
logfile = function (self)
local status=self.model.getstatus()
local logfile = self.model:get_logfile()
return ({
status = status,
logfile = logfile,
url = url,
})
end
|