mirror of
https://gitlab.com/pulsechaincom/prysm-pulse.git
synced 2024-12-25 04:47:18 +00:00
d77c298ec6
* jwt access token impl * use secret or jwt * rename * separate method for splitting auth * usage update * Update beacon-chain/flags/base.go Co-authored-by: Radosław Kapka <rkapka@wp.pl> * Update beacon-chain/node/node.go Co-authored-by: Radosław Kapka <rkapka@wp.pl> * make things work * removed unused code * better, more flexible authorization * move types and function to proper packages * fix checking if endpoint is not set * fix existing tests * rename Endpoint field to Url * Tests for HttpEndpoint * better bearer auth * tests for endpoint utils * fix endpoint registration * fix test build * move endpoint parsing to powchain * Revert "fix existing tests" This reverts commit ceab192e6a78c106cf4e16a1bdf5399752a39890. * fix field name in tests * gzl * add httputils dependency * remove httputils dependency * fix compilation issue in blockchain service test * correct endpoint fallback function and tests * gzl * remove pointer from currHttpEndpoint * allow whitespace in auth string * endpoint equality * correct one auth data Equals test case * remove pointer receiver Co-authored-by: Radosław Kapka <rkapka@wp.pl> Co-authored-by: Raul Jordan <raul@prysmaticlabs.com>
50 lines
1.7 KiB
Go
50 lines
1.7 KiB
Go
package powchain
|
|
|
|
import (
|
|
"encoding/base64"
|
|
"strings"
|
|
|
|
"github.com/prysmaticlabs/prysm/shared/httputils"
|
|
"github.com/prysmaticlabs/prysm/shared/httputils/authorizationmethod"
|
|
)
|
|
|
|
// HttpEndpoint extracts an httputils.Endpoint from the provider parameter.
|
|
func HttpEndpoint(eth1Provider string) httputils.Endpoint {
|
|
endpoint := httputils.Endpoint{
|
|
Url: "",
|
|
Auth: httputils.AuthorizationData{
|
|
Method: authorizationmethod.None,
|
|
Value: "",
|
|
}}
|
|
|
|
authValues := strings.Split(eth1Provider, ",")
|
|
endpoint.Url = strings.TrimSpace(authValues[0])
|
|
if len(authValues) > 2 {
|
|
log.Errorf(
|
|
"ETH1 endpoint string can contain one comma for specifying the authorization header to access the provider."+
|
|
" String contains too many commas: %d. Skipping authorization.", len(authValues)-1)
|
|
} else if len(authValues) == 2 {
|
|
switch httputils.Method(strings.TrimSpace(authValues[1])) {
|
|
case authorizationmethod.Basic:
|
|
basicAuthValues := strings.Split(strings.TrimSpace(authValues[1]), " ")
|
|
if len(basicAuthValues) != 2 {
|
|
log.Errorf("Basic Authentication has incorrect format. Skipping authorization.")
|
|
} else {
|
|
endpoint.Auth.Method = authorizationmethod.Basic
|
|
endpoint.Auth.Value = base64.StdEncoding.EncodeToString([]byte(basicAuthValues[1]))
|
|
}
|
|
case authorizationmethod.Bearer:
|
|
bearerAuthValues := strings.Split(strings.TrimSpace(authValues[1]), " ")
|
|
if len(bearerAuthValues) != 2 {
|
|
log.Errorf("Bearer Authentication has incorrect format. Skipping authorization.")
|
|
} else {
|
|
endpoint.Auth.Method = authorizationmethod.Bearer
|
|
endpoint.Auth.Value = bearerAuthValues[1]
|
|
}
|
|
case authorizationmethod.None:
|
|
log.Errorf("Authorization has incorrect format or authorization type is not supported.")
|
|
}
|
|
}
|
|
return endpoint
|
|
}
|