@@ -1,19 +0,0 @@
|
|||||||
root = true
|
|
||||||
|
|
||||||
[*]
|
|
||||||
charset = utf-8
|
|
||||||
end_of_line = lf
|
|
||||||
indent_style = space
|
|
||||||
insert_final_newline = true
|
|
||||||
trim_trailing_whitespace = true
|
|
||||||
ident_size = 4
|
|
||||||
|
|
||||||
[*.md]
|
|
||||||
ident_size = 2
|
|
||||||
trim_trailing_whitespace = false
|
|
||||||
|
|
||||||
[*.json]
|
|
||||||
ident_size = 2
|
|
||||||
|
|
||||||
[{.gitignore,.gitkeep,.editorconfig}]
|
|
||||||
ident_size = 2
|
|
||||||
Vendored
-4
@@ -1,4 +0,0 @@
|
|||||||
# Require maintainer's :+1: for changes to the .github/ repo-config files
|
|
||||||
# mainly due to https://github.com/probot/settings privilege escalation
|
|
||||||
.github/* @frenck
|
|
||||||
.gitlab-ci.yml @frenck
|
|
||||||
Vendored
-4
@@ -1,4 +0,0 @@
|
|||||||
---
|
|
||||||
github: frenck
|
|
||||||
patreon: frenck
|
|
||||||
custom: https://frenck.dev/donate/
|
|
||||||
Vendored
-20
@@ -1,20 +0,0 @@
|
|||||||
# Problem/Motivation
|
|
||||||
|
|
||||||
> (Why the issue was filed)
|
|
||||||
|
|
||||||
## Expected behavior
|
|
||||||
|
|
||||||
> (What you expected to happen)
|
|
||||||
|
|
||||||
## Actual behavior
|
|
||||||
|
|
||||||
> (What actually happened)
|
|
||||||
|
|
||||||
## Steps to reproduce
|
|
||||||
|
|
||||||
> (How can someone else make/see it happen)
|
|
||||||
|
|
||||||
## Proposed changes
|
|
||||||
|
|
||||||
> (If you have a proposed change, workaround or fix,
|
|
||||||
> describe the rationale behind it)
|
|
||||||
-9
@@ -1,9 +0,0 @@
|
|||||||
# Proposed Changes
|
|
||||||
|
|
||||||
> (Describe the changes and rationale behind them)
|
|
||||||
|
|
||||||
## Related Issues
|
|
||||||
|
|
||||||
> ([Github link][autolink-references] to related issues or pull requests)
|
|
||||||
|
|
||||||
[autolink-references]: https://help.github.com/articles/autolinked-references-and-urls/
|
|
||||||
Vendored
-2
@@ -1,2 +0,0 @@
|
|||||||
---
|
|
||||||
"Type: Documentation": ["*.md", "*.j2"]
|
|
||||||
Vendored
-50
@@ -1,50 +0,0 @@
|
|||||||
---
|
|
||||||
# Configuration for request-info - https://github.com/behaviorbot/request-info
|
|
||||||
|
|
||||||
# *OPTIONAL* Comment to reply with
|
|
||||||
# Can be either a string :
|
|
||||||
requestInfoReplyComment:
|
|
||||||
- "We would appreciate it if you could provide us with more info about this issue/pr!"
|
|
||||||
- "Hmmm... That issue/PR is kinda low on text. Could you please provide some more content?"
|
|
||||||
|
|
||||||
# *OPTIONAL* default titles to check against for lack of descriptiveness
|
|
||||||
# MUST BE ALL LOWERCASE
|
|
||||||
requestInfoDefaultTitles: []
|
|
||||||
|
|
||||||
# *OPTIONAL* Label to be added to Issues and Pull Requests with insufficient information given
|
|
||||||
requestInfoLabelToAdd: "Incomplete"
|
|
||||||
|
|
||||||
# *OPTIONAL* Require Pull Requests to contain more information than what is provided in the PR template
|
|
||||||
# Will fail if the pull request's body is equal to the provided template
|
|
||||||
checkPullRequestTemplate: true
|
|
||||||
|
|
||||||
# *OPTIONAL* Only warn about insufficient information on these events type
|
|
||||||
# Keys must be lowercase. Valid values are 'issue' and 'pullRequest'
|
|
||||||
requestInfoOn:
|
|
||||||
pullRequest: true
|
|
||||||
issue: true
|
|
||||||
|
|
||||||
# *OPTIONAL* Add a list of people whose Issues/PRs will not be commented on
|
|
||||||
# keys must be GitHub usernames
|
|
||||||
requestInfoUserstoExclude: []
|
|
||||||
|
|
||||||
# Configuration for new-issue-welcome - https://github.com/behaviorbot/new-issue-welcome
|
|
||||||
|
|
||||||
# Comment to be posted to on first time issues
|
|
||||||
newIssueWelcomeComment: >
|
|
||||||
:wave: Thanks for opening your first issue here!
|
|
||||||
If you're reporting a :bug: bug, please make sure you include steps to reproduce it.
|
|
||||||
Also, logs, error messages and information about your hardware might be useful.
|
|
||||||
|
|
||||||
# Configuration for new-pr-welcome - https://github.com/behaviorbot/new-pr-welcome
|
|
||||||
|
|
||||||
# Comment to be posted to on PRs from first time contributors in your repository
|
|
||||||
newPRWelcomeComment: >
|
|
||||||
:sparkling_heart: Thanks for opening this pull request! :sparkling_heart:
|
|
||||||
If your PR gets accepted and merged in, we will invite you to the project :tada:
|
|
||||||
|
|
||||||
# Configuration for first-pr-merge - https://github.com/behaviorbot/first-pr-merge
|
|
||||||
|
|
||||||
# Comment to be posted to on pull requests merged by a first time user
|
|
||||||
firstPRMergeComment: >
|
|
||||||
Congrats on merging your first pull request! :tada::tada::tada:
|
|
||||||
-10
@@ -1,10 +0,0 @@
|
|||||||
---
|
|
||||||
# If true, this will add new contributors as outside collaborators
|
|
||||||
# to the repo their PR was merged in. Team name is ignored if this
|
|
||||||
# flag is set to true.
|
|
||||||
isOutside: false
|
|
||||||
|
|
||||||
# Specify team name to add new contributors to a specific team
|
|
||||||
# within your organization.
|
|
||||||
# Use team name or team-name-slug
|
|
||||||
team: Contributors
|
|
||||||
Vendored
-20
@@ -1,20 +0,0 @@
|
|||||||
---
|
|
||||||
# Configuration for lock-threads - https://github.com/dessant/lock-threads
|
|
||||||
# Number of days of inactivity before a closed issue or pull request is locked
|
|
||||||
daysUntilLock: 30
|
|
||||||
|
|
||||||
# Comment to post before locking. Set to `false` to disable
|
|
||||||
lockComment: >
|
|
||||||
This thread has been automatically locked because it has not had recent
|
|
||||||
activity. Please open a new issue for related bugs and link to relevant
|
|
||||||
comments in this thread.
|
|
||||||
|
|
||||||
# Issues or pull requests with these labels will not be locked
|
|
||||||
# exemptLabels:
|
|
||||||
# - no-locking
|
|
||||||
|
|
||||||
# Limit to only `issues` or `pulls`
|
|
||||||
# only: issues
|
|
||||||
|
|
||||||
# Add a label when locking. Set to `false` to disable
|
|
||||||
lockLabel: false
|
|
||||||
Vendored
-20
@@ -1,20 +0,0 @@
|
|||||||
---
|
|
||||||
# Delete the command comment when it contains no other content
|
|
||||||
deleteCommand: true
|
|
||||||
|
|
||||||
# Close the source issue after moving
|
|
||||||
closeSourceIssue: true
|
|
||||||
|
|
||||||
# Lock the source issue after moving
|
|
||||||
lockSourceIssue: true
|
|
||||||
|
|
||||||
# Mention issue and comment authors
|
|
||||||
mentionAuthors: true
|
|
||||||
|
|
||||||
# Preserve mentions in the issue content
|
|
||||||
keepContentMentions: false
|
|
||||||
|
|
||||||
# Set custom aliases for targets
|
|
||||||
# aliases:
|
|
||||||
# r: repo
|
|
||||||
# or: owner/repo
|
|
||||||
Vendored
-13
@@ -1,13 +0,0 @@
|
|||||||
---
|
|
||||||
# Configuration for probot-no-response - https://github.com/probot/no-response
|
|
||||||
# Number of days of inactivity before an Issue is closed for lack of response
|
|
||||||
daysUntilClose: 14
|
|
||||||
# Label requiring a response
|
|
||||||
responseRequiredLabel: "Status: Awaiting response"
|
|
||||||
# Comment to post when closing an Issue for lack of response. Set to `false` to disable
|
|
||||||
closeComment: >
|
|
||||||
This issue has been automatically closed because there has been no response
|
|
||||||
to our request for more information from the original author. With only the
|
|
||||||
information that is currently in the issue, we don't have enough information
|
|
||||||
to take action. Please reach out if you have or find the answers we need so
|
|
||||||
that we can investigate further.
|
|
||||||
-14
@@ -1,14 +0,0 @@
|
|||||||
---
|
|
||||||
# Label name and color to set, when potential duplicates are detected
|
|
||||||
issueLabel: "Potential duplicate"
|
|
||||||
labelColor: e6e6e6
|
|
||||||
|
|
||||||
# If similarity is higher than this threshold, issue will be marked as duplicate
|
|
||||||
threshold: 0.70
|
|
||||||
|
|
||||||
# Comment to post when potential duplicates are detected
|
|
||||||
referenceComment: >
|
|
||||||
Potential duplicates found:
|
|
||||||
{{#issues}}
|
|
||||||
- [#{{ number }}] {{ title }} ({{ accuracy }}%)
|
|
||||||
{{/issues}}
|
|
||||||
Vendored
-150
@@ -1,150 +0,0 @@
|
|||||||
---
|
|
||||||
repository:
|
|
||||||
description: "Pi-hole - Home Assistant Community Add-ons"
|
|
||||||
homepage: https://addons.community
|
|
||||||
topics: pihole, pi-hole, adblock, adblocker, addon, addons, home-assistant, homeassistant
|
|
||||||
private: false
|
|
||||||
has_issues: true
|
|
||||||
has_projects: false
|
|
||||||
has_wiki: false
|
|
||||||
has_downloads: false
|
|
||||||
default_branch: master
|
|
||||||
allow_squash_merge: true
|
|
||||||
allow_merge_commit: false
|
|
||||||
allow_rebase_merge: true
|
|
||||||
labels:
|
|
||||||
# Priority labels
|
|
||||||
- name: "Priority: Critical"
|
|
||||||
color: ee0701
|
|
||||||
description: "This should be dealt with ASAP. Not fixing this issue would be a serious error."
|
|
||||||
- name: "Priority: High"
|
|
||||||
color: b60205
|
|
||||||
description: "After critical issues are fixed, these should be dealt with before any further issues."
|
|
||||||
- name: "Priority: Medium"
|
|
||||||
color: 0e8a16
|
|
||||||
description: "This issue may be useful, and needs some attention."
|
|
||||||
- name: "Priority: Low"
|
|
||||||
color: e4ea8a
|
|
||||||
description: "Nice addition, maybe... someday..."
|
|
||||||
|
|
||||||
# Type labels
|
|
||||||
- name: "Type: Bug"
|
|
||||||
color: ee0701
|
|
||||||
description: "Inconsistencies or issues which will cause a problem for users or implementors."
|
|
||||||
- name: "Type: Documentation"
|
|
||||||
color: 0052cc
|
|
||||||
description: "Solely about the documentation of the project."
|
|
||||||
- name: "Type: Enhancement"
|
|
||||||
color: 1d76db
|
|
||||||
description: "Enhancement of the code, not introducing new features."
|
|
||||||
- name: "Type: Feature"
|
|
||||||
color: 0e8a16
|
|
||||||
description: "New features or options."
|
|
||||||
- name: "Type: Support"
|
|
||||||
color: 5319e7
|
|
||||||
description: "Marks an issue as a support ticket."
|
|
||||||
- name: "Type: Discussion"
|
|
||||||
color: d4c5f9
|
|
||||||
description: "Marks an issue as a generic discussion ticket."
|
|
||||||
- name: "Type: Maintenance"
|
|
||||||
color: 2af79e
|
|
||||||
description: "Generic maintenance tasks, e.g., package updates."
|
|
||||||
|
|
||||||
# Additional markers
|
|
||||||
- name: "Security"
|
|
||||||
color: ee0701
|
|
||||||
description: "Marks a security issue that needs to be resolved asap."
|
|
||||||
- name: "Idea"
|
|
||||||
color: fef2c0
|
|
||||||
description: "Marks an idea, which might be excepted and implemented."
|
|
||||||
- name: "Incomplete"
|
|
||||||
color: fef2c0
|
|
||||||
description: "Marks a PR or issue that is missing information."
|
|
||||||
- name: "Pull request"
|
|
||||||
color: fbca04
|
|
||||||
description: "There is an PR opened for this issue."
|
|
||||||
- name: "Accepted"
|
|
||||||
color: c2e0c6
|
|
||||||
description: "This issue or PR has been accepted."
|
|
||||||
- name: "Declined"
|
|
||||||
color: f9d0c4
|
|
||||||
description: "This issue or PR has been declined."
|
|
||||||
- name: "Potential duplicate"
|
|
||||||
color: e6e6e6
|
|
||||||
description: "This issue has been automatically marked as a potential duplicate."
|
|
||||||
|
|
||||||
# Ongoing Status labels
|
|
||||||
- name: "Status: Triage"
|
|
||||||
color: fbca04
|
|
||||||
description: "This issue needs to be triaged."
|
|
||||||
- name: "Status: On hold"
|
|
||||||
color: cccccc
|
|
||||||
description: "Issue or PR that has been placed on hold for now."
|
|
||||||
- name: "Status: In progress"
|
|
||||||
color: fbca04
|
|
||||||
description: "Issue is currently being resolved by a developer."
|
|
||||||
- name: "Status: Stale"
|
|
||||||
color: fef2c0
|
|
||||||
description: "There has not been activity on this issue or PR for quite some time."
|
|
||||||
- name: "Status: Awaiting response"
|
|
||||||
color: fef2c0
|
|
||||||
description: "Issue or PR awaits response from the creator."
|
|
||||||
- name: "Status: Blocked"
|
|
||||||
color: fef2c0
|
|
||||||
description: "Progress on this issue is currently not possible."
|
|
||||||
|
|
||||||
# Closing status labels
|
|
||||||
- name: "Closed: Known limitation"
|
|
||||||
color: e6e6e6
|
|
||||||
description: "Issue is closed, it is a known limitation."
|
|
||||||
- name: "Closed: Expected behavior"
|
|
||||||
color: e6e6e6
|
|
||||||
description: "Issues is closed, it is expected behavior."
|
|
||||||
- name: "Closed: Duplicate"
|
|
||||||
color: e6e6e6
|
|
||||||
description: "Issue is closed, duplicate of an existing issue."
|
|
||||||
- name: "Closed: Invalid"
|
|
||||||
color: e6e6e6
|
|
||||||
description: "Issue is closed, marked as not a valid issue (e.g., an user error)."
|
|
||||||
- name: "Closed: Wrong repository"
|
|
||||||
color: e6e6e6
|
|
||||||
description: "Issue is closed, was created in the wrong repository."
|
|
||||||
- name: "Closed: Won't Fix"
|
|
||||||
color: e6e6e6
|
|
||||||
description: "Issue is closed, it won't be fixed."
|
|
||||||
- name: "Closed: Done"
|
|
||||||
color: c2e0c6
|
|
||||||
description: "Issue closed, work on this issue has been marked complete."
|
|
||||||
|
|
||||||
# Others
|
|
||||||
- name: "Beginner Friendly"
|
|
||||||
color: 0e8a16
|
|
||||||
description: "Good first issue for people wanting to contribute to the project."
|
|
||||||
- name: "Help wanted"
|
|
||||||
color: 0e8a16
|
|
||||||
description: "We need some extra helping hands or expertise in order to resolve this."
|
|
||||||
- name: "Hacktoberfest"
|
|
||||||
description: "Issues/PRs are participating in the Hacktoberfest"
|
|
||||||
color: fbca04
|
|
||||||
|
|
||||||
branches:
|
|
||||||
- name: master
|
|
||||||
protection:
|
|
||||||
required_pull_request_reviews:
|
|
||||||
# required_approving_review_count: 1
|
|
||||||
dismiss_stale_reviews: true
|
|
||||||
require_code_owner_reviews: true
|
|
||||||
dismissal_restrictions:
|
|
||||||
users: []
|
|
||||||
teams:
|
|
||||||
- Admins
|
|
||||||
- Masters
|
|
||||||
required_status_checks:
|
|
||||||
strict: false
|
|
||||||
contexts: []
|
|
||||||
enforce_admins: false
|
|
||||||
restrictions:
|
|
||||||
users: []
|
|
||||||
teams:
|
|
||||||
- Admins
|
|
||||||
- Masters
|
|
||||||
Vendored
-61
@@ -1,61 +0,0 @@
|
|||||||
---
|
|
||||||
# Configuration for probot-stale - https://github.com/probot/stale
|
|
||||||
|
|
||||||
# Number of days of inactivity before an Issue or Pull Request becomes stale
|
|
||||||
daysUntilStale: 60
|
|
||||||
|
|
||||||
# Number of days of inactivity before a stale Issue or Pull Request is closed.
|
|
||||||
# Set to false to disable. If disabled, issues still need to be closed manually, but will remain marked as stale.
|
|
||||||
daysUntilClose: 7
|
|
||||||
|
|
||||||
# Issues or Pull Requests with these labels will never be considered stale. Set to `[]` to disable
|
|
||||||
exemptLabels:
|
|
||||||
- "Status: On hold"
|
|
||||||
- "Status: In progress"
|
|
||||||
- "Status: Awaiting response"
|
|
||||||
- "Status: Blocked"
|
|
||||||
- "Idea"
|
|
||||||
- "Security"
|
|
||||||
|
|
||||||
# Set to true to ignore issues in a project (defaults to false)
|
|
||||||
exemptProjects: false
|
|
||||||
|
|
||||||
# Set to true to ignore issues in a milestone (defaults to false)
|
|
||||||
exemptMilestones: false
|
|
||||||
|
|
||||||
# Label to use when marking as stale
|
|
||||||
staleLabel: "Status: Stale"
|
|
||||||
|
|
||||||
# Comment to post when marking as stale. Set to `false` to disable
|
|
||||||
markComment: >
|
|
||||||
This issue has been automatically marked as stale because it has not had
|
|
||||||
recent activity. It will be closed if no further activity occurs. Thank you
|
|
||||||
for your contributions.
|
|
||||||
|
|
||||||
# Comment to post when removing the stale label.
|
|
||||||
# unmarkComment: >
|
|
||||||
# Your comment here.
|
|
||||||
unmarkComment: false
|
|
||||||
|
|
||||||
# Comment to post when closing a stale Issue or Pull Request.
|
|
||||||
# closeComment: >
|
|
||||||
# Your comment here.
|
|
||||||
closeComment: false
|
|
||||||
|
|
||||||
# Limit the number of actions per hour, from 1-30. Default is 30
|
|
||||||
limitPerRun: 30
|
|
||||||
|
|
||||||
# Limit to only `issues` or `pulls`
|
|
||||||
only: issues
|
|
||||||
|
|
||||||
# Optionally, specify configuration settings that are specific to just 'issues' or 'pulls':
|
|
||||||
# pulls:
|
|
||||||
# daysUntilStale: 30
|
|
||||||
# markComment: >
|
|
||||||
# This pull request has been automatically marked as stale because it has not had
|
|
||||||
# recent activity. It will be closed if no further activity occurs. Thank you
|
|
||||||
# for your contributions.
|
|
||||||
|
|
||||||
# issues:
|
|
||||||
# exemptLabels:
|
|
||||||
# - confirmed
|
|
||||||
Vendored
-22
@@ -1,22 +0,0 @@
|
|||||||
---
|
|
||||||
# Configuration for support-requests - https://github.com/dessant/support-requests
|
|
||||||
|
|
||||||
# Label used to mark issues as support requests
|
|
||||||
supportLabel: "Type: Support"
|
|
||||||
|
|
||||||
# Comment to post on issues marked as support requests. Add a link
|
|
||||||
# to a support page, or set to `false` to disable
|
|
||||||
supportComment: >
|
|
||||||
:wave: We use the issue tracker exclusively for bug reports and feature requests.
|
|
||||||
However, this issue appears to be a support request. Please use our
|
|
||||||
support channels to get help with the project.
|
|
||||||
|
|
||||||
Head over to the
|
|
||||||
[Home Assistant community forum](https://community.home-assistant.io/t/home-assistant-community-add-on-pi-hole/33817?u=frenck)
|
|
||||||
or join our [Discord](https://discord.me/hassioaddons) chat.
|
|
||||||
|
|
||||||
# Close issues marked as support requests
|
|
||||||
close: true
|
|
||||||
|
|
||||||
# Lock issues marked as support requests
|
|
||||||
lock: false
|
|
||||||
@@ -1,13 +0,0 @@
|
|||||||
---
|
|
||||||
include: https://raw.githubusercontent.com/hassio-addons/organization/master/gitlabci/addon.yml
|
|
||||||
|
|
||||||
variables:
|
|
||||||
ADDON_GITHUB_REPO: "hassio-addons/addon-pi-hole"
|
|
||||||
ADDON_SLUG: "pi-hole"
|
|
||||||
ADDON_TARGET: "pi-hole"
|
|
||||||
|
|
||||||
ADDON_AARCH64_BASE: "hassioaddons/base-aarch64:7.0.5"
|
|
||||||
ADDON_AMD64_BASE: "hassioaddons/base-amd64:7.0.5"
|
|
||||||
ADDON_ARMHF_BASE: "hassioaddons/base-armhf:7.0.5"
|
|
||||||
ADDON_ARMV7_BASE: "hassioaddons/base-armv7:7.0.5"
|
|
||||||
ADDON_I386_BASE: "hassioaddons/base-i386:7.0.5"
|
|
||||||
@@ -1 +0,0 @@
|
|||||||
rules "~MD024"
|
|
||||||
@@ -1,66 +0,0 @@
|
|||||||
---
|
|
||||||
rules:
|
|
||||||
braces:
|
|
||||||
level: error
|
|
||||||
min-spaces-inside: 0
|
|
||||||
max-spaces-inside: 1
|
|
||||||
min-spaces-inside-empty: -1
|
|
||||||
max-spaces-inside-empty: -1
|
|
||||||
brackets:
|
|
||||||
level: error
|
|
||||||
min-spaces-inside: 0
|
|
||||||
max-spaces-inside: 0
|
|
||||||
min-spaces-inside-empty: -1
|
|
||||||
max-spaces-inside-empty: -1
|
|
||||||
colons:
|
|
||||||
level: error
|
|
||||||
max-spaces-before: 0
|
|
||||||
max-spaces-after: 1
|
|
||||||
commas:
|
|
||||||
level: error
|
|
||||||
max-spaces-before: 0
|
|
||||||
min-spaces-after: 1
|
|
||||||
max-spaces-after: 1
|
|
||||||
comments:
|
|
||||||
level: error
|
|
||||||
require-starting-space: true
|
|
||||||
min-spaces-from-content: 2
|
|
||||||
comments-indentation:
|
|
||||||
level: error
|
|
||||||
document-end:
|
|
||||||
level: error
|
|
||||||
present: false
|
|
||||||
document-start:
|
|
||||||
level: error
|
|
||||||
present: true
|
|
||||||
empty-lines:
|
|
||||||
level: error
|
|
||||||
max: 1
|
|
||||||
max-start: 0
|
|
||||||
max-end: 1
|
|
||||||
hyphens:
|
|
||||||
level: error
|
|
||||||
max-spaces-after: 1
|
|
||||||
indentation:
|
|
||||||
level: error
|
|
||||||
spaces: 2
|
|
||||||
indent-sequences: true
|
|
||||||
check-multi-line-strings: false
|
|
||||||
key-duplicates:
|
|
||||||
level: error
|
|
||||||
line-length:
|
|
||||||
ignore: |
|
|
||||||
.github/support.yml
|
|
||||||
level: warning
|
|
||||||
max: 120
|
|
||||||
allow-non-breakable-words: true
|
|
||||||
allow-non-breakable-inline-mappings: true
|
|
||||||
new-line-at-end-of-file:
|
|
||||||
level: error
|
|
||||||
new-lines:
|
|
||||||
level: error
|
|
||||||
type: unix
|
|
||||||
trailing-spaces:
|
|
||||||
level: error
|
|
||||||
truthy:
|
|
||||||
level: error
|
|
||||||
@@ -1,74 +0,0 @@
|
|||||||
# Code of conduct
|
|
||||||
|
|
||||||
## Our pledge
|
|
||||||
|
|
||||||
In the interest of fostering an open and welcoming environment, we as
|
|
||||||
contributors and maintainers pledge to making participation in our project and
|
|
||||||
our community a harassment-free experience for everyone, regardless of age, body
|
|
||||||
size, disability, ethnicity, gender identity and expression, level of experience,
|
|
||||||
nationality, personal appearance, race, religion, or sexual identity and
|
|
||||||
orientation.
|
|
||||||
|
|
||||||
## Our standards
|
|
||||||
|
|
||||||
Examples of behavior that contributes to creating a positive environment
|
|
||||||
include:
|
|
||||||
|
|
||||||
- Using welcoming and inclusive language
|
|
||||||
- Being respectful of differing viewpoints and experiences
|
|
||||||
- Gracefully accepting constructive criticism
|
|
||||||
- Focusing on what is best for the community
|
|
||||||
- Showing empathy towards other community members
|
|
||||||
|
|
||||||
Examples of unacceptable behavior by participants include:
|
|
||||||
|
|
||||||
- The use of sexualized language or imagery and unwelcome sexual attention
|
|
||||||
or advances
|
|
||||||
- Trolling, insulting/derogatory comments, and personal or political attacks
|
|
||||||
- Public or private harassment
|
|
||||||
- Publishing others' private information, such as a physical or
|
|
||||||
electronic address, without explicit permission
|
|
||||||
- Other conduct which could reasonably be considered inappropriate
|
|
||||||
in a professional setting
|
|
||||||
|
|
||||||
## Our responsibilities
|
|
||||||
|
|
||||||
Project maintainers are responsible for clarifying the standards of acceptable
|
|
||||||
behavior and are expected to take appropriate and fair corrective action in
|
|
||||||
response to any instances of unacceptable behavior.
|
|
||||||
|
|
||||||
Project maintainers have the right and responsibility to remove, edit, or
|
|
||||||
reject comments, commits, code, wiki edits, issues, and other contributions
|
|
||||||
that are not aligned to this Code of Conduct, or to ban temporarily or
|
|
||||||
permanently any contributor for other behaviors that they deem inappropriate,
|
|
||||||
threatening, offensive, or harmful.
|
|
||||||
|
|
||||||
## Scope
|
|
||||||
|
|
||||||
This Code of Conduct applies both within project spaces and in public spaces
|
|
||||||
when an individual is representing the project or its community. Examples of
|
|
||||||
representing a project or community include using an official project e-mail
|
|
||||||
address, posting via an official social media account, or acting as an appointed
|
|
||||||
representative at an online or offline event. Representation of a project may be
|
|
||||||
further defined and clarified by project maintainers.
|
|
||||||
|
|
||||||
## Enforcement
|
|
||||||
|
|
||||||
Instances of abusive, harassing, or otherwise unacceptable behavior may be
|
|
||||||
reported by contacting the project lead at frenck@addons.community. All
|
|
||||||
complaints will be reviewed and investigated and will result in a response that
|
|
||||||
is deemed necessary and appropriate to the circumstances. The project lead is
|
|
||||||
obligated to maintain confidentiality with regard to the reporter of an incident.
|
|
||||||
Further details of specific enforcement policies may be posted separately.
|
|
||||||
|
|
||||||
Project maintainers who do not follow or enforce the Code of Conduct in good
|
|
||||||
faith may face temporary or permanent repercussions as determined by other
|
|
||||||
members of the project's leadership.
|
|
||||||
|
|
||||||
## Attribution
|
|
||||||
|
|
||||||
This Code of Conduct is adapted from the [Contributor Covenant][homepage],
|
|
||||||
version 1.4, available at [http://contributor-covenant.org/version/1/4][version]
|
|
||||||
|
|
||||||
[homepage]: http://contributor-covenant.org
|
|
||||||
[version]: http://contributor-covenant.org/version/1/4/
|
|
||||||
@@ -1,29 +0,0 @@
|
|||||||
# Contributing
|
|
||||||
|
|
||||||
When contributing to this repository, please first discuss the change you wish
|
|
||||||
to make via issue, email, or any other method with the owners of this repository
|
|
||||||
before making a change.
|
|
||||||
|
|
||||||
Please note we have a code of conduct, please follow it in all your interactions
|
|
||||||
with the project.
|
|
||||||
|
|
||||||
## Issues and feature requests
|
|
||||||
|
|
||||||
You've found a bug in the source code, a mistake in the documentation or maybe
|
|
||||||
you'd like a new feature? You can help us by submitting an issue to our
|
|
||||||
[GitHub Repository][github]. Before you create an issue, make sure you search
|
|
||||||
the archive, maybe your question was already answered.
|
|
||||||
|
|
||||||
Even better: You could submit a pull request with a fix / new feature!
|
|
||||||
|
|
||||||
## Pull request process
|
|
||||||
|
|
||||||
1. Search our repository for open or closed [pull requests][prs] that relates
|
|
||||||
to your submission. You don't want to duplicate effort.
|
|
||||||
|
|
||||||
1. You may merge the pull request in once you have the sign-off of two other
|
|
||||||
developers, or if you do not have permission to do that, you may request
|
|
||||||
the second reviewer to merge it for you.
|
|
||||||
|
|
||||||
[github]: https://github.com/hassio-addons/addon-pi-hole/issues
|
|
||||||
[prs]: https://github.com/hassio-addons/addon-pi-hole/pulls
|
|
||||||
@@ -1,21 +0,0 @@
|
|||||||
# MIT License
|
|
||||||
|
|
||||||
Copyright (c) 2017-2020 Franck Nijhof
|
|
||||||
|
|
||||||
Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
||||||
of this software and associated documentation files (the "Software"), to deal
|
|
||||||
in the Software without restriction, including without limitation the rights
|
|
||||||
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
||||||
copies of the Software, and to permit persons to whom the Software is
|
|
||||||
furnished to do so, subject to the following conditions:
|
|
||||||
|
|
||||||
The above copyright notice and this permission notice shall be included in all
|
|
||||||
copies or substantial portions of the Software.
|
|
||||||
|
|
||||||
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
||||||
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
||||||
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
||||||
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
||||||
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
||||||
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
|
||||||
SOFTWARE.
|
|
||||||
@@ -1,340 +0,0 @@
|
|||||||
# Home Assistant Community Add-on: Pi-hole
|
|
||||||
|
|
||||||
[![GitHub Release][releases-shield]][releases]
|
|
||||||
![Project Stage][project-stage-shield]
|
|
||||||
[![License][license-shield]](LICENSE.md)
|
|
||||||
|
|
||||||
![Supports aarch64 Architecture][aarch64-shield]
|
|
||||||
![Supports amd64 Architecture][amd64-shield]
|
|
||||||
![Supports armhf Architecture][armhf-shield]
|
|
||||||
![Supports armv7 Architecture][armv7-shield]
|
|
||||||
![Supports i386 Architecture][i386-shield]
|
|
||||||
|
|
||||||
[![GitLab CI][gitlabci-shield]][gitlabci]
|
|
||||||
![Project Maintenance][maintenance-shield]
|
|
||||||
[![GitHub Activity][commits-shield]][commits]
|
|
||||||
|
|
||||||
[![Discord][discord-shield]][discord]
|
|
||||||
[![Community Forum][forum-shield]][forum]
|
|
||||||
|
|
||||||
[![Sponsor Frenck via GitHub Sponsors][github-sponsors-shield]][github-sponsors]
|
|
||||||
|
|
||||||
[![Support Frenck on Patreon][patreon-shield]][patreon]
|
|
||||||
|
|
||||||
Network-wide ad blocking
|
|
||||||
|
|
||||||
## Deprecation warning
|
|
||||||
|
|
||||||
**This add-on is in a deprecated state!**
|
|
||||||
|
|
||||||
The Pi-hole add-on is now deprecated and will no longer be supported, maintained
|
|
||||||
and will not receive future updates or fixes.
|
|
||||||
|
|
||||||
Pi-hole used to be a great solution to filter network traffic, but it has been
|
|
||||||
a challenge to keep/get it in a working state as an add-on.
|
|
||||||
|
|
||||||
Meanwhile, the AdGuard team published an alternative:
|
|
||||||
[AdGuard Home](https://github.com/hassio-addons/addon-adguard-home).
|
|
||||||
|
|
||||||
AdGuard Home as surpassed Pi-hole in terms of capabilities, features,
|
|
||||||
and stability, and Home Assistant provides a good integration with AdGuard.
|
|
||||||
Above all, the AdGuard Home team has been supportive in developing the add-on.
|
|
||||||
|
|
||||||
For those reasons, it is no longer viable to keep maintaining the Pi-hole
|
|
||||||
add-on, which has been problematic at best.
|
|
||||||
|
|
||||||
We strongly recommend migrating to the AdGuard Home add-on, which is available
|
|
||||||
in the add-on store.
|
|
||||||
|
|
||||||
## About
|
|
||||||
|
|
||||||
[Pi-hole][pi-hole] is an advertising-aware DNS- and web server, meant to be run
|
|
||||||
on a dedicated Raspberry Pi connected to your home network. Pi-hole lets you
|
|
||||||
block advertisements for every device that connects to your network without the
|
|
||||||
need for any client-side software.
|
|
||||||
|
|
||||||
This add-on is a port of Pi-hole to be able to run on Home Assistant and is
|
|
||||||
based on Alpine Linux and is using Docker.
|
|
||||||
|
|
||||||
## Installation
|
|
||||||
|
|
||||||
The installation of this add-on is pretty straightforward and not different in
|
|
||||||
comparison to installing any other Home Assistant add-on.
|
|
||||||
|
|
||||||
1. **Ensure your Home Assistant device has a
|
|
||||||
[static IP and static external DNS servers!](https://github.com/home-assistant/hassos/blob/dev/Documentation/network.md#static-ip)**
|
|
||||||
1. Search for the "Pi-hole" add-on in the Supervisor add-on store
|
|
||||||
and install it.
|
|
||||||
1. Start the "Pi-hole" add-on
|
|
||||||
1. Check the logs of the "Pi-hole" add-on to see it in action.
|
|
||||||
|
|
||||||
## Configuration
|
|
||||||
|
|
||||||
**Note**: _Remember to restart the add-on when the configuration is changed._
|
|
||||||
|
|
||||||
Example add-on configuration:
|
|
||||||
|
|
||||||
```yaml
|
|
||||||
log_level: info
|
|
||||||
update_lists_on_start: true
|
|
||||||
ssl: false
|
|
||||||
certfile: fullchain.pem
|
|
||||||
keyfile: privkey.pem
|
|
||||||
interface: eth0
|
|
||||||
ipv6: true
|
|
||||||
ipv4_address: ''
|
|
||||||
ipv6_address: ''
|
|
||||||
hosts:
|
|
||||||
- name: printer.local
|
|
||||||
ip: 192.168.1.5
|
|
||||||
- name: router.local
|
|
||||||
ip: 192.168.1.1
|
|
||||||
- name: router.local
|
|
||||||
ip: "FE80:0000:0000:0000:0202:B3FF:FE1E:8329"
|
|
||||||
```
|
|
||||||
|
|
||||||
**Note**: _This is just an example, don't copy and paste it! Create your own!_
|
|
||||||
|
|
||||||
### Option: `log_level`
|
|
||||||
|
|
||||||
The `log_level` option controls the level of log output by the addon and can
|
|
||||||
be changed to be more or less verbose, which might be useful when you are
|
|
||||||
dealing with an unknown issue. Possible values are:
|
|
||||||
|
|
||||||
- `trace`: Show every detail, like all called internal functions.
|
|
||||||
- `debug`: Shows detailed debug information.
|
|
||||||
- `info`: Normal (usually) interesting events.
|
|
||||||
- `warning`: Exceptional occurrences that are not errors.
|
|
||||||
- `error`: Runtime errors that do not require immediate action.
|
|
||||||
- `fatal`: Something went terribly wrong. Add-on becomes unusable.
|
|
||||||
|
|
||||||
Please note that each level automatically includes log messages from a
|
|
||||||
more severe level, e.g., `debug` also shows `info` messages. By default,
|
|
||||||
the `log_level` is set to `info`, which is the recommended setting unless
|
|
||||||
you are troubleshooting.
|
|
||||||
|
|
||||||
Using `trace` or `debug` log levels puts the dnsmasq daemon into debug mode,
|
|
||||||
allowing you to see all DNS requests in the add-on log.
|
|
||||||
|
|
||||||
### Option: `update_lists_on_start`
|
|
||||||
|
|
||||||
Download and process all configured ad block lists on add-on startup by setting
|
|
||||||
this option to `true`. This will add startup time to your add-on but will give
|
|
||||||
you the most recent versions of the ad block lists on start.
|
|
||||||
|
|
||||||
When this option is set to `false` you will still get updated lists once in a
|
|
||||||
while. A scheduled task will take care of that.
|
|
||||||
|
|
||||||
**Note**: _When starting the add-on for the very first time, the lists will be
|
|
||||||
updated, regardless of the value of this option._
|
|
||||||
|
|
||||||
### Option: `ssl`
|
|
||||||
|
|
||||||
Enables/Disables SSL (HTTPS) on the web interface of Pi-hole. Set it `true` to
|
|
||||||
enable it, `false` otherwise.
|
|
||||||
|
|
||||||
### Option: `certfile`
|
|
||||||
|
|
||||||
The certificate file to use for SSL.
|
|
||||||
|
|
||||||
**Note**: _The file MUST be stored in `/ssl/`, which is the default_
|
|
||||||
|
|
||||||
### Option: `keyfile`
|
|
||||||
|
|
||||||
The private key file to use for SSL.
|
|
||||||
|
|
||||||
**Note**: _The file MUST be stored in `/ssl/`, which is the default_
|
|
||||||
|
|
||||||
### Option: `interface`
|
|
||||||
|
|
||||||
Configures the interface the Pi-hole DNS server should be listening to. By
|
|
||||||
leaving it empty, the add-on will try to auto-detect the interface to use.
|
|
||||||
|
|
||||||
**Note**: _This option is in place in case auto-detection fails on your setup._
|
|
||||||
|
|
||||||
### Option: `ipv6`
|
|
||||||
|
|
||||||
Set this option to `false` to disable IPv6 support.
|
|
||||||
|
|
||||||
### Option: `ipv4_address`
|
|
||||||
|
|
||||||
Manually set the IPv4 address for Pi-hole to use. By leaving it empty, the
|
|
||||||
add-on will try to auto-detect the interface to use.
|
|
||||||
|
|
||||||
**Note**: _This option is in place in case auto-detection fails on your setup._
|
|
||||||
|
|
||||||
### Option: `ipv6_address`
|
|
||||||
|
|
||||||
Manually set the IPv6 address for Pi-hole to use. By leaving it empty, the
|
|
||||||
add-on will try to auto-detect the interface to use.
|
|
||||||
|
|
||||||
**Note**: _This option is in place in case auto-detection fails on your setup._
|
|
||||||
|
|
||||||
### Option: `hosts`
|
|
||||||
|
|
||||||
This option allows you create your own DNS entries for your LAN. This
|
|
||||||
capability can be handy for pointing easy to remember hostnames to an IP
|
|
||||||
(e.g., point `printer.local` to the IP address of your printer).
|
|
||||||
|
|
||||||
Add a list of hosts you want to add. Some hosts can have both IPv4 and IPv6
|
|
||||||
addresses. In that case, simply add the host twice (with both addresses).
|
|
||||||
|
|
||||||
See the example above this chapter for a more visual representation.
|
|
||||||
|
|
||||||
#### Sub-option: `name`
|
|
||||||
|
|
||||||
This option specifies the DNS name of the host you are adding. Its value could
|
|
||||||
be a short style hostname like: `printer` or a longer one `printer.local`.
|
|
||||||
|
|
||||||
#### Sub-option: `ip`
|
|
||||||
|
|
||||||
The IP address this specified host must point to. Its value must be an IPv6 or
|
|
||||||
IPv4 IP address.
|
|
||||||
|
|
||||||
### Option: `leave_front_door_open`
|
|
||||||
|
|
||||||
Adding this option to the add-on configuration allows you to disable
|
|
||||||
authentication on the admin interface by setting it to `true` and leaving the
|
|
||||||
password empty.
|
|
||||||
|
|
||||||
**Note**: _We STRONGLY suggest, not to use this, even if this add-on is
|
|
||||||
only exposed to your internal network. USE AT YOUR OWN RISK!_
|
|
||||||
|
|
||||||
## Using the Pi-hole integration in Home Assistant
|
|
||||||
|
|
||||||
Home Assistant offers a [Pi-hole integration][pi-hole-integration] that allows
|
|
||||||
you to retrieve statistics and interact with your Pi-hole installation.
|
|
||||||
|
|
||||||
To enable this integration, add the following lines to your `configuration.yaml`
|
|
||||||
file:
|
|
||||||
|
|
||||||
```yaml
|
|
||||||
# Example configuration.yaml entry
|
|
||||||
pi_hole:
|
|
||||||
host: localhost:4865
|
|
||||||
api_key: ""
|
|
||||||
```
|
|
||||||
|
|
||||||
For more information and documentation about configuring this sensor, please
|
|
||||||
check the [documentation of Home Assistant][pi-hole-integration].
|
|
||||||
|
|
||||||
## Changelog & Releases
|
|
||||||
|
|
||||||
This repository keeps a change log using [GitHub's releases][releases]
|
|
||||||
functionality. The format of the log is based on
|
|
||||||
[Keep a Changelog][keepchangelog].
|
|
||||||
|
|
||||||
Releases are based on [Semantic Versioning][semver], and use the format
|
|
||||||
of ``MAJOR.MINOR.PATCH``. In a nutshell, the version will be incremented
|
|
||||||
based on the following:
|
|
||||||
|
|
||||||
- ``MAJOR``: Incompatible or major changes.
|
|
||||||
- ``MINOR``: Backwards-compatible new features and enhancements.
|
|
||||||
- ``PATCH``: Backwards-compatible bugfixes and package updates.
|
|
||||||
|
|
||||||
## Support
|
|
||||||
|
|
||||||
Got questions?
|
|
||||||
|
|
||||||
You have several options to get them answered:
|
|
||||||
|
|
||||||
- The [Home Assistant Community Add-ons Discord chat server][discord] for add-on
|
|
||||||
support and feature requests.
|
|
||||||
- The [Home Assistant Discord chat server][discord-ha] for general Home
|
|
||||||
Assistant discussions and questions.
|
|
||||||
- The Home Assistant [Community Forum][forum].
|
|
||||||
- Join the [Reddit subreddit][reddit] in [/r/homeassistant][reddit]
|
|
||||||
|
|
||||||
You could also [open an issue here][issue] GitHub.
|
|
||||||
|
|
||||||
## Contributing
|
|
||||||
|
|
||||||
This is an active open-source project. We are always open to people who want to
|
|
||||||
use the code or contribute to it.
|
|
||||||
|
|
||||||
We have set up a separate document containing our
|
|
||||||
[contribution guidelines](CONTRIBUTING.md).
|
|
||||||
|
|
||||||
Thank you for being involved! :heart_eyes:
|
|
||||||
|
|
||||||
## Authors & contributors
|
|
||||||
|
|
||||||
The original setup of this repository is by [Franck Nijhof][frenck].
|
|
||||||
|
|
||||||
For a full list of all authors and contributors,
|
|
||||||
check [the contributor's page][contributors].
|
|
||||||
|
|
||||||
## We have got some Home Assistant add-ons for you
|
|
||||||
|
|
||||||
Want some more functionality to your Home Assistant instance?
|
|
||||||
|
|
||||||
We have created multiple add-ons for Home Assistant. For a full list, check out
|
|
||||||
our [GitHub Repository][repository].
|
|
||||||
|
|
||||||
## Trademark legal notice
|
|
||||||
|
|
||||||
This add-on is not created, developed, affiliated, supported, maintained
|
|
||||||
or endorsed by Pi-hole LLC.
|
|
||||||
|
|
||||||
All product names, logos, brands, trademarks and registered trademarks are
|
|
||||||
property of their respective owners. All company, product, and service names
|
|
||||||
used are for identification purposes only.
|
|
||||||
|
|
||||||
Use of these names, logos, trademarks, and brands does not imply endorsement.
|
|
||||||
|
|
||||||
## License
|
|
||||||
|
|
||||||
MIT License
|
|
||||||
|
|
||||||
Copyright (c) 2017-2020 Franck Nijhof
|
|
||||||
|
|
||||||
Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
||||||
of this software and associated documentation files (the "Software"), to deal
|
|
||||||
in the Software without restriction, including without limitation the rights
|
|
||||||
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
||||||
copies of the Software, and to permit persons to whom the Software is
|
|
||||||
furnished to do so, subject to the following conditions:
|
|
||||||
|
|
||||||
The above copyright notice and this permission notice shall be included in all
|
|
||||||
copies or substantial portions of the Software.
|
|
||||||
|
|
||||||
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
||||||
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
||||||
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
||||||
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
||||||
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
||||||
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
|
||||||
SOFTWARE.
|
|
||||||
|
|
||||||
[aarch64-shield]: https://img.shields.io/badge/aarch64-yes-green.svg
|
|
||||||
[amd64-shield]: https://img.shields.io/badge/amd64-yes-green.svg
|
|
||||||
[armhf-shield]: https://img.shields.io/badge/armhf-yes-green.svg
|
|
||||||
[armv7-shield]: https://img.shields.io/badge/armv7-yes-green.svg
|
|
||||||
[commits-shield]: https://img.shields.io/github/commit-activity/y/hassio-addons/addon-pi-hole.svg
|
|
||||||
[commits]: https://github.com/hassio-addons/addon-pi-hole/commits/master
|
|
||||||
[contributors]: https://github.com/hassio-addons/addon-pi-hole/graphs/contributors
|
|
||||||
[discord-ha]: https://discord.gg/c5DvZ4e
|
|
||||||
[discord-shield]: https://img.shields.io/discord/478094546522079232.svg
|
|
||||||
[discord]: https://discord.me/hassioaddons
|
|
||||||
[forum-shield]: https://img.shields.io/badge/community-forum-brightgreen.svg
|
|
||||||
[forum]: https://community.home-assistant.io/t/home-assistant-community-add-on-pi-hole/33817?u=frenck
|
|
||||||
[frenck]: https://github.com/frenck
|
|
||||||
[github-sponsors-shield]: https://frenck.dev/wp-content/uploads/2019/12/github_sponsor.png
|
|
||||||
[github-sponsors]: https://github.com/sponsors/frenck
|
|
||||||
[gitlabci-shield]: https://gitlab.com/hassio-addons/addon-pi-hole/badges/master/pipeline.svg
|
|
||||||
[gitlabci]: https://gitlab.com/hassio-addons/addon-pi-hole/pipelines
|
|
||||||
[i386-shield]: https://img.shields.io/badge/i386-yes-green.svg
|
|
||||||
[issue]: https://github.com/hassio-addons/addon-pi-hole/issues
|
|
||||||
[keepchangelog]: http://keepachangelog.com/en/1.0.0/
|
|
||||||
[license-shield]: https://img.shields.io/github/license/hassio-addons/addon-pi-hole.svg
|
|
||||||
[maintenance-shield]: https://img.shields.io/maintenance/yes/2020.svg
|
|
||||||
[patreon-shield]: https://frenck.dev/wp-content/uploads/2019/12/patreon.png
|
|
||||||
[patreon]: https://www.patreon.com/frenck
|
|
||||||
[pi-hole-integration]: https://www.home-assistant.io/components/pi_hole/
|
|
||||||
[pi-hole]: https://pi-hole.net/
|
|
||||||
[project-stage-shield]: https://img.shields.io/badge/project%20stage-%20!%20DEPRECATED%20%20%20!-ff0000.svg
|
|
||||||
[reddit]: https://reddit.com/r/homeassistant
|
|
||||||
[releases-shield]: https://img.shields.io/github/release/hassio-addons/addon-pi-hole.svg
|
|
||||||
[releases]: https://github.com/hassio-addons/addon-pi-hole/releases
|
|
||||||
[repository]: https://github.com/hassio-addons/repository
|
|
||||||
[semver]: http://semver.org/spec/v2.0.0.html
|
|
||||||
@@ -1,100 +0,0 @@
|
|||||||
# Home Assistant Community Add-on: Pi-hole
|
|
||||||
|
|
||||||
[![Release][release-shield]][release] ![Project Stage][project-stage-shield] ![Project Maintenance][maintenance-shield]
|
|
||||||
|
|
||||||
[![Discord][discord-shield]][discord] [![Community Forum][forum-shield]][forum]
|
|
||||||
|
|
||||||
[![Sponsor Frenck via GitHub Sponsors][github-sponsors-shield]][github-sponsors]
|
|
||||||
|
|
||||||
[![Support Frenck on Patreon][patreon-shield]][patreon]
|
|
||||||
|
|
||||||
Network-wide ad blocking
|
|
||||||
|
|
||||||
## Deprecation warning
|
|
||||||
|
|
||||||
**This add-on is in a deprecated state!**
|
|
||||||
|
|
||||||
The Pi-hole add-on is now deprecated and will no longer be supported, maintained
|
|
||||||
and will not receive future updates or fixes.
|
|
||||||
|
|
||||||
Pi-hole used to be a great solution to filter network traffic, but it has been
|
|
||||||
a challenge to keep/get it in a working state as an add-on.
|
|
||||||
|
|
||||||
Meanwhile, the AdGuard team published an alternative:
|
|
||||||
[AdGuard Home](https://github.com/hassio-addons/addon-adguard-home).
|
|
||||||
|
|
||||||
AdGuard Home as surpassed Pi-hole in terms of capabilities, features,
|
|
||||||
and stability, and Home Assistant provides a good integration with AdGuard.
|
|
||||||
Above all, the AdGuard Home team has been supportive in developing the add-on.
|
|
||||||
|
|
||||||
For those reasons, it is no longer viable to keep maintaining the Pi-hole
|
|
||||||
add-on, which has been problematic at best.
|
|
||||||
|
|
||||||
We strongly recommend migrating to the AdGuard Home add-on, which is available
|
|
||||||
in the add-on store.
|
|
||||||
|
|
||||||
## About
|
|
||||||
|
|
||||||
[Pi-hole][pi-hole] is an advertising-aware DNS- and web server, meant to be run
|
|
||||||
on a dedicated Raspberry Pi connected to your home network. Pi-hole lets you
|
|
||||||
block advertisements for every device that connects to your network without the
|
|
||||||
need for any client-side software.
|
|
||||||
|
|
||||||
This add-on is a port of Pi-hole to be able to run on Home Assistant and
|
|
||||||
is based on Alpine Linux and is using Docker.
|
|
||||||
|
|
||||||
[Click here for the full documentation][docs]
|
|
||||||
|
|
||||||
{% if channel == "edge" %}
|
|
||||||
## WARNING! THIS IS AN EDGE VERSION!
|
|
||||||
|
|
||||||
This Home Assistant Add-ons repository contains edge builds of add-ons.
|
|
||||||
Edge builds add-ons are based upon the latest development version.
|
|
||||||
|
|
||||||
- They may not work at all.
|
|
||||||
- They might stop working at any time.
|
|
||||||
- They could have a negative impact on your system.
|
|
||||||
|
|
||||||
This repository was created for:
|
|
||||||
|
|
||||||
- Anybody willing to test.
|
|
||||||
- Anybody interested in trying out upcoming add-ons or add-on features.
|
|
||||||
- Developers.
|
|
||||||
|
|
||||||
If you are more interested in stable releases of our add-ons:
|
|
||||||
|
|
||||||
<https://github.com/hassio-addons/repository>
|
|
||||||
|
|
||||||
{% endif %}
|
|
||||||
{% if channel == "beta" %}
|
|
||||||
## WARNING! THIS IS A BETA VERSION!
|
|
||||||
|
|
||||||
This Home Assistant Add-ons repository contains beta releases of add-ons.
|
|
||||||
|
|
||||||
- They might stop working at any time.
|
|
||||||
- They could have a negative impact on your system.
|
|
||||||
|
|
||||||
This repository was created for:
|
|
||||||
|
|
||||||
- Anybody willing to test.
|
|
||||||
- Anybody interested in trying out upcoming add-ons or add-on features.
|
|
||||||
|
|
||||||
If you are more interested in stable releases of our add-ons:
|
|
||||||
|
|
||||||
<https://github.com/hassio-addons/repository>
|
|
||||||
|
|
||||||
{% endif %}
|
|
||||||
[discord-shield]: https://img.shields.io/discord/478094546522079232.svg
|
|
||||||
[discord]: https://discord.me/hassioaddons
|
|
||||||
[docs]: {{ repo }}/blob/{{ version }}/README.md
|
|
||||||
[forum-shield]: https://img.shields.io/badge/community-forum-brightgreen.svg
|
|
||||||
[forum]: https://community.home-assistant.io/t/home-assistant-community-add-on-pi-hole/33817?u=frenck
|
|
||||||
[github-sponsors-shield]: https://frenck.dev/wp-content/uploads/2019/12/github_sponsor.png
|
|
||||||
[github-sponsors]: https://github.com/sponsors/frenck
|
|
||||||
[maintenance-shield]: https://img.shields.io/maintenance/yes/2020.svg
|
|
||||||
[patreon-shield]: https://frenck.dev/wp-content/uploads/2019/12/patreon.png
|
|
||||||
[patreon]: https://www.patreon.com/frenck
|
|
||||||
[pi-hole]: https://pi-hole.net/
|
|
||||||
[project-stage-shield]: https://img.shields.io/badge/project%20stage-%20!%20DEPRECATED%20%20%20!-ff0000.svg
|
|
||||||
[release-shield]: https://img.shields.io/badge/version-{{ version }}-blue.svg
|
|
||||||
[release]: {{ repo }}/tree/{{ version }}
|
|
||||||
@@ -1,124 +0,0 @@
|
|||||||
ARG BUILD_FROM=hassioaddons/base:7.0.5
|
|
||||||
# hadolint ignore=DL3006
|
|
||||||
FROM ${BUILD_FROM}
|
|
||||||
|
|
||||||
# Set shell
|
|
||||||
SHELL ["/bin/bash", "-o", "pipefail", "-c"]
|
|
||||||
|
|
||||||
ENV PATH="${PATH}:/opt/pihole" \
|
|
||||||
CORE_TAG="v4.4" \
|
|
||||||
WEB_TAG="v4.3.3" \
|
|
||||||
FTL_TAG="v4.3.1"
|
|
||||||
|
|
||||||
# We need to copy in the patches need during build
|
|
||||||
COPY rootfs/patches /patches
|
|
||||||
|
|
||||||
# Setup base
|
|
||||||
# hadolint ignore=DL3003
|
|
||||||
RUN \
|
|
||||||
apk add --no-cache --virtual .build-dependencies \
|
|
||||||
gcc=9.2.0-r4 \
|
|
||||||
make=4.2.1-r2 \
|
|
||||||
musl-dev=1.1.24-r2 \
|
|
||||||
libexecinfo-dev=1.1-r1 \
|
|
||||||
linux-headers=4.19.36-r0 \
|
|
||||||
nettle-dev=3.5.1-r0 \
|
|
||||||
build-base=0.5-r1 \
|
|
||||||
\
|
|
||||||
&& apk add --no-cache \
|
|
||||||
bc=1.07.1-r1 \
|
|
||||||
bind-tools=9.14.8-r5 \
|
|
||||||
coreutils=8.31-r0 \
|
|
||||||
git=2.24.1-r0 \
|
|
||||||
grep=3.3-r0 \
|
|
||||||
libcap=2.27-r0 \
|
|
||||||
libxml2=2.9.10-r2 \
|
|
||||||
logrotate=3.15.1-r0 \
|
|
||||||
lua-resty-http=0.15-r0 \
|
|
||||||
ncurses=6.1_p20200118-r2 \
|
|
||||||
nettle=3.5.1-r0 \
|
|
||||||
nginx-mod-http-lua=1.16.1-r6 \
|
|
||||||
nginx=1.16.1-r6 \
|
|
||||||
openssl=1.1.1d-r3 \
|
|
||||||
perl=5.30.1-r0 \
|
|
||||||
php7-fileinfo=7.3.16-r0 \
|
|
||||||
php7-fpm=7.3.16-r0 \
|
|
||||||
php7-json=7.3.16-r0 \
|
|
||||||
php7-opcache=7.3.16-r00 \
|
|
||||||
php7-openssl=7.3.16-r0 \
|
|
||||||
php7-phar=7.3.16-r0 \
|
|
||||||
php7-session=7.3.16-r0 \
|
|
||||||
php7-sockets=7.3.16-r0\
|
|
||||||
php7-sqlite3=7.3.16-r0 \
|
|
||||||
php7-zip=7.3.16-r0 \
|
|
||||||
procps=3.3.16-r0 \
|
|
||||||
psmisc=23.3-r0 \
|
|
||||||
sed=4.7-r0 \
|
|
||||||
sqlite=3.30.1-r1 \
|
|
||||||
sudo=1.8.31-r0 \
|
|
||||||
wget=1.20.3-r0 \
|
|
||||||
\
|
|
||||||
&& addgroup -S pihole \
|
|
||||||
&& adduser -S -s /sbin/nologin pihole pihole \
|
|
||||||
&& addgroup pihole nginx \
|
|
||||||
\
|
|
||||||
&& git clone --branch "${CORE_TAG}" --depth=1 \
|
|
||||||
https://github.com/pi-hole/pi-hole.git /etc/.pihole \
|
|
||||||
&& git -C /etc/.pihole checkout -b master \
|
|
||||||
\
|
|
||||||
&& git clone --branch "${WEB_TAG}" --depth=1 \
|
|
||||||
https://github.com/pi-hole/AdminLTE.git /var/www/html/admin \
|
|
||||||
&& git -C /var/www/html/admin checkout -b master \
|
|
||||||
\
|
|
||||||
&& git clone --branch "${FTL_TAG}" --depth=1 \
|
|
||||||
https://github.com/pi-hole/FTL.git /root/FTL \
|
|
||||||
&& git -C /root/FTL checkout -b master \
|
|
||||||
\
|
|
||||||
&& cd /root/FTL \
|
|
||||||
&& patch -p1 < /patches/FTL/fix-nettle-3.5-compat.patch \
|
|
||||||
&& patch -p1 < /patches/FTL/fix-poll-h-include-warning-on-musl.patch \
|
|
||||||
&& patch -p1 < /patches/FTL/no-backtrace-on-musl.patch \
|
|
||||||
&& make \
|
|
||||||
&& mv /root/FTL/pihole-FTL /usr/bin \
|
|
||||||
&& cd - \
|
|
||||||
\
|
|
||||||
&& install -o pihole -Dm755 -d "/opt/pihole" \
|
|
||||||
&& install -o pihole -Dm755 -t "/opt/pihole" /etc/.pihole/gravity.sh \
|
|
||||||
&& install -o pihole -Dm755 -t "/opt/pihole" /etc/.pihole/advanced/Scripts/*.sh \
|
|
||||||
&& install -o pihole -Dm755 -t "/opt/pihole" /etc/.pihole/advanced/Scripts/COL_TABLE \
|
|
||||||
\
|
|
||||||
&& cd /etc/.pihole/ \
|
|
||||||
&& patch -p1 < /patches/pihole/fix-killall-brain-damage.patch \
|
|
||||||
&& install -o pihole -Dm755 -t "/usr/local/bin" /etc/.pihole/pihole \
|
|
||||||
\
|
|
||||||
&& apk del --purge .build-dependencies \
|
|
||||||
&& rm -fr \
|
|
||||||
/etc/nginx \
|
|
||||||
/root/FTL
|
|
||||||
|
|
||||||
# Copy root filesystem
|
|
||||||
COPY rootfs /
|
|
||||||
|
|
||||||
# Build arguments
|
|
||||||
ARG BUILD_ARCH
|
|
||||||
ARG BUILD_DATE
|
|
||||||
ARG BUILD_REF
|
|
||||||
ARG BUILD_VERSION
|
|
||||||
|
|
||||||
# Labels
|
|
||||||
LABEL \
|
|
||||||
io.hass.name="Pi-hole" \
|
|
||||||
io.hass.description="Network-wide ad blocking" \
|
|
||||||
io.hass.arch="${BUILD_ARCH}" \
|
|
||||||
io.hass.type="addon" \
|
|
||||||
io.hass.version=${BUILD_VERSION} \
|
|
||||||
maintainer="Franck Nijhof <frenck@addons.community>" \
|
|
||||||
org.label-schema.description="Network-wide ad blocking" \
|
|
||||||
org.label-schema.build-date=${BUILD_DATE} \
|
|
||||||
org.label-schema.name="Pi-hole" \
|
|
||||||
org.label-schema.schema-version="1.0" \
|
|
||||||
org.label-schema.url="https://community.home-assistant.io/t/home-assistant-community-add-on-pi-hole/33817?u=frenck" \
|
|
||||||
org.label-schema.usage="https://github.com/hassio-addons/addon-pi-hole/tree/master/README.md" \
|
|
||||||
org.label-schema.vcs-ref=${BUILD_REF} \
|
|
||||||
org.label-schema.vcs-url="https://github.com/hassio-addons/addon-pi-hole" \
|
|
||||||
org.label-schema.vendor="Home Assistant Community Add-ons"
|
|
||||||
@@ -1,11 +0,0 @@
|
|||||||
{
|
|
||||||
"squash": false,
|
|
||||||
"build_from": {
|
|
||||||
"aarch64": "hassioaddons/base-aarch64:7.0.5",
|
|
||||||
"amd64": "hassioaddons/base-amd64:7.0.5",
|
|
||||||
"armhf": "hassioaddons/base-armhf:7.0.5",
|
|
||||||
"armv7": "hassioaddons/base-armv7:7.0.5",
|
|
||||||
"i386": "hassioaddons/base-i386:7.0.5"
|
|
||||||
},
|
|
||||||
"args": {}
|
|
||||||
}
|
|
||||||
@@ -1,61 +0,0 @@
|
|||||||
{
|
|
||||||
"name": "Pi-hole (DEPRECATED!)",
|
|
||||||
"stage": "deprecated",
|
|
||||||
"version": "dev",
|
|
||||||
"slug": "pi-hole",
|
|
||||||
"description": "The Pi-hole add-on is deprecated, use the AdGuard Home add-on instead.",
|
|
||||||
"url": "https://github.com/hassio-addons/addon-pi-hole",
|
|
||||||
"webui": "[PROTO:ssl]://[HOST]:[PORT:4865]",
|
|
||||||
"ingress": true,
|
|
||||||
"ingress_port": 61478,
|
|
||||||
"panel_icon": "mdi:pi-hole",
|
|
||||||
"startup": "system",
|
|
||||||
"arch": ["aarch64", "amd64", "armhf", "armv7", "i386"],
|
|
||||||
"ports": {
|
|
||||||
"53/udp": 53,
|
|
||||||
"80/tcp": null,
|
|
||||||
"4865/tcp": 4865
|
|
||||||
},
|
|
||||||
"ports_description": {
|
|
||||||
"53/udp": "DNS server port",
|
|
||||||
"80/tcp": "Web interface (Not required for Ingress)",
|
|
||||||
"4865/tcp": "API endpoint (For HA integration)"
|
|
||||||
},
|
|
||||||
"boot": "auto",
|
|
||||||
"host_network": true,
|
|
||||||
"hassio_api": true,
|
|
||||||
"hassio_role": "default",
|
|
||||||
"auth_api": true,
|
|
||||||
"privileged": ["NET_ADMIN"],
|
|
||||||
"map": ["config", "ssl"],
|
|
||||||
"options": {
|
|
||||||
"update_lists_on_start": false,
|
|
||||||
"ssl": true,
|
|
||||||
"certfile": "fullchain.pem",
|
|
||||||
"keyfile": "privkey.pem",
|
|
||||||
"interface": "",
|
|
||||||
"ipv6": true,
|
|
||||||
"ipv4_address": "",
|
|
||||||
"ipv6_address": "",
|
|
||||||
"hosts": []
|
|
||||||
},
|
|
||||||
"schema": {
|
|
||||||
"log_level": "list(trace|debug|info|notice|warning|error|fatal)?",
|
|
||||||
"update_lists_on_start": "bool",
|
|
||||||
"ssl": "bool",
|
|
||||||
"certfile": "str",
|
|
||||||
"keyfile": "str",
|
|
||||||
"interface": "str",
|
|
||||||
"ipv6": "bool",
|
|
||||||
"ipv4_address": "str",
|
|
||||||
"ipv6_address": "str",
|
|
||||||
|
|
||||||
"hosts": [
|
|
||||||
{
|
|
||||||
"name": "str",
|
|
||||||
"ip": "match(((^\\s*((([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])\\.){3}([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5]))\\s*$)|(^\\s*((([0-9A-Fa-f]{1,4}:){7}([0-9A-Fa-f]{1,4}|:))|(([0-9A-Fa-f]{1,4}:){6}(:[0-9A-Fa-f]{1,4}|((25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)(\\.(25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)){3})|:))|(([0-9A-Fa-f]{1,4}:){5}(((:[0-9A-Fa-f]{1,4}){1,2})|:((25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)(\\.(25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)){3})|:))|(([0-9A-Fa-f]{1,4}:){4}(((:[0-9A-Fa-f]{1,4}){1,3})|((:[0-9A-Fa-f]{1,4})?:((25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)(\\.(25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)){3}))|:))|(([0-9A-Fa-f]{1,4}:){3}(((:[0-9A-Fa-f]{1,4}){1,4})|((:[0-9A-Fa-f]{1,4}){0,2}:((25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)(\\.(25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)){3}))|:))|(([0-9A-Fa-f]{1,4}:){2}(((:[0-9A-Fa-f]{1,4}){1,5})|((:[0-9A-Fa-f]{1,4}){0,3}:((25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)(\\.(25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)){3}))|:))|(([0-9A-Fa-f]{1,4}:){1}(((:[0-9A-Fa-f]{1,4}){1,6})|((:[0-9A-Fa-f]{1,4}){0,4}:((25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)(\\.(25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)){3}))|:))|(:(((:[0-9A-Fa-f]{1,4}){1,7})|((:[0-9A-Fa-f]{1,4}){0,5}:((25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)(\\.(25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)){3}))|:)))(%.+)?\\s*$)))"
|
|
||||||
}
|
|
||||||
],
|
|
||||||
"leave_front_door_open": "bool?"
|
|
||||||
}
|
|
||||||
}
|
|
||||||
Binary file not shown.
|
Before Width: | Height: | Size: 4.1 KiB |
Binary file not shown.
|
Before Width: | Height: | Size: 7.0 KiB |
@@ -1,49 +0,0 @@
|
|||||||
#!/usr/bin/with-contenv bashio
|
|
||||||
# ==============================================================================
|
|
||||||
# Home Assistant Community Add-on: Pi-hole
|
|
||||||
# This file sets up and configures DNS
|
|
||||||
# ==============================================================================
|
|
||||||
declare api_port
|
|
||||||
declare admin_port
|
|
||||||
declare certfile
|
|
||||||
declare dns_host
|
|
||||||
declare ingress_interface
|
|
||||||
declare ingress_port
|
|
||||||
declare ingress_url
|
|
||||||
declare keyfile
|
|
||||||
|
|
||||||
admin_port=$(bashio::addon.port 80)
|
|
||||||
if bashio::var.has_value "${admin_port}"; then
|
|
||||||
bashio::config.require.ssl
|
|
||||||
|
|
||||||
if bashio::config.true 'ssl'; then
|
|
||||||
certfile=$(bashio::config 'certfile')
|
|
||||||
keyfile=$(bashio::config 'keyfile')
|
|
||||||
|
|
||||||
mv /etc/nginx/servers/direct-ssl.disabled /etc/nginx/servers/direct.conf
|
|
||||||
sed -i "s#%%certfile%%#${certfile}#g" /etc/nginx/servers/direct.conf
|
|
||||||
sed -i "s#%%keyfile%%#${keyfile}#g" /etc/nginx/servers/direct.conf
|
|
||||||
|
|
||||||
else
|
|
||||||
mv /etc/nginx/servers/direct.disabled /etc/nginx/servers/direct.conf
|
|
||||||
fi
|
|
||||||
|
|
||||||
sed -i "s/%%port%%/${admin_port}/g" /etc/nginx/servers/direct.conf
|
|
||||||
fi
|
|
||||||
|
|
||||||
ingress_port=$(bashio::addon.ingress_port)
|
|
||||||
ingress_interface=$(bashio::addon.ip_address)
|
|
||||||
ingress_url=$(bashio::addon.ingress_url)
|
|
||||||
sed -i "s/%%port%%/${ingress_port}/g" /etc/nginx/servers/ingress.conf
|
|
||||||
sed -i "s/%%interface%%/${ingress_interface}/g" /etc/nginx/servers/ingress.conf
|
|
||||||
sed -i "s#%%url%%#${ingress_url}#g" /etc/nginx/servers/ingress.conf
|
|
||||||
|
|
||||||
api_port=$(bashio::addon.port 4865)
|
|
||||||
if bashio::var.has_value "${api_port}"; then
|
|
||||||
mv /etc/nginx/servers/api.disabled /etc/nginx/servers/api.conf
|
|
||||||
sed -i "s/%%api_port%%/${api_port}/g" /etc/nginx/servers/api.conf
|
|
||||||
fi
|
|
||||||
|
|
||||||
dns_host=$(bashio::dns.host)
|
|
||||||
sed -i "s/%%dns_host%%/${dns_host}/g" /etc/nginx/includes/resolver.conf
|
|
||||||
|
|
||||||
@@ -1,36 +0,0 @@
|
|||||||
#!/usr/bin/with-contenv bashio
|
|
||||||
# ==============================================================================
|
|
||||||
# Home Assistant Community Add-on: Pi-hole
|
|
||||||
# Applies patches to Pi-hole
|
|
||||||
# ==============================================================================
|
|
||||||
readonly base=/var/www/html/admin
|
|
||||||
declare hostname
|
|
||||||
|
|
||||||
hostname="hassio"
|
|
||||||
if bashio::supervisor.ping; then
|
|
||||||
hostname=$(bashio::host.hostname)
|
|
||||||
elif bashio::fs.file_exists '/data/hostname'; then
|
|
||||||
hostname=$(</data/hostname)
|
|
||||||
fi
|
|
||||||
|
|
||||||
bashio::log.debug 'Patching Pi-hole for use with Home Assistant...'
|
|
||||||
sed -i 's/Are you sure you want to send a poweroff command to your Pi-Hole\?/Are you sure you want to send a stop command to your Pi-Hole add-on\?/g' "${base}/scripts/pi-hole/js/settings.js"
|
|
||||||
sed -i 's/Are you sure you want to send a reboot command to your Pi-Hole\?/Are you sure you want to send a restart command to your Pi-Hole add-on\?/g' "${base}/scripts/pi-hole/js/settings.js"
|
|
||||||
sed -i 's/Designed For Raspberry Pi/Modified for Home Assistant/g' "${base}/scripts/pi-hole/php/header.php"
|
|
||||||
sed -i 's/echo -ne/echo -e/g' /opt/pihole/gravity.sh
|
|
||||||
sed -i 's/Power off system/Stop add-on/g' "${base}/settings.php"
|
|
||||||
sed -i 's/Restart system/Restart add-on/g' "${base}/settings.php"
|
|
||||||
sed -i 's/The system will poweroff in 5 seconds.../The add-on will stop in 15 seconds.../g' "${base}/scripts/pi-hole/php/savesettings.php"
|
|
||||||
sed -i 's/The system will reboot in 5 seconds.../The add-on will restart in 15 seconds.../g' "${base}/scripts/pi-hole/php/savesettings.php"
|
|
||||||
sed -i 's/Updates/Forums/g' "${base}/scripts/pi-hole/php/header.php"
|
|
||||||
sed -i 's/Yes, poweroff/Yes, stop/g' "${base}/scripts/pi-hole/js/settings.js"
|
|
||||||
sed -i 's/Yes, reboot/Yes, restart/g' "${base}/scripts/pi-hole/js/settings.js"
|
|
||||||
sed -i 's#/etc/hostname#/data/hostname#g' "${base}/settings.php"
|
|
||||||
sed -i 's#https://github.com/pi-hole/pi-hole/releases#https://community.home-assistant.io/t/home-assistant-community-add-on-pi-hole/33817?u=frenck#g' "${base}/scripts/pi-hole/php/header.php"
|
|
||||||
sed -i 's#https://github.com/pi-hole#https://github.com/hassio-addons/addon-pi-hole#g' "${base}/scripts/pi-hole/php/header.php"
|
|
||||||
sed -i 's#sudo pihole -a poweroff#nohup bash -c \\"sudo /usr/bin/stop_addon\\" \&> /dev/null </dev/null \&#g' "${base}/scripts/pi-hole/php/savesettings.php"
|
|
||||||
sed -i 's#sudo pihole -a reboot#nohup bash -c \\"sudo /usr/bin/restart_addon\\" \&> /dev/null </dev/null \&#g' "${base}/scripts/pi-hole/php/savesettings.php"
|
|
||||||
sed -i "s/gethostname()/\"${hostname}\"/g" "${base}/scripts/pi-hole/php/header.php"
|
|
||||||
sed -i "s#\"localhost\"#\"localhost\",\"${hostname}\",\"${hostname}\\.local\"#g" "${base}/scripts/pi-hole/php/auth.php"
|
|
||||||
sed -i "s#HTTP_ORIGIN#HTTP_BRAINDAMAGE#g" "${base}/scripts/pi-hole/php/auth.php"
|
|
||||||
sed -i 's#/etc/pihole/logrotate#/etc/logrotate.d/pihole#g' /opt/pihole/piholeLogFlush.sh
|
|
||||||
@@ -1,213 +0,0 @@
|
|||||||
#!/usr/bin/with-contenv bashio
|
|
||||||
# ==============================================================================
|
|
||||||
# Home Assistant Community Add-on: Pi-hole
|
|
||||||
# Persists the Pi-hole configuration and configures it
|
|
||||||
# ==============================================================================
|
|
||||||
readonly SETUP_VARS='/data/pihole/setupVars.conf'
|
|
||||||
declare interface
|
|
||||||
declare ip
|
|
||||||
declare ip_gua
|
|
||||||
declare ip_ula
|
|
||||||
declare ips
|
|
||||||
declare result
|
|
||||||
declare port
|
|
||||||
declare name
|
|
||||||
declare dns_host
|
|
||||||
|
|
||||||
# Allow dnsmasq to bind on ports < 1024
|
|
||||||
setcap CAP_NET_ADMIN,CAP_NET_BIND_SERVICE,CAP_NET_RAW=+eip "$(command -v pihole-FTL)"
|
|
||||||
|
|
||||||
if ! bashio::fs.file_exists "${SETUP_VARS}"; then
|
|
||||||
bashio::log.debug 'Initializing Pi-hole configuration on persistent storage'
|
|
||||||
mkdir -p /data/pihole
|
|
||||||
cp /etc/pihole/* /data/pihole
|
|
||||||
fi
|
|
||||||
|
|
||||||
if ! bashio::fs.directory_exists '/data/dnsmasq.d'; then
|
|
||||||
bashio::log.debug 'Initializing dnsmasq configuration on persistent storage'
|
|
||||||
mkdir -p /data/dnsmasq.d
|
|
||||||
cp -R /etc/dnsmasq.d/* /data/dnsmasq.d
|
|
||||||
fi
|
|
||||||
|
|
||||||
bashio::log.debug 'Setting up list of known DNS servers'
|
|
||||||
dns_host=$(bashio::dns.host)
|
|
||||||
cp /etc/pihole/dns-servers.conf /data/pihole/dns-servers.conf
|
|
||||||
sed -i "s/%%dns_host%%/${dns_host}/g" /data/pihole/dns-servers.conf
|
|
||||||
|
|
||||||
bashio::log.debug 'Symlinking configuration'
|
|
||||||
rm -fr /etc/dnsmasq.d
|
|
||||||
ln -s /data/dnsmasq.d /etc/dnsmasq.d
|
|
||||||
|
|
||||||
bashio::log.debug 'Symlinking configuration'
|
|
||||||
rm -fr /etc/pihole
|
|
||||||
ln -s /data/pihole /etc/pihole
|
|
||||||
chmod 777 /data/pihole
|
|
||||||
|
|
||||||
bashio::log.debug 'Setting Pi-hole interface'
|
|
||||||
if bashio::config.has_value 'interface'; then
|
|
||||||
bashio::log.debug 'Using interface set in configuration'
|
|
||||||
interface=$(bashio::config 'interface')
|
|
||||||
else
|
|
||||||
bashio::log.debug 'Detecting interface to use with Pi-hole'
|
|
||||||
interface=$(awk '{for (i=1; i<=NF; i++) if ($i~/dev/) print $(i+1)}' <<< "$(ip route get 8.8.8.8)")
|
|
||||||
fi
|
|
||||||
bashio::log.debug "Setting interface to: ${interface}"
|
|
||||||
sed -i "s/PIHOLE_INTERFACE.*/PIHOLE_INTERFACE=${interface}/" "${SETUP_VARS}"
|
|
||||||
sed -i "s/interface=.*/interface=${interface}/" /etc/dnsmasq.d/01-pihole.conf
|
|
||||||
sed -i "/except-interface/d" /etc/dnsmasq.d/01-pihole.conf
|
|
||||||
|
|
||||||
bashio::log.debug 'Setting Pi-hole IPv4 address'
|
|
||||||
if bashio::config.has_value 'ipv4_address'; then
|
|
||||||
bashio::log.debug 'Using IPv4 address from configuration'
|
|
||||||
ip=$(bashio::config 'ipv4_address')
|
|
||||||
else
|
|
||||||
bashio::log.debug 'Detecting IPv4 address to use with Pi-hole'
|
|
||||||
ip=$(ip -o -f inet addr show "${interface}" | awk '{print $4}' | awk 'END {print}')
|
|
||||||
fi
|
|
||||||
bashio::log.debug "Setting IPv4 address to: ${ip}"
|
|
||||||
sed -i "s#IPV4_ADDRESS.*#IPV4_ADDRESS=${ip}#" "${SETUP_VARS}"
|
|
||||||
|
|
||||||
# See https://github.com/pi-hole/pi-hole/issues/1473#issuecomment-301745953
|
|
||||||
testIPv6() {
|
|
||||||
local ips=${1}
|
|
||||||
local first
|
|
||||||
local value1
|
|
||||||
local value2
|
|
||||||
|
|
||||||
# first will contain fda2 (ULA)
|
|
||||||
first="$(cut -f1 -d":" <<< "${ips}")"
|
|
||||||
|
|
||||||
# value1 will contain 253 which is the decimal value corresponding to 0xfd
|
|
||||||
value1=$(((0x$first)/256))
|
|
||||||
|
|
||||||
# Will contain 162 which is the decimal value corresponding to 0xa2
|
|
||||||
value2=$(((0x$first)%256))
|
|
||||||
|
|
||||||
# The ULA test is testing for fc00::/7 according to RFC 4193
|
|
||||||
if (((value1&254)==252)); then
|
|
||||||
echo "ULA";
|
|
||||||
fi
|
|
||||||
|
|
||||||
# The GUA test is testing for 2000::/3 according to RFC 4291
|
|
||||||
if (((value1&112)==32)); then
|
|
||||||
echo "GUA"
|
|
||||||
fi
|
|
||||||
|
|
||||||
# The LL test is testing for fe80::/10 according to RFC 4193
|
|
||||||
if (((value1==254) && ((value2&192)==128))); then
|
|
||||||
echo "Link-local";
|
|
||||||
fi
|
|
||||||
|
|
||||||
true
|
|
||||||
}
|
|
||||||
|
|
||||||
if bashio::config.true 'ipv6'; then
|
|
||||||
bashio::log.debug 'Setting Pi-hole IPv6 address'
|
|
||||||
if bashio::config.has_value 'ipv6_address'; then
|
|
||||||
bashio::log.debug 'Using IPv6 address from configuration'
|
|
||||||
ip=$(bashio::config 'ipv6_address')
|
|
||||||
else
|
|
||||||
bashio::log.debug 'Detecting IPv6 address to use with Pi-hole'
|
|
||||||
mapfile -t ips < <(ip -6 addr show "${interface}" | grep 'scope global' | awk '{print $2}' || true)
|
|
||||||
|
|
||||||
if [[ -n "${ips:-}" ]]; then
|
|
||||||
# Determine type of found IPv6 addresses
|
|
||||||
for i in "${ips[@]}"; do
|
|
||||||
result=$(testIPv6 "$i")
|
|
||||||
[[ "${result}" == "ULA" ]] && ip_ula="${i%/*}"
|
|
||||||
[[ "${result}" == "GUA" ]] && ip_gua="${i%/*}"
|
|
||||||
done
|
|
||||||
fi
|
|
||||||
|
|
||||||
# Prefer ULA over GUA or don't use any if none found
|
|
||||||
if [[ -n "${ip_ula:-}" ]]; then
|
|
||||||
bashio::log.debug 'Found IPv6 ULA address'
|
|
||||||
ip="${ip_ula}"
|
|
||||||
elif [[ -n "${ip_gua:-}" ]]; then
|
|
||||||
bashio::log.debug 'Found IPv6 GUA address'
|
|
||||||
ip="${ip_gua}"
|
|
||||||
else
|
|
||||||
bashio::log.debug 'Found neither IPv6 ULA nor GUA address, IPv6 will be disabled'
|
|
||||||
ip=""
|
|
||||||
fi
|
|
||||||
fi
|
|
||||||
bashio::log.debug "Setting IPv6 address to: ${ip}"
|
|
||||||
sed -i "s#IPV6_ADDRESS.*#IPV6_ADDRESS=${ip}#" "${SETUP_VARS}"
|
|
||||||
else
|
|
||||||
bashio::log.debug 'Disabling IPv6'
|
|
||||||
sed -i "s/IPV6_ADDRESS.*/IPV6_ADDRESS=/" "${SETUP_VARS}"
|
|
||||||
fi
|
|
||||||
|
|
||||||
bashio::log.debug 'Setting Pi-hole Query Logging state'
|
|
||||||
# shellcheck disable=SC1091
|
|
||||||
source /data/pihole/setupVars.conf
|
|
||||||
if [[ "${QUERY_LOGGING}" = false ]]; then
|
|
||||||
sed -i 's/^log-queries/#log-queries/' /etc/dnsmasq.d/01-pihole.conf
|
|
||||||
fi
|
|
||||||
|
|
||||||
# Write current version information
|
|
||||||
echo -n "${CORE_TAG} ${WEB_TAG} ${FTL_TAG}" > /etc/pihole/localversions
|
|
||||||
|
|
||||||
bashio::log.debug "Ensure extra information for query log is enabled"
|
|
||||||
sed -i "s/log-queri.*/log-queries=extra/" /etc/dnsmasq.d/01-pihole.conf
|
|
||||||
|
|
||||||
bashio::log.debug 'Setting dnsmasq port'
|
|
||||||
port=$(bashio::addon.port "53/udp")
|
|
||||||
|
|
||||||
bashio::log.debug "Setting dnsmasq port to: ${port}"
|
|
||||||
sed -i "s/port=.*/port=${port}/" /etc/dnsmasq.d/99-addon.conf
|
|
||||||
|
|
||||||
if ! bashio::fs.directory_exists '/var/run/pihole'; then
|
|
||||||
mkdir -p /var/run/pihole
|
|
||||||
chmod 775 /var/run/pihole
|
|
||||||
chown pihole /var/run/pihole
|
|
||||||
fi
|
|
||||||
|
|
||||||
if ! bashio::fs.file_exists '/var/run/pihole-FTL.port'; then
|
|
||||||
touch /var/run/pihole-FTL.port
|
|
||||||
chmod 644 /var/run/pihole-FTL.port
|
|
||||||
chown pihole:root /var/run/pihole-FTL.port
|
|
||||||
fi
|
|
||||||
|
|
||||||
if bashio::supervisor.ping; then
|
|
||||||
bashio::host.hostname > /data/hostname
|
|
||||||
fi
|
|
||||||
|
|
||||||
# Add pi.hole to hosts
|
|
||||||
echo "127.0.0.1 pi.hole" >> /etc/hosts
|
|
||||||
|
|
||||||
mkdir -p /data/log
|
|
||||||
if ! bashio::fs.file_exists '/data/log/pihole.log'; then
|
|
||||||
touch /data/log/pihole.log
|
|
||||||
chmod 644 /data/log/pihole.log
|
|
||||||
chown pihole:root /data/log/pihole.log
|
|
||||||
fi
|
|
||||||
|
|
||||||
ln -sf /data/log/pihole.log /var/log/pihole.log
|
|
||||||
if ! bashio::fs.file_exists '/data/log/pihole-FTL.log'; then
|
|
||||||
touch /data/log/pihole-FTL.log
|
|
||||||
chmod 644 /data/log/pihole-FTL.log
|
|
||||||
chown pihole:root /data/log/pihole-FTL.log
|
|
||||||
fi
|
|
||||||
|
|
||||||
ln -sf /data/log/pihole-FTL.log /var/log/pihole-FTL.log
|
|
||||||
|
|
||||||
for host in $(bashio::config 'hosts|keys'); do
|
|
||||||
name=$(bashio::config "hosts[${host}].name")
|
|
||||||
ip=$(bashio::config "hosts[${host}].ip")
|
|
||||||
bashio::log.debug "Adding host: ${name} resolves to ${ip}"
|
|
||||||
echo "${ip} ${name}" >> /etc/hosts.list
|
|
||||||
done
|
|
||||||
|
|
||||||
# We use HA Auth now, disable Pi-Hole password
|
|
||||||
pihole -a -p ""
|
|
||||||
|
|
||||||
if bashio::config.true 'update_lists_on_start' \
|
|
||||||
|| ! bashio::fs.file_exists "/data/pihole/gravity.list";
|
|
||||||
then
|
|
||||||
bashio::log.debug 'Generating block lists'
|
|
||||||
s6-setuidgid pihole pihole-FTL &
|
|
||||||
sleep 2
|
|
||||||
gravity.sh
|
|
||||||
kill -9 "$(pgrep pihole-FTL)" || true
|
|
||||||
fi
|
|
||||||
@@ -1,27 +0,0 @@
|
|||||||
# Pi-hole: A black hole for Internet advertisements
|
|
||||||
# (c) 2017 Pi-hole, LLC (https://pi-hole.net)
|
|
||||||
# Network-wide ad blocking via your own hardware.
|
|
||||||
#
|
|
||||||
# Updates ad sources every week
|
|
||||||
#
|
|
||||||
# This file is copyright under the latest version of the EUPL.
|
|
||||||
# Please see LICENSE file for your rights under this license.
|
|
||||||
#
|
|
||||||
#
|
|
||||||
#
|
|
||||||
# This file is under source-control of the Pi-hole installation and update
|
|
||||||
# scripts, any changes made to this file will be overwritten when the softare
|
|
||||||
# is updated or re-installed. Please make any changes to the appropriate crontab
|
|
||||||
# or other cron file snippets.
|
|
||||||
|
|
||||||
# Pi-hole: Update the ad sources once a week on Sunday at 01:59
|
|
||||||
# Download any updates from the adlists
|
|
||||||
59 1 * * 7 root PATH="$PATH:/usr/local/bin/" pihole updateGravity
|
|
||||||
|
|
||||||
# Pi-hole: Flush the log daily at 00:00
|
|
||||||
# The flush script will use logrotate if available
|
|
||||||
# parameter "once": logrotate only once (default is twice)
|
|
||||||
# parameter "quiet": don't print messages
|
|
||||||
00 00 * * * root PATH="$PATH:/usr/local/bin/" pihole flush once quiet
|
|
||||||
|
|
||||||
@reboot root /usr/sbin/logrotate /etc/logrotate.d/pihole
|
|
||||||
@@ -1,666 +0,0 @@
|
|||||||
# Configuration file for dnsmasq.
|
|
||||||
#
|
|
||||||
# Format is one option per line, legal options are the same
|
|
||||||
# as the long options legal on the command line. See
|
|
||||||
# "/usr/sbin/dnsmasq --help" or "man 8 dnsmasq" for details.
|
|
||||||
|
|
||||||
# Listen on this specific port instead of the standard DNS port
|
|
||||||
# (53). Setting this to zero completely disables DNS function,
|
|
||||||
# leaving only DHCP and/or TFTP.
|
|
||||||
#port=5353
|
|
||||||
|
|
||||||
# The following two options make you a better netizen, since they
|
|
||||||
# tell dnsmasq to filter out queries which the public DNS cannot
|
|
||||||
# answer, and which load the servers (especially the root servers)
|
|
||||||
# unnecessarily. If you have a dial-on-demand link they also stop
|
|
||||||
# these requests from bringing up the link unnecessarily.
|
|
||||||
|
|
||||||
# Never forward plain names (without a dot or domain part)
|
|
||||||
#domain-needed
|
|
||||||
# Never forward addresses in the non-routed address spaces.
|
|
||||||
#bogus-priv
|
|
||||||
|
|
||||||
# Uncomment these to enable DNSSEC validation and caching:
|
|
||||||
# (Requires dnsmasq to be built with DNSSEC option.)
|
|
||||||
#conf-file=%%PREFIX%%/share/dnsmasq/trust-anchors.conf
|
|
||||||
#dnssec
|
|
||||||
|
|
||||||
# Replies which are not DNSSEC signed may be legitimate, because the domain
|
|
||||||
# is unsigned, or may be forgeries. Setting this option tells dnsmasq to
|
|
||||||
# check that an unsigned reply is OK, by finding a secure proof that a DS
|
|
||||||
# record somewhere between the root and the domain does not exist.
|
|
||||||
# The cost of setting this is that even queries in unsigned domains will need
|
|
||||||
# one or more extra DNS queries to verify.
|
|
||||||
#dnssec-check-unsigned
|
|
||||||
|
|
||||||
# Uncomment this to filter useless windows-originated DNS requests
|
|
||||||
# which can trigger dial-on-demand links needlessly.
|
|
||||||
# Note that (amongst other things) this blocks all SRV requests,
|
|
||||||
# so don't use it if you use eg Kerberos, SIP, XMMP or Google-talk.
|
|
||||||
# This option only affects forwarding, SRV records originating for
|
|
||||||
# dnsmasq (via srv-host= lines) are not suppressed by it.
|
|
||||||
#filterwin2k
|
|
||||||
|
|
||||||
# Change this line if you want dns to get its upstream servers from
|
|
||||||
# somewhere other that /etc/resolv.conf
|
|
||||||
#resolv-file=
|
|
||||||
|
|
||||||
# By default, dnsmasq will send queries to any of the upstream
|
|
||||||
# servers it knows about and tries to favour servers to are known
|
|
||||||
# to be up. Uncommenting this forces dnsmasq to try each query
|
|
||||||
# with each server strictly in the order they appear in
|
|
||||||
# /etc/resolv.conf
|
|
||||||
#strict-order
|
|
||||||
|
|
||||||
# If you don't want dnsmasq to read /etc/resolv.conf or any other
|
|
||||||
# file, getting its servers from this file instead (see below), then
|
|
||||||
# uncomment this.
|
|
||||||
#no-resolv
|
|
||||||
|
|
||||||
# If you don't want dnsmasq to poll /etc/resolv.conf or other resolv
|
|
||||||
# files for changes and re-read them then uncomment this.
|
|
||||||
#no-poll
|
|
||||||
|
|
||||||
# Add other name servers here, with domain specs if they are for
|
|
||||||
# non-public domains.
|
|
||||||
#server=/localnet/192.168.0.1
|
|
||||||
|
|
||||||
# Example of routing PTR queries to nameservers: this will send all
|
|
||||||
# address->name queries for 192.168.3/24 to nameserver 10.1.2.3
|
|
||||||
#server=/3.168.192.in-addr.arpa/10.1.2.3
|
|
||||||
|
|
||||||
# Add local-only domains here, queries in these domains are answered
|
|
||||||
# from /etc/hosts or DHCP only.
|
|
||||||
#local=/localnet/
|
|
||||||
|
|
||||||
# Add domains which you want to force to an IP address here.
|
|
||||||
# The example below send any host in double-click.net to a local
|
|
||||||
# web-server.
|
|
||||||
#address=/double-click.net/127.0.0.1
|
|
||||||
|
|
||||||
# --address (and --server) work with IPv6 addresses too.
|
|
||||||
#address=/www.thekelleys.org.uk/fe80::20d:60ff:fe36:f83
|
|
||||||
|
|
||||||
# Add the IPs of all queries to yahoo.com, google.com, and their
|
|
||||||
# subdomains to the vpn and search ipsets:
|
|
||||||
#ipset=/yahoo.com/google.com/vpn,search
|
|
||||||
|
|
||||||
# You can control how dnsmasq talks to a server: this forces
|
|
||||||
# queries to 10.1.2.3 to be routed via eth1
|
|
||||||
# server=10.1.2.3@eth1
|
|
||||||
|
|
||||||
# and this sets the source (ie local) address used to talk to
|
|
||||||
# 10.1.2.3 to 192.168.1.1 port 55 (there must be an interface with that
|
|
||||||
# IP on the machine, obviously).
|
|
||||||
# server=10.1.2.3@192.168.1.1#55
|
|
||||||
|
|
||||||
# If you want dnsmasq to change uid and gid to something other
|
|
||||||
# than the default, edit the following lines.
|
|
||||||
#user=
|
|
||||||
#group=
|
|
||||||
|
|
||||||
# If you want dnsmasq to listen for DHCP and DNS requests only on
|
|
||||||
# specified interfaces (and the loopback) give the name of the
|
|
||||||
# interface (eg eth0) here.
|
|
||||||
# Repeat the line for more than one interface.
|
|
||||||
#interface=
|
|
||||||
# Or you can specify which interface _not_ to listen on
|
|
||||||
#except-interface=
|
|
||||||
# Or which to listen on by address (remember to include 127.0.0.1 if
|
|
||||||
# you use this.)
|
|
||||||
#listen-address=
|
|
||||||
# If you want dnsmasq to provide only DNS service on an interface,
|
|
||||||
# configure it as shown above, and then use the following line to
|
|
||||||
# disable DHCP and TFTP on it.
|
|
||||||
#no-dhcp-interface=
|
|
||||||
|
|
||||||
# On systems which support it, dnsmasq binds the wildcard address,
|
|
||||||
# even when it is listening on only some interfaces. It then discards
|
|
||||||
# requests that it shouldn't reply to. This has the advantage of
|
|
||||||
# working even when interfaces come and go and change address. If you
|
|
||||||
# want dnsmasq to really bind only the interfaces it is listening on,
|
|
||||||
# uncomment this option. About the only time you may need this is when
|
|
||||||
# running another nameserver on the same machine.
|
|
||||||
#bind-interfaces
|
|
||||||
|
|
||||||
# If you don't want dnsmasq to read /etc/hosts, uncomment the
|
|
||||||
# following line.
|
|
||||||
#no-hosts
|
|
||||||
# or if you want it to read another file, as well as /etc/hosts, use
|
|
||||||
# this.
|
|
||||||
#addn-hosts=/etc/banner_add_hosts
|
|
||||||
|
|
||||||
# Set this (and domain: see below) if you want to have a domain
|
|
||||||
# automatically added to simple names in a hosts-file.
|
|
||||||
#expand-hosts
|
|
||||||
|
|
||||||
# Set the domain for dnsmasq. this is optional, but if it is set, it
|
|
||||||
# does the following things.
|
|
||||||
# 1) Allows DHCP hosts to have fully qualified domain names, as long
|
|
||||||
# as the domain part matches this setting.
|
|
||||||
# 2) Sets the "domain" DHCP option thereby potentially setting the
|
|
||||||
# domain of all systems configured by DHCP
|
|
||||||
# 3) Provides the domain part for "expand-hosts"
|
|
||||||
#domain=thekelleys.org.uk
|
|
||||||
|
|
||||||
# Set a different domain for a particular subnet
|
|
||||||
#domain=wireless.thekelleys.org.uk,192.168.2.0/24
|
|
||||||
|
|
||||||
# Same idea, but range rather then subnet
|
|
||||||
#domain=reserved.thekelleys.org.uk,192.68.3.100,192.168.3.200
|
|
||||||
|
|
||||||
# Uncomment this to enable the integrated DHCP server, you need
|
|
||||||
# to supply the range of addresses available for lease and optionally
|
|
||||||
# a lease time. If you have more than one network, you will need to
|
|
||||||
# repeat this for each network on which you want to supply DHCP
|
|
||||||
# service.
|
|
||||||
#dhcp-range=192.168.0.50,192.168.0.150,12h
|
|
||||||
|
|
||||||
# This is an example of a DHCP range where the netmask is given. This
|
|
||||||
# is needed for networks we reach the dnsmasq DHCP server via a relay
|
|
||||||
# agent. If you don't know what a DHCP relay agent is, you probably
|
|
||||||
# don't need to worry about this.
|
|
||||||
#dhcp-range=192.168.0.50,192.168.0.150,255.255.255.0,12h
|
|
||||||
|
|
||||||
# This is an example of a DHCP range which sets a tag, so that
|
|
||||||
# some DHCP options may be set only for this network.
|
|
||||||
#dhcp-range=set:red,192.168.0.50,192.168.0.150
|
|
||||||
|
|
||||||
# Use this DHCP range only when the tag "green" is set.
|
|
||||||
#dhcp-range=tag:green,192.168.0.50,192.168.0.150,12h
|
|
||||||
|
|
||||||
# Specify a subnet which can't be used for dynamic address allocation,
|
|
||||||
# is available for hosts with matching --dhcp-host lines. Note that
|
|
||||||
# dhcp-host declarations will be ignored unless there is a dhcp-range
|
|
||||||
# of some type for the subnet in question.
|
|
||||||
# In this case the netmask is implied (it comes from the network
|
|
||||||
# configuration on the machine running dnsmasq) it is possible to give
|
|
||||||
# an explicit netmask instead.
|
|
||||||
#dhcp-range=192.168.0.0,static
|
|
||||||
|
|
||||||
# Enable DHCPv6. Note that the prefix-length does not need to be specified
|
|
||||||
# and defaults to 64 if missing/
|
|
||||||
#dhcp-range=1234::2, 1234::500, 64, 12h
|
|
||||||
|
|
||||||
# Do Router Advertisements, BUT NOT DHCP for this subnet.
|
|
||||||
#dhcp-range=1234::, ra-only
|
|
||||||
|
|
||||||
# Do Router Advertisements, BUT NOT DHCP for this subnet, also try and
|
|
||||||
# add names to the DNS for the IPv6 address of SLAAC-configured dual-stack
|
|
||||||
# hosts. Use the DHCPv4 lease to derive the name, network segment and
|
|
||||||
# MAC address and assume that the host will also have an
|
|
||||||
# IPv6 address calculated using the SLAAC algorithm.
|
|
||||||
#dhcp-range=1234::, ra-names
|
|
||||||
|
|
||||||
# Do Router Advertisements, BUT NOT DHCP for this subnet.
|
|
||||||
# Set the lifetime to 46 hours. (Note: minimum lifetime is 2 hours.)
|
|
||||||
#dhcp-range=1234::, ra-only, 48h
|
|
||||||
|
|
||||||
# Do DHCP and Router Advertisements for this subnet. Set the A bit in the RA
|
|
||||||
# so that clients can use SLAAC addresses as well as DHCP ones.
|
|
||||||
#dhcp-range=1234::2, 1234::500, slaac
|
|
||||||
|
|
||||||
# Do Router Advertisements and stateless DHCP for this subnet. Clients will
|
|
||||||
# not get addresses from DHCP, but they will get other configuration information.
|
|
||||||
# They will use SLAAC for addresses.
|
|
||||||
#dhcp-range=1234::, ra-stateless
|
|
||||||
|
|
||||||
# Do stateless DHCP, SLAAC, and generate DNS names for SLAAC addresses
|
|
||||||
# from DHCPv4 leases.
|
|
||||||
#dhcp-range=1234::, ra-stateless, ra-names
|
|
||||||
|
|
||||||
# Do router advertisements for all subnets where we're doing DHCPv6
|
|
||||||
# Unless overridden by ra-stateless, ra-names, et al, the router
|
|
||||||
# advertisements will have the M and O bits set, so that the clients
|
|
||||||
# get addresses and configuration from DHCPv6, and the A bit reset, so the
|
|
||||||
# clients don't use SLAAC addresses.
|
|
||||||
#enable-ra
|
|
||||||
|
|
||||||
# Supply parameters for specified hosts using DHCP. There are lots
|
|
||||||
# of valid alternatives, so we will give examples of each. Note that
|
|
||||||
# IP addresses DO NOT have to be in the range given above, they just
|
|
||||||
# need to be on the same network. The order of the parameters in these
|
|
||||||
# do not matter, it's permissible to give name, address and MAC in any
|
|
||||||
# order.
|
|
||||||
|
|
||||||
# Always allocate the host with Ethernet address 11:22:33:44:55:66
|
|
||||||
# The IP address 192.168.0.60
|
|
||||||
#dhcp-host=11:22:33:44:55:66,192.168.0.60
|
|
||||||
|
|
||||||
# Always set the name of the host with hardware address
|
|
||||||
# 11:22:33:44:55:66 to be "fred"
|
|
||||||
#dhcp-host=11:22:33:44:55:66,fred
|
|
||||||
|
|
||||||
# Always give the host with Ethernet address 11:22:33:44:55:66
|
|
||||||
# the name fred and IP address 192.168.0.60 and lease time 45 minutes
|
|
||||||
#dhcp-host=11:22:33:44:55:66,fred,192.168.0.60,45m
|
|
||||||
|
|
||||||
# Give a host with Ethernet address 11:22:33:44:55:66 or
|
|
||||||
# 12:34:56:78:90:12 the IP address 192.168.0.60. Dnsmasq will assume
|
|
||||||
# that these two Ethernet interfaces will never be in use at the same
|
|
||||||
# time, and give the IP address to the second, even if it is already
|
|
||||||
# in use by the first. Useful for laptops with wired and wireless
|
|
||||||
# addresses.
|
|
||||||
#dhcp-host=11:22:33:44:55:66,12:34:56:78:90:12,192.168.0.60
|
|
||||||
|
|
||||||
# Give the machine which says its name is "bert" IP address
|
|
||||||
# 192.168.0.70 and an infinite lease
|
|
||||||
#dhcp-host=bert,192.168.0.70,infinite
|
|
||||||
|
|
||||||
# Always give the host with client identifier 01:02:02:04
|
|
||||||
# the IP address 192.168.0.60
|
|
||||||
#dhcp-host=id:01:02:02:04,192.168.0.60
|
|
||||||
|
|
||||||
# Always give the InfiniBand interface with hardware address
|
|
||||||
# 80:00:00:48:fe:80:00:00:00:00:00:00:f4:52:14:03:00:28:05:81 the
|
|
||||||
# ip address 192.168.0.61. The client id is derived from the prefix
|
|
||||||
# ff:00:00:00:00:00:02:00:00:02:c9:00 and the last 8 pairs of
|
|
||||||
# hex digits of the hardware address.
|
|
||||||
#dhcp-host=id:ff:00:00:00:00:00:02:00:00:02:c9:00:f4:52:14:03:00:28:05:81,192.168.0.61
|
|
||||||
|
|
||||||
# Always give the host with client identifier "marjorie"
|
|
||||||
# the IP address 192.168.0.60
|
|
||||||
#dhcp-host=id:marjorie,192.168.0.60
|
|
||||||
|
|
||||||
# Enable the address given for "judge" in /etc/hosts
|
|
||||||
# to be given to a machine presenting the name "judge" when
|
|
||||||
# it asks for a DHCP lease.
|
|
||||||
#dhcp-host=judge
|
|
||||||
|
|
||||||
# Never offer DHCP service to a machine whose Ethernet
|
|
||||||
# address is 11:22:33:44:55:66
|
|
||||||
#dhcp-host=11:22:33:44:55:66,ignore
|
|
||||||
|
|
||||||
# Ignore any client-id presented by the machine with Ethernet
|
|
||||||
# address 11:22:33:44:55:66. This is useful to prevent a machine
|
|
||||||
# being treated differently when running under different OS's or
|
|
||||||
# between PXE boot and OS boot.
|
|
||||||
#dhcp-host=11:22:33:44:55:66,id:*
|
|
||||||
|
|
||||||
# Send extra options which are tagged as "red" to
|
|
||||||
# the machine with Ethernet address 11:22:33:44:55:66
|
|
||||||
#dhcp-host=11:22:33:44:55:66,set:red
|
|
||||||
|
|
||||||
# Send extra options which are tagged as "red" to
|
|
||||||
# any machine with Ethernet address starting 11:22:33:
|
|
||||||
#dhcp-host=11:22:33:*:*:*,set:red
|
|
||||||
|
|
||||||
# Give a fixed IPv6 address and name to client with
|
|
||||||
# DUID 00:01:00:01:16:d2:83:fc:92:d4:19:e2:d8:b2
|
|
||||||
# Note the MAC addresses CANNOT be used to identify DHCPv6 clients.
|
|
||||||
# Note also that the [] around the IPv6 address are obligatory.
|
|
||||||
#dhcp-host=id:00:01:00:01:16:d2:83:fc:92:d4:19:e2:d8:b2, fred, [1234::5]
|
|
||||||
|
|
||||||
# Ignore any clients which are not specified in dhcp-host lines
|
|
||||||
# or /etc/ethers. Equivalent to ISC "deny unknown-clients".
|
|
||||||
# This relies on the special "known" tag which is set when
|
|
||||||
# a host is matched.
|
|
||||||
#dhcp-ignore=tag:!known
|
|
||||||
|
|
||||||
# Send extra options which are tagged as "red" to any machine whose
|
|
||||||
# DHCP vendorclass string includes the substring "Linux"
|
|
||||||
#dhcp-vendorclass=set:red,Linux
|
|
||||||
|
|
||||||
# Send extra options which are tagged as "red" to any machine one
|
|
||||||
# of whose DHCP userclass strings includes the substring "accounts"
|
|
||||||
#dhcp-userclass=set:red,accounts
|
|
||||||
|
|
||||||
# Send extra options which are tagged as "red" to any machine whose
|
|
||||||
# MAC address matches the pattern.
|
|
||||||
#dhcp-mac=set:red,00:60:8C:*:*:*
|
|
||||||
|
|
||||||
# If this line is uncommented, dnsmasq will read /etc/ethers and act
|
|
||||||
# on the ethernet-address/IP pairs found there just as if they had
|
|
||||||
# been given as --dhcp-host options. Useful if you keep
|
|
||||||
# MAC-address/host mappings there for other purposes.
|
|
||||||
#read-ethers
|
|
||||||
|
|
||||||
# Send options to hosts which ask for a DHCP lease.
|
|
||||||
# See RFC 2132 for details of available options.
|
|
||||||
# Common options can be given to dnsmasq by name:
|
|
||||||
# run "dnsmasq --help dhcp" to get a list.
|
|
||||||
# Note that all the common settings, such as netmask and
|
|
||||||
# broadcast address, DNS server and default route, are given
|
|
||||||
# sane defaults by dnsmasq. You very likely will not need
|
|
||||||
# any dhcp-options. If you use Windows clients and Samba, there
|
|
||||||
# are some options which are recommended, they are detailed at the
|
|
||||||
# end of this section.
|
|
||||||
|
|
||||||
# Override the default route supplied by dnsmasq, which assumes the
|
|
||||||
# router is the same machine as the one running dnsmasq.
|
|
||||||
#dhcp-option=3,1.2.3.4
|
|
||||||
|
|
||||||
# Do the same thing, but using the option name
|
|
||||||
#dhcp-option=option:router,1.2.3.4
|
|
||||||
|
|
||||||
# Override the default route supplied by dnsmasq and send no default
|
|
||||||
# route at all. Note that this only works for the options sent by
|
|
||||||
# default (1, 3, 6, 12, 28) the same line will send a zero-length option
|
|
||||||
# for all other option numbers.
|
|
||||||
#dhcp-option=3
|
|
||||||
|
|
||||||
# Set the NTP time server addresses to 192.168.0.4 and 10.10.0.5
|
|
||||||
#dhcp-option=option:ntp-server,192.168.0.4,10.10.0.5
|
|
||||||
|
|
||||||
# Send DHCPv6 option. Note [] around IPv6 addresses.
|
|
||||||
#dhcp-option=option6:dns-server,[1234::77],[1234::88]
|
|
||||||
|
|
||||||
# Send DHCPv6 option for namservers as the machine running
|
|
||||||
# dnsmasq and another.
|
|
||||||
#dhcp-option=option6:dns-server,[::],[1234::88]
|
|
||||||
|
|
||||||
# Ask client to poll for option changes every six hours. (RFC4242)
|
|
||||||
#dhcp-option=option6:information-refresh-time,6h
|
|
||||||
|
|
||||||
# Set option 58 client renewal time (T1). Defaults to half of the
|
|
||||||
# lease time if not specified. (RFC2132)
|
|
||||||
#dhcp-option=option:T1,1m
|
|
||||||
|
|
||||||
# Set option 59 rebinding time (T2). Defaults to 7/8 of the
|
|
||||||
# lease time if not specified. (RFC2132)
|
|
||||||
#dhcp-option=option:T2,2m
|
|
||||||
|
|
||||||
# Set the NTP time server address to be the same machine as
|
|
||||||
# is running dnsmasq
|
|
||||||
#dhcp-option=42,0.0.0.0
|
|
||||||
|
|
||||||
# Set the NIS domain name to "welly"
|
|
||||||
#dhcp-option=40,welly
|
|
||||||
|
|
||||||
# Set the default time-to-live to 50
|
|
||||||
#dhcp-option=23,50
|
|
||||||
|
|
||||||
# Set the "all subnets are local" flag
|
|
||||||
#dhcp-option=27,1
|
|
||||||
|
|
||||||
# Send the etherboot magic flag and then etherboot options (a string).
|
|
||||||
#dhcp-option=128,e4:45:74:68:00:00
|
|
||||||
#dhcp-option=129,NIC=eepro100
|
|
||||||
|
|
||||||
# Specify an option which will only be sent to the "red" network
|
|
||||||
# (see dhcp-range for the declaration of the "red" network)
|
|
||||||
# Note that the tag: part must precede the option: part.
|
|
||||||
#dhcp-option = tag:red, option:ntp-server, 192.168.1.1
|
|
||||||
|
|
||||||
# The following DHCP options set up dnsmasq in the same way as is specified
|
|
||||||
# for the ISC dhcpcd in
|
|
||||||
# http://www.samba.org/samba/ftp/docs/textdocs/DHCP-Server-Configuration.txt
|
|
||||||
# adapted for a typical dnsmasq installation where the host running
|
|
||||||
# dnsmasq is also the host running samba.
|
|
||||||
# you may want to uncomment some or all of them if you use
|
|
||||||
# Windows clients and Samba.
|
|
||||||
#dhcp-option=19,0 # option ip-forwarding off
|
|
||||||
#dhcp-option=44,0.0.0.0 # set netbios-over-TCP/IP nameserver(s) aka WINS server(s)
|
|
||||||
#dhcp-option=45,0.0.0.0 # netbios datagram distribution server
|
|
||||||
#dhcp-option=46,8 # netbios node type
|
|
||||||
|
|
||||||
# Send an empty WPAD option. This may be REQUIRED to get windows 7 to behave.
|
|
||||||
#dhcp-option=252,"\n"
|
|
||||||
|
|
||||||
# Send RFC-3397 DNS domain search DHCP option. WARNING: Your DHCP client
|
|
||||||
# probably doesn't support this......
|
|
||||||
#dhcp-option=option:domain-search,eng.apple.com,marketing.apple.com
|
|
||||||
|
|
||||||
# Send RFC-3442 classless static routes (note the netmask encoding)
|
|
||||||
#dhcp-option=121,192.168.1.0/24,1.2.3.4,10.0.0.0/8,5.6.7.8
|
|
||||||
|
|
||||||
# Send vendor-class specific options encapsulated in DHCP option 43.
|
|
||||||
# The meaning of the options is defined by the vendor-class so
|
|
||||||
# options are sent only when the client supplied vendor class
|
|
||||||
# matches the class given here. (A substring match is OK, so "MSFT"
|
|
||||||
# matches "MSFT" and "MSFT 5.0"). This example sets the
|
|
||||||
# mtftp address to 0.0.0.0 for PXEClients.
|
|
||||||
#dhcp-option=vendor:PXEClient,1,0.0.0.0
|
|
||||||
|
|
||||||
# Send microsoft-specific option to tell windows to release the DHCP lease
|
|
||||||
# when it shuts down. Note the "i" flag, to tell dnsmasq to send the
|
|
||||||
# value as a four-byte integer - that's what microsoft wants. See
|
|
||||||
# http://technet2.microsoft.com/WindowsServer/en/library/a70f1bb7-d2d4-49f0-96d6-4b7414ecfaae1033.mspx?mfr=true
|
|
||||||
#dhcp-option=vendor:MSFT,2,1i
|
|
||||||
|
|
||||||
# Send the Encapsulated-vendor-class ID needed by some configurations of
|
|
||||||
# Etherboot to allow is to recognise the DHCP server.
|
|
||||||
#dhcp-option=vendor:Etherboot,60,"Etherboot"
|
|
||||||
|
|
||||||
# Send options to PXELinux. Note that we need to send the options even
|
|
||||||
# though they don't appear in the parameter request list, so we need
|
|
||||||
# to use dhcp-option-force here.
|
|
||||||
# See http://syslinux.zytor.com/pxe.php#special for details.
|
|
||||||
# Magic number - needed before anything else is recognised
|
|
||||||
#dhcp-option-force=208,f1:00:74:7e
|
|
||||||
# Configuration file name
|
|
||||||
#dhcp-option-force=209,configs/common
|
|
||||||
# Path prefix
|
|
||||||
#dhcp-option-force=210,/tftpboot/pxelinux/files/
|
|
||||||
# Reboot time. (Note 'i' to send 32-bit value)
|
|
||||||
#dhcp-option-force=211,30i
|
|
||||||
|
|
||||||
# Set the boot filename for netboot/PXE. You will only need
|
|
||||||
# this if you want to boot machines over the network and you will need
|
|
||||||
# a TFTP server; either dnsmasq's built-in TFTP server or an
|
|
||||||
# external one. (See below for how to enable the TFTP server.)
|
|
||||||
#dhcp-boot=pxelinux.0
|
|
||||||
|
|
||||||
# The same as above, but use custom tftp-server instead machine running dnsmasq
|
|
||||||
#dhcp-boot=pxelinux,server.name,192.168.1.100
|
|
||||||
|
|
||||||
# Boot for iPXE. The idea is to send two different
|
|
||||||
# filenames, the first loads iPXE, and the second tells iPXE what to
|
|
||||||
# load. The dhcp-match sets the ipxe tag for requests from iPXE.
|
|
||||||
#dhcp-boot=undionly.kpxe
|
|
||||||
#dhcp-match=set:ipxe,175 # iPXE sends a 175 option.
|
|
||||||
#dhcp-boot=tag:ipxe,http://boot.ipxe.org/demo/boot.php
|
|
||||||
|
|
||||||
# Encapsulated options for iPXE. All the options are
|
|
||||||
# encapsulated within option 175
|
|
||||||
#dhcp-option=encap:175, 1, 5b # priority code
|
|
||||||
#dhcp-option=encap:175, 176, 1b # no-proxydhcp
|
|
||||||
#dhcp-option=encap:175, 177, string # bus-id
|
|
||||||
#dhcp-option=encap:175, 189, 1b # BIOS drive code
|
|
||||||
#dhcp-option=encap:175, 190, user # iSCSI username
|
|
||||||
#dhcp-option=encap:175, 191, pass # iSCSI password
|
|
||||||
|
|
||||||
# Test for the architecture of a netboot client. PXE clients are
|
|
||||||
# supposed to send their architecture as option 93. (See RFC 4578)
|
|
||||||
#dhcp-match=peecees, option:client-arch, 0 #x86-32
|
|
||||||
#dhcp-match=itanics, option:client-arch, 2 #IA64
|
|
||||||
#dhcp-match=hammers, option:client-arch, 6 #x86-64
|
|
||||||
#dhcp-match=mactels, option:client-arch, 7 #EFI x86-64
|
|
||||||
|
|
||||||
# Do real PXE, rather than just booting a single file, this is an
|
|
||||||
# alternative to dhcp-boot.
|
|
||||||
#pxe-prompt="What system shall I netboot?"
|
|
||||||
# or with timeout before first available action is taken:
|
|
||||||
#pxe-prompt="Press F8 for menu.", 60
|
|
||||||
|
|
||||||
# Available boot services. for PXE.
|
|
||||||
#pxe-service=x86PC, "Boot from local disk"
|
|
||||||
|
|
||||||
# Loads <tftp-root>/pxelinux.0 from dnsmasq TFTP server.
|
|
||||||
#pxe-service=x86PC, "Install Linux", pxelinux
|
|
||||||
|
|
||||||
# Loads <tftp-root>/pxelinux.0 from TFTP server at 1.2.3.4.
|
|
||||||
# Beware this fails on old PXE ROMS.
|
|
||||||
#pxe-service=x86PC, "Install Linux", pxelinux, 1.2.3.4
|
|
||||||
|
|
||||||
# Use bootserver on network, found my multicast or broadcast.
|
|
||||||
#pxe-service=x86PC, "Install windows from RIS server", 1
|
|
||||||
|
|
||||||
# Use bootserver at a known IP address.
|
|
||||||
#pxe-service=x86PC, "Install windows from RIS server", 1, 1.2.3.4
|
|
||||||
|
|
||||||
# If you have multicast-FTP available,
|
|
||||||
# information for that can be passed in a similar way using options 1
|
|
||||||
# to 5. See page 19 of
|
|
||||||
# http://download.intel.com/design/archives/wfm/downloads/pxespec.pdf
|
|
||||||
|
|
||||||
|
|
||||||
# Enable dnsmasq's built-in TFTP server
|
|
||||||
#enable-tftp
|
|
||||||
|
|
||||||
# Set the root directory for files available via FTP.
|
|
||||||
#tftp-root=/var/ftpd
|
|
||||||
|
|
||||||
# Do not abort if the tftp-root is unavailable
|
|
||||||
#tftp-no-fail
|
|
||||||
|
|
||||||
# Make the TFTP server more secure: with this set, only files owned by
|
|
||||||
# the user dnsmasq is running as will be send over the net.
|
|
||||||
#tftp-secure
|
|
||||||
|
|
||||||
# This option stops dnsmasq from negotiating a larger blocksize for TFTP
|
|
||||||
# transfers. It will slow things down, but may rescue some broken TFTP
|
|
||||||
# clients.
|
|
||||||
#tftp-no-blocksize
|
|
||||||
|
|
||||||
# Set the boot file name only when the "red" tag is set.
|
|
||||||
#dhcp-boot=tag:red,pxelinux.red-net
|
|
||||||
|
|
||||||
# An example of dhcp-boot with an external TFTP server: the name and IP
|
|
||||||
# address of the server are given after the filename.
|
|
||||||
# Can fail with old PXE ROMS. Overridden by --pxe-service.
|
|
||||||
#dhcp-boot=/var/ftpd/pxelinux.0,boothost,192.168.0.3
|
|
||||||
|
|
||||||
# If there are multiple external tftp servers having a same name
|
|
||||||
# (using /etc/hosts) then that name can be specified as the
|
|
||||||
# tftp_servername (the third option to dhcp-boot) and in that
|
|
||||||
# case dnsmasq resolves this name and returns the resultant IP
|
|
||||||
# addresses in round robin fashion. This facility can be used to
|
|
||||||
# load balance the tftp load among a set of servers.
|
|
||||||
#dhcp-boot=/var/ftpd/pxelinux.0,boothost,tftp_server_name
|
|
||||||
|
|
||||||
# Set the limit on DHCP leases, the default is 150
|
|
||||||
#dhcp-lease-max=150
|
|
||||||
|
|
||||||
# The DHCP server needs somewhere on disk to keep its lease database.
|
|
||||||
# This defaults to a sane location, but if you want to change it, use
|
|
||||||
# the line below.
|
|
||||||
#dhcp-leasefile=/var/lib/misc/dnsmasq.leases
|
|
||||||
|
|
||||||
# Set the DHCP server to authoritative mode. In this mode it will barge in
|
|
||||||
# and take over the lease for any client which broadcasts on the network,
|
|
||||||
# whether it has a record of the lease or not. This avoids long timeouts
|
|
||||||
# when a machine wakes up on a new network. DO NOT enable this if there's
|
|
||||||
# the slightest chance that you might end up accidentally configuring a DHCP
|
|
||||||
# server for your campus/company accidentally. The ISC server uses
|
|
||||||
# the same option, and this URL provides more information:
|
|
||||||
# http://www.isc.org/files/auth.html
|
|
||||||
#dhcp-authoritative
|
|
||||||
|
|
||||||
# Run an executable when a DHCP lease is created or destroyed.
|
|
||||||
# The arguments sent to the script are "add" or "del",
|
|
||||||
# then the MAC address, the IP address and finally the hostname
|
|
||||||
# if there is one.
|
|
||||||
#dhcp-script=/bin/echo
|
|
||||||
|
|
||||||
# Set the cachesize here.
|
|
||||||
#cache-size=150
|
|
||||||
|
|
||||||
# If you want to disable negative caching, uncomment this.
|
|
||||||
#no-negcache
|
|
||||||
|
|
||||||
# Normally responses which come from /etc/hosts and the DHCP lease
|
|
||||||
# file have Time-To-Live set as zero, which conventionally means
|
|
||||||
# do not cache further. If you are happy to trade lower load on the
|
|
||||||
# server for potentially stale date, you can set a time-to-live (in
|
|
||||||
# seconds) here.
|
|
||||||
#local-ttl=
|
|
||||||
|
|
||||||
# If you want dnsmasq to detect attempts by Verisign to send queries
|
|
||||||
# to unregistered .com and .net hosts to its sitefinder service and
|
|
||||||
# have dnsmasq instead return the correct NXDOMAIN response, uncomment
|
|
||||||
# this line. You can add similar lines to do the same for other
|
|
||||||
# registries which have implemented wildcard A records.
|
|
||||||
#bogus-nxdomain=64.94.110.11
|
|
||||||
|
|
||||||
# If you want to fix up DNS results from upstream servers, use the
|
|
||||||
# alias option. This only works for IPv4.
|
|
||||||
# This alias makes a result of 1.2.3.4 appear as 5.6.7.8
|
|
||||||
#alias=1.2.3.4,5.6.7.8
|
|
||||||
# and this maps 1.2.3.x to 5.6.7.x
|
|
||||||
#alias=1.2.3.0,5.6.7.0,255.255.255.0
|
|
||||||
# and this maps 192.168.0.10->192.168.0.40 to 10.0.0.10->10.0.0.40
|
|
||||||
#alias=192.168.0.10-192.168.0.40,10.0.0.0,255.255.255.0
|
|
||||||
|
|
||||||
# Change these lines if you want dnsmasq to serve MX records.
|
|
||||||
|
|
||||||
# Return an MX record named "maildomain.com" with target
|
|
||||||
# servermachine.com and preference 50
|
|
||||||
#mx-host=maildomain.com,servermachine.com,50
|
|
||||||
|
|
||||||
# Set the default target for MX records created using the localmx option.
|
|
||||||
#mx-target=servermachine.com
|
|
||||||
|
|
||||||
# Return an MX record pointing to the mx-target for all local
|
|
||||||
# machines.
|
|
||||||
#localmx
|
|
||||||
|
|
||||||
# Return an MX record pointing to itself for all local machines.
|
|
||||||
#selfmx
|
|
||||||
|
|
||||||
# Change the following lines if you want dnsmasq to serve SRV
|
|
||||||
# records. These are useful if you want to serve ldap requests for
|
|
||||||
# Active Directory and other windows-originated DNS requests.
|
|
||||||
# See RFC 2782.
|
|
||||||
# You may add multiple srv-host lines.
|
|
||||||
# The fields are <name>,<target>,<port>,<priority>,<weight>
|
|
||||||
# If the domain part if missing from the name (so that is just has the
|
|
||||||
# service and protocol sections) then the domain given by the domain=
|
|
||||||
# config option is used. (Note that expand-hosts does not need to be
|
|
||||||
# set for this to work.)
|
|
||||||
|
|
||||||
# A SRV record sending LDAP for the example.com domain to
|
|
||||||
# ldapserver.example.com port 389
|
|
||||||
#srv-host=_ldap._tcp.example.com,ldapserver.example.com,389
|
|
||||||
|
|
||||||
# A SRV record sending LDAP for the example.com domain to
|
|
||||||
# ldapserver.example.com port 389 (using domain=)
|
|
||||||
#domain=example.com
|
|
||||||
#srv-host=_ldap._tcp,ldapserver.example.com,389
|
|
||||||
|
|
||||||
# Two SRV records for LDAP, each with different priorities
|
|
||||||
#srv-host=_ldap._tcp.example.com,ldapserver.example.com,389,1
|
|
||||||
#srv-host=_ldap._tcp.example.com,ldapserver.example.com,389,2
|
|
||||||
|
|
||||||
# A SRV record indicating that there is no LDAP server for the domain
|
|
||||||
# example.com
|
|
||||||
#srv-host=_ldap._tcp.example.com
|
|
||||||
|
|
||||||
# The following line shows how to make dnsmasq serve an arbitrary PTR
|
|
||||||
# record. This is useful for DNS-SD. (Note that the
|
|
||||||
# domain-name expansion done for SRV records _does_not
|
|
||||||
# occur for PTR records.)
|
|
||||||
#ptr-record=_http._tcp.dns-sd-services,"New Employee Page._http._tcp.dns-sd-services"
|
|
||||||
|
|
||||||
# Change the following lines to enable dnsmasq to serve TXT records.
|
|
||||||
# These are used for things like SPF and zeroconf. (Note that the
|
|
||||||
# domain-name expansion done for SRV records _does_not
|
|
||||||
# occur for TXT records.)
|
|
||||||
|
|
||||||
#Example SPF.
|
|
||||||
#txt-record=example.com,"v=spf1 a -all"
|
|
||||||
|
|
||||||
#Example zeroconf
|
|
||||||
#txt-record=_http._tcp.example.com,name=value,paper=A4
|
|
||||||
|
|
||||||
# Provide an alias for a "local" DNS name. Note that this _only_ works
|
|
||||||
# for targets which are names from DHCP or /etc/hosts. Give host
|
|
||||||
# "bert" another name, bertrand
|
|
||||||
#cname=bertand,bert
|
|
||||||
|
|
||||||
# For debugging purposes, log each DNS query as it passes through
|
|
||||||
# dnsmasq.
|
|
||||||
#log-queries
|
|
||||||
|
|
||||||
# Log lots of extra information about DHCP transactions.
|
|
||||||
#log-dhcp
|
|
||||||
|
|
||||||
# Include another lot of configuration options.
|
|
||||||
#conf-file=/etc/dnsmasq.more.conf
|
|
||||||
#conf-dir=/etc/dnsmasq.d
|
|
||||||
|
|
||||||
# Include all the files in a directory except those ending in .bak
|
|
||||||
#conf-dir=/etc/dnsmasq.d,.bak
|
|
||||||
|
|
||||||
# Include all files in a directory which end in .conf
|
|
||||||
conf-dir=/etc/dnsmasq.d/,*.conf
|
|
||||||
@@ -1,47 +0,0 @@
|
|||||||
# Pi-hole: A black hole for Internet advertisements
|
|
||||||
# (c) 2015, 2016 by Jacob Salmela
|
|
||||||
# Network-wide ad blocking via your Raspberry Pi
|
|
||||||
# http://pi-hole.net
|
|
||||||
# dnsmasq config for Pi-hole
|
|
||||||
#
|
|
||||||
# Pi-hole is free software: you can redistribute it and/or modify
|
|
||||||
# it under the terms of the GNU General Public License as published by
|
|
||||||
# the Free Software Foundation, either version 2 of the License, or
|
|
||||||
# (at your option) any later version.
|
|
||||||
|
|
||||||
###############################################################################
|
|
||||||
# FILE AUTOMATICALLY POPULATED BY PI-HOLE INSTALL/UPDATE PROCEDURE. #
|
|
||||||
# ANY CHANGES MADE TO THIS FILE AFTER INSTALL WILL BE LOST ON THE NEXT UPDATE #
|
|
||||||
# #
|
|
||||||
# IF YOU WISH TO CHANGE THE UPSTREAM SERVERS, CHANGE THEM IN: #
|
|
||||||
# /etc/pihole/setupVars.conf #
|
|
||||||
# #
|
|
||||||
# ANY OTHER CHANGES SHOULD BE MADE IN A SEPERATE CONFIG FILE #
|
|
||||||
# OR IN /etc/dnsmasq.conf #
|
|
||||||
###############################################################################
|
|
||||||
|
|
||||||
addn-hosts=/etc/pihole/gravity.list
|
|
||||||
addn-hosts=/etc/pihole/local.list
|
|
||||||
addn-hosts=/etc/pihole/black.list
|
|
||||||
|
|
||||||
domain-needed
|
|
||||||
|
|
||||||
localise-queries
|
|
||||||
|
|
||||||
bogus-priv
|
|
||||||
|
|
||||||
no-resolv
|
|
||||||
|
|
||||||
server=8.8.8.8
|
|
||||||
server=8.8.4.4
|
|
||||||
|
|
||||||
interface=eth0
|
|
||||||
|
|
||||||
cache-size=10000
|
|
||||||
|
|
||||||
log-queries=extra
|
|
||||||
log-facility=/data/log/pihole.log
|
|
||||||
|
|
||||||
local-ttl=2
|
|
||||||
|
|
||||||
log-async
|
|
||||||
@@ -1,5 +0,0 @@
|
|||||||
user=pihole
|
|
||||||
group=pihole
|
|
||||||
no-hosts
|
|
||||||
addn-hosts=/etc/hosts.list
|
|
||||||
port=53
|
|
||||||
@@ -1,11 +0,0 @@
|
|||||||
/data/log/pihole-FTL.log false pihole:root 0644 0755
|
|
||||||
/data/log/pihole.log false pihole:root 0644 0755
|
|
||||||
/data/pihole/dhcp.leases false pihole:root 0644 0755
|
|
||||||
/data/pihole/pihole-FTL.db false pihole:root 0644 0755
|
|
||||||
/etc/logrotate.d/pihole false root 0644 0644
|
|
||||||
/etc/resolv.conf false doesntexist,0:1000 0664 0664
|
|
||||||
/etc/sudoers.d true root 0640 0750
|
|
||||||
/usr/bin/pihole-FTL false root 0755 0755
|
|
||||||
/var/log/nginx true nginx 0755 0644
|
|
||||||
/var/run/pihole true pihole:root 0644 0755
|
|
||||||
/var/www/html false nginx 0755 0755
|
|
||||||
@@ -1,19 +0,0 @@
|
|||||||
/data/log/pihole.log {
|
|
||||||
daily
|
|
||||||
copytruncate
|
|
||||||
rotate 5
|
|
||||||
compress
|
|
||||||
delaycompress
|
|
||||||
notifempty
|
|
||||||
nomail
|
|
||||||
}
|
|
||||||
|
|
||||||
/data/log/pihole-FTL.log {
|
|
||||||
weekly
|
|
||||||
copytruncate
|
|
||||||
rotate 3
|
|
||||||
compress
|
|
||||||
delaycompress
|
|
||||||
notifempty
|
|
||||||
nomail
|
|
||||||
}
|
|
||||||
@@ -1,26 +0,0 @@
|
|||||||
fastcgi_param QUERY_STRING $query_string;
|
|
||||||
fastcgi_param REQUEST_METHOD $request_method;
|
|
||||||
fastcgi_param CONTENT_TYPE $content_type;
|
|
||||||
fastcgi_param CONTENT_LENGTH $content_length;
|
|
||||||
|
|
||||||
fastcgi_param SCRIPT_NAME $fastcgi_script_name;
|
|
||||||
fastcgi_param REQUEST_URI $request_uri;
|
|
||||||
fastcgi_param DOCUMENT_URI $document_uri;
|
|
||||||
fastcgi_param DOCUMENT_ROOT $document_root;
|
|
||||||
fastcgi_param SERVER_PROTOCOL $server_protocol;
|
|
||||||
fastcgi_param REQUEST_SCHEME $scheme;
|
|
||||||
fastcgi_param HTTPS $https if_not_empty;
|
|
||||||
|
|
||||||
fastcgi_param GATEWAY_INTERFACE CGI/1.1;
|
|
||||||
fastcgi_param SERVER_SOFTWARE nginx/$nginx_version;
|
|
||||||
|
|
||||||
fastcgi_param REMOTE_ADDR $remote_addr;
|
|
||||||
fastcgi_param REMOTE_PORT $remote_port;
|
|
||||||
fastcgi_param SERVER_ADDR $server_addr;
|
|
||||||
fastcgi_param SERVER_PORT $server_port;
|
|
||||||
fastcgi_param SERVER_NAME $server_name;
|
|
||||||
|
|
||||||
# PHP only, required if PHP was built with --enable-force-cgi-redirect
|
|
||||||
fastcgi_param REDIRECT_STATUS 200;
|
|
||||||
# Add explicit HTTP_HOST for PHP to fix header checking
|
|
||||||
fastcgi_param HTTP_HOST pi.hole;
|
|
||||||
@@ -1,96 +0,0 @@
|
|||||||
types {
|
|
||||||
text/html html htm shtml;
|
|
||||||
text/css css;
|
|
||||||
text/xml xml;
|
|
||||||
image/gif gif;
|
|
||||||
image/jpeg jpeg jpg;
|
|
||||||
application/javascript js;
|
|
||||||
application/atom+xml atom;
|
|
||||||
application/rss+xml rss;
|
|
||||||
|
|
||||||
text/mathml mml;
|
|
||||||
text/plain txt;
|
|
||||||
text/vnd.sun.j2me.app-descriptor jad;
|
|
||||||
text/vnd.wap.wml wml;
|
|
||||||
text/x-component htc;
|
|
||||||
|
|
||||||
image/png png;
|
|
||||||
image/svg+xml svg svgz;
|
|
||||||
image/tiff tif tiff;
|
|
||||||
image/vnd.wap.wbmp wbmp;
|
|
||||||
image/webp webp;
|
|
||||||
image/x-icon ico;
|
|
||||||
image/x-jng jng;
|
|
||||||
image/x-ms-bmp bmp;
|
|
||||||
|
|
||||||
font/woff woff;
|
|
||||||
font/woff2 woff2;
|
|
||||||
|
|
||||||
application/java-archive jar war ear;
|
|
||||||
application/json json;
|
|
||||||
application/mac-binhex40 hqx;
|
|
||||||
application/msword doc;
|
|
||||||
application/pdf pdf;
|
|
||||||
application/postscript ps eps ai;
|
|
||||||
application/rtf rtf;
|
|
||||||
application/vnd.apple.mpegurl m3u8;
|
|
||||||
application/vnd.google-earth.kml+xml kml;
|
|
||||||
application/vnd.google-earth.kmz kmz;
|
|
||||||
application/vnd.ms-excel xls;
|
|
||||||
application/vnd.ms-fontobject eot;
|
|
||||||
application/vnd.ms-powerpoint ppt;
|
|
||||||
application/vnd.oasis.opendocument.graphics odg;
|
|
||||||
application/vnd.oasis.opendocument.presentation odp;
|
|
||||||
application/vnd.oasis.opendocument.spreadsheet ods;
|
|
||||||
application/vnd.oasis.opendocument.text odt;
|
|
||||||
application/vnd.openxmlformats-officedocument.presentationml.presentation
|
|
||||||
pptx;
|
|
||||||
application/vnd.openxmlformats-officedocument.spreadsheetml.sheet
|
|
||||||
xlsx;
|
|
||||||
application/vnd.openxmlformats-officedocument.wordprocessingml.document
|
|
||||||
docx;
|
|
||||||
application/vnd.wap.wmlc wmlc;
|
|
||||||
application/x-7z-compressed 7z;
|
|
||||||
application/x-cocoa cco;
|
|
||||||
application/x-java-archive-diff jardiff;
|
|
||||||
application/x-java-jnlp-file jnlp;
|
|
||||||
application/x-makeself run;
|
|
||||||
application/x-perl pl pm;
|
|
||||||
application/x-pilot prc pdb;
|
|
||||||
application/x-rar-compressed rar;
|
|
||||||
application/x-redhat-package-manager rpm;
|
|
||||||
application/x-sea sea;
|
|
||||||
application/x-shockwave-flash swf;
|
|
||||||
application/x-stuffit sit;
|
|
||||||
application/x-tcl tcl tk;
|
|
||||||
application/x-x509-ca-cert der pem crt;
|
|
||||||
application/x-xpinstall xpi;
|
|
||||||
application/xhtml+xml xhtml;
|
|
||||||
application/xspf+xml xspf;
|
|
||||||
application/zip zip;
|
|
||||||
|
|
||||||
application/octet-stream bin exe dll;
|
|
||||||
application/octet-stream deb;
|
|
||||||
application/octet-stream dmg;
|
|
||||||
application/octet-stream iso img;
|
|
||||||
application/octet-stream msi msp msm;
|
|
||||||
|
|
||||||
audio/midi mid midi kar;
|
|
||||||
audio/mpeg mp3;
|
|
||||||
audio/ogg ogg;
|
|
||||||
audio/x-m4a m4a;
|
|
||||||
audio/x-realaudio ra;
|
|
||||||
|
|
||||||
video/3gpp 3gpp 3gp;
|
|
||||||
video/mp2t ts;
|
|
||||||
video/mp4 mp4;
|
|
||||||
video/mpeg mpeg mpg;
|
|
||||||
video/quicktime mov;
|
|
||||||
video/webm webm;
|
|
||||||
video/x-flv flv;
|
|
||||||
video/x-m4v m4v;
|
|
||||||
video/x-mng mng;
|
|
||||||
video/x-ms-asf asx asf;
|
|
||||||
video/x-ms-wmv wmv;
|
|
||||||
video/x-msvideo avi;
|
|
||||||
}
|
|
||||||
@@ -1 +0,0 @@
|
|||||||
resolver %%dns_host%%;
|
|
||||||
@@ -1,15 +0,0 @@
|
|||||||
server_name $hostname;
|
|
||||||
index index.php;
|
|
||||||
|
|
||||||
add_header X-Content-Type-Options nosniff;
|
|
||||||
add_header X-XSS-Protection "1; mode=block";
|
|
||||||
add_header X-Robots-Tag none;
|
|
||||||
client_max_body_size 64M;
|
|
||||||
|
|
||||||
location ~* .(jpg|jpeg|png|gif|ico|css|js)$ {
|
|
||||||
expires 365d;
|
|
||||||
}
|
|
||||||
|
|
||||||
location ~ /\.ht {
|
|
||||||
deny all;
|
|
||||||
}
|
|
||||||
@@ -1,9 +0,0 @@
|
|||||||
ssl_protocols TLSv1.2;
|
|
||||||
ssl_prefer_server_ciphers on;
|
|
||||||
ssl_ciphers ECDHE-RSA-AES256-GCM-SHA512:DHE-RSA-AES256-GCM-SHA512:ECDHE-RSA-AES256-GCM-SHA384:DHE-RSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-SHA384:ECDHE-RSA-AES256-SHA:DHE-RSA-AES256-SHA;
|
|
||||||
ssl_ecdh_curve secp384r1;
|
|
||||||
ssl_session_timeout 10m;
|
|
||||||
ssl_session_cache shared:SSL:10m;
|
|
||||||
ssl_session_tickets off;
|
|
||||||
ssl_stapling on;
|
|
||||||
ssl_stapling_verify on;
|
|
||||||
@@ -1,83 +0,0 @@
|
|||||||
local http = require "resty.http"
|
|
||||||
local auths = ngx.shared.auths
|
|
||||||
|
|
||||||
function authenticate()
|
|
||||||
|
|
||||||
--- Test Authentication header is set and with a value
|
|
||||||
local header = ngx.req.get_headers()['Authorization']
|
|
||||||
if header == nil or header:find(" ") == nil then
|
|
||||||
return false
|
|
||||||
end
|
|
||||||
|
|
||||||
local divider = header:find(' ')
|
|
||||||
if header:sub(0, divider-1) ~= 'Basic' then
|
|
||||||
return false
|
|
||||||
end
|
|
||||||
|
|
||||||
local auth = ngx.decode_base64(header:sub(divider+1))
|
|
||||||
if auth == nil or auth:find(':') == nil then
|
|
||||||
return false
|
|
||||||
end
|
|
||||||
|
|
||||||
divider = auth:find(':')
|
|
||||||
local username = auth:sub(0, divider-1)
|
|
||||||
local password = auth:sub(divider+1)
|
|
||||||
|
|
||||||
--- Check if authentication is cached
|
|
||||||
if auths:get(username) == password then
|
|
||||||
ngx.log(ngx.DEBUG, "Authenticated user against Home Assistant (cache).")
|
|
||||||
return true
|
|
||||||
end
|
|
||||||
|
|
||||||
--- HTTP request against the Supervisor API
|
|
||||||
local httpc = http.new()
|
|
||||||
local res, err = httpc:request_uri("http://supervisor.local.hass.io/auth", {
|
|
||||||
method = "POST",
|
|
||||||
body = ngx.encode_args({["username"]=username, ["password"]=password}),
|
|
||||||
headers = {
|
|
||||||
["Content-Type"] = "application/x-www-form-urlencoded",
|
|
||||||
["X-Supervisor-Token"] = os.getenv("SUPERVISOR_TOKEN"),
|
|
||||||
},
|
|
||||||
keepalive_timeout = 60,
|
|
||||||
keepalive_pool = 10
|
|
||||||
})
|
|
||||||
|
|
||||||
--- Error during API request
|
|
||||||
if err then
|
|
||||||
ngx.log(ngx.WARN, "Error during Home Assistant user authentication.", err)
|
|
||||||
return false
|
|
||||||
end
|
|
||||||
|
|
||||||
--- No result? Something went wrong...
|
|
||||||
if not res then
|
|
||||||
ngx.log(ngx.WARN, "Error during Home Assistant user authentication.")
|
|
||||||
return false
|
|
||||||
end
|
|
||||||
|
|
||||||
--- Valid response, the username/password is valid
|
|
||||||
if res.status == 200 then
|
|
||||||
ngx.log(ngx.INFO, "Authenticated user against Home Assistant.")
|
|
||||||
auths:set(username, password, 60)
|
|
||||||
return true
|
|
||||||
end
|
|
||||||
|
|
||||||
--- Whatever the response is, it is invalid
|
|
||||||
ngx.log(ngx.WARN, "Authentication against Home Assistant failed!")
|
|
||||||
return false
|
|
||||||
end
|
|
||||||
|
|
||||||
-- Only authenticate if its not disabled
|
|
||||||
if not os.getenv('DISABLE_HA_AUTHENTICATION') then
|
|
||||||
|
|
||||||
--- Try to authenticate against HA
|
|
||||||
local authenticated = authenticate()
|
|
||||||
|
|
||||||
--- If authentication failed, throw a basic auth
|
|
||||||
if not authenticated then
|
|
||||||
ngx.header.content_type = 'text/plain'
|
|
||||||
ngx.header.www_authenticate = 'Basic realm="Home Assistant"'
|
|
||||||
ngx.status = ngx.HTTP_UNAUTHORIZED
|
|
||||||
ngx.say('401 Access Denied')
|
|
||||||
ngx.exit(ngx.HTTP_UNAUTHORIZED)
|
|
||||||
end
|
|
||||||
end
|
|
||||||
@@ -1 +0,0 @@
|
|||||||
load_module "/usr/lib/nginx/modules/ndk_http_module.so";
|
|
||||||
@@ -1 +0,0 @@
|
|||||||
load_module "/usr/lib/nginx/modules/ngx_http_lua_module.so";
|
|
||||||
@@ -1,58 +0,0 @@
|
|||||||
# Run nginx in foreground.
|
|
||||||
daemon off;
|
|
||||||
|
|
||||||
# This is run inside Docker.
|
|
||||||
user root;
|
|
||||||
|
|
||||||
# Pid storage location.
|
|
||||||
pid /var/run/nginx.pid;
|
|
||||||
|
|
||||||
# Set number of worker processes.
|
|
||||||
worker_processes 1;
|
|
||||||
|
|
||||||
# Enables the use of JIT for regular expressions to speed-up their processing.
|
|
||||||
pcre_jit on;
|
|
||||||
|
|
||||||
# Write error log to the add-on log.
|
|
||||||
error_log /proc/1/fd/1 error;
|
|
||||||
|
|
||||||
# Load allowed environment vars
|
|
||||||
env SUPERVISOR_TOKEN;
|
|
||||||
env DISABLE_HA_AUTHENTICATION;
|
|
||||||
|
|
||||||
# Load dynamic modules.
|
|
||||||
include /etc/nginx/modules/*.conf;
|
|
||||||
|
|
||||||
# Max num of simultaneous connections by a worker process.
|
|
||||||
events {
|
|
||||||
worker_connections 512;
|
|
||||||
}
|
|
||||||
|
|
||||||
http {
|
|
||||||
include /etc/nginx/includes/mime.types;
|
|
||||||
|
|
||||||
log_format homeassistant '[$time_local] $status '
|
|
||||||
'$http_x_forwarded_for($remote_addr) '
|
|
||||||
'$request ($http_user_agent)';
|
|
||||||
|
|
||||||
access_log /proc/1/fd/1 homeassistant;
|
|
||||||
client_max_body_size 4G;
|
|
||||||
default_type application/octet-stream;
|
|
||||||
gzip on;
|
|
||||||
keepalive_timeout 65;
|
|
||||||
lua_load_resty_core off;
|
|
||||||
lua_shared_dict auths 16k;
|
|
||||||
sendfile on;
|
|
||||||
server_tokens off;
|
|
||||||
tcp_nodelay on;
|
|
||||||
tcp_nopush on;
|
|
||||||
|
|
||||||
map $http_upgrade $connection_upgrade {
|
|
||||||
default upgrade;
|
|
||||||
'' close;
|
|
||||||
}
|
|
||||||
|
|
||||||
include /etc/nginx/includes/resolver.conf;
|
|
||||||
|
|
||||||
include /etc/nginx/servers/*.conf;
|
|
||||||
}
|
|
||||||
@@ -1,22 +0,0 @@
|
|||||||
server {
|
|
||||||
listen %%api_port%% default_server;
|
|
||||||
include /etc/nginx/includes/server_params.conf;
|
|
||||||
|
|
||||||
root /var/www/html/;
|
|
||||||
|
|
||||||
allow 127.0.0.1;
|
|
||||||
deny all;
|
|
||||||
|
|
||||||
location / {
|
|
||||||
deny all;
|
|
||||||
}
|
|
||||||
|
|
||||||
location = /admin/api.php {
|
|
||||||
fastcgi_pass 127.0.0.1:17276;
|
|
||||||
fastcgi_read_timeout 900;
|
|
||||||
fastcgi_split_path_info ^(.+\.php)(/.+)$;
|
|
||||||
fastcgi_index index.php;
|
|
||||||
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
|
|
||||||
include /etc/nginx/includes/fastcgi_params.conf;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@@ -1,29 +0,0 @@
|
|||||||
server {
|
|
||||||
listen %%port%% default_server ssl http2;
|
|
||||||
|
|
||||||
include /etc/nginx/includes/ssl_params.conf;
|
|
||||||
|
|
||||||
ssl_certificate /ssl/%%certfile%%;
|
|
||||||
ssl_certificate_key /ssl/%%keyfile%%;
|
|
||||||
|
|
||||||
include /etc/nginx/includes/server_params.conf;
|
|
||||||
|
|
||||||
root /var/www/html/admin;
|
|
||||||
|
|
||||||
access_by_lua_file /etc/nginx/lua/ha-auth.lua;
|
|
||||||
|
|
||||||
proxy_set_header Accept-Encoding "";
|
|
||||||
sub_filter '/admin/queries.php?' '/queries.php?';
|
|
||||||
sub_filter '/admin/scripts/pi-hole' '/scripts/pi-hole';
|
|
||||||
sub_filter_types application/javascript;
|
|
||||||
sub_filter_once off;
|
|
||||||
|
|
||||||
location ~ .php$ {
|
|
||||||
fastcgi_pass 127.0.0.1:17276;
|
|
||||||
fastcgi_read_timeout 900;
|
|
||||||
fastcgi_split_path_info ^(.+\.php)(/.+)$;
|
|
||||||
fastcgi_index index.php;
|
|
||||||
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
|
|
||||||
include /etc/nginx/includes/fastcgi_params.conf;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@@ -1,24 +0,0 @@
|
|||||||
server {
|
|
||||||
listen %%port%% default_server;
|
|
||||||
|
|
||||||
include /etc/nginx/includes/server_params.conf;
|
|
||||||
|
|
||||||
root /var/www/html/admin;
|
|
||||||
|
|
||||||
access_by_lua_file /etc/nginx/lua/ha-auth.lua;
|
|
||||||
|
|
||||||
proxy_set_header Accept-Encoding "";
|
|
||||||
sub_filter '/admin/queries.php?' '/queries.php?';
|
|
||||||
sub_filter '/admin/scripts/pi-hole' '/scripts/pi-hole';
|
|
||||||
sub_filter_types application/javascript;
|
|
||||||
sub_filter_once off;
|
|
||||||
|
|
||||||
location ~ .php$ {
|
|
||||||
fastcgi_pass 127.0.0.1:17276;
|
|
||||||
fastcgi_read_timeout 900;
|
|
||||||
fastcgi_split_path_info ^(.+\.php)(/.+)$;
|
|
||||||
fastcgi_index index.php;
|
|
||||||
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
|
|
||||||
include /etc/nginx/includes/fastcgi_params.conf;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@@ -1,25 +0,0 @@
|
|||||||
server {
|
|
||||||
listen %%interface%%:%%port%% default_server;
|
|
||||||
|
|
||||||
include /etc/nginx/includes/server_params.conf;
|
|
||||||
|
|
||||||
root /var/www/html/admin;
|
|
||||||
|
|
||||||
allow 172.30.32.2;
|
|
||||||
deny all;
|
|
||||||
|
|
||||||
proxy_set_header Accept-Encoding "";
|
|
||||||
sub_filter '/admin/queries.php?' '%%url%%queries.php?';
|
|
||||||
sub_filter '/admin/scripts/pi-hole' '%%url%%scripts/pi-hole';
|
|
||||||
sub_filter_types application/javascript;
|
|
||||||
sub_filter_once off;
|
|
||||||
|
|
||||||
location ~ .php$ {
|
|
||||||
fastcgi_pass 127.0.0.1:17276;
|
|
||||||
fastcgi_read_timeout 900;
|
|
||||||
fastcgi_split_path_info ^(.+\.php)(/.+)$;
|
|
||||||
fastcgi_index index.php;
|
|
||||||
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
|
|
||||||
include /etc/nginx/includes/fastcgi_params.conf;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@@ -1,8 +0,0 @@
|
|||||||
[general]
|
|
||||||
max_execution_time = 900
|
|
||||||
opcache.enable=1
|
|
||||||
opcache.interned_strings_buffer=8
|
|
||||||
opcache.max_accelerated_files=4096
|
|
||||||
opcache.memory_consumption=32
|
|
||||||
opcache.revalidate_freq=0
|
|
||||||
opcache.validate_timestamps=0
|
|
||||||
@@ -1,11 +0,0 @@
|
|||||||
[www]
|
|
||||||
user = nginx
|
|
||||||
group = nginx
|
|
||||||
listen = 127.0.0.1:17276
|
|
||||||
pm = dynamic
|
|
||||||
pm.max_children = 10
|
|
||||||
pm.start_servers = 3
|
|
||||||
pm.min_spare_servers = 2
|
|
||||||
pm.max_spare_servers = 5
|
|
||||||
pm.max_requests = 1024
|
|
||||||
clear_env = no
|
|
||||||
@@ -1 +0,0 @@
|
|||||||
X X X
|
|
||||||
@@ -1,22 +0,0 @@
|
|||||||
# The below list amalgamates several lists we used previously.
|
|
||||||
# See `https://github.com/StevenBlack/hosts` for details
|
|
||||||
##StevenBlack's list
|
|
||||||
https://raw.githubusercontent.com/StevenBlack/hosts/master/hosts
|
|
||||||
|
|
||||||
##MalwareDomains
|
|
||||||
https://mirror1.malwaredomains.com/files/justdomains
|
|
||||||
|
|
||||||
##Cameleon
|
|
||||||
http://sysctl.org/cameleon/hosts
|
|
||||||
|
|
||||||
##Zeustracker
|
|
||||||
https://zeustracker.abuse.ch/blocklist.php?download=domainblocklist
|
|
||||||
|
|
||||||
##Disconnect.me Tracking
|
|
||||||
https://s3.amazonaws.com/lists.disconnect.me/simple_tracking.txt
|
|
||||||
|
|
||||||
##Disconnect.me Ads
|
|
||||||
https://s3.amazonaws.com/lists.disconnect.me/simple_ad.txt
|
|
||||||
|
|
||||||
##Hosts-file.net
|
|
||||||
https://hosts-file.net/ad_servers.txt
|
|
||||||
@@ -1,10 +0,0 @@
|
|||||||
Home Assistant DNS;%%dns_host%%;;
|
|
||||||
Google (ECS);8.8.8.8;8.8.4.4;2001:4860:4860:0:0:0:0:8888;2001:4860:4860:0:0:0:0:8844
|
|
||||||
OpenDNS (ECS);208.67.222.222;208.67.220.220;2620:0:ccc::2;2620:0:ccd::2
|
|
||||||
Level3;4.2.2.1;4.2.2.2;;
|
|
||||||
Comodo;8.26.56.26;8.20.247.20;;
|
|
||||||
DNS.WATCH;84.200.69.80;84.200.70.40;2001:1608:10:25:0:0:1c04:b12f;2001:1608:10:25:0:0:9249:d69b
|
|
||||||
Quad9 (filtered, DNSSEC);9.9.9.9;149.112.112.112;2620:fe::fe;2620:fe::9
|
|
||||||
Quad9 (unfiltered, no DNSSEC);9.9.9.10;149.112.112.10;2620:fe::10;2620:fe::fe:10
|
|
||||||
Quad9 (filtered + ECS);9.9.9.11;149.112.112.11;2620:fe::11;
|
|
||||||
Cloudflare;1.1.1.1;1.0.0.1;2606:4700:4700::1111;2606:4700:4700::1001
|
|
||||||
@@ -1 +0,0 @@
|
|||||||
master master master
|
|
||||||
@@ -1,84 +0,0 @@
|
|||||||
### This file contains parameters for FTL behavior.
|
|
||||||
### At install, all parameters are commented out. The user can select desired options.
|
|
||||||
### Options shown are the default configuration. No modification is needed for most
|
|
||||||
### installations.
|
|
||||||
### Visit https://docs.pi-hole.net/ftldns/configfile/ for more detailed parameter explanations
|
|
||||||
|
|
||||||
## Socket Listening
|
|
||||||
## Listen only for local socket connections or permit all connections
|
|
||||||
## Options: localonly, all
|
|
||||||
#SOCKET_LISTENING=localonly
|
|
||||||
|
|
||||||
## Query Display
|
|
||||||
## Display all queries? Set to no to hide query display
|
|
||||||
## Options: yes, no
|
|
||||||
#QUERY_DISPLAY=yes
|
|
||||||
|
|
||||||
## AAA Query Analysis
|
|
||||||
## Allow FTL to analyze AAAA queries from pihole.log?
|
|
||||||
## Options: yes, no
|
|
||||||
#AAAA_QUERY_ANALYSIS=yes
|
|
||||||
|
|
||||||
## Resolve IPv6
|
|
||||||
## Should FTL try to resolve IPv6 addresses to host names?
|
|
||||||
## Options: yes, no
|
|
||||||
#RESOLVE_IPV6=yes
|
|
||||||
|
|
||||||
## Resolve IPv4
|
|
||||||
## Should FTL try to resolve IPv4 addresses to host names?
|
|
||||||
## Options: yes, no
|
|
||||||
#RESOLVE_IPV4=yes
|
|
||||||
|
|
||||||
## Max Database Days
|
|
||||||
## How long should queries be stored in the database in days
|
|
||||||
## Setting this to 0 disables the database
|
|
||||||
## See: https://docs.pi-hole.net/ftldns/database/
|
|
||||||
## Options: number of days
|
|
||||||
#MAXDBDAYS=365
|
|
||||||
|
|
||||||
## Database Interval
|
|
||||||
## How often do we store queries in FTL's database minutes
|
|
||||||
## See: https://docs.pi-hole.net/ftldns/database/
|
|
||||||
## Options: number of minutes
|
|
||||||
#DBINTERVAL=1.0
|
|
||||||
|
|
||||||
## Database File
|
|
||||||
## Specify path and filename of FTL's SQLite3 long-term database.
|
|
||||||
## Setting this to DBFILE= disables the database altogether
|
|
||||||
## See: https://docs.pi-hole.net/ftldns/database/
|
|
||||||
## Option: path to db file
|
|
||||||
#DBFILE=/etc/pihole/pihole-FTL.db
|
|
||||||
|
|
||||||
## Max Log Age
|
|
||||||
## Up to how many hours of queries should be imported from the database and logs in hours
|
|
||||||
## Maximum is 744 = 31 days
|
|
||||||
## Options: number of days
|
|
||||||
#MAXLOGAGE=24.0
|
|
||||||
|
|
||||||
## FTL Port
|
|
||||||
## On which port should FTL be listening?
|
|
||||||
## Options: tcp port
|
|
||||||
#FTLPORT=4711
|
|
||||||
|
|
||||||
## Privacy Level
|
|
||||||
## Which privacy level is used?
|
|
||||||
## See: https://docs.pi-hole.net/ftldns/privacylevels/
|
|
||||||
## Options: 0, 1, 2, 3
|
|
||||||
#PRIVACYLEVEL=0
|
|
||||||
|
|
||||||
## Ignore Localhost
|
|
||||||
## Should FTL ignore queries coming from the local machine?
|
|
||||||
## Options: yes, no
|
|
||||||
#IGNORE_LOCALHOST=no
|
|
||||||
|
|
||||||
## Blocking Mode
|
|
||||||
## How should FTL reply to blocked queries?
|
|
||||||
## See: https://docs.pi-hole.net/ftldns/blockingmode/
|
|
||||||
## Options: NULL, IP-AAAA-NODATA, IP, NXDOMAIN
|
|
||||||
#BLOCKINGMODE=NULL
|
|
||||||
|
|
||||||
## Regex Debug Mode
|
|
||||||
## Controls if FTLDNS should print extended details about regex matching into pihole-FTL.log.
|
|
||||||
## See: https://docs.pi-hole.net/ftldns/regex/overview/
|
|
||||||
## Options: true, false
|
|
||||||
#REGEX_DEBUGMODE=false
|
|
||||||
@@ -1,6 +0,0 @@
|
|||||||
PIHOLE_INTERFACE=eth0
|
|
||||||
IPV4_ADDRESS=0.0.0.0
|
|
||||||
IPV6_ADDRESS=0:0:0:0:0:0
|
|
||||||
PIHOLE_DNS_1=8.8.8.8
|
|
||||||
PIHOLE_DNS_2=8.8.4.4
|
|
||||||
QUERY_LOGGING=true
|
|
||||||
@@ -1,9 +0,0 @@
|
|||||||
#!/usr/bin/execlineb -S0
|
|
||||||
# ==============================================================================
|
|
||||||
# Home Assistant Community Add-on: Pi-hole
|
|
||||||
# Take down the S6 supervision tree when crond fails
|
|
||||||
# ==============================================================================
|
|
||||||
if -n { s6-test $# -ne 0 }
|
|
||||||
if -n { s6-test ${1} -eq 256 }
|
|
||||||
|
|
||||||
s6-svscanctl -t /var/run/s6/services
|
|
||||||
@@ -1,6 +0,0 @@
|
|||||||
#!/usr/bin/with-contenv bashio
|
|
||||||
# ==============================================================================
|
|
||||||
# Home Assistant Community Add-on: Pi-hole
|
|
||||||
# Runs the cron daemon
|
|
||||||
# ==============================================================================
|
|
||||||
exec fdmove -c 2 1 /usr/sbin/crond -f -L /var/log/cron -l 0 -c /etc/crontabs
|
|
||||||
@@ -1,9 +0,0 @@
|
|||||||
#!/usr/bin/execlineb -S0
|
|
||||||
# ==============================================================================
|
|
||||||
# Home Assistant Community Add-on: Pi-hole
|
|
||||||
# Take down the S6 supervision tree when Nginx fails
|
|
||||||
# ==============================================================================
|
|
||||||
if -n { s6-test $# -ne 0 }
|
|
||||||
if -n { s6-test ${1} -eq 256 }
|
|
||||||
|
|
||||||
s6-svscanctl -t /var/run/s6/services
|
|
||||||
@@ -1,12 +0,0 @@
|
|||||||
#!/usr/bin/with-contenv bashio
|
|
||||||
# ==============================================================================
|
|
||||||
# Home Assistant Community Add-on: Pi-hole
|
|
||||||
# Runs the Nginx daemon
|
|
||||||
# ==============================================================================
|
|
||||||
|
|
||||||
# Wait for PHP-FPM to become available
|
|
||||||
bashio::net.wait_for 17276
|
|
||||||
|
|
||||||
bashio::log.info "Starting NGinx...."
|
|
||||||
|
|
||||||
exec nginx
|
|
||||||
@@ -1,9 +0,0 @@
|
|||||||
#!/usr/bin/execlineb -S0
|
|
||||||
# ==============================================================================
|
|
||||||
# Home Assistant Community Add-on: Pi-hole
|
|
||||||
# Take down the S6 supervision tree when PHP FPM fails
|
|
||||||
# ==============================================================================
|
|
||||||
if -n { s6-test $# -ne 0 }
|
|
||||||
if -n { s6-test ${1} -eq 256 }
|
|
||||||
|
|
||||||
s6-svscanctl -t /var/run/s6/services
|
|
||||||
@@ -1,9 +0,0 @@
|
|||||||
#!/usr/bin/with-contenv bashio
|
|
||||||
# ==============================================================================
|
|
||||||
# Home Assistant Community Add-on: Pi-hole
|
|
||||||
# Runs the PHP-FPM daemon
|
|
||||||
# ==============================================================================
|
|
||||||
|
|
||||||
bashio::log.info "Starting PHP-FPM..."
|
|
||||||
export PHP_ERROR_LOG=/dev/stderr
|
|
||||||
exec php-fpm7 --nodaemonize
|
|
||||||
@@ -1,9 +0,0 @@
|
|||||||
#!/usr/bin/execlineb -S0
|
|
||||||
# ==============================================================================
|
|
||||||
# Home Assistant Community Add-on: Pi-hole
|
|
||||||
# Take down the S6 supervision tree when Pi-hole FTL fails
|
|
||||||
# ==============================================================================
|
|
||||||
if -n { s6-test $# -ne 0 }
|
|
||||||
if -n { s6-test ${1} -eq 256 }
|
|
||||||
|
|
||||||
s6-svscanctl -t /var/run/s6/services
|
|
||||||
@@ -1,15 +0,0 @@
|
|||||||
#!/usr/bin/with-contenv bashio
|
|
||||||
# ==============================================================================
|
|
||||||
# Home Assistant Community Add-on: Pi-hole
|
|
||||||
# Runs the Pi-hole FTL daemon
|
|
||||||
# ==============================================================================
|
|
||||||
mkdir -p /var/run/pihole
|
|
||||||
chown pihole:pihole /var/run/pihole
|
|
||||||
|
|
||||||
bashio::log.info "Starting Pi-Hole FTL..."
|
|
||||||
|
|
||||||
if bashio::debug; then
|
|
||||||
exec s6-setuidgid pihole pihole-FTL debug
|
|
||||||
else
|
|
||||||
exec s6-setuidgid pihole pihole-FTL no-daemon
|
|
||||||
fi
|
|
||||||
@@ -1,11 +0,0 @@
|
|||||||
# Pi-hole: A black hole for Internet advertisements
|
|
||||||
# (c) 2017 Pi-hole, LLC (https://pi-hole.net)
|
|
||||||
# Network-wide ad blocking via your own hardware.
|
|
||||||
#
|
|
||||||
# Allows the WebUI to use Pi-hole commands
|
|
||||||
#
|
|
||||||
# This file is copyright under the latest version of the EUPL.
|
|
||||||
# Please see LICENSE file for your rights under this license.
|
|
||||||
#
|
|
||||||
nginx ALL=NOPASSWD: /usr/local/bin/pihole, /usr/bin/restart_addon, /usr/bin/stop_addon
|
|
||||||
Defaults secure_path = /usr/bin:/sbin:/bin:/usr/sbin:/usr/local/bin
|
|
||||||
@@ -1,35 +0,0 @@
|
|||||||
diff --git a/Makefile b/Makefile
|
|
||||||
index 009e18f..94b12e4 100644
|
|
||||||
--- a/Makefile
|
|
||||||
+++ b/Makefile
|
|
||||||
@@ -98,7 +98,7 @@ CCFLAGS=-std=gnu11 -I$(IDIR) $(WARNFLAGS) -D_FILE_OFFSET_BITS=64 $(HARDENING_FLA
|
|
||||||
# for dnsmasq we need the nettle crypto library and the gmp maths library
|
|
||||||
# We link the two libraries statically. Although this increases the binary file size by about 1 MB, it saves about 5 MB of shared libraries and makes deployment easier
|
|
||||||
#LIBS=-pthread -lnettle -lgmp -lhogweed
|
|
||||||
-LIBS=-pthread -lrt -Wl,-Bstatic -L/usr/local/lib -lhogweed -lgmp -lnettle -Wl,-Bdynamic
|
|
||||||
+LIBS=-pthread -lrt -Wl,-lhogweed -lgmp -lnettle -Wl,-Bdynamic
|
|
||||||
# Flags for compiling with libidn : -lidn
|
|
||||||
# Flags for compiling with libidn2: -lidn2
|
|
||||||
|
|
||||||
diff --git a/dnsmasq/crypto.c b/dnsmasq/crypto.c
|
|
||||||
index 3b98974..f21caef 100644
|
|
||||||
--- a/dnsmasq/crypto.c
|
|
||||||
+++ b/dnsmasq/crypto.c
|
|
||||||
@@ -294,7 +294,7 @@ static int dnsmasq_ecdsa_verify(struct blockdata *key_data, unsigned int key_len
|
|
||||||
if (!(key_256 = whine_malloc(sizeof(struct ecc_point))))
|
|
||||||
return 0;
|
|
||||||
|
|
||||||
- nettle_ecc_point_init(key_256, &nettle_secp_256r1);
|
|
||||||
+ nettle_ecc_point_init(key_256, nettle_get_secp_256r1());
|
|
||||||
}
|
|
||||||
|
|
||||||
key = key_256;
|
|
||||||
@@ -307,7 +307,7 @@ static int dnsmasq_ecdsa_verify(struct blockdata *key_data, unsigned int key_len
|
|
||||||
if (!(key_384 = whine_malloc(sizeof(struct ecc_point))))
|
|
||||||
return 0;
|
|
||||||
|
|
||||||
- nettle_ecc_point_init(key_384, &nettle_secp_384r1);
|
|
||||||
+ nettle_ecc_point_init(key_384, nettle_get_secp_384r1());
|
|
||||||
}
|
|
||||||
|
|
||||||
key = key_384;
|
|
||||||
@@ -1,14 +0,0 @@
|
|||||||
diff --git a/dnsmasq/dnsmasq.h b/dnsmasq/dnsmasq.h
|
|
||||||
index 10ef7ee..69f4ee1 100644
|
|
||||||
--- a/dnsmasq/dnsmasq.h
|
|
||||||
+++ b/dnsmasq/dnsmasq.h
|
|
||||||
@@ -88,7 +88,7 @@ typedef unsigned long long u64;
|
|
||||||
#if defined(HAVE_SOLARIS_NETWORK)
|
|
||||||
# include <sys/sockio.h>
|
|
||||||
#endif
|
|
||||||
-#include <sys/poll.h>
|
|
||||||
+#include <poll.h>
|
|
||||||
#include <sys/wait.h>
|
|
||||||
#include <sys/time.h>
|
|
||||||
#include <sys/un.h>
|
|
||||||
|
|
||||||
@@ -1,29 +0,0 @@
|
|||||||
diff --git a/signals.c b/signals.c
|
|
||||||
index 0fa70d5..fd5a15c 100644
|
|
||||||
--- a/signals.c
|
|
||||||
+++ b/signals.c
|
|
||||||
@@ -40,24 +40,6 @@ static void SIGSEGV_handler(int sig, siginfo_t *si, void *unused)
|
|
||||||
default: logg(" with code: Unknown (%i), ",si->si_code); break;
|
|
||||||
}
|
|
||||||
|
|
||||||
- // Try to obtain backtrace. This may not always be helpful, but it is better than nothing
|
|
||||||
- void *buffer[255];
|
|
||||||
- const int calls = backtrace(buffer, sizeof(buffer)/sizeof(void *));
|
|
||||||
- char ** bcktrace = backtrace_symbols(buffer, calls);
|
|
||||||
- if(bcktrace == NULL)
|
|
||||||
- {
|
|
||||||
- logg("Unable to obtain backtrace (%i)!",calls);
|
|
||||||
- }
|
|
||||||
- else
|
|
||||||
- {
|
|
||||||
- logg("Backtrace:");
|
|
||||||
- int j;
|
|
||||||
- for (j = 0; j < calls; j++)
|
|
||||||
- {
|
|
||||||
- logg("B[%04i]: %s",j,bcktrace[j]);
|
|
||||||
- }
|
|
||||||
- }
|
|
||||||
- free(bcktrace);
|
|
||||||
|
|
||||||
logg("Thank you for helping us to improve our FTL engine!");
|
|
||||||
|
|
||||||
@@ -1,13 +0,0 @@
|
|||||||
diff --git a/pihole b/pihole
|
|
||||||
index d2ff364..38e09d0 100755
|
|
||||||
--- a/pihole
|
|
||||||
+++ b/pihole
|
|
||||||
@@ -105,7 +105,7 @@ restartDNS() {
|
|
||||||
if [[ "${svcOption}" =~ "reload" ]]; then
|
|
||||||
# Reload has been requested
|
|
||||||
# Note: This will NOT re-read any *.conf files
|
|
||||||
- svc="killall -s SIGHUP ${resolver}"
|
|
||||||
+ svc="kill -s SIGHUP $(pgrep ${resolver})"
|
|
||||||
else
|
|
||||||
# A full restart has been requested
|
|
||||||
svc="service ${resolver} restart"
|
|
||||||
@@ -1,11 +0,0 @@
|
|||||||
#!/usr/bin/env bashio
|
|
||||||
# ==============================================================================
|
|
||||||
# Home Assistant Community Add-on: Pi-hole
|
|
||||||
# Restarts the add-on
|
|
||||||
# ==============================================================================
|
|
||||||
|
|
||||||
echo "Restarting add-on in 15 seconds"
|
|
||||||
|
|
||||||
sleep 15
|
|
||||||
|
|
||||||
bashio::addon.restart
|
|
||||||
@@ -1,10 +0,0 @@
|
|||||||
#!/usr/bin/env bashio
|
|
||||||
# ==============================================================================
|
|
||||||
# Home Assistant Community Add-on: Pi-hole
|
|
||||||
# Stops the add-on
|
|
||||||
# ==============================================================================
|
|
||||||
echo "Stopping add-on in 15 seconds"
|
|
||||||
|
|
||||||
sleep 15
|
|
||||||
|
|
||||||
bashio::addon.stop
|
|
||||||
@@ -1,11 +0,0 @@
|
|||||||
{
|
|
||||||
"extends": [
|
|
||||||
"config:base"
|
|
||||||
],
|
|
||||||
"commitMessageAction": "Updates",
|
|
||||||
"commitMessageTopic": "{{depName}}",
|
|
||||||
"commitMessagePrefix": ":arrow_up:",
|
|
||||||
"labels": [
|
|
||||||
"Type: Maintenance"
|
|
||||||
]
|
|
||||||
}
|
|
||||||
Reference in New Issue
Block a user