From ccef9380475008631c0caa648173421a8659266d Mon Sep 17 00:00:00 2001 From: davidnewhall2 Date: Thu, 26 Dec 2019 22:07:00 -0800 Subject: [PATCH 1/5] dpi data is no longer here --- core/unifi/Gopkg.lock | 41 ---------- core/unifi/Gopkg.toml | 3 - core/unifi/clients.go | 181 ++++++++++++++++++++---------------------- core/unifi/go.mod | 9 +++ core/unifi/go.sum | 5 ++ 5 files changed, 100 insertions(+), 139 deletions(-) delete mode 100644 core/unifi/Gopkg.lock delete mode 100644 core/unifi/Gopkg.toml create mode 100644 core/unifi/go.mod create mode 100644 core/unifi/go.sum diff --git a/core/unifi/Gopkg.lock b/core/unifi/Gopkg.lock deleted file mode 100644 index 82983fff..00000000 --- a/core/unifi/Gopkg.lock +++ /dev/null @@ -1,41 +0,0 @@ -# This file is autogenerated, do not edit; changes may be undone by the next 'dep ensure'. - - -[[projects]] - digest = "1:ffe9824d294da03b391f44e1ae8281281b4afc1bdaa9588c9097785e3af10cec" - name = "github.com/davecgh/go-spew" - packages = ["spew"] - pruneopts = "UT" - revision = "8991bc29aa16c548c550c7ff78260e27b9ab7c73" - version = "v1.1.1" - -[[projects]] - digest = "1:0028cb19b2e4c3112225cd871870f2d9cf49b9b4276531f03438a88e94be86fe" - name = "github.com/pmezard/go-difflib" - packages = ["difflib"] - pruneopts = "UT" - revision = "792786c7400a136282c1664665ae0a8db921c6c2" - version = "v1.0.0" - -[[projects]] - digest = "1:8548c309c65a85933a625be5e7d52b6ac927ca30c56869fae58123b8a77a75e1" - name = "github.com/stretchr/testify" - packages = ["assert"] - pruneopts = "UT" - revision = "221dbe5ed46703ee255b1da0dec05086f5035f62" - version = "v1.4.0" - -[[projects]] - digest = "1:4d2e5a73dc1500038e504a8d78b986630e3626dc027bc030ba5c75da257cdb96" - name = "gopkg.in/yaml.v2" - packages = ["."] - pruneopts = "UT" - revision = "51d6538a90f86fe93ac480b35f37b2be17fef232" - version = "v2.2.2" - -[solve-meta] - analyzer-name = "dep" - analyzer-version = 1 - input-imports = ["github.com/stretchr/testify/assert"] - solver-name = "gps-cdcl" - solver-version = 1 diff --git a/core/unifi/Gopkg.toml b/core/unifi/Gopkg.toml deleted file mode 100644 index 5c879c7d..00000000 --- a/core/unifi/Gopkg.toml +++ /dev/null @@ -1,3 +0,0 @@ -[prune] - go-tests = true - unused-packages = true diff --git a/core/unifi/clients.go b/core/unifi/clients.go index b9bcad71..2639d02e 100644 --- a/core/unifi/clients.go +++ b/core/unifi/clients.go @@ -39,99 +39,90 @@ type Clients []*Client // Client defines all the data a connected-network client contains. type Client struct { - SourceName string `json:"-"` - Anomalies int64 `json:"anomalies,omitempty"` - ApMac string `json:"ap_mac"` - ApName string `json:"-"` - AssocTime int64 `json:"assoc_time"` - Blocked bool `json:"blocked,omitempty"` - Bssid string `json:"bssid"` - BytesR int64 `json:"bytes-r"` - Ccq int64 `json:"ccq"` - Channel FlexInt `json:"channel"` - DevCat FlexInt `json:"dev_cat"` - DevFamily FlexInt `json:"dev_family"` - DevID FlexInt `json:"dev_id"` - DevVendor FlexInt `json:"dev_vendor,omitempty"` - DhcpendTime int `json:"dhcpend_time,omitempty"` - Satisfaction FlexInt `json:"satisfaction,omitempty"` - DpiStats struct { - App FlexInt - Cat FlexInt - RxBytes FlexInt - RxPackets FlexInt - TxBytes FlexInt - TxPackets FlexInt - } `json:"dpi_stats"` - DpiStatsLastUpdated int64 `json:"dpi_stats_last_updated"` - Essid string `json:"essid"` - FirstSeen int64 `json:"first_seen"` - FixedIP string `json:"fixed_ip"` - GwMac string `json:"gw_mac"` - GwName string `json:"-"` - Hostname string `json:"hostname"` - ID string `json:"_id"` - IP string `json:"ip"` - IdleTime int64 `json:"idle_time"` - Is11R FlexBool `json:"is_11r"` - IsGuest FlexBool `json:"is_guest"` - IsGuestByUAP FlexBool `json:"_is_guest_by_uap"` - IsGuestByUGW FlexBool `json:"_is_guest_by_ugw"` - IsGuestByUSW FlexBool `json:"_is_guest_by_usw"` - IsWired FlexBool `json:"is_wired"` - LastSeen int64 `json:"last_seen"` - LastSeenByUAP int64 `json:"_last_seen_by_uap"` - LastSeenByUGW int64 `json:"_last_seen_by_ugw"` - LastSeenByUSW int64 `json:"_last_seen_by_usw"` - LatestAssocTime int64 `json:"latest_assoc_time"` - Mac string `json:"mac"` - Name string `json:"name"` - Network string `json:"network"` - NetworkID string `json:"network_id"` - Noise int64 `json:"noise"` - Note string `json:"note"` - Noted FlexBool `json:"noted"` - OsClass FlexInt `json:"os_class"` - OsName FlexInt `json:"os_name"` - Oui string `json:"oui"` - PowersaveEnabled FlexBool `json:"powersave_enabled"` - QosPolicyApplied FlexBool `json:"qos_policy_applied"` - Radio string `json:"radio"` - RadioName string `json:"radio_name"` - RadioProto string `json:"radio_proto"` - RadioDescription string `json:"-"` - RoamCount int64 `json:"roam_count"` - Rssi int64 `json:"rssi"` - RxBytes int64 `json:"rx_bytes"` - RxBytesR int64 `json:"rx_bytes-r"` - RxPackets int64 `json:"rx_packets"` - RxRate int64 `json:"rx_rate"` - Signal int64 `json:"signal"` - SiteID string `json:"site_id"` - SiteName string `json:"-"` - SwDepth int `json:"sw_depth"` - SwMac string `json:"sw_mac"` - SwName string `json:"-"` - SwPort FlexInt `json:"sw_port"` - TxBytes int64 `json:"tx_bytes"` - TxBytesR int64 `json:"tx_bytes-r"` - TxPackets int64 `json:"tx_packets"` - TxRetries int64 `json:"tx_retries"` - TxPower int64 `json:"tx_power"` - TxRate int64 `json:"tx_rate"` - Uptime int64 `json:"uptime"` - UptimeByUAP int64 `json:"_uptime_by_uap"` - UptimeByUGW int64 `json:"_uptime_by_ugw"` - UptimeByUSW int64 `json:"_uptime_by_usw"` - UseFixedIP FlexBool `json:"use_fixedip"` - UserGroupID string `json:"usergroup_id"` - UserID string `json:"user_id"` - Vlan FlexInt `json:"vlan"` - WifiTxAttempts int64 `json:"wifi_tx_attempts"` - WiredRxBytes int64 `json:"wired-rx_bytes"` - WiredRxBytesR int64 `json:"wired-rx_bytes-r"` - WiredRxPackets int64 `json:"wired-rx_packets"` - WiredTxBytes int64 `json:"wired-tx_bytes"` - WiredTxBytesR int64 `json:"wired-tx_bytes-r"` - WiredTxPackets int64 `json:"wired-tx_packets"` + SourceName string `json:"-"` + Anomalies int64 `json:"anomalies,omitempty"` + ApMac string `json:"ap_mac"` + ApName string `json:"-"` + AssocTime int64 `json:"assoc_time"` + Blocked bool `json:"blocked,omitempty"` + Bssid string `json:"bssid"` + BytesR int64 `json:"bytes-r"` + Ccq int64 `json:"ccq"` + Channel FlexInt `json:"channel"` + DevCat FlexInt `json:"dev_cat"` + DevFamily FlexInt `json:"dev_family"` + DevID FlexInt `json:"dev_id"` + DevVendor FlexInt `json:"dev_vendor,omitempty"` + DhcpendTime int `json:"dhcpend_time,omitempty"` + Satisfaction FlexInt `json:"satisfaction,omitempty"` + Essid string `json:"essid"` + FirstSeen int64 `json:"first_seen"` + FixedIP string `json:"fixed_ip"` + GwMac string `json:"gw_mac"` + GwName string `json:"-"` + Hostname string `json:"hostname"` + ID string `json:"_id"` + IP string `json:"ip"` + IdleTime int64 `json:"idle_time"` + Is11R FlexBool `json:"is_11r"` + IsGuest FlexBool `json:"is_guest"` + IsGuestByUAP FlexBool `json:"_is_guest_by_uap"` + IsGuestByUGW FlexBool `json:"_is_guest_by_ugw"` + IsGuestByUSW FlexBool `json:"_is_guest_by_usw"` + IsWired FlexBool `json:"is_wired"` + LastSeen int64 `json:"last_seen"` + LastSeenByUAP int64 `json:"_last_seen_by_uap"` + LastSeenByUGW int64 `json:"_last_seen_by_ugw"` + LastSeenByUSW int64 `json:"_last_seen_by_usw"` + LatestAssocTime int64 `json:"latest_assoc_time"` + Mac string `json:"mac"` + Name string `json:"name"` + Network string `json:"network"` + NetworkID string `json:"network_id"` + Noise int64 `json:"noise"` + Note string `json:"note"` + Noted FlexBool `json:"noted"` + OsClass FlexInt `json:"os_class"` + OsName FlexInt `json:"os_name"` + Oui string `json:"oui"` + PowersaveEnabled FlexBool `json:"powersave_enabled"` + QosPolicyApplied FlexBool `json:"qos_policy_applied"` + Radio string `json:"radio"` + RadioName string `json:"radio_name"` + RadioProto string `json:"radio_proto"` + RadioDescription string `json:"-"` + RoamCount int64 `json:"roam_count"` + Rssi int64 `json:"rssi"` + RxBytes int64 `json:"rx_bytes"` + RxBytesR int64 `json:"rx_bytes-r"` + RxPackets int64 `json:"rx_packets"` + RxRate int64 `json:"rx_rate"` + Signal int64 `json:"signal"` + SiteID string `json:"site_id"` + SiteName string `json:"-"` + SwDepth int `json:"sw_depth"` + SwMac string `json:"sw_mac"` + SwName string `json:"-"` + SwPort FlexInt `json:"sw_port"` + TxBytes int64 `json:"tx_bytes"` + TxBytesR int64 `json:"tx_bytes-r"` + TxPackets int64 `json:"tx_packets"` + TxRetries int64 `json:"tx_retries"` + TxPower int64 `json:"tx_power"` + TxRate int64 `json:"tx_rate"` + Uptime int64 `json:"uptime"` + UptimeByUAP int64 `json:"_uptime_by_uap"` + UptimeByUGW int64 `json:"_uptime_by_ugw"` + UptimeByUSW int64 `json:"_uptime_by_usw"` + UseFixedIP FlexBool `json:"use_fixedip"` + UserGroupID string `json:"usergroup_id"` + UserID string `json:"user_id"` + Vlan FlexInt `json:"vlan"` + WifiTxAttempts int64 `json:"wifi_tx_attempts"` + WiredRxBytes int64 `json:"wired-rx_bytes"` + WiredRxBytesR int64 `json:"wired-rx_bytes-r"` + WiredRxPackets int64 `json:"wired-rx_packets"` + WiredTxBytes int64 `json:"wired-tx_bytes"` + WiredTxBytesR int64 `json:"wired-tx_bytes-r"` + WiredTxPackets int64 `json:"wired-tx_packets"` } diff --git a/core/unifi/go.mod b/core/unifi/go.mod new file mode 100644 index 00000000..80ac2e5c --- /dev/null +++ b/core/unifi/go.mod @@ -0,0 +1,9 @@ +module golift.io/unifi + +go 1.13 + +require ( + github.com/davecgh/go-spew v1.1.1 + github.com/pmezard/go-difflib v1.0.0 + github.com/stretchr/testify v1.4.0 +) diff --git a/core/unifi/go.sum b/core/unifi/go.sum new file mode 100644 index 00000000..0b286a58 --- /dev/null +++ b/core/unifi/go.sum @@ -0,0 +1,5 @@ +github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= +github.com/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= +github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4= +github.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME= +github.com/stretchr/testify v1.4.0/go.mod h1:j7eGeouHqKxXV5pUuKE4zz7dFj8WfuZ+81PSLYec5m4= From 1ebc0e480485ac9a680d0e9ec37587b4af90cd7b Mon Sep 17 00:00:00 2001 From: davidnewhall2 Date: Fri, 27 Dec 2019 20:32:32 -0800 Subject: [PATCH 2/5] Add DPI gathering methods --- core/unifi/.travis.yml | 2 +- core/unifi/clients.go | 30 +- core/unifi/dpi.go | 2366 ++++++++++++++++++++++++++++++++++++++++ core/unifi/go.sum | 6 + core/unifi/site.go | 35 +- core/unifi/types.go | 4 + core/unifi/udm.go | 108 +- core/unifi/unifi.go | 8 +- 8 files changed, 2483 insertions(+), 76 deletions(-) create mode 100644 core/unifi/dpi.go diff --git a/core/unifi/.travis.yml b/core/unifi/.travis.yml index cdcc5e6b..c7d4eacc 100644 --- a/core/unifi/.travis.yml +++ b/core/unifi/.travis.yml @@ -11,5 +11,5 @@ before_install: install: - dep ensure script: -- golangci-lint run --enable-all -e G402 +- golangci-lint run --enable-all -e G402 -D gochecknoglobals - go test ./... diff --git a/core/unifi/clients.go b/core/unifi/clients.go index 2639d02e..ca4ea34d 100644 --- a/core/unifi/clients.go +++ b/core/unifi/clients.go @@ -1,6 +1,8 @@ package unifi -import "fmt" +import ( + "fmt" +) // GetClients returns a response full of clients' data from the UniFi Controller. func (u *Unifi) GetClients(sites Sites) (Clients, error) { @@ -34,6 +36,32 @@ func (u *Unifi) GetClients(sites Sites) (Clients, error) { return data, nil } +// GetClientsDPI garners dpi data for clients. +func (u *Unifi) GetClientsDPI(sites Sites) ([]*DPITable, error) { + var data []*DPITable + + for _, site := range sites { + u.DebugLog("Polling Controller, retreiving Client DPI data, site %s (%s) ", site.Name, site.Desc) + + var response struct { + Data []*DPITable `json:"data"` + } + + clientDPIpath := fmt.Sprintf(APIClientDPI, site.Name) + if err := u.GetData(clientDPIpath, &response, `{"type":"by_app"}`); err != nil { + return nil, err + } + + for _, d := range response.Data { + d.SourceName = site.SourceName + d.SiteName = site.SiteName + data = append(data, d) + } + } + + return data, nil +} + // Clients contains a list that contains all of the unifi clients from a controller. type Clients []*Client diff --git a/core/unifi/dpi.go b/core/unifi/dpi.go new file mode 100644 index 00000000..86170d03 --- /dev/null +++ b/core/unifi/dpi.go @@ -0,0 +1,2366 @@ +package unifi + +import "strconv" + +// DPITable contains DPI data for clients or sites, or .. things. +type DPITable struct { + SourceName string `json:"-"` + SiteName string `json:"-"` + Name string `json:"-"` + MAC string `json:"mac"` + ByCat []DPIData `json:"by_cat"` + ByApp []DPIData `json:"by_app"` + LastUpdated int64 `json:"last_updated"` +} + +// DPIData is the DPI data in the DPI table. +type DPIData struct { + Cat int `json:"cat"` + App int `json:"app"` + RxBytes int64 `json:"rx_bytes"` + TxBytes int64 `json:"tx_bytes"` + RxPackets int64 `json:"rx_packets"` + TxPackets int64 `json:"tx_packets"` +} + +// DPIMap allows binding methods to the DPICat and DPIApps variables. +type DPIMap map[int]string + +// Get returns a value, or an unknown placeholder. +func (d DPIMap) Get(cat int) string { + if v, ok := d[cat]; ok { + return v + } + + return "Unknown_" + strconv.Itoa(cat) +} + +// GetApp returns an app value, or an unknown placeholder. +func (d DPIMap) GetApp(cat, app int) string { + if v, ok := d[cat<<16+app]; ok { + return v + } + + return "Unknown_" + strconv.Itoa(cat<<16+app) +} + +// Keys returns the map keys in a slice. +func (d DPIMap) Keys() []string { + out := []string{} + for k := range d { + out = append(out, strconv.Itoa(k)) + } + + return out +} + +// DPICats maps the categories to descriptions. +// From: https://fw-download.ubnt.com/data/usg-dpi/1628-debian-v1.442.0-05f5a57eaef344358bd5a8e84a184c18.tar +var DPICats = DPIMap{ + 0: "Instant Messengers", + 1: "Peer-to-Peer Networks", + 3: "File Sharing", + 4: "Media Streaming", + 5: "Email Messaging", + 6: "VoIP Services", + 7: "Database Tools", + 8: "Online Games", + 9: "Management Protocols", + 10: "Remote Access", + 11: "Tunneling and Proxy", + 12: "Investment Platforms", + 13: "Web Services", + 14: "Security Updates", + 15: "Web IM", + 17: "Business Tools", + 18: "Network Protocols_18", + 19: "Network Protocols_19", + 20: "Network Protocols_20", + 23: "Private Protocols", + 24: "Social Networks", + 255: "Unknown_255", +} + +// DPIApps maps the applications to names. +// From: https://fw-download.ubnt.com/data/usg-dpi/1628-debian-v1.442.0-05f5a57eaef344358bd5a8e84a184c18.tar +var DPIApps = DPIMap{ + 1: "MSN", + 2: "Yahoo Messenger", + 3: "AIM/ICQ/iIM", + 4: "QQ/TM", + 5: "DingTalk/Laiwang", + 6: "IRC", + 7: "Yoics", + 8: "Rediff BOL", + 9: "Google Talk", + 10: "Gadu-Gadu", + 11: "Yixin", + 12: "POPO", + 13: "Tlen", + 14: "Wlt", + 15: "RenRen", + 16: "Omegle", + 17: "IPMSG", + 18: "Aliww", + 19: "Mail.ru IM", + 20: "Kubao", + 21: "Lava-Lava", + 22: "PaltalkScene", + 23: "UcTalk", + 24: "WinpopupX", + 25: "BeeTalk", + 26: "Squiggle", + 27: "Apple iMessage", + 28: "Pidgin", + 29: "ISPQ", + 30: "Momo", + 31: "ChatON", + 32: "Caihong", + 33: "KC", + 34: "IMVU", + 35: "Instan-t", + 36: "PiIM", + 37: "Xfire", + 38: "Raidcall", + 39: "Slack", + 41: "WhatsApp", + 42: "Userplane", + 43: "24im", + 44: "Camfrog", + 45: "Snow", + 46: "Digsby", + 49: "Message Send Protocol", + 52: "SOMA", + 53: "Hike", + 54: "Fetion", + 55: "Heyyo", + 56: "Alicall", + 57: "Qeshow", + 58: "MissLee", + 59: "Jctrans", + 61: "BaiduHi", + 62: "TELTEL", + 64: "9158", + 65: "Kltx", + 66: "IM+", + 67: "Imi", + 68: "Netcall", + 69: "ECP", + 72: "Etnano", + 77: "ProvideSupport", + 78: "Dudu IM", + 80: "Weibo IM", + 81: "WO", + 82: "Guagua", + 83: "Hangouts", + 84: "ClubCooee", + 85: "Palringo", + 86: "KikMessenger", + 87: "Doshow", + 88: "Mibbit", + 89: "YY", + 90: "Ispeak", + 91: "VzoChat", + 92: "Trillian", + 93: "HipChat", + 94: "IntraMessenger", + 95: "BitWise", + 96: "Barablu", + 97: "Whoshere", + 98: "LiiHo", + 99: "Appme", + 100: "Verychat", + 101: "Voxer", + 102: "TextMe", + 103: "Bump", + 104: "CoolMessenger", + 105: "NateOn", + 106: "WeChat", + 107: "Snapchat", + 108: "Wangxin", + 65538: "BitTorrent Series", + 65540: "DirectConnect", + 65542: "eDonkey Series", + 65543: "FastTrack", + 65544: "Gnutella", + 65545: "WinMX", + 65546: "Foxy", + 65547: "Winny", + 65548: "POCO", + 65549: "iMesh/Lphant", + 65550: "ClubBox", + 65551: "Vagaa", + 65553: "Thunder", + 65554: "myMusic", + 65555: "QQDownload", + 65556: "WebTorrent", + 65557: "easyMule", + 65559: "Fileguri", + 65563: "Soulseek", + 65565: "GNUnet", + 65566: "XNap", + 65567: "Avicora", + 65568: "Kceasy", + 65569: "Aria2", + 65570: "Arctic", + 65572: "Bitflu", + 65573: "BTG", + 65574: "Pando", + 65577: "Deepnet Explorer", + 65578: "aMule", + 65580: "Ares", + 65581: "Azureus", + 65582: "BCDC++", + 65583: "BitBuddy", + 65584: "BitComet", + 65585: "BitTornado", + 65587: "ApexDC++", + 65588: "Bearshare", + 65590: "BitLord", + 65591: "BitSpirit", + 65594: "Shareaza", + 65598: "eMule", + 65600: "eMule Plus", + 65604: "FileScope", + 65609: "GoGoBox", + 65612: "Hydranode", + 65617: "Kazaa Lite Tools K++", + 65620: "BitRocket", + 65621: "MlDonkey", + 65622: "MooPolice", + 65630: "Phex", + 65633: "RevConnect", + 65634: "Rufus", + 65635: "SababaDC", + 65636: "Shareaza Plus", + 65640: "BTSlave", + 65642: "TorrentStorm", + 65648: "uTorrent", + 65652: "ZipTorrent", + 65655: "BitPump", + 65665: "Tuotu", + 65685: "Vuze", + 65686: "Enhanced CTorrent", + 65688: "Bittorrent X", + 65689: "DelugeTorrent", + 65690: "CTorrent", + 65691: "Propagate Data Client", + 65692: "EBit", + 65693: "Electric Sheep", + 65695: "FoxTorrent", + 65696: "GSTorrent", + 65698: "Halite", + 65700: "KGet", + 65701: "KTorrent", + 65703: "LH-ABC", + 65704: "libTorrent", + 65705: "LimeWire", + 65707: "MonoTorrent", + 65708: "MoonlightTorrent", + 65709: "Net Transport", + 65714: "qBittorrent", + 65715: "Qt 4 Torrent example", + 65716: "Retriever", + 65718: "Swiftbit", + 65720: "SwarmScope", + 65721: "SymTorrent", + 65722: "Sharktorrent", + 65724: "TorrentDotNET", + 65725: "Transmission", + 65726: "uLeecher", + 65727: "BitLet", + 65728: "FireTorrent", + 65730: "XanTorrent", + 65731: "Xtorrent", + 65732: "Pruna", + 65733: "Soribada", + 65734: "Gample", + 65735: "DIYHARD", + 65736: "LottoFile", + 65737: "ShareBox", + 65738: "Bondisk", + 65739: "Filei", + 65740: "KDISK", + 65741: "Ondisk", + 65742: "FILEJO", + 65743: "FILEDOK", + 65744: "Tomatopang/Santa25", + 65745: "Webhard", + 65746: "TPLE", + 65747: "DiskPump", + 65748: "NETFOLDER", + 65749: "QFILE", + 65750: "DISKMAN", + 65751: "DBGO", + 65752: "Congaltan", + 65753: "Diskpot", + 65754: "Ipopclub", + 65755: "Yesfile", + 65756: "Nedisk", + 65757: "Me2disk", + 65758: "Odisk", + 65759: "Tomfile", + 65760: "Adrive.co.kr", + 65761: "ZIOfile", + 65762: "APPLEFILE", + 65763: "SUPERDOWN", + 65764: "Hidisk", + 65765: "Downs", + 65766: "DownDay", + 65767: "BOMULBOX", + 65768: "FILEHAM", + 65769: "Tdisk", + 65770: "Filehon", + 65771: "Jjangfile", + 65772: "Onehard.com", + 65773: "Pdpop", + 65774: "AirFile", + 65775: "FILEZZIM", + 65776: "Atomfile.co.kr", + 65777: "QDOWN.com", + 65778: "Alfile.net", + 65779: "Bigfile.co.kr", + 65780: "Hardmoa.com", + 65781: "Redfile.co.kr", + 65782: "FILETV.co.kr", + 65783: "Now.co.kr", + 65784: "JustBeamIt", + 65785: "reep.io", + 65786: "GnucDNA/Gimme", + 65787: "MyNapster", + 196609: "FTP Applications", + 196610: "GetRight", + 196611: "FlashGet", + 196612: "AsianDVDClub", + 196613: "Web File Transfer", + 196614: "FileZilla", + 196615: "Kuaipan", + 196616: "DBank", + 196617: "115.com", + 196618: "Weiyun", + 196619: "Rayfile", + 196620: "0zz0", + 196621: "Herosh", + 196622: "2Shared", + 196624: "BIZHARD", + 196626: "UPlusBox", + 196627: "Filebox.ro", + 196628: "Qnext", + 196629: "OneDrive", + 196630: "YunFile", + 196631: "Filehosting", + 196632: "Dev-Host", + 196633: "Solidfiles", + 196634: "IBackup", + 196635: "FileSwap", + 196637: "Temp-Share", + 196638: "WikiUpload", + 196640: "MEGA", + 196641: "Copy.com", + 196642: "4Shared", + 196643: "HiCloud", + 196644: "Depositfiles", + 196645: "Docstoc", + 196646: "360 Cloud", + 196647: "Symantec Nomdb", + 196648: "Baidu Cloud", + 196649: "GitHub", + 196650: "FileDropper", + 196651: "CrashPlan", + 196652: "Net2FTP", + 196653: "Mediafire", + 196655: "Carbonite", + 196656: "Mozy", + 196657: "SOS Online Backup", + 196670: "NFS", + 196672: "WD My Cloud", + 196676: "Box", + 196678: "Scribd", + 196680: "Rapidshare", + 196681: "Sendspace", + 196683: "Hightail", + 196684: "Diino", + 196686: "Fluxiom", + 196689: "Nomadesk", + 196692: "Dropbox", + 196693: "Filesend.to", + 196694: "Firestorage", + 196695: "Naver Cloud", + 196696: "Filesend.net", + 196697: "Crocko", + 196700: "Fileserve", + 196701: "Netload", + 196702: "Megashares", + 196703: "TransferBigFiles", + 196705: "Filemail", + 196706: "Zamzar", + 196708: "Divshare", + 196709: "DL Free", + 196711: "Nakido", + 196713: "Gigaup", + 196714: "Filestube", + 196716: "Filer.cx", + 196717: "Cx.com", + 196718: "Elephantdrive", + 196722: "Zshare", + 196723: "Freakshare", + 196724: "Uploading", + 196725: "Bitshare", + 196726: "Letitbit.net", + 196727: "Extabit", + 196728: "Filefactory", + 196729: "Furk", + 196731: "GoldFile", + 196732: "GigaSize", + 196733: "Turbobit", + 196735: "Hitfile", + 196737: "Zippyshare", + 196738: "SoundCloud", + 196739: "SpeedyShare", + 196741: "WinSCP", + 196742: "FilePost.net", + 196743: "GlumboUploads", + 196744: "RapidGator.net", + 196745: "GoZilla", + 196746: "Clip2net", + 196747: "Datei.to", + 196748: "Totodisk", + 196749: "LeapFile", + 196750: "BigUpload", + 196751: "OnlineFileFolder", + 196752: "ASUSWebStorage", + 196753: "File-Upload.net", + 196754: "File-Works", + 196755: "Zumodrive", + 196756: "PutLocker", + 196757: "Wetransfer", + 196758: "iCloud", + 196759: "CloudMe", + 196760: "Beanywhere", + 196761: "Sugarsync", + 196762: "DriveHQ", + 196763: "Yandex.Disk", + 196764: "Backblaze", + 196765: "AirSet", + 196766: "SpiderOak", + 196767: "1337X", + 196768: "MailBigFile", + 196769: "GoldCoupon.co.kr", + 196770: "Egnyte", + 196771: "SmugMug", + 196772: "SlideShare.net", + 196773: "4Sync", + 196774: "IDrive", + 196775: "Mendeley", + 196777: "Daum-cloud", + 196778: "TeamBeam", + 262145: "Windows Media Player", + 262146: "RealPlayer", + 262147: "Winamp", + 262148: "QuickTime", + 262149: "Weather Channel", + 262150: "PPTV (PPLive)", + 262151: "QQLive", + 262152: "LOVEFiLM", + 262153: "ITV", + 262154: "iTunes", + 262155: "Adobe Flash", + 262156: "Channel 5", + 262157: "iQIYI/PPS", + 262158: "Headweb", + 262159: "Viaplay", + 262160: "KKBox", + 262161: "WATCHEVER", + 262162: "Maxdome", + 262163: "Twitch.tv", + 262164: "TED", + 262165: "RTP", + 262166: "SBS", + 262167: "UUSee", + 262168: "SopCast", + 262169: "KeyHoleTV", + 262170: "Sina Video", + 262171: "Metacafe", + 262172: "Wuaki.tv", + 262173: "SHOUTcast", + 262174: "BBC-iplayer", + 262175: "Live365", + 262176: "Dailymotion", + 262177: "Filmin", + 262178: "Flixster", + 262179: "Hulu", + 262180: "GuaGua", + 262181: "NUBEOX", + 262182: "Kugou", + 262183: "MoveNetworks", + 262184: "Babelgum", + 262185: "Livestation", + 262186: "Apple Music", + 262187: "Miro", + 262188: "Smithsonian Channel", + 262189: "NHL", + 262190: "NicoNico", + 262191: "Ooyala", + 262192: "Photobucket", + 262193: "MLSsoccer", + 262194: "Channel 4", + 262195: "VideoDetective", + 262196: "Ustream.tv", + 262197: "Veetle", + 262198: "VeohTV", + 262199: "iTunes Festival", + 262200: "SiriusXM", + 262201: "Break.com", + 262202: "CinemaNow/FilmOn", + 262203: "Letv", + 262204: "RTSP", + 262205: "Funshion", + 262206: "17", + 262207: "MTV.com", + 262208: "Sohu TV", + 262209: "MP4", + 262210: "MMS/WMSP", + 262211: "FLV", + 262212: "PIPI", + 262213: "Hulkshare", + 262214: "Tudou", + 262215: "Ifeng Video ", + 262216: "WSJ Live", + 262217: "Cradio", + 262218: "Roku", + 262219: "Amazon Prime Music", + 262220: "Crackle", + 262221: "Blip.tv", + 262223: "Audible", + 262224: "Web Streaming", + 262225: "DIRECTV", + 262226: "Vyclone", + 262227: "China Streaming Video", + 262228: "Crunchyroll", + 262229: "EmpFlix", + 262230: "Porn.com", + 262231: "EskimoTube", + 262232: "NewBigTube", + 262233: "Madbitties", + 262234: "RTMP", + 262235: "Hustlertube", + 262236: "TnaFlix", + 262237: "Xtube", + 262238: "Yobt.tv", + 262239: "Youjizz", + 262240: "v.163.com", + 262241: "Yahoo Video", + 262245: "Pandora", + 262246: "Deezer", + 262247: "VLC", + 262250: "Livesearch.tv/CoolStreaming", + 262251: "Qello", + 262252: "CNTV", + 262254: "Thunderkankan", + 262256: "Youtube", + 262258: "56.com", + 262259: "RMVB", + 262260: "Youku.com", + 262261: "SWF", + 262262: "AVI", + 262263: "MP3", + 262264: "WMA", + 262265: "MOV", + 262266: "WMV", + 262267: "ASF", + 262268: "Vudu", + 262270: "PBS Video", + 262271: "Freecast", + 262272: "Ku6", + 262274: "Spotify", + 262275: "LastFM", + 262276: "Netflix", + 262277: "Uitzendinggemist", + 262278: "RTL.nl", + 262279: "TudouVa", + 262280: "GYAO", + 262281: "BARKS", + 262283: "Baofeng", + 262284: "Qvod/Bobohu", + 262285: "Grooveshark", + 262286: "Microsoft Silverlight", + 262287: "6.cn", + 262288: "Rhapsody", + 262289: "Kideos", + 262290: "Imgo TV", + 262291: "Joy.cn", + 262292: "Yinyuetai", + 262293: "Hichannel", + 262294: "ADNstream", + 262295: "Livestream", + 262296: "YoukuVa ", + 262297: "Kodi", + 262298: "Voddler", + 262299: "National Geographic Kids", + 262301: "Flixwagon", + 262302: "M4V", + 262303: "Podcast", + 262305: "Shazam", + 262306: "TuneIn", + 262307: "PBS Kids", + 262308: "BaiduMusic", + 262310: "DoubanFM", + 262311: "IMDb.com", + 262312: "XVideos.com", + 262313: "xHamster.com", + 262314: "PornHub.com", + 262315: "LiveJasmin.com", + 262316: "XNXX.com", + 262317: "YouPorn.com", + 262318: "MajorLeagueGaming", + 262319: "Wowtv.co.kr", + 262320: "iMBC", + 262321: "AfreecaTV", + 262322: "Arirang", + 262323: "KCTVjeju", + 262324: "CJB.co.kr", + 262325: "MBN", + 262326: "MYSolive", + 262327: "KBS", + 262328: "Mwave", + 262329: "YTN", + 262330: "Musicsoda", + 262331: "FreeOnes.com", + 262332: "Streamate.com", + 262333: "Airplay", + 262334: "DAAP", + 262335: "M1905", + 262336: "VEVO", + 262337: "Amazon Instant Video", + 262338: "MixBit", + 262339: "Baomihua", + 262340: "FORA.tv", + 262341: "Vimeo", + 262342: "Vube", + 262343: "RedTube.com", + 262344: "Tube8", + 262345: "Mgoon", + 262346: "Trailers", + 262347: "HBOGO", + 262348: "MLB.com", + 262349: "Kaltura.com", + 262350: "Plex.tv", + 262351: "DouyuTV", + 262358: "Kids.gov", + 262367: "Periscope", + 262373: "HBO NOW", + 262374: "MiaoPai", + 262389: "UniFi Video Camera", + 327681: "SMTP", + 327682: "POP3", + 327683: "IMAP4", + 327684: "NNTP", + 327685: "Twig", + 327686: "GroupWise", + 327687: "au one net", + 327688: "Virtru", + 327689: "PChome", + 327690: "DTI MyMail", + 327691: "Ymail", + 327692: "IIJ MailViewer", + 327693: "Telenet Mail", + 327694: "Open Mail", + 327695: "InfoSphere Webmail", + 327696: "Goo Mail", + 327697: "Nifty", + 327698: "QQ Mail", + 327699: "Roundcubemail", + 327700: "Zenno", + 327701: "Itm-asp", + 327702: "Biglobe", + 327703: "SquirrelMail", + 327704: "Zoho Mail", + 327705: "Inter7", + 327706: "TOK2", + 327707: "Smoug", + 327708: "1und1", + 327709: "Plala", + 327710: "WAKWAK", + 327711: "Eyejot", + 327712: "AsahiNet", + 327713: "Aikq", + 327714: "Yandex.Mail", + 327715: "Arcor", + 327716: "Bluewin", + 327717: "Directbox", + 327718: "Freenet", + 327720: "Smart Mail", + 327722: "WEB.DE", + 327723: "MS Exchange Server", + 327732: "Webmail.de", + 327742: "NETEASE Mail", + 327743: "Gmx Mail", + 327744: "Excite", + 327745: "InfoSeek Mail", + 327746: "Livedoor", + 327747: "Nate Mail", + 327749: "Optimum", + 327751: "Secureserver", + 327753: "Sina Mail", + 327755: "Rambler", + 327760: "Daum Mail", + 327761: "Mail.com", + 327762: "OCN", + 327763: "MailChimp", + 327764: "Rediff Mail", + 327770: "Korea Mail", + 327772: "MyEmail", + 327773: "JumboMail", + 327775: "Gmail", + 327776: "AOL Mail", + 327777: "hiBox", + 327778: "COX", + 327779: "Hushmail", + 327780: "Mail.ru", + 327781: "HiNet Mail", + 327782: "Horde", + 327783: "Fastmail", + 327784: "Comcast", + 327785: "Laposte", + 327786: "Yahoo Mail", + 327787: "Usermin Mail", + 327788: "Tistory", + 327789: "Orange", + 327790: "012mail", + 327791: "T-Online", + 327792: "Jubii Mail", + 327793: "Whalemail", + 327794: "Lavabit", + 327795: "Tiscali", + 393217: "Skype", + 393218: "H.323", + 393220: "Facetime", + 393221: "Juiker", + 393222: "Sqwiggle", + 393223: "ooVoo", + 393225: "TeamSpeak", + 393226: "Ventrilo", + 393228: "SIP", + 393229: "NetMeeting", + 393230: "Inter-Asterisk", + 393231: "Net2Phone", + 393232: "MSRP", + 393234: "LINE", + 393235: "Fring", + 393236: "Goober", + 393238: "Viber", + 393239: "Kakao", + 393240: "iCall", + 393242: "Nimbuzz", + 393243: "Bobsled", + 393244: "indoona", + 393245: "Wi-Fi Calling", + 393246: "Tango", + 393247: "Ooma", + 458753: "MSSQL", + 458754: "MySQL", + 458755: "Oracle", + 458756: "PostgreSQL", + 458757: "SAP", + 458760: "Etelos", + 458761: "Centriccrm", + 458766: "MongoDB", + 458767: "Salesforce", + 458768: "MariaDB", + 524289: "QQ Game", + 524290: "Our Game", + 524291: "Cga.com", + 524292: "FIFA", + 524293: "PopKart", + 524294: "Archlord", + 524295: "AddictingGames.com", + 524296: "Realgame", + 524297: "Audition", + 524298: "Koramgame", + 524299: "BnB Game", + 524300: "Chinagame", + 524301: "CS Game", + 524302: "Diablo", + 524303: "Legend", + 524304: "Lineage", + 524306: "Quake Game", + 524307: "Diablo3", + 524308: "Sina Web Game", + 524310: "WOW Game", + 524311: "Ispeakgame", + 524312: "Torchlight2", + 524313: "MapleStory", + 524314: "TowerOfSaviors", + 524315: "Wolfenstein", + 524316: "Second Life", + 524317: "Kimi", + 524318: "Pokemon Go", + 524319: "PartyPoker", + 524320: "Pogo", + 524321: "PokerStars", + 524322: "Zango", + 524323: "Little Fighter 2", + 524324: "BomberClone", + 524325: "Doom", + 524326: "FSJOY", + 524327: "175pt", + 524328: "Zhuxian", + 524329: "GameTea/GameABC", + 524330: "Talesrunner", + 524331: "PK Game", + 524332: "Concerto Gate", + 524333: "TLBB", + 524334: "YBOnline", + 524335: "Xunyou", + 524336: "Mwo", + 524337: "Mobile Strike", + 524338: "WuLin", + 524339: "DNF Game", + 524340: "Bo Game", + 524341: "Gran Turismo", + 524343: "Electronic Arts", + 524344: "ZhengTu", + 524345: "SGOL", + 524346: "XY2Online", + 524347: "Asherons Call", + 524348: "Kali", + 524349: "EverQuest", + 524350: "XBOX", + 524351: "BrettspielWelt", + 524352: "Bet-at-Home", + 524353: "City of Heroes", + 524354: "ClubPenguin", + 524355: "StepMania", + 524356: "Battle.net", + 524358: "Apprentice", + 524359: "Monster Hunter Frontier Z", + 524360: "FreeLotto Game", + 524361: "Halo", + 524362: "iSketch", + 524363: "RuneScape", + 524364: "FUNMILY", + 524365: "Yeapgame", + 524366: "Grand Theft Auto", + 524367: "Lineage2", + 524368: "GM99 Game", + 524369: "RayCity", + 524370: "Rockstar Games", + 524371: "Aleph One", + 524372: "Wayi", + 524373: "CMWEBGAME", + 524374: "Call of Duty", + 524375: "CAPTAN", + 524376: "Supercell", + 524377: "Need for Speed", + 524379: "Madden NFL", + 524380: "Half-Life", + 524381: "Team Fortress", + 524383: "Final Fantasy", + 524384: "Mythic", + 524385: "NetPanzer", + 524386: "Sdo.com", + 524388: "Pokemon Netbattle", + 524389: "RunUO-Ultima", + 524390: "Soldat Dedicated", + 524391: "Blizzard Entertainment", + 524392: "RIFT", + 524393: "TetriNET", + 524394: "Tibia", + 524395: "PlanetSide", + 524396: "TripleA", + 524398: "Unreal", + 524399: "Valve Steam", + 524400: "WesNOth", + 524401: "Xpilot", + 524402: "Swtor", + 524403: "EVEOnline", + 524404: "Hearthstone", + 524405: "Guild Wars", + 524406: "Zhong Hua Hero", + 524407: "Wizard101", + 524408: "SD Gundam", + 524409: "Prius", + 524410: "Age of Conan", + 524411: "RF Returns", + 524412: "AION", + 524413: "POPO Game", + 524414: "War-Rock", + 524415: "TEN Game", + 524416: "LUNA2", + 524417: "Karos", + 524418: "SPOnline", + 524419: "RO Game", + 524420: "StarCraft2", + 524421: "Itaiwanmj", + 524422: "CMWEBGAME Game", + 524423: "Beanfun Game", + 524424: "JXW", + 524425: "Nobol", + 524426: "DragonNest", + 524427: "BBonline", + 524428: "Hangame", + 524429: "Homygame", + 524430: "Sony PlayStation", + 524431: "Garena", + 524432: "91555", + 524433: "JJ Game", + 524434: "YHgame", + 524435: "Mdm365", + 524436: "7fgame", + 524437: "Dokee", + 524438: "VSA", + 524439: "Funtown", + 524440: "SF Game", + 524441: "173kh", + 524442: "Boyaapoker", + 524443: "GameCenter", + 524444: "Minecraft", + 524445: "Dark Souls", + 524446: "The Secret World", + 524447: "World2", + 524448: "CrossFire", + 524449: "XYQ", + 524450: "Nexon", + 524451: "Vindictus", + 524452: "DotA", + 524453: "PAYDAY", + 524454: "Wayi Game", + 524455: "War Thunder", + 524456: "Warframe", + 524457: "TT-Play Game", + 524458: "TT-Play", + 524459: "Robocraft", + 524460: "World of Tanks", + 524461: "Divinity", + 524462: "Left 4 Dead 2", + 524463: "DayZ", + 524464: "Heroes of the Storm", + 524466: "TXWY Game", + 524476: "Smite", + 524478: "FreeStyle 2 Street Basketball", + 524479: "Yeapgame Game", + 524483: "BlackShot", + 524486: "Combat Arms", + 524490: "Blade and Soul", + 524491: "FUNMILY Game", + 524500: "Elsword", + 524501: "Echo of Soul", + 524502: "Aura Kingdom", + 524503: "Aeria Games", + 524504: "9-yin", + 524505: "Tera", + 524506: "PSO2", + 524507: "Mabinogi", + 524510: "Ubisoft", + 524512: "Sony Entertainment Network", + 524513: "WSOP", + 524514: "TexasHoldemPoker", + 524515: "DarkSummoner", + 524516: "AjaxPlay", + 524517: "AirlineMogul", + 524518: "Evony", + 524519: "BasketBallZone", + 524520: "Y8 Game", + 524521: "Y8-Y8", + 524522: "KIZI-GAMES", + 524523: "Ibibo", + 524524: "Hattrick Game", + 524525: "Godgame", + 524526: "Aswordtw", + 524527: "Qme RO", + 524529: "THE WORLD", + 524530: "Qme JH", + 524531: "Qme COS", + 524532: "Qme SG", + 524533: "Origin", + 524534: "LoL", + 524535: "THISISGAME", + 524536: "Miniclip Game", + 524537: "888games", + 524538: "WilliamHill", + 524539: "Betfair Game", + 524540: "Kongregate Game", + 524541: "Roblox Game", + 524542: "King Game", + 524543: "Chess Game", + 524593: "Overwatch", + 524632: "Battlefield", + 524633: "Star Wars Battlefront", + 524639: "Rainbow Six Siege", + 524640: "ARK Survival Evolved", + 524641: "The Division", + 524648: "Super Mario Run", + 524649: "Nintendo", + 524651: "Clash of Clans", + 524652: "Clash Royale", + 524736: "Grand Theft Auto: San Andreas", + 524782: "Destiny 2", + 524790: "NBA 2K18", + 524794: "Uncharted: The Lost Legacy", + 524795: "NHL 18", + 524796: "NBA Live 18", + 524801: "Wargaming.net", + 589828: "IGMP", + 589829: "SNMP", + 589885: "DNS", + 589888: "Multicast DNS", + 589890: "Finger protocol", + 589916: "DCE-RPC", + 589933: "SSDP", + 589934: "SMB", + 589936: "SMB2", + 589942: "ICMP", + 589951: "UPnP", + 655361: "pcAnywhere", + 655362: "VNC", + 655363: "TeamViewer", + 655364: "MS Remote Desktop Protocol (RDP)", + 655365: "Chrome Remote Desktop", + 655366: "NTRglobal", + 655367: "RemoteCall", + 655368: "LiveCare", + 655369: "GoToMyPC", + 655370: "Pulseway", + 655371: "Radmin", + 655372: "Beinsync", + 655373: "Fastviewer", + 655374: "CrossTec Remote Control", + 655375: "GoToMeeting", + 655376: "ShowMyPC", + 655377: "Join.me", + 655378: "Telnet", + 655379: "Techinline", + 655380: "ISL Online", + 655381: "Secure Shell (SSH)", + 655385: "IBM Remote monitoring and Control", + 655395: "Netviewer", + 655396: "VT100", + 655397: "AnyDesk", + 655398: "X11", + 655399: "Alpemix", + 655402: "Instanthousecall", + 655403: "Ammyy", + 655404: "Anyplace Control", + 655405: "BeamYourScreen", + 655406: "Laplink Everywhere", + 655407: "GoToAssist", + 655408: "MSP Anywhere", + 720898: "VNN", + 720899: "Spotflux", + 720900: "SoftEther/PacketiX", + 720901: "TinyVPN", + 720902: "HTTP-Tunnel", + 720903: "Tor", + 720904: "Ping Tunnel", + 720905: "Wujie/UltraSurf", + 720906: "Freegate", + 720907: "Hidemyass", + 720909: "Vedivi", + 720910: "ZenMate", + 720911: "Hamachi", + 720912: "Disconnect.me", + 720914: "Asproxy", + 720915: "OpenDoor", + 720916: "NSTX DNS Tunnel", + 720917: "Coralcdn", + 720918: "Glype", + 720919: "GPass", + 720920: "Kproxy", + 720921: "Megaproxy", + 720922: "FreeSafeIP", + 720924: "GreenVPN", + 720925: "Surrogafier", + 720926: "Vtunnel", + 720927: "GomVPN", + 720928: "BypassThat", + 720929: "GetPrivate", + 720930: "JAP/JonDo", + 720933: "SofaWare", + 720934: "FlyProxy", + 720936: "Kerberos", + 720939: "EasyHideIP", + 720942: "CPROXY", + 720943: "AnonyMouse", + 720945: "Avoidr", + 720946: "Hidedoor", + 720948: "CGIProxy", + 720949: "ProxyTopSite", + 720950: "Phproxy", + 720951: "OpenVPN", + 720952: "CCProxy", + 720953: "Proxy Rental", + 720954: "PD-Proxy", + 720955: "Proxy4Free", + 720957: "Hideman", + 720959: "Rtmpt", + 720960: "LogMeIn", + 720961: "HotspotShield", + 720962: "ExpressVPN", + 720963: "GogoNET", + 720964: "HTTP Proxy Server", + 720965: "Hola", + 720966: "Texasproxy", + 720967: "Ourproxy", + 720968: "Proxify", + 720969: "Fast Proxy", + 720970: "Zalmos", + 720971: "Easy Proxy", + 720972: "Proxy Era", + 720973: "DotVPN", + 720974: "BrowSec", + 720976: "Unblock Proxy", + 720977: "Air-Proxy", + 720978: "Suresome", + 720979: "Defilter", + 720980: "SSLunblock", + 720983: "K12History", + 720984: "SurfEasy", + 720985: "Frozenway", + 720986: "CyberGhostVPN", + 720987: "SecurityKISS", + 720988: "WebWarper", + 720989: "Guardster", + 720990: "ProxFree", + 720991: "TunnelBear", + 720992: "AstrillVPN", + 720993: "Hide ALL IP", + 720994: "ZfreeZ", + 720995: "IPVanish", + 720996: "PrivateTunnel", + 720997: "SaferSurf", + 720998: "SecureLine VPN", + 720999: "Steganos VPN", + 721000: "StrongVPN", + 721001: "ZeroTier", + 721002: "Ngrok", + 721003: "Pagekite", + 721004: "Goproxing", + 721005: "VPN.HT", + 721006: "Betternet", + 721007: "Hide My IP", + 721008: "Stay Invisible", + 721009: "Zapyo", + 721010: "NordVPN", + 721011: "Avast SecureLine", + 721013: "Tunnello", + 721014: "Opera VPN", + 786434: "DZH", + 786435: "10JQKA", + 786437: "Qianlong", + 786438: "Compass.cn", + 786439: "Huaan", + 786440: "StockStar ", + 786441: "TDX", + 786443: "Hexun", + 786444: "Hypwise", + 786449: "Kiwoom", + 786450: "Windin", + 786451: "SamsungPoP", + 786453: "StockTrace", + 786454: "JRJ", + 786455: "TradeFields", + 786456: "Bloomberg", + 786457: "Netdania", + 786458: "TradeInterceptor", + 851969: "WhiteHat Aviator", + 851970: "HTC Widget", + 851971: "Doodle", + 851972: "Level3", + 851973: "FuzeMeeting", + 851974: "Mobile01", + 851975: "Speedtest.net", + 851976: "Google Chrome", + 851977: "Babelfish", + 851978: "Google Translate", + 851980: "Mozilla Firefox", + 851981: "Apple Safari", + 851982: "Opera browser", + 851984: "Google Books", + 851985: "eBay", + 851986: "hao123", + 851987: "WebSocket", + 851988: "Tmall", + 851989: "PayPal.com", + 851990: "Ask.com", + 851991: "BBC", + 851992: "Alibaba.com", + 851993: "CNN.com", + 851995: "Sogou.com", + 851996: "Evernote", + 851997: "About.com", + 851998: "Alipay.com", + 851999: "Imgur", + 852000: "Adcash", + 852001: "Huffington Post", + 852002: "360buy", + 852003: "ESPN", + 852004: "Books", + 852005: "Craigslist.org", + 852006: "Google Analytics", + 852007: "Bing Maps", + 852008: "ETtoday ", + 852009: "104 Job Bank", + 852010: "NOWnews", + 852011: "518 Job Bank", + 852012: "Chinatimes.com", + 852013: "GOHAPPY", + 852014: "591", + 852015: "8591", + 852016: "Chinatrust", + 852017: "Donga.com", + 852018: "Gmarket", + 852019: "Chosun.com", + 852020: "Cafe24.com", + 852021: "11st", + 852022: "MK.co.kr", + 852023: "Auction", + 852024: "Hankyung", + 852025: "Ppomppu", + 852026: "MT.co.kr", + 852027: "Zum.com", + 852028: "Hankooki", + 852029: "JOBKOREA", + 852031: "Khan.co.kr", + 852032: "Incruit", + 852033: "YES24", + 852034: "Amazon CloudFront", + 852035: "Pcstore", + 852036: "Myfreshnet.com", + 852037: "Microsoft.com", + 852038: "Life.com.tw", + 852039: "Libertytimes", + 852040: "Lativ", + 852041: "Inven", + 852042: "cnYES", + 852043: "Babyhome", + 852044: "8comic.com", + 852045: "Ck101.com", + 852046: "Taiwanlottery", + 852047: "Momoshop", + 852048: "Eyny.com", + 852049: "Yam.com", + 852050: "PChome.com", + 852051: "Gamme", + 852052: "Apple.com", + 852053: "Hinet.net", + 852054: "Google Earth", + 852055: "Saramin", + 852056: "KoreaHerald", + 852057: "Plus28.com", + 852058: "ChunghwaPost ", + 852059: "Gomaji ", + 852060: "NewSen", + 852061: "Etnews.com", + 852062: "Seoul.co.kr", + 852063: "YONHAPNEWS", + 852064: "Etoday.co.kr", + 852065: "Yesky.com", + 852066: "1111 Job Bank", + 852067: "Emart", + 852068: "KBstar", + 852069: "HERALDCORP", + 852070: "ActiveX", + 852071: "MSN.com", + 852072: "Edaily", + 852073: "Segye", + 852074: "Bobaedream", + 852075: "Nocutnews", + 852076: "MONETA.co.kr", + 852077: "Kukinews", + 852078: "Java Applet", + 852079: "Todayhumor", + 852080: "Inews24", + 852081: "KoreaTimes", + 852082: "OhmyNews", + 852083: "Aladin.co.kr", + 852084: "SK Encar", + 852085: "eTorrent", + 852086: "TVREPORT", + 852087: "Mydaily", + 852088: "Microsoft Live.com", + 852089: "News1.kr", + 852090: "Munhwa", + 852091: "Dreamwiz", + 852092: "Dailian.co.kr", + 852093: "Rediff.com", + 852094: "Akamai.net", + 852096: "Microsoft Edge", + 852097: "Yugma", + 852098: "TPB PirateBrowser", + 852099: "Android browser", + 852100: "Wikispaces", + 852101: "Wikidot", + 852102: "Google Play", + 852103: "Wetpaint", + 852104: "Windows Store", + 852105: "Webshots", + 852106: "Kindle Cloud Reader", + 852107: "Nice264", + 852108: "Symbian browser", + 852109: "Vyew", + 852110: "TikiWiki", + 852111: "Castfire", + 852112: "Mercari", + 852113: "SugarCRM", + 852115: "Stumbleupon", + 852116: "Yahoo Shopping", + 852117: "Clothes Aoyama", + 852118: "Rakuten Shopping", + 852119: "Spark", + 852120: "Socialtext", + 852121: "CacaoWeb", + 852122: "PBworks", + 852123: "Fool", + 852124: "Showbie", + 852125: "MorningStar", + 852126: "Screaming Frog SEO Spider", + 852127: "MoinMoin", + 852128: "AppStore", + 852129: "Ragingbull", + 852130: "Daum", + 852131: "Google Docs", + 852133: "Naver", + 852134: "Editgrid", + 852135: "Jaspersoft", + 852136: "Clarizen", + 852139: "Interpark", + 852140: "Hyundaihmall", + 852141: "Groupon", + 852142: "Gsshop", + 852143: "Wemakeprice", + 852144: "Lotte.com", + 852145: "Coupang", + 852147: "Google Alerts", + 852149: "Dnshop.com", + 852150: "ZoomSpider crawler", + 852151: "Win Web Crawler", + 852152: "HTTrack crawler", + 852153: "Abot crawler", + 852154: "Googlebot crawler", + 852155: "Microsoft bingbot crawler", + 852156: "Yahoo Slurp crawler", + 852157: "Beanfun", + 852158: "QUIC", + 852159: "ifeng.com", + 852160: "Conduit Mobile", + 852161: "Rakuten Point", + 852162: "Gamebase", + 852163: "Kingstone", + 852164: "Udn.com", + 852165: "Fril", + 852166: "Sportsseoul", + 852167: "Babylon ", + 852168: "Yahoo Finance", + 852170: "Creative Cloud", + 852171: "Jira", + 852172: "PHPwiki", + 852173: "Rakuten Edy", + 852174: "WebCT", + 852175: "Youseemore", + 852176: "Zwiki-editing", + 852177: "Adobe.com", + 852178: "Backpackit/Campfire", + 852180: "ERoom-net", + 852182: "DiDiTaxi", + 852184: "Glide", + 852186: "Mediawiki", + 852187: "fitbit", + 852188: "LastPass", + 852189: "National Geographic", + 852190: "HTTP", + 852191: "AOL Toolbar", + 852192: "Yandex.Browser", + 852193: "Uber", + 852194: "Web-crawler", + 852195: "RSS", + 852196: "WeatherBug", + 852197: "Yahoo Toolbar", + 852198: "Alexa Toolbar", + 852199: "Internet Archive", + 852200: "Wikipedia", + 852201: "Wiktionary", + 852202: "Amazon", + 852203: "Google Toolbar", + 852205: "Zoho", + 852206: "Microsoft Internet Explorer", + 852207: "Localmind", + 852208: "LinkedIn Pulse", + 852209: "BookU", + 852210: "Zappos", + 852211: "Expedia", + 852212: "AdF.ly", + 852213: "Baidu", + 852214: "Yahoo", + 852215: "Taobao", + 852216: "163.com", + 852217: "Sina.com", + 852218: "Bing.com", + 852219: "Ruten", + 852220: "Shop.com", + 852221: "Appledaily", + 852222: "CWB", + 852223: "CNA", + 852224: "Harvey Norman", + 852225: "Hackpad", + 852226: "JB Hi-Fi", + 852227: "MyDeal.com.au", + 852228: "AUSHOP", + 852229: "CrazySales", + 852230: "Giphy", + 852231: "Riffsy", + 852232: "Gumtree", + 852233: "Priceline", + 852234: "Carousell", + 852235: "Wish", + 852236: "Shein Shopping", + 852237: "Romwe", + 852238: "The Iconic", + 852239: "Boohoo", + 852240: "Aliexpress", + 852241: "ASOS", + 852242: "Catch of the Day", + 852273: "Amazon AppStream", + 917505: "TrendMicro Titanium-6-ICRC", + 917506: "TrendMicro Titanium-7-ICRC", + 917507: "TrendMicro Titanium-8-ICRC", + 917508: "BitDefender", + 917509: "360Safe", + 917510: "Rising", + 917511: "TortoiseSVN", + 917513: "Microsoft Windows Update", + 917514: "Norton", + 917515: "Sophos", + 917516: "Yum", + 917517: "MIUI", + 917518: "Adobe", + 917519: "InstallAnyWhere", + 917520: "Kaspersky", + 917521: "McAfee", + 917522: "TrendMicro", + 917523: "F-Secure", + 917524: "NOD32", + 917525: "Avast", + 917526: "Jiangmin", + 917527: "Avira", + 917528: "Emsisoft", + 917529: "Panda", + 917530: "AVG", + 917531: "PCTools", + 917532: "TrendMicro Titanium-10-ICRC", + 917533: "Outpost", + 917534: "Spybot", + 917535: "Duba", + 917536: "Apple", + 917538: "Google Update", + 917539: "TrendMicro Titanium-6-WTP", + 917540: "JAVA Update", + 917541: "SONY PC/Xperia Companion", + 917542: "SketchUp", + 917543: "Webroot", + 917544: "TrendMicro Titanium-7-WTP", + 917545: "TrendMicro Titanium-8-WTP", + 917546: "TrendMicro Titanium-10-WTP", + 917547: "TrendMicro Titanium-11-ICRC", + 917548: "TrendMicro Titanium-11-WTP", + 917549: "TrendMicro Titanium-12-ICRC", + 917550: "TrendMicro Titanium-12-WTP", + 983043: "eBuddy.com", + 983044: "iLoveIM.com", + 983047: "imo.im", + 983048: "Chikka", + 983050: "QQ Web Messenger", + 983051: "AOL Web Messenger", + 983054: "ICQ Web Messenger", + 983057: "AirAim", + 983058: "Instan-t Web Messenger", + 983065: "TaoBao AliWW", + 983069: "Gadu-Gadu Web Messenger", + 983070: "Karoo Lark", + 983072: "Web IM+", + 1114113: "WatchGuard WSM Management", + 1114114: "WatchGuard Web Management UI", + 1114115: "WatchGuard Authentication Access", + 1114117: "WatchGuard external Webblocker database fetch", + 1114118: "Livelink", + 1114119: "Altiris", + 1114120: "AMS", + 1114121: "Apache Synapse", + 1114122: "WatchGuard CLI ", + 1114124: "Webex", + 1114125: "Webex-WebOffice", + 1114128: "Avamar", + 1114129: "Avaya", + 1114130: "BackupExec", + 1114131: "Bitcoin Core", + 1114133: "Microsoft OS license", + 1114134: "Microsoft Office 2013 license", + 1114138: "BZFlag", + 1114140: "CAJO", + 1114141: "Cisco HSRP", + 1114142: "SkyDesk", + 1114144: "Microsoft Office", + 1114150: "openQRM", + 1114151: "Citrix", + 1114152: "CodeMeter", + 1114155: "Corba", + 1114158: "Cups", + 1114160: "Cvsup", + 1114161: "DameWare", + 1114167: "Db2", + 1114168: "Docker", + 1114169: "Dclink", + 1114170: "Urchin Web Analytics", + 1114172: "Applications Manager", + 1114174: "Zoom", + 1114176: "EForward-document transport system", + 1114177: "EMWIN", + 1114179: "Adobe Connect", + 1114182: "Big Brother", + 1114185: "Fuze Meeting", + 1114187: "FritzBox", + 1114188: "Skype for Business", + 1114191: "Websense", + 1114195: "Whisker", + 1114201: "HP-JetDirect", + 1114203: "VMWare", + 1114205: "IBM HTTP", + 1114206: "IBM SmartCloud", + 1114212: "IMS", + 1114213: "Informix", + 1114222: "Limelight", + 1114229: "Lawson-m3", + 1114238: "Meeting-maker", + 1114239: "Zendesk", + 1114246: "Microsoft DTC", + 1114248: "Microsoft Netlogon", + 1114250: "Microsoft Remote Web Workplace", + 1114251: "Office Sway", + 1114252: "Sharepoint-wiki", + 1114253: "Microsoft SSDP", + 1114255: "GatherPlace", + 1114269: "Xgrid", + 1114272: "Backweb", + 1114273: "Bugzilla", + 1114274: "NCube", + 1114275: "WinboxRouterOS", + 1114277: "WSO2", + 1114279: "NetFlow", + 1114289: "concur", + 1114290: "NetSupport", + 1114308: "DirectAdmin", + 1114309: "EasyBits", + 1114310: "Eiq-sec-analyzer", + 1114311: "Netbotz", + 1114312: "Aspera FASP", + 1114318: "Perforce", + 1114320: "TiVoConnect", + 1114321: "Polycom", + 1114322: "WebSphere", + 1114330: "Radacct RADIUS", + 1114334: "Securemeeting", + 1114337: "SANE", + 1114339: "WebHost", + 1114340: "CPanel", + 1114342: "Sibelius", + 1114343: "Siebel-crm", + 1114347: "SMS", + 1114350: "Spirent", + 1114351: "SPSS", + 1114352: "Subversion", + 1114355: "Tripwire", + 1114359: "WatchGuard Webblocker database transfer", + 1114361: "WatchGuard Security Event Processor logging", + 1114363: "Genesys Meeting Center", + 1114365: "Nagios", + 1114366: "Microsoft Office 365", + 1114396: "ChatWork", + 1179649: "TCP Port Service Multiplexer", + 1179650: "Management Utility", + 1179651: "Compression Process", + 1179652: "Zeroconf", + 1179653: "Echo", + 1179654: "Discard", + 1179655: "Active Users", + 1179656: "L2TP", + 1179657: "puparp", + 1179658: "vsinet", + 1179659: "maitrd", + 1179660: "Character Generator", + 1179663: "applix", + 1179664: "Net Assistant", + 1179665: "any private mail system", + 1179666: "BackOrifice", + 1179667: "AltaVista Firewall97", + 1179668: "NSW User System FE", + 1179669: "MSG ICP", + 1179670: "MSG Authentication", + 1179671: "Display Support Protocol", + 1179672: "any private printer server", + 1179673: "Time", + 1179674: "Route Access Protocol", + 1179675: "Resource Location Protocol", + 1179676: "graphics", + 1179677: "Host Name Server", + 1179678: "NIC Name", + 1179679: "MPM FLAGS Protocol", + 1179680: "Message Processing Module [recv]", + 1179681: "MPM [default send]", + 1179682: "NI FTP", + 1179683: "Digital Audit Daemon", + 1179684: "Login Host Protocol (TACACS)", + 1179685: "Remote Mail Checking Protocol", + 1179686: "IMP Logical Address Maintenance", + 1179687: "XNS Time Protocol", + 1179688: "Domain Name Server", + 1179689: "XNS Clearinghouse", + 1179690: "ISI Graphics Language", + 1179691: "XNS Authentication", + 1179692: "Mail Transfer Protocol (MTP)", + 1179693: "XNS Mail", + 1179694: "any private file service", + 1179695: "NI MAIL", + 1179696: "ACA Services", + 1179697: "VIA Systems - FTP whois++", + 1179698: "Communications Integrator (CI)", + 1179699: "TACACS-Database Service", + 1179700: "Oracle SQL-NET", + 1179701: "Bootstrap Protocol Server", + 1179702: "Bootstrap Protocol Client", + 1179703: "profile", + 1179704: "Gopher", + 1179705: "Remote Job Service", + 1179706: "any private dial out service", + 1179707: "Distributed External Object Store", + 1179708: "any private RJE service netrjs", + 1179709: "Vet TCP", + 1179710: "Finger", + 1179711: "World Wide Web HTTP", + 1179712: "Torpark", + 1179713: "XFER Utility", + 1179714: "MIT ML Device", + 1179715: "Common Trace Facility", + 1179716: "Micro Focus Cobol", + 1179717: "any private terminal link ttylink", + 1179718: "Kerberos", + 1179719: "SU MIT Telnet Gateway", + 1179720: "DNSIX Securit Attribute Token Map", + 1179721: "MIT Dover Spooler", + 1179722: "Network Printing Protocol", + 1179723: "Device Control Protocol", + 1179724: "Tivoli Object Dispatcher", + 1179725: "BSD supdupd(8)", + 1179726: "DIXIE Protocol Specification", + 1179727: "Swift Remote Virtural File Protocol", + 1179728: "linuxconf", + 1179729: "Metagram Relay", + 1179731: "NIC Host Name Server", + 1179732: "ISO-TSAP Class 0", + 1179733: "Genesis Point-to-Point Trans Net", + 1179734: "ACR-NEMA Digital Imag. & Comm. 300", + 1179735: "Mailbox Name Nameserver", + 1179736: "msantipiracy", + 1179737: "Eudora compatible PW changer", + 1179739: "SNA Gateway Access Server", + 1179740: "PostOffice V.2", + 1179742: "Portmapper RPC Bind", + 1179743: "McIDAS Data Transmission Protocol", + 1179744: "Ident Tap Authentication Service", + 1179745: "Audio News Multicast", + 1179746: "Simple File Transfer Protocol", + 1179747: "ANSA REX Notify", + 1179748: "UUCP Path Service", + 1179749: "SQL Services", + 1179751: "blackjack", + 1179752: "Encore Expedited Remote Pro.Call", + 1179753: "Smakynet", + 1179754: "Network Time Protocol", + 1179755: "ANSA REX Trader", + 1179756: "Locus PC-Interface Net Map Ser", + 1179757: "Unisys Unitary Login", + 1179758: "Locus PC-Interface Conn Server", + 1179759: "GSS X License Verification", + 1179760: "Password Generator Protocol", + 1179761: "Cisco FNATIVE", + 1179762: "Cisco TNATIVE", + 1179763: "Cisco SYSMAINT", + 1179764: "Statistics Service", + 1179765: "INGRES-NET Service", + 1179766: "NCS local location broker", + 1179767: "PROFILE Naming System", + 1179768: "NetBIOS Name Service", + 1179769: "NetBIOS Datagram Service", + 1179770: "NetBIOS Session Service", + 1179771: "EMFIS Data Service", + 1179772: "EMFIS Control Service", + 1179773: "Britton-Lee IDM", + 1179774: "Internet Message Access Protocol", + 1179775: "Universal Management Architecture", + 1179776: "UAAC Protocol", + 1179777: "iso-ip0", + 1179778: "iso-ip", + 1179779: "Jargon", + 1179780: "AED 512 Emulation Service", + 1179781: "SQL-net", + 1179782: "HEMS", + 1179783: "Background File Transfer Program (BFTP)", + 1179784: "SGMP", + 1179785: "NetSC-prod", + 1179786: "NetSC-dev", + 1179787: "SQL Service", + 1179788: "KNET VM Command Message Protocol", + 1179789: "PCMail Server", + 1179790: "NSS-Routing", + 1179791: "SGMP-traps", + 1179793: "SNMPTRAP", + 1179794: "CMIP TCP Manager", + 1179795: "CMIP TCP Agent", + 1179796: "Xerox", + 1179797: "Sirius Systems", + 1179798: "namp", + 1179799: "rsvd", + 1179800: "send", + 1179801: "Network PostScript", + 1179802: "Network Innovations Multiplex", + 1179803: "Network Innovations CL 1", + 1179804: "xyplex-mux", + 1179805: "mailq", + 1179806: "vmnet", + 1179807: "genrad-mux", + 1179808: "X Display Manager Control Protocol", + 1179809: "NextStep Window Server", + 1179810: "Border Gateway Protocol", + 1179811: "Intergraph", + 1179812: "unify", + 1179813: "Unisys Audit SITP", + 1179814: "ocbinder", + 1179815: "ocserver", + 1179816: "remote-kis", + 1179817: "KIS Protocol", + 1179818: "Application Communication Interface", + 1179819: "Plus Fives MUMPS", + 1179820: "Queued File Transport", + 1179821: "Gateway Access Control Protocol", + 1179822: "Prospero Directory Service", + 1179823: "OSU Network Monitoring System", + 1179824: "Spider Remote Monitoring Protocol", + 1179825: "Internet Relay Chat", + 1179826: "DNSIX Network Level Module Audit", + 1179827: "DNSIX Session Mgt Module Audit Redir", + 1179828: "Directory Location Service", + 1179829: "Directory Location Service Monitor", + 1179830: "SMUX", + 1179831: "IBM System Resource Controller", + 1179832: "AppleTalk Routing Maintenance", + 1179833: "AppleTalk Name Binding", + 1179834: "AppleTalk Unused", + 1179835: "AppleTalk Echo", + 1179836: "AppleTalk Zone Information", + 1179838: "Trivial Authenticated Mail Protocol", + 1179839: "ANSI Z39.50", + 1179840: "Texas Instruments", + 1179841: "ATEXSSTR", + 1179842: "IPX", + 1179843: "vmpwscs", + 1179844: "Insignia Solutions", + 1179845: "Computer Associates Intl License Server", + 1179846: "dBASE Unix", + 1179847: "Netix Message Posting Protocol", + 1179848: "Unisys ARPs", + 1179849: "Interactive Mail Access Protocol v3", + 1179850: "Berkeley rlogind with SPX auth", + 1179851: "Berkeley rshd with SPX auth", + 1179852: "Certificate Distribution Center", + 1179853: "masqdialer", + 1179854: "direct", + 1179855: "Survey Measurement", + 1179856: "inbusiness", + 1179857: "link", + 1179858: "Display Systems Protocol", + 1179859: "VAT", + 1179860: "bhfhs", + 1179862: "RAP (Route Access Protocol)", + 1179863: "Checkpoint Firewall-1", + 1179864: "Efficient Short Remote Operations", + 1179865: "openport", + 1179866: "Checkpoint Firewall-1 Management", + 1179867: "arcisdms", + 1179868: "hdap", + 1179869: "Border Gateway Multicast Protocol (BGMP)", + 1179870: "X-Bone CTL", + 1179871: "SCSI on ST", + 1179872: "Tobit David Service Layer", + 1179873: "Tobit David Replica", + 1179874: "http-mgmt", + 1179875: "personal-link", + 1179876: "Cable Port A X", + 1179877: "rescap", + 1179878: "corerjd", + 1179879: "FXP-1", + 1179880: "K-BLOCK", + 1179881: "Novastor Backup", + 1179882: "entrusttime", + 1179883: "bhmds", + 1179884: "AppleShare IP WebAdmin", + 1179885: "VSLMP", + 1179886: "magenta-logic", + 1179887: "opalis-robot", + 1179888: "DPSI", + 1179889: "decAuth", + 1179890: "zannet", + 1179891: "PKIX TimeStamp", + 1179892: "PTP Event", + 1179893: "PTP General", + 1179894: "Programmable Interconnect Point (PIP)", + 1179895: "RTSPS", + 1179896: "Texar Security Port", + 1179897: "Prospero Data Access Protocol", + 1179898: "Perf Analysis Workbench", + 1179899: "Zebra server", + 1179900: "Fatmen Server", + 1179901: "Cabletron Management Protocol", + 1179902: "mftp", + 1179903: "MATIP Type A", + 1245185: "PPTP", + 1245186: "BakBone NetVault", + 1245187: "DTAG or bhoedap4", + 1245188: "ndsauth", + 1245189: "bh611", + 1245190: "datex-asn", + 1245191: "Cloanto Net 1", + 1245192: "bhevent", + 1245193: "shrinkwrap", + 1245194: "Windows RPC", + 1245195: "Tenebris Network Trace Service", + 1245196: "scoi2odialog", + 1245197: "semantix", + 1245198: "SRS Send", + 1245200: "aurora-cmgr", + 1245201: "DTK", + 1245202: "odmr", + 1245203: "mortgageware", + 1245204: "qbikgdp", + 1245205: "rpc2portmap", + 1245206: "Coda authentication server (codaauth2)", + 1245207: "ClearCase", + 1245208: "ListProcessor", + 1245209: "Legent Corporation", + 1245210: "hassle", + 1245211: "Amiga Envoy Network Inquiry Proto", + 1245212: "NEC Corporation", + 1245213: "TIA EIA IS-99 modem client", + 1245214: "TIA EIA IS-99 modem server", + 1245215: "HP Performance data collector", + 1245216: "HP Performance data managed node", + 1245217: "HP Performance data alarm manager", + 1245218: "A Remote Network Server System", + 1245219: "IBM Application", + 1245220: "ASA Message Router Object Def.", + 1245221: "Appletalk Update-Based Routing Pro.", + 1245222: "Unidata LDM", + 1245223: "Lightweight Directory Access Protocol", + 1245224: "uis", + 1245225: "SynOptics SNMP Relay Port", + 1245226: "SynOptics Port Broker Port", + 1245228: "Meta5", + 1245229: "EMBL Nucleic Data Transfer", + 1245230: "NETscout Control Protocol", + 1245231: "Novell Netware over IP", + 1245232: "Multi Protocol Trans. Net.", + 1245233: "kryptolan", + 1245234: "ISO Transport Class 2 Non-Control over TCP", + 1245235: "Workstation Solutions", + 1245236: "Uninterruptible Power Supply", + 1245237: "Genie Protocol", + 1245238: "decap", + 1245239: "nced", + 1245240: "ncld", + 1245241: "Interactive Mail Support Protocol", + 1245242: "timbuktu", + 1245243: "Prospero Resource Manager Sys. Man.", + 1245244: "Prospero Resource Manager Node Man.", + 1245245: "DECLadebug Remote Debug Protocol", + 1245246: "Remote MT Protocol", + 1245247: "Trap Convention Port", + 1245248: "smsp", + 1245249: "infoseek", + 1245250: "bnet", + 1245251: "silverplatter", + 1245252: "onmux", + 1245253: "hyper-g", + 1245254: "ariel1", + 1245255: "smpte", + 1245256: "ariel2", + 1245257: "ariel3", + 1245258: "IBM Operations Planning and Control Start", + 1245259: "IBM Operations Planning and Control Track", + 1245260: "icad-el", + 1245261: "smartsdp", + 1245262: "Server Location", + 1245263: "ocs_cmu", + 1245264: "ocs_amu", + 1245265: "utmpsd", + 1245266: "utmpcd", + 1245267: "iasd", + 1245268: "Usenet Network News Transfer", + 1245269: "mobileip-agent", + 1245270: "mobilip-mn", + 1245271: "dna-cml", + 1245272: "comscm", + 1245273: "dsfgw", + 1245274: "dasp", + 1245275: "sgcp", + 1245276: "decvms-sysmgt", + 1245277: "cvc_hostd", + 1245278: "HTTP Protocol over TLS SSL", + 1245279: "Simple Network Paging Protocol", + 1245280: "Win2k+ Server Message Block", + 1245281: "ddm-rdb", + 1245282: "ddm-dfm", + 1245283: "DDM-SSL", + 1245284: "AS Server Mapper", + 1245285: "tserver", + 1245286: "Cray Network Semaphore server", + 1245287: "Cray SFS config server", + 1245288: "creativeserver", + 1245289: "contentserver", + 1245290: "creativepartnr", + 1245291: "macon-tcp", + 1245292: "scohelp", + 1245294: "ampr-rcmd", + 1245295: "skronk", + 1245296: "datasurfsrv", + 1245297: "datasurfsrvsec", + 1245298: "Alpes", + 1245299: "kpasswd", + 1245300: "SMTP Protocol over TLS SSL (was SSMTP)", + 1245301: "digital-vrc", + 1245302: "mylex-mapd", + 1245303: "Photuris Key Management", + 1245304: "Radio Control Protocol", + 1245305: "scx-proxy", + 1245306: "mondex", + 1245307: "ljk-login", + 1245308: "hybrid-pop", + 1245309: "tn-tl-w1", + 1245310: "Tcpnethaspsrv Protocol", + 1245311: "tn-tl-fd1", + 1245312: "ss7ns", + 1245313: "spsc", + 1245314: "iafserver", + 1245315: "WCCP", + 1245316: "loadsrv", + 1245317: "serialnumberd", + 1245318: "dvs", + 1245319: "bgs-nsi", + 1245320: "ulpnet", + 1245321: "Integra Software Management Environment", + 1245322: "Air Soft Power Burst", + 1245324: "sstats", + 1245325: "saft Simple Asynchronous File Transfer", + 1245326: "gss-http", + 1245327: "nest-protocol", + 1245328: "micom-pfs", + 1245329: "go-login", + 1245330: "Transport Independent Convergence for FNA", + 1245331: "pov-ray", + 1245332: "intecourier", + 1245333: "pim-rp-disc", + 1245334: "dantz", + 1245335: "siam", + 1245336: "ISO ILL Protocol", + 1245337: "VPN Key Exchange", + 1245338: "Simple Transportation Management Framework (STMF)", + 1245339: "asa-appl-proto", + 1245340: "intrinsa", + 1245341: "Citadel", + 1245342: "mailbox-lm", + 1245343: "ohimsrv", + 1245344: "crs", + 1245345: "xvttp", + 1245346: "snare", + 1245347: "FirstClass Protocol", + 1245348: "passgo", + 1245349: "BSD rexecd(8)", + 1245350: "BSD rlogind(8)", + 1245351: "BSD rshd(8)", + 1245352: "spooler", + 1245353: "videotex", + 1245354: "like tenex link but across", + 1245355: "ntalk", + 1245356: "unixtime", + 1245357: "Routing Information Protocol (RIP)", + 1245358: "ripng", + 1245359: "ulp", + 1245360: "ibm-db2", + 1245361: "NetWare Core Protocol (NCP)", + 1245362: "Timeserver", + 1245363: "newdate", + 1245364: "Stock IXChange", + 1245365: "Customer IXChange", + 1245366: "irc-serv", + 1245370: "readnews", + 1245371: "netwall for emergency broadcasts", + 1245372: "MegaMedia Admin", + 1245373: "iiop", + 1245374: "opalis-rdv", + 1245375: "Networked Media Streaming Protocol", + 1245376: "gdomap", + 1245377: "Apertus Technologies Load Determination", + 1245378: "uucpd", + 1245379: "uucp-rlogin", + 1245380: "Commerce", + 1245381: "klogin", + 1245382: "krcmd", + 1245383: "Kerberos encrypted remote shell", + 1245384: "DHCPv6 Client", + 1245385: "DHCPv6 Server", + 1245386: "AFP over TCP", + 1245387: "idfp", + 1245388: "new-who", + 1245389: "cybercash", + 1245390: "deviceshare", + 1245391: "pirp", + 1245392: "Real Time Stream Control Protocol", + 1245393: "dsf", + 1245394: "Remote File System (RFS)", + 1245395: "openvms-sysipc", + 1245396: "sdnskmp", + 1245397: "teedtap", + 1245398: "rmonitord", + 1245399: "monitor", + 1245400: "chcmd", + 1245402: "snews", + 1245403: "plan 9 file service", + 1245404: "whoami", + 1245405: "streettalk", + 1245406: "banyan-rpc", + 1245407: "Microsoft shuttle", + 1245408: "Microsoft rome", + 1245409: "demon", + 1245410: "udemon", + 1245411: "sonar", + 1245412: "banyan-vip", + 1245413: "FTP Software Agent System", + 1245414: "vemmi", + 1245415: "ipcd", + 1245416: "vnas", + 1245417: "ipdd", + 1245418: "decbsrv", + 1245419: "sntp-heartbeat", + 1245420: "Bundle Discovery Protocol", + 1245421: "scc-security", + 1245422: "Philips Video-Conferencing", + 1245423: "keyserver", + 1245424: "IMAP4+SSL", + 1245425: "password-chg", + 1245426: "submission", + 1245427: "cal", + 1245428: "eyelink", + 1245429: "tns-cml", + 1245430: "FileMaker Pro", + 1245431: "eudora-set", + 1245432: "HTTP RPC Ep Map", + 1245433: "tpip", + 1245434: "cab-protocol", + 1245435: "smsd", + 1245436: "PTC Name Service", + 1245437: "SCO Web Server Manager 3", + 1245438: "Aeolon Core Protocol", + 1245439: "Sun IPC server", + 1310721: "nqs", + 1310722: "Sender-Initiated Unsolicited File Transfer", + 1310723: "npmp-trap", + 1310724: "npmp-local", + 1310725: "npmp-gui", + 1310726: "HMMP Indication", + 1310727: "HMMP Operation", + 1310728: "SSLshell", + 1310729: "Internet Configuration Manager", + 1310730: "SCO System Administration Server", + 1310731: "SCO Desktop Administration Server", + 1310732: "DEI-ICDA", + 1310733: "Digital EVM", + 1310734: "SCO WebServer Manager", + 1310735: "ESCP", + 1310736: "Collaborator", + 1310737: "Aux Bus Shunt", + 1310738: "Crypto Admin", + 1310739: "DEC DLM", + 1310740: "ASIA", + 1310741: "PassGo Tivoli", + 1310742: "QMQP (qmail)", + 1310743: "3Com AMP3", + 1310744: "RDA", + 1310745: "IPP (Internet Printing Protocol)", + 1310746: "bmpp", + 1310747: "Service Status update (Sterling Software)", + 1310748: "ginad", + 1310749: "RLZ DBase", + 1310750: "LDAP Protocol over TLS SSL (was SLDAP)", + 1310751: "lanserver", + 1310752: "mcns-sec", + 1310753: "Multicast Source Discovery Protocol (MSDP)", + 1310754: "entrust-sps", + 1310755: "repcmd", + 1310756: "ESRO-EMSDP V1.3", + 1310757: "SANity", + 1310758: "dwr", + 1310759: "PSSC", + 1310760: "Label Distribution Protocol (LDP)", + 1310761: "DHCP Failover", + 1310762: "Registry Registrar Protocol (RRP)", + 1310763: "Aminet", + 1310764: "OBEX", + 1310765: "IEEE MMS", + 1310766: "HELLO_PORT", + 1310767: "AODV", + 1310768: "TINC", + 1310769: "SPMP", + 1310770: "RMC", + 1310771: "TenFold", + 1310772: "URL Rendezvous", + 1310773: "MacOS Server Admin", + 1310774: "HAP", + 1310775: "PFTP", + 1310776: "PureNoise", + 1310777: "Secure Aux Bus", + 1310778: "Sun DR", + 1310779: "doom Id Software", + 1310780: "campaign contribution disclosures - SDR Technologies", + 1310781: "MeComm", + 1310782: "MeRegister", + 1310783: "VACDSM-SWS", + 1310784: "VACDSM-APP", + 1310785: "VPPS-QUA", + 1310786: "CIMPLEX", + 1310787: "ACAP", + 1310788: "DCTP", + 1310789: "VPPS Via", + 1310790: "Virtual Presence Protocol", + 1310791: "GNU Gereration Foundation NCP", + 1310792: "MRM", + 1310793: "entrust-aaas", + 1310794: "entrust-aams", + 1310795: "XFR", + 1310796: "CORBA IIOP", + 1310797: "CORBA IIOP SSL", + 1310798: "MDC Port Mapper", + 1310799: "Hardware Control Protocol Wismar", + 1310800: "asipregistry", + 1310801: "REALM-RUSD", + 1310802: "NMAP", + 1310803: "VATP", + 1310804: "MS Exchange Routing", + 1310805: "Hyperwave-ISP", + 1310806: "connendp", + 1310807: "Linux-HA (High-Availability Linux)", + 1310808: "IEEE-MMS-SSL", + 1310809: "RUSHD", + 1310810: "UUIDGEN", + 1310811: "OLSR", + 1310812: "Access Network", + 1310813: "errlog copy server daemon", + 1310814: "AgentX", + 1310815: "Secure Internet Live Conferencing (SILC)", + 1310816: "Borland DSJ", + 1310817: "Entrust Key Management Service Handler", + 1310818: "Entrust Administration Service Handler", + 1310819: "Cisco TDP", + 1310820: "IBM NetView DM 6000 Server Client", + 1310821: "IBM NetView DM 6000 send tcp", + 1310822: "IBM NetView DM 6000 receive tcp", + 1310823: "netGW", + 1310824: "Network based Rev. Cont. Sys.", + 1310825: "Flexible License Manager", + 1310826: "Fujitsu Device Control", + 1310827: "Russell Info Sci Calendar Manager", + 1310828: "Kerberos 5 admin changepw", + 1310830: "rfile", + 1310832: "pump", + 1310833: "qrh", + 1310834: "rrh", + 1310835: "kerberos v5 server propagation", + 1310836: "nlogin", + 1310837: "con", + 1310839: "ns", + 1310840: "kpwd Kerberos (v4) passwd", + 1310841: "quotad", + 1310842: "cycleserv", + 1310843: "omserv", + 1310844: "webster", + 1310845: "phone", + 1310846: "vid", + 1310847: "cadlock", + 1310848: "rtip", + 1310849: "cycleserv2", + 1310850: "submit", + 1310851: "rpasswd", + 1310852: "entomb", + 1310853: "wpages", + 1310854: "Hummingbird Exceed jconfig", + 1310855: "wpgs", + 1310856: "concert", + 1310857: "QSC", + 1310858: "controlit", + 1310859: "mdbs_daemon", + 1310860: "Device", + 1310861: "FCP", + 1310862: "itm-mcell-s", + 1310863: "PKIX-3 CA RA", + 1310864: "DHCP Failover 2", + 1310865: "SUP server", + 1310866: "rsync", + 1310867: "ICL coNETion locate server", + 1310868: "ICL coNETion server info", + 1310869: "AccessBuilder", + 1310870: "OMG Initial Refs", + 1310871: "Samba SWAT Tool", + 1310872: "IDEAFARM-CHAT", + 1310873: "IDEAFARM-CATCH", + 1310874: "xact-backup", + 1310875: "SecureNet Pro sensor", + 1310878: "Netnews Administration System", + 1310879: "Telnet Protocol over TLS SSL", + 1310880: "IMAP4 Protocol over TLS SSL", + 1310881: "ICP Protocol over TLS SSL", + 1310882: "POP3 Protocol over TLS SSL", + 1310883: "bhoetty", + 1310884: "Cray Unified Resource Manager", + 1310887: "Microsoft Authentication via SSL", + 1310888: "Google(SSL)", + 1310889: "Yahoo Authentication via SSL", + 1310890: "AOL Authentication via SSL", + 1310891: "FIX", + 1310892: "STUN", + 1310893: "Dynamic Host Configuration Protocol (DHCP)", + 1310894: "Megaco", + 1310895: "Rstatd", + 1310896: "RSVP", + 1310897: "SOAP", + 1310898: "Ess Apple Authentication via SSL", + 1310899: "TFTP", + 1310900: "Daytime", + 1310902: "MicrosoftOnline Authentication via SSL", + 1310903: "Microsoft WINS", + 1310904: "Remote Procedure Call (RPC)", + 1310905: "SSL/TLS", + 1310906: "Google APIs(SSL)", + 1310907: "Sina Authentication via SSL", + 1310908: "Google App Engine(SSL)", + 1310909: "Google User Content(SSL)", + 1310910: "Blackberry Authentication via SSL", + 1310912: "Adobe Authentication via SSL", + 1310914: "Lets Encrypt", + 1507329: "QQ Private Protocol", + 1507330: "Thunder Private Protocol", + 1507333: "Jabber Private Protocol", + 1572865: "Classmates", + 1572866: "Yik Yak", + 1572867: "Facebook", + 1572868: "Flickr", + 1572870: "Friendfeed", + 1572871: "Hi5", + 1572872: "LinkedIn", + 1572873: "Livejournal", + 1572874: "Twitter", + 1572875: "Plurk", + 1572876: "MySpace", + 1572880: "Khan Academy", + 1572881: "Pinterest", + 1572882: "Tumblr", + 1572883: "MeetMe", + 1572884: "VKontakte", + 1572885: "Odnoklassniki", + 1572886: "Niwota", + 1572887: "Tagged", + 1572889: "PerfSpot", + 1572890: "Me2day", + 1572891: "Mekusharim", + 1572892: "Draugiem", + 1572893: "Badoo", + 1572894: "Meetup", + 1572895: "Foursquare", + 1572896: "Ning", + 1572897: "i-Part/iPair", + 1572898: "Wretch", + 1572899: "Dudu", + 1572900: "Mig33", + 1572901: "Hatena", + 1572902: "eHarmony", + 1572903: "Fotolog ", + 1572905: "Tencent QQ", + 1572906: "Pixnet", + 1572907: "Nk.Pl", + 1572909: "Twoo", + 1572910: "Plaxo", + 1572911: "Cyworld", + 1572912: "Jivesoftware", + 1572913: "WordPress", + 1572914: "FMyLife", + 1572915: "Dcinside", + 1572916: "Class Chinaren", + 1572917: "Bai Sohu", + 1572918: "Yammer", + 1572919: "Douban", + 1572920: "Gamer", + 1572921: "Xuite", + 1572922: "ChatMe", + 1572923: "Clien.net", + 1572927: "AdultFriendFinder", + 1572928: "Fling.com", + 1572929: "Delicious", + 1572930: "Mei.fm", + 1572931: "Streetlife", + 1572967: "Daum-blog", + 1572968: "Naver-blog", + 1572970: "Panoramio", + 1572974: "Blogger", + 1572975: "FC2", + 1572976: "Yahoo Blog", + 1572977: "Friendster", + 1572978: "Ameba", + 1572980: "Bebo social network", + 1572981: "Kaixin", + 1572983: "Orkut", + 1572985: "Aol-Answers", + 1572987: "CoolTalk social network", + 1572988: "RenRen.com", + 1572989: "TweetDeck", + 1572990: "Hootsuite", + 1572998: "Xing", + 1572999: "Lokalisten", + 1573000: "meinVZ/studiVZ", + 1573004: "Viadeo", + 1573005: "Tuenti", + 1573006: "Hyves", + 1573007: "Mixi.jp", + 1573008: "Yahoo-mbga.jp", + 1573009: "GREE", + 1573010: "Netlog", + 1573011: "2ch", + 1573013: "Reddit", + 1573014: "LoveTheseCurves", + 1573015: "Weibo", + 1573016: "Google+", + 1573017: "Skyrock", + 1573018: "51.com", + 1573019: "Jackd", + 1573020: "Touch", + 1573021: "Skout", + 1573022: "Instagram", + 1573023: "Jiayuan", + 1573024: "Zoosk", + 1573025: "DatingDNA", + 1573026: "500px", + 1573028: "iAround", + 1573029: "pairs", + 1573030: "Path", + 1573031: "WeHeartIt", + 1573032: "Fancy", + 1573033: "Vine", + 1573034: "SnappyTV", + 1573035: "Miliao", + 1573036: "After School", + 1573074: "Weico", + 16777215: "Unknown_Other", +} diff --git a/core/unifi/go.sum b/core/unifi/go.sum index 0b286a58..1041afa2 100644 --- a/core/unifi/go.sum +++ b/core/unifi/go.sum @@ -1,5 +1,11 @@ github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= +github.com/davecgh/go-spew v1.1.1 h1:vj9j/u1bqnvCEfJOwUhtlOARqs3+rkHYY13jYWTU97c= github.com/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= +github.com/pmezard/go-difflib v1.0.0 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZbAQM= github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4= github.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME= +github.com/stretchr/testify v1.4.0 h1:2E4SXV/wtOkTonXsotYi4li6zVWxYlZuYNCXe9XRJyk= github.com/stretchr/testify v1.4.0/go.mod h1:j7eGeouHqKxXV5pUuKE4zz7dFj8WfuZ+81PSLYec5m4= +gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= +gopkg.in/yaml.v2 v2.2.2 h1:ZCJp+EgiOT7lHqUV2J862kp8Qj64Jo6az82+3Td9dZw= +gopkg.in/yaml.v2 v2.2.2/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= diff --git a/core/unifi/site.go b/core/unifi/site.go index 2789a8b6..20018b03 100644 --- a/core/unifi/site.go +++ b/core/unifi/site.go @@ -1,6 +1,9 @@ package unifi -import "strings" +import ( + "fmt" + "strings" +) // GetSites returns a list of configured sites on the UniFi controller. func (u *Unifi) GetSites() (Sites, error) { @@ -29,6 +32,36 @@ func (u *Unifi) GetSites() (Sites, error) { return response.Data, nil } +// GetSiteDPI garners dpi data for sites. +func (u *Unifi) GetSiteDPI(sites Sites) ([]*DPITable, error) { + data := []*DPITable{} + + for _, site := range sites { + u.DebugLog("Polling Controller, retreiving Site DPI data, site %s (%s) ", site.Name, site.Desc) + + var response struct { + Data []*DPITable `json:"data"` + } + + siteDPIpath := fmt.Sprintf(APISiteDPI, site.Name) + if err := u.GetData(siteDPIpath, &response, `{"type":"by_app"}`); err != nil { + return nil, err + } + + if l := len(response.Data); l > 1 { + return nil, fmt.Errorf("dpi data table contains more than 1 item; please open a bug report") + } else if l != 1 { + continue + } + + response.Data[0].SourceName = site.SourceName + response.Data[0].SiteName = site.SiteName + data = append(data, response.Data[0]) + } + + return data, nil +} + // Sites is a struct to match Devices and Clients. type Sites []*Site diff --git a/core/unifi/types.go b/core/unifi/types.go index 394278a0..ed298f40 100644 --- a/core/unifi/types.go +++ b/core/unifi/types.go @@ -15,6 +15,10 @@ const ( APIStatusPath string = "/status" // APISiteList is the path to the api site list. APISiteList string = "/api/stat/sites" + // APISiteDPI is site DPI data. + APISiteDPI string = "/api/s/%s/stat/sitedpi" + // APISiteDPI is site DPI data. + APIClientDPI string = "/api/s/%s/stat/stadpi" // APIClientPath is Unifi Clients API Path APIClientPath string = "/api/s/%s/stat/sta" // APIDevicePath is where we get data about Unifi devices. diff --git a/core/unifi/udm.go b/core/unifi/udm.go index 172d0908..16842809 100644 --- a/core/unifi/udm.go +++ b/core/unifi/udm.go @@ -133,75 +133,45 @@ type UDM struct { // NetworkTable is the list of networks on a gateway. type NetworkTable []struct { - ID string `json:"_id"` - AttrNoDelete FlexBool `json:"attr_no_delete"` - AttrHiddenID string `json:"attr_hidden_id"` - Name string `json:"name"` - SiteID string `json:"site_id"` - VlanEnabled FlexBool `json:"vlan_enabled"` - Purpose string `json:"purpose"` - IPSubnet string `json:"ip_subnet"` - Ipv6InterfaceType string `json:"ipv6_interface_type"` - DomainName string `json:"domain_name"` - IsNat FlexBool `json:"is_nat"` - DhcpdEnabled FlexBool `json:"dhcpd_enabled"` - DhcpdStart string `json:"dhcpd_start"` - DhcpdStop string `json:"dhcpd_stop"` - Dhcpdv6Enabled FlexBool `json:"dhcpdv6_enabled"` - Ipv6RaEnabled FlexBool `json:"ipv6_ra_enabled"` - LteLanEnabled FlexBool `json:"lte_lan_enabled"` - Networkgroup string `json:"networkgroup"` - DhcpdLeasetime FlexInt `json:"dhcpd_leasetime"` - DhcpdDNSEnabled FlexBool `json:"dhcpd_dns_enabled"` - DhcpdGatewayEnabled FlexBool `json:"dhcpd_gateway_enabled"` - DhcpdTimeOffsetEnabled FlexBool `json:"dhcpd_time_offset_enabled"` - Ipv6PdStart string `json:"ipv6_pd_start"` - Ipv6PdStop string `json:"ipv6_pd_stop"` - DhcpdDNS1 string `json:"dhcpd_dns_1"` - DhcpdDNS2 string `json:"dhcpd_dns_2"` - DhcpdDNS3 string `json:"dhcpd_dns_3"` - DhcpdDNS4 string `json:"dhcpd_dns_4"` - Enabled FlexBool `json:"enabled"` - DhcpRelayEnabled FlexBool `json:"dhcp_relay_enabled"` - Mac string `json:"mac"` - IsGuest FlexBool `json:"is_guest"` - IP string `json:"ip"` - Up FlexBool `json:"up"` - DPIStatsTable DPIStatsTable `json:"dpistats_table,omitempty"` - NumSta FlexInt `json:"num_sta"` - RxBytes FlexInt `json:"rx_bytes"` - RxPackets FlexInt `json:"rx_packets"` - TxBytes FlexInt `json:"tx_bytes"` - TxPackets FlexInt `json:"tx_packets"` -} - -// DPIStatsTable is the Deep Packet Inspection data for each "network" -type DPIStatsTable struct { - LastUpdated FlexInt `json:"last_updated"` - ByCat []struct { - Cat FlexInt `json:"cat"` - Apps []FlexInt `json:"apps"` - RxBytes FlexInt `json:"rx_bytes"` - TxBytes FlexInt `json:"tx_bytes"` - RxPackets FlexInt `json:"rx_packets"` - TxPackets FlexInt `json:"tx_packets"` - } `json:"by_cat"` - ByApp []struct { - App FlexInt `json:"app"` - Cat FlexInt `json:"cat"` - Clients []struct { - Mac string `json:"mac"` - RxBytes FlexInt `json:"rx_bytes"` - TxBytes FlexInt `json:"tx_bytes"` - RxPackets FlexInt `json:"rx_packets"` - TxPackets FlexInt `json:"tx_packets"` - } `json:"clients"` - KnownClients FlexInt `json:"known_clients"` - RxBytes FlexInt `json:"rx_bytes"` - TxBytes FlexInt `json:"tx_bytes"` - RxPackets FlexInt `json:"rx_packets"` - TxPackets FlexInt `json:"tx_packets"` - } `json:"by_app"` + ID string `json:"_id"` + AttrNoDelete FlexBool `json:"attr_no_delete"` + AttrHiddenID string `json:"attr_hidden_id"` + Name string `json:"name"` + SiteID string `json:"site_id"` + VlanEnabled FlexBool `json:"vlan_enabled"` + Purpose string `json:"purpose"` + IPSubnet string `json:"ip_subnet"` + Ipv6InterfaceType string `json:"ipv6_interface_type"` + DomainName string `json:"domain_name"` + IsNat FlexBool `json:"is_nat"` + DhcpdEnabled FlexBool `json:"dhcpd_enabled"` + DhcpdStart string `json:"dhcpd_start"` + DhcpdStop string `json:"dhcpd_stop"` + Dhcpdv6Enabled FlexBool `json:"dhcpdv6_enabled"` + Ipv6RaEnabled FlexBool `json:"ipv6_ra_enabled"` + LteLanEnabled FlexBool `json:"lte_lan_enabled"` + Networkgroup string `json:"networkgroup"` + DhcpdLeasetime FlexInt `json:"dhcpd_leasetime"` + DhcpdDNSEnabled FlexBool `json:"dhcpd_dns_enabled"` + DhcpdGatewayEnabled FlexBool `json:"dhcpd_gateway_enabled"` + DhcpdTimeOffsetEnabled FlexBool `json:"dhcpd_time_offset_enabled"` + Ipv6PdStart string `json:"ipv6_pd_start"` + Ipv6PdStop string `json:"ipv6_pd_stop"` + DhcpdDNS1 string `json:"dhcpd_dns_1"` + DhcpdDNS2 string `json:"dhcpd_dns_2"` + DhcpdDNS3 string `json:"dhcpd_dns_3"` + DhcpdDNS4 string `json:"dhcpd_dns_4"` + Enabled FlexBool `json:"enabled"` + DhcpRelayEnabled FlexBool `json:"dhcp_relay_enabled"` + Mac string `json:"mac"` + IsGuest FlexBool `json:"is_guest"` + IP string `json:"ip"` + Up FlexBool `json:"up"` + NumSta FlexInt `json:"num_sta"` + RxBytes FlexInt `json:"rx_bytes"` + RxPackets FlexInt `json:"rx_packets"` + TxBytes FlexInt `json:"tx_bytes"` + TxPackets FlexInt `json:"tx_packets"` } // UDMStat holds the "stat" data for a dream machine. diff --git a/core/unifi/unifi.go b/core/unifi/unifi.go index a08552c7..2b3ba865 100644 --- a/core/unifi/unifi.go +++ b/core/unifi/unifi.go @@ -97,10 +97,10 @@ func (u *Unifi) GetServerData() error { } // GetData makes a unifi request and unmarshals the response into a provided pointer. -func (u *Unifi) GetData(apiPath string, v interface{}) error { +func (u *Unifi) GetData(apiPath string, v interface{}, params ...string) error { start := time.Now() - body, err := u.GetJSON(apiPath) + body, err := u.GetJSON(apiPath, params...) if err != nil { return err } @@ -134,8 +134,8 @@ func (u *Unifi) UniReq(apiPath string, params string) (req *http.Request, err er } // GetJSON returns the raw JSON from a path. This is useful for debugging. -func (u *Unifi) GetJSON(apiPath string) ([]byte, error) { - req, err := u.UniReq(apiPath, "") +func (u *Unifi) GetJSON(apiPath string, params ...string) ([]byte, error) { + req, err := u.UniReq(apiPath, strings.Join(params, " ")) if err != nil { return []byte{}, err } From 46a325c6d592d004eecff5f4fe3c476467bbeb1a Mon Sep 17 00:00:00 2001 From: davidnewhall2 Date: Fri, 27 Dec 2019 20:35:43 -0800 Subject: [PATCH 3/5] update readme --- core/unifi/README.md | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) diff --git a/core/unifi/README.md b/core/unifi/README.md index e3570381..87f58e06 100644 --- a/core/unifi/README.md +++ b/core/unifi/README.md @@ -5,9 +5,13 @@ an authenticated http Client you may use to query the device for data. Also contains some built-in methods for de-serializing common client and device data. The data is provided in a large struct you can consume in your application. -If more features are requested, I'll certainly consider them. Do you need to do -more than just collect data? [Let me know](https://github.com/golift/unifi/issues/new)! -Pull requests and feedback are welcomed! +This library is designed to PULL data FROM the controller. It has no methods that +update settings or change things on the controller. +[Someone expressed interest](https://github.com/golift/unifi/issues/31) in +adding methods to update data, and I'm okay with that. I'll even help add them. +[Tell me what you want to do](https://github.com/golift/unifi/issues/new), and we'll make it happen. + +Pull requests, feature requests, code reviews and feedback are welcomed! Here's a working example: ```golang From 0e594d8b2aa1832521983eff3b1d261cbb62fc4f Mon Sep 17 00:00:00 2001 From: davidnewhall2 Date: Fri, 27 Dec 2019 20:38:02 -0800 Subject: [PATCH 4/5] update build --- core/unifi/.travis.yml | 8 ++------ 1 file changed, 2 insertions(+), 6 deletions(-) diff --git a/core/unifi/.travis.yml b/core/unifi/.travis.yml index c7d4eacc..3c936a6f 100644 --- a/core/unifi/.travis.yml +++ b/core/unifi/.travis.yml @@ -1,15 +1,11 @@ language: go go: -- 1.12.x +- 1.13.x before_install: -- mkdir -p $GOPATH/bin - # Download the `dep` binary to bin folder in $GOPATH -- curl -sLo $GOPATH/bin/dep https://github.com/golang/dep/releases/download/v0.5.3/dep-linux-amd64 -- chmod +x $GOPATH/bin/dep # download super-linter: golangci-lint - curl -sL https://install.goreleaser.com/github.com/golangci/golangci-lint.sh | sh -s -- -b $(go env GOPATH)/bin latest install: -- dep ensure + - go mod vendor script: - golangci-lint run --enable-all -e G402 -D gochecknoglobals - go test ./... From baa2b765bc361560b984853c111621777a411c5d Mon Sep 17 00:00:00 2001 From: davidnewhall2 Date: Fri, 27 Dec 2019 20:42:26 -0800 Subject: [PATCH 5/5] unindent --- core/unifi/.travis.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/core/unifi/.travis.yml b/core/unifi/.travis.yml index 3c936a6f..4346066d 100644 --- a/core/unifi/.travis.yml +++ b/core/unifi/.travis.yml @@ -5,7 +5,7 @@ before_install: # download super-linter: golangci-lint - curl -sL https://install.goreleaser.com/github.com/golangci/golangci-lint.sh | sh -s -- -b $(go env GOPATH)/bin latest install: - - go mod vendor +- go mod vendor script: - golangci-lint run --enable-all -e G402 -D gochecknoglobals - go test ./...