func ConfirmaCodigo(w http.ResponseWriter, r *http.Request) { c := appengine.NewContext(r) md5 := r.FormValue("m") key, _ := datastore.DecodeKey(r.FormValue("c")) var g model.Cta if err := datastore.Get(c, key, &g); err != nil { if err := activationMessageTpl.ExecuteTemplate(w, "codeerr", nil); err != nil { http.Error(w, err.Error(), http.StatusInternalServerError) } return } /* Se verifica el código de confirmación */ if g.CodigoCfm == md5 && g.Status == false { // Si se confirma el md5 la cuenta admin se le asigna un folio y se activa el status if err := sharded_counter.Increment(c, "cuenta_admin"); err == nil { if folio, err := sharded_counter.Count(c, "cuenta_admin"); err == nil { g.Folio = folio g.Status = true g.CodigoCfm = "Confirmado" _, err := datastore.Put(c, key, &g) if err != nil { http.Error(w, err.Error(), http.StatusInternalServerError) return } /* Prende la sesion */ _, _, err = sess.SetSess(w, c, key, g.Email, g.Nombre) if err != nil { http.Error(w, err.Error(), http.StatusInternalServerError) return } if MailServer == "gmail" { // Envia código activación var hbody bytes.Buffer var sender string if appengine.AppID(c) == "ebfmxorg" { sender = "El Buen Fin <*****@*****.**>" } else { sender = "El Buen Fin <*****@*****.**>" } if err := mailAvisoActivacionTpl.Execute(&hbody, g); err != nil { http.Error(w, err.Error(), http.StatusInternalServerError) } msg := &mail.Message{ Sender: sender, To: []string{g.Email}, Subject: "Cuenta Activada / El Buen Fin en línea", HTMLBody: hbody.String(), } if err := mail.Send(c, msg); err != nil { // Problemas para enviar el correo NOK http.Error(w, err.Error(), http.StatusInternalServerError) http.Redirect(w, r, "/", http.StatusFound) } // avisa del éxito independientemente del correo if err := activationMessageTpl.ExecuteTemplate(w, "confirm", g); err != nil { http.Error(w, err.Error(), http.StatusInternalServerError) } return } else { client := urlfetch.Client(c) url := fmt.Sprintf("http://envia-m.mekate.com.mx/?Sender=%s&Tipo=Aviso&Email=%s&Nombre=%s&Pass=%s&AppId=ebfmxorg", "*****@*****.**", g.Email, url.QueryEscape(g.Nombre), url.QueryEscape(g.Pass)) r1, err := client.Get(url) if err != nil { http.Error(w, err.Error(), http.StatusInternalServerError) return } if r1.StatusCode != 200 { http.Error(w, "Error de Transporte de Mail", http.StatusInternalServerError) } if err := activationMessageTpl.ExecuteTemplate(w, "confirm", g); err != nil { http.Error(w, err.Error(), http.StatusInternalServerError) } defer r1.Body.Close() } } else { // El Folio no es seguro, se deshecha la operación o se encola if err := activationMessageTpl.ExecuteTemplate(w, "codeerr", nil); err != nil { http.Error(w, err.Error(), http.StatusInternalServerError) } return } } else { // El Folio no es seguro, se deshecha la operación o se encola if err := activationMessageTpl.ExecuteTemplate(w, "codeerr", nil); err != nil { http.Error(w, err.Error(), http.StatusInternalServerError) } return } } else { if err := activationMessageTpl.ExecuteTemplate(w, "codeerr", nil); err != nil { http.Error(w, err.Error(), http.StatusInternalServerError) } } }