diff options
author | Ted Trask <ttrask01@yahoo.com> | 2008-05-30 18:37:19 +0000 |
---|---|---|
committer | Ted Trask <ttrask01@yahoo.com> | 2008-05-30 18:37:19 +0000 |
commit | a280c3b1faa2847b6d4f850a55d0cd4ea8453283 (patch) | |
tree | 762cd65291ba792b83e462f746e41b7381bb9d66 /interfaces-controller.lua | |
parent | 6c63347a6ae2f25de2bf8cf9aea93ea31a786418 (diff) | |
download | acf-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.lua | 194 |
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 |