diff options
-rw-r--r-- | squid-controller.lua | 34 | ||||
-rw-r--r-- | squid-model.lua | 78 |
2 files changed, 58 insertions, 54 deletions
diff --git a/squid-controller.lua b/squid-controller.lua index 3f7f5f6..774ac2f 100644 --- a/squid-controller.lua +++ b/squid-controller.lua @@ -1,34 +1,34 @@ -- the squid controller -module (..., package.seeall) +local mymodule = {} -default_action = "status" +mymodule.default_action = "status" -status = function( self ) +mymodule.status = function( self ) return self.model.getstatus() end -startstop = function( self ) +mymodule.startstop = function( self ) return self.handle_form(self, self.model.get_startstop, self.model.startstop_service, self.clientdata) end -config = function( self ) +mymodule.config = function( self ) return self.handle_form(self, self.model.read_config, self.model.update_config, self.clientdata, "Save", "Edit Config", "Configuration Set") end -digest = function( self ) +mymodule.digest = function( self ) return self.handle_form(self, self.model.read_digest_userlist, self.model.update_digest_userlist, self.clientdata, "Save", "Edit User List", "User List Set") end -enabledigestlist = function( self ) +mymodule.enabledigestlist = function( self ) return self.handle_form(self, self.model.get_enable_digest_userlist, self.model.enable_digest_userlist, self.clientdata, "Enable", "Enable Digest User List", "Digest User List enabled") end -expert = function( self ) +mymodule.expert = function( self ) return self.handle_form(self, self.model.get_configfile, self.model.update_configfile, self.clientdata, "Save", "Edit Config", "Configuration Set") end --[[ -saccess = function( self ) +mymodule.saccess = function( self ) local service = { message="", status="", config="" } @@ -47,31 +47,33 @@ saccess = function( self ) return ( cfe ({ service = service }) ) end -listacls = function( self ) +mymodule.listacls = function( self ) return self.model.read_acls() end -editacl = function( self ) +mymodule.editacl = function( self ) return self.handle_form(self, function() return self.model.read_acl(self.clientdata.linenum) end, self.model.update_acl, self.clientdata, "Save", "Edit ACL", "ACL Saved") end -deleteacl = function( self ) +mymodule.deleteacl = function( self ) return self:redirect_to_referrer(self.model.delete_acl(self.clientdata.linenum)) end --]] -function listfiles(self) +function mymodule.listfiles(self) return self.model.listfiles(self) end -function createfile(self) +function mymodule.createfile(self) return self.handle_form(self, self.model.getnewfile, self.model.createfile, self.clientdata, "Create", "Create New Squid File", "Squid File Created") end -function editfile(self) +function mymodule.editfile(self) return self.handle_form(self, function() return self.model.readfile(self.clientdata.filename) end, self.model.updatefile, self.clientdata, "Save", "Edit Squid File", "Squid File Saved" ) end -function deletefile(self) +function mymodule.deletefile(self) return self.handle_form(self, self.model.getdeletefile, self.model.deletefile, self.clientdata, "Delete", "Delete Squid File", "Squid File Deleted") end + +return mymodule diff --git a/squid-model.lua b/squid-model.lua index 3fae971..1574966 100644 --- a/squid-model.lua +++ b/squid-model.lua @@ -1,5 +1,5 @@ -- acf model for squid -module (..., package.seeall) +local mymodule = {} -- Load libraries modelfunctions = require("modelfunctions") @@ -34,27 +34,27 @@ local validate_config = function(newconfig) return success, newconfig end -getstatus = function() +mymodule.getstatus = function() return modelfunctions.getstatus(processname, packagename, "Squid status") end -function get_startstop(self, clientdata) +function mymodule.get_startstop(self, clientdata) return modelfunctions.get_startstop(processname) end -function startstop_service(self, startstop, action) +function mymodule.startstop_service(self, startstop, action) return modelfunctions.startstop_service(startstop, action) end -get_configfile = function() +mymodule.get_configfile = function() return modelfunctions.getfiledetails(squidconf) end -update_configfile = function(self, filedetails) +mymodule.update_configfile = function(self, filedetails) return modelfunctions.setfiledetails(self, filedetails, {squidconf}) end -read_digest_userlist = function() +mymodule.read_digest_userlist = function() local retval = modelfunctions.getfiledetails(squiddigestusers) retval.value.filecontent.descr = "List of username:password(plaintext) entries, one per line." @@ -77,18 +77,18 @@ read_digest_userlist = function() return retval end -update_digest_userlist = function(self, userlistdetails) +mymodule.update_digest_userlist = function(self, userlistdetails) -- FIXME - validate modelfunctions.setfiledetails(self, userlistdetails, {squiddigestusers}) - return read_digest_userlist() + return mymodule.read_digest_userlist() end -get_enable_digest_userlist = function(self, clientdata) +mymodule.get_enable_digest_userlist = function(self, clientdata) local retval = {} return cfe({ type="group", value=retval, label="Enable Digest User List" }) end -enable_digest_userlist = function(self, endigest) +mymodule.enable_digest_userlist = function(self, endigest) configcontent = configcontent or fs.read_file(squidconf) or "" local newline = "auth_param digest program /usr/sbin/digest_pw_auth "..squiddigestusers @@ -126,27 +126,27 @@ enable_digest_userlist = function(self, endigest) end --[[ -get_saccess = function() +mymodule.get_saccess = function() local config = {} - config.s_ip = get_file_contents( "/etc/squid/anoniplist" ) - config.s_browser = get_file_contents( "/etc/squid/anonbrowserlist" ) - config.s_domain = get_file_contents( "/etc/squid/anondomainlist" ) + config.s_ip = mymodule.get_file_contents( "/etc/squid/anoniplist" ) + config.s_browser = mymodule.get_file_contents( "/etc/squid/anonbrowserlist" ) + config.s_domain = mymodule.get_file_contents( "/etc/squid/anondomainlist" ) return config end -update_saccess = function( config ) +mymodule.update_saccess = function( config ) - write_file_contents( "/etc/squid/anoniplist", config.s_ip ) - write_file_contents( "/etc/squid/anonbrowserlist", config.s_browser ) - write_file_contents( "/etc/squid/anondomainlist", config.s_domain ) + mymodule.write_file_contents( "/etc/squid/anoniplist", config.s_ip ) + mymodule.write_file_contents( "/etc/squid/anonbrowserlist", config.s_browser ) + mymodule.write_file_contents( "/etc/squid/anondomainlist", config.s_domain ) return end -write_file_contents = function( name, contents ) +mymodule.write_file_contents = function( name, contents ) local ptr = io.open( name, "wb+" ) if ptr ~= nil then @@ -157,7 +157,7 @@ write_file_contents = function( name, contents ) return end -get_file_contents = function( name ) +mymodule.get_file_contents = function( name ) local retval = "" @@ -174,7 +174,7 @@ get_file_contents = function( name ) end --]] -read_config = function() +mymodule.read_config = function() local retval = { httpports = { type="list", value={}, label="HTTP Ports", descr="List of port, IP:port, or hostname:port entries that Squid will listen on", seq=0 }, accesslog = { type="boolean", value=false, label="Log Access", seq=1 }, @@ -202,7 +202,7 @@ read_config = function() return cfe({ type="group", value=retval, label="Squid Config" }) end -update_config = function(self, newconfig) +mymodule.update_config = function(self, newconfig) local success, newconfig = validate_config(newconfig) local lastport, lastlog, lastcache, lastauth @@ -343,7 +343,7 @@ update_config = function(self, newconfig) return newconfig end --[[ -read_acls = function() +mymodule.read_acls = function() local acls = cfe({ type="structure", value={}, label="Squid Access Lists" }) configcontent = configcontent or fs.read_file(squidconf) or "" config = config or format.parse_linesandwords(configcontent) @@ -356,7 +356,7 @@ read_acls = function() return acls end -read_acl = function(linenum) +mymodule.read_acl = function(linenum) local line = cfe({ label="Squid Access List" }) local linecfe = cfe({ value=linenum, label="Line number" }) configcontent = configcontent or fs.read_file(squidconf) or "" @@ -364,7 +364,7 @@ read_acl = function(linenum) return cfe({ type="group", value={line=line, linenum=linecfe}, label="Squid Access List" }) end -update_acl = function(acl) +mymodule.update_acl = function(acl) -- local success, acl = validate_acl(acl) configcontent = configcontent or fs.read_file(squidconf) or "" configcontent = format.replaceline(configcontent, acl.value.linenum.value, acl.value.line.value) @@ -374,7 +374,7 @@ update_acl = function(acl) return acl end -create_acl = function(acl) +mymodule.create_acl = function(acl) -- local success, acl = validate_acl(acl) configcontent = configcontent or fs.read_file(squidconf) or "" config = config or format.parse_linesandwords(configcontent) @@ -395,7 +395,7 @@ create_acl = function(acl) return acl end -delete_acl = function(linenum) +mymodule.delete_acl = function(linenum) configcontent = configcontent or fs.read_file(squidconf) or "" configcontent = format.replaceline(configcontent, linenum) fs.write_file(squidconf, string.gsub(configcontent, "\n+$", "")) @@ -405,7 +405,7 @@ delete_acl = function(linenum) end --]] -function listfiles() +function mymodule.listfiles() local retval = cfe({ type="list", value={}, label="Squid Files" }) if not fs.is_dir(baseurl) then fs.create_directory(baseurl) end for file in posix.files(baseurl) do @@ -418,12 +418,12 @@ function listfiles() return retval end -function getnewfile() +function mymodule.getnewfile() local filename = cfe({ label="File Name", descr="Must be in "..baseurl }) return cfe({ type="group", value={filename=filename}, label="Squid File" }) end -function createfile(self, filedetails) +function mymodule.createfile(self, filedetails) local success = true local path = string.match(filedetails.value.filename.value, "^%s*(.*%S)%s*$") or "" if not string.find(path, "/") then @@ -450,24 +450,24 @@ function createfile(self, filedetails) return filedetails end -function readfile(filename) - return modelfunctions.getfiledetails(filename, listfiles().value) +function mymodule.readfile(filename) + return modelfunctions.getfiledetails(filename, mymodule.listfiles().value) end -function updatefile(self, filedetails) - return modelfunctions.setfiledetails(self, filedetails, listfiles().value) +function mymodule.updatefile(self, filedetails) + return modelfunctions.setfiledetails(self, filedetails, mymodule.listfiles().value) end -function getdeletefile(self, clientdata) +function mymodule.getdeletefile(self, clientdata) local retval = {} retval.filename = cfe({ value=clientdata.filename or "", label="File Name" }) return cfe({ type="group", value=retval, label="Delete Squid File" }) end -function deletefile(self, delfile) +function mymodule.deletefile(self, delfile) delfile.errtxt = "Failed to delete Squid File" delfile.value.filename.errtxt = "Invalid filename" - for i,file in ipairs(listfiles().value) do + for i,file in ipairs(mymodule.listfiles().value) do if delfile.value.filename.value == file then delfile.errtxt = nil delfile.value.filename.errtxt = nil @@ -478,3 +478,5 @@ function deletefile(self, delfile) return delfile end + +return mymodule |