Limit network name length and replace spaces in log folders

This commit is contained in:
Pavel Djundik 2018-09-09 13:09:30 +03:00
parent a4f889d134
commit b538360c5e
2 changed files with 43 additions and 2 deletions

View file

@ -31,8 +31,7 @@ class TextFileMessageStorage {
return;
}
const networkFolderName = cleanFilename(`${network.name}-${network.uuid.substring(network.name.length + 1)}`);
const logPath = path.join(Helper.getUserLogsPath(), this.client.name, networkFolderName);
const logPath = path.join(Helper.getUserLogsPath(), this.client.name, TextFileMessageStorage.getNetworkFolderName(network));
try {
fsextra.ensureDirSync(logPath);
@ -114,6 +113,14 @@ class TextFileMessageStorage {
canProvideMessages() {
return false;
}
static getNetworkFolderName(network) {
// Limit network name in the folder name to 23 characters
// So we can still fit 12 characters of the uuid for de-duplication
const networkName = cleanFilename(network.name.substring(0, 23).replace(/ /g, "-"));
return `${networkName}-${network.uuid.substring(networkName.length + 1)}`;
}
}
module.exports = TextFileMessageStorage;

View file

@ -0,0 +1,34 @@
"use strict";
const expect = require("chai").expect;
const TextFileMessageStorage = require("../../src/plugins/messageStorage/text");
describe("TextFileMessageStorage", function() {
it("should combine network name and uuid into a safe name", function() {
expect(TextFileMessageStorage.getNetworkFolderName({
name: "Freenode",
uuid: "f9042ec9-4016-45e0-a8a8-d378fb252628",
})).to.equal("freenode-4016-45e0-a8a8-d378fb252628");
});
it("network name should be cleaned up and lowercased", function() {
expect(TextFileMessageStorage.getNetworkFolderName({
name: "@ TeSt ../..\\<>:\"/\\|?*",
uuid: "f9042ec9-4016-45e0-a8a8-d378fb252628",
})).to.equal("@-test-.._..--45e0-a8a8-d378fb252628");
});
it("folder name may contain two dashes if on boundary", function() {
expect(TextFileMessageStorage.getNetworkFolderName({
name: "Freenod",
uuid: "f9042ec9-4016-45e0-a8a8-d378fb252628",
})).to.equal("freenod--4016-45e0-a8a8-d378fb252628");
});
it("should limit network name length", function() {
expect(TextFileMessageStorage.getNetworkFolderName({
name: "This network name is longer than the uuid itself but it should be limited",
uuid: "f9042ec9-4016-45e0-a8a8-d378fb252628",
})).to.equal("this-network-name-is-lo-d378fb252628");
});
});