Client

Клиентское приложение для обмена сообщениями. Поддерживает отправку сообщений пользователям которые находятся в сети, сообщения шифруются с помощью алгоритма RSA с длинной ключа 2048 bit.

Использование:

client [-h] [--config [CONFIG]] [-e [ENCODING]] [-a [HOST]] [-p [PORT]] [-v] [-g | -c] [-n [NAME]] [--password [PASSWORD]]

Опциональные аргументы:

-h, --help

show this help message and exit

--config CONFIG

File config

-e ENCODING, --encoding ENCODING

Encoding (default «utf-8»)

-a HOST, --host HOST

IP (default «127.0.0.1»)

-p PORT, --port PORT

Port (default «7777»)

-v, --verbose

Increase verbosity of log output (default «10»)

-g, --gui

Start GUI Configuration

-c, --console

Start cli

-n NAME, --name NAME

Name user for connect

--password PASSWORD

User password

client.commands module

class commands.AbstractCommand(*args, **kwargs)[исходный код]

Базовые классы: object

Абстрактный класс команды.

execute(message, **kwargs)[исходный код]

Выполнение.

class commands.Comander(*args, **kwargs)[исходный код]

Базовые классы: object

Основной командир, распределяет команды.

commands

Хранилище команд

print_help()[исходный код]

Функция выводящия справку по использованию.

reg_cmd(command, name=None)[исходный код]

Регистрация команды.

Регистрирует команду по переданному имени или атрибуту name

Параметры
  • command – класс команды унаследованный от AbstractCommand

  • name – имя для регистрации (default: {None})

Исключение

ValueError – Если имя для регистрации уже занято

run(name_cmd, *args, **kwargs)[исходный код]

Основной цикл запуска команд.

Параметры
  • serv – экземпляр класса Server

  • request – экземпляр класса Message

  • *args – дополнительные параметры для команды

  • **kwargs – дополнительные параметры для команды

Результат

Возвращаем ответ команды bool

unreg_cmd(command)[исходный код]

Отмена регистрации команды.

Параметры

command – имя команды для удаления

class commands.ExitCommand(*args, **kwargs)[исходный код]

Базовые классы: commands.AbstractCommand

Выход пользователя.

name

имя команды

execute(client, *args, **kwargs)[исходный код]

Выполнение.

name = 'exit'

client.core module

class core.Client(*args, **kwargs)[исходный код]

Базовые классы: core.SocketMixin

Центральный класс пока не понимаю зачем я его сделал.

нужно переписать

connect()[исходный код]

Соединение с сервером.

И основной цикл

Исключение

ServerError – При ошибочном запросе

exit_client()[исходный код]

Отправка информации о выходе.

init_socket()[исходный код]

Инициализация сокета.

update_contacts_list()[исходный код]

Функция запрос контакт листа.

update_user_list()[исходный код]

Функция запроса списка известных пользователей.

class core.ClientReader(parent)[исходный код]

Базовые классы: threading.Thread, core.SocketMixin, PyQt5.QtCore.QObject

Класс-приёмник сообщений с сервера. Принимает сообщения, выводит в консоль.

attach(observer, event)[исходный код]
detach(observer, event)[исходный код]
new_message
notify(event)[исходный код]

Уведомление о событии.

Параметры

event – имя события

response_key
run()[исходный код]

Основной цикл приёмника сообщений, принимает сообщения, выводит в консоль. Завершается при потере соединения.

up_all_users
class core.ClientSender(sock)[исходный код]

Базовые классы: threading.Thread, core.SocketMixin

Класс формировки и отправки сообщений на сервер и взаимодействия с пользователем.

run()[исходный код]

Функция взаимодействия с пользователем, запрашивает команды, отправляет сообщения.

update(reader, event)[исходный код]

Уведомление о новом сообщении.

Параметры
  • reader – чтец

  • event – событие

class core.SocketMixin[исходный код]

Базовые классы: object

Миксин взаимодействия с сокетом.

read_data()[исходный код]

Прием сообщения.

Результат

Message

send_message(mes)[исходный код]

Отправка сообщения.

Параметры

mesMessage

client.db module

class db.ActiveUsers(**kwargs)[исходный код]

Базовые классы: db.Core

Активные пользователи.

Пользователи находящиеся онлайн

id

Идентификатор

oper_id

пользователь

ip_addr

ИП адрес пользователя

port

Порт подключения

oper

обратная ссылка на пользователя

active
building_type
created
id
ip_addr
oper
oper_id
port
sort
updated
class db.Contact(**kwargs)[исходный код]

Базовые классы: db.Core

Список контактов.

id

Идентификатор

owner_id

Владелец

contact_id

Контакт

owner

обратная ссылка на владельца

contact

Обратная ссылка на контакт

active
building_type
contact
contact_id
created
classmethod get_by_owner_contact(owner, contact)[исходный код]

Возвращает записи фильтрованные по владельцу и контакту.

id
owner
owner_id
sort
updated
class db.Core(**kwargs)[исходный код]

Базовые классы: sqlalchemy.ext.declarative.api.Base

Ядро для всех таблиц.

Содержит общие для всех поля и функционал

building_type

Тип записи что бы знать из какой таблицы

created

Дата время создания записи

updated

Дата время изменения записи

active

Признак активной записи

sort

поле сортировки

active
classmethod all()[исходный код]

Возвращает все записи объекта/таблицы.

building_type
classmethod create(**kwargs)[исходный код]

Создание новой записи.

Параметры

**kwargs – дикт где ключи имена, а значения значение полей таблицы

Результат

Возвращает созданный объект object

created
delete()[исходный код]

Удаление текущей записи.

classmethod delete_all()[исходный код]

Удалить все записи из заблицы.

classmethod delete_qs(qs)[исходный код]

Удаление списка записей.

По одной что бы удалились связанные записи в родительской таблице

fill(**kwargs)[исходный код]

Заполнение полей объекта.

Параметры

**kwargs – дикт где ключи имена, а значения значение полей таблицы

Результат

Возвращает тек. объект object

classmethod filter(**kwargs)[исходный код]

Фильтрация таблицы.

Стандартная фильтрация с указание полей и значений

Параметры

**kwargs – параметры фильтрации

Результат

Возвращает результат фильтрации object

classmethod filter_by(**kwargs)[исходный код]

Фильтр с упрощенным синтаксисом.

classmethod first()[исходный код]

Возвращает первую запись из отбора.

classmethod get(id_)[исходный код]

Получить один объект по ид.

Параметры

id_ – идентификатор записи для получения

Результат

Возвращает найденный объект object

id
classmethod query(*args)[исходный код]

Возвращает объект для фильтрации и отборов.

Параметры

*args – доп. параметры.

Результат

Возвращает объект для отборов object

save()[исходный код]

Сохранение объекта.

Сохранение всех изменений

Результат

Возвращает сохраненный объект object

classmethod save_all(qs)[исходный код]

Сохранить все записи из списка.

Параметры

qs – список объектов бд

classmethod set_session(session)[исходный код]

Установка текущей сессии.

Параметры

sessionSession

sort
updated
class db.DBManager(envs, *args, **kwargs)[исходный код]

Базовые классы: object

Менеджер инициатор БД.

static set_sqlite_pragma(dbapi_connection, connection_record=None)[исходный код]

Параметры подключения к БД.

Пока не знаю как от этого отделаться при других бекэндах

Параметры
  • dbapi_connection – [description]

  • connection_record – [description] (default: {None})

class db.TypeHistory[исходный код]

Базовые классы: enum.Enum

Перечислитель типов записей в истории.

login

Вход

logout

Выход

ch_pass

Смена пароля

add_contact

Добавлен контакт

del_contact

Удален контакт

mes_sent

Отправленно сообщение

mes_accepted

Принято сообщение

add_contact = 4
ch_pass = 3
del_contact = 5
login = 1
logout = 2
mes_accepted = 7
mes_history = 8
mes_sent = 6
class db.User(**kwargs)[исходный код]

Базовые классы: db.Core

Таблица пользователей.

Содержит основной функционал взаимодействия.

id

Идентификатор

username

Имя пользователя

descr

Описание

password

Пароль шифрованный поддерживает сравнение

auth_key

Ключ авторизации

last_login

Последний вход на сервер (дата время)

accepted

Количество полученных сообщений.

active
add_contact(contact_name)[исходный код]

Добавляет пользователя с переданным именем в контакты текущего пользователя.

Параметры

contact_name – имя добавляемого контакта

auth_key
building_type
classmethod by_name(username)[исходный код]

Возвращает объект пользователя по его имени.

created
del_contact(contact_name)[исходный код]

Удаляет контакт.

Удаляет контакт из контактов текущего пользователя

Параметры

contact_name – имя контакта

descr
get_last_login()[исходный код]

Хитрый способ получения времени последнего входа.

has_contact(contact_name)[исходный код]

Проверка на контакт.

Проверяет есть ли переданное имя в контактах текущего пользователя

Параметры

contact_name – проверяемое имя

Результат

Результат проверки bool

id
last_login
not_contacts()[исходный код]

Возвращает не контактов.

password
sent

Количество отправленных сообщений.

sort
updated
username
class db.UserHistory(**kwargs)[исходный код]

Базовые классы: db.Core

История пользователя.

Хранит информацию о действиях пользователя

id

Идентификатор

oper_id

ИД пользователя

ip_addr

ИП адрес

type_row

тип истории

port

Порт подключения

note

примечание

oper

обратная ссылка на пользователя

active
building_type
created
id
ip_addr
note
oper
oper_id
port
classmethod proc_message(scr, dest)[исходный код]

Фиксация отправленного или пришедшего сообщения.

Параметры
  • scr – отправитель

  • dest – получатель

sort
type_row
updated
class db.UserMessages(**kwargs)[исходный код]

Базовые классы: db.Core

Пользовательские сообщения.

Хранилище сообщений

id

Идентификатор

sender_id

ИД отправителя

receiver_id

ИД получателя

message

текст сообщения

sender

Отправитель

receiver

Получатель

active
building_type
classmethod chat_hiltory(username, limit=100)[исходный код]

Получение истории чата.

Параметры
  • username – имя пользователя

  • limit – ограничение по количеству сообщений (default: {100})

Результат

лист сообщений

created
id
message
receiver
receiver_id
sender
sender_id
sort
updated

client.errors module

exception errors.ContactExists(user)[исходный код]

Базовые классы: Exception

Контакт существует.

exception errors.ContactNotExists(user)[исходный код]

Базовые классы: Exception

Контакт не существует.

exception errors.NotFoundContact(user)[исходный код]

Базовые классы: errors.NotFoundUser

Не найден контакт.

exception errors.NotFoundUser(user)[исходный код]

Базовые классы: Exception

Ошибка не найден пользователь.

exception errors.ServerError(text)[исходный код]

Базовые классы: Exception

Ошибка сервера.

client.gui module

Графический интерфейс взаимодействия с пользователем.

class gui.ClientGui(client)[исходный код]

Базовые классы: PyQt5.QtCore.QObject

Класс прослойка.

is_alive()[исходный код]
update(*args, **kwargs)[исходный код]

Приемник событий.

пробрасывает события интерфейсу

Параметры
  • *args – Параметры

  • **kwargs – Параметры

class gui.ClientMainWindow(client)[исходный код]

Базовые классы: gui.SaveGeometryMixin, PyQt5.QtWidgets.QMainWindow

Основное окно.

STYLE_IN_MES

Стиль входящих сообщений

STYLE_OUT_MES

Стиль исходящих сообщений

STYLE_IN_MES = PosixPath('client/templates/style_in_message.html')
STYLE_OUT_MES = PosixPath('client/templates/style_out_message.html')
add_contact()[исходный код]

Добавление контакта.

del_contact()[исходный код]

Удаление контакта.

fill_chat()[исходный код]

Заполнение чата.

init_ui()[исходный код]

Инициализация интерфейса.

make_message(text='')[исходный код]

Создать объект сообщения.

Параметры

text – [description] (default: {„“})

Результат

Message

restore_size_pos()[исходный код]

Восстановление состояния сплитера.

save_size()[исходный код]

Сохранение состояния сплитера.

select_active_user()[исходный код]

Выбор активного пользователя.

send_message()[исходный код]

Отправка сообщения.

switch_list_state()[исходный код]

Переключатель окна с контактами в разные состояния.

update(message)[исходный код]

Разборщик внешних событий.

Параметры

messageMessage

update_contact()[исходный код]

Обновление контактов.

class gui.SaveGeometryMixin[исходный код]

Базовые классы: object

Миксин сохранения геометрии.

closeEvent(e)[исходный код]

Запись позиции и размера при закрытии.

Параметры

e – [description]

init_ui()[исходный код]

Инициализация.

restore_size_pos()[исходный код]

Востановление размера и позиции.

class gui.UserAuth[исходный код]

Базовые классы: gui.SaveGeometryMixin, PyQt5.QtWidgets.QDialog

Окно авторизации пользователя.

accept_auth()[исходный код]

Подтверждение введеных данных.

get_auth()[исходный код]

Вовзращает введеные данные.

init_ui()[исходный код]

Инициализация интерфейса.

client.metaclasses module

class metaclasses.ClientVerifier(name, bases, attr_dict)[исходный код]

Базовые классы: type

Верификатор клиента.

store_soc = Instruction(opname='STORE_ATTR', opcode=95, arg=1, argval='sock', argrepr='sock', offset=8, starts_line=None, is_jump_target=False)