mirror of
https://github.com/ehang-io/nps.git
synced 2025-07-05 06:22:58 +00:00
minor bug fix, docker
This commit is contained in:
parent
32e3d411ad
commit
78ebeba1bb
10
Dockerfile.npc
Executable file
10
Dockerfile.npc
Executable file
@ -0,0 +1,10 @@
|
|||||||
|
FROM golang as builder
|
||||||
|
WORKDIR /go/src/github.com/cnlh/nps
|
||||||
|
COPY . .
|
||||||
|
RUN go get -d -v ./...
|
||||||
|
RUN CGO_ENABLED=0 go build -ldflags="-w -s -extldflags -static" ./cmd/npc/npc.go
|
||||||
|
|
||||||
|
FROM scratch
|
||||||
|
COPY --from=builder /go/src/github.com/cnlh/nps/npc /
|
||||||
|
VOLUME /conf
|
||||||
|
ENTRYPOINT ["/npc"]
|
11
Dockerfile.nps
Executable file
11
Dockerfile.nps
Executable file
@ -0,0 +1,11 @@
|
|||||||
|
FROM golang as builder
|
||||||
|
WORKDIR /go/src/github.com/cnlh/nps
|
||||||
|
COPY . .
|
||||||
|
RUN go get -d -v ./...
|
||||||
|
RUN CGO_ENABLED=0 go build -ldflags="-w -s -extldflags -static" ./cmd/nps/nps.go
|
||||||
|
|
||||||
|
FROM scratch
|
||||||
|
COPY --from=builder /go/src/github.com/cnlh/nps/nps /
|
||||||
|
COPY --from=builder /go/src/github.com/cnlh/nps/web /web
|
||||||
|
VOLUME /conf
|
||||||
|
CMD ["/nps"]
|
@ -26,6 +26,7 @@ nps是一款轻量级、高性能、功能强大的**内网穿透**代理服务
|
|||||||
* [安装](#安装)
|
* [安装](#安装)
|
||||||
* [编译安装](#源码安装)
|
* [编译安装](#源码安装)
|
||||||
* [release安装](#release安装)
|
* [release安装](#release安装)
|
||||||
|
* [docker安装](#docker安装)
|
||||||
* [使用示例(以web主控模式为主)](#使用示例)
|
* [使用示例(以web主控模式为主)](#使用示例)
|
||||||
* [统一准备工作](#统一准备工作(必做))
|
* [统一准备工作](#统一准备工作(必做))
|
||||||
* [http|https域名解析](#域名解析)
|
* [http|https域名解析](#域名解析)
|
||||||
@ -121,7 +122,7 @@ nps是一款轻量级、高性能、功能强大的**内网穿透**代理服务
|
|||||||
|
|
||||||
## 安装
|
## 安装
|
||||||
|
|
||||||
### releases安装
|
### release安装
|
||||||
> [releases](https://github.com/cnlh/nps/releases)
|
> [releases](https://github.com/cnlh/nps/releases)
|
||||||
|
|
||||||
下载对应的系统版本即可,服务端和客户端是单独的
|
下载对应的系统版本即可,服务端和客户端是单独的
|
||||||
@ -134,6 +135,10 @@ nps是一款轻量级、高性能、功能强大的**内网穿透**代理服务
|
|||||||
|
|
||||||
> go build cmd/npc/npc.go
|
> go build cmd/npc/npc.go
|
||||||
|
|
||||||
|
### docker安装
|
||||||
|
> [server](https://hub.docker.com/r/ffdfgdfg/nps)
|
||||||
|
> [client](https://hub.docker.com/r/ffdfgdfg/npc)
|
||||||
|
|
||||||
## 使用示例
|
## 使用示例
|
||||||
|
|
||||||
### 统一准备工作(必做)
|
### 统一准备工作(必做)
|
||||||
|
@ -43,9 +43,16 @@ func Accept(l net.Listener, f func(c net.Conn)) {
|
|||||||
if strings.Contains(err.Error(), "use of closed network connection") {
|
if strings.Contains(err.Error(), "use of closed network connection") {
|
||||||
break
|
break
|
||||||
}
|
}
|
||||||
|
if strings.Contains(err.Error(), "the mux has closed") {
|
||||||
|
break
|
||||||
|
}
|
||||||
logs.Warn(err)
|
logs.Warn(err)
|
||||||
continue
|
continue
|
||||||
}
|
}
|
||||||
|
if c == nil {
|
||||||
|
logs.Warn("nil connection")
|
||||||
|
break
|
||||||
|
}
|
||||||
go f(c)
|
go f(c)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -21,7 +21,7 @@ type Mux struct {
|
|||||||
id int32
|
id int32
|
||||||
closeChan chan struct{}
|
closeChan chan struct{}
|
||||||
IsClose bool
|
IsClose bool
|
||||||
pingOk int
|
pingOk uint32
|
||||||
counter *latencyCounter
|
counter *latencyCounter
|
||||||
bw *bandwidth
|
bw *bandwidth
|
||||||
pingCh chan []byte
|
pingCh chan []byte
|
||||||
@ -101,7 +101,7 @@ func (s *Mux) sendInfo(flag uint8, id int32, data ...interface{}) {
|
|||||||
err = pack.NewPac(flag, id, data...)
|
err = pack.NewPac(flag, id, data...)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
common.MuxPack.Put(pack)
|
common.MuxPack.Put(pack)
|
||||||
logs.Error("mux: new pack err")
|
logs.Error("mux: new pack err", err)
|
||||||
s.Close()
|
s.Close()
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
@ -191,12 +191,12 @@ func (s *Mux) ping() {
|
|||||||
now, _ := time.Now().UTC().MarshalText()
|
now, _ := time.Now().UTC().MarshalText()
|
||||||
s.sendInfo(common.MUX_PING_FLAG, common.MUX_PING, now)
|
s.sendInfo(common.MUX_PING_FLAG, common.MUX_PING, now)
|
||||||
atomic.AddUint32(&s.pingCheckTime, 1)
|
atomic.AddUint32(&s.pingCheckTime, 1)
|
||||||
if s.pingOk > 10 && s.connType == "kcp" {
|
if atomic.LoadUint32(&s.pingOk) > 10 && s.connType == "kcp" {
|
||||||
logs.Error("mux: kcp ping err")
|
logs.Error("mux: kcp ping err")
|
||||||
s.Close()
|
s.Close()
|
||||||
break
|
break
|
||||||
}
|
}
|
||||||
s.pingOk++
|
atomic.AddUint32(&s.pingOk, 1)
|
||||||
}
|
}
|
||||||
}()
|
}()
|
||||||
}
|
}
|
||||||
@ -256,12 +256,12 @@ func (s *Mux) readSession() {
|
|||||||
pack = common.MuxPack.Get()
|
pack = common.MuxPack.Get()
|
||||||
s.bw.StartRead()
|
s.bw.StartRead()
|
||||||
if l, err = pack.UnPack(s.conn); err != nil {
|
if l, err = pack.UnPack(s.conn); err != nil {
|
||||||
logs.Error("mux: read session unpack from connection err")
|
logs.Error("mux: read session unpack from connection err", err)
|
||||||
s.Close()
|
s.Close()
|
||||||
break
|
break
|
||||||
}
|
}
|
||||||
s.bw.SetCopySize(l)
|
s.bw.SetCopySize(l)
|
||||||
s.pingOk = 0
|
atomic.StoreUint32(&s.pingOk, 0)
|
||||||
switch pack.Flag {
|
switch pack.Flag {
|
||||||
case common.MUX_NEW_CONN: //new connection
|
case common.MUX_NEW_CONN: //new connection
|
||||||
connection := NewConn(pack.Id, s)
|
connection := NewConn(pack.Id, s)
|
||||||
@ -282,7 +282,7 @@ func (s *Mux) readSession() {
|
|||||||
case common.MUX_NEW_MSG, common.MUX_NEW_MSG_PART: //new msg from remote connection
|
case common.MUX_NEW_MSG, common.MUX_NEW_MSG_PART: //new msg from remote connection
|
||||||
err = s.newMsg(connection, pack)
|
err = s.newMsg(connection, pack)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
logs.Error("mux: read session connection new msg err")
|
logs.Error("mux: read session connection new msg err", err)
|
||||||
connection.Close()
|
connection.Close()
|
||||||
}
|
}
|
||||||
continue
|
continue
|
||||||
|
@ -209,10 +209,10 @@ func NewListElement(buf []byte, l uint16, part bool) (element *common.ListElemen
|
|||||||
}
|
}
|
||||||
|
|
||||||
type ReceiveWindowQueue struct {
|
type ReceiveWindowQueue struct {
|
||||||
|
lengthWait uint64
|
||||||
chain *bufChain
|
chain *bufChain
|
||||||
stopOp chan struct{}
|
stopOp chan struct{}
|
||||||
readOp chan struct{}
|
readOp chan struct{}
|
||||||
lengthWait uint64
|
|
||||||
timeout time.Time
|
timeout time.Time
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user