diff options
author | Ted Trask <ttrask01@yahoo.com> | 2010-08-25 10:26:36 +0000 |
---|---|---|
committer | Ted Trask <ttrask01@yahoo.com> | 2010-08-25 10:26:36 +0000 |
commit | b7f8f377687d5d898cdd581d8d5de44ae95ab7a0 (patch) | |
tree | cf494d6e7f54949cee64bb9186949d26765102ad | |
parent | 9a0f90972bf1fe723caa55fecb684788933679b9 (diff) | |
download | acf-freeswitch-b7f8f377687d5d898cdd581d8d5de44ae95ab7a0.tar.bz2 acf-freeswitch-b7f8f377687d5d898cdd581d8d5de44ae95ab7a0.tar.xz |
Added ability to create and delete configuration files.
Changed edit action to editfile.
-rw-r--r-- | freeswitch-controller.lua | 10 | ||||
l--------- | freeswitch-createfile-html.lsp | 1 | ||||
l--------- | freeswitch-editfile-html.lsp (renamed from freeswitch-edit-html.lsp) | 0 | ||||
-rw-r--r-- | freeswitch-listfiles-html.lsp | 32 | ||||
-rw-r--r-- | freeswitch-logfile-html.lsp | 7 | ||||
-rw-r--r-- | freeswitch-model.lua | 46 | ||||
-rw-r--r-- | freeswitch.menu | 1 | ||||
-rw-r--r-- | freeswitch.roles | 6 |
8 files changed, 93 insertions, 10 deletions
diff --git a/freeswitch-controller.lua b/freeswitch-controller.lua index 04d6ea7..6b459cd 100644 --- a/freeswitch-controller.lua +++ b/freeswitch-controller.lua @@ -16,6 +16,14 @@ listfiles = function( self ) return self.model.list_files() end -edit = function( self ) +editfile = function( self ) return controllerfunctions.handle_form(self, function() return self.model.get_file(self.clientdata.filename) end, self.model.update_file, self.clientdata, "Save", "Edit File", "File Saved") end + +function createfile(self) + return controllerfunctions.handle_form(self, self.model.getnewfile, self.model.createfile, self.clientdata, "Create", "Create New Freeswitch File", "Freeswitch File Created") +end + +function deletefile(self) + return self:redirect_to_referrer(self.model.deletefile(self.clientdata.filename)) +end diff --git a/freeswitch-createfile-html.lsp b/freeswitch-createfile-html.lsp new file mode 120000 index 0000000..b532216 --- /dev/null +++ b/freeswitch-createfile-html.lsp @@ -0,0 +1 @@ +../form-html.lap
\ No newline at end of file diff --git a/freeswitch-edit-html.lsp b/freeswitch-editfile-html.lsp index 15b1930..15b1930 120000 --- a/freeswitch-edit-html.lsp +++ b/freeswitch-editfile-html.lsp diff --git a/freeswitch-listfiles-html.lsp b/freeswitch-listfiles-html.lsp index caff231..3c96bad 100644 --- a/freeswitch-listfiles-html.lsp +++ b/freeswitch-listfiles-html.lsp @@ -2,7 +2,8 @@ require("viewfunctions") %> -<% displaycommandresults({"edit", "startstop"}, session) %> +<% displaycommandresults({"editfile", "deletefile", "startstop"}, session) %> +<% displaycommandresults({"createfile"}, session, true) %> <% if viewlibrary and viewlibrary.dispatch_component then viewlibrary.dispatch_component("status") @@ -11,18 +12,37 @@ end %> <h1>Configuration</h1> <DL><TABLE> <TR style="background:#eee;font-weight:bold;"> + <TD style="padding-right:20px;white-space:nowrap;text-align:left;" class="header">Action</TD> <TD style="padding-right:20px;white-space:nowrap;text-align:left;" class="header">File</TD> <TD style="padding-right:20px;white-space:nowrap;text-align:left;" class="header">Size</TD> <TD style="white-space:nowrap;text-align:left;" class="header">Last Modified</TD> </TR> -<% - for k,v in ipairs( view.value ) do - io.write( "<tr><td><a href=\"" .. html.html_escape(page_info.script .. page_info.prefix .. page_info.controller) .. "/edit?filename=" .. html.html_escape(v.filename) .. "&redir=" .. html.html_escape(page_info.orig_action) .. "\">" .. html.html_escape(v.filename) .. "</a></td><td>" .. html.html_escape(v.size) .."</td><td>" .. html.html_escape(v.mtime) .."</td></tr>\n" ) - end -%> +<% for k,v in ipairs( view.value ) do %> + <TR> + <TD style="padding-right:20px;white-space:nowrap;"> + <% if viewlibrary.check_permission("editfile") then %> + <%= html.link{value=page_info.script..page_info.prefix..page_info.controller.."/editfile?filename="..v.filename.."&redir="..page_info.orig_action, label="Edit "} %> + <% end %> + <% if viewlibrary.check_permission("deletefile") then %> + <%= html.link{value=page_info.script..page_info.prefix..page_info.controller.."/deletefile?filename="..v.filename, label="Delete "} %> + <% end %> + </TD> + <TD style="padding-right:20px;white-space:nowrap;text-align:left;"><%= html.html_escape(v.filename) %></TD> + <TD style="padding-right:20px;white-space:nowrap;text-align:left;"><%= html.html_escape(v.size) %></TD> + <TD style="white-space:nowrap;"><%= html.html_escape(v.mtime) %></TD> + </TR> +<% end %> </TABLE></DL> +<% if viewlibrary and viewlibrary.dispatch_component and viewlibrary.check_permission("createfile") then + local createform = viewlibrary.dispatch_component("createfile", nil, true) %> +<H2><%= html.html_escape(createform.label) %></H2> +<% + createform.action = page_info.script .. page_info.prefix .. page_info.controller .. "/createfile" + displayform(createform) +end %> + <% if viewlibrary and viewlibrary.dispatch_component then viewlibrary.dispatch_component("startstop") end %> diff --git a/freeswitch-logfile-html.lsp b/freeswitch-logfile-html.lsp new file mode 100644 index 0000000..4dcc8d0 --- /dev/null +++ b/freeswitch-logfile-html.lsp @@ -0,0 +1,7 @@ +<% local data, viewlibrary = ... +require("viewfunctions") +%> + +<% if viewlibrary and viewlibrary.dispatch_component then + viewlibrary.dispatch_component("alpine-baselayout/logfiles/view", {name="/var/log/freeswitch/freeswitch.log"}) +end %> diff --git a/freeswitch-model.lua b/freeswitch-model.lua index 3095cde..149bf32 100644 --- a/freeswitch-model.lua +++ b/freeswitch-model.lua @@ -56,3 +56,49 @@ list_files = function() table.sort(retval, function(a,b) return a.filename < b.filename end) return cfe({ type="structure", value=retval, label="List of Freeswitch files" }) end + +function getnewfile() + local filename = cfe({ label="File Name", descr="Must be in "..baseurl }) + return cfe({ type="group", value={filename=filename}, label="Freeswitch File" }) +end + +function createfile(filedetails) + local success = true + local path = string.match(filedetails.value.filename.value, "^%s*(.*%S)%s*$") or "" + if not string.find(path, "/") then + path = baseurl.."/"..path + end + + if not is_valid_filename(path) then + success = false + filedetails.value.filename.errtxt = "Invalid filename" + else + if not fs.is_dir(baseurl) then fs.create_directory(baseurl) end + if posix.stat(path) then + success = false + filedetails.value.filename.errtxt = "Filename already exists" + end + end + + if success then + fs.create_file(path) + else + filedetails.errtxt = "Failed to Create File" + end + + return filedetails +end + +function deletefile(filename) + local retval = cfe({ label="Delete Freeswitch File result", errtxt = "Failed to delete Freeswitch File - invalid filename" }) + for i,file in ipairs(list_files().value) do + if filename == file.filename then + retval.value = "Deleted Freeswitch File" + retval.errtxt = nil + os.remove(filename) + break + end + end + + return retval +end diff --git a/freeswitch.menu b/freeswitch.menu index 0cb8d87..eeca02f 100644 --- a/freeswitch.menu +++ b/freeswitch.menu @@ -2,3 +2,4 @@ # Cat Group Tab Action Applications 87Freeswitch Status status Applications 87Freeswitch Expert listfiles +Applications 87Freeswitch Logfile logfile diff --git a/freeswitch.roles b/freeswitch.roles index e4a48cf..ce0c26e 100644 --- a/freeswitch.roles +++ b/freeswitch.roles @@ -1,3 +1,3 @@ -USER=freeswitch:status,freeswitch:startstop -EXPERT=freeswitch:listfiles,freeswitch:edit -ADMIN=freeswitch:status,freeswitch:startstop,freeswitch:listfiles,freeswitch:edit +USER=freeswitch:status,freeswitch:startstop,freeswitch:logfile +EXPERT=freeswitch:listfiles,freeswitch:editfile,freeswitch:createfile,freeswitch:deletefile +ADMIN=freeswitch:status,freeswitch:startstop,freeswitch:logfile,freeswitch:listfiles,freeswitch:editfile,freeswitch:createfile,freeswitch:deletefile |