influxdata-plugin-utils 0.2.0__tar.gz → 0.3.1__tar.gz

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.
@@ -7,6 +7,34 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
7
7
 
8
8
  ## [Unreleased]
9
9
 
10
+ ## [0.3.1] - 2026-08-03
11
+
12
+ ### Changed
13
+
14
+ - No functional changes. Released to exercise the tag-triggered release
15
+ automation added in
16
+ [#137](https://github.com/influxdata/influxdb3_plugins/pull/137), which
17
+ builds release notes from this file and publishes a GitHub release
18
+ alongside the PyPI upload.
19
+
20
+ ## [0.3.0] - 2026-07-31
21
+
22
+ ### Security
23
+
24
+ - `config.load_plugin_config` — disable dynaconf's `@` token substitution
25
+ (`@read_file`, `@format`, `@jinja`, `@get`, and ~30 others) by constructing
26
+ the settings object with `AUTO_CAST_FOR_DYNACONF=False`. Previously any
27
+ string value beginning with `@` was evaluated, so an untrusted value from an
28
+ HTTP request body could read the server's files or environment variables
29
+ (for example `@read_file /etc/passwd` or `@format {env[SECRET]}`). Values are
30
+ now always treated as literal data. See
31
+ [#134](https://github.com/influxdata/influxdb3_plugins/issues/134).
32
+
33
+ ### Changed
34
+
35
+ - Pin `dynaconf>=3.2,<4` so a future major release cannot silently re-enable
36
+ token substitution.
37
+
10
38
  ## [0.2.0] - 2026-07-12
11
39
 
12
40
  ### Added
@@ -39,6 +67,8 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
39
67
  - `write` — `build_line`, `build_line_typed`, `add_field_with_type`,
40
68
  `write_data` (batching + retry), `BatchLines`.
41
69
 
42
- [Unreleased]: https://github.com/influxdata/influxdb3_plugins/compare/utils-v0.2.0...HEAD
70
+ [Unreleased]: https://github.com/influxdata/influxdb3_plugins/compare/utils-v0.3.1...HEAD
71
+ [0.3.1]: https://github.com/influxdata/influxdb3_plugins/compare/utils-v0.3.0...utils-v0.3.1
72
+ [0.3.0]: https://github.com/influxdata/influxdb3_plugins/compare/utils-v0.2.0...utils-v0.3.0
43
73
  [0.2.0]: https://github.com/influxdata/influxdb3_plugins/compare/utils-v0.1.0...utils-v0.2.0
44
74
  [0.1.0]: https://github.com/influxdata/influxdb3_plugins/releases/tag/utils-v0.1.0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: influxdata-plugin-utils
3
- Version: 0.2.0
3
+ Version: 0.3.1
4
4
  Summary: Shared helpers for InfluxDB 3 plugins.
5
5
  Project-URL: Homepage, https://github.com/influxdata/influxdb3_plugins
6
6
  Project-URL: Repository, https://github.com/influxdata/influxdb3_plugins
@@ -12,7 +12,7 @@ Keywords: influxdb,influxdb3,plugins
12
12
  Classifier: Operating System :: OS Independent
13
13
  Classifier: Programming Language :: Python :: 3.11
14
14
  Requires-Python: >=3.11
15
- Requires-Dist: dynaconf>=3.2
15
+ Requires-Dist: dynaconf<4,>=3.2
16
16
  Description-Content-Type: text/markdown
17
17
 
18
18
  # influxdata-plugin-utils
@@ -12,7 +12,7 @@ license = "MIT OR Apache-2.0"
12
12
  license-files = ["LICENSE-MIT", "LICENSE-APACHE"]
13
13
  authors = [{ name = "InfluxData" }]
14
14
  keywords = ["influxdb", "influxdb3", "plugins"]
15
- dependencies = ["dynaconf>=3.2"]
15
+ dependencies = ["dynaconf>=3.2,<4"]
16
16
  classifiers = [
17
17
  "Programming Language :: Python :: 3.11",
18
18
  "Operating System :: OS Independent",
@@ -8,7 +8,7 @@ Modules:
8
8
  write - LineBuilder builders and resilient write_data
9
9
  """
10
10
 
11
- __version__ = "0.2.0"
11
+ __version__ = "0.3.1"
12
12
 
13
13
  from . import cache, config, introspection, parsing, write
14
14
  from .cache import cached
@@ -4,6 +4,11 @@ Loads a plugin's TOML config (resolved via the plugin directory), merges
4
4
  environment variables and engine-supplied ``args``, and validates the result.
5
5
  dynaconf is an implementation detail and must not leak into plugin code beyond
6
6
  the re-exported ``Validator``.
7
+
8
+ All values are treated as literal data. dynaconf's ``@`` token substitution
9
+ (``@read_file``, ``@format``, ``@get``, ...) is disabled so that a value
10
+ beginning with ``@`` is never evaluated against the server's filesystem or
11
+ environment; see https://github.com/influxdata/influxdb3_plugins/issues/134.
7
12
  """
8
13
 
9
14
  import os
@@ -104,8 +109,14 @@ def load_plugin_config(
104
109
  with open(resolve_path(config_file_path), "rb") as config_file:
105
110
  layers.update(tomllib.load(config_file))
106
111
 
107
- # loaders=[] disables the DYNACONF_* env loader; env is read only via env_keys
108
- settings = Dynaconf(loaders=[])
112
+ # loaders=[] disables the DYNACONF_* env loader; env is read only via
113
+ # env_keys. AUTO_CAST_FOR_DYNACONF=False disables dynaconf's "@" token
114
+ # substitution (@read_file, @format, @jinja, @get, ... — ~30 tokens, each
115
+ # beginning with "@"). Without it, any string value that begins with "@" is
116
+ # evaluated instead of stored as data, so an untrusted value arriving in an
117
+ # HTTP request body could read the server's files or environment variables.
118
+ # See https://github.com/influxdata/influxdb3_plugins/issues/134.
119
+ settings = Dynaconf(loaders=[], AUTO_CAST_FOR_DYNACONF=False)
109
120
  settings.update(layers)
110
121
  if validators:
111
122
  settings.validators.register(*validators)