this repo has no description
0
fork

Configure Feed

Select the types of activity you want to include in your feed.

rainbow: proxy admin requests to upstream

+25 -6
+6 -6
splitter/handlers.go
··· 6 6 "io" 7 7 "net/http" 8 8 "net/url" 9 - "strings" 10 9 11 10 comatproto "github.com/bluesky-social/indigo/api/atproto" 12 11 "github.com/bluesky-social/indigo/xrpc" ··· 118 117 return c.JSON(http.StatusBadRequest, xrpc.XRPCError{ErrStr: "BadRequest", Message: "failed to proxy to upstream relay"}) 119 118 } 120 119 121 - for k, vals := range req.Header { 122 - if strings.ToLower(k) == "accept" { 123 - upstreamReq.Header.Add(k, vals[0]) 120 + // copy subset of request headers 121 + for _, hdr := range []string{"Accept", "User-Agent", "Authorization", "Via", "Content-Type", "Content-Length"} { 122 + val := req.Header.Get(hdr) 123 + if val != "" { 124 + upstreamReq.Header.Set(hdr, val) 124 125 } 125 126 } 126 - upstreamReq.Header.Add("User-Agent", s.conf.UserAgent) 127 127 128 128 upstreamResp, err := s.upstreamClient.Do(upstreamReq) 129 129 if err != nil { ··· 131 131 } 132 132 defer upstreamResp.Body.Close() 133 133 134 - // copy a subset of headers 134 + // copy a subset of response headers 135 135 for _, hdr := range []string{"Content-Type", "Content-Length", "Location"} { 136 136 val := upstreamResp.Header.Get(hdr) 137 137 if val != "" {
+19
splitter/splitter.go
··· 226 226 e.GET("/xrpc/com.atproto.sync.getHostStatus", s.ProxyRequestUpstream) 227 227 e.GET("/xrpc/com.atproto.sync.getRepo", s.ProxyRequestUpstream) 228 228 229 + // proxy relay admin endpoints for inter-relay synchronization 230 + e.GET("/admin/subs/getUpstreamConns", s.ProxyRequestUpstream) 231 + e.POST("/admin/subs/killUpstream", s.ProxyRequestUpstream) 232 + e.GET("/admin/subs/getEnabled", s.ProxyRequestUpstream) 233 + e.POST("/admin/subs/setEnabled", s.ProxyRequestUpstream) 234 + e.GET("/admin/subs/perDayLimit", s.ProxyRequestUpstream) 235 + e.POST("/admin/subs/setPerDayLimit", s.ProxyRequestUpstream) 236 + e.GET("/admin/subs/listDomainBans", s.ProxyRequestUpstream) 237 + e.POST("/admin/subs/banDomain", s.ProxyRequestUpstream) 238 + e.POST("/admin/subs/unbanDomain", s.ProxyRequestUpstream) 239 + e.POST("/admin/repo/takeDown", s.ProxyRequestUpstream) 240 + e.POST("/admin/repo/reverseTakedown", s.ProxyRequestUpstream) 241 + e.GET("/admin/pds/list", s.ProxyRequestUpstream) 242 + e.POST("/admin/pds/requestCrawl", s.ProxyRequestUpstream) 243 + e.POST("/admin/pds/changeLimits", s.ProxyRequestUpstream) 244 + e.POST("/admin/pds/block", s.ProxyRequestUpstream) 245 + e.POST("/admin/pds/unblock", s.ProxyRequestUpstream) 246 + e.GET("/admin/consumers/list", s.ProxyRequestUpstream) 247 + 229 248 // proxy endpoint to collectiondir 230 249 e.GET("/xrpc/com.atproto.sync.listReposByCollection", s.ProxyRequestCollectionDir) 231 250