matchCtx added
This commit is contained in:
29
ssh/ssh.go
29
ssh/ssh.go
@@ -10,38 +10,33 @@ import (
|
||||
|
||||
type SSHMatcher struct {
|
||||
osm.Matchers
|
||||
meta osm.Metadata
|
||||
}
|
||||
|
||||
func (ssh *SSHMatcher) Key() string {
|
||||
func (m *SSHMatcher) Key() string {
|
||||
return "SSH"
|
||||
}
|
||||
|
||||
func (ssh *SSHMatcher) Name() string {
|
||||
func (m *SSHMatcher) Name(matchCtx *osm.MatchCtx) string {
|
||||
name := "SSH"
|
||||
if v, ok := ssh.meta["softwareversion"]; ok {
|
||||
name = name + " (" + v + ")"
|
||||
if v, ok := matchCtx.GetAttribute("softwareversion"); ok {
|
||||
name = name + " (" + v.(string) + ")"
|
||||
}
|
||||
return name
|
||||
}
|
||||
|
||||
func (ssh *SSHMatcher) Meta() osm.Metadata {
|
||||
return ssh.meta
|
||||
}
|
||||
|
||||
func (ssh *SSHMatcher) IsPrePacket() bool {
|
||||
func (m *SSHMatcher) IsPrePacket(matchCtx *osm.MatchCtx) bool {
|
||||
return true
|
||||
}
|
||||
|
||||
func (ssh *SSHMatcher) HasResponse(index int) bool {
|
||||
func (m *SSHMatcher) HasResponse(matchCtx *osm.MatchCtx, index int) bool {
|
||||
return true
|
||||
}
|
||||
|
||||
func (ssh *SSHMatcher) IsError(info osm.MatchInfo, index int, packet *osm.Packet) bool {
|
||||
func (m *SSHMatcher) IsError(matchCtx *osm.MatchCtx, index int, packet *osm.Packet) bool {
|
||||
return false
|
||||
}
|
||||
|
||||
func (ssh *SSHMatcher) Match(info osm.MatchInfo, index int, packet *osm.Packet) error {
|
||||
func (m *SSHMatcher) Match(matchCtx *osm.MatchCtx, index int, packet *osm.Packet) error {
|
||||
|
||||
if packet == nil || !packet.Valid() {
|
||||
return osm.NoPacketReceivedError()
|
||||
@@ -64,11 +59,11 @@ func (ssh *SSHMatcher) Match(info osm.MatchInfo, index int, packet *osm.Packet)
|
||||
softwareversion := versions[2]
|
||||
|
||||
if strings.HasPrefix(protoversion, "1") || strings.HasPrefix(protoversion, "2") {
|
||||
ssh.meta["protoversion"] = protoversion
|
||||
ssh.meta["softwareversion"] = softwareversion
|
||||
matchCtx.SetAttribute("protoversion", protoversion)
|
||||
matchCtx.SetAttribute("softwareversion", softwareversion)
|
||||
|
||||
if len(temp) > 1 {
|
||||
ssh.meta["comments"] = temp[1]
|
||||
matchCtx.SetAttribute("comments", temp[1])
|
||||
}
|
||||
return nil
|
||||
}
|
||||
@@ -80,6 +75,6 @@ func (ssh *SSHMatcher) Match(info osm.MatchInfo, index int, packet *osm.Packet)
|
||||
|
||||
func NewMatcher() osm.Matcher {
|
||||
m := &SSHMatcher{}
|
||||
m.meta = osm.NewMetadata()
|
||||
|
||||
return m
|
||||
}
|
||||
|
||||
@@ -15,11 +15,12 @@ func TestSSH(t *testing.T) {
|
||||
if err != nil {
|
||||
t.Error(err)
|
||||
}
|
||||
|
||||
defer conn.Close()
|
||||
|
||||
for i := 0; i < m.PacketCount(); i++ {
|
||||
_, err := conn.Write(m.Packet(i).Buffer)
|
||||
matchCtx := osm.NewMatchCtx("192.168.1.10", 22)
|
||||
|
||||
for i := 0; i < m.PacketCount(matchCtx); i++ {
|
||||
_, err := conn.Write(m.Packet(matchCtx, i).Buffer)
|
||||
if err != nil {
|
||||
t.Error(err)
|
||||
}
|
||||
@@ -32,6 +33,6 @@ func TestSSH(t *testing.T) {
|
||||
return
|
||||
}
|
||||
}
|
||||
t.Log(m.Name())
|
||||
t.Log(m.Meta())
|
||||
t.Log(m.Name(matchCtx))
|
||||
t.Log(matchCtx)
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user