ali-flmngr-server-fixed
Version:
> Node.js Backend for Flmngr file manager
82 lines • 4.4 kB
JavaScript
;
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