12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273 |
- 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 checkMailJob() {
- //阿里云内网无法发送邮件
- jkmail, _ := Sysconfig["jkmail"].(map[string]interface{})
- if jkmail != nil {
- tomail, _ = jkmail["to"].(string)
- api, _ = jkmail["api"].(string)
- }
- log.Println("start checkMailJob", 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)
- }
- }
- func sendErrMailApi(title, body string) {
- jkmail, _ := Sysconfig["jkmail"].(map[string]interface{})
- if jkmail != nil {
- tomail, _ = jkmail["to"].(string)
- api, _ = jkmail["api"].(string)
- }
- log.Println(tomail, api)
- res, err := http.Get(fmt.Sprintf("%s?to=%s&title=%s&body=%s", api, tomail, title, body))
- if err == nil {
- defer res.Body.Close()
- read, err := ioutil.ReadAll(res.Body)
- log.Println("邮件发送成功:", string(read), err)
- } else {
- log.Println("邮件发送失败:", err)
- }
- }
|