mirror of
https://github.com/openp2p-cn/openp2p.git
synced 2025-10-07 01:22:55 +08:00
122 lines
2.8 KiB
Go
122 lines
2.8 KiB
Go
package openp2p
|
|
|
|
import (
|
|
"fmt"
|
|
"math/rand"
|
|
"os"
|
|
"path/filepath"
|
|
"strconv"
|
|
"time"
|
|
)
|
|
|
|
var GNetwork *P2PNetwork
|
|
|
|
func Run() {
|
|
rand.Seed(time.Now().UnixNano())
|
|
baseDir := filepath.Dir(os.Args[0])
|
|
os.Chdir(baseDir) // for system service
|
|
gLog = NewLogger(baseDir, ProductName, LvDEBUG, 1024*1024, LogFile|LogConsole)
|
|
if len(os.Args) > 1 {
|
|
switch os.Args[1] {
|
|
case "version", "-v", "--version":
|
|
fmt.Println(OpenP2PVersion)
|
|
return
|
|
case "install":
|
|
install()
|
|
return
|
|
case "uninstall":
|
|
uninstall()
|
|
return
|
|
}
|
|
} else {
|
|
installByFilename()
|
|
}
|
|
parseParams("", "")
|
|
gLog.Println(LvINFO, "openp2p start. version: ", OpenP2PVersion)
|
|
gLog.Println(LvINFO, "Contact: QQ group 16947733, Email openp2p.cn@gmail.com")
|
|
|
|
if gConf.daemonMode {
|
|
d := daemon{}
|
|
d.run()
|
|
return
|
|
}
|
|
|
|
gLog.Println(LvINFO, &gConf)
|
|
setFirewall()
|
|
err := setRLimit()
|
|
if err != nil {
|
|
gLog.Println(LvINFO, "setRLimit error:", err)
|
|
}
|
|
GNetwork = P2PNetworkInstance()
|
|
if ok := GNetwork.Connect(30000); !ok {
|
|
gLog.Println(LvERROR, "P2PNetwork login error")
|
|
return
|
|
}
|
|
// gLog.Println(LvINFO, "waiting for connection...")
|
|
forever := make(chan bool)
|
|
<-forever
|
|
}
|
|
|
|
// for Android app
|
|
// gomobile not support uint64 exported to java
|
|
|
|
func RunAsModule(baseDir string, token string, bw int, logLevel int) *P2PNetwork {
|
|
rand.Seed(time.Now().UnixNano())
|
|
os.Chdir(baseDir) // for system service
|
|
gLog = NewLogger(baseDir, ProductName, LvINFO, 1024*1024, LogFile|LogConsole)
|
|
|
|
parseParams("", "")
|
|
|
|
n, err := strconv.ParseUint(token, 10, 64)
|
|
if err == nil && n > 0 {
|
|
gConf.setToken(n)
|
|
}
|
|
if n <= 0 && gConf.Network.Token == 0 { // not input token
|
|
return nil
|
|
}
|
|
// gLog.setLevel(LogLevel(logLevel))
|
|
gConf.setShareBandwidth(bw)
|
|
gLog.Println(LvINFO, "openp2p start. version: ", OpenP2PVersion)
|
|
gLog.Println(LvINFO, "Contact: QQ group 16947733, Email openp2p.cn@gmail.com")
|
|
gLog.Println(LvINFO, &gConf)
|
|
|
|
GNetwork = P2PNetworkInstance()
|
|
if ok := GNetwork.Connect(30000); !ok {
|
|
gLog.Println(LvERROR, "P2PNetwork login error")
|
|
return nil
|
|
}
|
|
// gLog.Println(LvINFO, "waiting for connection...")
|
|
return GNetwork
|
|
}
|
|
|
|
func RunCmd(cmd string) {
|
|
rand.Seed(time.Now().UnixNano())
|
|
baseDir := filepath.Dir(os.Args[0])
|
|
os.Chdir(baseDir) // for system service
|
|
gLog = NewLogger(baseDir, ProductName, LvINFO, 1024*1024, LogFile|LogConsole)
|
|
|
|
parseParams("", cmd)
|
|
setFirewall()
|
|
err := setRLimit()
|
|
if err != nil {
|
|
gLog.Println(LvINFO, "setRLimit error:", err)
|
|
}
|
|
GNetwork = P2PNetworkInstance()
|
|
if ok := GNetwork.Connect(30000); !ok {
|
|
gLog.Println(LvERROR, "P2PNetwork login error")
|
|
return
|
|
}
|
|
forever := make(chan bool)
|
|
<-forever
|
|
}
|
|
|
|
func GetToken(baseDir string) string {
|
|
os.Chdir(baseDir)
|
|
gConf.load()
|
|
return fmt.Sprintf("%d", gConf.Network.Token)
|
|
}
|
|
|
|
func Stop() {
|
|
os.Exit(0)
|
|
}
|