feat(pterodactyl): added masking of IP addresses in the console output
This commit is contained in:
parent
fb177ff8ad
commit
306148ea69
3 changed files with 19 additions and 0 deletions
|
@ -22,4 +22,5 @@ def register_config(config_obj: Config) -> None:
|
||||||
shutdown_msg='Server stopped!',
|
shutdown_msg='Server stopped!',
|
||||||
join_msg='Welcome to the server! 👋',
|
join_msg='Welcome to the server! 👋',
|
||||||
leave_msg='Goodbye! 👋',
|
leave_msg='Goodbye! 👋',
|
||||||
|
mask_ip=True,
|
||||||
)
|
)
|
||||||
|
|
|
@ -303,3 +303,12 @@ class Pterodactyl(commands.Cog):
|
||||||
return await ctx.send(f"Leave message is currently set to: {message}")
|
return await ctx.send(f"Leave message is currently set to: {message}")
|
||||||
await config.leave_msg.set(message)
|
await config.leave_msg.set(message)
|
||||||
await ctx.send(f"Leave message set to: {message}")
|
await ctx.send(f"Leave message set to: {message}")
|
||||||
|
|
||||||
|
@pterodactyl_config.command(name = "ip")
|
||||||
|
async def pterodactyl_config_mask_ip(self, ctx: commands.Context, mask: bool = None) -> None:
|
||||||
|
"""Mask the IP addresses of users in console messages."""
|
||||||
|
if mask is None:
|
||||||
|
mask = await config.mask_ip()
|
||||||
|
return await ctx.send(f"IP masking is currently set to {mask}")
|
||||||
|
await config.mask_ip.set(mask)
|
||||||
|
await ctx.send(f"IP masking set to {mask}")
|
||||||
|
|
|
@ -47,6 +47,8 @@ async def establish_websocket_connection(coginstance: Pterodactyl) -> None:
|
||||||
if json.loads(message)['event'] == 'console output' and await config.console_channel() is not None:
|
if json.loads(message)['event'] == 'console output' and await config.console_channel() is not None:
|
||||||
if await config.current_status() in ('running', 'offline', ''):
|
if await config.current_status() in ('running', 'offline', ''):
|
||||||
content = remove_ansi_escape_codes(json.loads(message)['args'][0])
|
content = remove_ansi_escape_codes(json.loads(message)['args'][0])
|
||||||
|
if await config.mask_ip() is True:
|
||||||
|
content = mask_ip(content)
|
||||||
|
|
||||||
channel = coginstance.bot.get_channel(await config.console_channel())
|
channel = coginstance.bot.get_channel(await config.console_channel())
|
||||||
if channel is not None:
|
if channel is not None:
|
||||||
|
@ -250,3 +252,10 @@ async def generate_achievement_embed(username: str, achievement: str, challenge:
|
||||||
embed.set_author(name=username, icon_url='https://seafsh.cc/u/j3AzqQ.png')
|
embed.set_author(name=username, icon_url='https://seafsh.cc/u/j3AzqQ.png')
|
||||||
embed.timestamp = discord.utils.utcnow()
|
embed.timestamp = discord.utils.utcnow()
|
||||||
return embed
|
return embed
|
||||||
|
|
||||||
|
def mask_ip(string: str) -> str:
|
||||||
|
def mask_ip(match):
|
||||||
|
ip = match.group(0)
|
||||||
|
masked_ip = '.'.join('*' * len(octet) for octet in ip.split('.'))
|
||||||
|
return masked_ip
|
||||||
|
return re.sub(r'\b(?:\d{1,3}\.){3}\d{1,3}\b', mask_ip, string)
|
||||||
|
|
Loading…
Reference in a new issue