From 0eca877c1c60d021219733bb8a07fae422f1f7d4 Mon Sep 17 00:00:00 2001 From: Romain J Date: Tue, 20 Apr 2021 15:42:59 +0200 Subject: [PATCH] fix(commands:dig|Network): fix async --- tuxbot/cogs/Network/functions/utils.py | 4 +- tuxbot/cogs/Network/network.py | 108 ++++++++----------------- 2 files changed, 36 insertions(+), 76 deletions(-) diff --git a/tuxbot/cogs/Network/functions/utils.py b/tuxbot/cogs/Network/functions/utils.py index 87065d7..44462e7 100644 --- a/tuxbot/cogs/Network/functions/utils.py +++ b/tuxbot/cogs/Network/functions/utils.py @@ -76,7 +76,9 @@ async def get_ipinfo_result( apikey: str, ip_address: str ) -> Union[NoReturn, dict]: try: - handler = ipinfo.getHandlerAsync(apikey) + handler = ipinfo.getHandlerAsync( + apikey, request_options={"timeout": 7} + ) return (await handler.getDetails(ip_address)).all except RequestQuotaExceededError: return {} diff --git a/tuxbot/cogs/Network/network.py b/tuxbot/cogs/Network/network.py index 3c41842..a244788 100644 --- a/tuxbot/cogs/Network/network.py +++ b/tuxbot/cogs/Network/network.py @@ -89,12 +89,6 @@ class Network(commands.Cog, name="Network"): ) ip_address = await get_ip(str(ip), str(version), tmp) - - if ip_address == "2001:67c:1740:900a::122": - ip_address = "2606:4700:7::a29f:9904" - elif ip_address == "193.106.119.122": - ip_address = "162.159.136.232" - ip_hostname = await get_hostname(ip_address) ipinfo_result = await get_ipinfo_result( @@ -142,37 +136,6 @@ class Network(commands.Cog, name="Network"): async def _getheaders( self, ctx: ContextPlus, ip: DomainConverter, *, user_agent: str = "" ): - bypass = False - b_headers = {} - - if "gnous.eu" in str(ip).lower(): - b_headers = { - "Date": "Wed, 31 Mar 2021 19:29:23 GMT", - "Content-Type": "text/html", - "Transfer-Encoding": "chunked", - "Connection": "keep-alive", - "CF-Ray": "638bfc780d6b4c7a-AMS", - "Cache-Control": "private", - "Etag": 'W/"93af87d30fddaeb232dd4b1fdbf45ee5"', - "Last-Modified": "Fri, 26 Mar 2021 22:30:51 GMT", - "Strict-Transport-Security": "max-age=31536000; includeSubDomains; preload", - "CF-Cache-Status": "HIT", - "cf-request-id": "092b5c1f0b00004c7a422fc000000001", - "Content-Security-Policy": "default-src 'self'; script-src 'self' 'unsafe-inline' 'nonce-NywxMTIsMTA5LDU2LDIwMSwxNiw1MCwyNg==' https://www.googletagmanager.com https://connect.facebook.net https://www.google - analytics.com https://ssl.google - analytics.com https://www.gstatic.com/recaptcha/ https://www.google.com/recaptcha/ https://recaptcha.net/recaptcha/ https://hcaptcha.com https://*.hcaptcha.com https://s.ytimg.com/yts/jsbin/ https://www.youtube.com/iframe_api; style - src 'self' 'unsafe-inline' https://fonts.googleapis.com https://*.hcaptcha.com https://hcaptcha.com; img - src 'self' https://www.google - analytics.com https://www.googletagmanager.com https://www.facebook.com https://cdn.gnous.eu https://hackerone-api.discord.workers.dev/user-avatars/ https://safety.gnous.eu https://discordmoderatoracademy.zendesk.com; font - src 'self' https://fonts.gstatic.com; connect - src 'self' https://gnous.eu https://connect.facebook.net https://api.greenhouse.io https://api.github.com https://sentry.io https://www.google - analytics.com https://hackerone - api.discord.workers.dev https://*.hcaptcha.com https://hcaptcha.com ws://127.0.0.1: * http://127.0.0.1: *; media - src 'self' https://cdn.gnous.eu/assets/; frame - src https://gnous.eu/domain - migration https://www.google.com/recaptcha/ https://recaptcha.net/recaptcha/ https://*.hcaptcha.com https://hcaptcha.com https://www.youtube.com/embed/ https://hackerone.com/ 631 fba12 - 9388 - 43 c3 - 8 b48 - 348 f11a883c0 /; ", - "Expect-CT": 'max-age=604800, report-uri="https://report-uri.cloudflare.com/cdn-cgi/beacon/expect-ct"', - "X-Build-Id": "8e7a8a3", - "X-Content-Type-Options": "nosniff", - "X-Frame-Options": "DENY", - "X-XSS-Protection": "1; mode=block", - "Report-To": '{"group":"cf-nel","endpoints":[{"url":"https:\\/\\/a.nel.cloudflare.com\\/report?s=yTbPXPki5uskQ%2FYzh%2ByeWXz%2BQLZdhazySwN2vY2TfT6va9b1oVqo4YuPH7HcR5EdHeCsYHia%2BrUOxvoyVm%2BQgZd5zmhgYCmfUhkJUw%3D%3D"}],"max_age":69420}', - "NEL": '{"max_age":604800,"report_to":"cf-nel"}', - "Vary": "Accept-Encoding", - "Server": "cloudflare", - "Content-Encoding": "gzip", - "alt-svc": 'h3-27=":443"; ma=86400, h3-28=":443"; ma=86400, h3-29=":443"; ma=86400', - } - bypass = True - try: headers = {"User-Agent": user_agent} colors = { @@ -200,8 +163,6 @@ class Network(commands.Cog, name="Network"): headers = dict(s.headers.items()) headers.pop("Set-Cookie", headers) - headers = b_headers if bypass else headers - for key, value in headers.items(): output = await shorten(ctx.session, value, 50) @@ -220,46 +181,43 @@ class Network(commands.Cog, name="Network"): _("Cannot connect to host {}", ctx, self.bot.config).format(ip) ) + @command_extra(name="dig", deletable=True) + async def _dig( + self, + ctx: ContextPlus, + domain: IPConverter, + query_type: QueryTypeConverter, + dnssec: Union[str, bool] = False, + ): + check_query_type_or_raise(str(query_type)) -@command_extra(name="dig", deletable=True) -async def _dig( - self, - ctx: ContextPlus, - domain: IPConverter, - query_type: QueryTypeConverter, - dnssec: Union[str, bool] = False, -): - check_query_type_or_raise(str(query_type)) - - pydig_result = await self.bot.loop.run_in_executor( - None, - functools.partial(get_pydig_result, domain, query_type, dnssec), - ) - - e = discord.Embed(title=f"DIG {domain} {query_type}", color=0x5858D7) - - for i, value in enumerate(pydig_result): - e.add_field(name=f"#{i}", value=f"```{value}```") - - if not pydig_result: - e.add_field( - name=f"DIG {domain} IN {query_type}", - value=_("No result...", ctx, self.bot.config), + pydig_result = await get_pydig_result( + str(domain), str(query_type), dnssec ) - await ctx.send(embed=e) + e = discord.Embed(title=f"DIG {domain} {query_type}", color=0x5858D7) + for i, value in enumerate(pydig_result): + e.add_field(name=f"#{i}", value=f"```{value}```") -@command_extra(name="ping", deletable=True) -async def _ping(self, ctx: ContextPlus): - start = time.perf_counter() - await ctx.trigger_typing() - end = time.perf_counter() + if not pydig_result: + e.add_field( + name=f"DIG {domain} IN {query_type}", + value=_("No result...", ctx, self.bot.config), + ) - latency = round(self.bot.latency * 1000, 2) - typing = round((end - start) * 1000, 2) + await ctx.send(embed=e) - e = discord.Embed(title="Ping", color=discord.Color.teal()) - e.add_field(name="Websocket", value=f"{latency}ms") - e.add_field(name="Typing", value=f"{typing}ms") - await ctx.send(embed=e) + @command_extra(name="ping", deletable=True) + async def _ping(self, ctx: ContextPlus): + start = time.perf_counter() + await ctx.trigger_typing() + end = time.perf_counter() + + latency = round(self.bot.latency * 1000, 2) + typing = round((end - start) * 1000, 2) + + e = discord.Embed(title="Ping", color=discord.Color.teal()) + e.add_field(name="Websocket", value=f"{latency}ms") + e.add_field(name="Typing", value=f"{typing}ms") + await ctx.send(embed=e)