feat(seautils): default to nslookup if dig is not present

This commit is contained in:
Seaswimmer 2024-05-28 18:31:38 -04:00
parent 091f4fe36d
commit 25fdf7b402
Signed by untrusted user: cswimr
GPG key ID: 5D671B5D03D65A7F

View file

@ -101,10 +101,6 @@ class SeaUtils(commands.Cog):
try: try:
process: Process = await asyncio.create_subprocess_exec(*command_opts, stdout=asyncio.subprocess.PIPE, stderr=asyncio.subprocess.PIPE) process: Process = await asyncio.create_subprocess_exec(*command_opts, stdout=asyncio.subprocess.PIPE, stderr=asyncio.subprocess.PIPE)
stdout, stderr = await process.communicate() stdout, stderr = await process.communicate()
except (FileNotFoundError):
await ctx.maybe_send_embed(message="The `dig` command is not installed on this system.")
return
if stderr: if stderr:
await ctx.maybe_send_embed(message="An error was encountered!\n" + cf.box(text=stderr.decode())) await ctx.maybe_send_embed(message="An error was encountered!\n" + cf.box(text=stderr.decode()))
else: else:
@ -141,3 +137,23 @@ class SeaUtils(commands.Cog):
await ctx.send(embed=embed) await ctx.send(embed=embed)
else: else:
await ctx.send(content=cf.box(text=stdout, lang='yaml')) await ctx.send(content=cf.box(text=stdout, lang='yaml'))
except (FileNotFoundError):
try:
ns_process = await asyncio.create_subprocess_exec('nslookup', name, stdout=asyncio.subprocess.PIPE, stderr=asyncio.subprocess.PIPE)
ns_stdout, ns_stderr = await ns_process.communicate()
if ns_stderr:
await ctx.maybe_send_embed(message="An error was encountered!\n" + cf.box(text=ns_stderr.decode()))
else:
warning = cf.warning("`dig` is not installed! Defaulting to `nslookup`.\nThis command provides more information when `dig` is installed on the system.\n")
if await ctx.embed_requested():
embed = Embed(
title="DNS Query Result",
color=await ctx.embed_color(),
timestamp=ctx.message.created_at
)
embed.description = warning + cf.box(text=ns_stdout.decode())
await ctx.send(embed=embed)
else:
await ctx.send(content= warning + cf.box(text=ns_stdout.decode()))
except (FileNotFoundError):
await ctx.maybe_send_embed(message=cf.error("Neither `dig` nor `nslookup` are installed on the system. Unable to resolve DNS query."))