def run_master_slave_scan(plugin_name, user_setting, request_data): """ run cluster scan as master&slave role : param plugin_name: plugin name : param user_setting: user setting : request_data: request query from Media server :return: meta_data_list """ cluster_node = get_online_node() cluster_node.append({ 'IP': '127.0.0.1', 'port': get_config(APP_CONFIG)['PORT'], 'token': get_config(APP_CONFIG)['CLUSTER_TOKEN'] }) return run_cluster_scan(cluster_node, plugin_name, user_setting, request_data)
def send_email(to, subject, text): try: config = get_config(APP_CONFIG)['EMAIL'] mail_info = { "from": config['EMAIL_FROM'], "to": to, "host": config['EMAIL_HOST'], "username": config['EMAIL_USERNAME'], "password": config['EMAIL_PASSWORD'], "subject": subject, "text": text, "encoding": "utf-8" } smtp = SMTP_SSL(mail_info["host"]) smtp.set_debuglevel(1) smtp.ehlo(mail_info["host"]) smtp.login(mail_info["username"], mail_info["password"]) msg = MIMEText(mail_info["text"], "plain", mail_info["encoding"]) msg["Subject"] = Header(mail_info["subject"], mail_info["encoding"]) msg["from"] = mail_info["from"] msg["to"] = mail_info["to"] smtp.sendmail(mail_info["from"], mail_info["to"], msg.as_string()) smtp.quit() except Exception as e: log('info', 'Email send error: %s' % e)
def install_app_require(): """ use pip to install packages stated in requirements.json :return: """ requirements = get_config(REQUIREMENTS_CONFIG)["requirements"] for requirement in requirements: install_package(requirement["name"], requirement["version"])
def decode_jwt(token): """ decode and get payload form jwt :param token: str jwt :return: dict payload """ try: return jwt.decode(token, get_config(APP_CONFIG)['JWT_SECRET_KEY'], algorithms=['HS256']) except jwt.PyJWTError: return None
def check_enable_sign_up(): """ check if the server enable user sign up : return: respond model with boolean """ enable_sign_up = get_config(APP_CONFIG)['ENABLE_SIGN_UP'] respond_model = RespondModel() respond_model.data = {"enable_sign_up": enable_sign_up} respond_model.message = 'success' respond_model.code = 20000 return respond_model.dump_json(), 200
def sha1_encode(code): """ sha1 encode :param code: code :return: str code """ code = code + get_config(APP_CONFIG)['SHA1_SECRET_KEY'] sha1_obj = sha1() sha1_obj.update(code.encode()) ret = sha1_obj.hexdigest() return ret
def get_app_info(): """ get installed python package information :return: str info """ requirements = get_config(REQUIREMENTS_CONFIG)["requirements"] pip_version = os.popen('pip -V').read().split(' ')[1] python_version = sys.version[0:5] info = {"pip_version": pip_version, "python_version": python_version} for requirement in requirements: version = get_package_info(requirement['name']) info[requirement['name']] = version return info
def install_plugin_require(): """ use pip to install packages stated in plugins' requirements.json :return: """ plugins_name = get_all_plugin_name() for plugin in plugins_name.split(','): config = get_config('app/plugins/%s/requirements.json' % plugin) if config: requirements = config.get('requirements') if requirements: for requirement in requirements: install_package(requirement.get("name"), requirement.get("version"))
def generate_jwt(user_info): """ generate json web token by user_info :param user_info: dict user info :return: str json web token """ iat = time.time() token_dict = { 'iat': iat, 'nbf': iat, 'exp': iat + 300, 'user_info': user_info } headers = { 'alg': "HS256", } jwt_token = jwt.encode(token_dict, get_config(APP_CONFIG)['JWT_SECRET_KEY'], algorithm="HS256", headers=headers).decode('ascii') return jwt_token
install_app_require() from app.core.service.modules_alert_service import scheduler_check_modules_update, init_modules_history from app.tools.config_tools import APP_CONFIG, get_config from app.tools.router_tools import register_blueprints from app.tools.init_db_tools import init_db_and_data from flask import Flask from flask_cors import * from apscheduler.schedulers.background import BackgroundScheduler # init database and data init_db_and_data() app = Flask(__name__, static_folder='front-end/dist/', static_url_path='') app_config = get_config(APP_CONFIG) CORS(app, supports_credentials=True) # register blueprints register_blueprints(app, 'app.core.api', 'api') # init modules history init_modules_history() # scheduler task scheduler = BackgroundScheduler() scheduler.add_job(scheduler_check_modules_update, 'interval', seconds=1800) scheduler.start() # region start if __name__ == "__main__":
def validate_master(token): """ validate master credential """ cluster_token = get_config(APP_CONFIG)['CLUSTER_TOKEN'] return token == cluster_token
# -*- coding:utf-8 -*- import pymongo from app.tools.config_tools import get_config, APP_CONFIG connection = None database = None APP_CONF = get_config(APP_CONFIG) def get_connection(): """ get mongo connection :return: mongo connection """ global connection if connection is None: connection = pymongo.MongoClient(host=APP_CONF['DB']['DB_HOST'], port=APP_CONF['DB']['DB_PORT'], username=APP_CONF['DB']['DB_USER'], password=APP_CONF['DB']['DB_PWD']) return connection def get_database(): """ get mongo database object :return: mongo database object """ global database if database is None: