UNPKG

ali-flmngr-server-fixed

Version:

> Node.js Backend for Flmngr file manager

82 lines 4.4 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.ActionUploadAddFile = void 0; const AActionUploadId_1 = require("../action/AActionUploadId"); const MessageException_1 = require("../MessageException"); const Message_1 = require("../action/resp/Message"); const RespUploadAddFile_1 = require("../action/resp/RespUploadAddFile"); const FileUploaded_1 = require("../file/FileUploaded"); const RespFail_1 = require("../action/resp/RespFail"); class ActionUploadAddFile extends AActionUploadId_1.AActionUploadId { getName() { return "uploadAddFile"; } run(request, onFinish) { let req = request; this.validateUploadId(req); let file; if (req["url"] == null) { if (req["m_fileName"] == null || req["m_file"] == null) throw new MessageException_1.MessageException(Message_1.Message.createMessage(Message_1.Message.NO_FILE_UPLOADED)); if (this.m_config.getMaxUploadFileSize() > 0 && req["m_fileSize"] > this.m_config.getMaxUploadFileSize()) throw new MessageException_1.MessageException(Message_1.Message.createMessage(Message_1.Message.FILE_SIZE_EXCEEDS_LIMIT, req["m_fileName"], req["m_fileSize"].toString(), this.m_config.getMaxUploadFileSize().toString())); file = new FileUploaded_1.FileUploaded(this.m_config, req["uploadId"], req["m_fileName"], req["m_fileName"]); let ext = file.getExt().toLowerCase(); let allowedExts = this.m_config.getAllowedExtensions(); let isAllowedExt = allowedExts.length === 0; for (let i = 0; i < allowedExts.length && !isAllowedExt; i++) isAllowedExt = allowedExts[i] === ext; if (!isAllowedExt) { let strExts = ""; for (let i = 0; i < allowedExts.length; i++) { if (i > 0) strExts += ", "; strExts += allowedExts[i]; } throw new MessageException_1.MessageException(Message_1.Message.createMessage(Message_1.Message.INCORRECT_EXTENSION, req["m_fileName"], strExts.toString())); } file.uploadAndCommit(req["m_file"]); let resp = new RespUploadAddFile_1.RespUploadAddFile(); resp["file"] = file.getData(); onFinish(resp); } else { let relocateHosts = this.m_config.getRelocateFromHosts(); let host = null; try { let url = new URL(req["url"]); host = url.hostname; } catch (e) { if (e instanceof TypeError) // the same as MalformedURLException in Java throw new MessageException_1.MessageException(Message_1.Message.createMessage(Message_1.Message.DOWNLOAD_FAIL_INCORRECT_URL, req["url"])); } let isHostAllowed = false; for (let i = 0; i < relocateHosts.length && !isHostAllowed; i++) if (relocateHosts[i].toLowerCase() === host) isHostAllowed = true; if (relocateHosts.length === 0 || isHostAllowed) { file = new FileUploaded_1.FileUploaded(this.m_config, req["uploadId"], null, null); file.rehost(req["url"], (result) => { if (result instanceof MessageException_1.MessageException) { onFinish(new RespFail_1.RespFail(result.getFailMessage())); } else if (result instanceof Error) { console.log(result); onFinish(new RespFail_1.RespFail(Message_1.Message.createMessage(Message_1.Message.INTERNAL_ERROR))); } else { let resp = new RespUploadAddFile_1.RespUploadAddFile(); resp["file"] = file.getData(); onFinish(resp); } }); } else { throw new MessageException_1.MessageException(Message_1.Message.createMessage(Message_1.Message.DOWNLOAD_FAIL_HOST_DENIED, host)); } } } } exports.ActionUploadAddFile = ActionUploadAddFile; //# sourceMappingURL=ActionUploadAddFile.js.map