package wafModels import ( "regexp" "strings" "github.rackspace.com/gorax/tools/util" ) var ( gwNameRe = regexp.MustCompile(`(?i)name\s+(\S*)`) gwModeRe = regexp.MustCompile(`(?i)mode\s+(\S*)`) gwVarDirRe = regexp.MustCompile(`(?i)var-dir\s+(\S*)`) gwLocalDirRe = regexp.MustCompile(`(?i)local-dir\s+(\S*)`) gwServerAddressRe = regexp.MustCompile(`(?i)server-address\s+(\S*)`) gwServerPortRe = regexp.MustCompile(`(?i)server-port\s+(\S*)`) gwListenerAddressRe = regexp.MustCompile(`(?i)listener-address\s+(\S*)`) gwListenerPortRe = regexp.MustCompile(`(?i)listener-port\s+(\S*)`) gwListenerSSLRe = regexp.MustCompile(`(?i)listener-sslEnabled\s+(\S*)`) gwUniqueIDRe = regexp.MustCompile(`(?i)unique-id\s+(\S*)`) gwBr0Re = regexp.MustCompile(`(?i)br0\s+(.*)\n`) gwBr1Re = regexp.MustCompile(`(?i)br1\s+(.*)\n`) ) type Gateway struct { Name string `json:"name"` Mode string `json:"mode"` VarDir string `json:"var_dir"` LocalDir string `json:"local_dir"` ServerAddress string `json:"server_address"` ServerPort string `json:"server_port"` ListenerAddress string `json:"listener_address"` ListenerPort string `json:"listener_port"` ListenerSSLEnabled bool `json:"listener_sslEnabled"` UniqueID string `json:"unique_id"` Br0 string `json:"br0"` Br1 string `json:"br1"` } func ParseGateWay(s string) Gateway { return Gateway{ Name: util.RegexpString(gwNameRe, s), Mode: util.RegexpString(gwModeRe, s), VarDir: util.RegexpString(gwVarDirRe, s), LocalDir: util.RegexpString(gwLocalDirRe, s), ServerAddress: util.RegexpString(gwServerAddressRe, s), ServerPort: util.RegexpString(gwServerPortRe, s), ListenerAddress: util.RegexpString(gwListenerAddressRe, s), ListenerPort: util.RegexpString(gwListenerPortRe, s), ListenerSSLEnabled: func() bool { if strings.Contains(util.RegexpString(gwListenerSSLRe, s), "true") { return true } return false }(), UniqueID: util.RegexpString(gwUniqueIDRe, s), Br0: util.RegexpString(gwBr0Re, s), Br1: util.RegexpString(gwBr1Re, s), } }