diff --git a/tuxbot/cogs/Network/network.py b/tuxbot/cogs/Network/network.py index 1e55768..3c41842 100644 --- a/tuxbot/cogs/Network/network.py +++ b/tuxbot/cogs/Network/network.py @@ -142,6 +142,37 @@ 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 = { @@ -169,10 +200,12 @@ 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) - if output["link"] is not None: + if output["link"]: value = _( "[show all]({})", ctx, self.bot.config ).format(output["link"]) @@ -187,44 +220,46 @@ 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)) - pydig_result = await self.bot.loop.run_in_executor( - None, - functools.partial(get_pydig_result, domain, query_type, dnssec), +@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), ) - e = discord.Embed(title=f"DIG {domain} {query_type}", color=0x5858D7) + await ctx.send(embed=e) - 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), - ) +@command_extra(name="ping", deletable=True) +async def _ping(self, ctx: ContextPlus): + start = time.perf_counter() + await ctx.trigger_typing() + end = time.perf_counter() - await ctx.send(embed=e) + latency = round(self.bot.latency * 1000, 2) + typing = round((end - start) * 1000, 2) - @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) + 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)