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 – класс команды унаследованный от
AbstractCommandname – имя для регистрации (default: {None})
- Исключение
ValueError – Если имя для регистрации уже занято
-
run(name_cmd, *args, **kwargs)[исходный код]¶ Основной цикл запуска команд.
- Параметры
serv – экземпляр класса
Serverrequest – экземпляр класса
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)¶
-