Properly check SAFE_MODE and allow plugins to be loaded from tests optionally

selenium-screenshot-testing
Kevin Chung 2018-11-25 13:51:33 -05:00
parent 3e8f13dfd1
commit ae90537a59
3 changed files with 17 additions and 13 deletions

View File

@ -189,7 +189,6 @@ def create_app(config='CTFd.config.Config'):
app.register_error_handler(500, general_error) app.register_error_handler(500, general_error)
app.register_error_handler(502, gateway_error) app.register_error_handler(502, gateway_error)
if app.config.get('SAFE_MODE', False): init_plugins(app)
init_plugins(app)
return app return app

View File

@ -146,15 +146,16 @@ def init_plugins(app):
:param app: A CTFd application :param app: A CTFd application
:return: :return:
""" """
modules = sorted(glob.glob(os.path.dirname(__file__) + "/*")) if app.config.get('SAFE_MODE', False) is False:
blacklist = {'__pycache__'} modules = sorted(glob.glob(os.path.dirname(__file__) + "/*"))
for module in modules: blacklist = {'__pycache__'}
module_name = os.path.basename(module) for module in modules:
if os.path.isdir(module) and module_name not in blacklist: module_name = os.path.basename(module)
module = '.' + module_name if os.path.isdir(module) and module_name not in blacklist:
module = importlib.import_module(module, package='CTFd.plugins') module = '.' + module_name
module.load(app) module = importlib.import_module(module, package='CTFd.plugins')
print(" * Loaded module, %s" % module) module.load(app)
print(" * Loaded module, %s" % module)
app.jinja_env.globals.update(get_admin_plugin_menu_bar=get_admin_plugin_menu_bar) app.jinja_env.globals.update(get_admin_plugin_menu_bar=get_admin_plugin_menu_bar)
app.jinja_env.globals.update(get_user_page_menu_bar=get_user_page_menu_bar) app.jinja_env.globals.update(get_user_page_menu_bar=get_user_page_menu_bar)

View File

@ -1,4 +1,5 @@
from CTFd import create_app from CTFd import create_app
from CTFd.config import TestingConfig
from CTFd.models import * from CTFd.models import *
from CTFd.cache import cache from CTFd.cache import cache
from sqlalchemy_utils import database_exists, create_database, drop_database from sqlalchemy_utils import database_exists, create_database, drop_database
@ -15,8 +16,11 @@ else:
binary_type = bytes binary_type = bytes
def create_ctfd(ctf_name="CTFd", name="admin", email="admin@ctfd.io", password="password", user_mode="users", setup=True): def create_ctfd(ctf_name="CTFd", name="admin", email="admin@ctfd.io", password="password", user_mode="users", setup=True, enable_plugins=False):
app = create_app('CTFd.config.TestingConfig') if enable_plugins:
TestingConfig.SAFE_MODE = False
app = create_app(TestingConfig)
if setup: if setup:
app = setup_ctfd(app, ctf_name, name, email, password, user_mode) app = setup_ctfd(app, ctf_name, name, email, password, user_mode)