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 для скачивания образа
|
||||
- debug # Режим отладки (bool, влияет на лог-уровень)
|
||||
- shm_size # Размер /dev/shm в GB (дефолт: 1)
|
||||
- ptaf_fallback_code # Код ответа ptaf_fallback: число или 'pass' (дефолт: 418)
|
||||
```
|
||||
|
||||
**Важно:** `waf_instance` определяет на каком хосте должен работать клиент
|
||||
|
|
@ -157,7 +158,6 @@ waf-host-02 | instance-c
|
|||
- fail_timeout # Время восстановления сервера (дефолт 15с)
|
||||
- balancing_method # Метод балансировки: least_conn, ip_hash, random и др.
|
||||
- proxy_next_upstream_codes # HTTP-коды для proxy_next_upstream (дефолт: 500,502,503,504)
|
||||
- ptaf_fallback_code # Код ответа ptaf_fallback: число или 'pass' (дефолт: 418)
|
||||
```
|
||||
|
||||
#### Таблица `sp_info` (кэш API данных)
|
||||
|
|
@ -753,8 +753,8 @@ UPDATE apps_settings SET balancing_method = 'least_conn' WHERE l7resourceid = 12
|
|||
|
||||
```sql
|
||||
-- Пропускать трафик если 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
|
||||
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://...` |
|
||||
| `debug` | BOOLEAN | Режим отладки | `false` |
|
||||
| `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` |
|
||||
| `balancing_method` | TEXT | Метод балансировки upstream | `NULL` |
|
||||
| `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
|
||||
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';
|
||||
```
|
||||
|
||||
|
|
@ -316,13 +316,13 @@ proxy_next_upstream error timeout invalid_header http_502 http_503 http_504;
|
|||
|
||||
```sql
|
||||
-- Пропускать трафик если 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
|
||||
UPDATE apps_settings SET ptaf_fallback_code = '503' WHERE l7resourceid = 12345;
|
||||
UPDATE client_info SET ptaf_fallback_code = '503' WHERE client_uuid = 12345;
|
||||
|
||||
-- Вернуть дефолт (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
|
||||
|
|
|
|||
10
api.go
10
api.go
|
|
@ -347,13 +347,11 @@ type stringWriter interface {
|
|||
WriteString(s string) (int, error)
|
||||
}
|
||||
|
||||
// getPtafFallbackCode возвращает значение ptaf_fallback из первого ресурса где оно задано.
|
||||
// getPtafFallbackCode возвращает значение ptaf_fallback из client_info.
|
||||
// Дефолт: 418. Допустимые значения: число (например 503) или 'pass'
|
||||
func getPtafFallbackCode(resources []ResourceData) string {
|
||||
for _, res := range resources {
|
||||
if res.AppsSettings.PtafFallbackCode.Valid && strings.TrimSpace(res.AppsSettings.PtafFallbackCode.String) != "" {
|
||||
return strings.TrimSpace(res.AppsSettings.PtafFallbackCode.String)
|
||||
}
|
||||
func getPtafFallbackCode(clientInfo ClientInfo) string {
|
||||
if clientInfo.PtafFallbackCode.Valid && strings.TrimSpace(clientInfo.PtafFallbackCode.String) != "" {
|
||||
return strings.TrimSpace(clientInfo.PtafFallbackCode.String)
|
||||
}
|
||||
return "418"
|
||||
}
|
||||
|
|
|
|||
|
|
@ -69,7 +69,7 @@ func setupContainers(config Config, clientTitle string, clientInfo *ClientInfo,
|
|||
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 {
|
||||
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) {
|
||||
query := `
|
||||
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
|
||||
WHERE waf_instance = $1
|
||||
`
|
||||
|
|
@ -126,6 +126,7 @@ func getClientInfoByInstance(db *sql.DB, instance string) ([]ClientInfo, error)
|
|||
&ci.DockerImageDownload,
|
||||
&ci.Debug,
|
||||
&ci.ShmSize,
|
||||
&ci.PtafFallbackCode,
|
||||
)
|
||||
if err != nil {
|
||||
return nil, fmt.Errorf("ошибка сканирования строки: %w", err)
|
||||
|
|
@ -161,7 +162,6 @@ func getAppsSettingsByClientTitle(db *sql.DB, clientTitle string) ([]AppsSetting
|
|||
fail_timeout,
|
||||
balancing_method,
|
||||
proxy_next_upstream_codes,
|
||||
ptaf_fallback_code,
|
||||
custom_sw_nginx_ssl
|
||||
FROM apps_settings
|
||||
WHERE client_title = $1
|
||||
|
|
@ -197,7 +197,6 @@ func getAppsSettingsByClientTitle(db *sql.DB, clientTitle string) ([]AppsSetting
|
|||
&a.FailTimeout,
|
||||
&a.BalancingMethod,
|
||||
&a.ProxyNextUpstreamCodes,
|
||||
&a.PtafFallbackCode,
|
||||
&a.CustomSWNginxSSL,
|
||||
)
|
||||
if err != nil {
|
||||
|
|
@ -213,7 +212,7 @@ func getAppsSettingsByClientTitle(db *sql.DB, clientTitle string) ([]AppsSetting
|
|||
func getClientInfoByClientTitle(db *sql.DB, clientTitle string) (*ClientInfo, error) {
|
||||
query := `
|
||||
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
|
||||
WHERE client_title = $1
|
||||
`
|
||||
|
|
@ -230,6 +229,7 @@ func getClientInfoByClientTitle(db *sql.DB, clientTitle string) (*ClientInfo, er
|
|||
&clientInfo.DockerImageDownload,
|
||||
&clientInfo.Debug,
|
||||
&clientInfo.ShmSize,
|
||||
&clientInfo.PtafFallbackCode,
|
||||
)
|
||||
if err != nil {
|
||||
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)
|
||||
BalancingMethod sql.NullString // Метод балансировки: least_conn, ip_hash, random и т.д.
|
||||
ProxyNextUpstreamCodes sql.NullString // HTTP-коды для proxy_next_upstream (дефолт: 500,502,503,504)
|
||||
PtafFallbackCode sql.NullString // Код ответа ptaf_fallback: число или 'pass' (дефолт: 418)
|
||||
CustomSWNginxSSL sql.NullString // Кастомные SSL директивы для SW nginx - полностью заменяют дефолтные если заполнено
|
||||
}
|
||||
|
||||
|
|
@ -53,6 +52,7 @@ type ClientInfo struct {
|
|||
DockerImageDownload sql.NullString // URL для скачивания образа
|
||||
Debug bool // Режим отладки (влияет на лог-уровень и переменные окружения)
|
||||
ShmSize int // Размер /dev/shm в GB (дефолт 1)
|
||||
PtafFallbackCode sql.NullString // Код ответа ptaf_fallback: число или 'pass' (дефолт: 418)
|
||||
}
|
||||
|
||||
// Структуры для API ответов
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue