| 
									
										
										
										
											2018-01-16 20:02:35 -08:00
										 |  |  | import _ from 'lodash/fp'; | 
					
						
							| 
									
										
										
										
											2016-08-14 23:22:34 -07:00
										 |  |  | 
 | 
					
						
							|  |  |  | // we don't store loop protect disable key
 | 
					
						
							| 
									
										
										
										
											2018-01-16 20:02:35 -08:00
										 |  |  | export const removeNoprotect = _.replace(/noprotect/gi, ''); | 
					
						
							| 
									
										
										
										
											2016-08-14 23:22:34 -07:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2018-01-16 20:02:35 -08:00
										 |  |  | export const encodeScriptTags = _.flow( | 
					
						
							|  |  |  |   _.replace(/<script>/gi, 'fccss'), | 
					
						
							|  |  |  |   _.replace(/<\/script>/gi, 'fcces') | 
					
						
							|  |  |  | ); | 
					
						
							| 
									
										
										
										
											2016-08-14 23:22:34 -07:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2018-01-16 20:02:35 -08:00
										 |  |  | export const decodeScriptTags = _.flow( | 
					
						
							|  |  |  |   _.replace(/fccss/gi, '<script>'), | 
					
						
							|  |  |  |   _.replace(/fcces/gi, '</script>') | 
					
						
							|  |  |  | ); | 
					
						
							| 
									
										
										
										
											2016-08-14 23:22:34 -07:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2018-01-16 20:02:35 -08:00
										 |  |  | export const encodeFormAction = _.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
 | 
					
						
							|  |  |  |   _.replace(/action(\s*?)=/, 'fccfaa$1=') | 
					
						
							|  |  |  | ); | 
					
						
							| 
									
										
										
										
											2016-08-14 23:22:34 -07:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2018-01-16 20:02:35 -08:00
										 |  |  | export const decodeFormAction = _.replace( | 
					
						
							|  |  |  |   /<form[^>]*>/, | 
					
						
							|  |  |  |   _.replace(/fccfaa(\s*?)=/, 'action$1=') | 
					
						
							|  |  |  | ); | 
					
						
							| 
									
										
										
										
											2016-08-14 23:22:34 -07:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2018-01-16 20:02:35 -08:00
										 |  |  | export const encodeFcc = _.flow( | 
					
						
							| 
									
										
										
										
											2016-08-14 23:22:34 -07:00
										 |  |  |   removeNoprotect, | 
					
						
							|  |  |  |   encodeFormAction, | 
					
						
							|  |  |  |   encodeScriptTags | 
					
						
							| 
									
										
										
										
											2018-01-16 20:02:35 -08:00
										 |  |  | ); | 
					
						
							| 
									
										
										
										
											2016-08-14 23:22:34 -07:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2018-01-16 20:02:35 -08:00
										 |  |  | export const decodeFcc = _.flow( | 
					
						
							| 
									
										
										
										
											2016-08-14 23:22:34 -07:00
										 |  |  |   decodeFormAction, | 
					
						
							|  |  |  |   decodeScriptTags | 
					
						
							| 
									
										
										
										
											2018-01-16 20:02:35 -08:00
										 |  |  | ); |