2021-10-22 22:40:03 +02:00
|
|
|
package http
|
2018-09-22 15:51:20 +02:00
|
|
|
|
|
|
|
import (
|
2021-03-22 16:50:08 +01:00
|
|
|
"net/http"
|
|
|
|
|
2018-09-22 15:51:20 +02:00
|
|
|
"github.com/julienschmidt/httprouter"
|
|
|
|
|
2021-03-22 16:50:08 +01:00
|
|
|
"github.com/alice-lg/alice-lg/pkg/api"
|
2018-09-22 15:51:20 +02:00
|
|
|
)
|
|
|
|
|
|
|
|
// Handle Status Endpoint, this is intended for
|
|
|
|
// monitoring and service health checks
|
2021-10-26 23:11:42 +02:00
|
|
|
func (s *Server) apiStatusShow(
|
|
|
|
_req *http.Request,
|
|
|
|
_params httprouter.Params,
|
2021-10-27 17:54:51 +00:00
|
|
|
) (response, error) {
|
2021-10-26 23:11:42 +02:00
|
|
|
status, err := CollectAppStatus(s.routesStore, s.neighborsStore)
|
2018-09-22 15:51:20 +02:00
|
|
|
return status, err
|
|
|
|
}
|
|
|
|
|
|
|
|
// Handle status
|
2021-10-26 23:11:42 +02:00
|
|
|
func (s *Server) apiStatus(
|
|
|
|
_req *http.Request,
|
|
|
|
params httprouter.Params,
|
2021-10-27 17:54:51 +00:00
|
|
|
) (response, error) {
|
2021-07-02 14:30:43 +02:00
|
|
|
rsID, err := validateSourceID(params.ByName("id"))
|
2018-09-22 15:51:20 +02:00
|
|
|
if err != nil {
|
|
|
|
return nil, err
|
|
|
|
}
|
2019-01-11 20:06:03 +01:00
|
|
|
|
2021-10-26 23:11:42 +02:00
|
|
|
source := s.cfg.SourceInstanceByID(rsID)
|
2019-01-11 20:06:03 +01:00
|
|
|
if source == nil {
|
2021-10-26 23:11:42 +02:00
|
|
|
return nil, ErrSourceNotFound
|
2019-01-11 20:06:03 +01:00
|
|
|
}
|
|
|
|
|
2018-09-22 15:51:20 +02:00
|
|
|
result, err := source.Status()
|
2018-10-02 14:52:47 +02:00
|
|
|
if err != nil {
|
2021-10-27 17:54:51 +00:00
|
|
|
s.logSourceError("status", rsID, err)
|
2018-10-02 14:52:47 +02:00
|
|
|
}
|
|
|
|
|
2018-09-22 15:51:20 +02:00
|
|
|
return result, err
|
|
|
|
}
|
|
|
|
|
|
|
|
// Handle Config Endpoint
|
2021-10-26 23:11:42 +02:00
|
|
|
func (s *Server) apiConfigShow(
|
|
|
|
_req *http.Request,
|
|
|
|
_params httprouter.Params,
|
2021-10-27 17:54:51 +00:00
|
|
|
) (response, error) {
|
2021-10-26 23:11:42 +02:00
|
|
|
result := api.ConfigResponse{
|
|
|
|
Asn: s.cfg.Server.Asn,
|
2021-10-27 14:48:52 +00:00
|
|
|
BGPCommunities: s.cfg.UI.BGPCommunities,
|
2021-10-26 23:11:42 +02:00
|
|
|
RejectReasons: s.cfg.UI.RoutesRejections.Reasons,
|
|
|
|
Noexport: api.Noexport{
|
|
|
|
LoadOnDemand: s.cfg.UI.RoutesNoexports.LoadOnDemand,
|
|
|
|
},
|
|
|
|
NoexportReasons: s.cfg.UI.RoutesNoexports.Reasons,
|
|
|
|
RejectCandidates: api.RejectCandidates{
|
|
|
|
Communities: s.cfg.UI.RoutesRejectCandidates.Communities,
|
|
|
|
},
|
2021-10-27 14:48:52 +00:00
|
|
|
Rpki: api.Rpki(s.cfg.UI.Rpki),
|
2021-10-26 23:11:42 +02:00
|
|
|
RoutesColumns: s.cfg.UI.RoutesColumns,
|
|
|
|
RoutesColumnsOrder: s.cfg.UI.RoutesColumnsOrder,
|
|
|
|
NeighborsColumns: s.cfg.UI.NeighborsColumns,
|
|
|
|
NeighborsColumnsOrder: s.cfg.UI.NeighborsColumnsOrder,
|
|
|
|
LookupColumns: s.cfg.UI.LookupColumns,
|
|
|
|
LookupColumnsOrder: s.cfg.UI.LookupColumnsOrder,
|
|
|
|
PrefixLookupEnabled: s.cfg.Server.EnablePrefixLookup,
|
2018-09-22 15:51:20 +02:00
|
|
|
}
|
2021-10-26 23:11:42 +02:00
|
|
|
return result, nil
|
2018-09-22 15:51:20 +02:00
|
|
|
}
|