From aaba73751648618432e91afe07205c3079acaa89 Mon Sep 17 00:00:00 2001 From: iFargle Date: Tue, 21 Feb 2023 16:26:49 +0900 Subject: [PATCH] test --- server.py | 102 ++++++++++++++++-------------------------------------- 1 file changed, 30 insertions(+), 72 deletions(-) diff --git a/server.py b/server.py index 11a857e..af363f7 100644 --- a/server.py +++ b/server.py @@ -91,23 +91,21 @@ elif AUTH_TYPE == "basic": # Set Authentication type - Dynamically load function decorators # https://wiki.python.org/moin/PythonDecoratorLibrary#Enable.2FDisable_Decorators ######################################################################################## -def unchanged(func): - "This decorator doesn't add any behavior" - return func -def disabled(func): - "This decorator disables the provided function, and does nothing" - def empty_func(*args,**kargs): - pass - return empty_func -enabled = unchanged +def feature_flag(flag): + def decorator_feature_flag(func): + @wraps(func) + def wrapper_decorator_feature_flag(*args, **kwargs): + if flag is not "oidc": + func(*args, **kwargs) + oidc.require_login(func) + return wrapper_decorator_feature_flag + return decorator_feature_flag ######################################################################################## # / pages - User-facing pages ######################################################################################## @app.route('/') @app.route('/overview') -oidc.require_login = enabled if AUTH_TYPE == "oidc" else disabled -@oidc.require_login -@auth_method +@auth_type(AUTH_TYPE) def overview_page(): # Some basic sanity checks: pass_checks = str(helper.load_checks()) @@ -120,9 +118,7 @@ def overview_page(): ) @app.route('/machines', methods=('GET', 'POST')) -oidc.require_login = enabled if AUTH_TYPE == "oidc" else disabled -@oidc.require_login -@auth_method +@auth_type(AUTH_TYPE) def machines_page(): # Some basic sanity checks: pass_checks = str(helper.load_checks()) @@ -137,9 +133,7 @@ def machines_page(): ) @app.route('/users', methods=('GET', 'POST')) -oidc.require_login = enabled if AUTH_TYPE == "oidc" else disabled -@oidc.require_login -@auth_method +@auth_type(AUTH_TYPE) def users_page(): # Some basic sanity checks: pass_checks = str(helper.load_checks()) @@ -154,9 +148,7 @@ def users_page(): ) @app.route('/settings', methods=('GET', 'POST')) -oidc.require_login = enabled if AUTH_TYPE == "oidc" else disabled -@oidc.require_login -@auth_method +@auth_type(AUTH_TYPE) def settings_page(): # Some basic sanity checks: pass_checks = str(helper.load_checks()) @@ -174,9 +166,7 @@ def settings_page(): ) @app.route('/error') -oidc.require_login = enabled if AUTH_TYPE == "oidc" else disabled -@oidc.require_login -@auth_method +@auth_type(AUTH_TYPE) def error_page(): if helper.access_checks() == "Pass": return redirect(url_for('overview_page')) @@ -194,9 +184,7 @@ def error_page(): ######################################################################################## @app.route('/api/test_key', methods=('GET', 'POST')) -oidc.require_login = enabled if AUTH_TYPE == "oidc" else disabled -@oidc.require_login -@auth_method +@auth_type(AUTH_TYPE) def test_key_page(): api_key = headscale.get_api_key() url = headscale.get_url() @@ -233,9 +221,7 @@ def test_key_page(): return message @app.route('/api/save_key', methods=['POST']) -oidc.require_login = enabled if AUTH_TYPE == "oidc" else disabled -@oidc.require_login -@auth_method +@auth_type(AUTH_TYPE) def save_key_page(): json_response = request.get_json() api_key = json_response['api_key'] @@ -260,9 +246,7 @@ def save_key_page(): # Machine API Endpoints ######################################################################################## @app.route('/api/update_route', methods=['POST']) -oidc.require_login = enabled if AUTH_TYPE == "oidc" else disabled -@oidc.require_login -@auth_method +@auth_type(AUTH_TYPE) def update_route_page(): json_response = request.get_json() route_id = json_response['route_id'] @@ -273,9 +257,7 @@ def update_route_page(): return headscale.update_route(url, api_key, route_id, current_state) @app.route('/api/machine_information', methods=['POST']) -oidc.require_login = enabled if AUTH_TYPE == "oidc" else disabled -@oidc.require_login -@auth_method +@auth_type(AUTH_TYPE) def machine_information_page(): json_response = request.get_json() machine_id = json_response['id'] @@ -285,9 +267,7 @@ def machine_information_page(): return headscale.get_machine_info(url, api_key, machine_id) @app.route('/api/delete_machine', methods=['POST']) -oidc.require_login = enabled if AUTH_TYPE == "oidc" else disabled -@oidc.require_login -@auth_method +@auth_type(AUTH_TYPE) def delete_machine_page(): json_response = request.get_json() machine_id = json_response['id'] @@ -297,9 +277,7 @@ def delete_machine_page(): return headscale.delete_machine(url, api_key, machine_id) @app.route('/api/rename_machine', methods=['POST']) -oidc.require_login = enabled if AUTH_TYPE == "oidc" else disabled -@oidc.require_login -@auth_method +@auth_type(AUTH_TYPE) def rename_machine_page(): json_response = request.get_json() machine_id = json_response['id'] @@ -310,9 +288,7 @@ def rename_machine_page(): return headscale.rename_machine(url, api_key, machine_id, new_name) @app.route('/api/move_user', methods=['POST']) -oidc.require_login = enabled if AUTH_TYPE == "oidc" else disabled -@oidc.require_login -@auth_method +@auth_type(AUTH_TYPE) def move_user_page(): json_response = request.get_json() machine_id = json_response['id'] @@ -323,9 +299,7 @@ def move_user_page(): return headscale.move_user(url, api_key, machine_id, new_user) @app.route('/api/set_machine_tags', methods=['POST']) -oidc.require_login = enabled if AUTH_TYPE == "oidc" else disabled -@oidc.require_login -@auth_method +@auth_type(AUTH_TYPE) def set_machine_tags(): json_response = request.get_json() machine_id = json_response['id'] @@ -336,9 +310,7 @@ def set_machine_tags(): return headscale.set_machine_tags(url, api_key, machine_id, machine_tags) @app.route('/api/register_machine', methods=['POST']) -oidc.require_login = enabled if AUTH_TYPE == "oidc" else disabled -@oidc.require_login -@auth_method +@auth_type(AUTH_TYPE) def register_machine(): json_response = request.get_json() machine_key = json_response['key'] @@ -352,9 +324,7 @@ def register_machine(): # User API Endpoints ######################################################################################## @app.route('/api/rename_user', methods=['POST']) -oidc.require_login = enabled if AUTH_TYPE == "oidc" else disabled -@oidc.require_login -@auth_method +@auth_type(AUTH_TYPE) def rename_user_page(): json_response = request.get_json() old_name = json_response['old_name'] @@ -365,9 +335,7 @@ def rename_user_page(): return headscale.rename_user(url, api_key, old_name, new_name) @app.route('/api/add_user', methods=['POST']) -oidc.require_login = enabled if AUTH_TYPE == "oidc" else disabled -@oidc.require_login -@auth_method +@auth_type(AUTH_TYPE) def add_user(): json_response = json.dumps(request.get_json()) url = headscale.get_url() @@ -376,9 +344,7 @@ def add_user(): return headscale.add_user(url, api_key, json_response) @app.route('/api/delete_user', methods=['POST']) -oidc.require_login = enabled if AUTH_TYPE == "oidc" else disabled -@oidc.require_login -@auth_method +@auth_type(AUTH_TYPE) def delete_user(): json_response = request.get_json() user_name = json_response['name'] @@ -388,9 +354,7 @@ def delete_user(): return headscale.delete_user(url, api_key, user_name) @app.route('/api/get_users', methods=['POST']) -oidc.require_login = enabled if AUTH_TYPE == "oidc" else disabled -@oidc.require_login -@auth_method +@auth_type(AUTH_TYPE) def get_users_page(): url = headscale.get_url() api_key = headscale.get_api_key() @@ -401,9 +365,7 @@ def get_users_page(): # Pre-Auth Key API Endpoints ######################################################################################## @app.route('/api/add_preauth_key', methods=['POST']) -oidc.require_login = enabled if AUTH_TYPE == "oidc" else disabled -@oidc.require_login -@auth_method +@auth_type(AUTH_TYPE) def add_preauth_key(): json_response = json.dumps(request.get_json()) url = headscale.get_url() @@ -412,9 +374,7 @@ def add_preauth_key(): return headscale.add_preauth_key(url, api_key, json_response) @app.route('/api/expire_preauth_key', methods=['POST']) -oidc.require_login = enabled if AUTH_TYPE == "oidc" else disabled -@oidc.require_login -@auth_method +@auth_type(AUTH_TYPE) def expire_preauth_key(): json_response = json.dumps(request.get_json()) url = headscale.get_url() @@ -423,9 +383,7 @@ def expire_preauth_key(): return headscale.expire_preauth_key(url, api_key, json_response) @app.route('/api/build_preauthkey_table', methods=['POST']) -oidc.require_login = enabled if AUTH_TYPE == "oidc" else disabled -@oidc.require_login -@auth_method +@auth_type(AUTH_TYPE) def build_preauth_key_table(): json_response = request.get_json() user_name = json_response['name']