unifi-cli 0.4.2__tar.gz → 0.4.4__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.
- {unifi_cli-0.4.2 → unifi_cli-0.4.4}/.github/workflows/ci.yml +5 -5
- unifi_cli-0.4.4/.github/workflows/dependencies.yml +25 -0
- {unifi_cli-0.4.2 → unifi_cli-0.4.4}/.github/workflows/release.yml +24 -17
- {unifi_cli-0.4.2 → unifi_cli-0.4.4}/CHANGELOG.md +16 -0
- {unifi_cli-0.4.2 → unifi_cli-0.4.4}/Cargo.lock +61 -51
- {unifi_cli-0.4.2 → unifi_cli-0.4.4}/Cargo.toml +2 -2
- {unifi_cli-0.4.2 → unifi_cli-0.4.4}/PKG-INFO +33 -8
- {unifi_cli-0.4.2 → unifi_cli-0.4.4}/README.md +32 -7
- {unifi_cli-0.4.2 → unifi_cli-0.4.4}/src/api/client.rs +263 -0
- unifi_cli-0.4.4/src/api/mod.rs +14 -0
- {unifi_cli-0.4.2 → unifi_cli-0.4.4}/src/api/tests.rs +160 -0
- {unifi_cli-0.4.2 → unifi_cli-0.4.4}/src/api/types.rs +490 -0
- unifi_cli-0.4.4/src/commands/dns.rs +434 -0
- {unifi_cli-0.4.2 → unifi_cli-0.4.4}/src/commands/mod.rs +1 -0
- {unifi_cli-0.4.2 → unifi_cli-0.4.4}/src/fields.rs +14 -0
- {unifi_cli-0.4.2 → unifi_cli-0.4.4}/src/lib.rs +4 -2
- {unifi_cli-0.4.2 → unifi_cli-0.4.4}/src/main.rs +268 -0
- {unifi_cli-0.4.2 → unifi_cli-0.4.4}/src/schema.rs +61 -5
- {unifi_cli-0.4.2 → unifi_cli-0.4.4}/tests/cli_contract.rs +82 -1
- {unifi_cli-0.4.2 → unifi_cli-0.4.4}/tests/mock_server.rs +398 -0
- {unifi_cli-0.4.2 → unifi_cli-0.4.4}/tests/spec_compliance.rs +17 -2
- unifi_cli-0.4.2/.github/workflows/upd.yml +0 -19
- unifi_cli-0.4.2/src/api/mod.rs +0 -13
- {unifi_cli-0.4.2 → unifi_cli-0.4.4}/.github/workflows/clispec.yml +0 -0
- {unifi_cli-0.4.2 → unifi_cli-0.4.4}/.gitignore +0 -0
- {unifi_cli-0.4.2 → unifi_cli-0.4.4}/.mise.toml +0 -0
- {unifi_cli-0.4.2 → unifi_cli-0.4.4}/LICENSE +0 -0
- {unifi_cli-0.4.2 → unifi_cli-0.4.4}/Makefile +0 -0
- {unifi_cli-0.4.2 → unifi_cli-0.4.4}/docs/releases.md +0 -0
- {unifi_cli-0.4.2 → unifi_cli-0.4.4}/prek.toml +0 -0
- {unifi_cli-0.4.2 → unifi_cli-0.4.4}/pyproject.toml +0 -0
- {unifi_cli-0.4.2 → unifi_cli-0.4.4}/src/commands/clients.rs +0 -0
- {unifi_cli-0.4.2 → unifi_cli-0.4.4}/src/commands/devices.rs +0 -0
- {unifi_cli-0.4.2 → unifi_cli-0.4.4}/src/commands/events.rs +0 -0
- {unifi_cli-0.4.2 → unifi_cli-0.4.4}/src/commands/networks.rs +0 -0
- {unifi_cli-0.4.2 → unifi_cli-0.4.4}/src/commands/port_forwards.rs +0 -0
- {unifi_cli-0.4.2 → unifi_cli-0.4.4}/src/commands/ports.rs +0 -0
- {unifi_cli-0.4.2 → unifi_cli-0.4.4}/src/commands/protect.rs +0 -0
- {unifi_cli-0.4.2 → unifi_cli-0.4.4}/src/commands/system.rs +0 -0
- {unifi_cli-0.4.2 → unifi_cli-0.4.4}/src/commands/wan.rs +0 -0
- {unifi_cli-0.4.2 → unifi_cli-0.4.4}/src/output.rs +0 -0
- {unifi_cli-0.4.2 → unifi_cli-0.4.4}/src/tui.rs +0 -0
- {unifi_cli-0.4.2 → unifi_cli-0.4.4}/src/unifi_cli_alias.rs +0 -0
- {unifi_cli-0.4.2 → unifi_cli-0.4.4}/tests/fixtures/clispec-v0.3.json +0 -0
- {unifi_cli-0.4.2 → unifi_cli-0.4.4}/tests/no_real_network_data.rs +0 -0
- {unifi_cli-0.4.2 → unifi_cli-0.4.4}/tests/package_alias.rs +0 -0
- {unifi_cli-0.4.2 → unifi_cli-0.4.4}/unifi_cli/__init__.py +0 -0
- {unifi_cli-0.4.2 → unifi_cli-0.4.4}/unifi_cli/__main__.py +0 -0
- {unifi_cli-0.4.2 → unifi_cli-0.4.4}/vership.toml +0 -0
|
@@ -15,7 +15,7 @@ jobs:
|
|
|
15
15
|
name: Lint
|
|
16
16
|
runs-on: ubuntu-latest
|
|
17
17
|
steps:
|
|
18
|
-
- uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1
|
|
18
|
+
- uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1
|
|
19
19
|
|
|
20
20
|
- uses: dtolnay/rust-toolchain@4360b52568e2003a75bf9bc1d59f33a8e3fc893c
|
|
21
21
|
with:
|
|
@@ -29,7 +29,7 @@ jobs:
|
|
|
29
29
|
name: Test
|
|
30
30
|
runs-on: ubuntu-latest
|
|
31
31
|
steps:
|
|
32
|
-
- uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1
|
|
32
|
+
- uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1
|
|
33
33
|
|
|
34
34
|
- uses: dtolnay/rust-toolchain@4360b52568e2003a75bf9bc1d59f33a8e3fc893c
|
|
35
35
|
with:
|
|
@@ -42,18 +42,18 @@ jobs:
|
|
|
42
42
|
name: Coverage
|
|
43
43
|
runs-on: ubuntu-latest
|
|
44
44
|
steps:
|
|
45
|
-
- uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1
|
|
45
|
+
- uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1
|
|
46
46
|
- uses: dtolnay/rust-toolchain@4360b52568e2003a75bf9bc1d59f33a8e3fc893c
|
|
47
47
|
with:
|
|
48
48
|
toolchain: 1.96.0
|
|
49
49
|
components: rustfmt, clippy
|
|
50
|
-
- uses: taiki-e/install-action@
|
|
50
|
+
- uses: taiki-e/install-action@3f74d7c16a4242f1c95561e98edc25d36adb4375 # v2.87.12
|
|
51
51
|
with:
|
|
52
52
|
tool: cargo-tarpaulin
|
|
53
53
|
- name: Generate coverage
|
|
54
54
|
run: cargo tarpaulin --out xml
|
|
55
55
|
- name: Upload to Codecov
|
|
56
|
-
uses: codecov/codecov-action@fb8b3582c8e4def4969c97caa2f19720cb33a72f
|
|
56
|
+
uses: codecov/codecov-action@fb8b3582c8e4def4969c97caa2f19720cb33a72f # v7.0.0
|
|
57
57
|
with:
|
|
58
58
|
files: cobertura.xml
|
|
59
59
|
token: ${{ secrets.CODECOV_TOKEN }}
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
name: Dependency health
|
|
2
|
+
|
|
3
|
+
on:
|
|
4
|
+
schedule:
|
|
5
|
+
- cron: "51 6 * * 1"
|
|
6
|
+
workflow_dispatch:
|
|
7
|
+
|
|
8
|
+
permissions:
|
|
9
|
+
contents: read
|
|
10
|
+
id-token: write
|
|
11
|
+
packages: read
|
|
12
|
+
pull-requests: read
|
|
13
|
+
|
|
14
|
+
jobs:
|
|
15
|
+
update:
|
|
16
|
+
uses: rvben/upd/.github/workflows/dependency-health.yml@a6335d64643d55ae6c04bcc961b964147075eb92 # v0.10.4
|
|
17
|
+
with:
|
|
18
|
+
langs: rust,actions
|
|
19
|
+
lock: true
|
|
20
|
+
min-age: 7d
|
|
21
|
+
max-bump: minor
|
|
22
|
+
validation-command: make check
|
|
23
|
+
fail-on-blocked: false
|
|
24
|
+
branch: deps/upd
|
|
25
|
+
commit-message: "chore(deps): refresh dependencies"
|
|
@@ -37,7 +37,7 @@ jobs:
|
|
|
37
37
|
name: Run tests
|
|
38
38
|
runs-on: ubuntu-latest
|
|
39
39
|
steps:
|
|
40
|
-
- uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1
|
|
40
|
+
- uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1
|
|
41
41
|
|
|
42
42
|
- name: Validate release metadata
|
|
43
43
|
shell: bash
|
|
@@ -89,7 +89,7 @@ jobs:
|
|
|
89
89
|
target: aarch64-apple-darwin
|
|
90
90
|
runs-on: ${{ matrix.os }}
|
|
91
91
|
steps:
|
|
92
|
-
- uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1
|
|
92
|
+
- uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1
|
|
93
93
|
with:
|
|
94
94
|
# Preserve target/ between runs on self-hosted runners for cargo
|
|
95
95
|
# incremental rebuild. GitHub-hosted runners start clean each job
|
|
@@ -128,7 +128,7 @@ jobs:
|
|
|
128
128
|
|
|
129
129
|
- name: Install uv
|
|
130
130
|
if: matrix.target != 'aarch64-unknown-linux-gnu'
|
|
131
|
-
uses: astral-sh/setup-uv@
|
|
131
|
+
uses: astral-sh/setup-uv@bec219d24cd3e171d82865faccec33120bb574f4 # v10.1.0
|
|
132
132
|
|
|
133
133
|
- name: Install maturin and zig
|
|
134
134
|
# maturin-action provides its own maturin inside the manylinux
|
|
@@ -145,7 +145,7 @@ jobs:
|
|
|
145
145
|
|
|
146
146
|
- name: Build wheel (arm64 linux via maturin-action)
|
|
147
147
|
if: matrix.target == 'aarch64-unknown-linux-gnu'
|
|
148
|
-
uses: PyO3/maturin-action@e83996d129638aa358a18fbd1dfb82f0b0fb5d3b
|
|
148
|
+
uses: PyO3/maturin-action@e83996d129638aa358a18fbd1dfb82f0b0fb5d3b # v1.51.0
|
|
149
149
|
with:
|
|
150
150
|
target: aarch64-unknown-linux-gnu
|
|
151
151
|
args: --release --out dist
|
|
@@ -227,13 +227,13 @@ jobs:
|
|
|
227
227
|
rm -rf release-package
|
|
228
228
|
|
|
229
229
|
- name: Upload wheel
|
|
230
|
-
uses: actions/upload-artifact@043fb46d1a93c77aae656e7c1c64a875d1fc6a0a
|
|
230
|
+
uses: actions/upload-artifact@043fb46d1a93c77aae656e7c1c64a875d1fc6a0a # v7.0.1
|
|
231
231
|
with:
|
|
232
232
|
path: dist/*.whl
|
|
233
233
|
name: wheel-${{ matrix.target }}
|
|
234
234
|
|
|
235
235
|
- name: Upload release archives
|
|
236
|
-
uses: actions/upload-artifact@043fb46d1a93c77aae656e7c1c64a875d1fc6a0a
|
|
236
|
+
uses: actions/upload-artifact@043fb46d1a93c77aae656e7c1c64a875d1fc6a0a # v7.0.1
|
|
237
237
|
with:
|
|
238
238
|
path: |
|
|
239
239
|
unifi-cli-${{ github.ref_name }}-${{ matrix.target }}.tar.gz*
|
|
@@ -245,9 +245,9 @@ jobs:
|
|
|
245
245
|
runs-on: ubuntu-latest
|
|
246
246
|
needs: test
|
|
247
247
|
steps:
|
|
248
|
-
- uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1
|
|
248
|
+
- uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1
|
|
249
249
|
|
|
250
|
-
- uses: astral-sh/setup-uv@
|
|
250
|
+
- uses: astral-sh/setup-uv@bec219d24cd3e171d82865faccec33120bb574f4 # v10.1.0
|
|
251
251
|
|
|
252
252
|
- name: Install maturin
|
|
253
253
|
shell: bash
|
|
@@ -261,7 +261,7 @@ jobs:
|
|
|
261
261
|
- name: Build sdist
|
|
262
262
|
run: maturin sdist
|
|
263
263
|
|
|
264
|
-
- uses: actions/upload-artifact@043fb46d1a93c77aae656e7c1c64a875d1fc6a0a
|
|
264
|
+
- uses: actions/upload-artifact@043fb46d1a93c77aae656e7c1c64a875d1fc6a0a # v7.0.1
|
|
265
265
|
with:
|
|
266
266
|
path: target/wheels/*.tar.gz
|
|
267
267
|
name: sdist
|
|
@@ -270,23 +270,30 @@ jobs:
|
|
|
270
270
|
runs-on: ubuntu-latest
|
|
271
271
|
permissions:
|
|
272
272
|
contents: write
|
|
273
|
+
id-token: write
|
|
273
274
|
needs: [build, sdist]
|
|
274
275
|
steps:
|
|
275
|
-
- uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1
|
|
276
|
+
- uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1
|
|
276
277
|
|
|
277
278
|
- uses: dtolnay/rust-toolchain@4360b52568e2003a75bf9bc1d59f33a8e3fc893c
|
|
278
279
|
with:
|
|
279
280
|
toolchain: 1.96.0
|
|
280
281
|
components: rustfmt, clippy
|
|
281
282
|
- name: Install uv
|
|
282
|
-
uses: astral-sh/setup-uv@
|
|
283
|
+
uses: astral-sh/setup-uv@bec219d24cd3e171d82865faccec33120bb574f4 # v10.1.0
|
|
283
284
|
with:
|
|
284
285
|
enable-cache: false
|
|
285
286
|
|
|
287
|
+
- name: Authenticate to crates.io via Trusted Publishing
|
|
288
|
+
id: crates_io_auth
|
|
289
|
+
if: ${{ inputs.dry_run != true && inputs.skip_crates_io != true }}
|
|
290
|
+
# v1.0.5
|
|
291
|
+
uses: rust-lang/crates-io-auth-action@c6f97d42243bad5fab37ca0427f495c86d5b1a18 # v1.0.5
|
|
292
|
+
|
|
286
293
|
- name: Publish to crates.io
|
|
287
294
|
if: ${{ inputs.dry_run != true && inputs.skip_crates_io != true }}
|
|
288
295
|
env:
|
|
289
|
-
CARGO_REGISTRY_TOKEN: ${{
|
|
296
|
+
CARGO_REGISTRY_TOKEN: ${{ steps.crates_io_auth.outputs.token }}
|
|
290
297
|
run: cargo publish --locked
|
|
291
298
|
|
|
292
299
|
- name: Test crates.io publish (dry run)
|
|
@@ -300,7 +307,7 @@ jobs:
|
|
|
300
307
|
run: echo "Skipping crates.io publishing as requested"
|
|
301
308
|
|
|
302
309
|
- name: Download all artifacts
|
|
303
|
-
uses: actions/download-artifact@3e5f45b2cfb9172054b4087a40e8e0b5a5461e7c
|
|
310
|
+
uses: actions/download-artifact@3e5f45b2cfb9172054b4087a40e8e0b5a5461e7c # v8.0.1
|
|
304
311
|
with:
|
|
305
312
|
path: artifacts
|
|
306
313
|
|
|
@@ -326,7 +333,7 @@ jobs:
|
|
|
326
333
|
|
|
327
334
|
- name: Create Release
|
|
328
335
|
if: ${{ inputs.dry_run != true }}
|
|
329
|
-
uses: softprops/action-gh-release@
|
|
336
|
+
uses: softprops/action-gh-release@efb35369e0ad2afab669f228072c1b0d510eae64 # v3.0.3
|
|
330
337
|
with:
|
|
331
338
|
generate_release_notes: true
|
|
332
339
|
files: |
|
|
@@ -347,7 +354,7 @@ jobs:
|
|
|
347
354
|
if: ${{ !inputs.dry_run }}
|
|
348
355
|
runs-on: ubuntu-latest
|
|
349
356
|
steps:
|
|
350
|
-
- uses: actions/download-artifact@3e5f45b2cfb9172054b4087a40e8e0b5a5461e7c
|
|
357
|
+
- uses: actions/download-artifact@3e5f45b2cfb9172054b4087a40e8e0b5a5461e7c # v8.0.1
|
|
351
358
|
with:
|
|
352
359
|
path: /tmp/artifacts
|
|
353
360
|
|
|
@@ -440,10 +447,10 @@ jobs:
|
|
|
440
447
|
attestations: write
|
|
441
448
|
steps:
|
|
442
449
|
- name: Download release artifacts
|
|
443
|
-
uses: actions/download-artifact@3e5f45b2cfb9172054b4087a40e8e0b5a5461e7c
|
|
450
|
+
uses: actions/download-artifact@3e5f45b2cfb9172054b4087a40e8e0b5a5461e7c # v8.0.1
|
|
444
451
|
with:
|
|
445
452
|
path: artifacts
|
|
446
453
|
- name: Attest release artifacts
|
|
447
|
-
uses: actions/attest@1e69f48acb82d1966a394da916b4c1698aa569d6
|
|
454
|
+
uses: actions/attest@1e69f48acb82d1966a394da916b4c1698aa569d6 # v4.2.2
|
|
448
455
|
with:
|
|
449
456
|
subject-path: artifacts/**/*
|
|
@@ -2,6 +2,22 @@
|
|
|
2
2
|
|
|
3
3
|
All notable changes to this project will be documented in this file.
|
|
4
4
|
|
|
5
|
+
## [0.4.4](https://github.com/rvben/unifi-cli/compare/v0.4.3...v0.4.4) - 2026-09-27
|
|
6
|
+
|
|
7
|
+
### Fixed
|
|
8
|
+
|
|
9
|
+
- **deps**: update rustls to 0.23.45 for RUSTSEC-2026-0285 ([4c1d51c](https://github.com/rvben/unifi-cli/commit/4c1d51c36bc77d4175d841bd0d2de3ac79ed6562))
|
|
10
|
+
|
|
11
|
+
## [0.4.3](https://github.com/rvben/unifi-cli/compare/v0.4.2...v0.4.3) - 2026-09-17
|
|
12
|
+
|
|
13
|
+
### Added
|
|
14
|
+
|
|
15
|
+
- **dns**: manage static DNS records ([149edf3](https://github.com/rvben/unifi-cli/commit/149edf379d1df00e79ea8c2b783c9895e4d7f74e))
|
|
16
|
+
|
|
17
|
+
### Fixed
|
|
18
|
+
|
|
19
|
+
- **dns**: stop update from destroying records on v2 controllers ([445be02](https://github.com/rvben/unifi-cli/commit/445be02b5ab59dd04382ac93787afc407b7d4bd9))
|
|
20
|
+
|
|
5
21
|
## [0.4.2](https://github.com/rvben/unifi-cli/compare/v0.4.1...v0.4.2) - 2026-08-26
|
|
6
22
|
|
|
7
23
|
### Added
|
|
@@ -67,7 +67,7 @@ version = "1.1.5"
|
|
|
67
67
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
68
68
|
checksum = "40c48f72fd53cd289104fc64099abca73db4166ad86ea0b4341abe65af83dadc"
|
|
69
69
|
dependencies = [
|
|
70
|
-
"windows-sys 0.
|
|
70
|
+
"windows-sys 0.60.2",
|
|
71
71
|
]
|
|
72
72
|
|
|
73
73
|
[[package]]
|
|
@@ -78,14 +78,14 @@ checksum = "291e6a250ff86cd4a820112fb8898808a366d8f9f58ce16d1f538353ad55747d"
|
|
|
78
78
|
dependencies = [
|
|
79
79
|
"anstyle",
|
|
80
80
|
"once_cell_polyfill",
|
|
81
|
-
"windows-sys 0.
|
|
81
|
+
"windows-sys 0.60.2",
|
|
82
82
|
]
|
|
83
83
|
|
|
84
84
|
[[package]]
|
|
85
85
|
name = "anyhow"
|
|
86
|
-
version = "1.0.
|
|
86
|
+
version = "1.0.104"
|
|
87
87
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
88
|
-
checksum = "
|
|
88
|
+
checksum = "330a5ed07fa54e4702c9d6c4174f74427fc0ef6e214bbd677ae50a5099946470"
|
|
89
89
|
|
|
90
90
|
[[package]]
|
|
91
91
|
name = "assert-json-diff"
|
|
@@ -236,6 +236,17 @@ version = "0.2.1"
|
|
|
236
236
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
237
237
|
checksum = "613afe47fcd5fac7ccf1db93babcb082c5994d996f20b8b159f2ad1658eb5724"
|
|
238
238
|
|
|
239
|
+
[[package]]
|
|
240
|
+
name = "chacha20"
|
|
241
|
+
version = "0.10.2"
|
|
242
|
+
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
243
|
+
checksum = "65c35e4b699c7e15ccbe7ee35c005e4fc0a278d22238a2857e6ce2dadeda1b06"
|
|
244
|
+
dependencies = [
|
|
245
|
+
"cfg-if",
|
|
246
|
+
"cpufeatures 0.3.1",
|
|
247
|
+
"rand_core 0.10.1",
|
|
248
|
+
]
|
|
249
|
+
|
|
239
250
|
[[package]]
|
|
240
251
|
name = "clap"
|
|
241
252
|
version = "4.6.1"
|
|
@@ -352,6 +363,15 @@ dependencies = [
|
|
|
352
363
|
"libc",
|
|
353
364
|
]
|
|
354
365
|
|
|
366
|
+
[[package]]
|
|
367
|
+
name = "cpufeatures"
|
|
368
|
+
version = "0.3.1"
|
|
369
|
+
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
370
|
+
checksum = "5ca28b0ae3115b884660db4118d803791fd6756b6e88f39c0f3f7859060d7566"
|
|
371
|
+
dependencies = [
|
|
372
|
+
"libc",
|
|
373
|
+
]
|
|
374
|
+
|
|
355
375
|
[[package]]
|
|
356
376
|
name = "crossterm"
|
|
357
377
|
version = "0.29.0"
|
|
@@ -516,7 +536,7 @@ dependencies = [
|
|
|
516
536
|
"libc",
|
|
517
537
|
"option-ext",
|
|
518
538
|
"redox_users",
|
|
519
|
-
"windows-sys 0.
|
|
539
|
+
"windows-sys 0.59.0",
|
|
520
540
|
]
|
|
521
541
|
|
|
522
542
|
[[package]]
|
|
@@ -567,7 +587,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
|
567
587
|
checksum = "39cab71617ae0d63f51a36d69f866391735b51691dbda63cf6f96d042b63efeb"
|
|
568
588
|
dependencies = [
|
|
569
589
|
"libc",
|
|
570
|
-
"windows-sys 0.
|
|
590
|
+
"windows-sys 0.59.0",
|
|
571
591
|
]
|
|
572
592
|
|
|
573
593
|
[[package]]
|
|
@@ -801,11 +821,9 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
|
801
821
|
checksum = "899def5c37c4fd7b2664648c28120ecec138e4d395b459e5ca34f9cce2dd77fd"
|
|
802
822
|
dependencies = [
|
|
803
823
|
"cfg-if",
|
|
804
|
-
"js-sys",
|
|
805
824
|
"libc",
|
|
806
825
|
"r-efi 5.3.0",
|
|
807
826
|
"wasip2",
|
|
808
|
-
"wasm-bindgen",
|
|
809
827
|
]
|
|
810
828
|
|
|
811
829
|
[[package]]
|
|
@@ -815,17 +833,20 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
|
815
833
|
checksum = "0de51e6874e94e7bf76d726fc5d13ba782deca734ff60d5bb2fb2607c7406555"
|
|
816
834
|
dependencies = [
|
|
817
835
|
"cfg-if",
|
|
836
|
+
"js-sys",
|
|
818
837
|
"libc",
|
|
819
838
|
"r-efi 6.0.0",
|
|
839
|
+
"rand_core 0.10.1",
|
|
820
840
|
"wasip2",
|
|
821
841
|
"wasip3",
|
|
842
|
+
"wasm-bindgen",
|
|
822
843
|
]
|
|
823
844
|
|
|
824
845
|
[[package]]
|
|
825
846
|
name = "h2"
|
|
826
|
-
version = "0.4.
|
|
847
|
+
version = "0.4.19"
|
|
827
848
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
828
|
-
checksum = "
|
|
849
|
+
checksum = "ef8e5e5a340588f4452631496976cf8636d4a7ecf600239fdc27615d2530bc16"
|
|
829
850
|
dependencies = [
|
|
830
851
|
"atomic-waker",
|
|
831
852
|
"bytes",
|
|
@@ -1681,15 +1702,6 @@ version = "0.2.0"
|
|
|
1681
1702
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
1682
1703
|
checksum = "439ee305def115ba05938db6eb1644ff94165c5ab5e9420d1c1bcedbba909391"
|
|
1683
1704
|
|
|
1684
|
-
[[package]]
|
|
1685
|
-
name = "ppv-lite86"
|
|
1686
|
-
version = "0.2.21"
|
|
1687
|
-
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
1688
|
-
checksum = "85eae3c4ed2f50dcfe72643da4befc30deadb458a9b590d720cde2f2b1e97da9"
|
|
1689
|
-
dependencies = [
|
|
1690
|
-
"zerocopy",
|
|
1691
|
-
]
|
|
1692
|
-
|
|
1693
1705
|
[[package]]
|
|
1694
1706
|
name = "prettyplease"
|
|
1695
1707
|
version = "0.2.37"
|
|
@@ -1747,14 +1759,15 @@ dependencies = [
|
|
|
1747
1759
|
|
|
1748
1760
|
[[package]]
|
|
1749
1761
|
name = "quinn-proto"
|
|
1750
|
-
version = "0.11.
|
|
1762
|
+
version = "0.11.18"
|
|
1751
1763
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
1752
|
-
checksum = "
|
|
1764
|
+
checksum = "a9746dbde176634f4f2f1faf2404e30a31b2bc1e9cafb5329c95d8177a18c9fc"
|
|
1753
1765
|
dependencies = [
|
|
1754
1766
|
"bytes",
|
|
1755
|
-
"getrandom 0.
|
|
1767
|
+
"getrandom 0.4.2",
|
|
1756
1768
|
"lru-slab",
|
|
1757
|
-
"rand 0.
|
|
1769
|
+
"rand 0.10.3",
|
|
1770
|
+
"rand_pcg",
|
|
1758
1771
|
"ring",
|
|
1759
1772
|
"rustc-hash",
|
|
1760
1773
|
"rustls",
|
|
@@ -1812,22 +1825,13 @@ dependencies = [
|
|
|
1812
1825
|
|
|
1813
1826
|
[[package]]
|
|
1814
1827
|
name = "rand"
|
|
1815
|
-
version = "0.
|
|
1816
|
-
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
1817
|
-
checksum = "44c5af06bb1b7d3216d91932aed5265164bf384dc89cd6ba05cf59a35f5f76ea"
|
|
1818
|
-
dependencies = [
|
|
1819
|
-
"rand_chacha",
|
|
1820
|
-
"rand_core 0.9.5",
|
|
1821
|
-
]
|
|
1822
|
-
|
|
1823
|
-
[[package]]
|
|
1824
|
-
name = "rand_chacha"
|
|
1825
|
-
version = "0.9.0"
|
|
1828
|
+
version = "0.10.3"
|
|
1826
1829
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
1827
|
-
checksum = "
|
|
1830
|
+
checksum = "65c9fb96cbc91e3478eaae79a69fcd3f1ae4ad052e471fe6732fff548984b4af"
|
|
1828
1831
|
dependencies = [
|
|
1829
|
-
"
|
|
1830
|
-
"
|
|
1832
|
+
"chacha20",
|
|
1833
|
+
"getrandom 0.4.2",
|
|
1834
|
+
"rand_core 0.10.1",
|
|
1831
1835
|
]
|
|
1832
1836
|
|
|
1833
1837
|
[[package]]
|
|
@@ -1838,11 +1842,17 @@ checksum = "ec0be4795e2f6a28069bec0b5ff3e2ac9bafc99e6a9a7dc3547996c5c816922c"
|
|
|
1838
1842
|
|
|
1839
1843
|
[[package]]
|
|
1840
1844
|
name = "rand_core"
|
|
1841
|
-
version = "0.
|
|
1845
|
+
version = "0.10.1"
|
|
1842
1846
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
1843
|
-
checksum = "
|
|
1847
|
+
checksum = "63b8176103e19a2643978565ca18b50549f6101881c443590420e4dc998a3c69"
|
|
1848
|
+
|
|
1849
|
+
[[package]]
|
|
1850
|
+
name = "rand_pcg"
|
|
1851
|
+
version = "0.10.2"
|
|
1852
|
+
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
1853
|
+
checksum = "caa0f4137e1c0a72f4c651489402276c8e8e1cf081f3b0ba156d2cbeef09e86a"
|
|
1844
1854
|
dependencies = [
|
|
1845
|
-
"
|
|
1855
|
+
"rand_core 0.10.1",
|
|
1846
1856
|
]
|
|
1847
1857
|
|
|
1848
1858
|
[[package]]
|
|
@@ -2070,9 +2080,9 @@ dependencies = [
|
|
|
2070
2080
|
|
|
2071
2081
|
[[package]]
|
|
2072
2082
|
name = "rpassword"
|
|
2073
|
-
version = "7.5.
|
|
2083
|
+
version = "7.5.4"
|
|
2074
2084
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
2075
|
-
checksum = "
|
|
2085
|
+
checksum = "2da316a15f47e3d053de9cb2c439650bd8fa4aaeb9365f2e5f27f492ff73c196"
|
|
2076
2086
|
dependencies = [
|
|
2077
2087
|
"libc",
|
|
2078
2088
|
"rtoolbox",
|
|
@@ -2114,14 +2124,14 @@ dependencies = [
|
|
|
2114
2124
|
"errno",
|
|
2115
2125
|
"libc",
|
|
2116
2126
|
"linux-raw-sys",
|
|
2117
|
-
"windows-sys 0.
|
|
2127
|
+
"windows-sys 0.59.0",
|
|
2118
2128
|
]
|
|
2119
2129
|
|
|
2120
2130
|
[[package]]
|
|
2121
2131
|
name = "rustls"
|
|
2122
|
-
version = "0.23.
|
|
2132
|
+
version = "0.23.45"
|
|
2123
2133
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
2124
|
-
checksum = "
|
|
2134
|
+
checksum = "0d41d731c7d2f962d1ccc364cec258de3c0e93b38c2fb3ba97ac74513048d634"
|
|
2125
2135
|
dependencies = [
|
|
2126
2136
|
"once_cell",
|
|
2127
2137
|
"ring",
|
|
@@ -2143,9 +2153,9 @@ dependencies = [
|
|
|
2143
2153
|
|
|
2144
2154
|
[[package]]
|
|
2145
2155
|
name = "rustls-webpki"
|
|
2146
|
-
version = "0.103.
|
|
2156
|
+
version = "0.103.15"
|
|
2147
2157
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
2148
|
-
checksum = "
|
|
2158
|
+
checksum = "f3c3cf1d8b1e7d4927e2d154c3fcb02979afb9939629c62cd9048d4f07b60ac2"
|
|
2149
2159
|
dependencies = [
|
|
2150
2160
|
"ring",
|
|
2151
2161
|
"rustls-pki-types",
|
|
@@ -2247,7 +2257,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
|
2247
2257
|
checksum = "a7507d819769d01a365ab707794a4084392c824f54a7a6a7862f8c3d0892b283"
|
|
2248
2258
|
dependencies = [
|
|
2249
2259
|
"cfg-if",
|
|
2250
|
-
"cpufeatures",
|
|
2260
|
+
"cpufeatures 0.2.17",
|
|
2251
2261
|
"digest",
|
|
2252
2262
|
]
|
|
2253
2263
|
|
|
@@ -2313,7 +2323,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
|
2313
2323
|
checksum = "3a766e1110788c36f4fa1c2b71b387a7815aa65f88ce0229841826633d93723e"
|
|
2314
2324
|
dependencies = [
|
|
2315
2325
|
"libc",
|
|
2316
|
-
"windows-sys 0.
|
|
2326
|
+
"windows-sys 0.60.2",
|
|
2317
2327
|
]
|
|
2318
2328
|
|
|
2319
2329
|
[[package]]
|
|
@@ -2413,7 +2423,7 @@ dependencies = [
|
|
|
2413
2423
|
"getrandom 0.4.2",
|
|
2414
2424
|
"once_cell",
|
|
2415
2425
|
"rustix",
|
|
2416
|
-
"windows-sys 0.
|
|
2426
|
+
"windows-sys 0.59.0",
|
|
2417
2427
|
]
|
|
2418
2428
|
|
|
2419
2429
|
[[package]]
|
|
@@ -2786,7 +2796,7 @@ checksum = "ebc1c04c71510c7f702b52b7c350734c9ff1295c464a03335b00bb84fc54f853"
|
|
|
2786
2796
|
|
|
2787
2797
|
[[package]]
|
|
2788
2798
|
name = "unifi-cli"
|
|
2789
|
-
version = "0.4.
|
|
2799
|
+
version = "0.4.4"
|
|
2790
2800
|
dependencies = [
|
|
2791
2801
|
"clap",
|
|
2792
2802
|
"clap_complete",
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
[package]
|
|
2
2
|
name = "unifi-cli"
|
|
3
|
-
version = "0.4.
|
|
3
|
+
version = "0.4.4"
|
|
4
4
|
edition = "2024"
|
|
5
5
|
rust-version = "1.90"
|
|
6
6
|
description = "CLI for UniFi Network controller"
|
|
@@ -31,7 +31,7 @@ owo-colors = "4"
|
|
|
31
31
|
dirs = "6"
|
|
32
32
|
ratatui = "0.30"
|
|
33
33
|
crossterm = "0.29"
|
|
34
|
-
rpassword = "7.4
|
|
34
|
+
rpassword = "7.5.4"
|
|
35
35
|
|
|
36
36
|
[target.'cfg(unix)'.dependencies]
|
|
37
37
|
libc = "0.2"
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: unifi-cli
|
|
3
|
-
Version: 0.4.
|
|
3
|
+
Version: 0.4.4
|
|
4
4
|
Classifier: Development Status :: 3 - Alpha
|
|
5
5
|
Classifier: Environment :: Console
|
|
6
6
|
Classifier: Intended Audience :: System Administrators
|
|
@@ -137,16 +137,16 @@ to trust the controller and saves `accept_invalid_certs = true` for you.
|
|
|
137
137
|
### Destructive commands
|
|
138
138
|
|
|
139
139
|
`clients block`, `clients unblock`, `clients kick`, `devices restart`,
|
|
140
|
-
`devices upgrade`, `ports cycle
|
|
141
|
-
act. On a terminal you get a yes/no question naming the target;
|
|
142
|
-
2 with `kind: confirmation_required` and sends nothing. When
|
|
143
|
-
terminal there is nobody to ask, so they refuse with the same
|
|
144
|
-
pass `--yes`, which skips the question everywhere.
|
|
140
|
+
`devices upgrade`, `ports cycle`, `protect rtsps delete` and `dns delete` all
|
|
141
|
+
ask before they act. On a terminal you get a yes/no question naming the target;
|
|
142
|
+
declining exits 2 with `kind: confirmation_required` and sends nothing. When
|
|
143
|
+
stdin is not a terminal there is nobody to ask, so they refuse with the same
|
|
144
|
+
error unless you pass `--yes`, which skips the question everywhere.
|
|
145
145
|
|
|
146
146
|
`unifi schema` marks exactly these commands `confirmation_required: true`, so a
|
|
147
147
|
caller can tell them apart from mutating commands that act immediately
|
|
148
|
-
(`devices locate`, `clients set-fixed-ip`, `protect rtsps create`
|
|
149
|
-
hardcoding the list.
|
|
148
|
+
(`devices locate`, `clients set-fixed-ip`, `protect rtsps create`, `dns create`,
|
|
149
|
+
`dns update`) without hardcoding the list.
|
|
150
150
|
|
|
151
151
|
## TUI dashboard
|
|
152
152
|
|
|
@@ -283,6 +283,31 @@ unifi port-forwards list
|
|
|
283
283
|
unifi port-forwards show plex
|
|
284
284
|
```
|
|
285
285
|
|
|
286
|
+
### DNS records
|
|
287
|
+
|
|
288
|
+
Static DNS records the controller answers locally. Network 10.1+ uses the
|
|
289
|
+
official DNS-policies Integration API; older controllers fall back to the v2
|
|
290
|
+
`static-dns` API. Domain-forward policies are not listed.
|
|
291
|
+
|
|
292
|
+
```bash
|
|
293
|
+
unifi dns list
|
|
294
|
+
unifi dns list --type A
|
|
295
|
+
unifi dns show nas.example.com
|
|
296
|
+
unifi dns create nas.example.com 192.0.2.10
|
|
297
|
+
unifi dns create printer.example.com 2001:db8::10 --type AAAA
|
|
298
|
+
unifi dns create media.example.com nas.example.com --type CNAME
|
|
299
|
+
unifi dns update nas.example.com --value 192.0.2.11
|
|
300
|
+
unifi dns delete nas.example.com
|
|
301
|
+
```
|
|
302
|
+
|
|
303
|
+
`dns delete` is destructive and follows the same confirmation rules as
|
|
304
|
+
`clients block`. Create and update act immediately.
|
|
305
|
+
|
|
306
|
+
The v2 API has no PUT, so `dns update` is refused on a controller that falls
|
|
307
|
+
back to it. Editing a record there means `dns delete` followed by
|
|
308
|
+
`dns create`, which keeps the delete explicit and confirmed instead of hiding
|
|
309
|
+
it inside an update that cannot undo it when the create fails.
|
|
310
|
+
|
|
286
311
|
### Events
|
|
287
312
|
|
|
288
313
|
```bash
|
|
@@ -116,16 +116,16 @@ to trust the controller and saves `accept_invalid_certs = true` for you.
|
|
|
116
116
|
### Destructive commands
|
|
117
117
|
|
|
118
118
|
`clients block`, `clients unblock`, `clients kick`, `devices restart`,
|
|
119
|
-
`devices upgrade`, `ports cycle
|
|
120
|
-
act. On a terminal you get a yes/no question naming the target;
|
|
121
|
-
2 with `kind: confirmation_required` and sends nothing. When
|
|
122
|
-
terminal there is nobody to ask, so they refuse with the same
|
|
123
|
-
pass `--yes`, which skips the question everywhere.
|
|
119
|
+
`devices upgrade`, `ports cycle`, `protect rtsps delete` and `dns delete` all
|
|
120
|
+
ask before they act. On a terminal you get a yes/no question naming the target;
|
|
121
|
+
declining exits 2 with `kind: confirmation_required` and sends nothing. When
|
|
122
|
+
stdin is not a terminal there is nobody to ask, so they refuse with the same
|
|
123
|
+
error unless you pass `--yes`, which skips the question everywhere.
|
|
124
124
|
|
|
125
125
|
`unifi schema` marks exactly these commands `confirmation_required: true`, so a
|
|
126
126
|
caller can tell them apart from mutating commands that act immediately
|
|
127
|
-
(`devices locate`, `clients set-fixed-ip`, `protect rtsps create`
|
|
128
|
-
hardcoding the list.
|
|
127
|
+
(`devices locate`, `clients set-fixed-ip`, `protect rtsps create`, `dns create`,
|
|
128
|
+
`dns update`) without hardcoding the list.
|
|
129
129
|
|
|
130
130
|
## TUI dashboard
|
|
131
131
|
|
|
@@ -262,6 +262,31 @@ unifi port-forwards list
|
|
|
262
262
|
unifi port-forwards show plex
|
|
263
263
|
```
|
|
264
264
|
|
|
265
|
+
### DNS records
|
|
266
|
+
|
|
267
|
+
Static DNS records the controller answers locally. Network 10.1+ uses the
|
|
268
|
+
official DNS-policies Integration API; older controllers fall back to the v2
|
|
269
|
+
`static-dns` API. Domain-forward policies are not listed.
|
|
270
|
+
|
|
271
|
+
```bash
|
|
272
|
+
unifi dns list
|
|
273
|
+
unifi dns list --type A
|
|
274
|
+
unifi dns show nas.example.com
|
|
275
|
+
unifi dns create nas.example.com 192.0.2.10
|
|
276
|
+
unifi dns create printer.example.com 2001:db8::10 --type AAAA
|
|
277
|
+
unifi dns create media.example.com nas.example.com --type CNAME
|
|
278
|
+
unifi dns update nas.example.com --value 192.0.2.11
|
|
279
|
+
unifi dns delete nas.example.com
|
|
280
|
+
```
|
|
281
|
+
|
|
282
|
+
`dns delete` is destructive and follows the same confirmation rules as
|
|
283
|
+
`clients block`. Create and update act immediately.
|
|
284
|
+
|
|
285
|
+
The v2 API has no PUT, so `dns update` is refused on a controller that falls
|
|
286
|
+
back to it. Editing a record there means `dns delete` followed by
|
|
287
|
+
`dns create`, which keeps the delete explicit and confirmed instead of hiding
|
|
288
|
+
it inside an update that cannot undo it when the create fails.
|
|
289
|
+
|
|
265
290
|
### Events
|
|
266
291
|
|
|
267
292
|
```bash
|