@@ -2,7 +2,6 @@ package main
22
33import  (
44	"net/http" 
5- 	"slices" 
65
76	"github.com/rs/zerolog/hlog" 
87	"go.mau.fi/util/exhttp" 
@@ -14,7 +13,8 @@ func (m *Meowlnir) AddHTTPEndpoints() {
1413	clientRouter .HandleFunc ("POST /v3/rooms/{roomID}/report/{eventID}" , m .PostReport )
1514	clientRouter .HandleFunc ("POST /v3/rooms/{roomID}/report" , m .PostReport )
1615	clientRouter .HandleFunc ("POST /v3/users/{userID}/report" , m .PostReport )
17- 	m .AS .Router .PathPrefix ("/_matrix/client" ).Handler (applyMiddleware (
16+ 
17+ 	m .AS .Router .Handle ("/_matrix/client/" , exhttp .ApplyMiddleware (
1818		http .StripPrefix ("/_matrix/client" , clientRouter ),
1919		hlog .NewHandler (m .Log .With ().Str ("component" , "reporting api" ).Logger ()),
2020		hlog .RequestIDHandler ("request_id" , "X-Request-ID" ),
@@ -26,7 +26,7 @@ func (m *Meowlnir) AddHTTPEndpoints() {
2626	policyServerRouter  :=  http .NewServeMux ()
2727	policyServerRouter .HandleFunc ("POST /unstable/org.matrix.msc4284/event/{event_id}/check" , m .PostMSC4284EventCheck )
2828
29- 	m .AS .Router .PathPrefix ("/_matrix/policy"  ). Handler ( applyMiddleware (
29+ 	m .AS .Router .Handle ("/_matrix/policy/"  ,  exhttp . ApplyMiddleware (
3030		http .StripPrefix ("/_matrix/policy" , policyServerRouter ),
3131		hlog .NewHandler (m .Log .With ().Str ("component" , "policy server" ).Logger ()),
3232		hlog .RequestIDHandler ("request_id" , "X-Request-ID" ),
@@ -36,33 +36,37 @@ func (m *Meowlnir) AddHTTPEndpoints() {
3636
3737	antispamRouter  :=  http .NewServeMux ()
3838	antispamRouter .HandleFunc ("POST /{policyListID}/{callback}" , m .PostCallback )
39- 	m .AS .Router .PathPrefix ("/_meowlnir/antispam"  ). Handler ( applyMiddleware (
39+ 	m .AS .Router .Handle ("/_meowlnir/antispam/"  ,  exhttp . ApplyMiddleware (
4040		http .StripPrefix ("/_meowlnir/antispam" , antispamRouter ),
4141		hlog .NewHandler (m .Log .With ().Str ("component" , "antispam api" ).Logger ()),
4242		hlog .RequestIDHandler ("request_id" , "X-Request-ID" ),
4343		requestlog .AccessLogger (requestlog.Options {TrustXForwardedFor : true }),
44- 		m .AntispamAuth ,
44+ 		SecretAuth (m .loadSecret (m .Config .Antispam .Secret )),
45+ 	))
46+ 
47+ 	dataRouter  :=  http .NewServeMux ()
48+ 	dataRouter .HandleFunc ("GET /v1/match/{entityType}/{entity}" , m .MatchPolicy )
49+ 	dataRouter .HandleFunc ("GET /v1/list/{entityType}" , m .ListPolicies )
50+ 	m .AS .Router .Handle ("/_meowlnir/data/" , exhttp .ApplyMiddleware (
51+ 		http .StripPrefix ("/_meowlnir/data" , dataRouter ),
52+ 		hlog .NewHandler (m .Log .With ().Str ("component" , "data api" ).Logger ()),
53+ 		hlog .RequestIDHandler ("request_id" , "X-Request-ID" ),
54+ 		exhttp .CORSMiddleware ,
55+ 		requestlog .AccessLogger (requestlog.Options {TrustXForwardedFor : true }),
56+ 		SecretAuth (m .loadSecret (m .Config .Meowlnir .DataSecret )),
4557	))
4658
4759	managementRouter  :=  http .NewServeMux ()
4860	managementRouter .HandleFunc ("GET /v1/bots" , m .GetBots )
4961	managementRouter .HandleFunc ("PUT /v1/bot/{username}" , m .PutBot )
5062	managementRouter .HandleFunc ("POST /v1/bot/{username}/verify" , m .PostVerifyBot )
5163	managementRouter .HandleFunc ("PUT /v1/management_room/{roomID}" , m .PutManagementRoom )
52- 	m .AS .Router .PathPrefix ("/_meowlnir"  ). Handler ( applyMiddleware (
64+ 	m .AS .Router .Handle ("/_meowlnir/"  ,  exhttp . ApplyMiddleware (
5365		http .StripPrefix ("/_meowlnir" , managementRouter ),
5466		hlog .NewHandler (m .Log .With ().Str ("component" , "management api" ).Logger ()),
5567		hlog .RequestIDHandler ("request_id" , "X-Request-ID" ),
5668		exhttp .CORSMiddleware ,
5769		requestlog .AccessLogger (requestlog.Options {TrustXForwardedFor : true }),
58- 		m . ManagementAuth ,
70+ 		SecretAuth ( m . loadSecret ( m . Config . Meowlnir . ManagementSecret )) ,
5971	))
6072}
61- 
62- func  applyMiddleware (router  http.Handler , middleware  ... func (http.Handler ) http.Handler ) http.Handler  {
63- 	slices .Reverse (middleware )
64- 	for  _ , m  :=  range  middleware  {
65- 		router  =  m (router )
66- 	}
67- 	return  router 
68- }
0 commit comments