Ecosyste.ms: Awesome

An open API service indexing awesome lists of open source software.

Awesome Lists | Featured Topics | Projects

https://github.com/ar4ikov/mvs

OpenSource Server for verificate your MC Account to VK
https://github.com/ar4ikov/mvs

auth client hypixel hypixel-api java minecraft minecraft-api mojang python server verification vk vk-advanced-api vk-api vk-bot vk-bot-python vkbot

Last synced: 29 days ago
JSON representation

OpenSource Server for verificate your MC Account to VK

Awesome Lists containing this project

README

        

# Minecraft Verification System

**Minecraft Verification System** - достаточно массивная и обширная для дальшейшего
создания система "привязки" аккаунта Minecraft к социальной сети Вконтакт.

Принцип работы:
1. Вы должны иметь лицензионный аккаунт игры Minecraft
2. Зайдите на сервер `mc.hypixel.net` и введите команду `/api new`
3. Введите в методе `createUser` ваш Id VK и Hypixel API Key, который вы получили в предыдущем шаге.

По желанию (если иметь прямые руки или хотя бы небольшое понимания `Python Flask` и `Java`) можно изменить сервер подтверждения
на свой. Тогда авторизация будет происходить через него.

Весь принцип работы основывается на "доверенных приложениях", как в случае с Hypixel API, где вы получаете
свой уникальный ключ для работы, по которому можно подтвердить аккаунт Minecraft, так и в случае с подтверждением
странички ВК, поскольку система расчитана не на прямые запросы, а запросы через чат-бота в сообществе или на странице.

Дополнительную степень защиты оказывает кабинет администратора, в котором вы можете сами создавать и контролировать некие
`Access Token'ы`, которые являются локально серверными, дающими доступ к приватным методам. Именно эти токены должны быть
у ваших скриптов и ботов, которые будут подавать запросы, выступая в виде `доверенных приложений и/или доверенных лиц`.

Начало работы
---
Итак, сперва мы должны понять, как запустить сервер.
Но и также посмотреть, какие потребуются элементы для его запуска, а именно
зависимые модули и библиотеки
- flask (Ядро сервера)
- requests (элемент запросов на другие сервера)
- vk_advanced_api (для чат-бота ВК). [Посмотреть его можно тут.](https://github.com/Ar4ikov/vk_advanced_api)

Следующий этап - конфигурация.
Конфигурационный файл лежит в `/server/` и именуется как `config.ini`.
Там полностью описана структура, а также каждый параметр, который необходимо указать.

И наконец - запуск. запускать нужно обязательно в директории `/server/`. Но если вы не хотите так делать,
установите в файле `/server/api/config.py` свой путь до конфига (по дефолту стоит локальный из папки `/server/`)

Первый запуск
---

При первом запуске система потребует создать нового пользователя-администратора для входа в админ-панель и дальнейшим управлением `Access Token'ами`.

![hey1](docs/get_started.png 'Начало работы')

После необходимо будет войти в админ панель:
`https:///admin`

Система потребует нас туда войти

![hey2](docs/login_to_admin.jpg "Вход в систему")

Система защищена дополнительно `reCaptcha v2` от Google. Вы можете настроить свою `reCaptcha`,
настроив заранее в конфиге ключ для нее.

> [Подробнее о рекапче прочтите тут.](https://www.google.com/recaptcha/)

Далее мы попадаем на страницу с админ-панелью

![hey3](docs/admin_panel.png "Админ-панель")

Нажимаем на `Создать токен`, указываем имя приложения, которому хотим сделать новый токен (на ваше усмотрение, не хочу углубляться в такие подробности с созданием
своих приложений и так далее). Создаем! Приложений может быть неограниченное количество.

![hey4](docs/creating_token.png "Создание токена")

Новый токен появился в базе данных!

![hey5](docs/tokens.png "Токены")

Для чего нужен этот токен? Для доступа к приватным методам API, таким, как `createUser`, ведь это - служебный метод, который создает юзера на основе доверия и
подтверждения всех принимаемых им данных, таких как Id юзера ВК и Hypixel API Key от вашего Minecraft аккаунта.

Основные методы системы

Метод | Зачем и как работает
---------|:----------
getUser | Получение юзера из MVS БД. Необходимо указать или `mvs id (id)`, или `vk`, или `mc`, или `nickname`
getUsers | Получение всех юзеров их MVS
createUser | Создание нового пользователя. Принимает `vk`, `hypixel_key` и `access_token`
confirmUser | Принимает `hypixel_key`, нужен для проверки подлинности `hypixel_key`
updateNickname | Принимает или `mvs id (id)`, или `vk`, или `mc`, или `nickname`, а также особый способ подтверждения (`hypixel_key` юзера или `access_token` приложения). Обновляет ник в базе данных, сверяясь с Mojang API
banUser | Бан пользователя в системе. Принимает или `mvs id (id)`, или `vk`, или `mc`, или `nickname`, а также `access_token` приложения
unbanUser | Бан пользователя в системе. Принимает или `mvs id (id)`, или `vk`, или `mc`, или `nickname`, а также `access_token` приложения

На этом, пожалуй, с серверной частью и её настройкой мы закончили.

Поля, которые возможно передать

Поле | Значение поля
---------|-------------
id | Id юзера в системе MVS
vk | Id юзера ВК
mc | UUID пользователя Minecraft
nickname | Ник игрока Minecraft
hypixel_key | Hypixel API Key
access_token | Access Token приложения

Теперь разберём ответы сервера

`getUser` при удачном запросе
```json
{
"response": {
"user": {
"id": "mvs_id",
"vk": "vk_id",
"nickname": "nickname",
"confirmation_type": "confirm_type",
"is_banned": False,
"mc": "mc_uuid"
}
},
"status": "success"
}
```

`getUsers`
```json
{
"response": {
"users": [
{
"id": 1,
"is_banned": "False",
"mc": "aa0f6b98a6b4438d96a0388d22d8e326",
"vk": 160213445,
"nickname": "nickname",
"confirmation_type": "confirm_type"
}
]
},
"status": "success"
}

```

`createUser` при удачном запросе
```json
{
"response": {
"user": {
"id": "mvs_id",
"vk": "vk_id",
"nickname": "nickname",
"confirmation_type": "confirm_type",
"is_banned": False,
"mc": "mc_uuid"
}
},
"status": "success"
}

```

`confirmUser`
```json
{
"response": {
"key_info": {
"hypixel_key": "hypixel_key",
"ownerUuid": "mc_uuid",
"confirmation_type": "confirm_type",
"nickname": "nickname"
}
},
"status": "success"
}
```

updateNickname при удачном запросе

```json
{
"response": {
"new_nickname": {
"name": "NewNickName1337"
}
},
"status": "success"
}
```

banUser или unbanUser при удачном запросе

```json
{
"response": {},
"status": "success"
}
```

Список возвращаемых ошибок вы можете узреть в `/server/errors.txt`

Клиентская часть
---

> Клиент всегда прав, если имеет на это основания

Клиентская часть обусловлена небольшим модулем, который лишь отправляет запросы и дает ответ в виде
своего класса `MVS_Response`

Вы также може его установить с платформы `PyPi`
```bash
pip install requests
pip install mvs_client
```

Простой пример инициализации:
```python

# Импорт модуля
import mvs_client as MVS

# Объявление экземпляра класса MVS_Client
mvs = MVS.MVS_Client(
server="http://127.0.0.1",
access_token="D7MSoV0qiRn5WzSBDdJicrGpLCxznaD1g0sFuGvATnu2SdRx108M5otnsiVBZAVY"
)

```
где
- server - сервер MVS API
- access_token - Access Token приложения

Взаимодействие:
```python

# Получаем пользователя с MVS Id 1
response = mvs.getUser(id=1).getResponse()
print(response)

# Получаем ошибку (1. Unknown Method)
response = mvs.getUUseeeer().getErrorCode()
print(response)

```

Перейдем к классу `MVS_Response`

Метод | Его функционал
---|---
`getStatus` | Получение статуса ответа от сервера. Бывает либо `success`, либо `failed`
`getResponse` | Получение ключа `response` в ответе. Содержит основную информацию. Если была допущена ошибка, вернет None
`getErrorCode` | Получение кода ошибки о ответе. Если ошибки нет, вернет None
`getCause` | Получение причины ошибки в ответе. Если ошибки нет, вернет None
`getResponseBody` | Вернет полный ответ сервера в формате JSON

На этом закончим с клиентской частью

ВК Бот
---
...
...
...
...

Информация появится позже с появлением этого самого бота.

Заключение
---

Хотелось бы добавить в окончание данной документации, что система была сделана лишь в помощь тем,
кто в ней нуждается, а именно в автоматическом приеме игроков в Hypixel Guild, без какой-либо нужны проверки
уровня и статистики игрока, а уж тем более без проверки подлинности аккаунта, ведь теперь абсолютно каждый
сможет сделать это.

Спасибо за понимание и за прочтение.

Спасибо [@Trippsol](https://vk.con/trippsol) за идею, а также его проекту `MAV`, клиент для которого
от меня вы можете встретить [тут](https://github.com/Ar4ikov/MAVAPI)