|
@@ -6,72 +6,78 @@ import (
|
|
"log"
|
|
"log"
|
|
mu "mfw/util"
|
|
mu "mfw/util"
|
|
"net"
|
|
"net"
|
|
- qu "qfw/util"
|
|
|
|
|
|
+ "os"
|
|
|
|
+ qutil "qfw/util"
|
|
|
|
+ "qfw/util/mongodb"
|
|
"time"
|
|
"time"
|
|
|
|
|
|
"gopkg.in/mgo.v2/bson"
|
|
"gopkg.in/mgo.v2/bson"
|
|
)
|
|
)
|
|
|
|
|
|
-var udpclient mu.UdpClient //udp对象
|
|
|
|
-var nextNodes []map[string]interface{}
|
|
|
|
-
|
|
|
|
-var startDate, endDate, ip, port, stype, sid, eid string
|
|
|
|
|
|
+var startDate, endDate string
|
|
|
|
|
|
func main() {
|
|
func main() {
|
|
- //2015-11-03,2017-04-01
|
|
|
|
- //2017-04-01,2017-06-01
|
|
|
|
- //2017-06-01,2018-06-01
|
|
|
|
- //2018-06-01,2019-02-20
|
|
|
|
- /*
|
|
|
|
-ObjectId("5da3f31aa5cb26b9b798d3aa")
|
|
|
|
-ObjectId("5da418c4a5cb26b9b7e3e9a6")
|
|
|
|
-*/
|
|
|
|
-
|
|
|
|
- flag.StringVar(&sid, "sid", "", "开始id")
|
|
|
|
- flag.StringVar(&eid, "eid", "", "结束id")
|
|
|
|
|
|
+ ip, p, tmptime, tmpkey, id1, id2, stype, q, bkey, param := "", 0, 0, "", "", "", "", "", "", ""
|
|
flag.StringVar(&startDate, "start", "", "开始日期2006-01-02")
|
|
flag.StringVar(&startDate, "start", "", "开始日期2006-01-02")
|
|
- flag.StringVar(&endDate, "end", "2019-11-10", "结束日期2006-01-02")
|
|
|
|
|
|
+ flag.StringVar(&endDate, "end", "", "结束日期2006-01-02")
|
|
flag.StringVar(&ip, "ip", "127.0.0.1", "ip")
|
|
flag.StringVar(&ip, "ip", "127.0.0.1", "ip")
|
|
- flag.StringVar(&port, "port", "1488", "dup端口")
|
|
|
|
- flag.StringVar(&stype, "stype", "", "stype")
|
|
|
|
|
|
+ flag.IntVar(&p, "p", 0, "端口")
|
|
|
|
+ flag.IntVar(&tmptime, "tmptime", 0, "时间查询")
|
|
|
|
+ flag.StringVar(&tmpkey, "tmpkey", "", "时间字段")
|
|
|
|
+ flag.StringVar(&id1, "gtid", "", "gtid")
|
|
|
|
+ flag.StringVar(&id2, "lteid", "", "lteid")
|
|
|
|
+ flag.StringVar(&stype, "stype", "", "stype,传递类型")
|
|
|
|
+ flag.StringVar(&bkey, "bkey", "", "bkey,加上此参数表示不生关键词和摘要")
|
|
|
|
+ flag.StringVar(&q, "q", "", "q查询语句\"{'':''}\",有q就不要gtid,lteid")
|
|
|
|
+ flag.StringVar(¶m, "param", "", "param,生信息发布或其他索引时用双引号套单引号\"{'mgoaddr':'','d':'','c':'','index':'','type':''}\"")
|
|
flag.Parse()
|
|
flag.Parse()
|
|
- var startid, endid bson.ObjectId
|
|
|
|
- if sid != "" && eid != "" {
|
|
|
|
- startid = qu.StringTOBsonId(sid)
|
|
|
|
- endid = qu.StringTOBsonId(eid)
|
|
|
|
- } else {
|
|
|
|
- start, _ := time.ParseInLocation(qu.Date_Short_Layout, startDate, time.Local)
|
|
|
|
- end, _ := time.ParseInLocation(qu.Date_Short_Layout, endDate, time.Local)
|
|
|
|
- startid = bson.NewObjectIdWithTime(start)
|
|
|
|
- endid = bson.NewObjectIdWithTime(end)
|
|
|
|
|
|
+ if startDate != "" || endDate != "" {
|
|
|
|
+ start, _ := time.ParseInLocation(qutil.Date_Short_Layout, startDate, time.Local)
|
|
|
|
+ end, _ := time.ParseInLocation(qutil.Date_Short_Layout, endDate, time.Local)
|
|
|
|
+ id1 = qutil.BsonIdToSId(bson.NewObjectIdWithTime(start))
|
|
|
|
+ id2 = qutil.BsonIdToSId(bson.NewObjectIdWithTime(end))
|
|
|
|
+ log.Println(id1, id2)
|
|
}
|
|
}
|
|
- log.Println(startid, endid, ip, port, stype)
|
|
|
|
- udpclient = mu.UdpClient{Local: ":1470", BufSize: 1024}
|
|
|
|
- udpclient.Listen(processUdpMsg)
|
|
|
|
- by, _ := json.Marshal(map[string]interface{}{
|
|
|
|
- "gtid": startid,
|
|
|
|
- "lteid": endid,
|
|
|
|
- "stype": stype,
|
|
|
|
- })
|
|
|
|
- udpclient.WriteUdp(by, mu.OP_TYPE_DATA, &net.UDPAddr{
|
|
|
|
- IP: net.ParseIP(ip),
|
|
|
|
- Port: qu.IntAll(port),
|
|
|
|
- })
|
|
|
|
- b := make(chan bool, 1)
|
|
|
|
- <-b
|
|
|
|
-}
|
|
|
|
-
|
|
|
|
-func processUdpMsg(act byte, data []byte, ra *net.UDPAddr) {
|
|
|
|
- switch act {
|
|
|
|
- case mu.OP_TYPE_DATA:
|
|
|
|
- var mapInfo map[string]interface{}
|
|
|
|
- err := json.Unmarshal(data, &mapInfo)
|
|
|
|
- if err != nil {
|
|
|
|
- log.Println(err)
|
|
|
|
- } else {
|
|
|
|
- log.Println(mapInfo)
|
|
|
|
|
|
+ if ip != "" && p > 0 && ((id1 != "" && id2 != "") || (q != "" || tmptime > 0)) {
|
|
|
|
+ toadd := &net.UDPAddr{
|
|
|
|
+ IP: net.ParseIP(ip),
|
|
|
|
+ Port: p,
|
|
|
|
+ }
|
|
|
|
+ udp := mu.UdpClient{Local: ":50010", BufSize: 1024}
|
|
|
|
+ udp.Listen(func(b byte, data []byte, add *net.UDPAddr) {
|
|
|
|
+ switch b {
|
|
|
|
+ case mu.OP_NOOP:
|
|
|
|
+ log.Println(string(data))
|
|
|
|
+ os.Exit(0)
|
|
|
|
+ }
|
|
|
|
+ })
|
|
|
|
+ m1 := map[string]interface{}{
|
|
|
|
+ "gtid": id1,
|
|
|
|
+ "lteid": id2,
|
|
|
|
+ "stype": stype,
|
|
}
|
|
}
|
|
- case mu.OP_NOOP: //下个节点回应
|
|
|
|
- log.Println("发送成功", string(data))
|
|
|
|
|
|
+ if bkey != "" {
|
|
|
|
+ m1["bkey"] = bkey
|
|
|
|
+ }
|
|
|
|
+ if q != "" {
|
|
|
|
+ m1["query"] = mongodb.ObjToMQ(q, true) //qutil.ObjToMap(q)
|
|
|
|
+ }
|
|
|
|
+ if tmptime > 0 && tmpkey != "" {
|
|
|
|
+ m1["query"] = map[string]interface{}{tmpkey: map[string]interface{}{"$gte": tmptime}}
|
|
|
|
+ }
|
|
|
|
+ if param != "" {
|
|
|
|
+ pm := qutil.ObjToMap(param)
|
|
|
|
+ for k, v := range *pm {
|
|
|
|
+ m1[k] = v
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ by, _ := json.Marshal(m1)
|
|
|
|
+ log.Println(string(by))
|
|
|
|
+ udp.WriteUdp(by, mu.OP_TYPE_DATA, toadd)
|
|
|
|
+ time.Sleep(30 * time.Second)
|
|
|
|
+ } else {
|
|
|
|
+ flag.PrintDefaults()
|
|
|
|
+ log.Println("参数错误.")
|
|
}
|
|
}
|
|
}
|
|
}
|