|
|
@ -189,6 +189,119 @@ func getProxyStatsByType(proxyType string) (proxyInfos []*ProxyStatsInfo) {
|
|
|
|
return
|
|
|
|
return
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
// Get proxy info by name.
|
|
|
|
|
|
|
|
type GetProxyStatsResp struct {
|
|
|
|
|
|
|
|
GeneralResponse
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Name string `json:"name"`
|
|
|
|
|
|
|
|
Conf config.ProxyConf `json:"conf"`
|
|
|
|
|
|
|
|
TodayTrafficIn int64 `json:"today_traffic_in"`
|
|
|
|
|
|
|
|
TodayTrafficOut int64 `json:"today_traffic_out"`
|
|
|
|
|
|
|
|
CurConns int64 `json:"cur_conns"`
|
|
|
|
|
|
|
|
LastStartTime string `json:"last_start_time"`
|
|
|
|
|
|
|
|
LastCloseTime string `json:"last_close_time"`
|
|
|
|
|
|
|
|
Status string `json:"status"`
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
// api/proxy/tcp/:name
|
|
|
|
|
|
|
|
func apiProxyTcpByName(w http.ResponseWriter, r *http.Request, params httprouter.Params) {
|
|
|
|
|
|
|
|
var (
|
|
|
|
|
|
|
|
buf []byte
|
|
|
|
|
|
|
|
res GetProxyStatsResp
|
|
|
|
|
|
|
|
)
|
|
|
|
|
|
|
|
name := params.ByName("name")
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
defer func() {
|
|
|
|
|
|
|
|
log.Info("Http response [/api/proxy/tcp/:name]: code [%d]", res.Code)
|
|
|
|
|
|
|
|
}()
|
|
|
|
|
|
|
|
log.Info("Http request: [/api/proxy/tcp/:name]")
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
res = getProxyStatsByTypeAndName(consts.TcpProxy, name)
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
buf, _ = json.Marshal(&res)
|
|
|
|
|
|
|
|
w.Write(buf)
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
// api/proxy/udp/:name
|
|
|
|
|
|
|
|
func apiProxyUdpByName(w http.ResponseWriter, r *http.Request, params httprouter.Params) {
|
|
|
|
|
|
|
|
var (
|
|
|
|
|
|
|
|
buf []byte
|
|
|
|
|
|
|
|
res GetProxyStatsResp
|
|
|
|
|
|
|
|
)
|
|
|
|
|
|
|
|
name := params.ByName("name")
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
defer func() {
|
|
|
|
|
|
|
|
log.Info("Http response [/api/proxy/udp/:name]: code [%d]", res.Code)
|
|
|
|
|
|
|
|
}()
|
|
|
|
|
|
|
|
log.Info("Http request: [/api/proxy/udp/:name]")
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
res = getProxyStatsByTypeAndName(consts.UdpProxy, name)
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
buf, _ = json.Marshal(&res)
|
|
|
|
|
|
|
|
w.Write(buf)
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
// api/proxy/http/:name
|
|
|
|
|
|
|
|
func apiProxyHttpByName(w http.ResponseWriter, r *http.Request, params httprouter.Params) {
|
|
|
|
|
|
|
|
var (
|
|
|
|
|
|
|
|
buf []byte
|
|
|
|
|
|
|
|
res GetProxyStatsResp
|
|
|
|
|
|
|
|
)
|
|
|
|
|
|
|
|
name := params.ByName("name")
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
defer func() {
|
|
|
|
|
|
|
|
log.Info("Http response [/api/proxy/http/:name]: code [%d]", res.Code)
|
|
|
|
|
|
|
|
}()
|
|
|
|
|
|
|
|
log.Info("Http request: [/api/proxy/http/:name]")
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
res = getProxyStatsByTypeAndName(consts.HttpProxy, name)
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
buf, _ = json.Marshal(&res)
|
|
|
|
|
|
|
|
w.Write(buf)
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
// api/proxy/https/:name
|
|
|
|
|
|
|
|
func apiProxyHttpsByName(w http.ResponseWriter, r *http.Request, params httprouter.Params) {
|
|
|
|
|
|
|
|
var (
|
|
|
|
|
|
|
|
buf []byte
|
|
|
|
|
|
|
|
res GetProxyStatsResp
|
|
|
|
|
|
|
|
)
|
|
|
|
|
|
|
|
name := params.ByName("name")
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
defer func() {
|
|
|
|
|
|
|
|
log.Info("Http response [/api/proxy/https/:name]: code [%d]", res.Code)
|
|
|
|
|
|
|
|
}()
|
|
|
|
|
|
|
|
log.Info("Http request: [/api/proxy/https/:name]")
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
res = getProxyStatsByTypeAndName(consts.HttpsProxy, name)
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
buf, _ = json.Marshal(&res)
|
|
|
|
|
|
|
|
w.Write(buf)
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
func getProxyStatsByTypeAndName(proxyType string, proxyName string) (proxyInfo GetProxyStatsResp) {
|
|
|
|
|
|
|
|
proxyInfo.Name = proxyName
|
|
|
|
|
|
|
|
ps := StatsGetProxiesByTypeAndName(proxyType, proxyName)
|
|
|
|
|
|
|
|
if ps == nil {
|
|
|
|
|
|
|
|
proxyInfo.Code = 1
|
|
|
|
|
|
|
|
proxyInfo.Msg = "no proxy info found"
|
|
|
|
|
|
|
|
} else {
|
|
|
|
|
|
|
|
if pxy, ok := ServerService.pxyManager.GetByName(proxyName); ok {
|
|
|
|
|
|
|
|
proxyInfo.Conf = pxy.GetConf()
|
|
|
|
|
|
|
|
proxyInfo.Status = consts.Online
|
|
|
|
|
|
|
|
} else {
|
|
|
|
|
|
|
|
proxyInfo.Status = consts.Offline
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
proxyInfo.TodayTrafficIn = ps.TodayTrafficIn
|
|
|
|
|
|
|
|
proxyInfo.TodayTrafficOut = ps.TodayTrafficOut
|
|
|
|
|
|
|
|
proxyInfo.CurConns = ps.CurConns
|
|
|
|
|
|
|
|
proxyInfo.LastStartTime = ps.LastStartTime
|
|
|
|
|
|
|
|
proxyInfo.LastCloseTime = ps.LastCloseTime
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
return
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// api/proxy/traffic/:name
|
|
|
|
// api/proxy/traffic/:name
|
|
|
|
type GetProxyTrafficResp struct {
|
|
|
|
type GetProxyTrafficResp struct {
|
|
|
|
GeneralResponse
|
|
|
|
GeneralResponse
|
|
|
|