Skip to main content

dnslib/core/dns/
access_lists.rs

1use serde_json::Value;
2
3use crate::core::{
4    dns::service::{AccessListRead, AccessListWrite},
5    error::Result,
6};
7
8/// List manually blocked DNS domains through a vendor-neutral access-list reader.
9///
10/// # Errors
11///
12/// Returns any error reported by the selected DNS backend.
13pub async fn list_blocked<C: AccessListRead + ?Sized>(client: &C) -> Result<Value> {
14    client.list_blocked().await
15}
16
17/// List manually allowed DNS domains through a vendor-neutral access-list reader.
18///
19/// # Errors
20///
21/// Returns any error reported by the selected DNS backend.
22pub async fn list_allowed<C: AccessListRead + ?Sized>(client: &C) -> Result<Value> {
23    client.list_allowed().await
24}
25
26/// Add a domain to the blocked list through a vendor-neutral access-list writer.
27///
28/// # Errors
29///
30/// Returns any error reported by the selected DNS backend.
31pub async fn add_blocked<C: AccessListWrite + ?Sized>(client: &C, domain: &str) -> Result<Value> {
32    client.add_blocked(domain).await
33}
34
35/// Delete a domain from the blocked list through a vendor-neutral access-list writer.
36///
37/// # Errors
38///
39/// Returns any error reported by the selected DNS backend.
40pub async fn delete_blocked<C: AccessListWrite + ?Sized>(
41    client: &C,
42    domain: &str,
43) -> Result<Value> {
44    client.delete_blocked(domain).await
45}
46
47/// Add a domain to the allowed list through a vendor-neutral access-list writer.
48///
49/// # Errors
50///
51/// Returns any error reported by the selected DNS backend.
52pub async fn add_allowed<C: AccessListWrite + ?Sized>(client: &C, domain: &str) -> Result<Value> {
53    client.add_allowed(domain).await
54}
55
56/// Delete a domain from the allowed list through a vendor-neutral access-list writer.
57///
58/// # Errors
59///
60/// Returns any error reported by the selected DNS backend.
61pub async fn delete_allowed<C: AccessListWrite + ?Sized>(
62    client: &C,
63    domain: &str,
64) -> Result<Value> {
65    client.delete_allowed(domain).await
66}