first commit

This commit is contained in:
ytc1012
2025-11-18 18:08:48 +08:00
commit de90ad79ea
162 changed files with 28098 additions and 0 deletions

125
main/wstest.go Normal file
View File

@@ -0,0 +1,125 @@
package main
import (
"github.com/go-think/openssl"
"github.com/mitchellh/mapstructure"
"github.com/gorilla/websocket"
"log/slog"
"slgserver/net"
proto2 "slgserver/server/loginserver/proto"
"slgserver/util"
"time"
)
var origin = "httpserver://127.0.0.1:8002/"
var secretKey = []byte("")
var session = ""
func main() {
var dialer *websocket.Dialer
//通过Dialer连接websocket服务器
conn, _, err := dialer.Dial("ws://127.0.0.1:8001", nil)
if err != nil {
slog.Error("dial websocket failed", "error", err)
return
}
go do(conn)
go timeWriter(conn)
time.Sleep(10 * time.Second)
}
func do(conn *websocket.Conn) {
defer func() {
if err := recover(); err != nil {
slog.Error("do panic", "error", err)
}
}()
for {
_, message, _ := conn.ReadMessage()
msg := &net.RspBody{}
if len(secretKey) == 0 {
message, _ = util.UnZip(message)
if err := util.Unmarshal(message, msg); err == nil {
if msg.Name == "handshake" {
h := &net.Handshake{}
mapstructure.Decode(msg.Msg, h)
secretKey = []byte(h.Key)
}
slog.Info("received message", "name", msg.Name)
}
} else {
message, _ = util.UnZip(message)
data, err := util.AesCBCDecrypt(message, secretKey, secretKey, openssl.ZEROS_PADDING)
if err == nil {
if err := util.Unmarshal(data, msg); err == nil {
slog.Info("received message",
"name", msg.Name,
"code", msg.Code,
"payload", msg.Msg)
if msg.Name == "login" {
lr := &proto2.LoginRsp{}
mapstructure.Decode(msg.Msg, lr)
session = lr.Session
}
} else {
secretKey = []byte("")
}
} else {
secretKey = []byte("")
}
}
}
}
func login(conn *websocket.Conn) {
l := &proto2.LoginReq{Ip: "127.0.0.1", Username: "test", Password: "123456"}
send(conn, "login", l)
}
func reLogin(conn *websocket.Conn, session string) {
l := &proto2.ReLoginReq{Session: session}
slog.Info("relogin session", "session", session)
send(conn, "reLogin", l)
}
func logout(conn *websocket.Conn) {
l := &proto2.LogoutReq{UId: 5}
send(conn, "logout", l)
}
func send(conn *websocket.Conn, name string, dd interface{}) {
msg := &net.ReqBody{Name: name, Msg: dd}
if len(secretKey) == 0 {
} else {
if data, err := util.Marshal(msg); err == nil {
data, _ := util.AesCBCEncrypt(data, secretKey, secretKey, openssl.ZEROS_PADDING)
data, _ = util.Zip(data)
conn.WriteMessage(websocket.BinaryMessage, data)
}
}
}
func timeWriter(conn *websocket.Conn) {
time.Sleep(time.Second * 1)
login(conn)
time.Sleep(time.Second * 1)
reLogin(conn, session)
time.Sleep(20 * time.Second)
//time.Sleep(time.Second * 1)
//reLogin(conn, "123")
//
//time.Sleep(time.Second * 1)
//logout(conn)
}