Compare commits
No commits in common. "18abdecb74006fae6a0a4092a1d3f7c342fde115" and "21bd01c3edcb25a8c158a8e5951185860433324e" have entirely different histories.
18abdecb74
...
21bd01c3ed
@ -23,7 +23,6 @@
|
||||
- /help - помощь
|
||||
- /export - получить пароли в json формате
|
||||
- /import - импортировать пароли из json в файле в таком же формате, как из /export
|
||||
- /gen_password - создать 10 надёжных паролей
|
||||
|
||||
### Настройка
|
||||
|
||||
|
@ -46,7 +46,4 @@ def create_bot(token: str, engine: Engine) -> telebot.TeleBot:
|
||||
bot.register_message_handler(
|
||||
functools.partial(handlers.import_accounts, bot, engine), commands=["import"]
|
||||
)
|
||||
bot.register_message_handler(
|
||||
functools.partial(handlers.gen_password, bot), commands=["gen_password"]
|
||||
)
|
||||
return bot
|
||||
|
@ -13,7 +13,6 @@ from .utils import (
|
||||
check_account_name,
|
||||
check_login,
|
||||
check_passwd,
|
||||
gen_passwd,
|
||||
get_all_accounts,
|
||||
json_to_accounts,
|
||||
send_tmp_message,
|
||||
@ -345,8 +344,7 @@ def help(bot: telebot.TeleBot, mes: telebot.types.Message) -> None:
|
||||
/cancel - отмена текущего действия
|
||||
/help - помощь
|
||||
/export - получить пароли в json формате
|
||||
/import - импортировать пароли из json в файле в таком же формате, как из /export
|
||||
/gen_password - создать 10 надёжных паролей"""
|
||||
/import - импортировать пароли из json в файле в таком же формате, как из /export"""
|
||||
bot.send_message(mes.chat.id, message)
|
||||
|
||||
|
||||
@ -473,15 +471,3 @@ def _import3(
|
||||
send_tmp_message(bot, mes.chat.id, mes_text, 10)
|
||||
del text, mes, accounts
|
||||
gc.collect()
|
||||
|
||||
|
||||
def gen_password(bot: telebot.TeleBot, mes: Message) -> None:
|
||||
# Generate 10 passwords and put 'em in the backticks
|
||||
base_handler(bot, mes)
|
||||
passwords = (f"`{gen_passwd()}`" for _ in range(10))
|
||||
text = (
|
||||
"Пароли:\n"
|
||||
+ "\n".join(passwords)
|
||||
+ "\nНажмите на пароль, чтобы его скопировать"
|
||||
)
|
||||
send_tmp_message(bot, mes.chat.id, text, 15)
|
||||
|
@ -1,14 +1,12 @@
|
||||
import io
|
||||
import string
|
||||
import time
|
||||
from random import SystemRandom
|
||||
from typing import Self, Type
|
||||
|
||||
import pydantic
|
||||
import telebot
|
||||
from sqlalchemy.future import Engine
|
||||
|
||||
from .. import cryptography, database
|
||||
from .. import database, cryptography
|
||||
|
||||
|
||||
class Account(pydantic.BaseModel):
|
||||
@ -101,22 +99,3 @@ def check_passwd(passwd: str) -> bool:
|
||||
def check_account(name: str, login: str, passwd: str) -> bool:
|
||||
"""Runs checks for account name, login and password"""
|
||||
return check_account_name(name) and check_login(login) and check_passwd(passwd)
|
||||
|
||||
|
||||
def gen_passwd() -> str:
|
||||
"""Generates password of length 32"""
|
||||
choices = SystemRandom().choices
|
||||
chars = frozenset(string.ascii_letters + string.digits + string.punctuation)
|
||||
# Remove backtick and pipe characters and convert into tuple
|
||||
chars = tuple(chars.difference("`|"))
|
||||
while True:
|
||||
passwd = "".join(choices(chars, k=32))
|
||||
passwd_chars = frozenset(passwd)
|
||||
# If there is at least one lowercase character, uppercase character
|
||||
# and one punctuation character
|
||||
if (
|
||||
passwd_chars.intersection(string.ascii_lowercase)
|
||||
and passwd_chars.intersection(string.ascii_uppercase)
|
||||
and passwd_chars.intersection(string.punctuation)
|
||||
):
|
||||
return passwd
|
||||
|
Reference in New Issue
Block a user