mao-service-discovery 1.6.0-commit-2023-07-24-04-32-53.0 → 1.6.0-commit-2023-07-24-06-22-14.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/MaoServerDiscovery +0 -0
- package/package.json +1 -1
- package/.github/dependabot.yml +0 -11
- package/.github/workflows/codeql-analysis.yml +0 -75
- package/.github/workflows/docker-image.yml +0 -24
- package/.github/workflows/docker-publish.yml +0 -94
- package/.github/workflows/go.yml +0 -29
- package/.github/workflows/go_static.yml +0 -29
- package/.github/workflows/npm-publish-release.yml +0 -36
- package/.github/workflows/npm-publish.yml +0 -41
- package/Dockerfile +0 -19
- package/LICENSE +0 -201
- package/MODULES.md +0 -39
- package/README.md +0 -54
- package/bak/index.html +0 -42
- package/bak/receiveProcessIcmpLoopV4V6.bak +0 -73
- package/bak/test/test-icmp-ka-module.go +0 -297
- package/bak/test/test-tech.go +0 -110
- package/bak/using_etcd/main.go +0 -165
- package/cmd/api/aux-data-module.go +0 -14
- package/cmd/api/config-module.go +0 -11
- package/cmd/api/email-module.go +0 -14
- package/cmd/api/gateway-module.go +0 -23
- package/cmd/api/grpc-ka-module.go +0 -29
- package/cmd/api/icmp-ka-module.go +0 -26
- package/cmd/api/restful-server-module.go +0 -13
- package/cmd/api/topo-module.go +0 -31
- package/cmd/api/wechat-module.go +0 -18
- package/cmd/general_client.go +0 -366
- package/cmd/lib/AuxDataProcessor/aux-data-processor-module.go +0 -64
- package/cmd/lib/AuxDataProcessor/env-temp-processor.go +0 -63
- package/cmd/lib/AuxDataProcessor/env-temp-processor_test.go +0 -30
- package/cmd/lib/Config/config-yaml-module.go +0 -303
- package/cmd/lib/Config/config-yaml-module_test.go +0 -308
- package/cmd/lib/Email/login-auth.go +0 -35
- package/cmd/lib/Email/login-auth_test.go +0 -13
- package/cmd/lib/Email/smtp-email-module.go +0 -229
- package/cmd/lib/Email/smtp-email-module_test.go +0 -12
- package/cmd/lib/GrpcKa/grpc-detect-module.go +0 -269
- package/cmd/lib/GrpcKa/grpc-detect-module_test.go +0 -26
- package/cmd/lib/IcmpKa/icmp-detect-module.go +0 -545
- package/cmd/lib/IcmpKa/icmp-detect-module_test.go +0 -23
- package/cmd/lib/InfluxDB/influxdb-util.go +0 -72
- package/cmd/lib/MaoCommon/gps.go +0 -15
- package/cmd/lib/MaoCommon/service-registry-util.go +0 -59
- package/cmd/lib/MaoCommon/service-registry.go +0 -14
- package/cmd/lib/MaoCommon/service-registry_test.go +0 -30
- package/cmd/lib/MaoEnhancedGolang/smtp.go +0 -438
- package/cmd/lib/Restful/restful-server-impl.go +0 -87
- package/cmd/lib/Soap/soap-tplink-util.go +0 -186
- package/cmd/lib/Soap/soap-tplink-util_test.go +0 -45
- package/cmd/lib/Soap/tplink-gateway-module.go +0 -200
- package/cmd/server.go +0 -327
- package/go.mod +0 -38
- package/go.sum +0 -222
- package/grpc.maojianwei.com/server/discovery/api/generate_api_from_protobuf.sh +0 -1
- package/grpc.maojianwei.com/server/discovery/api/mao-server-discovery.pb.go +0 -403
- package/grpc.maojianwei.com/server/discovery/api/mao-server-discovery.proto +0 -35
- package/grpc.maojianwei.com/server/discovery/api/mao-server-discovery_grpc.pb.go +0 -207
- package/incubator/OnosTopoShow/onos-topo-module.go +0 -347
- package/incubator/Wechat/wechat-message-module.go +0 -267
- package/incubator/Wechat/wechat-message-module_test.go +0 -108
- package/main.go +0 -383
- package/notebook/notebook.txt +0 -8
- package/resource/index-email.html +0 -67
- package/resource/index-icmp.html +0 -41
- package/resource/index-onos.html +0 -38
- package/resource/index-server.html +0 -57
- package/resource/index-wechat.html +0 -64
- package/resource/jquery-3.6.0.min.js +0 -2
- package/screenshot/2-cli-output.png +0 -0
- package/screenshot/2-cli-parameters.png +0 -0
- package/screenshot/2-json-format.png +0 -0
- package/screenshot/2-readable-format.png +0 -0
- package/screenshot/client-server-mode-1.png +0 -0
- package/screenshot/client-server-mode-2.png +0 -0
- package/screenshot/client-server-mode-production.png +0 -0
- package/screenshot/show_using_etcd.png +0 -0
- package/statically_linked_compilation.sh +0 -2
- package/util/mao_log.go +0 -42
- package/util/mao_log_test.go +0 -73
- package/util/mao_util.go +0 -53
|
@@ -1,108 +0,0 @@
|
|
|
1
|
-
package Wechat
|
|
2
|
-
|
|
3
|
-
import (
|
|
4
|
-
"bytes"
|
|
5
|
-
"encoding/json"
|
|
6
|
-
"fmt"
|
|
7
|
-
"io/ioutil"
|
|
8
|
-
"log"
|
|
9
|
-
"net/http"
|
|
10
|
-
"strings"
|
|
11
|
-
"testing"
|
|
12
|
-
)
|
|
13
|
-
|
|
14
|
-
func TestWechatMessageModule_SendWechatMessage(t *testing.T) {
|
|
15
|
-
globalReceiversStr := ""
|
|
16
|
-
globalReceivers := strings.Fields(globalReceiversStr)
|
|
17
|
-
log.Println(globalReceivers)
|
|
18
|
-
}
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
type WechatAccessTokenResponse struct {
|
|
25
|
-
ErrCode int `json:"errcode"`
|
|
26
|
-
ErrMsg string `json:"errmsg"`
|
|
27
|
-
AccessToken string `json:"access_token"`
|
|
28
|
-
ExpiresIn int `json:"expires_in"`
|
|
29
|
-
}
|
|
30
|
-
func TestWechatMessageModule_SendWechatMessage2(t *testing.T) {
|
|
31
|
-
|
|
32
|
-
req, err := http.NewRequest("GET", fmt.Sprintf(URL_TEMPLATE_GET_ACCESS_TOKEN,
|
|
33
|
-
"", ""), nil)
|
|
34
|
-
if err != nil {
|
|
35
|
-
log.Println(err.Error())
|
|
36
|
-
return
|
|
37
|
-
}
|
|
38
|
-
|
|
39
|
-
client := http.Client{}
|
|
40
|
-
resp, err := client.Do(req)
|
|
41
|
-
if err != nil {
|
|
42
|
-
log.Println(err.Error())
|
|
43
|
-
return
|
|
44
|
-
}
|
|
45
|
-
defer resp.Body.Close()
|
|
46
|
-
|
|
47
|
-
body, err := ioutil.ReadAll(resp.Body)
|
|
48
|
-
if err != nil {
|
|
49
|
-
log.Printf(err.Error())
|
|
50
|
-
return
|
|
51
|
-
}
|
|
52
|
-
log.Println(body)
|
|
53
|
-
|
|
54
|
-
accessTokenResponse := WechatAccessTokenResponse{}
|
|
55
|
-
err = json.Unmarshal(body, &accessTokenResponse)
|
|
56
|
-
if err != nil {
|
|
57
|
-
log.Println(err.Error())
|
|
58
|
-
return
|
|
59
|
-
}
|
|
60
|
-
log.Println(body)
|
|
61
|
-
log.Println(accessTokenResponse)
|
|
62
|
-
|
|
63
|
-
if accessTokenResponse.ErrCode != 0 {
|
|
64
|
-
log.Println(accessTokenResponse)
|
|
65
|
-
return
|
|
66
|
-
}
|
|
67
|
-
// =====================================
|
|
68
|
-
|
|
69
|
-
data :=
|
|
70
|
-
"{" +
|
|
71
|
-
"\"touser\":\"@all\"," +
|
|
72
|
-
"\"toparty\":\"\"," +
|
|
73
|
-
"\"totag\":\"\"," +
|
|
74
|
-
"\"msgtype\":\"textcard\"," +
|
|
75
|
-
"\"agentid\": 123456789," +
|
|
76
|
-
"\"textcard\": {" +
|
|
77
|
-
"\"title\":\"青岛雷达\"," +
|
|
78
|
-
"\"description\":\"beijing<br>good day\"," +
|
|
79
|
-
"\"url\":\"https://www.baidu.com/\"" +
|
|
80
|
-
"}" +
|
|
81
|
-
"}"
|
|
82
|
-
postData := bytes.NewReader([]byte(data))
|
|
83
|
-
req, err = http.NewRequest("POST", fmt.Sprintf(URL_TEMPLATE_SEND_MESSAGE, accessTokenResponse.AccessToken), postData)
|
|
84
|
-
if err != nil {
|
|
85
|
-
log.Println(err.Error())
|
|
86
|
-
return
|
|
87
|
-
}
|
|
88
|
-
|
|
89
|
-
client = http.Client{}
|
|
90
|
-
resp, err = client.Do(req)
|
|
91
|
-
if err != nil {
|
|
92
|
-
log.Println(err.Error())
|
|
93
|
-
return
|
|
94
|
-
}
|
|
95
|
-
defer resp.Body.Close()
|
|
96
|
-
|
|
97
|
-
body, err = ioutil.ReadAll(resp.Body)
|
|
98
|
-
if err != nil {
|
|
99
|
-
log.Println(err.Error())
|
|
100
|
-
return
|
|
101
|
-
}
|
|
102
|
-
|
|
103
|
-
log.Println(body)
|
|
104
|
-
|
|
105
|
-
}
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
package/main.go
DELETED
|
@@ -1,383 +0,0 @@
|
|
|
1
|
-
package main
|
|
2
|
-
|
|
3
|
-
import (
|
|
4
|
-
branch "MaoServerDiscovery/cmd"
|
|
5
|
-
"MaoServerDiscovery/util"
|
|
6
|
-
"errors"
|
|
7
|
-
"github.com/spf13/cobra"
|
|
8
|
-
"net"
|
|
9
|
-
"os"
|
|
10
|
-
"runtime"
|
|
11
|
-
"strings"
|
|
12
|
-
)
|
|
13
|
-
|
|
14
|
-
const (
|
|
15
|
-
GENERAL_CLIENT_VERSION = "1.6"
|
|
16
|
-
SERVER_VERSION = "1.6"
|
|
17
|
-
ROOT_VERSION_SIGNATURE = "Server: " + SERVER_VERSION + " Client: " + GENERAL_CLIENT_VERSION
|
|
18
|
-
)
|
|
19
|
-
|
|
20
|
-
var (
|
|
21
|
-
//main_server_addr net.IP
|
|
22
|
-
report_server_addr net.IP
|
|
23
|
-
report_server_port uint32
|
|
24
|
-
minLogLevel util.MaoLogLevel
|
|
25
|
-
silent bool
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
web_server_addr net.IP
|
|
29
|
-
web_server_port uint32
|
|
30
|
-
|
|
31
|
-
cli_dump_interval uint32
|
|
32
|
-
refresh_interval uint32
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
report_interval uint32
|
|
36
|
-
|
|
37
|
-
nat66Gateway bool
|
|
38
|
-
nat66Persistent bool
|
|
39
|
-
|
|
40
|
-
gpsMonitor bool
|
|
41
|
-
gpsPersistent bool
|
|
42
|
-
|
|
43
|
-
influxdbUrl string
|
|
44
|
-
influxdbOrgBucket string
|
|
45
|
-
influxdbToken string
|
|
46
|
-
|
|
47
|
-
envTempMonitor bool
|
|
48
|
-
envTempPersistent bool
|
|
49
|
-
)
|
|
50
|
-
|
|
51
|
-
var rootCmd = &cobra.Command{
|
|
52
|
-
Use: "MaoServerDiscovery",
|
|
53
|
-
Short: "Mao-Service-Discovery, welcome to join our Github community. https://github.com/MaoJianwei/Mao_Service_Discovery",
|
|
54
|
-
Long: "Mao-Service-Discovery:\nService registry & Service discovery & Service keep-alive.\nWelcome to join our Github community. https://github.com/MaoJianwei/MaoServiceDiscovery",
|
|
55
|
-
//Example: "beijing",
|
|
56
|
-
Version: ROOT_VERSION_SIGNATURE,
|
|
57
|
-
Run: func(cmd *cobra.Command, args []string) {
|
|
58
|
-
if err := cmd.Help(); err != nil {
|
|
59
|
-
util.MaoLog(util.ERROR, "Fail to execute rootCmd.Help(): %s", err.Error())
|
|
60
|
-
}
|
|
61
|
-
},
|
|
62
|
-
}
|
|
63
|
-
|
|
64
|
-
var generalClientCmd = &cobra.Command{
|
|
65
|
-
Use: "client",
|
|
66
|
-
Short: "Mao: Run general client. For common device, server, PC, laptop, Raspberry Pi, etc.",
|
|
67
|
-
Long: "Mao-Service-Discovery:\nRun general client. For common device, server, PC, laptop, Raspberry Pi, etc.",
|
|
68
|
-
//Example: "a",
|
|
69
|
-
Version: GENERAL_CLIENT_VERSION,
|
|
70
|
-
Run: func(cmd *cobra.Command, args []string) {
|
|
71
|
-
if err := readGeneralClientArgs(cmd); err != nil {
|
|
72
|
-
util.MaoLog(util.ERROR, "Wrong Args for general client: %s", err.Error())
|
|
73
|
-
return
|
|
74
|
-
}
|
|
75
|
-
|
|
76
|
-
if nat66Gateway == true {
|
|
77
|
-
if runtime.GOOS != `linux` || os.Getgid() != 0 {
|
|
78
|
-
util.MaoLog(util.ERROR, "nat66Gateway is usable only in linux with root privilege")
|
|
79
|
-
return
|
|
80
|
-
}
|
|
81
|
-
}
|
|
82
|
-
|
|
83
|
-
branch.RunGeneralClient(&report_server_addr, report_server_port, report_interval, silent,
|
|
84
|
-
influxdbUrl, influxdbOrgBucket, influxdbToken,
|
|
85
|
-
nat66Gateway, nat66Persistent, gpsMonitor, gpsPersistent, envTempMonitor, envTempPersistent,
|
|
86
|
-
minLogLevel)
|
|
87
|
-
},
|
|
88
|
-
}
|
|
89
|
-
|
|
90
|
-
var serverCmd = &cobra.Command{
|
|
91
|
-
Use: "server",
|
|
92
|
-
Short: "Mao: Run server.",
|
|
93
|
-
Long: "Mao-Service-Discovery: Run server.",
|
|
94
|
-
//Example: "a",
|
|
95
|
-
Version: SERVER_VERSION,
|
|
96
|
-
Run: func(cmd *cobra.Command, args []string) {
|
|
97
|
-
if err := readServerArgs(cmd); err != nil {
|
|
98
|
-
util.MaoLog(util.ERROR, "Wrong Args for server: %s", err.Error())
|
|
99
|
-
return
|
|
100
|
-
}
|
|
101
|
-
|
|
102
|
-
//ss,_ := rootCmd.PersistentFlags().GetString("report_server_addr")
|
|
103
|
-
//report_server_addr = net.ParseIP(ss)
|
|
104
|
-
//fmt.Printf("%v\n%v\n%v\n%v\n%v\n%v\n%v\n",
|
|
105
|
-
// report_server_addr,
|
|
106
|
-
// report_server_port,
|
|
107
|
-
// main_server_addr,
|
|
108
|
-
// web_server_addr,
|
|
109
|
-
// web_server_port,
|
|
110
|
-
// cli_dump_interval,
|
|
111
|
-
// report_interval)
|
|
112
|
-
//
|
|
113
|
-
//fmt.Printf("---\n%v, %d\n", args, len(args))
|
|
114
|
-
//return
|
|
115
|
-
branch.RunServer(&report_server_addr, report_server_port, &web_server_addr, web_server_port,
|
|
116
|
-
influxdbUrl, influxdbToken, influxdbOrgBucket,
|
|
117
|
-
cli_dump_interval, refresh_interval, minLogLevel, silent, SERVER_VERSION)
|
|
118
|
-
},
|
|
119
|
-
}
|
|
120
|
-
|
|
121
|
-
/**
|
|
122
|
-
Common:
|
|
123
|
-
- report_server_addr : connect to / listen on the addr, for service discovery
|
|
124
|
-
- report_server_port : connect to / listen on the port, for service discovery
|
|
125
|
-
- log : min log level. If set to INFO, DEBUG log will not be outputted.
|
|
126
|
-
- silent : if true, no log will be outputted. prior to the log parameter.
|
|
127
|
-
Server:
|
|
128
|
-
- web_server_addr : listen on the addr, for web control
|
|
129
|
-
- web_server_port : listen on the port, for web control
|
|
130
|
-
|
|
131
|
-
- cli_dump_interval : interval for dump all services info. (milliseconds)
|
|
132
|
-
//- refresh_interval : interval for refresh the status of clients. (milliseconds)
|
|
133
|
-
|
|
134
|
-
Client:
|
|
135
|
-
- report_interval : interval for report status to server. (milliseconds)
|
|
136
|
-
|
|
137
|
-
- influxdb_url :url to access influxdb database
|
|
138
|
-
- influxdb_org_bucket : organization and bucket names
|
|
139
|
-
- influxdb_token : token to access influxdb database
|
|
140
|
-
|
|
141
|
-
- enable_aux_nat66_stat : enable to pull statistics of nat66 gateway
|
|
142
|
-
- enable_aux_nat66_persistent : enable to persistent nat66 statistics to database
|
|
143
|
-
|
|
144
|
-
- enable_gps_monitor : enable to read GPS data via serial port from the GPS module
|
|
145
|
-
- enable_gps_persistent : enable to persistent GPS statistics to database
|
|
146
|
-
|
|
147
|
-
- enable_aux_env_temp_monitor : enable to monitor environment temperature
|
|
148
|
-
- enable_aux_env_temp_persistent : enable to upload environment temperature to Influxdb
|
|
149
|
-
*/
|
|
150
|
-
func init() {
|
|
151
|
-
rootCmd.PersistentFlags().String("report_server_addr","::","IP address for gRPC KA module. (e.g. 2001:db8::1)")
|
|
152
|
-
rootCmd.PersistentFlags().Uint32("report_server_port",28888,"Port for gRPC KA module.")
|
|
153
|
-
rootCmd.PersistentFlags().String("log_level", "INFO","The min level for the logs outputted. (e.g. DEBUG, INFO, WARN, ERROR, SILENT)")
|
|
154
|
-
rootCmd.PersistentFlags().Bool("silent", false,"Don't output the server list periodically. (default: false)")
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
//serverCmd.Flags().String("main_server_addr","::","::")
|
|
158
|
-
serverCmd.Flags().String("web_server_addr","::","IP address for Restful server.")
|
|
159
|
-
serverCmd.Flags().Uint32("web_server_port",29999,"Port for Restful server.")
|
|
160
|
-
|
|
161
|
-
serverCmd.Flags().Uint32("cli_dump_interval", 1000, "The interval to output all services info to the CLI, in milliseconds.")
|
|
162
|
-
//serverCmd.Flags().Uint32("refresh_interval", 1000, "The interval to refresh the status of clients, in milliseconds.")
|
|
163
|
-
|
|
164
|
-
serverCmd.Flags().String("influxdb_url","","URL for connecting to Influxdb. (e.g. https://<domain-or-ip>:<port>) (Optional)")
|
|
165
|
-
serverCmd.Flags().String("influxdb_org_bucket","","Same name for Org and Bucket. (Optional)")
|
|
166
|
-
serverCmd.Flags().String("influxdb_token","","Token string obtained from Influxdb. (Optional)")
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
generalClientCmd.Flags().Uint32("report_interval", 1000, "The interval to collect data and report to server, in milliseconds.")
|
|
170
|
-
|
|
171
|
-
generalClientCmd.Flags().String("influxdb_url","","URL for connecting to Influxdb. (e.g. https://<domain-or-ip>:<port>) (Optional)")
|
|
172
|
-
generalClientCmd.Flags().String("influxdb_org_bucket","","Same name for Org and Bucket. (Optional)")
|
|
173
|
-
generalClientCmd.Flags().String("influxdb_token","","Token string obtained from Influxdb. (Optional)")
|
|
174
|
-
|
|
175
|
-
generalClientCmd.Flags().Bool("enable_aux_nat66_stat", false, "Enable to pull statistics of nat66 gateway. Usable only in linux with root privilege. (default: false)")
|
|
176
|
-
generalClientCmd.Flags().Bool("enable_aux_nat66_persistent", false, "Enable to upload nat66 stat to Influxdb. (default: false)")
|
|
177
|
-
|
|
178
|
-
generalClientCmd.Flags().Bool("enable_gps_monitor", false, "Enable to read GPS data via serial port from the GPS module. (default: false)")
|
|
179
|
-
generalClientCmd.Flags().Bool("enable_gps_persistent", false, "Enable to upload GPS data to Influxdb. (default: false)")
|
|
180
|
-
|
|
181
|
-
generalClientCmd.Flags().Bool("enable_aux_env_temp_monitor", false, "Enable to monitor environment temperature. (default: false)")
|
|
182
|
-
generalClientCmd.Flags().Bool("enable_aux_env_temp_persistent", false, "Enable to upload environment temperature to Influxdb. (default: false)")
|
|
183
|
-
}
|
|
184
|
-
|
|
185
|
-
func readRootArgs(cmd *cobra.Command) error {
|
|
186
|
-
|
|
187
|
-
report_server_addr_str, err := rootCmd.PersistentFlags().GetString("report_server_addr")
|
|
188
|
-
if err != nil {
|
|
189
|
-
return err
|
|
190
|
-
}
|
|
191
|
-
report_server_addr = net.ParseIP(report_server_addr_str)
|
|
192
|
-
if report_server_addr == nil {
|
|
193
|
-
return errors.New("report_server_addr is invalid")
|
|
194
|
-
}
|
|
195
|
-
|
|
196
|
-
report_server_port, err = rootCmd.PersistentFlags().GetUint32("report_server_port")
|
|
197
|
-
if err != nil {
|
|
198
|
-
return err
|
|
199
|
-
}
|
|
200
|
-
if report_server_port < 1 || report_server_port > 65535 {
|
|
201
|
-
return errors.New("report_server_port is invalid")
|
|
202
|
-
}
|
|
203
|
-
|
|
204
|
-
min_log_level, err := rootCmd.PersistentFlags().GetString("log_level")
|
|
205
|
-
if err != nil {
|
|
206
|
-
return err
|
|
207
|
-
}
|
|
208
|
-
found := false
|
|
209
|
-
for i, s := range util.MaoLogLevelString {
|
|
210
|
-
if strings.Contains(s, min_log_level) {
|
|
211
|
-
minLogLevel = util.MaoLogLevel(i)
|
|
212
|
-
found = true
|
|
213
|
-
break
|
|
214
|
-
}
|
|
215
|
-
}
|
|
216
|
-
if !found {
|
|
217
|
-
return errors.New("log_level is invalid")
|
|
218
|
-
}
|
|
219
|
-
|
|
220
|
-
silent, err = rootCmd.PersistentFlags().GetBool("silent")
|
|
221
|
-
if err != nil {
|
|
222
|
-
return err
|
|
223
|
-
}
|
|
224
|
-
|
|
225
|
-
return nil
|
|
226
|
-
}
|
|
227
|
-
|
|
228
|
-
func readServerArgs(cmd *cobra.Command) error {
|
|
229
|
-
|
|
230
|
-
if err := readRootArgs(cmd); err != nil {
|
|
231
|
-
return err
|
|
232
|
-
}
|
|
233
|
-
|
|
234
|
-
//main_server_addr_str, err := cmd.Flags().GetString("main_server_addr")
|
|
235
|
-
//if err != nil {
|
|
236
|
-
// return err
|
|
237
|
-
//}
|
|
238
|
-
//main_server_addr = net.ParseIP(main_server_addr_str)
|
|
239
|
-
//if main_server_addr == nil {
|
|
240
|
-
// return errors.New("main_server_addr is invalid")
|
|
241
|
-
//}
|
|
242
|
-
|
|
243
|
-
web_server_addr_str, err := cmd.Flags().GetString("web_server_addr")
|
|
244
|
-
if err != nil {
|
|
245
|
-
return err
|
|
246
|
-
}
|
|
247
|
-
web_server_addr = net.ParseIP(web_server_addr_str)
|
|
248
|
-
if web_server_addr == nil {
|
|
249
|
-
return errors.New("web_server_addr is invalid")
|
|
250
|
-
}
|
|
251
|
-
|
|
252
|
-
web_server_port, err = cmd.Flags().GetUint32("web_server_port")
|
|
253
|
-
if err != nil {
|
|
254
|
-
return err
|
|
255
|
-
}
|
|
256
|
-
if web_server_port < 1 || web_server_port > 65535 {
|
|
257
|
-
return errors.New("web_server_port is invalid")
|
|
258
|
-
}
|
|
259
|
-
|
|
260
|
-
|
|
261
|
-
cli_dump_interval, err = cmd.Flags().GetUint32("cli_dump_interval")
|
|
262
|
-
if err != nil {
|
|
263
|
-
return err
|
|
264
|
-
}
|
|
265
|
-
if cli_dump_interval < 1 {
|
|
266
|
-
return errors.New("cli_dump_interval is invalid")
|
|
267
|
-
}
|
|
268
|
-
|
|
269
|
-
//refresh_interval, err = cmd.Flags().GetUint32("refresh_interval")
|
|
270
|
-
//if err != nil {
|
|
271
|
-
// return err
|
|
272
|
-
//}
|
|
273
|
-
//if refresh_interval < 1 {
|
|
274
|
-
// return errors.New("refresh_interval is invalid")
|
|
275
|
-
//}
|
|
276
|
-
refresh_interval = 1000 // deprecated and useless, this is a padding. can be deleted.
|
|
277
|
-
|
|
278
|
-
influxdbUrl, err = cmd.Flags().GetString("influxdb_url")
|
|
279
|
-
if err != nil {
|
|
280
|
-
return err
|
|
281
|
-
}
|
|
282
|
-
|
|
283
|
-
influxdbOrgBucket, err = cmd.Flags().GetString("influxdb_org_bucket")
|
|
284
|
-
if err != nil {
|
|
285
|
-
return err
|
|
286
|
-
}
|
|
287
|
-
|
|
288
|
-
influxdbToken, err = cmd.Flags().GetString("influxdb_token")
|
|
289
|
-
if err != nil {
|
|
290
|
-
return err
|
|
291
|
-
}
|
|
292
|
-
|
|
293
|
-
return nil
|
|
294
|
-
}
|
|
295
|
-
|
|
296
|
-
func readGeneralClientArgs(cmd *cobra.Command) error {
|
|
297
|
-
|
|
298
|
-
if err := readRootArgs(cmd); err != nil {
|
|
299
|
-
return err
|
|
300
|
-
}
|
|
301
|
-
|
|
302
|
-
var err error
|
|
303
|
-
report_interval, err = cmd.Flags().GetUint32("report_interval")
|
|
304
|
-
if err != nil {
|
|
305
|
-
return err
|
|
306
|
-
}
|
|
307
|
-
if report_interval < 1 {
|
|
308
|
-
return errors.New("report_interval is invalid")
|
|
309
|
-
}
|
|
310
|
-
|
|
311
|
-
|
|
312
|
-
influxdbUrl, err = cmd.Flags().GetString("influxdb_url")
|
|
313
|
-
if err != nil {
|
|
314
|
-
return err
|
|
315
|
-
}
|
|
316
|
-
|
|
317
|
-
influxdbOrgBucket, err = cmd.Flags().GetString("influxdb_org_bucket")
|
|
318
|
-
if err != nil {
|
|
319
|
-
return err
|
|
320
|
-
}
|
|
321
|
-
|
|
322
|
-
influxdbToken, err = cmd.Flags().GetString("influxdb_token")
|
|
323
|
-
if err != nil {
|
|
324
|
-
return err
|
|
325
|
-
}
|
|
326
|
-
|
|
327
|
-
|
|
328
|
-
nat66Gateway, err = cmd.Flags().GetBool("enable_aux_nat66_stat")
|
|
329
|
-
if err != nil {
|
|
330
|
-
return err
|
|
331
|
-
}
|
|
332
|
-
|
|
333
|
-
nat66Persistent, err = cmd.Flags().GetBool("enable_aux_nat66_persistent")
|
|
334
|
-
if err != nil {
|
|
335
|
-
return err
|
|
336
|
-
}
|
|
337
|
-
|
|
338
|
-
|
|
339
|
-
gpsMonitor, err = cmd.Flags().GetBool("enable_gps_monitor")
|
|
340
|
-
if err != nil {
|
|
341
|
-
return err
|
|
342
|
-
}
|
|
343
|
-
|
|
344
|
-
gpsPersistent, err = cmd.Flags().GetBool("enable_gps_persistent")
|
|
345
|
-
if err != nil {
|
|
346
|
-
return err
|
|
347
|
-
}
|
|
348
|
-
|
|
349
|
-
|
|
350
|
-
envTempMonitor, err = cmd.Flags().GetBool("enable_aux_env_temp_monitor")
|
|
351
|
-
if err != nil {
|
|
352
|
-
return err
|
|
353
|
-
}
|
|
354
|
-
|
|
355
|
-
envTempPersistent, err = cmd.Flags().GetBool("enable_aux_env_temp_persistent")
|
|
356
|
-
if err != nil {
|
|
357
|
-
return err
|
|
358
|
-
}
|
|
359
|
-
|
|
360
|
-
|
|
361
|
-
if (envTempPersistent || nat66Persistent) && influxdbUrl == "" {
|
|
362
|
-
return errors.New("influxdb_url is invalid")
|
|
363
|
-
}
|
|
364
|
-
if (envTempPersistent || nat66Persistent) && influxdbOrgBucket == "" {
|
|
365
|
-
return errors.New("influxdb_org_bucket is invalid")
|
|
366
|
-
}
|
|
367
|
-
if (envTempPersistent || nat66Persistent) && influxdbToken == "" {
|
|
368
|
-
return errors.New("influxdb_token is invalid")
|
|
369
|
-
}
|
|
370
|
-
|
|
371
|
-
return nil
|
|
372
|
-
}
|
|
373
|
-
|
|
374
|
-
|
|
375
|
-
func main() {
|
|
376
|
-
|
|
377
|
-
rootCmd.AddCommand(generalClientCmd, serverCmd)
|
|
378
|
-
|
|
379
|
-
if err := rootCmd.Execute(); err != nil {
|
|
380
|
-
//util.MaoLog(util.ERROR, fmt.Sprintf("Fail to execute rootCmd: %s", err))
|
|
381
|
-
os.Exit(-1)
|
|
382
|
-
}
|
|
383
|
-
}
|
package/notebook/notebook.txt
DELETED
|
@@ -1,67 +0,0 @@
|
|
|
1
|
-
<!DOCTYPE html>
|
|
2
|
-
<html lang="en">
|
|
3
|
-
<head>
|
|
4
|
-
<meta charset="UTF-8">
|
|
5
|
-
<title>Title</title>
|
|
6
|
-
</head>
|
|
7
|
-
<body>
|
|
8
|
-
<!--enctype="application/json"-->
|
|
9
|
-
<form action="/addEmailInfo" method="post">
|
|
10
|
-
Username :<br/>
|
|
11
|
-
<textarea rows="1" cols="50" name="username" id="username"></textarea><br/>
|
|
12
|
-
Password :<br/>
|
|
13
|
-
<textarea rows="1" cols="50" name="password" id="password"></textarea><br/>
|
|
14
|
-
SMTP Server address and port (e.g. smtp.mao.com:25) :<br/>
|
|
15
|
-
<textarea rows="1" cols="50" name="smtpServerAddrPort" id="smtpServerAddrPort"></textarea><br/>
|
|
16
|
-
Sender Email :<br/>
|
|
17
|
-
<textarea rows="1" cols="50" name="sender" id="sender"></textarea><br/>
|
|
18
|
-
Receiver Emails (one line, one receiver) :<br/>
|
|
19
|
-
<textarea rows="10" cols="50" name="receiver" id="receiver"></textarea><br/>
|
|
20
|
-
<input type="submit" value="Add" />
|
|
21
|
-
</form>
|
|
22
|
-
<br/>
|
|
23
|
-
<br/>
|
|
24
|
-
<!--Current email info:-->
|
|
25
|
-
<!--<div id="EmailInfoDiv"></div>-->
|
|
26
|
-
<script src="/static/jquery-3.6.0.min.js" type="text/javascript"></script>
|
|
27
|
-
<script>
|
|
28
|
-
$.get("/getEmailInfo",function (response, status, xhr) {
|
|
29
|
-
|
|
30
|
-
// emailInfo = "<table border=\"1\">"
|
|
31
|
-
// emailInfo += "<tr><td>" + "Username" + "</td>"
|
|
32
|
-
// emailInfo += "<td>" + "<input type='text' name='usernameShow' style='width:280px' readonly value='" + (response['username']!=null?response['username']:"N/A") + "'/>" + "</td></tr>"
|
|
33
|
-
// emailInfo += "<tr><td>" + "Password" + "</td>"
|
|
34
|
-
// emailInfo += "<td>" + "<input type='text' name='passwordShow' style='width:280px' readonly value='" + " --- --- " + "'/>" + "</td></tr>"
|
|
35
|
-
// emailInfo += "<tr><td>" + "SMTP Server" + "</td>"
|
|
36
|
-
// emailInfo += "<td>" + "<input type='text' name='smtpServerAddrPortShow' style='width:280px' readonly value='" + (response['smtpServerAddrPort']!=null?response['smtpServerAddrPort']:"N/A") + "'/>" + "</td></tr>"
|
|
37
|
-
// emailInfo += "<tr><td>" + "Sender Email" + "</td>"
|
|
38
|
-
// emailInfo += "<td>" + "<input type='text' name='senderShow' style='width:280px' readonly value='" + (response['sender']!=null?response['sender']:"N/A") + "'/>" + "</td></tr>"
|
|
39
|
-
// emailInfo += "<tr><td>" + "Receiver Emails" + "</td>"
|
|
40
|
-
//
|
|
41
|
-
// receivers = ""
|
|
42
|
-
// if (response['receiver'] != null) {
|
|
43
|
-
// response['receiver'].forEach( r => {
|
|
44
|
-
// receivers += r + "\r\n"
|
|
45
|
-
// })
|
|
46
|
-
// }
|
|
47
|
-
// emailInfo += "<td>" + "<textarea rows='10' cols='38' name='receiverShow'>" + receivers + "</textarea>" + "</td></tr>"
|
|
48
|
-
// emailInfo += "</table>"
|
|
49
|
-
// $("#EmailInfoDiv").html(emailInfo)
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
receivers = ""
|
|
53
|
-
if (response['receiver'] != null) {
|
|
54
|
-
response['receiver'].forEach( r => {
|
|
55
|
-
receivers += r + "\r\n"
|
|
56
|
-
})
|
|
57
|
-
}
|
|
58
|
-
$("#username").text(response['username']!=null?response['username']:"N/A")
|
|
59
|
-
$("#password").text(" --- --- ")
|
|
60
|
-
$("#smtpServerAddrPort").text(response['smtpServerAddrPort']!=null?response['smtpServerAddrPort']:"N/A")
|
|
61
|
-
$("#sender").text(response['sender']!=null?response['sender']:"N/A")
|
|
62
|
-
$("#receiver").text(receivers)
|
|
63
|
-
})
|
|
64
|
-
</script>
|
|
65
|
-
|
|
66
|
-
</body>
|
|
67
|
-
</html>
|
package/resource/index-icmp.html
DELETED
|
@@ -1,41 +0,0 @@
|
|
|
1
|
-
<!DOCTYPE html>
|
|
2
|
-
<html lang="en">
|
|
3
|
-
<head>
|
|
4
|
-
<meta charset="UTF-8">
|
|
5
|
-
<title>Title</title>
|
|
6
|
-
</head>
|
|
7
|
-
<body>
|
|
8
|
-
<!--enctype="application/json"-->
|
|
9
|
-
<form action="/addServiceIp" method="post">
|
|
10
|
-
New Services<br/>
|
|
11
|
-
<textarea rows="6" cols="50" name="ipv4v6"></textarea><br/>
|
|
12
|
-
<input type="submit" value="Add" />
|
|
13
|
-
</form>
|
|
14
|
-
<br/>
|
|
15
|
-
|
|
16
|
-
<div id="services"></div>
|
|
17
|
-
<script src="/static/jquery-3.6.0.min.js" type="text/javascript"></script>
|
|
18
|
-
<script>
|
|
19
|
-
$.get("/showServiceIP",function (response, status, xhr) {
|
|
20
|
-
services = "Services " + response.length + "<br/>"
|
|
21
|
-
services += "<table border=\"1\"><tr><th>Service IP</th><th>Alive</th><th>DetectCount</th><th>ReportCount</th><th>LastSeen</th><th>RttDuration</th><th>RttOutboundTimestamp</th></tr>"
|
|
22
|
-
|
|
23
|
-
$.each(response, function(index, item) {
|
|
24
|
-
services += "<tr><td><form action=\"/delServiceIp\" method=\"post\">"
|
|
25
|
-
services += "<input type=\"submit\" value=\"Delete\" />"
|
|
26
|
-
services += "<input type=\"text\" name='ipv4v6' style='width:280px' readonly value='" + item["Address"] + "'/></form></td>"
|
|
27
|
-
services += "<td>" + item["Alive"] + "</td>"
|
|
28
|
-
services += "<td>" + item["DetectCount"] + "</td>"
|
|
29
|
-
services += "<td>" + item["ReportCount"] + "</td>"
|
|
30
|
-
services += "<td>" + item["LastSeen"] + "</td>"
|
|
31
|
-
services += "<td>" + item["RttDuration"] + "</td>"
|
|
32
|
-
services += "<td>" + item["RttOutboundTimestamp"] + "</td>"
|
|
33
|
-
services += "</tr>"
|
|
34
|
-
})
|
|
35
|
-
services += "</table>"
|
|
36
|
-
$("#services").html(services)
|
|
37
|
-
})
|
|
38
|
-
</script>
|
|
39
|
-
|
|
40
|
-
</body>
|
|
41
|
-
</html>
|
package/resource/index-onos.html
DELETED
|
@@ -1,38 +0,0 @@
|
|
|
1
|
-
<!DOCTYPE html>
|
|
2
|
-
<html lang="en">
|
|
3
|
-
<head>
|
|
4
|
-
<meta charset="UTF-8">
|
|
5
|
-
<title>Title</title>
|
|
6
|
-
</head>
|
|
7
|
-
<body>
|
|
8
|
-
<!--enctype="application/json"-->
|
|
9
|
-
<form action="/addOnosInfo" method="post">
|
|
10
|
-
ONOS Endpoint address and port (e.g. 127.0.0.1:8181) :<br/>
|
|
11
|
-
<textarea rows="1" cols="50" name="addrPort" id="addrPort"></textarea><br/>
|
|
12
|
-
<input type="submit" value="Add"/>
|
|
13
|
-
</form>
|
|
14
|
-
<br/>
|
|
15
|
-
<br/>
|
|
16
|
-
<!--Current email info:-->
|
|
17
|
-
<div id="OnosInfoDiv"></div>
|
|
18
|
-
<script src="/static/jquery-3.6.0.min.js" type="text/javascript"></script>
|
|
19
|
-
<script>
|
|
20
|
-
$.get("/getOnosInfo", function (response, status, xhr) {
|
|
21
|
-
onosInfo = "<table border=\"1\">"
|
|
22
|
-
onosInfo += "<tr><td>" + "ADD_DEVICE_API" + "</td>"
|
|
23
|
-
onosInfo += "<td>" + "<input type='text' name='ADD_DEVICE_API_Show' style='width:600px' readonly value='" + (response['ADD_DEVICE_API'] != null ? response['ADD_DEVICE_API'] : "N/A") + "'/>" + "</td></tr>"
|
|
24
|
-
onosInfo += "<tr><td>" + "REMOVE_DEVICE_API" + "</td>"
|
|
25
|
-
onosInfo += "<td>" + "<input type='text' name='REMOVE_DEVICE_API_Show' style='width:600px' readonly value='" + (response['REMOVE_DEVICE_API'] != null ? response['REMOVE_DEVICE_API'] : "N/A") + "'/>" + "</td></tr>"
|
|
26
|
-
onosInfo += "<tr><td>" + "DELETE_DEVICE_API" + "</td>"
|
|
27
|
-
onosInfo += "<td>" + "<input type='text' name='DELETE_DEVICE_API_Show' style='width:600px' readonly value='" + (response['DELETE_DEVICE_API'] != null ? response['DELETE_DEVICE_API'] : "N/A") + "'/>" + "</td></tr>"
|
|
28
|
-
onosInfo += "<tr><td>" + "ADD_LINK_API" + "</td>"
|
|
29
|
-
onosInfo += "<td>" + "<input type='text' name='ADD_LINK_API_Show' style='width:600px' readonly value='" + (response['ADD_LINK_API'] != null ? response['ADD_LINK_API'] : "N/A") + "'/>" + "</td></tr>"
|
|
30
|
-
onosInfo += "<tr><td>" + "REMOVE_LINK_API" + "</td>"
|
|
31
|
-
onosInfo += "<td>" + "<input type='text' name='REMOVE_LINK_API_Show' style='width:600px' readonly value='" + (response['REMOVE_LINK_API'] != null ? response['REMOVE_LINK_API'] : "N/A") + "'/>" + "</td></tr>"
|
|
32
|
-
onosInfo += "</table>"
|
|
33
|
-
$("#OnosInfoDiv").html(onosInfo)
|
|
34
|
-
})
|
|
35
|
-
</script>
|
|
36
|
-
|
|
37
|
-
</body>
|
|
38
|
-
</html>
|