mirror of
https://github.com/freedombox/FreedomBox.git
synced 2026-02-25 08:43:36 +00:00
- new share types - group and home shares - users: when creating, deleting or changing user password, update also Samba tdbsam backend database - users: new managed packages - samba-common-bin, tdb-tools - module page: show current samba users who are in freedombox-share group - module page: show users who should re-enter their password in the password change page - fix: use os.path.ismount() from Python standard library to validate a mount point - fix: samba share permissions, fixes #1729 - fix: delete a share - do not raise an exception if the share doesn't exist - storage: show samba share type in the directory selection form Closes #1727 Signed-off-by: Veiko Aasa <veiko17@disroot.org> Reviewed-by: James Valleroy <jvalleroy@mailbox.org>
154 lines
5.3 KiB
HTML
154 lines
5.3 KiB
HTML
{% extends "app.html" %}
|
|
{% comment %}
|
|
#
|
|
# This file is part of FreedomBox.
|
|
#
|
|
# This program is free software: you can redistribute it and/or modify
|
|
# it under the terms of the GNU Affero General Public License as
|
|
# published by the Free Software Foundation, either version 3 of the
|
|
# License, or (at your option) any later version.
|
|
#
|
|
# This program is distributed in the hope that it will be useful,
|
|
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
# GNU Affero General Public License for more details.
|
|
#
|
|
# You should have received a copy of the GNU Affero General Public License
|
|
# along with this program. If not, see <http://www.gnu.org/licenses/>.
|
|
#
|
|
{% endcomment %}
|
|
|
|
{% load bootstrap %}
|
|
{% load i18n %}
|
|
{% load plinth_extras %}
|
|
{% load static %}
|
|
|
|
{% block page_head %}
|
|
<style type="text/css">
|
|
.progress {
|
|
margin-bottom: 0;
|
|
}
|
|
</style>
|
|
{% endblock %}
|
|
|
|
|
|
{% block configuration %}
|
|
{{ block.super }}
|
|
|
|
{% if is_enabled %}
|
|
<h3>{% trans "Shares" %}</h3>
|
|
<p>
|
|
{% blocktrans trimmed %}
|
|
Note: only specially created directories will be shared on selected disks,
|
|
not the whole disk.
|
|
{% endblocktrans %}
|
|
</p>
|
|
<table class="table table-bordered table-condensed table-striped">
|
|
<thead>
|
|
<tr>
|
|
<th>{% trans "Disk Name" %}</th>
|
|
<th>{% trans "Shares" %}</th>
|
|
<th>{% trans "Used" %}</th>
|
|
</tr>
|
|
</thead>
|
|
<tbody>
|
|
{% for disk in disks %}
|
|
<tr>
|
|
<td>{{ disk.name|default_if_none:"" }}</td>
|
|
<td>
|
|
<form class="form shareform" method="post"
|
|
action="{% url 'samba:share' disk.mount_point|urlencode:'' %}">
|
|
{% csrf_token %}
|
|
<input type="hidden" name="filesystem_type" value="{{ disk.filesystem_type }}">
|
|
|
|
{% for share_type in share_types %}
|
|
<button type="submit"
|
|
{% if share_type.0 in shared_mounts|lookup:disk.mount_point %}
|
|
class="btn btn-success" name="{{ share_type.0 }}_share" value="disable"
|
|
{% else %}
|
|
class="btn btn-default" name="{{ share_type.0 }}_share" value="enable"
|
|
{% endif %}
|
|
{% if disk.filesystem_type == 'vfat' %}
|
|
title='{% trans "vfat partitions are not supported" %}' disabled
|
|
{% endif %}>{{ share_type.1 }}
|
|
</button>
|
|
{% endfor %}
|
|
</form>
|
|
</td>
|
|
<td >
|
|
<div class="progress">
|
|
{% if disk.percent_used < 75 %}
|
|
<div class="progress-bar progress-bar-striped progress-bar-success"
|
|
{% elif disk.percent_used < 90 %}
|
|
<div class="progress-bar progress-bar-striped progress-bar-warning"
|
|
{% else %}
|
|
<div class="progress-bar progress-bar-striped progress-bar-danger"
|
|
{% endif %}
|
|
role="progressbar" aria-valuenow="{{ disk.percent_used }}"
|
|
aria-valuemin="0" aria-valuemax="100"
|
|
style="width: {{ disk.percent_used }}%;">
|
|
{{ disk.percent_used }}%
|
|
</div>
|
|
</div>
|
|
<div>{{ disk.used_str }} / {{ disk.size_str }}</div>
|
|
</td>
|
|
</tr>
|
|
{% endfor %}
|
|
</tbody>
|
|
</table>
|
|
|
|
<p>
|
|
{% url 'storage:index' as storage_url %}
|
|
{% url 'users:index' as users_url %}
|
|
{% blocktrans trimmed %}
|
|
You can find additional information about disks on the
|
|
<a href="{{ storage_url }}">storage</a> module page and configure
|
|
access to the shares on the <a href="{{ users_url }}">users</a> module page.
|
|
{% endblocktrans %}</p>
|
|
|
|
<p>{% trans "Users who can currently access group and home shares" %}:
|
|
{{ users.access_ok|join:", " }}</p>
|
|
|
|
{% if users.password_re_enter_needed %}
|
|
<p>{% trans "Users who need to re-enter their password on the password change page to access group and home shares" %}:
|
|
<strong>{{ users.password_re_enter_needed|join:", " }}</strong>.</p>
|
|
{% endif %}
|
|
|
|
{% if unavailable_shares %}
|
|
<h3>{% trans "Unavailable Shares" %}</h3>
|
|
<p>
|
|
{% blocktrans trimmed %}
|
|
Shares that are configured but the disk is not available. If the disk
|
|
is plugged back in, sharing will be automatically enabled.
|
|
{% endblocktrans %}
|
|
</p>
|
|
<table class="table table-bordered table-condensed table-striped">
|
|
<thead>
|
|
<tr>
|
|
<th>{% trans "Share name" %}</th>
|
|
<th>{% trans "Action" %}</th>
|
|
</tr>
|
|
</thead>
|
|
<tbody>
|
|
{% for share in unavailable_shares %}
|
|
<tr>
|
|
<td>{{ share.name }}</td>
|
|
<td>
|
|
<form class="form" method="post"
|
|
action="{% url 'samba:share' share.mount_point|urlencode:'' %}">
|
|
{% csrf_token %}
|
|
<button type="submit" class="btn btn-danger"
|
|
name="{{ share.share_type }}_share"
|
|
value="disable">{% trans "Delete" %}
|
|
</button>
|
|
</form>
|
|
</td>
|
|
</tr>
|
|
{% endfor %}
|
|
</tbody>
|
|
</table>
|
|
{% endif %}
|
|
{% endif %}
|
|
{% endblock %}
|
|
|