package main import ( "log" "net" "strings" ) func (vD VirtualDomain) DomainExists() bool { query := Db.Where("name = ?", vD.Name).Find(&vD) if query.Error != nil { log.Println(query.Error) return false } if vD.Name == "" { return false } return true } func (vD VirtualDomain) CreateDomain() bool { if !Db.Debug().NewRecord(vD) { log.Println("Creating new record failed.", vD.Name) return false } query := Db.Debug().Create(&vD) if query.Error != nil { log.Println(query.Error) return false } return true } func (vD VirtualDomain) ValidateDomain() bool { if vD.Name == "" { return false } addr, err := net.LookupIP(vD.Name) if err != nil { log.Println(err) return false } if len(addr) == 0 { return false } return true } func (vD VirtualDomain) ValidateDomainMX(ref string) bool { if vD.Name == "" { return false } mx, err := net.LookupMX(vD.Name) if err != nil { log.Println(err) return false } match := false for _, v := range mx { if v.Host == ref { match = true } } return match } func GetDomain(email string) string { fragments := strings.Split(email, "@") return fragments[len(fragments)-1] } func (vD VirtualDomain) GetPrimaryKey() int64 { Db.Find(&vD) return vD.Id }