An atproto PDS written in Go

add a fallback proxy config

Changed files
+11
cmd
cocoon
server
+5
cmd/cocoon/main.go
··· 136 EnvVars: []string{"COCOON_BLOCKSTORE_VARIANT"}, 137 Value: "sqlite", 138 }, 139 }, 140 Commands: []*cli.Command{ 141 runServe, ··· 186 }, 187 SessionSecret: cmd.String("session-secret"), 188 BlockstoreVariant: server.MustReturnBlockstoreVariant(cmd.String("blockstore-variant")), 189 }) 190 if err != nil { 191 fmt.Printf("error creating cocoon: %v", err)
··· 136 EnvVars: []string{"COCOON_BLOCKSTORE_VARIANT"}, 137 Value: "sqlite", 138 }, 139 + &cli.StringFlag{ 140 + Name: "fallback-proxy", 141 + EnvVars: []string{"COCOON_FALLBACK_PROXY"}, 142 + }, 143 }, 144 Commands: []*cli.Command{ 145 runServe, ··· 190 }, 191 SessionSecret: cmd.String("session-secret"), 192 BlockstoreVariant: server.MustReturnBlockstoreVariant(cmd.String("blockstore-variant")), 193 + FallbackProxy: cmd.String("fallback-proxy"), 194 }) 195 if err != nil { 196 fmt.Printf("error creating cocoon: %v", err)
+3
server/handle_proxy.go
··· 19 20 func (s *Server) getAtprotoProxyEndpointFromRequest(e echo.Context) (string, string, error) { 21 svc := e.Request().Header.Get("atproto-proxy") 22 23 svcPts := strings.Split(svc, "#") 24 if len(svcPts) != 2 {
··· 19 20 func (s *Server) getAtprotoProxyEndpointFromRequest(e echo.Context) (string, string, error) { 21 svc := e.Request().Header.Get("atproto-proxy") 22 + if svc == "" && s.config.FallbackProxy != "" { 23 + svc = s.config.FallbackProxy 24 + } 25 26 svcPts := strings.Split(svc, "#") 27 if len(svcPts) != 2 {
+3
server/server.go
··· 75 oauthProvider *provider.Provider 76 evtman *events.EventManager 77 passport *identity.Passport 78 79 dbName string 80 s3Config *S3Config ··· 118 SmtpEmail string 119 SmtpName string 120 BlockstoreVariant BlockstoreVariant 121 } 122 123 type CustomValidator struct { ··· 350 SmtpName: args.SmtpName, 351 SmtpEmail: args.SmtpEmail, 352 BlockstoreVariant: args.BlockstoreVariant, 353 }, 354 evtman: events.NewEventManager(events.NewMemPersister()), 355 passport: identity.NewPassport(h, identity.NewMemCache(10_000)),
··· 75 oauthProvider *provider.Provider 76 evtman *events.EventManager 77 passport *identity.Passport 78 + fallbackProxy string 79 80 dbName string 81 s3Config *S3Config ··· 119 SmtpEmail string 120 SmtpName string 121 BlockstoreVariant BlockstoreVariant 122 + FallbackProxy string 123 } 124 125 type CustomValidator struct { ··· 352 SmtpName: args.SmtpName, 353 SmtpEmail: args.SmtpEmail, 354 BlockstoreVariant: args.BlockstoreVariant, 355 + FallbackProxy: args.FallbackProxy, 356 }, 357 evtman: events.NewEventManager(events.NewMemPersister()), 358 passport: identity.NewPassport(h, identity.NewMemCache(10_000)),