diff --git a/go.mod b/go.mod index 8dc2721d..80ad5c88 100644 --- a/go.mod +++ b/go.mod @@ -3,12 +3,15 @@ module trojan go 1.14 require ( + github.com/StackExchange/wmi v0.0.0-20190523213315-cbe66965904d // indirect github.com/appleboy/gin-jwt/v2 v2.6.3 github.com/eiannone/keyboard v0.0.0-20190314115158-7169d0afeb4f github.com/gin-contrib/gzip v0.0.1 github.com/gin-gonic/gin v1.5.0 + github.com/go-ole/go-ole v1.2.4 // indirect github.com/go-sql-driver/mysql v1.5.0 github.com/gobuffalo/packr/v2 v2.7.1 + github.com/shirou/gopsutil v2.20.2+incompatible github.com/spf13/cobra v0.0.6 github.com/spf13/pflag v1.0.5 // indirect github.com/syndtr/goleveldb v1.0.0 diff --git a/go.sum b/go.sum index a9db5ad7..b835c2f5 100644 --- a/go.sum +++ b/go.sum @@ -2,6 +2,8 @@ cloud.google.com/go v0.26.0/go.mod h1:aQUYkXzVsufM+DwF1aE+0xfcU+56JwCaLick0ClmMT github.com/BurntSushi/toml v0.3.1 h1:WXkYYl6Yr3qBf1K79EBnL4mak0OimBfB0XUf9Vl28OQ= github.com/BurntSushi/toml v0.3.1/go.mod h1:xHWCNGjB5oqiDr8zfno3MHue2Ht5sIBksp03qcyfWMU= github.com/OneOfOne/xxhash v1.2.2/go.mod h1:HSdplMjZKSmBqAxg5vPj2TmRDmfkzw+cTzAElWljhcU= +github.com/StackExchange/wmi v0.0.0-20190523213315-cbe66965904d h1:G0m3OIz70MZUWq3EgK3CesDbo8upS2Vm9/P3FtgI+Jk= +github.com/StackExchange/wmi v0.0.0-20190523213315-cbe66965904d/go.mod h1:3eOhrUMpNV+6aFIbp5/iudMxNCF27Vw2OZgy4xEx0Fg= github.com/alecthomas/template v0.0.0-20160405071501-a0175ee3bccc/go.mod h1:LOuyumcjzFXgccqObfd/Ljyb9UuFJ6TxHnclSeseNhc= github.com/alecthomas/units v0.0.0-20151022065526-2efee857e7cf/go.mod h1:ybxpYRFXyAe+OPACYpWeL0wqObRcbAqCMya13uyzqw0= github.com/appleboy/gin-jwt/v2 v2.6.3 h1:aK4E3DjihWEBUTjEeRnGkA5nUkmwJPL1CPonMa2usRs= @@ -45,6 +47,8 @@ github.com/gin-gonic/gin v1.5.0/go.mod h1:Nd6IXA8m5kNZdNEHMBd93KT+mdY3+bewLgRvmC github.com/go-kit/kit v0.8.0/go.mod h1:xBxKIO96dXMWWy0MnWVtmwkA9/13aqxPnvrjFYMA2as= github.com/go-logfmt/logfmt v0.3.0/go.mod h1:Qt1PoO58o5twSAckw1HlFXLmHsOX5/0LbT9GBnD5lWE= github.com/go-logfmt/logfmt v0.4.0/go.mod h1:3RMwSq7FuexP4Kalkev3ejPJsZTpXXBr9+V4qmtdjCk= +github.com/go-ole/go-ole v1.2.4 h1:nNBDSCOigTSiarFpYE9J/KtEA1IOW4CNeqT9TQDqCxI= +github.com/go-ole/go-ole v1.2.4/go.mod h1:XCwSNxSkXRo4vlyPy93sltvi/qJq0jqQhjqQNIwKuxM= github.com/go-playground/locales v0.12.1 h1:2FITxuFt/xuCNP1Acdhv62OzaCiviiE4kotfhkmOqEc= github.com/go-playground/locales v0.12.1/go.mod h1:IUMDtCfWo/w/mtMfIE/IG2K+Ey3ygWanZIBtBW0W2TM= github.com/go-playground/universal-translator v0.16.0 h1:X++omBR/4cE2MNg91AoC3rmGrCjJ8eAeUP/K/EKx4DM= @@ -154,6 +158,8 @@ github.com/rogpeppe/go-internal v1.4.0 h1:LUa41nrWTQNGhzdsZ5lTnkwbNjj6rXTdazA1cS github.com/rogpeppe/go-internal v1.4.0/go.mod h1:xXDCJY+GAPziupqXw64V24skbSoqbTEfhy4qGm1nDQc= github.com/russross/blackfriday v1.5.2/go.mod h1:JO/DiYxRf+HjHt06OyowR9PTA263kcR/rfWxYHBV53g= github.com/russross/blackfriday/v2 v2.0.1/go.mod h1:+Rmxgy9KzJVeS9/2gXHxylqXiyQDYRxCVz55jmeOWTM= +github.com/shirou/gopsutil v2.20.2+incompatible h1:ucK79BhBpgqQxPASyS2cu9HX8cfDVljBN1WWFvbNvgY= +github.com/shirou/gopsutil v2.20.2+incompatible/go.mod h1:5b4v6he4MtMOwMlS0TUMTu2PcXUg8+E1lC7eC3UO/RA= github.com/shurcooL/sanitized_anchor_name v1.0.0/go.mod h1:1NzhyTcUVG4SuEtjjoZeVRXNmyL/1OwPU0+IJeTBvfc= github.com/sirupsen/logrus v1.2.0/go.mod h1:LxeOpSwHxABJmUn/MG1IvRgCAasNZTLOkJPxbbu5VWo= github.com/sirupsen/logrus v1.4.2 h1:SPIRibHv4MatM3XXNO2BJeFLZwZ2LvZgfQ5+UNI2im4= diff --git a/web/controller/common.go b/web/controller/common.go index 4acd8e3f..fd637991 100644 --- a/web/controller/common.go +++ b/web/controller/common.go @@ -1,6 +1,10 @@ package controller import ( + "github.com/shirou/gopsutil/cpu" + "github.com/shirou/gopsutil/disk" + "github.com/shirou/gopsutil/load" + "github.com/shirou/gopsutil/mem" "time" "trojan/core" "trojan/trojan" @@ -43,3 +47,22 @@ func SetLoginInfo(title string) *ResponseBody { } return &responseBody } + +// ServerInfo 获取服务器信息 +func ServerInfo() *ResponseBody { + responseBody := ResponseBody{Msg: "success"} + defer TimeCost(time.Now(), &responseBody) + cpuPercent, _ := cpu.Percent(time.Second, false) + vmInfo, _ := mem.VirtualMemory() + smInfo, _ := mem.SwapMemory() + diskInfo, _ := disk.Usage("/") + loadInfo, _ := load.Avg() + responseBody.Data = map[string]interface{}{ + "cpu": cpuPercent, + "memory": vmInfo, + "swap": smInfo, + "disk": diskInfo, + "load": loadInfo, + } + return &responseBody +} diff --git a/web/web.go b/web/web.go index 9e6a0954..bad69466 100644 --- a/web/web.go +++ b/web/web.go @@ -55,6 +55,9 @@ func commonRouter(router *gin.Engine) { common.GET("/version", func(c *gin.Context) { c.JSON(200, controller.Version()) }) + common.GET("/serverInfo", func(c *gin.Context) { + c.JSON(200, controller.ServerInfo()) + }) common.POST("/loginInfo", func(c *gin.Context) { c.JSON(200, controller.SetLoginInfo(c.PostForm("title"))) })