Files
coredhcp/grpc_server/grpc_server.go
2025-06-30 09:23:28 +08:00

54 lines
1.2 KiB
Go

package grpcServer
import (
"context"
"net"
"google.golang.org/grpc"
"github.com/coredhcp/coredhcp/grpc_server/dhcpServer"
"github.com/coredhcp/coredhcp/logger"
rangeplugin "github.com/coredhcp/coredhcp/plugins/range"
)
var log = logger.GetLogger("grpc")
type staServer struct {
dhcpServer.UnimplementedStaServiceServer
}
func (s *staServer) GetSta(ctx context.Context, req *dhcpServer.MacAddr) (*dhcpServer.StaDhcpInfo, error) {
record := rangeplugin.GetRecord(req.Mac)
if record != nil {
return &dhcpServer.StaDhcpInfo{
Ip: record.IP.String(),
Hostname: record.Hostname,
}, nil
} else {
return nil, nil
}
}
type dhcpService struct {
dhcpServer.UnimplementedDhcpServiceServer
}
func (d *dhcpService) GetDhcp(ctx context.Context, req *dhcpServer.EmptyRequest) (dhcpInfo *dhcpServer.DhcpInfo, err error) {
return rangeplugin.GetDhcpInfo()
}
func Run() {
lis, err := net.Listen("tcp", "127.0.0.1:50051")
if err != nil {
log.Errorf("failed to listen: %v", err)
}
s := grpc.NewServer()
dhcpServer.RegisterStaServiceServer(s, &staServer{})
dhcpServer.RegisterDhcpServiceServer(s, &dhcpService{})
if err := s.Serve(lis); err != nil {
log.Errorf("failed to serve: %v", err)
}
}