kumo.dns: add lookup_txt

This commit is contained in:
Wez Furlong
2024-08-08 15:16:19 -07:00
parent 8aa4a170d6
commit ecefc35342
2 changed files with 26 additions and 1 deletions
+10 -1
View File
@@ -1,7 +1,7 @@
use anyhow::Context;
use config::{any_err, get_or_create_sub_module, serialize_options};
use dns_resolver::resolver::Resolver;
use dns_resolver::{resolve_a_or_aaaa, MailExchanger};
use dns_resolver::{get_resolver, resolve_a_or_aaaa, MailExchanger};
use hickory_resolver::config::{NameServerConfig, Protocol, ResolverConfig, ResolverOpts};
use hickory_resolver::{Name, TokioAsyncResolver};
use mlua::{Lua, LuaSerdeExt};
@@ -18,6 +18,15 @@ pub fn register(lua: &Lua) -> anyhow::Result<()> {
})?,
)?;
dns_mod.set(
"lookup_txt",
lua.create_async_function(|_lua, domain: String| async move {
let resolver = get_resolver();
let answer = resolver.resolve_txt(domain).await.map_err(any_err)?;
Ok(answer.as_txt())
})?,
)?;
dns_mod.set(
"lookup_addr",
lua.create_async_function(|_lua, domain: String| async move {
+16
View File
@@ -0,0 +1,16 @@
# `kumo.dns.lookup_txt(DOMAIN)`
{{since('dev')}}
Resolve a TXT record for the requested `DOMAIN`.
Raises an error if the domain doesn't exist.
Returns a lua array-style table with the list of txt records returned from DNS.
```lua
assert(
kumo.serde.json_encode(kumo.dns.lookup_txt 'gmail.com')
== '["v=spf1 redirect=_spf.google.com","globalsign-smime-dv=CDYX+XFHUw2wml6/Gb8+59BsH31KzUr6c1l2BPvqKX8="]'
)
```