platform: modularize api/gui, add docs-tests-web foundation, and refresh root config

This commit is contained in:
beckline
2026-03-26 22:40:54 +03:00
parent 0e2d7f61ea
commit 6a56d734c2
562 changed files with 70151 additions and 16423 deletions

View File

@@ -0,0 +1,40 @@
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,
})
}