Skip to content

Commit 8526656

Browse files
committed
fix: tls roll back
1 parent bae505d commit 8526656

File tree

3 files changed

+108
-46
lines changed

3 files changed

+108
-46
lines changed

internal/proxy/handler.go

Lines changed: 77 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -87,3 +87,80 @@ func (m *manager) generateHandler(routeProxy *RouteProxy, route *model.Route, po
8787
}
8888
return handler
8989
}
90+
91+
//func (m *manager) handleConnection(conn net.Conn, port uint16, app *fiber.App) {
92+
// defer conn.Close()
93+
//
94+
// // 手动进行TLS握手
95+
// tlsConn := tls.Server(conn, m.certManager.generateDynamicTLSConfig(port))
96+
//
97+
// err := tlsConn.Handshake()
98+
// if err != nil {
99+
// logger.Error("tls handshake failed: ", err)
100+
// return
101+
// }
102+
//
103+
// app.Use(func(c *fiber.Ctx) error {
104+
// if tlsConn.ConnectionState().HandshakeComplete {
105+
// return c.SendString("https!!!")
106+
// } else {
107+
// return c.SendString("http@@@@@")
108+
// }
109+
// })
110+
//
111+
// // 将连接转换为 GoFiber 的 RequestCtx
112+
//
113+
// fiberConn := fiber.AcquireConn(tlsConn, true)
114+
// fiberConn.Serve(app.Handler())
115+
//
116+
// // 释放资源
117+
// fiberConn.Release()
118+
//}
119+
120+
func (m *manager) initFiberAppHandler(app *fiber.App, port uint16) {
121+
// 对app所有请求进行处理
122+
app.Use(func(c *fiber.Ctx) error {
123+
if allRouter, ok := m.portToRouter[port]; ok {
124+
var router *server.Router
125+
domainName := strings.Split(c.Hostname(), ":")[0]
126+
router, ok = allRouter[domainName]
127+
if !ok {
128+
router = allRouter[""]
129+
}
130+
if router != nil {
131+
route := router.FindRoute(c.Path())
132+
if route != nil {
133+
handler := route.Handler
134+
c.Locals("fields", route.DesensitizeFields)
135+
return handler(c)
136+
}
137+
}
138+
}
139+
return fiber.ErrNotFound
140+
})
141+
}
142+
143+
func (m *manager) handleProxyServer(port uint16) {
144+
app := fiber.New(fiber.Config{
145+
DisableStartupMessage: true,
146+
})
147+
148+
m.portToServer[port] = app
149+
go func() {
150+
m.initFiberAppHandler(app, port)
151+
152+
err := app.Listen(fmt.Sprintf(":%d", port))
153+
if err != nil {
154+
logger.Error("服务异常停止: ", err)
155+
delete(m.portToServer, port)
156+
return
157+
}
158+
159+
//err := app.Listener(ln)
160+
//if err != nil {
161+
// logger.Error("启动服务失败: ", err)
162+
// delete(m.portToServer, port)
163+
// return
164+
//}
165+
}()
166+
}

internal/proxy/manager.go

Lines changed: 30 additions & 45 deletions
Original file line numberDiff line numberDiff line change
@@ -1,16 +1,12 @@
11
package proxy
22

33
import (
4-
"crypto/tls"
5-
"fmt"
64
"github.com/gofiber/fiber/v2"
75
logger "github.com/sirupsen/logrus"
8-
"net"
96
"security-gateway/internal/domain"
107
"security-gateway/internal/model"
118
"security-gateway/internal/service"
129
"security-gateway/pkg/server"
13-
"strings"
1410
)
1511

1612
// 反向代理管理器
@@ -164,24 +160,36 @@ func (m *manager) AddRoute(serv *model.Service, route *model.Route, upstream *mo
164160
m.portToRouter[port] = make(map[string]*server.Router)
165161
}
166162
if _, ok := m.portToServer[port]; !ok {
167-
app := fiber.New(fiber.Config{
168-
DisableStartupMessage: true,
169-
})
170-
m.portToServer[port] = app
171-
go func() {
172-
m.initFiberAppHandler(app, port)
173-
174-
ln, _ := net.Listen("tcp", fmt.Sprintf(":%d", port))
175-
176-
ln = tls.NewListener(ln, m.certManager.generateDynamicTLSConfig(port))
177-
178-
err := app.Listener(ln)
179-
if err != nil {
180-
logger.Error("启动服务失败: ", err)
181-
delete(m.portToServer, port)
182-
return
183-
}
184-
}()
163+
m.handleProxyServer(port)
164+
165+
//app := fiber.New(fiber.Config{
166+
// DisableStartupMessage: true,
167+
//})
168+
//m.portToServer[port] = app
169+
//go func() {
170+
// //m.initFiberAppHandler(app, port)
171+
//
172+
// ln, _ := net.Listen("tcp", fmt.Sprintf(":%d", port))
173+
// defer ln.Close()
174+
//
175+
// //ln = tls.NewListener(ln, m.certManager.generateDynamicTLSConfig(port))
176+
//
177+
// for {
178+
// conn, err := ln.Accept()
179+
// if err != nil {
180+
// logger.Error("接收连接失败: ", err)
181+
// continue
182+
// }
183+
// go m.handleConnection(conn, port, app)
184+
// }
185+
//
186+
// //err := app.Listener(ln)
187+
// //if err != nil {
188+
// // logger.Error("启动服务失败: ", err)
189+
// // delete(m.portToServer, port)
190+
// // return
191+
// //}
192+
//}()
185193
}
186194

187195
// 获取已有的路由
@@ -312,29 +320,6 @@ func (m *manager) RemoveRoute(port uint16, domain, path, targetUrl string) {
312320
}
313321
}
314322

315-
func (m *manager) initFiberAppHandler(app *fiber.App, port uint16) {
316-
// 对app所有请求进行处理
317-
app.Use(func(c *fiber.Ctx) error {
318-
if allRouter, ok := m.portToRouter[port]; ok {
319-
var router *server.Router
320-
domainName := strings.Split(c.Hostname(), ":")[0]
321-
router, ok = allRouter[domainName]
322-
if !ok {
323-
router = allRouter[""]
324-
}
325-
if router != nil {
326-
route := router.FindRoute(c.Path())
327-
if route != nil {
328-
handler := route.Handler
329-
c.Locals("fields", route.DesensitizeFields)
330-
return handler(c)
331-
}
332-
}
333-
}
334-
return fiber.ErrNotFound
335-
})
336-
}
337-
338323
func (m *manager) UpdateService(oldService *model.Service, newService *model.Service) {
339324
if newService.ID == 0 || oldService.ID == 0 {
340325
return

internal/service/UpstreamService.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -78,7 +78,7 @@ func (u *upstreamService) Delete(id uint64) (success bool, err error) {
7878

7979
err = database.DB.Transaction(func(tx *gorm.DB) error {
8080
// 删除路由目标关联
81-
if err = tx.Delete(&model.RouteTarget{UpstreamID: &id}).Error; err != nil {
81+
if err = tx.Where(&model.RouteTarget{UpstreamID: &id}).Delete(&model.RouteTarget{}).Error; err != nil {
8282
logger.Errorln(err)
8383
return err
8484
}

0 commit comments

Comments
 (0)