Change place fallback
This commit is contained in:
parent
1126de8b59
commit
f2998502db
6 changed files with 18 additions and 20 deletions
|
|
@ -113,6 +113,7 @@ waf-host-02 | instance-c
|
||||||
- docker_image_download # URL для скачивания образа
|
- docker_image_download # URL для скачивания образа
|
||||||
- debug # Режим отладки (bool, влияет на лог-уровень)
|
- debug # Режим отладки (bool, влияет на лог-уровень)
|
||||||
- shm_size # Размер /dev/shm в GB (дефолт: 1)
|
- shm_size # Размер /dev/shm в GB (дефолт: 1)
|
||||||
|
- ptaf_fallback_code # Код ответа ptaf_fallback: число или 'pass' (дефолт: 418)
|
||||||
```
|
```
|
||||||
|
|
||||||
**Важно:** `waf_instance` определяет на каком хосте должен работать клиент
|
**Важно:** `waf_instance` определяет на каком хосте должен работать клиент
|
||||||
|
|
@ -157,7 +158,6 @@ waf-host-02 | instance-c
|
||||||
- fail_timeout # Время восстановления сервера (дефолт 15с)
|
- fail_timeout # Время восстановления сервера (дефолт 15с)
|
||||||
- balancing_method # Метод балансировки: least_conn, ip_hash, random и др.
|
- balancing_method # Метод балансировки: least_conn, ip_hash, random и др.
|
||||||
- proxy_next_upstream_codes # HTTP-коды для proxy_next_upstream (дефолт: 500,502,503,504)
|
- proxy_next_upstream_codes # HTTP-коды для proxy_next_upstream (дефолт: 500,502,503,504)
|
||||||
- ptaf_fallback_code # Код ответа ptaf_fallback: число или 'pass' (дефолт: 418)
|
|
||||||
```
|
```
|
||||||
|
|
||||||
#### Таблица `sp_info` (кэш API данных)
|
#### Таблица `sp_info` (кэш API данных)
|
||||||
|
|
@ -753,8 +753,8 @@ UPDATE apps_settings SET balancing_method = 'least_conn' WHERE l7resourceid = 12
|
||||||
|
|
||||||
```sql
|
```sql
|
||||||
-- Пропускать трафик если WAF недоступен
|
-- Пропускать трафик если WAF недоступен
|
||||||
UPDATE apps_settings SET ptaf_fallback_code = 'pass' WHERE l7resourceid = 12345;
|
UPDATE client_info SET ptaf_fallback_code = 'pass' WHERE client_uuid = 12345;
|
||||||
|
|
||||||
-- Вернуть 503 вместо 418
|
-- Вернуть 503 вместо 418
|
||||||
UPDATE apps_settings SET ptaf_fallback_code = '503' WHERE l7resourceid = 12345;
|
UPDATE client_info SET ptaf_fallback_code = '503' WHERE client_uuid = 12345;
|
||||||
```
|
```
|
||||||
|
|
|
||||||
|
|
@ -98,6 +98,7 @@ WHERE hostname = $1 AND instance = $2;
|
||||||
| `docker_image_download` | TEXT | URL для скачивания tar-архива образа | `https://...` |
|
| `docker_image_download` | TEXT | URL для скачивания tar-архива образа | `https://...` |
|
||||||
| `debug` | BOOLEAN | Режим отладки | `false` |
|
| `debug` | BOOLEAN | Режим отладки | `false` |
|
||||||
| `shm_size` | INTEGER | Размер /dev/shm в GB | `1` |
|
| `shm_size` | INTEGER | Размер /dev/shm в GB | `1` |
|
||||||
|
| `ptaf_fallback_code` | TEXT | Код ответа ptaf_fallback | `'418'` |
|
||||||
|
|
||||||
### Используемые запросы
|
### Используемые запросы
|
||||||
|
|
||||||
|
|
@ -216,7 +217,6 @@ ALTER TABLE client_info
|
||||||
| `fail_timeout` | INTEGER | Время восстановления сервера (сек) | `15` |
|
| `fail_timeout` | INTEGER | Время восстановления сервера (сек) | `15` |
|
||||||
| `balancing_method` | TEXT | Метод балансировки upstream | `NULL` |
|
| `balancing_method` | TEXT | Метод балансировки upstream | `NULL` |
|
||||||
| `proxy_next_upstream_codes` | TEXT | HTTP-коды для proxy_next_upstream | `'500,502,503,504'` |
|
| `proxy_next_upstream_codes` | TEXT | HTTP-коды для proxy_next_upstream | `'500,502,503,504'` |
|
||||||
| `ptaf_fallback_code` | TEXT | Код ответа ptaf_fallback | `'418'` |
|
|
||||||
|
|
||||||
### Используемые запросы
|
### Используемые запросы
|
||||||
|
|
||||||
|
|
@ -269,7 +269,7 @@ ALTER TABLE apps_settings
|
||||||
ALTER TABLE apps_settings
|
ALTER TABLE apps_settings
|
||||||
ADD COLUMN IF NOT EXISTS proxy_next_upstream_codes TEXT DEFAULT '500,502,503,504';
|
ADD COLUMN IF NOT EXISTS proxy_next_upstream_codes TEXT DEFAULT '500,502,503,504';
|
||||||
|
|
||||||
ALTER TABLE apps_settings
|
ALTER TABLE client_info
|
||||||
ADD COLUMN IF NOT EXISTS ptaf_fallback_code TEXT DEFAULT '418';
|
ADD COLUMN IF NOT EXISTS ptaf_fallback_code TEXT DEFAULT '418';
|
||||||
```
|
```
|
||||||
|
|
||||||
|
|
@ -316,13 +316,13 @@ proxy_next_upstream error timeout invalid_header http_502 http_503 http_504;
|
||||||
|
|
||||||
```sql
|
```sql
|
||||||
-- Пропускать трафик если WAF недоступен
|
-- Пропускать трафик если WAF недоступен
|
||||||
UPDATE apps_settings SET ptaf_fallback_code = 'pass' WHERE l7resourceid = 12345;
|
UPDATE client_info SET ptaf_fallback_code = 'pass' WHERE client_uuid = 12345;
|
||||||
|
|
||||||
-- Вернуть 503 вместо 418
|
-- Вернуть 503 вместо 418
|
||||||
UPDATE apps_settings SET ptaf_fallback_code = '503' WHERE l7resourceid = 12345;
|
UPDATE client_info SET ptaf_fallback_code = '503' WHERE client_uuid = 12345;
|
||||||
|
|
||||||
-- Вернуть дефолт (418)
|
-- Вернуть дефолт (418)
|
||||||
UPDATE apps_settings SET ptaf_fallback_code = NULL WHERE l7resourceid = 12345;
|
UPDATE client_info SET ptaf_fallback_code = NULL WHERE client_uuid = 12345;
|
||||||
```
|
```
|
||||||
|
|
||||||
#### upstream_angie_custom / upstream_nginx_custom
|
#### upstream_angie_custom / upstream_nginx_custom
|
||||||
|
|
|
||||||
10
api.go
10
api.go
|
|
@ -347,13 +347,11 @@ type stringWriter interface {
|
||||||
WriteString(s string) (int, error)
|
WriteString(s string) (int, error)
|
||||||
}
|
}
|
||||||
|
|
||||||
// getPtafFallbackCode возвращает значение ptaf_fallback из первого ресурса где оно задано.
|
// getPtafFallbackCode возвращает значение ptaf_fallback из client_info.
|
||||||
// Дефолт: 418. Допустимые значения: число (например 503) или 'pass'
|
// Дефолт: 418. Допустимые значения: число (например 503) или 'pass'
|
||||||
func getPtafFallbackCode(resources []ResourceData) string {
|
func getPtafFallbackCode(clientInfo ClientInfo) string {
|
||||||
for _, res := range resources {
|
if clientInfo.PtafFallbackCode.Valid && strings.TrimSpace(clientInfo.PtafFallbackCode.String) != "" {
|
||||||
if res.AppsSettings.PtafFallbackCode.Valid && strings.TrimSpace(res.AppsSettings.PtafFallbackCode.String) != "" {
|
return strings.TrimSpace(clientInfo.PtafFallbackCode.String)
|
||||||
return strings.TrimSpace(res.AppsSettings.PtafFallbackCode.String)
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
return "418"
|
return "418"
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -69,7 +69,7 @@ func setupContainers(config Config, clientTitle string, clientInfo *ClientInfo,
|
||||||
ptafConfig = clientInfo.PTAFConfig.String
|
ptafConfig = clientInfo.PTAFConfig.String
|
||||||
}
|
}
|
||||||
|
|
||||||
changed, err := generateNginxConf(nginxConfPath, config, ptafConfig, existingPodIP, clientInfo.Debug, getPtafFallbackCode(resources))
|
changed, err := generateNginxConf(nginxConfPath, config, ptafConfig, existingPodIP, clientInfo.Debug, getPtafFallbackCode(*clientInfo))
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return fmt.Errorf("ошибка генерации nginx.conf: %w", err)
|
return fmt.Errorf("ошибка генерации nginx.conf: %w", err)
|
||||||
}
|
}
|
||||||
|
|
|
||||||
8
db.go
8
db.go
|
|
@ -98,7 +98,7 @@ func checkHostBelongsToInstance(db *sql.DB, hostname, instance string) (bool, er
|
||||||
func getClientInfoByInstance(db *sql.DB, instance string) ([]ClientInfo, error) {
|
func getClientInfoByInstance(db *sql.DB, instance string) ([]ClientInfo, error) {
|
||||||
query := `
|
query := `
|
||||||
SELECT containers_count, ptaf_config, client_title, fluent_bit_port, waf_instance,
|
SELECT containers_count, ptaf_config, client_title, fluent_bit_port, waf_instance,
|
||||||
docker_image, docker_image_download, debug, shm_size
|
docker_image, docker_image_download, debug, shm_size, ptaf_fallback_code
|
||||||
FROM client_info
|
FROM client_info
|
||||||
WHERE waf_instance = $1
|
WHERE waf_instance = $1
|
||||||
`
|
`
|
||||||
|
|
@ -126,6 +126,7 @@ func getClientInfoByInstance(db *sql.DB, instance string) ([]ClientInfo, error)
|
||||||
&ci.DockerImageDownload,
|
&ci.DockerImageDownload,
|
||||||
&ci.Debug,
|
&ci.Debug,
|
||||||
&ci.ShmSize,
|
&ci.ShmSize,
|
||||||
|
&ci.PtafFallbackCode,
|
||||||
)
|
)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, fmt.Errorf("ошибка сканирования строки: %w", err)
|
return nil, fmt.Errorf("ошибка сканирования строки: %w", err)
|
||||||
|
|
@ -161,7 +162,6 @@ func getAppsSettingsByClientTitle(db *sql.DB, clientTitle string) ([]AppsSetting
|
||||||
fail_timeout,
|
fail_timeout,
|
||||||
balancing_method,
|
balancing_method,
|
||||||
proxy_next_upstream_codes,
|
proxy_next_upstream_codes,
|
||||||
ptaf_fallback_code,
|
|
||||||
custom_sw_nginx_ssl
|
custom_sw_nginx_ssl
|
||||||
FROM apps_settings
|
FROM apps_settings
|
||||||
WHERE client_title = $1
|
WHERE client_title = $1
|
||||||
|
|
@ -197,7 +197,6 @@ func getAppsSettingsByClientTitle(db *sql.DB, clientTitle string) ([]AppsSetting
|
||||||
&a.FailTimeout,
|
&a.FailTimeout,
|
||||||
&a.BalancingMethod,
|
&a.BalancingMethod,
|
||||||
&a.ProxyNextUpstreamCodes,
|
&a.ProxyNextUpstreamCodes,
|
||||||
&a.PtafFallbackCode,
|
|
||||||
&a.CustomSWNginxSSL,
|
&a.CustomSWNginxSSL,
|
||||||
)
|
)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
|
|
@ -213,7 +212,7 @@ func getAppsSettingsByClientTitle(db *sql.DB, clientTitle string) ([]AppsSetting
|
||||||
func getClientInfoByClientTitle(db *sql.DB, clientTitle string) (*ClientInfo, error) {
|
func getClientInfoByClientTitle(db *sql.DB, clientTitle string) (*ClientInfo, error) {
|
||||||
query := `
|
query := `
|
||||||
SELECT containers_count, ptaf_config, client_title, fluent_bit_port, waf_instance,
|
SELECT containers_count, ptaf_config, client_title, fluent_bit_port, waf_instance,
|
||||||
docker_image, docker_image_download, debug, shm_size
|
docker_image, docker_image_download, debug, shm_size, ptaf_fallback_code
|
||||||
FROM client_info
|
FROM client_info
|
||||||
WHERE client_title = $1
|
WHERE client_title = $1
|
||||||
`
|
`
|
||||||
|
|
@ -230,6 +229,7 @@ func getClientInfoByClientTitle(db *sql.DB, clientTitle string) (*ClientInfo, er
|
||||||
&clientInfo.DockerImageDownload,
|
&clientInfo.DockerImageDownload,
|
||||||
&clientInfo.Debug,
|
&clientInfo.Debug,
|
||||||
&clientInfo.ShmSize,
|
&clientInfo.ShmSize,
|
||||||
|
&clientInfo.PtafFallbackCode,
|
||||||
)
|
)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
if strings.Contains(err.Error(), "does not exist") {
|
if strings.Contains(err.Error(), "does not exist") {
|
||||||
|
|
|
||||||
2
types.go
2
types.go
|
|
@ -38,7 +38,6 @@ type AppsSettings struct {
|
||||||
FailTimeout sql.NullInt64 // Время в секундах после которого origin снова доступен (дефолт 15)
|
FailTimeout sql.NullInt64 // Время в секундах после которого origin снова доступен (дефолт 15)
|
||||||
BalancingMethod sql.NullString // Метод балансировки: least_conn, ip_hash, random и т.д.
|
BalancingMethod sql.NullString // Метод балансировки: least_conn, ip_hash, random и т.д.
|
||||||
ProxyNextUpstreamCodes sql.NullString // HTTP-коды для proxy_next_upstream (дефолт: 500,502,503,504)
|
ProxyNextUpstreamCodes sql.NullString // HTTP-коды для proxy_next_upstream (дефолт: 500,502,503,504)
|
||||||
PtafFallbackCode sql.NullString // Код ответа ptaf_fallback: число или 'pass' (дефолт: 418)
|
|
||||||
CustomSWNginxSSL sql.NullString // Кастомные SSL директивы для SW nginx - полностью заменяют дефолтные если заполнено
|
CustomSWNginxSSL sql.NullString // Кастомные SSL директивы для SW nginx - полностью заменяют дефолтные если заполнено
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -53,6 +52,7 @@ type ClientInfo struct {
|
||||||
DockerImageDownload sql.NullString // URL для скачивания образа
|
DockerImageDownload sql.NullString // URL для скачивания образа
|
||||||
Debug bool // Режим отладки (влияет на лог-уровень и переменные окружения)
|
Debug bool // Режим отладки (влияет на лог-уровень и переменные окружения)
|
||||||
ShmSize int // Размер /dev/shm в GB (дефолт 1)
|
ShmSize int // Размер /dev/shm в GB (дефолт 1)
|
||||||
|
PtafFallbackCode sql.NullString // Код ответа ptaf_fallback: число или 'pass' (дефолт: 418)
|
||||||
}
|
}
|
||||||
|
|
||||||
// Структуры для API ответов
|
// Структуры для API ответов
|
||||||
|
|
|
||||||
Loading…
Add table
Reference in a new issue