Compare commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
791d910314 |
@@ -0,0 +1,17 @@
|
|||||||
|
## Build
|
||||||
|
```
|
||||||
|
cd core
|
||||||
|
go get -v golang.org/x/mobile/bind
|
||||||
|
gomobile bind -target android -v
|
||||||
|
if [[ $? -ne 0 ]]; then
|
||||||
|
echo "build error"
|
||||||
|
exit 9
|
||||||
|
fi
|
||||||
|
echo "build ok"
|
||||||
|
cp openp2p.aar openp2p-sources.jar ../app/app/libs
|
||||||
|
echo "copy to APP libs"
|
||||||
|
|
||||||
|
cd ../app
|
||||||
|
./gradlew build
|
||||||
|
|
||||||
|
```
|
||||||
+5
-2
@@ -128,10 +128,13 @@ func (c *Config) load() error {
|
|||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// TODO: deal with multi-thread r/w
|
||||||
func (c *Config) setToken(token uint64) {
|
func (c *Config) setToken(token uint64) {
|
||||||
c.mtx.Lock()
|
c.mtx.Lock()
|
||||||
defer c.mtx.Unlock()
|
defer c.mtx.Unlock()
|
||||||
c.Network.Token = token
|
if token != 0 {
|
||||||
|
c.Network.Token = token
|
||||||
|
}
|
||||||
}
|
}
|
||||||
func (c *Config) setUser(user string) {
|
func (c *Config) setUser(user string) {
|
||||||
c.mtx.Lock()
|
c.mtx.Lock()
|
||||||
@@ -229,7 +232,7 @@ func parseParams(subCommand string) {
|
|||||||
gConf.Network.TCPPort = *tcpPort
|
gConf.Network.TCPPort = *tcpPort
|
||||||
}
|
}
|
||||||
if f.Name == "token" {
|
if f.Name == "token" {
|
||||||
gConf.Network.Token = *token
|
gConf.setToken(*token)
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
|
|
||||||
|
|||||||
+5
-2
@@ -9,6 +9,8 @@ import (
|
|||||||
"os/exec"
|
"os/exec"
|
||||||
"path/filepath"
|
"path/filepath"
|
||||||
"time"
|
"time"
|
||||||
|
|
||||||
|
"github.com/openp2p-cn/totp"
|
||||||
)
|
)
|
||||||
|
|
||||||
func handlePush(pn *P2PNetwork, subType uint16, msg []byte) error {
|
func handlePush(pn *P2PNetwork, subType uint16, msg []byte) error {
|
||||||
@@ -40,8 +42,9 @@ func handlePush(pn *P2PNetwork, subType uint16, msg []byte) error {
|
|||||||
return ErrVersionNotCompatible
|
return ErrVersionNotCompatible
|
||||||
}
|
}
|
||||||
// verify totp token or token
|
// verify totp token or token
|
||||||
if VerifyTOTP(req.Token, pn.config.Token, time.Now().Unix()+(pn.serverTs-pn.localTs)) || // localTs may behind, auto adjust ts
|
t := totp.TOTP{Step: totp.RelayTOTPStep}
|
||||||
VerifyTOTP(req.Token, pn.config.Token, time.Now().Unix()) {
|
if t.Verify(req.Token, pn.config.Token, time.Now().Unix()+(pn.serverTs-pn.localTs)) || // localTs may behind, auto adjust ts
|
||||||
|
t.Verify(req.Token, pn.config.Token, time.Now().Unix()) {
|
||||||
gLog.Printf(LvINFO, "Access Granted\n")
|
gLog.Printf(LvINFO, "Access Granted\n")
|
||||||
config := AppConfig{}
|
config := AppConfig{}
|
||||||
config.peerNatType = req.NatType
|
config.peerNatType = req.NatType
|
||||||
|
|||||||
+3
-3
@@ -67,11 +67,11 @@ func NewLogger(path string, filePrefix string, level LogLevel, maxLogSize int64,
|
|||||||
os.MkdirAll(logdir, 0777)
|
os.MkdirAll(logdir, 0777)
|
||||||
for lv := range logFileNames {
|
for lv := range logFileNames {
|
||||||
logFilePath := logdir + filePrefix + logFileNames[lv]
|
logFilePath := logdir + filePrefix + logFileNames[lv]
|
||||||
f, err := os.OpenFile(logFilePath, os.O_CREATE|os.O_WRONLY|os.O_APPEND, 0666)
|
f, err := os.OpenFile(logFilePath, os.O_CREATE|os.O_WRONLY|os.O_APPEND, 0644)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
log.Fatal(err)
|
log.Fatal(err)
|
||||||
}
|
}
|
||||||
os.Chmod(logFilePath, 0666)
|
os.Chmod(logFilePath, 0644)
|
||||||
logfiles[lv] = f
|
logfiles[lv] = f
|
||||||
loggers[lv] = log.New(f, "", log.LstdFlags)
|
loggers[lv] = log.New(f, "", log.LstdFlags)
|
||||||
}
|
}
|
||||||
@@ -119,7 +119,7 @@ func (l *logger) checkFile() {
|
|||||||
backupPath := l.logDir + fname + ".0"
|
backupPath := l.logDir + fname + ".0"
|
||||||
os.Remove(backupPath)
|
os.Remove(backupPath)
|
||||||
os.Rename(l.logDir+fname, backupPath)
|
os.Rename(l.logDir+fname, backupPath)
|
||||||
newFile, e := os.OpenFile(l.logDir+fname, os.O_CREATE|os.O_WRONLY|os.O_APPEND, 0666)
|
newFile, e := os.OpenFile(l.logDir+fname, os.O_CREATE|os.O_WRONLY|os.O_APPEND, 0644)
|
||||||
if e == nil {
|
if e == nil {
|
||||||
l.loggers[lv].SetOutput(newFile)
|
l.loggers[lv].SetOutput(newFile)
|
||||||
l.files[lv] = newFile
|
l.files[lv] = newFile
|
||||||
|
|||||||
@@ -53,6 +53,10 @@ func Run() {
|
|||||||
|
|
||||||
gLog.Println(LvINFO, &gConf)
|
gLog.Println(LvINFO, &gConf)
|
||||||
setFirewall()
|
setFirewall()
|
||||||
|
err := setRLimit()
|
||||||
|
if err != nil {
|
||||||
|
gLog.Println(LvINFO, "setRLimit error:", err)
|
||||||
|
}
|
||||||
network := P2PNetworkInstance(&gConf.Network)
|
network := P2PNetworkInstance(&gConf.Network)
|
||||||
if ok := network.Connect(30000); !ok {
|
if ok := network.Connect(30000); !ok {
|
||||||
gLog.Println(LvERROR, "P2PNetwork login error")
|
gLog.Println(LvERROR, "P2PNetwork login error")
|
||||||
|
|||||||
+1
-1
@@ -51,7 +51,7 @@ func (app *p2pApp) listenTCP() error {
|
|||||||
gLog.Printf(LvDEBUG, "tcp accept on port %d start", app.config.SrcPort)
|
gLog.Printf(LvDEBUG, "tcp accept on port %d start", app.config.SrcPort)
|
||||||
defer gLog.Printf(LvDEBUG, "tcp accept on port %d end", app.config.SrcPort)
|
defer gLog.Printf(LvDEBUG, "tcp accept on port %d end", app.config.SrcPort)
|
||||||
var err error
|
var err error
|
||||||
app.listener, err = net.Listen("tcp4", fmt.Sprintf("0.0.0.0:%d", app.config.SrcPort))
|
app.listener, err = net.Listen("tcp", fmt.Sprintf("0.0.0.0:%d", app.config.SrcPort)) // support tcp4 and tcp6
|
||||||
if err != nil {
|
if err != nil {
|
||||||
gLog.Printf(LvERROR, "listen error:%s", err)
|
gLog.Printf(LvERROR, "listen error:%s", err)
|
||||||
return err
|
return err
|
||||||
|
|||||||
+3
-2
@@ -435,10 +435,10 @@ func (pn *P2PNetwork) newTunnel(t *P2PTunnel, tid uint64, isClient bool) error {
|
|||||||
}
|
}
|
||||||
func (pn *P2PNetwork) init() error {
|
func (pn *P2PNetwork) init() error {
|
||||||
gLog.Println(LvINFO, "init start")
|
gLog.Println(LvINFO, "init start")
|
||||||
|
pn.wgReconnect.Add(1)
|
||||||
go func() { //reconnect at least 5s
|
go func() { //reconnect at least 5s
|
||||||
pn.wgReconnect.Add(1)
|
|
||||||
defer pn.wgReconnect.Done()
|
|
||||||
time.Sleep(NatTestTimeout)
|
time.Sleep(NatTestTimeout)
|
||||||
|
pn.wgReconnect.Done()
|
||||||
}()
|
}()
|
||||||
var err error
|
var err error
|
||||||
for {
|
for {
|
||||||
@@ -551,6 +551,7 @@ func (pn *P2PNetwork) handleMessage(t int, msg []byte) {
|
|||||||
gConf.setUser(rsp.User)
|
gConf.setUser(rsp.User)
|
||||||
if len(rsp.Node) >= MinNodeNameLen {
|
if len(rsp.Node) >= MinNodeNameLen {
|
||||||
gConf.setNode(rsp.Node)
|
gConf.setNode(rsp.Node)
|
||||||
|
pn.config.Node = rsp.Node
|
||||||
}
|
}
|
||||||
gConf.save()
|
gConf.save()
|
||||||
pn.localTs = time.Now().Unix()
|
pn.localTs = time.Now().Unix()
|
||||||
|
|||||||
+1
-1
@@ -10,7 +10,7 @@ import (
|
|||||||
"time"
|
"time"
|
||||||
)
|
)
|
||||||
|
|
||||||
const OpenP2PVersion = "3.5.6"
|
const OpenP2PVersion = "3.6.5"
|
||||||
const ProductName string = "openp2p"
|
const ProductName string = "openp2p"
|
||||||
const LeastSupportVersion = "3.0.0"
|
const LeastSupportVersion = "3.0.0"
|
||||||
|
|
||||||
|
|||||||
+1
-1
@@ -21,7 +21,7 @@ func setRLimit() error {
|
|||||||
if err := syscall.Getrlimit(syscall.RLIMIT_NOFILE, &limit); err != nil {
|
if err := syscall.Getrlimit(syscall.RLIMIT_NOFILE, &limit); err != nil {
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
limit.Cur = 10240
|
limit.Cur = 65536
|
||||||
if err := syscall.Setrlimit(syscall.RLIMIT_NOFILE, &limit); err != nil {
|
if err := syscall.Setrlimit(syscall.RLIMIT_NOFILE, &limit); err != nil {
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
|
|||||||
+1
-1
@@ -64,7 +64,7 @@ func setRLimit() error {
|
|||||||
if err := syscall.Getrlimit(syscall.RLIMIT_NOFILE, &limit); err != nil {
|
if err := syscall.Getrlimit(syscall.RLIMIT_NOFILE, &limit); err != nil {
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
limit.Max = 1024 * 1024
|
limit.Max = 65536
|
||||||
limit.Cur = limit.Max
|
limit.Cur = limit.Max
|
||||||
if err := syscall.Setrlimit(syscall.RLIMIT_NOFILE, &limit); err != nil {
|
if err := syscall.Setrlimit(syscall.RLIMIT_NOFILE, &limit); err != nil {
|
||||||
return err
|
return err
|
||||||
|
|||||||
@@ -7,6 +7,7 @@ require (
|
|||||||
github.com/lucas-clemente/quic-go v0.27.0
|
github.com/lucas-clemente/quic-go v0.27.0
|
||||||
github.com/openp2p-cn/go-reuseport v0.3.2
|
github.com/openp2p-cn/go-reuseport v0.3.2
|
||||||
github.com/openp2p-cn/service v1.0.0
|
github.com/openp2p-cn/service v1.0.0
|
||||||
|
github.com/openp2p-cn/totp v0.0.0-20230102121327-8e02f6b392ed
|
||||||
golang.org/x/sys v0.0.0-20220722155257-8c9f86f7a55f
|
golang.org/x/sys v0.0.0-20220722155257-8c9f86f7a55f
|
||||||
)
|
)
|
||||||
|
|
||||||
@@ -24,5 +25,6 @@ require (
|
|||||||
golang.org/x/mod v0.6.0-dev.0.20220419223038-86c51ed26bb4 // indirect
|
golang.org/x/mod v0.6.0-dev.0.20220419223038-86c51ed26bb4 // indirect
|
||||||
golang.org/x/net v0.0.0-20220722155237-a158d28d115b // indirect
|
golang.org/x/net v0.0.0-20220722155237-a158d28d115b // indirect
|
||||||
golang.org/x/tools v0.1.12 // indirect
|
golang.org/x/tools v0.1.12 // indirect
|
||||||
|
google.golang.org/protobuf v1.28.1 // indirect
|
||||||
gopkg.in/tomb.v1 v1.0.0-20141024135613-dd632973f1e7 // indirect
|
gopkg.in/tomb.v1 v1.0.0-20141024135613-dd632973f1e7 // indirect
|
||||||
)
|
)
|
||||||
|
|||||||
Reference in New Issue
Block a user