netter 0.3.2

Netter is a CLI tool for fast and easy server startup!
# Netter

Netter - это CLI инструмент для быстрого и простого запуска серверов

## Оглавление

* [будущее](#будущее)
* [Функционал](#функционал)
* [Документация](#документация)
* [Установка](#установка)

## Будущее

* Поддержка сложных структур серверов, а также роутингов;
* Поддержка разных видов серверов: HTTP, gRPC, TCP/UDP сокеты;
* Поддержка SSL/TLS

## Функционал

* Создание сервера на веб сокетах (websockets);
* Остановка любого сервера, запущенного через netter

## Документация

Запуск сервера происходит через команду:

``` powershell
netter start
```

Отключение сервера через команду:

```powershell
netter stop
```

### Start

Команда start принимает в себя следующие параметры:

* **--type** : тип сервера: **websocket**, **tcp**, **udp**, **http**, **grpc**:

``` powershell
netter start --websocket
```

* **--host** : адрес сервера:

``` powershell
netter start --websocket --host 127.0.0.1
```

* **--port** : порт сервера:

``` powershell
netter start --websocket --host 127.0.0.1 --port 808
```

* **--protect** : защищать или нет (по умолчанию нет. При осутствии флага тоже нет):

```powershell
netter start --websocket --host 127.0.0.1 --port 8080 --protect
```

Для параметра типа и статус защиты сервера не нужно ничего указать, кроме самого флага.\

### Stop

Команда stop остановит любой запущенный сервер:

```powershell
netter stop
```

#### Как это работает?

> [!NOTE]
> При запуске сервера (netter start) создаётся файл состояния сервера, в котором указываются host, **pid**, port и наличие защиты protect. Этот файл помогает сохранять само по себе наличие запущенного сервера и управлять им в процессе, т.к. каждая новая команда, которую вы используете = запуск кода заново. Запущенный сервер продолжит работу, т.к. он построен на асинхронностях.\
> Завершить работу сервера помогает наличие параметра pid в файле состояния, который указывает на айди процесса сервера в системе. После использования команды stop, netter "убивает" процесс (останавливает)

## Установка

В случае появления ошибок и вопрсов по установки Rust вы можете посмотреть документацию в [книге по Rust](https://rust-lang.github.io/book/ch01-01-installation.html)

### Windows

* Для установки Rust на windows вам необходимо перейти по [ссылке](https://www.rust-lang.org/tools/install) и загрузить от туда сам язык.

* Затем вам необходимо установить netter:

```powershell
cargo install netter
```

### Linux

* Установим Rust:

```bash
curl --proto '=https' --tlsv1.2 https://sh.rustup.rs -sSf | sh
```

* Установка netter:

```bash
cargo install netter
```