Skip to main content

API module for Pi Hole

Project description

APiHole

This is an easy python API module for comunicating with Pi Hole through API. Works with AdminLTE v. 3

Install:

pip install APiHole

Get your Pi Hole API key from here:

sudo cat /etc/pihole/setupVars.conf | grep PASSWORD

Usage

from APiHole import PiHole

PiHoleAPI='your pi hole API key'
PiIP='your pi hole IP'

# Print API version (good for testing communication), (return string)
print(PiHole.GetVer(PiIP))

# get PiHole summary style format, (return dict)
print(PiHole.GetSummary(PiIP,PiHoleAPI,False))

# get PiHole summary raw format, (return dict)
print(PiHole.GetSummary(PiIP,PiHoleAPI,True))

# Get PiHole gravity status , (return dict)
print(PiHole.GetGravity(PiIP,PiHoleAPI))

# Get PiHole status, (return string)
PiHole.GetStatus(PiIP)

# Get PiHole 7 top items, split and convert to list (return dict)
Items=PiHole.GetTopItems(PiIP,PiHoleAPI,7)
if not len(Items) == 0:
    ItemsTop=Items['top_queries']
    resultListTOP = list(ItemsTop.items())
    rtnTOP=[]
    ItemsADS=Items['top_ads']
    resultListADS = list(ItemsTop.items())
    rtnTOP=[]
    rtnADS=[]
    for l in range(len(resultListTOP)):
        rtnTOP.append(str(resultListTOP[l][0])+' : '+str(resultListTOP[l][1]))
        rtnADS.append(str(resultListADS[l][0])+' : '+str(resultListADS[l][1]))

    print('top_queries\n'+str(rtnTOP))
    print('top_ads\n'+str(rtnADS))

# Enable PiHole (return string)
PiHole.Enable(PiIP,PiHoleAPI)

# Disable PiHole for 2 sec (return string)
PiHole.Disable(PiIP,PiHoleAPI,2)

# Get top clients (return string)
PiHole.GetTopClients(PiIP,PiHoleAPI)

# Add google.com to white list (return boolean)
PiHole.AddWhite(PiIP,PiHoleAPI,'google.com')

# Add google.com to block list (return boolean)
PiHole.AddBlack(PiIP,PiHoleAPI,'google.com')

# Get recent blocked domain, (return string)
PiHole.GetRecentBlocked(PiIP,PiHoleAPI)

# Get destinations in %, (return dict)
PiHole.GetDestination(PiIP,PiHoleAPI)

# Get query types in %, (return dict)
PiHole.GetQueryTypes(PiIP,PiHoleAPI)

# Get clients names, (return dict)
PiHole.GetClientNames(PiIP,PiHoleAPI)

# Get data of clients over time, (return dict)
PiHole.GetOverTimeDataClients(PiIP,PiHoleAPI)

# Get pi hole DNS port, (return string)
PiHole.GetDnsPort(PiIP,PiHoleAPI)

# Get pi hole chche info, (return dict)
PiHole.GetCacheInfo(PiIP,PiHoleAPI)

# Get pi hole data of 10 min 
PiHole.GetOverTimeData10mins(PiIP,PiHoleAPI)

# Remove 'google.com' from block list
PiHole.RemoveBlock(PiIP,PiHoleAPI,'google.com')

# Add facebook regex to block list (return boolean)
PiHole.AddRegexBlock(PiIP,PiHoleAPI,'facebook')

# Remove facebook regex from block list (return boolean)
PiHole.RemoveRegexBlock(PiIP,PiHoleAPI,'facebook')

TODOs

Change log

  • rev 0.0.1 - Initial release.
  • rev 0.0.2 (by Dan Taeyoung)
    • Typo fix.
    • Add RemoveBlock function.
    • Add AddRegexBlock function.
    • Add RemoveRegexBlock function.
  • rev 0.0.3 - Add raw syle summary (asked by GalFawkes)

Feedback

If you have any feedback, please reach out to us at shmulik.debby@gmail.com

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

APiHole-0.0.3.tar.gz (5.2 kB view details)

Uploaded Source

File details

Details for the file APiHole-0.0.3.tar.gz.

File metadata

  • Download URL: APiHole-0.0.3.tar.gz
  • Upload date:
  • Size: 5.2 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/5.0.0 CPython/3.11.9

File hashes

Hashes for APiHole-0.0.3.tar.gz
Algorithm Hash digest
SHA256 0d9c0eaef2a97950e62486694ad2ed939d1e8cd30541fea686d763896096c226
MD5 74c901f2703b0244fce14b6af2f51966
BLAKE2b-256 c236f990387c4c2592cb5e5e539941561fc0519d10e24b2b818e1fed61c553aa

See more details on using hashes here.

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page