Skip to content

Commit 9925843

Browse files
committed
feat: add unit entry
1 parent 106e2d3 commit 9925843

File tree

7 files changed

+130
-28
lines changed

7 files changed

+130
-28
lines changed

cmd/main.go

+14-11
Original file line numberDiff line numberDiff line change
@@ -170,32 +170,32 @@ var runCmd = &cli.Command{
170170
}
171171

172172
// todo replace it with stub
173-
if cfg.MessagerAPI.Addr == "" {
173+
if cfg.GetMessagerAPI().Addr == "" {
174174
return errors.New("messager api url is empty")
175175
}
176-
if cfg.MarketAPI.Addr == "" {
176+
if cfg.GetMarketAPI().Addr == "" {
177177
return errors.New("market api url is empty")
178178
}
179-
if cfg.NodeAPI.Addr == "" {
179+
if cfg.GetNodeAPI().Addr == "" {
180180
return errors.New("node api url is empty")
181181
}
182182
if cfg.WalletAPI.Addr == "" {
183183
return errors.New("wallet api url is empty")
184184
}
185185

186-
msgClient, msgCloser, err := msgApi.DialIMessagerRPC(ctx, cfg.MessagerAPI.Addr, cfg.MessagerAPI.Token, nil)
186+
msgClient, msgCloser, err := msgApi.DialIMessagerRPC(ctx, cfg.GetMessagerAPI().Addr, cfg.GetMessagerAPI().Token, nil)
187187
if err != nil {
188188
return err
189189
}
190190
defer msgCloser()
191191

192-
marketClient, marketCloser, err := marketApi.DialIMarketRPC(ctx, cfg.MarketAPI.Addr, cfg.MarketAPI.Token, nil)
192+
marketClient, marketCloser, err := marketApi.DialIMarketRPC(ctx, cfg.GetMarketAPI().Addr, cfg.GetMarketAPI().Token, nil)
193193
if err != nil {
194194
return err
195195
}
196196
defer marketCloser()
197197

198-
nodeClient, nodeCloser, err := nodeApi.DialFullNodeRPC(ctx, cfg.NodeAPI.Addr, cfg.NodeAPI.Token, nil)
198+
nodeClient, nodeCloser, err := nodeApi.DialFullNodeRPC(ctx, cfg.GetNodeAPI().Addr, cfg.GetNodeAPI().Token, nil)
199199
if err != nil {
200200
return err
201201
}
@@ -263,6 +263,9 @@ func updateFlag(cfg *config.Config, ctx *cli.Context) {
263263
// todo: parse relative path to absolute path
264264

265265
updateApi := func(apiStr string, apiCfg *config.APIInfo) {
266+
if apiCfg == nil {
267+
apiCfg = &config.APIInfo{}
268+
}
266269
addr, token := utils.ParseAPI(apiStr)
267270
if addr != "" {
268271
apiCfg.Addr = addr
@@ -278,24 +281,24 @@ func updateFlag(cfg *config.Config, ctx *cli.Context) {
278281
cfg.Server.ListenAddr = ctx.String(flagListen.Name)
279282
}
280283
if ctx.IsSet(flagNodeAPI.Name) {
281-
updateApi(ctx.String(flagNodeAPI.Name), &cfg.NodeAPI)
284+
updateApi(ctx.String(flagNodeAPI.Name), cfg.NodeAPI)
282285
}
283286
if ctx.IsSet(flagMsgAPI.Name) {
284-
updateApi(ctx.String(flagMsgAPI.Name), &cfg.MessagerAPI)
287+
updateApi(ctx.String(flagMsgAPI.Name), cfg.MessagerAPI)
285288
}
286289
if ctx.IsSet(flagMarketAPI.Name) {
287-
updateApi(ctx.String(flagMarketAPI.Name), &cfg.MarketAPI)
290+
updateApi(ctx.String(flagMarketAPI.Name), cfg.MarketAPI)
288291
}
289292
if ctx.IsSet(flagWalletAPI.Name) {
290293
updateApi(ctx.String(flagWalletAPI.Name), &cfg.WalletAPI)
291294
}
292295
if ctx.IsSet(flagAuthAPI.Name) {
293-
updateApi(ctx.String(flagAuthAPI.Name), &cfg.AuthAPI)
296+
updateApi(ctx.String(flagAuthAPI.Name), cfg.AuthAPI)
294297
}
295298
if ctx.IsSet(flagDamoclesAPI.Name) {
296299
updateApi(ctx.String(flagDamoclesAPI.Name), &cfg.DamoclesAPI)
297300
}
298301
if ctx.IsSet(flagMinerAPI.Name) {
299-
updateApi(ctx.String(flagMinerAPI.Name), &cfg.MinerAPI)
302+
updateApi(ctx.String(flagMinerAPI.Name), cfg.MinerAPI)
300303
}
301304
}

dep/auth.go

+9-2
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@ import (
66

77
"github.com/ipfs-force-community/sophon-auth/jwtclient"
88
"github.com/ipfs-force-community/venus-tool/repo/config"
9+
"github.com/ipfs-force-community/venus-tool/utils"
910
)
1011

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

2526
func NewAuth(ctx context.Context, cfg *config.Config) (IAuth, error) {
26-
jwt, err := jwtclient.NewAuthClient(cfg.AuthAPI.Addr, cfg.AuthAPI.Token)
27+
// todo parse url from multiaddr
28+
authToken := cfg.GetAuthAPI().Token
29+
authAddr, err := utils.ParseAddr(cfg.GetAuthAPI().Addr)
30+
if err != nil {
31+
return nil, err
32+
}
33+
jwt, err := jwtclient.NewAuthClient(authAddr, authToken)
2734
if err != nil {
2835
return nil, err
2936
}
3037

31-
playLoad, err := jwt.Verify(ctx, cfg.AuthAPI.Token)
38+
playLoad, err := jwt.Verify(ctx, authToken)
3239
if err != nil {
3340
return nil, err
3441
}

dep/miner.go

+2-2
Original file line numberDiff line numberDiff line change
@@ -13,12 +13,12 @@ import (
1313
type Miner api.MinerAPI
1414

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

21-
header := cfg.MinerAPI.AuthHeader()
21+
header := cfg.GetMinerAPI().AuthHeader()
2222
if header == nil {
2323
return nil, fmt.Errorf("gen auth header fail")
2424
}

go.mod

+2-2
Original file line numberDiff line numberDiff line change
@@ -16,9 +16,9 @@ require (
1616
github.com/gin-gonic/gin v1.9.1
1717
github.com/go-resty/resty/v2 v2.4.0
1818
github.com/ipfs-force-community/droplet/v2 v2.8.1
19-
github.com/ipfs-force-community/sophon-auth v1.12.0
19+
github.com/ipfs-force-community/sophon-auth v1.12.1-0.20230801033929-4ecc519befff
2020
github.com/ipfs-force-community/sophon-messager v1.12.1-0.20230707095736-298517fc64df
21-
github.com/ipfs-force-community/sophon-miner v1.12.0-rc2.0.20230717111652-ad92aac6bb9f
21+
github.com/ipfs-force-community/sophon-miner v1.12.1-0.20230801052317-e5fd969af458
2222
github.com/ipfs-force-community/venus-common-utils v0.0.0-20220217030526-e5e4c6bc14f7
2323
github.com/ipfs/go-cid v0.4.1
2424
github.com/ipfs/go-ipld-cbor v0.0.6

go.sum

+4-4
Original file line numberDiff line numberDiff line change
@@ -885,12 +885,12 @@ github.com/ipfs-force-community/go-jsonrpc v0.1.7-0.20230214070559-dbe74781184a/
885885
github.com/ipfs-force-community/metrics v1.0.1-0.20211022060227-11142a08b729/go.mod h1:mn40SioMuKtjmRumHFy/fJ26Pn028XuDjUJE9dorjyw=
886886
github.com/ipfs-force-community/metrics v1.0.1-0.20230626064437-eed34cb166f5 h1:fn4G/yeHNX4rVdHH/KELwxjcnbx5327hQBw4eXs5TEI=
887887
github.com/ipfs-force-community/metrics v1.0.1-0.20230626064437-eed34cb166f5/go.mod h1:yi9gw+y+UjzWjaYZG2xgnH0T6PcmwHRKhDkbylp9qxc=
888-
github.com/ipfs-force-community/sophon-auth v1.12.0 h1:nqjsA6bIv9Rd9+7lHxGDvNJ7gvt/M2yGSxymA6AoxXI=
889-
github.com/ipfs-force-community/sophon-auth v1.12.0/go.mod h1:cGYCfjA/BDB/Km9P7Za6t1hmwpFlPKf8ho/CHmLG81Y=
888+
github.com/ipfs-force-community/sophon-auth v1.12.1-0.20230801033929-4ecc519befff h1:RxXJdvvvKvdKqKBwOScQjPgmgOV9RjyEDJWnkl3kPVM=
889+
github.com/ipfs-force-community/sophon-auth v1.12.1-0.20230801033929-4ecc519befff/go.mod h1:+S04oHCcJS6hylIv1kb74mA/m7qe41m6Py1hTFLM6rE=
890890
github.com/ipfs-force-community/sophon-messager v1.12.1-0.20230707095736-298517fc64df h1:mlMjq8bKt6VRr3rrS5qWlWngzRB0GjRkQoA1LaoYrs4=
891891
github.com/ipfs-force-community/sophon-messager v1.12.1-0.20230707095736-298517fc64df/go.mod h1:Vo9VnDwYJmVFaWrHtFPCiZNxFWqWQFgucQcmA3hA+VU=
892-
github.com/ipfs-force-community/sophon-miner v1.12.0-rc2.0.20230717111652-ad92aac6bb9f h1:4D82HctbOn3MOejFn/3QzMG1XNh9UKe4HIsrMNDctZA=
893-
github.com/ipfs-force-community/sophon-miner v1.12.0-rc2.0.20230717111652-ad92aac6bb9f/go.mod h1:BuBUfQjf4SFsYvILrt93m0VzUwukDZRJDq8//p6S9SE=
892+
github.com/ipfs-force-community/sophon-miner v1.12.1-0.20230801052317-e5fd969af458 h1:z4epgSSnePGC8C9Vziq9OdNek485Nn65MO7+1DJeO08=
893+
github.com/ipfs-force-community/sophon-miner v1.12.1-0.20230801052317-e5fd969af458/go.mod h1:4VUzN+b0sT7Zq2sThDSj58SIdm01lNysr2EIjHnrFU4=
894894
github.com/ipfs-force-community/venus-cluster-assets v0.1.0 h1:K/0+OV9Jm7HjSa7O9MAtgfLDIudQYZUTymhJsp8rGXg=
895895
github.com/ipfs-force-community/venus-cluster-assets v0.1.0/go.mod h1:ZHXQBvLbsmZrG9Zccpqn6Oba2Q/+cRm3RsHj/SRYSwg=
896896
github.com/ipfs-force-community/venus-common-utils v0.0.0-20220217030526-e5e4c6bc14f7 h1:v/1/INcqm3kHLauWQYB63MwWJRWGz+3WEuUPp0jzIl8=

repo/config/config.go

+47-7
Original file line numberDiff line numberDiff line change
@@ -12,15 +12,55 @@ import (
1212
)
1313

1414
type Config struct {
15-
Path string `toml:"-"`
16-
Server ServerConfig
17-
NodeAPI APIInfo
18-
MessagerAPI APIInfo
19-
MarketAPI APIInfo
15+
Path string `toml:"-"`
16+
Server ServerConfig
17+
18+
ChainService *APIInfo
19+
20+
NodeAPI *APIInfo
21+
MessagerAPI *APIInfo
22+
MarketAPI *APIInfo
23+
AuthAPI *APIInfo
24+
MinerAPI *APIInfo
25+
2026
WalletAPI APIInfo
21-
AuthAPI APIInfo
2227
DamoclesAPI APIInfo
23-
MinerAPI APIInfo
28+
}
29+
30+
func mergeAPIInfo(prior, alternative *APIInfo) *APIInfo {
31+
if prior == nil {
32+
return alternative
33+
}
34+
if alternative == nil {
35+
return prior
36+
}
37+
if prior.Addr == "" {
38+
prior.Addr = alternative.Addr
39+
}
40+
if prior.Token == "" {
41+
prior.Token = alternative.Token
42+
}
43+
return prior
44+
}
45+
46+
func (c Config) GetNodeAPI() APIInfo {
47+
return *mergeAPIInfo(c.NodeAPI, c.ChainService)
48+
}
49+
50+
func (c Config) GetMessagerAPI() APIInfo {
51+
return *mergeAPIInfo(c.MessagerAPI, c.ChainService)
52+
}
53+
54+
func (c Config) GetMarketAPI() APIInfo {
55+
return *mergeAPIInfo(c.MarketAPI, c.ChainService)
56+
}
57+
58+
func (c Config) GetAuthAPI() APIInfo {
59+
return *mergeAPIInfo(c.AuthAPI, c.ChainService)
60+
}
61+
62+
func (c Config) GetMinerAPI() APIInfo {
63+
return *mergeAPIInfo(c.MinerAPI, c.ChainService)
2464
}
2565

2666
type ServerConfig struct {

utils/utils.go

+52
Original file line numberDiff line numberDiff line change
@@ -3,11 +3,14 @@ package utils
33
import (
44
"context"
55
"fmt"
6+
"net/url"
67

78
"github.com/filecoin-project/go-state-types/abi"
89
"github.com/filecoin-project/venus/venus-shared/types"
910
"github.com/filecoin-project/venus/venus-shared/utils"
1011
"github.com/ipfs/go-cid"
12+
"github.com/multiformats/go-multiaddr"
13+
maNet "github.com/multiformats/go-multiaddr/net"
1114
)
1215

1316
type networkNameKeeper struct {
@@ -30,3 +33,52 @@ func GetMethodMeta(actorCode cid.Cid, method abi.MethodNum) (utils.MethodMeta, e
3033
}
3134
return methodMeta, nil
3235
}
36+
37+
// ParseAddr parse a multi addr to a traditional url ( with http scheme as default)
38+
func ParseAddr(addr string) (string, error) {
39+
ret := addr
40+
ma, err := multiaddr.NewMultiaddr(addr)
41+
if err == nil {
42+
_, addr, err := maNet.DialArgs(ma)
43+
if err != nil {
44+
return "", fmt.Errorf("parser libp2p url fail %w", err)
45+
}
46+
47+
ret = "http://" + addr
48+
49+
_, err = ma.ValueForProtocol(multiaddr.P_WSS)
50+
if err == nil {
51+
ret = "wss://" + addr
52+
} else if err != multiaddr.ErrProtocolNotFound {
53+
return "", err
54+
}
55+
56+
_, err = ma.ValueForProtocol(multiaddr.P_HTTPS)
57+
if err == nil {
58+
ret = "https://" + addr
59+
} else if err != multiaddr.ErrProtocolNotFound {
60+
return "", err
61+
}
62+
63+
_, err = ma.ValueForProtocol(multiaddr.P_WS)
64+
if err == nil {
65+
ret = "ws://" + addr
66+
} else if err != multiaddr.ErrProtocolNotFound {
67+
return "", err
68+
}
69+
70+
_, err = ma.ValueForProtocol(multiaddr.P_HTTP)
71+
if err == nil {
72+
ret = "http://" + addr
73+
} else if err != multiaddr.ErrProtocolNotFound {
74+
return "", err
75+
}
76+
}
77+
78+
_, err = url.Parse(ret)
79+
if err != nil {
80+
return "", fmt.Errorf("parser address fail %w", err)
81+
}
82+
83+
return ret, nil
84+
}

0 commit comments

Comments
 (0)