Source code for pihole_lib.info

"""Pi-hole Info API client."""

from pihole_lib.base import BasePiHoleAPIClient
from pihole_lib.models.ftl import DatabaseInfo, FTLInfo
from pihole_lib.models.host import HostInfo
from pihole_lib.models.messages import MessagesCountInfo, MessagesInfo
from pihole_lib.models.session import ClientInfo, LoginInfo
from pihole_lib.models.system import SystemInfo
from pihole_lib.models.version import VersionInfo
from pihole_lib.utils import make_pihole_request


[docs] class PiHoleInfo(BasePiHoleAPIClient): """Pi-hole Info API client. Handles information endpoints for system status and diagnostics. Examples:: from pihole_lib import PiHoleClient with PiHoleClient("http://192.168.1.100", password="secret") as client: # Get login info login_info = client.info.get_login_info() print(f"DNS running: {login_info.dns}") # Get system info system_info = client.info.get_system_info() print(f"Uptime: {system_info.system.uptime}s") # Get version info version = client.info.get_version_info() print(f"Pi-hole: {version.version.core.local.version}") """ BASE_URL = "/api/info"
[docs] def get_login_info(self) -> LoginInfo: """Get login page related information. Returns: LoginInfo with HTTPS port and DNS status. """ response = make_pihole_request( self._client, "GET", f"{self.BASE_URL}/login", ) return LoginInfo.model_validate(response.json())
[docs] def get_client_info(self) -> ClientInfo: """Get client request information. Returns: ClientInfo with remote address, HTTP version, method, and headers. """ response = make_pihole_request( self._client, "GET", f"{self.BASE_URL}/client", ) return ClientInfo.model_validate(response.json())
[docs] def get_database_info(self) -> DatabaseInfo: """Get database information. Returns: DatabaseInfo with file size, permissions, query counts, etc. """ response = make_pihole_request( self._client, "GET", f"{self.BASE_URL}/database", ) return DatabaseInfo.model_validate(response.json())
[docs] def get_ftl_info(self) -> FTLInfo: """Get FTL runtime information. Returns: FTLInfo with database stats, process info, and resource usage. """ response = make_pihole_request( self._client, "GET", f"{self.BASE_URL}/ftl", ) return FTLInfo.model_validate(response.json())
[docs] def get_host_info(self) -> HostInfo: """Get host system information. Returns: HostInfo with uname details, hardware model, and DMI data. """ response = make_pihole_request( self._client, "GET", f"{self.BASE_URL}/host", ) return HostInfo.model_validate(response.json())
[docs] def get_version_info(self) -> VersionInfo: """Get Pi-hole version information. Returns: VersionInfo for all Pi-hole components. """ response = make_pihole_request( self._client, "GET", f"{self.BASE_URL}/version", ) return VersionInfo.model_validate(response.json())
[docs] def get_system_info(self) -> SystemInfo: """Get system resource information. Returns: SystemInfo with uptime, memory, CPU, and FTL resource usage. """ response = make_pihole_request( self._client, "GET", f"{self.BASE_URL}/system", ) return SystemInfo.model_validate(response.json())
[docs] def get_messages(self) -> MessagesInfo: """Get system messages. Returns: MessagesInfo with diagnosis messages. """ response = make_pihole_request( self._client, "GET", f"{self.BASE_URL}/messages", ) return MessagesInfo.model_validate(response.json())
[docs] def get_messages_count(self) -> MessagesCountInfo: """Get system messages count. Returns: MessagesCountInfo with message count. """ response = make_pihole_request( self._client, "GET", f"{self.BASE_URL}/messages/count", ) return MessagesCountInfo.model_validate(response.json())