netzbeere-web/settings-dns.lp

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>&nbsp;<?= 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')?>