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