A third party Android application for the Pi-Hole® dashboard.

Overview

FlutterHole

Codemagic build status Coverage Status MIT Licenced Platform

FlutterHole is a free third party Android application for interacting with your Pi-Hole® server.

Get it on Google Play

Features

  • Quick enable/disable: Toggle your Pi-hole from your home screen with a single tap.
  • Multiple configurations: Easily switch between every Pi-hole that you have access to.
  • Summary overview: View top clients and the top used domains.
  • Query log: Inspect & search your Pi-hole queries.

Development

FlutterHole is developed using Android Studio, which offers a complete, integrated IDE experience for Flutter.

Testing is done using a local Pi-hole installation on an internal network. Due to this, support for other network setups relies heavily on user feedback.

If you want to improve the network support for FlutterHole by testing against your own setups, you can build the app locally and debug any issues.

Getting Started

After cloning this repository, perform the following steps before building your project.

All snippets assume your initial working directory is the root of the project.

Generate a debug signing key

Skip the questions, and confirm with yes.

#!/bin/bash
cd android/app
keytool -genkey -v -keystore keystore.jks -storepass android -alias androiddebugkey -keypass android -keyalg RSA -keysize 2048 -validity 10000

Create a properties file for the signing key

#!/bin/bash
cd android
touch key.properties

After creating the file, populate it with plaintext describing the debug key.

storePassword=android
keyPassword=android
keyAlias=androiddebugkey
storeFile=keystore.jks

Generate the icon assets

#!/bin/bash
flutter pub get
flutter pub run flutter_launcher_icons:main

Generate code

To generate freezed classes, injectable injections etc.:

flutter pub run build_runner build --delete-conflicting-outputs  

Or, build continuously:

flutter pub run build_runner watch --delete-conflicting-outputs  

You can now build and run the app on either an emulator or a physical device using flutter run.

Testing

To run the default integration test:

flutter drive --target=test_driver/app.dart

API

This application interacts with the Pi-hole PHP API.

A new API is in the works from the Pi-hole team. For progress, check the pull request on GitHub.

Comments
  • Pi-hole appears to be paused every time Flutterhole is opened, regardless of whether or not it is actually paused

    Pi-hole appears to be paused every time Flutterhole is opened, regardless of whether or not it is actually paused

    Describe the bug The amber "paused" icon appears every time Flutterhole is opened on Android.

    To Reproduce Steps to reproduce the behavior:

    1. Open Flutterhole

    Expected behavior Flutterhole shows actual current status of Pi-hole.

    Screenshots If applicable, add screenshots to help explain your problem.

    Versions (please complete the following information):

    • Pi-hole version: latest stable version
    • FlutterHole version: 5.2.3

    Additional context Add any other context about the problem here.

    opened by jdrch 14
  • V5 whitelist/blacklist

    V5 whitelist/blacklist

    Since V5 fetching the whitelist with the old format throws a server error:

    • {{ base_url }}?list=white&auth={{ auth }}
    • {{ base_url }}?list=black&auth={{ auth }}

    These return a 500 status on my local Pi. Not sure if the API changed or my Pihole installation is funky.

    The V5 dashboard seems to get its data http://pi.hole/admin/scripts/pi-hole/php/groups.php with some url encoded form data.

    If anyone manages to query their Pi properly, please let me know!

    feature Blocking beta 5 
    opened by sterrenburg 10
  • Show all clients (i.e. not only the top 10)

    Show all clients (i.e. not only the top 10)

    Hello,

    Love your app flutterhole and have a question regarding my VPN mullvad on Android. I have local traffic enabled but for some reason it blocks Flutterhole app but not anything else. Do you know how I can resolve this issue?

    Thanks!

    future feature 
    opened by nine76evil 6
  • Oneplus 7T android 10

    Oneplus 7T android 10

    Describe the bug Running FlutterHole 5.0.125 on both Oneplus 7T Oxygen OS10.0.9.HD65AA and Fire HD 8 with Fire OS 5.6.6.0. Flutterhole works perfectly on Fire HD, but on Oneplus all i get are fetching host status failed. The myPiHoles options are set up the same on both devices

    To Reproduce Steps to reproduce the behavior:

    1. Open App
    2. See error "Failure (message: pingPihole failed, error: PIExeption.malformedResponse(error:DioError[DioErrorType.DEFAULT]: SocketExeption: Failed Host Lookup: 'pi.hole' (OS Error: noaddress associated with Hostname, errno = 7)))

    Expected behavior Expect to see pihole on Oneplus 7T

    Screenshots If applicable, add screenshots to help explain your problem.

    Versions (please complete the following information):

    • Pi-hole version: 5.0
    • FlutterHole version: 5.0.125

    Additional context Add any other context about the problem here.

    bug 
    opened by Ryanh85 6
  • Update pihole  threw the app

    Update pihole threw the app

    It would be nice to see the current version of the pihole and updating the pihole if needed. This would be nice too for adding or changing the current added block lists.

    feature 
    opened by JakobHeubl 5
  • HTTP status error 400

    HTTP status error 400

    Setup: Reverse proxy (nginx) into pihole. Last time it worked: previous version

    URL: user:pass@host Port: 443

    20190801_144015 Screenshot_20190801-143907

    Manually going to the URL works as expected. No deviations from previous setup.

    bug 
    opened by modem7 5
  • Can't view client or domains without API token

    Can't view client or domains without API token

    I don't have a password on my local pihole instances. The summary view of each of my piholes works fine, however, clicking on clients or domains returns "API token is empty".

    However, since I have no password, I cannot generate an API token.

    I am on version 2.1.1+476

    bug 
    opened by derekslenk 4
  • API token is empty

    API token is empty

    Just updated to v2.1.29+360 and the Pihole settings are not getting saved, Configuration name, Host, API token etc. none of my configurations are recorded. I make changes & hit save, I go to the dashboard and see error "API token is empty," after I return to Settings I see all my changes are gone.

    I tried clearing app cache and storage folders, this does not help.

    bug 
    opened by ricktendo 4
  • Logs no longer accessible

    Logs no longer accessible

    Describe the bug After updating Pi.Hole to the latest version, the app no longer displays logs. There is only a loading symbol.

    To Reproduce Steps to reproduce the behavior:

    1. Open app
    2. Select 'Query log'
    3. Nothing happens

    Expected behavior I would expect to see requests being redirected to port 53 or being blocked.

    Versions (please complete the following information):

    • Pi-hole version: 5.10
    • FlutterHole version: 5.2.3

    Additional context I have refreshed my Pi-hole instalation. Used a different nginx config. Pi-hole diagnostics report no errors. Web UI is fully functional.

    opened by Scarletvye 3
  • Reverse proxy settings

    Reverse proxy settings

    There needs to be a function to obscure reverse proxy basic http auth details so that they're not located in plain text

    It currently works with https://user:[email protected], but this is quite an insecure method of inputting these values

    feature 
    opened by modem7 3
  • resource mipmap/launcher_icon not found

    resource mipmap/launcher_icon not found

    Hello,

    When building 1.0.0 with flutter 1.3.2, it fails with this error:

    Execution failed for task ':app:processReleaseResources'.
    
    > Android resource linking failed
    
      /home/pierre/www/fdroiddata/build/sterrenburg.github.flutterhole/build/app/intermediates/merged_manifests/release/AndroidManifest.xml:25: AAPT: error: resource mipmap/launcher_icon (aka sterrenburg.github.flutterhole:mipmap/launcher_icon) not found.
    
    
    
      error: failed processing manifest.
    
    opened by Rudloff 3
  • Flutterhole dashboard unusable with v5.18 of Pihole web interface API

    Flutterhole dashboard unusable with v5.18 of Pihole web interface API

    Describe the bug Flutterhole does not properly use auth on dashboard screen causing it to be unusable.

    To Reproduce Steps to reproduce the behavior:

    1. Open Dashboard

    Expected behavior Dashboard should load in with data.

    Screenshots Screenshot_20221224-173838

    Versions:

    Additional context

    Pihole web v5.18 requires auth on all API endpoints now except for version and type. PR that caused this change - https://github.com/pi-hole/AdminLTE/pull/2411 Pihole release - https://github.com/pi-hole/AdminLTE/releases/v5.18

    Since upgrading to the Pihole web v5.18, Flutterhole no longer works. Adding auth to the API endpoints that don't have it should fix the issue. Those are status, summary, summaryRaw, overTimeData10mins

    opened by sergekh42 5
  • Pi-hole with hidden domains breaks domains page

    Pi-hole with hidden domains breaks domains page

    Describe the bug I have domains hidden on my pi-hole (privacy level 1). When going to the "domains" page on the Flutterhole app, I get the error "fetchTopItems failed with unexpected error" - I've confirmed it's due to my privacy settings (tab works fine when privacy is disabled)

    The page should probably have a more clear error message.

    To Reproduce Steps to reproduce the behavior:

    1. In the pi-hole admin panel, select the privacy option "Hide domains: Display and store all domains as "hidden""
    2. Go to the domains tab in Flutterhole

    Expected behavior A message saying "this tab doesn't work since domain tracking is disabled" or some other more informative message.

    Screenshots

    Screenshot_20221016-223817

    Versions (please complete the following information):

    • Pi-hole version: 5.1.0
    • FlutterHole version: 5.2.3
    opened by brandonio21 1
  • Query Log never shows results if choosing more than 10 entires

    Query Log never shows results if choosing more than 10 entires

    Describe the bug Wait "forever" for log entries unless show 10 is chosen. Chosing show 10 and the result is nearly instant.

    To Reproduce Steps to reproduce the behavior:

    1. Go to the hamburger and choose "10"
    2. 10 entries will appear
    3. Go back to the hamburger and choose 100
    4. You will wait and nothing will show except the waiting whirlygig

    Expected behavior The expected number of log entries will be displayed.

    Latest version running on Google pixel 3 (the app). Oi-hole on a zero w.

    opened by KK1L 1
  • Pi-hole Update broke compatibility

    Pi-hole Update broke compatibility

    Recent update to pihole broke compatibility with flutterhole and can no longer interact with it (pausing and viewing logs) but can still load statistics.

    API Token and any auth details fail to validate.

    • Pi-hole version: 5.12
    • FTL: 5.17
    • FlutterHole version: 5.2.3
    opened by SythenElexia 5
  • In settings no green check mark on Host Details

    In settings no green check mark on Host Details

    I'm not sure when this happens or started, but today I notice that in Flutterhole settings My Piholes, the Base addres in Host details does not get a green check mark. I fill this field with http://192.168.178.40 and Port 8030 and the api path is default /admin/api.php With this address I can connect to Pi-Hole in the browser.

    The Authentication part and api token do give me a green check mark. That is strange isn't it?

    I am able to switch Pi-Hole in pause and back to enabled, the dashboard loads, but I'm unable to load query log.

    Versions: Docker Tag [2022.04.3] Pi-hole [v5.10] FTL [v5.15] Web Interface [v5.12] Flutterhole: v5.2.3 build #641

    On Android 10 photo_2022-05-08_12-29-19

    opened by baahver 1
Releases(v5.2.3)
Multi-language support in Flutter without using any third-party library

flutter_localization_app A new Flutter application. Getting Started This project is a starting point for a Flutter application. A few resources to get

Gulshan Yadav 1 Oct 30, 2021
We created Flappy Bird, a straightforward game based on flutter animation, from scratch using only Dart & Flutter and no third-party games or animation components.

Flappy-Bird Description A ridiculous game created by Flutter, all you have to do is touch the screen to make the bird leap as long as you avoid the ba

hab 15 Dec 25, 2022
Pi-hole® client made with Flutter

DroidHole DroidHole is a Pi-hole® client for Android. It allows the user to manage multiple Pi-hole® servers from one application and device. Main fea

Juan Gilsanz Polo 22 Jan 7, 2023
A 3rd party wallet for zenon.network

Notes Please don't use your main seed while testing until Cano is fully audited by the community Click Create Wallet to generate Prerequisites Flutter

Cano Wallet 10 Oct 26, 2022
A Flutter App That Find Party Event

EventZ ?? ?? Description: Discover events & upcoming events in your city and near you. Get personalized event recommendations! Find events your friend

李瑞孟 4 Jun 30, 2022
3rd-party surrealdb.com client for Dart

Experimental Dart support for SurrealDB. This package is a port of surreal.js. Features connect(url) - Connects to a local or remote database endpoint

Marcin Wróblewski 5 Nov 8, 2022
Flutter Responsive Dashboard

Store Responsive Dashboard A Flutter Web Project. Responsive on Mobile and Desktop Demo Site Contact Cam Phan - Facebook - [email protected] - Websit

Cam Phan 44 Sep 29, 2022
Create responsive dashboard Project Management design using Flutter

Project Management Watch it on YouTube Dashboard Screen This dashboard page is designed for the project management web. This design contains task mana

Firgia 284 Dec 23, 2022
Create responsive dashboard Daily Task design using Flutter

Daily Task Watch it on YouTube Dashboard Screen This dashboard page is designed for the daily task. This design contains profile, task overview, calen

Firgia 242 Jan 5, 2023
Admin Dashboard built using Flutter Web

Admin Material for Flutter Web. Demo This project was generated with Flutter Web. Introduction This project contains most of the common widgets which

GeekyAnts 238 Dec 13, 2022
Flutter web dashboard

flutter_web_dashboard A new Flutter project. Getting Started This project is a starting point for a Flutter application. A few resources to get you st

Santos Enoque 214 Jan 1, 2023
Multi-Camera-Dashboard - Flutter App to View RTSP Streams

9.9.2021 update I have updated the firebase db to be read only due to abuse. The save operation works if you import your own firebase and modify proje

Mitch Ross 54 Jan 1, 2023
A pixel perfect dashboard for mobile, tablet and desktop.

A pixel perfect dashboard for mobile, tablet and desktop.

BotCoder 25 Dec 27, 2022
This is my personal blog dashboard concept.

Blog Post dashBoard. Visit Live App here This is my personal dashBoard project made with flutter. Surely there's still room for more, so any sort of c

Anslem 8 Dec 3, 2022
WooCommerce App template that uses Flutter. Integrated to work with WooCommerce stores, connect and create an IOS and Android app from Flutter for IOS and Android

WooCommerce App: Label StoreMax Label StoreMax - v5.3.1 Official WooSignal WooCommerce App About Label StoreMax Label StoreMax is an App Template for

WooSignal 314 Jan 9, 2023
Morphing Coffee 0 Jan 27, 2022
Flutter plugin (android) for sharing bytes and files Offline, (Based on the android Nearby Connections API)

nearby_connections An android flutter plugin for the Nearby Connections API Currently supports Bytes and Files. Transfer Data between multiple connect

Prerak Mann 63 Nov 21, 2022