ing
This commit is contained in:
parent
354edcc78a
commit
796da7bbfe
13
config/external/external.go
vendored
13
config/external/external.go
vendored
|
@ -1,13 +0,0 @@
|
|||
package external
|
||||
|
||||
import (
|
||||
"git.loafle.net/overflow/commons-go/config/external/grpc"
|
||||
"git.loafle.net/overflow/commons-go/config/external/kafka"
|
||||
"git.loafle.net/overflow/commons-go/config/external/redis"
|
||||
)
|
||||
|
||||
type External struct {
|
||||
GRPC *grpc.GRPC `json:"grpc"`
|
||||
Kafka *kafka.Kafka `json:"kafka"`
|
||||
Redis *redis.Redis `json:"redis"`
|
||||
}
|
5
core/interfaces/EndableStarter.go
Normal file
5
core/interfaces/EndableStarter.go
Normal file
|
@ -0,0 +1,5 @@
|
|||
package interfaces
|
||||
|
||||
type EndableStarter interface {
|
||||
EndableStart() (<-chan error, error)
|
||||
}
|
6
core/interfaces/Service.go
Normal file
6
core/interfaces/Service.go
Normal file
|
@ -0,0 +1,6 @@
|
|||
package interfaces
|
||||
|
||||
type Service interface {
|
||||
Starter
|
||||
Stopper
|
||||
}
|
5
core/interfaces/Starter.go
Normal file
5
core/interfaces/Starter.go
Normal file
|
@ -0,0 +1,5 @@
|
|||
package interfaces
|
||||
|
||||
type Starter interface {
|
||||
Start() error
|
||||
}
|
7
core/interfaces/Stopper.go
Normal file
7
core/interfaces/Stopper.go
Normal file
|
@ -0,0 +1,7 @@
|
|||
package interfaces
|
||||
|
||||
import "context"
|
||||
|
||||
type Stopper interface {
|
||||
Stop(ctx context.Context) error
|
||||
}
|
108
core/util/executer.go
Normal file
108
core/util/executer.go
Normal file
|
@ -0,0 +1,108 @@
|
|||
package util
|
||||
|
||||
import (
|
||||
"context"
|
||||
"fmt"
|
||||
"reflect"
|
||||
"time"
|
||||
|
||||
"git.loafle.net/overflow/commons-go/core/interfaces"
|
||||
)
|
||||
|
||||
func ExecuteStarters(instances []interface{}, targetTypes []reflect.Type, reverse bool) error {
|
||||
ilen := len(instances)
|
||||
tlen := len(targetTypes)
|
||||
|
||||
if 0 == ilen || 0 == tlen {
|
||||
return nil
|
||||
}
|
||||
|
||||
if reverse {
|
||||
for indexI := tlen - 1; indexI >= 0; indexI-- {
|
||||
if err := executeStarter(instances, targetTypes[indexI]); nil != err {
|
||||
return err
|
||||
}
|
||||
}
|
||||
} else {
|
||||
for indexI := 0; indexI < tlen; indexI++ {
|
||||
if err := executeStarter(instances, targetTypes[indexI]); nil != err {
|
||||
return err
|
||||
}
|
||||
}
|
||||
}
|
||||
return nil
|
||||
}
|
||||
|
||||
func executeStarter(instances []interface{}, t reflect.Type) error {
|
||||
i := findInstanceByType(instances, t)
|
||||
if nil == i {
|
||||
return fmt.Errorf("Cannot find instance[%s]", t.String())
|
||||
}
|
||||
|
||||
s, ok := i.(interfaces.Starter)
|
||||
if !ok {
|
||||
return fmt.Errorf("Instance is not Starter[%s]", t.String())
|
||||
}
|
||||
|
||||
if err := s.Start(); nil != err {
|
||||
return err
|
||||
}
|
||||
return nil
|
||||
}
|
||||
|
||||
func ExecuteStoppers(instances []interface{}, targetTypes []reflect.Type, reverse bool) error {
|
||||
ilen := len(instances)
|
||||
tlen := len(targetTypes)
|
||||
|
||||
if 0 == ilen || 0 == tlen {
|
||||
return nil
|
||||
}
|
||||
|
||||
if reverse {
|
||||
for indexI := tlen - 1; indexI >= 0; indexI-- {
|
||||
if err := executeStarter(instances, targetTypes[indexI]); nil != err {
|
||||
return err
|
||||
}
|
||||
}
|
||||
} else {
|
||||
for indexI := 0; indexI < tlen; indexI++ {
|
||||
if err := executeStarter(instances, targetTypes[indexI]); nil != err {
|
||||
return err
|
||||
}
|
||||
}
|
||||
}
|
||||
return nil
|
||||
}
|
||||
|
||||
func executeStopper(instances []interface{}, t reflect.Type) error {
|
||||
i := findInstanceByType(instances, t)
|
||||
if nil == i {
|
||||
return fmt.Errorf("Cannot find instance[%s]", t.String())
|
||||
}
|
||||
|
||||
s, ok := i.(interfaces.Stopper)
|
||||
if !ok {
|
||||
return fmt.Errorf("Instance is not Stopper[%s]", t.String())
|
||||
}
|
||||
|
||||
ctx, cancel := context.WithTimeout(context.Background(), 5*time.Second)
|
||||
defer cancel()
|
||||
if err := s.Stop(ctx); nil != err {
|
||||
return err
|
||||
}
|
||||
return nil
|
||||
}
|
||||
|
||||
func findInstanceByType(instances []interface{}, t reflect.Type) interface{} {
|
||||
if 0 == len(instances) {
|
||||
return nil
|
||||
}
|
||||
|
||||
for _, i := range instances {
|
||||
if reflect.TypeOf(i) == t {
|
||||
return i
|
||||
}
|
||||
}
|
||||
|
||||
return nil
|
||||
}
|
37
core/util/timestamp.go
Normal file
37
core/util/timestamp.go
Normal file
|
@ -0,0 +1,37 @@
|
|||
package util
|
||||
|
||||
import (
|
||||
"fmt"
|
||||
"strconv"
|
||||
"time"
|
||||
)
|
||||
|
||||
type Timestamp time.Time
|
||||
|
||||
func (t Timestamp) MarshalJSON() ([]byte, error) {
|
||||
ts := time.Time(t).Unix()
|
||||
stamp := fmt.Sprint(ts * 1000)
|
||||
return []byte(stamp), nil
|
||||
}
|
||||
|
||||
func (t *Timestamp) UnmarshalJSON(b []byte) error {
|
||||
ts, err := strconv.Atoi(string(b))
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
*t = Timestamp(time.Unix(int64(ts)/1000, 0))
|
||||
|
||||
return nil
|
||||
}
|
||||
|
||||
func (t Timestamp) String() string {
|
||||
return time.Time(t).String()
|
||||
}
|
||||
|
||||
func Now() Timestamp {
|
||||
return Timestamp(time.Now())
|
||||
}
|
||||
|
||||
func Date(year int, month time.Month, day int) Timestamp {
|
||||
return Timestamp(time.Date(year, month, day, 0, 0, 0, 0, time.UTC))
|
||||
}
|
10
discovery/model/DiscoveryHost.go
Normal file
10
discovery/model/DiscoveryHost.go
Normal file
|
@ -0,0 +1,10 @@
|
|||
package model
|
||||
|
||||
type DiscoveryHost struct {
|
||||
FirstScanRange string `json:"firstScanRange,omitempty"`
|
||||
LastScanRange string `json:"lastScanRange,omitempty"`
|
||||
ExcludeHosts []string `json:"excludeHosts,omitempty"`
|
||||
IncludeHosts []string `json:"includeHosts,omitempty"`
|
||||
|
||||
DiscoveryPort *DiscoveryPort `json:"discoveryPort,omitempty"`
|
||||
}
|
28
discovery/model/DiscoveryPort.go
Normal file
28
discovery/model/DiscoveryPort.go
Normal file
|
@ -0,0 +1,28 @@
|
|||
package model
|
||||
|
||||
type DiscoveryPort struct {
|
||||
FirstScanRange int `json:"firstScanRange,omitempty"`
|
||||
LastScanRange int `json:"lastScanRange,omitempty"`
|
||||
ExcludePorts []int `json:"excludePorts,omitempty"`
|
||||
|
||||
IncludeTCP bool `json:"includeTCP,omitempty"`
|
||||
IncludeUDP bool `json:"includeUDP,omitempty"`
|
||||
|
||||
DiscoveryService *DiscoveryService `json:"discoveryService,omitempty"`
|
||||
}
|
||||
|
||||
func (dp *DiscoveryPort) Contains(port int) bool {
|
||||
if dp.FirstScanRange > port {
|
||||
return false
|
||||
}
|
||||
if dp.LastScanRange < port {
|
||||
return false
|
||||
}
|
||||
for _, p := range dp.ExcludePorts {
|
||||
if p == port {
|
||||
return false
|
||||
}
|
||||
}
|
||||
|
||||
return true
|
||||
}
|
5
discovery/model/DiscoveryService.go
Normal file
5
discovery/model/DiscoveryService.go
Normal file
|
@ -0,0 +1,5 @@
|
|||
package model
|
||||
|
||||
type DiscoveryService struct {
|
||||
IncludeServices []string `json:"includeServices,omitempty"`
|
||||
}
|
7
discovery/model/DiscoveryZone.go
Normal file
7
discovery/model/DiscoveryZone.go
Normal file
|
@ -0,0 +1,7 @@
|
|||
package model
|
||||
|
||||
type DiscoveryZone struct {
|
||||
ExcludePatterns []string `json:"excludePatterns,omitempty"`
|
||||
|
||||
DiscoveryHost *DiscoveryHost `json:"discoveryHost,omitempty"`
|
||||
}
|
18
discovery/model/Host.go
Normal file
18
discovery/model/Host.go
Normal file
|
@ -0,0 +1,18 @@
|
|||
package model
|
||||
|
||||
import (
|
||||
"encoding/json"
|
||||
|
||||
"git.loafle.net/overflow/commons-go/core/util"
|
||||
)
|
||||
|
||||
type Host struct {
|
||||
Zone *Zone `json:"zone"`
|
||||
|
||||
ID json.Number `json:"id,Number,omitempty"`
|
||||
IP string `json:"ip,omitempty"`
|
||||
Mac string `json:"mac,omitempty"`
|
||||
OS string `json:"os,omitempty"`
|
||||
|
||||
DiscoveredDate util.Timestamp `json:"discoveredDate,omitempty"`
|
||||
}
|
21
discovery/model/Port.go
Normal file
21
discovery/model/Port.go
Normal file
|
@ -0,0 +1,21 @@
|
|||
package model
|
||||
|
||||
import (
|
||||
"encoding/json"
|
||||
|
||||
"github.com/google/gopacket"
|
||||
|
||||
"git.loafle.net/overflow/commons-go/core/util"
|
||||
)
|
||||
|
||||
type Port struct {
|
||||
Host *Host `json:"host,omitempty"`
|
||||
|
||||
ID json.Number `json:"id,Number,omitempty"`
|
||||
PortType string `json:"portType,omitempty"`
|
||||
PortNumber json.Number `json:"portNumber,omitempty"`
|
||||
|
||||
DiscoveredDate util.Timestamp `json:"discoveredDate,omitempty"`
|
||||
|
||||
UDPLayer gopacket.Layer `json:"-"`
|
||||
}
|
17
discovery/model/Service.go
Normal file
17
discovery/model/Service.go
Normal file
|
@ -0,0 +1,17 @@
|
|||
package model
|
||||
|
||||
import (
|
||||
"encoding/json"
|
||||
|
||||
"git.loafle.net/overflow/commons-go/core/util"
|
||||
)
|
||||
|
||||
type Service struct {
|
||||
Port *Port `json:"port,omitempty"`
|
||||
|
||||
ID json.Number `json:"id,Number,omitempty"`
|
||||
CryptoType string `json:"cryptoType,omitempty"`
|
||||
ServiceName string `json:"serviceName,omitempty"`
|
||||
|
||||
DiscoveredDate util.Timestamp `json:"discoveredDate,omitempty"`
|
||||
}
|
20
discovery/model/Zone.go
Normal file
20
discovery/model/Zone.go
Normal file
|
@ -0,0 +1,20 @@
|
|||
package model
|
||||
|
||||
import (
|
||||
"encoding/json"
|
||||
"sync"
|
||||
|
||||
"git.loafle.net/overflow/commons-go/core/util"
|
||||
)
|
||||
|
||||
type Zone struct {
|
||||
ID json.Number `json:"id,Number,omitempty"`
|
||||
Network string `json:"network,omitempty"`
|
||||
IP string `json:"ip,omitempty"`
|
||||
Iface string `json:"iface,omitempty"`
|
||||
Mac string `json:"mac,omitempty"`
|
||||
|
||||
DiscoveredDate util.Timestamp `json:"discoveredDate,omitempty"`
|
||||
|
||||
mtx sync.RWMutex `json:"-"`
|
||||
}
|
13
domain/model/Domain.go
Normal file
13
domain/model/Domain.go
Normal file
|
@ -0,0 +1,13 @@
|
|||
package model
|
||||
|
||||
import (
|
||||
"encoding/json"
|
||||
|
||||
"git.loafle.net/overflow/commons-go/core/util"
|
||||
)
|
||||
|
||||
type Domain struct {
|
||||
ID json.Number `json:"id,Number,omitempty"`
|
||||
Name string `json:"name,omitempty"`
|
||||
CreateDate util.Timestamp `json:"createDate,omitempty"`
|
||||
}
|
15
domain/model/DomainMember.go
Normal file
15
domain/model/DomainMember.go
Normal file
|
@ -0,0 +1,15 @@
|
|||
package model
|
||||
|
||||
import (
|
||||
"encoding/json"
|
||||
|
||||
"git.loafle.net/overflow/commons-go/core/util"
|
||||
member "git.loafle.net/overflow/commons-go/member/model"
|
||||
)
|
||||
|
||||
type DomainMember struct {
|
||||
ID json.Number `json:"id,Number,omitempty"`
|
||||
CreateDate util.Timestamp `json:"createDate,omitempty"`
|
||||
Member *member.Member `json:"member,omitempty"`
|
||||
Domain *Domain `json:"domain,omitempty"`
|
||||
}
|
7
external/config/external.go
vendored
Normal file
7
external/config/external.go
vendored
Normal file
|
@ -0,0 +1,7 @@
|
|||
package config
|
||||
|
||||
type External struct {
|
||||
GRPC *GRPC `json:"grpc"`
|
||||
Kafka *Kafka `json:"kafka"`
|
||||
Redis *Redis `json:"redis"`
|
||||
}
|
|
@ -1,4 +1,4 @@
|
|||
package grpc
|
||||
package config
|
||||
|
||||
type GRPC struct {
|
||||
Network string `json:"network"`
|
|
@ -1,4 +1,4 @@
|
|||
package kafka
|
||||
package config
|
||||
|
||||
type Kafka struct {
|
||||
Network string `json:"network"`
|
|
@ -1,4 +1,4 @@
|
|||
package redis
|
||||
package config
|
||||
|
||||
type Redis struct {
|
||||
Network string `json:"network"`
|
|
@ -1,2 +1,4 @@
|
|||
package: git.loafle.net/overflow/commons-go
|
||||
import: []
|
||||
import:
|
||||
- package: github.com/google/gopacket
|
||||
version: ^1.1.14
|
||||
|
|
18
infra/model/Infra.go
Normal file
18
infra/model/Infra.go
Normal file
|
@ -0,0 +1,18 @@
|
|||
package model
|
||||
|
||||
import (
|
||||
"encoding/json"
|
||||
|
||||
"git.loafle.net/overflow/commons-go/core/util"
|
||||
meta "git.loafle.net/overflow/commons-go/meta/model"
|
||||
probe "git.loafle.net/overflow/commons-go/probe/model"
|
||||
target "git.loafle.net/overflow/commons-go/target/model"
|
||||
)
|
||||
|
||||
type Infra struct {
|
||||
ID json.Number `json:"id,Number,omitempty"`
|
||||
MetaInfraType *meta.MetaInfraType `json:"type,omitempty"`
|
||||
CreateDate util.Timestamp `json:"createDate,omitempty"`
|
||||
Probe *probe.Probe `json:"probe,omitempty"`
|
||||
Target *target.Target `json:"target,omitempty"`
|
||||
}
|
15
infra/model/InfraHost.go
Normal file
15
infra/model/InfraHost.go
Normal file
|
@ -0,0 +1,15 @@
|
|||
package model
|
||||
|
||||
import (
|
||||
"encoding/json"
|
||||
|
||||
"git.loafle.net/overflow/commons-go/core/util"
|
||||
)
|
||||
|
||||
type InfraHost struct {
|
||||
Infra
|
||||
InfraOS *InfraOS `json:"os,omitempty"`
|
||||
IP json.Number `json:"ip,omitempty"`
|
||||
Mac json.Number `json:"mac,omitempty"`
|
||||
CreateDate util.Timestamp `json:"createDate,omitempty"`
|
||||
}
|
9
infra/model/InfraMachine.go
Normal file
9
infra/model/InfraMachine.go
Normal file
|
@ -0,0 +1,9 @@
|
|||
package model
|
||||
|
||||
import "git.loafle.net/overflow/commons-go/core/util"
|
||||
|
||||
type InfraMachine struct {
|
||||
Infra
|
||||
Meta string `json:"meta,omitempty"`
|
||||
CreateDate util.Timestamp `json:"createDate,omitempty"`
|
||||
}
|
14
infra/model/InfraOS.go
Normal file
14
infra/model/InfraOS.go
Normal file
|
@ -0,0 +1,14 @@
|
|||
package model
|
||||
|
||||
import (
|
||||
"git.loafle.net/overflow/commons-go/core/util"
|
||||
meta "git.loafle.net/overflow/commons-go/meta/model"
|
||||
)
|
||||
|
||||
type InfraOS struct {
|
||||
Infra
|
||||
InfraMachine *InfraMachine `json:"machine,omitempty"`
|
||||
Meta string `json:"meta,omitempty"`
|
||||
CreateDate util.Timestamp `json:"createDate,omitempty"`
|
||||
MetaInfraVendor *meta.MetaInfraVendor `json:"vendor,omitempty"`
|
||||
}
|
10
infra/model/InfraOSApplication.go
Normal file
10
infra/model/InfraOSApplication.go
Normal file
|
@ -0,0 +1,10 @@
|
|||
package model
|
||||
|
||||
import "git.loafle.net/overflow/commons-go/core/util"
|
||||
|
||||
type InfraOSApplication struct {
|
||||
Infra
|
||||
InfraOS *InfraOS `json:"os,omitempty"`
|
||||
Name string `json:"name,omitempty"`
|
||||
CreateDate util.Timestamp `json:"createDate,omitempty"`
|
||||
}
|
12
infra/model/InfraOSDaemon.go
Normal file
12
infra/model/InfraOSDaemon.go
Normal file
|
@ -0,0 +1,12 @@
|
|||
package model
|
||||
|
||||
import (
|
||||
"git.loafle.net/overflow/commons-go/core/util"
|
||||
)
|
||||
|
||||
type InfraOSDaemon struct {
|
||||
Infra
|
||||
InfraOS *InfraOS `json:"os,omitempty"`
|
||||
Name string `json:"name,omitempty"`
|
||||
CreateDate util.Timestamp `json:"createDate,omitempty"`
|
||||
}
|
18
infra/model/InfraOSPort.go
Normal file
18
infra/model/InfraOSPort.go
Normal file
|
@ -0,0 +1,18 @@
|
|||
package model
|
||||
|
||||
import (
|
||||
"encoding/json"
|
||||
|
||||
"git.loafle.net/overflow/commons-go/core/util"
|
||||
meta "git.loafle.net/overflow/commons-go/meta/model"
|
||||
)
|
||||
|
||||
type InfraOSPort struct {
|
||||
Infra
|
||||
InfraOS *InfraOS `json:"os,omitempty"`
|
||||
CreateDate util.Timestamp `json:"createDate,omitempty"`
|
||||
Port json.Number `json:"port,omitempty"`
|
||||
PortType string `json:"portType,omitempty"`
|
||||
MetaInfraVendor *meta.MetaInfraVendor `json:"vendor,omitempty"`
|
||||
TLSType bool `json:"tlsType,omitempty"`
|
||||
}
|
18
infra/model/InfraServiceApplication.go
Normal file
18
infra/model/InfraServiceApplication.go
Normal file
|
@ -0,0 +1,18 @@
|
|||
package model
|
||||
|
||||
import (
|
||||
"encoding/json"
|
||||
|
||||
"git.loafle.net/overflow/commons-go/core/util"
|
||||
meta "git.loafle.net/overflow/commons-go/meta/model"
|
||||
)
|
||||
|
||||
type InfraServiceApplication struct {
|
||||
Infra
|
||||
InfraHost *InfraHost `json:"host,omitempty"`
|
||||
PortType string `json:"portType,omitempty"`
|
||||
Port json.Number `json:"port,omitempty"`
|
||||
MetaInfraVendor *meta.MetaInfraVendor `json:"vendor,omitempty"`
|
||||
CreateDate util.Timestamp `json:"createDate,omitempty"`
|
||||
TLSType bool `json:"tlsType,omitempty"`
|
||||
}
|
19
member/model/Member.go
Normal file
19
member/model/Member.go
Normal file
|
@ -0,0 +1,19 @@
|
|||
package model
|
||||
|
||||
import (
|
||||
"encoding/json"
|
||||
|
||||
"git.loafle.net/overflow/commons-go/core/util"
|
||||
meta "git.loafle.net/overflow/commons-go/meta/model"
|
||||
)
|
||||
|
||||
type Member struct {
|
||||
ID json.Number `json:"id,Number,omitempty"`
|
||||
Email string `json:"email,omitempty"`
|
||||
Pw string `json:"pw,omitempty"`
|
||||
Name string `json:"name,omitempty"`
|
||||
Phone string `json:"phone,omitempty"`
|
||||
CompanyName string `json:"companyName,omitempty"`
|
||||
CreateDate util.Timestamp `json:"createDate,omitempty"`
|
||||
Status *meta.MetaMemberStatus `json:"status,omitempty"`
|
||||
}
|
14
meta/model/MetaCrawler.go
Normal file
14
meta/model/MetaCrawler.go
Normal file
|
@ -0,0 +1,14 @@
|
|||
package model
|
||||
|
||||
import (
|
||||
"encoding/json"
|
||||
|
||||
"git.loafle.net/overflow/commons-go/core/util"
|
||||
)
|
||||
|
||||
type MetaCrawler struct {
|
||||
ID json.Number `json:"id,Number,omitempty"`
|
||||
Name string `json:"name,omitempty"`
|
||||
Description string `json:"description,omitempty"`
|
||||
CreateDate util.Timestamp `json:"createDate,omitempty"`
|
||||
}
|
13
meta/model/MetaHistoryType.go
Normal file
13
meta/model/MetaHistoryType.go
Normal file
|
@ -0,0 +1,13 @@
|
|||
package model
|
||||
|
||||
import (
|
||||
"encoding/json"
|
||||
|
||||
"git.loafle.net/overflow/commons-go/core/util"
|
||||
)
|
||||
|
||||
type MetaHistoryType struct {
|
||||
ID json.Number `json:"id,Number,omitempty"`
|
||||
Name string `json:"name,omitempty"`
|
||||
CreateDate util.Timestamp `json:"createDate,omitempty"`
|
||||
}
|
13
meta/model/MetaInfraType.go
Normal file
13
meta/model/MetaInfraType.go
Normal file
|
@ -0,0 +1,13 @@
|
|||
package model
|
||||
|
||||
import (
|
||||
"encoding/json"
|
||||
|
||||
"git.loafle.net/overflow/commons-go/core/util"
|
||||
)
|
||||
|
||||
type MetaInfraType struct {
|
||||
ID json.Number `json:"id,Number,omitempty"`
|
||||
Name string `json:"name,omitempty"`
|
||||
CreateDate util.Timestamp `json:"createDate,omitempty"`
|
||||
}
|
14
meta/model/MetaInfraVendor.go
Normal file
14
meta/model/MetaInfraVendor.go
Normal file
|
@ -0,0 +1,14 @@
|
|||
package model
|
||||
|
||||
import (
|
||||
"encoding/json"
|
||||
|
||||
"git.loafle.net/overflow/commons-go/core/util"
|
||||
)
|
||||
|
||||
type MetaInfraVendor struct {
|
||||
ID json.Number `json:"id,Number,omitempty"`
|
||||
Name string `json:"name,omitempty"`
|
||||
CreateDate util.Timestamp `json:"createDate,omitempty"`
|
||||
MetaInfraType *MetaInfraType `json:"metaInfraType,omitempty"`
|
||||
}
|
8
meta/model/MetaMemberStatus.go
Normal file
8
meta/model/MetaMemberStatus.go
Normal file
|
@ -0,0 +1,8 @@
|
|||
package model
|
||||
|
||||
import "encoding/json"
|
||||
|
||||
type MetaMemberStatus struct {
|
||||
ID json.Number `json:"id,Number,omitempty"`
|
||||
Name string `json:"name,omitempty"`
|
||||
}
|
8
meta/model/MetaNoAuthProbeStatus.go
Normal file
8
meta/model/MetaNoAuthProbeStatus.go
Normal file
|
@ -0,0 +1,8 @@
|
|||
package model
|
||||
|
||||
import "encoding/json"
|
||||
|
||||
type MetaNoAuthProbeStatus struct {
|
||||
ID json.Number `json:"id,Number,omitempty"`
|
||||
Name string `json:"name,omitempty"`
|
||||
}
|
8
meta/model/MetaProbeStatus.go
Normal file
8
meta/model/MetaProbeStatus.go
Normal file
|
@ -0,0 +1,8 @@
|
|||
package model
|
||||
|
||||
import "encoding/json"
|
||||
|
||||
type MetaProbeStatus struct {
|
||||
ID json.Number `json:"id,Number,omitempty"`
|
||||
Name string `json:"name,omitempty"`
|
||||
}
|
14
meta/model/MetaProbeTaskType.go
Normal file
14
meta/model/MetaProbeTaskType.go
Normal file
|
@ -0,0 +1,14 @@
|
|||
package model
|
||||
|
||||
import (
|
||||
"encoding/json"
|
||||
|
||||
"git.loafle.net/overflow/commons-go/core/util"
|
||||
)
|
||||
|
||||
type MetaProbeTaskType struct {
|
||||
ID json.Number `json:"id,Number,omitempty"`
|
||||
Name string `json:"name,omitempty"`
|
||||
Description string `json:"description,omitempty"`
|
||||
CreateDate util.Timestamp `json:"createDate,omitempty"`
|
||||
}
|
16
meta/model/MetaSensorDisplayItem.go
Normal file
16
meta/model/MetaSensorDisplayItem.go
Normal file
|
@ -0,0 +1,16 @@
|
|||
package model
|
||||
|
||||
import (
|
||||
"encoding/json"
|
||||
|
||||
"git.loafle.net/overflow/commons-go/core/util"
|
||||
)
|
||||
|
||||
type MetaSensorDisplayItem struct {
|
||||
ID json.Number `json:"id,Number,omitempty"`
|
||||
Name string `json:"name,omitempty"`
|
||||
Crawler *MetaCrawler `json:"crawler,omitempty"`
|
||||
Unit *MetaSensorItemUnit `json:"unit,omitempty"`
|
||||
CreateDate util.Timestamp `json:"createDate,omitempty"`
|
||||
ItemType *MetaSensorItemType `json:"itemType,omitempty"`
|
||||
}
|
15
meta/model/MetaSensorItem.go
Normal file
15
meta/model/MetaSensorItem.go
Normal file
|
@ -0,0 +1,15 @@
|
|||
package model
|
||||
|
||||
import (
|
||||
"encoding/json"
|
||||
|
||||
"git.loafle.net/overflow/commons-go/core/util"
|
||||
)
|
||||
|
||||
type MetaSensorItem struct {
|
||||
ID json.Number `json:"id,Number,omitempty"`
|
||||
MetaSensorItemType *MetaSensorItemType `json:"metaSensorItemType,omitempty"`
|
||||
Key string `json:"key,omitempty"`
|
||||
Name string `json:"name,omitempty"`
|
||||
CreateDate util.Timestamp `json:"createDate,omitempty"`
|
||||
}
|
18
meta/model/MetaSensorItemKey.go
Normal file
18
meta/model/MetaSensorItemKey.go
Normal file
|
@ -0,0 +1,18 @@
|
|||
package model
|
||||
|
||||
import (
|
||||
"encoding/json"
|
||||
|
||||
"git.loafle.net/overflow/commons-go/core/util"
|
||||
)
|
||||
|
||||
type MetaSensorItemKey struct {
|
||||
ID json.Number `json:"id,Number,omitempty"`
|
||||
Item *MetaSensorItem `json:"item,omitempty"`
|
||||
Key string `json:"key,omitempty"`
|
||||
Froms string `json:"froms,omitempty"`
|
||||
Option string `json:"option,omitempty"`
|
||||
Crawler *MetaCrawler `json:"crawler,omitempty"`
|
||||
CreateDate util.Timestamp `json:"createDate,omitempty"`
|
||||
Unit *MetaSensorItemUnit `json:"unit,omitempty"`
|
||||
}
|
14
meta/model/MetaSensorItemType.go
Normal file
14
meta/model/MetaSensorItemType.go
Normal file
|
@ -0,0 +1,14 @@
|
|||
package model
|
||||
|
||||
import (
|
||||
"encoding/json"
|
||||
|
||||
"git.loafle.net/overflow/commons-go/core/util"
|
||||
)
|
||||
|
||||
type MetaSensorItemType struct {
|
||||
ID json.Number `json:"id,Number,omitempty"`
|
||||
Name string `json:"name,omitempty"`
|
||||
Description string `json:"description,omitempty"`
|
||||
CreateDate util.Timestamp `json:"createDate,omitempty"`
|
||||
}
|
14
meta/model/MetaSensorItemUnit.go
Normal file
14
meta/model/MetaSensorItemUnit.go
Normal file
|
@ -0,0 +1,14 @@
|
|||
package model
|
||||
|
||||
import (
|
||||
"encoding/json"
|
||||
|
||||
"git.loafle.net/overflow/commons-go/core/util"
|
||||
)
|
||||
|
||||
type MetaSensorItemUnit struct {
|
||||
ID json.Number `json:"id,Number,omitempty"`
|
||||
Unit string `json:"unit,omitempty"`
|
||||
CreateDate util.Timestamp `json:"createDate,omitempty"`
|
||||
Mark string `json:"mark,omitempty"`
|
||||
}
|
8
meta/model/MetaSensorStatus.go
Normal file
8
meta/model/MetaSensorStatus.go
Normal file
|
@ -0,0 +1,8 @@
|
|||
package model
|
||||
|
||||
import "encoding/json"
|
||||
|
||||
type MetaSensorStatus struct {
|
||||
ID json.Number `json:"id,Number,omitempty"`
|
||||
Name string `json:"name,omitempty"`
|
||||
}
|
|
@ -1,9 +1,9 @@
|
|||
package probe
|
||||
package config
|
||||
|
||||
import "time"
|
||||
|
||||
const (
|
||||
AuthConfigFileName = "auth.json"
|
||||
ConfigFileName = "auth.json"
|
||||
)
|
||||
|
||||
type AuthStateType int
|
18
noauthprobe/constants/protocol.go
Normal file
18
noauthprobe/constants/protocol.go
Normal file
|
@ -0,0 +1,18 @@
|
|||
package constants
|
||||
|
||||
const (
|
||||
HTTPEntry_Auth = "/auth"
|
||||
)
|
||||
|
||||
const (
|
||||
HTTPRequestHeaderKey_NoAuthProbe_Method = "overFlow-NoAuthProbe-Method"
|
||||
HTTPRequestHeaderKey_NoAuthProbe_Info = "overFlow-NoAuthProbe-Info"
|
||||
HTTPRequestHeaderKey_NoAuthProbe_TempProbeKey = "overFlow-NoAuthProbe-TempProbeKey"
|
||||
|
||||
HTTPResponseHeaderKey_NoAuthProbe_SetTempProbeKey = "overFlow-NoAuthProbe-SetTempProbeKey"
|
||||
)
|
||||
|
||||
const (
|
||||
HTTPRequestHeaderValue_NoAuthProbe_Method_Regist = "REGIST"
|
||||
HTTPRequestHeaderValue_NoAuthProbe_Method_Connect = "CONNECT"
|
||||
)
|
21
noauthprobe/model/NoAuthProbe.go
Normal file
21
noauthprobe/model/NoAuthProbe.go
Normal file
|
@ -0,0 +1,21 @@
|
|||
package model
|
||||
|
||||
import (
|
||||
"encoding/json"
|
||||
|
||||
"git.loafle.net/overflow/commons-go/core/util"
|
||||
domain "git.loafle.net/overflow/commons-go/domain/model"
|
||||
meta "git.loafle.net/overflow/commons-go/meta/model"
|
||||
probe "git.loafle.net/overflow/commons-go/probe/model"
|
||||
)
|
||||
|
||||
type NoAuthProbe struct {
|
||||
ID json.Number `json:"id,Number,omitempty"`
|
||||
Description string `json:"description,omitempty"`
|
||||
Status *meta.MetaNoAuthProbeStatus `json:"status,omitempty"`
|
||||
TempProbeKey string `json:"tempProbeKey,omitempty"`
|
||||
CreateDate util.Timestamp `json:"createDate,omitempty"`
|
||||
APIKey string `json:"apiKey,omitempty"`
|
||||
Domain *domain.DomainMember `json:"domain,omitempty"`
|
||||
Probe *probe.Probe `json:"probe,omitempty"`
|
||||
}
|
6
noauthprobe/model/NoAuthProbeDescription.go
Normal file
6
noauthprobe/model/NoAuthProbeDescription.go
Normal file
|
@ -0,0 +1,6 @@
|
|||
package model
|
||||
|
||||
type NoAuthProbeDescription struct {
|
||||
Host *NoAuthProbeDescriptionHost `json:"host,omitempty"`
|
||||
Network *NoAuthProbeDescriptionNetwork `json:"network,omitempty"`
|
||||
}
|
11
noauthprobe/model/NoAuthProbeDescriptionHost.go
Normal file
11
noauthprobe/model/NoAuthProbeDescriptionHost.go
Normal file
|
@ -0,0 +1,11 @@
|
|||
package model
|
||||
|
||||
type NoAuthProbeDescriptionHost struct {
|
||||
Name string `json:"name,omitempty"`
|
||||
OS string `json:"os,omitempty"`
|
||||
Platform string `json:"paltform,omitempty"`
|
||||
PlatformFamily string `json:"platformFamily,omitempty"`
|
||||
PlatformVersion string `json:"platformVersion,omitempty"`
|
||||
KernelVersion string `json:"kernelVersion,omitempty"`
|
||||
HostID string `json:"hostID,omitempty"`
|
||||
}
|
8
noauthprobe/model/NoAuthProbeDescriptionNetwork.go
Normal file
8
noauthprobe/model/NoAuthProbeDescriptionNetwork.go
Normal file
|
@ -0,0 +1,8 @@
|
|||
package model
|
||||
|
||||
type NoAuthProbeDescriptionNetwork struct {
|
||||
Name string `json:"name,omitempty"`
|
||||
Address string `json:"address,omitempty"`
|
||||
Gateway string `json:"gateway,omitempty"`
|
||||
MacAddress string `json:"macAddress,omitempty"`
|
||||
}
|
18
notification/model/Notification.go
Normal file
18
notification/model/Notification.go
Normal file
|
@ -0,0 +1,18 @@
|
|||
package model
|
||||
|
||||
import (
|
||||
"encoding/json"
|
||||
|
||||
"git.loafle.net/overflow/commons-go/core/util"
|
||||
member "git.loafle.net/overflow/commons-go/member/model"
|
||||
)
|
||||
|
||||
type Notification struct {
|
||||
ID json.Number `json:"id,Number,omitempty"`
|
||||
CreateDate util.Timestamp `json:"date,omitempty"`
|
||||
Title string `json:"title,omitempty"`
|
||||
Message string `json:"message,omitempty"`
|
||||
Member *member.Member `json:"member,omitempty"`
|
||||
ConfirmDate util.Timestamp `json:"confirmDate,omitempty"`
|
||||
Url string `json:"url,omitempty"`
|
||||
}
|
|
@ -1,4 +1,4 @@
|
|||
package probe
|
||||
package config
|
||||
|
||||
type Account struct {
|
||||
Name string `json:"name"`
|
|
@ -1,4 +1,4 @@
|
|||
package probe
|
||||
package config
|
||||
|
||||
type Central struct {
|
||||
Host string `json:"host"`
|
|
@ -1,4 +1,4 @@
|
|||
package probe
|
||||
package config
|
||||
|
||||
type ProbeStateType int
|
||||
|
17
probe/constants/protocol.go
Normal file
17
probe/constants/protocol.go
Normal file
|
@ -0,0 +1,17 @@
|
|||
package constants
|
||||
|
||||
const (
|
||||
HTTPEntry_Probe = "/probe"
|
||||
HTTPEntry_Data = "/data"
|
||||
)
|
||||
|
||||
const (
|
||||
HTTPRequestHeaderKey_Probe_Method = "overFlow-Probe-Method"
|
||||
HTTPRequestHeaderKey_Probe_ProbeKey = "overFlow-Probe-ProbeKey"
|
||||
|
||||
HTTPResponseHeaderKey_Probe_SetEncryptionKey = "overFlow-Probe-SetEncryptionKey"
|
||||
)
|
||||
|
||||
const (
|
||||
HTTPRequestHeaderValue_Probe_Method_Connect = "CONNECT"
|
||||
)
|
25
probe/model/Probe.go
Normal file
25
probe/model/Probe.go
Normal file
|
@ -0,0 +1,25 @@
|
|||
package model
|
||||
|
||||
import (
|
||||
"encoding/json"
|
||||
|
||||
"git.loafle.net/overflow/commons-go/core/util"
|
||||
domain "git.loafle.net/overflow/commons-go/domain/model"
|
||||
member "git.loafle.net/overflow/commons-go/member/model"
|
||||
meta "git.loafle.net/overflow/commons-go/meta/model"
|
||||
)
|
||||
|
||||
type Probe struct {
|
||||
ID json.Number `json:"id,Number,omitempty"`
|
||||
Status *meta.MetaProbeStatus `json:"status,omitempty"`
|
||||
CreateDate util.Timestamp `json:"createDate,omitempty"`
|
||||
Domain *domain.Domain `json:"domain,omitempty"`
|
||||
ProbeKey string `json:"probeKey,omitempty"`
|
||||
EncryptionKey string `json:"encryptionKey,omitempty"`
|
||||
TargetCount int `json:"targetCount,omitempty"`
|
||||
SensorCount int `json:"sensorCount,omitempty"`
|
||||
DisplayName string `json:"displayName,omitempty"`
|
||||
Cidr string `json:"cidr,omitempty"`
|
||||
AuthorizeDate util.Timestamp `json:"authorizeDate,omitempty"`
|
||||
AuthorizeMember *member.Member `json:"authorizeMember,omitempty"`
|
||||
}
|
20
probe/model/ProbeTask.go
Normal file
20
probe/model/ProbeTask.go
Normal file
|
@ -0,0 +1,20 @@
|
|||
package model
|
||||
|
||||
import (
|
||||
"encoding/json"
|
||||
|
||||
"git.loafle.net/overflow/commons-go/core/util"
|
||||
meta "git.loafle.net/overflow/commons-go/meta/model"
|
||||
)
|
||||
|
||||
type ProbeTask struct {
|
||||
ID json.Number `json:"id,Number,omitempty"`
|
||||
MetaProbeTaskType *meta.MetaProbeTaskType `json:"metaProbeTaskType,omitempty"`
|
||||
Probe *Probe `json:"probe,omitempty"`
|
||||
Data string `json:"data,omitempty"`
|
||||
CreateDate util.Timestamp `json:"createDate,omitempty"`
|
||||
SendDate util.Timestamp `json:"sendDate,omitempty"`
|
||||
StartDate util.Timestamp `json:"startDate,omitempty"`
|
||||
EndDate util.Timestamp `json:"endDate,omitempty"`
|
||||
Succeed bool `json:"succeed,omitempty"`
|
||||
}
|
19
sensor/model/Sensor.go
Normal file
19
sensor/model/Sensor.go
Normal file
|
@ -0,0 +1,19 @@
|
|||
package model
|
||||
|
||||
import (
|
||||
"encoding/json"
|
||||
|
||||
"git.loafle.net/overflow/commons-go/core/util"
|
||||
meta "git.loafle.net/overflow/commons-go/meta/model"
|
||||
target "git.loafle.net/overflow/commons-go/target/model"
|
||||
)
|
||||
|
||||
type Sensor struct {
|
||||
ID json.Number `json:"id,Number,omitempty"`
|
||||
CreateDate util.Timestamp `json:"createDate,omitempty"`
|
||||
Description string `json:"description,omitempty"`
|
||||
MetaSensorStatus *meta.MetaSensorStatus `json:"status,omitempty"`
|
||||
Target *target.Target `json:"target,omitempty"`
|
||||
Crawler *meta.MetaCrawler `json:"crawler,omitempty"`
|
||||
CrawlerInputItems string `json:"crawlerInputItems,omitempty"`
|
||||
}
|
15
sensor/model/SensorItem.go
Normal file
15
sensor/model/SensorItem.go
Normal file
|
@ -0,0 +1,15 @@
|
|||
package model
|
||||
|
||||
import (
|
||||
"encoding/json"
|
||||
|
||||
"git.loafle.net/overflow/commons-go/core/util"
|
||||
meta "git.loafle.net/overflow/commons-go/meta/model"
|
||||
)
|
||||
|
||||
type SensorItem struct {
|
||||
ID json.Number `json:"id,Number,omitempty"`
|
||||
Sensor *Sensor `json:"sensor,omitempty"`
|
||||
MetaSensorItem *meta.MetaSensorItem `json:"item,omitempty"`
|
||||
CreateDate util.Timestamp `json:"createDate,omitempty"`
|
||||
}
|
13
sensor/model/SensorItemDependency.go
Normal file
13
sensor/model/SensorItemDependency.go
Normal file
|
@ -0,0 +1,13 @@
|
|||
package model
|
||||
|
||||
import (
|
||||
"encoding/json"
|
||||
|
||||
meta "git.loafle.net/overflow/commons-go/meta/model"
|
||||
)
|
||||
|
||||
type SensorItemDependency struct {
|
||||
ID json.Number `json:"id,Number,omitempty"`
|
||||
DisplayItem *meta.MetaSensorDisplayItem `json:"displayItem,omitempty"`
|
||||
SensorItem *meta.MetaSensorItemKey `json:"sensorItem,omitempty"`
|
||||
}
|
10
sensorconfig/model/Connection.go
Normal file
10
sensorconfig/model/Connection.go
Normal file
|
@ -0,0 +1,10 @@
|
|||
package model
|
||||
|
||||
import "encoding/json"
|
||||
|
||||
type Connection struct {
|
||||
IP string `json:"ip,omitempty"`
|
||||
Port json.Number `json:"port,Number,omitempty"`
|
||||
PortType string `json:"portType,omitempty"`
|
||||
SSL bool `json:"ssl,omitempty"`
|
||||
}
|
6
sensorconfig/model/Crawler.go
Normal file
6
sensorconfig/model/Crawler.go
Normal file
|
@ -0,0 +1,6 @@
|
|||
package model
|
||||
|
||||
type Crawler struct {
|
||||
Name string `json:"name,omitempty"`
|
||||
Container string `json:"container,omitempty"`
|
||||
}
|
7
sensorconfig/model/Item.go
Normal file
7
sensorconfig/model/Item.go
Normal file
|
@ -0,0 +1,7 @@
|
|||
package model
|
||||
|
||||
type Item struct {
|
||||
Keys []Keys `json:"keys,omitempty"`
|
||||
QueryInfo *QueryInfo `json:"queryInfo,omitempty"`
|
||||
MappingInfo *MappingInfo `json:"mappingInfo,omitempty"`
|
||||
}
|
6
sensorconfig/model/Keys.go
Normal file
6
sensorconfig/model/Keys.go
Normal file
|
@ -0,0 +1,6 @@
|
|||
package model
|
||||
|
||||
type Keys struct {
|
||||
Metric string `json:"metric,omitempty"`
|
||||
Key string `json:"key,omitempty"`
|
||||
}
|
8
sensorconfig/model/MappingInfo.go
Normal file
8
sensorconfig/model/MappingInfo.go
Normal file
|
@ -0,0 +1,8 @@
|
|||
package model
|
||||
|
||||
type MappingInfo struct {
|
||||
ParseDirection string `json:"parseDirection,omitempty"`
|
||||
ArrayColumns []string `json:"arrayColumns,omitempty"`
|
||||
KeyColumns []string `json:"keyColumns,omitempty"`
|
||||
ValueColumn string `json:"valueColumn,omitempty"`
|
||||
}
|
6
sensorconfig/model/QueryInfo.go
Normal file
6
sensorconfig/model/QueryInfo.go
Normal file
|
@ -0,0 +1,6 @@
|
|||
package model
|
||||
|
||||
type QueryInfo struct {
|
||||
Query string `json:"query,omitempty"`
|
||||
Extend map[string]interface{} `json:"extend,omitempty"`
|
||||
}
|
46
sensorconfig/model/ResultSet.go
Normal file
46
sensorconfig/model/ResultSet.go
Normal file
|
@ -0,0 +1,46 @@
|
|||
package model
|
||||
|
||||
import "encoding/json"
|
||||
|
||||
type ResultSetter interface {
|
||||
AddRow(row []string)
|
||||
GetMeta() map[string]json.Number
|
||||
GetData() map[string]string
|
||||
}
|
||||
|
||||
type ResultSet struct {
|
||||
Item *Item `json:"item,omitempty"`
|
||||
Rows [][]string `json:"rows,omitempty"`
|
||||
Meta map[string]json.Number `json:"meta,omitempty"`
|
||||
}
|
||||
|
||||
func (rs *ResultSet) AddRow(row []string) {
|
||||
rs.Rows = append(rs.Rows, row)
|
||||
}
|
||||
|
||||
func (rs *ResultSet) GetMeta() map[string]json.Number {
|
||||
return rs.Meta
|
||||
}
|
||||
|
||||
func NewResultSet(item *Item) ResultSetter {
|
||||
if nil == item.MappingInfo {
|
||||
item.MappingInfo = &MappingInfo{}
|
||||
}
|
||||
rs := &ResultSet{}
|
||||
rs.Item = item
|
||||
rs.Rows = make([][]string, 0)
|
||||
|
||||
switch item.MappingInfo.ParseDirection {
|
||||
case "row":
|
||||
rsr := &ResultSetRow{}
|
||||
rsr.ResultSet = rs
|
||||
rsr.setMeta()
|
||||
return rsr
|
||||
default:
|
||||
rsc := &ResultSetCol{}
|
||||
rsc.ResultSet = rs
|
||||
rsc.setMeta()
|
||||
return rsc
|
||||
}
|
||||
|
||||
}
|
85
sensorconfig/model/ResultSetCol.go
Normal file
85
sensorconfig/model/ResultSetCol.go
Normal file
|
@ -0,0 +1,85 @@
|
|||
package model
|
||||
|
||||
import (
|
||||
"encoding/json"
|
||||
"fmt"
|
||||
"strconv"
|
||||
"strings"
|
||||
|
||||
cuej "git.loafle.net/commons_go/util/encoding/json"
|
||||
)
|
||||
|
||||
type ResultSetCol struct {
|
||||
*ResultSet
|
||||
}
|
||||
|
||||
func (rsc *ResultSetCol) setMeta() {
|
||||
meta := rsc.Item.Keys
|
||||
arrayColumns := rsc.Item.MappingInfo.ArrayColumns
|
||||
|
||||
if nil == rsc.Meta {
|
||||
rsc.Meta = make(map[string]json.Number, 0)
|
||||
}
|
||||
|
||||
for i := 0; i < len(meta); i++ {
|
||||
rsc.Meta[meta[i].Key] = json.Number(strconv.Itoa(i))
|
||||
}
|
||||
|
||||
if nil != arrayColumns {
|
||||
for i := 0; i < len(arrayColumns); i++ {
|
||||
if _, ok := rsc.Meta[arrayColumns[i]]; ok {
|
||||
continue
|
||||
}
|
||||
rsc.Meta[arrayColumns[i]] = json.Number(strconv.Itoa(i + len(meta)))
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
func (rsc *ResultSetCol) GetData() map[string]string {
|
||||
return rsc.parse()
|
||||
}
|
||||
|
||||
func (rsc *ResultSetCol) parse() map[string]string {
|
||||
metrics := rsc.Item.Keys
|
||||
arrayColumns := rsc.Item.MappingInfo.ArrayColumns
|
||||
|
||||
rm := make(map[string]string, 0)
|
||||
|
||||
for i := 0; i < len(rsc.Rows); i++ {
|
||||
row := rsc.Rows[i]
|
||||
for j := 0; j < len(row); j++ {
|
||||
arrayValue := make([]string, 0)
|
||||
|
||||
if nil != arrayColumns {
|
||||
for k := 0; k < len(arrayColumns); k++ {
|
||||
idxN := rsc.Meta[arrayColumns[k]]
|
||||
idx, _ := cuej.NumberToInt(idxN)
|
||||
arrayValue = append(arrayValue, row[idx])
|
||||
}
|
||||
}
|
||||
|
||||
for k := 0; k < len(metrics); k++ {
|
||||
metric := metrics[k].Metric
|
||||
metric = rsc.convertMetric(metric, arrayValue)
|
||||
rm[metric] = row[k]
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
return rm
|
||||
}
|
||||
|
||||
func (rsc *ResultSetCol) convertMetric(metric string, arrayValue []string) string {
|
||||
if nil == arrayValue || 0 == len(arrayValue) {
|
||||
return metric
|
||||
}
|
||||
|
||||
convertChar := "$"
|
||||
|
||||
for i := 0; i < len(arrayValue); i++ {
|
||||
convertStr := fmt.Sprintf("%s%d", convertChar, i)
|
||||
metric = strings.Replace(metric, convertStr, arrayValue[i], -1)
|
||||
}
|
||||
return metric
|
||||
}
|
105
sensorconfig/model/ResultSetRow.go
Normal file
105
sensorconfig/model/ResultSetRow.go
Normal file
|
@ -0,0 +1,105 @@
|
|||
package model
|
||||
|
||||
import (
|
||||
"encoding/json"
|
||||
"fmt"
|
||||
"strconv"
|
||||
"strings"
|
||||
|
||||
cuej "git.loafle.net/commons_go/util/encoding/json"
|
||||
)
|
||||
|
||||
type ResultSetRow struct {
|
||||
*ResultSet
|
||||
}
|
||||
|
||||
func (rsr *ResultSetRow) setMeta() {
|
||||
meta := make([]string, 0)
|
||||
arrayColumns := rsr.Item.MappingInfo.ArrayColumns
|
||||
keyColumns := rsr.Item.MappingInfo.KeyColumns
|
||||
valueColumn := rsr.Item.MappingInfo.ValueColumn
|
||||
|
||||
if nil != arrayColumns {
|
||||
for _, c := range arrayColumns {
|
||||
meta = append(meta, c)
|
||||
}
|
||||
}
|
||||
|
||||
if nil != keyColumns {
|
||||
for _, c := range keyColumns {
|
||||
meta = append(meta, c)
|
||||
}
|
||||
}
|
||||
|
||||
if "" != valueColumn {
|
||||
meta = append(meta, valueColumn)
|
||||
}
|
||||
|
||||
if nil == rsr.Meta {
|
||||
rsr.Meta = make(map[string]json.Number, 0)
|
||||
}
|
||||
|
||||
for i := 0; i < len(meta); i++ {
|
||||
rsr.Meta[meta[i]] = json.Number(strconv.Itoa(i))
|
||||
}
|
||||
}
|
||||
|
||||
func (rsr *ResultSetRow) GetData() map[string]string {
|
||||
return rsr.parse()
|
||||
}
|
||||
|
||||
func (rsr *ResultSetRow) parse() map[string]string {
|
||||
valueColumn := rsr.Item.MappingInfo.ValueColumn
|
||||
|
||||
rm := make(map[string]string, 0)
|
||||
|
||||
for _, row := range rsr.Rows {
|
||||
key := rsr.makeKey(row)
|
||||
if "" == key {
|
||||
continue
|
||||
}
|
||||
idx, _ := cuej.NumberToInt(rsr.Meta[valueColumn])
|
||||
rm[key] = row[idx]
|
||||
}
|
||||
|
||||
return rm
|
||||
}
|
||||
|
||||
func (rsr *ResultSetRow) makeKey(data []string) string {
|
||||
metrics := rsr.Item.Keys
|
||||
arrayColumns := rsr.Item.MappingInfo.ArrayColumns
|
||||
keyColumns := rsr.Item.MappingInfo.KeyColumns
|
||||
keys := rsr.Item.Keys
|
||||
|
||||
findIndex := -1
|
||||
|
||||
Loop:
|
||||
for _, keyColumn := range keyColumns {
|
||||
idx, _ := cuej.NumberToInt(rsr.Meta[keyColumn])
|
||||
row := data[idx]
|
||||
for i := 0; i < len(keys); i++ {
|
||||
if row == keys[i].Key {
|
||||
findIndex = i
|
||||
break Loop
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if 0 > findIndex {
|
||||
return ""
|
||||
}
|
||||
|
||||
metric := metrics[findIndex].Metric
|
||||
|
||||
convertChar := "$"
|
||||
|
||||
if nil != arrayColumns {
|
||||
for i := 0; i < len(arrayColumns); i++ {
|
||||
convertStr := fmt.Sprintf("%s%d", convertChar, i)
|
||||
idx, _ := cuej.NumberToInt(rsr.Meta[arrayColumns[i]])
|
||||
replaceString := data[idx]
|
||||
metric = strings.Replace(metric, convertStr, "'"+replaceString+"'", -1)
|
||||
}
|
||||
}
|
||||
return metric
|
||||
}
|
5
sensorconfig/model/Schedule.go
Normal file
5
sensorconfig/model/Schedule.go
Normal file
|
@ -0,0 +1,5 @@
|
|||
package model
|
||||
|
||||
type Schedule struct {
|
||||
Interval string `json:"interval,omitempty"`
|
||||
}
|
11
sensorconfig/model/SensorConfig.go
Normal file
11
sensorconfig/model/SensorConfig.go
Normal file
|
@ -0,0 +1,11 @@
|
|||
package model
|
||||
|
||||
import "encoding/json"
|
||||
|
||||
type SensorConfig struct {
|
||||
ID json.Number `json:"id,Number,omitempty"`
|
||||
Target *Target `json:"target,omitempty"`
|
||||
Schedule *Schedule `json:"schedule,omitempty"`
|
||||
Crawler *Crawler `json:"crawler,omitempty"`
|
||||
Items []Item `json:"items,omitempty"`
|
||||
}
|
6
sensorconfig/model/Target.go
Normal file
6
sensorconfig/model/Target.go
Normal file
|
@ -0,0 +1,6 @@
|
|||
package model
|
||||
|
||||
type Target struct {
|
||||
Auth map[string]interface{} `json:"auth,omitempty"`
|
||||
Connection *Connection `json:"connection,omitempty"`
|
||||
}
|
14
target/model/Target.go
Normal file
14
target/model/Target.go
Normal file
|
@ -0,0 +1,14 @@
|
|||
package model
|
||||
|
||||
import (
|
||||
"encoding/json"
|
||||
|
||||
"git.loafle.net/overflow/commons-go/core/util"
|
||||
)
|
||||
|
||||
type Target struct {
|
||||
ID json.Number `json:"id,Number,omitempty"`
|
||||
CreateDate util.Timestamp `json:"createDate,omitempty"`
|
||||
DisplayName string `json:"displayName,omitempty"`
|
||||
Description string `json:"description,omitempty"`
|
||||
}
|
Loading…
Reference in New Issue
Block a user