feat: omc原始代码

This commit is contained in:
TsMask
2024-03-12 10:58:33 +08:00
parent 5133c93971
commit 2d01bb86d1
432 changed files with 66597 additions and 1 deletions

View File

@@ -0,0 +1,39 @@
package libfeatures
import (
"time"
"nms_nbi/lib/dborm"
"nms_nbi/lib/oauth"
libConfig "nms_nbi/restagent/config"
"nms_nbi/src/framework/logger"
"nms_nbi/src/framework/redis"
)
// SessionToken 设置登录会话-兼容旧登录方式
func SessionToken(username, sourceAddr string) bool {
// token, _ := redis.Get("", "session_token")
// if token != "" {
// se, err := dborm.XormUpdateSessionShakeTime(token)
// if se.AccountId != username || err != nil {
// // 过期时间单位秒 配置1800是半小时
// expireTime := time.Duration(int64(libConfig.GetExpiresFromConfig())) * time.Second
// redis.SetByExpire("", "session_token", token, expireTime)
// return true
// }
// }
// 不管原先的登录情况直接插入写入覆盖redis中session
//
token := oauth.GenRandToken("omc") // Generate new token to session ID
affected, err := dborm.XormInsertSession(username, sourceAddr, token, libConfig.GetExpiresFromConfig(), libConfig.GetYamlConfig().Auth.Session)
if err != nil {
logger.Errorf("SessionToken XormInsertSession err %v", err)
}
if affected >= 1 {
// 过期时间单位秒 配置1800是半小时
expireTime := time.Duration(int64(libConfig.GetExpiresFromConfig())) * time.Second
redis.SetByExpire("", "session_token", token, expireTime)
return true
}
return false
}

View File

@@ -0,0 +1,54 @@
package libfeatures
import (
"fmt"
libConf "nms_nbi/lib/core/conf"
libGlobal "nms_nbi/lib/global"
libConfig "nms_nbi/restagent/config"
"github.com/spf13/viper"
)
// BuildInfo 程序-V查看编译版本号信息
func BuildInfo() string {
return fmt.Sprintf("OMC restagent version: %s\n%s\n%s\n\n", libGlobal.Version, libGlobal.BuildTime, libGlobal.GoVer)
}
// ConfigRead 指定配置文件读取
func ConfigRead(configFile string) {
// 外层lib和features使用的配置
libConfig.ReadConfig(configFile)
uriPrefix := libConfig.GetYamlConfig().OMC.UriPrefix
if uriPrefix != "" {
libConfig.UriPrefix = uriPrefix
}
if libConfig.GetYamlConfig().TestConfig.Enabled {
libConfig.ReadTestConfigYaml(libConfig.GetYamlConfig().TestConfig.File)
}
// 外层lib和features使用配置
libConf.InitConfig(configFile)
}
// 配置文件读取进行内部参数合并
func ConfigInMerge() {
// 合并外层lib和features使用配置
for key, value := range libConf.AllSettings() {
// 跳过配置
if key == "testconfig" || key == "rest" || key == "logger" {
continue
}
// 数据库配置
if key == "database" {
item := value.(map[string]any)
defaultItem := viper.GetStringMap("gorm.datasource.default")
defaultItem["host"] = item["host"]
defaultItem["port"] = item["port"]
defaultItem["username"] = item["user"]
defaultItem["password"] = item["password"]
defaultItem["database"] = item["name"]
continue
}
viper.Set(key, value)
}
}

View File

@@ -0,0 +1,5 @@
# 外层 lib 和 features 粘合层
- config.go 配置合并: restagent.yaml 文件内容,主要是数据库配置
- account.go 登录会话生成 token
- session.go 中间件方式设置请求头 token 值

View File

@@ -0,0 +1,29 @@
package session
import (
"time"
libConfig "nms_nbi/restagent/config"
"nms_nbi/src/framework/redis"
"github.com/gin-gonic/gin"
)
// SessionHeader 旧登录方式token头
func SessionHeader() gin.HandlerFunc {
return func(c *gin.Context) {
// 读取登录生成的会话token
token, _ := redis.Get("", "session_token")
if token != "" {
// 过期时间单位秒 配置1800是半小时
expireTime := time.Duration(int64(libConfig.GetExpiresFromConfig())) * time.Second
redis.SetByExpire("", "session_token", token, expireTime)
c.Request.Header.Set("Accesstoken", token)
}
// Accesstoken: omc-ce4d0a86-8515-ad51-3249-4913c95f8e34
// 调用下一个处理程序
c.Next()
}
}