diff --git a/cmd/verstak-server/server.go b/cmd/verstak-server/server.go index 4980059..f4b76b3 100644 --- a/cmd/verstak-server/server.go +++ b/cmd/verstak-server/server.go @@ -1486,9 +1486,10 @@ function closeHealth(e){if(!e||e.target.id==='health-modal')document.getElementB function testSMTP(){ var f=document.querySelector('#smtp-modal form') var fd=new FormData(f) + var obj={};for(var e of fd.entries()){obj[e[0]]=e[1]} var r=document.getElementById('smtp-test-result') r.textContent='⏳ Тестируем...';r.style.color='#888' - fetch('/admin/api/smtp/test',{method:'POST',body:fd}).then(function(r2){return r2.json()}).then(function(d){ + fetch('/admin/api/smtp/test',{method:'POST',headers:{'Content-Type':'application/json'},body:JSON.stringify(obj)}).then(function(r2){return r2.json()}).then(function(d){ r.textContent=d.ok?'✓ Тест пройден':'✗ '+d.error r.style.color=d.ok?'#4ade80':'#ff6b6b' }).catch(function(e){r.textContent='✗ '+e;r.style.color='#ff6b6b'}) @@ -1546,16 +1547,24 @@ func (s *Server) handleAdminSMTPTest(w http.ResponseWriter, r *http.Request) { if !s.requireAdmin(w, r) { return } - if err := r.ParseForm(); err != nil { - jsonErr(w, 400, "bad form") + var req struct { + Host string `json:"smtp_host"` + Port string `json:"smtp_port"` + User string `json:"smtp_user"` + Pass string `json:"smtp_pass"` + From string `json:"smtp_from"` + To string `json:"test_to"` + } + if err := json.NewDecoder(r.Body).Decode(&req); err != nil { + jsonErr(w, 400, "bad json") return } - host := r.FormValue("smtp_host") - port := r.FormValue("smtp_port") - user := r.FormValue("smtp_user") - pass := r.FormValue("smtp_pass") - from := r.FormValue("smtp_from") - to := r.FormValue("test_to") + host := req.Host + port := req.Port + user := req.User + pass := req.Pass + from := req.From + to := req.To if to == "" { to = from }