chg: [Tag core] objects tagging, Part 2/2

TODO: UI tags domain + screenshot + object rename paste=>item
This commit is contained in:
Terrtia 2020-01-07 16:14:56 +01:00
parent b557b7fed8
commit 85d5770e80
No known key found for this signature in database
GPG key ID: 1E1B1F50D84613D0
8 changed files with 28 additions and 23 deletions

View file

@ -41,6 +41,7 @@ if __name__ == '__main__':
continue continue
else: else:
print(message)
tag, item_id = message.split(';') tag, item_id = message.split(';')
Tag.add_tag("item", tag, item_id) Tag.add_tag("item", tag, item_id)

View file

@ -181,7 +181,10 @@ def get_item_url(correlation_name, value, correlation_type=None):
elif correlation_name == 'domain': elif correlation_name == 'domain':
endpoint = 'crawler_splash.showDomain' endpoint = 'crawler_splash.showDomain'
url = url_for(endpoint, domain=value) url = url_for(endpoint, domain=value)
elif correlation_name == 'paste': elif correlation_name == 'item':
endpoint = 'showsavedpastes.showsavedpaste'
url = url_for(endpoint, paste=value)
elif correlation_name == 'paste': ### # TODO: remove me
endpoint = 'showsavedpastes.showsavedpaste' endpoint = 'showsavedpastes.showsavedpaste'
url = url_for(endpoint, paste=value) url = url_for(endpoint, paste=value)
return url return url

View file

@ -6,6 +6,7 @@ import sys
import redis import redis
import datetime import datetime
sys.path.append(os.path.join(os.environ['AIL_BIN'], 'packages/'))
import Date import Date
import Item import Item
@ -156,7 +157,7 @@ def get_modal_add_tags(item_id, object_type='item'):
Modal: add tags to domain or Paste Modal: add tags to domain or Paste
''' '''
return {"active_taxonomies": get_active_taxonomies(), "active_galaxies": get_active_galaxies(), return {"active_taxonomies": get_active_taxonomies(), "active_galaxies": get_active_galaxies(),
"object_id": item_id, "object_type": tag_type} "object_id": item_id, "object_type": object_type}
######## NEW VERSION ######## ######## NEW VERSION ########
def get_tag_first_seen(tag, r_int=False): def get_tag_first_seen(tag, r_int=False):
@ -204,7 +205,7 @@ def is_obj_tagged(object_id, tag):
:return: is object tagged :return: is object tagged
:rtype: boolean :rtype: boolean
''' '''
return r_serv_tags.sismember('tag:{}'.format(object_id), tag) return r_serv_metadata.sismember('tag:{}'.format(object_id), tag)
def get_all_tags(): def get_all_tags():
return list(r_serv_tags.smembers('list_tags')) return list(r_serv_tags.smembers('list_tags'))
@ -333,16 +334,20 @@ def api_add_obj_tags(tags=[], galaxy_tags=[], object_id=None, object_type="item"
return ({'status': 'error', 'reason': 'object_id id not found'}, 404) return ({'status': 'error', 'reason': 'object_id id not found'}, 404)
if not tags and not galaxy_tags: if not tags and not galaxy_tags:
return ({'status': 'error', 'reason': 'Tags or Galaxy not specified'}, 400) return ({'status': 'error', 'reason': 'Tags or Galaxy not specified'}, 400)
if object_type not in ('paste', 'domain'): # # TODO: put me in another file if object_type not in ('item', 'domain'): # # TODO: put me in another file
return ({'status': 'error', 'reason': 'Incorrect object_type'}, 400) return ({'status': 'error', 'reason': 'Incorrect object_type'}, 400)
res = add_obj_tags(object_id, object_type, tags=[], galaxy_tags=[]) # remove empty tags
tags = list(filter(bool, tags))
galaxy_tags = list(filter(bool, galaxy_tags))
res = add_obj_tags(object_id, object_type, tags=tags, galaxy_tags=galaxy_tags)
if res: if res:
return res return res
res_dict['tags'] = tags + galaxy_tags res_dict['tags'] = tags + galaxy_tags
res_dict['id'] = item_id res_dict['id'] = object_id
res_dict['type'] = item_type res_dict['type'] = object_type
return (res_dict, 200) return (res_dict, 200)
def add_obj_tag(object_type, object_id, tag, obj_date=None): def add_obj_tag(object_type, object_id, tag, obj_date=None):
@ -403,7 +408,7 @@ def api_delete_obj_tags(tags=[], object_id=None, object_type="item"):
if not tags: if not tags:
return ({'status': 'error', 'reason': 'No Tag(s) specified'}, 400) return ({'status': 'error', 'reason': 'No Tag(s) specified'}, 400)
res = delete_obj_tags(object_id, object_type, tags=[]) res = delete_obj_tags(object_id, object_type, tags=tags)
if res: if res:
return res return res

View file

@ -39,6 +39,8 @@ import Flask_config
from blueprints.root import root from blueprints.root import root
from blueprints.crawler_splash import crawler_splash from blueprints.crawler_splash import crawler_splash
from blueprints.correlation import correlation from blueprints.correlation import correlation
from blueprints.tags_ui import tags_ui
Flask_dir = os.environ['AIL_FLASK'] Flask_dir = os.environ['AIL_FLASK']
@ -85,6 +87,7 @@ app.config['MAX_CONTENT_LENGTH'] = 900 * 1024 * 1024
app.register_blueprint(root, url_prefix=baseUrl) app.register_blueprint(root, url_prefix=baseUrl)
app.register_blueprint(crawler_splash, url_prefix=baseUrl) app.register_blueprint(crawler_splash, url_prefix=baseUrl)
app.register_blueprint(correlation, url_prefix=baseUrl) app.register_blueprint(correlation, url_prefix=baseUrl)
app.register_blueprint(tags_ui, url_prefix=baseUrl)
# ========= =========# # ========= =========#
# ========= session ======== # ========= session ========

View file

@ -25,7 +25,7 @@ import Date
import Tag import Tag
sys.path.append(os.path.join(os.environ['AIL_BIN'], 'lib')) sys.path.append(os.path.join(os.environ['AIL_BIN'], 'lib'))
import Domain import Correlate_object
r_cache = Flask_config.r_cache r_cache = Flask_config.r_cache
r_serv_db = Flask_config.r_serv_db r_serv_db = Flask_config.r_serv_db
@ -33,7 +33,7 @@ r_serv_tags = Flask_config.r_serv_tags
bootstrap_label = Flask_config.bootstrap_label bootstrap_label = Flask_config.bootstrap_label
# ============ BLUEPRINT ============ # ============ BLUEPRINT ============
tags_ui = Blueprint('tags', __name__, template_folder=os.path.join(os.environ['AIL_FLASK'], 'templates/tags')) tags_ui = Blueprint('tags_ui', __name__, template_folder=os.path.join(os.environ['AIL_FLASK'], 'templates/tags'))
# ============ VARIABLES ============ # ============ VARIABLES ============
@ -82,15 +82,8 @@ def add_tags():
# error # error
if res[1] != 200: if res[1] != 200:
return str(res[0]) return str(res[0])
# success
# # TODO: use object FUNCTIONS
if object_type=='domain':
return redirect(url_for('crawler_splash.showDomain', domain=object_id))
else:
return redirect(url_for('showsavedpastes.showsavedpaste', paste=object_id))
return redirect(Correlate_object.get_item_url(object_type, object_id))

View file

@ -375,7 +375,7 @@ def remove_tag():
path = request.args.get('paste') path = request.args.get('paste')
tag = request.args.get('tag') tag = request.args.get('tag')
res = Tag.api_delete_obj_tags(tags=tag, object_id=path, object_type="item") res = Tag.api_delete_obj_tags(tags=[tag], object_id=path, object_type="item")
if res[1] != 200: if res[1] != 200:
return str(res[0]) return str(res[0])
return redirect(url_for('showsavedpastes.showsavedpaste', paste=path)) return redirect(url_for('showsavedpastes.showsavedpaste', paste=path))
@ -390,11 +390,11 @@ def confirm_tag():
tag = request.args.get('tag') tag = request.args.get('tag')
if(tag[9:28] == 'automatic-detection'): if(tag[9:28] == 'automatic-detection'):
Tag.api_delete_obj_tags(tags=tag, object_id=path, object_type="item") Tag.api_delete_obj_tags(tags=[tag], object_id=path, object_type="item")
tag = tag.replace('automatic-detection','analyst-detection', 1) tag = tag.replace('automatic-detection','analyst-detection', 1)
#add analyst tag #add analyst tag
Tag.add_item_tag(tag, path) Tag.add_tag('item', tag, path)
return redirect(url_for('showsavedpastes.showsavedpaste', paste=path)) return redirect(url_for('showsavedpastes.showsavedpaste', paste=path))

View file

@ -570,7 +570,7 @@
var tags = ltags.getValue() var tags = ltags.getValue()
var tagsgalaxy = ltagsgalaxies.getValue() var tagsgalaxy = ltagsgalaxies.getValue()
var path = '{{ request.args.get('paste') }}' var path = '{{ request.args.get('paste') }}'
window.location.replace("{{ url_for('Tags.addTags') }}?tags=" + tags + "&tagsgalaxies=" + tagsgalaxy + "&path=" + path); window.location.replace("{{ url_for('tags_ui.add_tags') }}?tags=" + tags + "&tagsgalaxies=" + tagsgalaxy + "&object_id=" + path + "&object_type=item");
} }
</script> </script>

View file

@ -126,6 +126,6 @@ jQuery("#all-tags-galaxies").click(function(e){
function addTags() { function addTags() {
var tags = ltags.getValue() var tags = ltags.getValue()
var tagsgalaxy = ltagsgalaxies.getValue() var tagsgalaxy = ltagsgalaxies.getValue()
window.location.replace("{{ url_for('tags_ui.add_item_tags') }}?tags=" + tags + "&tagsgalaxies=" + tagsgalaxy + "&object_id={{ modal_add_tags['object_id'] }}&object_type={{ modal_add_tags['object_type'] }}"); window.location.replace("{{ url_for('tags_ui.add_tags') }}?tags=" + tags + "&tagsgalaxies=" + tagsgalaxy + "&object_id={{ modal_add_tags['object_id'] }}&object_type={{ modal_add_tags['object_type'] }}");
} }
</script> </script>