lqyan 923c68a2ea feat(vpn服务器): VPN 服务器的简单实现
WebSocket的数据写入网卡,将网卡读取的数据写入WebSocket
2024-11-15 23:03:26 +08:00

58 lines
1.2 KiB
Go
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

package main
import (
"crypto/tls"
"fmt"
"log"
"net/http"
"github.com/gorilla/websocket"
"yuchat-proxy/eth"
)
const (
tcpAddress = "172.20.0.1:1080"
)
var e = eth.Init()
var upgrader = websocket.Upgrader{
CheckOrigin: func(r *http.Request) bool {
return true // 允许来自任何来源的连接
},
}
func wsHandler(w http.ResponseWriter, r *http.Request) {
fmt.Println("有新的客户端连接了")
conn, err := upgrader.Upgrade(w, r, nil)
if err != nil {
fmt.Println("websocket连接失败:", err)
return
}
// remoteConn, err := net.Dial("tcp", tcpAddress)
// if err != nil {
// log.Printf("本地服务连接失败 %s: %v", tcpAddress, err)
// return
// }
fmt.Println("本地服务启动成功", tcpAddress)
go e.WsToEthernet(conn)
go e.EthernetPacketsToWs(conn)
// go common.WsToTcpHandler(remoteConn, conn)
// go common.TcpToWsHandler(remoteConn, conn)
}
func main() {
server := &http.Server{
Addr: ":8080",
TLSConfig: &tls.Config{
InsecureSkipVerify: true, // 可选
},
}
http.HandleFunc("/ws", wsHandler)
fmt.Println("WebSocket服务已启动地址ws://localhost:8080/ws")
if err := server.ListenAndServe(); err != nil {
log.Fatalf("Server failed: %s", err)
}
}