Compare commits
No commits in common. "18abdecb74006fae6a0a4092a1d3f7c342fde115" and "21bd01c3edcb25a8c158a8e5951185860433324e" have entirely different histories.
18abdecb74
...
21bd01c3ed
@ -23,7 +23,6 @@
|
|||||||
- /help - помощь
|
- /help - помощь
|
||||||
- /export - получить пароли в json формате
|
- /export - получить пароли в json формате
|
||||||
- /import - импортировать пароли из json в файле в таком же формате, как из /export
|
- /import - импортировать пароли из json в файле в таком же формате, как из /export
|
||||||
- /gen_password - создать 10 надёжных паролей
|
|
||||||
|
|
||||||
### Настройка
|
### Настройка
|
||||||
|
|
||||||
|
@ -46,7 +46,4 @@ def create_bot(token: str, engine: Engine) -> telebot.TeleBot:
|
|||||||
bot.register_message_handler(
|
bot.register_message_handler(
|
||||||
functools.partial(handlers.import_accounts, bot, engine), commands=["import"]
|
functools.partial(handlers.import_accounts, bot, engine), commands=["import"]
|
||||||
)
|
)
|
||||||
bot.register_message_handler(
|
|
||||||
functools.partial(handlers.gen_password, bot), commands=["gen_password"]
|
|
||||||
)
|
|
||||||
return bot
|
return bot
|
||||||
|
@ -13,7 +13,6 @@ from .utils import (
|
|||||||
check_account_name,
|
check_account_name,
|
||||||
check_login,
|
check_login,
|
||||||
check_passwd,
|
check_passwd,
|
||||||
gen_passwd,
|
|
||||||
get_all_accounts,
|
get_all_accounts,
|
||||||
json_to_accounts,
|
json_to_accounts,
|
||||||
send_tmp_message,
|
send_tmp_message,
|
||||||
@ -345,8 +344,7 @@ def help(bot: telebot.TeleBot, mes: telebot.types.Message) -> None:
|
|||||||
/cancel - отмена текущего действия
|
/cancel - отмена текущего действия
|
||||||
/help - помощь
|
/help - помощь
|
||||||
/export - получить пароли в json формате
|
/export - получить пароли в json формате
|
||||||
/import - импортировать пароли из json в файле в таком же формате, как из /export
|
/import - импортировать пароли из json в файле в таком же формате, как из /export"""
|
||||||
/gen_password - создать 10 надёжных паролей"""
|
|
||||||
bot.send_message(mes.chat.id, message)
|
bot.send_message(mes.chat.id, message)
|
||||||
|
|
||||||
|
|
||||||
@ -473,15 +471,3 @@ def _import3(
|
|||||||
send_tmp_message(bot, mes.chat.id, mes_text, 10)
|
send_tmp_message(bot, mes.chat.id, mes_text, 10)
|
||||||
del text, mes, accounts
|
del text, mes, accounts
|
||||||
gc.collect()
|
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 io
|
||||||
import string
|
|
||||||
import time
|
import time
|
||||||
from random import SystemRandom
|
|
||||||
from typing import Self, Type
|
from typing import Self, Type
|
||||||
|
|
||||||
import pydantic
|
import pydantic
|
||||||
import telebot
|
import telebot
|
||||||
from sqlalchemy.future import Engine
|
from sqlalchemy.future import Engine
|
||||||
|
|
||||||
from .. import cryptography, database
|
from .. import database, cryptography
|
||||||
|
|
||||||
|
|
||||||
class Account(pydantic.BaseModel):
|
class Account(pydantic.BaseModel):
|
||||||
@ -101,22 +99,3 @@ def check_passwd(passwd: str) -> bool:
|
|||||||
def check_account(name: str, login: str, passwd: str) -> bool:
|
def check_account(name: str, login: str, passwd: str) -> bool:
|
||||||
"""Runs checks for account name, login and password"""
|
"""Runs checks for account name, login and password"""
|
||||||
return check_account_name(name) and check_login(login) and check_passwd(passwd)
|
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