199 lines
8.5 KiB
Go
199 lines
8.5 KiB
Go
package apiroutes
|
|
|
|
import "net/http"
|
|
|
|
type Handlers struct {
|
|
Healthz http.HandlerFunc
|
|
EventsStream http.HandlerFunc
|
|
GetStatus http.HandlerFunc
|
|
VPNLoginState http.HandlerFunc
|
|
SystemdState http.HandlerFunc
|
|
|
|
RoutesServiceStart http.HandlerFunc
|
|
RoutesServiceStop http.HandlerFunc
|
|
RoutesServiceRestart http.HandlerFunc
|
|
RoutesService http.HandlerFunc
|
|
RoutesUpdate http.HandlerFunc
|
|
RoutesTimer http.HandlerFunc
|
|
RoutesTimerToggle http.HandlerFunc
|
|
RoutesRollback http.HandlerFunc
|
|
RoutesClear http.HandlerFunc
|
|
RoutesCacheRestore http.HandlerFunc
|
|
RoutesPrecheckDebug http.HandlerFunc
|
|
RoutesFixPolicyRoute http.HandlerFunc
|
|
RoutesFixPolicyAlias http.HandlerFunc
|
|
|
|
TrafficMode http.HandlerFunc
|
|
TrafficModeTest http.HandlerFunc
|
|
TrafficAdvancedReset http.HandlerFunc
|
|
TrafficInterfaces http.HandlerFunc
|
|
TrafficCandidates http.HandlerFunc
|
|
TrafficAppMarks http.HandlerFunc
|
|
TrafficAppMarksItems http.HandlerFunc
|
|
TrafficAppProfiles http.HandlerFunc
|
|
TrafficAudit http.HandlerFunc
|
|
|
|
TransportClients http.HandlerFunc
|
|
TransportClientByID http.HandlerFunc
|
|
TransportInterfaces http.HandlerFunc
|
|
TransportRuntimeObservability http.HandlerFunc
|
|
TransportPolicies http.HandlerFunc
|
|
TransportPoliciesValidate http.HandlerFunc
|
|
TransportPoliciesApply http.HandlerFunc
|
|
TransportPoliciesRollback http.HandlerFunc
|
|
TransportConflicts http.HandlerFunc
|
|
TransportOwnership http.HandlerFunc
|
|
TransportOwnerLocks http.HandlerFunc
|
|
TransportOwnerLocksClear http.HandlerFunc
|
|
TransportCapabilities http.HandlerFunc
|
|
TransportHealthRefresh http.HandlerFunc
|
|
TransportNetnsToggle http.HandlerFunc
|
|
TransportSingBoxProfiles http.HandlerFunc
|
|
TransportSingBoxProfileByID http.HandlerFunc
|
|
TransportSingBoxFeatures http.HandlerFunc
|
|
EgressIdentityGet http.HandlerFunc
|
|
EgressIdentityRefresh http.HandlerFunc
|
|
|
|
TraceTailPlain http.HandlerFunc
|
|
TraceJSON http.HandlerFunc
|
|
TraceAppend http.HandlerFunc
|
|
|
|
DNSUpstreams http.HandlerFunc
|
|
DNSUpstreamPool http.HandlerFunc
|
|
DNSStatus http.HandlerFunc
|
|
DNSModeSet http.HandlerFunc
|
|
DNSBenchmark http.HandlerFunc
|
|
DNSSmartdnsService http.HandlerFunc
|
|
|
|
SmartdnsService http.HandlerFunc
|
|
SmartdnsRuntime http.HandlerFunc
|
|
SmartdnsPrewarm http.HandlerFunc
|
|
SmartdnsWildcards http.HandlerFunc
|
|
|
|
DomainsTable http.HandlerFunc
|
|
DomainsFile http.HandlerFunc
|
|
|
|
VPNAutoloopStatus http.HandlerFunc
|
|
VPNStatus http.HandlerFunc
|
|
VPNAutoconnect http.HandlerFunc
|
|
VPNListLocations http.HandlerFunc
|
|
VPNSetLocation http.HandlerFunc
|
|
VPNLoginSessionStart http.HandlerFunc
|
|
VPNLoginSessionState http.HandlerFunc
|
|
VPNLoginSessionAction http.HandlerFunc
|
|
VPNLoginSessionStop http.HandlerFunc
|
|
VPNLogout http.HandlerFunc
|
|
}
|
|
|
|
func Register(mux *http.ServeMux, h Handlers) {
|
|
registerCoreRoutes(mux, h)
|
|
registerRoutesControlRoutes(mux, h)
|
|
registerTrafficRoutes(mux, h)
|
|
registerTransportRoutes(mux, h)
|
|
registerTraceRoutes(mux, h)
|
|
registerDNSRoutes(mux, h)
|
|
registerSmartDNSRoutes(mux, h)
|
|
registerDomainsRoutes(mux, h)
|
|
registerVPNRoutes(mux, h)
|
|
}
|
|
|
|
func registerCoreRoutes(mux *http.ServeMux, h Handlers) {
|
|
mux.HandleFunc("/healthz", h.Healthz)
|
|
mux.HandleFunc("/api/v1/events/stream", h.EventsStream)
|
|
mux.HandleFunc("/api/v1/status", h.GetStatus)
|
|
mux.HandleFunc("/api/v1/routes/status", h.GetStatus)
|
|
mux.HandleFunc("/api/v1/vpn/login-state", h.VPNLoginState)
|
|
mux.HandleFunc("/api/v1/systemd/state", h.SystemdState)
|
|
}
|
|
|
|
func registerRoutesControlRoutes(mux *http.ServeMux, h Handlers) {
|
|
mux.HandleFunc("/api/v1/routes/service/start", h.RoutesServiceStart)
|
|
mux.HandleFunc("/api/v1/routes/service/stop", h.RoutesServiceStop)
|
|
mux.HandleFunc("/api/v1/routes/service/restart", h.RoutesServiceRestart)
|
|
mux.HandleFunc("/api/v1/routes/service", h.RoutesService)
|
|
mux.HandleFunc("/api/v1/routes/update", h.RoutesUpdate)
|
|
mux.HandleFunc("/api/v1/routes/timer", h.RoutesTimer)
|
|
mux.HandleFunc("/api/v1/routes/timer/toggle", h.RoutesTimerToggle)
|
|
mux.HandleFunc("/api/v1/routes/rollback", h.RoutesRollback)
|
|
mux.HandleFunc("/api/v1/routes/clear", h.RoutesClear)
|
|
mux.HandleFunc("/api/v1/routes/cache/restore", h.RoutesCacheRestore)
|
|
mux.HandleFunc("/api/v1/routes/precheck/debug", h.RoutesPrecheckDebug)
|
|
mux.HandleFunc("/api/v1/routes/fix-policy-route", h.RoutesFixPolicyRoute)
|
|
mux.HandleFunc("/api/v1/routes/fix-policy", h.RoutesFixPolicyAlias)
|
|
}
|
|
|
|
func registerTrafficRoutes(mux *http.ServeMux, h Handlers) {
|
|
mux.HandleFunc("/api/v1/traffic/mode", h.TrafficMode)
|
|
mux.HandleFunc("/api/v1/traffic/mode/test", h.TrafficModeTest)
|
|
mux.HandleFunc("/api/v1/traffic/advanced/reset", h.TrafficAdvancedReset)
|
|
mux.HandleFunc("/api/v1/traffic/interfaces", h.TrafficInterfaces)
|
|
mux.HandleFunc("/api/v1/traffic/candidates", h.TrafficCandidates)
|
|
mux.HandleFunc("/api/v1/traffic/appmarks", h.TrafficAppMarks)
|
|
mux.HandleFunc("/api/v1/traffic/appmarks/items", h.TrafficAppMarksItems)
|
|
mux.HandleFunc("/api/v1/traffic/app-profiles", h.TrafficAppProfiles)
|
|
mux.HandleFunc("/api/v1/traffic/audit", h.TrafficAudit)
|
|
}
|
|
|
|
func registerTransportRoutes(mux *http.ServeMux, h Handlers) {
|
|
mux.HandleFunc("/api/v1/transport/clients", h.TransportClients)
|
|
mux.HandleFunc("/api/v1/transport/clients/", h.TransportClientByID)
|
|
mux.HandleFunc("/api/v1/transport/interfaces", h.TransportInterfaces)
|
|
mux.HandleFunc("/api/v1/transport/runtime/observability", h.TransportRuntimeObservability)
|
|
mux.HandleFunc("/api/v1/transport/policies", h.TransportPolicies)
|
|
mux.HandleFunc("/api/v1/transport/policies/validate", h.TransportPoliciesValidate)
|
|
mux.HandleFunc("/api/v1/transport/policies/apply", h.TransportPoliciesApply)
|
|
mux.HandleFunc("/api/v1/transport/policies/rollback", h.TransportPoliciesRollback)
|
|
mux.HandleFunc("/api/v1/transport/conflicts", h.TransportConflicts)
|
|
mux.HandleFunc("/api/v1/transport/owners", h.TransportOwnership)
|
|
mux.HandleFunc("/api/v1/transport/owner-locks", h.TransportOwnerLocks)
|
|
mux.HandleFunc("/api/v1/transport/owner-locks/clear", h.TransportOwnerLocksClear)
|
|
mux.HandleFunc("/api/v1/transport/capabilities", h.TransportCapabilities)
|
|
mux.HandleFunc("/api/v1/transport/health/refresh", h.TransportHealthRefresh)
|
|
mux.HandleFunc("/api/v1/transport/netns/toggle", h.TransportNetnsToggle)
|
|
mux.HandleFunc("/api/v1/transport/singbox/profiles", h.TransportSingBoxProfiles)
|
|
mux.HandleFunc("/api/v1/transport/singbox/profiles/", h.TransportSingBoxProfileByID)
|
|
mux.HandleFunc("/api/v1/transport/singbox/features", h.TransportSingBoxFeatures)
|
|
mux.HandleFunc("/api/v1/egress/identity", h.EgressIdentityGet)
|
|
mux.HandleFunc("/api/v1/egress/identity/refresh", h.EgressIdentityRefresh)
|
|
}
|
|
|
|
func registerTraceRoutes(mux *http.ServeMux, h Handlers) {
|
|
mux.HandleFunc("/api/v1/trace", h.TraceTailPlain)
|
|
mux.HandleFunc("/api/v1/trace-json", h.TraceJSON)
|
|
mux.HandleFunc("/api/v1/trace/append", h.TraceAppend)
|
|
}
|
|
|
|
func registerDNSRoutes(mux *http.ServeMux, h Handlers) {
|
|
mux.HandleFunc("/api/v1/dns-upstreams", h.DNSUpstreams)
|
|
mux.HandleFunc("/api/v1/dns/upstream-pool", h.DNSUpstreamPool)
|
|
mux.HandleFunc("/api/v1/dns/status", h.DNSStatus)
|
|
mux.HandleFunc("/api/v1/dns/mode", h.DNSModeSet)
|
|
mux.HandleFunc("/api/v1/dns/benchmark", h.DNSBenchmark)
|
|
mux.HandleFunc("/api/v1/dns/smartdns-service", h.DNSSmartdnsService)
|
|
}
|
|
|
|
func registerSmartDNSRoutes(mux *http.ServeMux, h Handlers) {
|
|
mux.HandleFunc("/api/v1/smartdns/service", h.SmartdnsService)
|
|
mux.HandleFunc("/api/v1/smartdns/runtime", h.SmartdnsRuntime)
|
|
mux.HandleFunc("/api/v1/smartdns/prewarm", h.SmartdnsPrewarm)
|
|
mux.HandleFunc("/api/v1/smartdns/wildcards", h.SmartdnsWildcards)
|
|
}
|
|
|
|
func registerDomainsRoutes(mux *http.ServeMux, h Handlers) {
|
|
mux.HandleFunc("/api/v1/domains/table", h.DomainsTable)
|
|
mux.HandleFunc("/api/v1/domains/file", h.DomainsFile)
|
|
}
|
|
|
|
func registerVPNRoutes(mux *http.ServeMux, h Handlers) {
|
|
mux.HandleFunc("/api/v1/vpn/autoloop-status", h.VPNAutoloopStatus)
|
|
mux.HandleFunc("/api/v1/vpn/status", h.VPNStatus)
|
|
mux.HandleFunc("/api/v1/vpn/autoconnect", h.VPNAutoconnect)
|
|
mux.HandleFunc("/api/v1/vpn/locations", h.VPNListLocations)
|
|
mux.HandleFunc("/api/v1/vpn/location", h.VPNSetLocation)
|
|
mux.HandleFunc("/api/v1/vpn/login/session/start", h.VPNLoginSessionStart)
|
|
mux.HandleFunc("/api/v1/vpn/login/session/state", h.VPNLoginSessionState)
|
|
mux.HandleFunc("/api/v1/vpn/login/session/action", h.VPNLoginSessionAction)
|
|
mux.HandleFunc("/api/v1/vpn/login/session/stop", h.VPNLoginSessionStop)
|
|
mux.HandleFunc("/api/v1/vpn/logout", h.VPNLogout)
|
|
}
|