package main import ( "errors" "log" "net/http" "os" ) func CreateNewEntry(email, password string) error { server := os.Getenv("FREEMAIL_SMTP_MAILER_MX") if !ValidateEmail(email) { return errors.New("This doesn't look like a mail adress.") } vU := VirtualUser{Email: email, Password: password} if vU.EmailExists() { return errors.New("Mail adress already exists.") } vD := VirtualDomain{} vD.Name = GetDomain(vU.Email) // Checks for correct DNS if !vD.ValidateDomainMX(server) { return errors.New("Wrong DNS setup. The MX record does not point to this server. Please fix your DNS.") // We require the correct MX entry, not just a A record. // //if !vD.ValidateDomain(server) { // return errors.New("Neither the MX record nor the domain itself point to this server. Please fix your DNS.") //} } if !vD.DomainExists() { if !vD.CreateDomain() { return errors.New("There was an error.") } } vU.DomainId = vD.GetPrimaryKey() if vU.DomainId == 0 { return errors.New("There was an error.") } if !vU.CreateEmail() { return errors.New("There was an error.") } return nil } func ExecTemplate(template string, w http.ResponseWriter, r *http.Request, flash Flash) error { l := GetLanguage(r) flash.Language = l if flash.Language == "" { flash.Language = "en" } if l != "" { l = "_" + l } template = template + l + ".html" index := mainTempl.Lookup(template) err := index.ExecuteTemplate(w, template, flash) if err != nil { log.Println("Info: ", err) return err } return nil } func ChangePassword(email, oldPassword, newPassword string) error { if !ValidateEmail(email) { log.Println("Info: No E-Mail: ", email) return errors.New("This doesn't look like a mail adress.") } vU := VirtualUser{Email: email, Password: oldPassword} if !vU.AuthUser() { return errors.New("User/Password do not match.") } vD := VirtualDomain{} vD.Name = GetDomain(email) vU.DomainId = vD.GetPrimaryKey() if !vU.UpdatePassword(newPassword) { return errors.New("There was an error.") } return nil }