Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Feat/allow unit entry #17

Open
wants to merge 5 commits into
base: master
Choose a base branch
from
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion .github/workflows/go_basic.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -69,7 +69,7 @@ jobs:

- name: Lint
run: |
curl -sSfL https://raw.githubusercontent.com/golangci/golangci-lint/master/install.sh | sh -s -- -b $(go env GOPATH)/bin v1.50.0
go install github.com/golangci/golangci-lint/cmd/golangci-lint@v1.50.0
make lint

- name: Detect changes
Expand Down
16 changes: 7 additions & 9 deletions .github/workflows/lint_and _build.yml
Original file line number Diff line number Diff line change
Expand Up @@ -60,7 +60,13 @@ jobs:
echo github.ref_name = ${{github.ref_name}}
echo vars.job_url = ${{steps.vars.outputs.job_url}}


- name: Build
run: |
go clean --modcache && make
mkdir ./release
mkdir ./release/dashboard
mv ./venus-tool ./release
mv ./dashboard/build ./release/dashboard

- name: install deps
run: sudo apt-get -o Acquire::Retries=3 update && sudo apt-get -o Acquire::Retries=3 install make ftp git bzr curl wget hwloc libhwloc-dev mesa-opencl-icd ocl-icd-opencl-dev -y
Expand All @@ -76,14 +82,6 @@ jobs:
git status --porcelain
test -z "$(git status --porcelain)"

- name: Build
run: |
go clean --modcache && make
mkdir ./release
mkdir ./release/dashboard
mv ./venus-tool ./release
mv ./dashboard/build ./release/dashboard

- name: Zip Release
uses: TheDoctor0/[email protected]
with:
Expand Down
3 changes: 2 additions & 1 deletion Makefile
Original file line number Diff line number Diff line change
Expand Up @@ -21,7 +21,8 @@ gen:
@go generate ./...

lint: $(deps)
@golangci-lint run
@golangci-lint --version
golangci-lint run --timeout 10m

test:
@go test -race ./...
Expand Down
45 changes: 29 additions & 16 deletions cmd/main.go
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,7 @@ package main

import (
"context"
"encoding/json"
"errors"
"fmt"
"net/http"
Expand Down Expand Up @@ -169,33 +170,40 @@ var runCmd = &cli.Command{
}
}

b, err := json.MarshalIndent(cfg, "", " ")
if err != nil {
return err
}
fmt.Printf("config: \n %s \n ", string(b))
log.Infof("config: \n %s \n ", string(b))

// todo replace it with stub
if cfg.MessagerAPI.Addr == "" {
if cfg.GetMessagerAPI().Addr == "" {
return errors.New("messager api url is empty")
}
if cfg.MarketAPI.Addr == "" {
if cfg.GetMarketAPI().Addr == "" {
return errors.New("market api url is empty")
}
if cfg.NodeAPI.Addr == "" {
if cfg.GetNodeAPI().Addr == "" {
return errors.New("node api url is empty")
}
if cfg.WalletAPI.Addr == "" {
return errors.New("wallet api url is empty")
}

msgClient, msgCloser, err := msgApi.DialIMessagerRPC(ctx, cfg.MessagerAPI.Addr, cfg.MessagerAPI.Token, nil)
msgClient, msgCloser, err := msgApi.DialIMessagerRPC(ctx, cfg.GetMessagerAPI().Addr, cfg.GetMessagerAPI().Token, nil)
if err != nil {
return err
}
defer msgCloser()

marketClient, marketCloser, err := marketApi.DialIMarketRPC(ctx, cfg.MarketAPI.Addr, cfg.MarketAPI.Token, nil)
marketClient, marketCloser, err := marketApi.DialIMarketRPC(ctx, cfg.GetMarketAPI().Addr, cfg.GetMarketAPI().Token, nil)
if err != nil {
return err
}
defer marketCloser()

nodeClient, nodeCloser, err := nodeApi.DialFullNodeRPC(ctx, cfg.NodeAPI.Addr, cfg.NodeAPI.Token, nil)
nodeClient, nodeCloser, err := nodeApi.DialFullNodeRPC(ctx, cfg.GetNodeAPI().Addr, cfg.GetNodeAPI().Token, nil)
if err != nil {
return err
}
Expand Down Expand Up @@ -262,7 +270,10 @@ func updateFlag(cfg *config.Config, ctx *cli.Context) {
cfg.Server.BoardPath = boardPath
// todo: parse relative path to absolute path

updateApi := func(apiStr string, apiCfg *config.APIInfo) {
updateApi := func(apiStr string, apiCfg *config.APIInfo) *config.APIInfo {
if apiCfg == nil {
apiCfg = &config.APIInfo{}
}
addr, token := utils.ParseAPI(apiStr)
if addr != "" {
apiCfg.Addr = addr
Expand All @@ -272,30 +283,32 @@ func updateFlag(cfg *config.Config, ctx *cli.Context) {
} else if commonToken != "" {
apiCfg.Token = commonToken
}

return apiCfg
}

if ctx.IsSet(flagListen.Name) {
cfg.Server.ListenAddr = ctx.String(flagListen.Name)
}
if ctx.IsSet(flagNodeAPI.Name) {
updateApi(ctx.String(flagNodeAPI.Name), &cfg.NodeAPI)
cfg.NodeAPI = updateApi(ctx.String(flagNodeAPI.Name), cfg.NodeAPI)
}
if ctx.IsSet(flagMsgAPI.Name) {
updateApi(ctx.String(flagMsgAPI.Name), &cfg.MessagerAPI)
cfg.MessagerAPI = updateApi(ctx.String(flagMsgAPI.Name), cfg.MessagerAPI)
}
if ctx.IsSet(flagMarketAPI.Name) {
updateApi(ctx.String(flagMarketAPI.Name), &cfg.MarketAPI)
cfg.MarketAPI = updateApi(ctx.String(flagMarketAPI.Name), cfg.MarketAPI)
}
if ctx.IsSet(flagAuthAPI.Name) {
cfg.AuthAPI = updateApi(ctx.String(flagAuthAPI.Name), cfg.AuthAPI)
}
if ctx.IsSet(flagMinerAPI.Name) {
cfg.MinerAPI = updateApi(ctx.String(flagMinerAPI.Name), cfg.MinerAPI)
}
if ctx.IsSet(flagWalletAPI.Name) {
updateApi(ctx.String(flagWalletAPI.Name), &cfg.WalletAPI)
}
if ctx.IsSet(flagAuthAPI.Name) {
updateApi(ctx.String(flagAuthAPI.Name), &cfg.AuthAPI)
}
if ctx.IsSet(flagDamoclesAPI.Name) {
updateApi(ctx.String(flagDamoclesAPI.Name), &cfg.DamoclesAPI)
}
if ctx.IsSet(flagMinerAPI.Name) {
updateApi(ctx.String(flagMinerAPI.Name), &cfg.MinerAPI)
}
}
11 changes: 9 additions & 2 deletions dep/auth.go
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,7 @@ import (

"github.com/ipfs-force-community/sophon-auth/jwtclient"
"github.com/ipfs-force-community/venus-tool/repo/config"
"github.com/ipfs-force-community/venus-tool/utils"
)

type IAuth interface {
Expand All @@ -23,12 +24,18 @@ func (a *auth) GetUserName(ctx context.Context) (string, error) {
}

func NewAuth(ctx context.Context, cfg *config.Config) (IAuth, error) {
jwt, err := jwtclient.NewAuthClient(cfg.AuthAPI.Addr, cfg.AuthAPI.Token)
// todo parse url from multiaddr
authToken := cfg.GetAuthAPI().Token
authAddr, err := utils.ParseAddr(cfg.GetAuthAPI().Addr)
if err != nil {
return nil, err
}
jwt, err := jwtclient.NewAuthClient(authAddr, authToken)
if err != nil {
return nil, err
}

playLoad, err := jwt.Verify(ctx, cfg.AuthAPI.Token)
playLoad, err := jwt.Verify(ctx, authToken)
if err != nil {
return nil, err
}
Expand Down
4 changes: 2 additions & 2 deletions dep/miner.go
Original file line number Diff line number Diff line change
Expand Up @@ -13,12 +13,12 @@ import (
type Miner api.MinerAPI

func NewMiner(ctx context.Context, lc fx.Lifecycle, cfg *config.Config) (Miner, error) {
entryPoint, err := cfg.MinerAPI.DialArgs("v0")
entryPoint, err := cfg.GetMinerAPI().DialArgs("v0")
if err != nil {
return nil, err
}

header := cfg.MinerAPI.AuthHeader()
header := cfg.GetMinerAPI().AuthHeader()
if header == nil {
return nil, fmt.Errorf("gen auth header fail")
}
Expand Down
4 changes: 2 additions & 2 deletions go.mod
Original file line number Diff line number Diff line change
Expand Up @@ -16,9 +16,9 @@ require (
github.com/gin-gonic/gin v1.9.1
github.com/go-resty/resty/v2 v2.4.0
github.com/ipfs-force-community/droplet/v2 v2.8.1
github.com/ipfs-force-community/sophon-auth v1.12.0
github.com/ipfs-force-community/sophon-auth v1.12.1-0.20230801033929-4ecc519befff
github.com/ipfs-force-community/sophon-messager v1.12.1-0.20230707095736-298517fc64df
github.com/ipfs-force-community/sophon-miner v1.12.0-rc2.0.20230717111652-ad92aac6bb9f
github.com/ipfs-force-community/sophon-miner v1.12.1-0.20230801052317-e5fd969af458
github.com/ipfs-force-community/venus-common-utils v0.0.0-20220217030526-e5e4c6bc14f7
github.com/ipfs/go-cid v0.4.1
github.com/ipfs/go-ipld-cbor v0.0.6
Expand Down
8 changes: 4 additions & 4 deletions go.sum
Original file line number Diff line number Diff line change
Expand Up @@ -885,12 +885,12 @@ github.com/ipfs-force-community/go-jsonrpc v0.1.7-0.20230214070559-dbe74781184a/
github.com/ipfs-force-community/metrics v1.0.1-0.20211022060227-11142a08b729/go.mod h1:mn40SioMuKtjmRumHFy/fJ26Pn028XuDjUJE9dorjyw=
github.com/ipfs-force-community/metrics v1.0.1-0.20230626064437-eed34cb166f5 h1:fn4G/yeHNX4rVdHH/KELwxjcnbx5327hQBw4eXs5TEI=
github.com/ipfs-force-community/metrics v1.0.1-0.20230626064437-eed34cb166f5/go.mod h1:yi9gw+y+UjzWjaYZG2xgnH0T6PcmwHRKhDkbylp9qxc=
github.com/ipfs-force-community/sophon-auth v1.12.0 h1:nqjsA6bIv9Rd9+7lHxGDvNJ7gvt/M2yGSxymA6AoxXI=
github.com/ipfs-force-community/sophon-auth v1.12.0/go.mod h1:cGYCfjA/BDB/Km9P7Za6t1hmwpFlPKf8ho/CHmLG81Y=
github.com/ipfs-force-community/sophon-auth v1.12.1-0.20230801033929-4ecc519befff h1:RxXJdvvvKvdKqKBwOScQjPgmgOV9RjyEDJWnkl3kPVM=
github.com/ipfs-force-community/sophon-auth v1.12.1-0.20230801033929-4ecc519befff/go.mod h1:+S04oHCcJS6hylIv1kb74mA/m7qe41m6Py1hTFLM6rE=
github.com/ipfs-force-community/sophon-messager v1.12.1-0.20230707095736-298517fc64df h1:mlMjq8bKt6VRr3rrS5qWlWngzRB0GjRkQoA1LaoYrs4=
github.com/ipfs-force-community/sophon-messager v1.12.1-0.20230707095736-298517fc64df/go.mod h1:Vo9VnDwYJmVFaWrHtFPCiZNxFWqWQFgucQcmA3hA+VU=
github.com/ipfs-force-community/sophon-miner v1.12.0-rc2.0.20230717111652-ad92aac6bb9f h1:4D82HctbOn3MOejFn/3QzMG1XNh9UKe4HIsrMNDctZA=
github.com/ipfs-force-community/sophon-miner v1.12.0-rc2.0.20230717111652-ad92aac6bb9f/go.mod h1:BuBUfQjf4SFsYvILrt93m0VzUwukDZRJDq8//p6S9SE=
github.com/ipfs-force-community/sophon-miner v1.12.1-0.20230801052317-e5fd969af458 h1:z4epgSSnePGC8C9Vziq9OdNek485Nn65MO7+1DJeO08=
github.com/ipfs-force-community/sophon-miner v1.12.1-0.20230801052317-e5fd969af458/go.mod h1:4VUzN+b0sT7Zq2sThDSj58SIdm01lNysr2EIjHnrFU4=
github.com/ipfs-force-community/venus-cluster-assets v0.1.0 h1:K/0+OV9Jm7HjSa7O9MAtgfLDIudQYZUTymhJsp8rGXg=
github.com/ipfs-force-community/venus-cluster-assets v0.1.0/go.mod h1:ZHXQBvLbsmZrG9Zccpqn6Oba2Q/+cRm3RsHj/SRYSwg=
github.com/ipfs-force-community/venus-common-utils v0.0.0-20220217030526-e5e4c6bc14f7 h1:v/1/INcqm3kHLauWQYB63MwWJRWGz+3WEuUPp0jzIl8=
Expand Down
74 changes: 67 additions & 7 deletions repo/config/config.go
Original file line number Diff line number Diff line change
Expand Up @@ -12,15 +12,75 @@ import (
)

type Config struct {
Path string `toml:"-"`
Server ServerConfig
NodeAPI APIInfo
MessagerAPI APIInfo
MarketAPI APIInfo
Path string `toml:"-"`
Server ServerConfig

ChainService *APIInfo

NodeAPI *APIInfo
MessagerAPI *APIInfo
MarketAPI *APIInfo
AuthAPI *APIInfo
MinerAPI *APIInfo

WalletAPI APIInfo
AuthAPI APIInfo
DamoclesAPI APIInfo
MinerAPI APIInfo
}

func mergeAPIInfo(prior, alternative *APIInfo) *APIInfo {
if prior == nil {
return alternative
}
if alternative == nil {
return prior
}
if prior.Addr == "" {
prior.Addr = alternative.Addr
}
if prior.Token == "" {
prior.Token = alternative.Token
}
return prior
}

func (c Config) GetNodeAPI() APIInfo {
p := mergeAPIInfo(c.NodeAPI, c.ChainService)
if p == nil {
return APIInfo{}
}
return *p
}

func (c Config) GetMessagerAPI() APIInfo {
p := mergeAPIInfo(c.MessagerAPI, c.ChainService)
if p == nil {
return APIInfo{}
}
return *p
}

func (c Config) GetMarketAPI() APIInfo {
p := mergeAPIInfo(c.MarketAPI, c.ChainService)
if p == nil {
return APIInfo{}
}
return *p
}

func (c Config) GetAuthAPI() APIInfo {
p := mergeAPIInfo(c.AuthAPI, c.ChainService)
if p == nil {
return APIInfo{}
}
return *p
}

func (c Config) GetMinerAPI() APIInfo {
p := mergeAPIInfo(c.MinerAPI, c.ChainService)
if p == nil {
return APIInfo{}
}
return *p
}

type ServerConfig struct {
Expand Down
52 changes: 52 additions & 0 deletions utils/utils.go
Original file line number Diff line number Diff line change
Expand Up @@ -3,11 +3,14 @@ package utils
import (
"context"
"fmt"
"net/url"

"github.com/filecoin-project/go-state-types/abi"
"github.com/filecoin-project/venus/venus-shared/types"
"github.com/filecoin-project/venus/venus-shared/utils"
"github.com/ipfs/go-cid"
"github.com/multiformats/go-multiaddr"
maNet "github.com/multiformats/go-multiaddr/net"
)

type networkNameKeeper struct {
Expand All @@ -30,3 +33,52 @@ func GetMethodMeta(actorCode cid.Cid, method abi.MethodNum) (utils.MethodMeta, e
}
return methodMeta, nil
}

// ParseAddr parse a multi addr to a traditional url ( with http scheme as default)
func ParseAddr(addr string) (string, error) {
ret := addr
ma, err := multiaddr.NewMultiaddr(addr)
if err == nil {
_, addr, err := maNet.DialArgs(ma)
if err != nil {
return "", fmt.Errorf("parser libp2p url fail %w", err)
}

ret = "http://" + addr

_, err = ma.ValueForProtocol(multiaddr.P_WSS)
if err == nil {
ret = "wss://" + addr
} else if err != multiaddr.ErrProtocolNotFound {
return "", err
}

_, err = ma.ValueForProtocol(multiaddr.P_HTTPS)
if err == nil {
ret = "https://" + addr
} else if err != multiaddr.ErrProtocolNotFound {
return "", err
}

_, err = ma.ValueForProtocol(multiaddr.P_WS)
if err == nil {
ret = "ws://" + addr
} else if err != multiaddr.ErrProtocolNotFound {
return "", err
}

_, err = ma.ValueForProtocol(multiaddr.P_HTTP)
if err == nil {
ret = "http://" + addr
} else if err != multiaddr.ErrProtocolNotFound {
return "", err
}
}

_, err = url.Parse(ret)
if err != nil {
return "", fmt.Errorf("parser address fail %w", err)
}

return ret, nil
}