ssh: Enable backup/restore

Reviewed-by: James Valleroy <jvalleroy@mailbox.org>
This commit is contained in:
Joseph Nuthalapati 2018-10-19 09:46:51 -07:00 committed by James Valleroy
parent 6c565f8678
commit 1eacbf1be7
No known key found for this signature in database
GPG Key ID: 77C0C75E7B650808
4 changed files with 80 additions and 1 deletions

View File

@ -0,0 +1,43 @@
#
# 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/>.
#
@apps @ssh @backups
Feature: Secure Shell Server
Run secure shell server.
Background:
Given I'm a logged in user
Given the ssh application is installed
Scenario: Enable ssh application
Given the ssh application is disabled
When I enable the ssh application
Then the ssh service should be running
Scenario: Disable ssh application
Given the ssh application is enabled
When I disable the ssh application
Then the ssh service should not be running
# TODO: Improve this to actually check that earlier ssh certificate has been
# restored.
Scenario: Backup and restore ssh
Given the ssh application is enabled
When I create a backup of the ssh app data
And I export the ssh app data backup
And I restore the ssh app data backup
Then the ssh service should be running

View File

@ -28,7 +28,7 @@ from .service import wait_for_page_update
sys_modules = [
'avahi', 'backups', 'bind', 'cockpit', 'config', 'datetime', 'diagnostics',
'dynamicdns', 'firewall', 'letsencrypt', 'monkeysphere', 'names',
'networks', 'pagekite', 'power', 'security', 'snapshot', 'upgrades',
'networks', 'pagekite', 'power', 'security', 'snapshot', 'ssh', 'upgrades',
'users'
]

View File

@ -25,6 +25,8 @@ from plinth import service as service_module
from plinth.menu import main_menu
from plinth.views import ServiceView
from .manifest import backup
version = 1
is_essential = True

View File

@ -0,0 +1,34 @@
#
# 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/>.
#
"""
Application manifest for ssh.
"""
from plinth.modules.backups.api import validate as validate_backup
backup = validate_backup({
'secrets': {
'files': [
'/etc/ssh/ssh_host_ecdsa_key',
'/etc/ssh/ssh_host_ecdsa_key.pub',
'/etc/ssh/ssh_host_ed25519_key',
'/etc/ssh/ssh_host_ed25519_key.pub',
'/etc/ssh/ssh_host_rsa_key',
'/etc/ssh/ssh_host_rsa_key.pub'
]
}
})