boB Rudis
4 years ago
33 changed files with 735 additions and 8 deletions
@ -0,0 +1,2 @@ |
|||||
|
YEAR: 2020 |
||||
|
COPYRIGHT HOLDER: Bob Rudis |
@ -0,0 +1,21 @@ |
|||||
|
# MIT License |
||||
|
|
||||
|
Copyright (c) 2020 Bob Rudis |
||||
|
|
||||
|
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,4 +1,21 @@ |
|||||
# Generated by roxygen2: do not edit by hand |
# Generated by roxygen2: do not edit by hand |
||||
|
|
||||
|
export("%>%") |
||||
|
export(pi_disable) |
||||
|
export(pi_enable) |
||||
|
export(pi_fwd_dest) |
||||
|
export(pi_host) |
||||
|
export(pi_key) |
||||
|
export(pi_over_time_10m) |
||||
|
export(pi_queries) |
||||
|
export(pi_query_types) |
||||
|
export(pi_recent) |
||||
|
export(pi_summary) |
||||
|
export(pi_test) |
||||
|
export(pi_top_clients) |
||||
|
export(pi_top_items) |
||||
|
export(pi_type) |
||||
|
export(pi_version) |
||||
import(httr) |
import(httr) |
||||
importFrom(jsonlite,fromJSON) |
importFrom(jsonlite,fromJSON) |
||||
|
importFrom(magrittr,"%>%") |
||||
|
@ -0,0 +1 @@ |
|||||
|
set_names <- function (object = nm, nm) { names(object) <- nm ; object } |
@ -0,0 +1,36 @@ |
|||||
|
#' Get query types distribution |
||||
|
#' |
||||
|
#' @param q query |
||||
|
#' @param host See [pi_host()] |
||||
|
#' @param api_key See [pi_key()] |
||||
|
#' @export |
||||
|
pi_queries<- function(q = NULL, host = pi_host(), api_key = pi_key()) { |
||||
|
|
||||
|
pi_hole_api_url <- paste0("http://", host, "/admin/api.php") |
||||
|
|
||||
|
httr::GET( |
||||
|
url = paste0(pi_hole_api_url, "?", "getAllQueries", "&", "auth", "=", api_key) |
||||
|
) -> res |
||||
|
|
||||
|
httr::stop_for_status(res) |
||||
|
|
||||
|
out <- httr::content(res, as = "text", encoding = "UTF-8") |
||||
|
|
||||
|
out <- jsonlite::fromJSON(out) |
||||
|
|
||||
|
out <- out[["data"]] |
||||
|
|
||||
|
out <- as.data.frame(out, stringsAsFactors = FALSE) |
||||
|
|
||||
|
set_names( |
||||
|
out, |
||||
|
c("ts", "query_type", "domain", "client", "answer_type", "X1", "X2", "X3") |
||||
|
) -> out |
||||
|
|
||||
|
out$ts <- .POSIXct(as.numeric(out$ts)) |
||||
|
|
||||
|
class(out) <- c("tbl_df", "tbl", "data.frame") |
||||
|
|
||||
|
out |
||||
|
|
||||
|
} |
@ -0,0 +1,30 @@ |
|||||
|
#' Get forward destinations (i.e. upstream DNS) |
||||
|
#' |
||||
|
#' @param host See [pi_host()] |
||||
|
#' @param api_key See [pi_key()] |
||||
|
#' @export |
||||
|
pi_fwd_dest <- function(host = pi_host(), api_key = pi_key()) { |
||||
|
|
||||
|
pi_hole_api_url <- paste0("http://", host, "/admin/api.php") |
||||
|
|
||||
|
httr::GET( |
||||
|
url = paste0(pi_hole_api_url, "?", "getForwardDestinations", "&", "auth", "=", api_key) |
||||
|
) -> res |
||||
|
|
||||
|
httr::stop_for_status(res) |
||||
|
|
||||
|
out <- httr::content(res) |
||||
|
|
||||
|
out <- out$forward_destinations |
||||
|
|
||||
|
data.frame( |
||||
|
dest = names(out), |
||||
|
ct = unlist(unname(out)), |
||||
|
stringsAsFactors = FALSE |
||||
|
) -> out |
||||
|
|
||||
|
class(out) <- c("tbl_df", "tbl", "data.frame") |
||||
|
|
||||
|
out |
||||
|
|
||||
|
} |
@ -0,0 +1,95 @@ |
|||||
|
#' Test connectivity to/get info about a Pi-Hole |
||||
|
#' |
||||
|
#' @param host See [pi_host()] |
||||
|
#' @param api_key See [pi_key()] |
||||
|
#' @export |
||||
|
pi_test <- function(host = pi_host(), api_key = pi_key()) { |
||||
|
|
||||
|
pi_hole_api_url <- paste0("http://", host, "/admin/api.php") |
||||
|
|
||||
|
httr::GET( |
||||
|
url = pi_hole_api_url, |
||||
|
query = list( |
||||
|
auth = api_key |
||||
|
) |
||||
|
) -> res |
||||
|
|
||||
|
httr::stop_for_status(res) |
||||
|
|
||||
|
h <- httr::headers(res) |
||||
|
|
||||
|
any(grepl("working", tolower(h[["x-pi-hole"]]))) |
||||
|
|
||||
|
} |
||||
|
|
||||
|
#' @rdname pi_test |
||||
|
#' @export |
||||
|
pi_type <- function(host = pi_host(), api_key = pi_key()) { |
||||
|
|
||||
|
pi_hole_api_url <- paste0("http://", host, "/admin/api.php") |
||||
|
|
||||
|
httr::GET( |
||||
|
url = paste0(pi_hole_api_url, "?", "type") |
||||
|
) -> res |
||||
|
|
||||
|
httr::stop_for_status(res) |
||||
|
|
||||
|
out <- httr::content(res) |
||||
|
|
||||
|
out$type |
||||
|
|
||||
|
} |
||||
|
|
||||
|
#' @rdname pi_test |
||||
|
#' @export |
||||
|
pi_version <- function(host = pi_host(), api_key = pi_key()) { |
||||
|
|
||||
|
pi_hole_api_url <- paste0("http://", host, "/admin/api.php") |
||||
|
|
||||
|
httr::GET( |
||||
|
url = paste0(pi_hole_api_url, "?", "version") |
||||
|
) -> res |
||||
|
|
||||
|
httr::stop_for_status(res) |
||||
|
|
||||
|
out <- httr::content(res) |
||||
|
|
||||
|
out$version |
||||
|
|
||||
|
} |
||||
|
|
||||
|
#' @rdname pi_test |
||||
|
#' @export |
||||
|
pi_enable <- function(host = pi_host(), api_key = pi_key()) { |
||||
|
|
||||
|
pi_hole_api_url <- paste0("http://", host, "/admin/api.php") |
||||
|
|
||||
|
httr::GET( |
||||
|
url = paste0(pi_hole_api_url, "?", "enable") |
||||
|
) -> res |
||||
|
|
||||
|
httr::stop_for_status(res) |
||||
|
|
||||
|
out <- httr::content(res) |
||||
|
|
||||
|
out$version |
||||
|
|
||||
|
} |
||||
|
|
||||
|
#' @rdname pi_test |
||||
|
#' @export |
||||
|
pi_disable <- function(host = pi_host(), api_key = pi_key()) { |
||||
|
|
||||
|
pi_hole_api_url <- paste0("http://", host, "/admin/api.php") |
||||
|
|
||||
|
httr::GET( |
||||
|
url = paste0(pi_hole_api_url, "?", "disable") |
||||
|
) -> res |
||||
|
|
||||
|
httr::stop_for_status(res) |
||||
|
|
||||
|
out <- httr::content(res) |
||||
|
|
||||
|
out$version |
||||
|
|
||||
|
} |
@ -0,0 +1,42 @@ |
|||||
|
#' Get recent 10 min time series counts |
||||
|
#' |
||||
|
#' @param host See [pi_host()] |
||||
|
#' @param api_key See [pi_key()] |
||||
|
#' @export |
||||
|
pi_over_time_10m <- function(host = pi_host(), api_key = pi_key()) { |
||||
|
|
||||
|
pi_hole_api_url <- paste0("http://", host, "/admin/api.php") |
||||
|
|
||||
|
httr::GET( |
||||
|
url = paste0(pi_hole_api_url, "?", "overTimeData10mins", "&", "auth=", api_key) |
||||
|
) -> res |
||||
|
|
||||
|
httr::stop_for_status(res) |
||||
|
|
||||
|
out <- httr::content(res) |
||||
|
|
||||
|
data.frame( |
||||
|
kind = "query", |
||||
|
ts = names(out$domains_over_time), |
||||
|
ct = unlist(unname(out$domains_over_time)), |
||||
|
stringsAsFactors = FALSE |
||||
|
) -> x1 |
||||
|
|
||||
|
x1$ts <- .POSIXct(as.numeric(x1$ts)) |
||||
|
|
||||
|
data.frame( |
||||
|
kind = "ad", |
||||
|
ts = names(out$ads_over_time), |
||||
|
ct = unlist(unname(out$ads_over_time)), |
||||
|
stringsAsFactors = FALSE |
||||
|
) -> x2 |
||||
|
|
||||
|
x2$ts <- .POSIXct(as.numeric(x2$ts)) |
||||
|
|
||||
|
out <- rbind.data.frame(x1, x2) |
||||
|
|
||||
|
class(out) <- c("tbl_df", "tbl", "data.frame") |
||||
|
|
||||
|
out |
||||
|
|
||||
|
} |
@ -0,0 +1,30 @@ |
|||||
|
#' Get or set PIHOLE_HOST value |
||||
|
#' |
||||
|
#' @md |
||||
|
#' @param force Force setting a new Pi-Hole host[:port] the current environment? |
||||
|
#' @return atomic character vector containing the Pi-Hole host[:port] |
||||
|
#' @export |
||||
|
pi_host <- function(force = FALSE) { |
||||
|
|
||||
|
env <- Sys.getenv('PIHOLE_HOST') |
||||
|
if (!identical(env, "") && !force) return(env) |
||||
|
|
||||
|
if (!interactive()) { |
||||
|
stop("Please set env var PIHOLE_HOST to your Pi-Hole host[:port]", |
||||
|
call. = FALSE) |
||||
|
} |
||||
|
|
||||
|
message("Couldn't find env var PIHOLE_HOST See ?pi_host for more details.") |
||||
|
message("Please enter your Pi-Hole host[:port]:") |
||||
|
pat <- readline(": ") |
||||
|
|
||||
|
if (identical(pat, "")) { |
||||
|
stop("Pi-Hole host[:port] entry failed", call. = FALSE) |
||||
|
} |
||||
|
|
||||
|
message("Updating PIHOLE_HOST env var") |
||||
|
Sys.setenv(PIHOLE_HOST = pat) |
||||
|
|
||||
|
pat |
||||
|
|
||||
|
} |
@ -0,0 +1,8 @@ |
|||||
|
#' Get PIHOLE_API_KEY value |
||||
|
#' |
||||
|
#' Can be non-existant or blank ("") |
||||
|
#' |
||||
|
#' @md |
||||
|
#' @return atomic character vector containing the Pi-Hole API key |
||||
|
#' @export |
||||
|
pi_key <- function() { Sys.getenv('PIHOLE_API_KEY') } |
@ -0,0 +1,30 @@ |
|||||
|
#' Get query types distribution |
||||
|
#' |
||||
|
#' @param host See [pi_host()] |
||||
|
#' @param api_key See [pi_key()] |
||||
|
#' @export |
||||
|
pi_query_types <- function(host = pi_host(), api_key = pi_key()) { |
||||
|
|
||||
|
pi_hole_api_url <- paste0("http://", host, "/admin/api.php") |
||||
|
|
||||
|
httr::GET( |
||||
|
url = paste0(pi_hole_api_url, "?", "getQueryTypes", "&", "auth", "=", api_key) |
||||
|
) -> res |
||||
|
|
||||
|
httr::stop_for_status(res) |
||||
|
|
||||
|
out <- httr::content(res) |
||||
|
|
||||
|
out <- out$querytypes |
||||
|
|
||||
|
data.frame( |
||||
|
type = names(out), |
||||
|
pct = unlist(unname(out))/100, |
||||
|
stringsAsFactors = FALSE |
||||
|
) -> out |
||||
|
|
||||
|
class(out) <- c("tbl_df", "tbl", "data.frame") |
||||
|
|
||||
|
out |
||||
|
|
||||
|
} |
@ -0,0 +1,20 @@ |
|||||
|
#' Get recent blocked |
||||
|
#' |
||||
|
#' @param host See [pi_host()] |
||||
|
#' @param api_key See [pi_key()] |
||||
|
#' @export |
||||
|
pi_recent <- function(host = pi_host(), api_key = pi_key()) { |
||||
|
|
||||
|
pi_hole_api_url <- paste0("http://", host, "/admin/api.php") |
||||
|
|
||||
|
httr::GET( |
||||
|
url = paste0(pi_hole_api_url, "?", "recentBlocked", "&", "auth=", api_key) |
||||
|
) -> res |
||||
|
|
||||
|
httr::stop_for_status(res) |
||||
|
|
||||
|
out <- httr::content(res, as = "text", encoding = "UTF-8") |
||||
|
|
||||
|
out |
||||
|
|
||||
|
} |
@ -0,0 +1,20 @@ |
|||||
|
#' Get summary stats |
||||
|
#' |
||||
|
#' @param host See [pi_host()] |
||||
|
#' @param api_key See [pi_key()] |
||||
|
#' @export |
||||
|
pi_summary <- function(host = pi_host(), api_key = pi_key()) { |
||||
|
|
||||
|
pi_hole_api_url <- paste0("http://", host, "/admin/api.php") |
||||
|
|
||||
|
httr::GET( |
||||
|
url = paste0(pi_hole_api_url, "?", "summaryRaw", "&", "auth=", api_key) |
||||
|
) -> res |
||||
|
|
||||
|
httr::stop_for_status(res) |
||||
|
|
||||
|
out <- httr::content(res) |
||||
|
|
||||
|
out |
||||
|
|
||||
|
} |
@ -0,0 +1,33 @@ |
|||||
|
#' Get top clients |
||||
|
#' |
||||
|
#' @param n \# of top clients (default 100) |
||||
|
#' @param host See [pi_host()] |
||||
|
#' @param api_key See [pi_key()] |
||||
|
#' @export |
||||
|
pi_top_clients <- function(n = 100, host = pi_host(), api_key = pi_key()) { |
||||
|
|
||||
|
pi_hole_api_url <- paste0("http://", host, "/admin/api.php") |
||||
|
|
||||
|
n <- as.integer(n[1]) |
||||
|
|
||||
|
httr::GET( |
||||
|
url = paste0(pi_hole_api_url, "?", "topClients", "=", n, "&", "auth", "=", api_key) |
||||
|
) -> res |
||||
|
|
||||
|
httr::stop_for_status(res) |
||||
|
|
||||
|
out <- httr::content(res) |
||||
|
|
||||
|
out <- out$top_sources |
||||
|
|
||||
|
data.frame( |
||||
|
client = names(out), |
||||
|
ct = unlist(unname(out)), |
||||
|
stringsAsFactors = FALSE |
||||
|
) -> out |
||||
|
|
||||
|
class(out) <- c("tbl_df", "tbl", "data.frame") |
||||
|
|
||||
|
out |
||||
|
|
||||
|
} |
@ -0,0 +1,43 @@ |
|||||
|
#' Get top items |
||||
|
#' |
||||
|
#' @param n \# of top items (default 100) |
||||
|
#' @param host See [pi_host()] |
||||
|
#' @param api_key See [pi_key()] |
||||
|
#' @export |
||||
|
pi_top_items <- function(n = 100L, host = pi_host(), api_key = pi_key()) { |
||||
|
|
||||
|
pi_hole_api_url <- paste0("http://", host, "/admin/api.php") |
||||
|
|
||||
|
n <- as.integer(n[1]) |
||||
|
|
||||
|
pi_hole_api_url <- paste0("http://", host, "/admin/api.php") |
||||
|
|
||||
|
httr::GET( |
||||
|
url = paste0(pi_hole_api_url, "?", "topItems", "=", n, "&", "auth=", api_key) |
||||
|
) -> res |
||||
|
|
||||
|
httr::stop_for_status(res) |
||||
|
|
||||
|
out <- httr::content(res) |
||||
|
|
||||
|
data.frame( |
||||
|
kind = "query", |
||||
|
domain = names(out$top_queries), |
||||
|
ct = unlist(unname(out$top_queries)), |
||||
|
stringsAsFactors = FALSE |
||||
|
) -> x1 |
||||
|
|
||||
|
data.frame( |
||||
|
kind = "ad", |
||||
|
domain = names(out$top_ads), |
||||
|
ct = unlist(unname(out$top_ads)), |
||||
|
stringsAsFactors = FALSE |
||||
|
) -> x2 |
||||
|
|
||||
|
out <- rbind.data.frame(x1, x2) |
||||
|
|
||||
|
class(out) <- c("tbl_df", "tbl", "data.frame") |
||||
|
|
||||
|
out |
||||
|
|
||||
|
} |
@ -0,0 +1,11 @@ |
|||||
|
#' Pipe operator |
||||
|
#' |
||||
|
#' See \code{magrittr::\link[magrittr:pipe]{\%>\%}} for details. |
||||
|
#' |
||||
|
#' @name %>% |
||||
|
#' @rdname pipe |
||||
|
#' @keywords internal |
||||
|
#' @export |
||||
|
#' @importFrom magrittr %>% |
||||
|
#' @usage lhs \%>\% rhs |
||||
|
NULL |
@ -0,0 +1,76 @@ |
|||||
|
|
||||
|
[![Project Status: Active – The project has reached a stable, usable |
||||
|
state and is being actively |
||||
|
developed.](https://www.repostatus.org/badges/latest/active.svg)](https://www.repostatus.org/#active) |
||||
|
[![Signed |
||||
|
by](https://img.shields.io/badge/Keybase-Verified-brightgreen.svg)](https://keybase.io/hrbrmstr) |
||||
|
![Signed commit |
||||
|
%](https://img.shields.io/badge/Signed_Commits-100%25-lightgrey.svg) |
||||
|
[![Linux build |
||||
|
Status](https://travis-ci.org/hrbrmstr/countenance.svg?branch=master)](https://travis-ci.org/hrbrmstr/countenance) |
||||
|
![Minimal R |
||||
|
Version](https://img.shields.io/badge/R%3E%3D-3.2.0-blue.svg) |
||||
|
![License](https://img.shields.io/badge/License-MIT-blue.svg) |
||||
|
|
||||
|
# countenance |
||||
|
|
||||
|
Tools to Work with the Pi-Hole API |
||||
|
|
||||
|
## Description |
||||
|
|
||||
|
Named after a primary synonym for ‘pihole’, tools are provided to access |
||||
|
the Pi-Hole API. |
||||
|
|
||||
|
## What’s Inside The Tin |
||||
|
|
||||
|
The following functions are implemented: |
||||
|
|
||||
|
- `pi_fwd_dest`: Get forward destinations (i.e. upstream DNS) |
||||
|
- `pi_host`: Get or set PIHOLE\_HOST value |
||||
|
- `pi_key`: Get PIHOLE\_API\_KEY value |
||||
|
- `pi_over_time_10m`: Get recent 10 min time series counts |
||||
|
- `pi_queries`: Get query types distribution |
||||
|
- `pi_query_types`: Get query types distribution |
||||
|
- `pi_recent`: Get recent blocked |
||||
|
- `pi_summary`: Get summary stats |
||||
|
- `pi_test`: Test connectivity to/get info about a Pi-Hole |
||||
|
- `pi_top_clients`: Get top clients |
||||
|
- `pi_top_items`: Get top items |
||||
|
|
||||
|
## Installation |
||||
|
|
||||
|
``` r |
||||
|
remotes::install_git("https://git.rud.is/hrbrmstr/countenance.git") |
||||
|
# or |
||||
|
remotes::install_git("https://git.sr.ht/~hrbrmstr/countenance") |
||||
|
# or |
||||
|
remotes::install_gitlab("hrbrmstr/countenance") |
||||
|
# or |
||||
|
remotes::install_github("hrbrmstr/countenance") |
||||
|
``` |
||||
|
|
||||
|
NOTE: To use the ‘remotes’ install options you will need to have the |
||||
|
[{remotes} package](https://github.com/r-lib/remotes) installed. |
||||
|
|
||||
|
## Usage |
||||
|
|
||||
|
``` r |
||||
|
library(countenance) |
||||
|
|
||||
|
# current version |
||||
|
packageVersion("countenance") |
||||
|
## [1] '0.1.0' |
||||
|
``` |
||||
|
|
||||
|
## countenance Metrics |
||||
|
|
||||
|
| Lang | \# Files | (%) | LoC | (%) | Blank lines | (%) | \# Lines | (%) | |
||||
|
| :--- | -------: | ---: | --: | ---: | ----------: | ---: | -------: | ---: | |
||||
|
| R | 15 | 0.94 | 207 | 0.96 | 119 | 0.89 | 90 | 0.76 | |
||||
|
| Rmd | 1 | 0.06 | 8 | 0.04 | 15 | 0.11 | 28 | 0.24 | |
||||
|
|
||||
|
## Code of Conduct |
||||
|
|
||||
|
Please note that this project is released with a Contributor Code of |
||||
|
Conduct. By participating in this project you agree to abide by its |
||||
|
terms. |
@ -0,0 +1,16 @@ |
|||||
|
% Generated by roxygen2: do not edit by hand |
||||
|
% Please edit documentation in R/forward.R |
||||
|
\name{pi_fwd_dest} |
||||
|
\alias{pi_fwd_dest} |
||||
|
\title{Get forward destinations (i.e. upstream DNS)} |
||||
|
\usage{ |
||||
|
pi_fwd_dest(host = pi_host(), api_key = pi_key()) |
||||
|
} |
||||
|
\arguments{ |
||||
|
\item{host}{See \code{\link[=pi_host]{pi_host()}}} |
||||
|
|
||||
|
\item{api_key}{See \code{\link[=pi_key]{pi_key()}}} |
||||
|
} |
||||
|
\description{ |
||||
|
Get forward destinations (i.e. upstream DNS) |
||||
|
} |
@ -0,0 +1,17 @@ |
|||||
|
% Generated by roxygen2: do not edit by hand |
||||
|
% Please edit documentation in R/pi-host.R |
||||
|
\name{pi_host} |
||||
|
\alias{pi_host} |
||||
|
\title{Get or set PIHOLE_HOST value} |
||||
|
\usage{ |
||||
|
pi_host(force = FALSE) |
||||
|
} |
||||
|
\arguments{ |
||||
|
\item{force}{Force setting a new Pi-Hole host\link{:port} the current environment?} |
||||
|
} |
||||
|
\value{ |
||||
|
atomic character vector containing the Pi-Hole host\link{:port} |
||||
|
} |
||||
|
\description{ |
||||
|
Get or set PIHOLE_HOST value |
||||
|
} |
@ -0,0 +1,14 @@ |
|||||
|
% Generated by roxygen2: do not edit by hand |
||||
|
% Please edit documentation in R/pi-key.R |
||||
|
\name{pi_key} |
||||
|
\alias{pi_key} |
||||
|
\title{Get PIHOLE_API_KEY value} |
||||
|
\usage{ |
||||
|
pi_key() |
||||
|
} |
||||
|
\value{ |
||||
|
atomic character vector containing the Pi-Hole API key |
||||
|
} |
||||
|
\description{ |
||||
|
Can be non-existant or blank ("") |
||||
|
} |
@ -0,0 +1,16 @@ |
|||||
|
% Generated by roxygen2: do not edit by hand |
||||
|
% Please edit documentation in R/overtime-10.R |
||||
|
\name{pi_over_time_10m} |
||||
|
\alias{pi_over_time_10m} |
||||
|
\title{Get recent 10 min time series counts} |
||||
|
\usage{ |
||||
|
pi_over_time_10m(host = pi_host(), api_key = pi_key()) |
||||
|
} |
||||
|
\arguments{ |
||||
|
\item{host}{See \code{\link[=pi_host]{pi_host()}}} |
||||
|
|
||||
|
\item{api_key}{See \code{\link[=pi_key]{pi_key()}}} |
||||
|
} |
||||
|
\description{ |
||||
|
Get recent 10 min time series counts |
||||
|
} |
@ -0,0 +1,18 @@ |
|||||
|
% Generated by roxygen2: do not edit by hand |
||||
|
% Please edit documentation in R/all-q.R |
||||
|
\name{pi_queries} |
||||
|
\alias{pi_queries} |
||||
|
\title{Get query types distribution} |
||||
|
\usage{ |
||||
|
pi_queries(q = NULL, host = pi_host(), api_key = pi_key()) |
||||
|
} |
||||
|
\arguments{ |
||||
|
\item{q}{query} |
||||
|
|
||||
|
\item{host}{See \code{\link[=pi_host]{pi_host()}}} |
||||
|
|
||||
|
\item{api_key}{See \code{\link[=pi_key]{pi_key()}}} |
||||
|
} |
||||
|
\description{ |
||||
|
Get query types distribution |
||||
|
} |
@ -0,0 +1,16 @@ |
|||||
|
% Generated by roxygen2: do not edit by hand |
||||
|
% Please edit documentation in R/query-types.R |
||||
|
\name{pi_query_types} |
||||
|
\alias{pi_query_types} |
||||
|
\title{Get query types distribution} |
||||
|
\usage{ |
||||
|
pi_query_types(host = pi_host(), api_key = pi_key()) |
||||
|
} |
||||
|
\arguments{ |
||||
|
\item{host}{See \code{\link[=pi_host]{pi_host()}}} |
||||
|
|
||||
|
\item{api_key}{See \code{\link[=pi_key]{pi_key()}}} |
||||
|
} |
||||
|
\description{ |
||||
|
Get query types distribution |
||||
|
} |
@ -0,0 +1,16 @@ |
|||||
|
% Generated by roxygen2: do not edit by hand |
||||
|
% Please edit documentation in R/recent.R |
||||
|
\name{pi_recent} |
||||
|
\alias{pi_recent} |
||||
|
\title{Get recent blocked} |
||||
|
\usage{ |
||||
|
pi_recent(host = pi_host(), api_key = pi_key()) |
||||
|
} |
||||
|
\arguments{ |
||||
|
\item{host}{See \code{\link[=pi_host]{pi_host()}}} |
||||
|
|
||||
|
\item{api_key}{See \code{\link[=pi_key]{pi_key()}}} |
||||
|
} |
||||
|
\description{ |
||||
|
Get recent blocked |
||||
|
} |
@ -0,0 +1,16 @@ |
|||||
|
% Generated by roxygen2: do not edit by hand |
||||
|
% Please edit documentation in R/summary.R |
||||
|
\name{pi_summary} |
||||
|
\alias{pi_summary} |
||||
|
\title{Get summary stats} |
||||
|
\usage{ |
||||
|
pi_summary(host = pi_host(), api_key = pi_key()) |
||||
|
} |
||||
|
\arguments{ |
||||
|
\item{host}{See \code{\link[=pi_host]{pi_host()}}} |
||||
|
|
||||
|
\item{api_key}{See \code{\link[=pi_key]{pi_key()}}} |
||||
|
} |
||||
|
\description{ |
||||
|
Get summary stats |
||||
|
} |
@ -0,0 +1,28 @@ |
|||||
|
% Generated by roxygen2: do not edit by hand |
||||
|
% Please edit documentation in R/main.R |
||||
|
\name{pi_test} |
||||
|
\alias{pi_test} |
||||
|
\alias{pi_type} |
||||
|
\alias{pi_version} |
||||
|
\alias{pi_enable} |
||||
|
\alias{pi_disable} |
||||
|
\title{Test connectivity to/get info about a Pi-Hole} |
||||
|
\usage{ |
||||
|
pi_test(host = pi_host(), api_key = pi_key()) |
||||
|
|
||||
|
pi_type(host = pi_host(), api_key = pi_key()) |
||||
|
|
||||
|
pi_version(host = pi_host(), api_key = pi_key()) |
||||
|
|
||||
|
pi_enable(host = pi_host(), api_key = pi_key()) |
||||
|
|
||||
|
pi_disable(host = pi_host(), api_key = pi_key()) |
||||
|
} |
||||
|
\arguments{ |
||||
|
\item{host}{See \code{\link[=pi_host]{pi_host()}}} |
||||
|
|
||||
|
\item{api_key}{See \code{\link[=pi_key]{pi_key()}}} |
||||
|
} |
||||
|
\description{ |
||||
|
Test connectivity to/get info about a Pi-Hole |
||||
|
} |
@ -0,0 +1,18 @@ |
|||||
|
% Generated by roxygen2: do not edit by hand |
||||
|
% Please edit documentation in R/top-clients.R |
||||
|
\name{pi_top_clients} |
||||
|
\alias{pi_top_clients} |
||||
|
\title{Get top clients} |
||||
|
\usage{ |
||||
|
pi_top_clients(n = 100, host = pi_host(), api_key = pi_key()) |
||||
|
} |
||||
|
\arguments{ |
||||
|
\item{n}{\# of top clients (default 100)} |
||||
|
|
||||
|
\item{host}{See \code{\link[=pi_host]{pi_host()}}} |
||||
|
|
||||
|
\item{api_key}{See \code{\link[=pi_key]{pi_key()}}} |
||||
|
} |
||||
|
\description{ |
||||
|
Get top clients |
||||
|
} |
@ -0,0 +1,18 @@ |
|||||
|
% Generated by roxygen2: do not edit by hand |
||||
|
% Please edit documentation in R/top-items.R |
||||
|
\name{pi_top_items} |
||||
|
\alias{pi_top_items} |
||||
|
\title{Get top items} |
||||
|
\usage{ |
||||
|
pi_top_items(n = 100L, host = pi_host(), api_key = pi_key()) |
||||
|
} |
||||
|
\arguments{ |
||||
|
\item{n}{\# of top items (default 100)} |
||||
|
|
||||
|
\item{host}{See \code{\link[=pi_host]{pi_host()}}} |
||||
|
|
||||
|
\item{api_key}{See \code{\link[=pi_key]{pi_key()}}} |
||||
|
} |
||||
|
\description{ |
||||
|
Get top items |
||||
|
} |
@ -0,0 +1,12 @@ |
|||||
|
% Generated by roxygen2: do not edit by hand |
||||
|
% Please edit documentation in R/utils-pipe.R |
||||
|
\name{\%>\%} |
||||
|
\alias{\%>\%} |
||||
|
\title{Pipe operator} |
||||
|
\usage{ |
||||
|
lhs \%>\% rhs |
||||
|
} |
||||
|
\description{ |
||||
|
See \code{magrittr::\link[magrittr:pipe]{\%>\%}} for details. |
||||
|
} |
||||
|
\keyword{internal} |
Loading…
Reference in new issue