diff options
author | Kim Alvefur <zash@zash.se> | 2013-05-07 17:17:32 +0200 |
---|---|---|
committer | Kim Alvefur <zash@zash.se> | 2013-05-07 17:17:32 +0200 |
commit | e96ad0ba45eced5266183378566bdf25ee041dde (patch) | |
tree | d9d7540d13a8f11cafcf89a9e457ce4ae6bae0ce | |
parent | da37f7a74b5c7e148d1302a819640211d1e268a6 (diff) | |
download | prosody-e96ad0ba45eced5266183378566bdf25ee041dde.tar.gz prosody-e96ad0ba45eced5266183378566bdf25ee041dde.zip |
mod_admin_telnet: Add some DNS commands.
-rw-r--r-- | plugins/mod_admin_telnet.lua | 41 |
1 files changed, 41 insertions, 0 deletions
diff --git a/plugins/mod_admin_telnet.lua b/plugins/mod_admin_telnet.lua index 2622a5f9..753e2d2c 100644 --- a/plugins/mod_admin_telnet.lua +++ b/plugins/mod_admin_telnet.lua @@ -207,6 +207,7 @@ function commands.help(session, data) print [[user - Commands to create and delete users, and change their passwords]] print [[server - Uptime, version, shutting down, etc.]] print [[port - Commands to manage ports the server is listening on]] + print [[dns - Commands to manage and inspect the internal DNS resolver]] print [[config - Reloading the configuration, etc.]] print [[console - Help regarding the console itself]] elseif section == "c2s" then @@ -239,6 +240,12 @@ function commands.help(session, data) elseif section == "port" then print [[port:list() - Lists all network ports prosody currently listens on]] print [[port:close(port, interface) - Close a port]] + elseif section == "dns" then + print [[dns:lookup(name, type, class) - Do a DNS lookup]] + print [[dns:addnameserver(nameserver) - Add a nameserver to the list]] + print [[dns:setnameserver(nameserver) - Replace the list of name servers with the supplied one]] + print [[dns:purge() - Clear the DNS cache]] + print [[dns:cache() - Show cached records]] elseif section == "config" then print [[config:reload() - Reload the server configuration. Modules may need to be reloaded for changes to take effect.]] elseif section == "console" then @@ -1001,6 +1008,40 @@ function def_env.xmpp:ping(localhost, remotehost) end end +def_env.dns = {}; +local adns = require"net.adns"; +local dns = require"net.dns"; + +function def_env.dns:lookup(name, typ, class) + local ret = "Query sent"; + local print = self.session.print; + local function handler(...) + ret = "Got response"; + print(...); + end + adns.lookup(handler, name, typ, class); + return true, ret; +end + +function def_env.dns:addnameserver(...) + dns.addnameserver(...) + return true +end + +function def_env.dns:setnameserver(...) + dns.setnameserver(...) + return true +end + +function def_env.dns:purge() + dns.purge() + return true +end + +function def_env.dns:cache() + return true, "Cache:\n"..tostring(dns.cache()) +end + ------------- function printbanner(session) |