mirror of https://github.com/CIRCL/AIL-framework
commit
edcfb4fcaa
12
OVERVIEW.md
12
OVERVIEW.md
|
@ -97,12 +97,24 @@ Redis and ARDB overview
|
||||||
| ------ | ------ | ------ |
|
| ------ | ------ | ------ |
|
||||||
| ail:all_role | **role** | **int, role priority (1=admin)** |
|
| ail:all_role | **role** | **int, role priority (1=admin)** |
|
||||||
|
|
||||||
|
##### MISP Modules:
|
||||||
|
|
||||||
|
| Set Key | Value |
|
||||||
|
| ------ | ------ |
|
||||||
|
| enabled_misp_modules | **module name** |
|
||||||
|
|
||||||
|
| Key | Value |
|
||||||
|
| ------ | ------ |
|
||||||
|
| misp_module:**module name** | **module dict** |
|
||||||
|
|
||||||
##### Item Import:
|
##### Item Import:
|
||||||
| Key | Value |
|
| Key | Value |
|
||||||
| ------ | ------ |
|
| ------ | ------ |
|
||||||
| **uuid**:isfile | **boolean** |
|
| **uuid**:isfile | **boolean** |
|
||||||
| **uuid**:paste_content | **item_content** |
|
| **uuid**:paste_content | **item_content** |
|
||||||
|
|
||||||
|
## DB2 - TermFreq:
|
||||||
|
|
||||||
| Set Key | Value |
|
| Set Key | Value |
|
||||||
| ------ | ------ |
|
| ------ | ------ |
|
||||||
| submitted:uuid | **uuid** |
|
| submitted:uuid | **uuid** |
|
||||||
|
|
|
@ -0,0 +1,125 @@
|
||||||
|
#!/usr/bin/python3
|
||||||
|
|
||||||
|
import os
|
||||||
|
import json
|
||||||
|
import redis
|
||||||
|
import requests
|
||||||
|
import configparser
|
||||||
|
|
||||||
|
misp_module_url = 'http://localhost:6666'
|
||||||
|
|
||||||
|
default_config_path = os.path.join(os.environ['AIL_HOME'], 'configs', 'misp_modules.cfg')
|
||||||
|
|
||||||
|
sys.path.append(os.path.join(os.environ['AIL_BIN'], 'lib/'))
|
||||||
|
import ConfigLoader
|
||||||
|
|
||||||
|
config_loader = ConfigLoader.ConfigLoader()
|
||||||
|
r_serv = config_loader.get_redis_conn("ARDB_DB")
|
||||||
|
config_loader = None
|
||||||
|
|
||||||
|
def init_config(config_path=default_config_path):
|
||||||
|
config = configparser.ConfigParser()
|
||||||
|
if os.path.isfile(config_path):
|
||||||
|
config.read(config_path)
|
||||||
|
else:
|
||||||
|
config.add_section('misp_modules')
|
||||||
|
config.set('misp_modules', 'url', 'http://localhost')
|
||||||
|
config.set('misp_modules', 'port', '6666')
|
||||||
|
return config
|
||||||
|
|
||||||
|
def init_module_config(module_json, config, config_path=default_config_path):
|
||||||
|
if 'config' in module_json['meta']:
|
||||||
|
if module_json['meta']['config']:
|
||||||
|
if module_json['name'] not in config:
|
||||||
|
config.add_section(module_json['name'])
|
||||||
|
for config_var in module_json['meta']['config']:
|
||||||
|
if config_var not in config[module_json['name']]:
|
||||||
|
config.set(module_json['name'], config_var, '')
|
||||||
|
return config
|
||||||
|
|
||||||
|
def load_modules_list():
|
||||||
|
req = requests.get('{}/modules'.format(misp_module_url))
|
||||||
|
if req.status_code == 200:
|
||||||
|
all_misp_modules = req.json()
|
||||||
|
all_modules = []
|
||||||
|
for module_json in all_misp_modules:
|
||||||
|
|
||||||
|
#filter module-types
|
||||||
|
if 'hover' in module_json['meta']['module-type'] or 'expansion' in module_json['meta']['module-type']:
|
||||||
|
all_modules.append(module_json)
|
||||||
|
|
||||||
|
# # TODO: handle import/export modules
|
||||||
|
|
||||||
|
config = init_config()
|
||||||
|
r_serv.delete('misp_modules')
|
||||||
|
for module_json in all_modules:
|
||||||
|
config = init_module_config(module_json, config, config_path=default_config_path)
|
||||||
|
r_serv.hset('misp_modules', module_json['name'], json.dumps(module_json))
|
||||||
|
|
||||||
|
with open(default_config_path, 'w') as f:
|
||||||
|
config.write(f)
|
||||||
|
|
||||||
|
else:
|
||||||
|
print('Error: Module service not reachable.')
|
||||||
|
|
||||||
|
|
||||||
|
def build_config_json(module_name):
|
||||||
|
misp_module_config = configparser.ConfigParser()
|
||||||
|
misp_module_config.read(default_config_path)
|
||||||
|
dict_config = {}
|
||||||
|
if module_name in misp_module_config:
|
||||||
|
for config_key in misp_module_config[module_name]:
|
||||||
|
config_value = misp_module_config[module_name][config_key]
|
||||||
|
if config_value:
|
||||||
|
dict_config[config_key] = config_value
|
||||||
|
return dict_config
|
||||||
|
|
||||||
|
def build_enrichment_request_json(module_name, var_name, var_value):
|
||||||
|
# # TODO: add error handler
|
||||||
|
request_dict = {'module': module_name, var_name: var_value}
|
||||||
|
# add config
|
||||||
|
config_json = build_config_json(module_name)
|
||||||
|
if config_json:
|
||||||
|
request_dict['config'] = config_json
|
||||||
|
return json.dumps(request_dict)
|
||||||
|
|
||||||
|
def misp_module_enrichment_request(misp_module_url, misp_module_port, request_content):
|
||||||
|
# # TODO: check if module is enabled
|
||||||
|
endpoint_url = '{}:{}/query'.format(misp_module_url, misp_module_port)
|
||||||
|
req = requests.post(endpoint_url, headers={'Content-Type': 'application/json'}, data=request_content)
|
||||||
|
if req.status_code == 200:
|
||||||
|
response = req.json()
|
||||||
|
if response:
|
||||||
|
return parse_module_enrichment_response(response)
|
||||||
|
else:
|
||||||
|
print('error: {} Enrichment service not reachable.'.format(req.status_code,))
|
||||||
|
return ''
|
||||||
|
|
||||||
|
def parse_module_enrichment_response(misp_module_response):
|
||||||
|
print(misp_module_response)
|
||||||
|
response_values = []
|
||||||
|
if 'results' in misp_module_response:
|
||||||
|
# # TODO: handle misp_format (Attribute, Object, Tags)
|
||||||
|
response_types = []
|
||||||
|
for result in misp_module_response['results']:
|
||||||
|
# get all types
|
||||||
|
for resp_type in result['types']:
|
||||||
|
response_types.append(resp_type)
|
||||||
|
# get all values
|
||||||
|
for resp_value in result['values']:
|
||||||
|
response_values.append(resp_value)
|
||||||
|
# TODO: handle / verify / use response types
|
||||||
|
#print(response_types)
|
||||||
|
return response_values
|
||||||
|
|
||||||
|
if __name__ == "__main__":
|
||||||
|
|
||||||
|
load_modules_list()
|
||||||
|
|
||||||
|
misp_module_url = 'http://localhost'
|
||||||
|
misp_module_port = 6666
|
||||||
|
|
||||||
|
bitcoin_address = 'bitcoin_address'
|
||||||
|
test_content = build_enrichment_request_json('btc_steroids', 'btc', bitcoin_address)
|
||||||
|
print(test_content)
|
||||||
|
misp_module_enrichment_request(misp_module_url, misp_module_port, test_content)
|
|
@ -0,0 +1,37 @@
|
||||||
|
#!/usr/bin/env python3
|
||||||
|
# -*-coding:UTF-8 -*
|
||||||
|
|
||||||
|
import os
|
||||||
|
import re
|
||||||
|
import sys
|
||||||
|
import time
|
||||||
|
import redis
|
||||||
|
import datetime
|
||||||
|
|
||||||
|
sys.path.append(os.path.join(os.environ['AIL_BIN'], 'lib/'))
|
||||||
|
import ConfigLoader
|
||||||
|
|
||||||
|
new_version = 'v2.5'
|
||||||
|
|
||||||
|
if __name__ == '__main__':
|
||||||
|
|
||||||
|
start_deb = time.time()
|
||||||
|
|
||||||
|
config_loader = ConfigLoader.ConfigLoader()
|
||||||
|
r_serv = config_loader.get_redis_conn("ARDB_DB")
|
||||||
|
config_loader = None
|
||||||
|
|
||||||
|
r_serv.zadd('ail:all_role', 3, 'user')
|
||||||
|
r_serv.zadd('ail:all_role', 4, 'user_no_api')
|
||||||
|
r_serv.zadd('ail:all_role', 5, 'read_only')
|
||||||
|
|
||||||
|
for user in r_serv.hkeys(user:all):
|
||||||
|
r_serv.sadd('user_role:user', user)
|
||||||
|
r_serv.sadd('user_role:user_no_api', user)
|
||||||
|
r_serv.sadd('user_role:read_only', user)
|
||||||
|
|
||||||
|
#Set current ail version
|
||||||
|
r_serv.set('ail:version', new_version)
|
||||||
|
|
||||||
|
#Set current ail version
|
||||||
|
r_serv.hset('ail:update_date', new_version, datetime.datetime.now().strftime("%Y%m%d"))
|
|
@ -0,0 +1,39 @@
|
||||||
|
#!/bin/bash
|
||||||
|
|
||||||
|
[ -z "$AIL_HOME" ] && echo "Needs the env var AIL_HOME. Run the script from the virtual environment." && exit 1;
|
||||||
|
[ -z "$AIL_REDIS" ] && echo "Needs the env var AIL_REDIS. Run the script from the virtual environment." && exit 1;
|
||||||
|
[ -z "$AIL_ARDB" ] && echo "Needs the env var AIL_ARDB. Run the script from the virtual environment." && exit 1;
|
||||||
|
[ -z "$AIL_BIN" ] && echo "Needs the env var AIL_ARDB. Run the script from the virtual environment." && exit 1;
|
||||||
|
[ -z "$AIL_FLASK" ] && echo "Needs the env var AIL_FLASK. Run the script from the virtual environment." && exit 1;
|
||||||
|
|
||||||
|
export PATH=$AIL_HOME:$PATH
|
||||||
|
export PATH=$AIL_REDIS:$PATH
|
||||||
|
export PATH=$AIL_ARDB:$PATH
|
||||||
|
export PATH=$AIL_BIN:$PATH
|
||||||
|
export PATH=$AIL_FLASK:$PATH
|
||||||
|
|
||||||
|
GREEN="\\033[1;32m"
|
||||||
|
DEFAULT="\\033[0;39m"
|
||||||
|
|
||||||
|
echo -e $GREEN"Shutting down AIL ..."$DEFAULT
|
||||||
|
bash ${AIL_BIN}/LAUNCH.sh -ks
|
||||||
|
wait
|
||||||
|
|
||||||
|
bash ${AIL_BIN}/LAUNCH.sh -lav &
|
||||||
|
wait
|
||||||
|
echo ""
|
||||||
|
|
||||||
|
echo ""
|
||||||
|
echo -e $GREEN"Updating AIL VERSION ..."$DEFAULT
|
||||||
|
echo ""
|
||||||
|
python ${AIL_HOME}/update/v2.5/Update.py
|
||||||
|
wait
|
||||||
|
echo ""
|
||||||
|
echo ""
|
||||||
|
|
||||||
|
echo ""
|
||||||
|
echo -e $GREEN"Shutting down ARDB ..."$DEFAULT
|
||||||
|
bash ${AIL_BIN}/LAUNCH.sh -ks
|
||||||
|
wait
|
||||||
|
|
||||||
|
exit 0
|
|
@ -18,7 +18,7 @@ import Flask_config
|
||||||
|
|
||||||
# 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_admin, login_analyst, login_read_only
|
||||||
|
|
||||||
sys.path.append(os.path.join(os.environ['AIL_BIN'], 'lib'))
|
sys.path.append(os.path.join(os.environ['AIL_BIN'], 'lib'))
|
||||||
import Correlate_object
|
import Correlate_object
|
||||||
|
@ -121,7 +121,7 @@ def get_card_metadata(object_type, correlation_id, type_id=None, expand_card=Fal
|
||||||
# ============= ROUTES ==============
|
# ============= ROUTES ==============
|
||||||
@correlation.route('/correlation/show_correlation', methods=['GET', 'POST']) # GET + POST
|
@correlation.route('/correlation/show_correlation', methods=['GET', 'POST']) # GET + POST
|
||||||
@login_required
|
@login_required
|
||||||
@login_analyst
|
@login_read_only
|
||||||
def show_correlation():
|
def show_correlation():
|
||||||
if request.method == 'POST':
|
if request.method == 'POST':
|
||||||
object_type = request.form.get('object_type')
|
object_type = request.form.get('object_type')
|
||||||
|
@ -197,7 +197,7 @@ def show_correlation():
|
||||||
|
|
||||||
@correlation.route('/correlation/graph_node_json')
|
@correlation.route('/correlation/graph_node_json')
|
||||||
@login_required
|
@login_required
|
||||||
@login_analyst
|
@login_read_only
|
||||||
def graph_node_json(): # # TODO: use post
|
def graph_node_json(): # # TODO: use post
|
||||||
correlation_id = request.args.get('correlation_id')
|
correlation_id = request.args.get('correlation_id')
|
||||||
type_id = request.args.get('type_id')
|
type_id = request.args.get('type_id')
|
||||||
|
|
|
@ -18,7 +18,7 @@ import Flask_config
|
||||||
|
|
||||||
# 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_admin, login_analyst, login_read_only
|
||||||
|
|
||||||
sys.path.append(os.path.join(os.environ['AIL_BIN'], 'packages'))
|
sys.path.append(os.path.join(os.environ['AIL_BIN'], 'packages'))
|
||||||
import Tag
|
import Tag
|
||||||
|
@ -47,7 +47,7 @@ def api_validator(api_response):
|
||||||
# add route : /crawlers/show_domain
|
# add route : /crawlers/show_domain
|
||||||
@crawler_splash.route('/crawlers/showDomain')
|
@crawler_splash.route('/crawlers/showDomain')
|
||||||
@login_required
|
@login_required
|
||||||
@login_analyst
|
@login_read_only
|
||||||
def showDomain():
|
def showDomain():
|
||||||
domain_name = request.args.get('domain')
|
domain_name = request.args.get('domain')
|
||||||
epoch = request.args.get('epoch')
|
epoch = request.args.get('epoch')
|
||||||
|
|
|
@ -23,6 +23,9 @@ if __name__ == "__main__":
|
||||||
if not r_serv.exists('ail:all_role'):
|
if not r_serv.exists('ail:all_role'):
|
||||||
r_serv.zadd('ail:all_role', 1, 'admin')
|
r_serv.zadd('ail:all_role', 1, 'admin')
|
||||||
r_serv.zadd('ail:all_role', 2, 'analyst')
|
r_serv.zadd('ail:all_role', 2, 'analyst')
|
||||||
|
r_serv.zadd('ail:all_role', 3, 'user')
|
||||||
|
r_serv.zadd('ail:all_role', 4, 'user_no_api')
|
||||||
|
r_serv.zadd('ail:all_role', 5, 'read_only')
|
||||||
|
|
||||||
username = 'admin@admin.test'
|
username = 'admin@admin.test'
|
||||||
password = gen_password()
|
password = gen_password()
|
||||||
|
|
|
@ -16,7 +16,7 @@ from flask_login import LoginManager, current_user, login_user, logout_user, log
|
||||||
from flask import request, make_response, current_app
|
from flask import request, make_response, current_app
|
||||||
|
|
||||||
login_manager = LoginManager()
|
login_manager = LoginManager()
|
||||||
login_manager.login_view = 'role'
|
login_manager.login_view = 'root.role'
|
||||||
|
|
||||||
# CONFIG #
|
# CONFIG #
|
||||||
config_loader = ConfigLoader.ConfigLoader()
|
config_loader = ConfigLoader.ConfigLoader()
|
||||||
|
@ -68,7 +68,35 @@ def login_analyst(func):
|
||||||
return func(*args, **kwargs)
|
return func(*args, **kwargs)
|
||||||
return decorated_view
|
return decorated_view
|
||||||
|
|
||||||
|
def login_user(func):
|
||||||
|
@wraps(func)
|
||||||
|
def decorated_view(*args, **kwargs):
|
||||||
|
if not current_user.is_authenticated:
|
||||||
|
return login_manager.unauthorized()
|
||||||
|
elif (not current_user.is_in_role('user')):
|
||||||
|
return login_manager.unauthorized()
|
||||||
|
return func(*args, **kwargs)
|
||||||
|
return decorated_view
|
||||||
|
|
||||||
|
def login_user_no_api(func):
|
||||||
|
@wraps(func)
|
||||||
|
def decorated_view(*args, **kwargs):
|
||||||
|
if not current_user.is_authenticated:
|
||||||
|
return login_manager.unauthorized()
|
||||||
|
elif (not current_user.is_in_role('user_no_api')):
|
||||||
|
return login_manager.unauthorized()
|
||||||
|
return func(*args, **kwargs)
|
||||||
|
return decorated_view
|
||||||
|
|
||||||
|
def login_read_only(func):
|
||||||
|
@wraps(func)
|
||||||
|
def decorated_view(*args, **kwargs):
|
||||||
|
if not current_user.is_authenticated:
|
||||||
|
return login_manager.unauthorized()
|
||||||
|
elif (not current_user.is_in_role('read_only')):
|
||||||
|
return login_manager.unauthorized()
|
||||||
|
return func(*args, **kwargs)
|
||||||
|
return decorated_view
|
||||||
|
|
||||||
###############################################################
|
###############################################################
|
||||||
###############################################################
|
###############################################################
|
||||||
|
@ -107,11 +135,15 @@ def create_user_db(username_id , password, default=False, role=None, update=Fals
|
||||||
# create user token
|
# create user token
|
||||||
generate_new_token(username_id)
|
generate_new_token(username_id)
|
||||||
|
|
||||||
|
if not role:
|
||||||
|
role = 'read_only'
|
||||||
|
|
||||||
if update:
|
if update:
|
||||||
r_serv_db.hdel('user_metadata:{}'.format(username_id), 'change_passwd')
|
r_serv_db.hdel('user_metadata:{}'.format(username_id), 'change_passwd')
|
||||||
# remove default user password file
|
# remove default user password file
|
||||||
if username_id=='admin@admin.test':
|
if username_id=='admin@admin.test':
|
||||||
os.remove(default_passwd_file)
|
os.remove(default_passwd_file)
|
||||||
|
r_serv_db.hset('user:all', username_id, password_hash)
|
||||||
else:
|
else:
|
||||||
if default:
|
if default:
|
||||||
r_serv_db.hset('user_metadata:{}'.format(username_id), 'change_passwd', True)
|
r_serv_db.hset('user_metadata:{}'.format(username_id), 'change_passwd', True)
|
||||||
|
@ -121,7 +153,7 @@ def create_user_db(username_id , password, default=False, role=None, update=Fals
|
||||||
r_serv_db.sadd('user_role:{}'.format(role_to_add), username_id)
|
r_serv_db.sadd('user_role:{}'.format(role_to_add), username_id)
|
||||||
r_serv_db.hset('user_metadata:{}'.format(username_id), 'role', role)
|
r_serv_db.hset('user_metadata:{}'.format(username_id), 'role', role)
|
||||||
|
|
||||||
r_serv_db.hset('user:all', username_id, password_hash)
|
r_serv_db.hset('user:all', username_id, password_hash)
|
||||||
|
|
||||||
def edit_user_db(user_id, role, password=None):
|
def edit_user_db(user_id, role, password=None):
|
||||||
if password:
|
if password:
|
||||||
|
|
|
@ -7,7 +7,7 @@
|
||||||
import redis
|
import redis
|
||||||
from flask import Flask, render_template, jsonify, request, Blueprint, redirect, url_for
|
from flask import Flask, render_template, jsonify, request, Blueprint, redirect, url_for
|
||||||
|
|
||||||
from Role_Manager import login_admin, login_analyst
|
from Role_Manager import login_admin, login_analyst, login_read_only
|
||||||
from flask_login import login_required
|
from flask_login import login_required
|
||||||
|
|
||||||
import json
|
import json
|
||||||
|
@ -125,7 +125,7 @@ def get_last_seen_from_tags_list(list_tags):
|
||||||
|
|
||||||
@Tags.route("/tags/", methods=['GET'])
|
@Tags.route("/tags/", methods=['GET'])
|
||||||
@login_required
|
@login_required
|
||||||
@login_analyst
|
@login_read_only
|
||||||
def Tags_page():
|
def Tags_page():
|
||||||
date_from = request.args.get('date_from')
|
date_from = request.args.get('date_from')
|
||||||
date_to = request.args.get('date_to')
|
date_to = request.args.get('date_to')
|
||||||
|
@ -260,7 +260,7 @@ def Tags_page():
|
||||||
|
|
||||||
@Tags.route("/Tags/get_all_tags")
|
@Tags.route("/Tags/get_all_tags")
|
||||||
@login_required
|
@login_required
|
||||||
@login_analyst
|
@login_read_only
|
||||||
def get_all_tags():
|
def get_all_tags():
|
||||||
|
|
||||||
all_tags = r_serv_tags.smembers('list_tags')
|
all_tags = r_serv_tags.smembers('list_tags')
|
||||||
|
@ -284,7 +284,7 @@ def get_all_tags():
|
||||||
|
|
||||||
@Tags.route("/Tags/get_all_tags_taxonomies")
|
@Tags.route("/Tags/get_all_tags_taxonomies")
|
||||||
@login_required
|
@login_required
|
||||||
@login_analyst
|
@login_read_only
|
||||||
def get_all_tags_taxonomies():
|
def get_all_tags_taxonomies():
|
||||||
|
|
||||||
taxonomies = Taxonomies()
|
taxonomies = Taxonomies()
|
||||||
|
@ -303,7 +303,7 @@ def get_all_tags_taxonomies():
|
||||||
|
|
||||||
@Tags.route("/Tags/get_all_tags_galaxies")
|
@Tags.route("/Tags/get_all_tags_galaxies")
|
||||||
@login_required
|
@login_required
|
||||||
@login_analyst
|
@login_read_only
|
||||||
def get_all_tags_galaxy():
|
def get_all_tags_galaxy():
|
||||||
|
|
||||||
active_galaxies = r_serv_tags.smembers('active_galaxies')
|
active_galaxies = r_serv_tags.smembers('active_galaxies')
|
||||||
|
@ -318,7 +318,7 @@ def get_all_tags_galaxy():
|
||||||
|
|
||||||
@Tags.route("/Tags/get_tags_taxonomie")
|
@Tags.route("/Tags/get_tags_taxonomie")
|
||||||
@login_required
|
@login_required
|
||||||
@login_analyst
|
@login_read_only
|
||||||
def get_tags_taxonomie():
|
def get_tags_taxonomie():
|
||||||
|
|
||||||
taxonomie = request.args.get('taxonomie')
|
taxonomie = request.args.get('taxonomie')
|
||||||
|
@ -346,7 +346,7 @@ def get_tags_taxonomie():
|
||||||
|
|
||||||
@Tags.route("/Tags/get_tags_galaxy")
|
@Tags.route("/Tags/get_tags_galaxy")
|
||||||
@login_required
|
@login_required
|
||||||
@login_analyst
|
@login_read_only
|
||||||
def get_tags_galaxy():
|
def get_tags_galaxy():
|
||||||
|
|
||||||
galaxy = request.args.get('galaxy')
|
galaxy = request.args.get('galaxy')
|
||||||
|
@ -467,7 +467,7 @@ def add_item_tags():
|
||||||
|
|
||||||
@Tags.route("/Tags/taxonomies")
|
@Tags.route("/Tags/taxonomies")
|
||||||
@login_required
|
@login_required
|
||||||
@login_analyst
|
@login_read_only
|
||||||
def taxonomies():
|
def taxonomies():
|
||||||
|
|
||||||
active_taxonomies = r_serv_tags.smembers('active_taxonomies')
|
active_taxonomies = r_serv_tags.smembers('active_taxonomies')
|
||||||
|
@ -642,7 +642,7 @@ def edit_taxonomie_tag():
|
||||||
|
|
||||||
@Tags.route("/Tags/galaxies")
|
@Tags.route("/Tags/galaxies")
|
||||||
@login_required
|
@login_required
|
||||||
@login_analyst
|
@login_read_only
|
||||||
def galaxies():
|
def galaxies():
|
||||||
|
|
||||||
active_galaxies = r_serv_tags.smembers('active_galaxies')
|
active_galaxies = r_serv_tags.smembers('active_galaxies')
|
||||||
|
@ -901,7 +901,7 @@ def edit_galaxy_tag():
|
||||||
|
|
||||||
@Tags.route("/Tags/tag_galaxy_info")
|
@Tags.route("/Tags/tag_galaxy_info")
|
||||||
@login_required
|
@login_required
|
||||||
@login_analyst
|
@login_read_only
|
||||||
def tag_galaxy_info():
|
def tag_galaxy_info():
|
||||||
|
|
||||||
galaxy = request.args.get('galaxy')
|
galaxy = request.args.get('galaxy')
|
||||||
|
|
|
@ -14,7 +14,7 @@ from Date import Date
|
||||||
|
|
||||||
from flask import Flask, render_template, jsonify, request, Blueprint, url_for
|
from flask import Flask, render_template, jsonify, request, Blueprint, url_for
|
||||||
|
|
||||||
from Role_Manager import login_admin, login_analyst
|
from Role_Manager import login_admin, login_analyst, login_read_only
|
||||||
from flask_login import login_required
|
from flask_login import login_required
|
||||||
|
|
||||||
# ============ VARIABLES ============
|
# ============ VARIABLES ============
|
||||||
|
@ -113,13 +113,13 @@ def datetime_from_utc_to_local(utc_str):
|
||||||
|
|
||||||
@dashboard.route("/_logs")
|
@dashboard.route("/_logs")
|
||||||
@login_required
|
@login_required
|
||||||
@login_analyst
|
@login_read_only
|
||||||
def logs():
|
def logs():
|
||||||
return flask.Response(event_stream(), mimetype="text/event-stream")
|
return flask.Response(event_stream(), mimetype="text/event-stream")
|
||||||
|
|
||||||
@dashboard.route("/_get_last_logs_json")
|
@dashboard.route("/_get_last_logs_json")
|
||||||
@login_required
|
@login_required
|
||||||
@login_analyst
|
@login_read_only
|
||||||
def get_last_logs_json():
|
def get_last_logs_json():
|
||||||
date = datetime.datetime.now().strftime("%Y%m%d")
|
date = datetime.datetime.now().strftime("%Y%m%d")
|
||||||
|
|
||||||
|
@ -162,14 +162,14 @@ def get_last_logs_json():
|
||||||
|
|
||||||
@dashboard.route("/_stuff", methods=['GET'])
|
@dashboard.route("/_stuff", methods=['GET'])
|
||||||
@login_required
|
@login_required
|
||||||
@login_analyst
|
@login_read_only
|
||||||
def stuff():
|
def stuff():
|
||||||
return jsonify(row1=get_queues(r_serv))
|
return jsonify(row1=get_queues(r_serv))
|
||||||
|
|
||||||
|
|
||||||
@dashboard.route("/")
|
@dashboard.route("/")
|
||||||
@login_required
|
@login_required
|
||||||
@login_analyst
|
@login_read_only
|
||||||
def index():
|
def index():
|
||||||
default_minute = config_loader.get_config_str("Flask", "minute_processed_paste")
|
default_minute = config_loader.get_config_str("Flask", "minute_processed_paste")
|
||||||
threshold_stucked_module = config_loader.get_config_int("Module_ModuleInformation", "threshold_stucked_module")
|
threshold_stucked_module = config_loader.get_config_int("Module_ModuleInformation", "threshold_stucked_module")
|
||||||
|
|
|
@ -17,7 +17,7 @@ from hashlib import sha256
|
||||||
|
|
||||||
import requests
|
import requests
|
||||||
from flask import Flask, render_template, jsonify, request, Blueprint, redirect, url_for, send_file
|
from flask import Flask, render_template, jsonify, request, Blueprint, redirect, url_for, send_file
|
||||||
from Role_Manager import login_admin, login_analyst
|
from Role_Manager import login_admin, login_analyst, login_read_only
|
||||||
from flask_login import login_required
|
from flask_login import login_required
|
||||||
|
|
||||||
# ============ VARIABLES ============
|
# ============ VARIABLES ============
|
||||||
|
@ -475,7 +475,7 @@ def correlation_graph_node_json(correlation_type, type_id, key_id):
|
||||||
# ============= ROUTES ==============
|
# ============= ROUTES ==============
|
||||||
@hashDecoded.route("/hashDecoded/all_hash_search", methods=['POST'])
|
@hashDecoded.route("/hashDecoded/all_hash_search", methods=['POST'])
|
||||||
@login_required
|
@login_required
|
||||||
@login_analyst
|
@login_read_only
|
||||||
def all_hash_search():
|
def all_hash_search():
|
||||||
date_from = request.form.get('date_from')
|
date_from = request.form.get('date_from')
|
||||||
date_to = request.form.get('date_to')
|
date_to = request.form.get('date_to')
|
||||||
|
@ -486,7 +486,7 @@ def all_hash_search():
|
||||||
|
|
||||||
@hashDecoded.route("/hashDecoded/", methods=['GET'])
|
@hashDecoded.route("/hashDecoded/", methods=['GET'])
|
||||||
@login_required
|
@login_required
|
||||||
@login_analyst
|
@login_read_only
|
||||||
def hashDecoded_page():
|
def hashDecoded_page():
|
||||||
date_from = request.args.get('date_from')
|
date_from = request.args.get('date_from')
|
||||||
date_to = request.args.get('date_to')
|
date_to = request.args.get('date_to')
|
||||||
|
@ -605,7 +605,7 @@ def hashDecoded_page():
|
||||||
|
|
||||||
@hashDecoded.route('/hashDecoded/hash_by_type')
|
@hashDecoded.route('/hashDecoded/hash_by_type')
|
||||||
@login_required
|
@login_required
|
||||||
@login_analyst
|
@login_read_only
|
||||||
def hash_by_type():
|
def hash_by_type():
|
||||||
type = request.args.get('type')
|
type = request.args.get('type')
|
||||||
type = 'text/plain'
|
type = 'text/plain'
|
||||||
|
@ -614,7 +614,7 @@ def hash_by_type():
|
||||||
|
|
||||||
@hashDecoded.route('/hashDecoded/hash_hash')
|
@hashDecoded.route('/hashDecoded/hash_hash')
|
||||||
@login_required
|
@login_required
|
||||||
@login_analyst
|
@login_read_only
|
||||||
def hash_hash():
|
def hash_hash():
|
||||||
hash = request.args.get('hash')
|
hash = request.args.get('hash')
|
||||||
return render_template('hash_hash.html')
|
return render_template('hash_hash.html')
|
||||||
|
@ -677,7 +677,7 @@ def hash_hash():
|
||||||
|
|
||||||
@hashDecoded.route('/hashDecoded/downloadHash')
|
@hashDecoded.route('/hashDecoded/downloadHash')
|
||||||
@login_required
|
@login_required
|
||||||
@login_analyst
|
@login_read_only
|
||||||
def downloadHash():
|
def downloadHash():
|
||||||
hash = request.args.get('hash')
|
hash = request.args.get('hash')
|
||||||
# sanitize hash
|
# sanitize hash
|
||||||
|
@ -715,7 +715,7 @@ def downloadHash():
|
||||||
|
|
||||||
@hashDecoded.route('/hashDecoded/hash_by_type_json')
|
@hashDecoded.route('/hashDecoded/hash_by_type_json')
|
||||||
@login_required
|
@login_required
|
||||||
@login_analyst
|
@login_read_only
|
||||||
def hash_by_type_json():
|
def hash_by_type_json():
|
||||||
type = request.args.get('type')
|
type = request.args.get('type')
|
||||||
|
|
||||||
|
@ -750,7 +750,7 @@ def hash_by_type_json():
|
||||||
|
|
||||||
@hashDecoded.route('/hashDecoded/decoder_type_json')
|
@hashDecoded.route('/hashDecoded/decoder_type_json')
|
||||||
@login_required
|
@login_required
|
||||||
@login_analyst
|
@login_read_only
|
||||||
def decoder_type_json():
|
def decoder_type_json():
|
||||||
date_from = request.args.get('date_from')
|
date_from = request.args.get('date_from')
|
||||||
date_to = request.args.get('date_to')
|
date_to = request.args.get('date_to')
|
||||||
|
@ -807,7 +807,7 @@ def decoder_type_json():
|
||||||
|
|
||||||
@hashDecoded.route('/hashDecoded/top5_type_json')
|
@hashDecoded.route('/hashDecoded/top5_type_json')
|
||||||
@login_required
|
@login_required
|
||||||
@login_analyst
|
@login_read_only
|
||||||
def top5_type_json():
|
def top5_type_json():
|
||||||
date_from = request.args.get('date_from')
|
date_from = request.args.get('date_from')
|
||||||
date_to = request.args.get('date_to')
|
date_to = request.args.get('date_to')
|
||||||
|
@ -867,7 +867,7 @@ def top5_type_json():
|
||||||
|
|
||||||
@hashDecoded.route('/hashDecoded/daily_type_json')
|
@hashDecoded.route('/hashDecoded/daily_type_json')
|
||||||
@login_required
|
@login_required
|
||||||
@login_analyst
|
@login_read_only
|
||||||
def daily_type_json():
|
def daily_type_json():
|
||||||
date = request.args.get('date')
|
date = request.args.get('date')
|
||||||
|
|
||||||
|
@ -888,7 +888,7 @@ def daily_type_json():
|
||||||
|
|
||||||
@hashDecoded.route('/hashDecoded/range_type_json')
|
@hashDecoded.route('/hashDecoded/range_type_json')
|
||||||
@login_required
|
@login_required
|
||||||
@login_analyst
|
@login_read_only
|
||||||
def range_type_json():
|
def range_type_json():
|
||||||
date_from = request.args.get('date_from')
|
date_from = request.args.get('date_from')
|
||||||
date_to = request.args.get('date_to')
|
date_to = request.args.get('date_to')
|
||||||
|
@ -946,7 +946,7 @@ def range_type_json():
|
||||||
|
|
||||||
@hashDecoded.route('/hashDecoded/hash_graph_line_json')
|
@hashDecoded.route('/hashDecoded/hash_graph_line_json')
|
||||||
@login_required
|
@login_required
|
||||||
@login_analyst
|
@login_read_only
|
||||||
def hash_graph_line_json():
|
def hash_graph_line_json():
|
||||||
hash = request.args.get('hash')
|
hash = request.args.get('hash')
|
||||||
date_from = request.args.get('date_from')
|
date_from = request.args.get('date_from')
|
||||||
|
@ -977,7 +977,7 @@ def hash_graph_line_json():
|
||||||
|
|
||||||
@hashDecoded.route('/hashDecoded/hash_graph_node_json')
|
@hashDecoded.route('/hashDecoded/hash_graph_node_json')
|
||||||
@login_required
|
@login_required
|
||||||
@login_analyst
|
@login_read_only
|
||||||
def hash_graph_node_json():
|
def hash_graph_node_json():
|
||||||
hash = request.args.get('hash')
|
hash = request.args.get('hash')
|
||||||
|
|
||||||
|
@ -1046,7 +1046,7 @@ def hash_graph_node_json():
|
||||||
|
|
||||||
@hashDecoded.route('/hashDecoded/hash_types')
|
@hashDecoded.route('/hashDecoded/hash_types')
|
||||||
@login_required
|
@login_required
|
||||||
@login_analyst
|
@login_read_only
|
||||||
def hash_types():
|
def hash_types():
|
||||||
date_from = 20180701
|
date_from = 20180701
|
||||||
date_to = 20180706
|
date_to = 20180706
|
||||||
|
@ -1118,7 +1118,7 @@ def update_vt_result():
|
||||||
|
|
||||||
@hashDecoded.route('/decoded/pgp_by_type_json') ## TODO: REFRACTOR
|
@hashDecoded.route('/decoded/pgp_by_type_json') ## TODO: REFRACTOR
|
||||||
@login_required
|
@login_required
|
||||||
@login_analyst
|
@login_read_only
|
||||||
def pgp_by_type_json():
|
def pgp_by_type_json():
|
||||||
type_id = request.args.get('type_id')
|
type_id = request.args.get('type_id')
|
||||||
date_from = request.args.get('date_from')
|
date_from = request.args.get('date_from')
|
||||||
|
@ -1164,7 +1164,7 @@ def pgp_by_type_json():
|
||||||
############################ Correlation ############################
|
############################ Correlation ############################
|
||||||
@hashDecoded.route("/correlation/pgpdump", methods=['GET'])
|
@hashDecoded.route("/correlation/pgpdump", methods=['GET'])
|
||||||
@login_required
|
@login_required
|
||||||
@login_analyst
|
@login_read_only
|
||||||
def pgpdump_page():
|
def pgpdump_page():
|
||||||
date_from = request.args.get('date_from')
|
date_from = request.args.get('date_from')
|
||||||
date_to = request.args.get('date_to')
|
date_to = request.args.get('date_to')
|
||||||
|
@ -1176,7 +1176,7 @@ def pgpdump_page():
|
||||||
|
|
||||||
@hashDecoded.route("/correlation/cryptocurrency", methods=['GET'])
|
@hashDecoded.route("/correlation/cryptocurrency", methods=['GET'])
|
||||||
@login_required
|
@login_required
|
||||||
@login_analyst
|
@login_read_only
|
||||||
def cryptocurrency_page():
|
def cryptocurrency_page():
|
||||||
date_from = request.args.get('date_from')
|
date_from = request.args.get('date_from')
|
||||||
date_to = request.args.get('date_to')
|
date_to = request.args.get('date_to')
|
||||||
|
@ -1188,7 +1188,7 @@ def cryptocurrency_page():
|
||||||
|
|
||||||
@hashDecoded.route("/correlation/all_pgpdump_search", methods=['POST'])
|
@hashDecoded.route("/correlation/all_pgpdump_search", methods=['POST'])
|
||||||
@login_required
|
@login_required
|
||||||
@login_analyst
|
@login_read_only
|
||||||
def all_pgpdump_search():
|
def all_pgpdump_search():
|
||||||
date_from = request.form.get('date_from')
|
date_from = request.form.get('date_from')
|
||||||
date_to = request.form.get('date_to')
|
date_to = request.form.get('date_to')
|
||||||
|
@ -1198,7 +1198,7 @@ def all_pgpdump_search():
|
||||||
|
|
||||||
@hashDecoded.route("/correlation/all_cryptocurrency_search", methods=['POST'])
|
@hashDecoded.route("/correlation/all_cryptocurrency_search", methods=['POST'])
|
||||||
@login_required
|
@login_required
|
||||||
@login_analyst
|
@login_read_only
|
||||||
def all_cryptocurrency_search():
|
def all_cryptocurrency_search():
|
||||||
date_from = request.form.get('date_from')
|
date_from = request.form.get('date_from')
|
||||||
date_to = request.form.get('date_to')
|
date_to = request.form.get('date_to')
|
||||||
|
@ -1225,7 +1225,7 @@ def all_cryptocurrency_search():
|
||||||
|
|
||||||
@hashDecoded.route('/correlation/cryptocurrency_range_type_json')
|
@hashDecoded.route('/correlation/cryptocurrency_range_type_json')
|
||||||
@login_required
|
@login_required
|
||||||
@login_analyst
|
@login_read_only
|
||||||
def cryptocurrency_range_type_json():
|
def cryptocurrency_range_type_json():
|
||||||
date_from = request.args.get('date_from')
|
date_from = request.args.get('date_from')
|
||||||
date_to = request.args.get('date_to')
|
date_to = request.args.get('date_to')
|
||||||
|
@ -1233,7 +1233,7 @@ def cryptocurrency_range_type_json():
|
||||||
|
|
||||||
@hashDecoded.route('/correlation/pgpdump_range_type_json')
|
@hashDecoded.route('/correlation/pgpdump_range_type_json')
|
||||||
@login_required
|
@login_required
|
||||||
@login_analyst
|
@login_read_only
|
||||||
def pgpdump_range_type_json():
|
def pgpdump_range_type_json():
|
||||||
date_from = request.args.get('date_from')
|
date_from = request.args.get('date_from')
|
||||||
date_to = request.args.get('date_to')
|
date_to = request.args.get('date_to')
|
||||||
|
@ -1241,7 +1241,7 @@ def pgpdump_range_type_json():
|
||||||
|
|
||||||
@hashDecoded.route('/correlation/pgpdump_graph_node_json')
|
@hashDecoded.route('/correlation/pgpdump_graph_node_json')
|
||||||
@login_required
|
@login_required
|
||||||
@login_analyst
|
@login_read_only
|
||||||
def pgpdump_graph_node_json():
|
def pgpdump_graph_node_json():
|
||||||
type_id = request.args.get('type_id')
|
type_id = request.args.get('type_id')
|
||||||
key_id = request.args.get('key_id')
|
key_id = request.args.get('key_id')
|
||||||
|
@ -1250,7 +1250,7 @@ def pgpdump_graph_node_json():
|
||||||
# # TODO: REFRACTOR
|
# # TODO: REFRACTOR
|
||||||
@hashDecoded.route('/correlation/cryptocurrency_graph_node_json')
|
@hashDecoded.route('/correlation/cryptocurrency_graph_node_json')
|
||||||
@login_required
|
@login_required
|
||||||
@login_analyst
|
@login_read_only
|
||||||
def cryptocurrency_graph_node_json():
|
def cryptocurrency_graph_node_json():
|
||||||
type_id = request.args.get('type_id')
|
type_id = request.args.get('type_id')
|
||||||
key_id = request.args.get('key_id')
|
key_id = request.args.get('key_id')
|
||||||
|
@ -1259,7 +1259,7 @@ def cryptocurrency_graph_node_json():
|
||||||
# # TODO: REFRACTOR
|
# # TODO: REFRACTOR
|
||||||
@hashDecoded.route('/correlation/pgpdump_graph_line_json')
|
@hashDecoded.route('/correlation/pgpdump_graph_line_json')
|
||||||
@login_required
|
@login_required
|
||||||
@login_analyst
|
@login_read_only
|
||||||
def pgpdump_graph_line_json():
|
def pgpdump_graph_line_json():
|
||||||
type_id = request.args.get('type_id')
|
type_id = request.args.get('type_id')
|
||||||
key_id = request.args.get('key_id')
|
key_id = request.args.get('key_id')
|
||||||
|
@ -1293,7 +1293,7 @@ def correlation_graph_line_json(correlation_type, type_id, key_id, date_from, da
|
||||||
|
|
||||||
@hashDecoded.route('/correlation/cryptocurrency_graph_line_json')
|
@hashDecoded.route('/correlation/cryptocurrency_graph_line_json')
|
||||||
@login_required
|
@login_required
|
||||||
@login_analyst
|
@login_read_only
|
||||||
def cryptocurrency_graph_line_json():
|
def cryptocurrency_graph_line_json():
|
||||||
type_id = request.args.get('type_id')
|
type_id = request.args.get('type_id')
|
||||||
key_id = request.args.get('key_id')
|
key_id = request.args.get('key_id')
|
||||||
|
|
|
@ -13,7 +13,7 @@ import json
|
||||||
from pyfaup.faup import Faup
|
from pyfaup.faup import Faup
|
||||||
from flask import Flask, render_template, jsonify, request, send_file, Blueprint, redirect, url_for
|
from flask import Flask, render_template, jsonify, request, send_file, Blueprint, redirect, url_for
|
||||||
|
|
||||||
from Role_Manager import login_admin, login_analyst, no_cache
|
from Role_Manager import login_admin, login_analyst, login_read_only, no_cache
|
||||||
from flask_login import login_required
|
from flask_login import login_required
|
||||||
|
|
||||||
from Date import Date
|
from Date import Date
|
||||||
|
@ -242,7 +242,7 @@ def delete_auto_crawler(url):
|
||||||
|
|
||||||
@hiddenServices.route("/crawlers/", methods=['GET'])
|
@hiddenServices.route("/crawlers/", methods=['GET'])
|
||||||
@login_required
|
@login_required
|
||||||
@login_analyst
|
@login_read_only
|
||||||
def dashboard():
|
def dashboard():
|
||||||
crawler_metadata_onion = get_crawler_splash_status('onion')
|
crawler_metadata_onion = get_crawler_splash_status('onion')
|
||||||
crawler_metadata_regular = get_crawler_splash_status('regular')
|
crawler_metadata_regular = get_crawler_splash_status('regular')
|
||||||
|
@ -259,13 +259,13 @@ def dashboard():
|
||||||
|
|
||||||
@hiddenServices.route("/crawlers/manual", methods=['GET'])
|
@hiddenServices.route("/crawlers/manual", methods=['GET'])
|
||||||
@login_required
|
@login_required
|
||||||
@login_analyst
|
@login_read_only
|
||||||
def manual():
|
def manual():
|
||||||
return render_template("Crawler_Splash_manual.html", crawler_enabled=crawler_enabled)
|
return render_template("Crawler_Splash_manual.html", crawler_enabled=crawler_enabled)
|
||||||
|
|
||||||
@hiddenServices.route("/crawlers/crawler_splash_onion", methods=['GET'])
|
@hiddenServices.route("/crawlers/crawler_splash_onion", methods=['GET'])
|
||||||
@login_required
|
@login_required
|
||||||
@login_analyst
|
@login_read_only
|
||||||
def crawler_splash_onion():
|
def crawler_splash_onion():
|
||||||
type = 'onion'
|
type = 'onion'
|
||||||
last_onions = get_last_domains_crawled(type)
|
last_onions = get_last_domains_crawled(type)
|
||||||
|
@ -284,7 +284,7 @@ def crawler_splash_onion():
|
||||||
|
|
||||||
@hiddenServices.route("/crawlers/Crawler_Splash_last_by_type", methods=['GET'])
|
@hiddenServices.route("/crawlers/Crawler_Splash_last_by_type", methods=['GET'])
|
||||||
@login_required
|
@login_required
|
||||||
@login_analyst
|
@login_read_only
|
||||||
def Crawler_Splash_last_by_type():
|
def Crawler_Splash_last_by_type():
|
||||||
type = request.args.get('type')
|
type = request.args.get('type')
|
||||||
# verify user input
|
# verify user input
|
||||||
|
@ -309,7 +309,7 @@ def Crawler_Splash_last_by_type():
|
||||||
|
|
||||||
@hiddenServices.route("/crawlers/blacklisted_domains", methods=['GET'])
|
@hiddenServices.route("/crawlers/blacklisted_domains", methods=['GET'])
|
||||||
@login_required
|
@login_required
|
||||||
@login_analyst
|
@login_read_only
|
||||||
def blacklisted_domains():
|
def blacklisted_domains():
|
||||||
blacklist_domain = request.args.get('blacklist_domain')
|
blacklist_domain = request.args.get('blacklist_domain')
|
||||||
unblacklist_domain = request.args.get('unblacklist_domain')
|
unblacklist_domain = request.args.get('unblacklist_domain')
|
||||||
|
@ -479,7 +479,7 @@ def create_spider_splash():
|
||||||
|
|
||||||
@hiddenServices.route("/crawlers/auto_crawler", methods=['GET'])
|
@hiddenServices.route("/crawlers/auto_crawler", methods=['GET'])
|
||||||
@login_required
|
@login_required
|
||||||
@login_analyst
|
@login_read_only
|
||||||
def auto_crawler():
|
def auto_crawler():
|
||||||
nb_element_to_display = 100
|
nb_element_to_display = 100
|
||||||
try:
|
try:
|
||||||
|
@ -544,7 +544,7 @@ def remove_auto_crawler():
|
||||||
|
|
||||||
@hiddenServices.route("/crawlers/crawler_dashboard_json", methods=['GET'])
|
@hiddenServices.route("/crawlers/crawler_dashboard_json", methods=['GET'])
|
||||||
@login_required
|
@login_required
|
||||||
@login_analyst
|
@login_read_only
|
||||||
def crawler_dashboard_json():
|
def crawler_dashboard_json():
|
||||||
|
|
||||||
crawler_metadata_onion = get_crawler_splash_status('onion')
|
crawler_metadata_onion = get_crawler_splash_status('onion')
|
||||||
|
@ -562,7 +562,7 @@ def crawler_dashboard_json():
|
||||||
# # TODO: refractor
|
# # TODO: refractor
|
||||||
@hiddenServices.route("/hiddenServices/last_crawled_domains_with_stats_json", methods=['GET'])
|
@hiddenServices.route("/hiddenServices/last_crawled_domains_with_stats_json", methods=['GET'])
|
||||||
@login_required
|
@login_required
|
||||||
@login_analyst
|
@login_read_only
|
||||||
def last_crawled_domains_with_stats_json():
|
def last_crawled_domains_with_stats_json():
|
||||||
last_onions = r_serv_onion.lrange('last_onion', 0 ,-1)
|
last_onions = r_serv_onion.lrange('last_onion', 0 ,-1)
|
||||||
list_onion = []
|
list_onion = []
|
||||||
|
@ -613,7 +613,7 @@ def last_crawled_domains_with_stats_json():
|
||||||
|
|
||||||
@hiddenServices.route("/hiddenServices/get_onions_by_daterange", methods=['POST'])
|
@hiddenServices.route("/hiddenServices/get_onions_by_daterange", methods=['POST'])
|
||||||
@login_required
|
@login_required
|
||||||
@login_analyst
|
@login_read_only
|
||||||
def get_onions_by_daterange():
|
def get_onions_by_daterange():
|
||||||
date_from = request.form.get('date_from')
|
date_from = request.form.get('date_from')
|
||||||
date_to = request.form.get('date_to')
|
date_to = request.form.get('date_to')
|
||||||
|
@ -626,7 +626,7 @@ def get_onions_by_daterange():
|
||||||
|
|
||||||
@hiddenServices.route("/hiddenServices/show_domains_by_daterange", methods=['GET'])
|
@hiddenServices.route("/hiddenServices/show_domains_by_daterange", methods=['GET'])
|
||||||
@login_required
|
@login_required
|
||||||
@login_analyst
|
@login_read_only
|
||||||
def show_domains_by_daterange():
|
def show_domains_by_daterange():
|
||||||
date_from = request.args.get('date_from')
|
date_from = request.args.get('date_from')
|
||||||
date_to = request.args.get('date_to')
|
date_to = request.args.get('date_to')
|
||||||
|
@ -732,7 +732,7 @@ def show_domains_by_daterange():
|
||||||
|
|
||||||
@hiddenServices.route("/crawlers/download_domain", methods=['GET'])
|
@hiddenServices.route("/crawlers/download_domain", methods=['GET'])
|
||||||
@login_required
|
@login_required
|
||||||
@login_analyst
|
@login_read_only
|
||||||
@no_cache
|
@no_cache
|
||||||
def download_domain():
|
def download_domain():
|
||||||
domain = request.args.get('domain')
|
domain = request.args.get('domain')
|
||||||
|
@ -798,7 +798,7 @@ def onion_son():
|
||||||
# ============= JSON ==============
|
# ============= JSON ==============
|
||||||
@hiddenServices.route("/hiddenServices/domain_crawled_7days_json", methods=['GET'])
|
@hiddenServices.route("/hiddenServices/domain_crawled_7days_json", methods=['GET'])
|
||||||
@login_required
|
@login_required
|
||||||
@login_analyst
|
@login_read_only
|
||||||
def domain_crawled_7days_json():
|
def domain_crawled_7days_json():
|
||||||
type = 'onion'
|
type = 'onion'
|
||||||
## TODO: # FIXME: 404 error
|
## TODO: # FIXME: 404 error
|
||||||
|
@ -818,7 +818,7 @@ def domain_crawled_7days_json():
|
||||||
|
|
||||||
@hiddenServices.route('/hiddenServices/domain_crawled_by_type_json')
|
@hiddenServices.route('/hiddenServices/domain_crawled_by_type_json')
|
||||||
@login_required
|
@login_required
|
||||||
@login_analyst
|
@login_read_only
|
||||||
def domain_crawled_by_type_json():
|
def domain_crawled_by_type_json():
|
||||||
current_date = request.args.get('date')
|
current_date = request.args.get('date')
|
||||||
type = request.args.get('type')
|
type = request.args.get('type')
|
||||||
|
|
|
@ -11,7 +11,7 @@ import calendar
|
||||||
import flask
|
import flask
|
||||||
from flask import Flask, render_template, jsonify, request, Blueprint, url_for, redirect, Response, escape
|
from flask import Flask, render_template, jsonify, request, Blueprint, url_for, redirect, Response, escape
|
||||||
|
|
||||||
from Role_Manager import login_admin, login_analyst
|
from Role_Manager import login_admin, login_analyst, login_read_only
|
||||||
from flask_login import login_required, current_user
|
from flask_login import login_required, current_user
|
||||||
|
|
||||||
import re
|
import re
|
||||||
|
@ -41,7 +41,7 @@ hunter = Blueprint('hunter', __name__, template_folder='templates')
|
||||||
|
|
||||||
@hunter.route("/trackers")
|
@hunter.route("/trackers")
|
||||||
@login_required
|
@login_required
|
||||||
@login_analyst
|
@login_read_only
|
||||||
def tracked_menu():
|
def tracked_menu():
|
||||||
user_id = current_user.get_id()
|
user_id = current_user.get_id()
|
||||||
user_term = Term.get_all_user_tracked_terms(user_id)
|
user_term = Term.get_all_user_tracked_terms(user_id)
|
||||||
|
@ -50,7 +50,7 @@ def tracked_menu():
|
||||||
|
|
||||||
@hunter.route("/trackers/word")
|
@hunter.route("/trackers/word")
|
||||||
@login_required
|
@login_required
|
||||||
@login_analyst
|
@login_read_only
|
||||||
def tracked_menu_word():
|
def tracked_menu_word():
|
||||||
filter_type = 'word'
|
filter_type = 'word'
|
||||||
user_id = current_user.get_id()
|
user_id = current_user.get_id()
|
||||||
|
@ -60,7 +60,7 @@ def tracked_menu_word():
|
||||||
|
|
||||||
@hunter.route("/trackers/set")
|
@hunter.route("/trackers/set")
|
||||||
@login_required
|
@login_required
|
||||||
@login_analyst
|
@login_read_only
|
||||||
def tracked_menu_set():
|
def tracked_menu_set():
|
||||||
filter_type = 'set'
|
filter_type = 'set'
|
||||||
user_id = current_user.get_id()
|
user_id = current_user.get_id()
|
||||||
|
@ -70,7 +70,7 @@ def tracked_menu_set():
|
||||||
|
|
||||||
@hunter.route("/trackers/regex")
|
@hunter.route("/trackers/regex")
|
||||||
@login_required
|
@login_required
|
||||||
@login_analyst
|
@login_read_only
|
||||||
def tracked_menu_regex():
|
def tracked_menu_regex():
|
||||||
filter_type = 'regex'
|
filter_type = 'regex'
|
||||||
user_id = current_user.get_id()
|
user_id = current_user.get_id()
|
||||||
|
@ -113,7 +113,7 @@ def add_tracked_menu():
|
||||||
|
|
||||||
@hunter.route("/tracker/show_tracker")
|
@hunter.route("/tracker/show_tracker")
|
||||||
@login_required
|
@login_required
|
||||||
@login_analyst
|
@login_read_only
|
||||||
def show_tracker():
|
def show_tracker():
|
||||||
user_id = current_user.get_id()
|
user_id = current_user.get_id()
|
||||||
term_uuid = request.args.get('uuid', None)
|
term_uuid = request.args.get('uuid', None)
|
||||||
|
@ -207,7 +207,7 @@ def delete_tracker():
|
||||||
|
|
||||||
@hunter.route("/tracker/get_json_tracker_stats", methods=['GET'])
|
@hunter.route("/tracker/get_json_tracker_stats", methods=['GET'])
|
||||||
@login_required
|
@login_required
|
||||||
@login_analyst
|
@login_read_only
|
||||||
def get_json_tracker_stats():
|
def get_json_tracker_stats():
|
||||||
date_from = request.args.get('date_from')
|
date_from = request.args.get('date_from')
|
||||||
date_to = request.args.get('date_to')
|
date_to = request.args.get('date_to')
|
||||||
|
|
|
@ -7,7 +7,7 @@
|
||||||
import redis
|
import redis
|
||||||
from flask import Flask, render_template, jsonify, request, Blueprint
|
from flask import Flask, render_template, jsonify, request, Blueprint
|
||||||
|
|
||||||
from Role_Manager import login_admin, login_analyst
|
from Role_Manager import login_admin, login_analyst, login_read_only
|
||||||
from flask_login import login_required
|
from flask_login import login_required
|
||||||
|
|
||||||
# ============ VARIABLES ============
|
# ============ VARIABLES ============
|
||||||
|
@ -25,7 +25,7 @@ def one():
|
||||||
|
|
||||||
@rawSkeleton.route("/rawSkeleton/", methods=['GET'])
|
@rawSkeleton.route("/rawSkeleton/", methods=['GET'])
|
||||||
@login_required
|
@login_required
|
||||||
@login_analyst
|
@login_read_only
|
||||||
def skeleton_page():
|
def skeleton_page():
|
||||||
return render_template("rawSkeleton.html")
|
return render_template("rawSkeleton.html")
|
||||||
|
|
||||||
|
|
|
@ -172,14 +172,14 @@ def one():
|
||||||
#
|
#
|
||||||
# # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #
|
# # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #
|
||||||
@restApi.route("api/v1/get/item", methods=['POST'])
|
@restApi.route("api/v1/get/item", methods=['POST'])
|
||||||
@token_required('analyst')
|
@token_required('user')
|
||||||
def get_item_id():
|
def get_item_id():
|
||||||
data = request.get_json()
|
data = request.get_json()
|
||||||
res = Item.get_item(data)
|
res = Item.get_item(data)
|
||||||
return Response(json.dumps(res[0], indent=2, sort_keys=True), mimetype='application/json'), res[1]
|
return Response(json.dumps(res[0], indent=2, sort_keys=True), mimetype='application/json'), res[1]
|
||||||
|
|
||||||
@restApi.route("api/v1/get/item/default", methods=['POST'])
|
@restApi.route("api/v1/get/item/default", methods=['POST'])
|
||||||
@token_required('analyst')
|
@token_required('user')
|
||||||
def get_item_id_basic():
|
def get_item_id_basic():
|
||||||
|
|
||||||
data = request.get_json()
|
data = request.get_json()
|
||||||
|
@ -202,7 +202,7 @@ def get_item_id_basic():
|
||||||
#
|
#
|
||||||
# # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #
|
# # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #
|
||||||
@restApi.route("api/v1/get/item/tag", methods=['POST'])
|
@restApi.route("api/v1/get/item/tag", methods=['POST'])
|
||||||
@token_required('analyst')
|
@token_required('user')
|
||||||
def get_item_tag():
|
def get_item_tag():
|
||||||
|
|
||||||
data = request.get_json()
|
data = request.get_json()
|
||||||
|
@ -283,7 +283,7 @@ def delete_item_tags():
|
||||||
#
|
#
|
||||||
# # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #
|
# # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #
|
||||||
@restApi.route("api/v1/get/item/content", methods=['POST'])
|
@restApi.route("api/v1/get/item/content", methods=['POST'])
|
||||||
@token_required('analyst')
|
@token_required('user')
|
||||||
def get_item_content():
|
def get_item_content():
|
||||||
|
|
||||||
data = request.get_json()
|
data = request.get_json()
|
||||||
|
@ -298,7 +298,7 @@ def get_item_content():
|
||||||
# # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #
|
# # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #
|
||||||
|
|
||||||
@restApi.route("api/v1/get/tag/metadata", methods=['POST'])
|
@restApi.route("api/v1/get/tag/metadata", methods=['POST'])
|
||||||
@token_required('analyst')
|
@token_required('user')
|
||||||
def get_tag_metadata():
|
def get_tag_metadata():
|
||||||
data = request.get_json()
|
data = request.get_json()
|
||||||
tag = data.get('tag', None)
|
tag = data.get('tag', None)
|
||||||
|
@ -308,7 +308,7 @@ def get_tag_metadata():
|
||||||
return Response(json.dumps(metadata, indent=2, sort_keys=True), mimetype='application/json'), 200
|
return Response(json.dumps(metadata, indent=2, sort_keys=True), mimetype='application/json'), 200
|
||||||
|
|
||||||
@restApi.route("api/v1/get/tag/all", methods=['GET'])
|
@restApi.route("api/v1/get/tag/all", methods=['GET'])
|
||||||
@token_required('analyst')
|
@token_required('user')
|
||||||
def get_all_tags():
|
def get_all_tags():
|
||||||
res = {'tags': Tag.get_all_tags()}
|
res = {'tags': Tag.get_all_tags()}
|
||||||
return Response(json.dumps(res, indent=2, sort_keys=True), mimetype='application/json'), 200
|
return Response(json.dumps(res, indent=2, sort_keys=True), mimetype='application/json'), 200
|
||||||
|
@ -335,7 +335,7 @@ def delete_tracker_term():
|
||||||
return Response(json.dumps(res[0], indent=2, sort_keys=True), mimetype='application/json'), res[1]
|
return Response(json.dumps(res[0], indent=2, sort_keys=True), mimetype='application/json'), res[1]
|
||||||
|
|
||||||
@restApi.route("api/v1/get/tracker/item", methods=['POST'])
|
@restApi.route("api/v1/get/tracker/item", methods=['POST'])
|
||||||
@token_required('analyst')
|
@token_required('user')
|
||||||
def get_tracker_term_item():
|
def get_tracker_term_item():
|
||||||
data = request.get_json()
|
data = request.get_json()
|
||||||
user_token = get_auth_from_header()
|
user_token = get_auth_from_header()
|
||||||
|
@ -348,7 +348,7 @@ def get_tracker_term_item():
|
||||||
# # # # # # # # # # # # CRYPTOCURRENCY # # # # # # # # # # # # # #
|
# # # # # # # # # # # # CRYPTOCURRENCY # # # # # # # # # # # # # #
|
||||||
# # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #
|
# # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #
|
||||||
@restApi.route("api/v1/get/cryptocurrency/bitcoin/metadata", methods=['POST'])
|
@restApi.route("api/v1/get/cryptocurrency/bitcoin/metadata", methods=['POST'])
|
||||||
@token_required('analyst')
|
@token_required('user')
|
||||||
def get_cryptocurrency_bitcoin_metadata():
|
def get_cryptocurrency_bitcoin_metadata():
|
||||||
data = request.get_json()
|
data = request.get_json()
|
||||||
crypto_address = data.get('bitcoin', None)
|
crypto_address = data.get('bitcoin', None)
|
||||||
|
@ -357,7 +357,7 @@ def get_cryptocurrency_bitcoin_metadata():
|
||||||
return Response(json.dumps(res[0], indent=2, sort_keys=True), mimetype='application/json'), res[1]
|
return Response(json.dumps(res[0], indent=2, sort_keys=True), mimetype='application/json'), res[1]
|
||||||
|
|
||||||
@restApi.route("api/v1/get/cryptocurrency/bitcoin/item", methods=['POST'])
|
@restApi.route("api/v1/get/cryptocurrency/bitcoin/item", methods=['POST'])
|
||||||
@token_required('analyst')
|
@token_required('user')
|
||||||
def get_cryptocurrency_bitcoin_item():
|
def get_cryptocurrency_bitcoin_item():
|
||||||
data = request.get_json()
|
data = request.get_json()
|
||||||
bitcoin_address = data.get('bitcoin', None)
|
bitcoin_address = data.get('bitcoin', None)
|
||||||
|
@ -369,7 +369,7 @@ def get_cryptocurrency_bitcoin_item():
|
||||||
# # # # # # # # # # # # # # # PGP # # # # # # # # # # # # # # # # #
|
# # # # # # # # # # # # # # # PGP # # # # # # # # # # # # # # # # #
|
||||||
# # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #
|
# # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #
|
||||||
@restApi.route("api/v1/get/pgp/key/metadata", methods=['POST'])
|
@restApi.route("api/v1/get/pgp/key/metadata", methods=['POST'])
|
||||||
@token_required('analyst')
|
@token_required('user')
|
||||||
def get_pgp_key_metadata():
|
def get_pgp_key_metadata():
|
||||||
data = request.get_json()
|
data = request.get_json()
|
||||||
pgp_field = data.get('key', None)
|
pgp_field = data.get('key', None)
|
||||||
|
@ -378,7 +378,7 @@ def get_pgp_key_metadata():
|
||||||
return Response(json.dumps(res[0], indent=2, sort_keys=True), mimetype='application/json'), res[1]
|
return Response(json.dumps(res[0], indent=2, sort_keys=True), mimetype='application/json'), res[1]
|
||||||
|
|
||||||
@restApi.route("api/v1/get/pgp/mail/metadata", methods=['POST'])
|
@restApi.route("api/v1/get/pgp/mail/metadata", methods=['POST'])
|
||||||
@token_required('analyst')
|
@token_required('user')
|
||||||
def get_pgp_mail_metadata():
|
def get_pgp_mail_metadata():
|
||||||
data = request.get_json()
|
data = request.get_json()
|
||||||
pgp_field = data.get('mail', None)
|
pgp_field = data.get('mail', None)
|
||||||
|
@ -387,7 +387,7 @@ def get_pgp_mail_metadata():
|
||||||
return Response(json.dumps(res[0], indent=2, sort_keys=True), mimetype='application/json'), res[1]
|
return Response(json.dumps(res[0], indent=2, sort_keys=True), mimetype='application/json'), res[1]
|
||||||
|
|
||||||
@restApi.route("api/v1/get/pgp/name/metadata", methods=['POST'])
|
@restApi.route("api/v1/get/pgp/name/metadata", methods=['POST'])
|
||||||
@token_required('analyst')
|
@token_required('user')
|
||||||
def get_pgp_name_metadata():
|
def get_pgp_name_metadata():
|
||||||
data = request.get_json()
|
data = request.get_json()
|
||||||
pgp_field = data.get('name', None)
|
pgp_field = data.get('name', None)
|
||||||
|
@ -396,7 +396,7 @@ def get_pgp_name_metadata():
|
||||||
return Response(json.dumps(res[0], indent=2, sort_keys=True), mimetype='application/json'), res[1]
|
return Response(json.dumps(res[0], indent=2, sort_keys=True), mimetype='application/json'), res[1]
|
||||||
|
|
||||||
@restApi.route("api/v1/get/pgp/key/item", methods=['POST'])
|
@restApi.route("api/v1/get/pgp/key/item", methods=['POST'])
|
||||||
@token_required('analyst')
|
@token_required('user')
|
||||||
def get_pgp_key_item():
|
def get_pgp_key_item():
|
||||||
data = request.get_json()
|
data = request.get_json()
|
||||||
pgp_field = data.get('key', None)
|
pgp_field = data.get('key', None)
|
||||||
|
@ -405,7 +405,7 @@ def get_pgp_key_item():
|
||||||
return Response(json.dumps(res[0], indent=2, sort_keys=True), mimetype='application/json'), res[1]
|
return Response(json.dumps(res[0], indent=2, sort_keys=True), mimetype='application/json'), res[1]
|
||||||
|
|
||||||
@restApi.route("api/v1/get/pgp/mail/item", methods=['POST'])
|
@restApi.route("api/v1/get/pgp/mail/item", methods=['POST'])
|
||||||
@token_required('analyst')
|
@token_required('user')
|
||||||
def get_pgp_mail_item():
|
def get_pgp_mail_item():
|
||||||
data = request.get_json()
|
data = request.get_json()
|
||||||
pgp_mail = data.get('mail', None)
|
pgp_mail = data.get('mail', None)
|
||||||
|
@ -414,7 +414,7 @@ def get_pgp_mail_item():
|
||||||
return Response(json.dumps(res[0], indent=2, sort_keys=True), mimetype='application/json'), res[1]
|
return Response(json.dumps(res[0], indent=2, sort_keys=True), mimetype='application/json'), res[1]
|
||||||
|
|
||||||
@restApi.route("api/v1/get/pgp/name/item", methods=['POST'])
|
@restApi.route("api/v1/get/pgp/name/item", methods=['POST'])
|
||||||
@token_required('analyst')
|
@token_required('user')
|
||||||
def get_pgp_name_item():
|
def get_pgp_name_item():
|
||||||
data = request.get_json()
|
data = request.get_json()
|
||||||
pgp_name = data.get('name', None)
|
pgp_name = data.get('name', None)
|
||||||
|
|
|
@ -11,7 +11,7 @@ from Date import Date
|
||||||
import flask
|
import flask
|
||||||
from flask import Flask, render_template, jsonify, request, Blueprint
|
from flask import Flask, render_template, jsonify, request, Blueprint
|
||||||
|
|
||||||
from Role_Manager import login_admin, login_analyst
|
from Role_Manager import login_admin, login_analyst, login_read_only
|
||||||
from flask_login import login_required
|
from flask_login import login_required
|
||||||
|
|
||||||
import Paste
|
import Paste
|
||||||
|
@ -42,14 +42,14 @@ def get_date_range(num_day):
|
||||||
|
|
||||||
@sentiments.route("/sentiment_analysis_trending/")
|
@sentiments.route("/sentiment_analysis_trending/")
|
||||||
@login_required
|
@login_required
|
||||||
@login_analyst
|
@login_read_only
|
||||||
def sentiment_analysis_trending():
|
def sentiment_analysis_trending():
|
||||||
return render_template("sentiment_analysis_trending.html")
|
return render_template("sentiment_analysis_trending.html")
|
||||||
|
|
||||||
|
|
||||||
@sentiments.route("/sentiment_analysis_getplotdata/", methods=['GET'])
|
@sentiments.route("/sentiment_analysis_getplotdata/", methods=['GET'])
|
||||||
@login_required
|
@login_required
|
||||||
@login_analyst
|
@login_read_only
|
||||||
def sentiment_analysis_getplotdata():
|
def sentiment_analysis_getplotdata():
|
||||||
# Get the top providers based on number of pastes
|
# Get the top providers based on number of pastes
|
||||||
oneHour = 60*60
|
oneHour = 60*60
|
||||||
|
@ -101,7 +101,7 @@ def sentiment_analysis_getplotdata():
|
||||||
|
|
||||||
@sentiments.route("/sentiment_analysis_plot_tool/")
|
@sentiments.route("/sentiment_analysis_plot_tool/")
|
||||||
@login_required
|
@login_required
|
||||||
@login_analyst
|
@login_read_only
|
||||||
def sentiment_analysis_plot_tool():
|
def sentiment_analysis_plot_tool():
|
||||||
return render_template("sentiment_analysis_plot_tool.html")
|
return render_template("sentiment_analysis_plot_tool.html")
|
||||||
|
|
||||||
|
@ -109,7 +109,7 @@ def sentiment_analysis_plot_tool():
|
||||||
|
|
||||||
@sentiments.route("/sentiment_analysis_plot_tool_getdata/", methods=['GET'])
|
@sentiments.route("/sentiment_analysis_plot_tool_getdata/", methods=['GET'])
|
||||||
@login_required
|
@login_required
|
||||||
@login_analyst
|
@login_read_only
|
||||||
def sentiment_analysis_plot_tool_getdata():
|
def sentiment_analysis_plot_tool_getdata():
|
||||||
getProviders = request.args.get('getProviders')
|
getProviders = request.args.get('getProviders')
|
||||||
|
|
||||||
|
|
|
@ -7,7 +7,7 @@
|
||||||
from flask import Flask, render_template, jsonify, request, Blueprint, redirect, url_for
|
from flask import Flask, render_template, jsonify, request, Blueprint, redirect, url_for
|
||||||
from flask_login import login_required, current_user
|
from flask_login import login_required, current_user
|
||||||
|
|
||||||
from Role_Manager import login_admin, login_analyst
|
from Role_Manager import login_admin, login_analyst, login_user, login_read_only
|
||||||
from Role_Manager import create_user_db, edit_user_db, delete_user_db, check_password_strength, generate_new_token, gen_password
|
from Role_Manager import create_user_db, edit_user_db, delete_user_db, check_password_strength, generate_new_token, gen_password
|
||||||
|
|
||||||
import json
|
import json
|
||||||
|
@ -103,7 +103,7 @@ def get_all_roles():
|
||||||
|
|
||||||
@settings.route("/settings/", methods=['GET'])
|
@settings.route("/settings/", methods=['GET'])
|
||||||
@login_required
|
@login_required
|
||||||
@login_analyst
|
@login_read_only
|
||||||
def settings_page():
|
def settings_page():
|
||||||
git_metadata = get_git_metadata()
|
git_metadata = get_git_metadata()
|
||||||
current_version = r_serv_db.get('ail:version')
|
current_version = r_serv_db.get('ail:version')
|
||||||
|
@ -117,7 +117,7 @@ def settings_page():
|
||||||
|
|
||||||
@settings.route("/settings/edit_profile", methods=['GET'])
|
@settings.route("/settings/edit_profile", methods=['GET'])
|
||||||
@login_required
|
@login_required
|
||||||
@login_analyst
|
@login_read_only
|
||||||
def edit_profile():
|
def edit_profile():
|
||||||
user_metadata = get_user_metadata(current_user.get_id())
|
user_metadata = get_user_metadata(current_user.get_id())
|
||||||
admin_level = current_user.is_in_role('admin')
|
admin_level = current_user.is_in_role('admin')
|
||||||
|
@ -126,7 +126,7 @@ def edit_profile():
|
||||||
|
|
||||||
@settings.route("/settings/new_token", methods=['GET'])
|
@settings.route("/settings/new_token", methods=['GET'])
|
||||||
@login_required
|
@login_required
|
||||||
@login_analyst
|
@login_user
|
||||||
def new_token():
|
def new_token():
|
||||||
generate_new_token(current_user.get_id())
|
generate_new_token(current_user.get_id())
|
||||||
return redirect(url_for('settings.edit_profile'))
|
return redirect(url_for('settings.edit_profile'))
|
||||||
|
@ -233,7 +233,7 @@ def delete_user():
|
||||||
|
|
||||||
@settings.route("/settings/get_background_update_stats_json", methods=['GET'])
|
@settings.route("/settings/get_background_update_stats_json", methods=['GET'])
|
||||||
@login_required
|
@login_required
|
||||||
@login_analyst
|
@login_read_only
|
||||||
def get_background_update_stats_json():
|
def get_background_update_stats_json():
|
||||||
# handle :end, error
|
# handle :end, error
|
||||||
update_stats = {}
|
update_stats = {}
|
||||||
|
|
|
@ -10,7 +10,7 @@ import os
|
||||||
import flask
|
import flask
|
||||||
from flask import Flask, render_template, jsonify, request, Blueprint, make_response, Response, send_from_directory, redirect, url_for
|
from flask import Flask, render_template, jsonify, request, Blueprint, make_response, Response, send_from_directory, redirect, url_for
|
||||||
|
|
||||||
from Role_Manager import login_admin, login_analyst, no_cache
|
from Role_Manager import login_admin, login_analyst, login_read_only, no_cache
|
||||||
from flask_login import login_required
|
from flask_login import login_required
|
||||||
|
|
||||||
import difflib
|
import difflib
|
||||||
|
@ -384,21 +384,21 @@ def show_item_min(requested_path , content_range=0):
|
||||||
|
|
||||||
@showsavedpastes.route("/showsavedpaste/") #completely shows the paste in a new tab
|
@showsavedpastes.route("/showsavedpaste/") #completely shows the paste in a new tab
|
||||||
@login_required
|
@login_required
|
||||||
@login_analyst
|
@login_read_only
|
||||||
def showsavedpaste():
|
def showsavedpaste():
|
||||||
requested_path = request.args.get('paste', '')
|
requested_path = request.args.get('paste', '')
|
||||||
return showpaste(0, requested_path)
|
return showpaste(0, requested_path)
|
||||||
|
|
||||||
@showsavedpastes.route("/showsaveditem_min/") #completely shows the paste in a new tab
|
@showsavedpastes.route("/showsaveditem_min/") #completely shows the paste in a new tab
|
||||||
@login_required
|
@login_required
|
||||||
@login_analyst
|
@login_read_only
|
||||||
def showsaveditem_min():
|
def showsaveditem_min():
|
||||||
requested_path = request.args.get('paste', '')
|
requested_path = request.args.get('paste', '')
|
||||||
return show_item_min(requested_path)
|
return show_item_min(requested_path)
|
||||||
|
|
||||||
@showsavedpastes.route("/showsavedrawpaste/") #shows raw
|
@showsavedpastes.route("/showsavedrawpaste/") #shows raw
|
||||||
@login_required
|
@login_required
|
||||||
@login_analyst
|
@login_read_only
|
||||||
def showsavedrawpaste():
|
def showsavedrawpaste():
|
||||||
requested_path = request.args.get('paste', '')
|
requested_path = request.args.get('paste', '')
|
||||||
paste = Paste.Paste(requested_path)
|
paste = Paste.Paste(requested_path)
|
||||||
|
@ -407,7 +407,7 @@ def showsavedrawpaste():
|
||||||
|
|
||||||
@showsavedpastes.route("/showpreviewpaste/")
|
@showsavedpastes.route("/showpreviewpaste/")
|
||||||
@login_required
|
@login_required
|
||||||
@login_analyst
|
@login_read_only
|
||||||
def showpreviewpaste():
|
def showpreviewpaste():
|
||||||
num = request.args.get('num', '')
|
num = request.args.get('num', '')
|
||||||
requested_path = request.args.get('paste', '')
|
requested_path = request.args.get('paste', '')
|
||||||
|
@ -416,7 +416,7 @@ def showpreviewpaste():
|
||||||
|
|
||||||
@showsavedpastes.route("/getmoredata/")
|
@showsavedpastes.route("/getmoredata/")
|
||||||
@login_required
|
@login_required
|
||||||
@login_analyst
|
@login_read_only
|
||||||
def getmoredata():
|
def getmoredata():
|
||||||
requested_path = request.args.get('paste', '')
|
requested_path = request.args.get('paste', '')
|
||||||
paste = Paste.Paste(requested_path)
|
paste = Paste.Paste(requested_path)
|
||||||
|
@ -444,7 +444,7 @@ def showDiff():
|
||||||
|
|
||||||
@showsavedpastes.route('/screenshot/<path:filename>')
|
@showsavedpastes.route('/screenshot/<path:filename>')
|
||||||
@login_required
|
@login_required
|
||||||
@login_analyst
|
@login_read_only
|
||||||
@no_cache
|
@no_cache
|
||||||
def screenshot(filename):
|
def screenshot(filename):
|
||||||
return send_from_directory(SCREENSHOT_FOLDER, filename+'.png', as_attachment=True)
|
return send_from_directory(SCREENSHOT_FOLDER, filename+'.png', as_attachment=True)
|
||||||
|
|
|
@ -13,7 +13,7 @@ import calendar
|
||||||
import flask
|
import flask
|
||||||
from flask import Flask, render_template, jsonify, request, Blueprint, url_for, redirect, Response
|
from flask import Flask, render_template, jsonify, request, Blueprint, url_for, redirect, Response
|
||||||
|
|
||||||
from Role_Manager import login_admin, login_analyst
|
from Role_Manager import login_admin, login_analyst, login_user_no_api, login_read_only
|
||||||
from flask_login import login_required, current_user
|
from flask_login import login_required, current_user
|
||||||
|
|
||||||
import re
|
import re
|
||||||
|
@ -153,7 +153,7 @@ def save_tag_to_auto_push(list_tag):
|
||||||
|
|
||||||
@terms.route("/terms_plot_tool/")
|
@terms.route("/terms_plot_tool/")
|
||||||
@login_required
|
@login_required
|
||||||
@login_analyst
|
@login_read_only
|
||||||
def terms_plot_tool():
|
def terms_plot_tool():
|
||||||
term = request.args.get('term')
|
term = request.args.get('term')
|
||||||
if term is not None:
|
if term is not None:
|
||||||
|
@ -164,7 +164,7 @@ def terms_plot_tool():
|
||||||
|
|
||||||
@terms.route("/terms_plot_tool_data/")
|
@terms.route("/terms_plot_tool_data/")
|
||||||
@login_required
|
@login_required
|
||||||
@login_analyst
|
@login_read_only
|
||||||
def terms_plot_tool_data():
|
def terms_plot_tool_data():
|
||||||
oneDay = 60*60*24
|
oneDay = 60*60*24
|
||||||
range_start = datetime.datetime.utcfromtimestamp(int(float(request.args.get('range_start')))) if request.args.get('range_start') is not None else 0;
|
range_start = datetime.datetime.utcfromtimestamp(int(float(request.args.get('range_start')))) if request.args.get('range_start') is not None else 0;
|
||||||
|
@ -196,7 +196,7 @@ def terms_plot_tool_data():
|
||||||
|
|
||||||
@terms.route("/terms_plot_top/")
|
@terms.route("/terms_plot_top/")
|
||||||
@login_required
|
@login_required
|
||||||
@login_analyst
|
@login_read_only
|
||||||
def terms_plot_top():
|
def terms_plot_top():
|
||||||
per_paste = request.args.get('per_paste')
|
per_paste = request.args.get('per_paste')
|
||||||
per_paste = per_paste if per_paste is not None else 1
|
per_paste = per_paste if per_paste is not None else 1
|
||||||
|
@ -205,7 +205,7 @@ def terms_plot_top():
|
||||||
|
|
||||||
@terms.route("/terms_plot_top_data/")
|
@terms.route("/terms_plot_top_data/")
|
||||||
@login_required
|
@login_required
|
||||||
@login_analyst
|
@login_read_only
|
||||||
def terms_plot_top_data():
|
def terms_plot_top_data():
|
||||||
oneDay = 60*60*24
|
oneDay = 60*60*24
|
||||||
today = datetime.datetime.now()
|
today = datetime.datetime.now()
|
||||||
|
@ -253,13 +253,13 @@ def terms_plot_top_data():
|
||||||
|
|
||||||
@terms.route("/credentials_tracker/")
|
@terms.route("/credentials_tracker/")
|
||||||
@login_required
|
@login_required
|
||||||
@login_analyst
|
@login_read_only
|
||||||
def credentials_tracker():
|
def credentials_tracker():
|
||||||
return render_template("credentials_tracker.html")
|
return render_template("credentials_tracker.html")
|
||||||
|
|
||||||
@terms.route("/credentials_management_query_paste/", methods=['GET', 'POST'])
|
@terms.route("/credentials_management_query_paste/", methods=['GET', 'POST'])
|
||||||
@login_required
|
@login_required
|
||||||
@login_analyst
|
@login_user_no_api
|
||||||
def credentials_management_query_paste():
|
def credentials_management_query_paste():
|
||||||
cred = request.args.get('cred')
|
cred = request.args.get('cred')
|
||||||
allPath = request.json['allPath']
|
allPath = request.json['allPath']
|
||||||
|
@ -284,7 +284,7 @@ def credentials_management_query_paste():
|
||||||
|
|
||||||
@terms.route("/credentials_management_action/", methods=['GET'])
|
@terms.route("/credentials_management_action/", methods=['GET'])
|
||||||
@login_required
|
@login_required
|
||||||
@login_analyst
|
@login_user_no_api
|
||||||
def cred_management_action():
|
def cred_management_action():
|
||||||
|
|
||||||
supplied = request.args.get('term')
|
supplied = request.args.get('term')
|
||||||
|
|
|
@ -10,7 +10,7 @@ from Date import Date
|
||||||
import flask
|
import flask
|
||||||
from flask import Flask, render_template, jsonify, request, Blueprint
|
from flask import Flask, render_template, jsonify, request, Blueprint
|
||||||
|
|
||||||
from Role_Manager import login_admin, login_analyst
|
from Role_Manager import login_admin, login_analyst, login_read_only
|
||||||
from flask_login import login_required
|
from flask_login import login_required
|
||||||
|
|
||||||
# ============ VARIABLES ============
|
# ============ VARIABLES ============
|
||||||
|
@ -40,7 +40,7 @@ def get_date_range(num_day):
|
||||||
|
|
||||||
@trendings.route("/_progressionCharts", methods=['GET'])
|
@trendings.route("/_progressionCharts", methods=['GET'])
|
||||||
@login_required
|
@login_required
|
||||||
@login_analyst
|
@login_read_only
|
||||||
def progressionCharts():
|
def progressionCharts():
|
||||||
attribute_name = request.args.get('attributeName')
|
attribute_name = request.args.get('attributeName')
|
||||||
trending_name = request.args.get('trendingName')
|
trending_name = request.args.get('trendingName')
|
||||||
|
@ -67,7 +67,7 @@ def progressionCharts():
|
||||||
|
|
||||||
@trendings.route("/wordstrending/")
|
@trendings.route("/wordstrending/")
|
||||||
@login_required
|
@login_required
|
||||||
@login_analyst
|
@login_read_only
|
||||||
def wordstrending():
|
def wordstrending():
|
||||||
default_display = config_loader.get_config_str("Flask", "default_display")
|
default_display = config_loader.get_config_str("Flask", "default_display")
|
||||||
return render_template("Wordstrending.html", default_display = default_display)
|
return render_template("Wordstrending.html", default_display = default_display)
|
||||||
|
@ -75,7 +75,7 @@ def wordstrending():
|
||||||
|
|
||||||
@trendings.route("/protocolstrending/")
|
@trendings.route("/protocolstrending/")
|
||||||
@login_required
|
@login_required
|
||||||
@login_analyst
|
@login_read_only
|
||||||
def protocolstrending():
|
def protocolstrending():
|
||||||
default_display = config_loader.get_config_str("Flask", "default_display")
|
default_display = config_loader.get_config_str("Flask", "default_display")
|
||||||
return render_template("Protocolstrending.html", default_display = default_display)
|
return render_template("Protocolstrending.html", default_display = default_display)
|
||||||
|
@ -83,7 +83,7 @@ def protocolstrending():
|
||||||
|
|
||||||
@trendings.route("/trending/")
|
@trendings.route("/trending/")
|
||||||
@login_required
|
@login_required
|
||||||
@login_analyst
|
@login_read_only
|
||||||
def trending():
|
def trending():
|
||||||
default_display = config_loader.get_config_str("Flask", "default_display")
|
default_display = config_loader.get_config_str("Flask", "default_display")
|
||||||
return render_template("Trending.html", default_display = default_display)
|
return render_template("Trending.html", default_display = default_display)
|
||||||
|
|
|
@ -10,7 +10,7 @@ from Date import Date
|
||||||
import flask
|
import flask
|
||||||
from flask import Flask, render_template, jsonify, request, Blueprint
|
from flask import Flask, render_template, jsonify, request, Blueprint
|
||||||
|
|
||||||
from Role_Manager import login_admin, login_analyst
|
from Role_Manager import login_admin, login_analyst, login_read_only
|
||||||
from flask_login import login_required
|
from flask_login import login_required
|
||||||
|
|
||||||
# ============ VARIABLES ============
|
# ============ VARIABLES ============
|
||||||
|
@ -52,7 +52,7 @@ def get_date_range(num_day):
|
||||||
|
|
||||||
@trendingmodules.route("/_moduleCharts", methods=['GET'])
|
@trendingmodules.route("/_moduleCharts", methods=['GET'])
|
||||||
@login_required
|
@login_required
|
||||||
@login_analyst
|
@login_read_only
|
||||||
def modulesCharts():
|
def modulesCharts():
|
||||||
keyword_name = request.args.get('keywordName')
|
keyword_name = request.args.get('keywordName')
|
||||||
module_name = request.args.get('moduleName')
|
module_name = request.args.get('moduleName')
|
||||||
|
@ -80,7 +80,7 @@ def modulesCharts():
|
||||||
|
|
||||||
@trendingmodules.route("/_providersChart", methods=['GET'])
|
@trendingmodules.route("/_providersChart", methods=['GET'])
|
||||||
@login_required
|
@login_required
|
||||||
@login_analyst
|
@login_read_only
|
||||||
def providersChart():
|
def providersChart():
|
||||||
keyword_name = request.args.get('keywordName')
|
keyword_name = request.args.get('keywordName')
|
||||||
module_name = request.args.get('moduleName')
|
module_name = request.args.get('moduleName')
|
||||||
|
@ -128,7 +128,7 @@ def providersChart():
|
||||||
|
|
||||||
@trendingmodules.route("/moduletrending/")
|
@trendingmodules.route("/moduletrending/")
|
||||||
@login_required
|
@login_required
|
||||||
@login_analyst
|
@login_read_only
|
||||||
def moduletrending():
|
def moduletrending():
|
||||||
return render_template("Moduletrending.html")
|
return render_template("Moduletrending.html")
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue