Ecosyste.ms: Awesome

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

Awesome Lists | Featured Topics | Projects

https://github.com/dvamishkilapa/protection-network-objects

Сервис на Python (3.9+) с использованием Flask для управления статусами защиты объектов сети (пример)
https://github.com/dvamishkilapa/protection-network-objects

docker flask flask-restful flask-sqlalchemy mysql python3 sqlalchemy

Last synced: 21 days ago
JSON representation

Сервис на Python (3.9+) с использованием Flask для управления статусами защиты объектов сети (пример)

Awesome Lists containing this project

README

        

# protection-network-objects

Сервис на Python (3.9+) с использованием [Flask](https://flask-restful.readthedocs.io/en/latest/) для управления статусом защиты объектов сети (пример).

## Содержание

- [protection-network-objects](#protection-network-objects)
- [Содержание](#содержание)
- [1. Запуск сервиса](#1-запуск-сервиса)
- [2. Используемые инструменты](#2-используемые-инструменты)
- [3. Реализованное API](#3-реализованное-api)
- [3.1 `POST / ​{'CMD': 'SET', ...}`](#31-post--cmd-set-)
- [3.2 `POST / ​{'CMD': 'PULL'}`](#32-post--cmd-pull)

### 1. Запуск сервиса

Для запуска сервиса необходим установленный [Docker](https://docs.docker.com/engine/install/) и [Docker-compose](https://docs.docker.com/compose/install/).

Команда запуска сервиса:

```bash
docker-compose up
```

Команда запуска сервиса в фоновом режиме:

```bash
docker-compose up -d
```

После запуска работу сервиса можно проверить отправив на `POST` запрос.

### 2. Используемые инструменты

Сервис работает с использованием [Flask-restful](https://flask-restful.readthedocs.io/en/latest/).

В качестве базы данных используется [MySQL](https://www.mysql.com/).

Для взаимодействия с [MySQL](https://www.mysql.com/) используется [flask-sqlalchemy](https://flask-sqlalchemy.palletsprojects.com/en/2.x/).

### 3. Реализованное API

#### 3.1 `POST / ​{'CMD': 'SET', ...}`

Метод установки/обновления статуса защиты для указанного объекта.

| Название поля | Тип данных | Обязательное поле? | Возможные значения | Описание |
| ------------- | :--------: | :----------------: | :--------------------: | ----------------------------------------- |
| `CMD` | `string` | **+** | `SET` | Требуемая команда |
| `ID` | `int` | **+** | 0 < `ID` < 2000000001 | `ID` объекта для установки или обновления |
| `DEFENSE` | `int` | **+** | 1 <= `DEFENSE` <= 3 | Требуемый уровень защиты |
| `TTL` | `int` | **+** | 1 <= `DEFENSE` <= 3600 | Продолжительность защиты в секундах |

Пример запроса:

```json
{
"CMD": "SET",
"ID": 1,
"DEFENSE": 3,
"TTL": 10
}
```

Пример ответа:

```json
{
"ID": 1,
"result": "ok"
}
```

#### 3.2 `POST / ​{'CMD': 'PULL'}`

Метод получения статуса всех объектов под защитой.

| Название поля | Тип данных | Обязательное поле? | Возможные значения | Описание |
| ------------- | :--------: | :----------------: | :----------------: | ----------------- |
| `CMD` | `string` | **+** | `PULL` | Требуемая команда |

Пример запроса:

```json
{
"CMD": "PULL",
}
```

Пример ответа:

```json
{
"1": {
"DEFENSE": 2,
"START_PROTECTION": "04-11-2022, 13:18:56",
"END_PROTECTION": "04-11-2022, 13:20:36"
},
"2": {
"DEFENSE": 2,
"START_PROTECTION": "04-11-2022, 13:19:02",
"END_PROTECTION": "04-11-2022, 13:21:32"
},
"3": {
"DEFENSE": 1,
"START_PROTECTION": "04-11-2022, 13:19:15",
"END_PROTECTION": "04-11-2022, 13:21:45"
}
}
```