enfcli 3.10.4.pre.alpha → 3.11.0.pre.alpha
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/Gemfile.lock +1 -1
- data/lib/enfapi.rb +10 -3
- data/lib/enfcli/commands/captive.rb +97 -73
- data/lib/enfcli/version.rb +1 -1
- metadata +2 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 26b242ed9d5db128c862067ce214faddb6c8842635f947538b5be9bc2ef44de6
|
4
|
+
data.tar.gz: 7531477be394b40a9cacda41ac4eb781b82495443ecc32e780d2efd7a7d63e30
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 3aa34b98fde5eea1a318cafc26756261c3b4a069d8baaf6aedf2a1e8adc4cbfe47d6822813835f8827e3dbb4d05c0add4e43f6942e49df11ec708904c9a217b8
|
7
|
+
data.tar.gz: 789a4512c071c67771c20001e7339317141c27ddcd14a566a45f35f115abe91ed9928939d9f3a0128f2738f44cd1dbc2ba0c6eb25d6cd89697fac9b3adfe727d
|
data/Gemfile.lock
CHANGED
data/lib/enfapi.rb
CHANGED
@@ -558,12 +558,19 @@ module EnfApi
|
|
558
558
|
raise EnfApi::ERROR, "AUTHORIZATION_ERROR: User is not authorized to perform this operation!"
|
559
559
|
|
560
560
|
when 404
|
561
|
-
# api returns
|
562
|
-
|
561
|
+
# api returns an error
|
562
|
+
# for the 404, we're going to check if it is JSON before parsing the
|
563
|
+
# error message
|
564
|
+
begin
|
565
|
+
JSON.parse(response.body)
|
566
|
+
raise EnfApi::ERROR, api_error_msg(from_json(response.body))
|
567
|
+
rescue JSON::ParserError => e
|
568
|
+
raise EnfApi::ERROR, "Not Found"
|
569
|
+
end
|
563
570
|
|
564
571
|
else
|
565
572
|
raise EnfApi::ERROR, "Unexpected error! Please try again!"
|
566
|
-
|
573
|
+
end
|
567
574
|
end
|
568
575
|
|
569
576
|
def from_json(string)
|
@@ -18,6 +18,7 @@
|
|
18
18
|
require 'enfthor'
|
19
19
|
require 'enfapi'
|
20
20
|
require 'json'
|
21
|
+
require 'erb'
|
21
22
|
|
22
23
|
module EnfCli
|
23
24
|
module Cmd
|
@@ -203,7 +204,8 @@ module EnfCli
|
|
203
204
|
desc: 'DEVICE-ID is either the device serial number or its ipv6 address.'
|
204
205
|
def get_device
|
205
206
|
try_with_rescue_in_session do
|
206
|
-
device_id = options[:'device-id']
|
207
|
+
device_id = ERB::Util::url_encode(options[:'device-id'])
|
208
|
+
|
207
209
|
data = EnfApi::Captive.instance.get_device device_id
|
208
210
|
|
209
211
|
display_device data
|
@@ -220,7 +222,7 @@ module EnfCli
|
|
220
222
|
desc: 'UUID of the profile that the device will use. The profile must already exist.'
|
221
223
|
def update_device
|
222
224
|
try_with_rescue_in_session do
|
223
|
-
id = options[:'device-id']
|
225
|
+
id = ERB::Util::url_encode(options[:'device-id'])
|
224
226
|
name = options[:'device-name']
|
225
227
|
profile_id = options[:'profile-id']
|
226
228
|
|
@@ -245,7 +247,7 @@ module EnfCli
|
|
245
247
|
desc: 'DEVICE-ID is either the device serial number or its ipv6 address.'
|
246
248
|
def get_device_status
|
247
249
|
try_with_rescue_in_session do
|
248
|
-
device_id = options[:'device-id']
|
250
|
+
device_id = ERB::Util::url_encode(options[:'device-id'])
|
249
251
|
status = EnfApi::Captive.instance.get_device_status device_id
|
250
252
|
|
251
253
|
display_device_status status
|
@@ -366,36 +368,36 @@ module EnfCli
|
|
366
368
|
end
|
367
369
|
|
368
370
|
# Display a single wifi configuration in detail
|
369
|
-
def display_wifi_detail(wifi_data)
|
371
|
+
def display_wifi_detail(wifi_data, full_listing=true)
|
370
372
|
name = wifi_data[:name]
|
371
|
-
name = "\n" unless name
|
372
373
|
wifi_id = wifi_data[:id]
|
373
|
-
wifi_id = "\n" unless wifi_id
|
374
374
|
desc = wifi_data[:description]
|
375
|
-
desc = "\n" unless desc
|
376
375
|
nets = wifi_data[:networks]
|
377
376
|
|
378
|
-
say "Wifi ID : #{wifi_id}"
|
379
|
-
say "Name : #{name}"
|
380
|
-
say "Description : #{desc}"
|
381
|
-
|
382
|
-
|
383
|
-
nets
|
384
|
-
|
377
|
+
say "Wifi ID : #{wifi_id}", nil, true
|
378
|
+
say "Name : #{name}", nil, true
|
379
|
+
say "Description : #{desc}", nil, true if desc
|
380
|
+
if full_listing
|
381
|
+
say "WiFi Networks :"
|
382
|
+
if nets
|
383
|
+
nets.each do |wifi_net|
|
384
|
+
display_wifi_net(wifi_net, 1)
|
385
|
+
end
|
385
386
|
end
|
387
|
+
|
386
388
|
end
|
387
389
|
|
388
390
|
end
|
389
391
|
|
390
392
|
def display_wifi_net(wifi_net, tabs)
|
391
393
|
indent = " " * tabs
|
392
|
-
say indent + "Name : #{wifi_net[:name]}"
|
393
|
-
say indent + " SSID
|
394
|
-
say indent + " SSID type
|
394
|
+
say indent + "Name : #{wifi_net[:name]}", nil, true
|
395
|
+
say indent + " SSID : #{wifi_net[:SSID]}", nil, true
|
396
|
+
say indent + " SSID type : #{wifi_net[:SSID_type]}", nil, true
|
395
397
|
|
396
398
|
auth = wifi_net[:auth]
|
397
399
|
if auth
|
398
|
-
say indent + " auth
|
400
|
+
say indent + " auth : #{auth[:type]}", nil, true
|
399
401
|
end
|
400
402
|
|
401
403
|
display_ipv4_addr(wifi_net[:IPv4], tabs + 1) # these are subelements, so indent 1 more.
|
@@ -405,18 +407,18 @@ module EnfCli
|
|
405
407
|
def display_ipv4_addr (ipv4, tabs)
|
406
408
|
indent = " " * tabs
|
407
409
|
if ipv4.instance_of? String
|
408
|
-
say indent + "IPv4
|
410
|
+
say indent + "IPv4 : #{ipv4}", nil, true
|
409
411
|
elsif ipv4.instance_of? NilClass
|
410
|
-
say indent + "IPv4
|
412
|
+
say indent + "IPv4 : off"
|
411
413
|
elsif ipv4.instance_of? Hash
|
412
414
|
addr_type = ipv4[:type]
|
413
415
|
if addr_type == "dhcp"
|
414
|
-
say indent + "IPv4
|
416
|
+
say indent + "IPv4 : #{addr_type}"
|
415
417
|
elsif addr_type == "static"
|
416
418
|
addr = ipv4[:address]
|
417
419
|
mask = ipv4[:mask]
|
418
420
|
gw = ipv4[:gateway]
|
419
|
-
say indent + "IPv4
|
421
|
+
say indent + "IPv4 : #{addr}/#{mask}/#{gw}", nil, true
|
420
422
|
else
|
421
423
|
say indent + "*** Invalid ipv4 address. Type is #{addr_type} ***"
|
422
424
|
end
|
@@ -428,18 +430,18 @@ module EnfCli
|
|
428
430
|
def display_ipv6_addr (ipv6, tabs)
|
429
431
|
indent = " " * tabs
|
430
432
|
if ipv6.instance_of? String
|
431
|
-
say indent + "IPv6
|
433
|
+
say indent + "IPv6 : #{ipv6}", nil, true
|
432
434
|
elsif ipv6.instance_of? NilClass
|
433
|
-
say indent + "IPv6
|
435
|
+
say indent + "IPv6 : off"
|
434
436
|
elsif ipv6.instance_of? Hash
|
435
437
|
addr_type = ipv6[:type]
|
436
438
|
if addr_type == "auto"
|
437
|
-
say indent + "IPv6
|
439
|
+
say indent + "IPv6 : #{addr_type}"
|
438
440
|
elsif addr_type == "static"
|
439
441
|
addr = ipv6[:address]
|
440
442
|
pref = ipv6[:prefix_length]
|
441
443
|
gw = ipv6[:gateway]
|
442
|
-
say indent + "IPv6
|
444
|
+
say indent + "IPv6 : #{addr}/#{pref}/#{gw}", nil, true
|
443
445
|
else
|
444
446
|
say indent + "*** Invalid ipv6 address. Type is #{addr_type} ***"
|
445
447
|
end
|
@@ -463,18 +465,32 @@ module EnfCli
|
|
463
465
|
profile = device_data[:profile]
|
464
466
|
status = device_data[:status]
|
465
467
|
|
466
|
-
say "Serial Number : #{device_data[:serial_number]}"
|
467
|
-
say "Device Name : #{name}"
|
468
|
+
say "Serial Number : #{device_data[:serial_number]}", nil, true
|
469
|
+
say "Device Name : #{name}", nil, true
|
468
470
|
say "Control Address : #{ctl_addr}" if ctl_addr
|
469
|
-
say "Device Address : #{dev_addr}"
|
470
|
-
say 'Mac Address :'
|
471
|
+
say "Device Address : #{dev_addr}", nil, true
|
471
472
|
if mac_addrs
|
472
|
-
|
473
|
-
|
474
|
-
|
475
|
-
|
473
|
+
mac1 = mac_addrs[:'1']
|
474
|
+
mac2 = mac_addrs[:'2']
|
475
|
+
mac3 = mac_addrs[:'3']
|
476
|
+
mac4 = mac_addrs[:'4']
|
477
|
+
|
478
|
+
if !mac1
|
479
|
+
say 'Mac Address : < not available >'
|
480
|
+
elsif !mac2 && !mac3 && !mac4
|
481
|
+
say "Mac Address : #{mac1}", nil, true
|
482
|
+
else
|
483
|
+
say 'Mac Address :'
|
484
|
+
say " 1 : #{mac1}", nil, true
|
485
|
+
say " 2 : #{mac2}", nil, true if mac2
|
486
|
+
say " 3 : #{mac3}", nil, true if mac3
|
487
|
+
say " 4 : #{mac4}", nil, true if mac4
|
488
|
+
end
|
489
|
+
else
|
490
|
+
say 'Mac Address : < not available >'
|
476
491
|
end
|
477
|
-
|
492
|
+
|
493
|
+
say "Firmware Version : #{firmware}", nil, true
|
478
494
|
if profile
|
479
495
|
say "Profile :"
|
480
496
|
display_profile profile, true
|
@@ -482,7 +498,7 @@ module EnfCli
|
|
482
498
|
say "Profile : < not available >"
|
483
499
|
end
|
484
500
|
display_device_status_summary status
|
485
|
-
say ''
|
501
|
+
say ' ', nil, true
|
486
502
|
end
|
487
503
|
|
488
504
|
#
|
@@ -490,13 +506,12 @@ module EnfCli
|
|
490
506
|
#
|
491
507
|
def display_device_status_summary (device_status)
|
492
508
|
if device_status
|
493
|
-
mode = device_status[:router_mode]
|
494
|
-
|
495
|
-
mode = "\n" unless mode
|
509
|
+
mode = device_status[:router_mode] || device_status[:mode] || '< not available >'
|
510
|
+
|
496
511
|
wifi = device_status[:wifi]
|
497
512
|
|
498
513
|
say 'Status :'
|
499
|
-
say " Router Mode : #{mode}"
|
514
|
+
say " Router Mode : #{mode}", nil, true
|
500
515
|
|
501
516
|
if wifi
|
502
517
|
connected = wifi[:connected] || " < unknown >"
|
@@ -514,44 +529,51 @@ module EnfCli
|
|
514
529
|
# status is a hash matching the json structure
|
515
530
|
#
|
516
531
|
def display_device_status(device_status)
|
517
|
-
sn = device_status[:serial_number]
|
518
|
-
mode = device_status[:router_mode]
|
519
|
-
mode = device_status[:mode] unless mode
|
520
|
-
mode = "\n" unless mode
|
532
|
+
sn = device_status[:serial_number] || '< not available >'
|
533
|
+
mode = device_status[:router_mode] || device_status[:mode] || '< not available >'
|
521
534
|
|
522
|
-
uptime = device_status[:uptime]
|
535
|
+
uptime = device_status[:uptime] || '< not available >'
|
523
536
|
refresh = device_status[:refresh_time] || '< not available >'
|
524
|
-
|
525
|
-
|
526
|
-
|
527
|
-
|
528
|
-
|
529
|
-
|
530
|
-
|
531
|
-
|
532
|
-
|
533
|
-
|
534
|
-
|
537
|
+
|
538
|
+
wifi = device_status[:wifi]
|
539
|
+
if wifi
|
540
|
+
connected = wifi[:connected] || '< not available >'
|
541
|
+
ssid = wifi[:SSID]
|
542
|
+
ipv4 = wifi[:IPv4_addresses]
|
543
|
+
ipv6 = wifi[:IPv6_addresses]
|
544
|
+
wifi_config = wifi[:config]
|
545
|
+
else
|
546
|
+
connected = '< not available >'
|
547
|
+
ssid = nil
|
548
|
+
ipv4 = nil
|
549
|
+
ipv6 = nil
|
550
|
+
wifi_config = nil
|
551
|
+
end
|
552
|
+
|
553
|
+
say "Serial Number : #{sn}", nil, true
|
554
|
+
say "Router Mode : #{mode}", nil, true
|
555
|
+
say "Uptime (in seconds) : #{uptime}", nil, true
|
556
|
+
say "Status refresh time : #{refresh}", nil, true
|
535
557
|
say "WIFI :"
|
536
|
-
say " connected : #{connected}"
|
558
|
+
say " connected : #{connected}", nil, true
|
537
559
|
say " SSID : #{ssid}" if ssid
|
538
|
-
if ipv4
|
539
|
-
say " IPv4 addresses
|
560
|
+
if ipv4 && !ipv4.empty?
|
561
|
+
say " IPv4 addresses :"
|
540
562
|
ipv4.each do |addr|
|
541
563
|
display_ipv4_addr(addr, 2)
|
542
564
|
end
|
543
565
|
end
|
544
566
|
|
545
|
-
if ipv6
|
546
|
-
say " IPv6 addresses
|
567
|
+
if ipv6 && !ipv6.empty?
|
568
|
+
say " IPv6 addresses :"
|
547
569
|
ipv6.each do |addr|
|
548
570
|
display_ipv6_addr(addr, 2)
|
549
571
|
end
|
550
572
|
end
|
551
573
|
|
552
|
-
display_wifi_detail(
|
574
|
+
display_wifi_detail(wifi_config, false) if wifi_config
|
553
575
|
|
554
|
-
say ''
|
576
|
+
say ' ', nil, true
|
555
577
|
end
|
556
578
|
|
557
579
|
#
|
@@ -566,8 +588,10 @@ module EnfCli
|
|
566
588
|
wifi = status[:wifi]
|
567
589
|
connected = wifi ? wifi[:connected] : nil
|
568
590
|
ssid = wifi ? wifi[:SSID] : nil
|
591
|
+
mode = status[:router_mode] || status[:mode]
|
592
|
+
|
569
593
|
[hash[:serial_number], hash[:device_name], hash[:device_address],
|
570
|
-
|
594
|
+
mode, connected, ssid]
|
571
595
|
else
|
572
596
|
[hash[:serial_number], hash[:device_name], hash[:device_address],
|
573
597
|
nil, nil, nil]
|
@@ -586,11 +610,11 @@ module EnfCli
|
|
586
610
|
def display_profile(profile, summary = false)
|
587
611
|
indent = summary ? ' ' : ''
|
588
612
|
|
589
|
-
say indent + "Name : #{profile[:name]}"
|
590
|
-
say indent + "Profile ID : #{profile[:id]}"
|
591
|
-
say indent + "Configuration version : #{profile[:config][:version]}"
|
613
|
+
say indent + "Name : #{profile[:name]}", nil, true
|
614
|
+
say indent + "Profile ID : #{profile[:id]}", nil, true
|
615
|
+
say indent + "Configuration version : #{profile[:config][:version]}", nil, true
|
592
616
|
unless summary
|
593
|
-
say "Mode
|
617
|
+
say "Mode : #{profile[:config][:mode]}", nil, true
|
594
618
|
display_wifi_summary profile[:config][:wifi]
|
595
619
|
end
|
596
620
|
end
|
@@ -601,13 +625,13 @@ module EnfCli
|
|
601
625
|
def display_wifi_summary (wifi)
|
602
626
|
if wifi
|
603
627
|
say "Wifi config :"
|
604
|
-
say " id
|
628
|
+
say " id : #{wifi[:id]}", nil, true
|
605
629
|
# TODO - make accessible only to Xaptum admins
|
606
|
-
say " domain
|
607
|
-
say " name
|
630
|
+
say " domain : #{wifi[:domain]}", nil, true
|
631
|
+
say " name : #{wifi[:name]}", nil, true
|
608
632
|
desc = wifi[:description]
|
609
|
-
say " description
|
610
|
-
say " config version
|
633
|
+
say " description : #{desc}" if desc
|
634
|
+
say " config version : #{wifi[:version]}", nil, true
|
611
635
|
else
|
612
636
|
say "Wifi config : < not configured >"
|
613
637
|
end
|
data/lib/enfcli/version.rb
CHANGED
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: enfcli
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 3.
|
4
|
+
version: 3.11.0.pre.alpha
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Venkatakumar Srinivasan
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2019-10-
|
11
|
+
date: 2019-10-21 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: thor
|