mirror of
https://github.com/lucaspalomodevelop/core.git
synced 2026-03-13 08:09:41 +00:00
system: first part of SCP backup merge
This commit is contained in:
parent
00c7507be0
commit
2c8827bf35
3
plist
3
plist
@ -415,6 +415,7 @@
|
||||
/usr/local/opnsense/mvc/app/library/OPNsense/Backup/GDrive.php
|
||||
/usr/local/opnsense/mvc/app/library/OPNsense/Backup/IBackupProvider.php
|
||||
/usr/local/opnsense/mvc/app/library/OPNsense/Backup/Nextcloud.php
|
||||
/usr/local/opnsense/mvc/app/library/OPNsense/Backup/Scp.php
|
||||
/usr/local/opnsense/mvc/app/library/OPNsense/Base/Filters/QueryFilter.php
|
||||
/usr/local/opnsense/mvc/app/library/OPNsense/Base/UIModelGrid.php
|
||||
/usr/local/opnsense/mvc/app/library/OPNsense/Base/ViewTranslator.php
|
||||
@ -434,6 +435,8 @@
|
||||
/usr/local/opnsense/mvc/app/library/OPNsense/Firewall/Util.php
|
||||
/usr/local/opnsense/mvc/app/models/OPNsense/Backup/NextcloudSettings.php
|
||||
/usr/local/opnsense/mvc/app/models/OPNsense/Backup/NextcloudSettings.xml
|
||||
/usr/local/opnsense/mvc/app/models/OPNsense/Backup/ScpSettings.php
|
||||
/usr/local/opnsense/mvc/app/models/OPNsense/Backup/ScpSettings.xml
|
||||
/usr/local/opnsense/mvc/app/models/OPNsense/Base/BaseModel.php
|
||||
/usr/local/opnsense/mvc/app/models/OPNsense/Base/BaseModelMigration.php
|
||||
/usr/local/opnsense/mvc/app/models/OPNsense/Base/Constraints/AllOrNoneConstraint.php
|
||||
|
||||
130
src/opnsense/mvc/app/library/OPNsense/Backup/Scp.php
Normal file
130
src/opnsense/mvc/app/library/OPNsense/Backup/Scp.php
Normal file
@ -0,0 +1,130 @@
|
||||
<?php
|
||||
|
||||
/*
|
||||
* Copyright (C) 2018 David Harrigan
|
||||
* Copyright (C) 2018 Deciso B.V.
|
||||
* Copyright (C) 2018 Fabian Franz
|
||||
* All rights reserved.
|
||||
*
|
||||
* Redistribution and use in source and binary forms, with or without
|
||||
* modification, are permitted provided that the following conditions are met:
|
||||
*
|
||||
* 1. Redistributions of source code must retain the above copyright notice,
|
||||
* this list of conditions and the following disclaimer.
|
||||
*
|
||||
* 2. Redistributions in binary form must reproduce the above copyright
|
||||
* notice, this list of conditions and the following disclaimer in the
|
||||
* documentation and/or other materials provided with the distribution.
|
||||
*
|
||||
* THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES,
|
||||
* INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY
|
||||
* AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
|
||||
* AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY,
|
||||
* OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
|
||||
* SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
|
||||
* INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
|
||||
* CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
|
||||
* ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
|
||||
* POSSIBILITY OF SUCH DAMAGE.
|
||||
*/
|
||||
|
||||
namespace OPNsense\Backup;
|
||||
|
||||
use OPNsense\Core\Config;
|
||||
|
||||
/**
|
||||
* Class SCP backup
|
||||
* @package OPNsense\Backup
|
||||
*/
|
||||
class Scp extends Base implements IBackupProvider
|
||||
{
|
||||
|
||||
/**
|
||||
* get required (user interface) fields for backup connector
|
||||
* @return array configuration fields, types and description
|
||||
*/
|
||||
public function getConfigurationFields()
|
||||
{
|
||||
$fields = array(
|
||||
array(
|
||||
'name' => 'enabled',
|
||||
'type' => 'checkbox',
|
||||
'label' => gettext('Enable'),
|
||||
),
|
||||
array(
|
||||
'name' => 'hostname',
|
||||
'type' => 'text',
|
||||
'label' => gettext('Hostname'),
|
||||
'help' => gettext('Set the remote hostname.'),
|
||||
),
|
||||
array(
|
||||
'name' => 'port',
|
||||
'type' => 'text',
|
||||
'label' => gettext('Port'),
|
||||
'help' => gettext('Set the remote port.'),
|
||||
),
|
||||
array(
|
||||
'name' => 'username',
|
||||
'type' => 'text',
|
||||
'label' => gettext('Remote Username'),
|
||||
'help' => gettext('Set the remote username.'),
|
||||
),
|
||||
array(
|
||||
'name' => 'remotedirectory',
|
||||
'type' => 'text',
|
||||
'label' => gettext('Remote Directory'),
|
||||
'help' => gettext('Set the remote directory to backup the config file to.'),
|
||||
)
|
||||
);
|
||||
$mdl = new ScpSettings();
|
||||
foreach ($fields as &$field) {
|
||||
$field['value'] = (string)$mdl->getNodeByReference($field['name']);
|
||||
}
|
||||
return $fields;
|
||||
}
|
||||
|
||||
/**
|
||||
* backup provider name
|
||||
* @return string user friendly name
|
||||
*/
|
||||
public function getName()
|
||||
{
|
||||
return gettext('Secure Copy');
|
||||
}
|
||||
|
||||
/**
|
||||
* validate and set configuration
|
||||
* @param array $conf configuration array
|
||||
* @return array of validation errors when not saved
|
||||
*/
|
||||
public function setConfiguration($conf)
|
||||
{
|
||||
$mdl = new ScpSettings();
|
||||
$this->setModelProperties($mdl, $conf);
|
||||
$validation_messages = $this->validateModel($mdl);
|
||||
if (empty($validation_messages)) {
|
||||
$mdl->serializeToConfig();
|
||||
Config::getInstance()->save();
|
||||
}
|
||||
return $validation_messages;
|
||||
}
|
||||
|
||||
/**
|
||||
* @return array filelist
|
||||
*/
|
||||
public function backup()
|
||||
{
|
||||
// not configured / issue, return empty list
|
||||
return array();
|
||||
}
|
||||
|
||||
/**
|
||||
* Is this provider enabled
|
||||
* @return boolean enabled status
|
||||
*/
|
||||
public function isEnabled()
|
||||
{
|
||||
$mdl = new ScpSettings();
|
||||
return (string)$mdl->enabled === "1";
|
||||
}
|
||||
}
|
||||
@ -1,9 +1,7 @@
|
||||
<model>
|
||||
<mount>//system/backup/nextcloud</mount>
|
||||
<version>1.0.0</version>
|
||||
<description>
|
||||
OPNsense Nextcloud Backup Settings
|
||||
</description>
|
||||
<description>OPNsense Nextcloud Backup Settings</description>
|
||||
<items>
|
||||
<enabled type="BooleanField">
|
||||
<default>0</default>
|
||||
|
||||
39
src/opnsense/mvc/app/models/OPNsense/Backup/ScpSettings.php
Normal file
39
src/opnsense/mvc/app/models/OPNsense/Backup/ScpSettings.php
Normal file
@ -0,0 +1,39 @@
|
||||
<?php
|
||||
|
||||
/*
|
||||
* Copyright (C) 2018 David Harrigan
|
||||
* All rights reserved.
|
||||
*
|
||||
* Redistribution and use in source and binary forms, with or without
|
||||
* modification, are permitted provided that the following conditions are met:
|
||||
*
|
||||
* 1. Redistributions of source code must retain the above copyright notice,
|
||||
* this list of conditions and the following disclaimer.
|
||||
*
|
||||
* 2. Redistributions in binary form must reproduce the above copyright
|
||||
* notice, this list of conditions and the following disclaimer in the
|
||||
* documentation and/or other materials provided with the distribution.
|
||||
*
|
||||
* THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES,
|
||||
* INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY
|
||||
* AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
|
||||
* AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY,
|
||||
* OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
|
||||
* SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
|
||||
* INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
|
||||
* CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
|
||||
* ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
|
||||
* POSSIBILITY OF SUCH DAMAGE.
|
||||
*/
|
||||
|
||||
namespace OPNsense\Backup;
|
||||
|
||||
use OPNsense\Base\BaseModel;
|
||||
|
||||
/**
|
||||
* Class SCP Backup Settings
|
||||
* @package Backup
|
||||
*/
|
||||
class ScpSettings extends BaseModel
|
||||
{
|
||||
}
|
||||
47
src/opnsense/mvc/app/models/OPNsense/Backup/ScpSettings.xml
Normal file
47
src/opnsense/mvc/app/models/OPNsense/Backup/ScpSettings.xml
Normal file
@ -0,0 +1,47 @@
|
||||
<model>
|
||||
<mount>//system/backup/scp</mount>
|
||||
<description>Backup the config using SCP.</description>
|
||||
<version>0.1.0</version>
|
||||
<items>
|
||||
<enabled type="BooleanField">
|
||||
<default>0</default>
|
||||
<Required>Y</Required>
|
||||
</enabled>
|
||||
<hostname type="TextField">
|
||||
<mask>/\S*/</mask>
|
||||
<ValidationMessage>Please provide a hostname.</ValidationMessage>
|
||||
<Constraints>
|
||||
<check001>
|
||||
<type>DependConstraint</type>
|
||||
<addFields>
|
||||
<field1>enabled</field1>
|
||||
</addFields>
|
||||
</check001>
|
||||
</Constraints>
|
||||
</hostname>
|
||||
<port type="IntegerField">
|
||||
<default>22</default>
|
||||
<Required>Y</Required>
|
||||
<MinimumValue>1</MinimumValue>
|
||||
<MaximumValue>65535</MaximumValue>
|
||||
<ValidationMessage>Please provide a valid port number between 1 and 65535. Port 22 is the default.</ValidationMessage>
|
||||
</port>
|
||||
<username type="TextField">
|
||||
<mask>/\S*/</mask>
|
||||
<ValidationMessage>Please provide a username.</ValidationMessage>
|
||||
<Constraints>
|
||||
<check001>
|
||||
<type>DependConstraint</type>
|
||||
<addFields>
|
||||
<field1>enabled</field1>
|
||||
</addFields>
|
||||
</check001>
|
||||
</Constraints>
|
||||
</username>
|
||||
<remotedirectory type="TextField">
|
||||
<default>OPNsense-Backup</default>
|
||||
<Required>Y</Required>
|
||||
<ValidationMessage>Please provide a remote directory.</ValidationMessage>
|
||||
</remotedirectory>
|
||||
</items>
|
||||
</model>
|
||||
Loading…
x
Reference in New Issue
Block a user