Compare commits

...

3 Commits

Author SHA1 Message Date
chenjia404
be53042f6d 添加中继连接 2025-07-26 10:52:56 +08:00
陈佳
ed0248b06f Merge pull request #73 from chenjia404/renovate/github.com-spf13-viper-1.x
Update module github.com/spf13/viper to v1.20.1
2025-07-26 10:32:51 +08:00
renovate[bot]
f6ce075bfa Update module github.com/spf13/viper to v1.20.1 2025-06-24 08:39:24 +00:00
3 changed files with 50 additions and 6 deletions

2
go.mod
View File

@@ -10,7 +10,7 @@ require (
github.com/libp2p/go-libp2p-kad-dht v0.30.2
github.com/multiformats/go-multiaddr v0.16.0
github.com/polydawn/refmt v0.89.0
github.com/spf13/viper v1.20.0
github.com/spf13/viper v1.20.1
github.com/things-go/go-socks5 v0.0.6
)

2
go.sum
View File

@@ -725,6 +725,8 @@ github.com/spf13/viper v1.19.0 h1:RWq5SEjt8o25SROyN3z2OrDB9l7RPd3lwTWU8EcEdcI=
github.com/spf13/viper v1.19.0/go.mod h1:GQUN9bilAbhU/jgc1bKs99f/suXKeUMct8Adx5+Ntkg=
github.com/spf13/viper v1.20.0 h1:zrxIyR3RQIOsarIrgL8+sAvALXul9jeEPa06Y0Ph6vY=
github.com/spf13/viper v1.20.0/go.mod h1:P9Mdzt1zoHIG8m2eZQinpiBjo6kCmZSKBClNNqjJvu4=
github.com/spf13/viper v1.20.1 h1:ZMi+z/lvLyPSCoNtFCpqjy0S4kPbirhpTMwl8BkW9X4=
github.com/spf13/viper v1.20.1/go.mod h1:P9Mdzt1zoHIG8m2eZQinpiBjo6kCmZSKBClNNqjJvu4=
github.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME=
github.com/stretchr/objx v0.4.0/go.mod h1:YvHI0jy2hoMjB+UWwv71VJQ9isScKT/TqJzVSSt89Yw=
github.com/stretchr/objx v0.5.0/go.mod h1:Yh+to48EsGEfYuaHDzXPcE3xhTkx73EhmCGUpEOglKo=

View File

@@ -3,10 +3,11 @@ package p2p
import (
"context"
"fmt"
libp2ptls "github.com/libp2p/go-libp2p/p2p/security/tls"
"log"
"time"
libp2ptls "github.com/libp2p/go-libp2p/p2p/security/tls"
"github.com/libp2p/go-libp2p"
dht "github.com/libp2p/go-libp2p-kad-dht"
"github.com/libp2p/go-libp2p/core/crypto"
@@ -17,10 +18,42 @@ import (
routing2 "github.com/libp2p/go-libp2p/p2p/discovery/routing"
"github.com/libp2p/go-libp2p/p2p/net/connmgr"
"github.com/libp2p/go-libp2p/p2p/security/noise"
"github.com/multiformats/go-multiaddr"
)
var d *dht.IpfsDHT
// 已知的中繼節點列表(可以根據需要添加更多)
var knownRelayPeers = []string{
"/dnsaddr/bootstrap.libp2p.io/p2p/QmNnooDu7bfjPFoTZYxMNLWUQJyrVwtbZg5gBMjTezGAJN",
"/dnsaddr/bootstrap.libp2p.io/p2p/QmQCU2EcMqAqQPR2i9bChDtGNJchTbq5TbXJJ16u19uLTa",
"/dnsaddr/bootstrap.libp2p.io/p2p/QmbLHAnMoJPWSCR5Zhtx6BHJX9KiKNN6tpvbUcqanj75Nb",
}
// connectToRelayPeers 連接到已知的中繼節點
func connectToRelayPeers(ctx context.Context, h host.Host) {
for _, relayAddrStr := range knownRelayPeers {
relayAddr, err := multiaddr.NewMultiaddr(relayAddrStr)
if err != nil {
log.Printf("解析中繼節點地址失敗: %v", err)
continue
}
pi, err := peer.AddrInfoFromP2pAddr(relayAddr)
if err != nil {
log.Printf("解析中繼節點地址失敗: %v", err)
continue
}
err = h.Connect(ctx, *pi)
if err != nil {
log.Printf("連接中繼節點失敗 %s: %v", pi.ID, err)
} else {
log.Printf("成功連接到中繼節點: %s", pi.ID)
}
}
}
func CreateLibp2pHost(ctx context.Context, priv crypto.PrivKey, p2pPort int, maxPeers int, nodisc bool, Protocol string) (host.Host, error) {
connmgr_, _ := connmgr.NewConnManager(
@@ -61,10 +94,16 @@ func CreateLibp2pHost(ctx context.Context, priv crypto.PrivKey, p2pPort int, max
libp2p.NATPortMap(),
libp2p.EnableRelay(),
libp2p.EnableNATService(),
libp2p.EnableRelayService(),
libp2p.ForceReachabilityPublic(),
// 中繼功能配置
libp2p.EnableRelay(), // 啟用中繼功能
libp2p.EnableNATService(), // 啟用 NAT 服務
libp2p.EnableRelayService(), // 啟用中繼服務
libp2p.ForceReachabilityPublic(), // 強制設為公網可達
// 可選:更細緻的中繼配置
// libp2p.EnableRelayWithHopLimit(3), // 限制中繼跳數
// libp2p.EnableRelayWithResourceManager(), // 啟用資源管理
libp2p.DefaultPeerstore,
libp2p.Routing(func(h host.Host) (routing.PeerRouting, error) {
@@ -89,6 +128,9 @@ func CreateLibp2pHost(ctx context.Context, priv crypto.PrivKey, p2pPort int, max
h.Connect(ctx, *pi)
}
// 連接到已知的中繼節點
go connectToRelayPeers(ctx, h)
if !nodisc {
_, h2, err2 := nodeDiscovery(ctx, h, Protocol)
if err2 != nil {