package app import "net/http" func handleTransportInterfaces(w http.ResponseWriter, r *http.Request) { if r.Method != http.MethodGet { http.Error(w, "method not allowed", http.StatusMethodNotAllowed) return } transportMu.Lock() clientsState := loadTransportClientsState() ifacesState := loadTransportInterfacesState() snapshot := captureTransportInterfacesStateSnapshot(clientsState, ifacesState) transportMu.Unlock() normIfaces, changed := normalizeTransportInterfacesState(ifacesState, clientsState.Items) if changed { if err := saveTransportInterfacesIfSnapshotCurrent(snapshot, normIfaces); err != nil { writeJSON(w, http.StatusOK, TransportInterfacesResponse{ OK: false, Code: "TRANSPORT_INTERFACES_SAVE_FAILED", Message: "interfaces state save failed: " + err.Error(), }) return } } items := buildTransportInterfaceItems(normIfaces.Items, clientsState.Items) if adguardTarget, ok := buildTransportPolicyAdGuardTarget(); ok { items = appendTransportVirtualInterfaceItems(items, []TransportClient{adguardTarget}) } writeJSON(w, http.StatusOK, TransportInterfacesResponse{ OK: true, Message: "ok", Count: len(items), Items: items, }) }