1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556 |
- package main
- import (
- "fmt"
- "io/ioutil"
- "log"
- "net"
- "net/http"
- "strings"
- "sync"
- "time"
- )
- var udptaskmap = &sync.Map{}
- var tomail string
- var api string
- type udpNode struct {
- data []byte
- addr *net.UDPAddr
- timestamp int64
- retry int
- }
- func checkMapJob() {
- //阿里云内网无法发送邮件
- jkmail, _ := Sysconfig["jkmail"].(map[string]interface{})
- if jkmail != nil {
- tomail, _ = jkmail["to"].(string)
- api, _ = jkmail["api"].(string)
- }
- log.Println("start checkMapJob", tomail, Sysconfig["jkmail"])
- for {
- udptaskmap.Range(func(k, v interface{}) bool {
- now := time.Now().Unix()
- node, _ := v.(*udpNode)
- if now-node.timestamp > 120 {
- udptaskmap.Delete(k)
- info_str := ""
- if strings.Contains(k.(string),"project") {
- info_str = fmt.Sprintf("下节点~项目合并~未响应~相关人员检查~%s",k.(string))
- }else {
- info_str = fmt.Sprintf("下节点~索引~未响应~相关人员检查~%s",k.(string))
- }
- res, err := http.Get(fmt.Sprintf("%s?to=%s&title=%s&body=%s", api, tomail, "增量判重程序~严重警告",info_str))
- if err == nil {
- defer res.Body.Close()
- read, err := ioutil.ReadAll(res.Body)
- log.Println("邮件发送:", string(read), err)
- }
- }
- return true
- })
- time.Sleep(60 * time.Second)
- }
- }
|