matchCtx added

This commit is contained in:
crusader
2018-09-03 22:36:57 +09:00
parent 3e7b2fda79
commit c15fd7d46e
49 changed files with 505 additions and 542 deletions

View File

@@ -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
}

View File

@@ -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)
}