Files
up_go/api/MountStatus.go
T
2026-03-19 14:07:10 +07:00

46 lines
1.3 KiB
Go

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 {
// В случае ошибки кодирования уже ничего не сделать,
// можно только залогировать (здесь опущено для краткости)
}
}