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
							 | 
						||
| 
								 | 
							
								]);
							 |