1/** 2 * çé JS èæ¬ç±» æ¨å¯ä»¥éè¿æ¤èæ¬æ¥å®ç°çéç¸å ³çæä½è°ç¨ 3 * TODO æ¤èæ¬éè¦å å¼å ¥ä¾èµ axios 4 */ 5class DiskMirror { 6 7 /** 8 * è·åå°çé对象 9 * @param url {string} çéå端æå¡å¨å端çurl 10 */ 11 constructor(url) { 12 // constructor body 13 this.diskMirrorUrl = url; // This is the diskMirrorUrl variable 14 this.setSk(); 15 this.setController('/FsCrud'); 16 } 17 18 /** 19 * éè¿å¼æç®æ³å å¯ 20 * @param value {number} è¦å å¯çå符串 21 * @return {number} å å¯åçç»æ 22 */ 23 xorEncrypt(value) { 24 let encrypted = value; 25 const sk_str = this.sk.toString(); 26 for (let i = 0; i < sk_str.length; i++) { 27 encrypted -= sk_str.charCodeAt(i) << 1; 28 } 29 return encrypted; 30 } 31 32 /** 33 * 设置æ¬ç»ä»¶è¦ä½¿ç¨ççéæ§å¶å¨ 34 * @param controllerName çéæ§å¶å¨åç§° 35 */ 36 setController(controllerName) { 37 this.controller = controllerName; 38 } 39 40 /** 41 * 42 * @return {string} æ¬ç»ä»¶ççéæ§å¶å¨åç§° 43 */ 44 getController() { 45 return this.controller; 46 } 47 48 /** 49 * 设置æ¬ç»ä»¶ä½¿ç¨ççéç å®å ¨key 50 * @param key {int} æ¤key ç¨äºæ è¯æ¨ç身份ï¼è®©æå¡å¨ç¸ä¿¡æ¨ï¼ä¸å 许æ¨è®¿é®ï¼éè¦è®¾ç½®ä¸æå¡å¨ç¸å 51 * @param domain {string} æ¨å¸æå¨åªä¸ªåä¸ä½¿ç¨æ¤å®å ¨å¯é¥ï¼é»è®¤æ åµä¸ï¼æ¤å¼æ¯ undefinedï¼è¡¨ç¤ºæ¨å¸æå¨å½ååä¸ä½¿ç¨æ¤å®å ¨å¯é¥ï¼å¼å¾æ³¨ææ¯ï¼è¯·ç¡®ä¿æ¨ççéå端æå¡å¨å¨æ¤åä¸å¦ï¼å 为æ¨è¦æºå¸¦è¿ä¸ªcookie 访é®å端å¢ï¼ 52 */ 53 setSk(key = 0, domain = undefined) { 54 this.sk = key; 55 if (key !== 0) { 56 this.setDiskMirrorXorSecureKey(domain); 57 } 58 } 59 60 /** 61 * è·åæ¬ç»ä»¶ä½¿ç¨ççéç å®å ¨key 62 * @return {int} å®å ¨å¯é¥ å¦æç®æ diskMirror æå¡å¨éè¦å¯é¥è®¿é®ï¼åæ¨éè¦å¨è¿é设置å¯é¥ 63 */ 64 getSk() { 65 return this.sk; 66 } 67 68 /** 69 * åå端ä¸ä¸ä¼ ä¸ä¸ªæä»¶ 70 * @param params {{ 71 * fileName: string, 72 * userId: int, 73 * type: 'Binary'|'TEXT' 74 * }} è¿éæ¯è¯·æ±åæ°å¯¹è±¡ å ¶ä¸çæä»¶åå代表ä¸ä¼ å°å端ä¹åçæä»¶ååï¼userId 代表çå°±æ¯æä»¶è¦ä¸ä¼ å°çæå®ç©ºé´çidï¼typeå°±æ¯ä»£è¡¨çæä»¶çç±»å æ¯æäºè¿å¶åææ¬ä¸¤ç§æ ¼å¼ 75 * @param file {File} éè¦è¢«ä¸ä¼ çæä»¶å¯¹è±¡ 76 * @param okFun {function} æä½æåä¹åçåè°å½æ° è¾å ¥æ¯è¢«ä¸ä¼ æä»¶çjson对象 77 * @param errorFun {function} æä½å¤±è´¥ä¹åçåè°å½æ° è¾å ¥æ¯éè¯¯ä¿¡æ¯ 78 * @param checkFun {function} ä¸ä¼ åçæ£æ¥å½æ° è¾å ¥æ¯ä¸ä¼ çæä»¶å¯¹è±¡ç json æ°æ® ä»¥å æä»¶å¯¹è±¡æ¬èº«ï¼å¦æè¿åçæ¯ä¸ä¸ªfalse å代表ä¸è¿è¡ä¸ä¼ æä½ 79 */ 80 upload(params, file, okFun = undefined, errorFun = (e) => 'res' in e ? alert(e['res']) : alert(e), checkFun = undefined) { 81 if (checkFun !== undefined && !checkFun(params, file)) { 82 return; 83 } 84 const formData = new FormData(); 85 // 设置请æ±åæ°æ°æ®å 86 params["secure.key"] = this.getSk(); 87 const blob = new Blob([JSON.stringify(params)], { 88 type: 'application/json' 89 }); 90 formData.append('params', blob, "params"); 91 // 设置æä»¶æ°æ®å 92 formData.append('file', file, "file"); 93 // å¼å§è¿è¡è¯·æ±åé 94 axios.defaults.withCredentials = true; 95 axios( 96 { 97 method: 'post', 98 url: this.diskMirrorUrl + this.getController() + '/add', 99 data: formData, 100 headers: { 101 'Content-Type': 'multipart/form-data' 102 } 103 } 104 ).then(function (res) { 105 if (res.data['res'] !== 'ok!!!!') { 106 if (errorFun !== undefined) { 107 errorFun(res.data); 108 } 109 return; 110 } 111 // å¤çæå 112 if (okFun !== undefined) { 113 okFun(res.data); 114 } else { 115 console.info(res.data); 116 } 117 }).catch(function (err) { 118 // å¤çé误 119 if (errorFun !== undefined) { 120 errorFun(err); 121 } else { 122 console.error(err); 123 } 124 }); 125 } 126 127 /** 128 * è·åå°æå®ç©ºé´çææ ææ¬æä»¶ç url 129 * @param userId {int} éè¦è¢«è¯»åç空é´id 130 * @param type {'TEXT'|'Binary'} æä»¶ç±»å 131 * @param okFun {function} æä½æåä¹åçåè°å½æ° è¾å ¥æ¯è¢«è·åé¢ç»ææä»¶çjson对象 132 * @param errorFun {function} æä½å¤±è´¥ä¹åçåè°å½æ° è¾å ¥æ¯éè¯¯ä¿¡æ¯ 133 * @param checkFun {function} è·ååçæ£æ¥å½æ° è¾å ¥æ¯è¯·æ±åæ°å¯¹è±¡ï¼å¦æè¿åçæ¯ä¸ä¸ªfalse å代表ä¸è¿è¡è·åæä½ 134 */ 135 getUrls(userId, type, okFun = undefined, errorFun = (e) => 'res' in e ? alert(e['res']) : alert(e), checkFun = undefined,) { 136 // getUrls function body 137 if (userId === undefined || type === undefined || type === '') { 138 const err = "æ¨å¿ é¡»è¦è¾å ¥ userId 以å type åæ°æå¯ä»¥è¿è¡ url çè·å"; 139 if (errorFun !== undefined) { 140 errorFun(err); 141 } else { 142 console.error(err); 143 } 144 return; 145 } 146 const formData = new FormData(); 147 // 设置请æ±åæ° 148 const params = { 149 userId: userId, 150 type: type,
151 "secure.key": this.getSk() 152 }; 153 if (checkFun !== undefined && !checkFun(params)) { 154 return; 155 } 156 const blob = new Blob([JSON.stringify(params)], { 157 type: 'application/json' 158 }); 159 formData.append('params', blob, "params"); 160 // å¼å§è¿è¡è¯·æ±åé 161 axios.defaults.withCredentials = true; 162 axios( 163 { 164 method: 'post', 165 url: this.diskMirrorUrl + this.getController() + '/getUrls', 166 data: formData, 167 headers: { 168 'Content-Type': 'multipart/form-data' 169 } 170 } 171 ).then(function (res) { 172 if (res.data['res'] !== 'ok!!!!') { 173 if (errorFun !== undefined) { 174 errorFun(res.data); 175 } 176 return; 177 } 178 if (okFun !== undefined) { 179 okFun(res.data); 180 } else { 181 console.info(res.data); 182 } 183 }).catch(function (err) { 184 if (errorFun !== undefined) { 185 errorFun(err); 186 } else { 187 console.error(err); 188 } 189 }); 190 } 191 192 /** 193 * å 餿å®ç©ºé´çæå®æä»¶ 194 * @param userId {int} 空é´id 195 * @param type {'TEXT'|'Binary'} æä»¶ç±»å 196 * @param fileName {string} éè¦è¢«å é¤çæä»¶åç§° 197 * @param okFun {function} æä½æåä¹åçåè°å½æ° è¾å ¥æ¯è¢«å é¤çæä»¶çjson对象 198 * @param errorFun {function} æä½å¤±è´¥ä¹åçåè°å½æ° è¾å ¥æ¯éè¯¯ä¿¡æ¯ 199 * @param checkFun {function} å é¤åçæ£æ¥å½æ° è¾å ¥æ¯è¯·æ±åæ°å¯¹è±¡ï¼å¦æè¿åçæ¯ä¸ä¸ªfalse å代表ä¸è¿è¡å é¤æä½ 200 */ 201 remove(userId, type, fileName, okFun = undefined, errorFun = (e) => 'res' in e ? alert(e['res']) : alert(e), checkFun = undefined,) { 202 if (userId === undefined || type == null || type === '' || fileName === undefined || fileName === '') { 203 const err = "æ¨å¿ é¡»è¦è¾å ¥ userId 以å type å fileName åæ°æå¯ä»¥è¿è¡å é¤"; 204 if (errorFun !== undefined) { 205 errorFun(err); 206 } else { 207 console.error(err); 208 } 209 return 210 } 211 const formData = new FormData(); 212 // 设置请æ±åæ° 213 const params = { 214 fileName: fileName, 215 userId: userId, 216 type: type, 217 "secure.key": this.getSk() 218 }; 219 if (checkFun !== undefined && !checkFun(params)) { 220 return; 221 } 222 const blob = new Blob([JSON.stringify(params)], { 223 type: 'application/json' 224 }); 225 formData.append('params', blob, "params"); 226 // å¼å§è¿è¡è¯·æ±åé 227 axios.defaults.withCredentials = true; 228 axios( 229 { 230 method: 'post', 231 url: this.diskMirrorUrl + this.getController() + '/remove', 232 data: formData, 233 headers: { 234 'Content-Type': 'multipart/form-data' 235 } 236 } 237 ).then(function (res) { 238 if (res.data['res'] !== 'ok!!!!') { 239 if (errorFun !== undefined) { 240 errorFun(res.data); 241 } 242 return; 243 } 244 if (okFun !== undefined) { 245 okFun(res.data); 246 } else { 247 console.info(res.data); 248 } 249 }).catch(function (err) { 250 if (errorFun !== undefined) { 251 errorFun(err); 252 } else { 253 console.error(err); 254 } 255 }); 256 } 257 258 /** 259 * é对æå®ç©ºé´çæå®æä»¶è¿è¡éå½å 260 * @param userId {int} 空é´id 261 * @param type {'TEXT'|'Binary'} æä»¶ç±»å 262 * @param fileName {string} éè¦è¢«åæ´çæä»¶åç§° 263 * @param newName {string} åæ´ä¹åçæä»¶åç§° 264 * @param okFun {function} æä½æåä¹åçåè°å½æ° è¾å ¥æ¯è¢«å é¤çæä»¶çjson对象 265 * @param errorFun {function} æä½å¤±è´¥ä¹åçåè°å½æ° è¾å ¥æ¯éè¯¯ä¿¡æ¯ 266 * @param checkFun {function} æä½åçæ£æ¥å½æ° è¾å ¥æ¯è¯·æ±åæ°å¯¹è±¡ï¼å¦æè¿åçæ¯ä¸ä¸ªfalse åä»£è¡¨æ£æ¥å¤±è´¥ä¸ç»§ç»æä½ 267 */ 268 reName(userId, type, fileName, newName, okFun = undefined, errorFun = (e) => 'res' in e ? alert(e['res']) : alert(e), checkFun = undefined) { 269 if (userId === undefined || type == null || type === '' || fileName === undefined || fileName === '' || newName === undefined || newName === '') { 270 const err = "æ¨å¿ é¡»è¦è¾å ¥ userId å type 以å fileName å newName åæ°æå¯ä»¥è¿è¡éå½å"; 271 if (errorFun !== undefined) { 272 errorFun(err); 273 } else { 274 console.error(err); 275 } 276 return 277 } 278 const formData = new FormData(); 279 // 设置请æ±åæ° 280 const params = { 281 fileName: fileName, 282 newName: newName, 283 userId: userId, 284 type: type,
285 "secure.key": this.getSk() 286 }; 287 if (checkFun !== undefined && !checkFun(params)) { 288 return; 289 } 290 const blob = new Blob([JSON.stringify(params)], { 291 type: 'application/json' 292 }); 293 formData.append('params', blob, "params"); 294 // å¼å§è¿è¡è¯·æ±åé 295 axios.defaults.withCredentials = true; 296 axios( 297 { 298 method: 'post', 299 url: this.diskMirrorUrl + this.getController() + '/reName', 300 data: formData, 301 headers: { 302 'Content-Type': 'multipart/form-data' 303 } 304 } 305 ).then(function (res) { 306 if (res.data['res'] !== 'ok!!!!') { 307 if (errorFun !== undefined) { 308 errorFun(res.data); 309 } 310 return; 311 } 312 if (okFun !== undefined) { 313 okFun(res.data); 314 } else { 315 console.info(res.data); 316 } 317 }).catch(function (err) { 318 if (errorFun !== undefined) { 319 errorFun(err); 320 } else { 321 console.error(err); 322 } 323 }); 324 } 325 326 /** 327 * é对æå®ç©ºé´çæå®æä»¶ç®å½è¿è¡å建 328 * @param userId {int} 空é´id 329 * @param type {'TEXT'|'Binary'} æä»¶ç±»å 330 * @param fileName {string} éè¦è¢«å建çæä»¶ç®å½åç§° 331 * @param okFun {function} æä½æåä¹åçåè°å½æ° è¾å ¥æ¯è¢«å建çæä»¶ç®å½çjson对象 332 * @param errorFun {function} æä½å¤±è´¥ä¹åçåè°å½æ° è¾å ¥æ¯éè¯¯ä¿¡æ¯ 333 * @param checkFun {function} æä½åçæ£æ¥å½æ° è¾å ¥æ¯è¯·æ±åæ°å¯¹è±¡ï¼å¦æè¿åçæ¯ä¸ä¸ªfalse åä»£è¡¨æ£æ¥å¤±è´¥ä¸ç»§ç»æä½ 334 */ 335 mkdirs(userId, type, fileName, okFun = undefined, errorFun = (e) => 'res' in e ? alert(e['res']) : alert(e), checkFun = undefined) { 336 if (userId === undefined || type == null || type === '' || fileName === undefined || fileName === '') { 337 const err = "æ¨å¿ é¡»è¦è¾å ¥ userId å type 以å fileName åæ°æå¯ä»¥è¿è¡æä»¶ç®å½çå建"; 338 if (errorFun !== undefined) { 339 errorFun(err); 340 } else { 341 console.error(err); 342 } 343 return 344 } 345 const formData = new FormData(); 346 // 设置请æ±åæ° 347 const params = { 348 fileName: fileName, 349 userId: userId, 350 type: type, 351 "secure.key": this.getSk() 352 }; 353 if (checkFun !== undefined && !checkFun(params)) { 354 return; 355 } 356 const blob = new Blob([JSON.stringify(params)], { 357 type: 'application/json' 358 }); 359 formData.append('params', blob, "params"); 360 // å¼å§è¿è¡è¯·æ±åé 361 axios.defaults.withCredentials = true; 362 axios( 363 { 364 method: 'post', 365 url: this.diskMirrorUrl + this.getController() + '/mkdirs', 366 data: formData, 367 headers: { 368 'Content-Type': 'multipart/form-data' 369 } 370 } 371 ).then(function (res) { 372 if (res.data['res'] !== 'ok!!!!') { 373 if (errorFun !== undefined) { 374 errorFun(res.data); 375 } 376 return; 377 } 378 if (okFun !== undefined) { 379 okFun(res.data); 380 } else { 381 console.info(res.data); 382 } 383 }).catch(function (err) { 384 if (errorFun !== undefined) { 385 errorFun(err); 386 } else { 387 console.error(err); 388 } 389 }); 390 } 391 392 /** 393 * å°æå®çæä»¶ç对象è·åå°ï¼å¹¶ä¼ éç»æ¨èªå·±æä¾ç彿°ä¸ï¼ 394 * @param userId {int} 空é´id 395 * @param type {'TEXT'|'Binary'} æä»¶ç±»å 396 * @param fileName {string} éè¦è¢«è·åçæä»¶ç®å½åç§° 397 * @param okFun {function} æä½æåä¹åçåè°å½æ° è¾å ¥æ¯è·åçæä»¶ç url å°åï¼ 398 * @param errorFun {function} æä½å¤±è´¥ä¹åçåè°å½æ° è¾å ¥æ¯é误信æ¯çé误ç 399 * @param checkFun {function} æä½åçæ£æ¥å½æ° è¾å ¥æ¯è¯·æ±åæ°å¯¹è±¡ï¼å¦æè¿åçæ¯ä¸ä¸ªfalse åä»£è¡¨æ£æ¥å¤±è´¥ä¸ç»§ç»æä½ 400 * @param version {int} è¦ä½¿ç¨ç¬¬å ä»£çæ§å¶å¨ä¸è½½æä»¶ é»è®¤æ¯ç¬¬ä¸ä»£ å ¼å®¹æ§æå¥½ 401 */ 402 downLoad(userId, type, fileName, okFun = undefined, errorFun = (e) => 'res' in e ? alert(e['res']) : alert(e), checkFun = undefined, version = 1) { 403 if (userId === undefined || type == null || type === '' || fileName === undefined || fileName === '' || okFun === undefined) { 404 const err = "æ¨å¿ é¡»è¦è¾å ¥ userId å type 以å fileName å okFun åæ°æå¯ä»¥è¿è¡æä»¶å¯¹è±¡çè·åï¼"; 405 if (errorFun !== undefined) { 406 errorFun(err); 407 } else { 408 console.error(err); 409 } 410 return 411 }
412 if (checkFun !== undefined && !checkFun({ 413 userId: userId, 414 type: type, 415 fileName: fileName 416 })) { 417 return; 418 } 419 // 夿æ¯å¦æå为 diskMirror_xor_secure_key ç cookie å¦ææ²¡æå°±ç´æ¥è¿½å ä¸ä¸ª cookie çå忝 diskMirror_xor_secure_key å å®¹æ¯ ${this.xorEncrypt(this.sk.toString())} 420 // å¼å§è®¡ç® url 421 okFun(version < 2 ? this.diskMirrorUrl + this.getController() + `/downLoad/${userId}/${type}?fileName=${fileName}` : this.diskMirrorUrl + this.getController() + `/downLoad2/${userId}/${type}/${this.getSk()}/${fileName.startsWith('/') ? fileName.substring(1) : fileName}`); 422 } 423 424 /** 425 * åå端ä¸è½¬åä¸ä¸ªæä»¶ 426 * @param params {{ 427 * fileName: string, 428 * userId: int, 429 * type: 'Binary'|'TEXT', 430 * url: string 431 * }} è¿éæ¯è¯·æ±åæ°å¯¹è±¡ å ¶ä¸çæä»¶åå代表ä¸ä¼ å°å端ä¹åçæä»¶ååï¼userId 代表çå°±æ¯æä»¶è¦ä¸ä¼ å°çæå®ç©ºé´çidï¼typeå°±æ¯ä»£è¡¨çæä»¶çç±»å æ¯æäºè¿å¶åææ¬ä¸¤ç§æ ¼å¼ 432 * @param okFun {function} æä½æåä¹åçåè°å½æ° è¾å ¥æ¯è¢«ä¸ä¼ æä»¶çjson对象 433 * @param errorFun {function} æä½å¤±è´¥ä¹åçåè°å½æ° è¾å ¥æ¯éè¯¯ä¿¡æ¯ 434 * @param checkFun {function} ä¸ä¼ åçæ£æ¥å½æ° è¾å ¥æ¯ä¸ä¼ çæä»¶å¯¹è±¡ç json æ°æ® ï¼å¦æè¿åçæ¯ä¸ä¸ªfalse å代表ä¸è¿è¡ä¸ä¼ æä½ 435 */ 436 transferDeposit(params, okFun = undefined, errorFun = (e) => 'res' in e ? alert(e['res']) : alert(e), checkFun = undefined) { 437 if (checkFun !== undefined && !checkFun(params)) { 438 return; 439 } 440 const formData = new FormData(); 441 // 设置请æ±åæ°æ°æ®å 442 params["secure.key"] = this.getSk(); 443 const blob = new Blob([JSON.stringify(params)], { 444 type: 'application/json' 445 }); 446 formData.append('params', blob, "params"); 447 // å¼å§è¿è¡è¯·æ±åé 448 axios.defaults.withCredentials = true; 449 axios( 450 { 451 method: 'post', 452 url: this.diskMirrorUrl + this.getController() + '/transferDeposit', 453 data: formData, 454 headers: { 455 'Content-Type': 'multipart/form-data' 456 } 457 } 458 ).then(function (res) { 459 if (res.data['res'] !== 'ok!!!!') { 460 if (errorFun !== undefined) { 461 errorFun(res.data); 462 } 463 return; 464 } 465 // å¤çæå 466 if (okFun !== undefined) { 467 okFun(res.data); 468 } else { 469 console.info(res.data); 470 } 471 }).catch(function (err) { 472 // å¤çé误 473 if (errorFun !== undefined) { 474 errorFun(err); 475 } else { 476 console.error(err); 477 } 478 }); 479 } 480 481 /** 482 * ååç«¯ä¸æ¥è¯¢æä»¶è½¬åæ åµ 483 * @param params {{ 484 * userId: int, 485 * type: 'Binary'|'TEXT', 486 * }} è¿éæ¯è¯·æ±åæ°å¯¹è±¡ å ¶ä¸çæä»¶åå代表ä¸ä¼ å°å端ä¹åçæä»¶ååï¼userId 代表çå°±æ¯æä»¶è¦ä¸ä¼ å°çæå®ç©ºé´çidï¼typeå°±æ¯ä»£è¡¨çæä»¶çç±»å æ¯æäºè¿å¶åææ¬ä¸¤ç§æ ¼å¼ 487 * @param okFun {function} æä½æåä¹åçåè°å½æ° è¾å ¥æ¯è¢«ä¸ä¼ æä»¶çjson对象 488 * @param errorFun {function} æä½å¤±è´¥ä¹åçåè°å½æ° è¾å ¥æ¯éè¯¯ä¿¡æ¯ 489 * @param checkFun {function} ä¸ä¼ åçæ£æ¥å½æ° è¾å ¥æ¯ä¸ä¼ çæä»¶å¯¹è±¡ç json æ°æ® ä»¥å æä»¶å¯¹è±¡æ¬èº«ï¼å¦æè¿åçæ¯ä¸ä¸ªfalse å代表ä¸è¿è¡ä¸ä¼ æä½ 490 */ 491 transferDepositStatus(params, okFun = undefined, errorFun = (e) => 'res' in e ? alert(e['res']) : alert(e), checkFun = undefined) { 492 if (checkFun !== undefined && !checkFun(params)) { 493 return; 494 } 495 const formData = new FormData(); 496 // 设置请æ±åæ°æ°æ®å
497 params["secure.key"] = this.getSk(); 498 const blob = new Blob([JSON.stringify(params)], { 499 type: 'application/json' 500 }); 501 formData.append('params', blob, "params"); // å¼å§è¿è¡è¯·æ±åé 502 axios.defaults.withCredentials = true; 503 axios( 504 { 505 method: 'post', 506 url: this.diskMirrorUrl + this.getController() + '/transferDepositStatus', 507 data: formData, 508 headers: { 509 'Content-Type': 'multipart/form-data' 510 } 511 } 512 ).then(function (res) { 513 // å¤çæå 514 if (okFun !== undefined) { 515 okFun(res.data); 516 } else { 517 console.info(res.data); 518 } 519 }).catch(function (err) { 520 // å¤çé误 521 if (errorFun !== undefined) { 522 errorFun(err); 523 } else { 524 console.error(err); 525 } 526 }); 527 } 528 529 /** 530 * è·åæå®ç©ºé´çæå¤§å®¹é å使¯ åè 531 * 532 * éè¦ç¡®ä¿è¿ç¨ç diskMirror æå¡å¨æ¯å¨ 2024å¹´ 2 æ 17 æ¥ ä»¥åä¹ååå¸çï¼ï¼ 533 * 534 * @param userId {int} éè¦è¢«æ£ç´¢ç空é´id 535 * @param okFun {function} æä½æåä¹åçåè°å½æ° è¾å ¥æ¯è¢«å建çæä»¶ç®å½çjson对象 536 * @param errorFun {function} æä½å¤±è´¥ä¹åçåè°å½æ° è¾å ¥æ¯éè¯¯ä¿¡æ¯ 537 */ 538 getSpaceMaxSize(userId, okFun = undefined, errorFun = (e) => 'res' in e ? alert(e['res']) : alert(e)) { 539 // å¼å§è¿è¡è¯·æ±åé 540 axios.defaults.withCredentials = true; 541 axios( 542 { 543 method: 'post', 544 url: this.diskMirrorUrl + this.getController() + '/getSpaceSize', 545 params: { 546 spaceId: userId.toString() 547 } 548 } 549 ).then(function (res) { 550 const data = res.data; 551 if (isNaN(data['res'])) { 552 if (errorFun !== undefined) { 553 errorFun(data['res'] + " is NAN!!!"); 554 } 555 return; 556 } 557 if (okFun !== undefined) { 558 okFun(data['res']); 559 } else { 560 console.info(data['res']); 561 } 562 }).catch(function (err) { 563 if (errorFun !== undefined) { 564 errorFun(err); 565 } else { 566 console.error(err); 567 } 568 }); 569 } 570 571 /** 572 * è·åå端ä¸ççéå æ ¸ççæ¬ 573 * 574 * éè¦ç¡®ä¿è¿ç¨ç diskMirror æå¡å¨æ¯å¨ 2024å¹´ 2 æ 17 æ¥ ä»¥åä¹ååå¸çï¼ï¼ 575 * 576 * @param okFun {function} æä½æåä¹åçåè°å½æ° è¾å ¥æ¯è¢«å建çæä»¶ç®å½çjson对象 577 * @param errorFun {function} æä½å¤±è´¥ä¹åçåè°å½æ° è¾å ¥æ¯éè¯¯ä¿¡æ¯ 578 */ 579 getVersion(okFun = undefined, errorFun = (e) => 'res' in e ? alert(e['res']) : alert(e)) { 580 // å¼å§è¿è¡è¯·æ±åé 581 axios.defaults.withCredentials = true; 582 axios( 583 { 584 method: 'post', 585 url: this.diskMirrorUrl + this.getController() + '/getVersion', 586 } 587 ).then(function (res) { 588 if (okFun !== undefined) { 589 okFun(res.data); 590 } else { 591 console.info(res.data); 592 } 593 }).catch(function (err) { 594 if (errorFun !== undefined) { 595 errorFun(err); 596 } else { 597 console.error(err); 598 } 599 }); 600 } 601 602 /** 603 * è·åæå®ç©ºé´ç已使ç¨å®¹é å使¯ åè 604 * @param userId {int} éè¦è¢«æ£ç´¢ç空é´id 605 * @param type {'Binary'|'TEXT'} éè¦è¢«æ£ç´¢çæä»¶ç±»å 606 * @param okFun {function} æä½æåä¹åçåè°å½æ° è¾å ¥æ¯è®¡ç®åºæ¥ç已使ç¨å®¹é 607 * @param errorFun {function} æä½å¤±è´¥ä¹åçåè°å½æ° è¾å ¥æ¯éè¯¯ä¿¡æ¯ 608 */ 609 getUseSize(userId, type, okFun = undefined, errorFun = (e) => 'res' in e ? alert(e['res']) : alert(e)) { 610 if (userId === undefined || type == null || type === '') { 611 const err = "æ¨å¿ é¡»è¦è¾å ¥ userId å type åæ°æå¯ä»¥è¿è¡ä½¿ç¨æ°éçè·å"; 612 if (errorFun !== undefined) { 613 errorFun(err); 614 } else { 615 console.error(err); 616 } 617 return; 618 } 619 const formData = new FormData(); 620 // 设置请æ±åæ° 621 const params = { 622 userId: userId, 623 type: type,
624 "secure.key": this.getSk() 625 }; 626 const blob = new Blob([JSON.stringify(params)], { 627 type: 'application/json' 628 }); 629 formData.append('params', blob, "params"); 630 631 // å¼å§è¿è¡è¯·æ±åé 632 axios.defaults.withCredentials = true; 633 axios( 634 { 635 method: 'post', 636 url: this.diskMirrorUrl + this.getController() + '/getUseSize', 637 data: formData, 638 headers: { 639 'Content-Type': 'multipart/form-data' 640 } 641 } 642 ).then(function (res) { 643 if (okFun !== undefined) { 644 okFun(res.data); 645 } else { 646 console.info(res.data); 647 } 648 }).catch(function (err) { 649 if (errorFun !== undefined) { 650 errorFun(err); 651 } else { 652 console.error(err); 653 } 654 }); 655 } 656 657 /** 658 * å¨ä¸äºæä½ä¸ï¼æä»¬å¯è½éè¦å° sk å å«å¨ cookie ä¸ï¼å æ¤å¯è½ä¼éè¦ä½¿ç¨è¿ä¸ªå½æ°ï¼è¿ä¸ªå½æ°ä¸è¬æ¥è¯´ä¸éè¦ç¨æ·æå¨è°ç¨ï¼ 659 * 660 * å 为å¨è®¾ç½®å¥½ sk çæ¶åï¼å®ä¼èªå¨è¢«è°ç¨ï¼è¯·å¿éæä¿®æ¹æ¤å½æ°å¸¦æ¥çcookieï¼æäºå端æå¡ä¼ä½¿ç¨å°ï¼ 661 * 662 * @param domain {string} éè¦è¢«è®¾ç½®çcookieçåå é»è®¤æ¯å½åå 663 */ 664 setDiskMirrorXorSecureKey(domain) { 665 // æ£æ¥å为 diskMirror_xor_secure_key ç cookie æ¯å¦åå¨ 666 const cookieName = 'diskMirror_xor_secure_key'; 667 // 妿åå¨å°±æ´æ° cookie çå¼ 668 const encryptedValue = this.xorEncrypt(this.getSk()); 669 if (this.isSetCookie && this.cookieValue === encryptedValue && this.cookieDoMain === domain) { 670 // å¦æè®¾ç½®è¿ cookie ä¸ å¼ å å ç¸å åè¿éå°±ä¸ç»§ç»æ´æ° cookie äº 671 return; 672 } 673 if (domain) { 674 document.cookie = `${cookieName}=${encryptedValue};path=/;domain=${domain}`; 675 return; 676 } 677 document.cookie = `${cookieName}=${encryptedValue};path=/`; 678 // æ è®° cookie ä¿¡æ¯ 679 this.isSetCookie = true; 680 this.cookieValue = encryptedValue; 681 this.cookieDoMain = domain; 682 } 683 684 /** 685 * è·åæå®ç©ºé´çææçè¿åº¦æ¡ 686 * @param userId {int|string} æå®è¦è·åå°çæä»¶è¿åº¦æ°æ®å¯¹åºç空é´id 687 * @param okFun {function} æä½æåä¹åçåè°å½æ° è¾å ¥æ¯è¢«æä»¶è¿åº¦çjson对象 688 * @param errorFun {function} æä½å¤±è´¥ä¹åçåè°å½æ° è¾å ¥æ¯éè¯¯ä¿¡æ¯ 689 * @param checkFun {function} æä½åçæ£æ¥å½æ° è¾å ¥æ¯è¯·æ±åæ°å¯¹è±¡ï¼å¦æè¿åçæ¯ä¸ä¸ªfalse åä»£è¡¨æ£æ¥å¤±è´¥ä¸ç»§ç»æä½ 690 */ 691 getAllProgressBar(userId, okFun = undefined, errorFun = (e) => 'res' in e ? alert(e['res']) : alert(e), checkFun = undefined) { 692 if (userId === undefined || okFun === undefined) { 693 const err = "æ¨å¿ é¡»è¦è¾å ¥ userId å okFun åæ°æå¯ä»¥è¿è¡æä»¶å¯¹è±¡çè·åï¼"; 694 if (errorFun !== undefined) { 695 errorFun(err); 696 } else { 697 console.error(err); 698 } 699 return; 700 } 701 if (checkFun !== undefined && !checkFun(userId)) { 702 return; 703 } 704 axios.defaults.withCredentials = true; 705 // å¼å§è·å 706 axios( 707 { 708 method: 'post', 709 url: this.diskMirrorUrl + this.getController() + '/getAllProgressBar', 710 params: { 711 id: userId 712 } 713 } 714 ).then(function (res) { 715 // å¤çæå 716 if (okFun !== undefined) { 717 okFun(res.data); 718 } else { 719 console.info(res.data); 720 } 721 }).catch(function (err) { 722 // å¤çé误 723 if (errorFun !== undefined) { 724 errorFun(err); 725 } else { 726 console.error(err); 727 } 728 }); 729 } 730 731 /** 732 * å°å½å客æ·ç«¯è¿æ¥çæå¡å¨å ³æºï¼å¦ææå¡å¨ç«¯åæ¯æçè¯ï¼åä¼è¿åå ³æºæææä¿¡æ¯ï¼ 733 * 734 * @param password {string} å ³æºæä½çæ ¡éªç ï¼å¦ææ ¡éªç 䏿£ç¡®ï¼åæ æ³å¤çå ³æºè¯·æ± 735 * @param okFun {function} æä½æåä¹åçåè°å½æ° è¾å ¥æ¯è¢«æä»¶è¿åº¦çjson对象 736 * @param errorFun {function} æä½å¤±è´¥ä¹åçåè°å½æ° è¾å ¥æ¯éè¯¯ä¿¡æ¯ 737 */ 738 shutdown(password, okFun = undefined, errorFun = (e) => 'res' in e ? alert(e['res']) : alert(e)) { 739 axios.defaults.withCredentials = true; 740 // å¼å§è·å 741 axios( 742 { 743 method: 'post', 744 url: this.diskMirrorUrl + this.getController() + '/shutdown', 745 params: { 746 password: password 747 } 748 } 749 ).then(function (res) { 750 // å¤çæå 751 if (okFun !== undefined) { 752 okFun(res.data); 753 } else { 754 console.info(res.data); 755 } 756 }).catch(function (err) { 757 // å¤çé误 758 if (errorFun !== undefined) { 759 errorFun(err); 760 } else { 761 console.error(err); 762 } 763 }); 764 } 765 766}
Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.