Master - стабильная ветка.
-
Python 3.10 - язык программирования
-
Starlette - основной фреймворк
-
SQLObject - ORM для работы с базой данный
-
Pydantic - валидация данных
-
Starlette - легковесный ASGI фреймворк/тулкит
-
websockets - реализация протокола Websockets в Python (RFC 6455 & 7692)
- /mod
- /config
- config.py - модуль отвечает за работу с конфигурационным файлом config.ini
- validator.py - модуль для валидации конфигурационного файла
- instance.py - модуль содержит в себе инстанс handler-а для работы с конфигом
- /db
- dbhandler.py - модуль предназначен для выполнения запросов к БД
- models.py - модуль отвечает за описание таблиц БД для работы через ОРМ.
- instance.py - модуль содержит в себе инстанс handler-а для работы с базой данных
- /protocol
- /matrix
- api.py - модуль отвечает за описание API, а так же валидацию данных.
- worker.py - реализация протокола
- /mtp
- api.py - модуль отвечает за описание API, а так же валидацию данных.
- worker.py - модуль отвечает за реализацию методов описанных в Morelia Protocol.
- error.py - модуль отвечает за проверку и генерацию ответов с кодами ошибок.
- controller.py - модуль обрабатывает запрос в соответствии с типом протокола
- lib.py - модуль отвечает за хеширование пароля, сравнения пароля с его хэш-суммой, создание хеша для auth_id.
- log_handler.py - модуль настройки логирования.
- config.py - модуль читает настройки из config.ini
- /matrix
- /config
- server.py - основной код сервера
- manage.py - cli-инструмент для работы с сервером(запуск, тестовый клиент, работа с бд, и т.п.)
- /tests
- fixtures/ - json-файлы с заранее подготовленными данными, для проведения тестов.
- config.ini - конфиг сервера для проведения тестов
- test_*.py - тесты
- example_config.ini - файл содержащий пример настроек сервера, перед запуском сервера просто переименуйте или скопируйте в
config.ini
.
Установить Python версией 3.10 или выше.
Загрузить и установить последнюю версию git.
Если нужен GUI, установить GitHub Desktop.
Настроить Git или GitHub Desktop введя свои username
и email
от аккаунта созданного на github.
Если ты не включен в команду на GitHub'е проекта, то необходимо сначала форкнуть к себе репозиторий Morelia Server перейдя по ссылке.
Клонировать репозиторий к себе на локальный компьютер используя командную строку и git
git clone https://github.com/{username}/morelia_server.git
cd morelia_server
Синхронизируем свой форк с оригинальным репозиторием upstream
Morelia Server
git remote add upstream https://github.com/MoreliaTalk/morelia_server.git
Проверяем появились ли репозиторий upstream
в списке удалённых репозиториев
git remote -v
> origin https://github.com/{username}/morelia_server.git (fetch)
> origin https://github.com/{username}/morelia_server.git (push)
> upstream https://github.com/MoreliaTalk/morelia_server.git (fetch)
> upstream https://github.com/MoreliaTalk/morelia_server.git (push)
При использовании GitHub
выбрать в меню File
пункт Clone repository...
далее следовать инструкциям
Для работы с проектом необходимо установить библиотеки которые он использует и настроить т.н. виртуальное рабочее окружение
или virtualenv
, для этого используется утилита Pipenv
Если не установлен pipenv, выполнить
python -m pip install pipenv
Создать виртуальное окружение в директории с проектом
pipenv shell
Установить все требуемые библиотеки из Pipfile
pipenv install --ignore-pipfile
Перед запуском сервера необходимо выполнить некоторые настройки (создать БД, таблицы и добавить первого пользователя - администратора)
Откройте файл example_config.ini
, найдите параметр URI, замените его на путь к базе данных, пример:
URI = 'sqlite:db_sqlite.db'
Создание config.ini
, файла БД и учётной записи администратора сервера:
pipenv run python ./manage.py run init
Если необходимо удалить все таблицы в созданной базе данных (ВНИМАНИЕ удаляются только таблицы, БД не удаляется):
pipenv run python ./manage.py delete db
Дополнительно можно создать тестовый flow
:
pipenv run python ./manage.py create flow
Информация о всех возможностях менеджера настроек:
pipenv run python ./manage.py --help
Для запуска сервера используйте команду:
pipenv run python ./manage.py run devserver
Для запуска сервера используйте команду:
pipenv run python ./manage.py run server
Параметры которые можно передать серверу (и в режиме отладки и в нормальном режиме):
--host <str>
- адрес сервера, по умолчанию 127.0.0.1.
--port <int>
- порт серврера, по умолчанию 8080.
--log-level <str>
- уровень логирования: critical, error, warning, info, debugб trace, по умолчанию debug.
--use-colors
- включить использования цветного вывода сообщений.
--reload
- "горячая" перезагрузка.
Для проверки работы сервера запустите встроенный в manage.py
мини-клиент:
pipenv run python manage.py client send
Примечание: перед запуском клиента нужно запустить сервер
Получение последних изменений из master-ветки Morelia Server
git pull upstream master
Отправка изменений в master-ветку своего форка
git push
Для создания пулл-реквеста, необходимо перейти на GitHub, выбрать свой форк и в правом меню нажать на New pull request
, после чего выбрать ветвь из которого будет производиться перенос изменений в master-ветку Morelia Server и нажать Create pull request
.
Перед началом работы рекомендуется прочитать PEP 8 - руководство по написанию кода на Python. Обязательно использовать линтер (flake8, pylint или подобный).
Используется библиотека loguru
Уровни логирования которыми можно пользоваться в коде:
Level name | Logger method
DEBUG | logger.debug()
INFO | logger.info()
SUCCESS | logger.success()
WARNING | logger.warning()
ERROR | logger.error()
| logger.exception()
CRITICAL | logger.critical()
Для написания тестов используется встроенный модуль Unittest.
Для запуска тестов выполните (вместо звёздочки подставьте наименование теста)
pipenv run python -v ./tests/test_*.py
Telegram - группа для обсуждения вопросов разработки.
Slack - дополнительный канал для обсуждения вопросов разработки.
Copyright (c) 2020 - настоящее время MoreliaTalk team (NekrodNIK, Stepan Skriabin, rus-ai и другие. Смотрите полный список в файле AUTHORS.md)
MoreliaTalkServer распространяется под лицензией GNU Lesser General Public License версии 3 или более поздней (LGPL-3.0-or-later). Подробности смотрите в файле COPYING.LESSER.