# Server TODO: - описать формально все API - добавить сами команды, возможно сделать их в виде пресетов для платформы ## Основная суть - API ручки. Доступ чисто по ssl (но это уже зона ответственности nginx) - клиенты по своему некоторому ключу будут авторизовываться. - проблема ручной настройки (но она тут будто минимальная, не так плохо) - когда клиент что-либо присылает, в ответ ему надо кинуть команды на исполнение, если есть - со стороны клиента должен быть настроен trust к серверу Для сервера необходимо несколько настроек - лимит на кол-во запросов (от одного клиента, условно) - лимит на хранение инфо (и хранить ли старое? да, логи) - лимит на одного юзера - общий лимит - кастомные команды - отслеживание получения/выполнение команды сервером, повторные попытки, лимит попыток ## Возможности (API ручки) 'Понятия не имею, как описывать эти ручки (точнее, нет желания правильно их описывать)' ### Ручки для админа Все пользователи будут считаться админами для удобства. Остальных нет 1. получить список всех клиентов - с отдельным параметром "только активированные" 2. получить данные по клиенту - сюда включается вся инфа о его показателях, когда был в сети + какие команды на него доступны (да, будем их ограничивать, возможно по модели zero-trust) 3. выполнить какую-то команду - тут вопрос в том, будем ли мы ждать ответа от нашего клиента (вряд ли) 4. получить токен, авторизация 5. добавить кастомную команду (для клиента) - проблема в системах, если хочется универсального добавления. Выход - добавлять только для одного клиента (лучше во всём будет) ### Ручки для клиентов Не уверен даже, что больше одной нужно будет 1. Прислать информацию - просто стучится со своим uuid и кидает, что знает 2. Инфо о сервере? - возможно фетчить айпи (чтобы стучаться, если сертификат на месте), другие домены - какие-то особые "правила", если пакет с их установкой потеряется (сам то пакет вряд ли потеряется, мы об этом узнаем сразу)