Create & Init Project...
This commit is contained in:
120
app/service/main/antispam/http/http.go
Normal file
120
app/service/main/antispam/http/http.go
Normal file
@ -0,0 +1,120 @@
|
||||
package http
|
||||
|
||||
import (
|
||||
"errors"
|
||||
"fmt"
|
||||
"net/http"
|
||||
"net/url"
|
||||
"strconv"
|
||||
|
||||
"go-common/app/service/main/antispam/conf"
|
||||
"go-common/app/service/main/antispam/service"
|
||||
"go-common/library/log"
|
||||
bm "go-common/library/net/http/blademaster"
|
||||
"go-common/library/net/http/blademaster/middleware/auth"
|
||||
"go-common/library/net/http/blademaster/middleware/verify"
|
||||
)
|
||||
|
||||
var (
|
||||
// Svr .
|
||||
Svr service.Service
|
||||
verifySvc *verify.Verify
|
||||
authSvc *auth.Auth
|
||||
)
|
||||
|
||||
// Init .
|
||||
func Init(c *conf.Config, s service.Service) {
|
||||
Svr = s
|
||||
verifySvc = verify.New(c.Verify)
|
||||
authSvc = auth.New(c.Auth)
|
||||
engine := bm.DefaultServer(c.BM)
|
||||
|
||||
interRouter(engine)
|
||||
|
||||
if err := engine.Start(); err != nil {
|
||||
log.Error("engine.Start() error(%v)", err)
|
||||
panic(err)
|
||||
}
|
||||
}
|
||||
|
||||
func interRouter(e *bm.Engine) {
|
||||
e.GET("/monitor/ping", ping)
|
||||
|
||||
e.GET("/register", register)
|
||||
e.GET("/x/internal/antispam/filter", authSvc.Guest, Filter)
|
||||
|
||||
regexps := e.Group("/x/internal/antispam/regexps")
|
||||
regexps.GET("", verifySvc.Verify, GetRegexps)
|
||||
regexps.GET("/one", verifySvc.Verify, GetRegexp)
|
||||
regexps.POST("/add", verifySvc.Verify, AddRegexp)
|
||||
regexps.POST("/edit", verifySvc.Verify, EditRegexp)
|
||||
regexps.POST("/del", verifySvc.Verify, DeleteRegexp)
|
||||
regexps.POST("/recover", verifySvc.Verify, RecoverRegexp)
|
||||
|
||||
rules := e.Group("/x/internal/antispam/rules")
|
||||
rules.GET("", verifySvc.Verify, GetRules)
|
||||
rules.GET("/one", verifySvc.Verify, GetRule)
|
||||
rules.POST("/add", verifySvc.Verify, AddRule)
|
||||
|
||||
keywords := e.Group("/x/internal/antispam/keywords")
|
||||
keywords.GET("", verifySvc.Verify, GetKeywords)
|
||||
keywords.GET("/senders", verifySvc.Verify, GetKeywordSenders)
|
||||
keywords.GET("/one", verifySvc.Verify, GetKeyword)
|
||||
keywords.POST("/dels", verifySvc.Verify, DeleteKeywords)
|
||||
keywords.POST("/action", verifySvc.Verify, UpdateKeyword)
|
||||
}
|
||||
|
||||
func ping(c *bm.Context) {
|
||||
if err := Svr.Ping(c); err != nil {
|
||||
log.Error("antispam service ping error(%v)", err)
|
||||
c.AbortWithStatus(http.StatusServiceUnavailable)
|
||||
}
|
||||
}
|
||||
|
||||
func register(c *bm.Context) {
|
||||
c.JSON(struct{}{}, nil)
|
||||
}
|
||||
|
||||
func getAdminIDAndArea(params url.Values) (adminID int64, area string, err error) {
|
||||
adminID, err = getAdminID(params)
|
||||
if err != nil {
|
||||
return 0, "", err
|
||||
}
|
||||
area, err = parseArea(params)
|
||||
if err != nil {
|
||||
return 0, "", err
|
||||
}
|
||||
return adminID, area, nil
|
||||
}
|
||||
|
||||
func parseArea(params url.Values) (string, error) {
|
||||
area := params.Get(ProtocolArea)
|
||||
if _, ok := conf.Areas[area]; !ok {
|
||||
err := fmt.Errorf("invalid area(%s)", area)
|
||||
log.Error("%v", err)
|
||||
return "", err
|
||||
}
|
||||
return area, nil
|
||||
}
|
||||
|
||||
func getAdminID(params url.Values) (int64, error) {
|
||||
adminIDStr := params.Get(ProtocolAdminID)
|
||||
if adminIDStr == "" {
|
||||
err := errors.New("empty admin id")
|
||||
log.Error("%v", err)
|
||||
return 0, err
|
||||
}
|
||||
adminID, err := strconv.ParseInt(adminIDStr, 10, 64)
|
||||
if err != nil {
|
||||
log.Error("%v", err)
|
||||
return 0, err
|
||||
}
|
||||
return adminID, nil
|
||||
}
|
||||
|
||||
func errResp(c *bm.Context, code interface{}, err error) {
|
||||
c.JSONMap(map[string]interface{}{
|
||||
ProtocolData: code,
|
||||
ProtocolMessage: err.Error(),
|
||||
}, nil)
|
||||
}
|
Reference in New Issue
Block a user