platform: modularize api/gui, add docs-tests-web foundation, and refresh root config
This commit is contained in:
40
selective-vpn-api/app/transport_handlers_interfaces.go
Normal file
40
selective-vpn-api/app/transport_handlers_interfaces.go
Normal 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,
|
||||
})
|
||||
}
|
||||
Reference in New Issue
Block a user