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,50 @@
package(default_visibility = ["//visibility:public"])
load(
"@io_bazel_rules_go//go:def.bzl",
"go_test",
"go_library",
)
go_test(
name = "go_default_test",
srcs = ["server_test.go"],
embed = [":go_default_library"],
rundir = ".",
tags = ["automanaged"],
deps = [
"//app/service/main/location/api:go_default_library",
"//app/service/main/location/conf:go_default_library",
"//app/service/main/location/service:go_default_library",
"//library/net/rpc/warden:go_default_library",
"//library/time:go_default_library",
],
)
go_library(
name = "go_default_library",
srcs = ["server.go"],
importpath = "go-common/app/service/main/location/server/grpc",
tags = ["automanaged"],
visibility = ["//visibility:public"],
deps = [
"//app/service/main/location/api:go_default_library",
"//app/service/main/location/model:go_default_library",
"//app/service/main/location/service:go_default_library",
"//library/net/rpc/warden: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,47 @@
// Package server generate by warden_gen
package grpc
import (
"context"
"fmt"
pb "go-common/app/service/main/location/api"
"go-common/app/service/main/location/model"
"go-common/app/service/main/location/service"
"go-common/library/net/rpc/warden"
)
// New Location warden rpc server
func New(c *warden.ServerConfig, svr *service.Service) *warden.Server {
ws := warden.NewServer(c)
pb.RegisterLocationServer(ws.Server(), &server{svr})
ws, err := ws.Start()
if err != nil {
panic(fmt.Sprintf("start warden server fail! %s", err))
}
return ws
}
type server struct {
svr *service.Service
}
var _ pb.LocationServer = &server{}
// Info get ip info.
func (s *server) Info(c context.Context, arg *pb.InfoReq) (res *pb.InfoReply, err error) {
var ipinfo *model.Info
if ipinfo, err = s.svr.Info(c, arg.Addr); err != nil {
return
}
res = &pb.InfoReply{
Addr: ipinfo.Addr,
Country: ipinfo.Country,
Province: ipinfo.Province,
City: ipinfo.City,
Isp: ipinfo.ISP,
Latitude: ipinfo.Latitude,
Longitude: ipinfo.Longitude,
ZoneId: ipinfo.ZoneID}
return
}

View File

@@ -0,0 +1,60 @@
package grpc
import (
"context"
"fmt"
"testing"
"time"
pb "go-common/app/service/main/location/api"
"go-common/app/service/main/location/conf"
"go-common/app/service/main/location/service"
"go-common/library/net/rpc/warden"
xtime "go-common/library/time"
)
// rpc server const
const (
addr = "127.0.0.1:9000"
)
// TestLocation test rpc server
func TestLocation(t *testing.T) {
if err := conf.Init(); err != nil {
t.Errorf("conf.Init() error(%v)", err)
t.FailNow()
}
svr := service.New(conf.Conf)
New(conf.Conf.WardenServer, svr)
time.Sleep(time.Second * 3)
cfg := &warden.ClientConfig{
Dial: xtime.Duration(time.Second * 3),
Timeout: xtime.Duration(time.Second * 3),
}
cc, err := warden.NewClient(cfg).Dial(context.Background(), addr)
if err != nil {
t.Errorf("rpc.Dial(tcp, \"%s\") error(%v)", addr, err)
t.FailNow()
}
client := pb.NewLocationClient(cc)
infoGRPC(client, t)
}
func infoGRPC(client pb.LocationClient, t *testing.T) {
arg := &pb.InfoReq{
Addr: "211.139.80.6",
}
res, err := client.Info(context.TODO(), arg)
if err != nil {
t.Error(err)
} else {
result("info", t, res)
}
}
func result(name string, t *testing.T, res interface{}) {
fmt.Printf("res : %+v \n", res)
t.Log("[==========" + name + "单元测试结果==========]")
t.Log(res)
t.Log("[↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑]\r\n")
}

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)
}