Files
frp-panel/biz/client/rpc_handler.go
VaalaCat f07c03ce68 feat: fx
2025-04-26 10:52:21 +00:00

54 lines
1.8 KiB
Go

package client
import (
"context"
"fmt"
"runtime/debug"
"github.com/VaalaCat/frp-panel/conf"
"github.com/VaalaCat/frp-panel/pb"
"github.com/VaalaCat/frp-panel/services/app"
"github.com/VaalaCat/frp-panel/utils/logger"
"google.golang.org/protobuf/proto"
)
func HandleServerMessage(appInstance app.Application, req *pb.ServerMessage) *pb.ClientMessage {
defer func() {
if err := recover(); err != nil {
fmt.Printf("\n--------------------\ncatch panic !!! \nhandle server message error: %v, stack: %s\n--------------------\n", err, debug.Stack())
}
}()
c := context.Background()
logger.Logger(c).Infof("client get a server message, origin is: [%+v]", req)
switch req.Event {
case pb.Event_EVENT_UPDATE_FRPC:
return app.WrapperServerMsg(appInstance, req, UpdateFrpcHander)
case pb.Event_EVENT_REMOVE_FRPC:
return app.WrapperServerMsg(appInstance, req, RemoveFrpcHandler)
case pb.Event_EVENT_START_FRPC:
return app.WrapperServerMsg(appInstance, req, StartFRPCHandler)
case pb.Event_EVENT_STOP_FRPC:
return app.WrapperServerMsg(appInstance, req, StopFRPCHandler)
case pb.Event_EVENT_START_STREAM_LOG:
return app.WrapperServerMsg(appInstance, req, StartSteamLogHandler)
case pb.Event_EVENT_STOP_STREAM_LOG:
return app.WrapperServerMsg(appInstance, req, StopSteamLogHandler)
case pb.Event_EVENT_START_PTY_CONNECT:
return app.WrapperServerMsg(appInstance, req, StartPTYConnect)
case pb.Event_EVENT_GET_PROXY_INFO:
return app.WrapperServerMsg(appInstance, req, GetProxyConfig)
case pb.Event_EVENT_PING:
rawData, _ := proto.Marshal(conf.GetVersion().ToProto())
return &pb.ClientMessage{
Event: pb.Event_EVENT_PONG,
Data: rawData,
}
default:
}
return &pb.ClientMessage{
Event: pb.Event_EVENT_ERROR,
Data: []byte("unknown event"),
}
}