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}$"
|
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):
|
class IPConverter(commands.Converter):
|
||||||
|
@ -18,9 +19,10 @@ class IPConverter(commands.Converter):
|
||||||
argument = argument.replace("http://", "").replace("https://", "")
|
argument = argument.replace("http://", "").replace("https://", "")
|
||||||
|
|
||||||
check_domain = re.match(DOMAIN_PATTERN, argument)
|
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
|
return argument
|
||||||
|
|
||||||
raise InvalidIp(_("Invalid ip or domain"))
|
raise InvalidIp(_("Invalid ip or domain"))
|
||||||
|
|
|
@ -56,6 +56,7 @@ class Config(Structure):
|
||||||
owners_id: List[int] = []
|
owners_id: List[int] = []
|
||||||
prefixes: List[str] = []
|
prefixes: List[str] = []
|
||||||
token: str = StrField("")
|
token: str = StrField("")
|
||||||
|
ip: str = StrField("")
|
||||||
mentionable: bool = BoolField("")
|
mentionable: bool = BoolField("")
|
||||||
locale: str = StrField("")
|
locale: str = StrField("")
|
||||||
disabled_command: List[str] = []
|
disabled_command: List[str] = []
|
||||||
|
|
|
@ -11,6 +11,7 @@ console = Console()
|
||||||
|
|
||||||
TOKEN_REPLACEMENT = "\\*" * random.randint(3, 15)
|
TOKEN_REPLACEMENT = "\\*" * random.randint(3, 15)
|
||||||
PASSWORD_REPLACEMENT = "\\*" * random.randint(3, 15)
|
PASSWORD_REPLACEMENT = "\\*" * random.randint(3, 15)
|
||||||
|
IP_REPLACEMENT = "\\*" * random.randint(3, 15)
|
||||||
|
|
||||||
|
|
||||||
class ContextPlus(commands.Context):
|
class ContextPlus(commands.Context):
|
||||||
|
@ -29,20 +30,27 @@ class ContextPlus(commands.Context):
|
||||||
): # i know *args and **kwargs but, i prefer work with same values
|
): # i know *args and **kwargs but, i prefer work with same values
|
||||||
|
|
||||||
if content:
|
if content:
|
||||||
content = content.replace(
|
content = (
|
||||||
self.bot.config.Core.token, TOKEN_REPLACEMENT
|
content.replace(self.bot.config.Core.token, TOKEN_REPLACEMENT)
|
||||||
).replace(
|
.replace(
|
||||||
self.bot.config.Core.Database.password, PASSWORD_REPLACEMENT
|
self.bot.config.Core.Database.password,
|
||||||
|
PASSWORD_REPLACEMENT,
|
||||||
|
)
|
||||||
|
.replace(self.bot.config.Core.ip, IP_REPLACEMENT)
|
||||||
)
|
)
|
||||||
if embed:
|
if embed:
|
||||||
e = embed.to_dict()
|
e = embed.to_dict()
|
||||||
for key, value in e.items():
|
for key, value in e.items():
|
||||||
if isinstance(value, (str, bytes)):
|
if isinstance(value, (str, bytes)):
|
||||||
e[key] = value.replace(
|
e[key] = (
|
||||||
self.bot.config.Core.token, TOKEN_REPLACEMENT
|
value.replace(
|
||||||
).replace(
|
self.bot.config.Core.token, TOKEN_REPLACEMENT
|
||||||
self.bot.config.Core.Database.password,
|
)
|
||||||
PASSWORD_REPLACEMENT,
|
.replace(
|
||||||
|
self.bot.config.Core.Database.password,
|
||||||
|
PASSWORD_REPLACEMENT,
|
||||||
|
)
|
||||||
|
.replace(self.bot.config.Core.ip, IP_REPLACEMENT)
|
||||||
)
|
)
|
||||||
embed = Embed.from_dict(e)
|
embed = Embed.from_dict(e)
|
||||||
|
|
||||||
|
|
|
@ -168,6 +168,35 @@ def get_token() -> str:
|
||||||
return token
|
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(
|
def get_multiple(
|
||||||
question: str, confirmation: str, value_type: type
|
question: str, confirmation: str, value_type: type
|
||||||
) -> List[Union[str, int]]:
|
) -> List[Union[str, int]]:
|
||||||
|
@ -281,6 +310,8 @@ def finish_setup(data_dir: Path) -> None:
|
||||||
|
|
||||||
token = get_token()
|
token = get_token()
|
||||||
|
|
||||||
|
ip = get_ip()
|
||||||
|
|
||||||
console.print()
|
console.print()
|
||||||
prefixes = get_multiple(
|
prefixes = get_multiple(
|
||||||
"Choice a (or multiple) prefix for the bot",
|
"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.owners_id = owners_id
|
||||||
instance_config.config.Core.prefixes = prefixes
|
instance_config.config.Core.prefixes = prefixes
|
||||||
instance_config.config.Core.token = token
|
instance_config.config.Core.token = token
|
||||||
|
instance_config.config.Core.ip = ip
|
||||||
instance_config.config.Core.mentionable = mentionable
|
instance_config.config.Core.mentionable = mentionable
|
||||||
instance_config.config.Core.locale = "en-US"
|
instance_config.config.Core.locale = "en-US"
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue