···
secp256k1secec "gitlab.com/yawning/secp256k1-voi/secec"
20
-
func (s *Server) handleProxy(e echo.Context) error {
21
-
repo, isAuthed := e.Get("repo").(*models.RepoActor)
23
-
pts := strings.Split(e.Request().URL.Path, "/")
25
-
return fmt.Errorf("incorrect number of parts")
20
+
func (s *Server) getAtprotoProxyEndpointFromRequest(e echo.Context) (string, string, error) {
svc := e.Request().Header.Get("atproto-proxy")
svc = s.config.DefaultAtprotoProxy
···
svcPts := strings.Split(svc, "#")
35
-
return fmt.Errorf("invalid service header")
28
+
return "", "", fmt.Errorf("invalid service header")
···
doc, err := s.passport.FetchDoc(e.Request().Context(), svcDid)
···
46
+
return endpoint, "", nil
49
+
func (s *Server) handleProxy(e echo.Context) error {
50
+
lgr := s.logger.With("handler", "handleProxy")
52
+
repo, isAuthed := e.Get("repo").(*models.RepoActor)
54
+
pts := strings.Split(e.Request().URL.Path, "/")
56
+
return fmt.Errorf("incorrect number of parts")
59
+
endpoint, svcDid, err := s.getAtprotoProxyEndpointFromRequest(e)
61
+
lgr.Error("could not get atproto proxy", "error", err)
62
+
return helpers.ServerError(e, nil)
requrl := e.Request().URL
requrl.Host = strings.TrimPrefix(endpoint, "https://")
···
hj, err := json.Marshal(header)
81
-
s.logger.Error("error marshaling header", "error", err)
93
+
lgr.Error("error marshaling header", "error", err)
return helpers.ServerError(e, nil)
···
pj, err := json.Marshal(payload)
96
-
s.logger.Error("error marashaling payload", "error", err)
108
+
lgr.Error("error marashaling payload", "error", err)
return helpers.ServerError(e, nil)
···
sk, err := secp256k1secec.NewPrivateKey(repo.SigningKey)
107
-
s.logger.Error("can't load private key", "error", err)
119
+
lgr.Error("can't load private key", "error", err)
R, S, _, err := sk.SignRaw(rand.Reader, hash[:])
113
-
s.logger.Error("error signing", "error", err)
125
+
lgr.Error("error signing", "error", err)