瀏覽代碼

Merge pull request #2018 from fatedier/dev

bump version to v0.34.1
fatedier 5 年之前
父節點
當前提交
c7dd04befa
共有 100 個文件被更改,包括 338 次插入180 次删除
  1. 115 0
      .github/workflows/build-and-push-image.yml
  2. 26 0
      .github/workflows/stale.yml
  3. 5 5
      Makefile
  4. 1 1
      client/admin.go
  5. 2 2
      client/admin_api.go
  6. 9 8
      client/control.go
  7. 1 1
      client/event/event.go
  8. 1 1
      client/health/health.go
  9. 7 7
      client/proxy/proxy.go
  10. 3 3
      client/proxy/proxy_manager.go
  11. 3 3
      client/proxy/proxy_wrapper.go
  12. 8 8
      client/service.go
  13. 6 6
      client/visitor.go
  14. 2 2
      client/visitor_manager.go
  15. 3 3
      cmd/frpc/sub/http.go
  16. 2 2
      cmd/frpc/sub/https.go
  17. 2 2
      cmd/frpc/sub/reload.go
  18. 6 6
      cmd/frpc/sub/root.go
  19. 3 3
      cmd/frpc/sub/status.go
  20. 3 3
      cmd/frpc/sub/stcp.go
  21. 3 3
      cmd/frpc/sub/sudp.go
  22. 2 2
      cmd/frpc/sub/tcp.go
  23. 2 2
      cmd/frpc/sub/tcpmux.go
  24. 3 3
      cmd/frpc/sub/udp.go
  25. 3 3
      cmd/frpc/sub/xtcp.go
  26. 1 1
      cmd/frps/main.go
  27. 7 7
      cmd/frps/root.go
  28. 3 2
      conf/frpc_full.ini
  29. 14 0
      dockerfiles/Dockerfile-for-frpc
  30. 14 0
      dockerfiles/Dockerfile-for-frps
  31. 1 2
      go.mod
  32. 8 4
      go.sum
  33. 2 2
      pkg/auth/auth.go
  34. 1 1
      pkg/auth/oidc.go
  35. 2 2
      pkg/auth/token.go
  36. 3 3
      pkg/config/client_common.go
  37. 3 3
      pkg/config/proxy.go
  38. 4 4
      pkg/config/server_common.go
  39. 0 0
      pkg/config/types.go
  40. 0 0
      pkg/config/types_test.go
  41. 0 0
      pkg/config/value.go
  42. 1 1
      pkg/config/visitor.go
  43. 0 0
      pkg/consts/consts.go
  44. 0 0
      pkg/errors/errors.go
  45. 2 2
      pkg/metrics/aggregate/server.go
  46. 5 3
      pkg/metrics/mem/server.go
  47. 1 1
      pkg/metrics/mem/types.go
  48. 1 1
      pkg/metrics/metrics.go
  49. 0 0
      pkg/metrics/prometheus/server.go
  50. 0 0
      pkg/msg/ctl.go
  51. 0 0
      pkg/msg/msg.go
  52. 3 3
      pkg/nathole/nathole.go
  53. 1 1
      pkg/plugin/client/http2https.go
  54. 1 1
      pkg/plugin/client/http_proxy.go
  55. 1 1
      pkg/plugin/client/https2http.go
  56. 0 0
      pkg/plugin/client/plugin.go
  57. 1 1
      pkg/plugin/client/socks5.go
  58. 1 1
      pkg/plugin/client/static_file.go
  59. 0 0
      pkg/plugin/client/unix_domain_socket.go
  60. 0 0
      pkg/plugin/server/http.go
  61. 2 2
      pkg/plugin/server/manager.go
  62. 0 0
      pkg/plugin/server/plugin.go
  63. 0 0
      pkg/plugin/server/tracer.go
  64. 1 1
      pkg/plugin/server/types.go
  65. 1 1
      pkg/proto/udp/udp.go
  66. 0 0
      pkg/proto/udp/udp_test.go
  67. 0 19
      pkg/transport/tls.go
  68. 0 0
      pkg/util/limit/reader.go
  69. 0 0
      pkg/util/limit/writer.go
  70. 0 0
      pkg/util/log/log.go
  71. 0 0
      pkg/util/metric/counter.go
  72. 0 0
      pkg/util/metric/counter_test.go
  73. 0 0
      pkg/util/metric/date_counter.go
  74. 0 0
      pkg/util/metric/date_counter_test.go
  75. 0 0
      pkg/util/metric/metrics.go
  76. 2 1
      pkg/util/net/conn.go
  77. 0 0
      pkg/util/net/http.go
  78. 0 0
      pkg/util/net/kcp.go
  79. 0 0
      pkg/util/net/listener.go
  80. 0 0
      pkg/util/net/tls.go
  81. 0 0
      pkg/util/net/udp.go
  82. 0 0
      pkg/util/net/websocket.go
  83. 2 2
      pkg/util/tcpmux/httpconnect.go
  84. 0 0
      pkg/util/util/http.go
  85. 0 0
      pkg/util/util/util.go
  86. 0 0
      pkg/util/util/util_test.go
  87. 1 1
      pkg/util/version/version.go
  88. 0 0
      pkg/util/version/version_test.go
  89. 2 2
      pkg/util/vhost/http.go
  90. 0 0
      pkg/util/vhost/https.go
  91. 2 2
      pkg/util/vhost/resource.go
  92. 0 0
      pkg/util/vhost/reverseproxy.go
  93. 0 0
      pkg/util/vhost/router.go
  94. 3 3
      pkg/util/vhost/vhost.go
  95. 0 0
      pkg/util/xlog/ctx.go
  96. 1 1
      pkg/util/xlog/xlog.go
  97. 9 9
      server/control.go
  98. 4 4
      server/controller/resource.go
  99. 1 1
      server/dashboard.go
  100. 5 5
      server/dashboard_api.go

+ 115 - 0
.github/workflows/build-and-push-image.yml

@@ -0,0 +1,115 @@
+name: Build Image and Publish to Dockerhub & GPR
+
+on:
+  release:
+    types: [ created ]
+  workflow_dispatch:
+    inputs:
+      tag:
+        description: 'Image tag'
+        required: true
+        default: 'test'
+jobs:
+  binary:
+    name: Build Golang project
+    runs-on: ubuntu-latest
+    steps:
+      -
+        name: Set up Go 1.x
+        uses: actions/setup-go@v2
+        with:
+          go-version: 1.15
+      -
+        run: go version
+      -
+        name: Check out code into the Go module directory
+        uses: actions/checkout@v2
+      -
+        name: Build
+        run: make build
+      -
+        name: Archive artifacts for frpc
+        uses: actions/upload-artifact@v1
+        with:
+          name: frpc
+          path: bin/frpc
+      -
+        name: Archive artifacts for frps
+        uses: actions/upload-artifact@v1
+        with:
+          name: frps
+          path: bin/frps
+
+  image:
+    name: Build Image from Dockerfile and binaries
+    runs-on: ubuntu-latest
+    needs: binary
+    steps:
+      # environment
+      -
+        name: Checkout
+        uses: actions/checkout@v2
+        with:
+          fetch-depth: '0'
+      -
+        name: Set up QEMU
+        uses: docker/setup-qemu-action@v1
+      -
+        name: Set up Docker Buildx
+        uses: docker/setup-buildx-action@v1
+      # download binaries of frpc and frps
+      -
+        name: Download binary of frpc
+        uses: actions/download-artifact@v2
+        with:
+          name: frpc
+          path: bin/frpc
+      -
+        name: Download binary of frps
+        uses: actions/download-artifact@v2
+        with:
+          name: frps
+          path: bin/frps
+      # get image tag name
+      -
+        name: Get Image Tag Name
+        run: |
+          if [ x${{ github.event.inputs.tag }} == x"" ]; then
+            echo ::set-env name=TAG_NAME::${GITHUB_REF#refs/*/}
+          else
+            echo ::set-env name=TAG_NAME::${{ github.event.inputs.tag }}
+          fi
+      # prepare image tags
+      -
+        name: Prepare Image Tags
+        run: |
+          echo ::set-env name=DOCKERFILE_FRPC_PATH::dockerfiles/Dockerfile-for-frpc
+          echo ::set-env name=DOCKERFILE_FRPS_PATH::dockerfiles/Dockerfile-for-frps
+          echo ::set-env name=TAG_FRPC::fatedier/frpc:$TAG_NAME
+          echo ::set-env name=TAG_FRPS::fatedier/frps:$TAG_NAME
+          echo ::set-env name=TAG_FRPC_GPR::ghcr.io/fatedier/frpc:$TAG_NAME
+          echo ::set-env name=TAG_FRPS_GPR::ghcr.io/fatedier/frps:$TAG_NAME
+      # build images
+      -
+        name: Build Images
+        run: |
+          # for Docker hub
+          docker build --file $DOCKERFILE_FRPC_PATH --tag $TAG_FRPC .
+          docker build --file $DOCKERFILE_FRPS_PATH --tag $TAG_FRPS .
+          # for GPR
+          docker build --file $DOCKERFILE_FRPC_PATH --tag $TAG_FRPC_GPR .
+          docker build --file $DOCKERFILE_FRPS_PATH --tag $TAG_FRPS_GPR .
+      # push to dockerhub
+      -
+        name: Publish to Dockerhub
+        run: |
+          echo ${{ secrets.DOCKERHUB_PASSWORD }} | docker login --username ${{ secrets.DOCKERHUB_USERNAME }} --password-stdin
+          docker push $TAG_FRPC
+          docker push $TAG_FRPS
+      # push to gpr
+      -
+        name: Publish to GPR
+        run: |
+          echo ${{ secrets.GPR_TOKEN }} | docker login ghcr.io --username ${{ github.repository_owner }} --password-stdin
+          docker push $TAG_FRPC_GPR
+          docker push $TAG_FRPS_GPR

+ 26 - 0
.github/workflows/stale.yml

@@ -0,0 +1,26 @@
+name: "Close stale issues"
+on:
+  schedule:
+  - cron: "20 0 * * *"
+  workflow_dispatch:
+    inputs:
+      debug-only:
+        description: 'In debug mod'
+        required: false
+        default: 'false'
+jobs:
+  stale:
+    runs-on: ubuntu-latest
+    steps:
+    - uses: actions/stale@v3
+      with:
+        repo-token: ${{ secrets.GITHUB_TOKEN }}
+        stale-issue-message: 'Issues go stale after 45d of inactivity. Stale issues rot after an additional 10d of inactivity and eventually close.'
+        stale-pr-message: 'Issues go stale after 45d of inactivity. Stale issues rot after an additional 10d of inactivity and eventually close.'
+        stale-issue-label: 'lifecycle/stale'
+        exempt-issue-labels: 'bug,doc,enhancement,future,proposal,question,testing,todo,easy,help wanted,assigned'
+        stale-pr-label: 'lifecycle/stale'
+        exempt-pr-labels: 'bug,doc,enhancement,future,proposal,question,testing,todo,easy,help wanted,assigned'
+        days-before-stale: 45
+        days-before-close: 10
+        debug-only: ${{ github.event.inputs.debug-only }}

+ 5 - 5
Makefile

@@ -1,5 +1,6 @@
 export PATH := $(GOPATH)/bin:$(PATH)
 export GO111MODULE=on
+LDFLAGS := -s -w
 
 all: fmt build
 
@@ -19,20 +20,19 @@ fmt:
 	go fmt ./...
 
 frps:
-	go build -o bin/frps ./cmd/frps
+	env CGO_ENABLED=0 go build -ldflags "$(LDFLAGS)" -o bin/frps ./cmd/frps
 
 frpc:
-	go build -o bin/frpc ./cmd/frpc
+	env CGO_ENABLED=0 go build -ldflags "$(LDFLAGS)" -o bin/frpc ./cmd/frpc
 
 test: gotest
 
 gotest:
 	go test -v --cover ./assets/...
-	go test -v --cover ./client/...
 	go test -v --cover ./cmd/...
-	go test -v --cover ./models/...
+	go test -v --cover ./client/...
 	go test -v --cover ./server/...
-	go test -v --cover ./utils/...
+	go test -v --cover ./pkg/...
 
 ci:
 	go test -count=1 -p=1 -v ./tests/...

+ 1 - 1
client/admin.go

@@ -21,7 +21,7 @@ import (
 	"time"
 
 	"github.com/fatedier/frp/assets"
-	frpNet "github.com/fatedier/frp/utils/net"
+	frpNet "github.com/fatedier/frp/pkg/util/net"
 
 	"github.com/gorilla/mux"
 )

+ 2 - 2
client/admin_api.go

@@ -23,8 +23,8 @@ import (
 	"strings"
 
 	"github.com/fatedier/frp/client/proxy"
-	"github.com/fatedier/frp/models/config"
-	"github.com/fatedier/frp/utils/log"
+	"github.com/fatedier/frp/pkg/config"
+	"github.com/fatedier/frp/pkg/util/log"
 )
 
 type GeneralResponse struct {

+ 9 - 8
client/control.go

@@ -25,12 +25,12 @@ import (
 	"time"
 
 	"github.com/fatedier/frp/client/proxy"
-	"github.com/fatedier/frp/models/auth"
-	"github.com/fatedier/frp/models/config"
-	"github.com/fatedier/frp/models/msg"
-	"github.com/fatedier/frp/models/transport"
-	frpNet "github.com/fatedier/frp/utils/net"
-	"github.com/fatedier/frp/utils/xlog"
+	"github.com/fatedier/frp/pkg/auth"
+	"github.com/fatedier/frp/pkg/config"
+	"github.com/fatedier/frp/pkg/msg"
+	"github.com/fatedier/frp/pkg/transport"
+	frpNet "github.com/fatedier/frp/pkg/util/net"
+	"github.com/fatedier/frp/pkg/util/xlog"
 
 	"github.com/fatedier/golib/control/shutdown"
 	"github.com/fatedier/golib/crypto"
@@ -211,10 +211,11 @@ func (ctl *Control) connectServer() (conn net.Conn, err error) {
 		var tlsConfig *tls.Config
 
 		if ctl.clientCfg.TLSEnable {
-			tlsConfig, err = transport.NewServerTLSConfig(
+			tlsConfig, err = transport.NewClientTLSConfig(
 				ctl.clientCfg.TLSCertFile,
 				ctl.clientCfg.TLSKeyFile,
-				ctl.clientCfg.TLSTrustedCaFile)
+				ctl.clientCfg.TLSTrustedCaFile,
+				ctl.clientCfg.ServerAddr)
 
 			if err != nil {
 				xl.Warn("fail to build tls configuration when connecting to server, err: %v", err)

+ 1 - 1
client/event/event.go

@@ -3,7 +3,7 @@ package event
 import (
 	"errors"
 
-	"github.com/fatedier/frp/models/msg"
+	"github.com/fatedier/frp/pkg/msg"
 )
 
 type Type int

+ 1 - 1
client/health/health.go

@@ -24,7 +24,7 @@ import (
 	"net/http"
 	"time"
 
-	"github.com/fatedier/frp/utils/xlog"
+	"github.com/fatedier/frp/pkg/util/xlog"
 )
 
 var (

+ 7 - 7
client/proxy/proxy.go

@@ -26,13 +26,13 @@ import (
 	"sync"
 	"time"
 
-	"github.com/fatedier/frp/models/config"
-	"github.com/fatedier/frp/models/msg"
-	plugin "github.com/fatedier/frp/models/plugin/client"
-	"github.com/fatedier/frp/models/proto/udp"
-	"github.com/fatedier/frp/utils/limit"
-	frpNet "github.com/fatedier/frp/utils/net"
-	"github.com/fatedier/frp/utils/xlog"
+	"github.com/fatedier/frp/pkg/config"
+	"github.com/fatedier/frp/pkg/msg"
+	plugin "github.com/fatedier/frp/pkg/plugin/client"
+	"github.com/fatedier/frp/pkg/proto/udp"
+	"github.com/fatedier/frp/pkg/util/limit"
+	frpNet "github.com/fatedier/frp/pkg/util/net"
+	"github.com/fatedier/frp/pkg/util/xlog"
 
 	"github.com/fatedier/golib/errors"
 	frpIo "github.com/fatedier/golib/io"

+ 3 - 3
client/proxy/proxy_manager.go

@@ -7,9 +7,9 @@ import (
 	"sync"
 
 	"github.com/fatedier/frp/client/event"
-	"github.com/fatedier/frp/models/config"
-	"github.com/fatedier/frp/models/msg"
-	"github.com/fatedier/frp/utils/xlog"
+	"github.com/fatedier/frp/pkg/config"
+	"github.com/fatedier/frp/pkg/msg"
+	"github.com/fatedier/frp/pkg/util/xlog"
 
 	"github.com/fatedier/golib/errors"
 )

+ 3 - 3
client/proxy/proxy_wrapper.go

@@ -10,9 +10,9 @@ import (
 
 	"github.com/fatedier/frp/client/event"
 	"github.com/fatedier/frp/client/health"
-	"github.com/fatedier/frp/models/config"
-	"github.com/fatedier/frp/models/msg"
-	"github.com/fatedier/frp/utils/xlog"
+	"github.com/fatedier/frp/pkg/config"
+	"github.com/fatedier/frp/pkg/msg"
+	"github.com/fatedier/frp/pkg/util/xlog"
 
 	"github.com/fatedier/golib/errors"
 )

+ 8 - 8
client/service.go

@@ -18,7 +18,6 @@ import (
 	"context"
 	"crypto/tls"
 	"fmt"
-	"github.com/fatedier/frp/models/transport"
 	"io/ioutil"
 	"net"
 	"runtime"
@@ -27,13 +26,14 @@ import (
 	"time"
 
 	"github.com/fatedier/frp/assets"
-	"github.com/fatedier/frp/models/auth"
-	"github.com/fatedier/frp/models/config"
-	"github.com/fatedier/frp/models/msg"
-	"github.com/fatedier/frp/utils/log"
-	frpNet "github.com/fatedier/frp/utils/net"
-	"github.com/fatedier/frp/utils/version"
-	"github.com/fatedier/frp/utils/xlog"
+	"github.com/fatedier/frp/pkg/auth"
+	"github.com/fatedier/frp/pkg/config"
+	"github.com/fatedier/frp/pkg/msg"
+	"github.com/fatedier/frp/pkg/transport"
+	"github.com/fatedier/frp/pkg/util/log"
+	frpNet "github.com/fatedier/frp/pkg/util/net"
+	"github.com/fatedier/frp/pkg/util/version"
+	"github.com/fatedier/frp/pkg/util/xlog"
 
 	fmux "github.com/hashicorp/yamux"
 )

+ 6 - 6
client/visitor.go

@@ -24,12 +24,12 @@ import (
 	"sync"
 	"time"
 
-	"github.com/fatedier/frp/models/config"
-	"github.com/fatedier/frp/models/msg"
-	"github.com/fatedier/frp/models/proto/udp"
-	frpNet "github.com/fatedier/frp/utils/net"
-	"github.com/fatedier/frp/utils/util"
-	"github.com/fatedier/frp/utils/xlog"
+	"github.com/fatedier/frp/pkg/config"
+	"github.com/fatedier/frp/pkg/msg"
+	"github.com/fatedier/frp/pkg/proto/udp"
+	frpNet "github.com/fatedier/frp/pkg/util/net"
+	"github.com/fatedier/frp/pkg/util/util"
+	"github.com/fatedier/frp/pkg/util/xlog"
 
 	"github.com/fatedier/golib/errors"
 	frpIo "github.com/fatedier/golib/io"

+ 2 - 2
client/visitor_manager.go

@@ -19,8 +19,8 @@ import (
 	"sync"
 	"time"
 
-	"github.com/fatedier/frp/models/config"
-	"github.com/fatedier/frp/utils/xlog"
+	"github.com/fatedier/frp/pkg/config"
+	"github.com/fatedier/frp/pkg/util/xlog"
 )
 
 type VisitorManager struct {

+ 3 - 3
cmd/frpc/sub/http.go

@@ -19,10 +19,10 @@ import (
 	"os"
 	"strings"
 
-	"github.com/spf13/cobra"
+	"github.com/fatedier/frp/pkg/config"
+	"github.com/fatedier/frp/pkg/consts"
 
-	"github.com/fatedier/frp/models/config"
-	"github.com/fatedier/frp/models/consts"
+	"github.com/spf13/cobra"
 )
 
 func init() {

+ 2 - 2
cmd/frpc/sub/https.go

@@ -21,8 +21,8 @@ import (
 
 	"github.com/spf13/cobra"
 
-	"github.com/fatedier/frp/models/config"
-	"github.com/fatedier/frp/models/consts"
+	"github.com/fatedier/frp/pkg/config"
+	"github.com/fatedier/frp/pkg/consts"
 )
 
 func init() {

+ 2 - 2
cmd/frpc/sub/reload.go

@@ -22,9 +22,9 @@ import (
 	"os"
 	"strings"
 
-	"github.com/spf13/cobra"
+	"github.com/fatedier/frp/pkg/config"
 
-	"github.com/fatedier/frp/models/config"
+	"github.com/spf13/cobra"
 )
 
 func init() {

+ 6 - 6
cmd/frpc/sub/root.go

@@ -25,13 +25,13 @@ import (
 	"syscall"
 	"time"
 
-	"github.com/spf13/cobra"
-
 	"github.com/fatedier/frp/client"
-	"github.com/fatedier/frp/models/auth"
-	"github.com/fatedier/frp/models/config"
-	"github.com/fatedier/frp/utils/log"
-	"github.com/fatedier/frp/utils/version"
+	"github.com/fatedier/frp/pkg/auth"
+	"github.com/fatedier/frp/pkg/config"
+	"github.com/fatedier/frp/pkg/util/log"
+	"github.com/fatedier/frp/pkg/util/version"
+
+	"github.com/spf13/cobra"
 )
 
 const (

+ 3 - 3
cmd/frpc/sub/status.go

@@ -23,11 +23,11 @@ import (
 	"os"
 	"strings"
 
+	"github.com/fatedier/frp/client"
+	"github.com/fatedier/frp/pkg/config"
+
 	"github.com/rodaine/table"
 	"github.com/spf13/cobra"
-
-	"github.com/fatedier/frp/client"
-	"github.com/fatedier/frp/models/config"
 )
 
 func init() {

+ 3 - 3
cmd/frpc/sub/stcp.go

@@ -18,10 +18,10 @@ import (
 	"fmt"
 	"os"
 
-	"github.com/spf13/cobra"
+	"github.com/fatedier/frp/pkg/config"
+	"github.com/fatedier/frp/pkg/consts"
 
-	"github.com/fatedier/frp/models/config"
-	"github.com/fatedier/frp/models/consts"
+	"github.com/spf13/cobra"
 )
 
 func init() {

+ 3 - 3
cmd/frpc/sub/sudp.go

@@ -18,10 +18,10 @@ import (
 	"fmt"
 	"os"
 
-	"github.com/spf13/cobra"
+	"github.com/fatedier/frp/pkg/config"
+	"github.com/fatedier/frp/pkg/consts"
 
-	"github.com/fatedier/frp/models/config"
-	"github.com/fatedier/frp/models/consts"
+	"github.com/spf13/cobra"
 )
 
 func init() {

+ 2 - 2
cmd/frpc/sub/tcp.go

@@ -20,8 +20,8 @@ import (
 
 	"github.com/spf13/cobra"
 
-	"github.com/fatedier/frp/models/config"
-	"github.com/fatedier/frp/models/consts"
+	"github.com/fatedier/frp/pkg/config"
+	"github.com/fatedier/frp/pkg/consts"
 )
 
 func init() {

+ 2 - 2
cmd/frpc/sub/tcpmux.go

@@ -21,8 +21,8 @@ import (
 
 	"github.com/spf13/cobra"
 
-	"github.com/fatedier/frp/models/config"
-	"github.com/fatedier/frp/models/consts"
+	"github.com/fatedier/frp/pkg/config"
+	"github.com/fatedier/frp/pkg/consts"
 )
 
 func init() {

+ 3 - 3
cmd/frpc/sub/udp.go

@@ -18,10 +18,10 @@ import (
 	"fmt"
 	"os"
 
-	"github.com/spf13/cobra"
+	"github.com/fatedier/frp/pkg/config"
+	"github.com/fatedier/frp/pkg/consts"
 
-	"github.com/fatedier/frp/models/config"
-	"github.com/fatedier/frp/models/consts"
+	"github.com/spf13/cobra"
 )
 
 func init() {

+ 3 - 3
cmd/frpc/sub/xtcp.go

@@ -18,10 +18,10 @@ import (
 	"fmt"
 	"os"
 
-	"github.com/spf13/cobra"
+	"github.com/fatedier/frp/pkg/config"
+	"github.com/fatedier/frp/pkg/consts"
 
-	"github.com/fatedier/frp/models/config"
-	"github.com/fatedier/frp/models/consts"
+	"github.com/spf13/cobra"
 )
 
 func init() {

+ 1 - 1
cmd/frps/main.go

@@ -21,7 +21,7 @@ import (
 	"github.com/fatedier/golib/crypto"
 
 	_ "github.com/fatedier/frp/assets/frps/statik"
-	_ "github.com/fatedier/frp/models/metrics"
+	_ "github.com/fatedier/frp/pkg/metrics"
 )
 
 func main() {

+ 7 - 7
cmd/frps/root.go

@@ -18,14 +18,14 @@ import (
 	"fmt"
 	"os"
 
-	"github.com/spf13/cobra"
-
-	"github.com/fatedier/frp/models/auth"
-	"github.com/fatedier/frp/models/config"
+	"github.com/fatedier/frp/pkg/auth"
+	"github.com/fatedier/frp/pkg/config"
+	"github.com/fatedier/frp/pkg/util/log"
+	"github.com/fatedier/frp/pkg/util/util"
+	"github.com/fatedier/frp/pkg/util/version"
 	"github.com/fatedier/frp/server"
-	"github.com/fatedier/frp/utils/log"
-	"github.com/fatedier/frp/utils/util"
-	"github.com/fatedier/frp/utils/version"
+
+	"github.com/spf13/cobra"
 )
 
 const (

+ 3 - 2
conf/frpc_full.ini

@@ -5,10 +5,11 @@
 server_addr = 0.0.0.0
 server_port = 7000
 
-# if you want to connect frps by http proxy or socks5 proxy, you can set http_proxy here or in global environment variables
+# if you want to connect frps by http proxy or socks5 proxy or ntlm proxy, you can set http_proxy here or in global environment variables
 # it only works when protocol is tcp
 # http_proxy = http://user:passwd@192.168.1.128:8080
 # http_proxy = socks5://user:passwd@192.168.1.128:1080
+# http_proxy = ntlm://user:passwd@192.168.1.128:2080
 
 # console or real logFile path like ./frpc.log
 log_file = ./frpc.log
@@ -46,7 +47,7 @@ user = your_name
 login_fail_exit = true
 
 # communication protocol used to connect to server
-# now it supports tcp and kcp and websocket, default is tcp
+# now it supports tcp, kcp and websocket, default is tcp
 protocol = tcp
 
 # if tls_enable is true, frpc will connect frps by tls

+ 14 - 0
dockerfiles/Dockerfile-for-frpc

@@ -0,0 +1,14 @@
+FROM alpine:3.12.0 AS temp
+
+COPY bin/frpc /tmp
+
+RUN chmod -R 777 /tmp/frpc
+
+
+FROM alpine:3.12.0
+
+WORKDIR /app
+
+COPY --from=temp /tmp/frpc /usr/bin
+
+ENTRYPOINT ["/usr/bin/frpc"]

+ 14 - 0
dockerfiles/Dockerfile-for-frps

@@ -0,0 +1,14 @@
+FROM alpine:3.12.0 AS temp
+
+COPY bin/frps /tmp
+
+RUN chmod -R 777 /tmp/frps
+
+
+FROM alpine:3.12.0
+
+WORKDIR /app
+
+COPY --from=temp /tmp/frps /usr/bin
+
+ENTRYPOINT ["/usr/bin/frps"]

+ 1 - 2
go.mod

@@ -6,9 +6,8 @@ require (
 	github.com/armon/go-socks5 v0.0.0-20160902184237-e75332964ef5
 	github.com/coreos/go-oidc v2.2.1+incompatible
 	github.com/fatedier/beego v0.0.0-20171024143340-6c6a4f5bd5eb
-	github.com/fatedier/golib v0.0.0-20181107124048-ff8cd814b049
+	github.com/fatedier/golib v0.1.1-0.20200901083111-1f870741e185
 	github.com/fatedier/kcp-go v2.0.4-0.20190803094908-fe8645b0a904+incompatible
-	github.com/golang/snappy v0.0.0-20170215233205-553a64147049 // indirect
 	github.com/google/uuid v1.1.1
 	github.com/gorilla/mux v1.7.3
 	github.com/gorilla/websocket v1.4.0

+ 8 - 4
go.sum

@@ -1,4 +1,6 @@
 cloud.google.com/go v0.34.0/go.mod h1:aQUYkXzVsufM+DwF1aE+0xfcU+56JwCaLick0ClmMTw=
+github.com/Azure/go-ntlmssp v0.0.0-20200615164410-66371956d46c h1:/IBSNwUN8+eKzUzbJPqhK839ygXJ82sde8x3ogr6R28=
+github.com/Azure/go-ntlmssp v0.0.0-20200615164410-66371956d46c/go.mod h1:chxPXzSsl7ZWRAuOIE23GDNzjWuZquvFlgA8xmpunjU=
 github.com/NYTimes/gziphandler v0.0.0-20170623195520-56545f4a5d46/go.mod h1:3wb06e3pkSAbeQ52E9H9iFoQsEEwGN64994WTCIhntQ=
 github.com/PuerkitoBio/purell v1.0.0/go.mod h1:c11w/QuzBsJSee3cPx9rAFu61PvFxuPbtSwDGJws/X0=
 github.com/PuerkitoBio/urlesc v0.0.0-20160726150825-5bd2802263f2/go.mod h1:uGdkoq3SwY9Y+13GIhn11/XLaGBb4BfwItxLd5jeuXE=
@@ -25,8 +27,8 @@ github.com/emicklei/go-restful v0.0.0-20170410110728-ff4f55a20633/go.mod h1:otzb
 github.com/evanphx/json-patch v4.2.0+incompatible/go.mod h1:50XU6AFN0ol/bzJsmQLiYLvXMP4fmwYFNcr97nuDLSk=
 github.com/fatedier/beego v0.0.0-20171024143340-6c6a4f5bd5eb h1:wCrNShQidLmvVWn/0PikGmpdP0vtQmnvyRg3ZBEhczw=
 github.com/fatedier/beego v0.0.0-20171024143340-6c6a4f5bd5eb/go.mod h1:wx3gB6dbIfBRcucp94PI9Bt3I0F2c/MyNEWuhzpWiwk=
-github.com/fatedier/golib v0.0.0-20181107124048-ff8cd814b049 h1:teH578mf2ii42NHhIp3PhgvjU5bv+NFMq9fSQR8NaG8=
-github.com/fatedier/golib v0.0.0-20181107124048-ff8cd814b049/go.mod h1:DqIrnl0rp3Zybg9zbJmozTy1n8fYJoX+QoAj9slIkKM=
+github.com/fatedier/golib v0.1.1-0.20200901083111-1f870741e185 h1:2p4W5xYizIYwhiGQgeHOQcRD2O84j0tjD40P6gUCRrk=
+github.com/fatedier/golib v0.1.1-0.20200901083111-1f870741e185/go.mod h1:MUs+IH/MGJNz5Cj2JVJBPZBKw2exON7LzO3HrJHmGiQ=
 github.com/fatedier/kcp-go v2.0.4-0.20190803094908-fe8645b0a904+incompatible h1:ssXat9YXFvigNge/IkkZvFMn8yeYKFX+uI6wn2mLJ74=
 github.com/fatedier/kcp-go v2.0.4-0.20190803094908-fe8645b0a904+incompatible/go.mod h1:YpCOaxj7vvMThhIQ9AfTOPW2sfztQR5WDfs7AflSy4s=
 github.com/fsnotify/fsnotify v1.4.7/go.mod h1:jwhsz4b93w/PPRr/qN1Yymfu8t87LnFCMoQvtojpjFo=
@@ -58,8 +60,8 @@ github.com/golang/protobuf v1.4.0-rc.4.0.20200313231945-b860323f09d0/go.mod h1:W
 github.com/golang/protobuf v1.4.0/go.mod h1:jodUvKwWbYaEsadDk5Fwe5c77LiNKVO9IDvqG2KuDX0=
 github.com/golang/protobuf v1.4.2 h1:+Z5KGCizgyZCbGh1KZqA0fcLLkwbsjIzS4aV2v7wJX0=
 github.com/golang/protobuf v1.4.2/go.mod h1:oDoupMAO8OvCJWAcko0GGGIgR6R6ocIYbsSw735rRwI=
-github.com/golang/snappy v0.0.0-20170215233205-553a64147049 h1:K9KHZbXKpGydfDN0aZrsoHpLJlZsBrGMFWbgLDGnPZk=
-github.com/golang/snappy v0.0.0-20170215233205-553a64147049/go.mod h1:/XxbfmMg8lxefKM7IXC3fBNl/7bRcc72aCRzEWrmP2Q=
+github.com/golang/snappy v0.0.1 h1:Qgr9rKW7uDUkrbSmQeiDsGa8SjGyCOGtuasMWwvp2P4=
+github.com/golang/snappy v0.0.1/go.mod h1:/XxbfmMg8lxefKM7IXC3fBNl/7bRcc72aCRzEWrmP2Q=
 github.com/google/go-cmp v0.3.0/go.mod h1:8QqcDgzrUqlUb/G2PQTWiueGozuR1884gddMywk6iLU=
 github.com/google/go-cmp v0.3.1/go.mod h1:8QqcDgzrUqlUb/G2PQTWiueGozuR1884gddMywk6iLU=
 github.com/google/go-cmp v0.4.0 h1:xsAVV57WRhGj6kEIi8ReJzQlHHqcBYCElAvkovg3B/4=
@@ -174,6 +176,7 @@ github.com/vaughan0/go-ini v0.0.0-20130923145212-a98ad7ee00ec/go.mod h1:owBmyHYM
 github.com/xtaci/lossyconn v0.0.0-20190602105132-8df528c0c9ae h1:J0GxkO96kL4WF+AIT3M4mfUVinOCPgf2uUWYFUzN0sM=
 github.com/xtaci/lossyconn v0.0.0-20190602105132-8df528c0c9ae/go.mod h1:gXtu8J62kEgmN++bm9BVICuT/e8yiLI2KFobd/TRFsE=
 golang.org/x/crypto v0.0.0-20180904163835-0709b304e793/go.mod h1:6SG95UA2DQfeDnfUPMdvaQW0Q7yPrPDi9nlGo2tz2b4=
+golang.org/x/crypto v0.0.0-20190228161510-8dd112bcdc25/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w=
 golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2 h1:VklqNMn3ovrHsnt90PveolxSbWFaJdECFbxSq0Mqo2M=
 golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w=
 golang.org/x/net v0.0.0-20170114055629-f2499483f923/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4=
@@ -181,6 +184,7 @@ golang.org/x/net v0.0.0-20180724234803-3673e40ba225/go.mod h1:mL1N/T3taQHkDXs73r
 golang.org/x/net v0.0.0-20180906233101-161cd47e91fd/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4=
 golang.org/x/net v0.0.0-20181114220301-adae6a3d119a/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4=
 golang.org/x/net v0.0.0-20190108225652-1e06a53dbb7e/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4=
+golang.org/x/net v0.0.0-20190228165749-92fc7df08ae7/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4=
 golang.org/x/net v0.0.0-20190613194153-d28f0bde5980/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s=
 golang.org/x/net v0.0.0-20191004110552-13f9640d40b9/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s=
 golang.org/x/net v0.0.0-20200520004742-59133d7f0dd7 h1:AeiKBIuRw3UomYXSbLy0Mc2dDLfdtbT/IVn4keq83P0=

+ 2 - 2
models/auth/auth.go → pkg/auth/auth.go

@@ -17,8 +17,8 @@ package auth
 import (
 	"fmt"
 
-	"github.com/fatedier/frp/models/consts"
-	"github.com/fatedier/frp/models/msg"
+	"github.com/fatedier/frp/pkg/consts"
+	"github.com/fatedier/frp/pkg/msg"
 
 	"github.com/vaughan0/go-ini"
 )

+ 1 - 1
models/auth/oidc.go → pkg/auth/oidc.go

@@ -18,7 +18,7 @@ import (
 	"context"
 	"fmt"
 
-	"github.com/fatedier/frp/models/msg"
+	"github.com/fatedier/frp/pkg/msg"
 
 	"github.com/coreos/go-oidc"
 	"github.com/vaughan0/go-ini"

+ 2 - 2
models/auth/token.go → pkg/auth/token.go

@@ -18,8 +18,8 @@ import (
 	"fmt"
 	"time"
 
-	"github.com/fatedier/frp/models/msg"
-	"github.com/fatedier/frp/utils/util"
+	"github.com/fatedier/frp/pkg/msg"
+	"github.com/fatedier/frp/pkg/util/util"
 
 	"github.com/vaughan0/go-ini"
 )

+ 3 - 3
models/config/client_common.go → pkg/config/client_common.go

@@ -20,9 +20,9 @@ import (
 	"strconv"
 	"strings"
 
-	ini "github.com/vaughan0/go-ini"
+	"github.com/fatedier/frp/pkg/auth"
 
-	"github.com/fatedier/frp/models/auth"
+	ini "github.com/vaughan0/go-ini"
 )
 
 // ClientCommonConf contains information for a client service. It is
@@ -100,7 +100,7 @@ type ClientCommonConf struct {
 	// set.
 	Start map[string]struct{} `json:"start"`
 	// Protocol specifies the protocol to use when interacting with the server.
-	// Valid values are "tcp", "kcp", and "websocket". By default, this value
+	// Valid values are "tcp", "kcp" and "websocket". By default, this value
 	// is "tcp".
 	Protocol string `json:"protocol"`
 	// TLSEnable specifies whether or not TLS should be used when communicating

+ 3 - 3
models/config/proxy.go → pkg/config/proxy.go

@@ -20,9 +20,9 @@ import (
 	"strconv"
 	"strings"
 
-	"github.com/fatedier/frp/models/consts"
-	"github.com/fatedier/frp/models/msg"
-	"github.com/fatedier/frp/utils/util"
+	"github.com/fatedier/frp/pkg/consts"
+	"github.com/fatedier/frp/pkg/msg"
+	"github.com/fatedier/frp/pkg/util/util"
 
 	ini "github.com/vaughan0/go-ini"
 )

+ 4 - 4
models/config/server_common.go → pkg/config/server_common.go

@@ -19,11 +19,11 @@ import (
 	"strconv"
 	"strings"
 
-	ini "github.com/vaughan0/go-ini"
+	"github.com/fatedier/frp/pkg/auth"
+	plugin "github.com/fatedier/frp/pkg/plugin/server"
+	"github.com/fatedier/frp/pkg/util/util"
 
-	"github.com/fatedier/frp/models/auth"
-	plugin "github.com/fatedier/frp/models/plugin/server"
-	"github.com/fatedier/frp/utils/util"
+	ini "github.com/vaughan0/go-ini"
 )
 
 // ServerCommonConf contains information for a server service. It is

+ 0 - 0
models/config/types.go → pkg/config/types.go


+ 0 - 0
models/config/types_test.go → pkg/config/types_test.go


+ 0 - 0
models/config/value.go → pkg/config/value.go


+ 1 - 1
models/config/visitor.go → pkg/config/visitor.go

@@ -19,7 +19,7 @@ import (
 	"reflect"
 	"strconv"
 
-	"github.com/fatedier/frp/models/consts"
+	"github.com/fatedier/frp/pkg/consts"
 
 	ini "github.com/vaughan0/go-ini"
 )

+ 0 - 0
models/consts/consts.go → pkg/consts/consts.go


+ 0 - 0
models/errors/errors.go → pkg/errors/errors.go


+ 2 - 2
models/metrics/aggregate/server.go → pkg/metrics/aggregate/server.go

@@ -15,8 +15,8 @@
 package aggregate
 
 import (
-	"github.com/fatedier/frp/models/metrics/mem"
-	"github.com/fatedier/frp/models/metrics/prometheus"
+	"github.com/fatedier/frp/pkg/metrics/mem"
+	"github.com/fatedier/frp/pkg/metrics/prometheus"
 	"github.com/fatedier/frp/server/metrics"
 )
 

+ 5 - 3
models/metrics/mem/server.go → pkg/metrics/mem/server.go

@@ -18,9 +18,9 @@ import (
 	"sync"
 	"time"
 
+	"github.com/fatedier/frp/pkg/util/log"
+	"github.com/fatedier/frp/pkg/util/metric"
 	server "github.com/fatedier/frp/server/metrics"
-	"github.com/fatedier/frp/utils/log"
-	"github.com/fatedier/frp/utils/metric"
 )
 
 var sm *serverMetrics = newServerMetrics()
@@ -69,7 +69,9 @@ func (m *serverMetrics) clearUselessInfo() {
 	m.mu.Lock()
 	defer m.mu.Unlock()
 	for name, data := range m.info.ProxyStatistics {
-		if !data.LastCloseTime.IsZero() && time.Since(data.LastCloseTime) > time.Duration(7*24)*time.Hour {
+		if !data.LastCloseTime.IsZero() &&
+			data.LastStartTime.Before(data.LastCloseTime) &&
+			time.Since(data.LastCloseTime) > time.Duration(7*24)*time.Hour {
 			delete(m.info.ProxyStatistics, name)
 			log.Trace("clear proxy [%s]'s statistics data, lastCloseTime: [%s]", name, data.LastCloseTime.String())
 		}

+ 1 - 1
models/metrics/mem/types.go → pkg/metrics/mem/types.go

@@ -17,7 +17,7 @@ package mem
 import (
 	"time"
 
-	"github.com/fatedier/frp/utils/metric"
+	"github.com/fatedier/frp/pkg/util/metric"
 )
 
 const (

+ 1 - 1
models/metrics/metrics.go → pkg/metrics/metrics.go

@@ -1,7 +1,7 @@
 package metrics
 
 import (
-	"github.com/fatedier/frp/models/metrics/aggregate"
+	"github.com/fatedier/frp/pkg/metrics/aggregate"
 )
 
 var EnableMem = aggregate.EnableMem

+ 0 - 0
models/metrics/prometheus/server.go → pkg/metrics/prometheus/server.go


+ 0 - 0
models/msg/ctl.go → pkg/msg/ctl.go


+ 0 - 0
models/msg/msg.go → pkg/msg/msg.go


+ 3 - 3
models/nathole/nathole.go → pkg/nathole/nathole.go

@@ -7,9 +7,9 @@ import (
 	"sync"
 	"time"
 
-	"github.com/fatedier/frp/models/msg"
-	"github.com/fatedier/frp/utils/log"
-	"github.com/fatedier/frp/utils/util"
+	"github.com/fatedier/frp/pkg/msg"
+	"github.com/fatedier/frp/pkg/util/log"
+	"github.com/fatedier/frp/pkg/util/util"
 
 	"github.com/fatedier/golib/errors"
 	"github.com/fatedier/golib/pool"

+ 1 - 1
models/plugin/client/http2https.go → pkg/plugin/client/http2https.go

@@ -23,7 +23,7 @@ import (
 	"net/http/httputil"
 	"strings"
 
-	frpNet "github.com/fatedier/frp/utils/net"
+	frpNet "github.com/fatedier/frp/pkg/util/net"
 )
 
 const PluginHTTP2HTTPS = "http2https"

+ 1 - 1
models/plugin/client/http_proxy.go → pkg/plugin/client/http_proxy.go

@@ -22,7 +22,7 @@ import (
 	"net/http"
 	"strings"
 
-	frpNet "github.com/fatedier/frp/utils/net"
+	frpNet "github.com/fatedier/frp/pkg/util/net"
 
 	frpIo "github.com/fatedier/golib/io"
 	gnet "github.com/fatedier/golib/net"

+ 1 - 1
models/plugin/client/https2http.go → pkg/plugin/client/https2http.go

@@ -23,7 +23,7 @@ import (
 	"net/http/httputil"
 	"strings"
 
-	frpNet "github.com/fatedier/frp/utils/net"
+	frpNet "github.com/fatedier/frp/pkg/util/net"
 )
 
 const PluginHTTPS2HTTP = "https2http"

+ 0 - 0
models/plugin/client/plugin.go → pkg/plugin/client/plugin.go


+ 1 - 1
models/plugin/client/socks5.go → pkg/plugin/client/socks5.go

@@ -20,7 +20,7 @@ import (
 	"log"
 	"net"
 
-	frpNet "github.com/fatedier/frp/utils/net"
+	frpNet "github.com/fatedier/frp/pkg/util/net"
 
 	gosocks5 "github.com/armon/go-socks5"
 )

+ 1 - 1
models/plugin/client/static_file.go → pkg/plugin/client/static_file.go

@@ -19,7 +19,7 @@ import (
 	"net"
 	"net/http"
 
-	frpNet "github.com/fatedier/frp/utils/net"
+	frpNet "github.com/fatedier/frp/pkg/util/net"
 
 	"github.com/gorilla/mux"
 )

+ 0 - 0
models/plugin/client/unix_domain_socket.go → pkg/plugin/client/unix_domain_socket.go


+ 0 - 0
models/plugin/server/http.go → pkg/plugin/server/http.go


+ 2 - 2
models/plugin/server/manager.go → pkg/plugin/server/manager.go

@@ -19,8 +19,8 @@ import (
 	"errors"
 	"fmt"
 
-	"github.com/fatedier/frp/utils/util"
-	"github.com/fatedier/frp/utils/xlog"
+	"github.com/fatedier/frp/pkg/util/util"
+	"github.com/fatedier/frp/pkg/util/xlog"
 )
 
 type Manager struct {

+ 0 - 0
models/plugin/server/plugin.go → pkg/plugin/server/plugin.go


+ 0 - 0
models/plugin/server/tracer.go → pkg/plugin/server/tracer.go


+ 1 - 1
models/plugin/server/types.go → pkg/plugin/server/types.go

@@ -15,7 +15,7 @@
 package plugin
 
 import (
-	"github.com/fatedier/frp/models/msg"
+	"github.com/fatedier/frp/pkg/msg"
 )
 
 type Request struct {

+ 1 - 1
models/proto/udp/udp.go → pkg/proto/udp/udp.go

@@ -20,7 +20,7 @@ import (
 	"sync"
 	"time"
 
-	"github.com/fatedier/frp/models/msg"
+	"github.com/fatedier/frp/pkg/msg"
 
 	"github.com/fatedier/golib/errors"
 	"github.com/fatedier/golib/pool"

+ 0 - 0
models/proto/udp/udp_test.go → pkg/proto/udp/udp_test.go


+ 0 - 19
models/transport/tls.go → pkg/transport/tls.go

@@ -10,25 +10,6 @@ import (
 	"math/big"
 )
 
-/*
-	Example for self-signed certificates by openssl:
-
-	Self CA:
-	openssl genrsa -out ca.key 2048
-	openssl req -x509 -new -nodes -key ca.key -subj "/CN=example.ca.com" -days 5000 -out ca.crt
-
-	Server:
-	openssl genrsa -out server.key 2048
-	openssl req -new -key server.key -subj "/CN=example.server.com" -out server.csr
-	openssl x509 -req -in server.csr -CA ca.crt -CAkey ca.key -CAcreateserial -out server.crt -days 5000
-
-	Client:
-	openssl genrsa -out client.key 2048
-	openssl req -new -key client.key -subj "/CN=example.client.com" -out client.csr
-	openssl x509 -req -in client.csr -CA ca.crt -CAkey ca.key -CAcreateserial -out client.crt -days 5000
-
-*/
-
 func newCustomTLSKeyPair(certfile, keyfile string) (*tls.Certificate, error) {
 	tlsCert, err := tls.LoadX509KeyPair(certfile, keyfile)
 	if err != nil {

+ 0 - 0
utils/limit/reader.go → pkg/util/limit/reader.go


+ 0 - 0
utils/limit/writer.go → pkg/util/limit/writer.go


+ 0 - 0
utils/log/log.go → pkg/util/log/log.go


+ 0 - 0
utils/metric/counter.go → pkg/util/metric/counter.go


+ 0 - 0
utils/metric/counter_test.go → pkg/util/metric/counter_test.go


+ 0 - 0
utils/metric/date_counter.go → pkg/util/metric/date_counter.go


+ 0 - 0
utils/metric/date_counter_test.go → pkg/util/metric/date_counter_test.go


+ 0 - 0
utils/metric/metrics.go → pkg/util/metric/metrics.go


+ 2 - 1
utils/net/conn.go → pkg/util/net/conn.go

@@ -24,7 +24,8 @@ import (
 	"sync/atomic"
 	"time"
 
-	"github.com/fatedier/frp/utils/xlog"
+	"github.com/fatedier/frp/pkg/util/xlog"
+
 	gnet "github.com/fatedier/golib/net"
 	kcp "github.com/fatedier/kcp-go"
 )

+ 0 - 0
utils/net/http.go → pkg/util/net/http.go


+ 0 - 0
utils/net/kcp.go → pkg/util/net/kcp.go


+ 0 - 0
utils/net/listener.go → pkg/util/net/listener.go


+ 0 - 0
utils/net/tls.go → pkg/util/net/tls.go


+ 0 - 0
utils/net/udp.go → pkg/util/net/udp.go


+ 0 - 0
utils/net/websocket.go → pkg/util/net/websocket.go


+ 2 - 2
utils/tcpmux/httpconnect.go → pkg/util/tcpmux/httpconnect.go

@@ -22,8 +22,8 @@ import (
 	"net/http"
 	"time"
 
-	"github.com/fatedier/frp/utils/util"
-	"github.com/fatedier/frp/utils/vhost"
+	"github.com/fatedier/frp/pkg/util/util"
+	"github.com/fatedier/frp/pkg/util/vhost"
 )
 
 type HTTPConnectTCPMuxer struct {

+ 0 - 0
utils/util/http.go → pkg/util/util/http.go


+ 0 - 0
utils/util/util.go → pkg/util/util/util.go


+ 0 - 0
utils/util/util_test.go → pkg/util/util/util_test.go


+ 1 - 1
utils/version/version.go → pkg/util/version/version.go

@@ -19,7 +19,7 @@ import (
 	"strings"
 )
 
-var version string = "0.34.0"
+var version string = "0.34.1"
 
 func Full() string {
 	return version

+ 0 - 0
utils/version/version_test.go → pkg/util/version/version_test.go


+ 2 - 2
utils/vhost/http.go → pkg/util/vhost/http.go

@@ -25,8 +25,8 @@ import (
 	"strings"
 	"time"
 
-	frpLog "github.com/fatedier/frp/utils/log"
-	"github.com/fatedier/frp/utils/util"
+	frpLog "github.com/fatedier/frp/pkg/util/log"
+	"github.com/fatedier/frp/pkg/util/util"
 
 	"github.com/fatedier/golib/pool"
 )

+ 0 - 0
utils/vhost/https.go → pkg/util/vhost/https.go


+ 2 - 2
utils/vhost/resource.go → pkg/util/vhost/resource.go

@@ -19,8 +19,8 @@ import (
 	"io/ioutil"
 	"net/http"
 
-	frpLog "github.com/fatedier/frp/utils/log"
-	"github.com/fatedier/frp/utils/version"
+	frpLog "github.com/fatedier/frp/pkg/util/log"
+	"github.com/fatedier/frp/pkg/util/version"
 )
 
 var (

+ 0 - 0
utils/vhost/reverseproxy.go → pkg/util/vhost/reverseproxy.go


+ 0 - 0
utils/vhost/router.go → pkg/util/vhost/router.go


+ 3 - 3
utils/vhost/vhost.go → pkg/util/vhost/vhost.go

@@ -19,9 +19,9 @@ import (
 	"strings"
 	"time"
 
-	"github.com/fatedier/frp/utils/log"
-	frpNet "github.com/fatedier/frp/utils/net"
-	"github.com/fatedier/frp/utils/xlog"
+	"github.com/fatedier/frp/pkg/util/log"
+	frpNet "github.com/fatedier/frp/pkg/util/net"
+	"github.com/fatedier/frp/pkg/util/xlog"
 
 	"github.com/fatedier/golib/errors"
 )

+ 0 - 0
utils/xlog/ctx.go → pkg/util/xlog/ctx.go


+ 1 - 1
utils/xlog/xlog.go → pkg/util/xlog/xlog.go

@@ -15,7 +15,7 @@
 package xlog
 
 import (
-	"github.com/fatedier/frp/utils/log"
+	"github.com/fatedier/frp/pkg/util/log"
 )
 
 // Logger is not thread safety for operations on prefix

+ 9 - 9
server/control.go

@@ -23,18 +23,18 @@ import (
 	"sync"
 	"time"
 
-	"github.com/fatedier/frp/models/auth"
-	"github.com/fatedier/frp/models/config"
-	"github.com/fatedier/frp/models/consts"
-	frpErr "github.com/fatedier/frp/models/errors"
-	"github.com/fatedier/frp/models/msg"
-	plugin "github.com/fatedier/frp/models/plugin/server"
+	"github.com/fatedier/frp/pkg/auth"
+	"github.com/fatedier/frp/pkg/config"
+	"github.com/fatedier/frp/pkg/consts"
+	frpErr "github.com/fatedier/frp/pkg/errors"
+	"github.com/fatedier/frp/pkg/msg"
+	plugin "github.com/fatedier/frp/pkg/plugin/server"
+	"github.com/fatedier/frp/pkg/util/util"
+	"github.com/fatedier/frp/pkg/util/version"
+	"github.com/fatedier/frp/pkg/util/xlog"
 	"github.com/fatedier/frp/server/controller"
 	"github.com/fatedier/frp/server/metrics"
 	"github.com/fatedier/frp/server/proxy"
-	"github.com/fatedier/frp/utils/util"
-	"github.com/fatedier/frp/utils/version"
-	"github.com/fatedier/frp/utils/xlog"
 
 	"github.com/fatedier/golib/control/shutdown"
 	"github.com/fatedier/golib/crypto"

+ 4 - 4
server/controller/resource.go

@@ -15,13 +15,13 @@
 package controller
 
 import (
-	"github.com/fatedier/frp/models/nathole"
-	plugin "github.com/fatedier/frp/models/plugin/server"
+	"github.com/fatedier/frp/pkg/nathole"
+	plugin "github.com/fatedier/frp/pkg/plugin/server"
+	"github.com/fatedier/frp/pkg/util/tcpmux"
+	"github.com/fatedier/frp/pkg/util/vhost"
 	"github.com/fatedier/frp/server/group"
 	"github.com/fatedier/frp/server/ports"
 	"github.com/fatedier/frp/server/visitor"
-	"github.com/fatedier/frp/utils/tcpmux"
-	"github.com/fatedier/frp/utils/vhost"
 )
 
 // All resource managers and controllers

+ 1 - 1
server/dashboard.go

@@ -21,7 +21,7 @@ import (
 	"time"
 
 	"github.com/fatedier/frp/assets"
-	frpNet "github.com/fatedier/frp/utils/net"
+	frpNet "github.com/fatedier/frp/pkg/util/net"
 
 	"github.com/gorilla/mux"
 	"github.com/prometheus/client_golang/prometheus/promhttp"

+ 5 - 5
server/dashboard_api.go

@@ -18,11 +18,11 @@ import (
 	"encoding/json"
 	"net/http"
 
-	"github.com/fatedier/frp/models/config"
-	"github.com/fatedier/frp/models/consts"
-	"github.com/fatedier/frp/models/metrics/mem"
-	"github.com/fatedier/frp/utils/log"
-	"github.com/fatedier/frp/utils/version"
+	"github.com/fatedier/frp/pkg/config"
+	"github.com/fatedier/frp/pkg/consts"
+	"github.com/fatedier/frp/pkg/metrics/mem"
+	"github.com/fatedier/frp/pkg/util/log"
+	"github.com/fatedier/frp/pkg/util/version"
 
 	"github.com/gorilla/mux"
 )

部分文件因文件數量過多而無法顯示