2021-06-08 21:09:35 +08:00
|
|
|
const MonkeyError = require("./error");
|
2021-07-07 21:03:38 +08:00
|
|
|
|
2021-07-06 21:52:29 +08:00
|
|
|
function isUsernameValid(name) {
|
|
|
|
if (name === null || name === undefined || name === "") return false;
|
2021-09-14 22:43:28 +08:00
|
|
|
if (/.*miodec.*/.test(name.toLowerCase())) return false;
|
2021-09-14 22:38:44 +08:00
|
|
|
//sorry for the bad words
|
|
|
|
if (
|
2021-09-14 22:43:28 +08:00
|
|
|
/.*(bitly|fuck|bitch|shit|pussy|nigga|niqqa|niqqer|nigger|ni99a|ni99er|niggas|niga|niger|cunt|faggot|retard).*/.test(
|
2021-09-14 22:38:44 +08:00
|
|
|
name.toLowerCase()
|
|
|
|
)
|
|
|
|
)
|
|
|
|
return false;
|
2021-07-06 21:52:29 +08:00
|
|
|
if (name.length > 14) return false;
|
|
|
|
if (/^\..*/.test(name.toLowerCase())) return false;
|
|
|
|
return /^[0-9a-zA-Z_.-]+$/.test(name);
|
|
|
|
}
|
|
|
|
|
|
|
|
function isTagPresetNameValid(name) {
|
|
|
|
if (name === null || name === undefined || name === "") return false;
|
|
|
|
if (name.length > 16) return false;
|
|
|
|
return /^[0-9a-zA-Z_.-]+$/.test(name);
|
|
|
|
}
|
|
|
|
|
|
|
|
function isConfigKeyValid(name) {
|
|
|
|
if (name === null || name === undefined || name === "") return false;
|
2021-07-09 06:27:19 +08:00
|
|
|
if (name.length > 40) return false;
|
2021-07-06 21:52:29 +08:00
|
|
|
return /^[0-9a-zA-Z_.\-#+]+$/.test(name);
|
|
|
|
}
|
|
|
|
|
|
|
|
function validateConfig(config) {
|
|
|
|
Object.keys(config).forEach((key) => {
|
|
|
|
if (!isConfigKeyValid(key)) {
|
|
|
|
throw new MonkeyError(500, `Invalid config: ${key} failed regex check`);
|
|
|
|
}
|
2021-08-03 23:08:15 +08:00
|
|
|
// if (key === "resultFilters") return;
|
|
|
|
// if (key === "customBackground") return;
|
|
|
|
if (key === "customBackground" || key === "customLayoutfluid") {
|
2021-08-04 21:38:00 +08:00
|
|
|
let val = config[key];
|
|
|
|
if (/[<>]/.test(val)) {
|
2021-08-03 23:08:15 +08:00
|
|
|
throw new MonkeyError(
|
|
|
|
500,
|
2021-08-04 21:38:00 +08:00
|
|
|
`Invalid config: ${key}:${val} failed regex check`
|
2021-08-03 23:08:15 +08:00
|
|
|
);
|
|
|
|
}
|
2021-08-04 21:38:00 +08:00
|
|
|
} else {
|
|
|
|
let val = config[key];
|
|
|
|
if (Array.isArray(val)) {
|
|
|
|
val.forEach((valarr) => {
|
|
|
|
if (!isConfigKeyValid(valarr)) {
|
|
|
|
throw new MonkeyError(
|
|
|
|
500,
|
|
|
|
`Invalid config: ${key}:${valarr} failed regex check`
|
|
|
|
);
|
|
|
|
}
|
|
|
|
});
|
|
|
|
} else {
|
|
|
|
if (!isConfigKeyValid(val)) {
|
2021-07-06 21:52:29 +08:00
|
|
|
throw new MonkeyError(
|
|
|
|
500,
|
2021-08-04 21:38:00 +08:00
|
|
|
`Invalid config: ${key}:${val} failed regex check`
|
2021-07-06 21:52:29 +08:00
|
|
|
);
|
2021-06-08 21:09:35 +08:00
|
|
|
}
|
2021-07-06 21:52:29 +08:00
|
|
|
}
|
2021-06-13 02:02:06 +08:00
|
|
|
}
|
2021-07-06 21:52:29 +08:00
|
|
|
});
|
|
|
|
return true;
|
|
|
|
}
|
|
|
|
|
|
|
|
function validateObjectValues(val) {
|
|
|
|
let errCount = 0;
|
|
|
|
if (val === null || val === undefined) {
|
|
|
|
//
|
|
|
|
} else if (Array.isArray(val)) {
|
|
|
|
//array
|
|
|
|
val.forEach((val2) => {
|
|
|
|
errCount += validateObjectValues(val2);
|
|
|
|
});
|
|
|
|
} else if (typeof val === "object" && !Array.isArray(val)) {
|
|
|
|
//object
|
|
|
|
Object.keys(val).forEach((valkey) => {
|
|
|
|
errCount += validateObjectValues(val[valkey]);
|
|
|
|
});
|
|
|
|
} else {
|
2021-07-07 21:03:38 +08:00
|
|
|
if (!/^[0-9a-zA-Z._\-+]+$/.test(val)) {
|
|
|
|
errCount++;
|
|
|
|
}
|
2021-06-07 20:52:06 +08:00
|
|
|
}
|
2021-07-07 21:03:38 +08:00
|
|
|
return errCount;
|
2021-07-06 21:52:29 +08:00
|
|
|
}
|
|
|
|
|
|
|
|
module.exports = {
|
|
|
|
isUsernameValid,
|
|
|
|
isTagPresetNameValid,
|
|
|
|
validateConfig,
|
|
|
|
validateObjectValues,
|
2021-06-07 00:32:37 +08:00
|
|
|
};
|