package asaModels import "regexp" var ( STATICNETRE = regexp.MustCompile(`(?i)static\s+\((\S+),(\S+)\)\s+(\S+)\s+(\S+)\s+netmask\s+(\S+)(\s+dns|)`) ) type ( Statics struct { Statics []*StaticNat `json:"statics"` } StaticNat struct { Source string `json:"source"` Destination string `json:"destination"` PublicIp string `json:"public_ip"` PrivateIp string `json:"private_ip"` NetMask string `json:"netmask"` Dns bool `json:"dns"` } ) func ParseStatics(s string) *Statics { n := new(Statics) n.Parse(s) return n } func (s *Statics) Parse(c string) { for _, i := range STATICNETRE.FindAllStringSubmatch(c, -1) { s.Statics = append(s.Statics, &StaticNat{ Source: i[1], Destination: i[2], PublicIp: i[3], PrivateIp: i[4], NetMask: i[5], Dns: func(str *string) bool { if *str != "" { return true } return false }(&i[6]), }) } }