/
yeexzdev
/
frontiersystem
Обзор
Документация
Войти
/
yeexzdev
/
frontiersystem
Код
Запросы
0
Задачи
Вики
Пакеты
0
Релизы
0
CI/CD
Аналитика
Безопасность
master
src/sessions.py
94 строки
3 KB
yeexzdev
initial commit
15 май 2026, 20:25
15 май 2026, 20:25
bc97861
Код
Авторство
О чём код?
import hashlib import logging from config import C2_ALLOWED_DEPTS logger = logging.getLogger(__name__) class SessionC1: def __init__(self, cards_db): self.cards_db = cards_db self.active_card = None def process(self, data): if len(str(data)) > 2: pool_id = self.cards_db.check_user_card(data) return "accept" if pool_id else "error_user" return "error" class SessionC2: def __init__(self, cards_db, users_db, vk_bot): self.cards_db = cards_db self.users_db = users_db self.vk_bot = vk_bot self.reset() def reset(self): self.step = "card" self.buffer = "" self.vk_id = None self.stored_hash = None self.temp_vk_code = None self.active_card = None def process(self, data): if len(str(data)) > 2: return self._handle_card(data) if self.step == "pin": return self._handle_pin(data) if self.step == "vk_pin": return self._handle_vk_code(data) return "error" def _handle_card(self, card_uid): pool_id = self.cards_db.check_user_card(card_uid) if not pool_id: return "error_user" auth_data = self.users_db.get_auth_data(pool_id) if auth_data: stored_hash, vk_id, user_role = auth_data if user_role.lower() not in [d.lower() for d in C2_ALLOWED_DEPTS]: return "error_privilege" self.active_card = card_uid self.stored_hash = stored_hash self.vk_id = vk_id self.step = "pin" self.buffer = "" return "accept_card" return "error_user" def _handle_pin(self, key): if key == "#": input_hash = hashlib.sha256(self.buffer.encode()).hexdigest() if input_hash == self.stored_hash: self.temp_vk_code = self.vk_bot.generate_2fa_code(self.vk_id) self.buffer = "" self.step = "vk_pin" return "vk_code_sent" self.reset() return "error_pin" elif key == "*": self.reset() return "reset" else: self.buffer += str(key) return "wait" def _handle_vk_code(self, key): if key == "#": if self.buffer == self.temp_vk_code: self.reset() return "open" self.reset() return "error_pin_vk" elif key == "*": self.reset() return "reset" else: self.buffer += str(key) return "wait"