# 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
```