from flask import render_template, request, g from flask_login import login_required from app.routes.runtime import bp from middleware import get_user_params import app.modules.common.common as common import app.modules.config.runtime as runtime import app.modules.service.haproxy as service_haproxy @bp.before_request @login_required def before_request(): """ Protect all of the admin endpoints. """ pass @bp.route('') @get_user_params() def runtimeapi(): user_params = g.user_params servbackend = "" return render_template( 'runtimeapi.html', title="RunTime API", role=user_params['role'], user=user_params['user'], select_id="serv", selects=user_params['servers'], token=user_params['token'], user_services=user_params['user_services'], servbackend=servbackend, lang=user_params['lang'] ) @bp.route('/backends/') def show_backends(server_ip): server_ip = common.is_ip_or_dns(server_ip) try: return runtime.show_backends(server_ip) except Exception as e: return f'{e}' @bp.route('/backend/servers//') def show_backend_servers(server_ip, backend): server_ip = common.is_ip_or_dns(server_ip) backend = common.checkAjaxInput(backend) try: return runtime.show_frontend_backend(server_ip, backend) except Exception as e: return f'{e}' @bp.route('/backend/server///') def show_backend_server(server_ip, backend, backend_server): server_ip = common.is_ip_or_dns(server_ip) backend = common.checkAjaxInput(backend) backend_server = common.checkAjaxInput(backend_server) try: return runtime.show_server(server_ip, backend, backend_server) except Exception as e: return f'{e}' @bp.route('/change/ip', methods=['POST']) def change_ip_port(): server_ip = common.is_ip_or_dns(request.form.get('serv')) backend_backend = common.checkAjaxInput(request.form.get('backend_backend')) backend_server = common.checkAjaxInput(request.form.get('backend_server')) backend_ip = common.checkAjaxInput(request.form.get('backend_ip')) backend_port = common.checkAjaxInput(request.form.get('backend_port')) try: return runtime.change_ip_and_port(server_ip, backend_backend, backend_server, backend_ip, backend_port) except Exception as e: return f'{e}' @bp.route('/maxconn/') def maxconn_select(server_ip): server_ip = common.is_ip_or_dns(server_ip) try: return runtime.get_backends_from_config(server_ip, backends='frontend') except Exception as e: return f'{e}' @bp.route('/maxconn//', methods=['POST']) def change_maxconn(type_maxconn, server_ip): server_ip = common.is_ip_or_dns(server_ip) maxconn = common.checkAjaxInput(request.form.get('maxconn')) if type_maxconn == 'global': try: return runtime.change_maxconn_global(server_ip, maxconn) except Exception as e: return f'{e}' elif type_maxconn == 'frontend': frontend = common.checkAjaxInput(request.form.get('maxconn_frontend')) try: return runtime.change_maxconn_frontend(server_ip, maxconn, frontend) except Exception as e: return f'{e}' elif type_maxconn == 'backend': backend = common.checkAjaxInput(request.form.get('maxconn_backend')) backend_server = common.checkAjaxInput(request.form.get('maxconn_backend_server')) try: return runtime.change_maxconn_backend(server_ip, backend, backend_server, maxconn) except Exception as e: return f'{e}' else: return 'error: Wrong backend' @bp.route('/action/', methods=['POST']) def action(server_ip): server_ip = common.is_ip_or_dns(server_ip) enable = common.checkAjaxInput(request.form.get('servaction')) backend = common.checkAjaxInput(request.form.get('servbackend')) save = request.form.get('save') try: return service_haproxy.runtime_command(server_ip, enable, backend, save) except Exception as e: return f'{e}' @bp.post('/stats/action/') def stat_page_action(server_ip): try: return service_haproxy.stat_page_action(server_ip) except Exception as e: return f'{e}' @bp.route('/tables/') def get_all_tables(server_ip): server_ip = common.is_ip_or_dns(server_ip) try: return runtime.get_all_stick_table(server_ip) except Exception as e: return f'{e}' @bp.route('/table//') def get_table(server_ip, table): server_ip = common.is_ip_or_dns(server_ip) table = common.checkAjaxInput(table) try: return runtime.table_select(server_ip, table) except Exception as e: return f'{e}' @bp.route('/table/delete//
/') def delete_ip(server_ip, table, ip_for_delete): server_ip = common.is_ip_or_dns(server_ip) table = common.checkAjaxInput(table) ip_for_delete = common.is_ip_or_dns(ip_for_delete) try: return runtime.delete_ip_from_stick_table(server_ip, ip_for_delete, table) except Exception as e: return f'{e}' @bp.route('/table/clear//
') def clear_table(server_ip, table): server_ip = common.is_ip_or_dns(server_ip) table = common.checkAjaxInput(table) try: return runtime.clear_stick_table(server_ip, table) except Exception as e: return f'{e}' @bp.route('/session/') def select_sessions(server_ip): server_ip = common.is_ip_or_dns(server_ip) try: return runtime.select_session(server_ip) except Exception as e: return f'{e}' @bp.route('/session//') def show_sessions(server_ip, sess_id): server_ip = common.is_ip_or_dns(server_ip) sess_id = common.checkAjaxInput(sess_id) try: return runtime.show_session(server_ip, sess_id) except Exception as e: return f'{e}' @bp.route('/session/delete//') def delete_session(server_ip, sess_id): server_ip = common.is_ip_or_dns(server_ip) sess_id = common.checkAjaxInput(sess_id) try: return runtime.delete_session(server_ip, sess_id) except Exception as e: return f'{e}' @bp.route('/list/') def get_lists(server_ip): server_ip = common.is_ip_or_dns(server_ip) try: return runtime.list_of_lists(server_ip) except Exception as e: return f'{e}' @bp.route('/list///') def get_list(server_ip, list_id, list_name): server_ip = common.is_ip_or_dns(server_ip) list_name = common.checkAjaxInput(list_name) try: return runtime.show_lists(server_ip, list_id, list_name) except Exception as e: return f'{e}' @bp.route('/list/delete', methods=['POST']) def delete_ip_from_list(): ip_id = common.checkAjaxInput(request.form.get('list_ip_id_for_delete')) ip = common.is_ip_or_dns(request.form.get('list_ip_for_delete')) serv = common.is_ip_or_dns(request.form.get('serv')) list_id = common.checkAjaxInput(request.form.get('list_id_for_delete')) list_name = common.checkAjaxInput(request.form.get('list_name')) try: return runtime.delete_ip_from_list(serv, ip_id, ip, list_id, list_name) except Exception as e: return f'{e}' @bp.route('/list/add', methods=['POST']) def add_ip_to_list(): ip = request.form.get('list_ip_for_add') ip = common.is_ip_or_dns(ip.strip()) serv = common.is_ip_or_dns(request.form.get('serv')) list_id = common.checkAjaxInput(request.form.get('list_id_for_add')) list_name = common.checkAjaxInput(request.form.get('list_name')) try: return runtime.add_ip_to_list(serv, ip, list_id, list_name) except Exception as e: return f'{e}'