Commit f813ce62 authored by Eric's avatar Eric

Merge branch 'master' of https://github.com/LeeEirc/cocogo

parents c61a57f4 4fdac63b
package common
import "fmt"
......@@ -48,37 +48,40 @@ func (c *WrapperClient) Get(url string, res interface{}, needAuth bool) error {
} else {
return c.Http.Get(c.BaseHost+url, res)
}
}
func (c *WrapperClient) Post(url string, data interface{}, res interface{}, needAuth bool) error {
if needAuth {
return c.AuthClient.Post(url, data, res)
} else {
return c.Http.Post(url, data, res)
}
//if needAuth {
// c.Http.SetAuth(c.Auth.Sign())
//} else {
// c.Http.SetAuth("")
//}
return c.Http.Post(url, data, res)
}
func (c *WrapperClient) Delete(url string, res interface{}, needAuth bool) error {
if needAuth {
return c.AuthClient.Delete(url, res)
} else {
return c.Http.Delete(url, res)
}
//if needAuth {
// c.Http.SetAuth(c.Auth.Sign())
//} else {
// c.Http.SetAuth("")
//}
return c.Http.Delete(url, res)
}
func (c *WrapperClient) Put(url string, data interface{}, res interface{}, needAuth bool) error {
if needAuth {
return c.AuthClient.Put(url, data, res)
} else {
return c.Http.Put(url, data, res)
}
//if needAuth {
// c.Http.SetAuth(c.Auth.Sign())
//} else {
// c.Http.SetAuth("")
//}
return c.Http.Put(url, data, res)
}
func (c *WrapperClient) Patch(url string, data interface{}, res interface{}, needAuth bool) error {
if needAuth {
return c.AuthClient.Patch(url, data, res)
} else {
return c.Http.Patch(url, data, res)
}
//if needAuth {
// c.Http.SetAuth(c.Auth.Sign())
//} else {
// c.Http.SetAuth("")
//}
return c.Http.Patch(url, data, res)
}
package handler
import (
"bytes"
"cocogo/pkg/config"
"fmt"
"io"
......@@ -14,8 +15,26 @@ import (
const defaultTitle = `Welcome to use Jumpserver open source fortress system`
type MenuItem struct {
id int
instruct string
helpText string
showText string
}
func (mi *MenuItem) Text() string {
if mi.showText != "" {
return mi.showText
}
cm := ColorMeta{GreenBoldColor: "\033[1;32m", ColorEnd: "\033[0m"}
line := fmt.Sprintf("\t%d) Enter {{.GreenBoldColor}}%s{{.ColorEnd}} to %s.\r\n", mi.id, mi.instruct, mi.helpText)
tmpl := template.Must(template.New("item").Parse(line))
var buf bytes.Buffer
err := tmpl.Execute(&buf, cm)
if err != nil {
logger.Error(err)
}
mi.showText = string(buf.Bytes())
return mi.showText
}
type Menu []MenuItem
......@@ -32,10 +51,6 @@ var menu = Menu{
{instruct: "q", helpText: "exit"},
}
type Banner struct {
user string
}
type ColorMeta struct {
GreenBoldColor string
ColorEnd string
......
......@@ -63,7 +63,7 @@ func (i *InteractiveHandler) preDispatch() {
})
}
func (i *InteractiveHandler) watchSizeChange(winCh <-chan ssh.Window) {
func (i *InteractiveHandler) watchWinSizeChange(winCh <-chan ssh.Window) {
ctx, cancelFunc := context.WithCancel(i.sess.Context())
defer cancelFunc()
for {
......@@ -85,7 +85,7 @@ func (i *InteractiveHandler) Dispatch() {
i.preDispatch()
_, winCh, _ := i.sess.Pty()
for {
go i.watchSizeChange(winCh)
go i.watchWinSizeChange(winCh)
line, err := i.term.ReadLine()
if err != nil {
......@@ -163,36 +163,36 @@ func (i *InteractiveHandler) chooseSystemUser(systemUsers []sdk.SystemUser) sdk.
// 当资产的数量为1的时候,就进行代理转化
func (i *InteractiveHandler) displayAssetsOrProxy(assets []sdk.Asset) {
if len(assets) == 1 {
var systemUser sdk.SystemUser
switch len(assets[0].SystemUsers) {
case 0:
// 有授权的资产,但是资产用户信息,无法登陆
i.displayAssets(assets)
return
case 1:
systemUser = assets[0].SystemUsers[0]
default:
systemUser = i.chooseSystemUser(assets[0].SystemUsers)
}
authInfo, err := sdk.GetSystemUserAssetAuthInfo(systemUser.Id, assets[0].Id)
if err != nil {
return
}
if ok := service.ValidateUserAssetPermission(i.user.Id, systemUser.Id, assets[0].Id); !ok {
// 检查user 是否对该资产有权限
return
}
err = i.Proxy(assets[0], authInfo)
if err != nil {
logger.Info(err)
}
return
} else {
i.displayAssets(assets)
}
//if len(assets) == 1 {
// var systemUser sdk.SystemUser
// switch len(assets[0].SystemUsers) {
// case 0:
// // 有授权的资产,但是资产用户信息,无法登陆
// i.displayAssets(assets)
// return
// case 1:
// systemUser = assets[0].SystemUsers[0]
// default:
// systemUser = i.chooseSystemUser(assets[0].SystemUsers)
// }
//
// authInfo, err := sdk.GetSystemUserAssetAuthInfo(systemUser.Id, assets[0].Id)
// if err != nil {
// return
// }
// if ok := service.ValidateUserAssetPermission(i.user.Id, systemUser.Id, assets[0].Id); !ok {
// // 检查user 是否对该资产有权限
// return
// }
//
// err = i.Proxy(assets[0], authInfo)
// if err != nil {
// logger.Info(err)
// }
// return
//} else {
// i.displayAssets(assets)
//}
}
func (i *InteractiveHandler) displayAssets(assets model.AssetList) {
......
......@@ -9,7 +9,7 @@ import (
"cocogo/pkg/config"
"cocogo/pkg/logger"
"./handler"
"cocogo/pkg/sshd/handler"
)
var (
......@@ -31,7 +31,7 @@ func StartServer() {
KeyboardInteractiveHandler: auth.CheckMFA,
HostSigners: []ssh.Signer{signer},
Version: "coco-v1.4",
Handler: handler.TestHandler,
Handler: handler.SessionHandler,
}
logger.Fatal(srv.ListenAndServe())
}
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment