|
@@ -23,8 +23,10 @@ type DynamicIPMap struct {
|
|
|
|
|
|
var Msclient *mu.Client
|
|
|
var MsclientFile *mu.Client
|
|
|
+var MsclientChromedp *mu.Client
|
|
|
var Alldownloader map[string]DynamicIPMap = make(map[string]DynamicIPMap)
|
|
|
var AlldownloaderFile map[string]DynamicIPMap = make(map[string]DynamicIPMap)
|
|
|
+var AlldownloaderChromedp map[string]DynamicIPMap = make(map[string]DynamicIPMap)
|
|
|
|
|
|
//初始化,启动消息客户端
|
|
|
func InitMsgClient(serveraddr, name string) {
|
|
@@ -56,6 +58,18 @@ func InitMsgClientFile(serveraddr, name string) {
|
|
|
go gc4AlldownloaderFile()
|
|
|
}
|
|
|
|
|
|
+//初始化,启动消息客户端chromedp
|
|
|
+func InitMsgClientChromedp(serveraddr, name string) {
|
|
|
+ MsclientChromedp, _ = mu.NewClient(&mu.ClientConfig{ClientName: name,
|
|
|
+ MsgServerAddr: serveraddr,
|
|
|
+ EventHandler: processeventChromedp,
|
|
|
+ CanHandleEvents: []int{mu.SERVICE_DOWNLOAD_APPEND_NODE, mu.SERVICE_DOWNLOAD_DELETE_NODE},
|
|
|
+ ReadBufferSize: 200,
|
|
|
+ WriteBufferSize: 200,
|
|
|
+ })
|
|
|
+ go gc4AlldownloaderChromedp()
|
|
|
+}
|
|
|
+
|
|
|
//
|
|
|
func processevent(p *mu.Packet) {
|
|
|
defer qu.Catch()
|
|
@@ -132,6 +146,43 @@ func processeventFile(p *mu.Packet) {
|
|
|
}
|
|
|
}
|
|
|
|
|
|
+func processeventChromedp(p *mu.Packet) {
|
|
|
+ defer qu.Catch()
|
|
|
+ var data []byte
|
|
|
+ switch p.Event {
|
|
|
+ case mu.SERVICE_DOWNLOAD_APPEND_NODE:
|
|
|
+ data = p.GetBusinessData()
|
|
|
+ //log.Println("获取动态地址:", len(data), string(data))
|
|
|
+ for i := 0; i < len(data)/8; i++ {
|
|
|
+ code := string(data[i*8 : (i+1)*8])
|
|
|
+ AlldownloaderChromedp[code] = DynamicIPMap{
|
|
|
+ Code: code,
|
|
|
+ InvalidTime: time.Now().Unix() + 60*10,
|
|
|
+ }
|
|
|
+ }
|
|
|
+ case mu.SERVICE_DOWNLOAD_DELETE_NODE:
|
|
|
+ data = p.GetBusinessData()
|
|
|
+ //log.Println("删除动态地址:", len(data), string(data))
|
|
|
+ for i := 0; i < len(data)/8; i++ {
|
|
|
+ code := string(data[i*8 : (i+1)*8])
|
|
|
+ delete(AlldownloaderChromedp, code)
|
|
|
+ }
|
|
|
+ case int32(util.Config.Uploadevent):
|
|
|
+ param := map[string]interface{}{}
|
|
|
+ json.Unmarshal(p.GetBusinessData(), ¶m)
|
|
|
+ ret := map[string]interface{}{}
|
|
|
+ if param["code"] != nil {
|
|
|
+ b, err := UpdateSpiderByCodeState(param["code"].(string), param["state"].(string))
|
|
|
+ ret["b"] = b
|
|
|
+ ret["err"] = err
|
|
|
+ } else {
|
|
|
+ ret["b"] = false
|
|
|
+ ret["err"] = "code或state值不存在"
|
|
|
+ }
|
|
|
+ MsclientChromedp.WriteObj(p.From, p.Msgid, mu.EVENT_RECIVE_CALLBACK, mu.SENDTO_TYPE_P2P, ret)
|
|
|
+ }
|
|
|
+}
|
|
|
+
|
|
|
//
|
|
|
func gc4Alldownloader() {
|
|
|
n := time.Now().Unix()
|
|
@@ -154,6 +205,16 @@ func gc4AlldownloaderFile() {
|
|
|
util.TimeAfterFunc(1*time.Minute, gc4AlldownloaderFile, TimeChan)
|
|
|
}
|
|
|
|
|
|
+func gc4AlldownloaderChromedp() {
|
|
|
+ n := time.Now().Unix()
|
|
|
+ for _, v := range AlldownloaderChromedp {
|
|
|
+ if v.InvalidTime < n {
|
|
|
+ delete(AlldownloaderChromedp, v.Code)
|
|
|
+ }
|
|
|
+ }
|
|
|
+ util.TimeAfterFunc(1*time.Minute, gc4AlldownloaderChromedp, TimeChan)
|
|
|
+}
|
|
|
+
|
|
|
//获取一个下载点
|
|
|
func GetOneDownloader() string {
|
|
|
if len(Alldownloader) < 1 {
|