mirror of
https://github.com/eduardogsilva/wireguard_webadmin.git
synced 2025-03-18 18:14:02 +00:00
display destination port forwarding
This commit is contained in:
parent
c8aedc5437
commit
5fc0a17d09
@ -1,39 +1,39 @@
|
||||
{% extends 'base.html' %}
|
||||
|
||||
{% block page_custom_head %}
|
||||
<style>
|
||||
.first-line-container {
|
||||
display: flex;
|
||||
align-items: center; /* Centraliza os itens verticalmente */
|
||||
width: 100%;
|
||||
}
|
||||
|
||||
.more-link {
|
||||
margin-left: auto; /* Empurra o link para a direita */
|
||||
text-decoration: none;
|
||||
}
|
||||
|
||||
.more-text {
|
||||
display: none;
|
||||
width: 100%;
|
||||
}
|
||||
<style>
|
||||
.first-line-container {
|
||||
display: flex;
|
||||
align-items: center; /* Centraliza os itens verticalmente */
|
||||
width: 100%;
|
||||
}
|
||||
|
||||
.fw_automatic_rule {
|
||||
display: none;
|
||||
}
|
||||
|
||||
</style>
|
||||
.more-link {
|
||||
margin-left: auto; /* Empurra o link para a direita */
|
||||
text-decoration: none;
|
||||
}
|
||||
|
||||
.more-text {
|
||||
display: none;
|
||||
width: 100%;
|
||||
}
|
||||
|
||||
.fw_automatic_rule {
|
||||
display: none;
|
||||
}
|
||||
|
||||
</style>
|
||||
{% endblock%}
|
||||
|
||||
{% block content %}
|
||||
|
||||
<div class="card card-primary card-outline">
|
||||
<div class="card-body">
|
||||
{% include "firewall/firewall_nav_tabs.html" %}
|
||||
<div class="tab-content" id="custom-content-below-tabContent">
|
||||
<div class="tab-pane fade show active" id="custom-content-below-home" role="tabpanel" aria-labelledby="custom-content-below-home-tab">
|
||||
<table class="table table-striped table-hover">
|
||||
<thead>
|
||||
<div class="card card-primary card-outline">
|
||||
<div class="card-body">
|
||||
{% include "firewall/firewall_nav_tabs.html" %}
|
||||
<div class="tab-content" id="custom-content-below-tabContent">
|
||||
<div class="tab-pane fade show active" id="custom-content-below-home" role="tabpanel" aria-labelledby="custom-content-below-home-tab">
|
||||
<table class="table table-striped table-hover">
|
||||
<thead>
|
||||
<th>#</th>
|
||||
<th><i class="fas fa-info-circle"></i></th>
|
||||
<th>In</th>
|
||||
@ -45,72 +45,81 @@
|
||||
<th>State</th>
|
||||
<th>Action</th>
|
||||
<th><i class="far fa-edit"></i></th>
|
||||
</thead>
|
||||
<tbody>
|
||||
<tr class="fw_automatic_rule">
|
||||
<td>-</td>
|
||||
<td><i class="fas fa-info-circle" title="Automatic rule: Allow established/related traffic"></i></td>
|
||||
<td></td>
|
||||
<td></td>
|
||||
<td></td>
|
||||
<td></td>
|
||||
<td>all</td>
|
||||
<td></td>
|
||||
<td>Related<br>
|
||||
Established
|
||||
</td>
|
||||
<td>ACCEPT</td>
|
||||
<td></td>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
<tr class="fw_automatic_rule">
|
||||
<td>-</td>
|
||||
<td><i class="fas fa-info-circle" title="Automatic rule: Allow established/related traffic"></i></td>
|
||||
<td></td>
|
||||
<td></td>
|
||||
<td></td>
|
||||
<td></td>
|
||||
<td>all</td>
|
||||
<td></td>
|
||||
<td>Related<br>
|
||||
Established
|
||||
</td>
|
||||
<td>ACCEPT</td>
|
||||
<td></td>
|
||||
</tr>
|
||||
|
||||
{% for rule in port_forward_list %}
|
||||
{% if rule.add_forward_rule and current_chain == 'forward' %}
|
||||
<tr class="fw_automatic_rule">
|
||||
<td>-</td>
|
||||
<td><i class="fas fa-info-circle" title="Port forward automatic rule. {{ rule.description|default_if_none:'' }}"></i></td>
|
||||
<td>{{ firewall_settings.wan_interface }}</td>
|
||||
<td>wg{{ rule.wireguard_instance.instance_id }}</td>
|
||||
<td></td>
|
||||
<td>
|
||||
{% if rule.ip_address %}
|
||||
{{ rule.ip_address }}
|
||||
{% elif rule.peer %}
|
||||
{{ rule.peer }}
|
||||
{% endif %}
|
||||
</td>
|
||||
<td>{{ rule.get_protocol_display }}</td>
|
||||
<td>{{ rule.port }}</td>
|
||||
<td></td>
|
||||
<td>ACCEPT</td>
|
||||
<td></td>
|
||||
<tr class="fw_automatic_rule">
|
||||
<td>-</td>
|
||||
<td><i class="fas fa-info-circle" title="Port forward automatic rule. {{ rule.description|default_if_none:'' }}"></i></td>
|
||||
<td>{{ firewall_settings.wan_interface }}</td>
|
||||
<td>wg{{ rule.wireguard_instance.instance_id }}</td>
|
||||
<td></td>
|
||||
<td>
|
||||
{% if rule.ip_address %}
|
||||
{{ rule.ip_address }}
|
||||
{% elif rule.peer %}
|
||||
{{ rule.peer }}
|
||||
{% endif %}
|
||||
</td>
|
||||
<td>{{ rule.get_protocol_display }}</td>
|
||||
<td>
|
||||
{% if rule.port_forward %}
|
||||
{{ rule.port_forward }}
|
||||
{% else %}
|
||||
{{ rule.port }}
|
||||
{% endif %}
|
||||
</td>
|
||||
<td></td>
|
||||
<td>ACCEPT</td>
|
||||
<td></td>
|
||||
</tr>
|
||||
{% elif rule.masquerade_source and current_chain == 'postrouting' %}
|
||||
<tr class="fw_automatic_rule">
|
||||
<td>-</td>
|
||||
<td><i class="fas fa-info-circle" title="Port forward automatic rule. {{ rule.description|default_if_none:'' }}"></i></td>
|
||||
<td></td>
|
||||
<td>wg{{ rule.wireguard_instance.instance_id }}</td>
|
||||
<td></td>
|
||||
<td>
|
||||
{% if rule.ip_address %}
|
||||
{{ rule.ip_address }}
|
||||
{% elif rule.peer %}
|
||||
{{ rule.peer }}
|
||||
{% endif %}
|
||||
</td>
|
||||
<td>{{ rule.get_protocol_display }}</td>
|
||||
<td>{{ rule.port }}</td>
|
||||
<td></td>
|
||||
<td>MASQUERADE</td>
|
||||
<td></td>
|
||||
</tr>
|
||||
<tr class="fw_automatic_rule">
|
||||
<td>-</td>
|
||||
<td><i class="fas fa-info-circle" title="Port forward automatic rule. {{ rule.description|default_if_none:'' }}"></i></td>
|
||||
<td></td>
|
||||
<td>wg{{ rule.wireguard_instance.instance_id }}</td>
|
||||
<td></td>
|
||||
<td>
|
||||
{% if rule.ip_address %}
|
||||
{{ rule.ip_address }}
|
||||
{% elif rule.peer %}
|
||||
{{ rule.peer }}
|
||||
{% endif %}
|
||||
</td>
|
||||
<td>{{ rule.get_protocol_display }}</td>
|
||||
<td>
|
||||
{% if rule.port_forward %}
|
||||
{{ rule.port_forward }}
|
||||
{% else %}
|
||||
{{ rule.port }}
|
||||
{% endif %}
|
||||
</td>
|
||||
<td></td>
|
||||
<td>MASQUERADE</td>
|
||||
<td></td>
|
||||
</tr>
|
||||
{% endif %}
|
||||
|
||||
|
||||
{% endfor %}
|
||||
|
||||
{% for rule in firewall_rule_list %}
|
||||
|
||||
<tr>
|
||||
<td style="width: 1%; white-space: nowrap;">{{ rule.sort_order }}</td>
|
||||
<td style="width: 1%; white-space: nowrap;">{% if rule.description %}<i class="fas fa-info-circle" title="{{ rule.description }}"></i>{% endif %}</td>
|
||||
@ -119,13 +128,12 @@
|
||||
<td>
|
||||
{% if rule.source_ip %}{% if rule.not_source %}<span title="Not source">!</span> {% endif %}{{ rule.source_ip }}/{{ rule.source_netmask }}<br>{% endif%}
|
||||
{% for peer in rule.source_peer.all %}{% if rule.not_source %}<span title="Not source">!</span> {% endif %}{{ peer }}{% if rule.source_peer_include_networks %} <span title="Include peer networks">+</span>{% endif %}<br>{% endfor %}
|
||||
|
||||
|
||||
</td>
|
||||
<td>
|
||||
{% if rule.destination_ip %}{% if rule.not_destination %}<span title="Not destination">!</span> {% endif %}{{ rule.destination_ip }}/{{ rule.destination_netmask }}<br>{% endif%}
|
||||
{% for peer in rule.destination_peer.all %}{% if rule.not_destination %}<span title="Not destination">!</span> {% endif %}{{ peer }}{% if rule.destination_peer_include_networks %} <span title="Include peer networks">+</span>{% endif %}<br>{% endfor %}
|
||||
</td>
|
||||
|
||||
<td>{{ rule.get_protocol_display|default_if_none:'all' }}</td>
|
||||
<td>{{ rule.destination_port|default_if_none:'' }}</td>
|
||||
<td>
|
||||
@ -136,103 +144,93 @@
|
||||
{% if rule.state_untracked %}{% if rule.not_state %}<span title="Not state">! </span>{% endif %}Untracked<br>{% endif %}
|
||||
</td>
|
||||
<td>{{ rule.get_rule_action_display }}</td>
|
||||
{% comment%}
|
||||
<td>{{ rule. }}</td>
|
||||
{% endcomment %}
|
||||
<td style="width: 1%; white-space: nowrap;">
|
||||
<a href="/firewall/manage_firewall_rule/?uuid={{ rule.uuid }}" ><i class="far fa-edit"></i></a>
|
||||
</td>
|
||||
</tr>
|
||||
{% endfor %}
|
||||
|
||||
|
||||
{% if current_chain == 'forward' %}
|
||||
{% for wireguard_instance in wireguard_instances %}
|
||||
{% for wireguard_instance in wireguard_instances %}
|
||||
<tr class="fw_automatic_rule">
|
||||
<td>-</td>
|
||||
<td><i class="fas fa-info-circle" title="Automatic Rule: Firewall Settings Peer to Peer traffic"></i></td>
|
||||
<td>wg{{ wireguard_instance.instance_id }}</td>
|
||||
<td>wg{{ wireguard_instance.instance_id }}</td>
|
||||
<td></td>
|
||||
<td></td>
|
||||
<td></td>
|
||||
<td></td>
|
||||
<td></td>
|
||||
<td>
|
||||
{% if firewall_settings.allow_peer_to_peer %}
|
||||
ACCEPT
|
||||
{% else %}
|
||||
REJECT
|
||||
{% endif %}
|
||||
</td>
|
||||
<td></td>
|
||||
</tr>
|
||||
{% endfor %}
|
||||
|
||||
<tr class="fw_automatic_rule">
|
||||
<td>-</td>
|
||||
<td><i class="fas fa-info-circle" title="Automatic Rule: Firewall Settings Peer to Peer traffic"></i></td>
|
||||
<td>wg{{ wireguard_instance.instance_id }}</td>
|
||||
<td>wg{{ wireguard_instance.instance_id }}</td>
|
||||
<td>-</td>
|
||||
<td><i class="fas fa-info-circle" title="Automatic Rule: Firewall Settings Instance to Instance"></i></td>
|
||||
<td>wg+</td>
|
||||
<td>wg+</td>
|
||||
<td></td>
|
||||
<td></td>
|
||||
<td></td>
|
||||
<td></td>
|
||||
<td></td>
|
||||
<td>
|
||||
{% if firewall_settings.allow_peer_to_peer %}
|
||||
ACCEPT
|
||||
{% else %}
|
||||
REJECT
|
||||
{% endif %}
|
||||
</td>
|
||||
<td>{% if firewall_settings.allow_instance_to_instance %}ACCEPT{% else %}REJECT{% endif %}</td>
|
||||
<td></td>
|
||||
</tr>
|
||||
{% endfor %}
|
||||
|
||||
<tr class="fw_automatic_rule">
|
||||
<td>-</td>
|
||||
<td><i class="fas fa-info-circle" title="Automatic Rule: Firewall Settings Instance to Instance"></i></td>
|
||||
<td>wg+</td>
|
||||
<td>wg+</td>
|
||||
<td></td>
|
||||
<td></td>
|
||||
<td></td>
|
||||
<td></td>
|
||||
<td></td>
|
||||
<td>{% if firewall_settings.allow_instance_to_instance %}ACCEPT{% else %}REJECT{% endif %}</td>
|
||||
<td></td>
|
||||
</tr>
|
||||
{% endif %}
|
||||
</tbody>
|
||||
</table>
|
||||
|
||||
</tbody>
|
||||
</table>
|
||||
|
||||
<a href="/firewall/manage_firewall_rule/?chain={{ current_chain }}" class='btn btn-primary'>Create Firewall Rule</a>
|
||||
<a href="/firewall/firewall_settings/?chain={{ current_chain }}" class='btn btn-outline-primary'>Firewall Settings</a>
|
||||
<a class='btn btn-outline-primary' onclick=$('.fw_automatic_rule').slideToggle();>Display automatic rules</a>
|
||||
<a href="/firewall/manage_firewall_rule/?chain={{ current_chain }}" class='btn btn-primary'>Create Firewall Rule</a>
|
||||
<a href="/firewall/firewall_settings/?chain={{ current_chain }}" class='btn btn-outline-primary'>Firewall Settings</a>
|
||||
<a class='btn btn-outline-primary' onclick=$('.fw_automatic_rule').slideToggle();>Display automatic rules</a>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
{% endblock %}
|
||||
|
||||
{% block custom_page_scripts %}
|
||||
<script>
|
||||
document.addEventListener("DOMContentLoaded", function() {
|
||||
document.querySelectorAll('td').forEach(function(td) {
|
||||
let brCount = (td.innerHTML.match(/<br>/g) || []).length;
|
||||
|
||||
if (brCount >= 2) {
|
||||
let contentParts = td.innerHTML.split('<br>');
|
||||
// Mantém a estrutura do contêiner com o texto e o link "More"
|
||||
let firstLineContainer = `<div class="first-line-container">${contentParts[0]}<a href="#" class="more-link">more</a></div>`;
|
||||
|
||||
td.innerHTML = firstLineContainer +
|
||||
'<span class="more-text" style="display: none;">' +
|
||||
contentParts.slice(1).join('<br>') + '</span>';
|
||||
}
|
||||
<script>
|
||||
document.addEventListener("DOMContentLoaded", function() {
|
||||
document.querySelectorAll('td').forEach(function(td) {
|
||||
let brCount = (td.innerHTML.match(/<br>/g) || []).length;
|
||||
|
||||
if (brCount >= 2) {
|
||||
let contentParts = td.innerHTML.split('<br>');
|
||||
// Mantém a estrutura do contêiner com o texto e o link "More"
|
||||
let firstLineContainer = `<div class="first-line-container">${contentParts[0]}<a href="#" class="more-link">more</a></div>`;
|
||||
|
||||
td.innerHTML = firstLineContainer +
|
||||
'<span class="more-text" style="display: none;">' +
|
||||
contentParts.slice(1).join('<br>') + '</span>';
|
||||
}
|
||||
});
|
||||
|
||||
document.querySelectorAll('.more-link').forEach(function(link) {
|
||||
link.addEventListener('click', function(e) {
|
||||
e.preventDefault(); // Impede a ação padrão do link
|
||||
let moreText = this.parentNode.nextElementSibling; // Seleciona o span corretamente
|
||||
if (moreText.style.display === "none") {
|
||||
moreText.style.display = "inline";
|
||||
this.textContent = "less";
|
||||
} else {
|
||||
moreText.style.display = "none";
|
||||
this.textContent = "more";
|
||||
}
|
||||
});
|
||||
});
|
||||
});
|
||||
|
||||
document.querySelectorAll('.more-link').forEach(function(link) {
|
||||
link.addEventListener('click', function(e) {
|
||||
e.preventDefault(); // Impede a ação padrão do link
|
||||
let moreText = this.parentNode.nextElementSibling; // Seleciona o span corretamente
|
||||
if (moreText.style.display === "none") {
|
||||
moreText.style.display = "inline";
|
||||
this.textContent = "less";
|
||||
} else {
|
||||
moreText.style.display = "none";
|
||||
this.textContent = "more";
|
||||
}
|
||||
});
|
||||
});
|
||||
});
|
||||
</script>
|
||||
</script>
|
||||
|
||||
{% endblock %}
|
Loading…
Reference in New Issue
Block a user