FreedomBox/plinth/modules/networks/templates/connection_show.html
Fioddor Superconcentrado 012a9a0fc7
networks: Prevent unintended changes to primary connection.
Helps: #1962

Shown an alarming warning in connection_show page (only) for the primary
connection. Captions 'Deactivate' and 'Delete' buttons, now explicitly
mention the primary connection and they are placed within the warning
box.

Signed-off-by: Fioddor Superconcentrado <fioddor@gmail.com>
[sunil: Primary connection is not the same as connection user is using]
[sunil: Reduce the importance of primary connection as it is just default route]
[sunil: Update primary connection message]
[sunil: Fix the use of exclamation icon for screen readers as per bootstrap]
[sunil: Don't place buttons inside the warning, as it is non-intuitive UI]
Signed-off-by: Sunil Mohan Adapa <sunil@medhas.org>
Reviewed-by: Sunil Mohan Adapa <sunil@medhas.org>
2021-01-25 15:40:48 -08:00

327 lines
12 KiB
HTML

{% extends "base.html" %}
{% comment %}
# SPDX-License-Identifier: AGPL-3.0-or-later
# ToDo: if connection is disabled, no information are visible anymore (Bug)
{% endcomment %}
{% load static %}
{% load bootstrap %}
{% load i18n %}
{% block page_head %}
<link type="text/css" rel="stylesheet"
href="{% static 'networks/networks.css' %}"/>
{% endblock %}
{% block content %}
<div class="row">
<div class="col-md-8 offset-md-2">
{% if connection.primary %}
<div class="alert alert-warning" role="alert">
<span class="fa fa-exclamation-triangle" aria-hidden="true"></span>
<span class="sr-only">{% trans "Caution:" %}</span>
{% blocktrans trimmed %}
This is the primary connection that {{ box_name }} relies on for
Internet connectivity. Altering it may render your {{ box_name }}
unreachable. Ensure that you have other means to access
{{ box_name }} before altering this connection.
{% endblocktrans %}
</div>
{% endif %}
<div class="btn-toolbar">
<a href="{% url 'networks:edit' connection.uuid %}"
class="btn btn-primary" role="button"
title="{% trans "Edit connection" %}">{% trans "Edit" %}</a>
{% if active_connection %}
<form class="form" method="post"
action="{% url 'networks:deactivate' connection.uuid %}">
{% csrf_token %}
<button class="btn btn-default" type="submit">
{% trans "Deactivate" %}</button>
</form>
{% else %}
<form class="form" method="post"
action="{% url 'networks:activate' connection.uuid %}">
{% csrf_token %}
<button class="btn btn-default" type="submit">
{% trans "Activate" %}</button>
</form>
{% endif %}
<a href="{% url 'networks:delete' connection.uuid %}"
class="btn btn-danger button-secondary" role="button"
title="{% trans "Delete connection" %}">{% trans "Delete" %}</a>
</div>
<h3>{% trans "Connection" %}</h3>
<div class="list-group list-group-two-column">
{% if connection.primary %}
<div class="list-group-item">
<span class="primary">{% trans "Primary connection" %}</span>
<span class="badge badge-success secondary">
{% trans "yes" %}
</span>
</div>
{% endif %}
<div class="list-group-item">
<span class="primary">{% trans "Name" %}</span>
<span class="secondary">{{ connection.id }}</span>
</div>
</div>
{% if device %}
<h3>{% trans "Device" %}</h3>
<div class="list-group list-group-two-column">
<div class="list-group-item">
<span class="primary">{% trans "State" %}</span>
<span class="secondary">{{ device.state_string }}</span>
</div>
{% if device.state_reason != 'none' %}
<div class="list-group-item">
<span class="primary">{% trans "State reason" %}</span>
<span class="secondary">{{ device.state_reason_string }}</span>
</div>
{% endif %}
<div class="list-group-item">
<span class="primary">{% trans "Type" %}</span>
<span class="secondary">{{ device.type_string }}</span>
</div>
<div class="list-group-item">
<span class="primary">{% trans "MAC address" %}</span>
<span class="secondary">{{ device.hw_address }}</span>
</div>
<div class="list-group-item">
<span class="primary">{% trans "Interface" %}</span>
<span class="secondary">{{ device.interface_name }}</span>
</div>
<div class="list-group-item">
<span class="primary">{% trans "Description" %}</span>
<span class="secondary">{{ device.description }}</span>
</div>
</div>
{% endif %}
<h3>{% trans "Physical Link" %}</h3>
<div class="list-group list-group-two-column">
{% if device.ethernet %}
<div class="list-group-item">
<span class="primary">{% trans "Link state" %}</span>
{% if device.ethernet.carrier %}
<span class='badge badge-success secondary'>
{% trans "cable is connected" %}</span>
{% else %}
<span class='badge badge-warning secondary'>
{% trans "please check cable" %}</span>
{% endif %}
</div>
<div class="list-group-item">
<span class="primary">{% trans "Speed" %}</span>
<span class="secondary">
{% blocktrans trimmed with ethernet_speed=device.ethernet.speed %}
{{ ethernet_speed }} Mbit/s
{% endblocktrans %}
</span>
</div>
{% endif %}
{% if connection.type == "802-11-wireless" %}
<div class="list-group-item">
<span class="primary">{% trans "SSID" %}</span>
<span class="secondary">{{ connection.wireless.ssid }}</span>
</div>
{% if device %}
<div class="list-group-item">
<span class="primary">{% trans "Speed" %}</span>
<span class="secondary">
{% blocktrans trimmed with wireless_bitrate=device.wireless.bitrate %}
{{ wireless_bitrate }} Mbit/s
{% endblocktrans %}
</span>
</div>
<div class="list-group-item">
<span class="primary">{% trans "Mode" %}</span>
<span class="secondary">{{ device.wireless.mode_string }}</span>
</div>
{% endif %}
{% if access_point.channel %}
<div class="list-group-item">
<span class="primary">{% trans "Signal strength" %}</span>
<span class="btn btn-primary btn-sm secondary">
{{ access_point.strength }}%
</span>
</div>
{% endif %}
{% if access_point.channel %}
<div class="list-group-item">
<span class="primary">{% trans "Channel" %}</span>
<span class="secondary">{{ access_point.channel }}</span>
</div>
{% endif %}
{% endif %}
</div>
{% if active_connection %}
<h3>{% trans "IPv4" %}</h3>
<div class="list-group list-group-two-column">
{% if connection.ipv4.method %}
<div class="list-group-item">
<span class="primary">{% trans "Method" %}</span>
<span class="secondary">
{{ connection.ipv4.method_string }}
</span>
</div>
{% endif %}
{% for address in device.ip4.addresses %}
<div class="list-group-item">
<span class="primary">{% trans "IP address" %}</span>
<span class="secondary">
{{ address.address }}/{{ address.prefix }}
</span>
</div>
{% endfor %}
{% if device.ip4.gateway %}
<div class="list-group-item">
<span class="primary">{% trans "Gateway" %}</span>
<span class="secondary">{{ device.ip4.gateway }}</span>
</div>
{% endif %}
{% for server in device.ip4.nameservers %}
<div class="list-group-item">
<span class="primary">{% trans "DNS server" %}</span>
<span class="secondary">{{ server }}</span>
</div>
{% endfor %}
{% if active_connection.ip4.default %}
<div class="list-group-item">
<span class="primary">{% trans "Default" %}</span>
<span class="secondary">{% trans "yes" %}</span>
</div>
{% endif %}
</div>
<h3>{% trans "IPv6" %}</h3>
<div class="list-group list-group-two-column">
{% if connection.ipv6.method %}
<div class="list-group-item">
<span class="primary">{% trans "Method" %}</span>
<span class="secondary">{{ connection.ipv6.method_string }}</span>
</div>
{% endif %}
{% for address in device.ip6.addresses %}
<div class="list-group-item">
<span class="primary">{% trans "IP address" %}</span>
<span class="secondary">
{{ address.address }}/{{ address.prefix }}
</span>
</div>
{% endfor %}
{% if device.ip6.gateway %}
<div class="list-group-item">
<span class="primary">{% trans "Gateway" %}</span>
<span class="secondary">{{ device.ip6.gateway }}</span>
</div>
{% endif %}
{% for server in device.ip6.nameservers %}
<div class="list-group-item">
<span class="primary">{% trans "DNS server" %}</span>
<span class="secondary">{{ server }}</span>
</div>
{% endfor %}
{% if active_connection.ip6.default %}
<div class="list-group-item">
<span class="primary">{% trans "Default" %}</span>
<span class="secondary">{% trans "yes" %}</span>
</div>
{% endif %}
</div>
{% else %}
<h3>{% trans "Status" %}</h3>
<p>{% trans "This connection is not active." %}</p>
{% endif %}
<h3>{% trans "Security" %}</h3>
{% if connection.zone == "internal" %}
<div class="list-group list-group-two-column">
<div class="list-group-item">
<span class="primary">{% trans "Firewall zone" %}</span>
<span class="badge badge-success secondary">
{{ connection.zone_string }}
</span>
</div>
</div>
<div class="alert alert-info">
<span class="fa fa-info-circle" aria-hidden="true"></span>
{% blocktrans trimmed %}
This interface should be connected to a local
network/machine. If you connect this interface to a
public network, services meant to be available only
internally will become available externally. This is a
security risk.
{% endblocktrans %}
</div>
{% elif connection.zone == "external" %}
<div class="list-group list-group-two-column">
<div class="list-group-item">
<span class="primary">{% trans "Firewall zone" %}</span>
<span class="badge badge-warning secondary">
{{ connection.zone_string }}
</span>
</div>
</div>
<div class="alert alert-info">
<span class="fa fa-info-circle" aria-hidden="true"></span>
{% blocktrans trimmed %}
This interface should receive your Internet connection.
If you connect it to a local network/machine, many
services meant to available only internally will not be
available.
{% endblocktrans %}
</div>
{% else %}
<div class="list-group list-group-two-column">
<div class="list-group-item">
<span class="primary">{% trans "Firewall zone" %}</span>
<span class="badge badge-danger secondary">
{% trans "External" %}
</span>
</div>
</div>
<div class="alert alert-info">
<span class="fa fa-info-circle" aria-hidden="true"></span>
{% blocktrans trimmed %}
This interface is not maintained by {{ box_name }}. For security,
it is automatically assigned to the external zone.
{% endblocktrans %}
{% blocktrans trimmed %}
This interface should receive your Internet connection.
If you connect it to a local network/machine, many
services meant to available only internally will not be
available.
{% endblocktrans %}
</div>
{% endif %}
</div>
</div>
{% endblock %}