net.php¶
Модуль управления сетевой инфраструктурой: добавление и удаление IP-адресов, блокировка трафика, управление состоянием сетевых портов, получение статистики и отображение графиков Cacti.
Методы API¶
| Метод | Действие | Описание |
|---|---|---|
add_ipv4 | добавление IPv4 адресов | Добавляет указанное количество IPv4 адресов к серверу на конкретный порт и VLAN. Поддерживает выбор конкретных IP или автоматический подбор свободных. |
block_ip | блокировка IP | Блокирует указанный IP-адрес на сервере через BIRD или blackhole. Требует причину блокировки. |
get_status | получение статуса порта | Возвращает текущий статус сетевого интерфейса сервера (up/down, скорость, дуплекс, MAC). |
port_off | отключение порта | Отключает сетевой интерфейс сервера. Может добавлять тег блокировки с причиной. |
port_on | включение порта | Включает сетевой интерфейс сервера. Удаляет тег блокировки, если он не был установлен администратором. |
remove_ipv4 | удаление IPv4 адресов | Удаляет указанный IPv4 адрес или все адреса с сервера. Очищает PTR записи в DNS. |
show_cacti | получение графиков Cacti | Возвращает данные или ссылку на график трафика для указанного порта сервера из системы мониторинга Cacti. |
show_ipv4_free | поиск свободных IPv4 | Возвращает список доступных свободных IPv4 адресов для указанного сервера, порта и VLAN. |
unblock_ip | разблокировка IP | Разблокирует ранее заблокированный IP-адрес на сервере. Требует прав администратора или совпадения с причиной блокировки. |
net/add_ipv4¶
Добавляет указанное количество IPv4 адресов к серверу на конкретный порт и VLAN. Поддерживает выбор конкретных IP или автоматический подбор свободных.
HTTP-метод: POST
Параметры:
| Параметр | Обязательный | Тип | Описание |
|---|---|---|---|
| action | ✅ | string | Идентификатор метода: add_ipv4 |
| token | ✅ | string | Токен авторизации |
| id | ✅ | int | ID сервера |
| amount | ✅ | int | Количество IP адресов для добавления |
| port | ✅ | string | Название сетевого интерфейса (например, eth0) |
| vlan | ❌ | int | ID VLAN (опционально, определяется автоматически для клиентов) |
| ip | ❌ | string | Конкретный IP адрес для добавления (если не указан, подбирается свободный) |
| ips | ❌ | array | Массив конкретных IP адресов для добавления |
| tag | ❌ | string | Тег сети (например, ipmi, ovirt, bm) |
| fresh_period | ❌ | int | Период свежести IP (время в секундах) |
| allow_tech_networks | ❌ | int | Разрешить использование технических сетей (для администраторов) |
Пример запроса
curl -s "https://invapi.hostkey.ru/net" -X POST \
--data "action=add_ipv4" \
--data "token=HOSTKEY_TOKEN" \
--data "id=12345" \
--data "amount=2" \
--data "port=eth0" \
--data "vlan=100" \
--data "ips[]=192.168.1.10" \
--data "ips[]=192.168.1.11"
Пример успешного ответа
{
"result": "OK",
"action": "add_ipv4",
"id": 12345,
"ips": [
{
"IP": "192.168.1.10",
"vlan": 100
},
{
"IP": "192.168.1.11",
"vlan": 100
}
],
"keys": [
"key_abc123",
"key_def456"
]
}
Примеры ошибок
net/block_ip¶
Блокирует указанный IP-адрес на сервере через BIRD или blackhole. Требует причину блокировки.
HTTP-метод: POST
Параметры:
| Параметр | Обязательный | Тип | Описание |
|---|---|---|---|
| action | ✅ | string | Идентификатор метода: block_ip |
| token | ✅ | string | Токен авторизации |
| id | ✅ | int | ID сервера |
| ip | ✅ | string | IP адрес для блокировки |
| description | ✅ | string | Причина блокировки (описание) |
| four_hours | ❌ | int | Установить временную блокировку на 4 часа (1 для включения) |
Пример запроса
curl -s "https://invapi.hostkey.ru/net" -X POST \
--data "action=block_ip" \
--data "token=HOSTKEY_TOKEN" \
--data "id=VALUE" \
--data "ip=VALUE" \
--data "description=VALUE"
Пример успешного ответа
Примеры ошибок
net/get_status¶
Возвращает текущий статус сетевого интерфейса сервера (up/down, скорость, дуплекс, MAC).
HTTP-метод: GET|POST
Параметры:
| Параметр | Обязательный | Тип | Описание |
|---|---|---|---|
| action | ✅ | string | Идентификатор метода: get_status |
| token | ✅ | string | Токен авторизации |
| id | ✅ | int | ID сервера |
| port | ❌ | string | Название интерфейса (например, eth0). Если не указан, берется основной интерфейс. |
Пример запроса
curl -s "https://invapi.hostkey.ru/net" -X GET \
--data "action=get_status" \
--data "token=HOSTKEY_TOKEN" \
--data "id=12345" \
--data "port=eth0"
Пример успешного ответа
{
"result": "OK",
"action": "get_status",
"data": {
"port": "eth0",
"status": "up",
"speed": "10000",
"duplex": "full",
"mac": "00:11:22:33:44:55"
}
}
Примеры ошибок
{
"code": -1,
"message": "net/get_status: invalid request for server 12345 with port eth0",
"description": "Ошибка валидации параметров или отсутствие прав доступа"
}
net/port_off¶
Отключает сетевой интерфейс сервера. Может добавлять тег блокировки с причиной.
HTTP-метод: POST
Параметры:
| Параметр | Обязательный | Тип | Описание |
|---|---|---|---|
| action | ✅ | string | Идентификатор метода: port_off |
| token | ✅ | string | Токен авторизации |
| id | ✅ | int | ID сервера |
| port | ❌ | string | Название интерфейса (например, eth0). Если не указан, выбирается основной интерфейс. |
| reason | ❌ | string | Причина отключения (добавляется в тег block) |
Пример запроса
curl -s "https://invapi.hostkey.ru/net" -X POST \
--data "action=port_off" \
--data "token=HOSTKEY_TOKEN" \
--data "id=VALUE" \
--data "port=eth0" \
--data "reason=Test reason"
Пример успешного ответа
Примеры ошибок
{
"code": -1,
"message": "net/port_off: admin ban could not be lifted this way, please contact support or abuse team."
}
net/port_on¶
Включает сетевой интерфейс сервера. Удаляет тег блокировки, если он не был установлен администратором.
HTTP-метод: POST
Параметры:
| Параметр | Обязательный | Тип | Описание |
|---|---|---|---|
| action | ✅ | string | Идентификатор метода: port_on |
| token | ✅ | string | Токен авторизации |
| id | ✅ | int | ID сервера |
| port | ❌ | string | Название интерфейса (например, eth0). Если не указан, используется основной интерфейс или первый eth-интерфейс. |
Пример запроса
curl -s "https://invapi.hostkey.ru/net" -X POST \
--data "action=port_on" \
--data "token=HOSTKEY_TOKEN" \
--data "id=VALUE"
Пример успешного ответа
Примеры ошибок
{
"code": -1,
"message": "admin ban could not be lifted this way, please contact support or abuse team."
}
net/remove_ipv4¶
Удаляет указанный IPv4 адрес или все адреса с сервера. Очищает PTR записи в DNS.
HTTP-метод: POST
Параметры:
| Параметр | Обязательный | Тип | Описание |
|---|---|---|---|
| action | ✅ | string | Идентификатор метода: remove_ipv4 |
| token | ✅ | string | Токен авторизации |
| id | ✅ | int | ID сервера |
| ip | ✅ | string | IP адрес для удаления |
| remove_all | ❌ | int | Удалить все IP адреса с сервера (1 - да, 0 - нет) |
Пример запроса
curl -s "https://invapi.hostkey.ru/net" -X POST \
--data "action=remove_ipv4" \
--data "token=HOSTKEY_TOKEN" \
--data "id=VALUE" \
--data "ip=VALUE"
Пример успешного ответа
{
"result": "OK",
"action": "remove_ipv4",
"id": 12345,
"ips": [
"192.168.1.10"
],
"keys": [
"key_xyz789"
]
}
Примеры ошибок
net/show_cacti¶
Возвращает данные или ссылку на график трафика для указанного порта сервера из системы мониторинга Cacti.
HTTP-метод: POST
Параметры:
| Параметр | Обязательный | Тип | Описание |
|---|---|---|---|
| action | ✅ | string | Идентификатор метода: show_cacti |
| token | ✅ | string | Токен авторизации |
| id | ✅ | int | ID сервера |
| port | ❌ | string | Название интерфейса (например, eth0) |
| graph | ❌ | string | Тип графика (по умолчанию 1) |
Пример запроса
curl -s "https://invapi.hostkey.ru/net" -X POST \
--data "action=show_cacti" \
--data "token=HOSTKEY_TOKEN" \
--data "id=VALUE" \
--data "port=eth0" \
--data "graph=1"
Пример успешного ответа
{
"result": "OK",
"action": "show_cacti",
"data": {
"graph_url": "https://cacti.example.com/graph.php?id=12345",
"port": "eth0",
"server_id": 12345
}
}
Примеры ошибок
net/show_ipv4_free¶
Возвращает список доступных свободных IPv4 адресов для указанного сервера, порта и VLAN.
HTTP-метод: POST
Параметры:
| Параметр | Обязательный | Тип | Описание |
|---|---|---|---|
| action | ✅ | string | Идентификатор метода: show_ipv4_free |
| token | ✅ | string | Токен авторизации |
| id | ✅ | int | ID сервера |
| port | ✅ | string | Название интерфейса (например, eth0) |
| vlan | ❌ | int | ID VLAN (опционально, используется для администраторов) |
| tag | ❌ | string | Тег сети (например, bm, ipmi, ovirt) |
| fresh_period | ❌ | int | Период свежести IP (в секундах, -1 если не задано) |
| allow_tech_networks | ❌ | int | Разрешить технические сети (0 или 1) |
Пример запроса
curl -s "https://invapi.hostkey.ru/net" -X POST \
--data "action=show_ipv4_free" \
--data "token=HOSTKEY_TOKEN" \
--data "id=VALUE" \
--data "port=VALUE"
Пример успешного ответа
{
"result": "OK",
"action": "show_ipv4_free",
"id": 12345,
"ips": [
{
"IP": "192.168.1.20",
"vlan": 100
},
{
"IP": "192.168.1.21",
"vlan": 100
}
],
"subnets": [
"192.168.1.0/24"
],
"res": "success",
"total_ips": 2,
"fresh": -1
}
Примеры ошибок
net/unblock_ip¶
Разблокирует ранее заблокированный IP-адрес на сервере. Требует прав администратора или совпадения с причиной блокировки.
HTTP-метод: POST
Параметры:
| Параметр | Обязательный | Тип | Описание |
|---|---|---|---|
| action | ✅ | string | Идентификатор метода: unblock_ip |
| token | ✅ | string | Токен авторизации |
| id | ✅ | int | ID сервера |
| ip | ✅ | string | IP адрес для разблокировки |
Пример запроса
curl -s "https://invapi.hostkey.ru/net" -X POST \
--data "action=unblock_ip" \
--data "token=HOSTKEY_TOKEN" \
--data "id=VALUE" \
--data "ip=VALUE"
Пример успешного ответа
Примеры ошибок
{
"code": -1,
"message": "permission denied to remove block for 192.168.1.50. Please contract support."
}