meshtastic 0.0.179 → 0.0.181

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.
Files changed (71) hide show
  1. checksums.yaml +4 -4
  2. data/Gemfile +2 -2
  3. data/documentation/README.md +3 -2
  4. data/documentation/admin-channel.md +64 -0
  5. data/documentation/admin-config.md +59 -0
  6. data/documentation/admin-firmware-nordic.md +86 -0
  7. data/documentation/admin-firmware-serial.md +180 -0
  8. data/documentation/admin-firmware.md +126 -0
  9. data/documentation/admin.md +88 -35
  10. data/documentation/atak.md +93 -10
  11. data/documentation/channel.md +1 -28
  12. data/documentation/config.md +1 -27
  13. data/documentation/mesh-interface.md +7 -0
  14. data/documentation/meshtastic.md +2 -2
  15. data/lib/meshtastic/admin/channel.rb +164 -0
  16. data/lib/meshtastic/admin/config.rb +213 -0
  17. data/lib/meshtastic/admin/firmware/ble.rb +207 -0
  18. data/lib/meshtastic/admin/firmware/nordic_dfu.rb +218 -0
  19. data/lib/meshtastic/admin/firmware/serial_bootloader.rb +233 -0
  20. data/lib/meshtastic/admin/firmware.rb +288 -0
  21. data/lib/meshtastic/admin.rb +688 -34
  22. data/lib/meshtastic/apponly.rb +19 -7
  23. data/lib/meshtastic/atak.rb +295 -17
  24. data/lib/meshtastic/bluetooth/bluez.rb +20 -1
  25. data/lib/meshtastic/bluetooth.rb +70 -59
  26. data/lib/meshtastic/cannedmessages.rb +13 -6
  27. data/lib/meshtastic/channel.rb +3 -25
  28. data/lib/meshtastic/clientonly.rb +19 -7
  29. data/lib/meshtastic/config.rb +3 -24
  30. data/lib/meshtastic/config_pb.rb +2 -1
  31. data/lib/meshtastic/connection_status.rb +12 -5
  32. data/lib/meshtastic/deviceonly.rb +19 -7
  33. data/lib/meshtastic/localonly.rb +19 -7
  34. data/lib/meshtastic/mesh_interface.rb +19 -0
  35. data/lib/meshtastic/module_config.rb +13 -7
  36. data/lib/meshtastic/mqtt.rb +72 -35
  37. data/lib/meshtastic/paxcount.rb +17 -6
  38. data/lib/meshtastic/portnums.rb +13 -6
  39. data/lib/meshtastic/position.rb +16 -6
  40. data/lib/meshtastic/remote_hardware.rb +27 -11
  41. data/lib/meshtastic/rtttl.rb +17 -8
  42. data/lib/meshtastic/serial.rb +81 -70
  43. data/lib/meshtastic/storeforward.rb +13 -6
  44. data/lib/meshtastic/storeforward_pb.rb +1 -1
  45. data/lib/meshtastic/stream_interface.rb +11 -0
  46. data/lib/meshtastic/tcp.rb +73 -22
  47. data/lib/meshtastic/telemetry.rb +15 -6
  48. data/lib/meshtastic/traceroute.rb +15 -6
  49. data/lib/meshtastic/util.rb +3 -1
  50. data/lib/meshtastic/version.rb +1 -1
  51. data/lib/meshtastic/xmodem.rb +12 -5
  52. data/lib/meshtastic.rb +22 -3
  53. data/spec/conventions_spec.rb +321 -0
  54. data/spec/lib/meshtastic/admin/channel_spec.rb +202 -0
  55. data/spec/lib/meshtastic/admin/config_spec.rb +114 -0
  56. data/spec/lib/meshtastic/admin/firmware/ble_spec.rb +170 -0
  57. data/spec/lib/meshtastic/admin/firmware/nordic_dfu_spec.rb +248 -0
  58. data/spec/lib/meshtastic/admin/firmware/serial_bootloader_spec.rb +263 -0
  59. data/spec/lib/meshtastic/admin/firmware_spec.rb +315 -0
  60. data/spec/lib/meshtastic/admin_spec.rb +412 -1
  61. data/spec/lib/meshtastic/apponly_spec.rb +1 -1
  62. data/spec/lib/meshtastic/atak_spec.rb +129 -4
  63. data/spec/lib/meshtastic/bluetooth_spec.rb +1 -1
  64. data/spec/lib/meshtastic/channel_spec.rb +2 -20
  65. data/spec/lib/meshtastic/config_spec.rb +2 -20
  66. data/spec/lib/meshtastic/connection_status_spec.rb +1 -1
  67. data/spec/lib/meshtastic/deviceonly_spec.rb +1 -1
  68. data/spec/lib/meshtastic/localonly_spec.rb +1 -1
  69. data/spec/lib/meshtastic/mesh_interface_spec.rb +31 -0
  70. data/spec/lib/meshtastic/portnums_spec.rb +2 -2
  71. metadata +24 -6
@@ -4,6 +4,6 @@ require 'spec_helper'
4
4
 
5
5
  describe Meshtastic::Localonly do
6
6
  it 'decodes an empty LocalConfig' do
7
- expect(described_class.decode_config(Meshtastic::LocalConfig.new.to_proto)).to be_a(Meshtastic::LocalConfig)
7
+ expect(described_class.decode_config(bytes: Meshtastic::LocalConfig.new.to_proto)).to be_a(Meshtastic::LocalConfig)
8
8
  end
9
9
  end
@@ -3,4 +3,35 @@
3
3
  require 'spec_helper'
4
4
 
5
5
  describe Meshtastic::MeshInterface do
6
+ it 'rejects PKI on MQTT instead of falling back to channel encryption' do
7
+ expect do
8
+ described_class.new.send_data(
9
+ data: Meshtastic::Data.new(portnum: :ADMIN_APP, payload: 'request'),
10
+ port_num: Meshtastic::PortNum::ADMIN_APP,
11
+ from: 1, to: 2, via: :mqtt, pki_encrypted: true, public_key: 'k' * 32
12
+ )
13
+ end.to raise_error(ArgumentError, /PKI.*radio/)
14
+ end
15
+
16
+ it 'rejects malformed recipient public keys' do
17
+ expect do
18
+ described_class.new.send_data(
19
+ data: Meshtastic::Data.new(payload: 'request'),
20
+ from: 1, to: 2, psks: nil, pki_encrypted: true, public_key: 'short'
21
+ )
22
+ end.to raise_error(ArgumentError, /32 bytes/)
23
+ end
24
+
25
+ it 'preserves explicit radio PKI parameters for remote administrative packets' do
26
+ wire = described_class.new.send_data(
27
+ data: Meshtastic::Data.new(portnum: :ADMIN_APP, payload: 'request'),
28
+ port_num: Meshtastic::PortNum::ADMIN_APP,
29
+ from: 1, to: 2, via: :radio, psks: nil,
30
+ pki_encrypted: true, public_key: 'k' * 32
31
+ )
32
+ packet = Meshtastic::ToRadio.decode(wire).packet
33
+ expect(packet.pki_encrypted).to be true
34
+ expect(packet.public_key).to eq('k' * 32)
35
+ expect(packet.decoded.payload).to eq('request')
36
+ end
6
37
  end
@@ -4,7 +4,7 @@ require 'spec_helper'
4
4
 
5
5
  describe Meshtastic::Portnums do
6
6
  it 'resolves names and numbers' do
7
- expect(described_class.lookup(:TEXT_MESSAGE_APP)).to eq(1)
8
- expect(described_class.lookup(1)).to eq(:TEXT_MESSAGE_APP)
7
+ expect(described_class.lookup(value: :TEXT_MESSAGE_APP)).to eq(1)
8
+ expect(described_class.lookup(value: 1)).to eq(:TEXT_MESSAGE_APP)
9
9
  end
10
10
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: meshtastic
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.179
4
+ version: 0.0.181
5
5
  platform: ruby
6
6
  authors:
7
7
  - 0day Inc.
@@ -15,14 +15,14 @@ dependencies:
15
15
  requirements:
16
16
  - - ">="
17
17
  - !ruby/object:Gem::Version
18
- version: 4.0.20
18
+ version: 4.0.21
19
19
  type: :development
20
20
  prerelease: false
21
21
  version_requirements: !ruby/object:Gem::Requirement
22
22
  requirements:
23
23
  - - ">="
24
24
  - !ruby/object:Gem::Version
25
- version: 4.0.20
25
+ version: 4.0.21
26
26
  - !ruby/object:Gem::Dependency
27
27
  name: bundler-audit
28
28
  requirement: !ruby/object:Gem::Requirement
@@ -99,14 +99,14 @@ dependencies:
99
99
  requirements:
100
100
  - - '='
101
101
  - !ruby/object:Gem::Version
102
- version: 1.83.1
102
+ version: 1.84.0
103
103
  type: :runtime
104
104
  prerelease: false
105
105
  version_requirements: !ruby/object:Gem::Requirement
106
106
  requirements:
107
107
  - - '='
108
108
  - !ruby/object:Gem::Version
109
- version: 1.83.1
109
+ version: 1.84.0
110
110
  - !ruby/object:Gem::Dependency
111
111
  name: mqtt
112
112
  requirement: !ruby/object:Gem::Requirement
@@ -285,6 +285,11 @@ files:
285
285
  - bin/meshtastic_autoinc_version
286
286
  - build_gem.sh
287
287
  - documentation/README.md
288
+ - documentation/admin-channel.md
289
+ - documentation/admin-config.md
290
+ - documentation/admin-firmware-nordic.md
291
+ - documentation/admin-firmware-serial.md
292
+ - documentation/admin-firmware.md
288
293
  - documentation/admin.md
289
294
  - documentation/apponly.md
290
295
  - documentation/atak.md
@@ -318,6 +323,12 @@ files:
318
323
  - git_commit.sh
319
324
  - lib/meshtastic.rb
320
325
  - lib/meshtastic/admin.rb
326
+ - lib/meshtastic/admin/channel.rb
327
+ - lib/meshtastic/admin/config.rb
328
+ - lib/meshtastic/admin/firmware.rb
329
+ - lib/meshtastic/admin/firmware/ble.rb
330
+ - lib/meshtastic/admin/firmware/nordic_dfu.rb
331
+ - lib/meshtastic/admin/firmware/serial_bootloader.rb
321
332
  - lib/meshtastic/admin_pb.rb
322
333
  - lib/meshtastic/apponly.rb
323
334
  - lib/meshtastic/apponly_pb.rb
@@ -377,6 +388,13 @@ files:
377
388
  - meshtastic.gemspec
378
389
  - reinstall_gemset.sh
379
390
  - sig/meshtastic.rbs
391
+ - spec/conventions_spec.rb
392
+ - spec/lib/meshtastic/admin/channel_spec.rb
393
+ - spec/lib/meshtastic/admin/config_spec.rb
394
+ - spec/lib/meshtastic/admin/firmware/ble_spec.rb
395
+ - spec/lib/meshtastic/admin/firmware/nordic_dfu_spec.rb
396
+ - spec/lib/meshtastic/admin/firmware/serial_bootloader_spec.rb
397
+ - spec/lib/meshtastic/admin/firmware_spec.rb
380
398
  - spec/lib/meshtastic/admin_pb_spec.rb
381
399
  - spec/lib/meshtastic/admin_spec.rb
382
400
  - spec/lib/meshtastic/apponly_pb_spec.rb
@@ -459,7 +477,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
459
477
  - !ruby/object:Gem::Version
460
478
  version: '0'
461
479
  requirements: []
462
- rubygems_version: 4.0.20
480
+ rubygems_version: 4.0.21
463
481
  specification_version: 4
464
482
  summary: Ruby gem for Meshtastic
465
483
  test_files: []