login-validator: Try to fix solver distribution

This commit is contained in:
nemunaire 2022-03-01 18:36:35 +01:00
parent 7b1cf513a5
commit bb7bf52433

View File

@ -112,26 +112,36 @@ func passwd(w http.ResponseWriter, r *http.Request) {
} }
// Treat the solver case // Treat the solver case
if st, err := os.Stat(path.Join(tftpDir, "shadows", initrd, "solver")); err == nil { if _, err := os.Stat(path.Join(tftpDir, "shadows", initrd, "solver")); err == nil {
if fi, err := os.Stat(path.Join(tftpDir, "..", "solver.sh")); err != nil {
log.Println("Unable to stat solver.sh:", err.Error())
} else {
fdsolv, err := os.Open(path.Join(tftpDir, "..", "solver.sh")) fdsolv, err := os.Open(path.Join(tftpDir, "..", "solver.sh"))
if err != nil { if err != nil {
log.Println("Unable to open solver.sh:", err.Error()) log.Println("Unable to open solver.sh:", err.Error())
} else { } else {
defer fdsolv.Close() defer fdsolv.Close()
hdr := &cpio.Header{ hdr, err := cpio.FileInfoHeader(fi, "")
Name: "usr/share/doc/testdisk/solver.sh", if err != nil {
Mode: 0111, log.Println("Error when creating resolver header from", r.RemoteAddr, err.Error())
ModTime: time.Now(), } else {
Size: st.Size(), hdr.Name = "usr/share/doc/testdisk/solver.sh"
} hdr.Mode = 0111
if err := wcpio.WriteHeader(hdr); err != nil { if err := wcpio.WriteHeader(hdr); err != nil {
log.Println("Error when writing cpio header from", r.RemoteAddr, err.Error()) log.Println("Error when writing cpio header from", r.RemoteAddr, err.Error())
http.Error(w, "Unable to treat your passwd file, please try again later", http.StatusInternalServerError) http.Error(w, "Unable to treat your passwd file, please try again later", http.StatusInternalServerError)
return return
} }
_, err = io.Copy(wcpio, fdsolv) b, err := io.Copy(wcpio, fdsolv)
if err != nil {
log.Println("Error when copying resolver from", r.RemoteAddr, err.Error())
} else {
log.Println("solver:", b, "bytes copied to", r.RemoteAddr, "initrd")
}
}
}
} }
} }