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