2018-10-27 18:58:52 +05:30
|
|
|
import re
|
2018-11-15 15:41:01 +05:30
|
|
|
|
2018-10-27 18:58:52 +05:30
|
|
|
from core.config import xsschecker
|
2018-11-15 15:41:01 +05:30
|
|
|
from core.utils import stripper
|
2018-10-27 18:58:52 +05:30
|
|
|
|
2018-11-16 21:13:45 +05:30
|
|
|
|
2018-10-27 18:58:52 +05:30
|
|
|
def jsContexter(script):
|
|
|
|
|
broken = script.split(xsschecker)
|
|
|
|
|
pre = broken[0]
|
2018-11-16 21:13:45 +05:30
|
|
|
# remove everything that is between {..}, "..." or '...'
|
2023-11-10 23:34:53 +01:00
|
|
|
pre = re.sub(r'\{.*?\}|\(.*?\)|".*?"|\'.*?\'', '', pre)
|
2018-10-28 23:56:12 +05:30
|
|
|
breaker = ''
|
2018-10-27 18:58:52 +05:30
|
|
|
num = 0
|
2018-11-16 21:13:45 +05:30
|
|
|
for char in pre: # iterate over the remaining characters
|
2018-10-27 18:58:52 +05:30
|
|
|
if char == '{':
|
2018-10-28 23:56:12 +05:30
|
|
|
breaker += '}'
|
2018-10-27 18:58:52 +05:30
|
|
|
elif char == '(':
|
2018-11-16 21:13:45 +05:30
|
|
|
breaker += ';)' # yes, it should be ); but we will invert the whole thing later
|
2018-10-27 18:58:52 +05:30
|
|
|
elif char == '[':
|
2018-10-28 23:56:12 +05:30
|
|
|
breaker += ']'
|
2018-10-27 18:58:52 +05:30
|
|
|
elif char == '/':
|
|
|
|
|
try:
|
|
|
|
|
if pre[num + 1] == '*':
|
2018-10-28 23:56:12 +05:30
|
|
|
breaker += '/*'
|
2018-10-27 18:58:52 +05:30
|
|
|
except IndexError:
|
|
|
|
|
pass
|
2018-11-16 21:13:45 +05:30
|
|
|
elif char == '}': # we encountered a } so we will strip off "our }" because this one does the job
|
2018-10-28 23:56:12 +05:30
|
|
|
breaker = stripper(breaker, '}')
|
2018-11-16 21:13:45 +05:30
|
|
|
elif char == ')': # we encountered a ) so we will strip off "our }" because this one does the job
|
2018-10-28 23:56:12 +05:30
|
|
|
breaker = stripper(breaker, ')')
|
2018-11-16 21:13:45 +05:30
|
|
|
elif breaker == ']': # we encountered a ] so we will strip off "our }" because this one does the job
|
2018-10-28 23:56:12 +05:30
|
|
|
breaker = stripper(breaker, ']')
|
2018-10-27 18:58:52 +05:30
|
|
|
num += 1
|
2018-11-16 21:13:45 +05:30
|
|
|
return breaker[::-1] # invert the breaker string
|