├── .codespellignore
├── .editorconfig
├── .gitattributes
├── .github
├── ISSUE_TEMPLATE.md
├── dco.yml
├── dependabot.yml
├── release.yml
└── workflows
│ ├── codeql.yml
│ ├── codespell.yml
│ ├── editorconfig-checker
│ ├── editorconfig-checker.yml
│ ├── merge-conflict.yml
│ ├── php-cs-fixer.yml
│ ├── phpstan.yml
│ ├── stale.yml
│ ├── stale_pr.yml
│ ├── sync-back-to-dev.yml
│ └── test.yml
├── .gitignore
├── .php-cs-fixer.dist.php
├── .stickler.yml
├── .yamllint.conf
├── CONTRIBUTING.md
├── LICENSE
├── README.md
├── api.php
├── api_FTL.php
├── api_db.php
├── api_speedtest.php
├── auditlog.php
├── cname_records.php
├── composer.json
├── composer.lock
├── db_graph.php
├── db_lists.php
├── db_queries.php
├── debug.php
├── dns_records.php
├── gravity.php
├── groups-adlists.php
├── groups-clients.php
├── groups-domains.php
├── groups.php
├── img
├── boxed-bg-dark.png
├── boxed-bg.png
├── favicons
│ ├── android-chrome-192x192.png
│ ├── android-chrome-512x512.png
│ ├── apple-touch-icon.png
│ ├── favicon-16x16.png
│ ├── favicon-32x32.png
│ ├── favicon.ico
│ ├── manifest.json
│ ├── mstile-150x150.png
│ └── safari-pinned-tab.svg
├── logo.svg
├── pihole_icon.svg
├── st-chart.png
└── st-pref.png
├── index.php
├── login.php
├── logout.php
├── messages.php
├── network.php
├── package-lock.json
├── package.json
├── phpstan.neon.dist
├── queries.php
├── queryads.php
├── scripts
├── pi-hole
│ ├── js
│ │ ├── auditlog.js
│ │ ├── customcname.js
│ │ ├── customdns.js
│ │ ├── db_graph.js
│ │ ├── db_lists.js
│ │ ├── db_queries.js
│ │ ├── debug.js
│ │ ├── footer.js
│ │ ├── gravity.js
│ │ ├── groups-adlists.js
│ │ ├── groups-clients.js
│ │ ├── groups-domains.js
│ │ ├── groups.js
│ │ ├── index.js
│ │ ├── ip-address-sorting.js
│ │ ├── messages.js
│ │ ├── network.js
│ │ ├── queries.js
│ │ ├── queryads.js
│ │ ├── restartdns.js
│ │ ├── settings.js
│ │ ├── speedresults.js
│ │ ├── speedtest.js
│ │ ├── taillog-FTL.js
│ │ ├── taillog.js
│ │ └── utils.js
│ └── php
│ │ ├── FTL.php
│ │ ├── api_token.php
│ │ ├── auth.php
│ │ ├── customcname.php
│ │ ├── customdns.php
│ │ ├── database.php
│ │ ├── debug.php
│ │ ├── footer.php
│ │ ├── func.php
│ │ ├── gravity.php
│ │ ├── gravity.sh.php
│ │ ├── groups.php
│ │ ├── header.php
│ │ ├── header_authenticated.php
│ │ ├── message.php
│ │ ├── network.php
│ │ ├── password.php
│ │ ├── persistentlogin_token.php
│ │ ├── queryads.php
│ │ ├── savesettings.php
│ │ ├── sidebar.php
│ │ ├── tailLog.php
│ │ ├── teleporter.php
│ │ ├── theme.php
│ │ └── update_checker.php
└── vendor
│ ├── LICENSE
│ ├── adminlte.min.js
│ ├── bootstrap-notify.min.js
│ ├── bootstrap-select.min.js
│ ├── bootstrap-select.min.js.map
│ ├── bootstrap-toggle.min.js
│ ├── bootstrap-toggle.min.js.map
│ ├── chart.min.js
│ ├── chartjs-adapter-moment.js
│ ├── chartjs-adapter-moment.min.js.map
│ ├── datatables.buttons.min.js
│ ├── datatables.min.js
│ ├── datatables.select.min.js
│ ├── daterangepicker.min.js
│ ├── daterangepicker.min.js.map
│ ├── jquery.confirm.min.js
│ ├── jquery.min.js
│ ├── moment.min.js
│ ├── qrcode.php
│ └── select2.min.js
├── settings.php
├── speedtest.php
├── style
├── pi-hole.css
├── themes
│ ├── default-auto.css
│ ├── default-dark.css
│ ├── default-darker.css
│ ├── default-light.css
│ ├── high-contrast-dark.css
│ ├── high-contrast.css
│ ├── lcars-picard.css
│ └── lcars.css
└── vendor
│ ├── AdminLTE.min.css
│ ├── LICENSE
│ ├── SourceSansPro
│ ├── SourceSansPro.css
│ ├── source-sans-pro-v13-latin-300.woff
│ ├── source-sans-pro-v13-latin-300.woff2
│ ├── source-sans-pro-v13-latin-300italic.woff
│ ├── source-sans-pro-v13-latin-300italic.woff2
│ ├── source-sans-pro-v13-latin-600.woff
│ ├── source-sans-pro-v13-latin-600.woff2
│ ├── source-sans-pro-v13-latin-600italic.woff
│ ├── source-sans-pro-v13-latin-600italic.woff2
│ ├── source-sans-pro-v13-latin-700.woff
│ ├── source-sans-pro-v13-latin-700.woff2
│ ├── source-sans-pro-v13-latin-italic.woff
│ ├── source-sans-pro-v13-latin-italic.woff2
│ ├── source-sans-pro-v13-latin-regular.woff
│ └── source-sans-pro-v13-latin-regular.woff2
│ ├── animate.min.css
│ ├── bootstrap-select.min.css
│ ├── bootstrap-toggle.min.css
│ ├── bootstrap
│ ├── css
│ │ ├── bootstrap.min.css
│ │ └── bootstrap.min.css.map
│ ├── fonts
│ │ ├── glyphicons-halflings-regular.eot
│ │ ├── glyphicons-halflings-regular.svg
│ │ ├── glyphicons-halflings-regular.ttf
│ │ ├── glyphicons-halflings-regular.woff
│ │ └── glyphicons-halflings-regular.woff2
│ └── js
│ │ └── bootstrap.min.js
│ ├── datatables.min.css
│ ├── datatables_extensions.min.css
│ ├── daterangepicker.min.css
│ ├── font-awesome
│ └── js
│ │ └── all.min.js
│ ├── fonts
│ ├── antonio
│ │ ├── antonio-v1-latin-ext_latin-100.woff
│ │ ├── antonio-v1-latin-ext_latin-100.woff2
│ │ ├── antonio-v1-latin-ext_latin-700.woff
│ │ ├── antonio-v1-latin-ext_latin-700.woff2
│ │ ├── antonio-v1-latin-ext_latin-regular.woff
│ │ ├── antonio-v1-latin-ext_latin-regular.woff2
│ │ └── antonio.css
│ └── ubuntu-mono
│ │ ├── ubuntu-mono-v10-latin-ext_latin-700.woff
│ │ ├── ubuntu-mono-v10-latin-ext_latin-700.woff2
│ │ ├── ubuntu-mono-v10-latin-ext_latin-700italic.woff
│ │ ├── ubuntu-mono-v10-latin-ext_latin-700italic.woff2
│ │ ├── ubuntu-mono-v10-latin-ext_latin-italic.woff
│ │ ├── ubuntu-mono-v10-latin-ext_latin-italic.woff2
│ │ ├── ubuntu-mono-v10-latin-ext_latin-regular.woff
│ │ ├── ubuntu-mono-v10-latin-ext_latin-regular.woff2
│ │ └── ubuntu-mono.css
│ ├── icheck-bootstrap.min.css
│ ├── icheck-material.min.css
│ ├── js-warn.css
│ └── select2.min.css
├── taillog-FTL.php
└── taillog.php
/.codespellignore:
--------------------------------------------------------------------------------
1 | ede
2 | EDE
3 | doubleclick
4 |
--------------------------------------------------------------------------------
/.editorconfig:
--------------------------------------------------------------------------------
1 | # EditorConfig is awesome: https://editorconfig.org/
2 |
3 | # top-most EditorConfig file
4 | root = true
5 |
6 | # A newline ending every file
7 | [*]
8 | insert_final_newline = true
9 | indent_style = space
10 | indent_size = 4
11 | charset = utf-8
12 | trim_trailing_whitespace = true
13 |
14 | [*.css]
15 | indent_size = 2
16 |
17 | [*.js]
18 | indent_size = 2
19 |
20 | [package.json]
21 | indent_size = 2
22 |
23 | [.yamllint.conf]
24 | indent_size = 2
25 |
26 | [*.yml]
27 | indent_size = 2
28 |
29 | [*.md]
30 | indent_size = 2
31 |
32 | # Ignore paths
33 | [**/vendor/**]
34 | charset = unset
35 | end_of_line = unset
36 | insert_final_newline = unset
37 | trim_trailing_whitespace = unset
38 | indent_style = unset
39 | indent_size = unset
40 |
--------------------------------------------------------------------------------
/.gitattributes:
--------------------------------------------------------------------------------
1 | * text=auto
2 |
--------------------------------------------------------------------------------
/.github/ISSUE_TEMPLATE.md:
--------------------------------------------------------------------------------
1 | **In raising this issue, I confirm the following:** `{please fill the checkboxes, e.g: [X]}`
2 |
3 | - [] I have read and understood the [contributors guide](https://github.com/pi-hole/AdminLTE/blob/master/CONTRIBUTING.md).
4 | - [] The issue I am reporting can be _replicated_.
5 | - [] The issue I am reporting isn't a duplicate (see [FAQs](https://github.com/pi-hole/pi-hole/wiki/FAQs), [closed issues](https://github.com/pi-hole/AdminLTE/issues?utf8=%E2%9C%93&q=is%3Aissue%20is%3Aclosed%20), and [open issues](https://github.com/pi-hole/AdminLTE/issues)).
6 |
7 | **How familiar are you with the the source code relevant to this issue?:**
8 |
9 | `{Replace this with a number from 1 to 10. 1 being not familiar, and 10 being very familiar}`
10 |
11 | ---
12 |
13 | **Expected behavior:**
14 |
15 | `{A detailed description of what you expect to see}`
16 |
17 | **Actual behavior:**
18 |
19 | `{A detailed description and/or screenshots of what you do see}`
20 |
21 | **Steps to reproduce:**
22 |
23 | `{Detailed steps of how we can reproduce this}`
24 |
25 | **Debug token provided by [uploading `pihole -d` log](https://discourse.pi-hole.net/t/the-pihole-command-with-examples/738#debug):**
26 |
27 | `{Alphanumeric token}`
28 |
29 | **Troubleshooting undertaken, and/or other relevant information:**
30 |
31 | `{Steps of what you have done to fix this}`
32 |
33 | > - `{Please delete this quoted section when opening your issue}`
34 | > - You must follow the template instructions. Failure to do so will result in your issue being closed.
35 | > - Please [submit any feature requests here](https://discourse.pi-hole.net/c/feature-requests), so it is votable and trackable by the community.
36 | > - Please respect that Pi-hole is developed by volunteers, who can only reply in their spare time.
37 | > - Detail helps us understand and resolve an issue quicker, but please ensure it's relevant.
38 | > - _This template was created based on the work of [`udemy-dl`](https://github.com/nishad/udemy-dl/blob/master/LICENSE)._
39 |
--------------------------------------------------------------------------------
/.github/dco.yml:
--------------------------------------------------------------------------------
1 | require:
2 | members: false
3 |
--------------------------------------------------------------------------------
/.github/dependabot.yml:
--------------------------------------------------------------------------------
1 | version: 2
2 | updates:
3 | - package-ecosystem: npm
4 | directory: "/"
5 | schedule:
6 | interval: weekly
7 | day: saturday
8 | time: "10:00"
9 | open-pull-requests-limit: 10
10 | target-branch: devel
11 | versioning-strategy: increase
12 | reviewers:
13 | - "pi-hole/web-maintainers"
14 | - package-ecosystem: github-actions
15 | directory: "/"
16 | schedule:
17 | interval: weekly
18 | day: saturday
19 | time: "10:00"
20 | open-pull-requests-limit: 10
21 | target-branch: devel
22 | reviewers:
23 | - "pi-hole/web-maintainers"
24 | - package-ecosystem: composer
25 | directory: "/"
26 | schedule:
27 | interval: weekly
28 | day: saturday
29 | time: "10:00"
30 | open-pull-requests-limit: 10
31 | target-branch: devel
32 | reviewers:
33 | - "pi-hole/web-maintainers"
34 |
35 | # As above, but for development-v6
36 | - package-ecosystem: npm
37 | directory: "/"
38 | schedule:
39 | interval: weekly
40 | day: saturday
41 | time: "10:00"
42 | open-pull-requests-limit: 10
43 | target-branch: development-v6
44 | versioning-strategy: increase
45 | reviewers:
46 | - "pi-hole/web-maintainers"
47 | - package-ecosystem: github-actions
48 | directory: "/"
49 | schedule:
50 | interval: weekly
51 | day: saturday
52 | time: "10:00"
53 | open-pull-requests-limit: 10
54 | target-branch: development-v6
55 | reviewers:
56 | - "pi-hole/web-maintainers"
57 | - package-ecosystem: composer
58 | directory: "/"
59 | schedule:
60 | interval: weekly
61 | day: saturday
62 | time: "10:00"
63 | open-pull-requests-limit: 10
64 | target-branch: development-v6
65 | reviewers:
66 | - "pi-hole/web-maintainers"
67 |
--------------------------------------------------------------------------------
/.github/release.yml:
--------------------------------------------------------------------------------
1 | changelog:
2 | exclude:
3 | labels:
4 | - internal
5 | authors:
6 | - dependabot
7 | - github-actions
8 |
--------------------------------------------------------------------------------
/.github/workflows/codeql.yml:
--------------------------------------------------------------------------------
1 | name: "CodeQL"
2 |
3 | on:
4 | push:
5 | branches:
6 | - master
7 | - devel
8 | - "!dependabot/**"
9 | pull_request:
10 | # The branches below must be a subset of the branches above
11 | branches:
12 | - master
13 | - devel
14 | schedule:
15 | - cron: "0 0 * * 0"
16 |
17 | jobs:
18 | analyze:
19 | name: Analyze
20 | runs-on: ubuntu-latest
21 |
22 | steps:
23 | - name: Checkout repository
24 | uses: actions/checkout@v4.1.1
25 | # Initializes the CodeQL tools for scanning.
26 | - name: Initialize CodeQL
27 | uses: github/codeql-action/init@v2
28 | with:
29 | languages: "javascript"
30 |
31 | - name: Autobuild
32 | uses: github/codeql-action/autobuild@v2
33 |
34 | - name: Perform CodeQL Analysis
35 | uses: github/codeql-action/analyze@v2
36 |
--------------------------------------------------------------------------------
/.github/workflows/codespell.yml:
--------------------------------------------------------------------------------
1 | name: Codespell
2 |
3 | on:
4 | pull_request:
5 | types: [opened, synchronize, reopened, ready_for_review]
6 |
7 | jobs:
8 | spell-check:
9 | if: github.event.pull_request.draft == false
10 | runs-on: ubuntu-latest
11 | steps:
12 | -
13 | name: Checkout repository
14 | uses: actions/checkout@v4.1.1
15 | -
16 | name: Spell-Checking
17 | uses: codespell-project/actions-codespell@master
18 | with:
19 | ignore_words_file: .codespellignore
20 | skip: ./scripts/vendor,./style/vendor,./package.json,./package-lock.json,./composer.json,./composer.lock
21 |
--------------------------------------------------------------------------------
/.github/workflows/editorconfig-checker:
--------------------------------------------------------------------------------
1 | name: editorconfig-checker
2 |
3 | on:
4 | pull_request:
5 | push:
6 |
7 | jobs:
8 | build:
9 | name: editorconfig-checker
10 | runs-on: ubuntu-20.04
11 | steps:
12 | - uses: actions/checkout@v3
13 | - uses: editorconfig-checker/action-editorconfig-checker@main
14 | - run: editorconfig-checker
15 |
--------------------------------------------------------------------------------
/.github/workflows/editorconfig-checker.yml:
--------------------------------------------------------------------------------
1 | name: editorconfig-checker
2 |
3 | on:
4 | pull_request:
5 | push:
6 |
7 | jobs:
8 | build:
9 | name: editorconfig-checker
10 | runs-on: ubuntu-latest
11 | steps:
12 | - uses: actions/checkout@v4.1.1
13 | - uses: editorconfig-checker/action-editorconfig-checker@main
14 | - run: editorconfig-checker
15 |
--------------------------------------------------------------------------------
/.github/workflows/merge-conflict.yml:
--------------------------------------------------------------------------------
1 | name: "Check for merge conflicts"
2 | on:
3 | # So that PRs touching the same files as the push are updated
4 | push:
5 | # So that the `dirtyLabel` is removed if conflicts are resolve
6 | # We recommend `pull_request_target` so that github secrets are available.
7 | # In `pull_request` we wouldn't be able to change labels of fork PRs
8 | pull_request_target:
9 | types: [synchronize]
10 |
11 | jobs:
12 | main:
13 | runs-on: ubuntu-latest
14 | steps:
15 | - name: Check if PRs are have merge conflicts
16 | uses: eps1lon/actions-label-merge-conflict@v2.1.0
17 | with:
18 | dirtyLabel: "Merge Conflicts"
19 | repoToken: "${{ secrets.GITHUB_TOKEN }}"
20 | commentOnDirty: "This pull request has conflicts, please resolve those before we can evaluate the pull request."
21 | commentOnClean: "Conflicts have been resolved."
22 |
--------------------------------------------------------------------------------
/.github/workflows/php-cs-fixer.yml:
--------------------------------------------------------------------------------
1 | # .github/workflows/php-cs-fixer.yml
2 | on: [push, pull_request]
3 | name: Lint
4 | jobs:
5 | php-cs-fixer:
6 | name: PHP-CS-Fixer
7 | runs-on: ubuntu-latest
8 | steps:
9 | - uses: actions/checkout@v4.1.1
10 | - name: PHP-CS-Fixer
11 | uses: docker://oskarstark/php-cs-fixer-ga
12 | with:
13 | args: --diff --dry-run
14 |
--------------------------------------------------------------------------------
/.github/workflows/phpstan.yml:
--------------------------------------------------------------------------------
1 | name: PHPStan
2 |
3 | on:
4 | push:
5 | pull_request:
6 |
7 | jobs:
8 | build:
9 | runs-on: ubuntu-latest
10 | steps:
11 | - uses: actions/checkout@v4.1.1
12 |
13 | - name: Install composer
14 | uses: php-actions/composer@v6
15 |
16 | - name: Run PHPStan
17 | uses: php-actions/phpstan@v3
18 | with:
19 | configuration: phpstan.neon.dist
20 | memory_limit: 256M
21 |
22 |
--------------------------------------------------------------------------------
/.github/workflows/stale.yml:
--------------------------------------------------------------------------------
1 | name: Mark stale issues
2 |
3 | on:
4 | schedule:
5 | - cron: '0 8 * * *'
6 | workflow_dispatch:
7 | issue_comment:
8 |
9 | env:
10 | stale_label: stale
11 |
12 | jobs:
13 | stale_action:
14 | if: github.event_name != 'issue_comment'
15 | runs-on: ubuntu-latest
16 | permissions:
17 | issues: write
18 |
19 | steps:
20 | - uses: actions/stale@v8.0.0
21 | with:
22 | repo-token: ${{ secrets.GITHUB_TOKEN }}
23 | days-before-stale: 30
24 | days-before-close: 5
25 | stale-issue-message: 'This issue is stale because it has been open 30 days with no activity. Please comment or update this issue or it will be closed in 5 days.'
26 | stale-issue-label: '${{ env.stale_label }}'
27 | exempt-issue-labels: 'internal, Fixed In Next Release, Bug, never-stale'
28 | exempt-all-issue-assignees: true
29 | operations-per-run: 300
30 | close-issue-reason: 'not_planned'
31 |
32 | remove_stale:
33 | # trigger "stale" removal immediately when stale issues are commented on
34 | # we need to explicitly check that the trigger does not run on comment on a PR as
35 | # 'issue_comment' triggers on issues AND PR comments
36 | # https://docs.github.com/en/actions/using-workflows/events-that-trigger-workflows#issue_comment-on-issues-only-or-pull-requests-only
37 | if: ${{ !github.event.issue.pull_request && github.event_name != 'schedule' }}
38 | permissions:
39 | contents: read # for actions/checkout
40 | issues: write # to edit issues label
41 | runs-on: ubuntu-latest
42 | steps:
43 | - name: Checkout
44 | uses: actions/checkout@v4.1.1
45 | - name: Remove 'stale' label
46 | run: gh issue edit ${{ github.event.issue.number }} --remove-label ${{ env.stale_label }}
47 | env:
48 | GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
49 |
--------------------------------------------------------------------------------
/.github/workflows/stale_pr.yml:
--------------------------------------------------------------------------------
1 | name: Close stale PR
2 | # This action will add a `stale` label and close immediately every PR that meets the following conditions:
3 | # - it is already marked with "merge conflict" label
4 | # - there was no update/comment on the PR in the last 30 days.
5 |
6 | on:
7 | schedule:
8 | - cron: '0 10 * * *'
9 | workflow_dispatch:
10 |
11 | jobs:
12 | stale:
13 |
14 | runs-on: ubuntu-latest
15 | permissions:
16 | issues: write
17 | pull-requests: write
18 |
19 | steps:
20 | - uses: actions/stale@v8.0.0
21 | with:
22 | repo-token: ${{ secrets.GITHUB_TOKEN }}
23 | # Do not automatically mark PR/issue as stale
24 | days-before-stale: -1
25 | # Override 'days-before-stale' for PR only
26 | days-before-pr-stale: 30
27 | # Close PRs immediately, after marking them 'stale'
28 | days-before-pr-close: 0
29 | # only run the action on merge conflict PR
30 | any-of-labels: 'Merge Conflicts'
31 | exempt-pr-labels: 'internal, never-stale, ON HOLD, WIP'
32 | exempt-all-pr-assignees: true
33 | operations-per-run: 300
34 | stale-pr-message: ''
35 | close-pr-message: 'Existing merge conflicts have not been addressed. This PR is considered abandoned.'
36 |
--------------------------------------------------------------------------------
/.github/workflows/sync-back-to-dev.yml:
--------------------------------------------------------------------------------
1 | name: Sync Back to Development
2 |
3 | on:
4 | push:
5 | branches:
6 | - master
7 |
8 | jobs:
9 | sync-branches:
10 | runs-on: ubuntu-latest
11 | name: Syncing branches
12 | steps:
13 | - name: Checkout
14 | uses: actions/checkout@v4.1.1
15 | - name: Opening pull request
16 | run: gh pr create -B devel -H master --title 'Sync master back into development' --body 'Created by Github action' --label 'internal'
17 | env:
18 | GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
19 |
--------------------------------------------------------------------------------
/.github/workflows/test.yml:
--------------------------------------------------------------------------------
1 | name: Tests
2 |
3 | on:
4 | push:
5 | branches:
6 | - devel
7 | - master
8 | pull_request:
9 | branches:
10 | - "**"
11 |
12 | env:
13 | FORCE_COLOR: 2
14 |
15 | jobs:
16 | run:
17 | name: Node
18 | runs-on: ubuntu-latest
19 |
20 | steps:
21 | - name: Clone repository
22 | uses: actions/checkout@v4.1.1
23 |
24 | - name: Set up Node.js
25 | uses: actions/setup-node@v4.0.0
26 | with:
27 | node-version: "16.x"
28 | cache: npm
29 |
30 | - name: Install npm dependencies
31 | run: npm ci
32 |
33 | - name: Run tests
34 | run: npm run testpr
35 |
--------------------------------------------------------------------------------
/.gitignore:
--------------------------------------------------------------------------------
1 | *.DS_Store
2 | .idea
3 | /nbproject/private/
4 | /nbproject/
5 | /node_modules/
6 | TODO
7 | *.zip
8 | test.html
9 | *.log
10 | .php-cs-fixer.cache
11 |
12 | # Intellij IDEA Project Files
13 | *.iml
14 | *.ipr
15 | *.iws
16 |
17 | # vim
18 | *.swp
19 |
20 | # Composer
21 | /vendor/
22 |
--------------------------------------------------------------------------------
/.php-cs-fixer.dist.php:
--------------------------------------------------------------------------------
1 | ignoreDotFiles(false)
15 | ->ignoreVCSIgnored(true)
16 | ->exclude('scripts/vendor')
17 | ->in(__DIR__)
18 | ;
19 |
20 | $config = new PhpCsFixer\Config();
21 | $config
22 | ->setRules(array(
23 | '@Symfony' => true,
24 | 'array_syntax' => array('syntax' => 'long'),
25 | 'yoda_style' => array('equal' => false, 'identical' => false, 'less_and_greater' => false, 'always_move_variable' => false),
26 | ))
27 | ->setLineEnding(PHP_EOL)
28 | ->setFinder($finder)
29 | ;
30 |
31 | return $config;
32 |
--------------------------------------------------------------------------------
/.stickler.yml:
--------------------------------------------------------------------------------
1 | ---
2 | linters:
3 | yamllint:
4 | config: ./.yamllint.conf
5 | remarklint:
6 | files:
7 | ignore:
8 | - 'scripts/vendor/*'
9 | - 'style/vendor/*'
10 |
--------------------------------------------------------------------------------
/.yamllint.conf:
--------------------------------------------------------------------------------
1 | rules:
2 | line-length: disable
3 | document-start: disable
4 |
--------------------------------------------------------------------------------
/CONTRIBUTING.md:
--------------------------------------------------------------------------------
1 | _This template was created based on the work of [`udemy-dl`](https://github.com/nishad/udemy-dl/blob/master/LICENSE)._
2 |
3 | # Contributors Guide
4 |
5 | Please read and understand the contribution guide before creating an issue or pull request.
6 |
7 | ## Etiquette
8 |
9 | - Our goal for Pi-hole is **stability before features**. This means we focus on squashing critical bugs before adding new features. Often, we can do both in tandem, but bugs will take priority over a new feature.
10 | - Pi-hole is open source and [powered by donations](https://pi-hole.net/donate/), and as such, we give our **free time** to build, maintain, and **provide user support** for this project. It would be extremely unfair for us to suffer abuse or anger for our hard work, so please take a moment to consider that.
11 | - Please be considerate towards the developers and other users when raising issues or presenting pull requests.
12 | - Respect our decision(s), and do not be upset or abusive if your submission is not used.
13 |
14 | ## Viability
15 |
16 | When requesting or submitting new features, first consider whether it might be useful to others. Open source projects are used by many people, who may have entirely different needs to your own. Think about whether or not your feature is likely to be used by other users of the project.
17 |
18 | ## Procedure
19 |
20 | **Before filing an issue:**
21 |
22 | - Attempt to replicate and **document** the problem, to ensure that it wasn't a coincidental incident.
23 | - Check to make sure your feature suggestion isn't already present within the project.
24 | - Check the pull requests tab to ensure that the bug doesn't have a fix in progress.
25 | - Check the pull requests tab to ensure that the feature isn't already in progress.
26 |
27 | **Before submitting a pull request:**
28 |
29 | - Check the codebase to ensure that your feature doesn't already exist.
30 | - Check the pull requests to ensure that another person hasn't already submitted the feature or fix.
31 |
32 | ## Technical Requirements
33 |
34 | - Submit Pull Requests to the **devel branch only**.
35 | - Before Submitting your Pull Request, merge `devel` with your new branch and fix any conflicts. (Make sure you don't break anything in development!)
36 | - Commit Unix line endings.
37 | - Please use the Pi-hole brand: **Pi-hole** (Take a special look at the capitalized 'P' and a low 'h' with a hyphen)
38 | - (Optional fun) keep to the theme of Star Trek/black holes/gravity.
39 |
--------------------------------------------------------------------------------
/README.md:
--------------------------------------------------------------------------------
1 |
2 |
3 | # Pi-hole Speedtest Modded Web
4 |
5 | [](https://gitter.im/pihole-speedtest/community?utm_source=badge&utm_medium=badge&utm_campaign=pr-badge&utm_content=badge) [](https://discord.gg/TW9TfyM)
6 |
7 | Test your connection speed directly in the Pi-hole web interface!
8 |
9 |
10 |
11 | ---
12 |
13 | Please go to the [main repository](https://github.com/arevindh/pihole-speedtest) for more information, including (un)installation instructions, pull requests, and issues.
14 |
15 | ## Disclaimer
16 |
17 | We are not affiliated with or endorsed by [Pi-hole](https://github.com/pi-hole/web)
18 |
--------------------------------------------------------------------------------
/auditlog.php:
--------------------------------------------------------------------------------
1 |
13 |
14 |
15 |
You can select an existing client or add a custom one by typing into the field above and confirming your entry with ⏎.
46 |
Clients may be described either by their IP addresses (IPv4 and IPv6 are supported),
47 | IP subnets (CIDR notation, like 192.168.2.0/24),
48 | their MAC addresses (like 12:34:56:78:9A:BC),
49 | by their hostnames (like localhost), or by the interface they are connected to (prefaced with a colon, like :eth0).
50 |
51 |
Note that client recognition by IP addresses (incl. subnet ranges) are preferred over MAC address, host name or interface recognition as
52 | the two latter will only be available after some time.
53 | Furthermore, MAC address recognition only works for devices at most one networking hop away from your Pi-hole.
54 |
After installing Pi-hole for the first time, a password is generated and displayed
73 | to the user. The password cannot be retrieved later on, but it is possible to set
74 | a new password (or explicitly disable the password by setting an empty password)
75 | using the command
76 |