198 lines
12 KiB
Plaintext
198 lines
12 KiB
Plaintext
<? --[[
|
|
* Pi-hole: A black hole for Internet advertisements
|
|
* (c) 2023 Pi-hole, LLC (https://pi-hole.net)
|
|
* Network-wide ad blocking via your own hardware.
|
|
*
|
|
* This file is copyright under the latest version of the EUPL.
|
|
* Please see LICENSE file for your rights under this license.
|
|
--]]
|
|
|
|
mg.include('scripts/lua/header_authenticated.lp','r')
|
|
|
|
-- Page title and level selector
|
|
PageTitle = i18n('settings.dns.title')
|
|
mg.include('scripts/lua/settings_header.lp','r')
|
|
?>
|
|
<div class="row">
|
|
<div class="col-lg-6">
|
|
<div class="box box-warning">
|
|
<div class="box-header with-border">
|
|
<h1 class="box-title" data-configkeys="dns.upstreams" id="lblDNSupstreams"><?= i18n('settings.dns.upstream_dns_servers') ?></h1>
|
|
</div>
|
|
<div class="box-body">
|
|
<div class="row">
|
|
<div class="col-sm-12">
|
|
<table class="table table-striped table-bordered">
|
|
<thead>
|
|
<tr>
|
|
<th colspan="2"><?= i18n('settings.dns.ipv4') ?></th>
|
|
<th colspan="2"><?= i18n('settings.dns.ipv6') ?></th>
|
|
<th><?= i18n('settings.dns.name') ?></th>
|
|
</tr>
|
|
</thead>
|
|
<tbody id="DNSupstreamsTable">
|
|
</tbody>
|
|
</table>
|
|
<p><?= i18n('settings.dns.ecs_description') ?></p>
|
|
</div>
|
|
<div class="col-sm-12">
|
|
<div class="box collapsed-box">
|
|
<div class="box-header with-border pointer" data-widget="collapse">
|
|
<h3 class="box-title"><?= i18n('settings.dns.custom_dns_servers') ?> <span id="custom-servers-title"></span></h3>
|
|
<div class="box-tools pull-right">
|
|
<button type="button" class="btn btn-box-tool">
|
|
<i class="fa fa-plus"></i>
|
|
</button>
|
|
</div>
|
|
</div>
|
|
<div class="box-body" style="display: none;">
|
|
<p><?= i18n('settings.dns.custom_dns_servers_description') ?></p>
|
|
<textarea class="form-control" rows="3" id="DNSupstreamsTextfield" data-key="dns.upstreams" placeholder="<?= i18n('settings.dns.placeholder_upstream_servers') ?>" style="resize: vertical;"></textarea>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
<div class="overlay" id="dns-upstreams-overlay">
|
|
<i class="fa fa-sync fa-spin"></i>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
<div class="box box-warning settings-level-expert d-none">
|
|
<div class="box-header with-border">
|
|
<h3 class="box-title" data-configkeys="dns.domain dns.expandHosts"><?= i18n('settings.dns.domain_settings') ?></h3>
|
|
</div>
|
|
<div class="box-body">
|
|
<div class="row">
|
|
<div class="col-md-12">
|
|
<label><?= i18n('settings.dns.pihole_domain_name') ?></label>
|
|
<div class="form-group">
|
|
<div class="input-group">
|
|
<div class="input-group-addon"><?= i18n('shared.domain') ?></div>
|
|
<input type="text" class="form-control" id="dns.domain" data-key="dns.domain" value="">
|
|
</div>
|
|
</div>
|
|
<p><?= i18n('settings.dns.domain_description') ?></p>
|
|
<div>
|
|
<input type="checkbox" id="dns.expandHosts" data-key="dns.expandHosts" title="<?= i18n('settings.dns.domain_needed') ?>">
|
|
<label for="dns.expandHosts"><strong><?= i18n('settings.dns.expand_hostnames') ?></strong></label>
|
|
<p class="help-block"><?= i18n('settings.dns.expand_hostnames_description') ?></p>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
<div class="box box-warning settings-level-expert d-none">
|
|
<div class="box-header with-border">
|
|
<h3 class="box-title" data-configkeys="dns.rateLimit.count dns.rateLimit.interval"><?= i18n('settings.dns.rate_limiting') ?></h3>
|
|
</div>
|
|
<div class="box-body">
|
|
<div class="row">
|
|
<div class="col-lg-12">
|
|
<p><?= i18ns('settings.dns.rate_limiting_config', '<input type="number" id="dns.rateLimit.count" data-key="dns.rateLimit.count" data-type="integer" value="" min="0" step="10" style="width: 5em;">', '<input type="number" id="dns.rateLimit.interval" data-key="dns.rateLimit.interval" data-type="integer" value="" min="0" step="10" style="width: 4em;">') ?></p>
|
|
<p><?= i18n('settings.dns.rate_limiting_behavior') ?></p>
|
|
<p><?= i18n('settings.dns.rate_limiting_disable') ?></p>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
<div class="col-lg-6 settings-level-expert d-none">
|
|
<div class="box box-warning">
|
|
<div class="box-header with-border">
|
|
<h1 class="box-title" data-configkeys="dns.listeningMode"><?= i18n('settings.dns.interface_settings') ?></h1>
|
|
</div>
|
|
<div class="box-body">
|
|
<div class="row">
|
|
<div class="col-lg-12">
|
|
<div class="form-group">
|
|
<div class="no-danger-area">
|
|
<h4><?= i18n('settings.dns.recommended_setting') ?></h4>
|
|
<div>
|
|
<input type="radio" name="DNSinterface" id="dns.listeningMode-LOCAL" data-key="dns.listeningMode" value="local">
|
|
<label for="dns.listeningMode-LOCAL"><strong><?= i18n('settings.dns.allow_only_local_requests') ?></strong>
|
|
<p class="help-block"><?= i18n('settings.dns.allow_only_local_requests_help') ?></p>
|
|
</div>
|
|
</div>
|
|
<div class="danger-area">
|
|
<h4><?= i18n('settings.dns.potentially_dangerous_options') ?></h4><?= i18n('settings.dns.dangerous_options_help') ?>
|
|
<div>
|
|
<input type="radio" name="DNSinterface" id="dns.listeningMode-SINGLE" data-key="dns.listeningMode" value="single">
|
|
<label for="dns.listeningMode-SINGLE"><strong><?= i18ns('settings.dns.respond_only_on_interface', '<code id="interface-name-1"></code>') ?></strong></label>
|
|
</div>
|
|
<div>
|
|
<input type="radio" name="DNSinterface" id="dns.listeningMode-BIND" data-key="dns.listeningMode" value="bind">
|
|
<label for="dns.listeningMode-BIND"><strong><?= i18ns('settings.dns.bind_only_to_interface', '<code id="interface-name-2"></code>') ?></strong></label>
|
|
</div>
|
|
<div>
|
|
<input type="radio" name="DNSinterface" id="dns.listeningMode-ALL" data-key="dns.listeningMode" value="all">
|
|
<label for="dns.listeningMode-ALL"><strong><?= i18n('settings.dns.permit_all_origins') ?></strong></label>
|
|
</div>
|
|
<p class="help-block"><?= i18n('settings.dns.dangerous_options_help') ?></p>
|
|
</div>
|
|
</div>
|
|
<p><?= i18n('settings.dns.interface_doc_reference') ?></p>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
<div class="box box-warning">
|
|
<div class="box-header with-border">
|
|
<h3 class="box-title" data-configkeys="dns.domainNeeded dns.bogusPriv dns.dnssec"><?= i18n('settings.dns.advanced_dns_settings') ?></h3>
|
|
</div>
|
|
<div class="box-body">
|
|
<div class="row">
|
|
<div class="col-lg-12">
|
|
<div>
|
|
<input type="checkbox" id="dns.domainNeeded" data-key="dns.domainNeeded" title="<?= i18n('settings.dns.domain_needed') ?>">
|
|
<label for="dns.domainNeeded"><strong><?= i18n('settings.dns.never_forward_non_fqdn') ?></strong></label>
|
|
<p class="help-block"><?= i18n('settings.dns.never_forward_non_fqdn_help_1') ?><br>
|
|
<?= i18n('settings.dns.never_forward_non_fqdn_help_2') ?></p>
|
|
</div>
|
|
<br>
|
|
<div>
|
|
<input type="checkbox" id="dns.bogusPriv" data-key="dns.bogusPriv" title="<?= i18n('settings.dns.bogus_priv') ?>">
|
|
<label for="dns.bogusPriv"><strong><?= i18n('settings.dns.never_forward_reverse_private') ?></strong></label>
|
|
<p class="help-block"><?= i18n('settings.dns.never_forward_reverse_private_help') ?></p>
|
|
<p><strong><?= i18n('shared.important') ?>:</strong><br><?= i18n('settings.dns.privacy_warning') ?></p>
|
|
</div>
|
|
<br>
|
|
<div>
|
|
<input type="checkbox" id="dns.dnssec" data-key="dns.dnssec">
|
|
<label for="dns.dnssec"><strong><?= i18n('settings.dns.use_dnssec') ?></strong></label>
|
|
<p class="help-block"><?= i18n('settings.dns.use_dnssec_help') ?></p>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
<div class="col-lg-12">
|
|
<div class="box box-warning settings-level-expert d-none">
|
|
<div class="box-header with-border">
|
|
<h3 class="box-title" data-configkeys="dns.revServers"><?= i18n('settings.dns.conditional_forwarding') ?></h3>
|
|
</div>
|
|
<div class="box-body">
|
|
<div class="row">
|
|
<div class="col-lg-12">
|
|
<p><?= i18n('settings.dns.conditional_forwarding_note_1') ?></p>
|
|
<p><?= i18n('settings.dns.conditional_forwarding_note_2') ?></p>
|
|
<p><?= i18n('settings.dns.conditional_forwarding_note_3') ?></p>
|
|
<p><?= i18n('settings.dns.conditional_forwarding_note_4') ?></p>
|
|
<p><?= i18n('settings.dns.conditional_forwarding_note_5') ?></p>
|
|
<p><?= i18n('settings.dns.conditional_forwarding_note_6') ?></p>
|
|
<textarea class="form-control field-sizing-content" id="dns.revServers" data-key="dns.revServers" placeholder="<?= i18n('settings.dns.placeholder_rev_servers') ?>" style="resize: vertical;"></textarea>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
<div class="col-lg-12 save-button-container">
|
|
<button type="button" class="btn btn-primary save-button"><i class="fa-solid fa-fw fa-floppy-disk"></i> <?= i18n('settings.save_apply') ?></button>
|
|
</div>
|
|
</div>
|
|
<script src="<?=pihole.fileversion('vendor/bootstrap-toggle/bootstrap-toggle.min.js')?>"></script>
|
|
<script src="<?=pihole.fileversion('scripts/js/settings-dns.js')?>"></script>
|
|
<script src="<?=pihole.fileversion('scripts/js/settings.js')?>"></script>
|
|
|
|
<? mg.include('scripts/lua/footer.lp','r')?>
|