PluginProbe ʕ •ᴥ•ʔ
JetBackup – Backup, Restore & Migrate / 1.6.9.1
JetBackup – Backup, Restore & Migrate v1.6.9.1
3.1.22.4 3.1.22.3 1.4.3 1.4.4 1.4.5 1.4.6 1.4.7 1.4.8 1.4.8.1 1.4.9 1.5.0 1.5.1 1.5.1.1 1.5.2 1.5.3 1.5.4 1.5.5 1.5.6 1.5.7 1.5.8 1.6.0 1.6.10 1.6.11 1.6.12 1.6.13 1.6.15 1.6.5.1 1.6.8.8 1.6.9 1.6.9.1 2.0.3 2.0.4 2.0.5 2.0.6 2.0.7.5 2.0.8.7 2.0.9.11 2.0.9.14 2.0.9.15 2.0.9.6 2.0.9.7 2.0.9.9 3.1.10.7 3.1.11.1 3.1.12.3 3.1.13.4 3.1.14.17 3.1.15.4 3.1.16.1 3.1.17.5 3.1.18.10 3.1.18.8 3.1.18.9 3.1.19.8 3.1.20.3 3.1.21.3 3.1.7.9 3.1.9.2 trunk 1.1.90 1.1.91 1.2.0 1.2.5 1.2.6 1.2.7 1.2.8 1.2.9 1.3.0 1.3.1 1.3.2 1.3.3 1.3.4 1.3.6 1.3.7 1.3.8 1.3.9 1.4.0 1.4.1 1.4.2
backup / public / js / sgcloud.js
backup / public / js Last commit date
Chart.bundle.min.js 8 years ago bootstrap-switch.min.js 10 years ago bootstrap.min.js 5 years ago deactivationSurvey.js 5 years ago jquery-ui.js 9 years ago jquery.fileupload.js 8 years ago jquery.iframe-transport.js 8 years ago jquery.rateyo.js 6 years ago jquery.validate.min.js 5 years ago jstree.checkbox.js 8 years ago jstree.min.js 8 years ago jstree.types.js 8 years ago jstree.wholerow.js 8 years ago less.min.js 10 years ago main.js 4 years ago popup.js 5 years ago sgNoticeDismiss.js 6 years ago sgbackup.js 3 years ago sgcloud.js 3 years ago sglicense.js 6 years ago sglogin.js 6 years ago sgrequesthandler.js 10 years ago sgrequesthandler.wordpress.js 10 years ago sgschedule.js 3 years ago sgsettings.js 3 years ago
sgcloud.js
529 lines
1 /* phpcs:disable */
2
3 jQuery(document).ready( function() {
4 sgBackup.initCloudSwitchButtons();
5 sgBackup.initCloudFolderSettings();
6 });
7
8 jQuery(document).on('change', '.btn-file :file', function() {
9 var input = jQuery(this),
10 numFiles = input.get(0).files ? input.get(0).files.length : 1,
11 label = input.val().replace(/\\/g, '/').replace(/.*\//, '');
12 input.trigger('fileselect', [numFiles, label]);
13 });
14
15 sgBackup.initSFTPKeyFileSelection = function() {
16 isFileSelected = false;
17 jQuery('.btn-file :file').off('fileselect').on('fileselect', function(event, numFiles, label){
18 var input = jQuery(this).parents('.input-group').find(':text'),
19 log = numFiles > 1 ? numFiles + ' files selected' : label;
20
21 if (input.length) {
22 input.val(log);
23 isFileSelected = true;
24 }
25 else {
26 if(log) alert(log);
27 }
28 });
29 }
30
31 sgBackup.importKeyFile = function(isFileSelected){
32
33 jQuery('.alert').remove();
34 if(!isFileSelected){
35 var alert = sgBackup.alertGenerator(BG_CLOUD_STRINGS.invalidImportFile, 'alert-danger');
36 jQuery('#sg-modal .modal-header').prepend(alert);
37 return false;
38 }
39
40 var sguploadFile = new FormData(),
41 url = "importKeyFile",
42 sgAllowedFileSize = jQuery('.sg-backup-upload-input').attr('data-max-file-size'),
43 sgFile = jQuery('input[name=sg-ssh-key-file]')[0].files[0];
44 sguploadFile.append('sg-ssh-key-file', sgFile);
45 if(sgFile.size > sgAllowedFileSize){
46 var alert = sgBackup.alertGenerator(BG_CLOUD_STRINGS.invalidFileSize, 'alert-danger');
47 jQuery('#sg-modal .modal-header').prepend(alert);
48 return false;
49 }
50
51 var ajaxHandler = new sgRequestHandler(url, sguploadFile, {
52 contentType: false,
53 token: BG_BACKUP_STRINGS.nonce,
54 cache: false,
55 xhr: function() { /* Custom XMLHttpRequest */
56 var myXhr = jQuery.ajaxSettings.xhr();
57 if(myXhr.upload){ /* Check if upload property exists */
58 myXhr.upload.addEventListener('progress', sgBackup.fileUploadProgress, false); /* For handling the progress of the upload */
59 }
60 return myXhr;
61 },
62 processData: false
63 });
64
65 ajaxHandler.callback = function(response, error){
66 jQuery('.alert').remove();
67 if(typeof response.success == 'undefined'){
68 /* if error */
69 var alert = sgBackup.alertGenerator(response, 'alert-danger');
70 jQuery('#sg-modal .modal-header').prepend(alert);
71 }
72 };
73 ajaxHandler.run();
74 }
75
76 sgBackup.initCloudSwitchButtons = function(){
77 jQuery.fn.bootstrapSwitch.defaults.size = 'small';
78 jQuery('.sg-switch').bootstrapSwitch();
79 jQuery('.sg-switch').on('switchChange.bootstrapSwitch', function(event, state) {
80 var storage = jQuery(this).attr('data-storage'),
81 url = jQuery(this).attr('data-remote');
82 var that = jQuery(this);
83 /* If switch is on */
84 if(state) {
85 jQuery('.alert').remove();
86 if(storage == 'DROPBOX' || storage == 'GOOGLE_DRIVE' || storage == 'ONE_DRIVE' || storage == 'P_CLOUD' || storage == 'BOX') {
87 var curlRequirementCheck = new sgRequestHandler('curlChecker', {token: BG_BACKUP_STRINGS.nonce});
88 that.bootstrapSwitch('indeterminate',true);
89 curlRequirementCheck.callback = function(response){
90 if(typeof response.success !== 'undefined') {
91 var isFeatureAvailable = new sgRequestHandler('isFeatureAvailable', {sgFeature: storage});
92 isFeatureAvailable.callback = function(response) {
93 if (typeof response.success !== 'undefined') {
94 jQuery(location).attr('href', getAjaxUrl(url));
95 }
96 else {
97 var alert = sgBackup.alertGenerator(response.error, 'alert-warning');
98 jQuery('.sg-cloud-container').before(alert);
99 that.bootstrapSwitch('state', false);
100 }
101 }
102
103 isFeatureAvailable.run();
104 }
105 else{
106 var alert = sgBackup.alertGenerator(response.error, 'alert-danger');
107 jQuery('.sg-cloud-container').before(alert);
108 that.bootstrapSwitch('state',false);
109 }
110 };
111 curlRequirementCheck.run();
112 }
113 else if (storage == 'FTP') {
114 jQuery('input[data-storage=FTP]').bootstrapSwitch('indeterminate',true);
115 sgBackup.isFtpConnected = false;
116 jQuery('#ftp-settings').click();
117 }
118 else if (storage == 'AMAZON') {
119 jQuery('input[data-storage=AMAZON]').bootstrapSwitch('indeterminate',true);
120 sgBackup.isAmazonConnected = false;
121 jQuery('#amazon-settings').click();
122 }
123 else if (storage == 'BACKUP_GUARD') {
124 jQuery('input[data-storage=BACKUP_GUARD]').bootstrapSwitch('indeterminate',true);
125 sgBackup.isBackupGuardConnected = false;
126 jQuery('#backup-guard-details').click();
127 }
128 }
129 else {
130 var ajaxHandler = new sgRequestHandler(url, {cancel: true,token: BG_BACKUP_STRINGS.nonce });
131 ajaxHandler.callback = function(response){
132 jQuery('.sg-'+storage+'-user').remove();
133 if (typeof storage == 'string') {
134 location.reload();
135 }
136 };
137 ajaxHandler.run();
138 }
139 });
140 };
141
142 sgBackup.storeAmazonSettings = function(){
143 var error = [];
144 /* Validation */
145 jQuery('.alert').remove();
146 var amazonForm = jQuery('form[data-type=storeAmazonSettings]');
147 amazonForm.find('input').each(function(){
148 if(jQuery(this).val()<=0){
149
150 if(jQuery(this)[0].id == "customBucketRegion" && jQuery("#bucketType").val() != "custom"){
151 return;
152 }
153 var errorTxt = jQuery(this).closest('div').parent().find('label').html().slice(0,-2);
154 error.push(errorTxt+' field is required.');
155 }
156 });
157
158 /* If any error show it and abort ajax */
159 if(error.length){
160 var alert = sgBackup.alertGenerator(error, 'alert-danger');
161 jQuery('#sg-modal .modal-header').prepend(alert);
162 return false;
163 }
164
165 /* Before Ajax call */
166 jQuery('.modal-footer .btn-primary').attr('disabled','disabled');
167 jQuery('.modal-footer .btn-primary').html(BG_CLOUD_STRINGS.connectionInProgress);
168
169 /* Get user credentials */
170 var amazonBucket = jQuery('#amazonBucket').val();
171 var amazonAccessKey = jQuery('#amazonAccessKey').val();
172 var amazonSecretAccessKey = jQuery('#amazonSecretAccessKey').val();
173 var region = jQuery('#amazonBucketRegion').val();
174
175 /* On Success */
176 var ajaxHandler = new sgRequestHandler('cloudAmazon',amazonForm.serialize());
177 ajaxHandler.dataIsObject = false;
178 ajaxHandler.callback = function(response){
179 jQuery('.alert').remove();
180 if(typeof response.success !== 'undefined'){
181 sgBackup.isAmazonConnected = true;
182 jQuery('input[data-storage=AMAZON]').bootstrapSwitch('state',true);
183 jQuery('#sg-modal').modal('hide');
184 }
185 else{
186 /* if error */
187 var alert = sgBackup.alertGenerator(response, 'alert-danger');
188 jQuery('#sg-modal .modal-header').prepend(alert);
189
190 /* Before Ajax call */
191 jQuery('.modal-footer .btn-primary').removeAttr('disabled');
192 jQuery('.modal-footer .btn-primary').html('Save');
193 }
194 };
195 ajaxHandler.run();
196 };
197
198 sgBackup.storeFtpSettings = function(){
199 var error = [];
200 /* Validation */
201 jQuery('.alert').remove();
202 var ftpForm = jQuery('form[data-type=storeFtpSettings]');
203 ftpForm.find('input[type=text]').each(function(){
204 if(jQuery(this).val()<=0){
205 if (jQuery(this).attr('name') != 'sg-key-file') {
206 var errorTxt = jQuery(this).closest('div').parent().find('label').html().slice(0,-2);
207 }
208 else {
209 var errorTxt = jQuery(this).closest('div').parent().parent().find('label').html().slice(0,-2);
210 }
211
212
213 if(!jQuery('#sg-connect-with-key-file').is(':checked') && jQuery(this).attr('name') == 'sg-key-file') {
214 return true;
215 }
216
217 if(jQuery('#sg-connect-with-key-file').is(':checked') && jQuery(this).attr('name') == 'ftpPass') {
218 return true;
219 }
220
221 error.push(errorTxt+' field is required.');
222 }
223 });
224
225 /* If any error show it and abort ajax */
226 if(error.length){
227 var alert = sgBackup.alertGenerator(error, 'alert-danger');
228 jQuery('#sg-modal .modal-header').prepend(alert);
229 return false;
230 }
231
232 /* Before Ajax call */
233 jQuery('.modal-footer .btn-primary').attr('disabled','disabled');
234 jQuery('.modal-footer .btn-primary').html('Connecting...');
235
236 /* Get user credentials */
237 var ftpHost = jQuery('#ftpHost').val();
238 var ftpUser = jQuery('#ftpUser').val();
239 var ftpPort = jQuery('#ftpPort').val();
240 var ftpString = ftpUser+'@'+ftpHost+':'+ftpPort;
241
242 if (jQuery("#sg-connect-with-key-file").is(":checked")) {
243 sgBackup.importKeyFile(isFileSelected);
244 }
245
246 /* On Success */
247 var ajaxHandler = new sgRequestHandler('cloudFtp',ftpForm.serialize());
248 ajaxHandler.dataIsObject = false;
249 ajaxHandler.callback = function(response){
250 jQuery('.alert').remove();
251 if(typeof response.success !== 'undefined'){
252 sgBackup.isFtpConnected = true;
253 jQuery('input[data-storage=FTP]').bootstrapSwitch('state',true);
254 jQuery('#sg-modal').modal('hide');
255 sgBackup.addUserInfo(ftpString);
256 }
257 else{
258 /* if error */
259 var alert = sgBackup.alertGenerator(response, 'alert-danger');
260 jQuery('#sg-modal .modal-header').prepend(alert);
261
262 /* Before Ajax call */
263 jQuery('.modal-footer .btn-primary').removeAttr('disabled');
264 jQuery('.modal-footer .btn-primary').html('Save');
265 }
266 };
267 ajaxHandler.run();
268 };
269 sgBackup.initCloudFolderSettings = function(){
270 jQuery('#cloudFolder').on('input', function(){
271 jQuery('#sg-save-cloud-folder').fadeIn();
272 });
273 jQuery('#sg-save-cloud-folder').click(function(){
274 jQuery('.alert').remove();
275 var cloudFolderName = jQuery('#cloudFolder').val(),
276 cloundFolderRequest = new sgRequestHandler('saveCloudFolder',{cloudFolder: cloudFolderName, token: BG_BACKUP_STRINGS.nonce}),
277 saveBtn = jQuery(this);
278 var alert = sgBackup.alertGenerator(BG_CLOUD_STRINGS.invalidDestinationFolder,'alert-danger');
279 if(cloudFolderName.length<=0)
280 {
281 jQuery('.sg-cloud-container').before(alert);
282 return;
283 }
284 var alertValid = sgBackup.alertGenerator(BG_CLOUD_STRINGS.invalidDestinationFolderName, 'alert-danger');
285 var valid = /^[A-Za-z0-9_]*$/.test(cloudFolderName);
286 if (valid === false) {
287 jQuery('.sg-cloud-container').before(alertValid);
288 return;
289 }
290 saveBtn.attr('disabled','disabled');
291 saveBtn.html('Saving...');
292 cloundFolderRequest.callback = function(response){
293 if(typeof response.success !== 'undefined'){
294 var successAlert = sgBackup.alertGenerator(BG_CLOUD_STRINGS.successMessage,'alert-success');
295 jQuery('.sg-cloud-container').before(successAlert);
296 saveBtn.fadeOut();
297 }
298 else{
299 jQuery('.sg-cloud-container').before(alert);
300 }
301 saveBtn.removeAttr('disabled');
302 saveBtn.html('Save');
303 };
304
305 var isFeatureAvailable = new sgRequestHandler('isFeatureAvailable', {sgFeature: 'SUBDIRECTORIES'});
306 isFeatureAvailable.callback = function(response) {
307 if (typeof response.success !== 'undefined') {
308 cloundFolderRequest.run();
309 }
310 else {
311 var alert = sgBackup.alertGenerator(response.error, 'alert-warning');
312 jQuery('.sg-cloud-container').before(alert);
313 saveBtn.fadeOut();
314 }
315 };
316
317 isFeatureAvailable.run();
318 });
319 };
320
321 sgBackup.addUserInfo = function(info){
322 jQuery('.sg-user-info .sg-helper-block').remove();
323 jQuery('.sg-user-info br').remove();
324 jQuery('.sg-user-info').append('<br/><span class="text-muted sg-user-email sg-helper-block">'+info+'</span>');
325 };
326
327 sgBackup.backupCloudConnectCallback;
328
329 sgBackup.validateForm = function () {
330 var validateObj = {
331 rules: {
332 email: {
333 required: true,
334 email: true
335 },
336 password: {
337 required: true,
338 },
339 firstname: {
340 required: true,
341 },
342 lastname: {
343 required: true,
344 },
345 }
346 };
347 validateObj.submitHandler = function () {
348 var callBack = sgBackup.backupCloudConnectCallback;
349 callBack();
350 };
351 var form = jQuery('#backupGuardDetailsModal');
352 form.validate(validateObj);
353 form.submit();
354 };
355
356 sgBackup.bgCloudLoginForm = function (mode) {
357 var selectors = ['#bg-password-container', '#bg-login'];
358 for (var i in selectors) {
359 var selector = selectors[i];
360 if (mode == 'show') {
361 jQuery(selector).removeClass('hidden');
362 }
363 else {
364 jQuery(selector).addClass('hidden');
365 }
366 }
367
368 jQuery('#bg-connect-account').addClass('hidden');
369 };
370
371 sgBackup.bgCloudRegisterForm = function (mode) {
372 var selectors = ['#bg-firstname-container', '#bg-lastname-container', '#bg-create-account'];
373 for (var i in selectors) {
374 var selector = selectors[i];
375 if (mode == 'show') {
376 jQuery(selector).removeClass('hidden');
377 }
378 else {
379 jQuery(selector).addClass('hidden');
380 }
381 }
382
383 jQuery('#bg-connect-account').addClass('hidden');
384 };
385
386 sgBackup.backupGuardConnectRequest = function () {
387 sgBackup.showAjaxSpinner('.sg-modal-body');
388 var email = jQuery("#email").val();
389 var isUserExistsHandler = new sgRequestHandler('isBgUserExists', {email: email, token: BG_BACKUP_STRINGS.nonce});
390 isUserExistsHandler.callback = function(response) {
391 sgBackup.hideAjaxSpinner();
392
393 sgBackup.hideConnectionMessages();
394
395 if (response.validationError == 'error') {
396 jQuery('.bg-invalid-login').removeClass('hide');
397 return true;
398 }
399 else {
400 jQuery('.sg-backup-input-email').prop('readonly', true);
401 }
402 if (typeof response.success != 'undefined') {
403 jQuery('.bg-loggin-form-message').removeClass('hide');
404 sgBackup.bgCloudLoginForm('show');
405 }
406 else if (response.user == 'notFound') {
407 jQuery('.bg-register-form-message').removeClass('hide');
408 sgBackup.bgCloudRegisterForm('show')
409 }
410 };
411 isUserExistsHandler.run();
412 };
413
414 sgBackup.backupGuardConnect = function() {
415
416 sgBackup.backupCloudConnectCallback = sgBackup.backupGuardConnectRequest;
417 sgBackup.validateForm();
418 };
419
420 sgBackup.hideConnectionMessages = function ()
421 {
422 jQuery('.sgbg-connection-message').addClass('hide');
423 };
424
425 sgBackup.backupGuardLoginRequest = function ()
426 {
427 sgBackup.showAjaxSpinner('.sg-modal-body');
428 sgBackup.backupCloudConnectCallback = this;
429
430 var email = jQuery("#email").val();
431 var password = jQuery("#password").val();
432
433 var loginHandler = new sgRequestHandler('bgLogin', {email: email, password: password, token: BG_BACKUP_STRINGS.nonce});
434 loginHandler.callback = function(response) {
435 sgBackup.hideAjaxSpinner();
436 if (typeof response.profiles != 'undefined') {
437 jQuery('#bg-email-container').hide();
438 jQuery('#bg-password-container').hide();
439 jQuery('#bg-close-button').hide();
440 jQuery('#bg-login').hide();
441 sgBackup.hideConnectionMessages();
442 jQuery('.bg-create-form-message').removeClass('hide');
443
444 jQuery('#bg-choose-profile').removeClass('hidden');
445 jQuery('#bg-profiles-container').removeClass('hidden');
446
447 if (response.profiles.length) {
448 jQuery('.bg-select-profile').removeClass('hidden');
449 }
450 jQuery.each(response.profiles, function(key, value) {
451 jQuery('#bg-profiles').append('<option value="'+value['id']+'">'+value['name']+'</option>');
452 });
453
454 jQuery('#bg-profiles').on("change", function () {
455 var profileId = jQuery(this).val();
456 if (profileId === "0") {
457 jQuery('#bg-profile-name-container').show();
458 }
459 else {
460 jQuery('#bg-profile-name-container').hide();
461 }
462 });
463 }
464 else {
465 jQuery('.bg-invalid-login').removeClass('hide');
466 }
467 };
468 loginHandler.run();
469 };
470
471 sgBackup.backupGuardLogin = function() {
472 sgBackup.backupCloudConnectCallback = sgBackup.backupGuardLoginRequest;
473 sgBackup.validateForm();
474 };
475
476 sgBackup.chooseProfileRequest = function () {
477 sgBackup.showAjaxSpinner('.sg-modal-body');
478 var profileId = jQuery("#bg-profiles").val();
479 // var profileName = "";
480
481 if (profileId === "0") {
482 var profileName = jQuery("#bg-profile-name").val();
483 }
484 else {
485 var profileName = jQuery("#bg-profiles option:selected").text();
486 }
487
488 var chooseProfile = new sgRequestHandler('chooseProfile', {profileId: profileId, profileName: profileName, token: BG_BACKUP_STRINGS.nonce});
489 chooseProfile.callback = function(response) {
490 sgBackup.hideAjaxSpinner();
491 if (typeof response.success != 'undefined') {
492 location.reload();
493 }
494 };
495 chooseProfile.run();
496 };
497
498 sgBackup.chooseProfile = function() {
499 sgBackup.backupCloudConnectCallback = sgBackup.chooseProfileRequest;
500 sgBackup.validateForm();
501 };
502
503 sgBackup.createCloudUserRequest = function () {
504 sgBackup.showAjaxSpinner('.sg-modal-body');
505 var lastname = jQuery("#lastname").val();
506 var email = jQuery("#email").val();
507 var firstname = jQuery("#firstname").val();
508
509 var createCloudUserHandler = new sgRequestHandler('createCloudUser', {email: email, lastname: lastname, firstname: firstname, token: BG_BACKUP_STRINGS.nonce});
510 createCloudUserHandler.callback = function(response) {
511 sgBackup.hideAjaxSpinner();
512 if (typeof response.success != 'undefined') {
513 sgBackup.bgCloudLoginForm('show');
514 sgBackup.bgCloudRegisterForm();
515 sgBackup.hideConnectionMessages();
516
517 jQuery('.bg-email-confirmation').removeClass('hide');
518 }
519 };
520 createCloudUserHandler.run();
521 };
522
523 sgBackup.createCloudUser = function() {
524 sgBackup.backupCloudConnectCallback = sgBackup.createCloudUserRequest;
525 sgBackup.validateForm();
526 };
527
528 /* phpcs:enable */
529