boneIO 1.6.0.dev7__py3-none-any.whl → 1.6.0.dev8__py3-none-any.whl

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.
@@ -74,6 +74,13 @@ fi
74
74
  # Generate Caddyfile
75
75
  cat > /tmp/Caddyfile << EOF
76
76
  {
77
+ # Six months, not the twelve hours Caddy defaults to — see the
78
+ # non-cloud script. The intermediate has to outlive the leaves.
79
+ pki {
80
+ ca local {
81
+ intermediate_lifetime 365d
82
+ }
83
+ }
77
84
  # Global options - empty for internal issuer
78
85
  }
79
86
 
@@ -91,7 +98,10 @@ ${CLOUD_BLOCK}
91
98
 
92
99
  # HTTPS with self-signed certificate (catch-all for hostname and IP access)
93
100
  https:// {
94
- tls internal {
101
+ tls {
102
+ issuer internal {
103
+ lifetime 180d
104
+ }
95
105
  on_demand
96
106
  }
97
107
 
@@ -4,7 +4,7 @@
4
4
 
5
5
  f2ed05c6f5934a15f12571139bdc225804f67b8c83561cc39868f7b2296d2697 docker/daemon.json
6
6
  22dfe7d55e5ed85ea0f4149b7776b7504a12b91905701657a88840ae1208087c docker/nodered/caddy/502.html
7
- 217e3cc6e24ae8241d23b15cfecaa477ac05fe031078cd72c472d36a11835443 docker/nodered/caddy/init-certs.sh
7
+ 93342a62f024235b2deefd2cd833ef72d7a9cf14a8ad0727ab0dc422e78e8388 docker/nodered/caddy/init-certs.sh
8
8
  fba1a5bc6a6b6aaaff8cced9f6ee1350a16ad1a5ddde2af366c198881698d264 docker/nodered/docker-compose-cloud.yaml
9
9
  cd90e1bcb6488669179c8e7a40a6265923e0fea045cc79d5b7559ebb309131b6 docker/nodered/docker-compose.yaml
10
10
  bff00753c72fb17609a6f7b3a58ef78b7b394da12d19fd65b875f2889695e2b4 docker/nodered/node-red/settings.js
@@ -42,7 +42,10 @@ if [ -f "$CUSTOM_CERT" ] && [ -f "$CUSTOM_KEY" ]; then
42
42
  TLS_DIRECTIVE="tls $CUSTOM_CERT $CUSTOM_KEY"
43
43
  else
44
44
  echo "Serving Caddy's own certificate (no uploaded one found)"
45
- TLS_DIRECTIVE="tls internal {
45
+ TLS_DIRECTIVE="tls {
46
+ issuer internal {
47
+ lifetime 180d
48
+ }
46
49
  on_demand
47
50
  }"
48
51
  fi
@@ -50,7 +53,17 @@ fi
50
53
  # Generate Caddyfile
51
54
  cat > /tmp/Caddyfile << EOF
52
55
  {
53
- # Global options - empty for internal issuer
56
+ # The device's own certificate authority issues for six months rather
57
+ # than the twelve hours Caddy defaults to. Nobody trusts this authority
58
+ # until they choose to, and when they do — by installing the root on
59
+ # their own machines, or by clicking through once — a certificate that
60
+ # expires the same evening undoes that daily. The intermediate has to
61
+ # outlive the leaves it signs, or Caddy refuses to start.
62
+ pki {
63
+ ca local {
64
+ intermediate_lifetime 365d
65
+ }
66
+ }
54
67
  }
55
68
 
56
69
  # HTTP — redirect to HTTPS.
@@ -1 +1 @@
1
- [{"action":"install_file","dst":"/home/boneio/docker/nodered/caddy/init-certs.sh","expected_sha256":"217e3cc6e24ae8241d23b15cfecaa477ac05fe031078cd72c472d36a11835443","group":"boneio","mode":493,"owner":"boneio","src":"docker/nodered/caddy/init-certs.sh","template_vars":{}},{"action":"install_file","dst":"/home/boneio/docker/nodered/caddy/502.html","expected_sha256":"22dfe7d55e5ed85ea0f4149b7776b7504a12b91905701657a88840ae1208087c","group":"boneio","mode":420,"owner":"boneio","src":"docker/nodered/caddy/502.html","template_vars":{}},{"action":"install_file","dst":"/home/boneio/docker/nodered/docker-compose.yaml","expected_sha256":"cd90e1bcb6488669179c8e7a40a6265923e0fea045cc79d5b7559ebb309131b6","group":"boneio","mode":420,"owner":"boneio","src":"docker/nodered/docker-compose.yaml","template_vars":{}},{"action":"remove_file","path":"/home/boneio/docker/nodered/nginx/default.conf"}]
1
+ [{"action":"install_file","dst":"/home/boneio/docker/nodered/caddy/init-certs.sh","expected_sha256":"93342a62f024235b2deefd2cd833ef72d7a9cf14a8ad0727ab0dc422e78e8388","group":"boneio","mode":493,"owner":"boneio","src":"docker/nodered/caddy/init-certs.sh","template_vars":{}},{"action":"install_file","dst":"/home/boneio/docker/nodered/caddy/502.html","expected_sha256":"22dfe7d55e5ed85ea0f4149b7776b7504a12b91905701657a88840ae1208087c","group":"boneio","mode":420,"owner":"boneio","src":"docker/nodered/caddy/502.html","template_vars":{}},{"action":"install_file","dst":"/home/boneio/docker/nodered/docker-compose.yaml","expected_sha256":"cd90e1bcb6488669179c8e7a40a6265923e0fea045cc79d5b7559ebb309131b6","group":"boneio","mode":420,"owner":"boneio","src":"docker/nodered/docker-compose.yaml","template_vars":{}},{"action":"remove_file","path":"/home/boneio/docker/nodered/nginx/default.conf"}]
@@ -1 +1,2 @@
1
- �!l&好`���d'c���m]#�4C��*)L�̿�teR�-�C��
1
+ �
2
+ MU0���W��r�Z������/�y c] 9�Y��*g;O�u���OU���W����k�Q�
@@ -1 +1 @@
1
- [{"action":"install_file","dst":"/home/boneio/docker/nodered/caddy/init-certs.sh","expected_sha256":"217e3cc6e24ae8241d23b15cfecaa477ac05fe031078cd72c472d36a11835443","group":"boneio","mode":493,"owner":"boneio","src":"docker/nodered/caddy/init-certs.sh","template_vars":{}}]
1
+ [{"action":"install_file","dst":"/home/boneio/docker/nodered/caddy/init-certs.sh","expected_sha256":"93342a62f024235b2deefd2cd833ef72d7a9cf14a8ad0727ab0dc422e78e8388","group":"boneio","mode":493,"owner":"boneio","src":"docker/nodered/caddy/init-certs.sh","template_vars":{}}]
@@ -1 +1 @@
1
- 9�bzC���+eye0��.��l�{�u�����2U[�h�!�w�Ci�(��Q������n��
1
+ �,�L�5�02i%�u��G�c:m �����CM 0�z���X>j��v]Bo��~�|�;<f
@@ -0,0 +1 @@
1
+ [{"action":"install_file","dst":"/home/boneio/docker/nodered/caddy/init-certs.sh","expected_sha256":"93342a62f024235b2deefd2cd833ef72d7a9cf14a8ad0727ab0dc422e78e8388","group":"boneio","mode":493,"owner":"boneio","src":"docker/nodered/caddy/init-certs.sh","template_vars":{}}]
@@ -0,0 +1 @@
1
+ �,�L�5�02i%�u��G�c:m �����CM 0�z���X>j��v]Bo��~�|�;<f
@@ -1 +1 @@
1
- {"plans":{"1.3.0":"3199d74a6dda33162bbee4fc650a5a0d70d5372258f3305ad92501215e22a7fd","1.3.1":"580381a4f6f40fc1bd4e903e591ad0d5c1db27daaccafc6f79dabf8c3b84259a","1.3.2":"7a69ffaf0c41438be25a656dcdc87783daac0eae79218d023648ef9d708e373f","1.4.0":"41c3a16e7819857a4b826e944fcfb4f79c58e7192cb151b106a3acd7487d5771","1.4.3":"a8cfbabff09d21944a822c4a70f23a7ee14960c4054de151c9fbc7cdb29adff5","1.4.4":"27ebf198e03c882c21572a9be02f63e8ffe6a610f6f395d7116ad9e258b4dac7","1.5.0":"52d9d118da099abda0e0153cd16892e201681f6e4d3c6e5790284d1ac469a407","1.5.1":"d283cb8c01024338fb614ae2199744d883379f59579423e4eb9234f5c59ebdd8","1.5.10":"889e2f12614e6e67d342571c1c3bab8940659bfbbf43fa30a6847e73decb85d1","1.5.11":"4906e4de2b3a9c2f0b0181817c9dc168cb910ba6941691d4e86b8387802b624a","1.5.12":"c0a0dc085bb33d9718e869ed5effc2c1581deffd7ed0d5adc119b94312181625","1.5.13":"bfe58c8756f9b5f5e55d5acbb6f7cfc469d201004d312c14e022eb7c52369b7d","1.5.14":"a0464f11e05128cba8881e6295e591fce1ed1e8d43ab0e16710effb8e543d810","1.5.15":"0687a735cb4aaf8f8f74ad6e228ca1b14e045cba8821991c7d19fc9beaeac766","1.5.16":"3544ac754f39d56ecf2b06300b7cca1b6f8723f99885cd11bd690f1a704d3728","1.5.17":"cf1e9e0ff6812cb7092a82dd588392d625decbe3680fe003dfc554f9045809d3","1.5.18":"1fd873effa66b632217d674745722f712a48b36bb79957fefae722757a74bc30","1.5.2":"39fccb7582e13e7e3436861fde7b83ddb8057788cbde792f2f0cf7003f068850","1.5.3":"39fccb7582e13e7e3436861fde7b83ddb8057788cbde792f2f0cf7003f068850","1.5.4":"e86174ba5aff6f257f8a3f4721c7942885cd203469a9d8ddc15dbe6c704e0f45","1.5.5":"f93ed2d4342e447eb9900a0150331113918f2a8b3baeeb795c07231d80f0337c","1.5.6":"e3d90e6ceb20d760f1e9fa63224c5a070a16b3ca6e7dc4cc2c594138e929cce8","1.5.7":"a0464f11e05128cba8881e6295e591fce1ed1e8d43ab0e16710effb8e543d810","1.5.8":"f075b84fb04f4043658a28402d963494dd58481f164c0b371cec94322fe6d131","1.5.9":"ac170fc924019fc2acd69a90a82ba5c2552dce7a2c01a05e5407443e7a9e5af7","1.6.0":"c8286514d1a4f1805e727e13d3c350bb390378c6f31ad6920030412d61ec9b3f","1.6.1":"aa1d3934091853fc21208993930c1bf92e17136428d1d0baaefabfa65d13e7fa","1.6.10":"41c3a16e7819857a4b826e944fcfb4f79c58e7192cb151b106a3acd7487d5771","1.6.11":"d136203e08e3b052254403815d4ccedb555b0a297686fe97952d275eb1f322eb","1.6.12":"c328d4e36bd6277e01cef0140993e23970f4dff84425f3eba236cdd9a8954355","1.6.13":"035a0d32c891746e315fd228f8107680c856d9d128e3b4a19f6629256b3ef9b1","1.6.2":"6ef96b5e00a04a929d16f0e4a136bfcc5b8132a466d6907a99b2c8516a8952d5","1.6.3":"5c10db827bcb92b9322d4aa5751076b825da87c6d18d6953847ba72317cca862","1.6.4":"baf2bb1c2ec7c1bfccfc514ef1cef67907e056e4f7153bb5932ecb835c9cff78","1.6.5":"358dacbc8d16b1b665167de3bc1c42d101d82733502048f345184d1841ce03f2","1.6.6":"535bb041b99d5ac1bc9028ea88bc2fbf3dbadc80ea8dea236cc219123c194114","1.6.7":"d59af413e270e6f34b1b9a1c8c4acef35328f00e26fad447cfe214545af78d8f","1.6.8":"7175f827b99c602df80436db588c87277ce50f2734051a444163b048f5d0b23e","1.6.9":"732d5a9bcd2e496a260263a643c78a6346e9f3cef5b48fe59ac6b120bd03ba4e"},"release":"1.6.0.dev7"}
1
+ {"plans":{"1.3.0":"3199d74a6dda33162bbee4fc650a5a0d70d5372258f3305ad92501215e22a7fd","1.3.1":"580381a4f6f40fc1bd4e903e591ad0d5c1db27daaccafc6f79dabf8c3b84259a","1.3.2":"7a69ffaf0c41438be25a656dcdc87783daac0eae79218d023648ef9d708e373f","1.4.0":"41c3a16e7819857a4b826e944fcfb4f79c58e7192cb151b106a3acd7487d5771","1.4.3":"a8cfbabff09d21944a822c4a70f23a7ee14960c4054de151c9fbc7cdb29adff5","1.4.4":"8658ec11d4b2d32e2e5c6154a7b052f518aecdd4d610a99a05a462aded671079","1.5.0":"52d9d118da099abda0e0153cd16892e201681f6e4d3c6e5790284d1ac469a407","1.5.1":"d283cb8c01024338fb614ae2199744d883379f59579423e4eb9234f5c59ebdd8","1.5.10":"889e2f12614e6e67d342571c1c3bab8940659bfbbf43fa30a6847e73decb85d1","1.5.11":"4906e4de2b3a9c2f0b0181817c9dc168cb910ba6941691d4e86b8387802b624a","1.5.12":"c0a0dc085bb33d9718e869ed5effc2c1581deffd7ed0d5adc119b94312181625","1.5.13":"bfe58c8756f9b5f5e55d5acbb6f7cfc469d201004d312c14e022eb7c52369b7d","1.5.14":"a0464f11e05128cba8881e6295e591fce1ed1e8d43ab0e16710effb8e543d810","1.5.15":"0687a735cb4aaf8f8f74ad6e228ca1b14e045cba8821991c7d19fc9beaeac766","1.5.16":"3544ac754f39d56ecf2b06300b7cca1b6f8723f99885cd11bd690f1a704d3728","1.5.17":"cf1e9e0ff6812cb7092a82dd588392d625decbe3680fe003dfc554f9045809d3","1.5.18":"1fd873effa66b632217d674745722f712a48b36bb79957fefae722757a74bc30","1.5.2":"39fccb7582e13e7e3436861fde7b83ddb8057788cbde792f2f0cf7003f068850","1.5.3":"39fccb7582e13e7e3436861fde7b83ddb8057788cbde792f2f0cf7003f068850","1.5.4":"e86174ba5aff6f257f8a3f4721c7942885cd203469a9d8ddc15dbe6c704e0f45","1.5.5":"f93ed2d4342e447eb9900a0150331113918f2a8b3baeeb795c07231d80f0337c","1.5.6":"e3d90e6ceb20d760f1e9fa63224c5a070a16b3ca6e7dc4cc2c594138e929cce8","1.5.7":"a0464f11e05128cba8881e6295e591fce1ed1e8d43ab0e16710effb8e543d810","1.5.8":"f075b84fb04f4043658a28402d963494dd58481f164c0b371cec94322fe6d131","1.5.9":"ac170fc924019fc2acd69a90a82ba5c2552dce7a2c01a05e5407443e7a9e5af7","1.6.0":"c8286514d1a4f1805e727e13d3c350bb390378c6f31ad6920030412d61ec9b3f","1.6.1":"aa1d3934091853fc21208993930c1bf92e17136428d1d0baaefabfa65d13e7fa","1.6.10":"41c3a16e7819857a4b826e944fcfb4f79c58e7192cb151b106a3acd7487d5771","1.6.11":"d136203e08e3b052254403815d4ccedb555b0a297686fe97952d275eb1f322eb","1.6.12":"c328d4e36bd6277e01cef0140993e23970f4dff84425f3eba236cdd9a8954355","1.6.13":"6e4a259795749084d2d01f97750a57528662898edf14a3a990ccfaffd414ac44","1.6.14":"6e4a259795749084d2d01f97750a57528662898edf14a3a990ccfaffd414ac44","1.6.2":"6ef96b5e00a04a929d16f0e4a136bfcc5b8132a466d6907a99b2c8516a8952d5","1.6.3":"5c10db827bcb92b9322d4aa5751076b825da87c6d18d6953847ba72317cca862","1.6.4":"baf2bb1c2ec7c1bfccfc514ef1cef67907e056e4f7153bb5932ecb835c9cff78","1.6.5":"358dacbc8d16b1b665167de3bc1c42d101d82733502048f345184d1841ce03f2","1.6.6":"535bb041b99d5ac1bc9028ea88bc2fbf3dbadc80ea8dea236cc219123c194114","1.6.7":"d59af413e270e6f34b1b9a1c8c4acef35328f00e26fad447cfe214545af78d8f","1.6.8":"7175f827b99c602df80436db588c87277ce50f2734051a444163b048f5d0b23e","1.6.9":"732d5a9bcd2e496a260263a643c78a6346e9f3cef5b48fe59ac6b120bd03ba4e"},"release":"1.6.0.dev8"}
Binary file
@@ -116,12 +116,15 @@ class MigrationInfo:
116
116
  module_name: Full dotted module path.
117
117
  description: Human-readable description.
118
118
  requires_root: Whether ``boneio-migrate`` helper is needed.
119
+ superseded_by: A later migration that redoes everything this one does,
120
+ so a device applying both from scratch can skip this one.
119
121
  """
120
122
 
121
123
  version: str
122
124
  module_name: str
123
125
  description: str
124
126
  requires_root: bool = True
127
+ superseded_by: str | None = None
125
128
 
126
129
  def version_tuple(self) -> tuple[int, ...]:
127
130
  """Return version as comparable integer tuple."""
@@ -576,6 +579,7 @@ class MigrationRunner:
576
579
  version = getattr(mod, "VERSION", None)
577
580
  description = getattr(mod, "DESCRIPTION", module_name)
578
581
  requires_root = getattr(mod, "REQUIRES_ROOT", True)
582
+ superseded_by = getattr(mod, "SUPERSEDED_BY", None)
579
583
 
580
584
  if version is None:
581
585
  _LOGGER.warning("Migration module %s has no VERSION, skipping.", full_name)
@@ -587,6 +591,7 @@ class MigrationRunner:
587
591
  module_name=full_name,
588
592
  description=description,
589
593
  requires_root=requires_root,
594
+ superseded_by=superseded_by,
590
595
  )
591
596
  )
592
597
  except Exception as exc:
@@ -607,8 +612,49 @@ class MigrationRunner:
607
612
  _LOGGER.debug("Applied migrations: %s", applied)
608
613
 
609
614
  def _get_pending(self) -> list[MigrationInfo]:
610
- """Return migrations not yet applied."""
611
- return [m for m in self._all_migrations if m.version not in self._applied]
615
+ """Return migrations not yet applied, and not made pointless by a later one.
616
+
617
+ A file installed by one migration and replaced by a later one is
618
+ written twice on a device that applies both from scratch — three times
619
+ by the third revision, and so on. Each write is a signature check, a
620
+ digest check and a validator run through the privileged helper, which
621
+ on a controller is seconds, and each is another step that can fail on
622
+ the way to a result the next step throws away.
623
+
624
+ Only whole migrations are ever skipped, never individual actions. The
625
+ helper reads the plan from a signed file and is given nothing but a
626
+ version string; letting the application say which parts to run would
627
+ put it back in charge of what happens as root, which is the hole this
628
+ protocol exists to close. Choosing not to apply something can only ever
629
+ do less, so it is safe here.
630
+
631
+ A migration is skipped only when the one that supersedes it is itself
632
+ about to run or has already run — otherwise the work would be dropped
633
+ rather than deferred. ``test_migration_consistency`` checks that every
634
+ declared supersession really does cover everything the older migration
635
+ did, because getting that wrong loses a change silently.
636
+
637
+ Returns:
638
+ The migrations to apply, in version order.
639
+ """
640
+ pending = [m for m in self._all_migrations if m.version not in self._applied]
641
+ known = {m.version for m in self._all_migrations}
642
+ pending_versions = {m.version for m in pending}
643
+
644
+ kept = []
645
+ for migration in pending:
646
+ successor = migration.superseded_by
647
+ if successor and successor in known and (
648
+ successor in pending_versions or successor in self._applied
649
+ ):
650
+ _LOGGER.info(
651
+ "Skipping %s: %s does everything it does.",
652
+ migration.version,
653
+ successor,
654
+ )
655
+ continue
656
+ kept.append(migration)
657
+ return kept
612
658
 
613
659
  def _apply_pending(
614
660
  self,
@@ -31,6 +31,13 @@ VERSION = "1.6.13"
31
31
  DESCRIPTION = "Allow an uploaded TLS certificate"
32
32
  REQUIRES_ROOT = True
33
33
 
34
+ #: 1.6.14 installs the same file with a later revision of it. A device applying
35
+ #: both from scratch would write it twice, each write a signature check, a
36
+ #: digest check and a validator run through the privileged helper — so this one
37
+ #: is skipped when the other is going to run anyway. A test checks the claim:
38
+ #: everything this migration does has to be something 1.6.14 also does.
39
+ SUPERSEDED_BY = "1.6.14"
40
+
34
41
  _BONEIO_HOME = "/home/boneio"
35
42
  _BONEIO_USER = "boneio"
36
43
 
@@ -0,0 +1,48 @@
1
+ """Stop the device's own certificate expiring twice a day.
2
+
3
+ Caddy's internal issuer defaults to a twelve-hour leaf. For a public site
4
+ renewed automatically that is a virtue; for a certificate nobody trusts until
5
+ they decide to, it undoes the decision daily. Somebody who clicks through the
6
+ warning once, or adds an exception, or installs this device's authority on
7
+ their laptop, is back to a fresh unknown certificate by the evening.
8
+
9
+ Six months instead. The intermediate is extended to a year with it, because
10
+ Caddy refuses to start when a leaf would outlive the intermediate signing it —
11
+ which is the part that makes this two settings rather than one.
12
+
13
+ This is a change to the script the container runs at start, so it only takes
14
+ effect when Caddy is next restarted. Nothing here restarts it: the certificate
15
+ in use is valid, and interrupting the panel to replace a working certificate
16
+ with a longer-lived one is not a trade worth making unasked.
17
+
18
+ To retry on a device, delete ``/var/lib/boneio/migrations.d/1.6.14.applied``
19
+ and restart boneIO.
20
+ """
21
+
22
+ from __future__ import annotations
23
+
24
+ from boneio.migrations.actions import InstallFile, MigrationAction
25
+
26
+ VERSION = "1.6.14"
27
+ DESCRIPTION = "Issue the device certificate for six months, not twelve hours"
28
+ REQUIRES_ROOT = True
29
+
30
+ _BONEIO_HOME = "/home/boneio"
31
+ _BONEIO_USER = "boneio"
32
+
33
+
34
+ def plan() -> list[MigrationAction]:
35
+ """Return the ordered list of migration actions.
36
+
37
+ Returns:
38
+ List of :class:`MigrationAction` to apply in order.
39
+ """
40
+ return [
41
+ InstallFile(
42
+ src="docker/nodered/caddy/init-certs.sh",
43
+ dst=f"{_BONEIO_HOME}/docker/nodered/caddy/init-certs.sh",
44
+ mode=0o755,
45
+ owner=_BONEIO_USER,
46
+ group=_BONEIO_USER,
47
+ ),
48
+ ]
boneio/version.py CHANGED
@@ -1,2 +1,2 @@
1
1
  # flake8: noqa
2
- __version__ = "1.6.0.dev7"
2
+ __version__ = "1.6.0.dev8"
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: boneio
3
- Version: 1.6.0.dev7
3
+ Version: 1.6.0.dev8
4
4
  Summary: Python App for BoneIO
5
5
  Author-email: Paweł Szafer <pszafer@gmail.com>
6
6
  License: GNU General Public License v3.0
@@ -3,7 +3,7 @@ boneio/bonecli.py,sha256=_MbWYilR4-Er0xNTi453pAiVmJJpzbNPHg1nCOcTk-Q,13324
3
3
  boneio/const.py,sha256=a26L-kGgXO4pAt9OrGfOedl-JGQW5540g0iZVpw6_b8,7700
4
4
  boneio/exceptions.py,sha256=cBph-TsLF7FSz6p4wYeMs3pjVmVRaNQRJP82JgYYV-c,810
5
5
  boneio/runner.py,sha256=rrU8J0UP6ZJo6kbvsHZR4KgS96vi70xq25KuJqSLKKg,22525
6
- boneio/version.py,sha256=r3OmaEDA3umu6HwR7IeraW5CESH2814UKKXTWaPvrH0,42
6
+ boneio/version.py,sha256=fcUJuiOsj3XUT257O8bFKeh0lLIbmECdNx97RbxAyTg,42
7
7
  boneio/boards/0.2/input.yaml,sha256=K5EcB44BZ8PxbPnH1izYwJ-ePo8gs4qZttMXhnMnfQ8,1259
8
8
  boneio/boards/0.2/output_24_16.yaml,sha256=GQGM3gUK7UobdGL-Ejt9UKdCs1HLPgZ7kziVZ1tjQlA,1462
9
9
  boneio/boards/0.2/output_32_10.yaml,sha256=169ubuzRqFLGiOr7zgB1xL1tKdQyOx2FJZvTCkxCA4U,1920
@@ -97,7 +97,7 @@ boneio/core/cloud/secrets.py,sha256=gCxw41K4yIyQANEtoiG3JjkY7S5fWbLENJGuneFls7E,
97
97
  boneio/core/cloud/data/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
98
98
  boneio/core/cloud/data/docker-compose-cloud.yaml,sha256=l3rReA8ZrC5rnPygov80SOitbCHJ5Tp9fn40qpAExPA,1196
99
99
  boneio/core/cloud/data/docker-compose.yaml,sha256=8J9bEnkobuj3EE2uixMJUgG-YXmrK8tGzG2PlmLn6q8,1355
100
- boneio/core/cloud/data/init-certs-cloud.sh,sha256=pYY2AR7E15biCJ4_c7OMT5sDxrLWOM601nOhqgissDY,4304
100
+ boneio/core/cloud/data/init-certs-cloud.sh,sha256=U2YhOqkuHnyc8FzxMpnfL49RyQ_hU0EmjaFC79bly-g,4650
101
101
  boneio/core/config/__init__.py,sha256=_c6SuenN1TD27lPkkQ_fWTKCFSoIJqBQPd4UM-9ZY3s,272
102
102
  boneio/core/config/config_helper.py,sha256=r2XS4Chx4azRd53Unrk5_3tNviz8z1HJ_3HEECdsdOU,19745
103
103
  boneio/core/config/input_bindings.py,sha256=ItwftM6Ju0gjAFdROHLmZQtmwtFHkd7pa2vz9zquF6M,7853
@@ -270,15 +270,15 @@ boneio/integration/interlock.py,sha256=P1-uPamm3yMRz7LuZrvV34lmj2xAUxMGHtzRp0ecv
270
270
  boneio/integration/lox_template.py,sha256=Lich2C57w0CV-BDWlivtXsdd1irUltHD2ZfdD0PnLO4,13075
271
271
  boneio/migrations/__init__.py,sha256=ymImsxVT2PF3lfiqqANJSBugMT8IW9gSSUqWcDDaYrk,349
272
272
  boneio/migrations/actions.py,sha256=9MEpjgM5avnv-AP_YrCQWbcUEMwxBsgjeWCHtu_2E3w,16899
273
- boneio/migrations/runner.py,sha256=zrQitqwBeCLvd5GEWp301AK-lrvhbZ0_qcYu673Bls8,38640
274
- boneio/migrations/assets/MANIFEST.sha256,sha256=8SnRTt8Rjsb5hpmw4JOihJ1KoWuQhGgBOhqZfBwy5Is,3780
273
+ boneio/migrations/runner.py,sha256=6hcpcH4OZ1SAagxtUQNeoyFwbB8jkLbpgNrDguiWtKQ,40945
274
+ boneio/migrations/assets/MANIFEST.sha256,sha256=yU7b4AM1XvtcKEltZ9V-AJs-CIX35s9i-aElE7NI5Gg,3780
275
275
  boneio/migrations/assets/migrations-recovery.pem,sha256=loFxDho4uOp7pVWIOeTvi18Bp1ci2_QDkTutdkN0Sew,113
276
276
  boneio/migrations/assets/migrations.pem,sha256=Fql8h17baOGWVblTtLqnc8waTleBBUPNpkaj4-g8DA4,113
277
277
  boneio/migrations/assets/docker/daemon.json,sha256=8u0FxvWTShXxJXETm9wiWAT2e4yDVhzDmGj3siltJpc,96
278
278
  boneio/migrations/assets/docker/nodered/docker-compose-cloud.yaml,sha256=-6GlvGpraqr_jM7Z9u4TUKFq0aXd3irzZsGYiBaY0mQ,955
279
279
  boneio/migrations/assets/docker/nodered/docker-compose.yaml,sha256=zZDhvLZIhmkXnI56QKYmWSPg_qBFzHnVt1WeuzCRMbY,1114
280
280
  boneio/migrations/assets/docker/nodered/caddy/502.html,sha256=It_n1V5e2F6g9BSbd3a3UEoSuRkFcBZXqIhArhIICHw,1134
281
- boneio/migrations/assets/docker/nodered/caddy/init-certs.sh,sha256=IX48xuJK6CQdI7Fc_sqkd6wF_gMQeM1yxHLTahGDVEM,3676
281
+ boneio/migrations/assets/docker/nodered/caddy/init-certs.sh,sha256=kzQqYvAkI1st7v0s2DPvctepzxSorQcnqw3EIueOg4g,4286
282
282
  boneio/migrations/assets/docker/nodered/node-red/settings.js,sha256=v_AHU8cvsXYJpvezpY73i3s5TaEtGf1luHXyiJaV4rQ,4641
283
283
  boneio/migrations/assets/helpers/boneio-containers,sha256=hP0w_dwJKOT4LENNQlVcyW2axW5g7Pt4NysWYYFlBsg,20997
284
284
  boneio/migrations/assets/helpers/boneio-helpers-heal,sha256=3_DNAtqtLL1SWgU1-PNWK7dC5-c3skxp5a-phkFeZ-Q,7089
@@ -323,8 +323,8 @@ boneio/migrations/plans/1.4.0.json,sha256=QcOhbngZhXpLgm6UT8-095xY5xkssVGxBqOs10
323
323
  boneio/migrations/plans/1.4.0.sig,sha256=4-qgEvgoWUbh5ZGEBAdlWupmeRubB0S2El8ZWvrttLM,64
324
324
  boneio/migrations/plans/1.4.3.json,sha256=qM-6v_CdIZRKgixKcPI6fuFJYMQFTeFRyfvHzbKa3_U,736
325
325
  boneio/migrations/plans/1.4.3.sig,sha256=-kq-hWYUzvF2j_NSiikNFIbZTS9XCvxpb6EbsCZF6pk,64
326
- boneio/migrations/plans/1.4.4.json,sha256=J-vxmOA8iCwhVyqb4C9j6P_mphD285XXEWrZ4li02sc,894
327
- boneio/migrations/plans/1.4.4.sig,sha256=eqsyGCECN6vnaafArEJsj9gi6MnUgUW20Valy-lWEag,64
326
+ boneio/migrations/plans/1.4.4.json,sha256=hljsEdSy0y4uXGFUp7BS9RiuzdTWEKmaBaRire1nEHk,894
327
+ boneio/migrations/plans/1.4.4.sig,sha256=wvmUjhDstULbK_BQT0cI-Q8KVX_tdByZ0L33Ictt7UA,64
328
328
  boneio/migrations/plans/1.5.0.json,sha256=UtnRGNoJmr2g4BU80WiS4gFoH25NPG5XkChNGsRppAc,461
329
329
  boneio/migrations/plans/1.5.0.sig,sha256=QIZXjlnP43UR2G5k08eyC02wrg2CAkNUg7QhS4NFTbw,64
330
330
  boneio/migrations/plans/1.5.1.json,sha256=0oPLjAECQzj7YUriGZdE2IM3n1lXlCPk65I09cWevdg,80
@@ -373,8 +373,10 @@ boneio/migrations/plans/1.6.11.json,sha256=0TYgPgjjsFIlRAOBXUzO21VbCil2hv6XlS0nX
373
373
  boneio/migrations/plans/1.6.11.sig,sha256=9sXzurZBVYwt-JzyoI5vlSuCB_ld7AR4JxQS8Azm8zg,64
374
374
  boneio/migrations/plans/1.6.12.json,sha256=wyjU42vWJ34BzvAUCZPiOXD03_hEJfProjbN2aiVQ1U,241
375
375
  boneio/migrations/plans/1.6.12.sig,sha256=rQo55VqYRhnMkpbA6AYPRC5mJfB7a9wkGv8YgPt192Y,64
376
- boneio/migrations/plans/1.6.13.json,sha256=A1oNMsiRdG4xX9Io-BB2gMhW2dEo47Shn2YpJWs--bE,275
377
- boneio/migrations/plans/1.6.13.sig,sha256=U6adcass6dkQXLspYR8uoOA0TQkSH5FuIUvTWL13iXY,64
376
+ boneio/migrations/plans/1.6.13.json,sha256=bkoll5V0kITS0B-XdQpXUoZiiY7fFKOpkMz6_9QUrEQ,275
377
+ boneio/migrations/plans/1.6.13.sig,sha256=Y8o4kXpYMxCxb9X1rxfsEoRUyIPmlICHy7NXwJdVyiE,64
378
+ boneio/migrations/plans/1.6.14.json,sha256=bkoll5V0kITS0B-XdQpXUoZiiY7fFKOpkMz6_9QUrEQ,275
379
+ boneio/migrations/plans/1.6.14.sig,sha256=Y8o4kXpYMxCxb9X1rxfsEoRUyIPmlICHy7NXwJdVyiE,64
378
380
  boneio/migrations/plans/1.6.2.json,sha256=bvlrXgCgSpKdFvDkoTa_zFuBMqRm1pB6mbLIUWqJUtU,63
379
381
  boneio/migrations/plans/1.6.2.sig,sha256=9KnV4GixPAxKeoZMOgJzhzze3OTpY4F-cxihFNpHT10,64
380
382
  boneio/migrations/plans/1.6.3.json,sha256=XBDbgnvLkrkyLUqldRB2uCXah8bRjWlThHunIxfMqGI,178
@@ -391,8 +393,8 @@ boneio/migrations/plans/1.6.8.json,sha256=cXX4J7mcYC34BDbbWIyHJ3zlDyc0BRpEQWOwSP
391
393
  boneio/migrations/plans/1.6.8.sig,sha256=fQOS_Ly_amrM_ucOCkZdjX9jn0Pe7JBnbWqTmVs9SHw,64
392
394
  boneio/migrations/plans/1.6.9.json,sha256=cy1am80uSWomAmOmQ8eKY0bp8871tI_lmsaxIL0Duk4,540
393
395
  boneio/migrations/plans/1.6.9.sig,sha256=s6Xj7sFKeHfBb9f9oBnYeEFDBAxFHvDzqR8LbmqOqHU,64
394
- boneio/migrations/plans/manifest.json,sha256=aqAXxTihQzFqDq4FirXoDUkm4MFb9AhOsZ1pzyq2zTQ,2972
395
- boneio/migrations/plans/manifest.sig,sha256=sfeBAUZmStiUIRS_Z0dbIYxrYX6fEDfmKP-olHeyQUw,64
396
+ boneio/migrations/plans/manifest.json,sha256=BgDMxqVvijrMmQP1FnFtDXZuqULLRV-yAV9LHk9CsHk,3048
397
+ boneio/migrations/plans/manifest.sig,sha256=B8jktVhbNdcnY7i2mSJtRgPPS6WgUNX80nSjKbJsbBE,64
396
398
  boneio/migrations/versions/__init__.py,sha256=JfouqluRirihGluvLOivkL7Sz7PF4lEyiCfMnOoMLwI,53
397
399
  boneio/migrations/versions/v1_3_0_baseline.py,sha256=uM3Lg9NeiMssLZ43q0FecuASviZybdrn7kL5eA_D2UM,6648
398
400
  boneio/migrations/versions/v1_3_1_fix_oled_boot.py,sha256=afKamxSo-zsYrKCHr8tXiPmQqaehioEwtg4JxRp7SEU,2505
@@ -423,7 +425,8 @@ boneio/migrations/versions/v1_6_0_nodered_admin_auth.py,sha256=RWZwKNDCzQSPV_syE
423
425
  boneio/migrations/versions/v1_6_10_narrow_sudo_rules.py,sha256=0xnfbu0Iu6Gzmkjrl4TyYhZliAEDHDSawcluWi5zIjM,1875
424
426
  boneio/migrations/versions/v1_6_11_drop_docker_group.py,sha256=GmCN1xu9elFV1sDEGaelO75JZaPCMekQbBMcY7RDgGc,1811
425
427
  boneio/migrations/versions/v1_6_12_console_shows_ip.py,sha256=HdRoZC62b1FD_Q8n8VZeIO5f7TaZHsi72mz09QAHG2U,2351
426
- boneio/migrations/versions/v1_6_13_custom_certificate.py,sha256=or7ToATKx4Um_sfBwm9v-pXzSvIjXKpDCcqfnCs-pyQ,1928
428
+ boneio/migrations/versions/v1_6_13_custom_certificate.py,sha256=Pc4n-Wlj2v5fGgCSZMJwfRxu-dHkKYeKxmpU9qUQSP0,2341
429
+ boneio/migrations/versions/v1_6_14_certificate_lifetime.py,sha256=dQAWLgDziORhzP6Mu32ysfE4rMynYmbcAFxY6Zw8jhk,1768
427
430
  boneio/migrations/versions/v1_6_1_mosquitto_passwd_perms.py,sha256=-7dTKHPB7X5rwYbuzPTWe7Fg082uLczPIeWj1dESTLs,1635
428
431
  boneio/migrations/versions/v1_6_2_drop_build_sudo_rule.py,sha256=oOyBBsP1nv-siAVixRQcjPko86WZPW_Tv9rD6ywejU4,1733
429
432
  boneio/migrations/versions/v1_6_3_firewall_rule_gaps.py,sha256=3GdU_wevVUJv6fxVTRd87GoMr_sm84naWWDKWOJNVlQ,1435
@@ -687,9 +690,9 @@ boneio/webui/schema/virtual_energy_sensor.schema.json,sha256=BN6Egh-CAnXSa80bQ6Y
687
690
  boneio/webui/schema/web.schema.json,sha256=Wu_Ouv5R8cs1Sc5kN8ggg1L48yFMoo5DrHbd98gLM-M,4980
688
691
  boneio/webui/services/__init__.py,sha256=l_L3YUPhc0ZbrWqKH1RurC7UQ4q0k-5ABGTwOSS-YFQ,282
689
692
  boneio/webui/services/logs.py,sha256=rKx-7jbNXNuQpuqJHtIHBCXZ3ELguDJL82RySAUT38Y,11980
690
- boneio-1.6.0.dev7.dist-info/licenses/LICENSE,sha256=OXLcl0T2SZ8Pmy2_dmlvKuetivmyPd5m1q-Gyd-zaYY,35149
691
- boneio-1.6.0.dev7.dist-info/METADATA,sha256=08f_EkCA91JAKOHD6_drV7pRb1H6FQ9U9fYOOMolw_s,1965
692
- boneio-1.6.0.dev7.dist-info/WHEEL,sha256=YVMoNqKzERt-wjUZwJ33xBGAwnFl-4cqbYkTtWa4itE,91
693
- boneio-1.6.0.dev7.dist-info/entry_points.txt,sha256=JX7gluDIkQ6MBlzzxGHMItnBjciiJ73tsXwYcazMW_U,47
694
- boneio-1.6.0.dev7.dist-info/top_level.txt,sha256=ag9S5n1_KXZfyk9tN8R0YUDYbdA--e5a2w2FOD_yMdg,7
695
- boneio-1.6.0.dev7.dist-info/RECORD,,
693
+ boneio-1.6.0.dev8.dist-info/licenses/LICENSE,sha256=OXLcl0T2SZ8Pmy2_dmlvKuetivmyPd5m1q-Gyd-zaYY,35149
694
+ boneio-1.6.0.dev8.dist-info/METADATA,sha256=EhEEixdQHJu_ZPNgdIOo1Ex4cX07b_fZW-4MWPk8TBQ,1965
695
+ boneio-1.6.0.dev8.dist-info/WHEEL,sha256=YVMoNqKzERt-wjUZwJ33xBGAwnFl-4cqbYkTtWa4itE,91
696
+ boneio-1.6.0.dev8.dist-info/entry_points.txt,sha256=JX7gluDIkQ6MBlzzxGHMItnBjciiJ73tsXwYcazMW_U,47
697
+ boneio-1.6.0.dev8.dist-info/top_level.txt,sha256=ag9S5n1_KXZfyk9tN8R0YUDYbdA--e5a2w2FOD_yMdg,7
698
+ boneio-1.6.0.dev8.dist-info/RECORD,,