diff --git a/plist b/plist index dfc879103..0ab44ff66 100644 --- a/plist +++ b/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 diff --git a/src/opnsense/mvc/app/library/OPNsense/Backup/Scp.php b/src/opnsense/mvc/app/library/OPNsense/Backup/Scp.php new file mode 100644 index 000000000..c5b5ff1d7 --- /dev/null +++ b/src/opnsense/mvc/app/library/OPNsense/Backup/Scp.php @@ -0,0 +1,130 @@ + '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"; + } +} diff --git a/src/opnsense/mvc/app/models/OPNsense/Backup/NextcloudSettings.xml b/src/opnsense/mvc/app/models/OPNsense/Backup/NextcloudSettings.xml index b1b916ce3..b9743a5fe 100644 --- a/src/opnsense/mvc/app/models/OPNsense/Backup/NextcloudSettings.xml +++ b/src/opnsense/mvc/app/models/OPNsense/Backup/NextcloudSettings.xml @@ -1,9 +1,7 @@ //system/backup/nextcloud 1.0.0 - - OPNsense Nextcloud Backup Settings - + OPNsense Nextcloud Backup Settings 0 diff --git a/src/opnsense/mvc/app/models/OPNsense/Backup/ScpSettings.php b/src/opnsense/mvc/app/models/OPNsense/Backup/ScpSettings.php new file mode 100644 index 000000000..a42b916f6 --- /dev/null +++ b/src/opnsense/mvc/app/models/OPNsense/Backup/ScpSettings.php @@ -0,0 +1,39 @@ + + //system/backup/scp + Backup the config using SCP. + 0.1.0 + + + 0 + Y + + + /\S*/ + Please provide a hostname. + + + DependConstraint + + enabled + + + + + + 22 + Y + 1 + 65535 + Please provide a valid port number between 1 and 65535. Port 22 is the default. + + + /\S*/ + Please provide a username. + + + DependConstraint + + enabled + + + + + + OPNsense-Backup + Y + Please provide a remote directory. + + +