瀏覽代碼

add: master

Ben 1 年之前
父節點
當前提交
8511188f04
共有 2 個文件被更改,包括 20 次插入0 次删除
  1. 1 0
      cmd/master.go
  2. 19 0
      internal/server/server.go

+ 1 - 0
cmd/master.go

@@ -11,6 +11,7 @@ func main() {
 	r.Use(gin.Recovery())
 	r.GET("/config", server.Config)
 	r.POST("/register", server.Register)
+	r.GET("/secret/random", server.SecretRandom)
 	r.GET("/list", server.List)
 	r.GET("/secret", server.Secret)
 	r.GET("/health", server.Health)

+ 19 - 0
internal/server/server.go

@@ -5,6 +5,7 @@ import (
 	"be-vpn/internal/model"
 	"github.com/gin-gonic/gin"
 	"log"
+	"math/rand"
 	"net/http"
 	"sync"
 	"time"
@@ -79,6 +80,24 @@ func List(c *gin.Context) {
 	})
 }
 
+func SecretRandom(c *gin.Context) {
+	locker.RLock()
+	defer locker.RUnlock()
+
+	random := rand.Intn(len(nodes))
+
+	for i, node := range nodes {
+		if i == random {
+			c.Header("Content-Disposition", "attachment; filename=client.ovpn")
+			c.Data(http.StatusOK, "plain/text", []byte(node.Secret))
+			return
+		}
+	}
+	c.JSON(http.StatusNotFound, gin.H{
+		"message": "not found",
+	})
+}
+
 func Secret(c *gin.Context) {
 	locker.RLock()
 	defer locker.RUnlock()