• Home
  • Features
  • Pricing
  • Docs
  • Announcements
  • Sign In

rm-hull / dot-block / 20506777792
43%

Build:
DEFAULT BRANCH: main
Ran 25 Dec 2025 02:48PM UTC
Jobs 1
Files 14
Run time 1min
Badge
Embed ▾
README BADGES
x

If you need to use a raster PNG badge, change the '.svg' to '.png' in the link

Markdown

Textile

RDoc

HTML

Rst

25 Dec 2025 02:48PM UTC coverage: 53.901% (+3.7%) from 50.249%
20506777792

push

github

web-flow
feat: add apple `.mobileconfig` generation endpoint (#49)

* feat: add apple .mobileconfig generation endpoint

Provides a new endpoint at `/.mobileconfig` that serves an Apple
configuration profile for system-wide Encrypted DNS (DoT). This
simplifies the setup process for iOS and macOS devices.

*   Added `howett.net/plist` dependency for XML plist encoding.
*   Defined Go structs for `Profile`, `DNSSpec`, and `DNSBlock` to
    match Apple's configuration specifications.
*   Implemented a handler that generates the profile with hardcoded
    metadata and a specific `PayloadUUID`.
*   Registered the route in the `gin` router.

```mermaid
sequenceDiagram
    participant Client as Apple Device
    participant App as dot-block Server
    participant MC as mobileconfig Handler

    Client->>App: GET /.mobileconfig
    App->>MC: Generate Profile
    MC->>MC: Encode Profile to Plist XML
    MC-->>App: Binary Plist Data
    App-->>Client: 200 OK (application/x-apple-aspen-config)
    Note over Client: User prompted to install DNS profile
```

* Unique payload-uuids

* Bump version

* feat: enhance mobileconfig for system-wide DNS

Updated the `mobileconfig` implementation to support system-wide DNS
deployment and on-demand connection rules:

- Added `PayloadScope`, `ServerName`, and `OnDemandRules` to models.
- Configured the profile to use **System** scope.
- Updated `DNSSettings` to use explicit IP addresses and `ServerName`.
- Renamed the output file to `dot-block.mobileconfig`.
- Refined payload identifiers for better consistency.

```mermaid
classDiagram
    class Profile {
        +String PayloadScope
        +[]DNSSpec PayloadContent
    }
    class DNSSpec {
        +DNSBlock DNSSettings
        +[]OnDemandRule OnDemandRules
    }
    class DNSBlock {
        +String ServerName
        +[]String ServerAddresses
    }
    Profile *-- DNSSpec
    DNSSpec *-- DNSBlock
    DNSSpec *-- OnDemandRule
```

* feat: resolve mobileconfig IPs dynamically

Update... (continued)

52 of 70 new or added lines in 2 files covered. (74.29%)

456 of 846 relevant lines covered (53.9%)

0.57 hits per line

New Missed Lines in Diff

Lines Coverage ∆ File
6
0.0
0.0% internal/app.go
12
81.25
internal/mobileconfig/routes.go
Jobs
ID Job ID Ran Files Coverage
1 20506777792.1 25 Dec 2025 02:48PM UTC 14
53.9
GitHub Action Run
Source Files on build 20506777792
  • Tree
  • List 14
  • Changed 2
  • Source Changed 0
  • Coverage Changed 2
Coverage ∆ File Lines Relevant Covered Missed Hits/Line
  • Back to Repo
  • 3c63b559 on github
  • Prev Build on main (#20494430877)
  • Next Build on main (#20512546374)
  • Delete
STATUS · Troubleshooting · Open an Issue · Sales · Support · CAREERS · ENTERPRISE · START FREE · SCHEDULE DEMO
ANNOUNCEMENTS · TWITTER · TOS & SLA · Supported CI Services · What's a CI service? · Automated Testing

© 2026 Coveralls, Inc