mirror of
https://github.com/akyaiy/GoSally-mvp.git
synced 2026-01-03 17:52:24 +00:00
add debug information to lua_handler and route
This commit is contained in:
@@ -21,9 +21,11 @@ func (gs *GatewayServer) Handle(w http.ResponseWriter, r *http.Request) {
|
|||||||
if sessionUUID == "" {
|
if sessionUUID == "" {
|
||||||
sessionUUID = uuid.New().String()
|
sessionUUID = uuid.New().String()
|
||||||
}
|
}
|
||||||
|
gs.x.SLog.Debug("new request", slog.String("session-uuid", sessionUUID), slog.Group("connection", slog.String("ip", r.RemoteAddr)))
|
||||||
|
|
||||||
w.Header().Set("X-Session-UUID", sessionUUID)
|
w.Header().Set("X-Session-UUID", sessionUUID)
|
||||||
if !gs.sm.Add(sessionUUID) {
|
if !gs.sm.Add(sessionUUID) {
|
||||||
|
gs.x.SLog.Debug("session is busy", slog.String("session-uuid", sessionUUID))
|
||||||
rpc.WriteError(w, &rpc.RPCResponse{
|
rpc.WriteError(w, &rpc.RPCResponse{
|
||||||
Error: map[string]any{
|
Error: map[string]any{
|
||||||
"code": rpc.ErrSessionIsBusy,
|
"code": rpc.ErrSessionIsBusy,
|
||||||
@@ -36,6 +38,7 @@ func (gs *GatewayServer) Handle(w http.ResponseWriter, r *http.Request) {
|
|||||||
|
|
||||||
body, err := io.ReadAll(r.Body)
|
body, err := io.ReadAll(r.Body)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
|
gs.x.SLog.Debug("failed to read body", slog.String("err", err.Error()))
|
||||||
w.WriteHeader(http.StatusBadRequest)
|
w.WriteHeader(http.StatusBadRequest)
|
||||||
rpc.WriteError(w, &rpc.RPCResponse{
|
rpc.WriteError(w, &rpc.RPCResponse{
|
||||||
JSONRPC: rpc.JSONRPCVersion,
|
JSONRPC: rpc.JSONRPCVersion,
|
||||||
@@ -55,6 +58,7 @@ func (gs *GatewayServer) Handle(w http.ResponseWriter, r *http.Request) {
|
|||||||
var single rpc.RPCRequest
|
var single rpc.RPCRequest
|
||||||
if batch == nil {
|
if batch == nil {
|
||||||
if err := json.Unmarshal(body, &single); err != nil {
|
if err := json.Unmarshal(body, &single); err != nil {
|
||||||
|
gs.x.SLog.Debug("failed to parse json", slog.String("err", err.Error()))
|
||||||
w.WriteHeader(http.StatusBadRequest)
|
w.WriteHeader(http.StatusBadRequest)
|
||||||
rpc.WriteError(w, &rpc.RPCResponse{
|
rpc.WriteError(w, &rpc.RPCResponse{
|
||||||
JSONRPC: rpc.JSONRPCVersion,
|
JSONRPC: rpc.JSONRPCVersion,
|
||||||
|
|||||||
@@ -38,6 +38,7 @@ func addInitiatorHeaders(sid string, req *http.Request, headers http.Header) {
|
|||||||
// I will be only glad.
|
// I will be only glad.
|
||||||
// TODO: make this huge function more harmonious by dividing responsibilities
|
// TODO: make this huge function more harmonious by dividing responsibilities
|
||||||
func (h *HandlerV1) handleLUA(sid string, r *http.Request, req *rpc.RPCRequest, path string) *rpc.RPCResponse {
|
func (h *HandlerV1) handleLUA(sid string, r *http.Request, req *rpc.RPCRequest, path string) *rpc.RPCResponse {
|
||||||
|
h.x.SLog.Debug("handling LUA", slog.String("session-id", sid))
|
||||||
L := lua.NewState()
|
L := lua.NewState()
|
||||||
defer L.Close()
|
defer L.Close()
|
||||||
|
|
||||||
@@ -243,6 +244,7 @@ func (h *HandlerV1) handleLUA(sid string, r *http.Request, req *rpc.RPCRequest,
|
|||||||
L.PreloadModule("log", loadLogMod)
|
L.PreloadModule("log", loadLogMod)
|
||||||
L.PreloadModule("net", loadNetMod)
|
L.PreloadModule("net", loadNetMod)
|
||||||
|
|
||||||
|
h.x.SLog.Debug("preparing environment", slog.String("session-id", sid))
|
||||||
prep := filepath.Join(*h.x.Config.Conf.Node.ComDir, "_prepare.lua")
|
prep := filepath.Join(*h.x.Config.Conf.Node.ComDir, "_prepare.lua")
|
||||||
if _, err := os.Stat(prep); err == nil {
|
if _, err := os.Stat(prep); err == nil {
|
||||||
if err := L.DoFile(prep); err != nil {
|
if err := L.DoFile(prep); err != nil {
|
||||||
@@ -250,6 +252,7 @@ func (h *HandlerV1) handleLUA(sid string, r *http.Request, req *rpc.RPCRequest,
|
|||||||
return rpc.NewError(rpc.ErrInternalError, rpc.ErrInternalErrorS, nil, req.ID)
|
return rpc.NewError(rpc.ErrInternalError, rpc.ErrInternalErrorS, nil, req.ID)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
h.x.SLog.Debug("executing script", slog.String("script", path), slog.String("session-id", sid))
|
||||||
if err := L.DoFile(path); err != nil {
|
if err := L.DoFile(path); err != nil {
|
||||||
h.x.SLog.Error("script error", slog.String("script", path), slog.String("error", err.Error()))
|
h.x.SLog.Error("script error", slog.String("script", path), slog.String("error", err.Error()))
|
||||||
return rpc.NewError(rpc.ErrInternalError, rpc.ErrInternalErrorS, nil, req.ID)
|
return rpc.NewError(rpc.ErrInternalError, rpc.ErrInternalErrorS, nil, req.ID)
|
||||||
@@ -279,6 +282,7 @@ func (h *HandlerV1) handleLUA(sid string, r *http.Request, req *rpc.RPCRequest,
|
|||||||
|
|
||||||
tag := sessionTbl.RawGetString("__gosally_internal")
|
tag := sessionTbl.RawGetString("__gosally_internal")
|
||||||
if tag.Type() != lua.LTString || tag.String() != fmt.Sprint(seed) {
|
if tag.Type() != lua.LTString || tag.String() != fmt.Sprint(seed) {
|
||||||
|
h.x.SLog.Debug("stock session module is not imported: wrong seed", slog.String("script", path), slog.String("session-id", sid))
|
||||||
return rpc.NewResponse(map[string]any{
|
return rpc.NewResponse(map[string]any{
|
||||||
"responsible-node": h.cs.UUID32,
|
"responsible-node": h.cs.UUID32,
|
||||||
}, req.ID)
|
}, req.ID)
|
||||||
@@ -292,6 +296,7 @@ func (h *HandlerV1) handleLUA(sid string, r *http.Request, req *rpc.RPCRequest,
|
|||||||
}
|
}
|
||||||
|
|
||||||
if errVal := outTbl.RawGetString("error"); errVal != lua.LNil {
|
if errVal := outTbl.RawGetString("error"); errVal != lua.LNil {
|
||||||
|
h.x.SLog.Debug("catch error table", slog.String("script", path), slog.String("session-id", sid))
|
||||||
if errTbl, ok := errVal.(*lua.LTable); ok {
|
if errTbl, ok := errVal.(*lua.LTable); ok {
|
||||||
code := rpc.ErrInternalError
|
code := rpc.ErrInternalError
|
||||||
message := rpc.ErrInternalErrorS
|
message := rpc.ErrInternalErrorS
|
||||||
|
|||||||
Reference in New Issue
Block a user