Added zlib, fixed wildcard import ignoring namespaces

This commit is contained in:
2017-10-26 16:17:17 +08:00
parent 6e05b2d5c1
commit 7ab3fa333e
16 changed files with 149 additions and 28 deletions

View File

@@ -1,9 +1,4 @@
import os
import re
import base64
import zlib
import hashlib
import os, re, base64, zlib, hashlib, binascii
import xml.etree.ElementTree as ET
PY_SEP = os.path.sep
@@ -200,7 +195,7 @@ class BotanClassResolver:
# Root file date
dates.append( os.path.getmtime( os.path.join( self.R, "_this.js" ) ) );
if self.useCache( cFile, dates ) and self.flagCompress == True:
if self.flagCompress and self.useCache( cFile, dates ):
return cFHash if self.returnHash else self.BotanCache( cFile )
elif self.useCache( oFile, dates ):
@@ -303,7 +298,6 @@ class BotanClassResolver:
self.resv._reload()
flag = mode[0]
requestAPIs = code
sp = "/"
if flag == "o":
mode = mode[1:]
@@ -312,12 +306,16 @@ class BotanClassResolver:
self.flagCompress = False
else:
self.returnHash = True
try:
requestAPIs = (
# decode -> decompress -> split
zlib.decompress( base64.b64decode( code, None, True ) )
.decode( "utf-8" )
)
sp = ","
except binascii.Error:
sp = "/"
# strip malicious
requestAPIs = (

View File

@@ -2,6 +2,7 @@
from flask import Flask
from flask import Response
from flask import render_template
from flask import request
from botanjs.service.jclassresv import BotanClassResolver as JCResv
from botanjs.service.jwork import app as CeleryApp, JWork
from botanjs.config import Config, DEBUG
@@ -25,12 +26,12 @@ class WebAPI:
if brokerURL != None:
CeleryApp.conf.update( BROKER_URL = brokerURL )
print( __name__ )
self.app = Flask( __name__, static_url_path = self.BCache, static_folder = self.BCache )
self.app.jinja_env.add_extension( "compressinja.html.HtmlCompressor" )
self.app.add_url_rule( "/" , view_func = self.index )
self.app.add_url_rule( "/<path:mode>/<path:code>" , view_func = self.api_request )
self.app.add_url_rule( "/<mode>/" , view_func = lambda mode: self.api_request( mode, "zpayload" ) )
self.app.add_url_rule( "/<mode>/<path:code>" , view_func = self.api_request )
self.app.run(
host = Config[ "Service" ][ "BindAddress" ]
@@ -41,6 +42,10 @@ class WebAPI:
return "Hello, this is the BotanJS Service API.", 200
def api_request( self, mode, code ):
if code == "zpayload":
code = request.args.get( "p" )
try:
t = mode[1:]
if t == "js":