mirror of
https://github.com/NewFuture/DDNS.git
synced 2026-10-20 18:56:33 +00:00
* feat(rust): add parallel DDNS MVP Add a synchronous Rust client with compatible configuration, IP discovery, caching, and the first four providers. Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com> * fix(rust): address review compatibility gaps Handle DNSPod failures safely, accept Python-compatible log thresholds, document Rust regex limits, and tolerate non-Unicode environment entries. Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com> * fix(rust): preserve generated provider options Serialize endpoint overrides and --extra.* values so generated configuration files reproduce accepted CLI settings. Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com> * fix(rust): align provider and config behavior Keep provider lookup parameters scoped, continue DNSPod zone discovery safely, and match Python configuration and regex semantics. Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com> * fix(rust): harden credentials and CI scoping Redact provider credentials, align remaining config/cache behavior, and avoid running language-specific builds for unrelated changes while preserving required checks. Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com> * fix(rust): preserve authenticated URL compatibility Translate embedded URL credentials to Basic auth, align generated TTL defaults, and run Rust checks for the abc PR target. Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com> * fix(rust): isolate caches and aggregate safe errors Keep Python cache files untouched, redact retained failures, and continue multi-provider runs after log setup errors. Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com> * feat(rust): complete providers and distribution Port the remaining DNS providers and aliases, add protected native/container release workflows, and provide a checksum-aware Rust installer. Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com> * docs(agents): register Rust development guide Keep the generated project structure contract aligned with the new bilingual Rust documentation. Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com> * fix(rust): address review feedback Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com> * refactor(rust): simplify core design Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com> * refactor(rust): use typed borrowed core Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com> * refactor(rust): streamline transport state Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com> * test(rust): share provider fixtures Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com> * test(rust): expand end-to-end coverage Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com> * fix(rust): simplify provider modes and lookup handling Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com> * chore(v5): prepare isolated Rust development line Keep Rust changes on the v5 integration line and prepare artifacts without publishing or changing the stable Python entrypoint. Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com> * fix(rust): redact credential-bearing URL paths Hide non-root URL paths in diagnostics and omit URI text from transport errors while preserving actual request URLs. Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com> * fix(rust): fully mask credential values Replace credential prefixes and suffixes with a constant opaque marker while retaining raw and percent-encoded masking. Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com> * fix(rust): correct provider signing and zone lookup errors Use RFC3986 canonical queries for Huawei signing. Distinguish documented NameSilo and ClouDNS zone misses from authentication, HTTP, and provider failures. Add offline regressions and matching V5 documentation. Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com> * fix(rust): preserve address spelling for regex rules Match regex rules against the extracted address text without IPv6 canonicalization, while retaining strict IpAddr validation and parsed return values. Cover original spelling, invalid candidates, family filtering, and matching boundaries. Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com> * fix(rust): reject unusable local IPs and malformed record lists Filter loopback and unspecified addresses before local indexing. Reject malformed ClouDNS, Huawei, and NameSilo record lookups without creating duplicates while retaining valid empty responses. Isolate installer test globals and cleanup traps in subshells. Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com> * fix(rust): keep DNS.COM signatures out of diagnostics Use the sensitive request path for signed DNS.COM bodies, omit raw HTTP and JSON failure responses, and redact signatures echoed in API messages. Preserve request signing and ordinary HTTP diagnostics with offline regressions. Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com> * fix(rust): mask form credentials and validate upgrades before replacement Reuse the form encoder for credential redaction and smoke-test temporary installer binaries before replacing a working installation. Cover rejected upgrades and existing trailing-period IP parsing without changing address extraction. Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com> * fix(rust): preserve provider updates and V5 preparation contracts Send Huawei canonical query bytes unchanged, accept nonempty single-label domains at configuration ingress, and honor AliDNS/ESA extras on unchanged addresses. Require V5 prereleases in artifact preparation with offline regression coverage. Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com> * fix(rust): accept separated negative CLI integers Recognize negative integer tokens as required scalar values without consuming option names. Preserve per-option range validation and cover log-level aliases, inline parity, and real CLI execution. Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com> * fix(ci): use architecture names for Rust QEMU setup Install only the arm64 emulator on the amd64 OCI preparation runner while preserving linux/amd64,linux/arm64 for Buildx. Strengthen offline workflow contracts to distinguish the two inputs. Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com> --------- Co-authored-by: NewFuture <6290356+NewFuture@users.noreply.github.com> Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>
60 lines
1.4 KiB
YAML
60 lines
1.4 KiB
YAML
name: Build Documentation
|
|
|
|
on:
|
|
push:
|
|
branches: [ master, main, v5 ]
|
|
paths:
|
|
- 'docs/**'
|
|
- 'README.md'
|
|
- 'README.en.md'
|
|
- 'ddns/config/field-model.json'
|
|
- 'schema/**'
|
|
- 'tests/config/**'
|
|
- '.github/workflows/build-docs.yml'
|
|
pull_request:
|
|
branches: [ master, main, v5 ]
|
|
paths:
|
|
- 'docs/**'
|
|
- 'README.md'
|
|
- 'README.en.md'
|
|
- 'ddns/config/field-model.json'
|
|
- '.github/workflows/build-docs.yml'
|
|
workflow_dispatch:
|
|
|
|
permissions:
|
|
pages: write
|
|
id-token: write
|
|
|
|
jobs:
|
|
build:
|
|
runs-on: ubuntu-latest
|
|
|
|
steps:
|
|
- name: Checkout repository
|
|
uses: actions/checkout@v7
|
|
|
|
- name: Setup Node.js
|
|
uses: actions/setup-node@v7
|
|
with:
|
|
node-version: '24'
|
|
cache: 'npm'
|
|
cache-dependency-path: 'docs/package.json'
|
|
|
|
- name: Install dependencies
|
|
working-directory: docs
|
|
run: npm install
|
|
|
|
- name: Build documentation
|
|
working-directory: docs
|
|
run: npm run build
|
|
|
|
- name: Upload artifact
|
|
uses: actions/upload-pages-artifact@v5
|
|
with:
|
|
path: docs/.vitepress/dist/
|
|
|
|
- name: Deploy to GitHub Pages
|
|
if: (github.event_name == 'push' || github.event_name == 'workflow_dispatch') && (github.ref == 'refs/heads/master' || github.ref == 'refs/heads/main')
|
|
id: deployment
|
|
uses: actions/deploy-pages@v5
|