summaryrefslogtreecommitdiffstats
path: root/qos-model.lua
diff options
context:
space:
mode:
authorTed Trask <ttrask01@yahoo.com>2012-07-30 15:06:58 +0000
committerTed Trask <ttrask01@yahoo.com>2012-07-30 15:06:58 +0000
commit330fdbd0d1ed33128d11ed22a83b8a4f720afd48 (patch)
tree8358463ddf6fa1ebae09c7d71a3c7853409fad05 /qos-model.lua
parentb332ed222b6b1be1257d297086e2ac4ddaca8ac7 (diff)
downloadacf-iproute2-qos-330fdbd0d1ed33128d11ed22a83b8a4f720afd48.tar.bz2
acf-iproute2-qos-330fdbd0d1ed33128d11ed22a83b8a4f720afd48.tar.xz
Fixed startstop and changed to startstopinterface, removed redirect_to_referrer, fixed calls to interfacescontroller, removed references to APP
Diffstat (limited to 'qos-model.lua')
-rw-r--r--qos-model.lua57
1 files changed, 33 insertions, 24 deletions
diff --git a/qos-model.lua b/qos-model.lua
index 029d934..584a3d5 100644
--- a/qos-model.lua
+++ b/qos-model.lua
@@ -2,6 +2,7 @@ module(..., package.seeall)
-- Load libraries
require("modelfunctions")
+require("processinfo")
fs = require("acf.fs")
format = require("acf.format")
@@ -19,9 +20,9 @@ local ints
-- ################################################################################
-- LOCAL FUNCTIONS
-local function list_interfaces()
+local function list_interfaces(self)
if not ints then
- local interfacescontroller = APP:new("alpine-baselayout/interfaces")
+ local interfacescontroller = self:new("alpine-baselayout/interfaces")
local interfaces = interfacescontroller.model.get_interfaces()
interfacescontroller:destroy()
ints = interfaces.value
@@ -34,18 +35,18 @@ local function validate_filename(filename)
end
-- modify /etc/network/interfaces with the up/down lines for ifb device
-local function modify_interfaces(DEV, IFB_DEV)
+local function modify_interfaces(self, DEV, IFB_DEV)
local up = "ip link set ifb%d+ up"
local down = "ip link set ifb%d+ down"
- local interfacescontroller = APP:new("alpine-baselayout/interfaces")
- local interface = interfacescontroller.model.get_iface_by_name(DEV)
+ local interfacescontroller = self:new("alpine-baselayout/interfaces")
+ local interface = interfacescontroller.model.get_iface_by_name(interfacescontroller, {name=DEV})
interface.value.up.value = string.gsub(interface.value.up.value, up, "")
interface.value.down.value = string.gsub(interface.value.down.value, down, "")
if IFB_DEV ~= "" then
interface.value.up.value = string.gsub(up, "ifb%%d%+", IFB_DEV) .. "\n" .. interface.value.up.value
interface.value.down.value = string.gsub(down, "ifb%%d%+", IFB_DEV) .. "\n" .. interface.value.down.value
end
- interfacescontroller.model.update_iface(interface)
+ interfacescontroller.model.update_iface(interfacescontroller, interface)
interfacescontroller:destroy()
end
@@ -53,7 +54,7 @@ end
-- PUBLIC FUNCTIONS
function get_startstop(self, clientdata)
- return modelfunctions.get_startstop(processname)
+ return modelfunctions.get_startstop(clientdata.init)
end
function startstop_service(self, startstop, action)
@@ -72,12 +73,12 @@ function getstatus()
return cfe({ type="group", value=status, label="QOS Status" })
end
-function listinterfacedetails()
+function listinterfacedetails(self)
local result = {}
local interface
- for i,int in ipairs(list_interfaces()) do
+ for i,int in ipairs(list_interfaces(self)) do
if interface ~= int then
- local temp = {interface=int, init=initscript.."."..int, enabled=true}
+ local temp = {interface=int, init=initscript.."."..int, filename=conffile.."."..int, enabled=true}
local status = modelfunctions.getenabled(temp.init)
temp.status = status.value
if status.errtxt then
@@ -90,13 +91,20 @@ function listinterfacedetails()
return cfe({ type="structure", value=result, label="QOS Interface List" })
end
-function enable(interface)
- local retval = cfe({ label="Enable QOS Result" })
+function get_enable(self, clientdata)
+ local retval = {}
+ retval.interface = cfe({ value=clientdata.interface or "", label="Interface" })
+ return cfe({ type="group", value=retval, label="Enable QOS on Interface" })
+end
+
+function enable(self, int_enable)
+ local interface = int_enable.value.interface.value
local init = initfile.."."..interface
+ int_enable.errtxt = "Failed to enable QOS"
if not posix.stat(initfile) then
- retval.errtxt = initfile.." does not exist"
+ int_enable.value.interface.errtxt = initfile.." does not exist"
elseif posix.stat(init) then
- retval.errtxt = init.." already exists"
+ int_enable.value.interface.errtxt = init.." already exists"
else
posix.link(initfile, init, true)
local conf = string.gsub(init, "init%.d", "conf.d")
@@ -109,25 +117,26 @@ function enable(interface)
fs.write_file(conf, filecontent)
end
local IFB_DEV = format.parse_ini_file(fs.read_file(conf) or "", "", "IFB_DEV") or ""
- modify_interfaces(interface, IFB_DEV)
- retval.value = "Enabled QOS on Interface"
+ modify_interfaces(self, interface, IFB_DEV)
+ int_enable.errtxt = nil
end
- return retval
+ return int_enable
end
-function get_filedetails(interface)
- return modelfunctions.getfiledetails(conffile.."."..interface, validate_filename)
+function get_filedetails(self, clientdata)
+ return modelfunctions.getfiledetails(clientdata.filename, validate_filename)
end
function update_filedetails(self, filedetails)
return modelfunctions.setfiledetails(self, filedetails, validate_filename)
end
-function get_config(interface)
+function get_config(self, clientdata)
+ local interface = clientdata.DEV
local config = {}
local ifbs = {""}
if not string.find(interface, "^ifb") then
- for i,int in ipairs(list_interfaces()) do
+ for i,int in ipairs(list_interfaces(self)) do
if string.find(int, "^ifb") then
ifbs[#ifbs+1] = int
end
@@ -144,7 +153,7 @@ function get_config(interface)
config.EGRESS_RATE = cfe({ value=configopts.EGRESS_RATE or "", label="Egress rate", descr="(units: mbps, mbit, kbit, kbps, bps)"})
config.DEV.errtxt = "Invalid device"
- for i,int in ipairs(list_interfaces()) do
+ for i,int in ipairs(list_interfaces(self)) do
if int == interface then
config.DEV.errtxt = nil
break
@@ -157,7 +166,7 @@ end
function update_config(self, config)
local success = false
config.value.DEV.errtxt = "Invalid device"
- for i,int in ipairs(list_interfaces()) do
+ for i,int in ipairs(list_interfaces(self)) do
if int == config.value.DEV.value then
config.value.DEV.errtxt = nil
success = true
@@ -213,7 +222,7 @@ function update_config(self, config)
fs.write_file(configfile, contents)
-- need to set lines in /etc/network/interfaces
- modify_interfaces(config.value.DEV.value, config.value.IFB_DEV.value)
+ modify_interfaces(self, config.value.DEV.value, config.value.IFB_DEV.value)
else
config.errtxt = "Failed to set config"
end