Viewing File: /usr/local/cpanel/whostmgr/docroot/templates/backup_configuration/views/RsyncTransport.ptt
<h4 class="section-heading">[% locale.maketext('[asis,Rsync] Destination') %]</h4>
<div class="section-body">
<form name="rsyncDestination" ng-if="!destinationState.fetching_data" ng-show="!destinationState.showKeyGenerationForm" ng-disabled="destinationState.savingDestination || destinationState.validatingDestination" novalidate>
<div class="form-group">
<div class="row">
<div class="col-xs-12 col-sm-6">
<label for="name">[% locale.maketext('Destination Name') %]</label>
<span class="info-block">[% locale.maketext('Enter a name for this destination.') %]</span>
</div>
</div>
<div class="row">
<div class="col-xs-12 col-sm-6">
<input type="text" name="name" id="rsync_name" required class="form-control" minlength="1" ng-maxlength="256" ng-model="destinationState.destination.rsync.name" />
</div>
<div class="col-xs-12 col-md-6">
<ul class="validation-container" ng-show="rsyncDestination.name.$dirty && (rsyncDestination.name.$error.required || rsyncDestination.name.$error.minlength || rsyncDestination.name.$error.maxlength)">
<li class="validation validation-error" ng-show="rsyncDestination.name.$error.required">
<span class="glyphicon glyphicon-exclamation-sign"></span>
<span class="validation-message">[% locale.maketext('You must enter a destination name.') %]</span>
</li>
<li class="validation validation-error" ng-show="rsyncDestination.name.$error.minlength || rsyncDestination.name.$error.maxlength">
<span class="glyphicon glyphicon-exclamation-sign"></span>
<span class="validation-message">[% locale.maketext('The destination name must contain between [numf,1] and [numf,256] characters.') %]</span>
</li>
</ul>
</div>
</div>
</div>
<div class="form-group">
<div class="row">
<div class="col-xs-12 col-sm-6">
<input type="checkbox" name="upload_system_backup" id="rsync_system" ng-model="destinationState.destination.rsync.upload_system_backup"/>
<label for="rsync_system">[% locale.maketext('Transfer System Backups to this Destination') %]</label>
<div class="callout callout-warning">[% locale.maketext('[output,strong,Warning:] System Backups contain sensitive security details.') %] [% locale.maketext('You should transfer System Backups over encrypted methods.') %]</div>
</div>
</div>
</div>
<div class="form-group">
<div class="row">
<div class="col-xs-12 col-sm-6 col-md-6 col-lg-6">
<input
ng-model="destinationState.destination.rsync.only_used_for_logs"
type="checkbox"
name="only_used_for_logs"
id="rsync_logsonly"/>
<label for="rsync_logsonly">[% locale.maketext('Only use this destination for log file transfers[comment,title of option like one above, but looks wrong title cased]') %]</label>
<div class="callout callout-warning">
<span>[% locale.maketext('[output,strong,Warning:] Enabling this option will prevent it from being used for account and/or system backups.') %] [% locale.maketext('Only enable this option if this destination will only be used for log backups. If it will be used for all backups, leave this unchecked.') %]</span>
</div>
</div>
</div>
</div>
<div class="form-group">
<div class="row">
<div class="col-xs-12 col-sm-6">
<label for="path">[% locale.maketext('Backup Directory') %]</label>
<span class="info-block">[% locale.maketext('Optional. Specify the path, relative to the account’s home directory, where the system stores backups.') %]</span>
</div>
</div>
<div class="row">
<div class="col-xs-12 col-sm-6">
<input type="text" name="path" id="rsync_path" backup-location class="form-control" ng-model="destinationState.destination.rsync.path" ng-change="checkForDisallowedChars(rsyncDestination.path.$viewValue, disallowedPathChars)" />
</div>
<div class="col-xs-12 col-md-6">
<ul validation-container field-name="path">
</ul>
</div>
</div>
</div>
<div class="form-group">
<div class="row">
<div class="col-xs-12 col-sm-6">
<label for="host">[% locale.maketext('Remote Host') %]</label>
<span class="info-block">[% locale.maketext('Enter the remote server’s address.') %] [% locale.maketext('The address should not include [asis,http]://, [asis,https]://, a trailing port, or path information.') %]</span>
</div>
</div>
<div class="row">
<div class="col-xs-12 col-sm-6">
<input type="text" name="host" id="rsync_host" ng-trim="false" remote-host required class="form-control" ng-model="destinationState.destination.rsync.host" />
</div>
<div class="col-xs-12 col-md-6">
<ul validation-container field-name="host">
<li class="validation validation-error" ng-show="rsyncDestination.host.$dirty && rsyncDestination.host.$error.required">
<span class="glyphicon glyphicon-exclamation-sign"></span>
<span class="validation-message">[% locale.maketext('You must enter a remote host.') %]</span>
</li>
</ul>
</div>
</div>
</div>
<div class="form-group">
<div class="row">
<div class="col-xs-12 col-sm-6">
<label for="port">[% locale.maketext('Port') %]</label>
<span class="info-block">[% locale.maketext('The port that the system uses to communicate with the remote server.') %] [% locale.maketext('By default, [asis,Rsync] destinations use an [asis,SSH] channel on port 22.') %]</span>
</div>
</div>
<div class="row">
<div class="col-xs-12 col-sm-6">
<input
type="number"
name="port"
id="rsync_port"
class="form-control"
ng-model="destinationState.destination.rsync.port"
positive-integer
ng-keydown="noDecimalPoints($event)"
ng-paste="onlyNumbers($event)"
min="1"
max="65535" />
</div>
<div class="col-xs-12 col-md-6">
<ul class="validation-container" ng-show="rsyncDestination.port.$dirty && (rsyncDestination.port.$error.min || rsyncDestination.port.$error.max || rsyncDestination.port.$error.number)">
<li class="validation validation-error">
<span class="glyphicon glyphicon-exclamation-sign"></span>
<span class="validation-message">[% locale.maketext('The port number must be between [numf,1] and [numf,65535].') %]</span>
</li>
</ul>
</div>
</div>
</div>
<div class="form-group">
<div class="row">
<div class="col-xs-12 col-sm-6">
<label for="username">[% locale.maketext('Remote Account Username') %]</label>
<span class="info-block">[% locale.maketext('The remote server’s account username.') %]</span>
</div>
</div>
<div class="row">
<div class="col-xs-12 col-sm-6">
<input type="text"
maxlength="32"
name="username"
id="rsync_username"
required
nospaces
class="form-control"
ng-model="destinationState.destination.rsync.username" />
</div>
<div class="col-xs-12 col-md-6">
<ul validation-container field-name="username">
<li class="validation validation-error" ng-show="rsyncDestination.username.$dirty && rsyncDestination.username.$error.required">
<span class="glyphicon glyphicon-exclamation-sign"></span>
<span class="validation-message">[% locale.maketext('You must enter a username.') %]</span>
</li>
</ul>
</div>
</div>
</div>
<div class="form-group">
<div class="row">
<div class="col-xs-12 col-sm-6">
<label>[% locale.maketext('Authentication Type') %]</label>
<span class="info-block">[% locale.maketext('The authentication type the system will use to connect to the remote server.') %] [% locale.maketext('For enhanced security, we recommend that you use key authentication.') %]</span>
</div>
</div>
<div class="row">
<div class="col-xs-12 col-sm-6">
<label class="radio-inline">
<input type="radio" name="authtype" id="key_auth_type_yes" class="dependent" ng-model="destinationState.destination.rsync.authtype" value="key" /> [% locale.maketext('Key Authentication') %]
</label>
<label class="radio-inline">
<input type="radio" name="authtype" id="password_auth_type_yes" class="dependent" ng-model="destinationState.destination.rsync.authtype" value="password" /> [% locale.maketext('Password Authentication') %]
</label>
</div>
</div>
</div>
<div id="key_auth_type_options" ng-class="{'collapsed inactive': destinationState.destination.rsync.authtype}" class="advanced-options-container password_auth_type_options-alternate" ng-show="destinationState.destination.rsync.authtype === 'key'">
<h5 class="section-header">[% locale.maketext('Key Authentication Options') %]</h5>
<div class="form-group">
<div class="row">
<div class="col-xs-12 col-sm-6">
<label for="privatekey">[% locale.maketext('Private Key') %]</label>
<span class="info-block">[% locale.maketext('The full path of the private key on this server.') %] [% locale.maketext('Click the button below to generate a new key.') %]</span>
</div>
</div>
<div class="row">
<div class="col-xs-12 col-sm-6">
<input
type="text"
name="privatekey"
id="private_key"
full-path
class="form-control" ng-model="destinationState.destination.rsync.privatekey"
ng-required="destinationState.destination.rsync.authtype === 'key' && destinationState.newMode" />
</div>
<div class="col-xs-12 col-md-6">
<ul validation-container field-name="privatekey">
<validation-item
field-name="privatekey"
validation-name="required">[% locale.maketext('You must enter a valid path.') %]
</validation-item>
</ul>
</div>
</div>
<div class="row">
<div class="col-xs-12 col-sm-6">
<div class="panel panel-default">
<div class="panel-heading">
<h3 class="panel-title">[% locale.maketext('Private Keys') %]</h3>
</div>
<div cp-loading-panel class="loading_panel" id="ssh_key_list_loading_panel" ng-if="!destinationState.sshKeyListLoaded">
[% locale.maketext("Loading …") %]
</div>
<ul class="list-group" ng-show="destinationState.sshKeyListLoaded">
<li ng-repeat="key in destinationState.sshKeyList track by $index" class="list-group-item sshKey" ng-click="setPrivateKey(key)">{{ key }}</li>
</ul>
</div>
</div>
</div>
<div class="row">
<div class="col-xs-12 col-sm-6">
<button type="button" title="[% locale.maketext('Generate a New Key') %]" id="show_save_key" class="btn btn-default" ng-click="toggleKeyGenerationForm()">
[% locale.maketext('Generate a New Key') %]
</button>
</div>
</div>
</div>
<div class="form-group">
<div class="row">
<div class="col-xs-12 col-sm-6">
<label for="passphrase">[% locale.maketext('Passphrase') %]</label>
<span class="info-block">[% locale.maketext('The private key’s passphrase.') %] [% locale.maketext('For security reasons, you will not see the passphrase.') %] [% locale.maketext('Only enter the passphrase when you create this destination, or when you change the passphrase.') %]</span>
</div>
</div>
<div class="row">
<div class="col-xs-12 col-sm-6">
<input ng-model="destinationState.destination.rsync.passphrase" type="password" name="passphrase" id="passphrase" class="form-control advanced-option" minlength="5" maxlength="128" ng-disabled="destinationState.destination.rsync.authtype && !destinationState.destination.rsync.privatekey" />
</div>
<div class="col-xs-12 col-md-6">
<ul class="validation-container" ng-show="rsyncDestination.passphrase.$dirty && (rsyncDestination.passphrase.$error.minlength || rsyncDestination.passphrase.$error.maxlength)">
<li class="validation validation-error">
<span class="glyphicon glyphicon-exclamation-sign"></span>
<span class="validation-message">[% locale.maketext('You must enter a passphrase between [numf,5] and [numf,128] characters.') %]</span>
</li>
</ul>
</div>
</div>
</div>
</div>
<div id="password_auth_type_options" ng-class="{'collapsed inactive': destinationState.destination.rsync.privatekey && !destinationState.destination.rsync.authtype}" class="advanced-options-container key_auth_type_options-alternate" ng-show="destinationState.destination.rsync.authtype === 'password'">
<h5 class="section-header">[% locale.maketext('Password Authentication Options') %]</h5>
<div class="form-group">
<div class="row">
<div class="col-xs-12 col-sm-6">
<label for="password">[% locale.maketext('Remote Password') %]</label>
<span class="info-block">[% locale.maketext('The password of the account on the remote server.') %] [% locale.maketext('For security reasons, you will not see the password.') %] [% locale.maketext('Only enter the password when you create this destination, or when you change the password.') %]</span>
</div>
</div>
<div class="row">
<div class="col-xs-12 col-sm-6">
<input type="password" name="password" id="rsync_password" ng-required="destinationState.destination.rsync.authtype === 'password' && !destinationState.editMode" class="form-control advanced-option" ng-model="destinationState.destination.rsync.password" />
</div>
<div class="col-xs-12 col-md-6">
<ul class="validation-container" ng-show="rsyncDestination.password.$dirty && rsyncDestination.password.$error.required">
<li class="validation validation-error">
<span class="glyphicon glyphicon-exclamation-sign"></span>
<span class="validation-message">[% locale.maketext('You must enter a password.') %]</span>
</li>
</ul>
</div>
</div>
</div>
</div>
<div class="form-group">
<div class="row">
<div class="col-xs-12 col-sm-6">
<label for="rsync_timeout">[% locale.maketext('Timeout') %]</label>
<span class="info-block">[% locale.maketext('The number of seconds that the system will wait for a response from the remote server.') %]</span>
</div>
</div>
<div class="row">
<div class="col-xs-12 col-sm-6">
<input
type="number"
name="timeout"
id="rsync_timeout"
class="form-control"
min="30"
max="300"
positive-integer
ng-keydown="noDecimalPoints($event)"
ng-paste="onlyNumbers($event)"
ng-model="destinationState.destination.rsync.timeout" />
</div>
<div class="col-xs-12 col-md-6">
<ul class="validation-container" ng-show="rsyncDestination.timeout.$dirty && (rsyncDestination.timeout.$error.min || rsyncDestination.timeout.$error.max || rysncDestination.timeout.$error.number)">
<li class="validation validation-error">
<span class="glyphicon glyphicon-exclamation-sign"></span>
<span class="validation-message">[% locale.maketext('You must enter a timeout value between [numf,30] and [numf,300] seconds.') %]</span>
</li>
</ul>
</div>
</div>
</div>
<div class="form-group">
<div class="row">
<div class="col-xs-12">
<div id="save_config">
<button type="submit" id="save_destination_button" cp-action="saveDestination(destinationState.destination)" ng-disabled="rsyncDestination.$pristine || rsyncDestination.$invalid || destinationState.savingDestination || destinationState.validatingDestination">[% locale.maketext('Save Destination') %]</button>
<button type="button" id="save_and_validate_destination_button" button-class="btn-default" cp-action="saveAndValidateDestination(destinationState.destination)" ng-disabled="rsyncDestination.$pristine || rsyncDestination.$invalid || destinationState.savingDestination || destinationState.validatingDestination">[% locale.maketext('Save and Validate Destination') %]</button>
<button type="button" class="btn btn-link" id="cancel_destination_button" ng-click="cancelDestination()" ng-disabled="destinationState.savingDestination || destinationState.validatingDestination">[% locale.maketext('Cancel') %]</button>
</div>
</div>
</div>
</div>
</form>
<ng-include ng-show="destinationState.showKeyGenerationForm" src="'views/SSHKeyGen.ptt'"></ng-include>
</div>
Back to Directory
File Manager