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_*.pyTelegram - группа для обсуждения вопросов разработки.
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.