<?php
// config.php
define('AGH_URL', 'http://localhost:3000');
define('AGH_USERNAME', 'your_username');
define('AGH_PASSWORD', 'your_password');
define('ALLOW_PUBLIC_ACTIONS', false); // set true only with CAPTCHA
define('RATE_LIMIT_PER_IP', 10); // requests per hour
?>
Schools route all student traffic through a publicphp gateway that sanitizes YouTube comments, blocks social media, and filters violence.
Replace the large config output with a trimmed response: tbrg adguardnet publicphp work
$out = [
'time' => date('c'),
'queries_today' => $info['queries_today'] ?? null,
'blocked_today' => $info['blocked_today'] ?? null,
'top_clients' => array_slice($info['top_clients'] ?? [], 0, 5),
];
Working with public.php in a DNS environment requires strict security hygiene: Schools route all student traffic through a publicphp
Emerging standards like DOH (DNS over HTTPS) and ECH (Encrypted Client Hello) will make server-side filtering more challenging but also more necessary. Future versions of this workflow will likely replace PHP with Go or Rust for better performance, but the logical flow—gateway → filter engine → response—will remain. Working with public
<?php
// public.php - simple AdGuard Home status endpoint
$adguard_url = 'http://127.0.0.1:3000'; // AdGuard admin API base
$api_token = ''; // set if required, e.g., 'Bearer xxxxxx' or leave empty
function adguard_get($path, $api_token='')
$url = rtrim($GLOBALS['adguard_url'], '/') . '/' . ltrim($path, '/');
$ch = curl_init($url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
if ($api_token !== '')
curl_setopt($ch, CURLOPT_HTTPHEADER, ['Authorization: ' . $api_token]);
curl_setopt($ch, CURLOPT_TIMEOUT, 5);
$res = curl_exec($ch);
$err = curl_error($ch);
$code = curl_getinfo($ch, CURLINFO_HTTP_CODE);
curl_close($ch);
if ($res === false) return ['error' => $err, 'code' => $code];
$data = json_decode($res, true);
if (json_last_error() !== JSON_ERROR_NONE) return ['raw' => $res, 'code' => $code];
return $data;
// Example calls
$info = adguard_get('/control/stats'); // stats endpoint
$filters = adguard_get('/control/config'); // config or other endpoints
header('Content-Type: application/json');
$out = [
'timestamp' => time(),
'stats' => $info,
'config' => $filters
];
echo json_encode($out, JSON_PRETTY_PRINT);
Notes:
After adding allow rules, test with cURL:
curl -H "User-Agent: Mozilla/5.0" https://tbrg.yoursite.com/public.php?test=1
If you get a response and AdGuard log shows allowed, your setup works.