diff --git a/README.md b/README.md index 11c67fb7..8c820fa6 100644 --- a/README.md +++ b/README.md @@ -26,7 +26,7 @@ - **Getting Started** - [🌈 Features](#features-) - - [⚑Demo](#demo-) + - [⚑ Demo](#demo-) - [πŸš€ Getting Started](#getting-started-) - [πŸ”§ Configuring](#configuring-) - **Feature Overview** diff --git a/docs/widgets.md b/docs/widgets.md index 1749ec85..de637eb8 100644 --- a/docs/widgets.md +++ b/docs/widgets.md @@ -47,9 +47,12 @@ Dashy has support for displaying dynamic content in the form of widgets. There a - [CPU History](#cpu-history-netdata) - [Memory History](#memory-history-netdata) - [System Load History](#load-history-netdata) - - [Pi Hole Stats](#pi-hole-stats) - - [Pi Hole Queries](#pi-hole-queries) - - [Pi Hole Recent Traffic](#pi-hole-recent-traffic) + - [Pi-Hole Stats](#pi-hole-stats) + - [Pi-Hole Stats v6](#pi-hole-stats-v6) + - [Pi-Hole Queries](#pi-hole-queries) + - [Pi-Hole Queries v6](#pi-hole-queries-v6) + - [Pi-Hole Recent Traffic](#pi-hole-recent-traffic) + - [Pi-Hole Recent Traffic v6](#pi-hole-recent-traffic-v6) - [Stat Ping Statuses](#stat-ping-statuses) - [Synology Download Station](#synology-download-station) - [AdGuard Home Block Stats](#adguard-home-block-stats) @@ -1722,7 +1725,7 @@ Pull recent load usage in 1, 5 and 15 minute intervals, from NetData. --- -### Pi Hole Stats +### Pi-Hole Stats Displays the number of queries blocked by [Pi-Hole](https://pi-hole.net/). @@ -1763,12 +1766,58 @@ Displays the number of queries blocked by [Pi-Hole](https://pi-hole.net/). - **CORS**: 🟒 Enabled - **Auth**: πŸ”΄ Required - **Price**: 🟒 Free -- **Host**: Self-Hosted (see [GitHub - Pi-hole](https://github.com/pi-hole/pi-hole)) +- **Host**: Self-Hosted (see [GitHub - Pi-Hole](https://github.com/pi-hole/pi-hole)) - **Privacy**: _See [Pi-Hole Privacy Guide](https://pi-hole.net/privacy/)_ --- -### Pi Hole Queries +### Pi-Hole Stats v6 + +Displays the number of queries blocked by [Pi-Hole](https://pi-hole.net/). Use this version of the widget if you have a v6+ Pi-Hole instance. + +

+ +#### Options + +**Field** | **Type** | **Required** | **Description** +--- | --- | --- | --- +**`hostname`** | `string` | Required | The URL to your Pi-Hole instance +**`hideStatus`** / **`hideChart`** / **`hideInfo`** | `boolean` | _Optional_ | Optionally hide any of the three parts of the widget +**`apiKey`** | `string` | Required | Your Pi-Hole web password or application password. It **IS** your Pi-Hole admin interface password **UNLESS** you have 2FA turned on (in contrast to the old widget). If you have 2FA turned on you will need to create an application password. Refer to Pi-Hole documentation for how to create an application password. + +#### Example + +```yaml +- type: pi-hole-stats-v6 + options: + hostname: http://192.168.130.1 + apiKey: xxxxxxxxxxxxxxxxxxxxxxx +``` + +> [!TIP] +> In order to avoid leaking secret data, both `hostname` and `apiKey` can leverage environment variables. Simply pass the name of the variable, which MUST start with `VUE_APP_`. + +```yaml +- type: pi-hole-stats-v6 + options: + hostname: VUE_APP_pihole_ip + apiKey: VUE_APP_pihole_key +``` + +> [!IMPORTANT] +> You will need to restart the server (or the docker image) if adding/editing an env var for this to be refreshed. + +#### Info + +- **CORS**: 🟒 Enabled +- **Auth**: πŸ”΄ Required +- **Price**: 🟒 Free +- **Host**: Self-Hosted (see [GitHub - Pi-Hole](https://github.com/pi-hole/pi-hole)) +- **Privacy**: _See [Pi-Hole Privacy Guide](https://pi-hole.net/privacy/)_ + +--- + +### Pi-Hole Queries Shows top queries that were blocked and allowed by [Pi-Hole](https://pi-hole.net/). @@ -1801,7 +1850,40 @@ Shows top queries that were blocked and allowed by [Pi-Hole](https://pi-hole.net --- -### Pi Hole Recent Traffic +### Pi-Hole Queries v6 + +Shows top queries that were blocked and allowed by [Pi-Hole](https://pi-hole.net/). Use this version of the widget if you have a v6+ Pi-Hole instance. + +

+ +#### Options + +**Field** | **Type** | **Required** | **Description** +--- | --- | --- | --- +**`hostname`** | `string` | Required | The URL to your Pi-Hole instance +**`apiKey`** | `string` | Required | Your Pi-Hole web password or application password. It **IS** your Pi-Hole admin interface password **UNLESS** you have 2FA turned on (in contrast to the old widget). If you have 2FA turned on you will need to create an application password. Refer to Pi-Hole documentation for how to create an application password. +**`count`** | `number` | _Optional_ | The number of queries to display. Defaults to `10` + +#### Example + +```yaml +- type: pi-hole-top-queries-v6 + options: + hostname: https://pi-hole.local + apiKey: xxxxxxxxxxxxxxxxxxxxxxx +``` + +#### Info + +- **CORS**: 🟒 Enabled +- **Auth**: πŸ”΄ Required +- **Price**: 🟒 Free +- **Host**: Self-Hosted (see [GitHub - Pi-hole](https://github.com/pi-hole/pi-hole)) +- **Privacy**: _See [Pi-Hole Privacy Guide](https://pi-hole.net/privacy/)_ + +--- + +### Pi-Hole Recent Traffic Shows number of recent traffic, using allowed and blocked queries from [Pi-Hole](https://pi-hole.net/) @@ -1833,6 +1915,38 @@ Shows number of recent traffic, using allowed and blocked queries from [Pi-Hole] --- +### Pi-Hole Recent Traffic v6 + +Shows number of recent traffic, using allowed and blocked queries from [Pi-Hole](https://pi-hole.net/). Use this version of the widget if you have a v6+ Pi-Hole instance. + +

+ +#### Options + +**Field** | **Type** | **Required** | **Description** +--- | --- | --- | --- +**`hostname`** | `string` | Required | The URL to your Pi-Hole instance +**`apiKey`** | `string` | Required | Your Pi-Hole web password or application password. It **IS** your Pi-Hole admin interface password **UNLESS** you have 2FA turned on (in contrast to the old widget). If you have 2FA turned on you will need to create an application password. Refer to Pi-Hole documentation for how to create an application password. + +#### Example + +```yaml +- type: pi-hole-traffic-v6 + options: + hostname: https://pi-hole.local + apiKey: xxxxxxxxxxxxxxxxxxxxxxx +``` + +#### Info + +- **CORS**: 🟒 Enabled +- **Auth**: πŸ”΄ Required +- **Price**: 🟒 Free +- **Host**: Self-Hosted (see [GitHub - Pi-hole](https://github.com/pi-hole/pi-hole)) +- **Privacy**: _See [Pi-Hole Privacy Guide](https://pi-hole.net/privacy/)_ + +--- + ### Stat Ping Statuses Displays the current and recent uptime of your running services, via a self-hosted instance of [StatPing](https://github.com/statping/statping) diff --git a/src/components/Widgets/PiHoleStats.vue b/src/components/Widgets/PiHoleStats.vue index fb5aa56d..ef453b46 100644 --- a/src/components/Widgets/PiHoleStats.vue +++ b/src/components/Widgets/PiHoleStats.vue @@ -38,7 +38,7 @@ export default { hostname() { const usersChoice = this.parseAsEnvVar(this.options.hostname); if (!usersChoice) this.error('You must specify the hostname for your Pi-Hole server'); - return usersChoice || 'http://pi.hole'; + return usersChoice; }, apiKey() { const usersChoice = this.parseAsEnvVar(this.options.apiKey); @@ -53,9 +53,7 @@ export default { hideInfo() { return this.options.hideInfo; }, }, filters: { - capitalize(str) { - return capitalize(str); - }, + capitalize, }, methods: { /* Make GET request to local pi-hole instance */ diff --git a/src/components/Widgets/PiHoleStatsV6.vue b/src/components/Widgets/PiHoleStatsV6.vue new file mode 100644 index 00000000..7cb3d5aa --- /dev/null +++ b/src/components/Widgets/PiHoleStatsV6.vue @@ -0,0 +1,252 @@ + + + + + diff --git a/src/components/Widgets/PiHoleTopQueries.vue b/src/components/Widgets/PiHoleTopQueries.vue index b72b2426..39a780a1 100644 --- a/src/components/Widgets/PiHoleTopQueries.vue +++ b/src/components/Widgets/PiHoleTopQueries.vue @@ -103,5 +103,4 @@ export default { } } } - diff --git a/src/components/Widgets/PiHoleTopQueriesV6.vue b/src/components/Widgets/PiHoleTopQueriesV6.vue new file mode 100644 index 00000000..2da16342 --- /dev/null +++ b/src/components/Widgets/PiHoleTopQueriesV6.vue @@ -0,0 +1,159 @@ + + + + + diff --git a/src/components/Widgets/PiHoleTrafficV6.vue b/src/components/Widgets/PiHoleTrafficV6.vue new file mode 100644 index 00000000..5a59eb04 --- /dev/null +++ b/src/components/Widgets/PiHoleTrafficV6.vue @@ -0,0 +1,130 @@ + + + diff --git a/src/components/Widgets/UptimeKuma.vue b/src/components/Widgets/UptimeKuma.vue index a6995cc6..e7fb312f 100644 --- a/src/components/Widgets/UptimeKuma.vue +++ b/src/components/Widgets/UptimeKuma.vue @@ -60,10 +60,10 @@ export default { }, /* Create authorisation header for the instance from the apiKey */ authHeaders() { - if (!this.options.apiKey) { + if (!this.apiKey) { return {}; } - const encoded = window.btoa(`:${this.options.apiKey}`); + const encoded = window.btoa(`:${this.apiKey}`); return { Authorization: `Basic ${encoded}` }; }, }, diff --git a/src/components/Widgets/WidgetBase.vue b/src/components/Widgets/WidgetBase.vue index f67c72aa..a1efa1cd 100644 --- a/src/components/Widgets/WidgetBase.vue +++ b/src/components/Widgets/WidgetBase.vue @@ -103,8 +103,11 @@ const COMPAT = { 'nextcloud-user': 'NextcloudUser', 'nextcloud-user-status': 'NextcloudUserStatus', 'pi-hole-stats': 'PiHoleStats', + 'pi-hole-stats-v6': 'PiHoleStatsV6', 'pi-hole-top-queries': 'PiHoleTopQueries', + 'pi-hole-top-queries-v6': 'PiHoleTopQueriesV6', 'pi-hole-traffic': 'PiHoleTraffic', + 'pi-hole-traffic-v6': 'PiHoleTrafficV6', 'proxmox-lists': 'Proxmox', 'public-holidays': 'PublicHolidays', 'public-ip': 'PublicIp',