|
|
@ -30,24 +30,12 @@ import cms.sites
|
|
|
|
|
|
|
|
|
|
|
|
_app = Flask(__name__)
|
|
|
|
_app = Flask(__name__)
|
|
|
|
cli = typer.Typer()
|
|
|
|
cli = typer.Typer()
|
|
|
|
@_app.route('/favicon.ico')
|
|
|
|
|
|
|
|
@_app.route('/<id>/favicon.ico')
|
|
|
|
|
|
|
|
def favicon(id):
|
|
|
|
|
|
|
|
global _route
|
|
|
|
|
|
|
|
# _system = _route.get ().system()
|
|
|
|
|
|
|
|
# _handler = _route.get()
|
|
|
|
|
|
|
|
_handler = _getHandler(id)
|
|
|
|
|
|
|
|
_system = _handler.system()
|
|
|
|
|
|
|
|
_logo =_system['icon'] #if 'icon' in _system else 'static/img/logo.svg'
|
|
|
|
|
|
|
|
_stream = requests.get(''.join([request.host_url,_logo]))
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
return "_stream",200,{"Content-Type":"image/png"} #_handler.get(_logo),200,{"content-type":"image/png"}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
def _getHandler (app_id,resource=None) :
|
|
|
|
def _getHandler (app_id,resource=None) :
|
|
|
|
global _route
|
|
|
|
global _qcms
|
|
|
|
_id = _getId(app_id,resource)
|
|
|
|
_id = _getId(app_id,resource)
|
|
|
|
|
|
|
|
|
|
|
|
return _route._apps[_id]
|
|
|
|
return _qcms._apps[_id]
|
|
|
|
def _getId(app_id,app_x):
|
|
|
|
def _getId(app_id,app_x):
|
|
|
|
if app_x not in [None,''] :
|
|
|
|
if app_x not in [None,''] :
|
|
|
|
_uri = '/'.join([app_id,app_x])
|
|
|
|
_uri = '/'.join([app_id,app_x])
|
|
|
@ -56,23 +44,25 @@ def _getId(app_id,app_x):
|
|
|
|
def _setHandler (app_id,resource) :
|
|
|
|
def _setHandler (app_id,resource) :
|
|
|
|
session['app_id'] = _getId(app_id,resource)
|
|
|
|
session['app_id'] = _getId(app_id,resource)
|
|
|
|
|
|
|
|
|
|
|
|
@_app.route("/robots.txt")
|
|
|
|
@_app.route("/<_id>/robots.txt")
|
|
|
|
def robots_txt():
|
|
|
|
@_app.route("/robots.txt",defaults={'_id':None})
|
|
|
|
|
|
|
|
def robots_txt(_id):
|
|
|
|
"""
|
|
|
|
"""
|
|
|
|
This function will generate a robots expression for a variety of crawlers, the paths will be provided by
|
|
|
|
This function will generate a robots expression for a variety of crawlers, the paths will be provided by
|
|
|
|
menu options
|
|
|
|
menu options
|
|
|
|
"""
|
|
|
|
"""
|
|
|
|
global _route
|
|
|
|
global _qcms
|
|
|
|
_system = _route.get ().system()
|
|
|
|
_site = _qcms.get (_id)
|
|
|
|
|
|
|
|
_routes = _site.get('system.routes')
|
|
|
|
_info = ['''
|
|
|
|
_context = _site.get('system.context')
|
|
|
|
|
|
|
|
_info = [f'''
|
|
|
|
User-agent: *
|
|
|
|
User-agent: *
|
|
|
|
Allow: /
|
|
|
|
Allow: /{_context}
|
|
|
|
''']
|
|
|
|
''']
|
|
|
|
|
|
|
|
|
|
|
|
if 'routes' in _system :
|
|
|
|
if _routes :
|
|
|
|
for _key in _system['routes'] :
|
|
|
|
for _key in _routes:
|
|
|
|
_uri = '/'.join(['',_key])
|
|
|
|
_uri = '/'.join(["",_context,_key])
|
|
|
|
_info.append(f'''
|
|
|
|
_info.append(f'''
|
|
|
|
User-agent: *
|
|
|
|
User-agent: *
|
|
|
|
Allow: {_uri}
|
|
|
|
Allow: {_uri}
|
|
|
@ -84,14 +74,14 @@ def _getIndex (app_id ,resource=None):
|
|
|
|
_handler = _getHandler(app_id,resource)
|
|
|
|
_handler = _getHandler(app_id,resource)
|
|
|
|
_layout = _handler.layout()
|
|
|
|
_layout = _handler.layout()
|
|
|
|
_status_code = 200
|
|
|
|
_status_code = 200
|
|
|
|
global _route
|
|
|
|
global _qcms
|
|
|
|
_index_page = 'index.html'
|
|
|
|
_index_page = 'index.html'
|
|
|
|
_args = {}
|
|
|
|
_args = {}
|
|
|
|
|
|
|
|
|
|
|
|
try :
|
|
|
|
try :
|
|
|
|
_uri = os.sep.join([_layout['root'],_layout['index']])
|
|
|
|
_uri = os.sep.join([_layout['root'],_layout['index']])
|
|
|
|
_id = _getId(app_id,resource)
|
|
|
|
_id = _getId(app_id,resource)
|
|
|
|
_args = _route.render(_uri,'index',_id)
|
|
|
|
_args = _qcms.render(_uri,'index',_id)
|
|
|
|
|
|
|
|
|
|
|
|
except Exception as e:
|
|
|
|
except Exception as e:
|
|
|
|
_status_code = 404
|
|
|
|
_status_code = 404
|
|
|
@ -101,96 +91,63 @@ def _getIndex (app_id ,resource=None):
|
|
|
|
@_app.route("/")
|
|
|
|
@_app.route("/")
|
|
|
|
def _index ():
|
|
|
|
def _index ():
|
|
|
|
# return _getIndex('main')
|
|
|
|
# return _getIndex('main')
|
|
|
|
global _route
|
|
|
|
global _qcms
|
|
|
|
_app = _route.get(None)
|
|
|
|
_app = _qcms.get(None)
|
|
|
|
_uri = os.sep.join([_app.get('layout.root'),_app.get('layout.index')])
|
|
|
|
_uri = os.sep.join([_app.get('layout.root'),_app.get('layout.index')])
|
|
|
|
_html = _route.render(_uri,'index')
|
|
|
|
_html = _qcms.render(_uri,'index')
|
|
|
|
return render_template('index.html',**_route.render(_uri,'index')),200
|
|
|
|
return render_template('index.html',**_qcms.render(_uri,'index')),200
|
|
|
|
|
|
|
|
|
|
|
|
@_app.route("/<app>/<resource>")
|
|
|
|
@_app.route("/<app>/<resource>")
|
|
|
|
@_app.route("/<app>",defaults={'resource':None})
|
|
|
|
@_app.route("/<app>",defaults={'resource':None})
|
|
|
|
def _altIndex(app,resource):
|
|
|
|
def _altIndex(app,resource):
|
|
|
|
global _route
|
|
|
|
global _qcms
|
|
|
|
_id = _getId(app,resource)
|
|
|
|
_id = _getId(app,resource)
|
|
|
|
|
|
|
|
_site = _qcms.get(_id)
|
|
|
|
_site = _route.get(_id)
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
_uri = os.sep.join([_site.get('layout.root'),_site.get('layout.index')])
|
|
|
|
_uri = os.sep.join([_site.get('layout.root'),_site.get('layout.index')])
|
|
|
|
return render_template('index.html',**_route.render(_uri,'index',_id)),200
|
|
|
|
return render_template('index.html',**_qcms.render(_uri,'index',_id)),200
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
# def _aindex (app,resource=None):
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
# _handler = _getHandler(app,resource)
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
# _setHandler(app,resource)
|
|
|
|
|
|
|
|
# _html,_code = _getIndex(app,resource)
|
|
|
|
|
|
|
|
# return _html,_code
|
|
|
|
|
|
|
|
# @_app.route('/id/<uid>')
|
|
|
|
|
|
|
|
# def people(uid):
|
|
|
|
|
|
|
|
# """
|
|
|
|
|
|
|
|
# This function will implement hardened links that can directly "do something"
|
|
|
|
|
|
|
|
# """
|
|
|
|
|
|
|
|
# global _config
|
|
|
|
|
|
|
|
# return "0",200
|
|
|
|
|
|
|
|
@_app.route('/<app>/dialog')
|
|
|
|
@_app.route('/<app>/dialog')
|
|
|
|
@_app.route('/dialog',defaults={'app':None})
|
|
|
|
@_app.route('/dialog',defaults={'app':None})
|
|
|
|
def _getdialog(app):
|
|
|
|
def _getdialog(app):
|
|
|
|
global _route
|
|
|
|
global _qcms
|
|
|
|
_site = _route.get(app)
|
|
|
|
_site = _qcms.get(app)
|
|
|
|
_uri = request.headers['uri']
|
|
|
|
_uri = request.headers['uri']
|
|
|
|
_id = request.headers['dom']
|
|
|
|
_id = request.headers['dom']
|
|
|
|
# _html = ''.join(["<div style='padding:1%'>",str( e.render(**_args)),'</div>'])
|
|
|
|
# _html = ''.join(["<div style='padding:1%'>",str( e.render(**_args)),'</div>'])
|
|
|
|
_args = _route.render(_uri,'html',app) #session.get('app_id','main'))
|
|
|
|
_args = _qcms.render(_uri,'html',app) #session.get('app_id','main'))
|
|
|
|
_args['title'] = _id
|
|
|
|
_args['title'] = _id
|
|
|
|
return render_template('dialog.html',**_args) #title=_id,html=_html)
|
|
|
|
return render_template('dialog.html',**_args) #title=_id,html=_html)
|
|
|
|
|
|
|
|
|
|
|
|
@_app.route("/api/<module>/<name>",defaults={'app':None,'key':None},methods=['GET','POST','DELETE','PUT'])
|
|
|
|
@_app.route("/api/<module>/<name>",defaults={'app':None,'key':None},methods=['GET','POST','DELETE','PUT'])
|
|
|
|
@_app.route("/<app>/api/<module>/<name>",defaults={'key':None},methods=['GET','POST','DELETE','PUT'])
|
|
|
|
@_app.route("/<app>/api/<module>/<name>",defaults={'key':None},methods=['GET','POST','DELETE','PUT'])
|
|
|
|
@_app.route("/<app>/<key>/api/<module>/<name>",methods=['GET','POST','DELETE','PUT'])
|
|
|
|
@_app.route("/<app>/<key>/api/<module>/<name>",methods=['GET','POST','DELETE','PUT'])
|
|
|
|
|
|
|
|
def _proxyCall(app,key,module,name):
|
|
|
|
def _delegate_call(app,key,module,name):
|
|
|
|
global _qcms
|
|
|
|
# _handler = _getHandler(app,key)
|
|
|
|
|
|
|
|
# uri = f'api/{module}/{name}'
|
|
|
|
|
|
|
|
# _delegate = cms.delegate()
|
|
|
|
|
|
|
|
# return _delegate(uri=uri,handler=_handler,request=request)
|
|
|
|
|
|
|
|
global _route
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
_id = _getId(app,key)
|
|
|
|
_id = _getId(app,key)
|
|
|
|
|
|
|
|
|
|
|
|
_site = _route.get(_id)
|
|
|
|
_site = _qcms.get(_id)
|
|
|
|
_uri = f'api/{module}/{name}'
|
|
|
|
_uri = f'api/{module}/{name}'
|
|
|
|
_delegate = cms.delegate()
|
|
|
|
_delegate = cms.delegate()
|
|
|
|
return _delegate(uri=_uri, handler=_site, request=request)
|
|
|
|
return _delegate(uri=_uri, handler=_site, request=request)
|
|
|
|
|
|
|
|
|
|
|
|
@_app.route('/version')
|
|
|
|
@_app.route('/version')
|
|
|
|
def _version ():
|
|
|
|
def _version ():
|
|
|
|
global _route
|
|
|
|
global _qcms
|
|
|
|
_handler = _route.get()
|
|
|
|
_site = _qcms.get()
|
|
|
|
global _config
|
|
|
|
global _config
|
|
|
|
return _handler.system()['version']
|
|
|
|
return _site.get('system.version')
|
|
|
|
@_app.route("/reload/<key>")
|
|
|
|
@_app.route("/reload/<key>")
|
|
|
|
def _reload(key) :
|
|
|
|
def _reload(key) :
|
|
|
|
global _route
|
|
|
|
global _qcms
|
|
|
|
|
|
|
|
|
|
|
|
_site = _route.get(None)
|
|
|
|
_site = _qcms.get(None)
|
|
|
|
_systemKey = _site.get('system.source.key')
|
|
|
|
_systemKey = _site.get('system.source.key')
|
|
|
|
if _systemKey == key and _systemKey:
|
|
|
|
if _systemKey == key and _systemKey:
|
|
|
|
_site.reload()
|
|
|
|
_site.reload()
|
|
|
|
return "",200
|
|
|
|
return "",200
|
|
|
|
else:
|
|
|
|
else:
|
|
|
|
return "",403
|
|
|
|
return "",403
|
|
|
|
# _system = _handler.system()
|
|
|
|
|
|
|
|
# if not 'source' in _system :
|
|
|
|
|
|
|
|
# _systemKey = None
|
|
|
|
|
|
|
|
# elif 'key' in _system['source'] and _system['source']['key']:
|
|
|
|
|
|
|
|
# _systemKey = _system['source']['key']
|
|
|
|
|
|
|
|
# # print ([key,_systemKey,_systemKey == key])
|
|
|
|
|
|
|
|
# if key and _systemKey and _systemKey == key :
|
|
|
|
|
|
|
|
# _handler.reload()
|
|
|
|
|
|
|
|
# return "",200
|
|
|
|
|
|
|
|
# pass
|
|
|
|
|
|
|
|
# return "",403
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
@_app.route('/reload',methods=['POST'])
|
|
|
|
@_app.route('/reload',methods=['POST'])
|
|
|
|
def reload():
|
|
|
|
def reload():
|
|
|
@ -202,9 +159,12 @@ def reload():
|
|
|
|
@_app.route('/<app_id>/page',methods=['POST'],defaults={'key':None})
|
|
|
|
@_app.route('/<app_id>/page',methods=['POST'],defaults={'key':None})
|
|
|
|
@_app.route('/<app_id>/<key>/page',methods=['POST'])
|
|
|
|
@_app.route('/<app_id>/<key>/page',methods=['POST'])
|
|
|
|
def getPostedPage(app_id,key):
|
|
|
|
def getPostedPage(app_id,key):
|
|
|
|
global _route
|
|
|
|
"""
|
|
|
|
|
|
|
|
This function will return a page given a location parameter
|
|
|
|
|
|
|
|
"""
|
|
|
|
|
|
|
|
global _qcms
|
|
|
|
_id = _getId(app_id,key)
|
|
|
|
_id = _getId(app_id,key)
|
|
|
|
_site = _route.get(_id)
|
|
|
|
_site = _qcms.get(_id)
|
|
|
|
_uri = request.headers['uri']
|
|
|
|
_uri = request.headers['uri']
|
|
|
|
if 'dom' not in request.headers :
|
|
|
|
if 'dom' not in request.headers :
|
|
|
|
_id = _uri.split('/')[-1].split('.')[0]
|
|
|
|
_id = _uri.split('/')[-1].split('.')[0]
|
|
|
@ -213,20 +173,17 @@ def getPostedPage(app_id,key):
|
|
|
|
|
|
|
|
|
|
|
|
if 'read?uri=' in _uri or 'download?doc=' in _uri :
|
|
|
|
if 'read?uri=' in _uri or 'download?doc=' in _uri :
|
|
|
|
_uri = _uri.split('=')[1]
|
|
|
|
_uri = _uri.split('=')[1]
|
|
|
|
_args = _route.render(_uri,_id,_getId(app_id,key)) #session.get(app_id,'main'))
|
|
|
|
_args = _qcms.render(_uri,_id,_getId(app_id,key)) #session.get(app_id,'main'))
|
|
|
|
return _args[_id],200
|
|
|
|
return _args[_id],200
|
|
|
|
|
|
|
|
|
|
|
|
@_app.route('/page',defaults={'app_id':None,'resource':None})
|
|
|
|
@_app.route('/page',defaults={'app_id':None,'resource':None})
|
|
|
|
@_app.route('/<app_id>/page',defaults={'resource':None},methods=['GET'])
|
|
|
|
@_app.route('/<app_id>/page',defaults={'resource':None},methods=['GET'])
|
|
|
|
@_app.route('/<app_id>/<resource>/page',methods=['GET'])
|
|
|
|
@_app.route('/<app_id>/<resource>/page',methods=['GET'])
|
|
|
|
def _cms_page (app_id,resource):
|
|
|
|
def _cms_page (app_id,resource):
|
|
|
|
# global _config
|
|
|
|
global _qcms
|
|
|
|
global _route
|
|
|
|
|
|
|
|
# _handler = _route.get()
|
|
|
|
|
|
|
|
# _config = _handler.config()
|
|
|
|
|
|
|
|
_uri = request.args['uri']
|
|
|
|
_uri = request.args['uri']
|
|
|
|
_title = request.args['title'] if 'title' in request.args else ''
|
|
|
|
_title = request.args['title'] if 'title' in request.args else ''
|
|
|
|
_args = _route.render(_uri,_title,app_id)
|
|
|
|
_args = _qcms.render(_uri,_title,app_id)
|
|
|
|
return _args[_title],200
|
|
|
|
return _args[_title],200
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
@ -241,22 +198,15 @@ def start (
|
|
|
|
:path path to the the manifest
|
|
|
|
:path path to the the manifest
|
|
|
|
:shared run in shared mode i.e
|
|
|
|
:shared run in shared mode i.e
|
|
|
|
"""
|
|
|
|
"""
|
|
|
|
global _route
|
|
|
|
global _qcms
|
|
|
|
|
|
|
|
|
|
|
|
if os.path.exists(path) and os.path.isfile(path):
|
|
|
|
if os.path.exists(path) and os.path.isfile(path):
|
|
|
|
_args = {'path':path}
|
|
|
|
_args = {'path':path}
|
|
|
|
# if shared :
|
|
|
|
|
|
|
|
# _args['location'] = path
|
|
|
|
|
|
|
|
# _args['shared'] = shared
|
|
|
|
|
|
|
|
_args['location'] = path
|
|
|
|
_args['location'] = path
|
|
|
|
_args['shared'] = True
|
|
|
|
_args['shared'] = True
|
|
|
|
|
|
|
|
|
|
|
|
# _route = cms.engine.Router(**_args) #path=path,shared=shared)
|
|
|
|
_qcms = cms.sites.QCMS(**_args)
|
|
|
|
|
|
|
|
_args = _qcms.get().get('system.app')
|
|
|
|
# _route = cms.engine.basic.CMS(**_args)
|
|
|
|
|
|
|
|
# _args = _route.get().app()
|
|
|
|
|
|
|
|
_route = cms.sites.QCMS(**_args)
|
|
|
|
|
|
|
|
_args = _route.get().get('system.app')
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
if port :
|
|
|
|
if port :
|
|
|
|
_args['port'] = port
|
|
|
|
_args['port'] = port
|
|
|
|