openc3 5.9.0 → 5.10.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.
Potentially problematic release.
This version of openc3 might be problematic. Click here for more details.
- checksums.yaml +4 -4
- data/lib/openc3/accessors/binary_accessor.rb +5 -2
- data/lib/openc3/api/limits_api.rb +7 -23
- data/lib/openc3/api/target_api.rb +11 -8
- data/lib/openc3/api/tlm_api.rb +29 -38
- data/lib/openc3/microservices/decom_microservice.rb +5 -1
- data/lib/openc3/models/auth_model.rb +18 -6
- data/lib/openc3/models/cvt_model.rb +113 -50
- data/lib/openc3/models/interface_model.rb +2 -0
- data/lib/openc3/models/microservice_status_model.rb +1 -1
- data/lib/openc3/models/plugin_model.rb +2 -0
- data/lib/openc3/models/target_model.rb +45 -1
- data/lib/openc3/models/tool_model.rb +2 -0
- data/lib/openc3/models/widget_model.rb +2 -0
- data/lib/openc3/packets/structure.rb +2 -2
- data/lib/openc3/packets/structure_item.rb +7 -24
- data/lib/openc3/script/api_shared.rb +45 -48
- data/lib/openc3/script/web_socket_api.rb +2 -2
- data/lib/openc3/system/target.rb +3 -3
- data/lib/openc3/top_level.rb +1 -1
- data/lib/openc3/utilities/authentication.rb +0 -1
- data/lib/openc3/utilities/aws_bucket.rb +4 -0
- data/lib/openc3/utilities/local_mode.rb +1 -1
- data/lib/openc3/utilities/store_autoload.rb +5 -5
- data/lib/openc3/version.rb +5 -5
- data/templates/tool_angular/package.json +2 -2
- data/templates/tool_react/package.json +1 -1
- data/templates/tool_svelte/src/services/openc3-api.js +174 -174
- data/templates/tool_vue/package.json +2 -2
- data/templates/widget/package.json +2 -2
- metadata +2 -2
@@ -20,10 +20,10 @@
|
|
20
20
|
# if purchased from OpenC3, Inc.
|
21
21
|
*/
|
22
22
|
|
23
|
-
import axios from
|
23
|
+
import axios from "./axios.js";
|
24
24
|
|
25
25
|
export class OpenC3Api {
|
26
|
-
id = 1
|
26
|
+
id = 1;
|
27
27
|
|
28
28
|
constructor() {}
|
29
29
|
|
@@ -31,20 +31,20 @@ export class OpenC3Api {
|
|
31
31
|
try {
|
32
32
|
let refreshed = await OpenC3Auth.updateToken(
|
33
33
|
OpenC3Auth.defaultMinValidity
|
34
|
-
)
|
34
|
+
);
|
35
35
|
if (refreshed) {
|
36
|
-
OpenC3Auth.setTokens()
|
36
|
+
OpenC3Auth.setTokens();
|
37
37
|
}
|
38
38
|
} catch (error) {
|
39
|
-
OpenC3Auth.login()
|
39
|
+
OpenC3Auth.login();
|
40
40
|
}
|
41
|
-
this.id = this.id + 1
|
41
|
+
this.id = this.id + 1;
|
42
42
|
try {
|
43
|
-
kwparams[
|
43
|
+
kwparams["scope"] = window.openc3Scope;
|
44
44
|
const response = await axios.post(
|
45
|
-
|
45
|
+
"/openc3-api/api",
|
46
46
|
{
|
47
|
-
jsonrpc:
|
47
|
+
jsonrpc: "2.0",
|
48
48
|
method: method,
|
49
49
|
params: params,
|
50
50
|
id: this.id,
|
@@ -53,11 +53,11 @@ export class OpenC3Api {
|
|
53
53
|
{
|
54
54
|
headers: {
|
55
55
|
Authorization: localStorage.openc3Token,
|
56
|
-
|
56
|
+
"Content-Type": "application/json-rpc",
|
57
57
|
...headerOptions,
|
58
58
|
},
|
59
59
|
}
|
60
|
-
)
|
60
|
+
);
|
61
61
|
// var data = response.data
|
62
62
|
// if (data.error) {
|
63
63
|
// var err = new Error()
|
@@ -66,53 +66,53 @@ export class OpenC3Api {
|
|
66
66
|
// console.log(data.error.data.backtrace.join('\n'))
|
67
67
|
// throw err
|
68
68
|
// }
|
69
|
-
return response.data.result
|
69
|
+
return response.data.result;
|
70
70
|
} catch (error) {
|
71
|
-
var err = new Error()
|
71
|
+
var err = new Error();
|
72
72
|
if (error.response) {
|
73
73
|
// The request was made and the server responded with a
|
74
74
|
// status code that falls out of the range of 2xx
|
75
|
-
err.name = error.response.data.error.data.class
|
76
|
-
err.message = error.response.data.error.data.message
|
75
|
+
err.name = error.response.data.error.data.class;
|
76
|
+
err.message = error.response.data.error.data.message;
|
77
77
|
} else if (error.request) {
|
78
78
|
// The request was made but no response was received, `error.request`
|
79
79
|
// is an instance of XMLHttpRequest in the browser and an instance
|
80
80
|
// of http.ClientRequest in Node.js
|
81
|
-
err.name =
|
82
|
-
err.message =
|
81
|
+
err.name = "Request error";
|
82
|
+
err.message = "Request error, no response received";
|
83
83
|
} else {
|
84
84
|
// Something happened in setting up the request and triggered an Error
|
85
|
-
err.name =
|
85
|
+
err.name = "Unknown error";
|
86
86
|
}
|
87
87
|
// console.log(error)
|
88
|
-
throw err
|
88
|
+
throw err;
|
89
89
|
}
|
90
90
|
}
|
91
91
|
|
92
92
|
decode_openc3_type(val) {
|
93
|
-
if (val !== null && typeof val ===
|
94
|
-
if (val.json_class ==
|
95
|
-
if (val.raw ==
|
96
|
-
return NaN
|
97
|
-
} else if (val.raw ==
|
98
|
-
return Infinity
|
99
|
-
} else if (val.raw ==
|
100
|
-
return -Infinity
|
93
|
+
if (val !== null && typeof val === "object") {
|
94
|
+
if (val.json_class == "Float" && val.raw) {
|
95
|
+
if (val.raw == "NaN") {
|
96
|
+
return NaN;
|
97
|
+
} else if (val.raw == "Infinity") {
|
98
|
+
return Infinity;
|
99
|
+
} else if (val.raw == "-Infinity") {
|
100
|
+
return -Infinity;
|
101
101
|
}
|
102
102
|
}
|
103
103
|
}
|
104
|
-
return null
|
104
|
+
return null;
|
105
105
|
}
|
106
106
|
|
107
107
|
encode_openc3_type(val) {
|
108
108
|
if (Number.isNaN(val)) {
|
109
|
-
return { json_class:
|
109
|
+
return { json_class: "Float", raw: "NaN" };
|
110
110
|
} else if (val == Number.POSITIVE_INFINITY) {
|
111
|
-
return { json_class:
|
111
|
+
return { json_class: "Float", raw: "Infinity" };
|
112
112
|
} else if (val == Number.NEGATIVE_INFINITY) {
|
113
|
-
return { json_class:
|
113
|
+
return { json_class: "Float", raw: "-Infinity" };
|
114
114
|
}
|
115
|
-
return null
|
115
|
+
return null;
|
116
116
|
}
|
117
117
|
|
118
118
|
ensure_offline_access() {
|
@@ -120,13 +120,13 @@ export class OpenC3Api {
|
|
120
120
|
if (needed) {
|
121
121
|
if (localStorage.openc3OfflineToken) {
|
122
122
|
this.set_offline_access(localStorage.openc3OfflineToken).then(() => {
|
123
|
-
delete localStorage.openc3OfflineToken
|
124
|
-
})
|
123
|
+
delete localStorage.openc3OfflineToken;
|
124
|
+
});
|
125
125
|
} else {
|
126
|
-
OpenC3Auth.getOfflineAccess()
|
126
|
+
OpenC3Auth.getOfflineAccess();
|
127
127
|
}
|
128
128
|
}
|
129
|
-
})
|
129
|
+
});
|
130
130
|
}
|
131
131
|
|
132
132
|
// ***********************************************
|
@@ -134,123 +134,123 @@ export class OpenC3Api {
|
|
134
134
|
// ***********************************************
|
135
135
|
|
136
136
|
offline_access_needed() {
|
137
|
-
return this.exec(
|
137
|
+
return this.exec("offline_access_needed", []);
|
138
138
|
}
|
139
139
|
|
140
140
|
set_offline_access(offline_access_token) {
|
141
|
-
return this.exec(
|
141
|
+
return this.exec("set_offline_access", [offline_access_token]);
|
142
142
|
}
|
143
143
|
|
144
144
|
get_all_interface_info() {
|
145
|
-
return this.exec(
|
145
|
+
return this.exec("get_all_interface_info", []);
|
146
146
|
}
|
147
147
|
|
148
148
|
map_target_to_interface(target_name, interface_name) {
|
149
|
-
return this.exec(
|
149
|
+
return this.exec("map_target_to_interface", [target_name, interface_name]);
|
150
150
|
}
|
151
151
|
|
152
152
|
connect_interface(interface_name, ...interface_params) {
|
153
153
|
if (interface_params.length > 0) {
|
154
|
-
return this.exec(
|
154
|
+
return this.exec("connect_interface", [
|
155
155
|
interface_name,
|
156
156
|
...interface_params,
|
157
|
-
])
|
157
|
+
]);
|
158
158
|
} else {
|
159
|
-
return this.exec(
|
159
|
+
return this.exec("connect_interface", [interface_name]);
|
160
160
|
}
|
161
161
|
}
|
162
162
|
|
163
163
|
disconnect_interface(interface_name) {
|
164
|
-
return this.exec(
|
164
|
+
return this.exec("disconnect_interface", [interface_name]);
|
165
165
|
}
|
166
166
|
|
167
167
|
get_all_router_info() {
|
168
|
-
return this.exec(
|
168
|
+
return this.exec("get_all_router_info", []);
|
169
169
|
}
|
170
170
|
|
171
171
|
connect_router(router_name) {
|
172
|
-
return this.exec(
|
172
|
+
return this.exec("connect_router", [router_name]);
|
173
173
|
}
|
174
174
|
|
175
175
|
disconnect_router(router_name) {
|
176
|
-
return this.exec(
|
176
|
+
return this.exec("disconnect_router", [router_name]);
|
177
177
|
}
|
178
178
|
|
179
179
|
get_target_interfaces() {
|
180
|
-
return this.exec(
|
180
|
+
return this.exec("get_target_interfaces", []);
|
181
181
|
}
|
182
182
|
|
183
183
|
// DEPRECATED
|
184
184
|
get_all_target_info() {
|
185
|
-
return this.exec(
|
185
|
+
return this.exec("get_all_target_info", []);
|
186
186
|
}
|
187
187
|
|
188
188
|
get_tlm_cnts(target_commands) {
|
189
|
-
return this.exec(
|
189
|
+
return this.exec("get_tlm_cnts", [target_commands]);
|
190
190
|
}
|
191
191
|
|
192
192
|
get_item(target, packet, item) {
|
193
|
-
return this.exec(
|
193
|
+
return this.exec("get_item", [target, packet, item]);
|
194
194
|
}
|
195
195
|
|
196
196
|
get_parameter(target, packet, item) {
|
197
|
-
return this.exec(
|
197
|
+
return this.exec("get_parameter", [target, packet, item]);
|
198
198
|
}
|
199
199
|
|
200
200
|
get_all_packet_logger_info() {
|
201
|
-
return this.exec(
|
201
|
+
return this.exec("get_all_packet_logger_info", []);
|
202
202
|
}
|
203
203
|
|
204
204
|
start_logging() {
|
205
|
-
return this.exec(
|
205
|
+
return this.exec("start_logging", []);
|
206
206
|
}
|
207
207
|
|
208
208
|
stop_logging() {
|
209
|
-
return this.exec(
|
209
|
+
return this.exec("stop_logging", []);
|
210
210
|
}
|
211
211
|
|
212
212
|
start_cmd_log(log_writer_name) {
|
213
|
-
return this.exec(
|
213
|
+
return this.exec("start_cmd_log", [log_writer_name]);
|
214
214
|
}
|
215
215
|
|
216
216
|
start_tlm_log(log_writer_name) {
|
217
|
-
return this.exec(
|
217
|
+
return this.exec("start_tlm_log", [log_writer_name]);
|
218
218
|
}
|
219
219
|
|
220
220
|
stop_cmd_log(log_writer_name) {
|
221
|
-
return this.exec(
|
221
|
+
return this.exec("stop_cmd_log", [log_writer_name]);
|
222
222
|
}
|
223
223
|
|
224
224
|
stop_tlm_log(log_writer_name) {
|
225
|
-
return this.exec(
|
225
|
+
return this.exec("stop_tlm_log", [log_writer_name]);
|
226
226
|
}
|
227
227
|
|
228
228
|
get_server_status() {
|
229
|
-
return this.exec(
|
229
|
+
return this.exec("get_server_status", []);
|
230
230
|
}
|
231
231
|
|
232
232
|
get_limits_sets() {
|
233
|
-
return this.exec(
|
233
|
+
return this.exec("get_limits_sets", []);
|
234
234
|
}
|
235
235
|
|
236
236
|
get_limits_set() {
|
237
|
-
return this.exec(
|
237
|
+
return this.exec("get_limits_set", []);
|
238
238
|
}
|
239
239
|
|
240
240
|
set_limits_set(limits_set) {
|
241
|
-
return this.exec(
|
241
|
+
return this.exec("set_limits_set", [limits_set]);
|
242
242
|
}
|
243
243
|
|
244
244
|
get_background_tasks() {
|
245
|
-
return this.exec(
|
245
|
+
return this.exec("get_background_tasks", []);
|
246
246
|
}
|
247
247
|
|
248
248
|
start_background_task(name) {
|
249
|
-
return this.exec(
|
249
|
+
return this.exec("start_background_task", [name]);
|
250
250
|
}
|
251
251
|
|
252
252
|
stop_background_task(name) {
|
253
|
-
return this.exec(
|
253
|
+
return this.exec("stop_background_task", [name]);
|
254
254
|
}
|
255
255
|
|
256
256
|
// ***********************************************
|
@@ -258,179 +258,179 @@ export class OpenC3Api {
|
|
258
258
|
// ***********************************************
|
259
259
|
|
260
260
|
get_target(target_name) {
|
261
|
-
return this.exec(
|
261
|
+
return this.exec("get_target", [target_name]);
|
262
262
|
}
|
263
263
|
|
264
|
-
|
265
|
-
return this.exec(
|
264
|
+
get_target_names() {
|
265
|
+
return this.exec("get_target_names", []);
|
266
266
|
}
|
267
267
|
|
268
268
|
get_telemetry(target_name, packet_name) {
|
269
|
-
return this.exec(
|
269
|
+
return this.exec("get_telemetry", [target_name, packet_name]);
|
270
270
|
}
|
271
271
|
|
272
272
|
get_all_telemetry(target_name) {
|
273
|
-
return this.exec(
|
273
|
+
return this.exec("get_all_telemetry", [target_name]);
|
274
274
|
}
|
275
275
|
|
276
276
|
get_all_telemetry_names(target_name) {
|
277
|
-
return this.exec(
|
277
|
+
return this.exec("get_all_telemetry_names", [target_name]);
|
278
278
|
}
|
279
279
|
|
280
280
|
async get_tlm_packet(target_name, packet_name, value_type, stale_time = 30) {
|
281
|
-
const data = await this.exec(
|
281
|
+
const data = await this.exec("get_tlm_packet", [target_name, packet_name], {
|
282
282
|
type: value_type,
|
283
283
|
stale_time: stale_time,
|
284
|
-
})
|
284
|
+
});
|
285
285
|
// Make sure data isn't null or undefined. Note this is the only valid use of == or !=
|
286
286
|
if (data != null) {
|
287
|
-
var len = data.length
|
288
|
-
var converted = null
|
287
|
+
var len = data.length;
|
288
|
+
var converted = null;
|
289
289
|
for (var i = 0; i < len; i++) {
|
290
|
-
converted = this.decode_openc3_type(data[i][1])
|
290
|
+
converted = this.decode_openc3_type(data[i][1]);
|
291
291
|
if (converted !== null) {
|
292
|
-
data[i][1] = converted
|
292
|
+
data[i][1] = converted;
|
293
293
|
}
|
294
294
|
}
|
295
295
|
}
|
296
|
-
return data
|
296
|
+
return data;
|
297
297
|
}
|
298
298
|
|
299
299
|
get_packet_derived_items(target_name, packet_name) {
|
300
|
-
return this.exec(
|
300
|
+
return this.exec("get_packet_derived_items", [target_name, packet_name]);
|
301
301
|
}
|
302
302
|
|
303
303
|
get_tlm_buffer(target_name, packet_name) {
|
304
|
-
return this.exec(
|
304
|
+
return this.exec("get_tlm_buffer", [target_name, packet_name]);
|
305
305
|
}
|
306
306
|
|
307
307
|
async get_tlm_values(items, stale_time = 30) {
|
308
|
-
const data = await this.exec(
|
308
|
+
const data = await this.exec("get_tlm_values", [items], {
|
309
309
|
stale_time: stale_time,
|
310
|
-
})
|
311
|
-
var len = data[0].length
|
312
|
-
var converted = null
|
310
|
+
});
|
311
|
+
var len = data[0].length;
|
312
|
+
var converted = null;
|
313
313
|
for (var i = 0; i < len; i++) {
|
314
|
-
converted = this.decode_openc3_type(data[0][i])
|
314
|
+
converted = this.decode_openc3_type(data[0][i]);
|
315
315
|
if (converted !== null) {
|
316
|
-
data[0][i] = converted
|
316
|
+
data[0][i] = converted;
|
317
317
|
}
|
318
318
|
}
|
319
|
-
return data
|
319
|
+
return data;
|
320
320
|
}
|
321
321
|
|
322
322
|
get_limits(target_name, packet_name, item_name) {
|
323
|
-
return this.exec(
|
323
|
+
return this.exec("get_limits", [target_name, packet_name, item_name]);
|
324
324
|
}
|
325
325
|
|
326
|
-
async tlm(target_name, packet_name, item_name, value_type =
|
327
|
-
let data = null
|
326
|
+
async tlm(target_name, packet_name, item_name, value_type = "CONVERTED") {
|
327
|
+
let data = null;
|
328
328
|
// Check for the single string syntax: tlm("TGT PKT ITEM")
|
329
329
|
if (packet_name === undefined) {
|
330
|
-
data = await this.exec(
|
330
|
+
data = await this.exec("tlm", [target_name]);
|
331
331
|
// Check for the single string syntax with type: tlm("TGT PKT ITEM", "RAW")
|
332
332
|
} else if (item_name === undefined) {
|
333
333
|
if (
|
334
|
-
[
|
334
|
+
["RAW", "CONVERTED", "FORMATTED", "WITH_UNITS"].includes(packet_name)
|
335
335
|
) {
|
336
|
-
data = await this.exec(
|
336
|
+
data = await this.exec("tlm", [target_name], { type: packet_name });
|
337
337
|
} else {
|
338
|
-
var err = new Error()
|
339
|
-
err.name =
|
340
|
-
err.message = `Invalid data type ${packet_name}. Valid options are RAW, CONVERTED, FORMATTED, and WITH_UNITS
|
341
|
-
throw err
|
338
|
+
var err = new Error();
|
339
|
+
err.name = "TypeError";
|
340
|
+
err.message = `Invalid data type ${packet_name}. Valid options are RAW, CONVERTED, FORMATTED, and WITH_UNITS.`;
|
341
|
+
throw err;
|
342
342
|
}
|
343
343
|
} else {
|
344
|
-
data = await this.exec(
|
344
|
+
data = await this.exec("tlm", [target_name, packet_name, item_name], {
|
345
345
|
type: value_type,
|
346
|
-
})
|
346
|
+
});
|
347
347
|
}
|
348
|
-
var converted = this.decode_openc3_type(data)
|
348
|
+
var converted = this.decode_openc3_type(data);
|
349
349
|
if (converted !== null) {
|
350
|
-
data = converted
|
350
|
+
data = converted;
|
351
351
|
}
|
352
|
-
return data
|
352
|
+
return data;
|
353
353
|
}
|
354
354
|
|
355
355
|
async inject_tlm(
|
356
356
|
target_name,
|
357
357
|
packet_name,
|
358
358
|
item_hash = null,
|
359
|
-
value_type =
|
359
|
+
value_type = "CONVERTED"
|
360
360
|
) {
|
361
361
|
data = await this.exec(
|
362
|
-
|
362
|
+
"inject_tlm",
|
363
363
|
[target_name, packet_name, item_hash],
|
364
364
|
{
|
365
365
|
type: value_type,
|
366
366
|
}
|
367
|
-
)
|
367
|
+
);
|
368
368
|
}
|
369
369
|
|
370
370
|
set_tlm(target_name, packet_name, item_name, value_type) {
|
371
|
-
return this.exec(
|
371
|
+
return this.exec("set_tlm", [target_name, packet_name, item_name], {
|
372
372
|
type: value_type,
|
373
|
-
})
|
373
|
+
});
|
374
374
|
}
|
375
375
|
|
376
376
|
override_tlm(target_name, packet_name, item_name, value_type) {
|
377
|
-
return this.exec(
|
377
|
+
return this.exec("override_tlm", [target_name, packet_name, item_name], {
|
378
378
|
type: value_type,
|
379
|
-
})
|
379
|
+
});
|
380
380
|
}
|
381
381
|
|
382
382
|
get_overrides() {
|
383
|
-
return this.exec(
|
383
|
+
return this.exec("get_overrides");
|
384
384
|
}
|
385
385
|
|
386
386
|
normalize_tlm(target_name, packet_name, item_name, value_type) {
|
387
|
-
return this.exec(
|
387
|
+
return this.exec("normalize_tlm", [target_name, packet_name, item_name], {
|
388
388
|
type: value_type,
|
389
|
-
})
|
389
|
+
});
|
390
390
|
}
|
391
391
|
|
392
392
|
get_all_commands(target_name) {
|
393
|
-
return this.exec(
|
393
|
+
return this.exec("get_all_commands", [target_name]);
|
394
394
|
}
|
395
395
|
|
396
396
|
get_all_command_names(target_name) {
|
397
|
-
return this.exec(
|
397
|
+
return this.exec("get_all_command_names", [target_name]);
|
398
398
|
}
|
399
399
|
|
400
400
|
get_command(target_name, command_name) {
|
401
|
-
return this.exec(
|
401
|
+
return this.exec("get_command", [target_name, command_name]);
|
402
402
|
}
|
403
403
|
|
404
404
|
get_cmd_cnts(target_commands) {
|
405
|
-
return this.exec(
|
405
|
+
return this.exec("get_cmd_cnts", [target_commands]);
|
406
406
|
}
|
407
407
|
|
408
408
|
get_cmd_value(
|
409
409
|
target_name,
|
410
410
|
packet_name,
|
411
411
|
parameter_name,
|
412
|
-
value_type =
|
412
|
+
value_type = "CONVERTED"
|
413
413
|
) {
|
414
|
-
return this.exec(
|
414
|
+
return this.exec("get_cmd_value", [
|
415
415
|
target_name,
|
416
416
|
packet_name,
|
417
417
|
parameter_name,
|
418
418
|
value_type,
|
419
|
-
])
|
419
|
+
]);
|
420
420
|
}
|
421
421
|
|
422
422
|
get_cmd_buffer(target_name, packet_name) {
|
423
|
-
return this.exec(
|
423
|
+
return this.exec("get_cmd_buffer", [target_name, packet_name]);
|
424
424
|
}
|
425
425
|
|
426
426
|
// Implementation of functionality shared by cmd methods with param_lists.
|
427
427
|
_cmd(method, target_name, command_name, param_list, headerOptions) {
|
428
|
-
var converted = null
|
428
|
+
var converted = null;
|
429
429
|
for (var key in param_list) {
|
430
430
|
if (Object.prototype.hasOwnProperty.call(param_list, key)) {
|
431
|
-
converted = this.encode_openc3_type(param_list[key])
|
431
|
+
converted = this.encode_openc3_type(param_list[key]);
|
432
432
|
if (converted !== null) {
|
433
|
-
param_list[key] = converted
|
433
|
+
param_list[key] = converted;
|
434
434
|
}
|
435
435
|
}
|
436
436
|
}
|
@@ -439,208 +439,208 @@ export class OpenC3Api {
|
|
439
439
|
[target_name, command_name, param_list],
|
440
440
|
{},
|
441
441
|
headerOptions
|
442
|
-
)
|
442
|
+
);
|
443
443
|
}
|
444
444
|
|
445
445
|
get_cmd_hazardous(target_name, command_name, param_list) {
|
446
446
|
if (command_name === undefined) {
|
447
|
-
return this.exec(
|
447
|
+
return this.exec("get_cmd_hazardous", target_name);
|
448
448
|
} else {
|
449
449
|
return this._cmd(
|
450
|
-
|
450
|
+
"get_cmd_hazardous",
|
451
451
|
target_name,
|
452
452
|
command_name,
|
453
453
|
param_list
|
454
|
-
)
|
454
|
+
);
|
455
455
|
}
|
456
456
|
}
|
457
457
|
|
458
458
|
cmd(target_name, command_name, param_list, headerOptions = {}) {
|
459
459
|
if (command_name === undefined) {
|
460
|
-
return this.exec(
|
460
|
+
return this.exec("cmd", target_name, {}, headerOptions);
|
461
461
|
} else {
|
462
462
|
return this._cmd(
|
463
|
-
|
463
|
+
"cmd",
|
464
464
|
target_name,
|
465
465
|
command_name,
|
466
466
|
param_list,
|
467
467
|
headerOptions
|
468
|
-
)
|
468
|
+
);
|
469
469
|
}
|
470
470
|
}
|
471
471
|
|
472
472
|
cmd_no_range_check(target_name, command_name, param_list) {
|
473
473
|
if (command_name === undefined) {
|
474
|
-
return this.exec(
|
474
|
+
return this.exec("cmd_no_range_check", target_name);
|
475
475
|
} else {
|
476
476
|
return this._cmd(
|
477
|
-
|
477
|
+
"cmd_no_range_check",
|
478
478
|
target_name,
|
479
479
|
command_name,
|
480
480
|
param_list
|
481
|
-
)
|
481
|
+
);
|
482
482
|
}
|
483
483
|
}
|
484
484
|
|
485
485
|
cmd_raw(target_name, command_name, param_list) {
|
486
486
|
if (command_name === undefined) {
|
487
|
-
return this.exec(
|
487
|
+
return this.exec("cmd_raw", target_name);
|
488
488
|
} else {
|
489
|
-
return this._cmd(
|
489
|
+
return this._cmd("cmd_raw", target_name, command_name, param_list);
|
490
490
|
}
|
491
491
|
}
|
492
492
|
|
493
493
|
cmd_raw_no_range_check(target_name, command_name, param_list) {
|
494
494
|
if (command_name === undefined) {
|
495
|
-
return this.exec(
|
495
|
+
return this.exec("cmd_raw_no_range_check", target_name);
|
496
496
|
} else {
|
497
497
|
return this._cmd(
|
498
|
-
|
498
|
+
"cmd_raw_no_range_check",
|
499
499
|
target_name,
|
500
500
|
command_name,
|
501
501
|
param_list
|
502
|
-
)
|
502
|
+
);
|
503
503
|
}
|
504
504
|
}
|
505
505
|
|
506
506
|
cmd_no_hazardous_check(target_name, command_name, param_list) {
|
507
507
|
if (command_name === undefined) {
|
508
|
-
return this.exec(
|
508
|
+
return this.exec("cmd_no_hazardous_check", target_name);
|
509
509
|
} else {
|
510
510
|
return this._cmd(
|
511
|
-
|
511
|
+
"cmd_no_hazardous_check",
|
512
512
|
target_name,
|
513
513
|
command_name,
|
514
514
|
param_list
|
515
|
-
)
|
515
|
+
);
|
516
516
|
}
|
517
517
|
}
|
518
518
|
|
519
519
|
cmd_no_checks(target_name, command_name, param_list) {
|
520
520
|
if (command_name === undefined) {
|
521
|
-
return this.exec(
|
521
|
+
return this.exec("cmd_no_checks", target_name);
|
522
522
|
} else {
|
523
|
-
return this._cmd(
|
523
|
+
return this._cmd("cmd_no_checks", target_name, command_name, param_list);
|
524
524
|
}
|
525
525
|
}
|
526
526
|
|
527
527
|
cmd_raw_no_hazardous_check(target_name, command_name, param_list) {
|
528
528
|
if (command_name === undefined) {
|
529
|
-
return this.exec(
|
529
|
+
return this.exec("cmd_raw_no_hazardous_check", target_name);
|
530
530
|
} else {
|
531
531
|
return this._cmd(
|
532
|
-
|
532
|
+
"cmd_raw_no_hazardous_check",
|
533
533
|
target_name,
|
534
534
|
command_name,
|
535
535
|
param_list
|
536
|
-
)
|
536
|
+
);
|
537
537
|
}
|
538
538
|
}
|
539
539
|
|
540
540
|
cmd_raw_no_checks(target_name, command_name, param_list) {
|
541
541
|
if (command_name === undefined) {
|
542
|
-
return this.exec(
|
542
|
+
return this.exec("cmd_raw_no_checks", target_name);
|
543
543
|
} else {
|
544
544
|
return this._cmd(
|
545
|
-
|
545
|
+
"cmd_raw_no_checks",
|
546
546
|
target_name,
|
547
547
|
command_name,
|
548
548
|
param_list
|
549
|
-
)
|
549
|
+
);
|
550
550
|
}
|
551
551
|
}
|
552
552
|
|
553
553
|
build_command(target_name, command_name, param_list) {
|
554
554
|
if (command_name === undefined) {
|
555
|
-
return this.exec(
|
555
|
+
return this.exec("build_command", target_name);
|
556
556
|
} else {
|
557
|
-
return this._cmd(
|
557
|
+
return this._cmd("build_command", target_name, command_name, param_list);
|
558
558
|
}
|
559
559
|
}
|
560
560
|
|
561
561
|
get_interface_names() {
|
562
|
-
return this.exec(
|
562
|
+
return this.exec("get_interface_names", []);
|
563
563
|
}
|
564
564
|
|
565
565
|
send_raw(interface_name, data) {
|
566
|
-
return this.exec(
|
566
|
+
return this.exec("send_raw", [interface_name, data]);
|
567
567
|
}
|
568
568
|
|
569
569
|
list_configs(tool) {
|
570
|
-
return this.exec(
|
570
|
+
return this.exec("list_configs", [tool]);
|
571
571
|
}
|
572
572
|
|
573
573
|
load_config(tool, name) {
|
574
|
-
return this.exec(
|
574
|
+
return this.exec("load_config", [tool, name]);
|
575
575
|
}
|
576
576
|
|
577
577
|
save_config(tool, name, data) {
|
578
|
-
return this.exec(
|
578
|
+
return this.exec("save_config", [tool, name, data]);
|
579
579
|
}
|
580
580
|
|
581
581
|
delete_config(tool, name) {
|
582
|
-
return this.exec(
|
582
|
+
return this.exec("delete_config", [tool, name]);
|
583
583
|
}
|
584
584
|
|
585
585
|
enable_limits(target, packet, item) {
|
586
|
-
return this.exec(
|
586
|
+
return this.exec("enable_limits", [target, packet, item]);
|
587
587
|
}
|
588
588
|
|
589
589
|
disable_limits(target, packet, item) {
|
590
|
-
return this.exec(
|
590
|
+
return this.exec("disable_limits", [target, packet, item]);
|
591
591
|
}
|
592
592
|
|
593
593
|
get_out_of_limits() {
|
594
|
-
return this.exec(
|
594
|
+
return this.exec("get_out_of_limits", []);
|
595
595
|
}
|
596
596
|
|
597
597
|
get_overall_limits_state(ignored) {
|
598
|
-
return this.exec(
|
598
|
+
return this.exec("get_overall_limits_state", [ignored]);
|
599
599
|
}
|
600
600
|
|
601
601
|
list_settings() {
|
602
|
-
return this.exec(
|
602
|
+
return this.exec("list_settings", []);
|
603
603
|
}
|
604
604
|
|
605
605
|
get_all_settings() {
|
606
|
-
return this.exec(
|
606
|
+
return this.exec("get_all_settings", []);
|
607
607
|
}
|
608
608
|
|
609
609
|
get_setting(name) {
|
610
|
-
return this.exec(
|
610
|
+
return this.exec("get_setting", [name]);
|
611
611
|
}
|
612
612
|
|
613
613
|
get_settings(array) {
|
614
|
-
return this.exec(
|
614
|
+
return this.exec("get_settings", array);
|
615
615
|
}
|
616
616
|
|
617
617
|
save_setting(name, data) {
|
618
|
-
return this.exec(
|
618
|
+
return this.exec("save_setting", [name, data]);
|
619
619
|
}
|
620
620
|
|
621
621
|
get_metrics() {
|
622
|
-
return this.exec(
|
622
|
+
return this.exec("get_metrics", []);
|
623
623
|
}
|
624
624
|
|
625
625
|
// TODO: Currently unused but seemed like a useful function
|
626
626
|
async hashString(string) {
|
627
627
|
if (window.isSecureContext) {
|
628
628
|
// Encode the string as an arrayBuffer which the subtle crypto API uses
|
629
|
-
const arrayBuffer = new TextEncoder().encode(string)
|
629
|
+
const arrayBuffer = new TextEncoder().encode(string);
|
630
630
|
// Use the subtle crypto API to perform a SHA256 Sum of the array buffer
|
631
631
|
// The resulting hash is stored in an array buffer
|
632
632
|
const hashAsArrayBuffer = await crypto.subtle.digest(
|
633
|
-
|
633
|
+
"SHA-256",
|
634
634
|
arrayBuffer
|
635
|
-
)
|
635
|
+
);
|
636
636
|
// To create a string we will get the hexadecimal value of each byte of the array buffer
|
637
637
|
// This gets us an array where each byte of the array buffer becomes one item in the array
|
638
|
-
const uint8ViewOfHash = new Uint8Array(hashAsArrayBuffer)
|
638
|
+
const uint8ViewOfHash = new Uint8Array(hashAsArrayBuffer);
|
639
639
|
// We then convert it to a regular array so we can convert each item to hexadecimal strings
|
640
640
|
// Where to characters of 0-9 or a-f represent a number between 0 and 16, containing 4 bits of information, so 2 of them is 8 bits (1 byte).
|
641
641
|
return Array.from(uint8ViewOfHash)
|
642
|
-
.map((b) => b.toString(16).padStart(2,
|
643
|
-
.join(
|
642
|
+
.map((b) => b.toString(16).padStart(2, "0"))
|
643
|
+
.join("");
|
644
644
|
}
|
645
645
|
// else ?
|
646
646
|
}
|