# Trigger туннель

## Обзор

Триггеры - команды, выполняемые по определенному событию, tuna поддерживает два типа событий:

* HTTP запрос (Webhook)
* Письмо (SMTP)

к сведению

Создание Trigger туннеля доступно только по [подписке](https://tuna.am/#pricing).

### Пример

примечание

Все актуальные флаги, подсказки и примеры можно посмотреть вызвав справку:

```shell
tuna trigger --help
tuna trigger webhook --help
tuna trigger smtp --help

```

Почти для всех флагов есть аналогичные [переменные окружения](https://tuna.am/docs/guides/environment-variables.md).

### Скрипт для запуска

Например создайте скрипт `/tmp/trigger.sh` который будет создавать файл и записывать в него фразу `Hello tuna`:

/tmp/trigger.sh

```shell
#!/bin/sh
set -xe
touch /tmp/test_file.txt
echo "Hello tuna" > /tmp/test_file.txt

```

Затем сделайте его исполняемым с помощью команды `chmod +x /tmp/trigger.sh`.

### HTTP запрос (Webhook)

```shell
tuna trigger webhook /tmp/trigger.sh

```

tuna сгенерирует ссылку:

```log
INFO[13:00:00] Welcome to Tuna
INFO[13:00:00] Forwarding tcp://ru.tuna.am:16502 -> 127.0.0.1:35839
INFO[13:00:00] Send an HTTP request to http://ru.tuna.am:16502 to execute the command "/tmp/trigger.sh"

```

Теперь вы можете отправить запрос по указанному адресу, а tuna выполнит указанный скрипт, например:

```shell
curl -sSLf http://ru.tuna.am:16502

```

### Письмо (SMTP)

```shell
tuna trigger smtp /tmp/trigger.sh

```

tuna сгенерирует ссылку:

```log
INFO[13:00:00] Welcome to Tuna                                  
INFO[13:00:00] Forwarding tcp://ru.tuna.am:19284 -> 127.0.0.1:1025 
INFO[13:00:00] Send a message to SMTP server ru.tuna.am:19284 to execute the command "/tmp/trigger.sh" 

```

Теперь вы можете отправить письмо по указанному адресу, а tuna выполнит указанный скрипт, например:

```shell
curl -s \
  --url "smtp://ru.tuna.am:19284" \
  --mail-from "tuna@example.com" \
  --mail-rcpt "tuna@example.com" \
  --upload-file /tmp/trigger.sh

```

### С указанием токена

Можно указать специфичный токен через флаг `--token` или переменную окружения `TUNA_TOKEN`. Переопределение происходит в соответствии с политикой [очерёдности конфигурации](https://tuna.am/docs/guides/config-ordering.md).

```shell
tuna trigger webhook --token=tt_***
tuna trigger smtp --token=tt_***

```

### С указанием региона для подключения

Можно указать специфичный [регион](https://tuna.am/docs/tunnels/guides/locations.md) через флаг `--location`/`-l` или переменную окружения `TUNA_LOCATION`. Переопределение происходит в соответствии с политикой [очерёдности конфигурации](https://tuna.am/docs/guides/config-ordering.md).

```shell
tuna trigger webhook --location=nl
tuna trigger smtp --location=nl

```

### Статичный порт

В качестве значения флага `--port`/`-p` может выступать алиас или назначенный порт. Порты можно резервировать в [личном кабинете](https://my.tuna.am/tcp_ports) и после перезапуска туннеля адрес останется прежним. Подробнее о портах читайте в отдельной [инструкции](https://tuna.am/docs/tunnels/ports.md).

```shell
tuna trigger webhook --port=postgres
tuna trigger webhook --port=35000
tuna trigger smtp --port=postgres
tuna trigger smtp --port=35000

```
