IPB

Здравствуйте, гость ( Вход | Регистрация )

 
Ответить в эту темуОткрыть новую тему
> Сетевое API для AZ*
SuperMax
сообщение 15.3.2024, 15:20
Сообщение #1


Администратор
*****

Группа: Root Admin
Сообщений: 6 285
Регистрация: 7.1.2006
Из: Красноярск
Пользователь №: 1



Идея:
разработать различное API для работы с сетью Интернет

Задача 1. Таблица рекордов
в общих штрихах

серверная часть: сервер БД
WEB интерфейс
- регистрация пользователя логин-пароль (дабы таблицы рекордов были персонализированными)
- регистрация игры и получение уникального ID игры
- просмотр рекордов/статистики игр итд итп
API для AZБК
- авторизация игры
- авторизация пользователя
- добавление рекорда

клиентская часть на AZ*
- авторизация игры
- авторизация пользователя
- добавление рекорда


Задача 2. Сетевые диски
возможность подключения в режиме R/O или R/W образа дисков на сервере



UPD 2024-03-17
разрисовываю детально и начинаю делать


UPD 2024-03-24
планируется такой пакет команд AZ
60 авторизация продукта по хешу
61 авторизация пользователя по хешу
62 регистрация пользователя
63 передача параметров из буфера на сервер
64 считывание таблицы рекордов с сервера в файл на карточке


начал делать команды

UPD 2024-03-25
долго не хотел этим заниматься, но видимо пришло время
сделаю сетевой сервер дисков
иначе говоря будет возможность цеплять любые сетевые диски как устройства AZ
или будет отдельный драйвер - еще не решил
но суть именно такая - блочное сетевое устройство

начал писать сервер - демон на сях





--------------------
Живы будем - Не помрем !
Пользователь в офлайнеКарточка пользователяОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
SuperMax
сообщение 31.3.2024, 11:21
Сообщение #2


Администратор
*****

Группа: Root Admin
Сообщений: 6 285
Регистрация: 7.1.2006
Из: Красноярск
Пользователь №: 1



проект API по рекордам и ачивкам

обмен будет в виде запросов с ответами отправляемых со стороны STM32
формат - JSON

организация обмена - типовая последовательность
1. #23 принять с шины в буфер данные - те загоняем данные (кроме инициализации - тут содержимое буфера не имеет значения)
2. #60 передача параметров из буфера на сервер, получение ответа
3. #22 отдать на шину считанный блок из буфера



последовательность
1. инициализация
включает в себя
- резолвинг домена с back-end-ом - dns имя back.hof.maxiol.com
- установка первоначального соединения с сервером, прокачка шифра, получение номера(хеша) сессии

результатом является такой JSON
{"SID":"хеш сессии","RESULT":"OK"}
или ошибка
{"RESULT":"ERROR","DESCRIPTION":"SERVER_ERROR"}
технически сессия будет с солью дабы не раскрутить

2. авторизация игры
технически это отправка JSON
{"SID":"хеш сессии","CMD":"AUTH_GAME","GID":"хеш игры","SERNUM":"1234567890","UTC":"420"}
где
SERNUM - серийный номер игры (для игр ретейл поставки)
UTC - часовой пояс игрока, число в минутах, брать из AZ.INI

ответ тоже JSON
{"SID":"хеш сессии","RESULT":"OK"}
или
{"SID":"хеш сессии","RESULT":"ERROR","DESCRIPTION":"GAME_NOT_FOUND"}
{"SID":"хеш сессии","RESULT":"ERROR","DESCRIPTION":"SERVER_ERROR"}
{"SID":"хеш сессии","RESULT":"ERROR","DESCRIPTION":"SESSION_NOT_EXISTS_OR_EXPIRED"}


3. регистрация пользователя
технически это отправка JSON
{"SID":"хеш сессии","CMD":"REG_USER","NIKNAME":"никнейм пользователя","PASSWORD":"пароль пользователя","EMAIL":"email пользователя"}

все поля обязательные!

ответ тоже JSON
{"SID":"хеш сессии","RESULT":"OK"}
или
{"SID":"хеш сессии","RESULT":"ERROR","DESCRIPTION":"NIKNAME_TAKEN"}
{"SID":"хеш сессии","RESULT":"ERROR","DESCRIPTION":"PASSWORD_TOO_SHORT"}
{"SID":"хеш сессии","RESULT":"ERROR","DESCRIPTION":"SERVER_ERROR"}
{"SID":"хеш сессии","RESULT":"ERROR","DESCRIPTION":"SESSION_NOT_EXISTS_OR_EXPIRED"}


4. авторизация пользователя
технически это отправка JSON
{"SID":"хеш сессии","CMD":"AUTH_USER","NIKNAME":"никнейм пользователя","PASSWORD":"пароль пользователя"}

ответ тоже JSON
{"SID":"хеш сессии","RESULT":"OK","UID":"хеш пользователя"}
или
{"SID":"хеш сессии","RESULT":"ERROR","DESCRIPTION":"USER_NOT_FOUND_OR_WRONG_PASSWORD"}
{"SID":"хеш сессии","RESULT":"ERROR","DESCRIPTION":"SERVER_ERROR"}
{"SID":"хеш сессии","RESULT":"ERROR","DESCRIPTION":"SESSION_NOT_EXISTS_OR_EXPIRED"}

5. регистрация ачивмента
технически это отправка JSON
{"SID":"хеш сессии","CMD":"REG_ACHIEVEMENT","ACHIEVEMENT":"id aчивмента"}

ответ тоже JSON
{"SID":"хеш сессии","RESULT":"OK"}
или
{"SID":"хеш сессии","RESULT":"ERROR","DESCRIPTION":"ACHIEVEMENT_NOT_EXISTS"}
{"SID":"хеш сессии","RESULT":"ERROR","DESCRIPTION":"ACHIEVEMENT_ALREADY_TAKEN"}
{"SID":"хеш сессии","RESULT":"ERROR","DESCRIPTION":"SERVER_ERROR"}
{"SID":"хеш сессии","RESULT":"ERROR","DESCRIPTION":"SESSION_NOT_EXISTS_OR_EXPIRED"}

6. регистрация рекорда игры
технически это отправка JSON
{"SID":"хеш сессии","CMD":"REG_SCORE","SCORE":"число"}

ответ тоже JSON
{"SID":"хеш сессии","RESULT":"OK"}
или
{"SID":"хеш сессии","RESULT":"ERROR","DESCRIPTION":"SERVER_ERROR"}
{"SID":"хеш сессии","RESULT":"ERROR","DESCRIPTION":"SESSION_NOT_EXISTS_OR_EXPIRED"}


7. продление сессии
технически это отправка JSON
{"SID":"хеш сессии","CMD":"NOP"}

ответ тоже JSON
{"SID":"хеш сессии","RESULT":"OK"}
или
{"SID":"хеш сессии","RESULT":"ERROR","DESCRIPTION":"SERVER_ERROR"}


8. трекинг кастомной информации
технически это отправка JSON
{"SID":"хеш сессии","CMD":"TRACKING","PARAMETER":"значение параметра","SERNUM":"1234567890"}

ответ тоже JSON
{"SID":"хеш сессии","RESULT":"OK"}
или
{"SID":"хеш сессии","RESULT":"ERROR","DESCRIPTION":"SERVER_ERROR"}

команда предназначена для трекинга какой-то своей информации в игре

9. завершение сессии
технически это отправка JSON
{"SID":"хеш сессии","CMD":"CLOSE_SESSION"}

ответ тоже JSON
{"SID":"хеш сессии","RESULT":"OK"}
или
{"SID":"хеш сессии","RESULT":"ERROR","DESCRIPTION":"SERVER_ERROR"}



10. Получение таблицы рекордов

технически это отправка JSON
{"SID":"хеш сессии","CMD":"GET_SCORE","COUNT":"количество строк"}

ответ тоже JSON
{"SID":"хеш сессии","RESULT":"OK"}
{"Peter":1122,"Ben":1100,"Joe":945}

или
{"SID":"хеш сессии","RESULT":"ERROR","DESCRIPTION":"SERVER_ERROR"}


ограничения
1. кодировка ASCII - те только латиница, для полной унификации
2. длина NIKNAME - от 3х до 16 символов,
3. длина EMAIL - до 32 символов
4. длина PASSWORD - от 8 до 16 символов
5. ACHIVMENT - это его числовой идентификатор в системе (смотрим на сайте)
6. длина SCORE - от 1х до 16 цифр
7. количество получаемых записей рекордов от 1 до 10
8. время жизни сессии игры - 4 часа


--------------------
Живы будем - Не помрем !
Пользователь в офлайнеКарточка пользователяОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения

Ответить в эту темуОткрыть новую тему
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 



Текстовая версия Сейчас: 16.4.2024, 13:12