func dns(username string, password string, domain string, ip string) string { //base64 Authorization := username + ":" + password encodeStd := "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/" var en *base64.Encoding = base64.NewEncoding(encodeStd) var buf *bytes.Buffer = bytes.NewBufferString(Authorization) enS := en.EncodeToString(buf.Bytes()) //http request and header url := fmt.Sprintf("http://ddns.oray.com/ph/update?hostname=%s&myip=%s", domain, ip) requ, _ := http.NewRequest("GET", url, nil) requ.Header.Add("Authorization", "Basic "+enS) requ.Header.Add("User-Agent", "FUCKALL") client := new(http.Client) resp, _ := client.Do(requ) defer resp.Body.Close() body, _ := ioutil.ReadAll(resp.Body) buf = bytes.NewBuffer(body) bufS := buf.String() return bufS }
func (this *Sender) SendMail() (e error) { var ( deadline time.Duration = 5 * time.Second encoding *base64.Encoding buf []byte = make([]byte, 512) r int ) encoding = base64.NewEncoding(tb) conn, e := net.Dial("tcp", this.Host) if e != nil { return } defer conn.Close() conn.SetDeadline(time.Now().Add(deadline)) r, e = conn.Read(buf) if e != nil { return } fmt.Println(string(buf[:r-1])) conn.Write([]byte("EHLO Juxuny\r\n")) conn.SetDeadline(time.Now().Add(deadline)) r, e = conn.Read(buf) if e != nil { return } fmt.Println(string(buf[:r-1])) conn.Write([]byte("AUTH LOGIN\r\n")) conn.SetDeadline(time.Now().Add(deadline)) r, e = conn.Read(buf) if e != nil { return } fmt.Println(string(buf[:r-1])) conn.Write([]byte(encoding.EncodeToString([]byte(this.UserName)) + "\r\n")) conn.SetDeadline(time.Now().Add(deadline)) r, e = conn.Read(buf) if e != nil { return } fmt.Println(string(buf[:r-1])) conn.Write([]byte(encoding.EncodeToString([]byte(this.Password)) + "\r\n")) conn.SetDeadline(time.Now().Add(deadline)) r, e = conn.Read(buf) if e != nil { return } fmt.Println(string(buf[:r-1])) conn.Write([]byte("MAIL FROM: <" + this.From + ">" + "\r\n")) conn.SetDeadline(time.Now().Add(deadline)) r, e = conn.Read(buf) if e != nil { return } fmt.Println(string(buf[:r-1])) conn.Write([]byte("RCPT TO <" + this.To + ">\r\n")) conn.SetDeadline(time.Now().Add(deadline)) r, e = conn.Read(buf) if e != nil { return } fmt.Println(string(buf[:r-1])) conn.Write([]byte("DATA\r\n")) conn.Write([]byte("\r\n")) conn.Write([]byte("Message-ID: <" + this.From + ">\r\n")) conn.Write([]byte("X-Mailer: <MMail 1.0>")) conn.Write([]byte("MIME-Version: 1.0")) conn.Write([]byte("Content-Type: text/plain")) conn.Write([]byte("From: <" + this.From + ">\r\n")) conn.Write([]byte("To: <" + this.To + ">\r\n")) conn.Write([]byte("Subject: " + this.Subject + "\r\n")) conn.Write([]byte("\r\n")) conn.Write([]byte(this.Text)) conn.Write([]byte("\r\n.\r\n")) time.Sleep(5e9) conn.Write([]byte("QUIT\r\n")) conn.SetDeadline(time.Now().Add(deadline)) r, e = conn.Read(buf) if e != nil { fmt.Println(e) return } fmt.Println(string(buf[:r-1])) return }