Create & Init Project...

This commit is contained in:
2019-04-22 18:49:16 +08:00
commit fc4fa37393
25440 changed files with 4054998 additions and 0 deletions

View File

@@ -0,0 +1,44 @@
package(default_visibility = ["//visibility:public"])
load(
"@io_bazel_rules_go//go:def.bzl",
"go_library",
)
go_library(
name = "go_default_library",
srcs = [
"http.go",
"ip.go",
"ip_old.go",
"local.go",
"manager.go",
"zlimit.go",
],
importpath = "go-common/app/service/main/location/server/http",
tags = ["automanaged"],
deps = [
"//app/service/main/location/conf:go_default_library",
"//app/service/main/location/model:go_default_library",
"//app/service/main/location/service:go_default_library",
"//library/ecode:go_default_library",
"//library/log:go_default_library",
"//library/net/http/blademaster:go_default_library",
"//library/net/http/blademaster/middleware/verify:go_default_library",
"//library/xstr:go_default_library",
],
)
filegroup(
name = "package-srcs",
srcs = glob(["**"]),
tags = ["automanaged"],
visibility = ["//visibility:private"],
)
filegroup(
name = "all-srcs",
srcs = [":package-srcs"],
tags = ["automanaged"],
visibility = ["//visibility:public"],
)

View File

@@ -0,0 +1,56 @@
package http
import (
"io"
"go-common/app/service/main/location/conf"
"go-common/app/service/main/location/service"
"go-common/library/log"
bm "go-common/library/net/http/blademaster"
"go-common/library/net/http/blademaster/middleware/verify"
)
var (
svr *service.Service
vfySvc *verify.Verify
)
// Init init http.
func Init(c *conf.Config, s *service.Service, rpcCloser io.Closer) {
svr = s
vfySvc = verify.New(c.Verify)
// init external router
engineInner := bm.DefaultServer(c.BM.Inner)
innerRouter(engineInner)
// init internal server
if err := engineInner.Start(); err != nil {
log.Error("engineInner.Start() error(%v) | config(%v)", err, c)
panic(err)
}
}
// innerRouter init inner router.
func innerRouter(e *bm.Engine) {
e.Ping(ping)
e.Register(register)
loc := e.Group("/x/location")
// old api will delete soon
loc.GET("/check", vfySvc.Verify, tmpInfo)
loc.GET("/zone", vfySvc.Verify, tmpInfos)
// ip info
loc.GET("/info", vfySvc.Verify, info)
loc.GET("/infos", vfySvc.Verify, infos)
loc.GET("/info/complete", vfySvc.Verify, infoComplete)
loc.GET("/infos/complete", vfySvc.Verify, infosComplete)
loc.GET("/anonym", vfySvc.Verify, anonym)
// area limit api
zl := loc.Group("/zlimit")
zl.GET("/pgc/in", vfySvc.Verify, pgcZone)
zl.GET("/archive", vfySvc.Verify, auth)
zl.GET("/archive2", vfySvc.Verify, archive2)
zl.GET("/group", vfySvc.Verify, authGID)
zl.GET("/groups", vfySvc.Verify, authGIDs)
mng := loc.Group("/manager")
mng.GET("/flushCache", vfySvc.Verify, flushCache)
}

View File

@@ -0,0 +1,73 @@
package http
import (
"strings"
"go-common/library/ecode"
bm "go-common/library/net/http/blademaster"
)
// info ip info.
func info(c *bm.Context) {
var (
ip string
query = c.Request.Form
)
if ip = query.Get("ip"); ip == "" {
c.JSON(nil, ecode.RequestErr)
return
}
c.JSON(svr.Info(c, ip))
}
// infos ip info.
func infos(c *bm.Context) {
var (
ips string
query = c.Request.Form
)
if ips = query.Get("ips"); ips == "" {
c.JSON(nil, ecode.RequestErr)
return
}
c.JSON(svr.Infos(c, strings.Split(ips, ",")))
}
// infoComplete get whole ip info.
func infoComplete(c *bm.Context) {
var (
ip string
query = c.Request.Form
)
if ip = query.Get("ip"); ip == "" {
c.JSON(nil, ecode.RequestErr)
return
}
c.JSON(svr.InfoComplete(c, ip))
}
// infosComplete get whole ip infos.
func infosComplete(c *bm.Context) {
var (
ips string
query = c.Request.Form
)
if ips = query.Get("ips"); ips == "" {
c.JSON(nil, ecode.RequestErr)
return
}
c.JSON(svr.InfosComplete(c, strings.Split(ips, ",")))
}
// anonym ip info.
func anonym(c *bm.Context) {
var (
ip string
query = c.Request.Form
)
if ip = query.Get("ip"); ip == "" {
c.JSON(nil, ecode.RequestErr)
return
}
c.JSON(svr.Anonym(ip))
}

View File

@@ -0,0 +1,37 @@
package http
import (
"strings"
"go-common/library/ecode"
bm "go-common/library/net/http/blademaster"
)
// tmpInfo ip info.
func tmpInfo(c *bm.Context) {
var ip string
if ip = c.Request.FormValue("ip"); ip == "" {
c.JSON(nil, ecode.RequestErr)
return
}
c.JSON(svr.TmpInfo(ip))
}
// tmpInfos ip info.
func tmpInfos(c *bm.Context) {
var ips string
if ips = c.Request.FormValue("ip"); ips == "" {
c.JSON(nil, ecode.RequestErr)
return
}
zones, err := svr.TmpInfos(c, strings.Split(ips, ",")...)
if err != nil {
c.JSON(nil, err)
return
}
if len(zones) == 1 {
c.JSON(zones[0], nil)
} else {
c.JSON(zones, nil)
}
}

View File

@@ -0,0 +1,20 @@
package http
import (
"net/http"
"go-common/library/log"
bm "go-common/library/net/http/blademaster"
)
// ping check server ok.
func ping(c *bm.Context) {
if err := svr.Ping(c); err != nil {
log.Error("location service ping error(%v)", err)
c.AbortWithStatus(http.StatusServiceUnavailable)
}
}
func register(c *bm.Context) {
c.JSON(nil, nil)
}

View File

@@ -0,0 +1,11 @@
package http
import (
bm "go-common/library/net/http/blademaster"
)
func flushCache(c *bm.Context) {
if err := svr.LoadPolicy(); err != nil {
c.JSON(nil, err)
}
}

View File

@@ -0,0 +1,151 @@
package http
import (
"strconv"
"go-common/app/service/main/location/model"
"go-common/library/ecode"
bm "go-common/library/net/http/blademaster"
"go-common/library/xstr"
)
// pgcZone get ip infos by gids.
func pgcZone(c *bm.Context) {
var (
params = c.Request.Form
err error
zoneID int64
zoneIDs = []int64{}
ip *model.InfoComplete
)
zoneStr := params.Get("zone_id")
ipStr := params.Get("ip")
if zoneStr == "" && ipStr == "" {
c.JSON(nil, ecode.RequestErr)
return
}
if zoneID, err = strconv.ParseInt(zoneStr, 10, 64); err != nil || zoneID == 0 {
if ip, err = svr.InfoComplete(c, ipStr); err != nil {
c.JSON(nil, ecode.RequestErr)
return
} else {
zoneIDs = ip.ZoneID
}
}
if len(zoneIDs) == 0 {
if zoneID != 0 {
zoneIDs = append(zoneIDs, 0)
}
zoneIDs = append(zoneIDs, zoneID)
}
c.JSON(svr.PgcZone(c, zoneIDs))
}
// auth get auth by aid & ip & cip & mid.
func auth(c *bm.Context) {
var (
params = c.Request.Form
err error
ipaddr, cdnip string
mid, aid int64
)
aidStr := params.Get("aid")
if aid, err = strconv.ParseInt(aidStr, 10, 64); err != nil {
c.JSON(nil, ecode.RequestErr)
return
}
if vmid, ok := c.Get("mid"); !ok {
mid = 0
} else {
mid = vmid.(int64)
}
ipaddr = params.Get("ip")
cdnip = params.Get("cdnip")
if ipaddr == "" && cdnip == "" {
c.JSON(nil, ecode.RequestErr)
return
}
c.JSON(svr.Auth(c, aid, mid, ipaddr, cdnip))
}
// archive2 get auth by aid & ip & cip & mid.
func archive2(c *bm.Context) {
var (
params = c.Request.Form
err error
ipaddr, cdnip string
mid, aid int64
)
aidStr := params.Get("aid")
if aid, err = strconv.ParseInt(aidStr, 10, 64); err != nil {
c.JSON(nil, ecode.RequestErr)
return
}
if vmid, ok := c.Get("mid"); !ok {
mid = 0
} else {
mid = vmid.(int64)
}
ipaddr = params.Get("ip")
cdnip = params.Get("cdnip")
if ipaddr == "" && cdnip == "" {
c.JSON(nil, ecode.RequestErr)
return
}
c.JSON(svr.Archive2(c, aid, mid, ipaddr, cdnip))
}
// authGID get auth by gids & ip & cid & mid.
func authGID(c *bm.Context) {
var (
mid, gid int64
ipaddr, cdnip string
params = c.Request.Form
err error
)
gidStr := params.Get("gid")
if gid, err = strconv.ParseInt(gidStr, 10, 64); err != nil {
c.JSON(nil, ecode.RequestErr)
return
}
if vmid, ok := c.Get("mid"); !ok {
mid = 0
} else {
mid = vmid.(int64)
}
ipaddr = params.Get("ip")
cdnip = params.Get("cdnip")
if ipaddr == "" && cdnip == "" {
c.JSON(nil, ecode.RequestErr)
return
}
c.JSON(svr.AuthGID(c, gid, mid, ipaddr, cdnip), nil)
}
// authGIDs get auth by gids & ip & cid & mid.
func authGIDs(c *bm.Context) {
var (
gids []int64
mid int64
ipaddr, cdnip string
params = c.Request.Form
err error
)
gidsStr := params.Get("gids")
if gids, err = xstr.SplitInts(gidsStr); err != nil {
c.JSON(nil, ecode.RequestErr)
return
}
if vmid, ok := c.Get("mid"); !ok {
mid = 0
} else {
mid = vmid.(int64)
}
ipaddr = params.Get("ip")
cdnip = params.Get("cdnip")
if ipaddr == "" && cdnip == "" {
c.JSON(nil, ecode.RequestErr)
return
}
c.JSON(svr.AuthGIDs(c, gids, mid, ipaddr, cdnip), nil)
}