将token加密key配置抽离到配置文件
This commit is contained in:
parent
c276c389b1
commit
4b6e3ad881
4
.gitignore
vendored
4
.gitignore
vendored
@ -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
|
||||||
|
|
||||||
|
|||||||
@ -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
|
||||||
|
|||||||
@ -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) {
|
||||||
|
|||||||
@ -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"
|
||||||
@ -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 {
|
||||||
|
|||||||
@ -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})
|
||||||
|
|||||||
@ -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 {
|
||||||
|
|||||||
@ -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()
|
||||||
}
|
}
|
||||||
|
|||||||
@ -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 {
|
||||||
|
|||||||
@ -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 () {
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user