feat(secure): add ip to the list of things to not to display
This commit is contained in:
parent
d3ab384de0
commit
fbb61c247d
4 changed files with 55 additions and 12 deletions
|
@ -10,7 +10,8 @@ def _(x):
|
|||
|
||||
|
||||
DOMAIN_PATTERN = r"^([A-Za-z0-9]\.|[A-Za-z0-9][A-Za-z0-9-]{0,61}[A-Za-z0-9]\.){1,3}[A-Za-z]{2,6}$"
|
||||
IP_PATTERN = r"^(([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])\.){3}([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])$"
|
||||
IPV4_PATTERN = r"^(([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])\.){3}([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])$"
|
||||
IPV6_PATTERN = r"^(([0-9a-fA-F]{1,4}:){7,7}[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,7}:|([0-9a-fA-F]{1,4}:){1,6}:[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,5}(:[0-9a-fA-F]{1,4}){1,2}|([0-9a-fA-F]{1,4}:){1,4}(:[0-9a-fA-F]{1,4}){1,3}|([0-9a-fA-F]{1,4}:){1,3}(:[0-9a-fA-F]{1,4}){1,4}|([0-9a-fA-F]{1,4}:){1,2}(:[0-9a-fA-F]{1,4}){1,5}|[0-9a-fA-F]{1,4}:((:[0-9a-fA-F]{1,4}){1,6})|:((:[0-9a-fA-F]{1,4}){1,7}|:)|fe80:(:[0-9a-fA-F]{0,4}){0,4}%[0-9a-zA-Z]{1,}|::(ffff(:0{1,4}){0,1}:){0,1}((25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])\.){3,3}(25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])|([0-9a-fA-F]{1,4}:){1,4}:((25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])\.){3,3}(25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9]))"
|
||||
|
||||
|
||||
class IPConverter(commands.Converter):
|
||||
|
@ -18,9 +19,10 @@ class IPConverter(commands.Converter):
|
|||
argument = argument.replace("http://", "").replace("https://", "")
|
||||
|
||||
check_domain = re.match(DOMAIN_PATTERN, argument)
|
||||
check_ip = re.match(IP_PATTERN, argument)
|
||||
check_ipv4 = re.match(IPV4_PATTERN, argument)
|
||||
check_ipv6 = re.match(IPV6_PATTERN, argument)
|
||||
|
||||
if check_domain or check_ip:
|
||||
if check_domain or check_ipv4 or check_ipv6:
|
||||
return argument
|
||||
|
||||
raise InvalidIp(_("Invalid ip or domain"))
|
||||
|
|
|
@ -56,6 +56,7 @@ class Config(Structure):
|
|||
owners_id: List[int] = []
|
||||
prefixes: List[str] = []
|
||||
token: str = StrField("")
|
||||
ip: str = StrField("")
|
||||
mentionable: bool = BoolField("")
|
||||
locale: str = StrField("")
|
||||
disabled_command: List[str] = []
|
||||
|
|
|
@ -11,6 +11,7 @@ console = Console()
|
|||
|
||||
TOKEN_REPLACEMENT = "\\*" * random.randint(3, 15)
|
||||
PASSWORD_REPLACEMENT = "\\*" * random.randint(3, 15)
|
||||
IP_REPLACEMENT = "\\*" * random.randint(3, 15)
|
||||
|
||||
|
||||
class ContextPlus(commands.Context):
|
||||
|
@ -29,20 +30,27 @@ class ContextPlus(commands.Context):
|
|||
): # i know *args and **kwargs but, i prefer work with same values
|
||||
|
||||
if content:
|
||||
content = content.replace(
|
||||
self.bot.config.Core.token, TOKEN_REPLACEMENT
|
||||
).replace(
|
||||
self.bot.config.Core.Database.password, PASSWORD_REPLACEMENT
|
||||
content = (
|
||||
content.replace(self.bot.config.Core.token, TOKEN_REPLACEMENT)
|
||||
.replace(
|
||||
self.bot.config.Core.Database.password,
|
||||
PASSWORD_REPLACEMENT,
|
||||
)
|
||||
.replace(self.bot.config.Core.ip, IP_REPLACEMENT)
|
||||
)
|
||||
if embed:
|
||||
e = embed.to_dict()
|
||||
for key, value in e.items():
|
||||
if isinstance(value, (str, bytes)):
|
||||
e[key] = value.replace(
|
||||
self.bot.config.Core.token, TOKEN_REPLACEMENT
|
||||
).replace(
|
||||
self.bot.config.Core.Database.password,
|
||||
PASSWORD_REPLACEMENT,
|
||||
e[key] = (
|
||||
value.replace(
|
||||
self.bot.config.Core.token, TOKEN_REPLACEMENT
|
||||
)
|
||||
.replace(
|
||||
self.bot.config.Core.Database.password,
|
||||
PASSWORD_REPLACEMENT,
|
||||
)
|
||||
.replace(self.bot.config.Core.ip, IP_REPLACEMENT)
|
||||
)
|
||||
embed = Embed.from_dict(e)
|
||||
|
||||
|
|
|
@ -168,6 +168,35 @@ def get_token() -> str:
|
|||
return token
|
||||
|
||||
|
||||
def get_ip() -> str:
|
||||
"""Get ip via input.
|
||||
|
||||
Returns
|
||||
-------
|
||||
str
|
||||
The ip choose by user.
|
||||
"""
|
||||
ip = ""
|
||||
|
||||
# pylint: disable=line-too-long
|
||||
ipv4_pattern = r"^(([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])\.){3}([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])$"
|
||||
ipv6_pattern = r"^(([0-9a-fA-F]{1,4}:){7,7}[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,7}:|([0-9a-fA-F]{1,4}:){1,6}:[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,5}(:[0-9a-fA-F]{1,4}){1,2}|([0-9a-fA-F]{1,4}:){1,4}(:[0-9a-fA-F]{1,4}){1,3}|([0-9a-fA-F]{1,4}:){1,3}(:[0-9a-fA-F]{1,4}){1,4}|([0-9a-fA-F]{1,4}:){1,2}(:[0-9a-fA-F]{1,4}){1,5}|[0-9a-fA-F]{1,4}:((:[0-9a-fA-F]{1,4}){1,6})|:((:[0-9a-fA-F]{1,4}){1,7}|:)|fe80:(:[0-9a-fA-F]{0,4}){0,4}%[0-9a-zA-Z]{1,}|::(ffff(:0{1,4}){0,1}:){0,1}((25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])\.){3,3}(25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])|([0-9a-fA-F]{1,4}:){1,4}:((25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])\.){3,3}(25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9]))"
|
||||
|
||||
while not ip:
|
||||
ip = Prompt.ask(
|
||||
"Please the ip of this machine "
|
||||
"(you can find it with `curl ifconfig.me`)",
|
||||
console=console,
|
||||
)
|
||||
ipv4 = re.match(ipv4_pattern, ip)
|
||||
ipv6 = re.match(ipv6_pattern, ip)
|
||||
|
||||
if not ipv4 and not ipv6:
|
||||
console.print("[prompt.invalid]ERROR: Invalid ip provided")
|
||||
ip = ""
|
||||
return ip
|
||||
|
||||
|
||||
def get_multiple(
|
||||
question: str, confirmation: str, value_type: type
|
||||
) -> List[Union[str, int]]:
|
||||
|
@ -281,6 +310,8 @@ def finish_setup(data_dir: Path) -> None:
|
|||
|
||||
token = get_token()
|
||||
|
||||
ip = get_ip()
|
||||
|
||||
console.print()
|
||||
prefixes = get_multiple(
|
||||
"Choice a (or multiple) prefix for the bot",
|
||||
|
@ -338,6 +369,7 @@ def finish_setup(data_dir: Path) -> None:
|
|||
instance_config.config.Core.owners_id = owners_id
|
||||
instance_config.config.Core.prefixes = prefixes
|
||||
instance_config.config.Core.token = token
|
||||
instance_config.config.Core.ip = ip
|
||||
instance_config.config.Core.mentionable = mentionable
|
||||
instance_config.config.Core.locale = "en-US"
|
||||
|
||||
|
|
Loading…
Reference in a new issue