47 lines
1.0 KiB
JavaScript
47 lines
1.0 KiB
JavaScript
|
import flow from 'lodash/flow';
|
||
|
|
||
|
// we don't store loop protect disable key
|
||
|
export function removeNoprotect(val) {
|
||
|
return val.replace(/noprotect/gi, '');
|
||
|
}
|
||
|
|
||
|
export function encodeScriptTags(val) {
|
||
|
return val
|
||
|
.replace(/<script>/gi, 'fccss')
|
||
|
.replace(/<\/script>/gi, 'fcces');
|
||
|
}
|
||
|
|
||
|
export function decodeScriptTags(val) {
|
||
|
return val
|
||
|
.replace(/fccss/gi, '<script>')
|
||
|
.replace(/fcces/gi, '</script>');
|
||
|
}
|
||
|
|
||
|
export function encodeFormAction(val) {
|
||
|
return val.replace(
|
||
|
// look for attributes in a form
|
||
|
/<form[^>]*>/,
|
||
|
// val is the string within the opening form tag
|
||
|
// look for an `action` attribute, replace it with a fcc tag
|
||
|
val => val.replace(/action(\s*?)=/, 'fccfaa$1=')
|
||
|
);
|
||
|
}
|
||
|
|
||
|
export function decodeFormAction(val) {
|
||
|
return val.replace(
|
||
|
/<form[^>]*>/,
|
||
|
val => val.replace(/fccfaa(\s*?)=/, 'action$1=')
|
||
|
);
|
||
|
}
|
||
|
|
||
|
export const encodeFcc = flow([
|
||
|
removeNoprotect,
|
||
|
encodeFormAction,
|
||
|
encodeScriptTags
|
||
|
]);
|
||
|
|
||
|
export const decodeFcc = flow([
|
||
|
decodeFormAction,
|
||
|
decodeScriptTags
|
||
|
]);
|