将token加密key配置抽离到配置文件

This commit is contained in:
OldCat 2021-01-27 20:34:27 +08:00
parent c276c389b1
commit 4b6e3ad881
12 changed files with 60 additions and 43 deletions

4
.gitignore vendored
View File

@ -4,7 +4,9 @@
*.dll *.dll
*.so *.so
*.dylib *.dylib
.idea
ssh_manage_linux.zip
ssh_manage_windows.zip
# Test binary, built with `go test -c` # Test binary, built with `go test -c`
*.test *.test

View File

@ -2,10 +2,17 @@ package common
import ( import (
"github.com/dgrijalva/jwt-go" "github.com/dgrijalva/jwt-go"
"ssh_manage/config"
"time" "time"
) )
var jwt_ket = []byte("ss_jwt_token") func init() {
if config.Config.Jwt.Key == "ss_jwt_token" {
panic("请先修改Jwt key")
}
}
var jwt_ket = []byte(config.Config.Jwt.Key)
type Claims struct { type Claims struct {
Userid uint Userid uint

View File

@ -36,14 +36,14 @@ type MyClient struct {
} }
type clients struct { type clients struct {
sync.RWMutex *sync.RWMutex
C map[string]*MyClient C map[string]*MyClient
} }
var Client clients var Client clients
func init() { func init() {
Client = clients{C: make(map[string]*MyClient, 1000)} Client = clients{new(sync.RWMutex),make(map[string]*MyClient)}
} }
func (c *MyClient) ReceiveWsMsg(wsConn *websocket.Conn, exitCh chan bool) { func (c *MyClient) ReceiveWsMsg(wsConn *websocket.Conn, exitCh chan bool) {

View File

@ -17,8 +17,11 @@ port = 6379
password = "" #没有则不填 password = "" #没有则不填
poolsize = 10 #Redis连接池大小 poolsize = 10 #Redis连接池大小
[Alisms] [Alisms] #阿里云短信配置
accessid = "—" accessid = "—"
accesskey = "-" accesskey = "-"
signname = "-" #短信签名 signname = "-" #短信签名
template = "-" #模板代码 template = "-" #模板代码
[Jwt]
key = "ss_jwt_token"

View File

@ -11,6 +11,11 @@ type config struct {
Database *database Database *database
Redis *redis Redis *redis
Alisms *alisms Alisms *alisms
Jwt *jwtInfo
}
type jwtInfo struct {
Key string
} }
type alisms struct { type alisms struct {

View File

@ -11,16 +11,16 @@ import (
func Addser(c *gin.Context) { func Addser(c *gin.Context) {
var resp Apiform.Resp var resp Apiform.Resp
new_token := c.MustGet("token").(string) newToken := c.MustGet("token").(string)
if new_token != "" { //更新Token逻辑 if newToken != "" { //更新Token逻辑
resp.Token = new_token resp.Token = newToken
} }
uid := c.MustGet("uid").(uint) uid := c.MustGet("uid").(uint)
var info Apiform.Addser var info Apiform.Addser
resp.Code = errcode.C_from_err resp.Code = errcode.C_from_err
resp.Msg = "数据错误" resp.Msg = "数据错误"
if c.ShouldBind(&info) == nil { if c.ShouldBind(&info) == nil {
if(common.CheckIp(info.Ip)){ if common.CheckIp(info.Ip) {
db := database.Get() db := database.Get()
defer db.Close() defer db.Close()
result := db.DB.Create(&model.Server{Ip: info.Ip,Port: info.Port,Username: info.Username,Password: info.Password,Nickname: info.Nickname,BindUser: uid}) result := db.DB.Create(&model.Server{Ip: info.Ip,Port: info.Port,Username: info.Username,Password: info.Password,Nickname: info.Nickname,BindUser: uid})

View File

@ -12,9 +12,9 @@ import (
func Info(c *gin.Context) { func Info(c *gin.Context) {
var resp Apiform.Resp var resp Apiform.Resp
new_token := c.MustGet("token").(string) newToken := c.MustGet("token").(string)
if new_token != "" { //更新Token逻辑 if newToken != "" { //更新Token逻辑
resp.Token = new_token resp.Token = newToken
} }
uid := c.MustGet("uid").(uint) uid := c.MustGet("uid").(uint)
var limit Apiform.Slist var limit Apiform.Slist
@ -45,9 +45,9 @@ func Info(c *gin.Context) {
func UpdataNick(c *gin.Context) { func UpdataNick(c *gin.Context) {
var resp Apiform.Resp var resp Apiform.Resp
var edit Apiform.Edit var edit Apiform.Edit
new_token := c.MustGet("token").(string) newToken := c.MustGet("token").(string)
if new_token != "" { //更新Token逻辑 if newToken != "" { //更新Token逻辑
resp.Token = new_token resp.Token = newToken
} }
uid := c.MustGet("uid").(uint) uid := c.MustGet("uid").(uint)
//nickname, name_exist := c.GetPostForm("nickname") //nickname, name_exist := c.GetPostForm("nickname")
@ -79,9 +79,9 @@ func UpdataNick(c *gin.Context) {
func Resetpass(c *gin.Context) { func Resetpass(c *gin.Context) {
var resp Apiform.Resp var resp Apiform.Resp
var edit Apiform.EditPass var edit Apiform.EditPass
new_token := c.MustGet("token").(string) newToken := c.MustGet("token").(string)
if new_token != "" { //更新Token逻辑 if newToken != "" { //更新Token逻辑
resp.Token = new_token resp.Token = newToken
} }
uid := c.MustGet("uid").(uint) uid := c.MustGet("uid").(uint)
//nickname, name_exist := c.GetPostForm("nickname") //nickname, name_exist := c.GetPostForm("nickname")
@ -113,9 +113,9 @@ func Resetpass(c *gin.Context) {
func Del(c *gin.Context) { func Del(c *gin.Context) {
var resp Apiform.Resp var resp Apiform.Resp
var del Apiform.Edit var del Apiform.Edit
new_token := c.MustGet("token").(string) newToken := c.MustGet("token").(string)
if new_token != "" { //更新Token逻辑 if newToken != "" { //更新Token逻辑
resp.Token = new_token resp.Token = newToken
} }
uid := c.MustGet("uid").(uint) uid := c.MustGet("uid").(uint)
if c.ShouldBind(&del) == nil { if c.ShouldBind(&del) == nil {
@ -143,9 +143,9 @@ func Del(c *gin.Context) {
func GetTerm(c *gin.Context) { func GetTerm(c *gin.Context) {
var resp Apiform.Resp var resp Apiform.Resp
var term Apiform.GetTerm var term Apiform.GetTerm
new_token := c.MustGet("token").(string) newToken := c.MustGet("token").(string)
if new_token != "" { //更新Token逻辑 if newToken != "" { //更新Token逻辑
resp.Token = new_token resp.Token = newToken
} }
uid := c.MustGet("uid").(uint) uid := c.MustGet("uid").(uint)
resp.Code = errcode.C_from_err resp.Code = errcode.C_from_err
@ -158,7 +158,7 @@ func GetTerm(c *gin.Context) {
defer db.Close() defer db.Close()
result := db.DB.Model(&model.Server{}).First(&server) result := db.DB.Model(&model.Server{}).First(&server)
if result.RowsAffected == 1 && result.Error == nil { if result.RowsAffected == 1 && result.Error == nil {
db.DB.Model(&model.Server{}).Where(&server).Update(model.Server{BeforeTime: jtime.JsonTime{time.Now()}}) db.DB.Model(&model.Server{}).Where(&server).Update(model.Server{BeforeTime: jtime.JsonTime{Time: time.Now()}})
sid, err := term.Decode(server) sid, err := term.Decode(server)
//log.Println(sid) //log.Println(sid)
if err == nil { if err == nil {

View File

@ -14,18 +14,18 @@ import (
func Auth() gin.HandlerFunc { func Auth() gin.HandlerFunc {
return func(c *gin.Context) { return func(c *gin.Context) {
var resp Apiform.Resp var resp Apiform.Resp
jwt_token := c.GetHeader("Authorization") jwtToken := c.GetHeader("Authorization")
//log.Println(jwt_token) //log.Println(jwt_token)
//log.Println(strings.HasPrefix(jwt_token, "Bearer ")) //log.Println(strings.HasPrefix(jwt_token, "Bearer "))
if jwt_token == "" || !strings.HasPrefix(jwt_token, "Bearer ") { if jwtToken == "" || !strings.HasPrefix(jwtToken, "Bearer ") {
resp.Code = errcode.S_auth_fmt_err resp.Code = errcode.S_auth_fmt_err
resp.Msg = "Token不正确" resp.Msg = "Token不正确"
c.JSON(200, resp) c.JSON(200, resp)
c.Abort() c.Abort()
return return
} }
jwt_token = jwt_token[7:] jwtToken = jwtToken[7:]
claims, err := common.ParseToken(jwt_token) claims, err := common.ParseToken(jwtToken)
if err != nil { if err != nil {
resp.Code = errcode.S_auth_err resp.Code = errcode.S_auth_err
resp.Msg = "Token错误请重新登录" resp.Msg = "Token错误请重新登录"
@ -41,12 +41,12 @@ func Auth() gin.HandlerFunc {
c.Abort() c.Abort()
return return
} }
var userinfo model.User var userInfo model.User
db := database.Get() db := database.Get()
defer db.Close() defer db.Close()
userinfo.ID = claims.Userid userInfo.ID = claims.Userid
db.DB.Where(userinfo).First(&userinfo) db.DB.Where(userInfo).First(&userInfo)
if userinfo.Phone == 0 { if userInfo.Phone == 0 {
resp.Code = errcode.S_auth_err resp.Code = errcode.S_auth_err
resp.Msg = "用户不存在,请重新登录" resp.Msg = "用户不存在,请重新登录"
c.JSON(200, resp) c.JSON(200, resp)
@ -55,9 +55,9 @@ func Auth() gin.HandlerFunc {
} }
c.Set("uid", claims.Userid) c.Set("uid", claims.Userid)
c.Set("token", "") c.Set("token", "")
new_token, err := common.ReleaseToken(claims.Userid) newToken, err := common.ReleaseToken(claims.Userid)
if time.Now().Add(24*time.Hour).Unix() > claims.ExpiresAt { //如果过期时间小于一天则更新客户端token if time.Now().Add(24*time.Hour).Unix() > claims.ExpiresAt { //如果过期时间小于一天则更新客户端token
c.Set("token", new_token) c.Set("token", newToken)
} }
c.Next() c.Next()
} }

View File

@ -7,13 +7,13 @@ import (
"time" "time"
) )
var redis_conf = config.Config.Redis var redisConf = config.Config.Redis
var Cache *redigo.Pool var Cache *redigo.Pool
func init() { func init() {
var addr = fmt.Sprintf("%s:%d",redis_conf.Host,redis_conf.Port) var addr = fmt.Sprintf("%s:%d", redisConf.Host, redisConf.Port)
var password = redis_conf.Password var password = redisConf.Password
Cache = poolInitRedis(addr, password) Cache = poolInitRedis(addr, password)
} }
@ -21,7 +21,7 @@ func poolInitRedis(server string, password string) *redigo.Pool {
return &redigo.Pool{ return &redigo.Pool{
MaxIdle: 2, //空闲数 MaxIdle: 2, //空闲数
IdleTimeout: 240 * time.Second, IdleTimeout: 240 * time.Second,
MaxActive: redis_conf.Poolsize, //最大数 MaxActive: redisConf.Poolsize, //最大数
Dial: func() (redigo.Conn, error) { Dial: func() (redigo.Conn, error) {
c, err := redigo.Dial("tcp", server) c, err := redigo.Dial("tcp", server)
if err != nil { if err != nil {

View File

@ -9,4 +9,4 @@ type Model struct {
CreatedAt jtime.JsonTime CreatedAt jtime.JsonTime
UpdatedAt jtime.JsonTime UpdatedAt jtime.JsonTime
DeletedAt jtime.JsonTime `sql:"index"` DeletedAt jtime.JsonTime `sql:"index"`
} }

View File

@ -62,8 +62,8 @@ sendmsg_callback = function (result) {
} }
var countdowns = 120; let countdowns = 120;
var button = $('#send'); let button = $('#send');
countdown = function () { countdown = function () {
setTimeout(function () { setTimeout(function () {