fix: [api register_sensor] fix role + endpoint

pull/24/head
Terrtia 2019-08-16 17:52:02 +02:00
parent e5720087de
commit 3630ec0460
No known key found for this signature in database
GPG Key ID: 1E1B1F50D84613D0
4 changed files with 51 additions and 11 deletions

View File

@ -21,7 +21,7 @@ def is_valid_uuid_v4(UUID):
except: except:
return False return False
## TODO: add user_id + description ## TODO: add description
def register_sensor(req_dict): def register_sensor(req_dict):
sensor_uuid = req_dict.get('uuid', None) sensor_uuid = req_dict.get('uuid', None)
hmac_key = req_dict.get('hmac_key', None) hmac_key = req_dict.get('hmac_key', None)
@ -33,14 +33,16 @@ def register_sensor(req_dict):
if r_serv_db.exists('metadata_uuid:{}'.format(sensor_uuid)): if r_serv_db.exists('metadata_uuid:{}'.format(sensor_uuid)):
return ({"status": "error", "reason": "Sensor already registred"}, 409) return ({"status": "error", "reason": "Sensor already registred"}, 409)
res = _register_sensor(sensor_uuid, hmac_key, user_id=None, description=None) user_id = req_dict.get('uuid', None)
res = _register_sensor(sensor_uuid, hmac_key, user_id=user_id, description=None)
return res return res
def _register_sensor(sensor_uuid, secret_key, user_id=None, description=None): def _register_sensor(sensor_uuid, secret_key, user_id=None, description=None):
r_serv_db.hset('metadata_uuid:{}'.format(sensor_uuid), 'hmac_key', secret_key) r_serv_db.hset('metadata_uuid:{}'.format(sensor_uuid), 'hmac_key', secret_key)
if user_id: if user_id:
r_serv_db.hset('metadata_uuid:{}'.format(sensor_uuid), 'description', description) r_serv_db.hset('metadata_uuid:{}'.format(sensor_uuid), 'user_mail', user_id)
if description: if description:
r_serv_db.hset('metadata_uuid:{}'.format(sensor_uuid), 'description', description) r_serv_db.hset('metadata_uuid:{}'.format(sensor_uuid), 'description', description)
return ({'uuid': sensor_uuid}, 200) return ({'uuid': sensor_uuid}, 200)

View File

@ -24,7 +24,7 @@ import bcrypt
# Import Role_Manager # Import Role_Manager
from Role_Manager import create_user_db, check_password_strength, check_user_role_integrity from Role_Manager import create_user_db, check_password_strength, check_user_role_integrity
from Role_Manager import login_admin, login_analyst from Role_Manager import login_user_basic
sys.path.append(os.path.join(os.environ['D4_HOME'], 'lib')) sys.path.append(os.path.join(os.environ['D4_HOME'], 'lib'))
from User import User from User import User
@ -361,18 +361,16 @@ def logout():
def role(): def role():
return render_template("error/403.html"), 403 return render_template("error/403.html"), 403
@app.route('/test')
def test():
return 'test'
@app.route('/') @app.route('/')
@login_required @login_required
@login_user_basic
def index(): def index():
date = datetime.datetime.now().strftime("%Y/%m/%d") date = datetime.datetime.now().strftime("%Y/%m/%d")
return render_template("index.html", date=date) return render_template("index.html", date=date)
@app.route('/_json_daily_uuid_stats') @app.route('/_json_daily_uuid_stats')
@login_required @login_required
@login_user_basic
def _json_daily_uuid_stats(): def _json_daily_uuid_stats():
date = datetime.datetime.now().strftime("%Y%m%d") date = datetime.datetime.now().strftime("%Y%m%d")
daily_uuid = redis_server_metadata.zrange('daily_uuid:{}'.format(date), 0, -1, withscores=True) daily_uuid = redis_server_metadata.zrange('daily_uuid:{}'.format(date), 0, -1, withscores=True)
@ -385,6 +383,7 @@ def _json_daily_uuid_stats():
@app.route('/_json_daily_type_stats') @app.route('/_json_daily_type_stats')
@login_required @login_required
@login_user_basic
def _json_daily_type_stats(): def _json_daily_type_stats():
date = datetime.datetime.now().strftime("%Y%m%d") date = datetime.datetime.now().strftime("%Y%m%d")
daily_uuid = redis_server_metadata.zrange('daily_type:{}'.format(date), 0, -1, withscores=True) daily_uuid = redis_server_metadata.zrange('daily_type:{}'.format(date), 0, -1, withscores=True)
@ -402,6 +401,7 @@ def _json_daily_type_stats():
@app.route('/sensors_status') @app.route('/sensors_status')
@login_required @login_required
@login_user_basic
def sensors_status(): def sensors_status():
active_connection_filter = request.args.get('active_connection_filter') active_connection_filter = request.args.get('active_connection_filter')
if active_connection_filter is None: if active_connection_filter is None:
@ -482,6 +482,7 @@ def sensors_status():
@app.route('/show_active_uuid') @app.route('/show_active_uuid')
@login_required @login_required
@login_user_basic
def show_active_uuid(): def show_active_uuid():
#swap switch value #swap switch value
active_connection_filter = request.args.get('show_active_connection') active_connection_filter = request.args.get('show_active_connection')
@ -497,6 +498,7 @@ def show_active_uuid():
@app.route('/server_management') @app.route('/server_management')
@login_required @login_required
@login_user_basic
def server_management(): def server_management():
blacklisted_ip = request.args.get('blacklisted_ip') blacklisted_ip = request.args.get('blacklisted_ip')
unblacklisted_ip = request.args.get('unblacklisted_ip') unblacklisted_ip = request.args.get('unblacklisted_ip')
@ -568,6 +570,7 @@ def server_management():
@app.route('/uuid_management') @app.route('/uuid_management')
@login_required @login_required
@login_user_basic
def uuid_management(): def uuid_management():
uuid_sensor = request.args.get('uuid') uuid_sensor = request.args.get('uuid')
if is_valid_uuid_v4(uuid_sensor): if is_valid_uuid_v4(uuid_sensor):
@ -641,6 +644,7 @@ def uuid_management():
@app.route('/blacklisted_ip') @app.route('/blacklisted_ip')
@login_required @login_required
@login_user_basic
def blacklisted_ip(): def blacklisted_ip():
blacklisted_ip = request.args.get('blacklisted_ip') blacklisted_ip = request.args.get('blacklisted_ip')
unblacklisted_ip = request.args.get('unblacklisted_ip') unblacklisted_ip = request.args.get('unblacklisted_ip')
@ -667,6 +671,7 @@ def blacklisted_ip():
@app.route('/blacklisted_uuid') @app.route('/blacklisted_uuid')
@login_required @login_required
@login_user_basic
def blacklisted_uuid(): def blacklisted_uuid():
blacklisted_uuid = request.args.get('blacklisted_uuid') blacklisted_uuid = request.args.get('blacklisted_uuid')
unblacklisted_uuid = request.args.get('unblacklisted_uuid') unblacklisted_uuid = request.args.get('unblacklisted_uuid')
@ -694,6 +699,7 @@ def blacklisted_uuid():
@app.route('/uuid_change_stream_max_size') @app.route('/uuid_change_stream_max_size')
@login_required @login_required
@login_user_basic
def uuid_change_stream_max_size(): def uuid_change_stream_max_size():
uuid_sensor = request.args.get('uuid') uuid_sensor = request.args.get('uuid')
user = request.args.get('redirect') user = request.args.get('redirect')
@ -713,6 +719,7 @@ def uuid_change_stream_max_size():
@app.route('/uuid_change_description') @app.route('/uuid_change_description')
@login_required @login_required
@login_user_basic
def uuid_change_description(): def uuid_change_description():
uuid_sensor = request.args.get('uuid') uuid_sensor = request.args.get('uuid')
description = request.args.get('description') description = request.args.get('description')
@ -725,6 +732,7 @@ def uuid_change_description():
# # TODO: check analyser uuid dont exist # # TODO: check analyser uuid dont exist
@app.route('/add_new_analyzer') @app.route('/add_new_analyzer')
@login_required @login_required
@login_user_basic
def add_new_analyzer(): def add_new_analyzer():
type = request.args.get('type') type = request.args.get('type')
user = request.args.get('redirect') user = request.args.get('redirect')
@ -752,6 +760,7 @@ def add_new_analyzer():
@app.route('/empty_analyzer_queue') @app.route('/empty_analyzer_queue')
@login_required @login_required
@login_user_basic
def empty_analyzer_queue(): def empty_analyzer_queue():
analyzer_uuid = request.args.get('analyzer_uuid') analyzer_uuid = request.args.get('analyzer_uuid')
type = request.args.get('type') type = request.args.get('type')
@ -775,6 +784,7 @@ def empty_analyzer_queue():
@app.route('/remove_analyzer') @app.route('/remove_analyzer')
@login_required @login_required
@login_user_basic
def remove_analyzer(): def remove_analyzer():
analyzer_uuid = request.args.get('analyzer_uuid') analyzer_uuid = request.args.get('analyzer_uuid')
type = request.args.get('type') type = request.args.get('type')
@ -801,6 +811,7 @@ def remove_analyzer():
@app.route('/analyzer_change_max_size') @app.route('/analyzer_change_max_size')
@login_required @login_required
@login_user_basic
def analyzer_change_max_size(): def analyzer_change_max_size():
analyzer_uuid = request.args.get('analyzer_uuid') analyzer_uuid = request.args.get('analyzer_uuid')
user = request.args.get('redirect') user = request.args.get('redirect')
@ -820,6 +831,7 @@ def analyzer_change_max_size():
@app.route('/kick_uuid') @app.route('/kick_uuid')
@login_required @login_required
@login_user_basic
def kick_uuid(): def kick_uuid():
uuid_sensor = request.args.get('uuid') uuid_sensor = request.args.get('uuid')
if is_valid_uuid_v4(uuid_sensor): if is_valid_uuid_v4(uuid_sensor):
@ -830,6 +842,7 @@ def kick_uuid():
@app.route('/blacklist_uuid') @app.route('/blacklist_uuid')
@login_required @login_required
@login_user_basic
def blacklist_uuid(): def blacklist_uuid():
uuid_sensor = request.args.get('uuid') uuid_sensor = request.args.get('uuid')
user = request.args.get('redirect') user = request.args.get('redirect')
@ -851,6 +864,7 @@ def blacklist_uuid():
@app.route('/unblacklist_uuid') @app.route('/unblacklist_uuid')
@login_required @login_required
@login_user_basic
def unblacklist_uuid(): def unblacklist_uuid():
uuid_sensor = request.args.get('uuid') uuid_sensor = request.args.get('uuid')
user = request.args.get('redirect') user = request.args.get('redirect')
@ -875,6 +889,7 @@ def unblacklist_uuid():
@app.route('/blacklist_ip') @app.route('/blacklist_ip')
@login_required @login_required
@login_user_basic
def blacklist_ip(): def blacklist_ip():
ip = request.args.get('ip') ip = request.args.get('ip')
user = request.args.get('redirect') user = request.args.get('redirect')
@ -901,6 +916,7 @@ def blacklist_ip():
@app.route('/unblacklist_ip') @app.route('/unblacklist_ip')
@login_required @login_required
@login_user_basic
def unblacklist_ip(): def unblacklist_ip():
ip = request.args.get('ip') ip = request.args.get('ip')
user = request.args.get('redirect') user = request.args.get('redirect')
@ -929,6 +945,7 @@ def unblacklist_ip():
@app.route('/blacklist_ip_by_uuid') @app.route('/blacklist_ip_by_uuid')
@login_required @login_required
@login_user_basic
def blacklist_ip_by_uuid(): def blacklist_ip_by_uuid():
uuid_sensor = request.args.get('uuid') uuid_sensor = request.args.get('uuid')
user = request.args.get('redirect') user = request.args.get('redirect')
@ -941,6 +958,7 @@ def blacklist_ip_by_uuid():
@app.route('/unblacklist_ip_by_uuid') @app.route('/unblacklist_ip_by_uuid')
@login_required @login_required
@login_user_basic
def unblacklist_ip_by_uuid(): def unblacklist_ip_by_uuid():
uuid_sensor = request.args.get('uuid') uuid_sensor = request.args.get('uuid')
user = request.args.get('redirect') user = request.args.get('redirect')
@ -953,6 +971,7 @@ def unblacklist_ip_by_uuid():
@app.route('/add_accepted_type') @app.route('/add_accepted_type')
@login_required @login_required
@login_user_basic
def add_accepted_type(): def add_accepted_type():
type = request.args.get('type') type = request.args.get('type')
extended_type_name = request.args.get('extended_type_name') extended_type_name = request.args.get('extended_type_name')
@ -973,6 +992,7 @@ def add_accepted_type():
@app.route('/remove_accepted_type') @app.route('/remove_accepted_type')
@login_required @login_required
@login_user_basic
def remove_accepted_type(): def remove_accepted_type():
type = request.args.get('type') type = request.args.get('type')
user = request.args.get('redirect') user = request.args.get('redirect')
@ -986,6 +1006,7 @@ def remove_accepted_type():
@app.route('/remove_accepted_extended_type') @app.route('/remove_accepted_extended_type')
@login_required @login_required
@login_user_basic
def remove_accepted_extended_type(): def remove_accepted_extended_type():
type_name = request.args.get('type_name') type_name = request.args.get('type_name')
redis_server_metadata.srem('server:accepted_extended_type', type_name) redis_server_metadata.srem('server:accepted_extended_type', type_name)
@ -994,6 +1015,7 @@ def remove_accepted_extended_type():
# demo function # demo function
@app.route('/delete_data') @app.route('/delete_data')
@login_required @login_required
@login_user_basic
def delete_data(): def delete_data():
date = datetime.datetime.now().strftime("%Y%m%d") date = datetime.datetime.now().strftime("%Y%m%d")
redis_server_metadata.delete('daily_type:{}'.format(date)) redis_server_metadata.delete('daily_type:{}'.format(date))
@ -1003,6 +1025,7 @@ def delete_data():
# demo function # demo function
@app.route('/set_uuid_hmac_key') @app.route('/set_uuid_hmac_key')
@login_required @login_required
@login_user_basic
def set_uuid_hmac_key(): def set_uuid_hmac_key():
uuid_sensor = request.args.get('uuid') uuid_sensor = request.args.get('uuid')
user = request.args.get('redirect') user = request.args.get('redirect')
@ -1015,6 +1038,7 @@ def set_uuid_hmac_key():
# demo function # demo function
@app.route('/whois_data') @app.route('/whois_data')
@login_required @login_required
@login_user_basic
def whois_data(): def whois_data():
ip = request.args.get('ip') ip = request.args.get('ip')
if is_valid_ip: if is_valid_ip:
@ -1024,12 +1048,14 @@ def whois_data():
@app.route('/generate_uuid') @app.route('/generate_uuid')
@login_required @login_required
@login_user_basic
def generate_uuid(): def generate_uuid():
new_uuid = uuid.uuid4() new_uuid = uuid.uuid4()
return jsonify({'uuid': new_uuid}) return jsonify({'uuid': new_uuid})
@app.route('/get_analyser_sample') @app.route('/get_analyser_sample')
@login_required @login_required
@login_user_basic
def get_analyser_sample(): def get_analyser_sample():
type = request.args.get('type') type = request.args.get('type')
analyzer_uuid = request.args.get('analyzer_uuid') analyzer_uuid = request.args.get('analyzer_uuid')
@ -1058,6 +1084,7 @@ def get_analyser_sample():
@app.route('/get_uuid_type_history_json') @app.route('/get_uuid_type_history_json')
@login_required @login_required
@login_user_basic
def get_uuid_type_history_json(): def get_uuid_type_history_json():
uuid_sensor = request.args.get('uuid_sensor') uuid_sensor = request.args.get('uuid_sensor')
if is_valid_uuid_v4(uuid_sensor): if is_valid_uuid_v4(uuid_sensor):
@ -1089,6 +1116,7 @@ def get_uuid_type_history_json():
@app.route('/get_uuid_stats_history_json') @app.route('/get_uuid_stats_history_json')
@login_required @login_required
@login_user_basic
def get_uuid_stats_history_json(): def get_uuid_stats_history_json():
uuid_sensor = request.args.get('uuid_sensor') uuid_sensor = request.args.get('uuid_sensor')
stats = request.args.get('stats') stats = request.args.get('stats')

View File

@ -42,12 +42,12 @@ def login_admin(func):
return func(*args, **kwargs) return func(*args, **kwargs)
return decorated_view return decorated_view
def login_analyst(func): def login_user_basic(func):
@wraps(func) @wraps(func)
def decorated_view(*args, **kwargs): def decorated_view(*args, **kwargs):
if not current_user.is_authenticated: if not current_user.is_authenticated:
return login_manager.unauthorized() return login_manager.unauthorized()
elif (not current_user.is_in_role('analyst')): elif (not current_user.is_in_role('user')):
return login_manager.unauthorized() return login_manager.unauthorized()
return func(*args, **kwargs) return func(*args, **kwargs)
return decorated_view return decorated_view
@ -158,7 +158,7 @@ def get_role_level(role):
def get_all_user_role(user_role): def get_all_user_role(user_role):
current_role_val = get_role_level(user_role) current_role_val = get_role_level(user_role)
return r_serv_db.zrange('d4:all_role', current_role_val -1, -1) return r_serv_db.zrangebyscore('d4:all_role', current_role_val -1, 50)
def get_all_user_upper_role(user_role): def get_all_user_upper_role(user_role):
current_role_val = get_role_level(user_role) current_role_val = get_role_level(user_role)

View File

@ -33,6 +33,16 @@ if __name__ == "__main__":
edit_user_db(username, password=password, role='admin') edit_user_db(username, password=password, role='admin')
else: else:
create_user_db(username, password, role='admin', default=True) create_user_db(username, password, role='admin', default=True)
username2 = 'config_generator@register.test'
password2 = gen_password()
if r_serv.exists('user_metadata:config_generator@register.test'):
edit_user_db(username2, password=password2, role='sensor_register')
else:
create_user_db(username2, password2, role='sensor_register', default=True)
token = get_default_admin_token() token = get_default_admin_token()
default_passwd_file = os.path.join(os.environ['D4_HOME'], 'DEFAULT_PASSWORD') default_passwd_file = os.path.join(os.environ['D4_HOME'], 'DEFAULT_PASSWORD')