123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171 |
- package routes
- import (
- "fmt"
- "log"
- "net/http"
- "strings"
- "github.com/710leo/urlooker/modules/web/g"
- "github.com/710leo/urlooker/modules/web/http/errors"
- "github.com/710leo/urlooker/modules/web/http/param"
- "github.com/710leo/urlooker/modules/web/http/render"
- "github.com/710leo/urlooker/modules/web/model"
- "github.com/710leo/urlooker/modules/web/utils"
- )
- func AddStrategyGet(w http.ResponseWriter, r *http.Request) {
- render.Put(r, "Regions", g.Config.IDC)
- render.HTML(r, w, "strategy/create")
- }
- func AddStrategyPost(w http.ResponseWriter, r *http.Request) {
- me := MeRequired(LoginRequired(w, r))
- var msg string
- var err error
- var tagStr string
- urls := strings.Split(param.String(r, "url", ""), "\n")
- for _, url := range urls {
- err := utils.CheckUrl(url)
- if err != nil {
- errors.Panic(fmt.Sprintf("url:%s %s", url, err.Error()))
- }
- }
- tags := strings.Split(param.String(r, "tags", ""), "\n")
- if len(tags) > 0 && tags[0] != "" {
- for _, tag := range tags {
- strs := strings.Split(tag, "=")
- if len(strs) != 2 {
- errors.Panic("tag must be like aaa=bbb")
- }
- }
- tagStr = strings.Join(tags, ",")
- }
- for _, url := range urls {
- var s = model.Strategy{}
- s.Method = param.String(r, "method", "get")
- s.Creator = me.Name
- s.Enable = param.Int(r, "enable", 1)
- s.Url = url
- s.Idc = param.String(r, "idc", "default")
- s.ExpectCode = param.String(r, "expect_code", "200")
- s.Timeout = param.Int(r, "timeout", 3000)
- s.Header = param.String(r, "header", "")
- s.PostData = param.String(r, "post_data", "")
- s.MaxStep = param.Int(r, "max_step", 3)
- s.Teams = param.MustString(r, "teams")
- s.Times = param.Int(r, "times", 3)
- s.Note = param.String(r, "note", "")
- s.Keywords = param.String(r, "keywords", "")
- s.Data = param.String(r, "data", "")
- s.Endpoint = param.String(r, "endpoint", "")
- s.Tag = tagStr
- s.IP = param.String(r, "ip", "")
- _, err = s.Add()
- if err != nil {
- msg += fmt.Sprintf("strategy:%s failed, err:%s", url, err.Error())
- } else {
- msg += fmt.Sprintf("strategy:%s success :)", url)
- }
- }
- //errors.MaybePanic(err)
- if err != nil {
- errMsg := fmt.Sprintf("%s,err:%v", msg, err)
- errors.Panic(errMsg)
- }
- render.Data(w, msg)
- }
- func GetStrategyById(w http.ResponseWriter, r *http.Request) {
- strategy := StraRequired(r)
- render.Data(w, strategy)
- }
- func UpdateStrategyGet(w http.ResponseWriter, r *http.Request) {
- s := StraRequired(r)
- render.Put(r, "Id", s.Id)
- render.Put(r, "Regions", g.Config.IDC)
- render.HTML(r, w, "strategy/edit")
- }
- func UpdateStrategy(w http.ResponseWriter, r *http.Request) {
- s := StraRequired(r)
- me := MeRequired(LoginRequired(w, r))
- var tagStr string
- username := me.Name
- if s.Creator != username && !IsAdmin(username) {
- errors.Panic("没有权限")
- }
- url := param.String(r, "url", "")
- err := utils.CheckUrl(url)
- if err != nil {
- errors.Panic(fmt.Sprintf("url:%s %s", url, err.Error()))
- }
- tags := strings.Split(param.String(r, "tags", ""), "\n")
- if len(tags) > 0 && tags[0] != "" {
- log.Println("len:", len(tags))
- for _, tag := range tags {
- strs := strings.Split(tag, "=")
- if len(strs) != 2 {
- errors.Panic("tag must be like aaa=bbb")
- } else if strs[0] == "" || strs[1] == "" {
- errors.Panic("tag must be like aaa=bbb")
- }
- }
- tagStr = strings.Join(tags, ",")
- }
- s.Creator = username
- s.Url = url
- s.Idc = param.String(r, "idc", "default")
- s.Method = param.String(r, "method", "get")
- s.Enable = param.Int(r, "enable", 1)
- s.ExpectCode = param.String(r, "expect_code", "200")
- s.Timeout = param.Int(r, "timeout", 3000)
- s.Header = param.String(r, "header", "")
- s.PostData = param.String(r, "post_data", "")
- s.MaxStep = param.Int(r, "max_step", 3)
- s.Teams = param.String(r, "teams", "")
- s.Times = param.Int(r, "times", 3)
- s.Note = param.String(r, "note", "")
- s.Keywords = param.String(r, "keywords", "")
- s.Data = param.String(r, "data", "")
- s.Endpoint = param.String(r, "endpoint", "")
- s.IP = param.String(r, "ip", "")
- s.Tag = tagStr
- err = s.Update()
- errors.MaybePanic(err)
- render.Data(w, "ok")
- }
- func DeleteStrategy(w http.ResponseWriter, r *http.Request) {
- me := MeRequired(LoginRequired(w, r))
- strategy := StraRequired(r)
- //teams := strings.Split(strategy.Teams, ",")
- username := me.Name
- if strategy.Creator != username && !IsAdmin(username) {
- errors.Panic("没有权限")
- }
- err := strategy.Delete()
- errors.MaybePanic(err)
- render.Data(w, "ok")
- }
- func GetTeamsOfStrategy(w http.ResponseWriter, r *http.Request) {
- MeRequired(LoginRequired(w, r))
- stra := StraRequired(r)
- teams, err := model.GetTeamsByIds(stra.Teams)
- errors.MaybePanic(err)
- render.Data(w, map[string]interface{}{"teams": teams})
- }
|