File: /volume1/@appstore/HyperBackup/ui/util.js
/* Copyright (c) 2026 Synology Inc. All rights reserved. */
Ext.ns("SYNO.SDS.Backup"),SYNO.SDS.Backup.String=function(e,r){return _TT("SYNO.SDS.Backup.Application",e,r)||_TT("SYNO.SDS.Backup.ScheduleBackupWidget",e,r)||_TT("SYNO.SDS.Backup.Client.Explore.AppInstance",e,r)||_TT("SYNO.SDS.Backup.Client.JobTray.AppInstance",e,r)||_TT("SYNO.SDS.Backup.Client.Fuse.Utils.bundleLaunchFn",e,r)},SYNO.SDS.Backup.NoteStyleString=function(e,r){return SYNO.SDS.Backup.StringToNoteStyle(_TT("SYNO.SDS.Backup.Application",e,r))},SYNO.SDS.Backup.StringToNoteStyle=function(e){return'<span class="syno-ux-note">'+_T("common","note")+": </span>"+e},SYNO.SDS.Backup.getAppIconPath=function(e,r){return SYNO.API.GetBaseURL({api:"SYNO.Backup.App",method:"get_icon",version:1,params:{app_name:e,app_version:r}})},SYNO.SDS.Backup.createTimeItemStore=function(e){var r=[],t={hour:24,min:60,sec:60};if(e in t){for(var n=0;n<t[e];n++)r.push([n,String.leftPad(String(n),2,"0")]);return new Ext.data.SimpleStore({id:0,fields:["value","display"],data:r})}return null},SYNO.SDS.Backup.convertAppError=function(e,r){if(-1===e)return r;switch(e){case 7:return _T("backup","app_err_install");case 8:return SYNO.SDS.Backup.String("app","broken_app");case 9:return _T("pkgmgr","pkgmgr_pkg_stop_failed");case 10:return _T("pkgmgr","pkgmgr_pkg_start_failed");case 12:return _T("backup","err_connect");case 13:return SYNO.SDS.Backup.String("error","app_network_disconnected");case 15:return _T("backup","err_server_name");case 16:return _T("backup","imgbkp_account_pass_fail");case 17:return _T("netbackup","err_share_perm_denied");case 18:return _TT("SYNO.SDS.Backup.Application","error","err_ip_denied");case 19:return _T("backup","err_serivce_disable");case 20:return SYNO.SDS.Backup.String("error","client_no_space");case 21:return _T("backup","app_err_no_volume");case 23:return SYNO.SDS.Backup.String("app","app_version_old");case 25:return SYNO.SDS.Backup.String("error","app_err_no_version_found");case 26:return _T("usbbackup","usbbkp_cancel");case 27:return _T("pkgmgr","broken_desc");case 31:return SYNO.SDS.Backup.String("app","restore_version_old");case 32:case 34:return SYNO.SDS.Backup.String("app","dependent_app_is_not_available");case 33:return SYNO.SDS.Backup.String("app","not_support_new_framework");case 41:return SYNO.SDS.Backup.String("app","app_install_conflict");default:return _T("backup","restore_fail")}},SYNO.SDS.Backup.convertDisabledShareType=function(e,r){var t=SYNO.SDS.Backup.Util.htmlEncodeTip,n=SYNO.SDS.Backup.String,a=String.format,i="<div ext:qtip=",S='class="x-combo-list-item syno-backup-disabled-list-item"';switch(e){case 0:return i+'"'+t(r)+'" class="x-combo-list-item syno-backup-enabled-list-item"';case 1:return i+'"'+t(_T("backup","repo_already_exist"))+'"'+S;case 2:return i+'"'+t(a(n("app","disabled_share_unsupported_fs"),r))+'"'+S;case 3:return i+'"'+t(a(n("app","disabled_share_default"),r))+'"'+S;case 4:return i+'"'+t(a(n("app","disabled_share_unmounted_enc"),r))+'"'+S;case 5:return i+'"'+t(a(n("app","disabled_share_NA"),r))+'"'+S;case 6:return i+'"'+t(a(n("app","disabled_share_ro"),r))+'"'+S;case 7:return i+'"'+t(a(n("app","disabled_share_vol_ro"),r))+'"'+S;case 8:return i+'"'+t(a(n("app","disabled_share_tiering_share"),r))+'"'+S;case 9:return i+'"'+t(a(n("app","disabled_share_tiering_share_cold_tier"),r))+'"'+S;default:return i+'"'+t(a(n("app","disabled_share_unknown"),r))+'"'+S}},SYNO.SDS.Backup.getShareListTpl=function(e){return'<tpl for=".">{[SYNO.SDS.Backup.convertDisabledShareType(values.status, values.share)]}>{'+e+":htmlEncode}</div></tpl>"},SYNO.SDS.Backup.ConvertConflictIdToUniqueId=function(e){var r=e.split("/");return 2<=r.length&&(r[1]+="%!enc!%"),r.join("/")},SYNO.SDS.Backup.ConvertUniqueIdToConflictId=function(e){var r=e.split("/");return 2<=r.length&&(r[1]=r[1].replace(/%!enc!%$/,"")),r.join("/")},SYNO.SDS.Backup.getTreeNodeByCaseId=function(e,r){var t=r.toUpperCase(),n=SYNO.SDS.Backup.ConvertConflictIdToUniqueId(r).toUpperCase(),a="",i="";for(var S in e.nodeHash)S.toUpperCase()===t?a=S:S.toUpperCase()===n&&(i=S);return Ext.isEmpty(a)||Ext.isEmpty(i)?Ext.isEmpty(a)?Ext.isEmpty(i)?void 0:e.nodeHash[i]:e.nodeHash[a]:e.nodeHash[i].getUI().getCheckValue()?e.nodeHash[i]:e.nodeHash[a].getUI().getCheckValue()?e.nodeHash[a]:e.nodeHash[i]},SYNO.SDS.Backup.getDepentApps=function(e,r){var t=[],n=e.getById(r);return n&&n.get("depend")&&n.get("depend").app_bkp_list?(Ext.each(n.get("depend").app_bkp_list,(function(r){if(!(0<t.indexOf(r))){t.push(r);var n=SYNO.SDS.Backup.getDepentApps(e,r);t.push.apply(t,n)}})),SYNO.ux.Utils.uniqueApiArray(t).sort()):[]},SYNO.SDS.Backup.getAppsDependOnThis=function(e,r){var t=[];return Ext.each(e.data.items,(function(n){if(!n||!n.get("depend")||!n.get("depend").app_bkp_list)return[];Ext.each(n.get("depend").app_bkp_list,(function(a){if(!(a!==r||0<t.indexOf(a))){var i=n.get("id");t.push(i);var S=SYNO.SDS.Backup.getAppsDependOnThis(e,i);t.push.apply(t,S)}}))})),SYNO.ux.Utils.uniqueApiArray(t).sort()},SYNO.SDS.Backup.getSharesDependOn=function(e,r){var t=SYNO.SDS.Backup.getDepentApps(e,r);t.push(r);var n=[];return Ext.each(t,(function(r){var t=e.getById(r);t&&t.get("depend").folder_list&&Ext.each(t.get("depend").folder_list,(function(e){n.push(SYNO.SDS.Backup.getShareName(e.folder))}))})),SYNO.ux.Utils.uniqueApiArray(n).sort()},SYNO.SDS.Backup.getAppDisplayName=function(e,r){var t=[];return Ext.each(r,(function(r){var n=e.getById(r);n?t.push(n.get("name")):t.push(r)}),this),t},SYNO.SDS.Backup.setAppGridDependency=function(e,r,t,n){e.isBackup=t,Ext.each(e.getStore().data.items,(function(a){if(t&&a.set("disabled",!1),(a.get("app_custom_err_msg")||a.get("error_session")&&a.get("error_key"))&&(a.set("disabled",!0),n&&"not_support_new_framework"===a.get("error_key")||a.set("checked",!1)),a.get("depend")&&a.get("depend").folder_list){var i=!1,S=[],p=null,_=SYNO.SDS.Backup.getSharesDependOn(e.getStore(),a.get("id"));Ext.each(_,(function(n){var _=SYNO.SDS.Backup.getTreeNodeByCaseId(r,"/"+n);if(!_||!_.attributes||_.attributes.disabled)return Ext.isDefined(_)&&Ext.isDefined(_.attributes)&&Ext.isDefined(_.attributes.read_only_owner)&&(p=_.attributes.read_only_owner),i=!0,S.push(n),!0;void 0===_.dependAppRows&&(_.dependAppRows=[]),_.isBackup=t,_.dependGrid=e,_.dependAppRows.push(a)})),i&&(p&&a.set("read_only_owner",p),0!==S.length&&(a.get("depend").invalid_shares=S),"1"!==_D("appbkp_skip_share")&&a.set("disabled",!0),a.set("checked",!1))}})),e.getStore().sort([{field:"disabled",direction:"ASC"},{field:"name",direction:"ASC"}])},SYNO.SDS.Backup.setAppDependency=function(e){var r=function(e,r){r?!0===e.attributes.is_app&&Ext.each(e.attributes.dataNodes,(function(e){e.getUI().isDisabled()?(e.disabled=!1,e.getUI().setCheckValue(!0),e.disabled=!0,e.getUI().syncCheckCssClass()):e.getUI().setCheckValue(!0)})):(Ext.each(e.attributes.appNodes,(function(e){e.getUI().setCheckValue(!1)})),!0===e.attributes.is_app&&Ext.each(e.attributes.dataNodes,(function(e){e.getUI().isDisabled()&&(e.disabled=!1,e.getUI().setCheckValue(!1),e.disabled=!0,e.getUI().syncCheckCssClass())}))),!0===e.attributes.is_app&&e.expand(!0)},t=function(e,n,a,i){var S=n.getUI()||{};Ext.isFunction(S.getCheckValue)&&S.checkbox&&void 0!==a.attributes.checked&&(!0===n.attributes.is_app?(!0===n.disabled&&a.disable(),!1===S.getCheckValue()&&void 0!==a.attributes.checked&&(a.attributes.checked=!1),SYNO.SDS.Backup.setAppDependency.call(this,a)):a.attributes.appNodes=n.attributes.appNodes,a.attributes.dataNodes=n.attributes.dataNodes,a.on("checkchange",r),a.on("append",t))};if(e.attributes.depend){var n=[];Ext.each(e.attributes.depend.shares,(function(e){n.push("/"+e)})),Ext.each(e.attributes.depend.nodes,(function(e){n.push(e)})),Ext.each(n,(function(n){var a=this.getNodeById(n);if(void 0===a)return!0;void 0===a.attributes.appNodes&&(a.attributes.appNodes=[]),a.attributes.appNodes.push(e),a.on("checkchange",r,this),a.on("append",t,this),void 0===e.attributes.dataNodes&&(e.attributes.dataNodes=[]),e.attributes.dataNodes.push(a)}),this),e.on("checkChange",r,this),e.on("append",t,this)}},SYNO.SDS.Backup.getReadOnlyOwnerString=function(e){switch(e){case"ddsm":return _TT("SYNO.SDS.Docker.Application","ddsm","docker_dsm");case"surveillance":return _T("backup","surveillance_station")}return e},SYNO.SDS.Backup.ConverSize=function(e,r){e=e||0,r=r||0;var t=1024,n=1048576,a=1073741824,i=1099511627776,S=parseFloat(e);return isNaN(S)?e:(e=S)>=0&&e<t?e.toFixed(r)+" B":e>=t&&e<n?(e/t).toFixed(r)+" KB":e>=n&&e<a?(e/n).toFixed(r)+" MB":e>=a&&e<i?(e/a).toFixed(r)+" GB":(e/i).toFixed(r)+" TB"},Ext.define("SYNO.SDS.Backup.HostCombobox",{extend:"SYNO.ux.ComboBox",constructor:function(e){Ext.copyTo(this,e,"appWindow,owner"),!this.appWindow&&this.owner&&(this.appWindow=this.owner.findAppWindow()),this.callParent([Ext.apply({allowBlank:!1,fieldLabel:_T("netbackup","netbkp_set_ip"),emptyText:_T("netbackup","netbkp_input_addr"),editable:!0,store:new SYNO.API.Store({api:"SYNO.Core.Findhost",version:1,method:"list",appWindow:this.appWindow||!1,autoLoad:!1,autoDestroy:!0,reader:new Ext.data.JsonReader({idProperty:"ip",fields:["hostname","ip"]}),sortInfo:{field:"hostname",direction:"ASC"},listeners:{beforeload:this.onStoreBeforeLoad,load:this.onStoreLoad,exception:this.onStoreLoadException,clear:this.onStoreClear,scope:this}}),validator:function(e){return SYNO.SDS.Backup.Util.isHostnameValid(e,!0)},valueField:"ip",displayField:"hostname",triggerAction:"all",mode:"local",tpl:'<tpl for="."><div ext:qtip="{hostname:htmlEncode}({ip})" class="x-combo-list-item">{hostname:htmlEncode}({ip})</div></tpl>'},e)]),this.requestSelfNetInfo()},onTriggerClick:function(){this.readOnly||this.disabled||(!0!==this.isStoreLoaded&&this.getStore().load(),this.callParent(arguments))},onStoreBeforeLoad:function(){this.owner&&this.owner.setStatusBusy()},onStoreLoad:function(){this.owner&&this.owner.clearStatusBusy(),this.isStoreLoaded=!0},onStoreLoadException:function(e,r,t,n,a,i){this.owner?this.owner.getMsgBox().alert(_T("leaf","backup"),SYNO.SDS.Backup.GetErrorString(a.code),(function(){this.owner.close()}),this):alert(SYNO.SDS.Backup.GetErrorString(a.code)),delete this.isStoreLoaded},onStoreClear:function(e,r){delete this.isStoreLoaded},getHostAddress:function(){var e=this.getRawValue().trim();return SYNO.SDS.Backup.Util.getHostAddress(e,!0)},requestSelfNetInfo:function(){this.owner.sendWebAPI({api:"SYNO.Core.System",method:"info",version:1,params:{type:"network"},callback:this.onQueryHostnameDone,scope:this})},onQueryHostnameDone:function(e,r,t){var n=[];e&&void 0!==r&&Ext.isArray(r.nif)&&(this.selfHostName=r.hostname.toLowerCase(),Ext.each(r.nif,(function(e){n.push(e.addr),Ext.isArray(e.ipv6)&&Ext.each(e.ipv6,(function(e){n.push(e.addr)}))})),this.selfIPs=n)}}),SYNO.SDS.Backup.converLanString=function(){var e=/^[.a-zA-Z0-9_-]+(:[a-zA-Z0-9_-]+){1,2}$/;return function(r){var t;return e.test(r)?2===(t=r.split(":")).length?_T(t[0],t[1]):_TT(t[0],t[1],t[2]):""}}(),Ext.namespace("SYNO.SDS.Backup.Util"),SYNO.SDS.Backup.Util.isValidIPAddr=function(e){return!(!Ext.isString(e)||!e.match(/^(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)$/))},SYNO.SDS.Backup.Util.getSelfNetworkInfo=async function(){const e=await synowebapi.promises.request({api:"SYNO.Core.System",method:"info",version:1,params:{type:"network"}});let r=[];if(void 0===e||!Ext.isArray(e.nif))return void SYNO.Debug.error("Fail to get self network info.");const t=e.hostname.toLowerCase();return Ext.each(e.nif,(function(e){r.push(e.addr),Ext.isArray(e.ipv6)&&Ext.each(e.ipv6,(function(e){r.push(e.addr)}))})),{selfIPs:r,selfHostName:t}},SYNO.SDS.Backup.Util.IPLookup=async function(e){return(await synowebapi.promises.request({api:"SYNO.Backup.Target",method:"ip_lookup",version:1,params:{ip_or_addr:e}})).ip},SYNO.SDS.Backup.Util.isDestIPValid=function(e,r,t,n){if(!Ext.isArray(r)||!r.length||""===n)return!1;return!(e.toLowerCase()===n||r&&-1!==r.indexOf(t))},SYNO.SDS.Backup.Util.isHostnameValid=function(e,r){return e.toLowerCase().match(/^(localhost|127\.0\.0\.1|0\.0\.0\.0|::1|0:0:0:0:0:0:0:1)$/)?SYNO.SDS.Backup.String("app","connect_self_ip"):Ext.form.VTypes.url(e)?SYNO.SDS.Backup.String("validator","host_no_url"):!Ext.isEmpty(SYNO.SDS.Backup.Util.getHostAddress(e,r))||_T("netbackup","netbkp_err_host_str")},SYNO.SDS.Backup.Util.getHostAddress=function(e,r){var t=e.indexOf("("),n=e.indexOf(")");if(r&&0<t&&t<n&&n===e.length-1){var a=e.substring(0,t),i=e.substring(t+1,n);return Ext.form.VTypes.ip(i)?i:Ext.form.VTypes.netbiosName(a)||Ext.form.VTypes.hostname(a)&&!Ext.form.VTypes.ip(a)?a:""}return Ext.form.VTypes.netbiosName(e)||Ext.form.VTypes.hostname(e)||Ext.form.VTypes.ip(e)?e:""},SYNO.SDS.Backup.Util.htmlEncodeTip=function(e){var r=Ext.util.Format.htmlEncode(e);return Ext.util.Format.htmlEncode(r)},SYNO.SDS.Backup.Util.lengthEllipsis=function(e,r,t){return'<span ext:qtip="'+SYNO.SDS.Backup.Util.htmlEncodeTip(e)+'">'+Ext.util.Format.ellipsis(Ext.util.Format.htmlEncode(e),r,t)+"</span>"},SYNO.SDS.Backup.Util.widthEllipsis=function(e,r){return'<span ext:qtip="'+SYNO.SDS.Backup.Util.htmlEncodeTip(e)+'" style="overflow: hidden; text-overflow: ellipsis; display: inline-block; white-space: nowrap; width: '+r+'px">'+Ext.util.Format.htmlEncode(e)+"</span>"},SYNO.SDS.Backup.Util.isRecycleBinFolder=function(e){if(!e)return!1;var r=e.split("/",7);return 3===r.length&&"#recycle"===r[2]||4===r.length&&"homes"===r[1]&&"#recycle"===r[3]||6===r.length&&"homes"===r[1]&&"#recycle"===r[5]},SYNO.SDS.Backup.Util.comboboxLoadData=function(e,r,t,n){var a=[];return Ext.each(r,(function(e){Ext.isDefined(t)&&Ext.isDefined(n)?a.push([e[t],e[n]]):Ext.isDefined(t)?a.push([e[t]]):a.push([e])})),e.getStore().loadData(a,!1),a.length>0?(e.setValue(a[0][0]),!0):(e.setValue(""),!1)},SYNO.SDS.Backup.Util.getEncryption=function(e,r){return Ext.isArray(e)?e.filter((function(e){return r.hasOwnProperty(e)})):[]},SYNO.SDS.Backup.Util.asyncAlert=async function(e,r,t){if(e&&e.alert)return new Promise((n=>{e.alert(r,t,(()=>{n()}))}))},SYNO.SDS.Backup.getStatusIcon=function(e,r,t,n,a){if("exportable"===e)return"backup"===r||"waiting"===r?"exporting":"suspending"===r?"suspending":"discarding"===r?"discarding":"discard_failed"===r||"cancel"===t||"canceling"===r||"failed"===t?"failed":"suspend"===t?"suspend":"canexport";if("importable"===e)return"none"===r?"canrelink":"canceling"===r?"relinkfailed":"relinking";if("relinkable"===e)return"relink"===r||"relink_waiting"===r?"relinking":"backup"===r?"backingup":"waiting"===r?"waiting":"relinkfailed";if("backupable"===e){if("backup"===r)return"backingup"===a?"backingup":"resuming"===a?"resuming":"waiting-server"===a?"waiting-server":"backingup";if("waiting"===r)return"waiting";if("suspending"===r)return"suspending";if("discarding"===r)return"discarding";if("wait_discard"===r||"wait_version_delete"===r)return"check";if("version_deleting"===r)return"version-deleting";if("preparing_version_delete"===r)return"waiting";if("discard_failed"===r||"cancel"===t||"canceling"===r||"failed"===t)return"failed";if("suspend"===t)return"suspend";if("partial"===t)return!0===n?"none":"partial";if("cksum_failed"===t)return"partial";if("dest_missing"===t)return"failed";if("success"===t||"done"===t)return!0===n?"none":"successful";if("failed_checking"===t||"backingup"===t||"resuming"===t)return"check";if("version_delete_failed"===t)return"version-delete-failed";if("none"===t)return"none"}else{if("unauth"===e||"endofservice"===e)return"authfailed";if("error_detect"===e)return"errordetect";if("broken"===e)return"deleting"===r?"deleting":"failed";if("restore_only"===e)return"restoreonly";if("rbd_service_requires_reboot"==e)return"suspend"}return"failed"},SYNO.SDS.Backup.getStatusText=function(e,r,t,n,a){return"exportable"===e?"backup"===r||"waiting"===r?[SYNO.SDS.Backup.String("app","do_export"),!0]:"suspending"===r?[SYNO.SDS.Backup.String("app","task_status_suspending"),!0]:"discarding"===r?[SYNO.SDS.Backup.String("app","task_status_discarding"),!0]:"discard_failed"===r?[SYNO.SDS.Backup.String("app","task_status_discard"),!1]:"canceling"===r?[SYNO.SDS.Backup.String("app","backup_do_cancel"),!0]:"none"===t||!0===n?[SYNO.SDS.Backup.String("app","exportable"),!1]:[SYNO.SDS.Backup.GetBkpResultStr(t),!1]:"importable"===e?"none"===r?[SYNO.SDS.Backup.String("app","relinkable"),!1]:"canceling"===r?[SYNO.SDS.Backup.String("app","relink_do_cancel"),!1]:[SYNO.SDS.Backup.String("app","do_relink"),!0]:"relinkable"===e?"none"===r?[SYNO.SDS.Backup.String("app","relinkable"),!1]:"canceling"===r?[SYNO.SDS.Backup.String("app","relink_do_cancel"),!1]:"backup"===r?[SYNO.SDS.Backup.String("app","netbkp_backuping"),!0]:"waiting"===r||"relink_waiting"===r?[SYNO.SDS.Backup.String("app","waiting"),!0]:[SYNO.SDS.Backup.String("app","do_relink"),!0]:"backupable"===e?"backup"===r?"backingup"===a?[SYNO.SDS.Backup.String("app","netbkp_backuping"),!0]:"resuming"===a?[SYNO.SDS.Backup.String("app","task_status_resuming"),!0]:"waiting-server"===a?[SYNO.SDS.Backup.String("app","waiting"),!0]:"title_preparing_backup"===a?[SYNO.SDS.Backup.String("app","preparing_backup"),!0]:[SYNO.SDS.Backup.String("app","netbkp_backuping"),!0]:"waiting"===r?[SYNO.SDS.Backup.String("app","waiting"),!0]:"suspending"===r?[SYNO.SDS.Backup.String("app","task_status_suspending"),!0]:"discarding"===r?[SYNO.SDS.Backup.String("app","task_status_discarding"),!0]:"discard_failed"===r?[SYNO.SDS.Backup.String("app","task_status_discard"),!1]:"wait_discard"===r?[SYNO.SDS.Backup.String("app","task_status_check"),!1]:"version_deleting"===r?[SYNO.SDS.Backup.String("app","task_status_version_deleting"),!0]:"preparing_version_delete"===r?[SYNO.SDS.Backup.String("app","waiting"),!0]:"wait_version_delete"===r?[SYNO.SDS.Backup.String("app","task_status_check"),!1]:"canceling"===r?[SYNO.SDS.Backup.String("app","backup_do_cancel"),!0]:[SYNO.SDS.Backup.GetBkpResultStr(t,n),!1]:"unauth"===e||"endofservice"===e?[SYNO.SDS.Backup.String("app","auth_failed"),!1]:"error_detect"===e?[SYNO.SDS.Backup.String("app","task_status_detecting"),!0]:"broken"===e?"deleting"===r?[SYNO.SDS.Backup.String("app","deleting"),!0]:[SYNO.SDS.Backup.String("app","crashed"),!1]:"restore_only"===e?[SYNO.SDS.Backup.String("app","restore_only"),!1]:"rbd_service_requires_reboot"==e?[SYNO.SDS.Backup.String("app","system_restart_is_required"),!1]:"does_not_support_entire_dsm_backup"==e?[SYNO.SDS.Backup.String("app","not_support_backing_up_entire_system"),!1]:[_T("usbbackup","usbbkp_error"),!1]},SYNO.SDS.Backup.getStatusSubText=function(e,r,t,n,a,i){if("exportable"===e||"backupable"===e||"importable"===e){if("discard_failed"===r||("none"===r||"restore"===r)&&("failed"===t||"partial"===t&&!0!==i||"suspend"===t||"tierfs_busy"===t)){if(""!==a)return SYNO.SDS.Backup.converLanString(a);if(void 0!==n&&SYNO.SDS.Backup.ERR_INTERNAL_ERROR!==n)return SYNO.SDS.Backup.GetErrorString(n)}else if("cksum_failed"===t)return SYNO.SDS.Backup.converLanString(a)}else if("relinkable"===e){if(("canceling"===r||"none"===r)&&""!==a)return SYNO.SDS.Backup.converLanString(a)}else if("broken"===e){if("deleting"!==r&&""!==a)return SYNO.SDS.Backup.converLanString(a)}else if("restore_only"===e){if(""!==a)return SYNO.SDS.Backup.converLanString(a);if(void 0!==n&&SYNO.SDS.Backup.ERR_INTERNAL_ERROR!==n)return SYNO.SDS.Backup.GetErrorString(n)}else if("rbd_service_requires_reboot"==e)return SYNO.SDS.Backup.String("app","explain_why_system_restart_is_required");return"does_not_support_entire_dsm_backup"==e?SYNO.SDS.Backup.String("app","explain_why_not_support_backing_up_entire_system"):"none"},SYNO.SDS.Backup.GetBkpResultStr=function(e,r,t){return"cancel"===e?SYNO.SDS.Backup.String("app","task_status_cancel"):"suspend"===e?SYNO.SDS.Backup.String("app","task_status_suspend"):"partial"===e?!0===r?SYNO.SDS.Backup.String("app","localbkp_not_bkp"):t?SYNO.SDS.Backup.String("app","partial_success")+' (<a class="help_link" href="#" task-id="'+Ext.util.Format.htmlEncode(t)+'">'+SYNO.SDS.Backup.String("app","version_detail")+"</a>)":SYNO.SDS.Backup.String("app","partial_success"):"success"===e||"done"===e?!0===r?SYNO.SDS.Backup.String("app","localbkp_not_bkp"):SYNO.SDS.Backup.String("app","task_status_succeed"):"failed_checking"===e||"backingup"===e||"resuming"===e?SYNO.SDS.Backup.String("app","task_status_check"):"discard"===e?SYNO.SDS.Backup.String("app","task_status_discard"):"none"===e?SYNO.SDS.Backup.String("app","localbkp_not_bkp"):"version_delete_failed"===e?SYNO.SDS.Backup.String("app","task_status_version_delete_failed"):"dest_missing"===e?SYNO.SDS.Backup.String("error","status_target_broken"):"cksum_failed"===e?SYNO.SDS.Backup.String("app","attention_required"):SYNO.SDS.Backup.String("app","task_status_error")},SYNO.SDS.Backup.getShareName=function(e){if(!e)return"";var r;return-1===(r=e.indexOf("/"))?e:e.substr(0,r)},SYNO.SDS.Backup.parseAppDependFolderInfo=function(e){var r={outline:[],detail:[]};if(!e||!e.folder_list)return r;var t=[],n=[];return Ext.each(e.folder_list,(function(e){n.push(function(e){return{path:e.folder,whitelist:SYNO.Backup.Util.deepCopyObject(e.whitelist)}}(e)),t.push(SYNO.SDS.Backup.getShareName(e.folder))}),this),t=SYNO.ux.Utils.uniqueApiArray(t),r.outline=t,r.detail=n,r},Ext.ns("SYNO.Backup.Util"),SYNO.Backup.Util.HBKDisplayComboboxLoadData=function(e,r,t){var n=function(e){return".hbk"===e.slice(-4,e.length)?e.slice(0,e.lastIndexOf(".hbk")):e},a=[];return Ext.each(r,(function(e){if(Ext.isDefined(t)){var r=e[t];a.push([n(r),r])}else a.push([n(e),e])})),e.getStore().loadData(a,!1),a.length>0?(e.setValue(a[0][1]),!0):(e.emptyText=SYNO.SDS.Backup.String("app","no_target_available"),e.setValue(""),!1)},SYNO.Backup.Util.AddTip=function(e,r,t){var n=SYNO.ux.AddTip(e,r);return n.firstChild.classList.remove("ext:qtip"),new Ext.ToolTip(Ext.apply({target:n.firstChild.id,html:r,dismissDelay:5e3,floating:{shadow:!1,shim:!0,useDisplay:!0,constrain:!1}},t))},SYNO.Backup.Util.getPkgVersion=function(){return SYNO.SDS.Config.FnMap["SYNO.SDS.Backup.Application"].config.version},SYNO.Backup.Util.IsImage=function(e){return!!e&&("image"===e||"cloud_image"===e)},SYNO.Backup.Util.ExtractPattern=function(e,r){if(!r)return e;var t=[];return Ext.each(e,(function(e){("dir"===r&&e.endsWith("/")||"file"===r&&!e.endsWith("/"))&&t.push(e)})),t},SYNO.Backup.Util.IsSubClass=function(e,r){if(!e||!r)return!1;var t=Ext.getClassByName(String(e)),n=Ext.getClassByName(String(r));return!(!t||!n)&&(t.prototype instanceof n||t===n)},SYNO.Backup.Util.deepCopyObject=function(e){if(e)return JSON.parse(JSON.stringify(e))},SYNO.Backup.Util.updateAppShareTip=function(e,r,t){if(e&&e.getRootNode()){var n=[];Ext.each(r.get("depend").folder_list,(function(e){n.push(SYNO.SDS.Backup.getShareName(e.folder))})),n=SYNO.ux.Utils.uniqueApiArray(n);Ext.each(n,(function(n){var a=SYNO.SDS.Backup.getTreeNodeByCaseId(e,"/"+n);if(!a)return!0;(a.dependApps||(a.dependApps={}),a.getUI().getEl().classList.remove("syno-backup-show-app-share"),!1===a.dependApps.hasOwnProperty(r.id)&&r.get("checked")?a.dependApps[r.id]=r.get("name")?r.get("name"):r.id:!0!==a.dependApps.hasOwnProperty(r.id)||r.get("checked")||delete a.dependApps[r.id],function(e){for(var r in e)if(e.hasOwnProperty(r))return!0;return!1}(a.dependApps))&&(a.getUI().getEl().classList.add("syno-backup-show-app-share"),a.getUI().getEl().getElementsByClassName("syno-backup-tree-node-app-share")[0].setAttribute("ext:wtip",function(e,r){var n=[];Ext.iterate(r,(function(e,r){n.push(r)}));var a="<b>"+n.join(", ")+"</b>";return String.format(t,e,a)}(SYNO.SDS.Backup.ConvertUniqueIdToConflictId(a.id).substr(1),a.dependApps)))}))}},SYNO.Backup.Util.parseVolName=function(e,r){if("petaspace"===e)return _T("share","peta_share_control_panel_vol_desc");var t=e.replace("/volume",""),n="";return n=isNaN(t)?t:parseInt(t,10),String.format("{0} {1} {2}",_T("volume","volume"),n,r?"("+Ext.util.Format.htmlEncode(r)+")":"")},SYNO.Backup.Util.getSharePath=function(e){if(!e||!Ext.isString(e))return"";if(0!==e.indexOf("/"))return"";if(e.indexOf("/")===e.lastIndexOf("/"))return e;var r=e.indexOf("/",1);return e.substr(0,r)},SYNO.Backup.Util.domAddTip=function(e,r){var t=document.createElement("a"),n=document.createElement("img"),a="vertical-align:bottom; position: relative;",i=Ext.getCmp(e.id),S=Ext.id(),p=SYNO.SDS.UIFeatures.test("isRetina")?"2x":"1x";if(n.setAttribute("src","webman/3rdparty/HyperBackup/images/"+p+"/bt_information_mini.png"),n.setAttribute("width","24px"),n.setAttribute("height","24px"),n.setAttribute("draggable","false"),i&&i.defaultTriggerWidth&&(a+=" left:"+i.defaultTriggerWidth+"px;"),n.setAttribute("style",a),n.setAttribute("ext:wtip",r),n.setAttribute("id",S),t.appendChild(n),i instanceof SYNO.ux.DisplayField)e.appendChild(t);else if(i instanceof SYNO.ux.Button&&Ext.getDom(e).nextSibling){var _=e.dom.getAttribute("style")+" margin-right:0px !important;",o=Ext.getDom(e);o.setAttribute("style",_),t.setAttribute("style","margin-right:6px !important;"),o.parentNode.insertBefore(t,o.nextSibling)}else i instanceof SYNO.ux.TextArea?Ext.getDom(e).parentNode.parentNode.appendChild(t):Ext.getDom(e).parentNode.appendChild(t);return i&&i.el&&i.el.set({"aria-describedby":i.el.dom.getAttribute("aria-describedby")+" "+S}),t},SYNO.Backup.Util.getCertErrReason=function(e,r){switch(SYNO.SDS.Backup.GetErrorKey(e)){case"ERR_SSL_VERIFY_FAIL_UNKNOWN_SIGNATURE":case"ERR_SSL_VERIFY_FAIL_NEW_UNKNOWN_SIGNATURE":return String.format(SYNO.SDS.Backup.GetErrorString(e),r.issuer);case"ERR_SSL_VERIFY_FAIL_NEW_HOSTNAME_NOT_MATCH":case"ERR_SSL_VERIFY_FAIL_HOSTNAME_NOT_MATCH":return String.format(SYNO.SDS.Backup.GetErrorString(e),r.req_host,r.cert_hosts);case"ERR_SSL_VERIFY_FAIL_NEW_EXPIRED":case"ERR_SSL_VERIFY_FAIL_EXPIRED":return String.format(SYNO.SDS.Backup.GetErrorString(e),r.valid_date)}return""},SYNO.Backup.Util.DisplayAccount=function(e,r,t){e.setValue(Ext.util.Format.ellipsis(r,t)),e.getEl().dom.setAttribute("ext:qtip",r)},SYNO.Backup.Util.GetMultiVerLunDisplayName=function(e="",r=""){if(!e)return"";if(!r)return e;return`${e} ${r.endsWith("_NS")?"(namespace)":"(lun)"}`},Ext.ns("SYNO.Backup.FeatureSupport.Utils"),SYNO.Backup.FeatureSupport.Utils.SupportEntireDSMBackup=function(){return"yes"===_D("support_synorbd_vspace")},SYNO.Backup.FeatureSupport.Utils.SupportLegacyLunBackup=function(){return"yes"===_D("support_iscsi_lunbkp")&&!_S("systemdr_running")&&!_F("SYNO_PRODUCT_FSDN")},SYNO.Backup.FeatureSupport.Utils.SupportMultiVerLunBackup=function(){return _F("SYNO_PRODUCT_FSDN")},SYNO.Backup.FeatureSupport.Utils.SupportDataBackupOnly=function(){return!SYNO.Backup.FeatureSupport.Utils.SupportLegacyLunBackup()&&!SYNO.Backup.FeatureSupport.Utils.SupportMultiVerLunBackup()&&!SYNO.Backup.FeatureSupport.Utils.SupportEntireDSMBackup()},SYNO.Backup.FeatureSupport.Utils.SupportBackupToLocal=function(){return"yes"!==_D("support_hyper_converged")&&!0!==_F("SYNO_PRODUCT_FSDN")},SYNO.Backup.FeatureSupport.Utils.SupportOtherDestination=function(){return"yes"!==_D("support_hyper_converged")&&!0!==_F("SYNO_PRODUCT_FSDN")},SYNO.Backup.FeatureSupport.Utils.SupportSystemBackup=function(){return"yes"!==_D("support_hyper_converged")},SYNO.Backup.FeatureSupport.Utils.SupportNetworkAssignment=function(){return!0===_F("SYNO_PRODUCT_FSDN")},Ext.namespace("SYNO.SDS.Backup"),function(e){var r={ERR_DISALLOW_DEMOSITE:[116,_T("common","error_demo")],ERR_PARAM:[4400,_T("error","error_error_system")],ERR_INTERNAL_ERROR:[4401,_T("error","error_error_system")],ERR_CLIENT_NO_SPACE:[4402,SYNO.SDS.Backup.String("error","client_no_space")],ERR_SERVER_NO_SPACE:[4403,SYNO.SDS.Backup.String("error","repo_no_space")],ERR_CLIENT_NO_QUOTA:[4404,SYNO.SDS.Backup.String("error","client_no_quota")],ERR_SERVER_NO_QUOTA:[4405,SYNO.SDS.Backup.String("error","server_no_quota")],ERR_NOT_OWNER:[4406,SYNO.SDS.Backup.String("error","backup_not_owner")],ERR_SNAPSHOT_RESTORING:[4407,SYNO.SDS.Backup.String("error","snapshot_restoring")],ERR_RESTORING:[4408,SYNO.SDS.Backup.String("error","is_restoring")],ERR_BACKING_UP_RESTORING:[4409,SYNO.SDS.Backup.String("error","is_backing_up_restoring")],ERR_CLIENT_PERM_DENIED:[4410,SYNO.SDS.Backup.String("error","client_perm_denied")],ERR_SERVER_PERM_DENIED:[4411,SYNO.SDS.Backup.String("error","server_deny")],ERR_PORT_NOT_VALID:[4412,SYNO.SDS.Backup.String("error","port_conflict")],ERR_NAME_NOT_VALID:[4413,SYNO.SDS.Backup.String("error","s3_bucket_name_invalid")],ERR_TARGET_VERSION_TOO_OLD:[4414,SYNO.SDS.Backup.String("error","target_version_too_old")],ERR_SERVER_UNDER_MAINTENANCE:[4415,SYNO.SDS.Backup.String("error","server_maintenance")],ERR_CONFIG_OPERATE_ADMIN:[4416,SYNO.SDS.Backup.String("error","confbkp_operating_user")],ERR_SHARE_READ_ONLY:[4417,SYNO.SDS.Backup.String("app","share_used_by_running_application")],ERR_SERVICE_NO_VOLUME:[4418,SYNO.SDS.Backup.String("error","volume_not_found")],ERR_SERVICE_NO_SHARE:[4419,SYNO.SDS.Backup.String("error","create_service_share")],ERR_VOLUME_NOT_EXIST:[4420,SYNO.SDS.Backup.String("error","volume_not_found")],ERR_VOLUME_FS_NOT_SUPPORT:[4422,String.format(SYNO.SDS.Backup.String("error","volume_fs_not_support"),"EXT3/EXT4")],ERR_SHARE_NOT_EXIST:[4423,SYNO.SDS.Backup.String("error","share_not_exist")],ERR_SHARE_ENCRYPTION:[4425,SYNO.SDS.Backup.String("error","not_support_restore_to_encrypted_share")],ERR_CONFIG_VERSION_WRONG:[4428,SYNO.SDS.Backup.String("error","confbkp_failed_get_conf_file")],ERR_CONFIG_VERSION_FUTURE:[4429,SYNO.SDS.Backup.String("error","confbkp_error_version")],ERR_OFFLINE:[4430,SYNO.SDS.Backup.String("error","general_backup_destination_disconnect")],ERR_RESTORE_VOLUME_BUILDING:[4431,SYNO.SDS.Backup.String("error","is_creating_volume")],ERR_PROTOCOL_VERSION_CLIENT_TOO_OLD:[4432,SYNO.SDS.Backup.String("error","client_version_old")],ERR_PROTOCOL_VERSION_SERVER_TOO_OLD:[4433,SYNO.SDS.Backup.String("error","server_version_old")],ERR_BAD_ADDRESS:[4434,SYNO.SDS.Backup.String("error","dns_look_up_error")],ERR_CONFIG_RESTORING:[4435,SYNO.SDS.Backup.String("error","is_processing_conf")],ERR_CONFIG_NO_SPACE:[4436,SYNO.SDS.Backup.String("error","conf_no_space")],ERR_CONFIG_WRONG_FORMAT:[4437,SYNO.SDS.Backup.String("error","conf_format_error")],ERR_CONFIG_PORT_CONFLICT:[4438,SYNO.SDS.Backup.String("error","conf_port_conflict")],ERR_CONFIG_SERVICE_FAIL:[4439,SYNO.SDS.Backup.String("error","restore_import_fail")],ERR_NO_RESPONSE:[4440,SYNO.SDS.Backup.String("error","general_backup_destination_no_response_v1")],ERR_CONNECTION_BLOCKED:[4441,SYNO.SDS.Backup.String("error","err_ip_denied")],ERR_SERVICE_DISABLE:[4442,SYNO.SDS.Backup.String("error","service_disable")],ERR_SSH_FAIL:[4443,SYNO.SDS.Backup.String("error","ssh_disconnected")],ERR_AUTH_FAIL:[4444,SYNO.SDS.Backup.String("error","auth_fail")],ERR_AUTH_DENIED:[4445,SYNO.SDS.Backup.String("error","no_app_privilege")],ERR_UNSTABLE_NETWORK:[4446,SYNO.SDS.Backup.String("error","network_unstable")],ERR_SSL_NOT_SUPPORT:[4447,SYNO.SDS.Backup.String("error","ssl_not_support")],ERR_SSL_VERIFY_FAIL:[4448,SYNO.SDS.Backup.String("error","ssl_verify_fail")],ERR_TIME_SKEWED:[4449,SYNO.SDS.Backup.String("error","time_skewed")],ERR_REQUESTS_TOO_MANY:[4450,SYNO.SDS.Backup.String("error","requests_too_many")],ERR_STAGE_REJECT_OPERATION:[4451,SYNO.SDS.Backup.String("error","stage_reject_operation")],ERR_JOB_NOT_RUNNING:[4452,SYNO.SDS.Backup.String("error","job_not_running")],ERR_DEST_FILE_NOT_EXIST:[4453,SYNO.SDS.Backup.String("error","dest_file_not_exist")],ERR_DATA_SESSION_EXPIRED:[4454,SYNO.SDS.Backup.String("error","data_session_expired")],ERR_REPOSITORY_NOT_EXIST:[4455,SYNO.SDS.Backup.String("error","repo_not_exist")],ERR_REPOSITORY_EXIST:[4456,SYNO.SDS.Backup.String("error","repo_already_exist")],ERR_REPOSITORY_BUSY:[4457,SYNO.SDS.Backup.String("error","repository_busy")],ERR_REPOSITORY_PERM_DENIED:[4459,SYNO.SDS.Backup.String("error","no_repo_permission_action_for_task_owner")],ERR_TARGET_NOT_EXIST:[4460,SYNO.SDS.Backup.String("error","target_not_exist")],ERR_TARGET_EXIST:[4461,SYNO.SDS.Backup.String("error","target_already_exist")],ERR_TARGET_BUSY:[4462,SYNO.SDS.Backup.String("error","target_busy")],ERR_TARGET_BUSY_ROLLBACK:[4463,SYNO.SDS.Backup.String("error","target_busy_rollback")],ERR_TARGET_BUSY_BACKUP:[4464,SYNO.SDS.Backup.String("error","target_busy_backup")],ERR_TARGET_BUSY_RESTORE:[4465,SYNO.SDS.Backup.String("error","target_busy_restore")],ERR_TARGET_BUSY_CHECKING:[4466,SYNO.SDS.Backup.String("error","target_busy_checking")],ERR_TARGET_BROKEN:[4467,SYNO.SDS.Backup.String("error","target_broken")],ERR_TARGET_NEED_ROLLBACK:[4468,SYNO.SDS.Backup.String("error","target_busy_protect_rollback")],ERR_CLOUD_CACHE_INVALID:[4469,SYNO.SDS.Backup.String("error","status_cloud_index_broken")],ERR_TARGET_LINKKEY_MISMATCH:[4470,SYNO.SDS.Backup.String("error","status_target_key_mismatch")],ERR_TARGET_PERM_DENIED:[4471,SYNO.SDS.Backup.String("error","no_target_permission_action_for_task_owner")],ERR_VERSION_NOT_EXIST:[4472,SYNO.SDS.Backup.String("error","version_not_exist")],ERR_VERSION_LOCKED:[4475,SYNO.SDS.Backup.String("error","version_lock_delete_fail")],ERR_NO_AVAILABLE_VERSION:[4476,SYNO.SDS.Backup.String("error","no_available_restore_version")],ERR_MP_NOT_EMPTY:[4477,SYNO.SDS.Backup.String("error","mp_not_empty")],ERR_USER_EXCEED_MAX:[4478,SYNO.SDS.Backup.String("error","user_exceed_max")],ERR_GROUP_EXCEED_MAX:[4479,SYNO.SDS.Backup.String("error","group_exceed_max")],ERR_APP_VERSION_INVALID:[4480,SYNO.SDS.Backup.String("error","app_version_invalid")],ERR_UMOUNT_FAIL:[4481,SYNO.SDS.Backup.String("error","umount_fail")],ERR_APP_MYSQL_PWD_WRONG:[4482,SYNO.SDS.Backup.String("error","maria_db_auth_fail")],ERR_APP_SURVEILLANCE_ENABLE:[4483,SYNO.SDS.Backup.String("error","stop_surveillance_first")],ERR_APP_MYSQL_ENABLE:[4484,SYNO.SDS.Backup.String("error","maria_db_no_enable")],ERR_APP_MYSQL_VOLUME_CRASH:[4485,SYNO.SDS.Backup.String("error","maria_db_volume_crash")],ERR_APP_VOLUME:[4486,SYNO.SDS.Backup.String("error","app_no_avail_volume")],ERR_APP_OCCUPIED:[4487,SYNO.SDS.Backup.String("error","app_occupied")],ERR_APP_NO_SPACE:[4488,SYNO.SDS.Backup.String("error","client_no_space")],ERR_APP_NETWORK:[4489,SYNO.SDS.Backup.String("error","app_network_disconnected")],CUSTOMIZED_WEBAPI_ERROR_CODE:[4490,_T("error","error_error_system")],CUSTOMIZED_WEBAPI_ERROR_CODE_CONTAINER_INVALID_NAME:[4491,SYNO.SDS.Backup.String("error","s3_bucket_name_invalid")],CUSTOMIZED_WEBAPI_ERROR_CODE_CONTAINER_EXIST:[4492,SYNO.SDS.Backup.String("error","s3_bucket_existed")],CUSTOMIZED_WEBAPI_ERROR_CODE_CONTAINER_TOO_MANY:[4493,SYNO.SDS.Backup.String("error","s3_bucket_number_limit")],ERR_BACKUP_CONF_FAIL:[4494,SYNO.SDS.Backup.String("error","status_backup_conf_fail")],ERR_BACKUP_APP_FAIL:[4495,SYNO.SDS.Backup.String("error","status_backup_app_fail")],ERR_ENCRYPT_VERIFY_FAIL:[4496,SYNO.SDS.Backup.String("error","task_password_invalid")],ERR_SHARE_ENCRYPTED:[4497,SYNO.SDS.Backup.String("error","restore_share_encrypted")],ERR_SESSION_EXPIRED:[4498,SYNO.SDS.Backup.String("error","task_session_expired")],ERR_SERVER_NOT_READY:[4499,SYNO.SDS.Backup.String("error","image_backup_scan_not_ready")],ERR_CANCEL_JOB_NOT_EXIST:[4500,SYNO.SDS.Backup.String("error","cancel_job_not_exist")],ERR_TARGET_UNIKEY_MISMATCH:[4501,SYNO.SDS.Backup.String("error","status_task_target_mismatch")],ERR_SERVICE_DISABLE_V2:[4502,SYNO.SDS.Backup.String("error","service_disable_v2")],ERR_NO_ACTIVE_SUBSCRIPTION:[4503,SYNO.SDS.Backup.String("error","no_active_subscription")],ERR_UNENCRYPTED_TRANSMISSION_NOT_SUPPORT:[4504,SYNO.SDS.Backup.String("error","unencrypted_transmission_not_support")],ERR_TARGET_SHARE_ENCRYPTED:[4505,SYNO.SDS.Backup.String("error","encryption_shared_unmount")],ERR_MOUNT_FIREBALL_FAIL:[4506,SYNO.SDS.Backup.String("error","mount_fireball_fail")],ERR_SSL_VERIFY_FAIL_HOSTNAME_NOT_MATCH:[4507,SYNO.SDS.Backup.String("error","subject_name_not_match")],ERR_SSL_VERIFY_FAIL_EXPIRED:[4508,SYNO.SDS.Backup.String("error","cert_expired_ex")],ERR_SSL_VERIFY_FAIL_UNKNOWN_SIGNATURE:[4509,SYNO.SDS.Backup.String("error","unknown_cert_issuer_ex")],ERR_SSL_VERIFY_FAIL_NEW_UNKNOWN_SIGNATURE:[4510,SYNO.SDS.Backup.String("error","new_cert_unknown_cert_issuer_ex")],ERR_SSL_VERIFY_FAIL_NEW_HOSTNAME_NOT_MATCH:[4511,SYNO.SDS.Backup.String("error","new_cert_subject_name_not_match")],ERR_SSL_VERIFY_FAIL_NEW_EXPIRED:[4512,SYNO.SDS.Backup.String("error","new_cert_cert_expired_ex")],ERR_OBJECT_IN_GLACIER:[4513,SYNO.SDS.Backup.String("aws_s3","object_in_glacier")],ERR_CONNECT_QUICKCONNECT:[4514,SYNO.SDS.Backup.String("error","not_allow_connect_to_quickconnect")],ERR_UNEXPECTED_TERMINATION:[4515,SYNO.SDS.Backup.String("error","unexpected_termination")],ERR_ROOT_PARTITION_NO_ENOUGH_SPACE:[4516,SYNO.SDS.Backup.String("error","root_partition_no_enough_space")],ERR_TARGET_NO_BACKUP_DATA:[4517,SYNO.SDS.Backup.String("error","target_no_backup_data")],ERR_SYNOBACKUPD_STOP:[4518,SYNO.SDS.Backup.String("error","synobackupd_stop")],ERR_SERVER_NOT_DOWNLOADABLE:[4519,SYNO.SDS.Backup.String("error","can_not_download_cloud_file")],ERR_NEED_INTEGRITY_CHECK:[4520,SYNO.SDS.Backup.String("error","need_integrity_check")],ERR_SERVER_INTERNAL_ERROR:[4521,SYNO.SDS.Backup.String("error","server_internal_error")],WEBAPI_RESTORE_ERR_RESTORE_ABB_CONFLICT:[4522,SYNO.SDS.Backup.String("error","restore_abb_data_conflict")],ERR_CLOUD_NOT_SUPPORT_ACD:[4523,SYNO.SDS.Backup.String("error","cloud_not_support_acd")],WEBAPI_BACKUP_ERR_WORM_SHARE_DESTINATION:[4524,SYNO.SDS.Backup.String("app","err_target_share_cannot_be_worm")],WEBAPI_BACKUP_ERR_DEVICE_BUSY:[4525,SYNO.SDS.Backup.String("error","err_device_busy")],WEBAPI_BACKUP_ERR_HBK_INCOMPATIBLE:[4526,SYNO.SDS.Backup.String("error","err_hbk_incompatible")],WEBAPI_BACKUP_ERR_SHARE_NAME_CONFLICT:[4527,SYNO.SDS.Backup.String("error","err_share_name_conflict")],WEBAPI_BACKUP_ERR_BAD_PASSWORD:[4528,SYNO.SDS.Backup.String("error","task_password_invalid")],WEBAPI_BACKUP_ERR_BAD_PASSWORD_FILE:[4529,SYNO.SDS.Backup.String("error","task_private_invalid")],WEBAPI_BACKUP_ERR_TIERFS_BUSY:[4530,SYNO.SDS.Backup.String("error","error_backup_destination_in_use_by_tiering_app")],WEBAPI_BACKUP_ERR_ABNORMAL_TIER_SHARE:[4531,SYNO.SDS.Backup.String("error","error_abnormal_tiering_share")],WEBAPI_BACKUP_NO_AVAILABLE_NETWORK:[4532,SYNO.SDS.Backup.String("error","single_or_dual_controller_disconnect")],WEBAPI_BACKUP_ERR_LUN_DEVICE_BUSY:[4534,SYNO.SDS.Backup.String("error","err_lun_device_busy")],WEBAPI_BACKUP_ERR_LUN_NOT_EXIST:[4535,SYNO.SDS.Backup.String("error","status_lun_not_exist")],WEBAPI_BACKUP_ERR_ENCRYPT_SHARE_MOUNT_POINT_NOT_EXIST:[4536,SYNO.SDS.Backup.String("error","encrypted_share_not_mounted_when_backup")]};function t(e){var n=null;return Ext.isObject(e)&&e.code?t(e.code):(Ext.iterate(r,(function(r,t){if(e===t[0])return n=t[1],Ext.isObject(n)&&(!n.text&&n.text_param&&(n.text=n.text_param),n.text||(n.text=_T("error","error_error_system"))),!1})),n)}Ext.iterate(r,(function(r,t){e[r]=t[0]})),e.GetErrorKey=function(e){var t="";return Ext.iterate(r,(function(r,n){if(e===n[0])return t=r,!1})),t},e.GetErrorString=function(r,n){if(Ext.isObject(r)&&r.code)return e.GetErrorString(r.code,r.errors);var a=t(r);return a?Ext.isString(a)?a:function(e,r){var t=[],n=!1,a=e.text_param||e.text;return r?Ext.isArray(r)&&r.length>0?String.format.apply(String,[a].concat(r)):Ext.isObject(r)&&(n=!0,Ext.each(e.replace_keys,(function(e){if(!r.hasOwnProperty(e))return n=!1,!1;t.push(r[e])})),n)?String.format.apply(String,[a].concat(t)):e.text:e.text}(a,n):SYNO.SDS.ConfigBackup.isConfigError(r)?SYNO.SDS.ConfigBackup.getErrorString(r,n):_T("error","error_error_system")},e.GetErrorStringArg=function(r,t){var n=e.GetErrorString(r);if(!Ext.isString(n))return _T("error","error_error_system");Ext.isArray(t)||(t=new Array(t));var a=t.slice();return a.unshift(n),String.format.apply(this,a)},e.GetErrorStringEx=function(r){if(Ext.isEmpty(r)||Ext.isEmpty(r.code))return _T("error","error_error_system");switch(r.code){case e.ERR_SERVER_NOT_DOWNLOADABLE:case e.WEBAPI_RESTORE_ERR_RESTORE_ABB_CONFLICT:if(!Ext.isEmpty(r.errors)&&!Ext.isEmpty(r.errors.error_msg))return e.GetErrorStringArg(r.code,r.errors.error_msg)}return e.GetErrorString(r.code)}}(SYNO.SDS.Backup);try{Ext.form.VTypes.backup_destinationText=_T("vtype","bad_backup_destination"),Ext.form.VTypes.backup_destinationMask=/[^\\{}|^[\]?=:+/*()$!"#%&',;<>@`~]/,Ext.form.VTypes.backup_destinationNotValid=/[\\{}|^[\]?=:+/*()$!"#%&',;<>@`~]/,Ext.form.VTypes.backup_destinationVal=/^[^\-\s.]/,Ext.form.VTypes.backup_destinationEnd=/\S$/,Ext.form.VTypes.backup_destination=function(e){return-1==e.search(Ext.form.VTypes.backup_destinationNotValid)&&Ext.form.VTypes.backup_destinationVal.test(e)&&Ext.form.VTypes.backup_destinationEnd.test(e)},Ext.form.VTypes.backup_targetText=_T("vtype","bad_backup_target"),Ext.form.VTypes.backup_targetMask=/[^\\{}|^[\]?=:+/*()$!"#%&',;<>@`~]/,Ext.form.VTypes.backup_targetNotValid=/[\\{}|^[\]?=:+/*()$!"#%&',;<>@`~]/,Ext.form.VTypes.backup_targetVal=/^[^\-\s.]/,Ext.form.VTypes.backup_targetEnd=/\S$/,Ext.form.VTypes.backup_target=function(e){return-1==e.search(Ext.form.VTypes.backup_targetNotValid)&&Ext.form.VTypes.backup_targetVal.test(e)&&Ext.form.VTypes.backup_targetEnd.test(e)}}catch(e){}