package api import ( "bufio" "encoding/json" "net/http" "os" "strings" ) func MountStatus(w http.ResponseWriter, req *http.Request) { var MOUNT_POINT = os.Getenv("MOUNT_POINT") var DEVICE = os.Getenv("DEVICE") mounted := false // Проверяем, смонтировано ли устройство, читая /proc/mounts f, err := os.Open("/proc/mounts") if err == nil { defer f.Close() scanner := bufio.NewScanner(f) for scanner.Scan() { line := scanner.Text() if strings.Contains(line, MOUNT_POINT) { mounted = true break } } // Ошибки сканера игнорируем (аналогично C‑версии) } // Формируем JSON‑ответ response := map[string]interface{}{ "mounted": mounted, "mount_point": MOUNT_POINT, "device": DEVICE, } w.Header().Set("Content-Type", "application/json") // json.NewEncoder автоматически добавляет символ новой строки в конце, // что соответствует формату "%s\n" в C. if err := json.NewEncoder(w).Encode(response); err != nil { // В случае ошибки кодирования уже ничего не сделать, // можно только залогировать (здесь опущено для краткости) } }