66 lines
1.4 KiB
Go
66 lines
1.4 KiB
Go
package plugin
|
|
|
|
import (
|
|
"net"
|
|
|
|
"github.com/Neur0toxine/sshpoke/internal/model"
|
|
pb "github.com/Neur0toxine/sshpoke/pkg/plugin"
|
|
)
|
|
|
|
type Stream struct {
|
|
stream pb.PluginService_EventServer
|
|
}
|
|
|
|
func (s *Stream) Send(event model.Event) error {
|
|
return s.stream.Send(s.eventToMessage(event))
|
|
}
|
|
|
|
func (s *Stream) messageToEvent(event *pb.EventMessage) model.Event {
|
|
return model.Event{
|
|
Type: s.pbEventTypeToApp(event.Type),
|
|
ID: event.Id,
|
|
Container: model.Container{
|
|
IP: net.ParseIP(event.Container.Ip),
|
|
Port: uint16(event.Container.Port),
|
|
Server: event.Container.Server,
|
|
Prefix: event.Container.Prefix,
|
|
Domain: event.Container.Domain,
|
|
},
|
|
}
|
|
}
|
|
|
|
func (s *Stream) eventToMessage(event model.Event) *pb.EventMessage {
|
|
return &pb.EventMessage{
|
|
Type: s.appEventTypeToPB(event.Type),
|
|
Id: event.ID,
|
|
Container: &pb.Container{
|
|
Ip: event.Container.IP.String(),
|
|
Port: uint32(event.Container.Port),
|
|
Server: event.Container.Server,
|
|
Prefix: event.Container.Prefix,
|
|
Domain: event.Container.Domain,
|
|
},
|
|
}
|
|
}
|
|
|
|
func (s *Stream) pbEventTypeToApp(typ pb.EventType) model.EventType {
|
|
val := model.EventType(typ.Number())
|
|
if val > model.EventStart {
|
|
return model.EventUnknown
|
|
}
|
|
return val
|
|
}
|
|
|
|
func (s *Stream) appEventTypeToPB(typ model.EventType) pb.EventType {
|
|
switch typ {
|
|
case 0:
|
|
return pb.EventType_EVENT_START
|
|
case 1:
|
|
return pb.EventType_EVENT_STOP
|
|
case 2:
|
|
fallthrough
|
|
default:
|
|
return pb.EventType_EVENT_UNKNOWN
|
|
}
|
|
}
|