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
Subpackages¶
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)[исходный код]¶ Отправка сообщения.
- Параметры
mes –
Message
-
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)[исходный код]¶ Установка текущей сессии.
- Параметры
session –
Session
-
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})
-
static
-
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)[исходный код]¶ Разборщик внешних событий.
- Параметры
message –
Message
-
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)¶
-