fix some bug

This commit is contained in:
TenderIronh
2022-05-29 15:48:56 +08:00
parent 9ea467c7b3
commit f9b5073e0d
10 changed files with 31 additions and 27 deletions
+5
View File
@@ -91,4 +91,9 @@ firewall-cmd --state
## 卸载
```
./openp2p uninstall
# 已安装时
# windows
C:\Program Files\OpenP2P\openp2p.exe uninstall
# linux,macos
sudo /usr/local/openp2p/openp2p uninstall
```
+5
View File
@@ -93,4 +93,9 @@ firewall-cmd --state
## Uninstall
```
./openp2p uninstall
# when already installed
# windows
C:\Program Files\OpenP2P\openp2p.exe uninstall
# linux,macos
sudo /usr/local/openp2p/openp2p uninstall
```
+2 -4
View File
@@ -11,8 +11,6 @@ import (
var gConf Config
const IntValueNotSet int = -99999999
type AppConfig struct {
// required
AppName string
@@ -28,7 +26,7 @@ type AppConfig struct {
peerToken uint64
peerNatType int
hasIPv4 int
IPv6 string
peerIPv6 string
hasUPNPorNATPMP int
peerIP string
peerConeNatPort int
@@ -162,7 +160,7 @@ type NetworkConfig struct {
publicIP string
natType int
hasIPv4 int
IPv6 string
publicIPv6 string // must lowwer-case not save json
hasUPNPorNATPMP int
ShareBandwidth int
// server info
+1 -1
View File
@@ -5,8 +5,8 @@ go 1.18
require (
github.com/gorilla/websocket v1.4.2
github.com/kardianos/service v1.2.0
github.com/libp2p/go-reuseport v0.2.0
github.com/lucas-clemente/quic-go v0.27.0
github.com/openp2p-cn/go-reuseport v0.3.2
golang.org/x/sys v0.0.0-20220422013727-9388b58f7150
)
+1 -1
View File
@@ -50,7 +50,7 @@ func handlePush(pn *P2PNetwork, subType uint16, msg []byte) error {
config.PeerNode = req.From
config.peerVersion = req.Version
config.fromToken = req.Token
config.IPv6 = req.IPv6
config.peerIPv6 = req.IPv6
config.hasIPv4 = req.HasIPv4
config.hasUPNPorNATPMP = req.HasUPNPorNATPMP
config.linkMode = req.LinkMode
+2 -2
View File
@@ -10,7 +10,7 @@ import (
"strings"
"time"
reuse "github.com/libp2p/go-reuseport"
reuse "github.com/openp2p-cn/go-reuseport"
)
var echoConn *net.UDPConn
@@ -22,7 +22,7 @@ func natTCP(serverHost string, serverPort int, localPort int) (publicIP string,
// Port: localPort,
// },
// }
conn, err := reuse.Dial("tcp4", fmt.Sprintf("%s:%d", "0.0.0.0", localPort), fmt.Sprintf("%s:%d", serverHost, serverPort))
conn, err := reuse.DialTimeout("tcp4", fmt.Sprintf("%s:%d", "0.0.0.0", localPort), fmt.Sprintf("%s:%d", serverHost, serverPort), time.Second*5)
// conn, err := net.Dial("tcp4", fmt.Sprintf("%s:%d", serverHost, serverPort))
if err != nil {
fmt.Printf("Dial tcp4 %s:%d error:%s", serverHost, serverPort, err)
+4 -4
View File
@@ -370,7 +370,7 @@ func (pn *P2PNetwork) addDirectTunnel(config AppConfig, tid uint64) (*P2PTunnel,
}
err := ErrorHandshake
// try TCP6
if IsIPv6(t.config.IPv6) && IsIPv6(t.pn.config.IPv6) {
if IsIPv6(t.config.peerIPv6) && IsIPv6(t.pn.config.publicIPv6) {
gLog.Println(LvINFO, "try TCP6")
t.config.linkMode = LinkModeTCP6
t.config.isUnderlayServer = 0
@@ -501,7 +501,7 @@ func (pn *P2PNetwork) init() error {
gLog.Println(LvDEBUG, "netinfo:", rsp)
if rsp != nil && rsp.Country != "" {
if IsIPv6(rsp.IP.String()) {
pn.config.IPv6 = rsp.IP.String()
pn.config.publicIPv6 = rsp.IP.String()
req.IPv6 = rsp.IP.String()
}
req.NetInfo = *rsp
@@ -685,7 +685,7 @@ func (pn *P2PNetwork) updateAppHeartbeat(appID uint64) {
}
func (pn *P2PNetwork) refreshIPv6() {
if !IsIPv6(pn.config.IPv6) { // not support ipv6, not refresh
if !IsIPv6(pn.config.publicIPv6) { // not support ipv6, not refresh
return
}
client := &http.Client{Timeout: time.Second * 10}
@@ -701,5 +701,5 @@ func (pn *P2PNetwork) refreshIPv6() {
gLog.Println(LvINFO, "netInfo error:", err, n)
return
}
pn.config.IPv6 = string(buf[:n])
pn.config.publicIPv6 = string(buf[:n])
}
+7 -7
View File
@@ -53,7 +53,7 @@ func (t *P2PTunnel) requestPeerInfo() error {
t.config.peerVersion = rsp.Version
t.config.hasIPv4 = rsp.HasIPv4
t.config.peerIP = rsp.IPv4
t.config.IPv6 = rsp.IPv6
t.config.peerIPv6 = rsp.IPv6
t.config.hasUPNPorNATPMP = rsp.HasUPNPorNATPMP
t.config.peerNatType = rsp.NatType
///
@@ -100,7 +100,7 @@ func (t *P2PTunnel) connect() error {
ConeNatPort: t.coneNatPort,
NatType: t.pn.config.natType,
HasIPv4: t.pn.config.hasIPv4,
IPv6: t.pn.config.IPv6,
IPv6: t.pn.config.publicIPv6,
HasUPNPorNATPMP: t.pn.config.hasUPNPorNATPMP,
ID: t.id,
AppKey: appKey,
@@ -128,7 +128,7 @@ func (t *P2PTunnel) connect() error {
}
t.config.peerNatType = rsp.NatType
t.config.hasIPv4 = rsp.HasIPv4
t.config.IPv6 = rsp.IPv6
t.config.peerIPv6 = rsp.IPv6
t.config.hasUPNPorNATPMP = rsp.HasUPNPorNATPMP
t.config.peerVersion = rsp.Version
t.config.peerConeNatPort = rsp.ConeNatPort
@@ -390,10 +390,10 @@ func (t *P2PTunnel) connectUnderlayTCP6() (c underlay, err error) {
//else
t.pn.read(t.config.PeerNode, MsgPush, MsgPushUnderlayConnect, time.Second*5)
gLog.Println(LvDEBUG, "TCP6 dial to ", t.config.IPv6)
qConn, err = dialTCP6(t.config.IPv6, t.config.peerConeNatPort)
gLog.Println(LvDEBUG, "TCP6 dial to ", t.config.peerIPv6)
qConn, err = dialTCP6(t.config.peerIPv6, t.config.peerConeNatPort)
if err != nil {
return nil, fmt.Errorf("TCP6 dial to %s:%d error:%s", t.config.IPv6, t.config.peerConeNatPort, err)
return nil, fmt.Errorf("TCP6 dial to %s:%d error:%s", t.config.peerIPv6, t.config.peerConeNatPort, err)
}
handshakeBegin := time.Now()
qConn.WriteBytes(MsgP2P, MsgTunnelHandshake, []byte("OpenP2P,hello"))
@@ -594,7 +594,7 @@ func (t *P2PTunnel) listen() error {
// only private node set ipv6
if t.config.fromToken == t.pn.config.Token {
t.pn.refreshIPv6()
rsp.IPv6 = t.pn.config.IPv6
rsp.IPv6 = t.pn.config.publicIPv6
}
t.pn.push(t.config.PeerNode, MsgPushConnectRsp, rsp)
+3 -3
View File
@@ -8,7 +8,7 @@ import (
"sync"
"time"
reuse "github.com/libp2p/go-reuseport"
reuse "github.com/openp2p-cn/go-reuseport"
)
type underlayTCP struct {
@@ -69,7 +69,7 @@ func (conn *underlayTCP) Close() error {
func listenTCP(host string, port int, localPort int, mode string) (*underlayTCP, error) {
if mode == LinkModeTCPPunch {
c, err := reuse.Dial("tcp", fmt.Sprintf("0.0.0.0:%d", localPort), fmt.Sprintf("%s:%d", host, port)) // TODO: timeout
c, err := reuse.DialTimeout("tcp", fmt.Sprintf("0.0.0.0:%d", localPort), fmt.Sprintf("%s:%d", host, port), SymmetricHandshakeAckTimeout) // TODO: timeout
if err != nil {
gLog.Println(LvDEBUG, "send tcp punch: ", err)
return nil, err
@@ -94,7 +94,7 @@ func dialTCP(host string, port int, localPort int, mode string) (*underlayTCP, e
var c net.Conn
var err error
if mode == LinkModeTCPPunch {
c, err = reuse.Dial("tcp", fmt.Sprintf("0.0.0.0:%d", localPort), fmt.Sprintf("%s:%d", host, port))
c, err = reuse.DialTimeout("tcp", fmt.Sprintf("0.0.0.0:%d", localPort), fmt.Sprintf("%s:%d", host, port), SymmetricHandshakeAckTimeout)
} else {
c, err = net.DialTimeout("tcp", fmt.Sprintf("%s:%d", host, port), SymmetricHandshakeAckTimeout)
}
+1 -5
View File
@@ -1,12 +1,8 @@
/*
Taken from taipei-torrent
Just enough UPnP to be able to forward ports
Taken from taipei-torrent And fix some bugs
*/
package main
// BUG(jae): TODO: use syscalls to get actual ourIP. http://pastebin.com/9exZG4rh
import (
"bytes"
"encoding/xml"