Release set paths for verification tokens

This commit is contained in:
Александр Федорюк 2022-11-29 15:46:00 +03:00
parent 9252064de1
commit 06ca4f932d
6 changed files with 128 additions and 52 deletions

View File

@ -33,53 +33,56 @@
# dirs:
# - lib
# - structs
security:
uri: "localhost/sec/app"
redirect: "localhost/sec"
func: "test.sec_auth"
rbac:
roles:
- name: SEC_ADMIN
display: Администратор безопасности
- name: APP_ADMIN
display: Администратор приложения
description: Роль применяется для администраторов приложения
groups:
- name: APP_ADMIN
display: Администратор приложения
roles:
- name: APP_ADMIN
- name: SEC_ADMIN
roles:
- name: SEC_ADMIN
- name: APP_ADMIN
access: deny
display: Администратор безопасности
description: Группа применяется для администраторов безопасности
users:
- login: app_admin
password: app_admin
email: test1@example.com
roles:
- name: APP_ADMIN
- login: sec_admin
password: sec_admin
email: test2@example.com
groups:
- name: SEC_ADMIN
params:
- name: gateway.s3.endpoint
value: "10.8.0.11:9900"
- name: gateway.s3.accessKeyID
value: "8yWig4ztLJhwETbe"
- name: gateway.s3.secretAccessKey
value: "j9iWGuuoBNMi14TmmdoglRBE1itn1JFx"
- name: gateway.s3.bucket
value: "yt-gateway"
- name: gateway.s3.useSSL
value: "false"
- name: security.pwd.power
value: "10"
- name: security.pwd.jwt.secret
value: "secret"
token:
- domain: yt.com
paths:
- /
#security:
# uri: "localhost/sec/app"
# redirect: "localhost/sec"
# func: "test.sec_auth"
# rbac:
# roles:
# - name: SEC_ADMIN
# display: Администратор безопасности
# - name: APP_ADMIN
# display: Администратор приложения
# description: Роль применяется для администраторов приложения
# groups:
# - name: APP_ADMIN
# display: Администратор приложения
# roles:
# - name: APP_ADMIN
# - name: SEC_ADMIN
# roles:
# - name: SEC_ADMIN
# - name: APP_ADMIN
# access: deny
# display: Администратор безопасности
# description: Группа применяется для администраторов безопасности
# users:
# - login: app_admin
# password: app_admin
# email: test1@example.com
# roles:
# - name: APP_ADMIN
# - login: sec_admin
# password: sec_admin
# email: test2@example.com
# groups:
# - name: SEC_ADMIN
#params:
# - name: gateway.s3.endpoint
# value: "10.8.0.11:9900"
# - name: gateway.s3.accessKeyID
# value: "8yWig4ztLJhwETbe"
# - name: gateway.s3.secretAccessKey
# value: "j9iWGuuoBNMi14TmmdoglRBE1itn1JFx"
# - name: gateway.s3.bucket
# value: "yt-gateway"
# - name: gateway.s3.useSSL
# value: "false"
# - name: security.pwd.power
# value: "10"
# - name: security.pwd.jwt.secret
# value: "secret"

View File

@ -114,5 +114,13 @@ func ConfigUpload(filename string) {
SecuritySet(forUpload.Security)
}
//fmt.Println(forUpload)
if len(forUpload.Tokens) > 0 {
for _, tokens := range forUpload.Tokens {
bar := progressbar.Default(int64(len(tokens.Paths)), fmt.Sprintf(`Tokens: %s`, tokens.Domain))
for _, path := range tokens.Paths {
SetToken(tokens.Domain, path)
bar.Add(1)
}
}
}
}

View File

@ -32,6 +32,9 @@ type Config struct {
GatewayProxyAddr string
Method string
VerifyAccessToken bool
VerifyAccessTokenPath string
}
var AppConfig Config
@ -136,6 +139,14 @@ func parseArgs(args []string) {
} else {
panic(fmt.Errorf("error count arguments for parameters file"))
}
case "--token":
if len(args) > 1 {
AppConfig.VerifyAccessToken = true
AppConfig.VerifyAccessTokenPath = args[1]
parseArgs(args[2:])
} else {
panic(fmt.Errorf("error count arguments for parameters file"))
}
default:
parseArgs(args[1:])
}
@ -143,5 +154,26 @@ func parseArgs(args []string) {
}
func PrintHelp() {
fmt.Println(``)
fmt.Println(`Установка различных параметров для разных частей системы.
Использование:
NATS_ADDR=nats://<addr> PROJECT=<name> MODULE=<name> ./yt-cli <args>
где:
NATS_ADDR - адрес менеджера очередей [nats://localhost:4222]
PROJECT - название проекта, для которого применяются параметры [system]
MODULE - модуль проекта, для которого применяются параметры [cli]
Аргументы:
--help - это окно
--list - список параметров
--set <name> <value> - Установить параметр
--get <name> - получить значение параметра
--domain <name> - Доменное имя
--function <name> <path> - установить функцию для указанного ройтинга
--method <name> - метод, на который присваивается функция
--proxy <path> <proxyAddr> - проксирование запроса на другой адрес по указанному пути
--static-file <path> <file> - установка статичного файла по конкретному пути
--static-dir <path> <dir> - установка статичных файлов с вложенными файлами по конкретному пути рекурсивно с вложениями
--upload-settings <file> - файл настроек для массовой установки значений
--token <path> - установить проверку JWT для указанного пути и его вложений
`)
}

View File

@ -0,0 +1,25 @@
package lib
import (
"encoding/json"
"fmt"
)
func SetToken(domain, gatewayPath string) {
if domain == "" {
panic(fmt.Errorf("domain name should be set"))
}
paths := map[string][]string{
domain: {
gatewayPath,
},
}
var payload []byte
var err error
if payload, err = json.Marshal(paths); err != nil {
panic(nil)
}
if _, _, err = client.Call("system.gateway.setVerifyAccess", nil, payload); err != nil {
panic(err)
}
}

View File

@ -33,6 +33,8 @@ func main() {
lib.GatewayStaticDirSet(lib.AppConfig.Domain, lib.AppConfig.Dirname, lib.AppConfig.GatewayPath)
} else if lib.AppConfig.ParamFile {
lib.ConfigUpload(lib.AppConfig.Filename)
} else if lib.AppConfig.VerifyAccessToken {
lib.SetToken(lib.AppConfig.Domain, lib.AppConfig.VerifyAccessTokenPath)
} else {
lib.PrintHelp()
}

View File

@ -6,6 +6,12 @@ type ForUpload struct {
Static []Static `json:"static,omitempty"`
Security *Security `json:"security,omitempty"`
Params []Param `json:"params,omitempty"`
Tokens []Token `json:"token,omitempty"`
}
type Token struct {
Domain string `json:"domain"`
Paths []string `json:"paths"`
}
type Function struct {