Software /
code /
prosody
Diff
plugins/mod_admin_telnet.lua @ 5567:c4ab25b35a55
mod_admin_telnet: Add some DNS commands.
author | Kim Alvefur <zash@zash.se> |
---|---|
date | Tue, 07 May 2013 17:17:32 +0200 |
parent | 5520:75230be5be58 |
child | 5579:e449e6342e36 |
child | 5596:73fea1a87afd |
line wrap: on
line diff
--- a/plugins/mod_admin_telnet.lua Tue May 07 16:51:25 2013 +0200 +++ b/plugins/mod_admin_telnet.lua Tue May 07 17:17:32 2013 +0200 @@ -207,6 +207,7 @@ 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 @@ 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 @@ 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)