add prehook for commit, move "docs" files

This commit is contained in:
2026-05-12 00:34:53 +03:00
parent eb745596e9
commit 83e40aeb74
5 changed files with 8 additions and 1 deletions
+21
View File
@@ -0,0 +1,21 @@
# nexus-sync
a utility that allows you to manage your computers.
*Main Idea*
server can send to every client "what to do". Centralized control for all clients.
## Server-side
- (to future) works in docker container
- accept connections on _some_ port with correct uuid from client
- works via API requests
- use _some_ database
## Client-side
- with _some_ period of time, send info to the server
- if server want client to execute some command
- decrease fetch time period
- execute command
- send result back to the server
+31
View File
@@ -0,0 +1,31 @@
# Client
Основная суть - кидает на известный по ip/домену сервак свой ключ и базовую информацию о себе: hostname, местное время (что-то ещё?)
В ответ может получить как простое "ок", так и команду для выполнения
Запросы на сервер будет кидать с некоторой частотой, постепенно возрастающей, но резко снижающейся при получении команды в ответе (вдруг надо ещё что-то выполнить)
Есть установление нижнего предела на частоту (условная 1/минута)
Пример работы
```
...
client -> server: hello!, i'm $(hostname), uuid= , ts=
server -> client: ok, 200
*waits 45s*
client -> server: hello!, i'm $(hostname), uuid= , ts=
server -> client: ok, 200
*waits 46s*
client -> server: hello!, i'm $(hostname), uuid= , ts=
server -> client: ok, execute "ip a", 200
client: *execute*
client -> server: hello!, i'm $(hostname), uuid= , ts=, stdout= , stderr= , ...
*waits 23s*
```
Возможно нужна доп инфа о работе команды (код ошибки как минимум)
+ возможно на клиенте стоит ограничить набор допустимых команд
+ стоит явно задуматься о шифровании/идентификации сервера
+50
View File
@@ -0,0 +1,50 @@
# Server
TODO:
- описать формально все API
- добавить сами команды, возможно сделать их в виде пресетов для платформы
## Основная суть
- API ручки. Доступ чисто по ssl (но это уже зона ответственности nginx)
- клиенты по своему некоторому ключу будут авторизовываться.
- проблема ручной настройки (но она тут будто минимальная, не так плохо)
- когда клиент что-либо присылает, в ответ ему надо кинуть команды на исполнение, если есть
- со стороны клиента должен быть настроен trust к серверу
Для сервера необходимо несколько настроек
- лимит на кол-во запросов (от одного клиента, условно)
- лимит на хранение инфо (и хранить ли старое? да, логи)
- лимит на одного юзера
- общий лимит
- кастомные команды
- отслеживание получения/выполнение команды сервером, повторные попытки, лимит попыток
## Возможности (API ручки)
'Понятия не имею, как описывать эти ручки (точнее, нет желания правильно их описывать)'
### Ручки для админа
Все пользователи будут считаться админами для удобства. Остальных нет
1. получить список всех клиентов
- с отдельным параметром "только активированные"
2. получить данные по клиенту
- сюда включается вся инфа о его показателях, когда был в сети + какие команды на него доступны (да, будем их ограничивать, возможно по модели zero-trust)
3. выполнить какую-то команду
- тут вопрос в том, будем ли мы ждать ответа от нашего клиента (вряд ли)
4. получить токен, авторизация
5. добавить кастомную команду (для клиента)
- проблема в системах, если хочется универсального добавления. Выход - добавлять только для одного клиента (лучше во всём будет)
### Ручки для клиентов
Не уверен даже, что больше одной нужно будет
1. Прислать информацию
- просто стучится со своим uuid и кидает, что знает
2. Инфо о сервере?
- возможно фетчить айпи (чтобы стучаться, если сертификат на месте), другие домены
- какие-то особые "правила", если пакет с их установкой потеряется (сам то пакет вряд ли потеряется, мы об этом узнаем сразу)