File: //volume1/@appstore/HyperBackup/ui/addon.js
/* Copyright (c) 2026 Synology Inc. All rights reserved. */
Ext.define("SYNO.Backup.Addon.base.Restore.DestStep",{extend:"SYNO.ux.FormPanel",constructor:function(e){var t=Ext.apply({cls:"syno-backup-restore-dest-setting",bodyStyle:"padding-top: 24px"},e);this.callParent([t])}}),Ext.define("SYNO.SDS.Backup.Addon.Util.S3.Repository.CreateBucket",{extend:"SYNO.SDS.ModalWindow",dsmStyle:"v5",constructor:function(e){this.s3key=e.key,this.s3secret=e.secret,this.support_region=e.support_region,this.region_system=e.region_system,this.addon_id=e.addon_id,this.transfer_type=e.transfer_type,this.remote_url=e.remote_url,this.signature_version=e.signature_version,this.request_style=e.request_style;var t=[{xtype:"syno_textfield",name:"bucket",allowBlank:!1,fieldLabel:_T("backup","s3_bucket"),validator:function(e){return-1===e.search(/(\.\.|\.-|-\.)/)||_T("netbackup","s3_bucket_name_period_limit")},owner:this}];if(this.support_region&&"aws_s3"===this.transfer_type){var a="";"s3_china"===this.region_system&&(a="cn-north-1"),t.push({xtype:"syno_combobox",name:"region",fieldLabel:SYNO.SDS.Backup.String("aws_s3","s3_select_region"),store:this.getRegionStore(),displayField:"region",valueField:"value",value:a,owner:this})}var i=Ext.apply({title:_T("backup","s3_create_bucket"),width:450,height:200,minWidth:450,minHeight:200,layout:"fit",items:[{xtype:"syno_formpanel",trackResetOnLoad:!0,itemId:"form_panel",items:t}],buttons:[{text:_T("common","cancel"),handler:function(){this.close()},scope:this},{itemId:"btn_apply",text:_T("common","apply"),btnStyle:"blue",scope:this,handler:this.onCreate}]},e);return this.callParent([i])},getRegionStore:function(){if(this.support_region&&"aws_s3"===this.transfer_type){var e=[[SYNO.SDS.Backup.String("aws_s3","s3_region_us_east_virginia"),""],[SYNO.SDS.Backup.String("aws_s3","s3_region_us_east_ohio"),"us-east-2"],[SYNO.SDS.Backup.String("aws_s3","s3_region_us_west_california"),"us-west-1"],[SYNO.SDS.Backup.String("aws_s3","s3_region_us_west_oregon"),"us-west-2"],[SYNO.SDS.Backup.String("aws_s3","s3_region_canada_central"),"ca-central-1"],[SYNO.SDS.Backup.String("aws_s3","s3_region_eu_ireland"),"eu-west-1"],[SYNO.SDS.Backup.String("aws_s3","s3_region_eu_frankfurt"),"eu-central-1"],[SYNO.SDS.Backup.String("aws_s3","s3_region_eu_london"),"eu-west-2"],[SYNO.SDS.Backup.String("aws_s3","s3_region_eu_paris"),"eu-west-3"],[SYNO.SDS.Backup.String("aws_s3","s3_region_eu_stockholm"),"eu-north-1"],[SYNO.SDS.Backup.String("aws_s3","s3_region_asia_tokyo"),"ap-northeast-1"],[SYNO.SDS.Backup.String("aws_s3","s3_region_asia_seoul"),"ap-northeast-2"],[SYNO.SDS.Backup.String("aws_s3","s3_region_asia_hongkong"),"ap-east-1"],[SYNO.SDS.Backup.String("aws_s3","s3_region_asia_singapore"),"ap-southeast-1"],[SYNO.SDS.Backup.String("aws_s3","s3_region_asia_sydney"),"ap-southeast-2"],[SYNO.SDS.Backup.String("aws_s3","s3_region_asia_mumbai"),"ap-south-1"],[SYNO.SDS.Backup.String("aws_s3","s3_region_south_america_sao_paulo"),"sa-east-1"],[SYNO.SDS.Backup.String("aws_s3","s3_region_middle_east_bahrain"),"me-south-1"]];return"s3_china"===this.region_system&&(e=[[SYNO.SDS.Backup.String("aws_s3","s3_region_china_beijing"),"cn-north-1"],[SYNO.SDS.Backup.String("aws_s3","s3_region_china_ningxia"),"cn-northwest-1"]]),this.regionStore||(this.regionStore=new Ext.data.ArrayStore({fields:["region","value"],data:e})),this.regionStore}},onCreate:function(){if(this.items.get(0).getForm().isValid()){this.setStatusBusy();var e={key:this.s3key,secret:this.s3secret,transfer_type:this.transfer_type,bucket:this.items.get(0).getForm().findField("bucket").getValue()};this.remote_url&&(e.remote_url=this.remote_url),this.signature_version&&(e.signature_version=this.signature_version),this.support_region&&"aws_s3"===this.transfer_type?(e.region=this.items.get(0).getForm().findField("region").getValue(),e.region_system=this.region_system):this.support_region&&"jdcloud_s3"===this.transfer_type&&(e.region=this.region_system,e.region_system=this.region_system),e.request_style=this.request_style,this.sendWebAPI({api:"SYNO.Backup.Storage.S3.Bucket",version:1,method:"create",params:e,encryption:["secret"],scope:this,callback:function(e,t,a){this.support_region&&"aws_s3"===this.transfer_type&&this.items.get(0).getForm().findField("region").getValue();var i=this.items.get(0).getForm().findField("bucket").getValue();if(this.clearStatusBusy(),!e)return this.showPossibleBucketError(t.code,i,undefined),!1;this.close()}})}},showPossibleBucketError:function(e,t,a){if(this.customizedBucketErrorFilter&&Ext.isFunction(this.customizedBucketErrorFilter))return this.customizedBucketErrorFilter(e,t,a);var i="";if(t.match(/^[a-z0-9.-]*$/)||(i=i.concat("<BR>- ",_T("netbackup","s3_bucket_name_non_us_standard_letter_limit"))),t.match(/^[a-z0-9]/)&&t.match(/[a-z0-9]$/)||(i=i.concat("<BR>- ",_T("netbackup","s3_bucket_name_leading_letter_limit"))),(3>t.length||63<t.length)&&(i=i.concat("<BR>- ",String.format(_T("netbackup","s3_bucket_name_length_limit"),"3","63"))),t.match(/([1-9][0-9]{0,1}|1[013-9][0-9]|12[0-689]|2[01][0-9]|22[0-3])([.]([1-9]{0,1}[0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])){2}[.]([1-9][0-9]{0,1}|1[0-9]{2}|2[0-4][0-9]|25[0-5])/)&&(i=i.concat("<BR>- ",_T("netbackup","s3_bucket_name_ip_limit"))),-1!==t.search(/(\.\.|\.-|-\.)/)&&(i=i.concat("<BR>- ",_T("netbackup","s3_bucket_name_period_limit"))),i.length>0)this.getMsgBox().alert(_T("tree","leaf_backup"),_T("netbackup","s3_bucket_name_invalid_short")+" "+_T("netbackup","s3_bucket_name_meet_condition")+" "+_T("common","colon")+i);else{if(e===SYNO.SDS.Backup.ERR_NAME_NOT_VALID||e===SYNO.SDS.Backup.ERR_PARAM)return i=_T("netbackup","s3_bucket_name_invalid_short"),void this.getMsgBox().alert(_T("tree","leaf_backup"),i);i=SYNO.SDS.Backup.GetErrorString(e),this.getMsgBox().alert(_T("tree","leaf_backup"),i)}}}),Ext.define("SYNO.SDS.Backup.Addon.Util.S3.Repository.CreateStep",{extend:"SYNO.SDS.Backup.FormPanel",constructor:function(e){this.addon_id=e.addon_id;var t=Ext.apply({height:410,items:[{xtype:"syno_fieldset",title:SYNO.Backup.Addon.Util.getString(this.addon_id,"repo_wizard_headline"),collapsible:!1,defaults:{labelWidth:300},items:[{xtype:"syno_textfield",name:"name",value:SYNO.Backup.Addon.Util.getString(this.addon_id,"repo_name_prefix")||"My Storage",allowBlank:!1,fieldLabel:_T("backup","repo_name"),maxLength:32,vtype:"backup_destination",hidden:!0},{xtype:"syno_combobox",name:"server",allowBlank:!1,store:this.getServerStore(),fieldLabel:_T("backup","s3_server"),displayField:"server",valueField:"value",value:"aws_s3",editable:!1,listeners:{select:function(e,t,a){this.changeLayout(t.get("value"))},scope:this}},{xtype:"syno_textfield",name:"remote_url",allowBlank:!1,fieldLabel:SYNO.SDS.Backup.String("aws_s3","url"),hidden:!0,disabled:!0},{xtype:"syno_combobox",name:"signature_version",allowBlank:!1,store:this.getSignatureStore(),fieldLabel:SYNO.SDS.Backup.String("aws_s3","signature_version"),displayField:"version",valueField:"value",value:"v2",editable:!1,hidden:!0,disabled:!0},{xtype:"syno_textfield",name:"key",allowBlank:!1,fieldLabel:_T("backup","s3_access_key")},{xtype:"syno_textfield",name:"secret",allowBlank:!1,inputType:"password",fieldLabel:_T("backup","s3_secret_key")},{xtype:"syno_combobox",name:"bucket",fieldLabel:SYNO.SDS.Backup.String("aws_s3","bucket_name"),store:this.getBucketStore(),displayField:"bucket",allowBlank:!1,valueField:"bucket",scope:this,onTriggerClick:function(){this.readOnly||this.disabled||(this.scope.needReloadBucket()?this.scope.loadBucketStore():SYNO.ux.ComboBox.prototype.onTriggerClick.call(this,arguments))},listeners:{select:function(e,t,a){0!==a||this.createBucket()},beforeselect:function(e,t,a){if(t.get("status")>0)return!1},scope:this},tpl:'<tpl for="."><div ext:qtip="{[SYNO.SDS.Backup.Util.htmlEncodeTip(values.status === 1 ? String.format(_T("backup", "repo_already_exist") + " [" + values.conflict_repo + "]") : values.bucket)]}" class="x-combo-list-item {[values.status === 1 ? "syno-backup-disabled-list-item" : "syno-backup-enabled-list-item"]}">{bucket:htmlEncode}</div></tpl>'}]}]},e),a=this.callParent([t]);return this.mon(this,"activate",(function(){this.getForm().findField("server").setValue("aws_s3")}),this,{single:!0}),a},getServerList:function(){return[{value:"aws_s3",ui_string:SYNO.SDS.Backup.String("aws_s3","name")},{value:"aws_cn_s3",ui_string:SYNO.SDS.Backup.String("aws_s3","name")+" "+SYNO.SDS.Backup.String("aws_s3","s3_region_system_china")},{value:"hicloud_s3",ui_string:SYNO.SDS.Backup.String("hicloud_s3","name")},{value:"sfr_s3",ui_string:SYNO.SDS.Backup.String("sfr_s3","name")},{value:"s3_compatible",ui_string:SYNO.SDS.Backup.String("aws_s3","custom_address")}]},getServerStore:function(){if(!this.serverStore){var e=this.getServerList();this.serverStore=new Ext.data.ArrayStore({fields:["server","value"],data:e.map((function(e){return[e.ui_string,e.value]}))})}return this.serverStore},getSignatureStore:function(){return this.signatureStore||(this.signatureStore=new Ext.data.ArrayStore({fields:["version","value"],data:[[SYNO.SDS.Backup.String("aws_s3","v2_will_be_deprecated"),"v2"],["v4","v4"]]})),this.signatureStore},changeLayout:function(e){var t=this.getForm(),a=this,i=function(e,i){t.findField(e).setDisabled(!i),t.findField(e).setVisible(i),a.doLayout()},n=function(e){i("remote_url",e),i("signature_version",e)};n("s3_compatible"===e)},createBucket:function(){var e=this.getParams();e.owner=this.owner;var t=new SYNO.SDS.Backup.Addon.Util.S3.Repository.CreateBucket(e);this.mon(t,"close",(function(){var e=t.items.get(0).getForm().findField("bucket").getValue();this.getForm().findField("bucket").clearValue(),this.loadBucketStore(e)}),this),t.open()},getBucketStore:function(){return this.bucketStore||(this.bucketStore=new Ext.data.ArrayStore({fields:["bucket","status","conflict_repo"]})),this.bucketStore},getLoadBucketParams:function(){var e=this.getParams();return delete e.bucket,e},needReloadBucket:function(){var e=this.getLoadBucketParams();return this.lastQuery!==Ext.encode(e)},loadBucketStore:function(e){var t=this.getLoadBucketParams();t.key&&t.secret&&(this.owner.setStatusBusy(),this.sendWebAPI({api:"SYNO.Backup.Storage.S3.Bucket",version:1,method:"list",params:t,scope:this,callback:function(a,i,n){var s=this.getForm().findField("bucket"),o=new new Ext.data.Record.create(["bucket","status","conflict_repo"])({bucket:_T("backup","s3_create_bucket"),status:0,conflict_repo:""});this.owner.clearStatusBusy(),a?(this.lastQuery=Ext.encode(t),this.getBucketStore().loadData(i.bucket_list),this.getBucketStore().insert(0,o),s?e&&-1!==this.getBucketStore().findExact("bucket",e)&&0===this.getBucketStore().getAt(this.getBucketStore().findExact("bucket",e)).get("status")?(s.setValue(e),s.collapse()):(s.el.focus(),s.expand(),s.restrictHeight()):SYNO.Debug("empty combo")):this.owner.reportError(i)}}))},getParams:function(){var e={};e=this.getForm().getFieldValues();var t=this.getForm().findField("server").getValue();return"hicloud_s3"===t||"sfr_s3"===t?(e.transfer_type=t,e.support_region=!1):"aws_s3"===t?(e.transfer_type="aws_s3",e.support_region=!0,e.region_system="s3_global"):"aws_cn_s3"===t?(e.transfer_type="aws_s3",e.support_region=!0,e.region_system="s3_china"):(e.transfer_type="aws_s3",e.support_region=!1),e.action="create",e.repo_name=e.name,e.addon_id="aws_s3",delete e.server,delete e.name,e},getNext:function(){return!!this.getForm().isValid()&&(this.owner.loadAppParams(),this.nextId)},isValid:function(){return this.getForm().isValid()},summary:function(e){var t=this.getParams(),a=this.getForm().findField("server").getValue(),i=this.getServerList().find((function(e){return e.value===a})),n=i?i.ui_string:a,s=[SYNO.SDS.Backup.String("aws_s3","repo_type_name")];s.push(SYNO.Backup.Addon.Util.getColonConnect(_T("backup","s3_server"),n)),s.push(SYNO.Backup.Addon.Util.getColonConnect(SYNO.SDS.Backup.String("aws_s3","bucket_name"),t.bucket)),e.append(SYNO.SDS.Backup.String("app","backup_destination"),s)}}),Ext.define("SYNO.SDS.Backup.Addon.Util.S3.Repository.EditDialog",{extend:"SYNO.ux.FormPanel",constructor:function(e){this.transferType=e.transferType,this.targetType="cloud";var t=Ext.apply({height:400,trackResetOnLoad:!0,items:this.createItems()},e);return this.callParent([t])},createItems:function(){return[]},loadData:function(e){this.getForm().setValues(e),this.orgName=e.name},getApplyApi:function(){var e=this.getForm().getFieldValues(!0);return e.name=this.orgName,e.task_id=this.taskId,e.repo_id=this.repoId,e.transfer_type=this.transferType,e.target_type=this.targetType,{api:"SYNO.Backup.Repository",version:1,method:"set",params:e}}}),Ext.define("SYNO.SDS.Backup.Addon.Util.S3.Restore.DestStep",{extend:"SYNO.Backup.Addon.base.Restore.DestStep",comboboxWidth:270,S3_BUCKET_LENGTH:63,constructor:function(e){var t=[];this.target_type="cloud",Ext.copyTo(this,e,"owner"),this.configFields(t),this.callParent([Ext.apply({trackResetOnLoad:!0,items:[{xtype:"syno_fieldset",defaults:{labelWidth:300},items:t}]},e)]),this.mon(this,"activate",(function(){this.getForm().findField("server").setValue("aws_s3")}),this,{single:!0})},configFields:function(e){e.push({xtype:"syno_combobox",name:"server",width:this.comboboxWidth,allowBlank:!1,store:this.getServerStore(),fieldLabel:_T("backup","s3_server"),displayField:"server",valueField:"value",value:"aws_s3",editable:!1,listeners:{select:function(e,t,a){this.changeLayout(t.get("value"))},scope:this}},{xtype:"syno_textfield",width:this.comboboxWidth,name:"remote_url",allowBlank:!1,fieldLabel:SYNO.SDS.Backup.String("aws_s3","url"),hidden:!0,disabled:!0},{xtype:"syno_combobox",name:"signature_version",width:this.comboboxWidth,allowBlank:!1,store:this.getSignatureStore(),fieldLabel:SYNO.SDS.Backup.String("aws_s3","signature_version"),displayField:"version",valueField:"value",value:"v2",editable:!1,hidden:!0,disabled:!0,listeners:{scope:this,select:function(e,t){"v4"===t.get("value")?(this.getForm().findField("request_style").setVisible(!0),this.getForm().findField("request_style").setDisabled(!1)):(this.getForm().findField("request_style").setVisible(!1),this.getForm().findField("request_style").setDisabled(!0)),this.doLayout()}}},{xtype:"syno_combobox",name:"request_style",width:270,allowBlank:!1,store:this.getUrlStyleStore(),fieldLabel:SYNO.SDS.Backup.String("aws_s3","request_style"),displayField:"style",valueField:"value",value:"virtual_host_style",editable:!1,hidden:!0,disabled:!0},{xtype:"syno_textfield",fieldLabel:_T("backup","s3_access_key"),name:"accesskey",width:this.comboboxWidth,allowBlank:!1},{xtype:"syno_textfield",fieldLabel:_T("backup","s3_secret_key"),name:"secretkey",width:this.comboboxWidth,inputType:"password",allowBlank:!1},{xtype:"syno_combobox",name:"bktselect",width:this.comboboxWidth,fieldLabel:SYNO.SDS.Backup.String("aws_s3","bucket_name"),store:new Ext.data.ArrayStore({fields:["value"]}),forceSelection:!1,valueField:"value",displayField:"value",allowBlank:!1,triggerAction:"all",mode:"local",maxlength:this.S3_BUCKET_LENGTH,onTriggerClick:function(){this.readOnly||this.disabled||(this.scope.needReloadBuckets()?this.scope.loadBuckets():SYNO.ux.ComboBox.prototype.onTriggerClick.call(this,arguments))},listeners:{select:this.onSelectBucket,scope:this},scope:this,tpl:'<tpl for="."><div ext:qtip="{[SYNO.SDS.Backup.Util.htmlEncodeTip(values.value)]}" class="x-combo-list-item">{value:htmlEncode}</div></tpl>'},{xtype:"syno_combobox",fieldLabel:_T("backup","backup_dest_directory"),width:this.comboboxWidth,name:"target",forceSelection:!0,editable:!1,allowBlank:!1,store:new Ext.data.ArrayStore({fields:["display","value"]}),displayField:"display",valueField:"value",triggerAction:"all",mode:"local",onTriggerClick:function(){this.readOnly||this.disabled||(this.scope.needReloadTarget()?this.scope.loadTarget():SYNO.ux.ComboBox.prototype.onTriggerClick.call(this,arguments))},scope:this,tpl:'<tpl for="."><div ext:qtip="{[SYNO.SDS.Backup.Util.htmlEncodeTip(values.value)]}" class="x-combo-list-item">{display:htmlEncode}</div></tpl>'})},getServerStore:function(){return this.serverStore||(this.serverStore=new Ext.data.ArrayStore({fields:["server","value"],data:[[SYNO.SDS.Backup.String("aws_s3","name"),"aws_s3"],[SYNO.SDS.Backup.String("aws_s3","name")+" "+SYNO.SDS.Backup.String("aws_s3","s3_region_system_china"),"aws_cn_s3"],[SYNO.SDS.Backup.String("aws_s3","custom_address"),"s3_compatible"]]})),this.serverStore},getSignatureStore:function(){return this.signatureStore||(this.signatureStore=new Ext.data.ArrayStore({fields:["version","value"],data:[[SYNO.SDS.Backup.String("aws_s3","v2_will_be_deprecated"),"v2"],["v4","v4"]]})),this.signatureStore},getUrlStyleStore:function(){return this.urlStyleStore||(this.urlStyleStore=new Ext.data.ArrayStore({fields:["style","value"],data:[[SYNO.SDS.Backup.String("aws_s3","virtual_host_style"),"virtual_host_style"],[SYNO.SDS.Backup.String("aws_s3","path_style"),"path_style"]]})),this.urlStyleStore},getRequestStyleValue:function(){var e=this.getForm(),t=function(t){return e.findField(t).getValue()};return"s3_compatible"===t("server")&&"v4"===t("signature_version")?t("request_style"):"virtual_host_style"},changeLayout:function(e){var t=this.getForm(),a=this,i=function(e,i){t.findField(e).setDisabled(!i),t.findField(e).setVisible(i),a.doLayout()},n=function(e){i("remote_url",e),i("signature_version",e)};n("s3_compatible"===e),"s3_compatible"===e&&"v4"===t.findField("signature_version").getValue()?i("request_style",!0):i("request_style",!1)},onSelectBucket:function(e){this.loadTarget(e.getValue())},activate:function(){},getNext:function(){if(!this.getForm().isValid())return!1;if(!this.getForm().isDirty())return this.nextId;var e=this.getParams();return e.additional=e.additional?e.additional:[],e.additional.push("check_backup_data_type"),this.owner.setStatusBusy(),this.sendWebAPI({api:"SYNO.Backup.Target",method:"get",version:1,params:e,encryption:["secret"],callback:this.onTargetGet,scope:this}),!1},onTargetGet:function(e,t,a){return e?(t.support_multi_version?(this.target_type="cloud_image",this.owner.setSingle(!1)):(this.target_type="cloud",this.owner.setSingle(!0)),"data"!==t.check_backup_data_type||"image"===t.format_type?(this.owner.getMsgBox().alert(_T("leaf","backup"),SYNO.SDS.Backup.String("error","target_not_support")),this.owner.clearStatusBusy(),!1):(this.owner.clearStatusBusy(),this.owner.data_enc=t.data_enc,this.owner.uni_key=t.uni_key,t.data_enc?this.launchPasswordWindow((function(){this.owner.goNext(this.nextId)})):this.owner.goNext(this.nextId),!1)):(this.owner.targetGetErrorHandle(t),this.owner.clearStatusBusy(),!1)},launchPasswordWindow:function(e){var t=this.getParams();Ext.apply(t,{uni_key:this.owner.uni_key}),new SYNO.SDS.Backup.Client.Common.Password.Window({owner:this.owner,verify_params:t,setter:Ext.createDelegate(this.setEncKey,this),callback:Ext.createDelegate(e,this)}).open()},setEncKey:function(e){this.owner.sess_id=e.sess_id,this.owner.sess_key=e.sess_key},getParams:function(){var e=this.getForm(),t=function(t){return e.findField(t).getValue()},a={key:t("accesskey"),secret:t("secretkey"),bucket:t("bktselect"),target_id:t("target"),target_type:this.target_type,addon_id:"aws_s3"},i=t("server");return"aws_s3"===i?(a.transfer_type="aws_s3",a.support_region=!0,a.region_system="s3_global"):"aws_cn_s3"===i?(a.transfer_type="aws_s3",a.support_region=!0,a.region_system="s3_china"):(a.transfer_type="aws_s3",a.support_region=!1,a.remote_url=t("remote_url"),a.signature_version=t("signature_version")),a.request_style=this.getRequestStyleValue(i),a},summary:function(e){var t=this.getParams();e.append(_T("backup","restore_type"),SYNO.SDS.Backup.String("aws_s3","repo_type_name")),Ext.isEmpty(t.remote_url)?e.append(_T("netbackup","netbkp_slct_server"),SYNO.Backup.Addon.Util.getString(t.transfer_type,"name")):e.append(_T("netbackup","netbkp_slct_server"),t.remote_url),e.append(_T("backup","backup_restore_source"),t.bucket+" / "+t.target_id)},getListBucketRequest:function(){var e=this.getParams();return delete e.bucket,delete e.target_id,e},needReloadBuckets:function(){var e=this.getListBucketRequest();return this.lastQueryModule!==Ext.encode(e)},loadBuckets:function(){var e=this.getListBucketRequest();e.key&&e.secret&&(this.owner.setStatusBusy({text:_T("netbackup","s3_retrieve_bucket")}),this.sendWebAPI({api:"SYNO.Backup.Storage.S3.Bucket",version:1,method:"list",params:e,encryption:["secret"],scope:this,callback:function(t,a,i){if(this.owner.clearStatusBusy(),!t)return this.loadBucketsData(),this.owner.reportError(a),void delete this.lastQueryModule;this.lastQueryModule=Ext.encode(e),this.loadBucketsData(a)}}))},loadBucketsData:function(e){var t=this.getForm().findField("bktselect");return SYNO.SDS.Backup.Util.comboboxLoadData(t,e?e.bucket_list:[],0)},getLoadTargetParams:function(){var e=this.getParams();return delete e.target_id,e},needReloadTarget:function(){var e=this.getLoadTargetParams();return this.lastQueryTarget!==Ext.encode(e)},loadTarget:function(e){var t=this.getLoadTargetParams();t.key&&t.secret&&t.bucket&&this.lastQueryTarget!==Ext.encode(t)&&(this.lastQueryTarget=Ext.encode(t),t.backup_data_type="data",this.owner.setStatusBusy({text:_T("backup","search_restore_folder")}),this.owner.api.send({api:"SYNO.Backup.Target",method:"list",version:1,params:t,encryption:["secret"],callback:function(e,a,i){if(this.owner.clearStatusBusy(),!e)return this.owner.api.alert(a),this.loadTargetData({target_list:[]}),void delete this.lastQueryTarget;this.lastQueryTarget=Ext.encode(t),this.loadTargetData(a)},scope:this}))},loadTargetData:function(e){var t=this.getForm().findField("target");return SYNO.Backup.Util.HBKDisplayComboboxLoadData(t,e.target_list,"target_id")}}),Ext.define("SYNO.Backup.Addon.base.Destination.SettingPanel",{extend:"SYNO.SDS.Backup.FormPanel",isAnchor:!0,action:"create",target_type:null,transfer_type:null,createFields:[],relinkFields:[],supportCreate:!0,supportRelink:!0,supportExport:!0,helpEnableClientEncrypt:!1,constructor:function(e){var t=Ext.apply({},e);this.callParent([t])},initComponent:function(){var e=[];this.supportCreate&&(e=e.concat(this.getCreateFields())),this.supportRelink&&(e=e.concat(this.getRelinkFields())),this.supportExport&&(e=e.concat(this.getExportFields())),this.items=[{xtype:"syno_fieldset",collapsible:!1,bwrapStyle:"padding: 0px",defaults:{labelWidth:208},items:[e]}],this.callParent(arguments),this.supportCreate?this.updateFieldView(["create_fields"],["relink_fields","export_fields"]):this.supportRelink?this.updateFieldView(["relink_fields"],["create_fields","export_fields"]):this.supportExport&&this.updateFieldView(["export_fields"],["create_fields","relink_fields"])},initEvents:function(){this.callParent(arguments),this.mon(this,"activate",(function(){this.supportCreate?this.updateFieldView(["create_fields"],["relink_fields","export_fields"]):this.supportRelink?this.updateFieldView(["relink_fields"],["create_fields","export_fields"]):this.supportExport&&this.updateFieldView(["export_fields"],["create_fields","relink_fields"])}),this,{single:!0}),this.mon(this,"afterlayout",this.onAfterLayout,this,{single:!0,buffer:1})},getCreateFields:function(){var e=this.createFields.concat([{xtype:"syno_textfield",name:"target_id",indent:1,fieldLabel:_T("backup","backup_dest_directory"),maxLength:32,width:270,allowBlank:!1,vtype:"backup_target"}]);return Ext.isEmpty(this.descriptionFields)||(e=e.concat(this.descriptionFields)),[{xtype:"syno_radio",name:"creating_action",boxLabel:SYNO.SDS.Backup.String("app","wizard_create_option"),inputValue:"create",checked:!0,listeners:{check:function(e,t){t&&(this.action="create",this.updateFieldView(["create_fields"],["relink_fields","export_fields"]))},scope:this}},{xtype:"syno_fieldset",name:"create_fields",collapsible:!1,defaults:{labelWidth:208},bwrapStyle:{padding:0},items:e}]},getRelinkFields:function(){var e=[{xtype:"syno_radio",name:"creating_action",id:this.relinkComboId=Ext.id(),boxLabel:SYNO.SDS.Backup.String("app","wizard_relink_option"),hidden:!this.supportCreate&&!this.supportExport,inputValue:"relink",listeners:{check:function(e,t){t&&(this.action="relink",this.updateFieldView(["relink_fields"],["create_fields","export_fields"]))},scope:this}},{xtype:"syno_fieldset",name:"relink_fields",collapsible:!1,defaults:{labelWidth:208},bwrapStyle:{padding:0},items:this.relinkFields.concat([this.relink_target_id=new SYNO.ux.ComboBox({name:"target_id",indent:this.getFieldIndent(),allowBlank:!1,fieldLabel:_T("backup","backup_dest_directory"),width:270,forceSelection:!0,owner:this.owner,store:new Ext.data.ArrayStore({fields:["display","value"]}),clickValidator:this.relinkValidator,displayField:"display",valueField:"value",triggerAction:"all",mode:"local",onTriggerClick:function(){this.readOnly||this.disabled||(this.scope.relinkNeedReloadTarget()?this.scope.updateRelinkTarget():SYNO.ux.ComboBox.prototype.onTriggerClick.call(this,arguments))},scope:this,tpl:'<tpl for="."><div ext:qtip="{[SYNO.SDS.Backup.Util.htmlEncodeTip(values.value)]}" class="x-combo-list-item">{display:htmlEncode}</div></tpl>'})])}];return e},getExportFields:function(){return[{xtype:"syno_radio",name:"creating_action",boxLabel:SYNO.SDS.Backup.String("app","wizard_export_option"),inputValue:"export",listeners:{check:function(e,t){t&&(this.action="export",this.updateFieldView(["export_fields"],["create_fields","relink_fields"]))},scope:this}},{xtype:"syno_fieldset",name:"export_fields",defaults:{labelWidth:208},bwrapStyle:{padding:0},collapsible:!1,items:[new SYNO.SDS.Backup.ComboBox({name:"export_share",fieldLabel:_T("tree","leaf_sharefolder"),allowBlank:!1,indent:1,width:270,forceSelection:!0,owner:this.owner,store:this.getExportShareStore(),displayField:"share",valueField:"share",listeners:{select:function(e,t,a){this.updateExportTarget(t.get("share"))},beforeselect:function(e,t,a){if(0!==t.get("status"))return!1},scope:this},tpl:SYNO.SDS.Backup.getShareListTpl("share")}),{xtype:"syno_textfield",name:"export_dir",indent:1,fieldLabel:_T("backup","backup_dest_directory"),width:270,maxLength:32,allowBlank:!1,vtype:"backup_target"}]}]},getFieldIndent:function(){return"import"===this.action?0:1},onAfterLayout:function(){var e=Ext.getCmp(this.relinkComboId);e&&e.getEl()&&SYNO.ux.AddTip(e.getEl(),SYNO.SDS.Backup.String("app","non_owner_relink_tip"))},updateFieldView:function(e,t){Ext.isArray(e)&&Ext.isArray(t)&&(this.get(0).items.each((function(a){0<=t.indexOf(a.name)&&(a.hide(),a.disable(),a.items.each((function(e){e.disable()}))),0<=e.indexOf(a.name)&&(a.show(),a.enable(),a.items.each((function(e){e.enable()})),Ext.isFunction(this.onFieldsetSelected)&&this.onFieldsetSelected(a))}),this),"import"===this.action&&this.relink_target_id.disable(),this.doLayout())},launchPasswordWindow:function(e,t){var a=Ext.apply(this.owner.getParams(),this.getParams());Ext.apply(a,{is_relink:e,uni_key:this.uni_key}),new SYNO.SDS.Backup.Client.Common.Password.Window({owner:this.owner,verify_params:a,setter:Ext.createDelegate(this.setSession,this),callback:Ext.createDelegate(t,this)}).open()},setSession:function(e){this.owner.sess_id=e.sess_id,this.owner.sess_key=e.sess_key,"relink"!==this.action&&this.owner.appWin.setCurTaskSession(e)},updateTarget:function(){var e=Ext.apply(this.owner.getParams(),this.getParams());delete e.isDestEncShare,delete e.clientEncrypt,this.owner.setStatusBusy(),this.sendWebAPI({api:"SYNO.Backup.Target",version:1,method:"get_candidate_dir",encryption:SYNO.SDS.Backup.Util.getEncryption(["pwd","secret","remote_refresh_token","remote_access_token"],e),params:e,scope:this,callback:function(e,t,a){this.owner.clearStatusBusy(),e?this.getForm().findField("target_id").setValue(t.candidate_dir):this.owner.getMsgBox().alert(_T("leaf","backup"),SYNO.SDS.Backup.GetErrorString(t.code))}})},relinkNeedReloadTarget:function(){var e=this.getParams();return delete e.target_id,this.lastRelinkTargetParams!==Ext.encode(e)},updateRelinkTarget:function(){var e=this.getParams();delete e.target_id,delete e.isDestEncShare,delete e.clientEncrypt,("synocloud_swift"===this.transfer_type||e.container||e.bucket||e.share||e.volume||e.module)&&(e.backup_data_type=this.owner.backupType,this.owner.setStatusBusy(),this.sendWebAPI({api:"SYNO.Backup.Target",method:"list",version:1,params:e,encryption:["pwd","secret","remote_refresh_token","remote_access_token"],callback:function(t,a,i){if(this.owner.clearStatusBusy(),!t)return this.owner.getMsgBox().alert(_T("leaf","backup"),SYNO.SDS.Backup.GetErrorString(a)),void delete this.lastRelinkTargetParams;this.lastRelinkTargetParams=Ext.encode(e),this.loadRelinkTargetData(a)},scope:this}))},loadRelinkTargetData:function(e){return SYNO.Backup.Util.HBKDisplayComboboxLoadData(this.relink_target_id,e.target_list,"target_id")},getExportShareStore:function(){return this.exportShareStore||(this.exportShareStore=new Ext.data.ArrayStore({proxy:new SYNO.API.Proxy({api:"SYNO.Backup.Storage.Share.Local",method:"list",version:1}),root:"share_list",autoDestroy:!0,autoLoad:!1,fields:["share","status","conflict_repo","volume","is_data_enc"],listeners:{load:function(e,t,a){0===t.length?this.owner.getMsgBox().alert(_T("leaf","backup"),SYNO.SDS.Backup.String("app","no_shared_folder_available")):Ext.each(t,(function(e,a){if(0===e.get("status"))return!1;a===t.length-1&&this.owner.getMsgBox().alert(_T("leaf","backup"),SYNO.SDS.Backup.String("app","no_shared_folder_available"))}),this)},scope:this}})),this.exportShareStore},updateExportTarget:function(e){this.owner.setStatusBusy(),this.sendWebAPI({api:"SYNO.Backup.Target",version:1,method:"get_candidate_dir",params:{target_type:"image",transfer_type:"image_local",share:e},scope:this,callback:function(e,t,a){this.owner.clearStatusBusy(),this.getForm().findField("export_dir").setValue(t.candidate_dir)}})},checkExportDestDataEnc:function(){var e=this.getForm(),t=this.getExportShareStore(),a=t.getAt(t.find("share",e.findField("export_share").getValue()));return!!a&&a.get("is_data_enc")},needEnableClientEncrypt:function(e){return this.helpEnableClientEncrypt&&!e.isDestEncShare},getParams:function(){var e={},t=this.getForm().getFieldValues();return e.action=this.action,e.target_type=this.target_type,e.transfer_type=this.transfer_type,"import"===this.action?e.target_id=this.relink_target_id.value:e.target_id=t.target_id,"relink"===this.action||"import"===this.action?this.uni_key&&(e.uni_key=this.uni_key):"export"==this.action&&(e.share=t.export_share,e.target_id=t.export_dir,e.export_transfer_type=this.transfer_type,e.isDestEncShare=this.checkExportDestDataEnc()),"relink"===this.action||"import"===this.action||Ext.isEmpty(e.target_id)||(e.target_id+=".hbk"),e.clientEncrypt=this.needEnableClientEncrypt(e),e},onDestCheck:function(e,t,a){this.owner.clearStatusBusy();var i=t.result[0],n=t.result[1],s=t.result[2];if(e)if(i.success)if(this.owner.is_usb_share=i.data.is_usb_share,this.owner.support_compression=i.data.support_compression,this.owner.support_app_share=i.data.support_app_share,this.owner.support_detect_time_limit=i.data.support_detect_time_limit,this.owner.support_error_detect=i.data.support_error_detect,this.owner.support_version_file_log=i.data.support_version_file_log,Ext.isEmpty(i.data.account_meta)?this.owner.accountMeta=SYNO.SDS.Backup.Client.Common.Utils.createAccountMeta():this.owner.accountMeta.setData(i.data.account_meta),"create"===this.action||"export"===this.action)!n.success&&SYNO.SDS.Backup.ERR_TARGET_BROKEN===n.error.code||!s.success&&SYNO.SDS.Backup.ERR_TARGET_BROKEN===s.error.code?this.owner.getMsgBox().alert(_T("leaf","backup"),SYNO.SDS.Backup.String("error","share_exist")):n.success||s.success?this.owner.getMsgBox().alert(_T("leaf","backup"),SYNO.SDS.Backup.GetErrorString(SYNO.SDS.Backup.ERR_TARGET_EXIST)):SYNO.SDS.Backup.ERR_TARGET_NOT_EXIST===n.error.code&&SYNO.SDS.Backup.ERR_TARGET_NOT_EXIST===s.error.code?this.goToNextStep(this.nextId):this.owner.getMsgBox().alert(_T("leaf","backup"),SYNO.SDS.Backup.GetErrorString(n.error.code));else if("relink"===this.action||"import"===this.action){if(!n.success){if(SYNO.SDS.Backup.ERR_TARGET_BROKEN===n.error.code){var o=SYNO.SDS.Backup.String("error","target_unrelinkable")+"<br />"+SYNO.SDS.Backup.String("error","target_not_support");this.owner.getMsgBox().alert(_T("leaf","backup"),o)}else this.owner.getMsgBox().alert(_T("leaf","backup"),SYNO.SDS.Backup.GetErrorStringEx(n.error));return}if(this.owner.data_enc=n.data.data_enc,this.owner.data_comp=n.data.data_comp,void 0!==n.data.check_backup_data_type&&n.data.check_backup_data_type!==this.owner.backupType)return void this.owner.getMsgBox().alert(_T("leaf","backup"),SYNO.SDS.Backup.String("error","target_not_support"));if(n.data.relinkable)"relink"===this.action?(n.data.task_config&&n.data.task_config.storage_class&&(this.owner.storage_class=n.data.task_config.storage_class),this.owner.getMsgBox().confirm(_T("tree","leaf_backup"),SYNO.SDS.Backup.String("app","relink_confirm"),(function(e){"yes"===e&&(this.uni_key=n.data.uni_key,n.data.data_enc?this.launchPasswordWindow(!0,(function(){this.goToNextStep(this.nextId)})):this.goToNextStep(this.nextId))}),this)):(this.uni_key=n.data.uni_key,n.data.data_enc?this.launchPasswordWindow(!1,(function(){this.goToNextStep(this.nextId)})):this.goToNextStep(this.nextId));else{var r=SYNO.SDS.Backup.String("error","target_unrelinkable");if(n.data.target_not_support)if("single"===n.data.format_type)r+="<br />"+SYNO.SDS.Backup.String("error","not_support_relink_single_version");else if("image"===n.data.format_type){r+="<br />"+String.format(SYNO.SDS.Backup.String("error","not_support_relink_image"),SYNO.SDS.Backup.String("local","repo_type_name_2"),SYNO.SDS.Backup.String("remote","repo_type_name_2"))}else"cloud_image"===n.data.format_type?r+="<br />"+SYNO.SDS.Backup.String("error","not_support_relink_cloud"):r+="<br />"+SYNO.SDS.Backup.String("error","target_not_support");else r+="<br />"+SYNO.SDS.Backup.GetErrorString(n.data.relink_error);this.owner.getMsgBox().alert(_T("leaf","backup"),r)}}else this.owner.getMsgBox().alert(_T("leaf","backup"),_T("error","error_error_system"));else this.owner.getMsgBox().alert(_T("leaf","backup"),SYNO.SDS.Backup.GetErrorString(i.error.code));else this.owner.getMsgBox().alert(_T("leaf","backup"),SYNO.SDS.Backup.GetErrorString(n.error.code))},goToNextStep:function(){this.owner.loadAppParams(),this.owner.goNext(this.nextId)},checkDest:function(e){"export"===e.action&&("image_remote"===e.transfer_type?e.transfer_type="image_local":e.transfer_type="local");var t=Ext.apply({},e),a=Ext.apply({},e);a.target_id=a.target_id.slice(0,a.target_id.lastIndexOf(".hbk")),delete e.isDestEncShare,delete e.clientEncrypt;var i=["relinkable","task_config"];"relink"!==this.action&&"import"!==this.action||"cloud_image"!==this.target_type||i.push("check_backup_data_type"),this.owner.setStatusBusy(),this.sendWebAPI({compound:{stopwhenerror:!1,mode:"parallel",params:[{api:"SYNO.Backup.Repository",version:1,method:"get",encryption:SYNO.SDS.Backup.Util.getEncryption(["pwd","secret","remote_refresh_token","remote_access_token"],e),params:Ext.apply(t,{additional:["is_usb_share","support_compression","support_app_share","support_error_detect","support_detect_time_limit","account_meta","support_version_file_log"]})},{api:"SYNO.Backup.Target",version:1,method:"get",encryption:SYNO.SDS.Backup.Util.getEncryption(["pwd","secret","remote_refresh_token","remote_access_token"],e),params:Ext.apply(e,{additional:i})},{api:"SYNO.Backup.Target",version:1,method:"get",encryption:SYNO.SDS.Backup.Util.getEncryption(["pwd","secret","remote_refresh_token","remote_access_token"],a),params:a}]},timeout:24e4,scope:this,callback:this.onDestCheck})},getNext:function(){if(!this.getForm().isValid())return!1;var e=Ext.apply(this.owner.getParams(),this.getParams());const[,,t]=this.itemId.split(":");if("multi_ver_lun_dest_setting"===t)if("relink"===this.action){const e=SYNO.SDS.Backup.Util.getDataTaskSettingOptionsForLunMultiVerBackup();this.nextId=e[`${this.target_type}:${this.transfer_type}`]}else this.nextId="multi_ver_lun_source";return!e.isDestEncShare||"create"!==this.action&&"export"!==this.action?this.checkDest(e):this.owner.getMsgBox().confirm("",SYNO.SDS.Backup.String("app","suggest_client_encrypt_than_enc_folder"),(function(t){"yes"===t?this.checkDest(e):this.helpEnableClientEncrypt=!0}),this),!1}}),Ext.define("SYNO.SDS.Backup.Addon.Util.Image.S3.Repository.CreateStep",{extend:"SYNO.Backup.Addon.base.Destination.SettingPanel",addon_id:null,constructor:function(e){return Ext.copyTo(this,e,"owner,action"),this.uni_key=null,this.createFields=this.getAuthFields(this.getLayoutPrefix("create")),this.relinkFields=this.getAuthFields(this.getLayoutPrefix("relink")),this.callParent(arguments)},getAuthFields:function(e){var t=[{xtype:"syno_textfield",name:e+"key",width:270,indent:this.getFieldIndent(),allowBlank:!1,fieldLabel:_T("backup","s3_access_key")},{xtype:"syno_textfield",name:e+"secret",width:270,indent:this.getFieldIndent(),allowBlank:!1,inputType:"password",fieldLabel:_T("backup","s3_secret_key")},{xtype:"syno_combobox",name:e+"bucket",width:270,indent:this.getFieldIndent(),fieldLabel:SYNO.SDS.Backup.String("aws_s3","bucket_name"),store:this.getBucketStore(),displayField:"bucket",allowBlank:!1,valueField:"bucket",scope:this,onTriggerClick:function(){this.readOnly||this.disabled||this.scope.shareValidator(this)&&(this.scope.needReloadBucket()?this.scope.loadBucketStore():SYNO.ux.ComboBox.prototype.onTriggerClick.call(this,arguments))},listeners:{select:function(e,t,a){if("create"===this.action){if(0===a)return void this.createBucket();this.updateTarget()}},beforeselect:function(e,t,a){if(t.get("status")>0)return!1},scope:this},tpl:'<tpl for="."><div ext:qtip="{[SYNO.SDS.Backup.Util.htmlEncodeTip(values.status === 1 ? String.format(_T("backup", "repo_already_exist") + " [" + values.conflict_repo + "]") : values.bucket)]}" class="x-combo-list-item {[values.status === 1 ? "syno-backup-disabled-list-item" : "syno-backup-enabled-list-item"]}">{bucket:htmlEncode}</div></tpl>'}];return t},getLayoutPrefix:function(e){return"create"===e?"create_":"relink_"},createBucket:function(){var e=this.getParams();e.owner=this.owner;var t=new SYNO.SDS.Backup.Addon.Util.S3.Repository.CreateBucket(e);this.mon(t,"close",(function(){var e=t.items.get(0).getForm().findField("bucket").getValue();this.getForm().findField("create_bucket").clearValue(),this.loadBucketStore(e)}),this),t.open()},getBucketStore:function(){return this.bucketStore||(this.bucketStore=new Ext.data.ArrayStore({fields:["bucket","status","conflict_repo"]})),this.bucketStore},getLoadBucketParams:function(){var e=this.getParams();return delete e.bucket,e},needReloadBucket:function(){var e=this.getLoadBucketParams();return this.lastQuery!==Ext.encode(e)},loadBucketStore:function(e){var t=this.getLoadBucketParams();this.owner.setStatusBusy(),this.sendWebAPI({api:"SYNO.Backup.Storage.S3.Bucket",version:1,method:"list",encryption:["secret"],params:t,scope:this,callback:function(a,i,n){if(this.owner.clearStatusBusy(),a){var s;if(this.lastQuery=Ext.encode(t),this.getBucketStore().loadData(i.bucket_list),"create"===this.action){s=this.getForm().findField("create_bucket");var o=new new Ext.data.Record.create(["bucket","status","conflict_repo"])({bucket:_T("backup","s3_create_bucket"),status:0,conflict_repo:""});this.getBucketStore().insert(0,o)}else"relink"!==this.action&&"import"!==this.action||(s=this.getForm().findField("relink_bucket"));s?e&&-1!==this.getBucketStore().findExact("bucket",e)&&0===this.getBucketStore().getAt(this.getBucketStore().findExact("bucket",e)).get("status")?(s.setValue(e),s.collapse(),this.updateTarget()):(s.el.focus(),s.expand(),s.restrictHeight()):SYNO.Debug("empty combo")}else this.owner.reportError(i)}})},shareValidator:function(e){var t=this.getLayoutPrefix(this.action),a=this.getForm(),i=function(e){return a.findField(t+e).isValid()};return!(!i("key")||!i("secret"))||(e.markInvalid(SYNO.SDS.Backup.String("error","loss_auth_info")),!1)},relinkValidator:function(e,t){var a="create"===t.action?"create_":"relink_",i=function(t){return e.ownerCt.find("name",a+t)[0].isValid()};return!!(i("key")&&i("secret")&&i("bucket"))||(e.markInvalid(SYNO.SDS.Backup.String("error","loss_auth_info")),!1)},getParams:function(){var e=this.callParent(),t=this.getForm().getFieldValues();return"create"===this.action?(e.key=t.create_key,e.secret=t.create_secret,e.bucket=t.create_bucket):"relink"!==this.action&&"import"!==this.action||(e.key=t.relink_key,e.secret=t.relink_secret,e.bucket=t.relink_bucket),e.server=this.transfer_type,e.transfer_type=this.transfer_type,e.support_region=!1,e.request_style="virtual_host_style",e}}),Ext.define("SYNO.Backup.Addon.Legacy.base.Task.SettingPanel",{extend:"SYNO.SDS.Backup.FormPanel",schedSetDefault:!1,action:"create",pushSimpleSched:!0,constructor:function(e){return e.owner.configWizard&&this.pushSimpleSched&&this.configCreateModeSchedule(e.items[0].items),this.choocedType="",this.callParent([e])},activate:function(){this.schedSetDefault||(this.setSchedDefault(),this.schedSetDefault=!0),this.setDefaultTaskName();var e=this.owner.getParams();if(this.target_type=e.target_type,this.transfer_type=e.transfer_type,this.action=e.action,"export"===e.action||"cloud_image"!==e.target_type&&"image"!==e.target_type)this.nextId="data_summary";else{const e=e=>{switch(e){case"entire_dsm":return"dsm_rotate";case"multi_ver_lun":return"multi_ver_lun_rotate";default:return"data_rotate"}};this.nextId=e(this.owner.backupType)}Ext.each(this.get(0).items.items,(function(e,t,a){"schedule_fieldset"===e.name&&("export"===this.action?(e.disable(),e.hide()):(e.enable(),e.show()))}),this),this.addToolTips(),this.doLayout()},addToolTips:function(){if(!this.isAddTips){var e=this.getForm().findField("backup_meta"),t=this.getForm().findField("backup_thumb"),a=this.getForm().findField("enable_notify"),i=this.getForm().findField("enable_version_file_log"),n=this.getForm().findField("bkp_config"),s=this.getForm().findField("incrbkp_enable"),o=this.getForm().findField("storage_class"),r=this.getForm().findField("dest_auto_unmount"),l=this.getForm().findField("incheck_schedule_enable");e&&e.getEl()&&SYNO.ux.AddTip(e.getEl(),_T("backup","backup_metadata_info")),t&&t.getEl()&&SYNO.ux.AddTip(t.getEl(),_T("backup","backup_synoea_info")),a&&a.getEl()&&SYNO.ux.AddTip(a.getEl(),SYNO.SDS.Backup.String("app","enable_notify_info")),i&&i.getEl()&&(i.disabled?SYNO.ux.AddTip(i.getEl(),SYNO.SDS.Backup.String("error","server_version_old")):SYNO.ux.AddTip(i.getEl(),SYNO.SDS.Backup.String("app","enable_version_file_log_tip"))),n&&n.getEl()&&SYNO.ux.AddTip(n.getEl(),SYNO.SDS.Backup.String("app","bkp_config_info")),s&&s.getEl()&&SYNO.ux.AddTip(s.getEl(),_T("backup","incrbkp_desc")),o&&o.getEl()&&SYNO.ux.AddTip(o.getEl(),SYNO.SDS.Backup.String("aws_s3","storage_class_desc")),r&&r.getEl()&&SYNO.ux.AddTip(r.getEl(),_T("backup","support_auto_unmount_dest_tip")),l&&l.getEl()&&SYNO.SDS.Utils.AddTip(l.getEl(),SYNO.SDS.Backup.String("app","incheck_schedule_tip")),this.isAddTips=!0}},setDefaultTaskName:function(){if("import"!==this.action){var e=this.owner.getRepoInfo(),t=SYNO.Backup.Addon.Util.getInfoByTargetAndTransfer(e.target_type,e.transfer_type);if(""===this.getForm().getValues().task_name||this.choosedType!==t.id){this.choosedType=t.id;var a=SYNO.SDS.Backup.String(t.stringSection,"task_name_prefix");""===a?a="My Backup":Ext.isEmpty(e.remote_url)||"aws_s3"!==e.transfer_type||(a="S3 Backup");var i=this.owner.createTaskDefaultName(a);"synocloud_swift"===e.transfer_type&&(i=a),this.getForm().setValues({task_name:i})}}},configCreateModeSchedule:function(e){e.push(this.simpleSchedule=new SYNO.SDS.Backup.SimpleScheduleComponent({canUnckeckSchedule:!0,owner:this}))},setSchedDefault:function(){var e={schedule_type:"basic",basic_weekday:"0,1,2,3,4,5,6",hour:3,minute:0};this.getForm().loadRecord({data:e})},getScheduleParams:function(){return this.simpleSchedule?this.simpleSchedule.getData():{}},getNext:function(){if(!this.getForm().isValid()){var e=this.getForm().findField("enable_data_encrypt");if(!e||!e.getValue())return!1;var t=this.getForm().findField("encrypt_password"),a=this.getForm().findField("encrypt_password_confirm");return t.isValid()&&a.isValid()||this.scrollTo(e.getEl()),!1}var i=this.getParams();if(!this.owner.isTaskNameValid(i.name))return this.owner.getMsgBox().alert(_T("tree","leaf_backup"),_T("localbkp","localbkp_bkpset_exist")),!1;var n,s,o,r,l=this.getForm().findField("enable_data_encrypt"),c=l&&!0===l.getValue(),d=SYNO.Backup.Util.IsImage(this.owner.getParams().target_type)?"source_repo_image":"source_repo_legacy",u=this.owner.getStep(d).getWarnEncList(),p=this.owner.getStep(d).getWarnEncVolumeList();if(!0===c)return r="task_encrypt_warning","relink"!==(n=this).action&&"import"!==n.action||(r="relink_encrypt_warning"),n.owner.getMsgBox().confirm(_T("leaf","backup"),(s=SYNO.SDS.Backup.String("app",r),4===(o=s.split("<br/>")).length?String.format("{0}<br/>{1}<br/><span class='red-status'>{2}</span><br/>{3}",o[0],o[1],o[2],o[3]):2==o.length?String.format("<span class='red-status'>{0}</span><br/>{1}",o[0],o[1]):void 0),(function(e){"yes"===e&&n.owner.goNext(n.nextId)}),n),!1;if((0<u.length||0<p.length)&&("create"===this.action||"export"===this.action)){if(!this.owner.getParams().isDestEncShare){var h,_="";return 0<u.length&&0<p.length?(_=String.format("warn_bkp_enc_{0}volume_{1}share_no_client_enc",1<p.length?"plural_":"",1<u.length?"plural_":""),h=SYNO.SDS.Backup.String("app",_),h=String.format(h,"<b>"+p.join(", ")+"</b>","<b>"+u.join(", ")+"</b>")):0<u.length?(_=String.format("warn_bkp_enc_{0}share_no_client_enc",1<u.length?"plural_":""),h=String.format(SYNO.SDS.Backup.String("app",_),"<b>"+u.join(", ")+"</b>")):(_=String.format("warn_bkp_enc_{0}volume_no_client_enc",1<p.length?"plural_":""),h=String.format(SYNO.SDS.Backup.String("app",_),"<b>"+p.join(", ")+"</b>")),this.owner.getMsgBox().confirm(_T("leaf","backup"),h,(function(e){"yes"===e&&this.owner.goNext(this.nextId)}),this),!1}return this.nextId}return this.nextId},getParams:function(){var e={},t=this.getForm().getFieldValues(),a=this.getForm().findField("bandwidthcheck"),i=this.getForm().findField("part_size"),n=this.getForm().findField("enable_data_compress");return t.task_name&&(e.name=t.task_name,delete t.task_name),this.owner.configWizard&&"export"!==this.action&&(e.schedule=this.getScheduleParams()),delete t.schedule_enable,delete t.basic_weekday,t.delete_on_target=!t.incrbkp_enable,delete t.incrbkp_enable,delete t.incrbkp_desc,a&&!0===a.getValue()&&(t.bw_limit=this.getForm().findField("bw_limit").getValue()),i&&(t.part_size=this.getForm().findField("part_size").getValue()),n&&(t.enable_data_compress=n.getValue()),e.backup_params=t,e},summary:function(e){var t=this.getParams();if(t.schedule){var a={schedule_enable:t.schedule.schedule_enable,schedule:t.schedule},i=SYNO.SDS.Backup.Client.Common.Utils.getScheduleStr(a);e.append(SYNO.SDS.Backup.String("app","backup_schedule_title"),Ext.util.Format.htmlEncode(i))}}}),Ext.define("SYNO.Backup.Addon.base.Task.SettingPanel",{extend:"SYNO.Backup.Addon.Legacy.base.Task.SettingPanel",pushSimpleSched:!1,isEntireDSMOrLUNMultiVerTask:!1,constructor:function(e){this.containerLabelWidth=300;var t=[{xtype:"syno_fieldset",itemId:"fieldset",collapsible:!1,bwrapStyle:{padding:"0px"},items:this.configImageFields(e)}],a=Ext.apply({disableAutoUnmount:!1,hideAutoUnmount:!1,disableDataComp:!1,hideDataComp:!1,cls:"syno-backup-task-setting",items:t},e);return this.lastAnchor="",this.callParent([a])},initEvents:function(){this.callParent(arguments),this.mon(this,"activate",this.addTips,this,{single:!0})},getFieldset:function(){return this.getComponent("fieldset")},getSettingConfig:function(){return[]},configImageFields:function(e){var t=[];t=(t=t.concat([{xtype:"syno_fieldset",labelWidth:150,style:"margin: 0;",bwrapStyle:"padding: 0;",items:[{xtype:"syno_textfield",name:"task_name",value:e.defaultName,fieldLabel:_T("localbkp","localbkp_bkpset_name"),labelWidth:246,width:270,allowBlank:!1,maxLength:32,vtype:"taskname"}]},{xtype:"syno_checkbox",name:"enable_notify",boxLabel:SYNO.SDS.Backup.String("app","enable_notify_option"),checked:!0},{xtype:"syno_checkbox",name:"enable_version_file_log",boxLabel:SYNO.SDS.Backup.String("app","enable_version_file_log"),hidden:e.isEntireDSMOrLUNMultiVerTask,checked:!1},{xtype:"syno_checkbox",name:"bkp_config",boxLabel:SYNO.SDS.Backup.String("app","backup_config_option_mandatory"),checked:!0,disabled:!0,hidden:!0},{xtype:"syno_checkbox",name:"dest_auto_unmount",boxLabel:SYNO.SDS.Backup.String("app","support_auto_unmount_dest"),checked:!1,disabled:e.disableAutoUnmount,hidden:e.hideAutoUnmount},{xtype:"syno_checkbox",name:"enable_data_compress",boxLabel:SYNO.SDS.Backup.String("app","enable_data_compress"),checked:!0,disabled:e.disableDataComp,hidden:e.hideDataComp}])).concat(this.getSettingConfig(e)),e.owner.configWizard&&(this.configCreateModeSchedule(t),t.push(this.incheckSchedule=new SYNO.SDS.Backup.SimpleIntegrityCheckPanel({owner:this,targetType:e.owner.getParams().target_type,containerLabelWidth:this.containerLabelWidth})));var a=Ext.id(),i={};return i=e.hideDataEnc?{enable:[a]}:{enable:["encrypt_password","encrypt_password_confirm"]},t=t.concat([{xtype:"syno_checkbox",name:"enable_data_encrypt",itemId:"enable_data_encrypt",boxLabel:SYNO.SDS.Backup.String("app","enable_data_encrypt"),checked:!1,disabled:e.hideDataEnc,listeners:{check:function(){this.updateCheckboxFieldView(["encrypt_password","encrypt_password_confirm"],this.getForm().findField("enable_data_encrypt").getValue(),!0)},scope:this},groupFields:i},{xtype:"syno_button",id:a,text:SYNO.SDS.Backup.String("app","download_encryption_key"),handler:function(e){var t=this.findAppWindow().getCurrentTask();new SYNO.SDS.Backup.PrivateKeyDownloadWindow({owner:this.owner,appWin:this.owner,task_id:t.task_id,file_name:t.name}).open()},hidden:!e.hideDataEnc,scope:this,indent:1},{xtype:"syno_textfield",name:"encrypt_password",fieldLabel:SYNO.SDS.Backup.String("app","task_password_input"),labelWidth:246,width:270,hidden:!0,disabled:!0,allowBlank:!1,minLength:8,maxLength:64,indent:1,inputType:"password"},{xtype:"syno_textfield",name:"encrypt_password_confirm",fieldLabel:SYNO.SDS.Backup.String("app","task_password_confirm_input"),labelWidth:246,width:270,hidden:!0,disabled:!0,allowBlank:!1,minLength:8,maxLength:64,indent:1,inputType:"password",validator:function(e){return e===this.ownerCt.ownerCt.getForm().findField("encrypt_password").getValue()||SYNO.SDS.Backup.String("error","task_password_confirm_fail")}},{xtype:"syno_displayfield",htmlEncode:!1,hidden:e.isEntireDSMOrLUNMultiVerTask||!SYNO.Backup.FeatureSupport.Utils.SupportSystemBackup(),value:SYNO.SDS.Backup.NoteStyleString("app","task_setting_config_backup")}])},updateCheckboxFieldView:function(e,t,a){if(Ext.isArray(e)){var i=!1;if(a)if(this.owner instanceof SYNO.SDS.Backup.TaskCreateWizard){var n=this.owner.getParams();i="relink"===n.action||"import"===n.action}else i=!0;Ext.each(e,(function(e){t&&!i?this.getForm().findField(e).show():this.getForm().findField(e).hide()}),this),this.doLayout()}},activate:function(){var e=this.owner.getParams();this.lastAnchor!==this.owner.getWizardAnchor()&&("relink"===e.action||"import"===e.action?(this.getForm().findField("encrypt_password").setValue(""),this.getForm().findField("encrypt_password_confirm").setValue(""),this.getForm().findField("encrypt_password").setDisabled(!0),this.getForm().findField("encrypt_password").setVisible(!1),this.getForm().findField("encrypt_password_confirm").setDisabled(!0),this.getForm().findField("encrypt_password_confirm").setVisible(!1),this.getForm().findField("enable_data_encrypt").setValue(this.owner.data_enc),this.getForm().findField("enable_data_encrypt").setDisabled(!0),this.getForm().findField("enable_data_compress").setValue(this.owner.data_comp),this.getForm().findField("enable_data_compress").setDisabled(!0),this.getForm().findField("enable_data_compress").setVisible(!this.hideDataComp),this.getForm().findField("enable_version_file_log").setDisabled(!this.owner.support_version_file_log)):(this.getForm().findField("encrypt_password").setValue(""),this.getForm().findField("encrypt_password_confirm").setValue(""),this.getForm().findField("enable_data_encrypt").setValue(e.clientEncrypt),this.getForm().findField("enable_data_encrypt").setDisabled(!1),this.getForm().findField("enable_data_compress").setValue(!0),this.getForm().findField("enable_data_compress").setDisabled(this.disableDataComp),this.getForm().findField("enable_data_compress").setVisible(!this.hideDataComp),this.getForm().findField("enable_version_file_log").setDisabled(!this.owner.support_version_file_log)),this.lastAnchor=this.owner.getWizardAnchor()),Ext.isEmpty(this.incheckSchedule)||("export"!==e.action&&this.owner.support_error_detect?this.incheckSchedule.show():this.incheckSchedule.hide()),this.callParent(arguments)},addTips:function(){var e=this.getForm().findField("enable_version_file_log");e&&e.getEl()&&(this.isSuspended?SYNO.ux.AddTip(e.getEl(),SYNO.SDS.Backup.String("app","suspend_cannot_modify_setting_tip")):e.disabled?SYNO.ux.AddTip(e.getEl(),SYNO.SDS.Backup.String("error","server_version_old")):SYNO.ux.AddTip(e.getEl(),SYNO.SDS.Backup.String("app","enable_version_file_log_tip")))},getParams:function(){var e=this.callParent();return Ext.isEmpty(this.incheckSchedule)||(Ext.isEmpty(e.backup_params)||(delete e.backup_params.incheck_schedule_enable,delete e.backup_params.incheck_frequency,delete e.backup_params.incheck_data_enable),this.incheckSchedule.hidden||(e.incheck_schedule=this.incheckSchedule.getData())),e},summaryFirst:function(e){e.append(_T("localbkp","localbkp_bkpset_name"),this.getForm().findField("task_name").getValue())}}),Ext.define("SYNO.Backup.Addon.Cloud.base.Task.SettingPanel",{extend:"SYNO.Backup.Addon.base.Task.SettingPanel",incheckSchedSetDefault:!1,constructor:function(){this.callParent(arguments)},activate:function(){this.schedSetDefault||this.checkIsBusiness(),this.callParent(arguments)},checkIsBusiness:function(){5<Number(_D("maxdisks"))||!1===_S("is_admin")?this.setSchedRandom(!0):"yes"!==_D("support_btrfs")?this.setSchedRandom(!1):(this.owner.setStatusBusy(),this.sendWebAPI({api:"SYNO.Core.Package",version:2,method:"list",scope:this,callback:function(e,t,a){if(this.owner.clearStatusBusy(),e){var i=!0;Ext.each(t.packages,(function(e){"SynologyMoments"!==e.id&&"PhotoStation"!==e.id&&"AudioStation"!==e.id&&"VideoStation"!==e.id&&"DownloadStation"!==e.id||(i=!1)}),this),this.setSchedRandom(i)}else this.setSchedRandom(!1)}}))},setSchedRandom:function(e){if(e){var t=Math.floor(100*Math.random());this.backup_hour=30>t?19:50>t?20:70>t?21:90>t?22:23}else{var a=Math.floor(9*Math.random());this.backup_hour=9+a}var i=Math.floor(6*Math.random());0===i?0===Math.floor(10*Math.random())?this.backup_minute=0:this.backup_minute=40:this.backup_minute=10*i,this.setIncheckSchedDefault(),this.setSchedDefault(),this.schedSetDefault=!0},setIncheckSchedDefault:function(){var e={};0===Math.floor(2*Math.random())?e.incheck_basic_weekday=0:e.incheck_basic_weekday=6,e.incheck_weekday_hour=(this.backup_hour+2)%24,e.incheck_weekday_min=this.backup_minute,this.getForm().loadRecord({data:e})},setSchedDefault:function(){var e={schedule_type:"basic",basic_weekday:"0,1,2,3,4,5,6"};e.hour=this.backup_hour,e.minute=this.backup_minute,this.getForm().loadRecord({data:e})}}),Ext.define("SYNO.SDS.Backup.Addon.Util.Image.S3.Backup.ParamsPanel",{extend:"SYNO.Backup.Addon.Cloud.base.Task.SettingPanel",getSettingConfig:function(e){return this.partSizeStore=new Ext.data.SimpleStore({fields:["partsize","partsizeValue"]}),this.loadPartSizeStore(),[{xtype:"syno_checkbox",checked:!0,boxLabel:SYNO.SDS.Backup.String("app","enable_encrypted_transmission"),labelSeparator:"",name:"trans_encrypt"},{xtype:"syno_combobox",fieldLabel:_T("backup","s3_multipart_size"),name:"part_size",width:80,displayField:"partsize",valueField:"partsizeValue",value:512,store:this.partSizeStore}]},getParams:function(){var e=this.getForm(),t=function(t){return e.findField(t).getValue()},a=this.callParent(arguments);return a.backup_params.part_size=t("part_size"),a},activate:function(){var e=this.owner.getParams(),t=this.getForm(),a=function(e,t,a){e.findField(t).setDisabled(!a),e.findField(t).setVisible(a)};"export"===e.action?(a(t,"trans_encrypt",!1),a(t,"part_size",!1)):(a(t,"trans_encrypt",!0),a(t,"part_size",!0)),this.lastAnchor!==this.owner.getWizardAnchor()&&this.setDefaultSizeStore(),this.callParent(arguments)}}),Ext.define("SYNO.SDS.Backup.Addon.Util.Image.S3.Restore.DestStep",{extend:"SYNO.Backup.Addon.base.Restore.DestStep",addon_id:null,target_type:null,transfer_type:null,comboboxWidth:270,S3_BUCKET_LENGTH:63,constructor:function(e){var t=[];this.target_type="cloud",Ext.copyTo(this,e,"owner, transfer_type, addon_id"),this.configFields(t),this.callParent([Ext.apply({trackResetOnLoad:!0,items:[{xtype:"syno_fieldset",defaults:{labelWidth:300},items:t}]},e)])},configFields:function(e){e.push({xtype:"syno_textfield",fieldLabel:_T("backup","s3_access_key"),name:"accesskey",width:this.comboboxWidth,allowBlank:!1},{xtype:"syno_textfield",fieldLabel:_T("backup","s3_secret_key"),name:"secretkey",width:this.comboboxWidth,inputType:"password",allowBlank:!1},{xtype:"syno_combobox",name:"bktselect",width:this.comboboxWidth,fieldLabel:SYNO.SDS.Backup.String("aws_s3","bucket_name"),store:new Ext.data.ArrayStore({fields:["value"]}),forceSelection:!1,valueField:"value",displayField:"value",allowBlank:!1,triggerAction:"all",mode:"local",maxlength:this.S3_BUCKET_LENGTH,onTriggerClick:function(){this.readOnly||this.disabled||(this.scope.needReloadBuckets()?this.scope.loadBuckets():SYNO.ux.ComboBox.prototype.onTriggerClick.call(this,arguments))},listeners:{select:this.onSelectBucket,scope:this},scope:this,tpl:'<tpl for="."><div ext:qtip="{[SYNO.SDS.Backup.Util.htmlEncodeTip(values.value)]}" class="x-combo-list-item">{value:htmlEncode}</div></tpl>'},{xtype:"syno_combobox",fieldLabel:_T("backup","backup_dest_directory"),width:this.comboboxWidth,name:"target",forceSelection:!0,editable:!1,allowBlank:!1,store:new Ext.data.ArrayStore({fields:["display","value"]}),displayField:"display",valueField:"value",triggerAction:"all",mode:"local",onTriggerClick:function(){this.readOnly||this.disabled||(this.scope.needReloadTarget()?this.scope.loadTarget():SYNO.ux.ComboBox.prototype.onTriggerClick.call(this,arguments))},scope:this,tpl:'<tpl for="."><div ext:qtip="{[SYNO.SDS.Backup.Util.htmlEncodeTip(values.value)]}" class="x-combo-list-item">{display:htmlEncode}</div></tpl>'})},onSelectBucket:function(e){this.loadTarget(e.getValue())},activate:function(){},getNext:function(){if(!this.getForm().isValid())return!1;if(!this.getForm().isDirty())return this.nextId;var e=this.getParams();return e.additional=e.additional?e.additional:[],e.additional.push("check_backup_data_type"),this.owner.setStatusBusy(),this.sendWebAPI({api:"SYNO.Backup.Target",method:"get",version:1,params:e,encryption:["secret"],callback:this.onTargetGet,scope:this}),!1},onTargetGet:function(e,t,a){return e?(t.support_multi_version?(this.target_type="cloud_image",this.owner.setSingle(!1)):(this.target_type="cloud",this.owner.setSingle(!0)),"data"!==t.check_backup_data_type||"image"===t.format_type?(this.owner.getMsgBox().alert(_T("leaf","backup"),SYNO.SDS.Backup.String("error","target_not_support")),this.owner.clearStatusBusy(),!1):(this.owner.clearStatusBusy(),this.owner.data_enc=t.data_enc,this.owner.uni_key=t.uni_key,t.data_enc?this.launchPasswordWindow((function(){this.owner.goNext(this.nextId)})):this.owner.goNext(this.nextId),!1)):(this.owner.targetGetErrorHandle(t),this.owner.clearStatusBusy(),!1)},launchPasswordWindow:function(e){var t=this.getParams();Ext.apply(t,{uni_key:this.owner.uni_key}),new SYNO.SDS.Backup.Client.Common.Password.Window({owner:this.owner,verify_params:t,setter:Ext.createDelegate(this.setEncKey,this),callback:Ext.createDelegate(e,this)}).open()},setEncKey:function(e){this.owner.sess_id=e.sess_id,this.owner.sess_key=e.sess_key},getParams:function(){var e=this.getForm(),t=function(t){return e.findField(t).getValue()},a={key:t("accesskey"),secret:t("secretkey"),bucket:t("bktselect"),target_id:t("target"),target_type:this.target_type,addon_id:this.addon_id};return a.transfer_type=this.transfer_type,a.support_region=!1,a.request_style="virtual_host_style",a},summary:function(e){var t=this.getParams();e.append(_T("backup","restore_type"),SYNO.Backup.Addon.Util.getString(this.addon_id,"repo_type_name")),e.append(_T("netbackup","netbkp_slct_server"),SYNO.Backup.Addon.Util.getString(t.transfer_type,"name")),e.append(_T("backup","backup_restore_source"),t.bucket+" / "+t.target_id)},getListBucketRequest:function(){var e=this.getParams();return delete e.bucket,delete e.target_id,e},needReloadBuckets:function(){var e=this.getListBucketRequest();return this.lastQueryModule!==Ext.encode(e)},loadBuckets:function(){var e=this.getListBucketRequest();e.key&&e.secret&&(this.owner.setStatusBusy({text:_T("netbackup","s3_retrieve_bucket")}),this.sendWebAPI({api:"SYNO.Backup.Storage.S3.Bucket",version:1,method:"list",params:e,encryption:["secret"],scope:this,callback:function(t,a,i){if(this.owner.clearStatusBusy(),!t)return this.loadBucketsData(),this.owner.reportError(a),void delete this.lastQueryModule;this.lastQueryModule=Ext.encode(e),this.loadBucketsData(a)}}))},loadBucketsData:function(e){var t=this.getForm().findField("bktselect");return SYNO.SDS.Backup.Util.comboboxLoadData(t,e?e.bucket_list:[],0)},getLoadTargetParams:function(){var e=this.getParams();return delete e.target_id,e},needReloadTarget:function(){var e=this.getLoadTargetParams();return this.lastQueryTarget!==Ext.encode(e)},loadTarget:function(e){var t=this.getLoadTargetParams();t.key&&t.secret&&t.bucket&&this.lastQueryTarget!==Ext.encode(t)&&(this.lastQueryTarget=Ext.encode(t),t.backup_data_type="data",this.owner.setStatusBusy({text:_T("backup","search_restore_folder")}),this.owner.api.send({api:"SYNO.Backup.Target",method:"list",version:1,params:t,encryption:["secret"],callback:function(e,a,i){if(this.owner.clearStatusBusy(),!e)return this.owner.api.alert(a),this.loadTargetData({target_list:[]}),void delete this.lastQueryTarget;this.lastQueryTarget=Ext.encode(t),this.loadTargetData(a)},scope:this}))},loadTargetData:function(e){var t=this.getForm().findField("target");return SYNO.Backup.Util.HBKDisplayComboboxLoadData(t,e.target_list,"target_id")}}),Ext.ns("SYNO.SDS.Backup.Addon.Util.Image.OpenStack.Backup"),SYNO.SDS.Backup.Addon.Util.Image.OpenStack.ibm_softlayer_region_list=function(){return[["ams01","Amsterdam 1"],["che01","Chennai 1"],["dal05","Dallas 5"],["fra02","Frankfurt 2"],["hkg02","Hong Kong 2"],["par01","Paris 1"],["lon02","London 2"],["mel01","Melbourne 1"],["mil01","Milan 1"],["mon01","Montreal 1"],["mex01","Mexico 1"],["osl01","Oslo 1"],["sao01","Sao Paulo 1"],["seo01","Seoul 1"],["sng01","Singapore 1"],["syd01","Sydney 1"],["sjc01","San Jose 1"],["tor01","Toronto 1"],["tok02","Toyko 2"],["wdc","Washington 1"]]},SYNO.SDS.Backup.Addon.Util.Image.OpenStack.region_name_mapping=function(e){for(var t={ORD:"Chicago",DFW:"Dallas-Fort Worth",HKG:"Hong Kong",IAD:"Northern Virginia",SYD:"Sydney",LON:"London","region-b.geo-1":"US East","region-a.geo-1":"US West",ams01:"Amsterdam 1",che01:"Chennai 1",dal05:"Dallas 5",fra02:"Frankfurt 2",hkg02:"Hong Kong 2",par01:"Paris 1",lon02:"London 2",mel01:"Melbourne 1",mil01:"Milan 1",mon01:"Montreal 1",mex01:"Mexico 1",osl01:"Oslo 1",sao01:"Sao Paulo 1",seo01:"Seoul 1",sng01:"Singapore 1",syd01:"Sydney 1",sjc01:"San Jose 1",tor01:"Toronto 1",tok02:"Toyko 2",wdc:"Washington 1"},a=[],i=0;i<e.length;i++){var n=t[e[i][0]];void 0===n?a.push([e[i][0],e[i][0]]):a.push([e[i][0],n])}return a},Ext.define("SYNO.SDS.Backup.Addon.Util.Image.OpenStack.Backup.ParamsPanel",{extend:"SYNO.Backup.Addon.Cloud.base.Task.SettingPanel"}),Ext.define("SYNO.SDS.Backup.Addon.Util.Image.OpenStack.Repository.CreateBucket",{extend:"SYNO.SDS.ModalWindow",dsmStyle:"v5",constructor:function(e){this.remote_url=e.remote_url,this.region=e.region,this.s3key=e.s3key,this.s3secret=e.s3secret,this.tenant_id=e.tenant_id,this.tenant_name=e.tenant_name,this.domain_id=e.domain_id,this.domain_name=e.domain_name,this.auth_version=e.auth_version,this.transfer_type=e.transfer_type;var t=[{xtype:"syno_textfield",name:"bucket",allowBlank:!1,fieldLabel:SYNO.SDS.Backup.String("openstack","container"),validator:function(e){return!e.match(/[//]/)||SYNO.SDS.Backup.String("openstack","container_name_letter_limit")},owner:this}],a=Ext.apply({title:SYNO.SDS.Backup.String("openstack","create_container"),width:450,height:200,minWidth:450,minHeight:200,layout:"fit",items:[{xtype:"syno_formpanel",trackResetOnLoad:!0,itemId:"form_panel",items:t}],buttons:[{itemId:"btn_apply",text:_T("common","apply"),btnStyle:"blue",scope:this,handler:this.onCreate},{text:_T("common","cancel"),handler:function(){this.close()},scope:this}]},e);return this.callParent([a])},onCreate:function(){if(this.items.get(0).getForm().isValid()){this.setStatusBusy();var e={remote_url:this.remote_url,region:this.region,key:this.s3key,secret:this.s3secret,tenant_id:this.tenant_id,tenant_name:this.tenant_name,domain_id:this.domain_id,domain_name:this.domain_name,auth_version:this.auth_version,transfer_type:this.transfer_type,container:this.items.get(0).getForm().findField("bucket").getValue()};this.sendWebAPI({api:"SYNO.Backup.Storage.OpenStack.Container",version:1,method:"create",encryption:["secret"],params:e,scope:this,callback:function(e,t,a){var i=this.items.get(0).getForm().findField("bucket").getValue();if(this.clearStatusBusy(),!e)return this.showPossibleBucketError(t.code,i),!1;this.close()}})}},showPossibleBucketError:function(e,t){var a="";if(e!==SYNO.SDS.Backup.ERR_NAME_NOT_VALID)return a=SYNO.SDS.Backup.GetErrorString(e),void this.getMsgBox().alert(_T("tree","leaf_backup"),a);t.match(/[//]/)&&(a=a.concat("<BR>- ",SYNO.SDS.Backup.String("openstack","container_name_letter_limit"))),(1>t.length||256<t.length)&&(a=a.concat("<BR>- ",String.format(SYNO.SDS.Backup.String("openstack","container_name_length_limit"),"1","256"))),a.length>0?this.getMsgBox().alert(_T("tree","leaf_backup"),SYNO.SDS.Backup.String("openstack","container_name_invalid_short")+" "+SYNO.SDS.Backup.String("openstack","container_name_meet_condition")+" "+_T("common","colon")+a):(a=SYNO.SDS.Backup.String("openstack","container_name_invalid_short"),this.getMsgBox().alert(_T("tree","leaf_backup"),a))}}),Ext.ns("SYNO.Backup.Addon.Config"),SYNO.Backup.Addon.Config.addon_list=[{id:"synocloud",target_type:"cloud_image",transfer_type:"synocloud_swift",category:"syno_nas",destIconCls:"syno-backup-destination-synocloud",taskIconCls:"syno-backup-task-synocloud",stringSection:"synocloud",displayName:SYNO.SDS.Backup.String("synocloud","repo_type_name_2"),oauth:{url:function(){var e=Ext.urlDecode(location.search.substr(1)).everest,t=function(){return"c2staging"===e?"account.c2.c2go.dev":-1<["c2test","c2testdaily"].indexOf(e)?"account.c2test.synology.com":"account.c2.synology.com"}.call(),a="origin={2}&version=HyperBackup/{3}";return"c2testdaily"===e&&(a="feature=daily&"+a),"https://"+t+"/hb/?"+a}()},options:{regionWebLink:function(){var e=Ext.urlDecode(location.search.substr(1)).everest;return"https://{0}."+function(){return"c2staging"===e?"c2.c2go.dev":-1<["c2test","c2testdaily"].indexOf(e)?"c2test.synology.com":"c2.synology.com"}.call()+"/backupservice"}(),blockedLanguage:["chs"],popupIcon:!0}},{id:"remote",target_type:"image",transfer_type:"image_remote",category:"syno_nas",destIconCls:"syno-backup-destination-remote",taskIconCls:"syno-backup-task-remote",stringSection:"remote",displayName:SYNO.SDS.Backup.String("remote","repo_type_name_2")},{id:"local",target_type:"image",transfer_type:"image_local",category:"syno_nas",destIconCls:"syno-backup-destination-local",taskIconCls:"syno-backup-task-local",stringSection:"local",displayName:SYNO.SDS.Backup.String("local","repo_type_name_2"),options:{supportUSBStation:!1}},{id:"legacy_local",target_type:"share",transfer_type:"local",category:"syno_nas",destIconCls:"syno-backup-destination-legacy-local",taskIconCls:"syno-backup-task-legacy-local",stringSection:"legacy_local",displayName:SYNO.SDS.Backup.String("legacy_local","repo_type_name_2"),options:{supportRestore:!1}},{id:"rsync",target_type:"cloud_image",transfer_type:"rsync",category:"file_server",destIconCls:"syno-backup-destination-rsync",taskIconCls:"syno-backup-task-rsync",stringSection:"rsync",displayName:SYNO.SDS.Backup.String("rsync","repo_type_name_2")},{id:"webdav",target_type:"cloud_image",transfer_type:"webdav",category:"file_server",destIconCls:"syno-backup-destination-webdav",taskIconCls:"syno-backup-task-webdav",stringSection:"webdav",displayName:SYNO.SDS.Backup.String("webdav","repo_type_name")},{id:"legacy_rsync",target_type:"share",transfer_type:"rsync",category:"file_server",destIconCls:"syno-backup-destination-legacy-rsync",taskIconCls:"syno-backup-task-legacy-rsync",stringSection:"legacy_rsync",displayName:SYNO.SDS.Backup.String("legacy_rsync","repo_type_name_2"),options:{dest_setting_nextId:"legacy_rsync::dest_folder_setting",supportRestore:!1}},{id:"legacy_rsync_ds",target_type:"share",transfer_type:"rsync_ds",category:"file_server",destIconCls:"syno-backup-destination-legacy-rsync",taskIconCls:"syno-backup-task-legacy-rsync",stringSection:"legacy_rsync",displayName:SYNO.SDS.Backup.String("legacy_rsync","repo_type_name_2"),displayMode:"private",options:{dest_setting_nextId:"legacy_rsync::dest_folder_setting",supportRestore:!1}},{id:"rsync_ds",target_type:"cloud_image",transfer_type:"rsync_ds",category:"file_server",destIconCls:"syno-backup-destination-rsync",taskIconCls:"syno-backup-task-rsync",stringSection:"rsync",displayName:SYNO.SDS.Backup.String("rsync","repo_type_name_2"),displayMode:"private"},{id:"aws_s3",target_type:"cloud_image",transfer_type:"aws_s3",category:"cloud",destIconCls:"syno-backup-destination-aws-s3",taskIconCls:"syno-backup-task-aws_s3",stringSection:"aws_s3",displayName:SYNO.SDS.Backup.String("aws_s3","repo_type_name")},{id:"azure_blob",target_type:"cloud_image",transfer_type:"azure_blob",category:"cloud",destIconCls:"syno-backup-destination-azure-blob",taskIconCls:"syno-backup-task-azure_blob",stringSection:"azure",displayName:SYNO.SDS.Backup.String("azure","repo_type_name")},{id:"azure_cn_blob",target_type:"cloud_image",transfer_type:"azure_cn_blob",category:"cloud",destIconCls:"syno-backup-destination-azure-blob",taskIconCls:"syno-backup-task-azure_blob",stringSection:"azure",displayName:SYNO.SDS.Backup.String("azure","repo_type_name"),displayMode:"private"},{id:"openstack",target_type:"cloud_image",transfer_type:"openstack_swift",category:"file_server",destIconCls:"syno-backup-destination-openstack",taskIconCls:"syno-backup-task-openstack",stringSection:"openstack",displayName:SYNO.SDS.Backup.String("openstack","repo_type_name")},{id:"ibm_softlayer",target_type:"cloud_image",transfer_type:"ibm_softlayer_swift",category:"cloud",destIconCls:"syno-backup-destination-ibm-softlayer",taskIconCls:"syno-backup-task-ibm_softlayer",stringSection:"ibm_softlayer",displayMode:"private",displayName:SYNO.SDS.Backup.String("ibm_softlayer","repo_type_name")},{id:"rackspace",target_type:"cloud_image",transfer_type:"rackspace_swift",category:"cloud",destIconCls:"syno-backup-destination-rackspace",taskIconCls:"syno-backup-task-rackspace",stringSection:"rackspace",displayName:SYNO.SDS.Backup.String("rackspace","repo_type_name")},{id:"dropbox",target_type:"cloud_image",transfer_type:"dropbox",category:"cloud",destIconCls:"syno-backup-destination-dropbox",taskIconCls:"syno-backup-task-dropbox",stringSection:"dropbox",displayName:SYNO.SDS.Backup.String("dropbox","repo_type_name"),oauth:{url:"https://www.dropbox.com/oauth2/authorize?response_type=code&client_id={0}&redirect_uri={1}&state={2}&force_reapprove=true&token_access_type=offline",client_id:"hzp1h2mds8a9vaj",redirect:"https://synooauth.synology.com/HyperBackup/oauth_v2/dropbox.php"}},{id:"google_drive",target_type:"cloud_image",transfer_type:"google_drive",category:"cloud",destIconCls:"syno-backup-destination-googledrive",taskIconCls:"syno-backup-task-google_drive",stringSection:"google_drive",displayName:SYNO.SDS.Backup.String("google_drive","repo_type_name"),oauth:{url:"https://accounts.google.com/o/oauth2/auth?client_id={0}&redirect_uri={1}&state={2}&scope=https://www.googleapis.com/auth/drive&response_type=code&access_type=offline&prompt=consent",client_id:"535720510400-mmsdiolabfk3ua33u7jpgifqahfnb8eb.apps.googleusercontent.com",redirect:"https://synooauth.synology.com/HyperBackup/oauth_v2/google_drive.php"}},{id:"hidrive",target_type:"cloud_image",transfer_type:"hidrive",category:"cloud",destIconCls:"syno-backup-destination-hidrive",taskIconCls:"syno-backup-task-hidrive",stringSection:"hidrive",displayName:SYNO.SDS.Backup.String("hidrive","repo_type_name")},{id:"sfr_s3",target_type:"cloud_image",transfer_type:"sfr_s3",category:"cloud",destIconCls:"syno-backup-destination-sfr-s3",taskIconCls:"syno-backup-task-sfr_s3",stringSection:"sfr_s3",displayName:SYNO.SDS.Backup.String("sfr_s3","repo_type_name"),displayMode:"private"},{id:"hicloud_s3",target_type:"cloud_image",transfer_type:"hicloud_s3",category:"cloud",destIconCls:"syno-backup-destination-hicloud-s3",taskIconCls:"syno-backup-task-hicloud_s3",stringSection:"hicloud_s3",displayName:SYNO.SDS.Backup.String("hicloud_s3","repo_type_name")},{id:"jdcloud_s3",target_type:"cloud_image",transfer_type:"jdcloud_s3",category:"cloud",destIconCls:"syno-backup-destination-jdcloud-s3",taskIconCls:"syno-backup-task-jdcloud_s3",stringSection:"jdcloud_s3",displayName:SYNO.SDS.Backup.String("jdcloud_s3","repo_type_name")},{id:"legacy_aws_s3",target_type:"cloud",transfer_type:"aws_s3",category:"cloud",destIconCls:"syno-backup-destination-aws-s3",taskIconCls:"syno-backup-task-aws_s3",stringSection:"aws_s3",displayName:SYNO.SDS.Backup.String("aws_s3","repo_type_name"),displayMode:"protect",options:{supportRestore:!1}},{id:"legacy_sfr_s3",target_type:"cloud",transfer_type:"sfr_s3",category:"cloud",destIconCls:"syno-backup-destination-sfr-s3",taskIconCls:"syno-backup-task-sfr_s3",stringSection:"sfr_s3",displayName:SYNO.SDS.Backup.String("sfr_s3","repo_type_name"),displayMode:"private",options:{supportRestore:!1}},{id:"legacy_hicloud_s3",target_type:"cloud",transfer_type:"hicloud_s3",category:"cloud",destIconCls:"syno-backup-destination-hicloud-s3",taskIconCls:"syno-backup-task-hicloud_s3",stringSection:"hicloud_s3",displayName:SYNO.SDS.Backup.String("hicloud_s3","repo_type_name"),displayMode:"private",options:{supportRestore:!1}},{id:"legacy_azure_blob",target_type:"cloud",transfer_type:"azure_blob",category:"cloud",destIconCls:"syno-backup-destination-azure-blob",taskIconCls:"syno-backup-task-azure_blob",stringSection:"azure",displayName:SYNO.SDS.Backup.String("azure","repo_type_name"),displayMode:"protect",options:{supportRestore:!1}}],SYNO.Backup.Addon.Config.supportProtectType="true"===Ext.urlDecode(location.search.substr(1)).supportProtectType,Ext.each(SYNO.Backup.Addon.Config.addon_list,(function(e,t,a){var i=Ext.apply({id:null,target_type:null,transfer_type:null,category:null,destIconCls:null,taskIconCls:null,stringSection:null,displayName:null,displayMode:"public",hidden:!1,oauth:null,options:{}},e);("private"===i.displayMode||"protect"===i.displayMode&&!1===SYNO.Backup.Addon.Config.supportProtectType||"yes"===_D("usbstation")&&!1===i.options.supportUSBStation||Ext.isArray(i.options.blockedLanguage)&&-1!==i.options.blockedLanguage.indexOf(SYNO.SDS.Session.lang))&&(i.hidden=!0),a[t]=i})),SYNO.Backup.Addon.Config.addon_list_templete=JSON.stringify(SYNO.Backup.Addon.Config.addon_list),SYNO.Backup.Addon.Config.updateAllowList=function(e,t){var a={legacy_local:"single_local",legacy_rsync:"single_rsync",legacy_rsync_ds:"single_rsync",local:"image_local",remote:"image_remote",rsync:"image_rsync",rsync_ds:"image_rsync",synocloud:"synocloud",hidrive:"hidrive",legacy_hicloud_s3:"hidrive",jdcloud_s3:"jd_cloud_oss",openstack:"openstask_swift",rackspace:"rackspace",webdav:"webdav",google_drive:"google_drive",amazon_cloud_drive:"amazon_drive",azure_blob:"azure_storage",azure_cn_blob:"azure_storage",legacy_azure_blob:"azure_storage",dropbox:"dropbox",hicloud_s3:"hicloud_s3",aws_s3:"s3_storage",legacy_aws_s3:"s3_storage",sfr_s3:"sfr_nas_backup",legacy_sfr_s3:"sfr_nas_backup",ibm_softlayer:"ibm_softlayer"},i=JSON.parse(SYNO.Backup.Addon.Config.addon_list_templete);!0!==e&&Ext.each(i,(function(e,i,n){var s=e;!1===s.hidden&&(a.hasOwnProperty(s.id)&&-1!==t.indexOf(a[s.id])||(s.hidden=!0)),n[i]=s})),SYNO.Backup.Addon.Config.addon_list=i},Ext.define("SYNO.Backup.Addon.amazon_cloud_drive.Restore.DestStep",{extend:"SYNO.Backup.Addon.base.Restore.DestStep",comboboxWidth:270,addon_id:"amazon_cloud_drive",constructor:function(e){var t=[];Ext.copyTo(this,e,"owner"),this.target_type="cloud_image",this.transfer_type="amazon_cloud_drive",this.configFields(t),this.callParent([Ext.apply({trackResetOnLoad:!0,items:[{xtype:"syno_fieldset",defaults:{labelWidth:300},items:t}]},e)])},configFields:function(e){e.push({xtype:"syno_combobox",width:this.comboboxWidth,name:"container",fieldLabel:SYNO.SDS.Backup.String("amazon_cloud_drive","root_folder_name"),store:new Ext.data.ArrayStore({fields:["value"]}),forceSelection:!1,valueField:"value",displayField:"value",allowBlank:!1,triggerAction:"all",mode:"local",onTriggerClick:function(){this.readOnly||this.disabled||(this.scope.needReloadContainers()?this.scope.loadContainers():SYNO.ux.ComboBox.prototype.onTriggerClick.call(this,arguments))},listeners:{select:this.onSelectContainer,scope:this},scope:this,tpl:'<tpl for="."><div ext:qtip="{[SYNO.SDS.Backup.Util.htmlEncodeTip(values.value)]}" class="x-combo-list-item">{value:htmlEncode}</div></tpl>'},{xtype:"syno_combobox",width:this.comboboxWidth,fieldLabel:_T("backup","backup_dest_directory"),name:"target",forceSelection:!0,editable:!1,allowBlank:!1,store:new Ext.data.ArrayStore({fields:["display","value"]}),displayField:"display",valueField:"value",triggerAction:"all",mode:"local",onTriggerClick:function(){this.readOnly||this.disabled||(this.scope.needReloadTarget()?this.scope.loadTarget():SYNO.ux.ComboBox.prototype.onTriggerClick.call(this,arguments))},scope:this,tpl:'<tpl for="."><div ext:qtip="{[SYNO.SDS.Backup.Util.htmlEncodeTip(values.value)]}" class="x-combo-list-item">{display:htmlEncode}</div></tpl>'})},onSelectContainer:function(e){this.loadTarget(e.getValue())},getNext:function(){if(!this.getForm().isValid())return!1;if(!this.getForm().isDirty())return this.nextId;var e=this.getParams();return e.additional=e.additional?e.additional:[],e.additional.push("check_backup_data_type"),this.owner.setStatusBusy(),this.sendWebAPI({api:"SYNO.Backup.Target",method:"get",version:1,params:e,encryption:["remote_access_token","remote_refresh_token"],callback:this.onTargetGet,scope:this}),!1},onTargetGet:function(e,t,a){return e?t.support_multi_version?(this.target_type="cloud_image","data"!==t.check_backup_data_type||"cloud_image"!==t.format_type?(this.owner.getMsgBox().alert(_T("leaf","backup"),SYNO.SDS.Backup.String("error","target_not_support")),this.owner.clearStatusBusy(),!1):(this.owner.setSingle(!1),this.owner.clearStatusBusy(),this.owner.data_enc=t.data_enc,this.owner.uni_key=t.uni_key,t.data_enc?this.launchPasswordWindow((function(){this.owner.goNext(this.nextId)})):this.owner.goNext(this.nextId),!1)):(this.owner.getMsgBox().alert(_T("leaf","backup"),SYNO.SDS.Backup.String("error","target_not_support")),this.owner.clearStatusBusy(),!1):(this.owner.targetGetErrorHandle(t),this.owner.clearStatusBusy(),!1)},launchPasswordWindow:function(e){var t=this.getParams();Ext.apply(t,{uni_key:this.owner.uni_key}),new SYNO.SDS.Backup.Client.Common.Password.Window({owner:this.owner,verify_params:t,setter:Ext.createDelegate(this.setEncKey,this),callback:Ext.createDelegate(e,this)}).open()},setEncKey:function(e){this.owner.sess_id=e.sess_id,this.owner.sess_key=e.sess_key},getParams:function(){var e=this.getForm(),t=function(t){return e.findField(t).getValue()};return{target_id:t("target"),container:t("container"),remote_access_token:this.access_token,remote_refresh_token:this.refresh_token,target_type:this.target_type,transfer_type:this.transfer_type}},summary:function(e){var t=this.getParams();e.append(_T("backup","restore_type"),SYNO.SDS.Backup.String("amazon_cloud_drive","repo_type_name")),e.append(_T("backup","backup_restore_source"),t.container+" / "+t.target_id)},getListContainerRequest:function(){return Ext.copyTo({},this.getParams(),"target_type,transfer_type,remote_access_token,remote_refresh_token,container")},needReloadContainers:function(){var e=this.getListContainerRequest();return this.lastQueryModule!==Ext.encode(e)},loadContainers:function(){var e=this.getListContainerRequest();e.remote_access_token&&e.remote_refresh_token&&(this.owner.setStatusBusy({text:SYNO.SDS.Backup.String("amazon_cloud_drive","load_root_folders")}),this.sendWebAPI({api:"SYNO.Backup.Storage.AmazonCloudDrive.Container",version:1,method:"list",params:e,encryption:["remote_access_token","remote_refresh_token"],scope:this,callback:function(t,a,i){if(this.owner.clearStatusBusy(),!t)return this.loadContainerData(),this.owner.reportError(a),void delete this.lastQueryModule;this.lastQueryModule=Ext.encode(e),this.loadContainerData(a)}}))},loadContainerData:function(e){var t=this.getForm().findField("container");return SYNO.SDS.Backup.Util.comboboxLoadData(t,e?e.container_list:[],0)},getLoadTargetParams:function(){var e=this.getParams();return delete e.target_id,e},needReloadTarget:function(){var e=this.getLoadTargetParams();return this.lastQueryTarget!==Ext.encode(e)},loadTarget:function(e){var t=this.getLoadTargetParams();t.container&&this.lastQueryTarget!==Ext.encode(t)&&(this.lastQueryTarget=Ext.encode(t),t.backup_data_type="data",this.owner.setStatusBusy({text:_T("backup","search_restore_folder")}),this.owner.api.send({api:"SYNO.Backup.Target",method:"list",version:1,params:t,encryption:["remote_access_token","remote_refresh_token"],callback:function(e,a,i){if(this.owner.clearStatusBusy(),!e)return this.owner.api.alert(a),this.loadTargetData({target_list:[]}),void delete this.lastQueryTarget;this.lastQueryTarget=Ext.encode(t),this.loadTargetData(a)},scope:this}))},loadTargetData:function(e){var t=this.getForm().findField("target");return SYNO.Backup.Util.HBKDisplayComboboxLoadData(t,e.target_list,"target_id")},setOauthResponse:function(e){this.access_token=e.access_token,this.refresh_token=e.refresh_token}}),Ext.define("SYNO.Backup.Addon.aws_s3.Restore.DestStep",{extend:"SYNO.SDS.Backup.Addon.Util.S3.Restore.DestStep",constructor:function(e){var t=Ext.apply({addon_id:"aws_s3",support_region:!0},e);return this.callParent([t])}}),Ext.define("SYNO.Backup.Addon.azure_blob.Restore.DestStep",{extend:"SYNO.Backup.Addon.base.Restore.DestStep",comboboxWidth:270,addon_id:"azure_blob",constructor:function(e){var t=[];Ext.copyTo(this,e,"owner"),this.target_type="cloud",this.transfer_type="azure_blob",this.configFields(t),this.callParent([Ext.apply({trackResetOnLoad:!0,items:[{xtype:"syno_fieldset",defaults:{labelWidth:300},items:t}]},e)])},configFields:function(e){e.push({xtype:"syno_combobox",width:this.comboboxWidth,name:"server",fieldLabel:SYNO.Backup.Addon.Util.getString(this.addon_id,"provider"),store:new Ext.data.ArrayStore({fields:["server","value"],data:[[SYNO.Backup.Addon.Util.getString(this.addon_id,"name"),"azure_blob"],[SYNO.Backup.Addon.Util.getString(this.addon_id,"name_cn"),"azure_cn_blob"]]}),value:"azure_blob",displayField:"server",valueField:"value",editable:!1,listeners:{select:function(e,t,a){this.transfer_type=t.get("value")},scope:this}},{xtype:"syno_textfield",fieldLabel:SYNO.Backup.Addon.Util.getString(this.addon_id,"storage_account"),name:"accesskey",width:this.comboboxWidth,allowBlank:!1},{xtype:"syno_textfield",fieldLabel:SYNO.Backup.Addon.Util.getString(this.addon_id,"access_key"),name:"secretkey",width:this.comboboxWidth,inputType:"password",allowBlank:!1},{xtype:"syno_combobox",width:this.comboboxWidth,name:"bktselect",fieldLabel:SYNO.Backup.Addon.Util.getString(this.addon_id,"container_name"),store:new Ext.data.ArrayStore({fields:["value"]}),forceSelection:!1,valueField:"value",displayField:"value",allowBlank:!1,triggerAction:"all",mode:"local",onTriggerClick:function(){this.readOnly||this.disabled||(this.scope.needReloadBuckets()?this.scope.loadBuckets():SYNO.ux.ComboBox.prototype.onTriggerClick.call(this,arguments))},listeners:{select:this.onSelectBucket,scope:this},scope:this,tpl:'<tpl for="."><div ext:qtip="{[SYNO.SDS.Backup.Util.htmlEncodeTip(values.value)]}" class="x-combo-list-item">{value:htmlEncode}</div></tpl>'},{xtype:"syno_combobox",width:this.comboboxWidth,fieldLabel:_T("backup","backup_dest_directory"),name:"target",forceSelection:!0,editable:!1,allowBlank:!1,store:new Ext.data.ArrayStore({fields:["display","value"]}),displayField:"display",valueField:"value",triggerAction:"all",mode:"local",onTriggerClick:function(){this.readOnly||this.disabled||(this.scope.needReloadTarget()?this.scope.loadTarget():SYNO.ux.ComboBox.prototype.onTriggerClick.call(this,arguments))},scope:this,tpl:'<tpl for="."><div ext:qtip="{[SYNO.SDS.Backup.Util.htmlEncodeTip(values.value)]}" class="x-combo-list-item">{display:htmlEncode}</div></tpl>'})},onSelectBucket:function(e){this.loadTarget(e.getValue())},activate:function(){},getNext:function(){if(!this.getForm().isValid())return!1;if(!this.getForm().isDirty())return this.nextId;var e=this.getParams();return e.additional=e.additional?e.additional:[],e.additional.push("check_backup_data_type"),this.owner.setStatusBusy(),this.sendWebAPI({api:"SYNO.Backup.Target",method:"get",version:1,params:e,encryption:["secret"],callback:this.onTargetGet,scope:this}),!1},onTargetGet:function(e,t,a){return e?(t.support_multi_version?this.target_type="cloud_image":this.target_type="cloud","data"!==t.check_backup_data_type||"image"===t.format_type?(this.owner.getMsgBox().alert(_T("leaf","backup"),SYNO.SDS.Backup.String("error","target_not_support")),this.owner.clearStatusBusy(),!1):(this.owner.setSingle("cloud"===this.target_type),this.owner.clearStatusBusy(),this.owner.data_enc=t.data_enc,this.owner.uni_key=t.uni_key,t.data_enc?this.launchPasswordWindow((function(){this.owner.goNext(this.nextId)})):this.owner.goNext(this.nextId),!1)):(this.owner.targetGetErrorHandle(t),this.owner.clearStatusBusy(),!1)},launchPasswordWindow:function(e){var t=this.getParams();Ext.apply(t,{uni_key:this.owner.uni_key}),new SYNO.SDS.Backup.Client.Common.Password.Window({owner:this.owner,verify_params:t,setter:Ext.createDelegate(this.setEncKey,this),callback:Ext.createDelegate(e,this)}).open()},setEncKey:function(e){this.owner.sess_id=e.sess_id,this.owner.sess_key=e.sess_key},getParams:function(){var e=this.getForm(),t=function(t){return e.findField(t).getValue()};return{key:t("accesskey"),secret:t("secretkey"),bucket:t("bktselect"),target_id:t("target"),target_type:this.target_type,transfer_type:this.transfer_type}},summary:function(e){var t=this.getParams();e.append(_T("backup","restore_type"),SYNO.SDS.Backup.String("azure","repo_type_name")),e.append(_T("backup","backup_restore_source"),t.bucket+" / "+t.target_id)},getListBucketRequest:function(){return Ext.copyTo({},this.getParams(),"key,secret,transfer_type")},needReloadBuckets:function(){var e=this.getListBucketRequest();return this.lastQueryModule!==Ext.encode(e)},loadBuckets:function(){var e=this.getListBucketRequest();e.key&&e.secret&&(this.owner.setStatusBusy({text:SYNO.Backup.Addon.Util.getString(this.addon_id,"load_containers")}),this.sendWebAPI({api:"SYNO.Backup.Storage.Azure.Container",version:1,method:"list",params:e,encryption:["secret"],scope:this,callback:function(t,a,i){if(this.owner.clearStatusBusy(),!t)return this.loadBucketsData(),this.owner.reportError(a),void delete this.lastQueryModule;this.lastQueryModule=Ext.encode(e),this.loadBucketsData(a)}}))},loadBucketsData:function(e){var t=this.getForm().findField("bktselect");return SYNO.SDS.Backup.Util.comboboxLoadData(t,e?e.bucket_list:[],0)},getLoadTargetParams:function(){var e=this.getParams();return delete e.target_id,e},needReloadTarget:function(){var e=this.getLoadTargetParams();return this.lastQueryTarget!==Ext.encode(e)},loadTarget:function(e){var t=this.getLoadTargetParams();t.key&&t.secret&&t.bucket&&this.lastQueryTarget!==Ext.encode(t)&&(this.lastQueryTarget=Ext.encode(t),t.backup_data_type="data",this.owner.setStatusBusy({text:_T("backup","search_restore_folder")}),this.owner.api.send({api:"SYNO.Backup.Target",method:"list",version:1,params:t,encryption:["secret"],callback:function(e,a,i){if(this.owner.clearStatusBusy(),!e)return this.owner.api.alert(a),this.loadTargetData({target_list:[]}),void delete this.lastQueryTarget;this.lastQueryTarget=Ext.encode(t),this.loadTargetData(a)},scope:this}))},loadTargetData:function(e){var t=this.getForm().findField("target");return SYNO.Backup.Util.HBKDisplayComboboxLoadData(t,e.target_list,"target_id")},testConnection:function(){var e=this.getListBucketRequest();this.owner.setStatusBusy({text:_T("netbackup","netbkp_connection_testing")}),this.sendWebAPI({api:"SYNO.Backup.Storage.Azure.Container",version:1,method:"list",params:e,encryption:["secret"],scope:this,callback:function(e,t,a){var i=this.getForm();this.owner.clearStatusBusy(),e?(this.owner.setSingle(!0),this.owner.goNext(this.nextId),i.setValues(i.setValues())):this.owner.reportError(t)}})}}),Ext.ns("SYNO.Backup.Addon.dropbox.Restore"),Ext.define("SYNO.Backup.Addon.dropbox.Restore.DestStep",{extend:"SYNO.Backup.Addon.base.Restore.DestStep",comboboxWidth:270,addon_id:"dropbox",constructor:function(e){var t=[];Ext.copyTo(this,e,"owner"),this.target_type="cloud_image",this.transfer_type="dropbox",this.configFields(t),this.callParent([Ext.apply({trackResetOnLoad:!0,items:[{xtype:"syno_fieldset",defaults:{labelWidth:300},items:t}]},e)])},configFields:function(e){e.push({xtype:"syno_combobox",width:this.comboboxWidth,name:"container",fieldLabel:SYNO.SDS.Backup.String("dropbox","root_folder_name"),store:new Ext.data.ArrayStore({fields:["value"],sortInfo:{field:"value",direction:"ASC"}}),forceSelection:!1,valueField:"value",displayField:"value",allowBlank:!1,triggerAction:"all",mode:"local",onTriggerClick:function(){this.readOnly||this.disabled||(this.scope.needReloadContainers()?this.scope.loadContainers():SYNO.ux.ComboBox.prototype.onTriggerClick.call(this,arguments))},listeners:{select:this.onSelectContainer,scope:this},scope:this,tpl:'<tpl for="."><div ext:qtip="{[SYNO.SDS.Backup.Util.htmlEncodeTip(values.value)]}" class="x-combo-list-item">{value:htmlEncode}</div></tpl>'},{xtype:"syno_combobox",width:this.comboboxWidth,fieldLabel:_T("backup","backup_dest_directory"),name:"target",forceSelection:!0,editable:!1,allowBlank:!1,store:new Ext.data.ArrayStore({fields:["display","value"]}),displayField:"display",valueField:"value",triggerAction:"all",mode:"local",onTriggerClick:function(){this.readOnly||this.disabled||(this.scope.needReloadTarget()?this.scope.loadTarget():SYNO.ux.ComboBox.prototype.onTriggerClick.call(this,arguments))},scope:this,tpl:'<tpl for="."><div ext:qtip="{[SYNO.SDS.Backup.Util.htmlEncodeTip(values.value)]}" class="x-combo-list-item">{display:htmlEncode}</div></tpl>'})},onSelectContainer:function(e){this.loadTarget(e.getValue())},getNext:function(){if(!this.getForm().isValid())return!1;if(!this.getForm().isDirty())return this.nextId;var e=this.getParams();return e.additional=e.additional?e.additional:[],e.additional.push("check_backup_data_type"),this.owner.setStatusBusy(),this.sendWebAPI({api:"SYNO.Backup.Target",method:"get",version:1,params:e,encryption:["remote_access_token","remote_refresh_token"],callback:this.onTargetGet,scope:this}),!1},onTargetGet:function(e,t,a){return e?t.support_multi_version?(this.target_type="cloud_image","data"!==t.check_backup_data_type||"cloud_image"!==t.format_type?(this.owner.getMsgBox().alert(_T("leaf","backup"),SYNO.SDS.Backup.String("error","target_not_support")),this.owner.clearStatusBusy(),!1):(this.owner.setSingle(!1),this.owner.clearStatusBusy(),this.owner.data_enc=t.data_enc,this.owner.uni_key=t.uni_key,t.data_enc?this.launchPasswordWindow((function(){this.owner.goNext(this.nextId)})):this.owner.goNext(this.nextId),!1)):(this.owner.getMsgBox().alert(_T("leaf","backup"),SYNO.SDS.Backup.String("error","target_not_support")),this.owner.clearStatusBusy(),!1):(this.owner.targetGetErrorHandle(t),this.owner.clearStatusBusy(),!1)},launchPasswordWindow:function(e){var t=this.getParams();Ext.apply(t,{uni_key:this.owner.uni_key}),new SYNO.SDS.Backup.Client.Common.Password.Window({owner:this.owner,verify_params:t,setter:Ext.createDelegate(this.setEncKey,this),callback:Ext.createDelegate(e,this)}).open()},setEncKey:function(e){this.owner.sess_id=e.sess_id,this.owner.sess_key=e.sess_key},getParams:function(){var e=this.getForm(),t=function(t){return e.findField(t).getValue()};return{target_id:t("target"),container:t("container"),remote_access_token:this.access_token,remote_refresh_token:this.refresh_token,target_type:this.target_type,transfer_type:this.transfer_type}},summary:function(e){var t=this.getParams();e.append(_T("backup","restore_type"),SYNO.SDS.Backup.String("dropbox","repo_type_name")),e.append(_T("backup","backup_restore_source"),t.container+" / "+t.target_id)},getListContainerRequest:function(){return Ext.copyTo({},this.getParams(),"target_type,transfer_type,remote_access_token,remote_refresh_token,container")},needReloadContainers:function(){var e=this.getListContainerRequest();return this.lastQueryModule!==Ext.encode(e)},loadContainers:function(){var e=this.getListContainerRequest();e.remote_access_token&&e.remote_refresh_token&&(this.owner.setStatusBusy({text:SYNO.SDS.Backup.String("dropbox","load_root_folders")}),this.sendWebAPI({api:"SYNO.Backup.Storage.Dropbox.Container",version:1,method:"list",params:e,encryption:["remote_access_token","remote_refresh_token"],scope:this,callback:function(t,a,i){if(this.owner.clearStatusBusy(),!t)return this.loadContainerData(),this.owner.reportError(a),void delete this.lastQueryModule;this.lastQueryModule=Ext.encode(e),this.loadContainerData(a)}}))},loadContainerData:function(e){var t=this.getForm().findField("container");return SYNO.SDS.Backup.Util.comboboxLoadData(t,e?e.container_list:[],0)},getLoadTargetParams:function(){var e=this.getParams();return delete e.target_id,e},needReloadTarget:function(){var e=this.getLoadTargetParams();return this.lastQueryTarget!==Ext.encode(e)},loadTarget:function(e){var t=this.getLoadTargetParams();t.container&&this.lastQueryTarget!==Ext.encode(t)&&(this.lastQueryTarget=Ext.encode(t),t.backup_data_type="data",this.owner.setStatusBusy({text:_T("backup","search_restore_folder")}),this.owner.api.send({api:"SYNO.Backup.Target",method:"list",version:1,params:t,encryption:["remote_access_token","remote_refresh_token"],callback:function(e,a,i){if(this.owner.clearStatusBusy(),!e)return this.owner.api.alert(a),this.loadTargetData({target_list:[]}),void delete this.lastQueryTarget;this.lastQueryTarget=Ext.encode(t),this.loadTargetData(a)},scope:this}))},loadTargetData:function(e){var t=this.getForm().findField("target");return SYNO.Backup.Util.HBKDisplayComboboxLoadData(t,e.target_list,"target_id")},setOauthResponse:function(e){this.access_token=e.access_token,this.refresh_token=e.refresh_token||""}}),Ext.ns("SYNO.Backup.Addon.google_drive.Restore"),Ext.define("SYNO.Backup.Addon.google_drive.Restore.DestStep",{extend:"SYNO.Backup.Addon.base.Restore.DestStep",comboboxWidth:270,addon_id:"google_drive",constructor:function(e){var t=[];Ext.copyTo(this,e,"owner"),this.target_type="cloud_image",this.transfer_type="google_drive",this.configFields(t),this.callParent([Ext.apply({trackResetOnLoad:!0,items:[{xtype:"syno_fieldset",defaults:{labelWidth:300},items:t}]},e)])},configFields:function(e){e.push({xtype:"syno_combobox",width:this.comboboxWidth,name:"container",fieldLabel:SYNO.SDS.Backup.String("google_drive","root_folder_name"),store:new Ext.data.ArrayStore({fields:["value"]}),forceSelection:!1,valueField:"value",displayField:"value",allowBlank:!1,triggerAction:"all",mode:"local",onTriggerClick:function(){this.readOnly||this.disabled||(this.scope.needReloadContainers()?this.scope.loadContainers():SYNO.ux.ComboBox.prototype.onTriggerClick.call(this,arguments))},listeners:{select:this.onSelectContainer,scope:this},scope:this,tpl:'<tpl for="."><div ext:qtip="{[SYNO.SDS.Backup.Util.htmlEncodeTip(values.value)]}" class="x-combo-list-item">{value:htmlEncode}</div></tpl>'},{xtype:"syno_combobox",width:this.comboboxWidth,fieldLabel:_T("backup","backup_dest_directory"),name:"target",forceSelection:!0,editable:!1,allowBlank:!1,store:new Ext.data.ArrayStore({fields:["display","value"]}),displayField:"display",valueField:"value",triggerAction:"all",mode:"local",onTriggerClick:function(){this.readOnly||this.disabled||(this.scope.needReloadTarget()?this.scope.loadTarget():SYNO.ux.ComboBox.prototype.onTriggerClick.call(this,arguments))},scope:this,tpl:'<tpl for="."><div ext:qtip="{[SYNO.SDS.Backup.Util.htmlEncodeTip(values.value)]}" class="x-combo-list-item">{display:htmlEncode}</div></tpl>'})},onSelectContainer:function(e){this.loadTarget(e.getValue())},getNext:function(){if(!this.getForm().isValid())return!1;if(!this.getForm().isDirty())return this.nextId;var e=this.getParams();return e.additional=e.additional?e.additional:[],e.additional.push("check_backup_data_type"),this.owner.setStatusBusy(),this.sendWebAPI({api:"SYNO.Backup.Target",method:"get",version:1,params:e,encryption:["remote_access_token","remote_refresh_token"],callback:this.onTargetGet,scope:this}),!1},onTargetGet:function(e,t,a){return e?t.support_multi_version?(this.target_type="cloud_image","data"!==t.check_backup_data_type||"cloud_image"!==t.format_type?(this.owner.getMsgBox().alert(_T("leaf","backup"),SYNO.SDS.Backup.String("error","target_not_support")),this.owner.clearStatusBusy(),!1):(this.owner.setSingle(!1),this.owner.clearStatusBusy(),this.owner.data_enc=t.data_enc,this.owner.uni_key=t.uni_key,t.data_enc?this.launchPasswordWindow((function(){this.owner.goNext(this.nextId)})):this.owner.goNext(this.nextId),!1)):(this.owner.getMsgBox().alert(_T("leaf","backup"),SYNO.SDS.Backup.String("error","target_not_support")),this.owner.clearStatusBusy(),!1):(this.owner.targetGetErrorHandle(t),this.owner.clearStatusBusy(),!1)},launchPasswordWindow:function(e){var t=this.getParams();Ext.apply(t,{uni_key:this.owner.uni_key}),new SYNO.SDS.Backup.Client.Common.Password.Window({owner:this.owner,verify_params:t,setter:Ext.createDelegate(this.setEncKey,this),callback:Ext.createDelegate(e,this)}).open()},setEncKey:function(e){this.owner.sess_id=e.sess_id,this.owner.sess_key=e.sess_key},getParams:function(){var e=this.getForm(),t=function(t){return e.findField(t).getValue()};return{target_id:t("target"),container:t("container"),remote_access_token:this.access_token,remote_refresh_token:this.refresh_token,target_type:this.target_type,transfer_type:this.transfer_type}},summary:function(e){var t=this.getParams();e.append(_T("backup","restore_type"),SYNO.SDS.Backup.String("google_drive","repo_type_name")),e.append(_T("backup","backup_restore_source"),t.container+" / "+t.target_id)},getListContainerRequest:function(){return Ext.copyTo({},this.getParams(),"target_type,transfer_type,remote_access_token,remote_refresh_token,container")},needReloadContainers:function(){var e=this.getListContainerRequest();return this.lastQueryModule!==Ext.encode(e)},loadContainers:function(){var e=this.getListContainerRequest();e.remote_access_token&&e.remote_refresh_token&&(this.owner.setStatusBusy({text:SYNO.SDS.Backup.String("google_drive","load_root_folders")}),this.sendWebAPI({api:"SYNO.Backup.Storage.GoogleDrive.Container",version:1,method:"list",params:e,encryption:["remote_access_token","remote_refresh_token"],scope:this,callback:function(t,a,i){if(this.owner.clearStatusBusy(),!t)return this.loadContainerData(),this.owner.reportError(a),void delete this.lastQueryModule;this.lastQueryModule=Ext.encode(e),this.loadContainerData(a)}}))},loadContainerData:function(e){var t=this.getForm().findField("container");return SYNO.SDS.Backup.Util.comboboxLoadData(t,e?e.container_list:[],0)},getLoadTargetParams:function(){var e=this.getParams();return delete e.target_id,e},needReloadTarget:function(){var e=this.getLoadTargetParams();return this.lastQueryTarget!==Ext.encode(e)},loadTarget:function(e){var t=this.getLoadTargetParams();t.container&&this.lastQueryTarget!==Ext.encode(t)&&(this.lastQueryTarget=Ext.encode(t),t.backup_data_type="data",this.owner.setStatusBusy({text:_T("backup","search_restore_folder")}),this.owner.api.send({api:"SYNO.Backup.Target",method:"list",version:1,params:t,encryption:["remote_access_token","remote_refresh_token"],callback:function(e,a,i){if(this.owner.clearStatusBusy(),!e)return this.owner.api.alert(a),this.loadTargetData({target_list:[]}),void delete this.lastQueryTarget;this.lastQueryTarget=Ext.encode(t),this.loadTargetData(a)},scope:this}))},loadTargetData:function(e){var t=this.getForm().findField("target");return SYNO.Backup.Util.HBKDisplayComboboxLoadData(t,e.target_list,"target_id")},setOauthResponse:function(e){this.access_token=e.access_token,this.refresh_token=e.refresh_token}}),Ext.define("SYNO.Backup.Addon.hicloud_s3.Restore.DestStep",{extend:"SYNO.SDS.Backup.Addon.Util.Image.S3.Restore.DestStep",constructor:function(e){var t=Ext.apply({addon_id:"image_hicloud",transfer_type:"hicloud_s3"},e);return this.callParent([t])}}),Ext.define("SYNO.Backup.Addon.jdcloud_s3.Restore.DestStep",{extend:"SYNO.SDS.Backup.Addon.Util.Image.S3.Restore.DestStep",constructor:function(e){var t=Ext.apply({addon_id:"image_jdcloud",transfer_type:"jdcloud_s3"},e);return this.callParent([t])},configFields:function(e){e.push({xtype:"syno_combobox",name:"region",width:this.comboboxWidth,allowBlank:!1,store:this.getRegionStore(),fieldLabel:_T("backup","s3_server_region"),displayField:"region",valueField:"value",value:"cn-north-1",editable:!1},{xtype:"syno_textfield",fieldLabel:_T("backup","s3_access_key"),name:"accesskey",width:this.comboboxWidth,allowBlank:!1},{xtype:"syno_textfield",fieldLabel:_T("backup","s3_secret_key"),name:"secretkey",width:this.comboboxWidth,inputType:"password",allowBlank:!1},{xtype:"syno_combobox",name:"bktselect",width:this.comboboxWidth,fieldLabel:SYNO.SDS.Backup.String("aws_s3","bucket_name"),store:new Ext.data.ArrayStore({fields:["value"]}),forceSelection:!1,valueField:"value",displayField:"value",allowBlank:!1,triggerAction:"all",mode:"local",maxlength:this.S3_BUCKET_LENGTH,onTriggerClick:function(){this.readOnly||this.disabled||(this.scope.needReloadBuckets()?this.scope.loadBuckets():SYNO.ux.ComboBox.prototype.onTriggerClick.call(this,arguments))},listeners:{select:this.onSelectBucket,scope:this},scope:this,tpl:'<tpl for="."><div ext:qtip="{[SYNO.SDS.Backup.Util.htmlEncodeTip(values.value)]}" class="x-combo-list-item">{value:htmlEncode}</div></tpl>'},{xtype:"syno_combobox",fieldLabel:_T("backup","backup_dest_directory"),width:this.comboboxWidth,name:"target",forceSelection:!0,editable:!1,allowBlank:!1,store:new Ext.data.ArrayStore({fields:["display","value"]}),displayField:"display",valueField:"value",triggerAction:"all",mode:"local",onTriggerClick:function(){this.readOnly||this.disabled||(this.scope.needReloadTarget()?this.scope.loadTarget():SYNO.ux.ComboBox.prototype.onTriggerClick.call(this,arguments))},scope:this,tpl:'<tpl for="."><div ext:qtip="{[SYNO.SDS.Backup.Util.htmlEncodeTip(values.value)]}" class="x-combo-list-item">{display:htmlEncode}</div></tpl>'})},getRegionStore:function(){return this.regionStore||(this.regionStore=new Ext.data.ArrayStore({fields:["region","value"],data:[[SYNO.SDS.Backup.String("jdcloud_s3","region_cn_north_1"),"cn-north-1"],[SYNO.SDS.Backup.String("jdcloud_s3","region_cn_east_1"),"cn-east-1"],[SYNO.SDS.Backup.String("jdcloud_s3","region_cn_east_2"),"cn-east-2"],[SYNO.SDS.Backup.String("jdcloud_s3","region_cn_south_1"),"cn-south-1"]]})),this.regionStore},getParams:function(){var e=this.getForm(),t=function(t){return e.findField(t).getValue()},a={region_system:t("region"),key:t("accesskey"),secret:t("secretkey"),bucket:t("bktselect"),target_id:t("target"),target_type:this.target_type,addon_id:this.addon_id};return a.transfer_type=this.transfer_type,a.support_region=!0,a.request_style="virtual_host_style",a}}),Ext.define("SYNO.Backup.Addon.hidrive.Restore.DestStep",{extend:"SYNO.Backup.Addon.base.Restore.DestStep",comboboxWidth:270,addon_id:"hidrive",constructor:function(e){var t=[];Ext.copyTo(this,e,"owner"),this.target_type="cloud_image",this.transfer_type="hidrive",this.configFields(t),this.callParent([Ext.apply({trackResetOnLoad:!0,items:[{xtype:"syno_fieldset",defaults:{labelWidth:300},items:t}]},e)])},configFields:function(e){e.push({xtype:"syno_textfield",name:"dest",value:"rsync.hidrive.strato.com",editable:!1,hidden:!0},{xtype:"syno_checkbox",name:"encrypt_connect",boxLabel:SYNO.SDS.Backup.String("app","enable_encrypted_transmission"),checked:!0,editable:!1,hidden:!0},{xtype:"syno_textfield",fieldLabel:SYNO.SDS.Backup.String("hidrive","username"),name:"account",width:this.comboboxWidth,allowBlank:!1},{xtype:"syno_textfield",fieldLabel:SYNO.SDS.Backup.String("app","task_password_input"),name:"pwd",width:this.comboboxWidth,inputType:"password",allowBlank:!1},{xtype:"syno_combobox",width:this.comboboxWidth,name:"module",fieldLabel:SYNO.SDS.Backup.String("hidrive","root_folder_name"),store:new Ext.data.ArrayStore({fields:["value"]}),forceSelection:!1,valueField:"value",displayField:"value",allowBlank:!1,triggerAction:"all",mode:"local",onTriggerClick:function(){this.readOnly||this.disabled||(this.scope.needReloadBuckets()?this.scope.loadBuckets():SYNO.ux.ComboBox.prototype.onTriggerClick.call(this,arguments))},listeners:{select:this.onSelectBucket,scope:this},scope:this,tpl:'<tpl for="."><div ext:qtip="{[SYNO.SDS.Backup.Util.htmlEncodeTip(values.value)]}" class="x-combo-list-item">{value:htmlEncode}</div></tpl>'},{xtype:"syno_combobox",width:this.comboboxWidth,fieldLabel:_T("backup","backup_dest_directory"),name:"target",forceSelection:!0,editable:!1,allowBlank:!1,store:new Ext.data.ArrayStore({fields:["display","value"]}),displayField:"display",valueField:"value",triggerAction:"all",mode:"local",onTriggerClick:function(){this.readOnly||this.disabled||(this.scope.needReloadTarget()?this.scope.loadTarget():SYNO.ux.ComboBox.prototype.onTriggerClick.call(this,arguments))},scope:this,tpl:'<tpl for="."><div ext:qtip="{[SYNO.SDS.Backup.Util.htmlEncodeTip(values.value)]}" class="x-combo-list-item">{display:htmlEncode}</div></tpl>'})},onSelectBucket:function(e){this.loadTarget(e.getValue())},activate:function(){},getNext:function(){if(!this.getForm().isValid())return!1;if(!this.getForm().isDirty())return this.nextId;var e=this.getParams();return e.additional=e.additional?e.additional:[],e.additional.push("check_backup_data_type"),this.owner.setStatusBusy(),this.sendWebAPI({api:"SYNO.Backup.Target",method:"get",version:1,params:e,encryption:["pwd"],callback:this.onTargetGet,scope:this}),!1},onTargetGet:function(e,t,a){return e?t.support_multi_version?(this.target_type="cloud_image","data"!==t.check_backup_data_type||"cloud_image"!==t.format_type?(this.owner.getMsgBox().alert(_T("leaf","backup"),SYNO.SDS.Backup.String("error","target_not_support")),this.owner.clearStatusBusy(),!1):(this.owner.setSingle(!1),this.owner.clearStatusBusy(),this.owner.data_enc=t.data_enc,this.owner.uni_key=t.uni_key,t.data_enc?this.launchPasswordWindow((function(){this.owner.goNext(this.nextId)})):this.owner.goNext(this.nextId),!1)):(this.owner.getMsgBox().alert(_T("leaf","backup"),SYNO.SDS.Backup.String("error","target_not_support")),this.owner.clearStatusBusy(),!1):(this.owner.targetGetErrorHandle(t),this.owner.clearStatusBusy(),!1)},launchPasswordWindow:function(e){var t=this.getParams();Ext.apply(t,{uni_key:this.owner.uni_key}),new SYNO.SDS.Backup.Client.Common.Password.Window({owner:this.owner,verify_params:t,setter:Ext.createDelegate(this.setEncKey,this),callback:Ext.createDelegate(e,this)}).open()},setEncKey:function(e){this.owner.sess_id=e.sess_id,this.owner.sess_key=e.sess_key},getParams:function(){var e=this.getForm(),t=function(t){return e.findField(t).getValue()};return{dest:t("dest"),encrypt_connect:t("encrypt_connect"),account:t("account"),pwd:t("pwd"),module:"/users/"+t("account")+"/"+t("module"),target_id:t("target"),target_type:this.target_type,transfer_type:this.transfer_type}},summary:function(e){var t=this.getParams();e.append(_T("backup","restore_type"),SYNO.SDS.Backup.String("hidrive","repo_type_name")),e.append(_T("backup","backup_restore_source"),t.module+" / "+t.target_id)},getListBucketRequest:function(){return Ext.copyTo({},this.getParams(),"dest,encrypt_connect,account,pwd,transfer_type")},needReloadBuckets:function(){var e=this.getListBucketRequest();return this.lastQueryModule!==Ext.encode(e)},loadBuckets:function(){var e=this.getListBucketRequest();e.account&&e.pwd&&(this.owner.setStatusBusy({text:SYNO.SDS.Backup.String("hidrive","load_root_folders")}),this.sendWebAPI({api:"SYNO.Backup.Storage.HiDrive.Container",version:1,method:"list",params:e,encryption:["pwd"],scope:this,callback:function(t,a,i){if(this.owner.clearStatusBusy(),!t)return this.loadBucketsData(),this.owner.reportError(a),void delete this.lastQueryModule;this.lastQueryModule=Ext.encode(e),this.loadBucketsData(a)}}))},loadBucketsData:function(e){var t=this.getForm().findField("module");return SYNO.SDS.Backup.Util.comboboxLoadData(t,e?e.bucket_list:[],0)},getLoadTargetParams:function(){var e=this.getParams();return delete e.target_id,e},needReloadTarget:function(){var e=this.getLoadTargetParams();return this.lastQueryTarget!==Ext.encode(e)},loadTarget:function(e){var t=this.getLoadTargetParams();t.account&&t.pwd&&t.module&&this.lastQueryTarget!==Ext.encode(t)&&(this.lastQueryTarget=Ext.encode(t),t.backup_data_type="data",this.owner.setStatusBusy({text:_T("backup","search_restore_folder")}),this.owner.api.send({api:"SYNO.Backup.Target",method:"list",version:1,params:t,encryption:["pwd"],callback:function(e,a,i){if(this.owner.clearStatusBusy(),!e)return this.owner.api.alert(a),this.loadTargetData({target_list:[]}),void delete this.lastQueryTarget;this.lastQueryTarget=Ext.encode(t),this.loadTargetData(a)},scope:this}))},loadTargetData:function(e){var t=this.getForm().findField("target");return SYNO.Backup.Util.HBKDisplayComboboxLoadData(t,e.target_list,"target_id")}}),Ext.define("SYNO.Backup.Addon.hubic.Restore.DestStep",{extend:"SYNO.Backup.Addon.base.Restore.DestStep",comboboxWidth:270,addon_id:"hubic_swift",constructor:function(e){var t=[];Ext.copyTo(this,e,"owner"),this.target_type="cloud_image",this.transfer_type="hubic_swift",this.configFields(t),this.callParent([Ext.apply({trackResetOnLoad:!0,items:[{xtype:"syno_fieldset",defaults:{labelWidth:300},items:t}]},e)])},configFields:function(e){e.push({xtype:"syno_combobox",width:this.comboboxWidth,name:"container",fieldLabel:SYNO.SDS.Backup.String("hubic","container"),store:new Ext.data.ArrayStore({fields:["value"]}),forceSelection:!1,valueField:"value",displayField:"value",allowBlank:!1,triggerAction:"all",mode:"local",onTriggerClick:function(){this.readOnly||this.disabled||(this.scope.needReloadContainers()?this.scope.loadContainers():SYNO.ux.ComboBox.prototype.onTriggerClick.call(this,arguments))},listeners:{select:this.onSelectContainer,scope:this},scope:this,tpl:'<tpl for="."><div ext:qtip="{[SYNO.SDS.Backup.Util.htmlEncodeTip(values.value)]}" class="x-combo-list-item">{value:htmlEncode}</div></tpl>'},{xtype:"syno_combobox",width:this.comboboxWidth,fieldLabel:_T("backup","backup_dest_directory"),name:"target",forceSelection:!0,editable:!1,allowBlank:!1,store:new Ext.data.ArrayStore({fields:["display","value"]}),displayField:"display",valueField:"value",triggerAction:"all",mode:"local",onTriggerClick:function(){this.readOnly||this.disabled||(this.scope.needReloadTarget()?this.scope.loadTarget():SYNO.ux.ComboBox.prototype.onTriggerClick.call(this,arguments))},scope:this,tpl:'<tpl for="."><div ext:qtip="{[SYNO.SDS.Backup.Util.htmlEncodeTip(values.value)]}" class="x-combo-list-item">{display:htmlEncode}</div></tpl>'})},onSelectContainer:function(e){this.loadTarget(e.getValue())},getNext:function(){if(!this.getForm().isValid())return!1;if(!this.getForm().isDirty())return this.nextId;var e=this.getParams();return e.additional=e.additional?e.additional:[],e.additional.push("check_backup_data_type"),this.owner.setStatusBusy(),this.sendWebAPI({api:"SYNO.Backup.Target",method:"get",version:1,params:e,encryption:["remote_refresh_token"],callback:this.onTargetGet,scope:this}),!1},onTargetGet:function(e,t,a){return e?t.support_multi_version?(this.target_type="cloud_image","data"!==t.check_backup_data_type||"cloud_image"!==t.format_type?(this.owner.getMsgBox().alert(_T("leaf","backup"),SYNO.SDS.Backup.String("error","target_not_support")),this.owner.clearStatusBusy(),!1):(this.owner.setSingle(!1),this.owner.clearStatusBusy(),this.owner.data_enc=t.data_enc,this.owner.uni_key=t.uni_key,t.data_enc?this.launchPasswordWindow((function(){this.owner.goNext(this.nextId)})):this.owner.goNext(this.nextId),!1)):(this.owner.getMsgBox().alert(_T("leaf","backup"),SYNO.SDS.Backup.String("error","target_not_support")),this.owner.clearStatusBusy(),!1):(this.owner.targetGetErrorHandle(t),this.owner.clearStatusBusy(),!1)},launchPasswordWindow:function(e){var t=this.getParams();Ext.apply(t,{uni_key:this.owner.uni_key}),new SYNO.SDS.Backup.Client.Common.Password.Window({owner:this.owner,verify_params:t,setter:Ext.createDelegate(this.setEncKey,this),callback:Ext.createDelegate(e,this)}).open()},setEncKey:function(e){this.owner.sess_id=e.sess_id,this.owner.sess_key=e.sess_key},getParams:function(){var e=this.getForm(),t=function(t){return e.findField(t).getValue()};return{target_id:t("target"),container:t("container"),remote_refresh_token:this.refresh_token,target_type:this.target_type,transfer_type:this.transfer_type}},summary:function(e){var t=this.getParams();e.append(_T("backup","restore_type"),SYNO.SDS.Backup.String("hubic","repo_type_name")),e.append(_T("backup","backup_restore_source"),t.container+" / "+t.target_id)},getListContainerRequest:function(){return Ext.copyTo({},this.getParams(),"target_type,transfer_type,remote_refresh_token,container")},needReloadContainers:function(){var e=this.getListContainerRequest();return this.lastQueryModule!==Ext.encode(e)},loadContainers:function(){var e=this.getListContainerRequest();e.remote_refresh_token&&(this.owner.setStatusBusy({text:SYNO.SDS.Backup.String("hubic","load_containers")}),this.sendWebAPI({api:"SYNO.Backup.Storage.hubiC.Container",version:1,method:"list",params:e,encryption:["remote_refresh_token"],scope:this,callback:function(t,a,i){if(this.owner.clearStatusBusy(),!t)return this.loadContainerData(),this.owner.reportError(a),void delete this.lastQueryModule;this.lastQueryModule=Ext.encode(e),this.loadContainerData(a)}}))},loadContainerData:function(e){var t=this.getForm().findField("container");return SYNO.SDS.Backup.Util.comboboxLoadData(t,e?e.container_list:[],0)},getLoadTargetParams:function(){var e=this.getParams();return delete e.target_id,e},needReloadTarget:function(){var e=this.getLoadTargetParams();return this.lastQueryTarget!==Ext.encode(e)},loadTarget:function(e){var t=this.getLoadTargetParams();t.container&&this.lastQueryTarget!==Ext.encode(t)&&(this.lastQueryTarget=Ext.encode(t),t.backup_data_type="data",this.owner.setStatusBusy({text:_T("backup","search_restore_folder")}),this.owner.api.send({api:"SYNO.Backup.Target",method:"list",version:1,params:t,encryption:["remote_refresh_token"],callback:function(e,a,i){if(this.owner.clearStatusBusy(),!e)return this.owner.api.alert(a),this.loadTargetData({target_list:[]}),void delete this.lastQueryTarget;this.lastQueryTarget=Ext.encode(t),this.loadTargetData(a)},scope:this}))},loadTargetData:function(e){var t=this.getForm().findField("target");return SYNO.Backup.Util.HBKDisplayComboboxLoadData(t,e.target_list,"target_id")},setOauthResponse:function(e){this.refresh_token=e.refresh_token}}),Ext.define("SYNO.Backup.Addon.ibm_softlayer.Restore.DestStep",{extend:"SYNO.Backup.Addon.base.Restore.DestStep",comboboxWidth:270,addon_id:"ibm_softlayer_swift",target_type:"cloud_image",transfer_type:"ibm_softlayer_swift",constructor:function(e){var t=[];Ext.copyTo(this,e,"owner"),this.configFields(t),this.callParent([Ext.apply({trackResetOnLoad:!0,items:[{xtype:"syno_fieldset",defaults:{labelWidth:300},items:t}]},e)])},configFields:function(e){e.push({xtype:"syno_textfield",fieldLabel:SYNO.SDS.Backup.String("openstack","username"),name:"accesskey",width:this.comboboxWidth,allowBlank:!1},{xtype:"syno_textfield",fieldLabel:SYNO.SDS.Backup.String("openstack","api_key"),name:"secretkey",width:this.comboboxWidth,inputType:"password",allowBlank:!1},{xtype:"syno_combobox",name:"region_ibm",width:this.comboboxWidth,allowBlank:!1,store:new Ext.data.ArrayStore({fields:["value","display"],data:SYNO.SDS.Backup.Addon.Util.Image.OpenStack.ibm_softlayer_region_list(),sortInfo:{field:"display",direction:"ASC"}}),fieldLabel:SYNO.SDS.Backup.String("openstack","region"),displayField:"display",valueField:"value",editable:!1},{xtype:"syno_combobox",width:this.comboboxWidth,name:"bktselect",fieldLabel:SYNO.SDS.Backup.String("openstack","container_name"),store:new Ext.data.ArrayStore({fields:["value"]}),forceSelection:!1,valueField:"value",displayField:"value",allowBlank:!1,triggerAction:"all",mode:"local",onTriggerClick:function(){this.readOnly||this.disabled||(this.scope.needReloadBuckets()?this.scope.loadBuckets():SYNO.ux.ComboBox.prototype.onTriggerClick.call(this,arguments))},listeners:{select:this.onSelectBucket,scope:this},scope:this,tpl:'<tpl for="."><div ext:qtip="{[SYNO.SDS.Backup.Util.htmlEncodeTip(values.value)]}" class="x-combo-list-item">{value:htmlEncode}</div></tpl>'},{xtype:"syno_combobox",width:this.comboboxWidth,fieldLabel:_T("backup","backup_dest_directory"),name:"target",forceSelection:!0,editable:!1,allowBlank:!1,store:new Ext.data.ArrayStore({fields:["display","value"]}),displayField:"display",valueField:"value",triggerAction:"all",mode:"local",onTriggerClick:function(){this.readOnly||this.disabled||(this.scope.needReloadTarget()?this.scope.loadTarget():SYNO.ux.ComboBox.prototype.onTriggerClick.call(this,arguments))},scope:this,tpl:'<tpl for="."><div ext:qtip="{[SYNO.SDS.Backup.Util.htmlEncodeTip(values.value)]}" class="x-combo-list-item">{display:htmlEncode}</div></tpl>'})},getRemoteUrlValue:function(){return""},getRegionValue:function(){return this.getForm().getFieldValues().region_ibm},getUsernameValue:function(){return this.getForm().getFieldValues().accesskey},getSecretValue:function(){return this.getForm().getFieldValues().secretkey},getTenantId:function(){return""},getTenantName:function(){return""},getDomainId:function(){return""},getDomainName:function(){return""},getAuthVersion:function(){return""},onSelectBucket:function(e){this.loadTarget(e.getValue())},activate:function(){},getNext:function(){if(!this.getForm().isValid())return!1;if(!this.getForm().isDirty())return this.nextId;var e=this.getParams();return e.additional=e.additional?e.additional:[],e.additional.push("check_backup_data_type"),this.owner.setStatusBusy(),this.sendWebAPI({api:"SYNO.Backup.Target",method:"get",version:1,params:e,encryption:["secret"],callback:this.onTargetGet,scope:this}),!1},onTargetGet:function(e,t,a){return e?t.support_multi_version?(this.target_type="cloud_image","data"!==t.check_backup_data_type||"cloud_image"!==t.format_type?(this.owner.getMsgBox().alert(_T("leaf","backup"),SYNO.SDS.Backup.String("error","target_not_support")),this.owner.clearStatusBusy(),!1):(this.owner.setSingle(!1),this.owner.clearStatusBusy(),this.owner.data_enc=t.data_enc,this.owner.uni_key=t.uni_key,t.data_enc?this.launchPasswordWindow((function(){this.owner.goNext(this.nextId)})):this.owner.goNext(this.nextId),!1)):(this.owner.getMsgBox().alert(_T("leaf","backup"),SYNO.SDS.Backup.String("error","target_not_support")),this.owner.clearStatusBusy(),!1):(this.owner.targetGetErrorHandle(t),this.owner.clearStatusBusy(),!1)},launchPasswordWindow:function(e){var t=this.getParams();Ext.apply(t,{uni_key:this.owner.uni_key}),new SYNO.SDS.Backup.Client.Common.Password.Window({owner:this.owner,verify_params:t,setter:Ext.createDelegate(this.setEncKey,this),callback:Ext.createDelegate(e,this)}).open()},setEncKey:function(e){this.owner.sess_id=e.sess_id,this.owner.sess_key=e.sess_key},getParams:function(){var e=this.getForm(),t=function(t){return e.findField(t).getValue()};return{remote_url:this.getRemoteUrlValue(),region:this.getRegionValue(),key:this.getUsernameValue(),secret:this.getSecretValue(),tenant_id:this.getTenantId(),tenant_name:this.getTenantName(),domain_id:this.getDomainId(),domain_name:this.getDomainName(),auth_version:this.getAuthVersion(),bucket:t("bktselect"),target_id:t("target"),target_type:this.target_type,transfer_type:this.transfer_type}},summary:function(e){var t=this.getParams();e.append(_T("backup","restore_type"),SYNO.SDS.Backup.String("ibm_softlayer","repo_type_name")),e.append(_T("netbackup","netbkp_slct_server"),SYNO.Backup.Addon.Util.getString(t.transfer_type,"name")),e.append(_T("backup","backup_restore_source"),t.bucket+" / "+t.target_id)},getListBucketRequest:function(){return Ext.copyTo({},this.getParams(),"remote_url,region,key,secret,tenant_id,tenant_name,domain_id,domain_name,auth_version,transfer_type")},needReloadBuckets:function(){var e=this.getListBucketRequest();return this.lastQueryModule!==Ext.encode(e)},loadBuckets:function(){var e=this.getListBucketRequest();e.key&&e.secret&&(this.owner.setStatusBusy({text:SYNO.SDS.Backup.String("openstack","load_containers")}),this.sendWebAPI({api:"SYNO.Backup.Storage.OpenStack.Container",version:1,method:"list",params:e,encryption:["secret"],scope:this,callback:function(t,a,i){if(this.owner.clearStatusBusy(),!t)return this.loadBucketsData(),this.owner.reportError(a),void delete this.lastQueryModule;this.lastQueryModule=Ext.encode(e),this.loadBucketsData(a)}}))},loadBucketsData:function(e){var t=this.getForm().findField("bktselect");return SYNO.SDS.Backup.Util.comboboxLoadData(t,e?e.bucket_list:[],0)},getLoadTargetParams:function(){var e=this.getParams();return delete e.target_id,e},needReloadTarget:function(){var e=this.getLoadTargetParams();return this.lastQueryTarget!==Ext.encode(e)},loadTarget:function(e){var t=this.getLoadTargetParams();t.key&&t.secret&&t.bucket&&this.lastQueryTarget!==Ext.encode(t)&&(this.lastQueryTarget=Ext.encode(t),t.backup_data_type="data",this.owner.setStatusBusy({text:_T("backup","search_restore_folder")}),this.owner.api.send({api:"SYNO.Backup.Target",method:"list",version:1,params:t,encryption:["secret"],callback:function(e,a,i){if(this.owner.clearStatusBusy(),!e)return this.owner.api.alert(a),this.loadTargetData({target_list:[]}),void delete this.lastQueryTarget;this.lastQueryTarget=Ext.encode(t),this.loadTargetData(a)},scope:this}))},loadTargetData:function(e){var t=this.getForm().findField("target");return SYNO.Backup.Util.HBKDisplayComboboxLoadData(t,e.target_list,"target_id")}}),Ext.define("SYNO.Backup.Addon.legacy_hicloud_s3.Restore.DestStep",{extend:"SYNO.SDS.Backup.Addon.Util.S3.Restore.DestStep",constructor:function(e){var t=Ext.apply({provider:"hicloud",addon_id:"hicloud_s3"},e);return this.callParent([t])}}),Ext.define("SYNO.Backup.Addon.legacy_sfr_s3.Restore.DestStep",{extend:"SYNO.SDS.Backup.Addon.Util.S3.Restore.DestStep",constructor:function(e){var t=Ext.apply({provider:"sfr",addon_id:"sfr_s3"},e);return this.callParent([t])}}),Ext.define("SYNO.Backup.Addon.local.Restore.DestStep",{extend:"SYNO.Backup.Addon.base.Restore.DestStep",comboboxWidth:270,constructor:function(e){Ext.copyTo(this,e,"owner"),this.setDefault();var t=[];this.addLocalBackupFields(t),this.callParent([Ext.apply({items:[{xtype:"syno_fieldset",defaults:{labelWidth:300},items:t}]},e)])},setDefault:function(){this.target_type="image",this.transfer_type="image_local",this.repo_path=""},addLocalBackupFields:function(e){e.push({xtype:"syno_combobox",fieldLabel:_T("backup","local_restore_rcvr_folder"),name:"share",forceSelection:!0,editable:!1,allowBlank:!1,store:new Ext.data.ArrayStore({fields:["value"]}),displayField:"value",valueField:"value",triggerAction:"all",mode:"local",width:this.comboboxWidth,listeners:{scope:this,select:this.onShareSelect},tpl:'<tpl for="."><div ext:qtip="{[SYNO.SDS.Backup.Util.htmlEncodeTip(values.value)]}" class="x-combo-list-item">{value:htmlEncode}</div></tpl>'},{xtype:"syno_combobox",fieldLabel:_T("backup","backup_dest_directory"),emptyText:SYNO.SDS.Backup.String("app","no_target_available"),name:"local_target",forceSelection:!0,editable:!1,allowBlank:!1,store:new Ext.data.ArrayStore({fields:["display","value"]}),displayField:"display",valueField:"value",triggerAction:"all",mode:"local",width:this.comboboxWidth,tpl:'<tpl for="."><div ext:qtip="{[SYNO.SDS.Backup.Util.htmlEncodeTip(values.value)]}" class="x-combo-list-item">{display:htmlEncode}</div></tpl>'})},onShareSelect:function(e,t,a){this.loadLocalTarget(e.getValue())},getOption:function(){return this.target_type},getNext:function(){return!!this.getForm().isValid()&&(this.setDefault(),this.owner.setStatusBusy(),this.sendWebAPI({api:"SYNO.Backup.Target",method:"get",version:1,params:Ext.apply(this.getParams(),{additional:["repo_path"]}),callback:this.onTargetGet,scope:this}),!1)},onTargetGet:function(e,t,a){return e?(t.support_multi_version?(this.target_type="image",this.transfer_type="image_local"):(this.target_type="share",this.transfer_type="local"),"cloud_image"===t.format_type&&(this.transfer_type="browse_local",this.repo_path=t.repo_path),this.owner.setSingle("share"===this.target_type),this.owner.clearStatusBusy(),this.owner.data_enc=t.data_enc,this.owner.uni_key=t.uni_key,t.data_enc?this.launchPasswordWindow((function(){this.owner.goNext(this.nextId)})):this.owner.goNext(this.nextId),!1):(this.owner.targetGetErrorHandle(t),this.owner.clearStatusBusy(),!1)},launchPasswordWindow:function(e){var t=this.getParams();Ext.apply(t,{uni_key:this.owner.uni_key}),new SYNO.SDS.Backup.Client.Common.Password.Window({owner:this.owner,verify_params:t,setter:Ext.createDelegate(this.setEncKey,this),callback:Ext.createDelegate(e,this)}).open()},setEncKey:function(e){this.owner.sess_id=e.sess_id,this.owner.sess_key=e.sess_key},getParams:function(){var e=this.getForm(),t=function(t){return e.findField(t).getValue()},a={target_type:this.target_type,transfer_type:this.transfer_type,share:t("share"),target_id:t("local_target")};return"browse_local"===this.transfer_type&&Ext.apply(a,{abs_path:this.repo_path}),a},summary:function(e){var t=this.getParams();e.append(_T("backup","restore_type"),SYNO.SDS.Backup.String("local","repo_type_name_2")),e.append(_T("backup","backup_restore_source"),t.share+" / "+t.target_id)},loadData:function(e){var t;return this.loadShareData(e.result[0].result_list[0])&&(t=t||"share"),!!t&&(this.getForm().setValues({target_type:t}),!0)},loadShareData:function(e){var t=this.getForm().findField("share"),a=this.getForm().findField("local_target");return SYNO.SDS.Backup.Util.comboboxLoadData(t,e.share_list),SYNO.Backup.Util.HBKDisplayComboboxLoadData(a,e.target_list,"target_id"),!!(e.share_list&&e.share_list.length>0)&&(a.lastSelectShare=e.share_list[0],!0)},loadLocalTarget:function(e){this.lastSelectedShare!==e&&(this.owner.setStatusBusy({text:_T("backup","search_restore_folder")}),this.owner.api.send({api:"SYNO.Backup.Target",method:"list",params:{target_type:"image",transfer_type:"image_local",share:e,backup_data_type:"data"},version:1,callback:function(t,a,i){this.owner.clearStatusBusy(),t?(this.lastSelectShare=e,this.loadLocalTargetData(a)):this.owner.api.alert(a)},scope:this}))},loadLocalTargetData:function(e){var t=this.getForm().findField("local_target");return SYNO.Backup.Util.HBKDisplayComboboxLoadData(t,e.target_list,"target_id")}}),Ext.define("SYNO.Backup.Addon.openstack.Restore.DestStep",{extend:"SYNO.Backup.Addon.base.Restore.DestStep",comboboxWidth:270,addon_id:"openstack_swift",target_type:"cloud_image",transfer_type:"openstack_swift",constructor:function(e){var t=[];Ext.copyTo(this,e,"owner"),this.configFields(t),this.callParent([Ext.apply({trackResetOnLoad:!0,items:[{xtype:"syno_fieldset",defaults:{labelWidth:300},items:t}]},e)])},configFields:function(e){e.push({xtype:"syno_textfield",name:"remote_url",width:this.comboboxWidth,allowBlank:!1,fieldLabel:SYNO.SDS.Backup.String("openstack","url")},{xtype:"syno_combobox",name:"auth_version",width:this.comboboxWidth,allowBlank:!1,store:new Ext.data.ArrayStore({fields:["version","value"],data:[["1.0","1.0"],["2.0","2.0"],["3.0","3.0"]]}),fieldLabel:SYNO.SDS.Backup.String("openstack","identity_service_version"),displayField:"version",valueField:"value",value:"1.0",editable:!1,listeners:{select:function(e,t,a){this.changeVersionLayout(t.get("value")),this.doLayout()},scope:this}},{xtype:"syno_textfield",fieldLabel:SYNO.SDS.Backup.String("openstack","username"),name:"accesskey",width:this.comboboxWidth,allowBlank:!1},{xtype:"syno_textfield",fieldLabel:SYNO.SDS.Backup.String("openstack","api_key"),name:"secretkey",width:this.comboboxWidth,inputType:"password",allowBlank:!1},{xtype:"syno_textfield",name:"secretkey_pw",width:this.comboboxWidth,allowBlank:!1,inputType:"password",fieldLabel:SYNO.SDS.Backup.String("app","task_password_input"),hidden:!0,disabled:!0},{xtype:"syno_compositefield",name:"tenant_compositefield",width:this.comboboxWidth,fieldLabel:SYNO.SDS.Backup.String("openstack","tenant"),items:[{xtype:"syno_combobox",name:"tenant_option",width:80,store:new Ext.data.ArrayStore({fields:["display","value"],data:[["id","tenant_id"],["name","tenant_name"]]}),displayField:"display",valueField:"value",value:"tenant_id",allowBlank:!1,editable:!1},{xtype:"syno_textfield",name:"tenant_value",width:this.comboboxWidth-80-6,allowBlank:!0}],hidden:!0,disabled:!0},{xtype:"syno_compositefield",name:"domain_compositefield",width:this.comboboxWidth,fieldLabel:SYNO.SDS.Backup.String("openstack","domain"),items:[{xtype:"syno_combobox",name:"domain_option",width:80,store:new Ext.data.ArrayStore({fields:["display","value"],data:[["id","domain_id"],["name","domain_name"]]}),displayField:"display",valueField:"value",value:"domain_id",allowBlank:!1,editable:!1},{xtype:"syno_textfield",name:"domain_value",width:this.comboboxWidth-80-6,allowBlank:!1}],hidden:!0,disabled:!0},{xtype:"syno_combobox",name:"region_cust",width:this.comboboxWidth,fieldLabel:SYNO.SDS.Backup.String("openstack","region"),store:this.getRegionStore(),displayField:"display",allowBlank:!1,valueField:"value",editable:!1,scope:this,onTriggerClick:function(){this.readOnly||this.disabled||(this.scope.needReloadRegion()?this.scope.loadRegionStore():SYNO.ux.ComboBox.prototype.onTriggerClick.call(this,arguments))},hidden:!0,disabled:!0},{xtype:"syno_combobox",width:this.comboboxWidth,name:"bktselect",fieldLabel:SYNO.SDS.Backup.String("openstack","container_name"),store:new Ext.data.ArrayStore({fields:["value"]}),forceSelection:!1,valueField:"value",displayField:"value",allowBlank:!1,triggerAction:"all",mode:"local",onTriggerClick:function(){this.readOnly||this.disabled||(this.scope.needReloadBuckets()?this.scope.loadBuckets():SYNO.ux.ComboBox.prototype.onTriggerClick.call(this,arguments))},listeners:{select:this.onSelectBucket,scope:this},scope:this,tpl:'<tpl for="."><div ext:qtip="{[SYNO.SDS.Backup.Util.htmlEncodeTip(values.value)]}" class="x-combo-list-item">{value:htmlEncode}</div></tpl>'},{xtype:"syno_combobox",width:this.comboboxWidth,fieldLabel:_T("backup","backup_dest_directory"),name:"target",forceSelection:!0,editable:!1,allowBlank:!1,store:new Ext.data.ArrayStore({fields:["display","value"]}),displayField:"display",valueField:"value",triggerAction:"all",mode:"local",onTriggerClick:function(){this.readOnly||this.disabled||(this.scope.needReloadTarget()?this.scope.loadTarget():SYNO.ux.ComboBox.prototype.onTriggerClick.call(this,arguments))},scope:this,tpl:'<tpl for="."><div ext:qtip="{[SYNO.SDS.Backup.Util.htmlEncodeTip(values.value)]}" class="x-combo-list-item">{display:htmlEncode}</div></tpl>'})},changeVersionLayout:function(e){var t=this.getForm(),a=function(e,a){t.findField(e).setDisabled(!a),t.findField(e).setVisible(a)},i=function(e,t,i,n,s){a("secretkey",e),a("secretkey_pw",t),a("tenant_compositefield",i),a("domain_compositefield",n),a("region_cust",s)};if("1.0"===e)i(!0,!1,!1,!1,!1);else if("2.0"===e)i(!1,!0,!0,!1,!0);else{if("3.0"!==e)return;i(!1,!0,!0,!0,!0)}},getRemoteUrlValue:function(){var e=this.getForm().getFieldValues().remote_url.trim();return"http://"!==e.substring(0,7)&&"https://"!==e.substring(0,8)?"https://"+e:e},getRegionValue:function(){var e=this.getForm().getFieldValues();return"2.0"===e.auth_version||"3.0"===e.auth_version?e.region_cust:""},getUsernameValue:function(){return this.getForm().getFieldValues().accesskey},getSecretValue:function(){var e=this.getForm().getFieldValues();return"2.0"===e.auth_version||"3.0"===e.auth_version?e.secretkey_pw:e.secretkey},getTenantId:function(){var e=this.getForm().getFieldValues(),t=this.getForm(),a=function(e){return t.findField(e).getValue()};return"2.0"!==e.auth_version&&"3.0"!==e.auth_version||"tenant_id"!==a("tenant_option")?"":a("tenant_value")},getTenantName:function(){var e=this.getForm().getFieldValues(),t=this.getForm(),a=function(e){return t.findField(e).getValue()};return"2.0"!==e.auth_version&&"3.0"!==e.auth_version||"tenant_name"!==a("tenant_option")?"":a("tenant_value")},getDomainId:function(){var e=this.getForm().getFieldValues(),t=this.getForm(),a=function(e){return t.findField(e).getValue()};return"3.0"===e.auth_version&&"domain_id"===a("domain_option")?a("domain_value"):""},getDomainName:function(){var e=this.getForm().getFieldValues(),t=this.getForm(),a=function(e){return t.findField(e).getValue()};return"3.0"===e.auth_version&&"domain_name"===a("domain_option")?a("domain_value"):""},getAuthVersion:function(){return this.getForm().getFieldValues().auth_version},onSelectBucket:function(e){this.loadTarget(e.getValue())},activate:function(){},getNext:function(){if(!this.getForm().isValid())return!1;if(!this.getForm().isDirty())return this.nextId;var e=this.getParams();return e.additional=e.additional?e.additional:[],e.additional.push("check_backup_data_type"),this.owner.setStatusBusy(),this.sendWebAPI({api:"SYNO.Backup.Target",method:"get",version:1,params:e,encryption:["secret"],callback:this.onTargetGet,scope:this}),!1},onTargetGet:function(e,t,a){return e?t.support_multi_version?(this.target_type="cloud_image","data"!==t.check_backup_data_type||"cloud_image"!==t.format_type?(this.owner.getMsgBox().alert(_T("leaf","backup"),SYNO.SDS.Backup.String("error","target_not_support")),this.owner.clearStatusBusy(),!1):(this.owner.setSingle(!1),this.owner.clearStatusBusy(),this.owner.data_enc=t.data_enc,this.owner.uni_key=t.uni_key,t.data_enc?this.launchPasswordWindow((function(){this.owner.goNext(this.nextId)})):this.owner.goNext(this.nextId),!1)):(this.owner.getMsgBox().alert(_T("leaf","backup"),SYNO.SDS.Backup.String("error","target_not_support")),this.owner.clearStatusBusy(),!1):(this.owner.targetGetErrorHandle(t),this.owner.clearStatusBusy(),!1)},launchPasswordWindow:function(e){var t=this.getParams();Ext.apply(t,{uni_key:this.owner.uni_key}),new SYNO.SDS.Backup.Client.Common.Password.Window({owner:this.owner,verify_params:t,setter:Ext.createDelegate(this.setEncKey,this),callback:Ext.createDelegate(e,this)}).open()},setEncKey:function(e){this.owner.sess_id=e.sess_id,this.owner.sess_key=e.sess_key},getParams:function(){var e=this.getForm(),t=function(t){return e.findField(t).getValue()};return{remote_url:this.getRemoteUrlValue(),region:this.getRegionValue(),key:this.getUsernameValue(),secret:this.getSecretValue(),tenant_id:this.getTenantId(),tenant_name:this.getTenantName(),domain_id:this.getDomainId(),domain_name:this.getDomainName(),auth_version:this.getAuthVersion(),bucket:t("bktselect"),target_id:t("target"),target_type:this.target_type,transfer_type:this.transfer_type}},summary:function(e){var t=this.getParams();e.append(_T("backup","restore_type"),SYNO.SDS.Backup.String("openstack","repo_type_name")),e.append(_T("netbackup","netbkp_slct_server"),t.remote_url),e.append(_T("backup","backup_restore_source"),t.bucket+" / "+t.target_id)},getRegionStore:function(){return this.regionStore||(this.regionStore=new Ext.data.ArrayStore({fields:["value","display"],sortInfo:{field:"display",direction:"ASC"}})),this.regionStore},getLoadRegionParams:function(){return Ext.copyTo({},this.getParams(),"remote_url,key,secret,tenant_id,tenant_name,domain_id,domain_name,auth_version,transfer_type")},needReloadRegion:function(){var e=this.getLoadRegionParams();return this.lastRegionQuery!==Ext.encode(e)},loadRegionStore:function(){var e=this.getLoadRegionParams();this.owner.setStatusBusy(),this.sendWebAPI({api:"SYNO.Backup.Storage.OpenStack.Region",version:1,method:"list",encryption:["secret"],params:e,scope:this,callback:function(t,a,i){if(this.owner.clearStatusBusy(),t){this.lastRegionQuery=Ext.encode(e),this.getRegionStore().loadData(SYNO.SDS.Backup.Addon.Util.Image.OpenStack.region_name_mapping(a.region_list));var n=this.getForm().findField("region_cust");n.el.focus(),n.expand(),n.restrictHeight()}else this.owner.reportError(a)}})},getListBucketRequest:function(){return Ext.copyTo({},this.getParams(),"remote_url,region,key,secret,tenant_id,tenant_name,domain_id,domain_name,auth_version,transfer_type")},needReloadBuckets:function(){var e=this.getListBucketRequest();return this.lastQueryModule!==Ext.encode(e)},loadBuckets:function(){var e=this.getListBucketRequest();e.key&&e.secret&&(this.owner.setStatusBusy({text:SYNO.SDS.Backup.String("openstack","load_containers")}),this.sendWebAPI({api:"SYNO.Backup.Storage.OpenStack.Container",version:1,method:"list",params:e,encryption:["secret"],scope:this,callback:function(t,a,i){if(this.owner.clearStatusBusy(),!t)return this.loadBucketsData(),this.owner.reportError(a),void delete this.lastQueryModule;this.lastQueryModule=Ext.encode(e),this.loadBucketsData(a)}}))},loadBucketsData:function(e){var t=this.getForm().findField("bktselect");return SYNO.SDS.Backup.Util.comboboxLoadData(t,e?e.bucket_list:[],0)},getLoadTargetParams:function(){var e=this.getParams();return delete e.target_id,e},needReloadTarget:function(){var e=this.getLoadTargetParams();return this.lastQueryTarget!==Ext.encode(e)},loadTarget:function(e){var t=this.getLoadTargetParams();t.key&&t.secret&&t.bucket&&this.lastQueryTarget!==Ext.encode(t)&&(this.lastQueryTarget=Ext.encode(t),t.backup_data_type="data",this.owner.setStatusBusy({text:_T("backup","search_restore_folder")}),this.owner.api.send({api:"SYNO.Backup.Target",method:"list",version:1,params:t,encryption:["secret"],callback:function(e,a,i){if(this.owner.clearStatusBusy(),!e)return this.owner.api.alert(a),this.loadTargetData({target_list:[]}),void delete this.lastQueryTarget;this.lastQueryTarget=Ext.encode(t),this.loadTargetData(a)},scope:this}))},loadTargetData:function(e){var t=this.getForm().findField("target");return SYNO.Backup.Util.HBKDisplayComboboxLoadData(t,e.target_list,"target_id")}}),Ext.define("SYNO.Backup.Addon.rackspace.Restore.DestStep",{extend:"SYNO.Backup.Addon.base.Restore.DestStep",comboboxWidth:270,addon_id:"rackspace_swift",target_type:"cloud_image",transfer_type:"rackspace_swift",constructor:function(e){var t=[];Ext.copyTo(this,e,"owner"),this.configFields(t),this.callParent([Ext.apply({trackResetOnLoad:!0,items:[{xtype:"syno_fieldset",defaults:{labelWidth:300},items:t}]},e)])},configFields:function(e){e.push({xtype:"syno_textfield",fieldLabel:SYNO.SDS.Backup.String("openstack","username"),name:"accesskey",width:this.comboboxWidth,allowBlank:!1},{xtype:"syno_textfield",fieldLabel:SYNO.SDS.Backup.String("openstack","api_key"),name:"secretkey",width:this.comboboxWidth,inputType:"password",allowBlank:!1},{xtype:"syno_combobox",name:"region_cust",width:this.comboboxWidth,fieldLabel:SYNO.SDS.Backup.String("openstack","region"),store:this.getRegionStore(),displayField:"display",allowBlank:!1,valueField:"value",editable:!1,scope:this,onTriggerClick:function(){this.readOnly||this.disabled||(this.scope.needReloadRegion()?this.scope.loadRegionStore():SYNO.ux.ComboBox.prototype.onTriggerClick.call(this,arguments))}},{xtype:"syno_combobox",width:this.comboboxWidth,name:"bktselect",fieldLabel:SYNO.SDS.Backup.String("openstack","container_name"),store:new Ext.data.ArrayStore({fields:["value"]}),forceSelection:!1,valueField:"value",displayField:"value",allowBlank:!1,triggerAction:"all",mode:"local",onTriggerClick:function(){this.readOnly||this.disabled||(this.scope.needReloadBuckets()?this.scope.loadBuckets():SYNO.ux.ComboBox.prototype.onTriggerClick.call(this,arguments))},listeners:{select:this.onSelectBucket,scope:this},scope:this,tpl:'<tpl for="."><div ext:qtip="{[SYNO.SDS.Backup.Util.htmlEncodeTip(values.value)]}" class="x-combo-list-item">{value:htmlEncode}</div></tpl>'},{xtype:"syno_combobox",width:this.comboboxWidth,fieldLabel:_T("backup","backup_dest_directory"),name:"target",forceSelection:!0,editable:!1,allowBlank:!1,store:new Ext.data.ArrayStore({fields:["display","value"]}),displayField:"display",valueField:"value",triggerAction:"all",mode:"local",onTriggerClick:function(){this.readOnly||this.disabled||(this.scope.needReloadTarget()?this.scope.loadTarget():SYNO.ux.ComboBox.prototype.onTriggerClick.call(this,arguments))},scope:this,tpl:'<tpl for="."><div ext:qtip="{[SYNO.SDS.Backup.Util.htmlEncodeTip(values.value)]}" class="x-combo-list-item">{display:htmlEncode}</div></tpl>'})},getRemoteUrlValue:function(){return""},getRegionValue:function(){return this.getForm().getFieldValues().region_cust},getUsernameValue:function(){return this.getForm().getFieldValues().accesskey},getSecretValue:function(){return this.getForm().getFieldValues().secretkey},getTenantId:function(){return""},getTenantName:function(){return""},getDomainId:function(){return""},getDomainName:function(){return""},getAuthVersion:function(){return""},onSelectBucket:function(e){this.loadTarget(e.getValue())},activate:function(){},getNext:function(){if(!this.getForm().isValid())return!1;if(!this.getForm().isDirty())return this.nextId;var e=this.getParams();return e.additional=e.additional?e.additional:[],e.additional.push("check_backup_data_type"),this.owner.setStatusBusy(),this.sendWebAPI({api:"SYNO.Backup.Target",method:"get",version:1,params:e,encryption:["secret"],callback:this.onTargetGet,scope:this}),!1},onTargetGet:function(e,t,a){return e?t.support_multi_version?(this.target_type="cloud_image","data"!==t.check_backup_data_type||"cloud_image"!==t.format_type?(this.owner.getMsgBox().alert(_T("leaf","backup"),SYNO.SDS.Backup.String("error","target_not_support")),this.owner.clearStatusBusy(),!1):(this.owner.setSingle(!1),this.owner.clearStatusBusy(),this.owner.data_enc=t.data_enc,this.owner.uni_key=t.uni_key,t.data_enc?this.launchPasswordWindow((function(){this.owner.goNext(this.nextId)})):this.owner.goNext(this.nextId),!1)):(this.owner.getMsgBox().alert(_T("leaf","backup"),SYNO.SDS.Backup.String("error","target_not_support")),this.owner.clearStatusBusy(),!1):(this.owner.targetGetErrorHandle(t),this.owner.clearStatusBusy(),!1)},launchPasswordWindow:function(e){var t=this.getParams();Ext.apply(t,{uni_key:this.owner.uni_key}),new SYNO.SDS.Backup.Client.Common.Password.Window({owner:this.owner,verify_params:t,setter:Ext.createDelegate(this.setEncKey,this),callback:Ext.createDelegate(e,this)}).open()},setEncKey:function(e){this.owner.sess_id=e.sess_id,this.owner.sess_key=e.sess_key},getParams:function(){var e=this.getForm(),t=function(t){return e.findField(t).getValue()};return{remote_url:this.getRemoteUrlValue(),region:this.getRegionValue(),key:this.getUsernameValue(),secret:this.getSecretValue(),tenant_id:this.getTenantId(),tenant_name:this.getTenantName(),domain_id:this.getDomainId(),domain_name:this.getDomainName(),auth_version:this.getAuthVersion(),bucket:t("bktselect"),target_id:t("target"),target_type:this.target_type,transfer_type:this.transfer_type}},summary:function(e){var t=this.getParams();e.append(_T("backup","restore_type"),SYNO.SDS.Backup.String("rackspace","repo_type_name")),e.append(_T("netbackup","netbkp_slct_server"),SYNO.Backup.Addon.Util.getString(t.transfer_type,"name")),e.append(_T("backup","backup_restore_source"),t.bucket+" / "+t.target_id)},getRegionStore:function(){return this.regionStore||(this.regionStore=new Ext.data.ArrayStore({fields:["value","display"],sortInfo:{field:"display",direction:"ASC"}})),this.regionStore},getLoadRegionParams:function(){return Ext.copyTo({},this.getParams(),"remote_url,key,secret,tenant_id,tenant_name,domain_id,domain_name,auth_version,transfer_type")},needReloadRegion:function(){var e=this.getLoadRegionParams();return this.lastRegionQuery!==Ext.encode(e)},loadRegionStore:function(){var e=this.getLoadRegionParams();this.owner.setStatusBusy(),this.sendWebAPI({api:"SYNO.Backup.Storage.OpenStack.Region",version:1,method:"list",encryption:["secret"],params:e,scope:this,callback:function(t,a,i){if(this.owner.clearStatusBusy(),t){this.lastRegionQuery=Ext.encode(e),this.getRegionStore().loadData(SYNO.SDS.Backup.Addon.Util.Image.OpenStack.region_name_mapping(a.region_list));var n=this.getForm().findField("region_cust");n.el.focus(),n.expand(),n.restrictHeight()}else this.owner.reportError(a)}})},getListBucketRequest:function(){return Ext.copyTo({},this.getParams(),"remote_url,region,key,secret,tenant_id,tenant_name,domain_id,domain_name,auth_version,transfer_type")},needReloadBuckets:function(){var e=this.getListBucketRequest();return this.lastQueryModule!==Ext.encode(e)},loadBuckets:function(){var e=this.getListBucketRequest();e.key&&e.secret&&(this.owner.setStatusBusy({text:SYNO.SDS.Backup.String("openstack","load_containers")}),this.sendWebAPI({api:"SYNO.Backup.Storage.OpenStack.Container",version:1,method:"list",params:e,encryption:["secret"],scope:this,callback:function(t,a,i){if(this.owner.clearStatusBusy(),!t)return this.loadBucketsData(),this.owner.reportError(a),void delete this.lastQueryModule;this.lastQueryModule=Ext.encode(e),this.loadBucketsData(a)}}))},loadBucketsData:function(e){var t=this.getForm().findField("bktselect");return SYNO.SDS.Backup.Util.comboboxLoadData(t,e?e.bucket_list:[],0)},getLoadTargetParams:function(){var e=this.getParams();return delete e.target_id,e},needReloadTarget:function(){var e=this.getLoadTargetParams();return this.lastQueryTarget!==Ext.encode(e)},loadTarget:function(e){var t=this.getLoadTargetParams();t.key&&t.secret&&t.bucket&&this.lastQueryTarget!==Ext.encode(t)&&(this.lastQueryTarget=Ext.encode(t),t.backup_data_type="data",this.owner.setStatusBusy({text:_T("backup","search_restore_folder")}),this.owner.api.send({api:"SYNO.Backup.Target",method:"list",version:1,params:t,encryption:["secret"],callback:function(e,a,i){if(this.owner.clearStatusBusy(),!e)return this.owner.api.alert(a),this.loadTargetData({target_list:[]}),void delete this.lastQueryTarget;this.lastQueryTarget=Ext.encode(t),this.loadTargetData(a)},scope:this}))},loadTargetData:function(e){var t=this.getForm().findField("target");return SYNO.Backup.Util.HBKDisplayComboboxLoadData(t,e.target_list,"target_id")}}),Ext.define("SYNO.Backup.Addon.remote.Restore.DestStep",{extend:"SYNO.Backup.Addon.base.Restore.DestStep",comboboxWidth:270,constructor:function(e){Ext.copyTo(this,e,"owner"),this.repoType="share",this.fieldLabelWidth=300;var t=this.fillConfig(e);this.callParent([t])},fillConfig:function(e){var t=Ext.apply({trackResetOnLoad:!0,items:[{xtype:"syno_fieldset",defaults:{labelWidth:this.fieldLabelWidth},items:[new SYNO.SDS.Backup.HostCombobox({name:"server",width:this.comboboxWidth,owner:this.owner}),{xtype:"syno_combobox",name:"sslcheck",width:this.comboboxWidth,fieldLabel:SYNO.SDS.Backup.String("remote","transfer_encryption"),allowBlank:!1,store:new Ext.data.ArrayStore({fields:["text","value"],data:[[SYNO.SDS.Backup.String("app","on"),!0],[SYNO.SDS.Backup.String("app","off"),!1]]}),displayField:"text",valueField:"value",editable:!1,value:!1},{xtype:"syno_numberfield",width:this.comboboxWidth,maxlength:5,vtype:"port",name:"port",value:6281,allowBlank:!1,fieldLabel:_T("common","port")},{xtype:"syno_displayfield",name:"account",hidden:!0},{xtype:"syno_displayfield",name:"password",hidden:!0},{xtype:"syno_displayfield",name:"is_webapi_authen",value:"false",hidden:!0},{xtype:"syno_compositefield",fieldLabel:SYNO.SDS.Backup.String("app","authenticate"),width:this.comboboxWidth,items:[{xtype:"syno_displayfield",name:"account_display_name"},{xtype:"syno_button",name:"account_authen",text:SYNO.SDS.Backup.String("app","login"),itemId:"authenticate_button",handler:this.onAuthenBtnClick,scope:this}]},{xtype:"syno_combobox",fieldLabel:_T("netbackup","restore_share_folder"),name:"share",forceSelection:!0,editable:!1,allowBlank:!1,store:new Ext.data.ArrayStore({fields:["value"]}),displayField:"value",valueField:"value",triggerAction:"all",mode:"local",width:this.comboboxWidth,onTriggerClick:function(){this.readOnly||this.disabled||(this.scope.needReloadShare()?this.scope.loadShare():SYNO.ux.ComboBox.prototype.onTriggerClick.call(this,arguments))},listeners:{scope:this,select:this.onShareSelect},scope:this,tpl:'<tpl for="."><div ext:qtip="{[SYNO.SDS.Backup.Util.htmlEncodeTip(values.value)]}" class="x-combo-list-item">{value:htmlEncode}</div></tpl>'},{xtype:"syno_combobox",fieldLabel:_T("backup","backup_dest_directory"),name:"network_target",forceSelection:!0,editable:!1,allowBlank:!1,store:new Ext.data.ArrayStore({fields:["display","value"]}),displayField:"display",valueField:"value",triggerAction:"all",mode:"local",width:this.comboboxWidth,onTriggerClick:function(){this.readOnly||this.disabled||(this.scope.needReloadTarget()?this.scope.loadTarget():SYNO.ux.ComboBox.prototype.onTriggerClick.call(this,arguments))},scope:this,tpl:'<tpl for="."><div ext:qtip="{[SYNO.SDS.Backup.Util.htmlEncodeTip(values.value)]}" class="x-combo-list-item">{display:htmlEncode}</div></tpl>'}]}]},e);return t},authenCB:function(e){SYNO.Debug(e),"code"in e?1001!==e.code&&this.owner.getMsgBox().alert(_T("tree","leaf_backup"),SYNO.SDS.Backup.GetErrorString(SYNO.SDS.Backup.ERR_SERVICE_DISABLE)):(this.getForm().findField("account").setValue(e.username),SYNO.Backup.Util.DisplayAccount(this.getForm().findField("account_display_name"),e.username,15),this.getForm().findField("password").setValue(e.id),this.getForm().findField("is_webapi_authen").setValue(!0),this.doLayout()),this.owner.clearStatusBusy()},onAuthenBtnClick:function(){var e=this.getForm().findField("server");if(e.isValid()){this.owner.setStatusBusy();var t=this.getParams();t.ip=e.getValue(),t.port=this.getForm().findField("port").getValue(),this.sendWebAPI({api:"SYNO.Backup.Repository.LoginPort",version:1,method:"get",params:t,scope:this,callback:function(e,a,i){if(!e)return a.code==SYNO.SDS.Backup.ERR_NO_RESPONSE&&(a.code=SYNO.SDS.Backup.ERR_SERVICE_DISABLE),this.owner.reportError(a),this.owner.clearStatusBusy(),!1;var n={url:"",forceLegacyMode:!1,session:"HyperBackupVault",appWin:this.owner,callback:this.authenCB.bind(this),redirect_uri:window.location.origin};a.port>0?n.url="https://"+t.ip+":"+a.port:(n.forceLegacy=!0,n.mustHaveCredential=!0),"true"===Ext.urlDecode(location.search.substr(1)).forceLegacy&&(n.forceLegacy=!0),synocredential.Issue(n)}})}else e.markInvalid(_T("netbackup","netbkp_err_host_str"))},getHostParams:function(){var e=this.getForm(),t=function(t){return e.findField(t).getValue()};return{dest:e.findField("server").getHostAddress(),port:t("port"),account:t("account"),pwd:t("password"),is_webapi_authen:t("is_webapi_authen"),target_type:this.target_type,transfer_type:this.transfer_type,sslcheck:t("sslcheck")}},getParams:function(){var e=this.getForm(),t=function(t){return e.findField(t).getValue()},a=this.getHostParams();return Ext.apply(a,{share:t("share"),target_id:t("network_target")}),"rsync_ds"===a.transfer_type&&(a.sslcheck?a.encrypt_connect=!0:a.encrypt_connect=!1,a.port=0,delete a.sslcheck),"volume"===this.repoType&&(a.volume=t("share"),delete a.share),a},needReloadShare:function(){var e=this.getHostParams();return this.lastShareParams!==Ext.encode(e)},needReloadTarget:function(){var e=this.getParams();return delete e.target_id,this.lastTargetParams!==Ext.encode(e)},loadShare:function(){var e=this.getHostParams();Ext.apply(e,{connect_list:[{target_type:e.target_type,transfer_type:e.transfer_type,port:e.port}],additional:["support_ssl"]}),e.account&&e.dest&&!Ext.isEmpty(e.port,!1)&&(this.owner.setStatusBusy({text:_T("netbackup","netbkp_wait_server")}),this.sendWebAPI({api:"SYNO.Backup.Repository",method:"find",version:1,params:e,encryption:["pwd"],callback:function(e,t,a){this.owner.clearStatusBusy(),e?0!==t.result_list[0].share_list.length||0!==t.result_list[0].volume_list.length?(t.result_list[0].support_ssl||this.getForm().findField("sslcheck").setValue(!1),this.lastShareParams=Ext.encode(this.getHostParams()),this.loadShareData(t.result_list[0])):this.owner.getMsgBox().alert(_T("leaf","backup"),SYNO.SDS.Backup.String("error","dest_no_repo")):this.owner.api.alert(t)},scope:this}))},loadTarget:function(){var e=this.getParams();delete e.target_id,e.account&&e.dest&&!Ext.isEmpty(e.port,!1)&&(e.share||e.volume)&&(e.backup_data_type=this.backup_data_type,this.owner.setStatusBusy({text:_T("backup","search_restore_folder")}),this.sendWebAPI({api:"SYNO.Backup.Target",method:"list",version:1,params:e,encryption:["pwd"],callback:function(t,a,i){if(this.owner.clearStatusBusy(),!t)return this.removeTargetData(),this.owner.api.alert(a),void delete this.lastTargetParams;this.lastTargetParams=Ext.encode(e),this.loadTargetData(a)},scope:this}))},onShareSelect:function(){this.needReloadTarget()&&this.loadTarget()},loadShareData:function(e){var t=this.getForm().findField("share"),a=this.getForm().findField("network_target");e.share_list&&e.share_list.length>0?(this.repoType="share",SYNO.SDS.Backup.Util.comboboxLoadData(t,e.share_list)):e.volume_list&&e.volume_list.length>0?(this.repoType="volume",SYNO.SDS.Backup.Util.comboboxLoadData(t,e.volume_list)):(SYNO.SDS.Backup.Util.comboboxLoadData(t,[]),SYNO.SDS.Backup.Util.comboboxLoadData(a,[]),e.code?this.owner.api.alert(SYNO.SDS.Backup.GetErrorString(e.code)):this.owner.api.alert(_T("netbackup","err_no_share")))},loadTargetData:function(e){var t=this.getForm().findField("network_target");return SYNO.Backup.Util.HBKDisplayComboboxLoadData(t,e.target_list,"target_id")},removeTargetData:function(){var e=this.getForm().findField("network_target");e.getStore().removeAll(),e.setValue("")},getNext:function(){return!!this.getForm().isValid()&&(this.owner.setStatusBusy(),this.sendWebAPI({api:"SYNO.Backup.Target",method:"get",version:1,params:this.getParams(),encryption:["pwd"],callback:this.onTargetGet,scope:this}),!1)},onTargetGet:function(e,t,a){if(!e)return this.owner.targetGetErrorHandle(t),void this.owner.clearStatusBusy();if(this.owner.setSingle(!1),this.owner.clearStatusBusy(),this.owner.data_enc=t.data_enc,this.owner.uni_key=t.uni_key,"cloud_image"===t.format_type)this.transfer_type="rsync_ds",this.target_type="cloud_image";else if("single"===t.format_type)return this.owner.getMsgBox().alert(_T("leaf","backup"),SYNO.SDS.Backup.String("error","target_not_support")),this.owner.clearStatusBusy(),!1;t.data_enc?this.launchPasswordWindow((function(){this.owner.goNext(this.nextId)})):this.owner.goNext(this.nextId)},launchPasswordWindow:function(e){var t=Ext.apply(this.getParams(),{uni_key:this.owner.uni_key});new SYNO.SDS.Backup.Client.Common.Password.Window({owner:this.owner,verify_params:t,setter:Ext.createDelegate((function(e){this.owner.sess_id=e.sess_id,this.owner.sess_key=e.sess_key}),this),callback:Ext.createDelegate(e,this)}).open()},summary:function(e){var t=this.getParams();"rsync_ds"===t.transfer_type?(e.append(_T("backup","restore_type"),SYNO.SDS.Backup.String("rsync","repo_type_name_2")),e.append(_T("netbackup","netbkp_slct_server"),String.format(SYNO.SDS.Backup.String("rsync","synology_rsync_server"),_D("company_title")))):(e.append(_T("backup","restore_type"),SYNO.SDS.Backup.String("remote","repo_type_name_2")),e.append(_T("netbackup","netbkp_slct_server"),String.format(_T("netbackup","synology_server"),_D("company_title")))),e.append(_T("backup","backup_server_name"),t.dest),"rsync_ds"!==t.transfer_type&&e.append(_T("common","port"),t.port),e.append(_T("netbackup","netbkp_account"),t.account),t.share?e.append(_T("backup","backup_restore_source"),t.share+" / "+t.target_id):e.append(_T("backup","backup_restore_source"),t.volume.substring(1)+" / "+t.target_id)}}),Ext.define("SYNO.Backup.Addon.rsync.Restore.DestStep",{extend:"SYNO.Backup.Addon.base.Restore.DestStep",comboboxWidth:270,constructor:function(e){this.transfer_type="rsync_ds",this.target_type="cloud_image";var t=[];Ext.copyTo(this,e,"owner"),this.fieldLabelWidth=300,this.configFields(t),this.callParent([Ext.apply({trackResetOnLoad:!0,items:[{xtype:"syno_fieldset",defaults:{labelWidth:this.fieldLabelWidth},items:t}]},e)]),this.mon(this,"activate",(function(){this.getForm().findField("network_type").setValue("rsync_ds")}),this,{single:!0})},configFields:function(e){e.push({xtype:"syno_combobox",width:this.comboboxWidth,name:"network_type",fieldLabel:_T("netbackup","netbkp_slct_server"),allowBlank:!1,store:this.getServerStore(),displayField:"server",valueField:"value",value:"rsync_ds",editable:!1,listeners:{scope:this,select:function(e,t,a){this.changeLayout(t.get("value"))}}},new SYNO.SDS.Backup.HostCombobox({width:this.comboboxWidth,name:"server",owner:this.owner}),{xtype:"syno_combobox",name:"encrypt_connect",width:this.comboboxWidth,fieldLabel:SYNO.SDS.Backup.String("rsync","transfer_encryption"),allowBlank:!1,store:new Ext.data.ArrayStore({fields:["text","value"],data:[[SYNO.SDS.Backup.String("app","on"),!0],[SYNO.SDS.Backup.String("app","off"),!1]]}),displayField:"text",valueField:"value",editable:!1,value:!1,listeners:{scope:this,select:function(e,t,a){this.changeEncTransLayout(t.get("value"))}}},{xtype:"syno_numberfield",width:this.comboboxWidth,maxlength:5,vtype:"port",name:"port",value:873,allowBlank:!1,fieldLabel:_T("common","port")},{xtype:"syno_numberfield",width:this.comboboxWidth,maxlength:5,vtype:"port",name:"enc_port",value:22,allowBlank:!1,fieldLabel:_T("common","port"),hidden:!0,disabled:!0},{xtype:"syno_textfield",width:this.comboboxWidth,fieldLabel:_T("netbackup","netbkp_account"),name:"account",allowBlank:!1},{xtype:"syno_textfield",width:this.comboboxWidth,fieldLabel:_T("common","password"),name:"password",allowBlank:!0,inputType:"password"},new SYNO.SDS.Backup.ComboBox({owner:this.owner,width:this.comboboxWidth,fieldLabel:_T("netbackup","restore_share_folder"),name:"share",forceSelection:!0,editable:!1,allowBlank:!1,busyText:_T("netbackup","netbkp_search_folder"),store:this.getShareModuleStore("share"),displayField:"value",valueField:"value",triggerAction:"all",mode:"local",getParams:{handler:this.getLoadShareParams,scope:this},listeners:{select:this.loadShareTarget,scope:this},scope:this,tpl:'<tpl for="."><div ext:qtip="{[SYNO.SDS.Backup.Util.htmlEncodeTip(values.value)]}" class="x-combo-list-item">{value:htmlEncode}</div></tpl>'}),{xtype:"syno_combobox",fieldLabel:_T("backup","backup_dest_directory"),width:this.comboboxWidth,name:"network_target",forceSelection:!0,editable:!1,allowBlank:!1,store:new Ext.data.ArrayStore({fields:["display","value"]}),displayField:"display",valueField:"value",triggerAction:"all",mode:"local",onTriggerClick:function(){this.readOnly||this.disabled||(this.scope.needReloadShareTarget()?this.scope.loadShareTarget():SYNO.ux.ComboBox.prototype.onTriggerClick.call(this,arguments))},scope:this,tpl:'<tpl for="."><div ext:qtip="{[SYNO.SDS.Backup.Util.htmlEncodeTip(values.value)]}" class="x-combo-list-item">{display:htmlEncode}</div></tpl>'},new SYNO.SDS.Backup.ComboBox({owner:this.owner,name:"module",fieldLabel:_T("netbackup","netbkp_module"),width:this.comboboxWidth,busyText:_T("netbackup","rsync_get_module_mask"),store:this.getShareModuleStore("module"),valueField:"value",displayField:"value",editable:!0,triggerAction:"all",mode:"local",hidden:!0,disabled:!0,getParams:{handler:this.getListModuleParams,scope:this},listeners:{select:this.loadTarget,scope:this},scope:this,tpl:'<tpl for="."><div ext:qtip="{[SYNO.SDS.Backup.Util.htmlEncodeTip(values.value)]}" class="x-combo-list-item">{value:htmlEncode}</div></tpl>'}),{xtype:"syno_combobox",fieldLabel:_T("backup","backup_dest_directory"),width:this.comboboxWidth,name:"rsync_target",forceSelection:!0,editable:!1,allowBlank:!1,store:new Ext.data.ArrayStore({fields:["display","value"]}),displayField:"display",valueField:"value",triggerAction:"all",mode:"local",hidden:!0,disabled:!0,onTriggerClick:function(){this.readOnly||this.disabled||(this.scope.needReloadTarget()?this.scope.loadTarget():SYNO.ux.ComboBox.prototype.onTriggerClick.call(this,arguments))},scope:this,tpl:'<tpl for="."><div ext:qtip="{[SYNO.SDS.Backup.Util.htmlEncodeTip(values.value)]}" class="x-combo-list-item">{display:htmlEncode}</div></tpl>'})},getServerStore:function(){return this.serverStore||(this.serverStore=new Ext.data.ArrayStore({fields:["server","value"],data:[[String.format(SYNO.SDS.Backup.String("rsync","synology_rsync_server"),_D("company_title")),"rsync_ds"],[_T("netbackup","rsync_compatible_server"),"rsync"]]})),this.serverStore},changeLayout:function(e){var t=this.getForm(),a=function(e,a){t.findField(e).setDisabled(!a),t.findField(e).setVisible(a)},i=function(e,t,i,n){a("share",e),a("network_target",t),a("module",i),a("rsync_target",n)};"rsync_ds"===e?i(!0,!0,!1,!1):"rsync"===e&&i(!1,!1,!0,!0)},changeEncTransLayout:function(e){var t=this.getForm(),a=function(e,a){t.findField(e).setDisabled(!a),t.findField(e).setVisible(a)},i=function(e,t){a("port",e),a("enc_port",t)};e?i(!1,!0):i(!0,!1)},getLoadNextParam:function(){var e=this.getForm(),t=function(t){return e.findField(t).getValue()},a=this.getHostParams();return a.transfer_type=t("network_type"),a.target_type="cloud_image","rsync_ds"===a.transfer_type?(a.module=t("share"),a.target_id=t("network_target")):(a.module=t("module"),a.target_id=t("rsync_target")),a},getNext:function(){if(!this.getForm().isValid())return!1;if(!this.getForm().isDirty())return this.nextId;var e=this.getLoadNextParam();return e.additional=e.additional?e.additional:[],e.additional.push("check_backup_data_type"),this.owner.setStatusBusy(),this.sendWebAPI({api:"SYNO.Backup.Target",method:"get",version:1,params:e,encryption:["pwd"],callback:this.onTargetGet,scope:this}),!1},onTargetGet:function(e,t,a){if(!e)return this.owner.api.alert(t),this.owner.clearStatusBusy(),!1;if(t.support_multi_version?(this.target_type="cloud_image",this.owner.setSingle(!1)):(this.target_type="share",this.owner.setSingle(!0)),"data"!==t.check_backup_data_type)return this.owner.getMsgBox().alert(_T("leaf","backup"),SYNO.SDS.Backup.String("error","target_not_support")),this.owner.clearStatusBusy(),!1;if(this.transfer_type=this.getForm().findField("network_type").getValue(),"image"===t.format_type){if("rsync_ds"!==this.transfer_type)return this.owner.api.alert(SYNO.SDS.Backup.String("error","restore_not_match_target_type")),this.owner.clearStatusBusy(),!1;this.transfer_type="image_remote",this.target_type="image"}return this.owner.clearStatusBusy(),this.owner.data_enc=t.data_enc,this.owner.uni_key=t.uni_key,t.data_enc?this.launchPasswordWindow((function(){this.owner.goNext(this.nextId)})):this.owner.goNext(this.nextId),!1},launchPasswordWindow:function(e){var t=this.getParams();Ext.apply(t,{uni_key:this.owner.uni_key}),new SYNO.SDS.Backup.Client.Common.Password.Window({owner:this.owner,verify_params:t,setter:Ext.createDelegate(this.setEncKey,this),callback:Ext.createDelegate(e,this)}).open()},setEncKey:function(e){this.owner.sess_id=e.sess_id,this.owner.sess_key=e.sess_key},getParams:function(){var e=this.getForm(),t=function(t){return e.findField(t).getValue()},a=this.getHostParams();return a.transfer_type=this.transfer_type,a.target_type=this.target_type,"rsync_ds"===t("network_type")?(a.module=t("share"),a.target_id=t("network_target"),"image_remote"===a.transfer_type&&(Ext.isDefined(a.encrypt_connect)&&(a.sslcheck=a.encrypt_connect,delete a.encrypt_connect),Ext.isDefined(a.port)?a.port=6281:Ext.isDefined(a.enc_port)&&(a.port=6281,delete a.enc_port))):(a.module=t("module"),a.target_id=t("rsync_target")),a},summary:function(e){var t=this.owner.getParams();"image_remote"===t.transfer_type?(e.append(_T("backup","restore_type"),SYNO.SDS.Backup.String("remote","repo_type_name_2")),e.append(_T("netbackup","netbkp_slct_server"),String.format(_T("netbackup","synology_server"),_D("company_title")))):(e.append(_T("backup","restore_type"),SYNO.SDS.Backup.String("rsync","repo_type_name_2")),"rsync_ds"===t.transfer_type?e.append(_T("netbackup","netbkp_slct_server"),String.format(SYNO.SDS.Backup.String("rsync","synology_rsync_server"),_D("company_title"))):e.append(_T("netbackup","netbkp_slct_server"),_T("netbackup","rsync_compatible_server"))),e.append(_T("backup","backup_server_name"),t.dest),e.append(_T("common","port"),t.port?t.port:t.enc_port),e.append(_T("netbackup","netbkp_account"),t.account),e.append(_T("backup","backup_restore_source"),t.module+" / "+t.target_id)},getHostParams:function(){var e=this.getForm(),t=function(t){return e.findField(t).getValue()},a={};return a.dest=e.findField("server").getHostAddress(),a.account=t("account"),a.pwd=t("password"),a.encrypt_connect=t("encrypt_connect"),a.encrypt_connect?a.enc_port=t("enc_port"):a.port=t("port"),a},getLoadShareParams:function(){var e=this.getHostParams(),t=Ext.copyTo({},e,"dest,account,pwd"),a={target_type:"share",transfer_type:"rsync_ds"};return Ext.copyTo(a,e,"encrypt_connect,port,enc_port"),t=Ext.apply({connect_list:[a]},t)},getListModuleParams:function(){var e=this.getHostParams(),t=Ext.copyTo({},e,"dest,account,pwd"),a={target_type:"share",transfer_type:"rsync"};return Ext.copyTo(a,e,"encrypt_connect,port,enc_port"),t=Ext.apply({connect_list:[a]},t)},getShareModuleStore:function(e){return new SYNO.API.Store({api:"SYNO.Backup.Repository",method:"find",version:1,encryption:["pwd"],appWindow:this.owner.findAppWindow()||!1,autoLoad:!1,autoDestroy:!0,comboBoxId:e,reader:new Ext.data.JsonReader({root:"result_list[0].share_list",fields:[{name:"value",convert:function(e,t){return t}}]}),listeners:{beforeload:function(e,t){var a=this.getHostParams();if(!a.account||!a.dest||!Ext.isDefined(a.encrypt_connect)||Ext.isEmpty(a.port,!1)&&Ext.isEmpty(a.enc_port,!1))return!1;this.getForm().findField(e.comboBoxId).clearValue()},load:function(e,t,a){var i=this.getForm().findField(e.comboBoxId);0===t.length?(i.emptyText=_T("netbackup","netbkp_no_folder"),i.applyEmptyText(),i.setValue("")):(i.emptyText=" ",i.applyEmptyText())},scope:this}})},getLoadTargetParam:function(){var e=this.getHostParams();return e.transfer_type="rsync",e.target_type="cloud_image",e.module=this.getForm().findField("module").getValue(),e},needReloadTarget:function(){var e=this.getLoadTargetParam();return this.lastQueryTarget!==Ext.encode(e)},loadTarget:function(){var e=this.getLoadTargetParam();e.account&&e.dest&&Ext.isDefined(e.encrypt_connect)&&(!Ext.isEmpty(e.port,!1)||!Ext.isEmpty(e.enc_port,!1))&&e.module&&this.lastQueryTarget!==Ext.encode(e)&&(e.backup_data_type="data",this.owner.setStatusBusy({text:_T("backup","search_restore_folder")}),this.sendWebAPI({api:"SYNO.Backup.Target",method:"list",version:1,params:e,encryption:["pwd"],callback:function(t,a,i){if(this.owner.clearStatusBusy(),!t)return this.loadTargetData([],"rsync_target"),this.owner.api.alert(a),void delete this.lastQueryTarget;this.lastQueryTarget=Ext.encode(e),this.loadTargetData(a,"rsync_target")},scope:this}))},loadTargetData:function(e,t){var a=this.getForm().findField(t);return SYNO.Backup.Util.HBKDisplayComboboxLoadData(a,e.target_list,"target_id")},getLoadShareTargetParams:function(){var e=this.getHostParams();return e.transfer_type="rsync_ds",e.target_type="cloud_image",e.module=this.getForm().findField("share").getValue(),e},needReloadShareTarget:function(){var e=this.getLoadShareTargetParams();return this.lastSelectedShare!==Ext.encode(e)},loadShareTarget:function(){var e=this.getLoadShareTargetParams();e.account&&e.dest&&Ext.isDefined(e.encrypt_connect)&&(!Ext.isEmpty(e.port,!1)||!Ext.isEmpty(e.enc_port,!1))&&e.module&&this.lastSelectedShare!==Ext.encode(e)&&(e.backup_data_type="data",this.owner.setStatusBusy({text:_T("backup","search_restore_folder")}),this.sendWebAPI({api:"SYNO.Backup.Target",method:"list",version:1,params:e,encryption:["pwd"],callback:function(t,a,i){if(this.owner.clearStatusBusy(),!t)return this.loadTargetData([],"network_target"),this.owner.api.alert(a),void delete this.lastSelectedShare;this.lastSelectedShare=Ext.encode(e),this.loadTargetData(a,"network_target")},scope:this}))}}),Ext.define("SYNO.Backup.Addon.sfr_s3.Restore.DestStep",{extend:"SYNO.SDS.Backup.Addon.Util.Image.S3.Restore.DestStep",constructor:function(e){var t=Ext.apply({addon_id:"image_sfr",transfer_type:"sfr_s3"},e);return this.callParent([t])}}),Ext.define("SYNO.Backup.Addon.webdav.Restore.DestStep",{extend:"SYNO.Backup.Addon.base.Restore.DestStep",comboboxWidth:270,addon_id:"webdav",constructor:function(e){var t=[];Ext.copyTo(this,e,"owner"),this.target_type="cloud_image",this.transfer_type="webdav",this.configFields(t),this.callParent([Ext.apply({trackResetOnLoad:!0,items:[{xtype:"syno_fieldset",defaults:{labelWidth:300},items:t}]},e)])},configFields:function(e){e.push({xtype:"syno_textfield",fieldLabel:SYNO.SDS.Backup.String("webdav","url"),name:"remote_url",width:this.comboboxWidth,allowBlank:!1},{xtype:"syno_textfield",fieldLabel:SYNO.SDS.Backup.String("webdav","username"),name:"account",width:this.comboboxWidth,allowBlank:!1},{xtype:"syno_textfield",fieldLabel:SYNO.SDS.Backup.String("app","task_password_input"),name:"pwd",width:this.comboboxWidth,inputType:"password",allowBlank:!1},{xtype:"syno_combobox",width:this.comboboxWidth,name:"bucket",fieldLabel:SYNO.SDS.Backup.String("webdav","root_folder_name"),store:new Ext.data.ArrayStore({fields:["value"]}),forceSelection:!1,valueField:"value",displayField:"value",allowBlank:!1,triggerAction:"all",mode:"local",onTriggerClick:function(){this.readOnly||this.disabled||(this.scope.needReloadBuckets()?this.scope.loadBuckets():SYNO.ux.ComboBox.prototype.onTriggerClick.call(this,arguments))},listeners:{select:this.onSelectBucket,scope:this},scope:this,tpl:'<tpl for="."><div ext:qtip="{[SYNO.SDS.Backup.Util.htmlEncodeTip(values.value)]}" class="x-combo-list-item">{value:htmlEncode}</div></tpl>'},{xtype:"syno_combobox",width:this.comboboxWidth,fieldLabel:_T("backup","backup_dest_directory"),name:"target",forceSelection:!0,editable:!1,allowBlank:!1,store:new Ext.data.ArrayStore({fields:["display","value"]}),displayField:"display",valueField:"value",triggerAction:"all",mode:"local",onTriggerClick:function(){this.readOnly||this.disabled||(this.scope.needReloadTarget()?this.scope.loadTarget():SYNO.ux.ComboBox.prototype.onTriggerClick.call(this,arguments))},scope:this,tpl:'<tpl for="."><div ext:qtip="{[SYNO.SDS.Backup.Util.htmlEncodeTip(values.value)]}" class="x-combo-list-item">{display:htmlEncode}</div></tpl>'})},getRemoteUrlValue:function(){for(var e=this.getForm().getFieldValues().remote_url.trim();0<e.length&&"/"==e[e.length-1];)e=e.slice(0,-1);return"http://"!==e.substring(0,7)&&"https://"!==e.substring(0,8)?"http://"+e:e},onSelectBucket:function(e){this.loadTarget(e.getValue())},activate:function(){},getNext:function(){if(!this.getForm().isValid())return!1;if(!this.getForm().isDirty())return this.nextId;var e=this.getParams();return e.additional=e.additional?e.additional:[],e.additional.push("check_backup_data_type"),this.owner.setStatusBusy(),this.sendWebAPI({api:"SYNO.Backup.Target",method:"get",version:1,params:e,encryption:["pwd"],callback:this.onTargetGet,scope:this}),!1},onTargetGet:function(e,t,a){return e?t.support_multi_version?(this.target_type="cloud_image","data"!==t.check_backup_data_type||"cloud_image"!==t.format_type?(this.owner.getMsgBox().alert(_T("leaf","backup"),SYNO.SDS.Backup.String("error","target_not_support")),this.owner.clearStatusBusy(),!1):(this.owner.setSingle(!1),this.owner.clearStatusBusy(),this.owner.data_enc=t.data_enc,this.owner.uni_key=t.uni_key,t.data_enc?this.launchPasswordWindow((function(){this.owner.goNext(this.nextId)})):this.owner.goNext(this.nextId),!1)):(this.owner.getMsgBox().alert(_T("leaf","backup"),SYNO.SDS.Backup.String("error","target_not_support")),this.owner.clearStatusBusy(),!1):(this.owner.targetGetErrorHandle(t),this.owner.clearStatusBusy(),!1)},launchPasswordWindow:function(e){var t=this.getParams();Ext.apply(t,{uni_key:this.owner.uni_key}),new SYNO.SDS.Backup.Client.Common.Password.Window({owner:this.owner,verify_params:t,setter:Ext.createDelegate(this.setEncKey,this),callback:Ext.createDelegate(e,this)}).open()},setEncKey:function(e){this.owner.sess_id=e.sess_id,this.owner.sess_key=e.sess_key},getParams:function(){var e=this.getForm(),t=function(t){return e.findField(t).getValue()};return{remote_url:this.getRemoteUrlValue(),account:t("account"),pwd:t("pwd"),bucket:t("bucket"),target_id:t("target"),target_type:this.target_type,transfer_type:this.transfer_type}},summary:function(e){var t=this.getParams();e.append(_T("backup","restore_type"),SYNO.SDS.Backup.String("webdav","repo_type_name")),e.append(_T("backup","backup_restore_source"),t.bucket+" / "+t.target_id)},getListBucketRequest:function(){return Ext.copyTo({},this.getParams(),"remote_url,account,pwd,transfer_type")},needReloadBuckets:function(){var e=this.getListBucketRequest();return this.lastQueryModule!==Ext.encode(e)},loadBuckets:function(){var e=this.getListBucketRequest();e.account&&e.pwd&&(this.owner.setStatusBusy({text:SYNO.SDS.Backup.String("webdav","load_root_folders")}),this.sendWebAPI({api:"SYNO.Backup.Storage.WebDAV.Container",version:1,method:"list",params:e,encryption:["pwd"],scope:this,callback:function(t,a,i){if(this.owner.clearStatusBusy(),!t)return this.loadBucketsData(),this.owner.reportError(a),void delete this.lastQueryModule;this.lastQueryModule=Ext.encode(e),this.loadBucketsData(a)}}))},loadBucketsData:function(e){var t=this.getForm().findField("bucket");return SYNO.SDS.Backup.Util.comboboxLoadData(t,e?e.bucket_list:[],0)},getLoadTargetParams:function(){var e=this.getParams();return delete e.target_id,e},needReloadTarget:function(){var e=this.getLoadTargetParams();return this.lastQueryTarget!==Ext.encode(e)},loadTarget:function(e){var t=this.getLoadTargetParams();t.remote_url&&t.account&&t.pwd&&t.bucket&&this.lastQueryTarget!==Ext.encode(t)&&(this.lastQueryTarget=Ext.encode(t),t.backup_data_type="data",this.owner.setStatusBusy({text:_T("backup","search_restore_folder")}),this.owner.api.send({api:"SYNO.Backup.Target",method:"list",version:1,params:t,encryption:["pwd"],callback:function(e,a,i){if(this.owner.clearStatusBusy(),!e)return this.owner.api.alert(a),this.loadTargetData({target_list:[]}),void delete this.lastQueryTarget;this.lastQueryTarget=Ext.encode(t),this.loadTargetData(a)},scope:this}))},loadTargetData:function(e){var t=this.getForm().findField("target");return SYNO.Backup.Util.HBKDisplayComboboxLoadData(t,e.target_list,"target_id")}}),Ext.ns("SYNO.Backup.Addon.synocloud.Restore"),Ext.define("SYNO.Backup.Addon.synocloud.Restore.DestStep",{extend:"SYNO.Backup.Addon.base.Restore.DestStep",comboboxWidth:270,addon_id:"synocloud",constructor:function(e){var t=[];Ext.copyTo(this,e,"owner"),this.target_type="cloud_image",this.transfer_type="synocloud_swift",this.configFields(t),this.callParent([Ext.apply({trackResetOnLoad:!0,items:[{xtype:"syno_fieldset",defaults:{labelWidth:300},items:t}]},e)])},configFields:function(e){e.push({xtype:"syno_combobox",width:this.comboboxWidth,fieldLabel:_T("backup","backup_dest_directory"),name:"target",forceSelection:!0,editable:!1,allowBlank:!1,store:new Ext.data.ArrayStore({fields:["display","value"]}),displayField:"display",valueField:"value",triggerAction:"all",mode:"local",onTriggerClick:function(){this.readOnly||this.disabled||(this.scope.needReloadTarget()?this.scope.loadTarget():SYNO.ux.ComboBox.prototype.onTriggerClick.call(this,arguments))},scope:this,tpl:'<tpl for="."><div ext:qtip="{[SYNO.SDS.Backup.Util.htmlEncodeTip(values.value)]}" class="x-combo-list-item">{display:htmlEncode}</div></tpl>'})},getNext:function(){if(!this.getForm().isValid())return!1;if(!this.getForm().isDirty())return this.nextId;var e=this.getParams();return e.additional=e.additional?e.additional:[],e.additional.push("check_backup_data_type"),this.owner.setStatusBusy(),this.sendWebAPI({api:"SYNO.Backup.Target",method:"get",version:1,params:e,encryption:["secret"],callback:this.onTargetGet,scope:this}),!1},onTargetGet:function(e,t,a){return e?t.support_multi_version?(this.target_type="cloud_image",["data","multi_ver_lun"].includes(t.check_backup_data_type)?"cloud_image"!==t.format_type?(this.owner.getMsgBox().alert(_T("leaf","backup"),SYNO.SDS.Backup.String("error","target_not_support")),this.owner.clearStatusBusy(),!1):(this.owner.setSingle(!1),this.owner.clearStatusBusy(),this.owner.data_enc=t.data_enc,this.owner.uni_key=t.uni_key,t.data_enc?this.launchPasswordWindow((function(){this.owner.goNext(this.nextId)})):this.owner.goNext(this.nextId),!1):(this.owner.getMsgBox().alert(_T("leaf","backup"),SYNO.SDS.Backup.String("error","target_not_support")),this.owner.clearStatusBusy(),!1)):(this.owner.getMsgBox().alert(_T("leaf","backup"),SYNO.SDS.Backup.String("error","target_not_support")),this.owner.clearStatusBusy(),!1):(this.owner.targetGetErrorHandle(t),this.owner.clearStatusBusy(),!1)},launchPasswordWindow:function(e){var t=this.getParams();Ext.apply(t,{uni_key:this.owner.uni_key}),new SYNO.SDS.Backup.Client.Common.Password.Window({owner:this.owner,verify_params:t,setter:Ext.createDelegate(this.setEncKey,this),callback:Ext.createDelegate(e,this)}).open()},setEncKey:function(e){this.owner.sess_id=e.sess_id,this.owner.sess_key=e.sess_key},getParams:function(){var e,t=this.getForm(),a={};a.target_id=(e="target",t.findField(e).getValue()),a.key=this.key,a.secret=this.secret,a.tenant_id=this.tenant_id,a.target_type=this.target_type,a.transfer_type=this.transfer_type,a.region=this.region;var i=Ext.urlDecode(location.search.substr(1)).everest;return-1<["c2test","c2testdaily"].indexOf(i)?a.remote_url=String.format("https://api.{0}.c2test.synology.com",a.region):"c2staging"===i?a.remote_url=String.format("https://api.{0}.c2.c2go.dev",a.region):"insecure"===i&&(a.verify_cert=!1),a},summary:function(e){var t=this.getParams();e.append(_T("backup","restore_type"),SYNO.SDS.Backup.String("synocloud","repo_type_name_2")),e.append(_T("backup","backup_restore_source"),t.target_id)},getLoadTargetParams:function(){var e=this.getParams();return delete e.target_id,e},needReloadTarget:function(){var e=this.getLoadTargetParams();return this.lastQueryTarget!==Ext.encode(e)},loadTarget:function(e){var t=this.getLoadTargetParams();this.lastQueryTarget!==Ext.encode(t)&&(this.lastQueryTarget=Ext.encode(t),t.backup_data_type=this.backup_data_type,this.owner.setStatusBusy({text:_T("backup","search_restore_folder")}),this.owner.api.send({api:"SYNO.Backup.Target",method:"list",version:1,params:t,encryption:["secret"],callback:function(e,a,i){if(this.owner.clearStatusBusy(),!e)return this.owner.api.alert(a),this.loadTargetData({target_list:[]}),void delete this.lastQueryTarget;this.lastQueryTarget=Ext.encode(t),this.loadTargetData(a)},scope:this}))},loadTargetData:function(e){var t=this.getForm().findField("target");return SYNO.Backup.Util.HBKDisplayComboboxLoadData(t,e.target_list,"target_id")},setOauthResponse:function(e){this.key=e.access_token,this.secret=e.refresh_token,this.tenant_id=e.openstack_token,this.region="eu",Ext.isEmpty(e.region)||(this.region=e.region)}}),Ext.ns("SYNO.Backup.Addon.aws_s3.Destination"),Ext.define("SYNO.Backup.Addon.aws_s3.Destination.EditPanel",{extend:"SYNO.SDS.Backup.Addon.Util.S3.Repository.EditDialog",constructor:function(e){var t=Ext.apply({addon_id:"aws_s3"},e);return this.callParent([t])},getSignatureStore:function(){return this.signatureStore||(this.signatureStore=new Ext.data.ArrayStore({fields:["version","value"],data:[[SYNO.SDS.Backup.String("aws_s3","v2_will_be_deprecated"),"v2"],["v4","v4"]]})),this.signatureStore},createItems:function(){var e=this.callParent();return e.push({xtype:"syno_textfield",name:"key",width:200,allowBlank:!1,fieldLabel:_T("backup","s3_access_key")}),e.push({xtype:"syno_textfield",name:"secret",inputType:"password",allowBlank:!1,fieldLabel:_T("backup","s3_secret_key"),width:200}),e.push({xtype:"syno_combobox",name:"signature_version",width:this.comboboxWidth,allowBlank:!1,store:this.getSignatureStore(),fieldLabel:SYNO.SDS.Backup.String("aws_s3","signature_version"),displayField:"version",valueField:"value",value:"v2",editable:!1,hidden:!0,disabled:!0}),e},loadData:function(e){if(this.callParent(arguments),!Ext.isEmpty(e.remote_url)){var t=this.getForm().findField("signature_version");t.setDisabled(!1),t.setVisible(!0)}}}),Ext.ns("SYNO.Backup.Addon.azure_blob.Destination"),Ext.define("SYNO.Backup.Addon.azure_blob.Destination.EditPanel",{extend:"SYNO.SDS.Backup.Addon.Util.S3.Repository.EditDialog",constructor:function(e){var t=Ext.apply({addon_id:"azure_blob"},e);return this.callParent([t])},createItems:function(){var e=this.callParent();return e.push({xtype:"syno_textfield",name:"key",width:200,allowBlank:!1,fieldLabel:SYNO.Backup.Addon.Util.getString("azure","storage_account")}),e.push({xtype:"syno_textfield",name:"secret",inputType:"password",allowBlank:!1,fieldLabel:SYNO.Backup.Addon.Util.getString("azure","access_key"),width:200}),e}}),Ext.define("SYNO.Backup.Addon.azure_cn_blob.Destination.EditPanel",{extend:"SYNO.Backup.Addon.azure_blob.Destination.EditPanel"}),Ext.ns("SYNO.Backup.Addon.hicloud_s3.Destination"),Ext.define("SYNO.Backup.Addon.hicloud_s3.Destination.EditPanel",{extend:"SYNO.SDS.Backup.Addon.Util.S3.Repository.EditDialog",constructor:function(e){var t=Ext.apply({addon_id:"image_hicloud"},e);return this.callParent([t])},createItems:function(){var e=this.callParent();return e.push({xtype:"syno_textfield",name:"key",width:200,allowBlank:!1,fieldLabel:_T("backup","s3_access_key")}),e.push({xtype:"syno_textfield",name:"secret",inputType:"password",allowBlank:!1,fieldLabel:_T("backup","s3_secret_key"),width:200}),e}}),Ext.ns("SYNO.Backup.Addon.jdcloud_s3.Destination"),Ext.define("SYNO.Backup.Addon.jdcloud_s3.Destination.EditPanel",{extend:"SYNO.SDS.Backup.Addon.Util.S3.Repository.EditDialog",constructor:function(e){var t=Ext.apply({addon_id:"image_jdcloud"},e);return this.callParent([t])},createItems:function(){var e=this.callParent();return e.push({xtype:"syno_textfield",name:"key",width:200,allowBlank:!1,fieldLabel:_T("backup","s3_access_key")}),e.push({xtype:"syno_textfield",name:"secret",inputType:"password",allowBlank:!1,fieldLabel:_T("backup","s3_secret_key"),width:200}),e}}),Ext.ns("SYNO.Backup.Addon.hidrive.Destination"),Ext.define("SYNO.Backup.Addon.hidrive.Destination.EditPanel",{extend:"SYNO.SDS.Backup.Addon.Util.S3.Repository.EditDialog",constructor:function(e){var t=Ext.apply({},e);return this.callParent([t])},createItems:function(){var e=this.callParent();return e.push({xtype:"syno_textfield",name:"account",width:200,allowBlank:!1,fieldLabel:SYNO.SDS.Backup.String("hidrive","username")}),e.push({xtype:"syno_textfield",name:"pwd",width:200,inputType:"password",allowBlank:!1,fieldLabel:SYNO.SDS.Backup.String("app","task_password_input")}),e}}),Ext.ns("SYNO.Backup.Addon.ibm_softlayer.Destination"),Ext.define("SYNO.Backup.Addon.ibm_softlayer.Destination.EditPanel",{extend:"SYNO.SDS.Backup.Addon.Util.S3.Repository.EditDialog",constructor:function(e){var t=Ext.apply({},e);return this.callParent([t])},createItems:function(){var e=this.callParent();return e.push({xtype:"syno_textfield",name:"key",width:200,allowBlank:!1,fieldLabel:SYNO.SDS.Backup.String("openstack","username")},{xtype:"syno_textfield",name:"secret",width:200,inputType:"password",allowBlank:!1,fieldLabel:SYNO.SDS.Backup.String("openstack","api_key")}),e}}),Ext.ns("SYNO.SDS.Backup.Addon.legacy_aws_s3.Destination"),Ext.define("SYNO.Backup.Addon.legacy_aws_s3.Destination.EditPanel",{extend:"SYNO.SDS.Backup.Addon.Util.S3.Repository.EditDialog",constructor:function(e){var t=Ext.apply({addon_id:"aws_s3"},e);return this.callParent([t])},createItems:function(){var e=this.callParent();return e.push({xtype:"syno_textfield",name:"key",width:200,allowBlank:!1,fieldLabel:_T("backup","s3_access_key")}),e.push({xtype:"syno_textfield",name:"secret",inputType:"password",allowBlank:!1,fieldLabel:_T("backup","s3_secret_key"),width:200}),e}}),Ext.ns("SYNO.Backup.Addon.legacy_azure_blob.Destination"),Ext.define("SYNO.Backup.Addon.legacy_azure_blob.Destination.EditPanel",{extend:"SYNO.SDS.Backup.Addon.Util.S3.Repository.EditDialog",constructor:function(e){var t=Ext.apply({addon_id:"azure_blob"},e);return this.callParent([t])},createItems:function(){var e=this.callParent();return e.push({xtype:"syno_textfield",name:"key",width:200,allowBlank:!1,fieldLabel:SYNO.Backup.Addon.Util.getString("azure_blob","storage_account")}),e.push({xtype:"syno_textfield",name:"secret",inputType:"password",allowBlank:!1,fieldLabel:SYNO.Backup.Addon.Util.getString("azure_blob","access_key"),width:200}),e}}),Ext.ns("SYNO.SDS.Backup.Addon.legacy_hicloud_s3.Destination"),Ext.define("SYNO.Backup.Addon.legacy_hicloud_s3.Destination.EditPanel",{extend:"SYNO.SDS.Backup.Addon.Util.S3.Repository.EditDialog",constructor:function(e){var t=Ext.apply({addon_id:"hicloud_s3"},e);return this.callParent([t])},createItems:function(){var e=this.callParent();return e.push({xtype:"syno_textfield",name:"key",width:200,allowBlank:!1,fieldLabel:_T("backup","s3_access_key")}),e.push({xtype:"syno_textfield",name:"secret",inputType:"password",allowBlank:!1,fieldLabel:_T("backup","s3_secret_key"),width:200}),e}}),Ext.ns("SYNO.SDS.Backup.Addon.legacy_sfr_s3.Destination"),Ext.define("SYNO.Backup.Addon.legacy_sfr_s3.Destination.EditPanel",{extend:"SYNO.SDS.Backup.Addon.Util.S3.Repository.EditDialog",constructor:function(e){var t=Ext.apply({addon_id:"sfr_s3"},e);return this.callParent([t])},createItems:function(){var e=this.callParent();return e.push({xtype:"syno_textfield",name:"key",width:200,allowBlank:!1,fieldLabel:_T("backup","s3_access_key")}),e.push({xtype:"syno_textfield",name:"secret",inputType:"password",allowBlank:!1,fieldLabel:_T("backup","s3_secret_key"),width:200}),e}}),Ext.define("SYNO.Backup.Addon.base.Destination.EditPanel",{extend:"SYNO.ux.FormPanel",constructor:function(e){var t=Ext.apply({height:400,trackResetOnLoad:!0,items:this.createItems(e)},e);return this.callParent([t])},createItems:function(){return[]},loadData:function(e){this.getForm().setValues(e),this.orgName=e.name},getApplyApi:function(){var e=this.getForm().getFieldValues(!0);return e.name=this.orgName,e.task_id=this.taskId,e.repo_id=this.repoId,e.transfer_type=this.transferType,e.target_type=this.targetType,Ext.isFunction(this.getApplyParams)&&Ext.apply(e,this.getApplyParams()),{api:"SYNO.Backup.Repository",version:1,method:"set",params:e}}}),Ext.define("SYNO.Backup.Addon.rsync.Destination.EditPanel",{extend:"SYNO.Backup.Addon.base.Destination.EditPanel",createItems:function(e){var t=e.transferType;return[{xtype:"syno_textfield",name:"dest",allowBlank:!1,fieldLabel:_T("netbackup","netbkp_set_ip"),width:200,validator:function(e){return SYNO.SDS.Backup.Util.isHostnameValid(e,!1)},scope:this},{xtype:"syno_combobox",name:"encrypt_connect",fieldLabel:SYNO.SDS.Backup.String("rsync","transfer_encryption"),allowBlank:!1,store:new Ext.data.ArrayStore({fields:["text","value"],data:[[SYNO.SDS.Backup.String("app","on"),!0],[SYNO.SDS.Backup.String("app","off"),!1]]}),displayField:"text",valueField:"value",editable:!1,value:!1,listeners:{scope:this,select:function(e,t,a){this.changeEncTransLayout(t.get("value"))}}},{xtype:"syno_numberfield",maxlength:5,vtype:"port",name:"port",value:873,allowBlank:!1,fieldLabel:_T("common","port")},{xtype:"syno_numberfield",maxlength:5,vtype:"port",name:"enc_port",value:22,allowBlank:!1,fieldLabel:_T("common","port"),hidden:!0,disabled:!0},{xtype:"syno_textfield",name:"account",allowBlank:!1,fieldLabel:_T("netbackup","netbkp_account"),width:200,validator:function(e){var a=e;return"rsync"===t&&(a=a.replace(/%/g,"a")),Ext.form.VTypes.username_ext(a)},invalidText:Ext.form.VTypes.username_extText},{xtype:"syno_textfield",name:"pwd",fieldLabel:_T("common","password"),width:200,inputType:"password"}]},changeEncTransLayout:function(e){var t=this.getForm(),a=function(e,a){t.findField(e).setDisabled(!a),t.findField(e).setVisible(a)},i=function(e,t){a("port",e),a("enc_port",t)};e?i(!1,!0):i(!0,!1)},onQueryHostnameDone:function(e,t){var a=[];e&&void 0!==t&&Ext.isArray(t.nif)&&(this.selfHostName=t.hostname.toLowerCase(),Ext.each(t.nif,(function(e){a.push(e.addr),Ext.isArray(e.ipv6)&&Ext.each(e.ipv6,(function(e){a.push(e.addr)}))})),this.selfIPs=a)},onTrustBtnClick:function(){this.owner.setStatusBusy(),this.sendWebAPI({api:"SYNO.Backup.Repository.Certificate",version:1,method:"verify",params:{repo_id:this.repoId,trust_cert:!0},callback:this.verifyCertCB,scope:this})},verifyCertCB:function(e,t,a){if(this.owner.clearStatusBusy(),e){var i=this.getForm().findField("verify_cert");i&&(i.removeClass("syno-backup-orange-status"),i.removeClass("syno-backup-green-status"),!0===t.verify_cert?(i.addClass("syno-backup-green-status"),i.setValue(SYNO.SDS.Backup.String("app","certificate_auth_pass"))):(i.addClass("syno-backup-orange-status"),i.setValue(SYNO.SDS.Backup.String("app","certificate_auth_failed")),this.owner.getMsgBox().alert(_T("tree","leaf_backup"),SYNO.SDS.Backup.String("error","ssl_verify_fail"))))}else this.owner.getMsgBox().alert(_T("tree","leaf_backup"),SYNO.SDS.Backup.GetErrorString(t.code))},loadData:function(e){Ext.isDefined(e.remoteshell)&&this.getForm().findField("encrypt_connect")&&e.remoteshell&&(e.encrypt_connect=!0,this.getForm().findField("encrypt_connect").setDisabled(!0)),this.getForm().findField("enc_port")&&(Ext.isDefined(e.enc_port)?0===e.enc_port&&(e.enc_port=22):e.enc_port=22),this.getForm().findField("port")&&!Ext.isDefined(e.port)&&(e.port=873),this.getForm().setValues(e),this.orgName=e.name,this.deststatus=e.deststatus,this.getForm().findField("encrypt_connect")&&this.changeEncTransLayout(this.getForm().findField("encrypt_connect").getValue())},afterRender:function(){this.owner.setStatusBusy();var e=[{api:"SYNO.Core.System",method:"info",version:1,params:{type:"network"}}];return this.sendWebAPI({compound:{stopwhenerror:!0,params:e},scope:this,callback:this.onRenderDone}),this.callParent(arguments)},onRenderDone:function(e,t,a){if(!e)return this.owner.clearStatusBusy(),void this.owner.getMsgBox().alert(_T("leaf","backup"),_T("error","error_error_system"),(function(){this.close()}),this);this.onQueryHostnameDone(t.result[0].success,t.result[0].data),this.owner.clearStatusBusy()},getApplyParams:function(){var e={},t=this.getForm();return t.findField("encrypt_connect")&&(e.encrypt_connect=t.findField("encrypt_connect").getValue(),e.encrypt_connect?e.enc_port=t.findField("enc_port").getValue():e.port=t.findField("port").getValue()),e}}),Ext.define("SYNO.Backup.Addon.rsync_ds.Destination.EditPanel",{extend:"SYNO.Backup.Addon.rsync.Destination.EditPanel"}),Ext.define("SYNO.Backup.Addon.legacy_rsync.Destination.EditPanel",{extend:"SYNO.Backup.Addon.rsync.Destination.EditPanel"}),Ext.define("SYNO.Backup.Addon.legacy_rsync_ds.Destination.EditPanel",{extend:"SYNO.Backup.Addon.rsync.Destination.EditPanel"}),Ext.ns("SYNO.Backup.Addon.openstack.Destination"),Ext.define("SYNO.Backup.Addon.openstack.Destination.EditPanel",{extend:"SYNO.SDS.Backup.Addon.Util.S3.Repository.EditDialog",constructor:function(e){var t=Ext.apply({},e);return this.callParent([t])},createItems:function(){var e=this.callParent();return e.push({xtype:"syno_textfield",name:"key",width:200,allowBlank:!1,fieldLabel:SYNO.SDS.Backup.String("openstack","username")},{xtype:"syno_textfield",name:"secret_pw",inputType:"password",width:200,allowBlank:!1,fieldLabel:SYNO.SDS.Backup.String("app","task_password_input"),hidden:!0,disabled:!0},{xtype:"syno_textfield",name:"secret",width:200,inputType:"password",allowBlank:!1,fieldLabel:SYNO.SDS.Backup.String("openstack","api_key")},{xtype:"syno_compositefield",name:"tenant_compositefield",width:200,fieldLabel:SYNO.SDS.Backup.String("openstack","tenant"),items:[{xtype:"syno_combobox",name:"tenant_option",width:80,store:new Ext.data.ArrayStore({fields:["display","value"],data:[["id","tenant_id"],["name","tenant_name"]]}),displayField:"display",valueField:"value",value:"tenant_id",allowBlank:!1,editable:!1},{xtype:"syno_textfield",name:"tenant_value",width:114,allowBlank:!0}],hidden:!0,disabled:!0},{xtype:"syno_compositefield",name:"domain_compositefield",width:200,fieldLabel:SYNO.SDS.Backup.String("openstack","domain"),items:[{xtype:"syno_combobox",name:"domain_option",width:80,store:new Ext.data.ArrayStore({fields:["display","value"],data:[["id","domain_id"],["name","domain_name"]]}),displayField:"display",valueField:"value",value:"domain_id",allowBlank:!1,editable:!1},{xtype:"syno_textfield",name:"domain_value",width:114,allowBlank:!1}],hidden:!0,disabled:!0}),e},loadData:function(e){var t=this.getForm(),a=function(e,a){t.findField(e).setDisabled(!a),t.findField(e).setVisible(a)};this.getForm().findField("key").setValue(e.key);var i=e.auth_version;if("1.0"===i)a("secret",!0),a("secret_pw",!1),a("tenant_compositefield",!1),a("domain_compositefield",!1),t.findField("secret").setValue(e.secret);else if("2.0"===i||"3.0"===i){if(a("secret",!1),a("secret_pw",!0),t.findField("secret_pw").setValue(e.secret),a("tenant_compositefield",!0),Ext.isEmpty(e.tenant_name))if(Ext.isEmpty(e.tenant_id)){var n=t.findField("tenant_option");n.setValue(n.getValue())}else t.findField("tenant_option").setValue("tenant_id"),t.findField("tenant_value").setValue(e.tenant_id);else t.findField("tenant_option").setValue("tenant_name"),t.findField("tenant_value").setValue(e.tenant_name);if(a("domain_compositefield","3.0"===i),"3.0"===i)if(Ext.isEmpty(e.domain_name))if(Ext.isEmpty(e.domain_id)){var s=t.findField("domain_option");s.setValue(s.getValue())}else t.findField("domain_option").setValue("domain_id"),t.findField("domain_value").setValue(e.domain_id);else t.findField("domain_option").setValue("domain_name"),t.findField("domain_value").setValue(e.domain_name)}this.orgName=e.name},getApplyApi:function(){var e=this.getForm(),t=e.getFieldValues(!0),a={};return t.key&&(a.key=t.key),t.secret?a.secret=t.secret:t.secret_pw&&(a.secret=t.secret_pw),e.findField("tenant_compositefield").disabled||("tenant_name"===e.findField("tenant_option").getValue()?(a.tenant_name=e.findField("tenant_value").getValue(),a.tenant_id=""):"tenant_id"===e.findField("tenant_option").getValue()&&(a.tenant_name="",a.tenant_id=e.findField("tenant_value").getValue())),e.findField("domain_compositefield").disabled||("domain_name"===e.findField("domain_option").getValue()?(a.domain_name=e.findField("domain_value").getValue(),a.domain_id=""):"domain_id"===e.findField("domain_option").getValue()&&(a.domain_name="",a.domain_id=e.findField("domain_value").getValue())),a.name=this.orgName,a.task_id=this.taskId,a.repo_id=this.repoId,a.transfer_type=this.transferType,a.target_type=this.targetType,{api:"SYNO.Backup.Repository",version:1,method:"set",params:a}}}),Ext.ns("SYNO.Backup.Addon.rackspace.Destination"),Ext.define("SYNO.Backup.Addon.rackspace.Destination.EditPanel",{extend:"SYNO.SDS.Backup.Addon.Util.S3.Repository.EditDialog",constructor:function(e){var t=Ext.apply({},e);return this.callParent([t])},createItems:function(){var e=this.callParent();return e.push({xtype:"syno_textfield",name:"key",width:200,allowBlank:!1,fieldLabel:SYNO.SDS.Backup.String("openstack","username")},{xtype:"syno_textfield",name:"secret",width:200,inputType:"password",allowBlank:!1,fieldLabel:SYNO.SDS.Backup.String("openstack","api_key")}),e}}),Ext.ns("SYNO.Backup.Addon.remote.Destination"),Ext.define("SYNO.Backup.Addon.remote.Destination.EditPanel",{extend:"SYNO.Backup.Addon.base.Destination.EditPanel",createItems:function(e){return this.is_verify_cert=!0,[{xtype:"syno_textfield",name:"dest",allowBlank:!1,fieldLabel:_T("netbackup","netbkp_set_ip"),width:200,validator:function(e){return SYNO.SDS.Backup.Util.isHostnameValid(e,!1)},scope:this},{xtype:"syno_combobox",name:"sslcheck",fieldLabel:SYNO.SDS.Backup.String("remote","transfer_encryption"),allowBlank:!1,store:new Ext.data.ArrayStore({fields:["text","value"],data:[[SYNO.SDS.Backup.String("app","on"),!0],[SYNO.SDS.Backup.String("app","off"),!1]]}),displayField:"text",valueField:"value",editable:!1,value:!1,listeners:{select:function(e,t,a){this.showFieldCert(t.json[1])},scope:this}},{xtype:"syno_numberfield",maxlength:5,vtype:"port",name:"port",value:6281,allowBlank:!1,fieldLabel:_T("common","port")},{xtype:"syno_displayfield",name:"account",hidden:!0},{xtype:"syno_displayfield",name:"pwd",hidden:!0},{xtype:"syno_displayfield",name:"is_webapi_authen",value:"false",hidden:!0},{xtype:"syno_compositefield",fieldLabel:SYNO.SDS.Backup.String("app","authenticate"),items:[{xtype:"syno_displayfield",name:"account_display_name"},{xtype:"syno_button",name:"account_authen",text:SYNO.SDS.Backup.String("app","login"),itemId:"authenticate_button",handler:this.onAuthenBtnClick,scope:this}]},{xtype:"syno_displayfield",name:"verify_cert",fieldLabel:SYNO.SDS.Backup.String("app","certificate_auth")},{xtype:"syno_compositefield",hideLabel:!0,style:"margin-left: 185px",name:"cert_buttons",items:[{xtype:"syno_button",hideLabel:!0,text:SYNO.SDS.Backup.String("app","trust"),itemId:"trust_button",handler:this.onTrustBtnClick,scope:this},{xtype:"syno_button",hideLabel:!0,text:SYNO.SDS.Backup.String("app","ignore"),itemId:"ignore_button",handler:this.onIgnoreCertBtnClick,scope:this}]},{xtype:"syno_displayfield",height:10},{xtype:"syno_displayfield",name:"white_list_edit_hint",value:_T("backup","repo_white_list_hint")}]},showFieldCert:function(e){var t=this.getForm().findField("verify_cert"),a=this.getForm().findField("cert_buttons");e?(t.show(),a.show()):(t.hide(),a.hide()),this.doLayout()},onQueryHostnameDone:function(e,t){var a=[];e&&void 0!==t&&Ext.isArray(t.nif)&&(this.selfHostName=t.hostname.toLowerCase(),Ext.each(t.nif,(function(e){a.push(e.addr),Ext.isArray(e.ipv6)&&Ext.each(e.ipv6,(function(e){a.push(e.addr)}))})),this.selfIPs=a)},onIgnoreCertBtnClick:function(){this.owner.setStatusBusy(),this.sendWebAPI({api:"SYNO.Backup.Repository.Certificate",version:1,method:"ignore",params:{repo_id:this.repoId,ignore_cert:!0},callback:this.ignoreCertCB,scope:this})},ignoreCertCB:function(e,t,a){if(this.owner.clearStatusBusy(),e){var i=this.getForm().findField("verify_cert");i.removeClass("syno-backup-orange-status"),i.removeClass("syno-backup-red-status"),i.removeClass("syno-backup-green-status"),i.addClass("syno-backup-orange-status"),i.setValue(SYNO.SDS.Backup.String("app","certificate_auth_always_ignore")),this.is_verify_cert=!1;var n=this.getForm().findField("sslcheck");n.disabled&&(n.setDisabled(!1),n.setValue(this.sslCheck))}else this.owner.getMsgBox().alert(_T("tree","leaf_backup"),SYNO.SDS.Backup.GetErrorString(t.code))},authenCB:function(e){SYNO.Debug(e),"code"in e?1001!==e.code&&this.owner.getMsgBox().alert(_T("tree","leaf_backup"),SYNO.SDS.Backup.GetErrorString(SYNO.SDS.Backup.ERR_SERVICE_DISABLE)):(this.getForm().findField("account").setValue(e.username),SYNO.Backup.Util.DisplayAccount(this.getForm().findField("account_display_name"),e.username,12),this.getForm().findField("pwd").setValue(e.id),this.getForm().findField("is_webapi_authen").setValue(!0),this.doLayout()),this.owner.clearStatusBusy()},onAuthenBtnClick:function(){var e=this.getForm().findField("dest");if(e.isValid()){this.owner.setStatusBusy();var t=this.owner.getParams();t.ip=this.getForm().findField("dest").getValue(),t.port=this.getForm().findField("port").getValue(),this.sendWebAPI({api:"SYNO.Backup.Repository.LoginPort",version:1,method:"get",params:t,scope:this,callback:function(e,a,i){if(!e)return a.code==SYNO.SDS.Backup.ERR_NO_RESPONSE&&(a.code=SYNO.SDS.Backup.ERR_SERVICE_DISABLE),this.owner.getMsgBox().alert(_T("tree","leaf_backup"),SYNO.SDS.Backup.GetErrorString(a.code)),!1;var n={url:"",forceLegacyMode:!1,session:"HyperBackupVault",appWin:this.owner,callback:this.authenCB.bind(this),redirect_uri:window.location.origin};a.port>0?n.url="https://"+t.ip+":"+a.port:(n.forceLegacy=!0,n.mustHaveCredential=!0),"true"===Ext.urlDecode(location.search.substr(1)).forceLegacy&&(n.forceLegacy=!0),synocredential.Issue(n)}})}else e.markInvalid(_T("netbackup","netbkp_err_host_str"))},onTrustBtnClick:function(){this.owner.setStatusBusy(),this.sendWebAPI({api:"SYNO.Backup.Repository.Certificate",version:1,method:"verify",params:{repo_id:this.repoId,trust_cert:!0},callback:this.verifyCertCB,scope:this})},verifyCertCB:function(e,t,a){if(this.owner.clearStatusBusy(),e){this.is_verify_cert=!0;var i=this.getForm().findField("verify_cert");if(i){i.removeClass("syno-backup-orange-status"),i.removeClass("syno-backup-red-status"),i.removeClass("syno-backup-green-status"),i.addClass("syno-backup-green-status"),i.setValue(SYNO.SDS.Backup.String("app","certificate_auth_pass"));var n=this.getForm().findField("sslcheck");n.disabled&&(n.setDisabled(!1),n.setValue(this.sslCheck))}}else this.owner.getMsgBox().alert(_T("tree","leaf_backup"),SYNO.SDS.Backup.GetErrorString(t.code))},loadData:function(e){this.getForm().setValues(e),this.getForm().findField("sslcheck")&&(e.support_ssl?this.getForm().findField("sslcheck").setDisabled(!1):(this.getForm().findField("sslcheck").setValue(!1),this.getForm().findField("sslcheck").setDisabled(!0))),this.getForm().findField("port")&&!Ext.isDefined(e.port)&&(e.port=6281);var t=this.getForm().findField("account_display_name");t.getEl()&&(SYNO.Backup.Util.DisplayAccount(t,e.account,12),this.doLayout()),this.is_verify_cert=!e.ignore_cert;var a=this.getForm().findField("verify_cert");a&&(a.removeClass("syno-backup-orange-status"),a.removeClass("syno-backup-red-status"),a.removeClass("syno-backup-green-status"),e.sslcheck?(!0===e.ignore_cert?(a.addClass("syno-backup-orange-status"),a.setValue(SYNO.SDS.Backup.String("app","certificate_auth_always_ignore"))):!0===e.verify_cert?(a.addClass("syno-backup-green-status"),a.setValue(SYNO.SDS.Backup.String("app","certificate_auth_pass"))):(a.addClass("syno-backup-red-status"),a.setValue(SYNO.SDS.Backup.String("app","certificate_auth_failed")),this.cert_err_reason=SYNO.Backup.Util.getCertErrReason(e.verify_err_code,e.cert)),delete e.verify_cert):a.setValue(SYNO.SDS.Backup.String("app","certificate_auth_not_yet")),this.showFieldCert(e.sslcheck)),this.orgName=e.name,this.deststatus=e.deststatus,this.sslCheck=e.sslcheck},afterRender:function(){return this.owner.setStatusBusy(),this.sendWebAPI({api:"SYNO.Core.System",method:"info",version:1,params:{type:"network"},callback:this.onRenderDone,scope:this}),this.callParent(arguments)},onRenderDone:function(e,t,a){if(!e)return this.owner.clearStatusBusy(),void this.owner.getMsgBox().alert(_T("leaf","backup"),_T("error","error_error_system"),(function(){this.close()}),this);var i=this.getForm().findField("verify_cert");i&&!Ext.isEmpty(this.cert_err_reason)&&SYNO.ux.AddTip(i.getEl(),this.cert_err_reason),SYNO.Backup.Util.DisplayAccount(this.getForm().findField("account_display_name"),this.getForm().findField("account").getValue(),12),this.doLayout(),this.onQueryHostnameDone(t.success,t.data),this.owner.clearStatusBusy()},getApplyParams:function(){var e=this.getForm().getFieldValues(!1),t=!1;return(!this.sslCheck&&e.sslcheck||e.sslcheck&&this.is_verify_cert)&&(t=!0),{verify_cert:t}}}),Ext.ns("SYNO.Backup.Addon.sfr_s3.Destination"),Ext.define("SYNO.Backup.Addon.sfr_s3.Destination.EditPanel",{extend:"SYNO.SDS.Backup.Addon.Util.S3.Repository.EditDialog",constructor:function(e){var t=Ext.apply({addon_id:"image_sfr"},e);return this.callParent([t])},createItems:function(){var e=this.callParent();return e.push({xtype:"syno_textfield",name:"key",width:200,allowBlank:!1,fieldLabel:_T("backup","s3_access_key")}),e.push({xtype:"syno_textfield",name:"secret",inputType:"password",allowBlank:!1,fieldLabel:_T("backup","s3_secret_key"),width:200}),e}}),Ext.ns("SYNO.Backup.Addon.webdav.Destination"),Ext.define("SYNO.Backup.Addon.webdav.Destination.EditPanel",{extend:"SYNO.SDS.Backup.Addon.Util.S3.Repository.EditDialog",constructor:function(e){var t=Ext.apply({},e);return this.callParent([t])},createItems:function(){var e=this.callParent();return e.push({xtype:"syno_textfield",name:"remote_url",width:200,allowBlank:!1,fieldLabel:SYNO.SDS.Backup.String("webdav","url")}),e.push({xtype:"syno_textfield",name:"account",width:200,allowBlank:!1,fieldLabel:SYNO.SDS.Backup.String("webdav","username")}),e.push({xtype:"syno_textfield",name:"pwd",width:200,inputType:"password",allowBlank:!1,fieldLabel:SYNO.SDS.Backup.String("app","task_password_input")}),e},getApplyApi:function(){var e=this.getForm().getFieldValues(!0),t={};if(e.remote_url){for(var a=e.remote_url.trim();0<a.length&&"/"==a[a.length-1];)a=a.slice(0,-1);"http://"!==a.substring(0,7)&&"https://"!==a.substring(0,8)?t.remote_url="http://"+a:t.remote_url=a}return e.account&&(t.account=e.account),e.pwd&&(t.pwd=e.pwd),t.name=this.orgName,t.task_id=this.taskId,t.repo_id=this.repoId,t.transfer_type=this.transferType,t.target_type=this.targetType,{api:"SYNO.Backup.Repository",version:1,method:"set",params:t}}}),Ext.ns("SYNO.Backup.Addon.synocloud.Destination"),Ext.define("SYNO.Backup.Addon.synocloud.Destination.EditPanel",{extend:"SYNO.Backup.Addon.base.Destination.EditPanel",initEvents:function(){this.callParent(arguments),this.mon(this,"activate",(function(){this.checkAccountInfoFresh()}),this,{single:!0})},checkAccountInfoFresh:function(){this.owner.accountMeta.isFresh||(this.mask_=new Ext.LoadMask(this.getEl()),this.mask_.show(),this.owner.sendWebAPI({api:"SYNO.Backup.Target",method:"get",version:1,params:{task_id:this.taskId,additional:["update_account_meta","account_meta"]},scope:this,callback:function(e,t){if(e){if(t.account_meta){var a=SYNO.SDS.Backup.Client.Common.Utils.createAccountMeta();a.setData(t.account_meta),this.form.findField("account").setValue(a.account),this.form.findField("plan").setValue(this.getPlanString(a.planGroup,a.quota)),this.form.findField("period").setValue(this.getPeriodString(a.planPeriod))}this.mask_.hide()}else this.mask_.hide()}}))},createItems:function(e){return[{xtype:"syno_displayfield",name:"account",value:SYNO.SDS.Backup.String("app","unable_get_details"),fieldLabel:SYNO.SDS.Backup.String("app","account")},{xtype:"syno_displayfield",name:"plan",value:SYNO.SDS.Backup.String("app","unable_get_details"),fieldLabel:SYNO.SDS.Backup.String("app","plan")},{xtype:"syno_displayfield",name:"period",value:SYNO.SDS.Backup.String("app","unable_get_details"),fieldLabel:SYNO.Backup.Addon.Util.getString("synocloud","subscription_cycle")}]},getPeriodString:function(e){return"yearly"==e?SYNO.Backup.Addon.Util.getString("synocloud","plan_period_yearly"):SYNO.Backup.Addon.Util.getString("synocloud","plan_period_monthly")},getPlanString:function(e,t){var a=SYNO.SDS.Backup.ConverSize(t,0),i="personal"==e?SYNO.Backup.Addon.Util.getString("synocloud","plan_group_personal"):SYNO.Backup.Addon.Util.getString("synocloud","plan_group_business");return String.format("{0} - {1}",i,a)},loadData:function(e,t){if(""!==t.account&&""!==t.planGroup&&""!==t.planPeriod&&0!==t.quota)this.form.findField("account").setValue(t.accountMeta.account),this.form.findField("plan").setValue(this.getPlanString(t.accountMeta.planGroup,t.accountMeta.quota)),this.form.findField("period").setValue(this.getPeriodString(t.accountMeta.planPeriod));else{var a=e.account_meta;a&&(a.synoaccount&&this.form.findField("account").setValue(a.synoaccount),a.plan_group&&a.quota&&this.form.findField("plan").setValue(this.getPlanString(a.plan_group,a.quota)),a.plan_period&&this.form.findField("period").setValue(this.getPeriodString(a.plan_period)))}},getApplyApi:function(){}}),Ext.ns("SYNO.Backup.Addon.amazon_cloud_drive.Task"),Ext.define("SYNO.Backup.Addon.amazon_cloud_drive.Task.SettingPanel",{extend:"SYNO.Backup.Addon.Cloud.base.Task.SettingPanel",getSettingConfig:function(e){return[{xtype:"syno_checkbox",boxLabel:SYNO.SDS.Backup.String("app","enable_encrypted_transmission"),labelSeparator:"",name:"trans_encrypt",checked:!0,disabled:!0}]}}),Ext.ns("SYNO.Backup.Addon.aws_s3.Task"),Ext.define("SYNO.Backup.Addon.aws_s3.Task.SettingPanel",{extend:"SYNO.Backup.Addon.Cloud.base.Task.SettingPanel",getSettingConfig:function(e){return this.partSizeStore=new Ext.data.SimpleStore({data:[["8",8],["16",16],["32",32],["64",64],["128",128],["256",256],["512",512]],fields:["partsize","partsizeValue"]}),[{xtype:"syno_checkbox",checked:!0,boxLabel:SYNO.SDS.Backup.String("app","enable_encrypted_transmission"),labelSeparator:"",name:"trans_encrypt"},new SYNO.SDS.Backup.ComboBoxAndDisplayField({fieldLabel:SYNO.SDS.Backup.String("aws_s3","storage_class"),itemId:"storage_class",store:new Ext.data.SimpleStore({fields:["storage_class_name","value"],data:[[SYNO.SDS.Backup.String("aws_s3","standard_storage"),"STANDARD"],[SYNO.SDS.Backup.String("aws_s3","intelligent_tiering_storage"),"INTELLIGENT_TIERING"],[SYNO.SDS.Backup.String("aws_s3","reduced_redundancy_storage"),"REDUCED_REDUNDANCY"],[SYNO.SDS.Backup.String("aws_s3","infrequent_access_storage"),"STANDARD_IA"],[SYNO.SDS.Backup.String("aws_s3","onezone_infrequent_access_storage"),"ONEZONE_IA"]]}),displayField:"storage_class_name",valueField:"value",value:"STANDARD",hidden:!0}),{xtype:"syno_combobox",fieldLabel:_T("backup","s3_multipart_size"),name:"part_size",width:80,displayField:"partsize",valueField:"partsizeValue",value:512,store:this.partSizeStore}]},getParams:function(){var e=this.getFieldset().getComponent("storage_class").getValue(),t=this.getForm(),a=function(e){return t.findField(e).getValue()},i=this.callParent(arguments);return i.backup_params.part_size=a("part_size"),e&&(i.backup_params.storage_class=e),i},activate:function(){var e=this.owner.getParams(),t=this.getForm(),a=function(e,t,a){e.findField(t).setDisabled(!a),e.findField(t).setVisible(a)};"export"===e.action?(a(t,"trans_encrypt",!1),a(t,"part_size",!1)):(a(t,"trans_encrypt",!0),a(t,"part_size",!0)),e.remote_url||"export"===e.action?this.getFieldset().getComponent("storage_class").setVisibleAndEnable(!1):"relink"!==e.action||Ext.isEmpty(this.owner.storage_class)?this.getFieldset().getComponent("storage_class").transToComboBox():(this.getFieldset().getComponent("storage_class").setValue(this.owner.storage_class),this.getFieldset().getComponent("storage_class").transToText()),this.lastAnchor!==this.owner.getWizardAnchor()&&this.getForm().findField("part_size").setValue(512),this.callParent(arguments)}}),Ext.ns("SYNO.Backup.Addon.auzre_blob.Task"),Ext.define("SYNO.Backup.Addon.azure_blob.Task.SettingPanel",{extend:"SYNO.Backup.Addon.Cloud.base.Task.SettingPanel",getSettingConfig:function(e){return[{xtype:"syno_checkbox",checked:!0,name:"trans_encrypt",boxLabel:SYNO.SDS.Backup.String("app","enable_encrypted_transmission")}]},activate:function(){this.callParent(arguments);var e=this.owner.getParams(),t=this.getForm(),a=function(e,t,a){e.findField(t).setDisabled(!a),e.findField(t).setVisible(a)};"export"===e.action?a(t,"trans_encrypt",!1):a(t,"trans_encrypt",!0)}}),Ext.ns("SYNO.Backup.Addon.auzre_cn_blob.Task"),Ext.define("SYNO.Backup.Addon.azure_cn_blob.Task.SettingPanel",{extend:"SYNO.Backup.Addon.azure_blob.Task.SettingPanel"}),Ext.ns("SYNO.Backup.Addon.dropbox.Task"),Ext.define("SYNO.Backup.Addon.dropbox.Task.SettingPanel",{extend:"SYNO.Backup.Addon.Cloud.base.Task.SettingPanel",getSettingConfig:function(e){return[{xtype:"syno_checkbox",boxLabel:SYNO.SDS.Backup.String("app","enable_encrypted_transmission"),labelSeparator:"",name:"trans_encrypt",checked:!0,disabled:!0}]}}),Ext.ns("SYNO.Backup.Addon.google_drive.Task"),Ext.define("SYNO.Backup.Addon.google_drive.Task.SettingPanel",{extend:"SYNO.Backup.Addon.Cloud.base.Task.SettingPanel",getSettingConfig:function(e){return[{xtype:"syno_checkbox",boxLabel:SYNO.SDS.Backup.String("app","enable_encrypted_transmission"),labelSeparator:"",name:"trans_encrypt",checked:!0,disabled:!0}]}}),Ext.ns("SYNO.Backup.Addon.hicloud_s3.Task"),Ext.define("SYNO.Backup.Addon.hicloud_s3.Task.SettingPanel",{extend:"SYNO.SDS.Backup.Addon.Util.Image.S3.Backup.ParamsPanel",loadPartSizeStore:function(){this.partSizeStore.loadData([["8",8],["16",16],["32",32],["64",64],["128",128],["256",256],["512",512]])},setDefaultSizeStore:function(){this.getForm().findField("part_size").setValue(512)}}),Ext.ns("SYNO.Backup.Addon.jdcloud_s3.Task"),Ext.define("SYNO.Backup.Addon.jdcloud_s3.Task.SettingPanel",{extend:"SYNO.SDS.Backup.Addon.Util.Image.S3.Backup.ParamsPanel",loadPartSizeStore:function(){this.partSizeStore.loadData([["8",8],["16",16],["32",32],["64",64],["128",128],["256",256],["512",512]])},setDefaultSizeStore:function(){this.getForm().findField("part_size").setValue(512)}}),Ext.ns("SYNO.Backup.Addon.hidrive.Task"),Ext.define("SYNO.Backup.Addon.hidrive.Task.SettingPanel",{extend:"SYNO.Backup.Addon.Cloud.base.Task.SettingPanel",getSettingConfig:function(e){return[{xtype:"syno_checkbox",boxLabel:SYNO.SDS.Backup.String("app","enable_encrypted_transmission"),labelSeparator:"",name:"trans_encrypt",checked:!0,disabled:!0},{xtype:"syno_checkbox",boxLabel:_T("netbackup","compression_enable"),name:"trans_compress",hidden:!0,disabled:!0},{xtype:"syno_compositefield",hideLabel:!0,name:"bandwidth_composite",items:[{xtype:"syno_checkbox",name:"bandwidthcheck",boxLabel:_T("backup","limit_the_bandwidth"),scope:this,handler:function(e,t){t?this.getForm().findField("bw_limit").enable():this.getForm().findField("bw_limit").disable()}},{xtype:"syno_numberfield",disabled:!0,name:"bw_limit",allowBlank:!1,width:100,minValue:1,maxValue:2147483647},{xtype:"syno_displayfield",value:"KB/s"}]}]},getParams:function(){var e=this.getForm(),t=function(t){return e.findField(t).getValue()},a=this.callParent(arguments);return t("bandwidthcheck")?a.backup_params.bw_limit=t("bw_limit"):a.backup_params.bw_limit=0,a},activate:function(){this.callParent(arguments);var e=this.owner.getParams(),t=this.getForm(),a=function(e,t,a){e.findField(t).setDisabled(!a),e.findField(t).setVisible(a)};"export"===e.action?a(t,"bandwidth_composite",!1):(a(t,"bandwidth_composite",!0),this.getForm().findField("bw_limit").setDisabled(!this.getForm().findField("bandwidthcheck").getValue()))}}),Ext.ns("SYNO.Backup.Addon.hubic.Task"),Ext.define("SYNO.Backup.Addon.hubic.Task.SettingPanel",{extend:"SYNO.Backup.Addon.Cloud.base.Task.SettingPanel",getSettingConfig:function(e){return[{xtype:"syno_checkbox",boxLabel:SYNO.SDS.Backup.String("app","enable_encrypted_transmission"),labelSeparator:"",name:"trans_encrypt",checked:!0,disabled:!0}]}}),Ext.ns("SYNO.Backup.Addon.ibm_softlayer.Task"),Ext.define("SYNO.Backup.Addon.ibm_softlayer.Task.SettingPanel",{extend:"SYNO.SDS.Backup.Addon.Util.Image.OpenStack.Backup.ParamsPanel",getSettingConfig:function(e){return[{xtype:"syno_checkbox",boxLabel:SYNO.SDS.Backup.String("app","enable_encrypted_transmission"),labelSeparator:"",name:"trans_encrypt",checked:!0,disabled:!0}]}}),Ext.ns("SYNO.Backup.Addon.legacy_aws_s3.Task"),Ext.define("SYNO.Backup.Addon.legacy_aws_s3.Task.SettingPanel",{extend:"SYNO.Backup.Addon.Legacy.base.Task.SettingPanel",constructor:function(e){var t=Ext.apply({items:[{xtype:"syno_fieldset",title:e.subTitle,labelWidth:300,collapsible:!1,items:this.configS3Fields(e)}]},e);return this.callParent([t])},configS3Fields:function(e){var t=new Ext.data.SimpleStore({data:[["8",8],["16",16],["32",32],["64",64],["128",128],["256",256],["512",512]],fields:["partsize","partsizeValue"]});return[{xtype:"syno_fieldset",labelWidth:150,style:"margin: 0;",bwrapStyle:"padding: 0;",items:[{xtype:"syno_textfield",name:"task_name",fieldLabel:_T("localbkp","localbkp_bkpset_name"),value:e.defaultName,width:270,maxLength:32,allowBlank:!1,vtype:"taskname"},{xtype:"syno_textfield",name:"task_dir",fieldLabel:_T("backup","backup_dest_directory"),width:270,maxLength:32,allowBlank:!1,vtype:"backup_target"}]},{xtype:"syno_checkbox",boxLabel:_T("backup","incrbkp_enable"),labelSeparator:"",name:"incrbkp_enable"},{xtype:"syno_checkbox",checked:!0,boxLabel:SYNO.SDS.Backup.String("app","enable_encrypted_transmission"),labelSeparator:"",name:"trans_encrypt"},{xtype:"syno_checkbox",name:"backup_meta",boxLabel:_T("backup","backup_metadata_option"),checked:!0},{xtype:"syno_checkbox",name:"backup_thumb",boxLabel:_T("backup","backup_synoea_option"),checked:!0},{xtype:"syno_checkbox",name:"enable_notify",boxLabel:SYNO.SDS.Backup.String("app","enable_notify_option"),checked:!0},{xtype:"syno_checkbox",checked:!0,disabled:!0,name:"bkp_config",boxLabel:SYNO.SDS.Backup.String("app","backup_config_option_mandatory")},{xtype:"syno_numberfield",name:"max_dss_version",indent:"1",fieldLabel:_T("backup","max_version"),allowBlank:!1,minValue:1,maxValue:30,value:1,width:50},{xtype:"syno_checkbox",name:"is_rrs",boxLabel:_T("backup","s3_use_rrs")},{xtype:"syno_combobox",fieldLabel:_T("backup","s3_multipart_size"),name:"part_size",width:80,displayField:"partsize",valueField:"partsizeValue",value:512,store:t}]},getParams:function(){var e=this.getForm(),t=function(t){return e.findField(t).getValue()},a=this.callParent(arguments);return a.backup_params.part_size=t("part_size"),a},summaryFirst:function(e){e.append(_T("localbkp","localbkp_bkpset_name"),this.getForm().findField("task_name").getValue())}}),Ext.ns("SYNO.Backup.Addon.legacy_azure_blob.Task"),Ext.define("SYNO.Backup.Addon.legacy_azure_blob.Task.SettingPanel",{extend:"SYNO.Backup.Addon.Legacy.base.Task.SettingPanel",constructor:function(e){var t=Ext.apply({items:[{xtype:"syno_fieldset",title:e.subTitle,labelWidth:300,collapsible:!1,items:this.configS3Fields(e)}]},e);return this.callParent([t])},configS3Fields:function(e){return[{xtype:"syno_fieldset",style:"margin: 0;",bwrapStyle:"padding: 0;",labelWidth:150,items:[{xtype:"syno_textfield",name:"task_name",fieldLabel:_T("localbkp","localbkp_bkpset_name"),value:e.defaultName,width:270,maxLength:32,allowBlank:!1,vtype:"taskname"},{xtype:"syno_textfield",name:"task_dir",fieldLabel:_T("backup","backup_dest_directory"),maxLength:32,width:270,allowBlank:!1,vtype:"backup_target"}]},{xtype:"syno_checkbox",boxLabel:_T("backup","incrbkp_enable"),labelSeparator:"",name:"incrbkp_enable"},{xtype:"syno_checkbox",checked:!0,boxLabel:SYNO.SDS.Backup.String("app","enable_encrypted_transmission"),labelSeparator:"",name:"trans_encrypt"},{xtype:"syno_checkbox",name:"backup_meta",boxLabel:_T("backup","backup_metadata_option"),checked:!0},{xtype:"syno_checkbox",name:"backup_thumb",boxLabel:_T("backup","backup_synoea_option"),checked:!0},{xtype:"syno_checkbox",name:"enable_notify",boxLabel:SYNO.SDS.Backup.String("app","enable_notify_option"),checked:!0},{xtype:"syno_checkbox",checked:!0,disabled:!0,name:"bkp_config",boxLabel:SYNO.SDS.Backup.String("app","backup_config_option_mandatory")},{xtype:"syno_numberfield",name:"max_dss_version",indent:"1",fieldLabel:_T("backup","max_version"),allowBlank:!1,minValue:1,maxValue:30,value:1,width:50}]},getParams:function(){var e=this.callParent(arguments);return e},summaryFirst:function(e){e.append(_T("localbkp","localbkp_bkpset_name"),this.getForm().findField("task_name").getValue())}}),Ext.ns("SYNO.Backup.Addon.legacy_hicloud_s3.Task"),Ext.define("SYNO.Backup.Addon.legacy_hicloud_s3.Task.SettingPanel",{extend:"SYNO.Backup.Addon.Legacy.base.Task.SettingPanel",constructor:function(e){var t=Ext.apply({items:[{xtype:"syno_fieldset",title:e.subTitle,labelWidth:300,collapsible:!1,items:this.configS3Fields(e)}]},e);return this.callParent([t])},configS3Fields:function(e){var t=new Ext.data.SimpleStore({data:[["8",8],["16",16],["32",32],["64",64],["128",128],["256",256],["512",512]],fields:["partsize","partsizeValue"]});return[{xtype:"syno_fieldset",bwrapStyle:"padding: 0;",style:"margin: 0;",labelWidth:150,items:[{xtype:"syno_textfield",name:"task_name",fieldLabel:_T("localbkp","localbkp_bkpset_name"),value:e.defaultName,width:270,maxLength:32,allowBlank:!1,vtype:"taskname"},{xtype:"syno_textfield",name:"task_dir",fieldLabel:_T("backup","backup_dest_directory"),width:270,maxLength:32,allowBlank:!1,vtype:"backup_target"}]},{xtype:"syno_checkbox",boxLabel:_T("backup","incrbkp_enable"),labelSeparator:"",name:"incrbkp_enable"},{xtype:"syno_checkbox",checked:!0,boxLabel:SYNO.SDS.Backup.String("app","enable_encrypted_transmission"),labelSeparator:"",name:"trans_encrypt"},{xtype:"syno_checkbox",name:"backup_meta",boxLabel:_T("backup","backup_metadata_option"),checked:!0},{xtype:"syno_checkbox",name:"backup_thumb",boxLabel:_T("backup","backup_synoea_option"),checked:!0},{xtype:"syno_checkbox",name:"enable_notify",boxLabel:SYNO.SDS.Backup.String("app","enable_notify_option"),checked:!0},{xtype:"syno_checkbox",checked:!0,disabled:!0,name:"bkp_config",boxLabel:SYNO.SDS.Backup.String("app","backup_config_option_mandatory")},{xtype:"syno_numberfield",name:"max_dss_version",indent:"1",fieldLabel:_T("backup","max_version"),allowBlank:!1,minValue:1,maxValue:30,value:1,width:50},{xtype:"syno_combobox",fieldLabel:_T("backup","s3_multipart_size"),name:"part_size",width:80,displayField:"partsize",valueField:"partsizeValue",value:512,store:t}]},getParams:function(){var e=this.getForm(),t=function(t){return e.findField(t).getValue()},a=this.callParent(arguments);return a.backup_params.part_size=t("part_size"),a},summaryFirst:function(e){e.append(_T("localbkp","localbkp_bkpset_name"),this.getForm().findField("task_name").getValue())}}),Ext.ns("SYNO.Backup.Addon.legacy_local.Task"),Ext.define("SYNO.Backup.Addon.legacy_local.Task.SettingPanel",{extend:"SYNO.Backup.Addon.Legacy.base.Task.SettingPanel",constructor:function(e){var t=Ext.apply({items:[{xtype:"syno_fieldset",title:e.subTitle,collapsible:!1,bwrapStyle:"padding: 0px;",items:this.configLocalFields(e)}]},e);return this.callParent([t])},configLocalFields:function(e){return[{xtype:"syno_fieldset",labelWidth:150,style:"margin: 0;",bwrapStyle:"padding: 0;",items:[{xtype:"syno_textfield",name:"task_name",fieldLabel:_T("localbkp","localbkp_bkpset_name"),labelWidth:240,width:270,maxLength:32,value:e.defaultName,allowBlank:!1,vtype:"taskname"},{xtype:"syno_textfield",name:"task_dir",fieldLabel:_T("backup","backup_dest_directory"),labelWidth:240,width:270,maxLength:32,allowBlank:!1,vtype:"backup_target"}]},{xtype:"syno_checkbox",name:"incrbkp_enable",boxLabel:_T("backup","incrbkp_enable")},{xtype:"syno_checkbox",name:"backup_meta",boxLabel:_T("backup","backup_metadata_option"),checked:!0},{xtype:"syno_checkbox",name:"backup_thumb",boxLabel:_T("backup","backup_synoea_option"),checked:!0},{xtype:"syno_checkbox",name:"enable_notify",boxLabel:SYNO.SDS.Backup.String("app","enable_notify_option"),checked:!0},{xtype:"syno_checkbox",checked:!0,disabled:!0,name:"bkp_config",boxLabel:SYNO.SDS.Backup.String("app","backup_config_option_mandatory")},{xtype:"syno_numberfield",name:"max_dss_version",indent:"1",fieldLabel:_T("backup","max_version"),labelWidth:246,allowBlank:!1,minValue:1,maxValue:30,value:1,width:50},{xtype:"syno_checkbox",name:"dest_auto_unmount",boxLabel:SYNO.SDS.Backup.String("app","support_auto_unmount_dest"),checked:!1,hidden:!0}]},summaryFirst:function(e){e.append(_T("localbkp","localbkp_bkpset_name"),this.getForm().findField("task_name").getValue())}}),Ext.ns("SYNO.Backup.Addon.legacy_rsync.Task"),Ext.define("SYNO.Backup.Addon.legacy_rsync.Task.SettingPanel",{extend:"SYNO.Backup.Addon.Legacy.base.Task.SettingPanel",constructor:function(e){var t=Ext.apply({items:[{xtype:"syno_fieldset",title:e.subTitle,collapsible:!1,bwrapStyle:"padding: 0px;",items:this.configNetFields(e)}]},e);return this.callParent([t])},configNetFields:function(e){return[{xtype:"syno_fieldset",style:"margin: 0;",bwrapStyle:"padding: 0;",items:[{xtype:"syno_textfield",name:"task_name",fieldLabel:_T("localbkp","localbkp_bkpset_name"),labelWidth:240,width:270,value:e.defaultName,maxLength:32,allowBlank:!1,vtype:"taskname"},{xtype:"syno_textfield",name:"task_dir",fieldLabel:_T("backup","backup_dest_directory"),labelWidth:240,width:270,maxLength:32,allowBlank:!1,vtype:"backup_target"}]},{xtype:"syno_checkbox",boxLabel:_T("netbackup","compression_enable"),name:"trans_compress"},{xtype:"syno_checkbox",boxLabel:_T("backup","blockbkp_enable"),name:"trans_delta"},{xtype:"syno_checkbox",boxLabel:_T("backup","incrbkp_enable"),name:"incrbkp_enable"},{xtype:"syno_checkbox",name:"backup_meta",boxLabel:_T("backup","backup_metadata_option"),checked:!0},{xtype:"syno_checkbox",name:"backup_thumb",boxLabel:_T("backup","backup_synoea_option"),checked:!0},{xtype:"syno_checkbox",name:"enable_notify",boxLabel:SYNO.SDS.Backup.String("app","enable_notify_option"),checked:!0},{xtype:"syno_compositefield",hideLabel:!0,items:[{xtype:"syno_checkbox",name:"bandwidthcheck",boxLabel:_T("backup","limit_the_bandwidth"),scope:this,handler:function(e,t){t?this.getForm().findField("bw_limit").enable():this.getForm().findField("bw_limit").disable()}},{xtype:"syno_numberfield",disabled:!0,name:"bw_limit",allowBlank:!1,width:100,minValue:1,maxValue:2147483647},{xtype:"syno_displayfield",value:"KB/s"}]},{xtype:"syno_checkbox",checked:!0,disabled:!0,name:"bkp_config",boxLabel:SYNO.SDS.Backup.String("app","backup_config_option_mandatory")},{xtype:"syno_numberfield",name:"max_dss_version",indent:"1",fieldLabel:_T("backup","max_version"),labelWidth:246,allowBlank:!1,minValue:1,maxValue:30,value:1,width:50}]},getParams:function(){var e=this.getForm(),t=function(t){return e.findField(t).getValue()},a=this.callParent(arguments);return t("bandwidthcheck")?a.backup_params.bw_limit=t("bw_limit"):a.backup_params.bw_limit=0,a},summaryFirst:function(e){e.append(_T("localbkp","localbkp_bkpset_name"),this.getForm().findField("task_name").getValue())}}),Ext.ns("SYNO.Backup.Addon.legacy_rsync_ds.Task"),Ext.define("SYNO.Backup.Addon.legacy_rsync_ds.Task.SettingPanel",{extend:"SYNO.Backup.Addon.legacy_rsync.Task.SettingPanel"}),Ext.ns("SYNO.Backup.Addon.legacy_sfr_s3.Task"),Ext.define("SYNO.Backup.Addon.legacy_sfr_s3.Task.SettingPanel",{extend:"SYNO.Backup.Addon.Legacy.base.Task.SettingPanel",constructor:function(e){var t=Ext.apply({items:[{xtype:"syno_fieldset",title:e.subTitle,labelWidth:300,collapsible:!1,items:this.configS3Fields(e)}]},e);return this.callParent([t])},configS3Fields:function(e){var t=new Ext.data.SimpleStore({data:[["8",8],["16",16],["32",32],["64",64]],fields:["partsize","partsizeValue"]});return[{xtype:"syno_fieldset",bwrapStyle:"padding: 0;",style:"margin: 0;",labelWidth:150,items:[{xtype:"syno_textfield",name:"task_name",fieldLabel:_T("localbkp","localbkp_bkpset_name"),value:e.defaultName,width:270,maxLength:32,allowBlank:!1,vtype:"taskname"},{xtype:"syno_textfield",name:"task_dir",fieldLabel:_T("backup","backup_dest_directory"),width:270,maxLength:32,allowBlank:!1,vtype:"backup_target"}]},{xtype:"syno_checkbox",boxLabel:_T("backup","incrbkp_enable"),labelSeparator:"",name:"incrbkp_enable"},{xtype:"syno_checkbox",checked:!0,boxLabel:SYNO.SDS.Backup.String("app","enable_encrypted_transmission"),labelSeparator:"",name:"trans_encrypt"},{xtype:"syno_checkbox",name:"backup_meta",boxLabel:_T("backup","backup_metadata_option"),checked:!0},{xtype:"syno_checkbox",name:"backup_thumb",boxLabel:_T("backup","backup_synoea_option"),checked:!0},{xtype:"syno_checkbox",name:"enable_notify",boxLabel:SYNO.SDS.Backup.String("app","enable_notify_option"),checked:!0},{xtype:"syno_checkbox",checked:!0,disabled:!0,name:"bkp_config",boxLabel:SYNO.SDS.Backup.String("app","backup_config_option_mandatory")},{xtype:"syno_numberfield",name:"max_dss_version",indent:"1",fieldLabel:_T("backup","max_version"),allowBlank:!1,minValue:1,maxValue:30,value:1,width:50},{xtype:"syno_combobox",fieldLabel:_T("backup","s3_multipart_size"),name:"part_size",width:80,displayField:"partsize",valueField:"partsizeValue",value:64,store:t}]},getParams:function(){var e=this.getForm(),t=function(t){return e.findField(t).getValue()},a=this.callParent(arguments);return a.backup_params.part_size=t("part_size"),a},summaryFirst:function(e){e.append(_T("localbkp","localbkp_bkpset_name"),this.getForm().findField("task_name").getValue())}}),Ext.ns("SYNO.Backup.Addon.local.Task"),Ext.define("SYNO.Backup.Addon.local.Task.SettingPanel",{extend:"SYNO.Backup.Addon.base.Task.SettingPanel"}),Ext.ns("SYNO.Backup.Addon.openstack.Task"),Ext.define("SYNO.Backup.Addon.openstack.Task.SettingPanel",{extend:"SYNO.SDS.Backup.Addon.Util.Image.OpenStack.Backup.ParamsPanel"}),Ext.ns("SYNO.Backup.Addon.openstack.Task"),Ext.define("SYNO.Backup.Addon.rackspace.Task.SettingPanel",{extend:"SYNO.SDS.Backup.Addon.Util.Image.OpenStack.Backup.ParamsPanel",getSettingConfig:function(e){return[{xtype:"syno_checkbox",boxLabel:SYNO.SDS.Backup.String("app","enable_encrypted_transmission"),labelSeparator:"",name:"trans_encrypt",checked:!0,disabled:!0}]}}),Ext.ns("SYNO.Backup.Addon.remote.Task"),Ext.define("SYNO.Backup.Addon.remote.Task.SettingPanel",{extend:"SYNO.Backup.Addon.base.Task.SettingPanel",getSettingConfig:function(e){let t={};return Ext.apply(t,Ext.form.NumberField.prototype.defaultAutoCreate,{maxlength:2}),[{xtype:"syno_checkbox",name:"trans_encrypt",hidden:!0,boxLabel:SYNO.SDS.Backup.String("app","enable_encrypted_transmission")},{xtype:"syno_fieldset",labelWidth:150,style:"margin: 0;",bwrapStyle:"padding: 0;",hidden:void 0!==e.appWin,items:[{xtype:"syno_displayfield",value:SYNO.SDS.Backup.String("app","auto_resume_retry_limit_desc")},{xtype:"syno_numberfield",name:"max_auto_resume_retry",value:5,minValue:0,maxValue:10,width:40,allowBlank:!1,maxLength:2,autoCreate:t,fieldLabel:SYNO.SDS.Backup.String("app","max_number")}]}]},activate:function(){var e=this.owner.getParams(),t=this.owner.getRepoInfo(),a=this.getForm();"export"!==e.action&&(Ext.isDefined(t.sslcheck)&&t.sslcheck&&a.findField("trans_encrypt")?a.findField("trans_encrypt").setValue(!0):a.findField("trans_encrypt").setValue(!1)),this.callParent(arguments)}}),Ext.define("SYNO.Backup.Addon.rsync.Task.SettingPanel",{extend:"SYNO.Backup.Addon.Cloud.base.Task.SettingPanel",getSettingConfig:function(){return[{xtype:"syno_checkbox",boxLabel:_T("netbackup","compression_enable"),name:"trans_compress",hidden:!0,disabled:!0},{xtype:"syno_compositefield",hideLabel:!0,name:"bandwidth_composite",items:[{xtype:"syno_checkbox",name:"bandwidthcheck",boxLabel:_T("backup","limit_the_bandwidth"),scope:this,handler:function(e,t){t?this.getForm().findField("bw_limit").enable():this.getForm().findField("bw_limit").disable()}},{xtype:"syno_numberfield",disabled:!0,name:"bw_limit",allowBlank:!1,width:100,minValue:1,maxValue:2147483647},{xtype:"syno_displayfield",value:"KB/s"}]}]},getParams:function(){var e=this.getForm(),t=function(t){return e.findField(t).getValue()},a=this.callParent(arguments);return t("bandwidthcheck")?a.backup_params.bw_limit=t("bw_limit"):a.backup_params.bw_limit=0,a},activate:function(){var e=this.owner.getParams(),t=this.getForm(),a=function(e,t,a){e.findField(t).setDisabled(!a),e.findField(t).setVisible(a)};"export"===e.action?a(t,"bandwidth_composite",!1):(a(t,"bandwidth_composite",!0),this.getForm().findField("bw_limit").setDisabled(!this.getForm().findField("bandwidthcheck").getValue())),this.callParent(arguments)}}),Ext.define("SYNO.Backup.Addon.rsync_ds.Task.SettingPanel",{extend:"SYNO.Backup.Addon.rsync.Task.SettingPanel"}),Ext.ns("SYNO.Backup.Addon.sfr_s3.Task"),Ext.define("SYNO.Backup.Addon.sfr_s3.Task.SettingPanel",{extend:"SYNO.SDS.Backup.Addon.Util.Image.S3.Backup.ParamsPanel",loadPartSizeStore:function(){this.partSizeStore.loadData([["8",8],["16",16],["32",32],["64",64]])},setDefaultSizeStore:function(){this.getForm().findField("part_size").setValue(64)}}),Ext.ns("SYNO.Backup.Addon.webdav.Task"),Ext.define("SYNO.Backup.Addon.webdav.Task.SettingPanel",{extend:"SYNO.Backup.Addon.Cloud.base.Task.SettingPanel"}),Ext.ns("SYNO.Backup.Addon.synocloud.Task"),Ext.define("SYNO.Backup.Addon.synocloud.Task.SettingPanel",{extend:"SYNO.Backup.Addon.Cloud.base.Task.SettingPanel",constructor:function(e){return e.disableDataComp=!0,e.hideDataComp=!0,this.callParent([e])},getSettingConfig:function(e){return[{xtype:"syno_checkbox",boxLabel:SYNO.SDS.Backup.String("app","enable_encrypted_transmission"),labelSeparator:"",name:"trans_encrypt",checked:!0,disabled:!0},{xtype:"syno_compositefield",hideLabel:!0,name:"bandwidth_composite",items:[{xtype:"syno_checkbox",name:"bandwidthcheck",boxLabel:_T("backup","limit_the_bandwidth"),scope:this,handler:function(e,t){t?(this.getForm().findField("bw_limit").enable(),this.getForm().findField("bw_limit_unit").enable()):(this.getForm().findField("bw_limit").disable(),this.getForm().findField("bw_limit_unit").disable())}},{xtype:"syno_numberfield",disabled:!0,name:"bw_limit",allowBlank:!1,width:100,value:256,minValue:1,maxValue:2147483647,validator:function(e){return!("KB"===this.ownerCt.get(2).value&&64>e)||String.format(this.minText,"64 KB/s")}},{xtype:"syno_combobox",disabled:!0,name:"bw_limit_unit",allowBlank:!1,width:80,displayField:"display",valueField:"value",value:"KB",store:new Ext.data.ArrayStore({fields:["value","display"],data:[["KB","KB/s"],["MB","MB/s"]]}),listeners:{select:function(){this.ownerCt.get(1).validate()}}}]}]},activate:function(){var e=this.owner.getParams(),t=this.getForm(),a=function(e,t,a){e.findField(t).setDisabled(!a),e.findField(t).setVisible(a)};"export"===e.action?a(t,"bandwidth_composite",!1):(a(t,"bandwidth_composite",!0),this.getForm().findField("bw_limit").setDisabled(!this.getForm().findField("bandwidthcheck").getValue()),this.getForm().findField("bw_limit_unit").setDisabled(!this.getForm().findField("bandwidthcheck").getValue())),this.callParent(arguments),SYNO.SDS.Backup.Client.Common.Utils.AccountMeta.ROTATION_CUSTOM!==this.owner.accountMeta.versionRotation&&(this.nextId="data_summary")},getParams:function(){var e=this.getForm(),t=function(t){return e.findField(t).getValue()},a=this.callParent(arguments);return SYNO.SDS.Backup.Client.Common.Utils.AccountMeta.ROTATION_CUSTOM!==this.owner.accountMeta.versionRotation&&(a.rotate_params={},a.rotate_params.enable_rotate=!0,a.rotate_params.rotate_option="rotate_customize_retention",a.rotate_params.rotate_action=[[4838400,604800,1],[604800,86400,1]],a.rotate_params.rotate_customized_rules=[[4838400,604800,1],[604800,86400,1]],a.rotate_params.rotate_condition=[1,14]),t("bandwidthcheck")?"KB"===t("bw_limit_unit")?a.backup_params.bw_limit=1024*t("bw_limit"):a.backup_params.bw_limit=1024*t("bw_limit")*1024:a.backup_params.bw_limit=0,a}}),Ext.ns("SYNO.SDS.Backup.Addon.amazon_cloud_drive.Repository"),Ext.define("SYNO.SDS.Backup.Addon.amazon_cloud_drive.Repository.CreateContainer",{extend:"SYNO.SDS.ModalWindow",dsmStyle:"v5",constructor:function(e){this.access_token=e.access_token,this.refresh_token=e.refresh_token,this.addon_id=e.addon_id;var t=[{xtype:"syno_textfield",name:"container",allowBlank:!1,fieldLabel:SYNO.Backup.Addon.Util.getString(this.addon_id,"root_folder_name"),validator:function(e){return e.match(/[//]/)?SYNO.SDS.Backup.String("validator","name_no_slash"):!(1>e.length||280<e.length)||String.format(SYNO.SDS.Backup.String("validator","name_length_limit"),"1","280")},owner:this}],a=Ext.apply({title:SYNO.Backup.Addon.Util.getString(this.addon_id,"create_root_folder"),width:450,height:200,minWidth:450,minHeight:200,layout:"fit",items:[{xtype:"syno_formpanel",trackResetOnLoad:!0,itemId:"form_panel",items:t}],buttons:[{itemId:"btn_apply",text:_T("common","apply"),btnStyle:"blue",scope:this,handler:this.onCreate},{text:_T("common","cancel"),handler:function(){this.close()},scope:this}]},e);return this.callParent([a])},onCreate:function(){if(this.items.get(0).getForm().isValid()){this.setStatusBusy();var e={remote_access_token:this.access_token,remote_refresh_token:this.refresh_token,transfer_type:this.addon_id,container:this.items.get(0).getForm().findField("container").getValue()};this.sendWebAPI({api:"SYNO.Backup.Storage.AmazonCloudDrive.Container",version:1,method:"create",encryption:["remote_access_token","remote_refresh_token"],params:e,scope:this,callback:function(e,t,a){var i=this.items.get(0).getForm().findField("container").getValue();if(this.clearStatusBusy(),!e)return this.showPossibleContainerError(t.code,i),!1;this.close()}})}},showPossibleContainerError:function(e,t){var a="";if(e!==SYNO.SDS.Backup.ERR_NAME_NOT_VALID)return a=SYNO.SDS.Backup.GetErrorString(e),void this.getMsgBox().alert(_T("tree","leaf_backup"),a);t.match(/[//]/)&&(a=a.concat("<BR>- ",SYNO.SDS.Backup.String("validator","name_no_slash"))),(1>t.length||280<t.length)&&(a=a.concat("<BR>- ",String.format(SYNO.SDS.Backup.String("validator","name_length_limit"),"1","280"))),a.length>0?this.getMsgBox().alert(_T("tree","leaf_backup"),SYNO.SDS.Backup.String("amazon_cloud_drive","folder_name_invalid")+" "+SYNO.SDS.Backup.String("amazon_cloud_drive","name_meet_condition")+" "+_T("common","colon")+a):(a=SYNO.SDS.Backup.String("amazon_cloud_drive","folder_name_invalid"),this.getMsgBox().alert(_T("tree","leaf_backup"),a))}}),Ext.ns("SYNO.Backup.Addon.amazon_cloud_drive.Destination"),Ext.define("SYNO.Backup.Addon.amazon_cloud_drive.Destination.SettingPanel",{extend:"SYNO.Backup.Addon.base.Destination.SettingPanel",addon_id:"amazon_cloud_drive",constructor:function(e){return Ext.copyTo(this,e,"owner,action"),this.uni_key=null,this.createFields=this.getAuthFields(this.getLayoutPrefix("create")),this.relinkFields=this.getAuthFields(this.getLayoutPrefix("relink")),this.callParent(arguments)},getAuthFields:function(e){var t=[{xtype:"syno_combobox",name:e+"container",indent:this.getFieldIndent(),width:270,fieldLabel:SYNO.Backup.Addon.Util.getString(this.addon_id,"root_folder_name"),store:this.getContainerStore(),displayField:"container",allowBlank:!1,valueField:"container",scope:this,onTriggerClick:function(){this.readOnly||this.disabled||(this.scope.needReloadContainer()?this.scope.loadContainerStore():SYNO.ux.ComboBox.prototype.onTriggerClick.call(this,arguments))},listeners:{select:function(e,t,a){if("create"===this.action){if(0===a)return void this.createContainer();this.updateTarget(t.get("bucket"))}},beforeselect:function(e,t,a){if(t.get("status")>0)return!1},scope:this},tpl:'<tpl for="."><div ext:qtip="{[SYNO.SDS.Backup.Util.htmlEncodeTip(values.status === 1 ? String.format(_T("backup", "repo_already_exist") + " [" + values.conflict_repo + "]") : values.container)]}" class="x-combo-list-item {[values.status === 1 ? "syno-backup-disabled-list-item" : "syno-backup-enabled-list-item"]}">{container:htmlEncode}</div></tpl>'}];return t},createContainer:function(){var e=new SYNO.SDS.Backup.Addon.amazon_cloud_drive.Repository.CreateContainer({access_token:this.access_token,refresh_token:this.refresh_token,addon_id:this.transfer_type,owner:this.owner});this.mon(e,"close",(function(){var t=this.getLayoutPrefix(this.action),a=e.items.get(0).getForm().findField("container").getValue();this.getForm().findField(t+"container").clearValue(),this.loadContainerStore(a)}),this),e.open()},getContainerStore:function(){return this.containerStore||(this.containerStore=new Ext.data.ArrayStore({fields:["container","status","conflict_repo"]})),this.containerStore},getLoadContainerParams:function(){var e=this.getParams();return delete e.container,delete e.target_id,e},needReloadContainer:function(){var e=this.getLoadContainerParams();return this.lastQuery!==Ext.encode(e)},loadContainerStore:function(e){var t=this.getLoadContainerParams();this.owner.setStatusBusy(),this.sendWebAPI({api:"SYNO.Backup.Storage.AmazonCloudDrive.Container",version:1,method:"list",encryption:["remote_access_token","remote_refresh_token"],params:t,scope:this,callback:function(a,i,n){if(this.owner.clearStatusBusy(),a){var s;this.lastQuery=Ext.encode(t);var o=this.getLayoutPrefix(this.action);if(this.getContainerStore().loadData(i.container_list),"create"===this.action){s=this.getForm().findField(o+"container");var r=new new Ext.data.Record.create(["container","status","conflict_repo"])({container:SYNO.Backup.Addon.Util.getString(this.addon_id,"create_root_folder"),status:0,conflict_repo:""});this.getContainerStore().insert(0,r)}else"relink"!==this.action&&"import"!==this.action||(s=this.getForm().findField(o+"container"));s?e&&-1!==this.getContainerStore().findExact("container",e)&&0===this.getContainerStore().getAt(this.getContainerStore().findExact("container",e)).get("status")?(s.setValue(e),s.collapse(),this.updateTarget()):(s.el.focus(),s.expand(),s.restrictHeight()):SYNO.Debug("empty combo")}else this.owner.reportError(i)}})},getLayoutPrefix:function(e){return"create"===e?"create_":"relink_"},relinkValidator:function(e,t){var a,i="create"===t.action?"create_":"relink_";return a="container",!!e.ownerCt.find("name",i+a)[0].isValid()||(e.markInvalid(SYNO.SDS.Backup.String("error","loss_auth_info")),!1)},setOauthResponse:function(e){this.access_token=e.access_token,this.refresh_token=e.refresh_token},getParams:function(){var e,t=this.callParent(),a=this.getLayoutPrefix(this.action),i=this.getForm();return"export"!==this.action&&(t.transfer_type=this.transfer_type,t.remote_access_token=this.access_token,t.remote_refresh_token=this.refresh_token,t.container=(e="container",i.findField(a+e).getValue())),t}}),Ext.ns("SYNO.Backup.Addon.aws_s3.Destination"),Ext.define("SYNO.Backup.Addon.aws_s3.Destination.SettingPanel",{extend:"SYNO.Backup.Addon.base.Destination.SettingPanel",addon_id:"aws_s3",constructor:function(e){return Ext.copyTo(this,e,"owner,action"),this.uni_key=null,this.createFields=this.getAuthFields(this.getLayoutPrefix("create")),this.relinkFields=this.getAuthFields(this.getLayoutPrefix("relink")),this.callParent(arguments)},getAuthFields:function(e){var t=[{xtype:"syno_combobox",name:e+"server",width:270,indent:this.getFieldIndent(),allowBlank:!1,store:this.getServerStore(),fieldLabel:_T("backup","s3_server"),displayField:"server",valueField:"value",value:"aws_s3",editable:!1,listeners:{select:function(e,t,a){this.changeLayout(this.action,t.get("value"))},scope:this}},{xtype:"syno_textfield",name:e+"remote_url",indent:this.getFieldIndent(),width:270,allowBlank:!1,fieldLabel:SYNO.SDS.Backup.String("aws_s3","url"),hidden:!0,disabled:!0},{xtype:"syno_combobox",name:e+"signature_version",indent:this.getFieldIndent(),width:270,allowBlank:!1,store:this.getSignatureStore(),fieldLabel:SYNO.SDS.Backup.String("aws_s3","signature_version"),displayField:"version",valueField:"value",value:"v2",editable:!1,hidden:!0,disabled:!0,listeners:{scope:this,select:function(t,a){"v4"===a.get("value")?(this.getForm().findField(e+"request_style").setVisible(!0),this.getForm().findField(e+"request_style").setDisabled(!1)):(this.getForm().findField(e+"request_style").setVisible(!1),this.getForm().findField(e+"request_style").setDisabled(!0)),this.doLayout()}}},{xtype:"syno_combobox",name:e+"request_style",indent:1,width:270,allowBlank:!1,store:this.getUrlStyleStore(),fieldLabel:SYNO.SDS.Backup.String("aws_s3","request_style"),displayField:"style",valueField:"value",value:"virtual_host_style",editable:!1,hidden:!0,disabled:!0},{xtype:"syno_textfield",name:e+"key",width:270,indent:this.getFieldIndent(),allowBlank:!1,fieldLabel:_T("backup","s3_access_key")},{xtype:"syno_textfield",name:e+"secret",width:270,indent:this.getFieldIndent(),allowBlank:!1,inputType:"password",fieldLabel:_T("backup","s3_secret_key")},{xtype:"syno_combobox",name:e+"bucket",width:270,indent:this.getFieldIndent(),fieldLabel:SYNO.SDS.Backup.String("aws_s3","bucket_name"),store:this.getBucketStore(),displayField:"bucket",allowBlank:!1,valueField:"bucket",scope:this,onTriggerClick:function(){this.readOnly||this.disabled||this.scope.shareValidator(this)&&(this.scope.needReloadBucket()?this.scope.loadBucketStore():SYNO.ux.ComboBox.prototype.onTriggerClick.call(this,arguments))},listeners:{select:function(e,t,a){if("create"===this.action){if(0===a)return void this.createBucket();this.updateTarget()}},beforeselect:function(e,t,a){if(t.get("status")>0)return!1},scope:this},tpl:'<tpl for="."><div ext:qtip="{[SYNO.SDS.Backup.Util.htmlEncodeTip(values.status === 1 ? String.format(_T("backup", "repo_already_exist") + " [" + values.conflict_repo + "]") : values.bucket)]}" class="x-combo-list-item {[values.status === 1 ? "syno-backup-disabled-list-item" : "syno-backup-enabled-list-item"]}">{bucket:htmlEncode}</div></tpl>'}];return t},onFieldsetSelected:function(e){var t=e.get(0);t&&("create_fields"!==e.name&&"relink_fields"!==e.name||this.changeLayout(this.action,t.getValue()))},getServerList:function(){return[{value:"aws_s3",ui_string:SYNO.SDS.Backup.String("aws_s3","name")},{value:"aws_cn_s3",ui_string:SYNO.SDS.Backup.String("aws_s3","name")+" "+SYNO.SDS.Backup.String("aws_s3","s3_region_system_china")},{value:"s3_compatible",ui_string:SYNO.SDS.Backup.String("aws_s3","custom_address")}]},getServerStore:function(){if(!this.serverStore){var e=this.getServerList();this.serverStore=new Ext.data.ArrayStore({fields:["server","value"],data:e.map((function(e){return[e.ui_string,e.value]}))})}return this.serverStore},getSignatureStore:function(){return this.signatureStore||(this.signatureStore=new Ext.data.ArrayStore({fields:["version","value"],data:[[SYNO.SDS.Backup.String("aws_s3","v2_will_be_deprecated"),"v2"],["v4","v4"]]})),this.signatureStore},getUrlStyleStore:function(){return this.urlStyleStore||(this.urlStyleStore=new Ext.data.ArrayStore({fields:["style","value"],data:[[SYNO.SDS.Backup.String("aws_s3","virtual_host_style"),"virtual_host_style"],[SYNO.SDS.Backup.String("aws_s3","path_style"),"path_style"]]})),this.urlStyleStore},getLayoutPrefix:function(e){return"create"===e?"create_":"relink_"},changeLayout:function(e,t){var a=this.getLayoutPrefix(e),i=this.getForm(),n=this,s=function(e,t){i.findField(a+e).setDisabled(!t),i.findField(a+e).setVisible(t),n.doLayout()},o=function(e){s("remote_url",e),s("signature_version",e)};o("s3_compatible"===t),"s3_compatible"===t&&"v4"===i.findField(a+"signature_version").getValue()?s("request_style",!0):s("request_style",!1)},getRemoteUrlValue:function(){var e=this.getLayoutPrefix(this.action),t=this.getForm(),a=function(a){return t.findField(e+a).getValue()};return"s3_compatible"===a("server")?a("remote_url").trim().replace(/(^http[s]?:\/\/)|(\/)$/gi,""):""},getSignatureValue:function(){var e=this.getLayoutPrefix(this.action),t=this.getForm(),a=function(a){return t.findField(e+a).getValue()};return"s3_compatible"===a("server")?a("signature_version"):""},getRequestStyleValue:function(){var e=this.getLayoutPrefix(this.action),t=this.getForm(),a=function(a){return t.findField(e+a).getValue()};return"s3_compatible"===a("server")&&"v4"===a("signature_version")?a("request_style"):"virtual_host_style"},createBucket:function(){var e=this.getParams();e.owner=this.owner;var t=new SYNO.SDS.Backup.Addon.Util.S3.Repository.CreateBucket(e);this.mon(t,"close",(function(){var e=t.items.get(0).getForm().findField("bucket").getValue();this.getForm().findField("create_bucket").clearValue(),this.loadBucketStore(e)}),this),t.open()},getBucketStore:function(){return this.bucketStore||(this.bucketStore=new Ext.data.ArrayStore({fields:["bucket","status","conflict_repo"]})),this.bucketStore},getLoadBucketParams:function(){var e=this.getParams();return delete e.bucket,e},needReloadBucket:function(){var e=this.getLoadBucketParams();return this.lastQuery!==Ext.encode(e)},loadBucketStore:function(e){var t=this.getLoadBucketParams();this.owner.setStatusBusy(),this.sendWebAPI({api:"SYNO.Backup.Storage.S3.Bucket",version:1,method:"list",encryption:["secret"],params:t,scope:this,callback:function(a,i,n){if(this.owner.clearStatusBusy(),a){var s;if(this.lastQuery=Ext.encode(t),this.getBucketStore().loadData(i.bucket_list),"create"===this.action){s=this.getForm().findField("create_bucket");var o=new new Ext.data.Record.create(["bucket","status","conflict_repo"])({bucket:_T("backup","s3_create_bucket"),status:0,conflict_repo:""});this.getBucketStore().insert(0,o)}else"relink"!==this.action&&"import"!==this.action||(s=this.getForm().findField("relink_bucket"));s?e&&-1!==this.getBucketStore().findExact("bucket",e)&&0===this.getBucketStore().getAt(this.getBucketStore().findExact("bucket",e)).get("status")?(s.setValue(e),s.collapse(),this.updateTarget()):(s.el.focus(),s.expand(),s.restrictHeight()):SYNO.Debug("empty combo")}else this.owner.reportError(i)}})},shareValidator:function(e){var t,a=this.getLayoutPrefix(this.action),i=this.getForm(),n=function(e){return i.findField(a+e).isValid()};if("s3_compatible"===(t="server",i.findField(a+t).getValue())){if(n("server")&&n("remote_url")&&n("key")&&n("secret")&&n("signature_version"))return!0}else if(n("server")&&n("key")&&n("secret"))return!0;return e.markInvalid(SYNO.SDS.Backup.String("error","loss_auth_info")),!1},relinkValidator:function(e,t){var a="create"===t.action?"create_":"relink_",i=function(t){return e.ownerCt.find("name",a+t)[0].isValid()};if("s3_compatible"===t.transfer_type){if(i("server")&&i("remote_url")&&i("key")&&i("secret")&&i("signature_version")&&i("bucket"))return!0}else if(i("server")&&i("key")&&i("secret")&&i("bucket"))return!0;return e.markInvalid(SYNO.SDS.Backup.String("error","loss_auth_info")),!1},getParams:function(){var e=this.callParent(),t=this.getForm().getFieldValues();"create"===this.action?(e.server=t.create_server,e.key=t.create_key,e.secret=t.create_secret,e.bucket=t.create_bucket):"relink"!==this.action&&"import"!==this.action||(e.server=t.relink_server,e.key=t.relink_key,e.secret=t.relink_secret,e.bucket=t.relink_bucket);var a=e.server;return"aws_s3"===a?(e.transfer_type="aws_s3",e.support_region=!0,e.region_system="s3_global",e.remote_url=void 0,e.signature_version=void 0):"aws_cn_s3"===a?(e.transfer_type="aws_s3",e.support_region=!0,e.region_system="s3_china",e.remote_url=void 0,e.signature_version=void 0):(e.transfer_type="aws_s3",e.support_region=!1,e.remote_url=this.getRemoteUrlValue(),e.signature_version=this.getSignatureValue()),e.request_style=this.getRequestStyleValue(a),e},summary:function(e){var t=this.getParams(),a=this.getServerList().find((function(e){return e.value===t.server})),i=a?a.ui_string:t.server,n=[SYNO.SDS.Backup.String("aws_s3","repo_type_name")];"create"===this.action||"relink"===this.action?(n.push(SYNO.Backup.Addon.Util.getColonConnect(_T("backup","s3_server"),i)),n.push(SYNO.Backup.Addon.Util.getColonConnect(SYNO.SDS.Backup.String("aws_s3","bucket_name"),t.bucket))):"export"===this.action&&n.push(SYNO.Backup.Addon.Util.getColonConnect(_T("tree","leaf_sharefolder"),t.share)),n.push(SYNO.Backup.Addon.Util.getColonConnect(_T("backup","backup_dest_directory"),t.target_id)),e.append(SYNO.SDS.Backup.String("app","backup_destination"),n)}}),Ext.ns("SYNO.SDS.Backup.Addon.image_azure_blob.Repository"),Ext.define("SYNO.SDS.Backup.Addon.image_azure_blob.Repository.CreateBucket",{extend:"SYNO.SDS.ModalWindow",dsmStyle:"v5",constructor:function(e){this.s3key=e.s3key,this.s3secret=e.s3secret,this.addon_id=e.addon_id,this.transfer_type=e.transfer_type;var t=[{xtype:"syno_textfield",name:"bucket",allowBlank:!1,fieldLabel:SYNO.Backup.Addon.Util.getString(this.addon_id,"container"),owner:this}],a=Ext.apply({title:SYNO.Backup.Addon.Util.getString(this.addon_id,"create_container"),width:450,height:200,minWidth:450,minHeight:200,layout:"fit",items:[{xtype:"syno_formpanel",trackResetOnLoad:!0,itemId:"form_panel",items:t}],buttons:[{itemId:"btn_apply",text:_T("common","apply"),btnStyle:"blue",scope:this,handler:this.onCreate},{text:_T("common","cancel"),handler:function(){this.close()},scope:this}]},e);return this.callParent([a])},onCreate:function(){if(this.items.get(0).getForm().isValid()){this.setStatusBusy();var e={key:this.s3key,secret:this.s3secret,transfer_type:this.transfer_type,container:this.items.get(0).getForm().findField("bucket").getValue()};this.sendWebAPI({api:"SYNO.Backup.Storage.Azure.Container",version:1,method:"create",encryption:["secret"],params:e,scope:this,callback:function(e,t,a){var i=this.items.get(0).getForm().findField("bucket").getValue();if(this.clearStatusBusy(),!e)return this.showPossibleBucketError(t.code,i),!1;this.close()}})}},showPossibleBucketError:function(e,t){var a="";if(e!==SYNO.SDS.Backup.ERR_NAME_NOT_VALID)return a=SYNO.SDS.Backup.GetErrorString(e),void this.getMsgBox().alert(_T("tree","leaf_backup"),a);t.match(/^[a-z0-9-]*$/)||(a=a.concat("<BR>- ",SYNO.Backup.Addon.Util.getString(this.addon_id,"container_name_letter_limit"))),t.match(/^[a-z0-9]/)&&t.match(/[a-z0-9]$/)||(a=a.concat("<BR>- ",SYNO.Backup.Addon.Util.getString(this.addon_id,"container_name_leading_letter_limit"))),(3>t.length||63<t.length)&&(a=a.concat("<BR>- ",String.format(_T("netbackup","s3_bucket_name_length_limit"),"3","63"))),t.match(/--/)&&(a=a.concat("<BR>- ",SYNO.Backup.Addon.Util.getString(this.addon_id,"container_name_dash_limit"))),a.length>0?this.getMsgBox().alert(_T("tree","leaf_backup"),SYNO.Backup.Addon.Util.getString(this.addon_id,"container_name_invalid_short")+" "+SYNO.Backup.Addon.Util.getString(this.addon_id,"container_name_meet_condition")+" "+_T("common","colon")+a):(a=SYNO.Backup.Addon.Util.getString(this.addon_id,"container_name_invalid_short"),this.getMsgBox().alert(_T("tree","leaf_backup"),a))}}),Ext.ns("SYNO.Backup.Addon.azure_blob.Destination"),Ext.define("SYNO.Backup.Addon.azure_blob.Destination.SettingPanel",{extend:"SYNO.Backup.Addon.base.Destination.SettingPanel",addon_id:"azure_blob",constructor:function(e){return this.uni_key=null,this.createFields=this.getCreateAuthFields(),this.relinkFields=this.getRelinkAuthFields(),this.callParent(arguments)},getServerList:function(){return[{value:"azure_blob",ui_string:SYNO.Backup.Addon.Util.getString(this.addon_id,"name")},{value:"azure_cn_blob",ui_string:SYNO.Backup.Addon.Util.getString(this.addon_id,"name_cn")}]},getCreateAuthFields:function(){var e=this.getServerList(),t=[{xtype:"syno_combobox",indent:1,width:270,name:"server",fieldLabel:SYNO.Backup.Addon.Util.getString(this.addon_id,"provider"),store:new Ext.data.ArrayStore({fields:["server","value"],data:e.map((function(e){return[e.ui_string,e.value]}))}),value:"azure_blob",displayField:"server",valueField:"value",editable:!1,listeners:{select:function(e,t,a){this.transfer_type=t.get("value")},scope:this}},{xtype:"syno_textfield",name:"create_key",indent:1,width:270,allowBlank:!1,fieldLabel:SYNO.Backup.Addon.Util.getString(this.addon_id,"storage_account")},{xtype:"syno_textfield",name:"create_secret",indent:1,width:270,allowBlank:!1,inputType:"password",fieldLabel:SYNO.Backup.Addon.Util.getString(this.addon_id,"access_key")},{xtype:"syno_combobox",name:"create_bucket",indent:1,width:270,fieldLabel:SYNO.Backup.Addon.Util.getString(this.addon_id,"container_name"),store:this.getBucketStore(),displayField:"bucket",allowBlank:!1,valueField:"bucket",scope:this,onTriggerClick:function(){this.readOnly||this.disabled||this.scope.shareValidator(this)&&(this.scope.needReloadBucket()?this.scope.loadBucketStore():SYNO.ux.ComboBox.prototype.onTriggerClick.call(this,arguments))},listeners:{select:function(e,t,a){0!==a?"create"===this.action&&this.updateTarget(t.get("bucket")):this.createBucket()},beforeselect:function(e,t,a){if(t.get("status")>0)return!1},scope:this},tpl:'<tpl for="."><div ext:qtip="{[SYNO.SDS.Backup.Util.htmlEncodeTip(values.status === 1 ? String.format(_T("backup", "repo_already_exist") + " [" + values.conflict_repo + "]") : values.bucket)]}" class="x-combo-list-item {[values.status === 1 ? "syno-backup-disabled-list-item" : "syno-backup-enabled-list-item"]}">{bucket:htmlEncode}</div></tpl>'}];return t},getRelinkAuthFields:function(){var e=this.getServerList(),t=[{xtype:"syno_combobox",indent:1,width:270,name:"server",fieldLabel:SYNO.Backup.Addon.Util.getString(this.addon_id,"provider"),store:new Ext.data.ArrayStore({fields:["server","value"],data:e.map((function(e){return[e.ui_string,e.value]}))}),value:"azure_blob",displayField:"server",valueField:"value",editable:!1,listeners:{select:function(e,t,a){this.transfer_type=t.get("value")},scope:this}},{xtype:"syno_textfield",name:"relink_key",indent:1,width:270,allowBlank:!1,fieldLabel:SYNO.Backup.Addon.Util.getString(this.addon_id,"storage_account")},{xtype:"syno_textfield",name:"relink_secret",indent:1,width:270,allowBlank:!1,inputType:"password",fieldLabel:SYNO.Backup.Addon.Util.getString(this.addon_id,"access_key")},{xtype:"syno_combobox",name:"relink_bucket",indent:1,width:270,fieldLabel:SYNO.Backup.Addon.Util.getString(this.addon_id,"container_name"),store:this.getBucketStore(),displayField:"bucket",allowBlank:!1,valueField:"bucket",scope:this,onTriggerClick:function(){this.readOnly||this.disabled||this.scope.shareValidator(this)&&(this.scope.needReloadBucket()?this.scope.loadBucketStore():SYNO.ux.ComboBox.prototype.onTriggerClick.call(this,arguments))},listeners:{beforeselect:function(e,t,a){if(t.get("status")>0)return!1},scope:this},tpl:'<tpl for="."><div ext:qtip="{[SYNO.SDS.Backup.Util.htmlEncodeTip(values.status === 1 ? String.format(_T("backup", "repo_already_exist") + " [" + values.conflict_repo + "]") : values.bucket)]}" class="x-combo-list-item {[values.status === 1 ? "syno-backup-disabled-list-item" : "syno-backup-enabled-list-item"]}">{bucket:htmlEncode}</div></tpl>'}];return t},createBucket:function(){var e=new SYNO.SDS.Backup.Addon.image_azure_blob.Repository.CreateBucket({s3key:this.getForm().findField("create_key").getValue(),s3secret:this.getForm().findField("create_secret").getValue(),addon_id:this.addon_id,transfer_type:this.transfer_type,owner:this.owner});this.mon(e,"close",(function(){var t=e.items.get(0).getForm().findField("bucket").getValue();this.getForm().findField("create_bucket").clearValue(),this.loadBucketStore(t)}),this),e.open()},getBucketStore:function(){return this.bucketStore||(this.bucketStore=new Ext.data.ArrayStore({fields:["bucket","status","conflict_repo"]})),this.bucketStore},getLoadBucketParams:function(){var e=this.getParams();return delete e.bucket,e},needReloadBucket:function(){var e=this.getLoadBucketParams();return this.lastQuery!==Ext.encode(e)},loadBucketStore:function(e){var t=this.getLoadBucketParams();this.owner.setStatusBusy(),this.sendWebAPI({api:"SYNO.Backup.Storage.Azure.Container",version:1,method:"list",encryption:["secret"],params:t,scope:this,callback:function(a,i,n){if(this.owner.clearStatusBusy(),a){var s;if(this.lastQuery=Ext.encode(t),this.getBucketStore().loadData(i.bucket_list),"create"===this.action){s=this.getForm().findField("create_bucket");var o=new new Ext.data.Record.create(["bucket","status","conflict_repo"])({bucket:SYNO.Backup.Addon.Util.getString(this.addon_id,"create_container"),status:0,conflict_repo:""});this.getBucketStore().insert(0,o)}else"relink"!==this.action&&"import"!==this.action||(s=this.getForm().findField("relink_bucket"));s?e&&-1!==this.getBucketStore().findExact("bucket",e)&&0===this.getBucketStore().getAt(this.getBucketStore().findExact("bucket",e)).get("status")?(s.setValue(e),s.collapse(),this.updateTarget()):(s.el.focus(),s.expand(),s.restrictHeight()):SYNO.Debug("empty combo")}else this.owner.reportError(i)}})},shareValidator:function(e){var t=e.ownerCt;return!(!t.get(1).isValid()||!t.get(2).isValid())||(e.markInvalid(SYNO.SDS.Backup.String("error","loss_auth_info")),!1)},relinkValidator:function(e,t){var a=e.ownerCt;return!!(a.get(1).isValid()&&a.get(2).isValid()&&a.get(3).isValid())||(e.markInvalid(SYNO.SDS.Backup.String("error","loss_auth_info")),!1)},getParams:function(){var e=this.callParent(),t=this.getForm().getFieldValues();return"create"===this.action?(e.key=t.create_key,e.secret=t.create_secret,e.bucket=t.create_bucket):"relink"!==this.action&&"import"!==this.action||(e.key=t.relink_key,e.secret=t.relink_secret,e.bucket=t.relink_bucket),e},summary:function(e){var t=this.getParams(),a=this.getForm().getFieldValues(),i=this.getServerList().find((function(e){return e.value===a.server})),n=i?i.ui_string:a.server,s=[SYNO.SDS.Backup.String("azure","repo_type_name")];"create"===this.action||"relink"===this.action?(s.push(SYNO.Backup.Addon.Util.getColonConnect(SYNO.Backup.Addon.Util.getString(this.addon_id,"provider"),n)),s.push(SYNO.Backup.Addon.Util.getColonConnect(SYNO.Backup.Addon.Util.getString(this.addon_id,"container_name"),t.bucket))):"export"===this.action&&s.push(SYNO.Backup.Addon.Util.getColonConnect(_T("tree","leaf_sharefolder"),t.share)),s.push(SYNO.Backup.Addon.Util.getColonConnect(_T("backup","backup_dest_directory"),t.target_id)),e.append(SYNO.SDS.Backup.String("app","backup_destination"),s)}}),Ext.ns("SYNO.Backup.Addon.azure_cn_blob.Destination"),Ext.define("SYNO.Backup.Addon.azure_cn_blob.Destination.SettingPanel",{extend:"SYNO.Backup.Addon.azure_blob.Destination.SettingPanel"}),Ext.ns("SYNO.SDS.Backup.Addon.dropbox.Repository"),Ext.define("SYNO.SDS.Backup.Addon.dropbox.Repository.CreateContainer",{extend:"SYNO.SDS.ModalWindow",dsmStyle:"v5",constructor:function(e){this.access_token=e.access_token,this.refresh_token=e.refresh_token,this.addon_id=e.addon_id;var t=[{xtype:"syno_textfield",name:"container",allowBlank:!1,fieldLabel:SYNO.Backup.Addon.Util.getString(this.addon_id,"root_folder_name"),validator:function(e){return e.match(/[//]/)?SYNO.SDS.Backup.String("validator","name_no_slash"):e.match(/[\\]/)?SYNO.SDS.Backup.String("validator","name_no_backslash"):!(1>e.length||255<e.length)||String.format(SYNO.SDS.Backup.String("validator","name_length_limit"),"1","255")},owner:this}],a=Ext.apply({title:SYNO.Backup.Addon.Util.getString(this.addon_id,"create_root_folder"),width:450,height:200,minWidth:450,minHeight:200,layout:"fit",items:[{xtype:"syno_formpanel",trackResetOnLoad:!0,itemId:"form_panel",items:t}],buttons:[{itemId:"btn_apply",text:_T("common","apply"),btnStyle:"blue",scope:this,handler:this.onCreate},{text:_T("common","cancel"),handler:function(){this.close()},scope:this}]},e);return this.callParent([a])},onCreate:function(){if(this.items.get(0).getForm().isValid()){this.setStatusBusy();var e={remote_access_token:this.access_token,remote_refresh_token:this.refresh_token,transfer_type:this.addon_id,container:this.items.get(0).getForm().findField("container").getValue()};this.sendWebAPI({api:"SYNO.Backup.Storage.Dropbox.Container",version:1,method:"create",encryption:["remote_access_token","remote_refresh_token"],params:e,scope:this,callback:function(e,t,a){var i=this.items.get(0).getForm().findField("container").getValue();if(this.clearStatusBusy(),!e)return this.showPossibleContainerError(t.code,i),!1;this.close()}})}},showPossibleContainerError:function(e,t){var a="";if(e!==SYNO.SDS.Backup.ERR_NAME_NOT_VALID)return a=SYNO.SDS.Backup.GetErrorString(e),void this.getMsgBox().alert(_T("tree","leaf_backup"),a);t.match(/[//]/)&&(a=a.concat("<BR>- ",SYNO.SDS.Backup.String("validator","name_no_slash"))),t.match(/[\\]/)&&(a=a.concat("<BR>- ",SYNO.SDS.Backup.String("validator","name_no_backslash"))),(1>t.length||255<t.length)&&(a=a.concat("<BR>- ",String.format(SYNO.SDS.Backup.String("validator","name_length_limit"),"1","255"))),a.length>0?this.getMsgBox().alert(_T("tree","leaf_backup"),SYNO.SDS.Backup.String("dropbox","folder_name_invalid")+" "+SYNO.SDS.Backup.String("dropbox","name_meet_condition")+" "+_T("common","colon")+a):(a=SYNO.SDS.Backup.String("dropbox","folder_name_invalid"),this.getMsgBox().alert(_T("tree","leaf_backup"),a))}}),Ext.ns("SYNO.Backup.Addon.dropbox.Destination"),Ext.define("SYNO.Backup.Addon.dropbox.Destination.SettingPanel",{extend:"SYNO.Backup.Addon.base.Destination.SettingPanel",addon_id:"dropbox",constructor:function(e){return Ext.copyTo(this,e,"owner,action"),this.uni_key=null,this.createFields=this.getAuthFields(this.getLayoutPrefix("create")),this.relinkFields=this.getAuthFields(this.getLayoutPrefix("relink")),this.callParent(arguments)},getAuthFields:function(e){var t=[{xtype:"syno_combobox",name:e+"container",indent:this.getFieldIndent(),width:270,fieldLabel:SYNO.Backup.Addon.Util.getString(this.addon_id,"root_folder_name"),store:this.getContainerStore(),displayField:"container",allowBlank:!1,valueField:"container",scope:this,onTriggerClick:function(){this.readOnly||this.disabled||(this.scope.needReloadContainer()?this.scope.loadContainerStore():SYNO.ux.ComboBox.prototype.onTriggerClick.call(this,arguments))},listeners:{select:function(e,t,a){if("create"===this.action){if(0===a)return void this.createContainer();this.updateTarget(t.get("bucket"))}},beforeselect:function(e,t,a){if(t.get("status")>0)return!1},scope:this},tpl:'<tpl for="."><div ext:qtip="{[SYNO.SDS.Backup.Util.htmlEncodeTip(values.status === 1 ? String.format(_T("backup", "repo_already_exist") + " [" + values.conflict_repo + "]") : values.container)]}" class="x-combo-list-item {[values.status === 1 ? "syno-backup-disabled-list-item" : "syno-backup-enabled-list-item"]}">{container:htmlEncode}</div></tpl>'}];return t},createContainer:function(){var e=new SYNO.SDS.Backup.Addon.dropbox.Repository.CreateContainer({access_token:this.access_token,addon_id:this.transfer_type,owner:this.owner});this.mon(e,"close",(function(){var t=this.getLayoutPrefix(this.action),a=e.items.get(0).getForm().findField("container").getValue();this.getForm().findField(t+"container").clearValue(),this.loadContainerStore(a)}),this),e.open()},getContainerStore:function(){return this.containerStore||(this.containerStore=new Ext.data.ArrayStore({fields:["container","status","conflict_repo"],sortInfo:{field:"container",direction:"ASC"}})),this.containerStore},getLoadContainerParams:function(){var e=this.getParams();return delete e.container,delete e.target_id,e},needReloadContainer:function(){var e=this.getLoadContainerParams();return this.lastQuery!==Ext.encode(e)},loadContainerStore:function(e){var t=this.getLoadContainerParams();this.owner.setStatusBusy(),this.sendWebAPI({api:"SYNO.Backup.Storage.Dropbox.Container",version:1,method:"list",encryption:["remote_access_token","remote_refresh_token"],params:t,scope:this,callback:function(a,i,n){if(this.owner.clearStatusBusy(),a){var s;this.lastQuery=Ext.encode(t);var o=this.getLayoutPrefix(this.action);if(this.getContainerStore().loadData(i.container_list),"create"===this.action){s=this.getForm().findField(o+"container");var r=new new Ext.data.Record.create(["container","status","conflict_repo"])({container:SYNO.Backup.Addon.Util.getString(this.addon_id,"create_root_folder"),status:0,conflict_repo:""});this.getContainerStore().insert(0,r)}else"relink"!==this.action&&"import"!==this.action||(s=this.getForm().findField(o+"container"));s?e&&-1!==this.getContainerStore().findExact("container",e)&&0===this.getContainerStore().getAt(this.getContainerStore().findExact("container",e)).get("status")?(s.setValue(e),s.collapse(),this.updateTarget()):(s.el.focus(),s.expand(),s.restrictHeight()):SYNO.Debug("empty combo")}else this.owner.reportError(i)}})},getLayoutPrefix:function(e){return"create"===e?"create_":"relink_"},relinkValidator:function(e,t){var a,i="create"===t.action?"create_":"relink_";return a="container",!!e.ownerCt.find("name",i+a)[0].isValid()||(e.markInvalid(SYNO.SDS.Backup.String("error","loss_auth_info")),!1)},setOauthResponse:function(e){this.access_token=e.access_token,this.refresh_token=e.refresh_token||""},getParams:function(){var e,t=this.callParent(),a=this.getLayoutPrefix(this.action),i=this.getForm();return"export"!==this.action&&(t.transfer_type=this.transfer_type,t.remote_access_token=this.access_token,t.remote_refresh_token=this.refresh_token,t.container=(e="container",i.findField(a+e).getValue())),t},summary:function(e){var t=this.getParams(),a=[SYNO.SDS.Backup.String("dropbox","repo_type_name")];"create"===this.action||"relink"===this.action?a.push(SYNO.Backup.Addon.Util.getColonConnect(SYNO.Backup.Addon.Util.getString(this.addon_id,"root_folder_name"),t.container)):"export"===this.action&&a.push(SYNO.Backup.Addon.Util.getColonConnect(_T("tree","leaf_sharefolder"),t.share)),a.push(SYNO.Backup.Addon.Util.getColonConnect(_T("backup","backup_dest_directory"),t.target_id)),e.append(SYNO.SDS.Backup.String("app","backup_destination"),a)}}),Ext.ns("SYNO.SDS.Backup.Addon.google_drive.Repository"),Ext.define("SYNO.SDS.Backup.Addon.google_drive.Repository.CreateContainer",{extend:"SYNO.SDS.ModalWindow",dsmStyle:"v5",constructor:function(e){this.access_token=e.access_token,this.refresh_token=e.refresh_token,this.addon_id=e.addon_id;var t=[{xtype:"syno_textfield",name:"container",allowBlank:!1,fieldLabel:SYNO.Backup.Addon.Util.getString(this.addon_id,"root_folder_name"),validator:function(e){return e.match(/[//]/)?SYNO.SDS.Backup.String("validator","name_no_slash"):!(1>e.length||255<e.length)||String.format(SYNO.SDS.Backup.String("validator","name_length_limit"),"1","255")},owner:this}],a=Ext.apply({title:SYNO.Backup.Addon.Util.getString(this.addon_id,"create_root_folder"),width:450,height:200,minWidth:450,minHeight:200,layout:"fit",items:[{xtype:"syno_formpanel",trackResetOnLoad:!0,itemId:"form_panel",items:t}],buttons:[{itemId:"btn_apply",text:_T("common","apply"),btnStyle:"blue",scope:this,handler:this.onCreate},{text:_T("common","cancel"),handler:function(){this.close()},scope:this}]},e);return this.callParent([a])},onCreate:function(){if(this.items.get(0).getForm().isValid()){this.setStatusBusy();var e={remote_access_token:this.access_token,remote_refresh_token:this.refresh_token,transfer_type:this.addon_id,container:this.items.get(0).getForm().findField("container").getValue()};this.sendWebAPI({api:"SYNO.Backup.Storage.GoogleDrive.Container",version:1,method:"create",encryption:["remote_access_token","remote_refresh_token"],params:e,scope:this,callback:function(e,t,a){var i=this.items.get(0).getForm().findField("container").getValue();if(this.clearStatusBusy(),!e)return this.showPossibleContainerError(t.code,i),!1;this.close()}})}},showPossibleContainerError:function(e,t){var a="";if(e!==SYNO.SDS.Backup.ERR_NAME_NOT_VALID)return a=SYNO.SDS.Backup.GetErrorString(e),void this.getMsgBox().alert(_T("tree","leaf_backup"),a);t.match(/[//]/)&&(a=a.concat("<BR>- ",SYNO.SDS.Backup.String("validator","name_no_slash"))),(1>t.length||255<t.length)&&(a=a.concat("<BR>- ",String.format(SYNO.SDS.Backup.String("validator","name_length_limit"),"1","255"))),a.length>0?this.getMsgBox().alert(_T("tree","leaf_backup"),SYNO.SDS.Backup.String("google_drive","folder_name_invalid")+" "+SYNO.SDS.Backup.String("google_drive","name_meet_condition")+" "+_T("common","colon")+a):(a=SYNO.SDS.Backup.String("google_drive","folder_name_invalid"),this.getMsgBox().alert(_T("tree","leaf_backup"),a))}}),Ext.ns("SYNO.Backup.Addon.google_drive.Destination"),Ext.define("SYNO.Backup.Addon.google_drive.Destination.SettingPanel",{extend:"SYNO.Backup.Addon.base.Destination.SettingPanel",addon_id:"google_drive",constructor:function(e){return Ext.copyTo(this,e,"owner,action"),this.uni_key=null,this.createFields=this.getAuthFields(this.getLayoutPrefix("create")),this.relinkFields=this.getAuthFields(this.getLayoutPrefix("relink")),this.callParent(arguments)},getAuthFields:function(e){var t=[{xtype:"syno_combobox",name:e+"container",indent:this.getFieldIndent(),width:270,fieldLabel:SYNO.Backup.Addon.Util.getString(this.addon_id,"root_folder_name"),store:this.getContainerStore(),displayField:"container",allowBlank:!1,valueField:"container",scope:this,onTriggerClick:function(){this.readOnly||this.disabled||(this.scope.needReloadContainer()?this.scope.loadContainerStore():SYNO.ux.ComboBox.prototype.onTriggerClick.call(this,arguments))},listeners:{select:function(e,t,a){if("create"===this.action){if(0===a)return void this.createContainer();this.updateTarget(t.get("bucket"))}},beforeselect:function(e,t,a){if(t.get("status")>0)return!1},scope:this},tpl:'<tpl for="."><div ext:qtip="{[SYNO.SDS.Backup.Util.htmlEncodeTip(values.status === 1 ? String.format(_T("backup", "repo_already_exist") + " [" + values.conflict_repo + "]") : values.container)]}" class="x-combo-list-item {[values.status === 1 ? "syno-backup-disabled-list-item" : "syno-backup-enabled-list-item"]}">{container:htmlEncode}</div></tpl>'}];return t},createContainer:function(){var e=new SYNO.SDS.Backup.Addon.google_drive.Repository.CreateContainer({access_token:this.access_token,refresh_token:this.refresh_token,addon_id:this.transfer_type,owner:this.owner});this.mon(e,"close",(function(){var t=this.getLayoutPrefix(this.action),a=e.items.get(0).getForm().findField("container").getValue();this.getForm().findField(t+"container").clearValue(),this.loadContainerStore(a)}),this),e.open()},getContainerStore:function(){return this.containerStore||(this.containerStore=new Ext.data.ArrayStore({fields:["container","status","conflict_repo"]})),this.containerStore},getLoadContainerParams:function(){var e=this.getParams();return delete e.container,delete e.target_id,e},needReloadContainer:function(){var e=this.getLoadContainerParams();return this.lastQuery!==Ext.encode(e)},loadContainerStore:function(e){var t=this.getLoadContainerParams();this.owner.setStatusBusy(),this.sendWebAPI({api:"SYNO.Backup.Storage.GoogleDrive.Container",version:1,method:"list",encryption:["remote_access_token","remote_refresh_token"],params:t,scope:this,callback:function(a,i,n){if(this.owner.clearStatusBusy(),a){var s;this.lastQuery=Ext.encode(t);var o=this.getLayoutPrefix(this.action);if(this.getContainerStore().loadData(i.container_list),"create"===this.action){s=this.getForm().findField(o+"container");var r=new new Ext.data.Record.create(["container","status","conflict_repo"])({container:SYNO.Backup.Addon.Util.getString(this.addon_id,"create_root_folder"),status:0,conflict_repo:""});this.getContainerStore().insert(0,r)}else"relink"!==this.action&&"import"!==this.action||(s=this.getForm().findField(o+"container"));s?e&&-1!==this.getContainerStore().findExact("container",e)&&0===this.getContainerStore().getAt(this.getContainerStore().findExact("container",e)).get("status")?(s.setValue(e),s.collapse(),this.updateTarget()):(s.el.focus(),s.expand(),s.restrictHeight()):SYNO.Debug("empty combo")}else this.owner.reportError(i)}})},getLayoutPrefix:function(e){return"create"===e?"create_":"relink_"},relinkValidator:function(e,t){var a,i="create"===t.action?"create_":"relink_";return a="container",!!e.ownerCt.find("name",i+a)[0].isValid()||(e.markInvalid(SYNO.SDS.Backup.String("error","loss_auth_info")),!1)},setOauthResponse:function(e){this.access_token=e.access_token,this.refresh_token=e.refresh_token},getParams:function(){var e,t=this.callParent(),a=this.getLayoutPrefix(this.action),i=this.getForm();return"export"!==this.action&&(t.transfer_type=this.transfer_type,t.remote_refresh_token=this.refresh_token,t.container=(e="container",i.findField(a+e).getValue())),t},summary:function(e){var t=this.getParams(),a=[SYNO.SDS.Backup.String("google_drive","repo_type_name")];"create"===this.action||"relink"===this.action?a.push(SYNO.Backup.Addon.Util.getColonConnect(SYNO.Backup.Addon.Util.getString(this.addon_id,"root_folder_name"),t.container)):"export"===this.action&&a.push(SYNO.Backup.Addon.Util.getColonConnect(_T("tree","leaf_sharefolder"),t.share)),a.push(SYNO.Backup.Addon.Util.getColonConnect(_T("backup","backup_dest_directory"),t.target_id)),e.append(SYNO.SDS.Backup.String("app","backup_destination"),a)}}),Ext.ns("SYNO.Backup.Addon.hicloud_s3.Destination"),Ext.define("SYNO.Backup.Addon.hicloud_s3.Destination.SettingPanel",{extend:"SYNO.SDS.Backup.Addon.Util.Image.S3.Repository.CreateStep",addon_id:"image_hicloud",summary:function(e){var t=this.getParams(),a=[SYNO.SDS.Backup.String("hicloud_s3","repo_type_name")];"create"===this.action||"relink"===this.action?a.push(SYNO.Backup.Addon.Util.getColonConnect(SYNO.SDS.Backup.String("aws_s3","bucket_name"),t.bucket)):"export"===this.action&&a.push(SYNO.Backup.Addon.Util.getColonConnect(_T("tree","leaf_sharefolder"),t.share)),a.push(SYNO.Backup.Addon.Util.getColonConnect(_T("backup","backup_dest_directory"),t.target_id)),e.append(SYNO.SDS.Backup.String("app","backup_destination"),a)}}),Ext.ns("SYNO.Backup.Addon.jdcloud_s3.Destination"),Ext.define("SYNO.Backup.Addon.jdcloud_s3.Destination.SettingPanel",{extend:"SYNO.SDS.Backup.Addon.Util.Image.S3.Repository.CreateStep",addon_id:"image_jdcloud",constructor:function(e){return Ext.copyTo(this,e,"owner,action"),this.descriptionFields=this.getDescriptionFields(),this.callParent(arguments)},getAuthFields:function(e){var t=[{xtype:"syno_combobox",name:e+"region",width:270,indent:this.getFieldIndent(),allowBlank:!1,store:this.getRegionStore(),fieldLabel:_T("backup","s3_server_region"),displayField:"region",valueField:"value",value:"cn-north-1",editable:!1},{xtype:"syno_textfield",name:e+"key",width:270,indent:this.getFieldIndent(),allowBlank:!1,fieldLabel:_T("backup","s3_access_key")},{xtype:"syno_textfield",name:e+"secret",width:270,indent:this.getFieldIndent(),allowBlank:!1,inputType:"password",fieldLabel:_T("backup","s3_secret_key")},{xtype:"syno_combobox",name:e+"bucket",width:270,indent:this.getFieldIndent(),fieldLabel:SYNO.SDS.Backup.String("aws_s3","bucket_name"),store:this.getBucketStore(),displayField:"bucket",allowBlank:!1,valueField:"bucket",scope:this,onTriggerClick:function(){this.readOnly||this.disabled||this.scope.shareValidator(this)&&(this.scope.needReloadBucket()?this.scope.loadBucketStore():SYNO.ux.ComboBox.prototype.onTriggerClick.call(this,arguments))},listeners:{select:function(e,t,a){if("create"===this.action){if(0===a)return void this.createBucket();this.updateTarget()}},beforeselect:function(e,t,a){if(t.get("status")>0)return!1},scope:this},tpl:'<tpl for="."><div ext:qtip="{[SYNO.SDS.Backup.Util.htmlEncodeTip(values.status === 1 ? String.format(_T("backup", "repo_already_exist") + " [" + values.conflict_repo + "]") : values.bucket)]}" class="x-combo-list-item {[values.status === 1 ? "syno-backup-disabled-list-item" : "syno-backup-enabled-list-item"]}">{bucket:htmlEncode}</div></tpl>'}];return t},getDescriptionFields:function(){return[{xtype:"syno_displayfield",indent:this.getFieldIndent(),cls:"syno-backup-base-destination-description",htmlEncode:!1,name:"get_keys",value:'<font class="note-font">'+_T("common","note")+": </font>"+SYNO.SDS.Backup.String("jdcloud_s3","get_keys_desc")}]},getRegionList:function(){return[{value:"cn-north-1",ui_string:SYNO.SDS.Backup.String("jdcloud_s3","region_cn_north_1")},{value:"cn-east-1",ui_string:SYNO.SDS.Backup.String("jdcloud_s3","region_cn_east_1")},{value:"cn-east-2",ui_string:SYNO.SDS.Backup.String("jdcloud_s3","region_cn_east_2")},{value:"cn-south-1",ui_string:SYNO.SDS.Backup.String("jdcloud_s3","region_cn_south_1")}]},getRegionStore:function(){if(!this.regionStore){var e=this.getRegionList();this.regionStore=new Ext.data.ArrayStore({fields:["region","value"],data:e.map((function(e){return[e.ui_string,e.value]}))})}return this.regionStore},shareValidator:function(e){var t=this.getLayoutPrefix(this.action),a=this.getForm(),i=function(e){return a.findField(t+e).isValid()};return!!(i("region")&&i("key")&&i("secret"))||(e.markInvalid(SYNO.SDS.Backup.String("error","loss_auth_info")),!1)},relinkValidator:function(e,t){var a="create"===t.action?"create_":"relink_",i=function(t){return e.ownerCt.find("name",a+t)[0].isValid()};return!!(i("region")&&i("key")&&i("secret")&&i("bucket"))||(e.markInvalid(SYNO.SDS.Backup.String("error","loss_auth_info")),!1)},getParams:function(){var e=this.callParent(),t=this.getForm().getFieldValues();return"create"===this.action?(e.region_system=t.create_region,e.key=t.create_key,e.secret=t.create_secret,e.bucket=t.create_bucket):"relink"!==this.action&&"import"!==this.action||(e.region_system=t.relink_region,e.key=t.relink_key,e.secret=t.relink_secret,e.bucket=t.relink_bucket),e.request_style="virtual_host_style",e.server=this.transfer_type,e.transfer_type=this.transfer_type,e.support_region=!0,e},summary:function(e){var t=this.getParams(),a=this.getRegionList().find((function(e){return e.value===t.region_system})),i=a?a.ui_string:t.region_system,n=[SYNO.SDS.Backup.String("jdcloud_s3","repo_type_name")];"create"===this.action||"relink"===this.action?(n.push(SYNO.Backup.Addon.Util.getColonConnect(_T("backup","s3_server_region"),i)),n.push(SYNO.Backup.Addon.Util.getColonConnect(SYNO.SDS.Backup.String("aws_s3","bucket_name"),t.bucket))):"export"===this.action&&n.push(SYNO.Backup.Addon.Util.getColonConnect(_T("tree","leaf_sharefolder"),t.share)),n.push(SYNO.Backup.Addon.Util.getColonConnect(_T("backup","backup_dest_directory"),t.target_id)),e.append(SYNO.SDS.Backup.String("app","backup_destination"),n)}}),Ext.ns("SYNO.SDS.Backup.Addon.hidrive.Repository"),Ext.define("SYNO.SDS.Backup.Addon.hidrive.Repository.CreateBucket",{extend:"SYNO.SDS.ModalWindow",dsmStyle:"v5",constructor:function(e){this.dest=e.dest,this.encrypt_connect=e.encrypt_connect,this.account=e.account,this.pwd=e.pwd,this.transfer_type=e.transfer_type;var t=[{xtype:"syno_textfield",name:"bucket",allowBlank:!1,fieldLabel:SYNO.SDS.Backup.String("hidrive","root_folder"),validator:function(e){return!e.match(/[//]/)||SYNO.SDS.Backup.String("hidrive","root_folder_name_letter_limit")},owner:this}],a=Ext.apply({title:SYNO.SDS.Backup.String("hidrive","create_root_folder"),width:450,height:200,minWidth:450,minHeight:200,layout:"fit",items:[{xtype:"syno_formpanel",trackResetOnLoad:!0,itemId:"form_panel",items:t}],buttons:[{itemId:"btn_apply",text:_T("common","apply"),btnStyle:"blue",scope:this,handler:this.onCreate},{text:_T("common","cancel"),handler:function(){this.close()},scope:this}]},e);return this.callParent([a])},onCreate:function(){if(this.items.get(0).getForm().isValid()){this.setStatusBusy();var e={dest:this.dest,encrypt_connect:this.encrypt_connect,account:this.account,pwd:this.pwd,transfer_type:this.transfer_type,container:this.items.get(0).getForm().findField("bucket").getValue()};this.sendWebAPI({api:"SYNO.Backup.Storage.HiDrive.Container",version:1,method:"create",encryption:["pwd"],params:e,scope:this,callback:function(e,t,a){var i=this.items.get(0).getForm().findField("bucket").getValue();if(this.clearStatusBusy(),!e)return this.showPossibleBucketError(t.code,i),!1;this.close()}})}},showPossibleBucketError:function(e,t){var a=SYNO.SDS.Backup.GetErrorString(e);this.getMsgBox().alert(_T("tree","leaf_backup"),a)}}),Ext.ns("SYNO.Backup.Addon.hidrive.Destination"),Ext.define("SYNO.Backup.Addon.hidrive.Destination.SettingPanel",{extend:"SYNO.Backup.Addon.base.Destination.SettingPanel",constructor:function(e){return Ext.copyTo(this,e,"owner,action"),this.uni_key=null,this.createFields=this.getAuthFields(this.getLayoutPrefix("create")),this.relinkFields=this.getAuthFields(this.getLayoutPrefix("relink")),this.callParent(arguments)},getAuthFields:function(e){var t=[{xtype:"syno_textfield",name:e+"dest",indent:this.getFieldIndent(),width:270,value:"rsync.hidrive.strato.com",editable:!1,hidden:!0},{xtype:"syno_checkbox",name:e+"encrypt_connect",indent:this.getFieldIndent(),boxLabel:SYNO.SDS.Backup.String("app","enable_encrypted_transmission"),checked:!0,editable:!1,hidden:!0},{xtype:"syno_textfield",name:e+"account",indent:this.getFieldIndent(),width:270,allowBlank:!1,fieldLabel:SYNO.SDS.Backup.String("hidrive","username")},{xtype:"syno_textfield",name:e+"pwd",indent:this.getFieldIndent(),width:270,allowBlank:!1,inputType:"password",fieldLabel:SYNO.SDS.Backup.String("app","task_password_input")},{xtype:"syno_combobox",name:e+"module",indent:this.getFieldIndent(),width:270,fieldLabel:SYNO.SDS.Backup.String("hidrive","root_folder_name"),store:this.getBucketStore(),displayField:"bucket",allowBlank:!1,valueField:"bucket",scope:this,onTriggerClick:function(){this.readOnly||this.disabled||this.scope.shareValidator(this)&&(this.scope.needReloadBucket()?this.scope.loadBucketStore():SYNO.ux.ComboBox.prototype.onTriggerClick.call(this,arguments))},listeners:{select:function(e,t,a){if("create"===this.action){if(0===a)return void this.createBucket();this.updateTarget(t.get("bucket"))}},beforeselect:function(e,t,a){if(t.get("status")>0)return!1},scope:this},tpl:'<tpl for="."><div ext:qtip="{[SYNO.SDS.Backup.Util.htmlEncodeTip(values.status === 1 ? String.format(_T("backup", "repo_already_exist") + " [" + values.conflict_repo + "]") : values.bucket)]}" class="x-combo-list-item {[values.status === 1 ? "syno-backup-disabled-list-item" : "syno-backup-enabled-list-item"]}">{bucket:htmlEncode}</div></tpl>'}];return t},getLayoutPrefix:function(e){return"create"===e?"create_":"relink_"},createBucket:function(){var e=this.getLayoutPrefix(this.action),t=this.getForm(),a=function(a){return t.findField(e+a).getValue()},i=new SYNO.SDS.Backup.Addon.hidrive.Repository.CreateBucket({dest:a("dest"),encrypt_connect:a("encrypt_connect"),account:a("account"),pwd:a("pwd"),transfer_type:this.transfer_type,owner:this.owner});this.mon(i,"close",(function(){var e=i.items.get(0).getForm().findField("bucket").getValue();this.getForm().findField(this.getLayoutPrefix(this.action)+"module").clearValue(),this.loadBucketStore(e)}),this),i.open()},getBucketStore:function(){return this.bucketStore||(this.bucketStore=new Ext.data.ArrayStore({fields:["bucket","status","conflict_repo"]})),this.bucketStore},getLoadBucketParams:function(){var e=this.getParams();return delete e.bucket,e},needReloadBucket:function(){var e=this.getLoadBucketParams();return this.lastQuery!==Ext.encode(e)},loadBucketStore:function(e){var t=this.getLoadBucketParams();this.owner.setStatusBusy(),this.sendWebAPI({api:"SYNO.Backup.Storage.HiDrive.Container",version:1,method:"list",encryption:["pwd"],params:t,scope:this,callback:function(a,i,n){if(this.owner.clearStatusBusy(),a){var s;if(this.lastQuery=Ext.encode(t),this.getBucketStore().loadData(i.bucket_list),"create"===this.action){s=this.getForm().findField(this.getLayoutPrefix(this.action)+"module");var o=new new Ext.data.Record.create(["bucket","status","conflict_repo"])({bucket:SYNO.SDS.Backup.String("hidrive","create_root_folder"),status:0,conflict_repo:""});this.getBucketStore().insert(0,o)}else"relink"!==this.action&&"import"!==this.action||(s=this.getForm().findField(this.getLayoutPrefix(this.action)+"module"));s?e&&-1!==this.getBucketStore().findExact("bucket",e)&&0===this.getBucketStore().getAt(this.getBucketStore().findExact("bucket",e)).get("status")?(s.setValue(e),s.collapse(),this.updateTarget()):(s.el.focus(),s.expand(),s.restrictHeight()):SYNO.Debug("empty combo")}else this.owner.reportError(i)}})},shareValidator:function(e){var t=this.getLayoutPrefix(this.action),a=this.getForm(),i=function(e){return a.findField(t+e).isValid()};return!!(i("dest")&&i("encrypt_connect")&&i("account")&&i("pwd"))||(e.markInvalid(SYNO.SDS.Backup.String("error","loss_auth_info")),!1)},relinkValidator:function(e,t){var a="create"===t.action?"create_":"relink_",i=function(t){return e.ownerCt.find("name",a+t)[0].isValid()};return!!(i("dest")&&i("encrypt_connect")&&i("account")&&i("pwd")&&i("module"))||(e.markInvalid(SYNO.SDS.Backup.String("error","loss_auth_info")),!1)},getParams:function(){var e=this.callParent(),t=this.getLayoutPrefix(this.action),a=this.getForm(),i=function(e){return a.findField(t+e).getValue()};return"export"!==this.action&&(e.transfer_type=this.transfer_type,e.dest=i("dest"),e.encrypt_connect=i("encrypt_connect"),e.account=i("account"),e.pwd=i("pwd"),e.module="/users/"+i("account")+"/"+i("module")),e},summary:function(e){var t=this.getParams(),a=[SYNO.SDS.Backup.String("hidrive","repo_type_name")];"create"===this.action||"relink"===this.action?a.push(SYNO.Backup.Addon.Util.getColonConnect(SYNO.SDS.Backup.String("hidrive","root_folder_name"),t.module)):"export"===this.action&&a.push(SYNO.Backup.Addon.Util.getColonConnect(_T("tree","leaf_sharefolder"),t.share)),a.push(SYNO.Backup.Addon.Util.getColonConnect(_T("backup","backup_dest_directory"),t.target_id)),e.append(SYNO.SDS.Backup.String("app","backup_destination"),a)}}),Ext.ns("SYNO.SDS.Backup.Addon.hubic_swift.Repository"),Ext.define("SYNO.SDS.Backup.Addon.hubic_swift.Repository.CreateContainer",{extend:"SYNO.SDS.ModalWindow",dsmStyle:"v5",constructor:function(e){this.refresh_token=e.refresh_token,this.addon_id=e.addon_id;var t=[{xtype:"syno_textfield",name:"container",allowBlank:!1,fieldLabel:SYNO.SDS.Backup.String("hubic","container"),validator:function(e){return!e.match(/[//]/)||SYNO.SDS.Backup.String("hubic","container_name_letter_limit")},owner:this}],a=Ext.apply({title:SYNO.SDS.Backup.String("hubic","create_container"),width:450,height:200,minWidth:450,minHeight:200,layout:"fit",items:[{xtype:"syno_formpanel",trackResetOnLoad:!0,itemId:"form_panel",items:t}],buttons:[{itemId:"btn_apply",text:_T("common","apply"),btnStyle:"blue",scope:this,handler:this.onCreate},{text:_T("common","cancel"),handler:function(){this.close()},scope:this}]},e);return this.callParent([a])},onCreate:function(){if(this.items.get(0).getForm().isValid()){this.setStatusBusy();var e={remote_refresh_token:this.refresh_token,transfer_type:this.addon_id,container:this.items.get(0).getForm().findField("container").getValue()};this.sendWebAPI({api:"SYNO.Backup.Storage.hubiC.Container",version:1,method:"create",encryption:["remote_refresh_token"],params:e,scope:this,callback:function(e,t,a){var i=this.items.get(0).getForm().findField("container").getValue();if(this.clearStatusBusy(),!e)return this.showPossibleBucketError(t.code,i),!1;this.close()}})}},showPossibleBucketError:function(e,t){var a="";if(e!==SYNO.SDS.Backup.ERR_NAME_NOT_VALID)return a=SYNO.SDS.Backup.GetErrorString(e),void this.getMsgBox().alert(_T("tree","leaf_backup"),a);t.match(/[//]/)&&(a=a.concat("<BR>- ",SYNO.SDS.Backup.String("hubic","container_name_letter_limit"))),(1>t.length||256<t.length)&&(a=a.concat("<BR>- ",String.format(SYNO.SDS.Backup.String("hubic","container_name_length_limit"),"1","256"))),a.length>0?this.getMsgBox().alert(_T("tree","leaf_backup"),SYNO.SDS.Backup.String("hubic","container_name_invalid_short")+" "+SYNO.SDS.Backup.String("hubic","container_name_meet_condition")+" "+_T("common","colon")+a):(a=SYNO.SDS.Backup.String("hubic","container_name_invalid_short"),this.getMsgBox().alert(_T("tree","leaf_backup"),a))}}),Ext.ns("SYNO.Backup.Addon.hubic.Destination"),Ext.define("SYNO.Backup.Addon.hubic.Destination.SettingPanel",{extend:"SYNO.Backup.Addon.base.Destination.SettingPanel",addon_id:"hubic_swift",constructor:function(e){return Ext.copyTo(this,e,"owner,action"),!1===SYNO.Backup.Addon.Config.supportProtectType&&"create"===this.action&&(this.supportCreate=!1,this.supportExport=!1),this.uni_key=null,this.createFields=this.getAuthFields(this.getLayoutPrefix("create")),this.relinkFields=this.getAuthFields(this.getLayoutPrefix("relink")),this.callParent(arguments)},getRelinkFields:function(){var e=this.callParent(arguments);return e[0].hidden=e[0].hidden&&"import"===this.action,e[0].hidden||!1!==SYNO.Backup.Addon.Config.supportProtectType||"create"!==this.action||(e[0].checked=!0,this.action="relink"),e},getAuthFields:function(e){var t=[{xtype:"syno_combobox",name:e+"container",indent:this.getFieldIndent(),width:270,fieldLabel:SYNO.SDS.Backup.String("hubic","container"),store:this.getContainerStore(),displayField:"container",allowBlank:!1,valueField:"container",scope:this,onTriggerClick:function(){this.readOnly||this.disabled||(this.scope.needReloadContainer()?this.scope.loadContainerStore():SYNO.ux.ComboBox.prototype.onTriggerClick.call(this,arguments))},listeners:{select:function(e,t,a){if("create"===this.action){if(0===a)return void this.createContainer();this.updateTarget()}},beforeselect:function(e,t,a){if(t.get("status")>0)return!1},scope:this},tpl:'<tpl for="."><div ext:qtip="{[SYNO.SDS.Backup.Util.htmlEncodeTip(values.status === 1 ? String.format(_T("backup", "repo_already_exist") + " [" + values.conflict_repo + "]") : values.container)]}" class="x-combo-list-item {[values.status === 1 ? "syno-backup-disabled-list-item" : "syno-backup-enabled-list-item"]}">{container:htmlEncode}</div></tpl>'}];return t},createContainer:function(){var e=new SYNO.SDS.Backup.Addon.hubic_swift.Repository.CreateContainer({refresh_token:this.refresh_token,addon_id:this.transfer_type,owner:this.owner});this.mon(e,"close",(function(){var t=this.getLayoutPrefix(this.action),a=e.items.get(0).getForm().findField("container").getValue();this.getForm().findField(t+"container").clearValue(),this.loadContainerStore(a)}),this),e.open()},getContainerStore:function(){return this.containerStore||(this.containerStore=new Ext.data.ArrayStore({fields:["container","status","conflict_repo"]})),this.containerStore},getLoadContainerParams:function(){var e=this.getParams();return delete e.container,delete e.target_id,e},needReloadContainer:function(){var e=this.getLoadContainerParams();return this.lastQuery!==Ext.encode(e)},loadContainerStore:function(e){var t=this.getLoadContainerParams();this.owner.setStatusBusy(),this.sendWebAPI({api:"SYNO.Backup.Storage.hubiC.Container",version:1,method:"list",encryption:["remote_refresh_token"],params:t,scope:this,callback:function(a,i,n){if(this.owner.clearStatusBusy(),a){var s;this.lastQuery=Ext.encode(t);var o=this.getLayoutPrefix(this.action);if(this.getContainerStore().loadData(i.container_list),"create"===this.action){s=this.getForm().findField(o+"container");var r=new new Ext.data.Record.create(["container","status","conflict_repo"])({container:SYNO.SDS.Backup.String("hubic","create_container"),status:0,conflict_repo:""});this.getContainerStore().insert(0,r)}else"relink"!==this.action&&"import"!==this.action||(s=this.getForm().findField(o+"container"));s?e&&-1!==this.getContainerStore().findExact("container",e)&&0===this.getContainerStore().getAt(this.getContainerStore().findExact("container",e)).get("status")?(s.setValue(e),s.collapse(),this.updateTarget()):(s.el.focus(),s.expand(),s.restrictHeight()):SYNO.Debug("empty combo")}else this.owner.reportError(i)}})},getLayoutPrefix:function(e){return"create"===e?"create_":"relink_"},relinkValidator:function(e,t){var a,i="create"===t.action?"create_":"relink_";return a="container",!!e.ownerCt.find("name",i+a)[0].isValid()||(e.markInvalid(SYNO.SDS.Backup.String("error","loss_auth_info")),!1)},setOauthResponse:function(e){this.refresh_token=e.refresh_token},getParams:function(){var e,t=this.callParent(),a=this.getLayoutPrefix(this.action),i=this.getForm();return"export"!==this.action&&(t.transfer_type=this.transfer_type,t.remote_refresh_token=this.refresh_token,t.container=(e="container",i.findField(a+e).getValue())),t}}),Ext.ns("SYNO.Backup.Addon.ibm_softlayer.Destination"),Ext.define("SYNO.Backup.Addon.ibm_softlayer.Destination.SettingPanel",{extend:"SYNO.Backup.Addon.base.Destination.SettingPanel",constructor:function(e){return Ext.copyTo(this,e,"owner,action"),this.uni_key=null,this.createFields=this.getAuthFields(this.getLayoutPrefix("create")),this.relinkFields=this.getAuthFields(this.getLayoutPrefix("relink")),this.callParent(arguments)},getAuthFields:function(e){var t=[{xtype:"syno_textfield",name:e+"key",indent:this.getFieldIndent(),width:270,allowBlank:!1,fieldLabel:SYNO.SDS.Backup.String("openstack","username")},{xtype:"syno_textfield",name:e+"secret",indent:this.getFieldIndent(),width:270,allowBlank:!1,inputType:"password",fieldLabel:SYNO.SDS.Backup.String("openstack","api_key")},{xtype:"syno_combobox",name:e+"region_ibm",indent:this.getFieldIndent(),width:270,allowBlank:!1,store:new Ext.data.ArrayStore({fields:["value","display"],data:SYNO.SDS.Backup.Addon.Util.Image.OpenStack.ibm_softlayer_region_list(),sortInfo:{field:"display",direction:"ASC"}}),fieldLabel:SYNO.SDS.Backup.String("openstack","region"),displayField:"display",valueField:"value",editable:!1},{xtype:"syno_combobox",name:e+"bucket",indent:this.getFieldIndent(),width:270,fieldLabel:SYNO.SDS.Backup.String("openstack","container_name"),store:this.getBucketStore(),displayField:"bucket",allowBlank:!1,valueField:"bucket",scope:this,onTriggerClick:function(){this.readOnly||this.disabled||this.scope.shareValidator(this)&&(this.scope.needReloadBucket()?this.scope.loadBucketStore():SYNO.ux.ComboBox.prototype.onTriggerClick.call(this,arguments))},listeners:{select:function(e,t,a){if("create"===this.action){if(0===a)return void this.createBucket();this.updateTarget()}},beforeselect:function(e,t,a){if(t.get("status")>0)return!1},scope:this},tpl:'<tpl for="."><div ext:qtip="{[SYNO.SDS.Backup.Util.htmlEncodeTip(values.status === 1 ? String.format(_T("backup", "repo_already_exist") + " [" + values.conflict_repo + "]") : values.bucket)]}" class="x-combo-list-item {[values.status === 1 ? "syno-backup-disabled-list-item" : "syno-backup-enabled-list-item"]}">{bucket:htmlEncode}</div></tpl>'}];return t},getLayoutPrefix:function(e){return"create"===e?"create_":"relink_"},getRemoteUrlValue:function(){return""},getRegionValue:function(){var e,t=this.getLayoutPrefix(this.action),a=this.getForm();return e="region_ibm",a.findField(t+e).getValue()},getUsernameValue:function(){var e,t=this.getLayoutPrefix(this.action),a=this.getForm();return e="key",a.findField(t+e).getValue()},getSecretValue:function(){var e,t=this.getLayoutPrefix(this.action),a=this.getForm();return e="secret",a.findField(t+e).getValue()},getTenantId:function(){return""},getTenantName:function(){return""},getDomainId:function(){return""},getDomainName:function(){return""},getAuthVersion:function(){return""},createBucket:function(){var e=new SYNO.SDS.Backup.Addon.Util.Image.OpenStack.Repository.CreateBucket({remote_url:this.getRemoteUrlValue(),region:this.getRegionValue(),s3key:this.getUsernameValue(),s3secret:this.getSecretValue(),tenant_id:this.getTenantId(),tenant_name:this.getTenantName(),domain_id:this.getDomainId(),domain_name:this.getDomainName(),auth_version:this.getAuthVersion(),transfer_type:this.transfer_type,owner:this.owner});this.mon(e,"close",(function(){var t=e.items.get(0).getForm().findField("bucket").getValue();this.getForm().findField(this.getLayoutPrefix(this.action)+"bucket").clearValue(),this.loadBucketStore(t)}),this),e.open()},getBucketStore:function(){return this.bucketStore||(this.bucketStore=new Ext.data.ArrayStore({fields:["bucket","status","conflict_repo"]})),this.bucketStore},getLoadBucketParams:function(){var e=this.getParams();return delete e.bucket,e},needReloadBucket:function(){var e=this.getLoadBucketParams();return this.lastBucketQuery!==Ext.encode(e)},loadBucketStore:function(e){var t=this.getLoadBucketParams();this.owner.setStatusBusy(),this.sendWebAPI({api:"SYNO.Backup.Storage.OpenStack.Container",version:1,method:"list",encryption:["secret"],params:t,scope:this,callback:function(a,i,n){if(this.owner.clearStatusBusy(),a){var s;if(this.lastBucketQuery=Ext.encode(t),this.getBucketStore().loadData(i.bucket_list),"create"===this.action){s=this.getForm().findField(this.getLayoutPrefix(this.action)+"bucket");var o=new new Ext.data.Record.create(["bucket","status","conflict_repo"])({bucket:SYNO.SDS.Backup.String("openstack","create_container"),status:0,conflict_repo:""});this.getBucketStore().insert(0,o)}else"relink"!==this.action&&"import"!==this.action||(s=this.getForm().findField(this.getLayoutPrefix(this.action)+"bucket"));s?e&&-1!==this.getBucketStore().findExact("bucket",e)&&0===this.getBucketStore().getAt(this.getBucketStore().findExact("bucket",e)).get("status")?(s.setValue(e),s.collapse(),this.updateTarget()):(s.el.focus(),s.expand(),s.restrictHeight()):SYNO.Debug("empty combo")}else this.owner.reportError(i)}})},shareValidator:function(e){var t=this.getLayoutPrefix(this.action),a=this.getForm(),i=function(e){return a.findField(t+e).isValid()};return!!(i("region_ibm")&&i("key")&&i("secret"))||(e.markInvalid(SYNO.SDS.Backup.String("error","loss_auth_info")),!1)},relinkValidator:function(e,t){var a="create"===t.action?"create_":"relink_",i=function(t){return e.ownerCt.find("name",a+t)[0].isValid()};return!!(i("region_ibm")&&i("key")&&i("secret")&&i("bucket"))||(e.markInvalid(SYNO.SDS.Backup.String("error","loss_auth_info")),!1)},getParams:function(){var e,t=this.callParent(),a=this.getLayoutPrefix(this.action),i=this.getForm();return"export"!==this.action&&(t.transfer_type=this.transfer_type,t.remote_url=this.getRemoteUrlValue(),t.region=this.getRegionValue(),t.key=this.getUsernameValue(),t.secret=this.getSecretValue(),t.tenant_id=this.getTenantId(),t.tenant_name=this.getTenantName(),t.domain_id=this.getDomainId(),t.domain_name=this.getDomainName(),t.auth_version=this.getAuthVersion(),t.bucket=(e="bucket",i.findField(a+e).getValue())),t}}),Ext.ns("SYNO.Backup.Addon.legacy_aws_s3.Destination"),Ext.define("SYNO.Backup.Addon.legacy_aws_s3.Destination.SettingPanel",{extend:"SYNO.SDS.Backup.Addon.Util.S3.Repository.CreateStep",constructor:function(e){var t=Ext.apply({addon_id:"aws_s3",support_region:!0},e);return this.callParent([t])}}),Ext.ns("SYNO.SDS.Backup.Addon.azure_blob.Repository"),Ext.define("SYNO.SDS.Backup.Addon.azure_blob.Repository.CreateBucket",{extend:"SYNO.SDS.ModalWindow",dsmStyle:"v5",constructor:function(e){this.s3key=e.s3key,this.s3secret=e.s3secret,this.addon_id=e.addon_id;var t=[{xtype:"syno_textfield",name:"bucket",allowBlank:!1,fieldLabel:SYNO.Backup.Addon.Util.getString(this.addon_id,"container"),owner:this}],a=Ext.apply({title:SYNO.Backup.Addon.Util.getString(this.addon_id,"create_container"),width:450,height:200,minWidth:450,minHeight:200,layout:"fit",items:[{xtype:"syno_formpanel",trackResetOnLoad:!0,itemId:"form_panel",items:t}],buttons:[{itemId:"btn_apply",text:_T("common","apply"),btnStyle:"blue",scope:this,handler:this.onCreate},{text:_T("common","cancel"),handler:function(){this.close()},scope:this}]},e);return this.callParent([a])},onCreate:function(){if(this.items.get(0).getForm().isValid()){this.setStatusBusy();var e={key:this.s3key,secret:this.s3secret,transfer_type:this.addon_id,container:this.items.get(0).getForm().findField("bucket").getValue()};this.sendWebAPI({api:"SYNO.Backup.Storage.Azure.Container",version:1,method:"create",params:e,scope:this,callback:function(e,t,a){var i=this.items.get(0).getForm().findField("bucket").getValue();if(this.clearStatusBusy(),!e)return this.showPossibleBucketError(t.code,i),!1;this.close()}})}},showPossibleBucketError:function(e,t){var a="";if(e!==SYNO.SDS.Backup.ERR_NAME_NOT_VALID)return a=SYNO.SDS.Backup.GetErrorString(e),void this.getMsgBox().alert(_T("tree","leaf_backup"),a);t.match(/^[a-z0-9-]*$/)||(a=a.concat("<BR>- ",SYNO.Backup.Addon.Util.getString(this.addon_id,"container_name_letter_limit"))),t.match(/^[a-z0-9]/)&&t.match(/[a-z0-9]$/)||(a=a.concat("<BR>- ",SYNO.Backup.Addon.Util.getString(this.addon_id,"container_name_leading_letter_limit"))),(3>t.length||63<t.length)&&(a=a.concat("<BR>- ",String.format(_T("netbackup","s3_bucket_name_length_limit"),"3","63"))),t.match(/--/)&&(a=a.concat("<BR>- ",SYNO.Backup.Addon.Util.getString(this.addon_id,"container_name_dash_limit"))),a.length>0?this.getMsgBox().alert(_T("tree","leaf_backup"),SYNO.Backup.Addon.Util.getString(this.addon_id,"container_name_invalid_short")+" "+SYNO.Backup.Addon.Util.getString(this.addon_id,"container_name_meet_condition")+" "+_T("common","colon")+a):(a=SYNO.Backup.Addon.Util.getString(this.addon_id,"container_name_invalid_short"),this.getMsgBox().alert(_T("tree","leaf_backup"),a))}}),Ext.ns("SYNO.Backup.Addon.legacy_azure_blob.Destination"),Ext.define("SYNO.Backup.Addon.legacy_azure_blob.Destination.SettingPanel",{extend:"SYNO.SDS.Backup.FormPanel",constructor:function(e){this.addon_id="azure_blob";var t=Ext.apply({items:[{xtype:"syno_fieldset",title:SYNO.Backup.Addon.Util.getString(this.addon_id,"repo_wizard_headline"),collapsible:!1,defaults:{labelWidth:300},items:[{xtype:"syno_textfield",name:"name",value:SYNO.Backup.Addon.Util.getString(this.addon_id,"repo_name_prefix")||"My Storage",allowBlank:!1,fieldLabel:_T("backup","repo_name"),maxLength:32,vtype:"backup_destination",hidden:!0},{xtype:"syno_textfield",name:"key",allowBlank:!1,fieldLabel:SYNO.Backup.Addon.Util.getString(this.addon_id,"storage_account")},{xtype:"syno_textfield",name:"secret",allowBlank:!1,inputType:"password",fieldLabel:SYNO.Backup.Addon.Util.getString(this.addon_id,"access_key")},{xtype:"syno_combobox",name:"bucket",fieldLabel:SYNO.Backup.Addon.Util.getString(this.addon_id,"container_name"),store:this.getBucketStore(),displayField:"bucket",allowBlank:!1,valueField:"bucket",scope:this,onTriggerClick:function(){this.readOnly||this.disabled||(this.scope.needReloadBucket()?this.scope.loadBucketStore():SYNO.ux.ComboBox.prototype.onTriggerClick.call(this,arguments))},listeners:{select:function(e,t,a){0!==a||this.createBucket()},beforeselect:function(e,t,a){if(t.get("status")>0)return!1},scope:this},tpl:'<tpl for="."><div ext:qtip="{[SYNO.SDS.Backup.Util.htmlEncodeTip(values.status === 1 ? String.format(_T("backup", "repo_already_exist") + " [" + values.conflict_repo + "]") : values.bucket)]}" class="x-combo-list-item {[values.status === 1 ? "syno-backup-disabled-list-item" : "syno-backup-enabled-list-item"]}">{bucket:htmlEncode}</div></tpl>'}]}]},e);return this.callParent([t])},createBucket:function(){var e=new SYNO.SDS.Backup.Addon.azure_blob.Repository.CreateBucket({s3key:this.getForm().findField("key").getValue(),s3secret:this.getForm().findField("secret").getValue(),addon_id:this.addon_id,owner:this.owner});this.mon(e,"close",(function(){var t=e.items.get(0).getForm().findField("bucket").getValue();this.getForm().findField("bucket").clearValue(),this.loadBucketStore(t)}),this),e.open()},getBucketStore:function(){return this.bucketStore||(this.bucketStore=new Ext.data.ArrayStore({fields:["bucket","status","conflict_repo"]})),this.bucketStore},getLoadBucketParams:function(){var e=this.getForm(),t=function(t){return e.findField(t).getValue()};return{key:t("key"),secret:t("secret"),transfer_type:this.addon_id}},needReloadBucket:function(){var e=this.getLoadBucketParams();return this.lastQuery!==Ext.encode(e)},loadBucketStore:function(e){var t=this.getLoadBucketParams();t.key&&t.secret&&(this.owner.setStatusBusy(),this.sendWebAPI({api:"SYNO.Backup.Storage.Azure.Container",version:1,method:"list",params:t,scope:this,callback:function(a,i,n){var s=this.getForm().findField("bucket"),o=new new Ext.data.Record.create(["bucket","status","conflict_repo"])({bucket:SYNO.Backup.Addon.Util.getString(this.addon_id,"create_container"),status:0,conflict_repo:""});this.owner.clearStatusBusy(),a?(this.lastQuery=Ext.encode(t),this.getBucketStore().loadData(i.bucket_list),this.getBucketStore().insert(0,o),s?e&&-1!==this.getBucketStore().findExact("bucket",e)&&0===this.getBucketStore().getAt(this.getBucketStore().findExact("bucket",e)).get("status")?(s.setValue(e),s.collapse()):(s.el.focus(),s.expand(),s.restrictHeight()):SYNO.Debug("empty combo")):this.owner.reportError(i)}}))},getParams:function(){var e={};return(e=this.getForm().getFieldValues()).action="create",e.target_type="cloud",e.transfer_type=this.transfer_type,e.repo_name=e.name,delete e.name,e},getNext:function(){return!!this.getForm().isValid()&&(this.owner.loadAppParams(),this.nextId)},isValid:function(){return this.getForm().isValid()},summary:function(e){var t=this.getParams(),a=[SYNO.SDS.Backup.String("azure","repo_type_name")];a.push(SYNO.Backup.Addon.Util.getColonConnect(SYNO.Backup.Addon.Util.getString(this.addon_id,"storage_account"),t.key)),a.push(SYNO.Backup.Addon.Util.getColonConnect(SYNO.Backup.Addon.Util.getString(this.addon_id,"container_name"),t.bucket)),e.append(SYNO.SDS.Backup.String("app","backup_destination"),a)}}),Ext.ns("SYNO.Backup.Addon.legacy_hicloud_s3.Destination"),Ext.define("SYNO.Backup.Addon.legacy_hicloud_s3.Destination.SettingPanel",{extend:"SYNO.SDS.Backup.Addon.Util.S3.Repository.CreateStep",constructor:function(e){var t=Ext.apply({addon_id:"hicloud_s3",support_region:!1},e);return this.callParent([t])}}),Ext.ns("SYNO.Backup.Addon.legacy_local.Destination"),Ext.define("SYNO.Backup.Addon.legacy_local.Destination.SettingPanel",{extend:"SYNO.ux.FormPanel",constructor:function(e){Ext.copyTo(this,e,"owner"),this.loaded=!1;var t=Ext.apply({height:410,bodyStyle:"padding-top: 24px",items:[{xtype:"syno_fieldset",collapsible:!1,defaults:{labelWidth:300},items:[]}]},e);this.addLocalBackupFields(t),this.callParent([t])},activate:function(){this.loaded||this.loadLocalRepoOptions()},addLocalBackupFields:function(e){e.items[0].items.push({xtype:"syno_displayfield",value:_T("backup","local_backup_desc")},{xtype:"syno_textfield",name:"local_backup_name",allowBlank:!1,fieldLabel:_T("backup","repo_name"),value:"Local Archiving Storage",maxlength:32,vtype:"backup_destination",hidden:!0},{xtype:"syno_combobox",name:"share",allowBlank:!1,fieldLabel:_T("tree","leaf_sharefolder"),width:270,forceSelection:!0,store:this.getShareStore(),displayField:"share",valueField:"share",listeners:{beforeselect:function(e,t,a){if(0!==t.get("status"))return!1},select:function(e,t,a){var i=this.owner.getParams();this.sendWebAPI({api:"SYNO.Backup.Target",version:1,method:"get_candidate_dir",params:Ext.apply(i,{share:t.get("share")}),scope:this,callback:function(e,t,a){this.owner.setDestFolderName(t.candidate_dir,i.target_type,i.transfer_type)}}),this.shareVolume=t.get("volume")},scope:this},tpl:SYNO.SDS.Backup.getShareListTpl("share")})},getShareStore:function(){return this.shareStore||(this.shareStore=new Ext.data.ArrayStore({autoDestroy:!0,autoLoad:!1,fields:["share","status","conflict_repo","volume","is_data_enc"]})),this.shareStore},getParams:function(){var e={};return(e=this.getForm().getFieldValues()).action="create",e.target_type="share",e.transfer_type="local",e.repo_name=e.local_backup_name,delete e.local_backup_name,delete e[void 0],e},getNext:function(){return!!this.getForm().isValid()&&(this.owner.loadAppParams(),this.nextId)},getLocalRepoVolume:function(){return this.getForm().getFieldValues().volume?this.getForm().getFieldValues().volume:this.shareVolume},loadLocalRepoOptions:function(){this.owner.setStatusBusy(),this.sendWebAPI({api:"SYNO.Backup.Storage.Share.Local",method:"list",version:1,params:{additional:["legacy"]},callback:this.loadLocalRepoOptionsHandler,scope:this})},loadLocalRepoOptionsHandler:function(e,t,a){if(!e||t.has_fail)return this.owner.clearStatusBusy(),this.owner.reportError(t),!1;this.loadData(t),this.loaded=!0,this.owner.clearStatusBusy()},loadData:function(e){var t,a=this,i={};return 0===e.share_list.length?(this.owner.getMsgBox().alert(_T("leaf","backup"),SYNO.SDS.Backup.String("app","no_shared_folder_available")),!1):(a.getShareStore().loadData(e.share_list),-1!==(t=a.getShareStore().findExact("status",0))?(i.target_type=i.target_type||"share",i.share=a.getShareStore().getAt(t).get("share"),a.shareVolume=a.getShareStore().getAt(t).get("volume")):a.owner.getMsgBox().alert(_T("leaf","backup"),SYNO.SDS.Backup.String("app","no_shared_folder_available")),a.getForm().setValues(i),a.loaded=!0,Ext.isDefined(i.share))},summary:function(e){var t=[SYNO.SDS.Backup.String("legacy_local","repo_type_name_2")];t.push(SYNO.Backup.Addon.Util.getColonConnect(_T("backup","repo_name"),this.getForm().getFieldValues().share)),e.append(SYNO.SDS.Backup.String("app","backup_destination"),t)}}),Ext.ns("SYNO.Backup.Addon.legacy_rsync.Destination"),Ext.define("SYNO.Backup.Addon.legacy_rsync.Destination.SettingPanel",{extend:"SYNO.ux.FormPanel",constructor:function(e){Ext.copyTo(this,e,"owner"),this.fieldLabelWidth=300,this.callParent([this.fillConfig(e)]),this.mon(this,"activate",(function(){this.getForm().findField("network_type").setValue("rsync_ds")}),this,{single:!0})},fillConfig:function(e){return Ext.apply({trackResetOnLoad:!0,height:410,bodyStyle:"padding-top: 24px",defaults:{labelWidth:this.fieldLabelWidth},items:[{xtype:"syno_fieldset",collapsible:!1,items:[{xtype:"syno_combobox",name:"network_type",fieldLabel:_T("netbackup","netbkp_slct_server"),allowBlank:!1,store:this.getServerStore(),displayField:"server",valueField:"value",value:"rsync_ds",editable:!1,listeners:{scope:this,select:function(e,t,a){this.changeLayout(t.get("value"))}}},new SYNO.SDS.Backup.HostCombobox({name:"dest",owner:this.owner}),{xtype:"syno_combobox",name:"encrypt_connect",fieldLabel:SYNO.SDS.Backup.String("rsync","transfer_encryption"),allowBlank:!1,store:new Ext.data.ArrayStore({fields:["text","value"],data:[[SYNO.SDS.Backup.String("app","on"),!0],[SYNO.SDS.Backup.String("app","off"),!1]]}),displayField:"text",valueField:"value",editable:!1,value:!1,listeners:{scope:this,select:function(e,t,a){this.changeEncTransLayout(t.get("value"))}}},{xtype:"syno_numberfield",maxlength:5,vtype:"port",name:"port",value:873,allowBlank:!1,fieldLabel:_T("common","port")},{xtype:"syno_numberfield",maxlength:5,vtype:"port",name:"enc_port",value:22,allowBlank:!1,fieldLabel:_T("common","port"),hidden:!0,disabled:!0},{xtype:"syno_textfield",name:"account",allowBlank:!1,fieldLabel:_T("netbackup","netbkp_account"),validator:function(e){var t=e;return"rsync"===this.getForm().findField("network_type").getValue()&&(t=t.replace(/%/g,"a")),Ext.form.VTypes.username_ext(t)}.createDelegate(this),invalidText:Ext.form.VTypes.username_extText},{xtype:"syno_textfield",name:"pwd",allowBlank:!0,fieldLabel:_T("common","password"),inputType:"password"},{xtype:"syno_displayfield",value:""},{xtype:"syno_textfield",name:"rsync_backup_name",allowBlank:!1,fieldLabel:_T("backup","repo_name"),value:"Rsync Compatible Storage",maxLength:32,maxlength:32,hidden:!0,disabled:!0,vtype:"backup_destination"},{xtype:"syno_combobox",name:"module",fieldLabel:_T("netbackup","netbkp_module"),allowBlank:!1,store:this.getModuleStore(),displayField:"share",valueField:"share",editable:!0,hidden:!0,disabled:!0,onTriggerClick:function(){this.readOnly||this.disabled||(this.scope.needReloadModule()?this.scope.loadModuleStore():SYNO.ux.ComboBox.prototype.onTriggerClick.call(this,arguments))},scope:this,listeners:{beforeselect:function(e,t,a){if(0!==t.get("status"))return!1}},tpl:'<tpl for="."><div ext:qtip="{[SYNO.SDS.Backup.Util.htmlEncodeTip(values.status === 1 ? String.format(_T("backup", "repo_already_exist") + " [" + values.conflict_repo + "]") : values.share)]}" class="x-combo-list-item {[values.status === 0 ? "syno-backup-enabled-list-item" : "syno-backup-disabled-list-item"]}">{share:htmlEncode}</div></tpl>'}]}]},e)},getNext:function(){var e=this.getForm();if(!e.isValid())return!1;if(this.owner.loadAppParams(),"rsync_ds"===e.findField("network_type").getValue())return this.loadOptions(),!1;var t=Ext.apply(this.getParams(),this.owner.getParams());return this.owner.setStatusBusy(),this.sendWebAPI({api:"SYNO.Backup.Repository",version:1,method:"get",params:t,scope:this,callback:function(e,t,a){return this.owner.clearStatusBusy(),e?"offline"===t.deststatus?(this.owner.getMsgBox().alert(_T("leaf","backup"),SYNO.SDS.Backup.GetErrorString(t.desterror)),!1):void(this.nextId===this.skipId?this.owner.goNext(this.nextId):this.owner.goNext(this.owner.getStep(this.nextId).nextId)):(this.owner.reportError(t),!1)}}),!1},getParams:function(){var e=this.getForm(),t=function(t){return e.findField(t).getValue()},a={action:"create"};return a.transfer_type=t("network_type"),a.dest=e.findField("dest").getHostAddress(),a.account=t("account"),a.pwd=t("pwd"),a.encrypt_connect=t("encrypt_connect"),a.encrypt_connect?a.enc_port=t("enc_port"):a.port=t("port"),"rsync"===a.transfer_type&&(a.repo_name=t("rsync_backup_name"),a.module=t("module"),"/"===a.module.charAt(0)&&(a.remoteshell=!0,a.encrypt_connect=!0,Ext.isDefined(a.enc_port)||(a.enc_port=22,delete a.port))),a},getServerStore:function(){return this.serverStore||(this.serverStore=new Ext.data.ArrayStore({fields:["server","value"],data:[[String.format(SYNO.SDS.Backup.String("rsync","synology_rsync_server"),_D("company_title")),"rsync_ds"],[_T("netbackup","rsync_compatible_server"),"rsync"]]})),this.serverStore},changeLayout:function(e){"rsync_ds"===e?(this.getForm().findField("module").setVisible(!1),this.getForm().findField("module").setDisabled(!0),this.nextId===this.skipId&&(this.nextId=this.continueId),this.owner.getButton("next").setText(_T("common","next"))):"rsync"===e&&(this.getForm().findField("module").setVisible(!0),this.getForm().findField("module").setDisabled(!1),this.nextId===this.continueId&&null!==this.nextId&&null===this.owner.getStep(this.nextId).nextId&&(this.nextId=this.skipId,this.owner.getButton("next").setText(_T("common","commit")))),this.doLayout()},changeEncTransLayout:function(e){var t=this.getForm(),a=function(e,a){t.findField(e).setDisabled(!a),t.findField(e).setVisible(a)},i=function(e,t){a("port",e),a("enc_port",t)};e?i(!1,!0):i(!0,!1)},loadOptions:function(){var e=this.getParams(),t=Ext.apply({dest:e.dest,account:e.account,pwd:e.pwd},this.owner.getParams()),a={target_type:t.target_type};Ext.copyTo(a,e,"transfer_type,encrypt_connect,port,enc_port"),delete(t=Ext.apply({connect_list:[a]},t)).target_type,this.owner.setStatusBusy(),this.sendWebAPI({api:"SYNO.Backup.Storage.Connect.Network",version:1,method:"list",params:t,callback:this.onLoadOptions,scope:this})},onLoadOptions:function(e,t,a){var i=this;if(i.owner.clearStatusBusy(),!e)return i.owner.reportError(t),!1;!1!==i.owner.getStep(i.nextId).loadData(t)&&i.owner.goNext(i.nextId)},getModuleStore:function(){return this.moduleStore||(this.moduleStore=new Ext.data.ArrayStore({fields:["share","status","conflict_repo"]})),this.moduleStore},getModuleParams:function(){var e=this.getParams(),t=Ext.apply({dest:e.dest,account:e.account,pwd:e.pwd},this.owner.getParams()),a={target_type:t.target_type};return Ext.copyTo(a,e,"transfer_type,encrypt_connect,port,enc_port"),delete(t=Ext.apply({connect_list:[a]},t)).target_type,t},needReloadModule:function(){var e=this.getModuleParams();return this.lastQuery!==Ext.encode(e)},loadModuleStore:function(){var e=this.getModuleParams();Ext.isEmpty(e.dest,!1)||Ext.isEmpty(e.account,!1)||!Ext.isDefined(e.connect_list[0].encrypt_connect)||Ext.isEmpty(e.connect_list[0].port,!1)&&Ext.isEmpty(e.connect_list[0].enc_port,!1)||(this.owner.setStatusBusy(),this.sendWebAPI({api:"SYNO.Backup.Storage.Connect.Network",version:1,method:"list",params:e,scope:this,callback:function(t,a,i){var n=this.getForm().findField("module");this.owner.clearStatusBusy(),t?0!==a.connect_list[0].list.length?(this.lastQuery=Ext.encode(e),this.getModuleStore().loadData(a.connect_list[0].list),n.el.focus(),n.expand(),n.restrictHeight()):this.owner.getMsgBox().alert(_T("leaf","backup"),SYNO.SDS.Backup.String("app","no_modules_available")):this.owner.reportError(a)}}))},summary:function(e){var t=this.getParams(),a=[SYNO.SDS.Backup.String("legacy_rsync","repo_type_name_2")];a.push(SYNO.Backup.Addon.Util.getColonConnect(_T("netbackup","netbkp_set_ip"),t.dest)),e.append(SYNO.SDS.Backup.String("app","backup_destination"),a)}}),Ext.define("SYNO.SDS.Backup.Repository.NetworkCreateStep",{extend:"SYNO.ux.FormPanel",volumeDestChanged:!0,shareDestChanged:!0,constructor:function(e){var t=Ext.apply({items:[{xtype:"syno_fieldset",collapsible:!1,defaults:{labelWidth:300},items:[]}]},e);return this.addNetworkBackupFields(t),this.callParent([t])},addNetworkBackupFields:function(e){e.items[0].items.push({xtype:"syno_displayfield",value:_T("backup","network_backup_desc")},{xtype:"syno_textfield",name:"network_backup_name",allowBlank:!1,fieldLabel:_T("backup","repo_name"),value:"Remote Share Storage",maxLength:32,hidden:!0,vtype:"backup_destination"},{xtype:"syno_combobox",name:"share",width:270,allowBlank:!1,fieldLabel:_T("tree","leaf_sharefolder"),forceSelection:!0,store:this.getShareStore(),displayField:"share",valueField:"share",listeners:{beforeselect:function(e,t,a){if(0!==t.get("status"))return!1}},tpl:'<tpl for="."><div ext:qtip="{[SYNO.SDS.Backup.Util.htmlEncodeTip(values.status === 1 ? String.format(_T("backup", "repo_already_exist") + " [" + values.conflict_repo + "]") : values.share)]}" class="x-combo-list-item {[values.status === 0 ? "syno-backup-enabled-list-item" : "syno-backup-disabled-list-item"]}">{share:htmlEncode}</div></tpl>'},{xtype:"syno_displayfield",name:"network_backup_error_message",value:"",style:{color:"red"},hidden:!0})},initEvents:function(){this.callParent(arguments),this.mon(this,"afterlayout",(function(){new SYNO.ux.Utils.EnableRadioGroup(this.getForm(),"target_type",{image:["version_backup_name","volume"],share:["network_backup_name","share"]})}),this,{single:!0})},getShareStore:function(){return this.shareStore||(this.shareStore=new Ext.data.ArrayStore({fields:["share","status","conflict_repo"]})),this.shareStore},getParams:function(){var e=Ext.copyTo({},this.owner.getStep("legacy_rsync::data_dest_setting").getParams(),"transfer_type,dest,account,pwd,encrypt_connect,port,enc_port");return e.repo_name=this.getForm().findField("network_backup_name").getValue(),e.share=this.getForm().findField("share").getValue(),e},getNext:function(){return!!this.getForm().isValid()&&this.nextId},loadData:function(e){var t,a=this,i={};return a.loaded=!0,a.getShareStore().removeAll(),0===e.connect_list[0].list.length?(this.owner.getMsgBox().alert(_T("leaf","backup"),SYNO.SDS.Backup.String("app","no_shared_folder_available")),!1):(a.getShareStore().loadData(e.connect_list[0].list),-1!==(t=a.getShareStore().findExact("status",0,!1,!1))&&(i.target_type=i.target_type||"share",i.share=a.getShareStore().getAt(t).get("share")),a.getForm().setValues(i),Ext.isDefined(i.share))},summary:function(e){var t=this.getParams();e.append(_T("tree","leaf_sharefolder"),t.share)}}),Ext.define("SYNO.Backup.Addon.legacy_rsync_ds.Destination.SettingPanel",{extend:"SYNO.Backup.Addon.legacy_rsync.Destination.SettingPanel"}),Ext.ns("SYNO.Backup.Addon.legacy_sfr_s3.Destination"),Ext.define("SYNO.Backup.Addon.legacy_sfr_s3.Destination.SettingPanel",{extend:"SYNO.SDS.Backup.Addon.Util.S3.Repository.CreateStep",constructor:function(e){var t=Ext.apply({addon_id:"sfr_s3",support_region:!1},e);return this.callParent([t])}}),Ext.ns("SYNO.Backup.Addon.local.Destination"),Ext.define("SYNO.Backup.Addon.local.Destination.SettingPanel",{extend:"SYNO.Backup.Addon.base.Destination.SettingPanel",supportExport:!1,constructor:function(e){return Ext.copyTo(this,e,"owner,action"),this.uni_key=null,this.loaded=!1,this.createFields=this.getAuthFields(),this.relinkFields=this.getAuthFields(),this.callParent(arguments)},activate:function(){this.loaded||this.loadLocalRepoOptions()},getAuthFields:function(){return[{xtype:"syno_combobox",name:"share",allowBlank:!1,indent:this.getFieldIndent(),fieldLabel:_T("tree","leaf_sharefolder"),width:270,forceSelection:!0,store:this.getShareStore(),displayField:"share",valueField:"share",listeners:{beforeselect:function(e,t,a){if(0!==t.get("status"))return!1},select:function(e,t,a){"create"===this.action&&this.updateTarget(),this.shareVolume=t.get("volume")},scope:this},tpl:SYNO.SDS.Backup.getShareListTpl("share")}]},getShareStore:function(){return this.shareStore||(this.shareStore=new Ext.data.ArrayStore({autoDestroy:!0,autoLoad:!1,fields:["share","status","conflict_repo","volume","is_data_enc"]})),this.shareStore},getLocalRepoVolume:function(){return this.getForm().getFieldValues().volume?this.getForm().getFieldValues().volume:this.shareVolume},loadLocalRepoOptions:function(){this.owner.setStatusBusy(),this.sendWebAPI({api:"SYNO.Backup.Storage.Share.Local",method:"list",version:1,callback:this.loadLocalRepoOptionsHandler,scope:this})},loadLocalRepoOptionsHandler:function(e,t,a){if(!e||t.has_fail)return this.owner.clearStatusBusy(),this.owner.reportError(t),!1;this.loadData(t),this.loaded=!0,this.owner.clearStatusBusy()},loadData:function(e){var t,a=this,i={};return 0===e.share_list.length?(a.owner.getMsgBox().alert(_T("leaf","backup"),SYNO.SDS.Backup.String("app","no_shared_folder_available")),!1):"create"!==this.action||(a.getShareStore().loadData(e.share_list),-1!==(t=a.getShareStore().findExact("status",0))?(i.target_type=i.target_type||"share",i.share=a.getShareStore().getAt(t).get("share"),a.shareVolume=a.getShareStore().getAt(t).get("volume")):a.owner.getMsgBox().alert(_T("leaf","backup"),SYNO.SDS.Backup.String("app","no_shared_folder_available")),a.getForm().setValues(i),a.loaded=!0,-1!==t&&a.updateTarget(),Ext.isDefined(i.share))},relinkValidator:function(e,t){return!!e.ownerCt.get(0).isValid()||(e.markInvalid(SYNO.SDS.Backup.String("error","loss_auth_info")),!1)},getParams:function(){var e=this.callParent(),t=this.getForm().getFieldValues();if("export"!==this.action){e.share=t.share;var a=this.getShareStore().getAt(this.getShareStore().find("share",t.share));a&&(e.isDestEncShare=a.get("is_data_enc"))}return e.clientEncrypt=this.needEnableClientEncrypt(e),e},summary:function(e){var t=this.getParams(),a=[SYNO.SDS.Backup.String("local","repo_type_name_2")];"create"!==this.action&&"relink"!==this.action||(a.push(SYNO.Backup.Addon.Util.getColonConnect(_T("tree","leaf_sharefolder"),t.share)),a.push(SYNO.Backup.Addon.Util.getColonConnect(_T("backup","backup_dest_directory"),t.target_id))),e.append(SYNO.SDS.Backup.String("app","backup_destination"),a)}}),Ext.ns("SYNO.Backup.Addon.openstack.Destination"),Ext.define("SYNO.Backup.Addon.openstack.Destination.SettingPanel",{extend:"SYNO.Backup.Addon.base.Destination.SettingPanel",constructor:function(e){return Ext.copyTo(this,e,"owner,action"),this.uni_key=null,this.createFields=this.getAuthFields(this.getLayoutPrefix("create")),this.relinkFields=this.getAuthFields(this.getLayoutPrefix("relink")),this.callParent(arguments)},getAuthFields:function(e){var t=[{xtype:"syno_textfield",name:e+"remote_url",indent:this.getFieldIndent(),width:270,allowBlank:!1,fieldLabel:SYNO.SDS.Backup.String("openstack","url")},{xtype:"syno_combobox",name:e+"auth_version",width:270,indent:this.getFieldIndent(),allowBlank:!1,store:new Ext.data.ArrayStore({fields:["version","value"],data:[["1.0","1.0"],["2.0","2.0"],["3.0","3.0"]]}),fieldLabel:SYNO.SDS.Backup.String("openstack","identity_service_version"),displayField:"version",valueField:"value",value:"1.0",editable:!1,listeners:{select:function(e,t,a){this.changeVersionLayout(this.action,t.get("value")),this.doLayout()},scope:this}},{xtype:"syno_textfield",name:e+"key",indent:this.getFieldIndent(),width:270,allowBlank:!1,fieldLabel:SYNO.SDS.Backup.String("openstack","username")},{xtype:"syno_textfield",name:e+"secret",indent:this.getFieldIndent(),width:270,allowBlank:!1,inputType:"password",fieldLabel:SYNO.SDS.Backup.String("openstack","api_key")},{xtype:"syno_textfield",name:e+"secret_pw",indent:this.getFieldIndent(),width:270,allowBlank:!1,inputType:"password",fieldLabel:SYNO.SDS.Backup.String("app","task_password_input"),hidden:!0,disabled:!0},{xtype:"syno_compositefield",name:e+"tenant_compositefield",indent:this.getFieldIndent(),width:270,fieldLabel:SYNO.SDS.Backup.String("openstack","tenant"),items:[{xtype:"syno_combobox",name:e+"tenant_option",width:80,store:new Ext.data.ArrayStore({fields:["display","value"],data:[["id","tenant_id"],["name","tenant_name"]]}),displayField:"display",valueField:"value",value:"tenant_id",allowBlank:!1,editable:!1},{xtype:"syno_textfield",name:e+"tenant_value",width:184,allowBlank:!0}],hidden:!0,disabled:!0},{xtype:"syno_compositefield",name:e+"domain_compositefield",indent:this.getFieldIndent(),width:270,fieldLabel:SYNO.SDS.Backup.String("openstack","domain"),items:[{xtype:"syno_combobox",name:e+"domain_option",width:80,store:new Ext.data.ArrayStore({fields:["display","value"],data:[["id","domain_id"],["name","domain_name"]]}),displayField:"display",valueField:"value",value:"domain_id",allowBlank:!1,editable:!1},{xtype:"syno_textfield",name:e+"domain_value",width:184,allowBlank:!1}],hidden:!0,disabled:!0},{xtype:"syno_combobox",name:e+"region_cust",indent:this.getFieldIndent(),width:270,fieldLabel:SYNO.SDS.Backup.String("openstack","region"),store:this.getRegionStore(),displayField:"display",allowBlank:!1,valueField:"value",editable:!1,scope:this,onTriggerClick:function(){this.readOnly||this.disabled||this.scope.regionValidator(this)&&(this.scope.needReloadRegion()?this.scope.loadRegionStore():SYNO.ux.ComboBox.prototype.onTriggerClick.call(this,arguments))},hidden:!0,disabled:!0},{xtype:"syno_combobox",name:e+"bucket",indent:this.getFieldIndent(),width:270,fieldLabel:SYNO.SDS.Backup.String("openstack","container_name"),store:this.getBucketStore(),displayField:"bucket",allowBlank:!1,valueField:"bucket",scope:this,onTriggerClick:function(){this.readOnly||this.disabled||this.scope.shareValidator(this)&&(this.scope.needReloadBucket()?this.scope.loadBucketStore():SYNO.ux.ComboBox.prototype.onTriggerClick.call(this,arguments))},listeners:{select:function(e,t,a){if("create"===this.action){if(0===a)return void this.createBucket();this.updateTarget()}},beforeselect:function(e,t,a){if(t.get("status")>0)return!1},scope:this},tpl:'<tpl for="."><div ext:qtip="{[SYNO.SDS.Backup.Util.htmlEncodeTip(values.status === 1 ? String.format(_T("backup", "repo_already_exist") + " [" + values.conflict_repo + "]") : values.bucket)]}" class="x-combo-list-item {[values.status === 1 ? "syno-backup-disabled-list-item" : "syno-backup-enabled-list-item"]}">{bucket:htmlEncode}</div></tpl>'}];return t},onFieldsetSelected:function(e){var t=this.getLayoutPrefix(this.action),a=this.getForm();if("create_fields"===e.name||"relink_fields"===e.name){var i=a.findField(t+"auth_version");this.changeVersionLayout(this.action,i.getValue())}},getLayoutPrefix:function(e){return"create"===e?"create_":"relink_"},changeVersionLayout:function(e,t){var a=this.getLayoutPrefix(e),i=this.getForm(),n=function(e,t){i.findField(a+e).setDisabled(!t),i.findField(a+e).setVisible(t)},s=function(e,t,a,i,s){n("secret",e),n("secret_pw",t),n("tenant_compositefield",a),n("domain_compositefield",i),n("region_cust",s)};if("1.0"===t)s(!0,!1,!1,!1,!1);else if("2.0"===t)s(!1,!0,!0,!1,!0);else{if("3.0"!==t)return;s(!1,!0,!0,!0,!0)}},getRemoteUrlValue:function(){var e,t=this.getLayoutPrefix(this.action),a=this.getForm(),i=(e="remote_url",a.findField(t+e).getValue()).trim();return"http://"!==i.substring(0,7)&&"https://"!==i.substring(0,8)?"https://"+i:i},getRegionValue:function(){var e=this.getLayoutPrefix(this.action),t=this.getForm(),a=function(a){return t.findField(e+a).getValue()};return"2.0"===a("auth_version")||"3.0"===a("auth_version")?a("region_cust"):""},getUsernameValue:function(){var e,t=this.getLayoutPrefix(this.action),a=this.getForm();return e="key",a.findField(t+e).getValue()},getSecretValue:function(){var e=this.getLayoutPrefix(this.action),t=this.getForm(),a=function(a){return t.findField(e+a).getValue()};return"2.0"===a("auth_version")||"3.0"===a("auth_version")?a("secret_pw"):a("secret")},getTenantId:function(){var e=this.getLayoutPrefix(this.action),t=this.getForm(),a=function(a){return t.findField(e+a).getValue()};return"2.0"!==a("auth_version")&&"3.0"!==a("auth_version")||"tenant_id"!==a("tenant_option")?"":a("tenant_value")},getTenantName:function(){var e=this.getLayoutPrefix(this.action),t=this.getForm(),a=function(a){return t.findField(e+a).getValue()};return"2.0"!==a("auth_version")&&"3.0"!==a("auth_version")||"tenant_name"!==a("tenant_option")?"":a("tenant_value")},getDomainId:function(){var e=this.getLayoutPrefix(this.action),t=this.getForm(),a=function(a){return t.findField(e+a).getValue()};return"3.0"===a("auth_version")&&"domain_id"===a("domain_option")?a("domain_value"):""},getDomainName:function(){var e=this.getLayoutPrefix(this.action),t=this.getForm(),a=function(a){return t.findField(e+a).getValue()};return"3.0"===a("auth_version")&&"domain_name"===a("domain_option")?a("domain_value"):""},getAuthVersion:function(){var e,t=this.getLayoutPrefix(this.action),a=this.getForm();return e="auth_version",a.findField(t+e).getValue()},createBucket:function(){var e=new SYNO.SDS.Backup.Addon.Util.Image.OpenStack.Repository.CreateBucket({remote_url:this.getRemoteUrlValue(),region:this.getRegionValue(),s3key:this.getUsernameValue(),s3secret:this.getSecretValue(),tenant_id:this.getTenantId(),tenant_name:this.getTenantName(),domain_id:this.getDomainId(),domain_name:this.getDomainName(),auth_version:this.getAuthVersion(),transfer_type:this.transfer_type,owner:this.owner});this.mon(e,"close",(function(){var t=e.items.get(0).getForm().findField("bucket").getValue();this.getForm().findField(this.getLayoutPrefix(this.action)+"bucket").clearValue(),this.loadBucketStore(t)}),this),e.open()},getRegionStore:function(){return this.regionStore||(this.regionStore=new Ext.data.ArrayStore({fields:["value","display"],sortInfo:{field:"display",direction:"ASC"}})),this.regionStore},getLoadRegionParams:function(){var e=this.getParams();return delete e.region,delete e.bucket,e},needReloadRegion:function(){var e=this.getLoadRegionParams();return this.lastRegionQuery!==Ext.encode(e)},loadRegionStore:function(){var e=this.getLoadRegionParams();this.owner.setStatusBusy(),this.sendWebAPI({api:"SYNO.Backup.Storage.OpenStack.Region",version:1,method:"list",encryption:["secret"],params:e,scope:this,callback:function(t,a,i){if(this.owner.clearStatusBusy(),t){this.lastRegionQuery=Ext.encode(e),this.getRegionStore().loadData(SYNO.SDS.Backup.Addon.Util.Image.OpenStack.region_name_mapping(a.region_list));var n=this.getForm().findField(this.getLayoutPrefix(this.action)+"region_cust");n.el.focus(),n.expand(),n.restrictHeight()}else this.owner.reportError(a)}})},getBucketStore:function(){return this.bucketStore||(this.bucketStore=new Ext.data.ArrayStore({fields:["bucket","status","conflict_repo"]})),this.bucketStore},getLoadBucketParams:function(){var e=this.getParams();return delete e.bucket,e},needReloadBucket:function(){var e=this.getLoadBucketParams();return this.lastBucketQuery!==Ext.encode(e)},loadBucketStore:function(e){var t=this.getLoadBucketParams();this.owner.setStatusBusy(),this.sendWebAPI({api:"SYNO.Backup.Storage.OpenStack.Container",version:1,method:"list",encryption:["secret"],params:t,scope:this,callback:function(a,i,n){if(this.owner.clearStatusBusy(),a){var s;if(this.lastBucketQuery=Ext.encode(t),this.getBucketStore().loadData(i.bucket_list),"create"===this.action){s=this.getForm().findField(this.getLayoutPrefix(this.action)+"bucket");var o=new new Ext.data.Record.create(["bucket","status","conflict_repo"])({bucket:SYNO.SDS.Backup.String("openstack","create_container"),status:0,conflict_repo:""});this.getBucketStore().insert(0,o)}else"relink"!==this.action&&"import"!==this.action||(s=this.getForm().findField(this.getLayoutPrefix(this.action)+"bucket"));s?e&&-1!==this.getBucketStore().findExact("bucket",e)&&0===this.getBucketStore().getAt(this.getBucketStore().findExact("bucket",e)).get("status")?(s.setValue(e),s.collapse(),this.updateTarget()):(s.el.focus(),s.expand(),s.restrictHeight()):SYNO.Debug("empty combo")}else this.owner.reportError(i)}})},regionValidator:function(e){var t=this.getLayoutPrefix(this.action),a=this.getForm(),i=function(e){return a.findField(t+e).getValue()},n=function(e){return a.findField(t+e).isValid()};if(n("remote_url")&&n("key")){if("2.0"===i("auth_version")&&n("secret_pw")&&n("tenant_value"))return!0;if("3.0"===i("auth_version")&&n("secret_pw")&&n("tenant_value")&&n("domain_value"))return!0}return e.markInvalid(SYNO.SDS.Backup.String("error","loss_auth_info")),!1},shareValidator:function(e){var t=this.getLayoutPrefix(this.action),a=this.getForm(),i=function(e){return a.findField(t+e).getValue()},n=function(e){return a.findField(t+e).isValid()};if(n("remote_url")&&n("key")){if("1.0"===i("auth_version")&&n("secret"))return!0;if("2.0"===i("auth_version")&&n("secret_pw")&&n("tenant_value")&&n("region_cust"))return!0;if("3.0"===i("auth_version")&&n("secret_pw")&&n("tenant_value")&&n("domain_value")&&n("region_cust"))return!0}return e.markInvalid(SYNO.SDS.Backup.String("error","loss_auth_info")),!1},relinkValidator:function(e,t){var a="create"===t.action?"create_":"relink_",i=function(t){return e.ownerCt.find("name",a+t)[0].getValue()},n=function(t){return e.ownerCt.find("name",a+t)[0].isValid()},s=function(t){return e.ownerCt.find("name",a+t)[0].items.items[1].isValid()};if(n("remote_url")&&n("key")){if("1.0"===i("auth_version")&&n("secret")&&n("bucket"))return!0;if("2.0"===i("auth_version")&&n("secret_pw")&&s("tenant_compositefield")&&n("region_cust")&&n("bucket"))return!0;if("3.0"===i("auth_version")&&n("secret_pw")&&s("tenant_compositefield")&&s("domain_compositefield")&&n("region_cust")&&n("bucket"))return!0}return e.markInvalid(SYNO.SDS.Backup.String("error","loss_auth_info")),!1},getParams:function(){var e,t=this.callParent(),a=this.getLayoutPrefix(this.action),i=this.getForm();return"export"!==this.action&&(t.transfer_type=this.transfer_type,t.remote_url=this.getRemoteUrlValue(),t.region=this.getRegionValue(),t.key=this.getUsernameValue(),t.secret=this.getSecretValue(),t.tenant_id=this.getTenantId(),t.tenant_name=this.getTenantName(),t.domain_id=this.getDomainId(),t.domain_name=this.getDomainName(),t.auth_version=this.getAuthVersion(),t.bucket=(e="bucket",i.findField(a+e).getValue())),t},summary:function(e){var t=this.getParams(),a=[SYNO.SDS.Backup.String("openstack","repo_type_name")];"create"===this.action||"relink"===this.action?(a.push(SYNO.Backup.Addon.Util.getColonConnect(SYNO.SDS.Backup.String("openstack","url"),t.remote_url)),a.push(SYNO.Backup.Addon.Util.getColonConnect(SYNO.SDS.Backup.String("openstack","container_name"),t.bucket))):"export"===this.action&&a.push(SYNO.Backup.Addon.Util.getColonConnect(_T("tree","leaf_sharefolder"),t.share)),a.push(SYNO.Backup.Addon.Util.getColonConnect(_T("backup","backup_dest_directory"),t.target_id)),e.append(SYNO.SDS.Backup.String("app","backup_destination"),a)}}),Ext.ns("SYNO.Backup.Addon.rackspace.Destination"),Ext.define("SYNO.Backup.Addon.rackspace.Destination.SettingPanel",{extend:"SYNO.Backup.Addon.base.Destination.SettingPanel",constructor:function(e){return Ext.copyTo(this,e,"owner,action"),this.uni_key=null,this.createFields=this.getAuthFields(this.getLayoutPrefix("create")),this.relinkFields=this.getAuthFields(this.getLayoutPrefix("relink")),this.callParent(arguments)},getAuthFields:function(e){var t=[{xtype:"syno_textfield",name:e+"key",indent:this.getFieldIndent(),width:270,allowBlank:!1,fieldLabel:SYNO.SDS.Backup.String("openstack","username")},{xtype:"syno_textfield",name:e+"secret",indent:this.getFieldIndent(),width:270,allowBlank:!1,inputType:"password",fieldLabel:SYNO.SDS.Backup.String("openstack","api_key")},{xtype:"syno_combobox",name:e+"region_cust",indent:this.getFieldIndent(),width:270,fieldLabel:SYNO.SDS.Backup.String("openstack","region"),store:this.getRegionStore(),displayField:"display",allowBlank:!1,valueField:"value",editable:!1,scope:this,onTriggerClick:function(){this.readOnly||this.disabled||this.scope.regionValidator(this)&&(this.scope.needReloadRegion()?this.scope.loadRegionStore():SYNO.ux.ComboBox.prototype.onTriggerClick.call(this,arguments))}},{xtype:"syno_combobox",name:e+"bucket",indent:this.getFieldIndent(),width:270,fieldLabel:SYNO.SDS.Backup.String("openstack","container_name"),store:this.getBucketStore(),displayField:"bucket",allowBlank:!1,valueField:"bucket",scope:this,onTriggerClick:function(){this.readOnly||this.disabled||this.scope.shareValidator(this)&&(this.scope.needReloadBucket()?this.scope.loadBucketStore():SYNO.ux.ComboBox.prototype.onTriggerClick.call(this,arguments))},listeners:{select:function(e,t,a){if("create"===this.action){if(0===a)return void this.createBucket();this.updateTarget()}},beforeselect:function(e,t,a){if(t.get("status")>0)return!1},scope:this},tpl:'<tpl for="."><div ext:qtip="{[SYNO.SDS.Backup.Util.htmlEncodeTip(values.status === 1 ? String.format(_T("backup", "repo_already_exist") + " [" + values.conflict_repo + "]") : values.bucket)]}" class="x-combo-list-item {[values.status === 1 ? "syno-backup-disabled-list-item" : "syno-backup-enabled-list-item"]}">{bucket:htmlEncode}</div></tpl>'}];return t},getLayoutPrefix:function(e){return"create"===e?"create_":"relink_"},getRemoteUrlValue:function(){return""},getRegionValue:function(){var e,t=this.getLayoutPrefix(this.action),a=this.getForm();return e="region_cust",a.findField(t+e).getValue()},getUsernameValue:function(){var e,t=this.getLayoutPrefix(this.action),a=this.getForm();return e="key",a.findField(t+e).getValue()},getSecretValue:function(){var e,t=this.getLayoutPrefix(this.action),a=this.getForm();return e="secret",a.findField(t+e).getValue()},getTenantId:function(){return""},getTenantName:function(){return""},getDomainId:function(){return""},getDomainName:function(){return""},getAuthVersion:function(){return""},createBucket:function(){var e=new SYNO.SDS.Backup.Addon.Util.Image.OpenStack.Repository.CreateBucket({remote_url:this.getRemoteUrlValue(),region:this.getRegionValue(),s3key:this.getUsernameValue(),s3secret:this.getSecretValue(),tenant_id:this.getTenantId(),tenant_name:this.getTenantName(),domain_id:this.getDomainId(),domain_name:this.getDomainName(),auth_version:this.getAuthVersion(),transfer_type:this.transfer_type,owner:this.owner});this.mon(e,"close",(function(){var t=e.items.get(0).getForm().findField("bucket").getValue();this.getForm().findField(this.getLayoutPrefix(this.action)+"bucket").clearValue(),this.loadBucketStore(t)}),this),e.open()},getRegionStore:function(){return this.regionStore||(this.regionStore=new Ext.data.ArrayStore({fields:["value","display"],sortInfo:{field:"display",direction:"ASC"}})),this.regionStore},getLoadRegionParams:function(){var e=this.getParams();return delete e.region,delete e.bucket,e},needReloadRegion:function(){var e=this.getLoadRegionParams();return this.lastRegionQuery!==Ext.encode(e)},loadRegionStore:function(){var e=this.getLoadRegionParams();this.owner.setStatusBusy(),this.sendWebAPI({api:"SYNO.Backup.Storage.OpenStack.Region",version:1,method:"list",encryption:["secret"],params:e,scope:this,callback:function(t,a,i){if(this.owner.clearStatusBusy(),t){this.lastRegionQuery=Ext.encode(e),this.getRegionStore().loadData(SYNO.SDS.Backup.Addon.Util.Image.OpenStack.region_name_mapping(a.region_list));var n=this.getForm().findField(this.getLayoutPrefix(this.action)+"region_cust");n.el.focus(),n.expand(),n.restrictHeight()}else this.owner.reportError(a)}})},getBucketStore:function(){return this.bucketStore||(this.bucketStore=new Ext.data.ArrayStore({fields:["bucket","status","conflict_repo"]})),this.bucketStore},getLoadBucketParams:function(){var e=this.getParams();return delete e.bucket,e},needReloadBucket:function(){var e=this.getLoadBucketParams();return this.lastBucketQuery!==Ext.encode(e)},loadBucketStore:function(e){var t=this.getLoadBucketParams();this.owner.setStatusBusy(),this.sendWebAPI({api:"SYNO.Backup.Storage.OpenStack.Container",version:1,method:"list",encryption:["secret"],params:t,scope:this,callback:function(a,i,n){if(this.owner.clearStatusBusy(),a){var s;if(this.lastBucketQuery=Ext.encode(t),this.getBucketStore().loadData(i.bucket_list),"create"===this.action){s=this.getForm().findField(this.getLayoutPrefix(this.action)+"bucket");var o=new new Ext.data.Record.create(["bucket","status","conflict_repo"])({bucket:SYNO.SDS.Backup.String("openstack","create_container"),status:0,conflict_repo:""});this.getBucketStore().insert(0,o)}else"relink"!==this.action&&"import"!==this.action||(s=this.getForm().findField(this.getLayoutPrefix(this.action)+"bucket"));s?e&&-1!==this.getBucketStore().findExact("bucket",e)&&0===this.getBucketStore().getAt(this.getBucketStore().findExact("bucket",e)).get("status")?(s.setValue(e),s.collapse(),this.updateTarget()):(s.el.focus(),s.expand(),s.restrictHeight()):SYNO.Debug("empty combo")}else this.owner.reportError(i)}})},regionValidator:function(e){var t=this.getLayoutPrefix(this.action),a=this.getForm(),i=function(e){return a.findField(t+e).isValid()};return!(!i("key")||!i("secret"))||(e.markInvalid(SYNO.SDS.Backup.String("error","loss_auth_info")),!1)},shareValidator:function(e){var t=this.getLayoutPrefix(this.action),a=this.getForm(),i=function(e){return a.findField(t+e).isValid()};return!!(i("region_cust")&&i("key")&&i("secret"))||(e.markInvalid(SYNO.SDS.Backup.String("error","loss_auth_info")),!1)},relinkValidator:function(e,t){var a="create"===t.action?"create_":"relink_",i=function(t){return e.ownerCt.find("name",a+t)[0].isValid()};return!!(i("region_cust")&&i("key")&&i("secret")&&i("bucket"))||(e.markInvalid(SYNO.SDS.Backup.String("error","loss_auth_info")),!1)},getParams:function(){var e,t=this.callParent(),a=this.getLayoutPrefix(this.action),i=this.getForm();return"export"!==this.action&&(t.transfer_type=this.transfer_type,t.remote_url=this.getRemoteUrlValue(),t.region=this.getRegionValue(),t.key=this.getUsernameValue(),t.secret=this.getSecretValue(),t.tenant_id=this.getTenantId(),t.tenant_name=this.getTenantName(),t.domain_id=this.getDomainId(),t.domain_name=this.getDomainName(),t.auth_version=this.getAuthVersion(),t.bucket=(e="bucket",i.findField(a+e).getValue())),t},summary:function(e){var t=this.getParams(),a=[SYNO.SDS.Backup.String("rackspace","repo_type_name")];"create"===this.action||"relink"===this.action?a.push(SYNO.Backup.Addon.Util.getColonConnect(SYNO.SDS.Backup.String("openstack","container_name"),t.bucket)):"export"===this.action&&a.push(SYNO.Backup.Addon.Util.getColonConnect(_T("tree","leaf_sharefolder"),t.share)),a.push(SYNO.Backup.Addon.Util.getColonConnect(_T("backup","backup_dest_directory"),t.target_id)),e.append(SYNO.SDS.Backup.String("app","backup_destination"),a)}}),Ext.ns("SYNO.Backup.Addon.remote.Destination"),Ext.define("SYNO.Backup.Addon.remote.Destination.SettingPanel",{extend:"SYNO.Backup.Addon.base.Destination.SettingPanel",constructor:function(e){return Ext.copyTo(this,e,"owner,action"),this.createlastQuery=null,this.relinklastQuery=null,this.verify_cert=!1,this.ssl_trust_mode="none",!1===e.supportExport&&(this.supportExport=!1),this.createFields=this.getAuthFields(this.getLayoutPrefix("create")),this.relinkFields=this.getAuthFields(this.getLayoutPrefix("relink")),this.callParent(arguments)},getAuthFields:function(e){var t=[new SYNO.SDS.Backup.HostCombobox({name:e+"dest",indent:this.getFieldIndent(),width:270,owner:this.owner}),{xtype:"syno_combobox",name:e+"sslcheck",indent:this.getFieldIndent(),width:270,fieldLabel:SYNO.SDS.Backup.String("remote","transfer_encryption"),allowBlank:!1,store:new Ext.data.ArrayStore({fields:["text","value"],data:[[SYNO.SDS.Backup.String("app","on"),!0],[SYNO.SDS.Backup.String("app","off"),!1]]}),displayField:"text",valueField:"value",editable:!1,value:!0,listeners:{afterrender:function(e){this.showFieldCert(e.value)},enable:function(e){this.showFieldCert(e.value)},select:function(e,t,a){this.showFieldCert(e.value)},scope:this}},{xtype:"syno_displayfield",name:e+"verify_cert",indent:this.getFieldIndent(),hidden:!0,fieldLabel:SYNO.SDS.Backup.String("app","certificate_auth"),value:SYNO.SDS.Backup.String("app","certificate_auth_not_yet")},{xtype:"syno_compositefield",hideLabel:!0,style:"margin-left: 213px",name:e+"cert_buttons",hidden:!0,items:[{xtype:"syno_button",hideLabel:!0,text:SYNO.SDS.Backup.String("app","trust"),itemId:"trust_button",handler:this.onTrustBtnClick,scope:this},{xtype:"syno_button",hideLabel:!0,text:SYNO.SDS.Backup.String("app","ignore"),itemId:"ignore_button",handler:this.onIgnoreCertBtnClick,scope:this}]},{xtype:"syno_numberfield",maxlength:5,vtype:"port",name:e+"port",indent:this.getFieldIndent(),value:6281,width:270,allowBlank:!1,fieldLabel:_T("common","port")},{xtype:"syno_displayfield",name:e+"account",hidden:!0},{xtype:"syno_displayfield",name:e+"pwd",hidden:!0},{xtype:"syno_displayfield",name:e+"is_webapi_authen",value:"false",hidden:!0},{xtype:"syno_compositefield",fieldLabel:SYNO.SDS.Backup.String("app","authenticate"),indent:this.getFieldIndent(),items:[{xtype:"syno_displayfield",name:e+"account_display_name"},{xtype:"syno_button",name:e+"account_authen",text:SYNO.SDS.Backup.String("app","login"),itemId:"authenticate_button",handler:this.onAuthenBtnClick,scope:this}]},{xtype:"syno_combobox",name:e+"share",indent:this.getFieldIndent(),width:270,allowBlank:!1,fieldLabel:_T("tree","leaf_sharefolder"),forceSelection:!0,store:this.getShareStore(),displayField:"share",valueField:"share",scope:this,onTriggerClick:function(){this.readOnly||this.disabled||this.scope.shareValidator(this)&&(this.scope.needReloadShare()?this.scope.loadShareStore():SYNO.ux.ComboBox.prototype.onTriggerClick.call(this,arguments))},listeners:{beforeselect:function(e,t,a){if(0!==t.get("status"))return!1},select:function(e,t,a){"create"===this.action&&this.updateTarget()},scope:this},tpl:SYNO.SDS.Backup.getShareListTpl("share")}];return t},authenCB:function(e){SYNO.Debug(e);var t=this.getLayoutPrefix(this.action);"code"in e?1001!==e.code&&this.owner.getMsgBox().alert(_T("tree","leaf_backup"),SYNO.SDS.Backup.GetErrorString(SYNO.SDS.Backup.ERR_SERVICE_DISABLE)):(this.getForm().findField(t+"account").setValue(e.username),SYNO.Backup.Util.DisplayAccount(this.getForm().findField(t+"account_display_name"),e.username,15),this.getForm().findField(t+"pwd").setValue(e.id),this.getForm().findField(t+"is_webapi_authen").setValue(!0),this.doLayout()),this.owner.clearStatusBusy()},onAuthenBtnClick:async function(){var e=this.getLayoutPrefix(this.action),t=this.getForm().findField(e+"dest");if(t.isValid()){if("entire_dsm"===this.owner.backupType){let e,a,i;try{this.owner.setStatusBusy();let t=await SYNO.SDS.Backup.Util.getSelfNetworkInfo();e=t.selfIPs,a=t.selfHostName}catch(e){return SYNO.Debug(e),void this.owner.getMsgBox().alert(_T("tree","leaf_backup"),SYNO.SDS.Backup.String("error","app_system_error"))}finally{this.owner.clearStatusBusy()}try{this.owner.setStatusBusy(),i=await SYNO.SDS.Backup.Util.IPLookup(t.value)}catch(e){return SYNO.debug(e),void this.owner.getMsgBox().alert(_T("tree","leaf_backup"),SYNO.SDS.Backup.String("error","dns_look_up_error"))}finally{this.owner.clearStatusBusy()}if(!SYNO.SDS.Backup.Util.isDestIPValid(t.value,e,i,a))return void this.owner.getMsgBox().alert(_T("tree","leaf_backup"),SYNO.SDS.Backup.String("app","connect_self_ip"))}this.owner.setStatusBusy();var a=this.owner.getParams();a.ip=this.getForm().findField(e+"dest").getValue(),a.port=this.getForm().findField(e+"port").getValue(),this.sendWebAPI({api:"SYNO.Backup.Repository.LoginPort",version:1,method:"get",params:a,scope:this,callback:function(e,t,i){if(!e)return t.code==SYNO.SDS.Backup.ERR_NO_RESPONSE&&(t.code=SYNO.SDS.Backup.ERR_SERVICE_DISABLE),this.owner.reportError(t),this.owner.clearStatusBusy(),!1;var n={url:"",forceLegacyMode:!1,session:"HyperBackupVault",appWin:this.owner,callback:this.authenCB.bind(this),redirect_uri:window.location.origin};if(t.port>0){var s=Ext.form.VTypes.v6ip(a.ip)?"["+a.ip+"]":a.ip;n.url="https://"+s+":"+t.port}else n.forceLegacy=!0,n.mustHaveCredential=!0;"true"===Ext.urlDecode(location.search.substr(1)).forceLegacy&&(n.forceLegacy=!0),synocredential.Issue(n)}})}else t.markInvalid(_T("netbackup","netbkp_err_host_str"))},showFieldCert:function(e){var t=this.getLayoutPrefix(this.action),a=this.getForm().findField(t+"verify_cert"),i=this.getForm().findField(t+"cert_buttons");e?(a.show(),i.show()):(a.removeClass("syno-backup-orange-status"),a.removeClass("syno-backup-red-status"),a.removeClass("syno-backup-green-status"),a.setValue(SYNO.SDS.Backup.String("app","certificate_auth_not_yet")),this.ssl_trust_mode="none",a.hide(),i.hide()),this.doLayout()},onCertVerifyFailed:function(e,t){var a=this.getLayoutPrefix(this.action),i=this.getForm().findField(a+"verify_cert");i.removeClass("syno-backup-orange-status"),i.removeClass("syno-backup-red-status"),i.removeClass("syno-backup-green-status"),i.addClass("syno-backup-red-status"),i.setValue(SYNO.SDS.Backup.String("app","certificate_auth_failed")),this.owner.getMsgBox().alert(_T("leaf","backup"),SYNO.SDS.Backup.String("error","certificate_check_failed")),Ext.isEmpty(e)||SYNO.ux.AddTip(i.getEl(),SYNO.Backup.Util.getCertErrReason(e,t)),this.ssl_trust_mode="failed"},onTrustBtnClick:function(){var e=this.getLayoutPrefix(this.action),t=this.getForm().findField(e+"verify_cert");t.removeClass("syno-backup-orange-status"),t.removeClass("syno-backup-red-status"),t.removeClass("syno-backup-green-status"),t.addClass("syno-backup-green-status"),t.setValue(SYNO.SDS.Backup.String("app","certificate_auth_pass")),this.ssl_trust_mode="trust"},onIgnoreCertBtnClick:function(){var e=this.getLayoutPrefix(this.action),t=this.getForm().findField(e+"verify_cert");t.removeClass("syno-backup-orange-status"),t.removeClass("syno-backup-red-status"),t.removeClass("syno-backup-green-status"),t.addClass("syno-backup-orange-status"),t.setValue(SYNO.SDS.Backup.String("app","certificate_auth_always_ignore")),this.ssl_trust_mode="ignore"},getLayoutPrefix:function(e){return"create"===e?"create_":"relink_"},needReloadShare:function(){var e=this.getAuthParams();return"create"===this.action?this.createlastQuery!==Ext.encode(e):this.relinklastQuery!==Ext.encode(e)},getAuthParams:function(){var e=this.getLayoutPrefix(this.action),t=this.getForm(),a=function(a){return t.findField(e+a).getValue()},i=this.owner.getParams();return i.transfer_type=this.transfer_type,i.dest=t.findField(e+"dest").getHostAddress(),i.port=a("port"),i.account=a("account"),i.pwd=a("pwd"),i.is_webapi_authen=a("is_webapi_authen"),i.verify_cert=a("sslcheck")&&"trust"!==this.ssl_trust_mode&&"ignore"!==this.ssl_trust_mode,i},needHBKCompatibility:function(){return!!_F("SYNO_PRODUCT_FSDN")||"DSM"!==_D("os_name")},loadShareStore:function(){var e=this.getAuthParams();Ext.isEmpty(e.dest,!1)||Ext.isEmpty(e.port,!1)||Ext.isEmpty(e.account,!1)||(this.owner.setStatusBusy(),this.sendWebAPI({api:"SYNO.Backup.Storage.Share.Network",version:1,method:"list",encryption:["pwd"],params:e,scope:this,callback:function(t,a,i){if(this.owner.clearStatusBusy(),!t)return a.code==SYNO.SDS.Backup.ERR_NO_RESPONSE&&(a.code=SYNO.SDS.Backup.ERR_SERVICE_DISABLE),this.owner.reportError(a),!1;if(!e.verify_cert||a.verify_success){if(!a.capabilities.support_backup_to_share)return this.owner.getMsgBox().alert(_T("leaf","backup"),SYNO.SDS.Backup.GetErrorString(SYNO.SDS.Backup.ERR_PROTOCOL_VERSION_SERVER_TOO_OLD)),!1;if("entire_dsm"===this.owner.backupType&&!a.capabilities.support_entire_dsm_backup)return this.owner.getMsgBox().alert(_T("leaf","backup"),SYNO.SDS.Backup.GetErrorString(SYNO.SDS.Backup.ERR_PROTOCOL_VERSION_SERVER_TOO_OLD)),!1;if("multi_ver_lun"===this.owner.backupType&&!a.capabilities.support_multi_ver_lun_backup)return this.owner.getMsgBox().alert(_T("leaf","backup"),SYNO.SDS.Backup.GetErrorString(SYNO.SDS.Backup.ERR_PROTOCOL_VERSION_SERVER_TOO_OLD)),!1;if(this.needHBKCompatibility()&&!a.capabilities.support_check_hbk_compatibility)return this.owner.getMsgBox().alert(_T("leaf","backup"),SYNO.SDS.Backup.GetErrorString(SYNO.SDS.Backup.ERR_PROTOCOL_VERSION_SERVER_TOO_OLD)),!1;if(0===a.share_list.length)return this.owner.getMsgBox().alert(_T("leaf","backup"),SYNO.SDS.Backup.String("app","no_shared_folder_available")),!1;Ext.each(a.share_list,(function(e,t){if(0===e[1])return!1;t===a.share_list.length-1&&this.owner.getMsgBox().alert(_T("leaf","backup"),SYNO.SDS.Backup.String("app","no_shared_folder_available"))}),this),"create"===this.action?this.createlastQuery=Ext.encode(e):this.relinklastQuery=Ext.encode(e),this.getShareStore().loadData(a.share_list);var n=this.getLayoutPrefix(this.action);if("create"===this.action){var s=this.getForm().findField(n+"share");s.el.focus(),s.expand(),s.restrictHeight()}this.owner.support_rotate=a.capabilities.support_rotate,this.owner.support_ssl=a.capabilities.support_ssl,!1===this.owner.support_ssl&&this.getForm().findField(n+"sslcheck").setValue(!1);this.getForm().setValues({})}else this.onCertVerifyFailed(a.verify_err_reason,a.err_cert)}}))},getShareStore:function(){return this.shareStore||(this.shareStore=new Ext.data.ArrayStore({fields:["share","status","conflict_repo","is_data_enc"]})),this.shareStore},hasAuthen:function(){var e=this.getLayoutPrefix(this.action);return"true"==this.getForm().findField(e+"is_webapi_authen").getValue()},shareValidator:function(e){var t=e.ownerCt;return t.get(0).isValid()&&t.get(2).isValid()&&t.get(3).isValid()&&t.get(4).isValid()?(this.hasAuthen()||e.markInvalid(SYNO.SDS.Backup.String("error","loss_login")),!0):(e.markInvalid(SYNO.SDS.Backup.String("error","loss_auth_info")),!1)},relinkValidator:function(e,t){var a=e.ownerCt;return!!(a.get(0).isValid()&&a.get(2).isValid()&&a.get(3).isValid()&&a.get(4).isValid()&&a.get(5).isValid())||(e.markInvalid(SYNO.SDS.Backup.String("error","loss_auth_info")),!1)},getNext:function(){var e=this.getLayoutPrefix(this.action),t=this.getForm(),a=function(a){return t.findField(e+a).getValue()};return"create"!==this.action&&"relink"!==this.action?this.callParent(arguments):a("sslcheck")&&"trust"!==this.ssl_trust_mode&&"ignore"!==this.ssl_trust_mode&&"pass"!==this.ssl_trust_mode?(this.owner.setStatusBusy(),this.sendWebAPI({api:"SYNO.Backup.Repository.Certificate",version:1,method:"verify",params:{action:"for_create",transfer_type:"image_remote",target_type:"image",dest:t.findField(e+"dest").getHostAddress(),port:a("port"),account:a("account"),pwd:a("pwd"),verify_cert:!0},callback:function(e,t,a){if(!e||!t.verify_success)return this.onCertVerifyFailed(t.verify_err_reason,t.err_cert),void this.owner.clearStatusBusy();this.ssl_trust_mode="pass",this.getNext(),this.owner.clearStatusBusy()},scope:this}),!1):this.callParent(arguments)},getParams:function(){var e=this.callParent(),t=this.getLayoutPrefix(this.action),a=this.getForm(),i=function(e){return a.findField(t+e).getValue()};if(e.verify_cert=this.verify_cert,"export"!==this.action){e.share=i("share"),e.dest=a.findField(t+"dest").getHostAddress(),e.port=i("port"),e.account=i("account"),e.pwd=i("pwd"),e.sslcheck=i("sslcheck"),e.is_webapi_authen=i("is_webapi_authen"),e.sslcheck&&(e.ssl_trust_mode=this.ssl_trust_mode);var n=this.getShareStore().getAt(this.getShareStore().find("share",i("share")));n&&(e.isDestEncShare=n.get("is_data_enc"))}return e.clientEncrypt=this.needEnableClientEncrypt(e),e},summary:function(e){var t=this.getParams(),a=[SYNO.SDS.Backup.String("remote","repo_type_name_2")];"create"!==this.action&&"relink"!==this.action||a.push(SYNO.Backup.Addon.Util.getColonConnect(_T("netbackup","netbkp_set_ip"),t.dest)),a.push(SYNO.Backup.Addon.Util.getColonConnect(_T("tree","leaf_sharefolder"),t.share)),a.push(SYNO.Backup.Addon.Util.getColonConnect(_T("backup","backup_dest_directory"),t.target_id)),e.append(SYNO.SDS.Backup.String("app","backup_destination"),a)}}),Ext.define("SYNO.Backup.Addon.rsync.Destination.SettingPanel",{extend:"SYNO.Backup.Addon.base.Destination.SettingPanel",constructor:function(e){return Ext.copyTo(this,e,"owner,action"),this.createFields=this.getAuthFields(this.getLayoutPrefix("create")),this.relinkFields=this.getAuthFields(this.getLayoutPrefix("relink")),this.callParent(arguments)},getAuthFields:function(e){return[{xtype:"syno_combobox",name:e+"network_type",indent:this.getFieldIndent(),width:270,fieldLabel:_T("netbackup","netbkp_slct_server"),allowBlank:!1,store:this.getServerStore(),displayField:"server",valueField:"value",value:"rsync_ds",editable:!1,listeners:{scope:this,select:function(e,t,a){this.changeLayout(this.action,t.get("value"))}}},new SYNO.SDS.Backup.HostCombobox({width:270,name:e+"dest",indent:this.getFieldIndent(),owner:this.owner}),{xtype:"syno_combobox",name:e+"encrypt_connect",indent:this.getFieldIndent(),width:270,fieldLabel:SYNO.SDS.Backup.String("rsync","transfer_encryption"),allowBlank:!1,store:new Ext.data.ArrayStore({fields:["text","value"],data:[[SYNO.SDS.Backup.String("app","on"),!0],[SYNO.SDS.Backup.String("app","off"),!1]]}),displayField:"text",valueField:"value",editable:!1,value:!1,listeners:{scope:this,select:function(e,t,a){this.changeEncTransLayout(this.action,t.get("value"))}}},{xtype:"syno_numberfield",maxlength:5,vtype:"port",name:e+"port",indent:this.getFieldIndent(),value:873,width:270,allowBlank:!1,fieldLabel:_T("common","port")},{xtype:"syno_numberfield",maxlength:5,vtype:"port",name:e+"enc_port",indent:this.getFieldIndent(),value:22,width:270,allowBlank:!1,fieldLabel:_T("common","port"),hidden:!0,disabled:!0},{xtype:"syno_textfield",name:e+"account",indent:this.getFieldIndent(),width:270,allowBlank:!1,fieldLabel:_T("netbackup","netbkp_account"),validator:function(t){var a=t;return"rsync"===this.getForm().findField(e+"network_type").getValue()&&(a=a.replace(/%/g,"a")),Ext.form.VTypes.username_ext(a)}.createDelegate(this),invalidText:Ext.form.VTypes.username_extText},{xtype:"syno_textfield",name:e+"pwd",indent:this.getFieldIndent(),width:270,allowBlank:!0,fieldLabel:_T("common","password"),inputType:"password"},new SYNO.SDS.Backup.ComboBox({name:e+"module",indent:this.getFieldIndent(),width:270,owner:this.owner,fieldLabel:_T("netbackup","netbkp_module"),allowBlank:!1,store:this.getModuleStore(),displayField:"share",valueField:"share",editable:!0,hidden:!0,disabled:!0,scope:this,clickValidator:this.shareValidator,getParams:{scope:this,handler:this.getAuthParams},listeners:{scope:this,beforeselect:function(e,t,a){if(0!==t.get("status"))return!1},select:function(e,t,a){"create"===this.action&&this.updateTarget()}},tpl:'<tpl for="."><div ext:qtip="{[SYNO.SDS.Backup.Util.htmlEncodeTip(values.status === 1 ? String.format(_T("backup", "repo_already_exist") + " [" + values.conflict_repo + "]") : values.share)]}" class="x-combo-list-item {[values.status === 0 ? "syno-backup-enabled-list-item" : "syno-backup-disabled-list-item"]}">{share:htmlEncode}</div></tpl>'}),new SYNO.SDS.Backup.ComboBox({name:e+"share",indent:this.getFieldIndent(),width:270,allowBlank:!1,owner:this.owner,fieldLabel:_T("tree","leaf_sharefolder"),forceSelection:!0,store:this.getShareStore(),displayField:"share",valueField:"share",clickValidator:this.shareValidator,getParams:{scope:this,handler:this.getAuthParams},scope:this,listeners:{scope:this,beforeselect:function(e,t,a){if(0!==t.get("status"))return!1},select:function(e,t,a){"create"===this.action&&this.updateTarget()}},tpl:'<tpl for="."><div ext:qtip="{[SYNO.SDS.Backup.Util.htmlEncodeTip(values.status === 1 ? String.format(_T("backup", "repo_already_exist") + " [" + values.conflict_repo + "]") : values.share)]}" class="x-combo-list-item {[values.status === 0 ? "syno-backup-enabled-list-item" : "syno-backup-disabled-list-item"]}">{share:htmlEncode}</div></tpl>'})]},getModuleStore:function(){return this.moduleStore||(this.moduleStore=new Ext.data.ArrayStore({proxy:new SYNO.API.Proxy({api:"SYNO.Backup.Storage.Share.Rsync",version:1,method:"list",encryption:["pwd"]}),root:"share_list",autoDestroy:!0,autoLoad:!1,fields:["share","status","conflict_repo"],listeners:{load:function(e,t,a){0===t.length&&this.owner.getMsgBox().alert(_T("leaf","backup"),SYNO.SDS.Backup.String("app","no_modules_available"))},scope:this}})),this.moduleStore},getShareStore:function(){return this.shareStore||(this.shareStore=new Ext.data.ArrayStore({proxy:new SYNO.API.Proxy({api:"SYNO.Backup.Storage.Share.Rsync",version:1,method:"list",encryption:["pwd"]}),root:"share_list",autoDestroy:!0,autoLoad:!1,fields:["share","status","conflict_repo"],listeners:{load:function(e,t,a){0===t.length&&this.owner.getMsgBox().alert(_T("leaf","backup"),SYNO.SDS.Backup.String("app","no_shared_folder_available"))},scope:this}})),this.shareStore},onFieldsetSelected:function(e){var t=e.get(0);t&&("create_fields"!==e.name&&"relink_fields"!==e.name||this.changeLayout(this.action,t.getValue()))},getServerStore:function(){return this.serverStore||(this.serverStore=new Ext.data.ArrayStore({fields:["server","value"],data:[[String.format(SYNO.SDS.Backup.String("rsync","synology_rsync_server"),_D("company_title")),"rsync_ds"],[_T("netbackup","rsync_compatible_server"),"rsync"]]})),this.serverStore},getLayoutPrefix:function(e){return"create"===e?"create_":"relink_"},changeLayout:function(e,t){var a=this.getLayoutPrefix(e),i=this.getForm(),n=function(e,t){i.findField(a+e).setDisabled(!t),i.findField(a+e).setVisible(t)},s=function(e,t){n("share",e),n("module",t)};"rsync_ds"===t?s(!0,!1):"rsync"===t&&s(!1,!0)},changeEncTransLayout:function(e,t){var a=this.getLayoutPrefix(e),i=this.getForm(),n=function(e,t){i.findField(a+e).setDisabled(!t),i.findField(a+e).setVisible(t)},s=function(e,t){n("port",e),n("enc_port",t)};t?s(!1,!0):s(!0,!1)},getAuthParams:function(){var e=Ext.copyTo({},this.getParams(),"transfer_type,dest,account,pwd,encrypt_connect,port,enc_port");return e.action=this.action,e},shareValidator:function(e,t){var a,i="create"===t.action?"create_":"relink_",n=function(t){return e.ownerCt.find("name",i+t)[0].isValid()};return!!(n("network_type")&&n("dest")&&(a="encrypt_connect",e.ownerCt.find("name",i+a)[0].getValue()?n("enc_port"):n("port"))&&n("account"))||(e.markInvalid(SYNO.SDS.Backup.String("error","loss_auth_info")),!1)},relinkValidator:function(e,t){var a="create"===t.action?"create_":"relink_",i=function(t){return e.ownerCt.find("name",a+t)[0].getValue()},n=function(t){return e.ownerCt.find("name",a+t)[0].isValid()};if("rsync_ds"===t.transfer_type){if(n("network_type")&&n("dest")&&(i("encrypt_connect")?n("enc_port"):n("port"))&&n("account")&&n("share"))return!0}else if("rsync"===t.transfer_type&&n("network_type")&&n("dest")&&(i("encrypt_connect")?n("enc_port"):n("port"))&&n("account")&&n("module"))return!0;return e.markInvalid(SYNO.SDS.Backup.String("error","loss_auth_info")),!1},getParams:function(){var e=this.callParent(),t=this.getLayoutPrefix(this.action),a=this.getForm(),i=function(e){return a.findField(t+e).getValue()};return"export"!==this.action&&(e.transfer_type=i("network_type"),e.dest=a.findField(t+"dest").getHostAddress(),e.account=i("account"),e.pwd=i("pwd"),e.encrypt_connect=i("encrypt_connect"),e.encrypt_connect?e.enc_port=i("enc_port"):e.port=i("port"),"rsync_ds"===e.transfer_type?e.share=i("share"):(e.module=i("module"),"/"===e.module.charAt(0)&&(e.remoteshell=!0,e.encrypt_connect=!0,Ext.isDefined(e.enc_port)||(e.enc_port=22,delete e.port)))),e},summary:function(e){var t=this.getParams(),a=[SYNO.SDS.Backup.String("rsync","repo_type_name_2")];"create"!==this.action&&"relink"!==this.action||a.push(SYNO.Backup.Addon.Util.getColonConnect(_T("netbackup","netbkp_set_ip"),t.dest)),a.push(SYNO.Backup.Addon.Util.getColonConnect(_T("tree","leaf_sharefolder"),t.share)),a.push(SYNO.Backup.Addon.Util.getColonConnect(_T("backup","backup_dest_directory"),t.target_id)),e.append(SYNO.SDS.Backup.String("app","backup_destination"),a)}}),Ext.define("SYNO.Backup.Addon.rsync_ds.Destination.SettingPanel",{extend:"SYNO.Backup.Addon.rsync.Destination.SettingPanel"}),Ext.ns("SYNO.Backup.Addon.sfr_s3.Destination"),Ext.define("SYNO.Backup.Addon.sfr_s3.Destination.SettingPanel",{extend:"SYNO.SDS.Backup.Addon.Util.Image.S3.Repository.CreateStep",addon_id:"image_sfr"}),Ext.ns("SYNO.SDS.Backup.Addon.webdav.Repository"),Ext.define("SYNO.SDS.Backup.Addon.webdav.Repository.CreateBucket",{extend:"SYNO.SDS.ModalWindow",dsmStyle:"v5",constructor:function(e){this.remote_url=e.remote_url,this.account=e.account,this.pwd=e.pwd,this.transfer_type=e.transfer_type;var t=[{xtype:"syno_textfield",name:"bucket",allowBlank:!1,fieldLabel:SYNO.SDS.Backup.String("webdav","root_folder"),validator:function(e){return!e.match(/[//]/)||SYNO.SDS.Backup.String("webdav","root_folder_name_letter_limit")},owner:this}],a=Ext.apply({title:SYNO.SDS.Backup.String("webdav","create_root_folder"),width:450,height:200,minWidth:450,minHeight:200,layout:"fit",items:[{xtype:"syno_formpanel",trackResetOnLoad:!0,itemId:"form_panel",items:t}],buttons:[{text:_T("common","cancel"),handler:function(){this.close()},scope:this},{itemId:"btn_apply",text:_T("common","apply"),btnStyle:"blue",scope:this,handler:this.onCreate}]},e);return this.callParent([a])},onCreate:function(){if(this.items.get(0).getForm().isValid()){this.setStatusBusy();var e={remote_url:this.remote_url,account:this.account,pwd:this.pwd,transfer_type:this.transfer_type,container:this.items.get(0).getForm().findField("bucket").getValue()};this.sendWebAPI({api:"SYNO.Backup.Storage.WebDAV.Container",version:1,method:"create",encryption:["pwd"],params:e,scope:this,callback:function(e,t,a){var i=this.items.get(0).getForm().findField("bucket").getValue();if(this.clearStatusBusy(),!e)return this.showPossibleBucketError(t.code,i),!1;this.close()}})}},showPossibleBucketError:function(e,t){var a=SYNO.SDS.Backup.GetErrorString(e);this.getMsgBox().alert(_T("tree","leaf_backup"),a)}}),Ext.ns("SYNO.Backup.Addon.webdav.Destination"),Ext.define("SYNO.Backup.Addon.webdav.Destination.SettingPanel",{extend:"SYNO.Backup.Addon.base.Destination.SettingPanel",constructor:function(e){return Ext.copyTo(this,e,"owner,action"),this.uni_key=null,this.createFields=this.getAuthFields(this.getLayoutPrefix("create")),this.relinkFields=this.getAuthFields(this.getLayoutPrefix("relink")),this.callParent(arguments)},getAuthFields:function(e){var t=[{xtype:"syno_textfield",name:e+"remote_url",indent:this.getFieldIndent(),width:270,allowBlank:!1,fieldLabel:SYNO.SDS.Backup.String("webdav","url")},{xtype:"syno_textfield",name:e+"account",indent:this.getFieldIndent(),width:270,allowBlank:!1,fieldLabel:SYNO.SDS.Backup.String("webdav","username")},{xtype:"syno_textfield",name:e+"pwd",indent:this.getFieldIndent(),width:270,allowBlank:!1,inputType:"password",fieldLabel:SYNO.SDS.Backup.String("app","task_password_input")},{xtype:"syno_combobox",name:e+"bucket",indent:this.getFieldIndent(),width:270,fieldLabel:SYNO.SDS.Backup.String("webdav","root_folder_name"),store:this.getBucketStore(),displayField:"bucket",allowBlank:!1,valueField:"bucket",scope:this,onTriggerClick:function(){this.readOnly||this.disabled||this.scope.shareValidator(this)&&(this.scope.needReloadBucket()?this.scope.loadBucketStore():SYNO.ux.ComboBox.prototype.onTriggerClick.call(this,arguments))},listeners:{select:function(e,t,a){if("create"===this.action){if(0===a)return void this.createBucket();this.updateTarget(t.get("bucket"))}},beforeselect:function(e,t,a){if(t.get("status")>0)return!1},scope:this},tpl:'<tpl for="."><div ext:qtip="{[SYNO.SDS.Backup.Util.htmlEncodeTip(values.status === 1 ? String.format(_T("backup", "repo_already_exist") + " [" + values.conflict_repo + "]") : values.bucket)]}" class="x-combo-list-item {[values.status === 1 ? "syno-backup-disabled-list-item" : "syno-backup-enabled-list-item"]}">{bucket:htmlEncode}</div></tpl>'}];return t},getLayoutPrefix:function(e){return"create"===e?"create_":"relink_"},getRemoteUrlValue:function(){for(var e,t=this.getLayoutPrefix(this.action),a=this.getForm(),i=(e="remote_url",a.findField(t+e).getValue()).trim();0<i.length&&"/"==i[i.length-1];)i=i.slice(0,-1);return"http://"!==i.substring(0,7)&&"https://"!==i.substring(0,8)?"http://"+i:i},createBucket:function(){var e=this.getLayoutPrefix(this.action),t=this.getForm(),a=function(a){return t.findField(e+a).getValue()},i=new SYNO.SDS.Backup.Addon.webdav.Repository.CreateBucket({remote_url:this.getRemoteUrlValue(),account:a("account"),pwd:a("pwd"),transfer_type:this.transfer_type,owner:this.owner});this.mon(i,"close",(function(){var e=i.items.get(0).getForm().findField("bucket").getValue();this.getForm().findField(this.getLayoutPrefix(this.action)+"bucket").clearValue(),this.loadBucketStore(e)}),this),i.open()},getBucketStore:function(){return this.bucketStore||(this.bucketStore=new Ext.data.ArrayStore({fields:["bucket","status","conflict_repo"]})),this.bucketStore},getLoadBucketParams:function(){var e=this.getParams();return delete e.bucket,e},needReloadBucket:function(){var e=this.getLoadBucketParams();return this.lastQuery!==Ext.encode(e)},loadBucketStore:function(e){var t=this.getLoadBucketParams();this.owner.setStatusBusy(),this.sendWebAPI({api:"SYNO.Backup.Storage.WebDAV.Container",version:1,method:"list",encryption:["pwd"],params:t,scope:this,callback:function(a,i,n){if(this.owner.clearStatusBusy(),a){var s;if(this.lastQuery=Ext.encode(t),this.getBucketStore().loadData(i.bucket_list),"create"===this.action){s=this.getForm().findField(this.getLayoutPrefix(this.action)+"bucket");var o=new new Ext.data.Record.create(["bucket","status","conflict_repo"])({bucket:SYNO.SDS.Backup.String("webdav","create_root_folder"),status:0,conflict_repo:""});this.getBucketStore().insert(0,o)}else"relink"!==this.action&&"import"!==this.action||(s=this.getForm().findField(this.getLayoutPrefix(this.action)+"bucket"));s?e&&-1!==this.getBucketStore().findExact("bucket",e)&&0===this.getBucketStore().getAt(this.getBucketStore().findExact("bucket",e)).get("status")?(s.setValue(e),s.collapse(),this.updateTarget()):(s.el.focus(),s.expand(),s.restrictHeight()):SYNO.Debug("empty combo")}else this.owner.reportError(i)}})},shareValidator:function(e){var t=this.getLayoutPrefix(this.action),a=this.getForm(),i=function(e){return a.findField(t+e).isValid()};return!!(i("remote_url")&&i("account")&&i("pwd"))||(e.markInvalid(SYNO.SDS.Backup.String("error","loss_auth_info")),!1)},relinkValidator:function(e,t){var a="create"===t.action?"create_":"relink_",i=function(t){return e.ownerCt.find("name",a+t)[0].isValid()};return!!(i("remote_url")&&i("account")&&i("pwd")&&i("bucket"))||(e.markInvalid(SYNO.SDS.Backup.String("error","loss_auth_info")),!1)},getParams:function(){var e=this.callParent(),t=this.getLayoutPrefix(this.action),a=this.getForm(),i=function(e){return a.findField(t+e).getValue()};return"export"!==this.action&&(e.transfer_type=this.transfer_type,e.remote_url=this.getRemoteUrlValue(),e.account=i("account"),e.pwd=i("pwd"),e.bucket=i("bucket")),e},summary:function(e){var t=this.getParams(),a=[SYNO.SDS.Backup.String("webdav","repo_type_name")];"create"===this.action||"relink"===this.action?(a.push(SYNO.Backup.Addon.Util.getColonConnect(SYNO.SDS.Backup.String("webdav","url"),t.remote_url)),a.push(SYNO.Backup.Addon.Util.getColonConnect(SYNO.SDS.Backup.String("webdav","root_folder"),t.bucket))):"export"===this.action&&a.push(SYNO.Backup.Addon.Util.getColonConnect(_T("tree","leaf_sharefolder"),t.share)),a.push(SYNO.Backup.Addon.Util.getColonConnect(_T("backup","backup_dest_directory"),t.target_id)),e.append(SYNO.SDS.Backup.String("app","backup_destination"),a)}}),Ext.ns("SYNO.Backup.Addon.synocloud.Destination"),Ext.define("SYNO.Backup.Addon.synocloud.Destination.SettingPanel",{extend:"SYNO.Backup.Addon.base.Destination.SettingPanel",constructor:function(e){return this.uni_key=null,this.createFields=[],this.relinkFields=[],this.export_quota_threshold=21990232555520,this.default_target=null,this.callParent(arguments)},initComponent:function(){this.callParent(arguments),this.displayExportOption(!1)},setOauthResponse:function(e){this.key=e.access_token,this.secret=e.refresh_token,this.tenant_id=e.openstack_token,this.region="eu",Ext.isEmpty(e.region)||(this.region=e.region),Ext.isEmpty(e.account_meta)?this.owner.accountMeta=SYNO.SDS.Backup.Client.Common.Utils.createAccountMeta():this.owner.accountMeta.setSynoCloudData(Ext.util.JSON.decode(e.account_meta)),"import"!==this.action&&this.updateDefaultTarget()},updateDefaultTarget:function(){this.owner.setStatusBusy(),this.owner.sendWebAPI({api:"SYNO.Core.System",method:"info",version:1,params:{type:"network"},callback:this.updateDefaultTargetDone,scope:this})},updateDefaultTargetDone:function(e,t,a){(this.owner.clearStatusBusy(),e&&void 0!==t&&Ext.isArray(t.nif))?(this.default_target=t.hostname.toLowerCase()+(new Date).format("_Ymd_His"),this.getForm().findField("target_id").setValue(this.default_target),"true"===Ext.urlDecode(location.search.substr(1)).c2export&&this.displayExportOption(!0)):this.owner.getMsgBox().alert(this.owner.getMsgBox().alert(_T("leaf","backup"),_T("error","error_error_system")))},getExportFieldsExunit:function(){return[{xtype:"syno_radio",name:"creating_action",boxLabel:SYNO.SDS.Backup.String("app","wizard_export_option_c2_exunit"),inputValue:"export",listeners:{check:function(e,t){t&&(this.action="export",this.export_method="exunit",this.updateFieldView(["export_fields_exunit"],["create_fields","relink_fields","export_fields_fireball"]))},scope:this}},{xtype:"syno_fieldset",name:"export_fields_exunit",defaults:{labelWidth:300},bwrapStyle:{padding:0},collapsible:!1,items:[new SYNO.SDS.Backup.ComboBox({name:"export_share",fieldLabel:_T("tree","leaf_sharefolder"),allowBlank:!1,indent:1,width:270,forceSelection:!0,owner:this.owner,store:this.getExportShareStore(),displayField:"share",valueField:"share",listeners:{enable:function(e,t){this.updateExportShareStore()},beforeselect:function(e,t,a){if(0!==t.get("status"))return!1},scope:this},tpl:SYNO.SDS.Backup.getShareListTpl("share")}),{xtype:"syno_textfield",name:"export_dir",indent:1,fieldLabel:_T("backup","backup_dest_directory"),width:270,maxLength:32,allowBlank:!1,vtype:"backup_target"}]}]},getExportFieldsFireball:function(){return[{xtype:"syno_radio",name:"creating_action",boxLabel:SYNO.SDS.Backup.String("app","wizard_export_option_c2_fireball"),inputValue:"export",listeners:{check:function(e,t){t&&(this.action="export",this.export_method="fireball",this.updateFieldView(["export_fields_fireball"],["create_fields","relink_fields","export_fields_exunit"]))},scope:this}},{xtype:"syno_fieldset",name:"export_fields_fireball",defaults:{labelWidth:300},bwrapStyle:{padding:0},collapsible:!1,items:[{xtype:"syno_textfield",name:"export_fireball_url",fieldLabel:SYNO.SDS.Backup.String("synocloud","url"),allowBlank:!1,indent:1,width:270},{xtype:"syno_textfield",name:"export_dir_fireball",indent:1,fieldLabel:_T("backup","backup_dest_directory"),width:270,maxLength:32,allowBlank:!1,vtype:"backup_target",listeners:{enable:function(e,t){this.updateExportTarget("export_dir_fireball")},scope:this}}]}]},getExportFields:function(){var e=[];return e=(e=e.concat(this.getExportFieldsExunit())).concat(this.getExportFieldsFireball())},displayExportOption:function(e){this.get(0).items.each((function(t){"creating_action"===t.name&&"export"===t.inputValue&&(!0===e?(t.show(),t.enable()):(t.hide(),t.disable()))}),this),this.doLayout()},updateFieldView:function(e,t){var a=t.indexOf("export_fields");0<=a&&t.splice(a,1,"export_fields_exunit","export_fields_fireball"),this.callParent(arguments)},updateExportShareStore:function(){this.getExportShareStore().load({scope:this,callback:function(e,t,a){this.updateExportTarget("export_dir"),Ext.each(e,(function(e,t){var a=e.get("share");a.startsWith("synology_cloud_export_share")&&this.getForm().findField("export_share").setValue(a)}),this)}})},checkFireball:function(){var e=this.getParams();delete e.isDestEncShare,delete e.clientEncrypt,e.fireball_url=this.getForm().findField("export_fireball_url").getValue(),this.owner.setStatusBusy(),this.sendWebAPI({api:"SYNO.Backup.Repository",version:1,method:"mount_fireball",params:e,scope:this,callback:function(e,t,a){this.owner.clearStatusBusy(),e?this.checkExportDest():this.owner.getMsgBox().alert(_T("leaf","backup"),SYNO.SDS.Backup.GetErrorString(t.code))}})},updateExportTarget:function(e){if(!this.getForm().findField(e).isDirty()){var t=Ext.apply(this.owner.getParams(),this.getParams());delete t.isDestEncShare,delete t.clientEncrypt,this.owner.setStatusBusy(),this.sendWebAPI({api:"SYNO.Backup.Target",version:1,method:"get_candidate_dir",encryption:SYNO.SDS.Backup.Util.getEncryption(["pwd","secret","remote_refresh_token","remote_access_token"],t),params:t,scope:this,callback:function(t,a,i){this.owner.clearStatusBusy(),t?this.getForm().findField(e).setValue(a.candidate_dir):this.owner.getMsgBox().alert(_T("leaf","backup"),SYNO.SDS.Backup.GetErrorString(a.code))}})}},getParams:function(){var e=this.callParent();e.transfer_type=this.transfer_type,e.key=this.key,e.secret=this.secret,e.tenant_id=this.tenant_id,e.region=this.region;var t=Ext.urlDecode(location.search.substr(1)).everest;if(-1<["c2test","c2testdaily"].indexOf(t)?e.remote_url=String.format("https://api.{0}.c2test.synology.com",e.region):"c2staging"===t?e.remote_url=String.format("https://api.{0}.c2.c2go.dev",e.region):"insecure"===t&&(e.verify_cert=!1),"export"==this.action){var a=this.getForm().getFieldValues();"exunit"===this.export_method?(e.share=a.export_share,e.target_id=a.export_dir):"fireball"===this.export_method&&(Ext.isEmpty(a.export_fireball_url)||(e.dest=a.export_fireball_url),e.share="/mnt/synology_cloud_export_share",e.target_id=a.export_dir_fireball),e.target_id+=".hbk"}return e},checkExportDest:function(){var e=Ext.apply(this.owner.getParams(),this.getParams());delete e.isDestEncShare,delete e.clientEncrypt;var t=Ext.apply({},e),a=Ext.apply({},e),i=Ext.apply({},e);i.transfer_type="local",this.owner.setStatusBusy(),this.sendWebAPI({compound:{stopwhenerror:!1,mode:"parallel",params:[{api:"SYNO.Backup.Repository",version:1,method:"get",encryption:SYNO.SDS.Backup.Util.getEncryption(["pwd","secret","remote_refresh_token","remote_access_token"],e),params:Ext.apply(t,{additional:["is_usb_share","support_compression","support_app_share","support_error_detect","support_detect_time_limit","support_version_file_log"]})},{api:"SYNO.Backup.Target",version:1,method:"get",encryption:SYNO.SDS.Backup.Util.getEncryption(["pwd","secret","remote_refresh_token","remote_access_token"],e),params:Ext.apply(a,{additional:["relinkable","task_config"]})},{api:"SYNO.Backup.Target",version:1,method:"get",encryption:SYNO.SDS.Backup.Util.getEncryption(["pwd","secret","remote_refresh_token","remote_access_token"],e),params:Ext.apply(i,{additional:["relinkable","task_config"]})}]},timeout:24e4,scope:this,callback:this.checkExportDestDone})},checkExportDestDone:function(e,t,a){this.owner.clearStatusBusy();var i=t.result[0],n=t.result[1],s=t.result[2];e?i.success?(this.owner.is_usb_share=i.data.is_usb_share,this.owner.support_compression=i.data.support_compression,this.owner.support_app_share=i.data.support_app_share,this.owner.support_detect_time_limit=i.data.support_detect_time_limit,this.owner.support_error_detect=i.data.support_error_detect,this.owner.support_version_file_log=i.data.support_version_file_log,"export"===this.action?n.success?this.owner.getMsgBox().alert(_T("leaf","backup"),SYNO.SDS.Backup.GetErrorString(SYNO.SDS.Backup.ERR_TARGET_EXIST)):s.success?this.owner.getMsgBox().alert(_T("leaf","backup"),SYNO.SDS.Backup.String("error","target_exist_export_dest")):SYNO.SDS.Backup.ERR_TARGET_BROKEN===n.error.code?this.owner.getMsgBox().alert(_T("leaf","backup"),SYNO.SDS.Backup.String("error","share_exist")):SYNO.SDS.Backup.ERR_TARGET_BROKEN===s.error.code?this.owner.getMsgBox().alert(_T("leaf","backup"),SYNO.SDS.Backup.String("error","share_exist_export_dest")):SYNO.SDS.Backup.ERR_TARGET_NOT_EXIST===n.error.code&&SYNO.SDS.Backup.ERR_TARGET_NOT_EXIST===s.error.code?this.goToNextStep(this.nextId):this.owner.getMsgBox().alert(_T("leaf","backup"),SYNO.SDS.Backup.GetErrorString(n.error.code)):this.owner.getMsgBox().alert(_T("leaf","backup"),_T("error","error_error_system"))):this.owner.getMsgBox().alert(_T("leaf","backup"),SYNO.SDS.Backup.GetErrorString(i.error.code)):this.owner.getMsgBox().alert(_T("leaf","backup"),SYNO.SDS.Backup.GetErrorString(n.error.code))},getNext:function(){if(!this.getForm().isValid())return!1;var e=Ext.apply(this.owner.getParams(),this.getParams());return"create"===e.action&&this.getForm().findField("target_id").getValue()===this.default_target?(this.owner.support_compression=!0,this.owner.support_app_share=!0,this.owner.support_detect_time_limit=!0,this.owner.support_error_detect=!0,this.owner.support_version_file_log=!0,this.owner.loadAppParams(),this.nextId):"export"!==e.action?this.callParent(arguments):("fireball"===this.export_method?this.checkFireball():this.checkExportDest(),!1)},summary:function(e){var t=this.getParams(),a=[SYNO.SDS.Backup.String("synocloud","repo_type_name_2")];"create"!==this.action&&"relink"!==this.action||a.push(SYNO.Backup.Addon.Util.getColonConnect(_T("backup","backup_dest_directory"),t.target_id)),e.append(SYNO.SDS.Backup.String("app","backup_destination"),a)}}),Ext.ns("SYNO.Backup.Addon.base.Destination"),SYNO.Backup.Addon.base.Destination.getInfo=function(e,t){var a=[];if("rsync"===e.transferType||"rsync_ds"===e.transferType||"cloud"!==e.targetType&&"cloud_image"!==e.targetType?a=a.concat(t):(Ext.isEmpty(e.repository.remote_url)||"synocloud_swift"===e.transferType?a.push({key:_T("backup","s3_provider"),text:SYNO.Backup.Addon.Util.getString(e.stringSection,"name"),regionWebLink:e.regionWebLink}):a.push({key:SYNO.Backup.Addon.Util.getString(e.stringSection,"url"),text:e.repository.remote_url}),"exportable"===e.taskState||"importable"===e.taskState?a.push({key:_T("tree","leaf_sharefolder"),text:e.repository.share?e.repository.share:_T("common","loading")}):a=a.concat(t),a.push({key:_T("backup","backup_dest_directory"),text:e.targetId?e.targetId:_T("common","loading")})),e.isImage){a.push({id:"space",key:SYNO.SDS.Backup.String("app","space_usage"),text:e.spaceUsage?e.spaceUsage:_T("backup","calculating")});var i=e.lastDetectTime?e.lastDetectTime:_T("backup","calculating");a.push({id:"last_detect_time",key:SYNO.SDS.Backup.String("app","last_detect_time"),text:i})}return a},Ext.ns("SYNO.Backup.Addon.amazon_cloud_drive.Destination"),SYNO.Backup.Addon.amazon_cloud_drive.Destination.getInfo=function(e){var t=[];return t.push({key:SYNO.Backup.Addon.Util.getString(e.stringSection,"root_folder_name"),text:e.repository.container?e.repository.container:_T("common","loading")}),SYNO.Backup.Addon.base.Destination.getInfo(e,t)},Ext.ns("SYNO.Backup.Addon.aws_s3.Destination"),SYNO.Backup.Addon.aws_s3.Destination.getInfo=function(e){var t=[];return t.push({key:_T("backup","s3_bucket"),text:e.repository.bucket?e.repository.bucket:_T("common","loading")}),SYNO.Backup.Addon.base.Destination.getInfo(e,t)},Ext.ns("SYNO.Backup.Addon.azure_blob.Destination"),SYNO.Backup.Addon.azure_blob.Destination.getInfo=function(e){var t=[];return t.push({key:SYNO.Backup.Addon.Util.getString(e.stringSection,"container"),text:e.repository.bucket?e.repository.bucket:_T("common","loading")}),SYNO.Backup.Addon.base.Destination.getInfo(e,t)},Ext.ns("SYNO.Backup.Addon.azure_cn_blob.Destination"),SYNO.Backup.Addon.azure_cn_blob.Destination.getInfo=SYNO.Backup.Addon.azure_blob.Destination.getInfo,Ext.ns("SYNO.Backup.Addon.dropbox.Destination"),SYNO.Backup.Addon.dropbox.Destination.getInfo=function(e){var t=[];return t.push({key:SYNO.Backup.Addon.Util.getString(e.stringSection,"root_folder_name"),text:e.repository.container?e.repository.container:_T("common","loading")}),SYNO.Backup.Addon.base.Destination.getInfo(e,t)},Ext.ns("SYNO.Backup.Addon.google_drive.Destination"),SYNO.Backup.Addon.google_drive.Destination.getInfo=function(e){var t=[];return t.push({key:SYNO.Backup.Addon.Util.getString(e.stringSection,"root_folder_name"),text:e.repository.container?e.repository.container:_T("common","loading")}),SYNO.Backup.Addon.base.Destination.getInfo(e,t)},Ext.ns("SYNO.Backup.Addon.hidrive.Destination"),SYNO.Backup.Addon.hidrive.Destination.getInfo=function(e){var t=[];return t.push({key:SYNO.Backup.Addon.Util.getString(e.stringSection,"username"),text:e.repository.account?e.repository.account:_T("common","loading")}),t.push({key:SYNO.Backup.Addon.Util.getString(e.stringSection,"root_folder"),text:e.repository.share?e.repository.share:_T("common","loading")}),SYNO.Backup.Addon.base.Destination.getInfo(e,t)},Ext.ns("SYNO.Backup.Addon.hubic.Destination"),SYNO.Backup.Addon.hubic.Destination.getInfo=function(e){var t=[];return t.push({key:SYNO.Backup.Addon.Util.getString(e.stringSection,"container"),text:e.repository.container?e.repository.container:_T("common","loading")}),SYNO.Backup.Addon.base.Destination.getInfo(e,t)},Ext.ns("SYNO.Backup.Addon.ibm_softlayer.Destination"),SYNO.Backup.Addon.ibm_softlayer.Destination.getInfo=function(e){var t=[];if(Ext.isDefined(e.repository.region)){var a=SYNO.SDS.Backup.Addon.Util.Image.OpenStack.region_name_mapping([[e.repository.region]])[0][1];t.push({key:SYNO.Backup.Addon.Util.getString("openstack","region"),text:a})}return t.push({key:SYNO.Backup.Addon.Util.getString("openstack","container"),text:e.repository.bucket?e.repository.bucket:_T("common","loading")}),SYNO.Backup.Addon.base.Destination.getInfo(e,t)},Ext.ns("SYNO.Backup.Addon.legacy_aws_s3.Destination"),SYNO.Backup.Addon.legacy_aws_s3.Destination.getInfo=function(e){var t=[];return t.push({key:_T("backup","s3_bucket"),text:e.repository.bucket?e.repository.bucket:_T("common","loading")}),SYNO.Backup.Addon.base.Destination.getInfo(e,t)},Ext.ns("SYNO.Backup.Addon.legacy_azure_blob.Destination"),SYNO.Backup.Addon.legacy_azure_blob.Destination.getInfo=function(e){var t=[];return t.push({key:SYNO.Backup.Addon.Util.getString(e.stringSection,"container"),text:e.repository.bucket?e.repository.bucket:_T("common","loading")}),SYNO.Backup.Addon.base.Destination.getInfo(e,t)},Ext.ns("SYNO.Backup.Addon.legacy_hicloud_s3.Destination"),SYNO.Backup.Addon.legacy_hicloud_s3.Destination.getInfo=function(e){var t=[];return t.push({key:_T("backup","s3_bucket"),text:e.repository.bucket?e.repository.bucket:_T("common","loading")}),SYNO.Backup.Addon.base.Destination.getInfo(e,t)},Ext.ns("SYNO.Backup.Addon.legacy_local.Destination"),SYNO.Backup.Addon.legacy_local.Destination.getInfo=function(e){var t=[];return t.push({key:_T("tree","leaf_sharefolder"),text:e.repository.share?e.repository.share:_T("common","loading")}),t.push({key:_T("backup","backup_dest_directory"),text:e.targetId?e.targetId:_T("common","loading")}),SYNO.Backup.Addon.base.Destination.getInfo(e,t)},Ext.ns("SYNO.Backup.Addon.legacy_rsync.Destination"),SYNO.Backup.Addon.legacy_rsync.Destination.getInfo=function(e){var t=[];return"exportable"!==e.taskState&&"importable"!==e.taskState&&(t.push({key:SYNO.SDS.Backup.Util.isValidIPAddr(e.repository.dest)?_T("common","ip_addr"):SYNO.SDS.Backup.String("app","server_name"),text:e.repository.dest?e.repository.dest:_T("common","loading")}),t.push({key:_T("common","username"),text:e.repository.account?e.repository.account:_T("common","loading")})),t.push({key:_T("tree","leaf_sharefolder"),text:e.repository.share?e.repository.share:_T("common","loading")}),t.push({key:_T("backup","backup_dest_directory"),text:e.targetId?e.targetId:_T("common","loading")}),SYNO.Backup.Addon.base.Destination.getInfo(e,t)},Ext.ns("SYNO.Backup.Addon.legacy_rsync_ds.Destination"),SYNO.Backup.Addon.legacy_rsync_ds.Destination.getInfo=SYNO.Backup.Addon.legacy_rsync.Destination.getInfo,Ext.ns("SYNO.Backup.Addon.legacy_sfr_s3.Destination"),SYNO.Backup.Addon.legacy_sfr_s3.Destination.getInfo=function(e){var t=[];return t.push({key:_T("backup","s3_bucket"),text:e.repository.bucket?e.repository.bucket:_T("common","loading")}),SYNO.Backup.Addon.base.Destination.getInfo(e,t)},Ext.ns("SYNO.Backup.Addon.local.Destination"),SYNO.Backup.Addon.local.Destination.getInfo=function(e){var t=[];return t.push({key:_T("tree","leaf_sharefolder"),text:e.repository.share?e.repository.share:_T("common","loading")}),t.push({key:_T("backup","backup_dest_directory"),text:e.targetId?e.targetId:_T("common","loading")}),t.push({id:"owner_name",key:SYNO.SDS.Backup.String("app","owner"),text:e.ownerName?e.ownerName:_T("common","loading")}),SYNO.Backup.Addon.base.Destination.getInfo(e,t)},Ext.ns("SYNO.Backup.Addon.openstack.Destination"),SYNO.Backup.Addon.openstack.Destination.getInfo=function(e){var t=[];if(Ext.isDefined(e.repository.auth_version)&&"1.0"!==e.repository.auth_version){var a=SYNO.SDS.Backup.Addon.Util.Image.OpenStack.region_name_mapping([[e.repository.region]])[0][1];t.push({key:SYNO.Backup.Addon.Util.getString(e.stringSection,"region"),text:a})}return t.push({key:SYNO.Backup.Addon.Util.getString(e.stringSection,"container"),text:e.repository.bucket?e.repository.bucket:_T("common","loading")}),SYNO.Backup.Addon.base.Destination.getInfo(e,t)},Ext.ns("SYNO.Backup.Addon.rackspace.Destination"),SYNO.Backup.Addon.rackspace.Destination.getInfo=function(e){var t=[];if(Ext.isDefined(e.repository.region)){var a=SYNO.SDS.Backup.Addon.Util.Image.OpenStack.region_name_mapping([[e.repository.region]])[0][1];t.push({key:SYNO.Backup.Addon.Util.getString("openstack","region"),text:a})}return t.push({key:SYNO.Backup.Addon.Util.getString("openstack","container"),text:e.repository.bucket?e.repository.bucket:_T("common","loading")}),SYNO.Backup.Addon.base.Destination.getInfo(e,t)},Ext.ns("SYNO.Backup.Addon.remote.Destination"),SYNO.Backup.Addon.remote.Destination.getInfo=function(e){var t=[];return"exportable"!==e.taskState&&"importable"!==e.taskState&&(t.push({key:SYNO.SDS.Backup.Util.isValidIPAddr(e.repository.dest)?_T("common","ip_addr"):SYNO.SDS.Backup.String("app","server_name"),text:e.repository.dest?e.repository.dest:_T("common","loading")}),t.push({key:_T("common","username"),text:e.repository.account?e.repository.account:_T("common","loading")})),Ext.isEmpty(e.repository.volume)?(t.push({key:_T("tree","leaf_sharefolder"),text:e.repository.share?e.repository.share:_T("common","loading")}),t.push({key:_T("backup","backup_dest_directory"),text:e.targetId?e.targetId:_T("common","loading")})):(t.push({key:SYNO.SDS.Backup.String("app","volume"),text:SYNO.SDS.Backup.String("app","volume")+" "+e.repository.volume.substring(7)}),t.push({key:SYNO.SDS.Backup.String("app","id"),text:e.targetId?e.targetId:_T("common","loading")})),SYNO.Backup.Addon.base.Destination.getInfo(e,t)},Ext.ns("SYNO.Backup.Addon.rsync.Destination"),SYNO.Backup.Addon.rsync.Destination.getInfo=function(e){var t=[];return"exportable"!==e.taskState&&"importable"!==e.taskState&&(t.push({key:SYNO.SDS.Backup.Util.isValidIPAddr(e.repository.dest)?_T("common","ip_addr"):SYNO.SDS.Backup.String("app","server_name"),text:e.repository.dest?e.repository.dest:_T("common","loading")}),t.push({key:_T("common","username"),text:e.repository.account?e.repository.account:_T("common","loading")})),t.push({key:_T("tree","leaf_sharefolder"),text:e.repository.share?e.repository.share:_T("common","loading")}),t.push({key:_T("backup","backup_dest_directory"),text:e.targetId?e.targetId:_T("common","loading")}),SYNO.Backup.Addon.base.Destination.getInfo(e,t)},Ext.ns("SYNO.Backup.Addon.rsync_ds.Destination"),SYNO.Backup.Addon.rsync_ds.Destination.getInfo=SYNO.Backup.Addon.rsync.Destination.getInfo,Ext.ns("SYNO.Backup.Addon.webdav.Destination"),SYNO.Backup.Addon.webdav.Destination.getInfo=function(e){var t=[];return t.push({key:SYNO.Backup.Addon.Util.getString(e.stringSection,"username"),text:e.repository.account?e.repository.account:_T("common","loading")}),t.push({key:SYNO.Backup.Addon.Util.getString(e.stringSection,"root_folder"),text:e.repository.bucket?e.repository.bucket:_T("common","loading")}),SYNO.Backup.Addon.base.Destination.getInfo(e,t)},Ext.ns("SYNO.Backup.Addon.sfr_s3.Destination"),SYNO.Backup.Addon.sfr_s3.Destination.getInfo=function(e){var t=[];return t.push({key:_T("backup","s3_bucket"),text:e.repository.bucket?e.repository.bucket:_T("common","loading")}),SYNO.Backup.Addon.base.Destination.getInfo(e,t)},Ext.ns("SYNO.Backup.Addon.hicloud_s3.Destination"),SYNO.Backup.Addon.hicloud_s3.Destination.getInfo=function(e){var t=[];return t.push({key:_T("backup","s3_bucket"),text:e.repository.bucket?e.repository.bucket:_T("common","loading")}),SYNO.Backup.Addon.base.Destination.getInfo(e,t)},Ext.ns("SYNO.Backup.Addon.jdcloud_s3.Destination"),SYNO.Backup.Addon.jdcloud_s3.Destination.getInfo=function(e){var t=[];return t.push({key:_T("backup","s3_bucket"),text:e.repository.bucket?e.repository.bucket:_T("common","loading")}),SYNO.Backup.Addon.base.Destination.getInfo(e,t)},Ext.ns("SYNO.Backup.Addon.synocloud.Destination"),SYNO.Backup.Addon.synocloud.Destination.RegionMapping=function(e){var t={eu:_T("Country","EU"),us:_T("Country","US"),tw:_T("Country","TW")};return e in t?t[e]:""},SYNO.Backup.Addon.synocloud.Destination.getInfo=function(e){var t=[];if(Ext.isDefined(e.repository.region)){var a=SYNO.Backup.Addon.synocloud.Destination.RegionMapping(e.repository.region);""!==a&&t.push({key:SYNO.Backup.Addon.Util.getString("synocloud","region"),text:a})}return SYNO.Backup.Addon.base.Destination.getInfo(e,t)},Ext.ns("SYNO.Backup.Addon.Util"),SYNO.Backup.Addon.Util.getInfo=function(e){var t=SYNO.Backup.Addon.Config.addon_list,a=t[0];return Ext.each(t,(function(t,i,n){e===t.id&&(a=t)})),a},SYNO.Backup.Addon.Util.getInfoByTargetAndTransfer=function(e,t){var a=SYNO.Backup.Addon.Config.addon_list,i={};return Ext.each(a,(function(a,n,s){e===a.target_type&&t===a.transfer_type&&(i=a)})),i},SYNO.Backup.Addon.Util.getID=function(e,t){var a=SYNO.Backup.Addon.Config.addon_list,i="";return Ext.each(a,(function(a,n,s){e===a.target_type&&t===a.transfer_type&&(i=a.id)})),i},SYNO.Backup.Addon.Util.getClass=function(e,t){var a=String.format("SYNO.Backup.Addon.{0}.{1}",e,t);return Ext.getClassByName(a)},SYNO.Backup.Addon.Util.getFunc=function(e,t){if(SYNO.Backup.Addon[e]){var a,i=SYNO.Backup.Addon[e],n=t.split(".");if(0!==n.length){for(var s=0;s<n.length;s++){if(!(a=i[n[s]]))return;i=a}return i}}},SYNO.Backup.Addon.Util.getString=function(e,t){return"azure_blob"===e&&(e="azure"),SYNO.SDS.Backup.String(e,t)},SYNO.Backup.Addon.Util.getOathWindowParams=function(e){if(!Ext.isObject(e)||!Ext.isObject(e.oauth))return null;var t=e.oauth.url,a=e.oauth.client_id,i=e.oauth.redirect,n=SYNO.Backup.Util.getPkgVersion(),s=window.location.origin;s||(s=window.location.protocol+"//"+window.location.host);return{url:String.format(t,a,i,s,n),specs:"width=1264, height=835"}},SYNO.Backup.Addon.Util.getColonConnect=function(e,t){return e+_T("common","colon")+t};