summaryrefslogtreecommitdiffstats
path: root/interfaces-controller.lua
diff options
context:
space:
mode:
authorTed Trask <ttrask01@yahoo.com>2008-05-30 18:37:19 +0000
committerTed Trask <ttrask01@yahoo.com>2008-05-30 18:37:19 +0000
commita280c3b1faa2847b6d4f850a55d0cd4ea8453283 (patch)
tree762cd65291ba792b83e462f746e41b7381bb9d66 /interfaces-controller.lua
parent6c63347a6ae2f25de2bf8cf9aea93ea31a786418 (diff)
downloadacf-alpine-baselayout-a280c3b1faa2847b6d4f850a55d0cd4ea8453283.tar.bz2
acf-alpine-baselayout-a280c3b1faa2847b6d4f850a55d0cd4ea8453283.tar.xz
Updated interfaces to use new cfe model, add more iface families, add more flexibility to editing, show ip status, bring up/down interfaces, and general cleanup.
git-svn-id: svn://svn.alpinelinux.org/acf/alpine-baselayout/trunk@1191 ab2d0c66-481e-0410-8bed-d214d4d58bed
Diffstat (limited to 'interfaces-controller.lua')
-rw-r--r--interfaces-controller.lua194
1 files changed, 80 insertions, 114 deletions
diff --git a/interfaces-controller.lua b/interfaces-controller.lua
index d2866db..1a3a725 100644
--- a/interfaces-controller.lua
+++ b/interfaces-controller.lua
@@ -4,166 +4,132 @@ module (..., package.seeall)
default_action = "read"
-read = function (self )
- local iface = self.model.get_all_interfaces()
- local status = self.model.get_status()
- -- these actions are available for each interface
- -- **FIXME** This is technically wrong. The controller should pass
- -- the "script" "prefix" "controller" "action" as separate fields,
- -- since the view could be a cli, not a web interface. the VIEW
- -- should make a uri from these these elements.
- local actions = { link = self.conf.script .. self.conf.prefix ..
- self.conf.controller .. "/",
- action = { "create", "read", "update", "delete" } }
- return ( { actions = actions, iface = iface, status=status } )
+status = function (self)
+ return self.model.get_status()
end
-config = function (self )
- local config = read(self)
- for k,v in pairs(config.iface) do
- v['edit']=cfe(
- {name="edit",
- label="Edit this record",
- value="Edit",
- type="link",
- })
+read = function (self)
+ local cmdresult
+ if self.sessiondata.cmdresult then
+ cmdresult = self.sessiondata.cmdresult
end
- return ( config )
+ self.sessiondata.cmdresult = nil
+
+ local retval = self.model.get_all_interfaces()
+ retval.value.cmdresult = cmdresult
+ return retval
end
-- Accepts form info
-- Returns a cfe object (the form)
update = function(self)
- local iface = self.clientdata.iface or ""
- local result
- local data
+ local name = self.clientdata.name or ""
-- If interface is not found, return to list
- result, data = self.model.get_iface_by_name ( iface )
- if result == false then
+ local data = self.model.get_iface_by_name ( name )
+ if data.value.name.value == "" then
redirect(self)
end
- -- If the "cmd" button was used, then attempt to do the update
- if self.clientdata.cmd then
+ -- If the "Save" button was used, then attempt to do the update
+ if self.clientdata.Save then
-- update the iface info the form gave us
- for k,v in pairs (data) do
- if self.clientdata[k] then
- data[k].value = self.clientdata[k]
+ for k,v in pairs (data.value) do
+ if v.type == "boolean" then
+ if self.clientdata[k] then
+ v.value = true
+ else
+ v.value = false
+ end
+ elseif self.clientdata[k] then
+ v.value = self.clientdata[k]
end
end
- result, data = self.model.update_iface_by_name ( data, data.name.value )
+ data = self.model.update_iface ( data )
-- If validation worked then return to list
- if result == true then
- redirect(self)
+ if not data.errtxt then
+ data.descr = "Updated Interface"
end
end
- -- If the "cmddelete" button was used, then attempt to delete the interface
- if self.clientdata.cmddelete then
- self.conf.action = "delete?iface=" .. tostring(self.clientdata.name)
- self.conf.type = "redir"
- error (self.conf)
- end
-
- -- Hide the 'name' field
- data.name.type="hidden"
-
-- If we reach this point in the function, then we are providing a form
-- for the user to edit (either first time in, or validation failed)
+ data.type = "form"
+ data.option = "Save"
+ data.label = "Update Interface"
- -- Add a command button
- data.cmd = cfe({type="action", value="Save", name="cmd", label="Save/Apply above settings"})
-
- -- Add a delete button
- data.cmddelete = cfe({type="action", value="Delete", name="cmddelete", label="Delete this record"})
-
- return ( cfe ({type="form",
- option={ script=self.conf.script,
- prefix=self.conf.prefix,
- controller = self.conf.controller,
- action = "update",
- extra = "?iface=" .. data.name.value },
- value = data,
- clientdata=clientdata,
- } ) )
+ return data
end
-
-
delete = function(self)
- local iface = self.clientdata.iface or ""
- local result
- local data
+ local name = self.clientdata.name or ""
- -- If the interface doesn't exist, return to the list now
- result, data = self.model.get_iface_by_name ( iface )
- if result == false then
- redirect(self)
- end
-
+ -- Attempt to delete the iface
+ local cmdresult = self.model.delete_iface_by_name (name)
+ self.sessiondata.cmdresult = cmdresult
+ redirect_to_referrer(self)
+end
- -- If the cmd button was pressed, then commit the change
- if self.clientdata.cmd then
- if self.clientdata.cmd == "delete" then
- self.model.delete_iface_by_name (iface)
- end
- redirect(self)
- end
+ifup = function(self)
+ local name = self.clientdata.name or ""
- -- Otherwise, return a form
- local me = {}
- me.iface = cfe({name="iface", type="hidden", value = (self.clientdata.iface or "") })
- me.action1 = cfe({name="cmd", type="action", value="delete", label="action"})
- me.action2 = cfe({name="cmd", type="action", value="cancel", label="action"})
-
- return ( cfe ({type="form",
- option={ script=self.conf.script,
- prefix=self.conf.prefix,
- controller = self.conf.controller,
- action = "delete",
- extra = "?iface=" .. (self.clientdata.iface or "") },
- value = me,
- clientdata=clientdata,
- iface=iface,
- } ) )
+ -- Attempt to delete the iface
+ local cmdresult = self.model.ifup_by_name (name)
+ self.sessiondata.cmdresult = cmdresult
+ redirect_to_referrer(self)
end
+ifdown = function(self)
+ local name = self.clientdata.name or ""
+ -- Attempt to delete the iface
+ local cmdresult = self.model.ifdown_by_name (name)
+ self.sessiondata.cmdresult = cmdresult
+ redirect_to_referrer(self)
+end
create = function(self)
- local iface = self.clientdata.iface or ""
- local index = 0
- local result, data = self.model.get_iface_by_name ()
+ local data = self.model.get_iface (self.clientdata.family, self.clientdata.method)
- -- If the "cmd" button was used, then attempt to do the insert
- if self.clientdata.cmd then
- for k,v in pairs (data) do
+ -- If the "Create" button was used, then attempt to do the insert
+ if self.clientdata.Create then
+ for k,v in pairs (data.value) do
if self.clientdata[k] then
- data[k].value = self.clientdata[k]
+ v.value = self.clientdata[k]
end
end
- result, data = self.model.create_iface_by_name ( iface, data )
- if result then
- redirect(self)
+ data = self.model.create_iface ( data )
+ if not data.errtxt then
+ data.descr = "Created Interface"
+ redirect(self, "update?name="..data.value.name.value)
+ elseif data.value.method.value == "" then
+ data.value.method.errtxt = "Must define method"
end
end
-- If we reach this point in the function, we are providing a form
+ data.type = "form"
+ data.option = "Create"
+ data.label = "Create Interface"
- -- Add a command button
- data.cmd = cfe({type="action", value="save", label="action"})
-
- return ( cfe ({type="form",
- option={ script=self.conf.script,
- prefix=self.conf.prefix,
- controller = self.conf.controller,
- action = "create",
- extra = "?iface=" .. iface or "" },
- value = data} ) )
+ return data
end
+editintfile = function(self)
+ local data = self.model.get_file()
+
+ if self.clientdata.Save then
+ data.value.filecontent.value = self.clientdata.filecontent
+ data = self.model.write_file(data)
+ data.descr = "Saved file"
+ end
+ data.type = "form"
+ data.option = "Save"
+ data.label = "Edit Interfaces file"
+
+ return data
+end