mirror of https://github.com/CIRCL/AIL-framework
chg: [crawler] edit cookie and cookiejar + add cookie to cookiejar + fix screenshot duplicate
parent
5f289f04f3
commit
72f1f15659
|
@ -175,7 +175,7 @@ def save_crawled_screeshot(b64_screenshot, max_size, f_save=False):
|
||||||
filepath = get_screenshot_filepath(sha256_string)
|
filepath = get_screenshot_filepath(sha256_string)
|
||||||
if os.path.isfile(filepath):
|
if os.path.isfile(filepath):
|
||||||
#print('File already exist')
|
#print('File already exist')
|
||||||
return False
|
return sha256_string
|
||||||
# create dir
|
# create dir
|
||||||
dirname = os.path.dirname(filepath)
|
dirname = os.path.dirname(filepath)
|
||||||
if not os.path.exists(dirname):
|
if not os.path.exists(dirname):
|
||||||
|
|
|
@ -39,7 +39,11 @@ def generate_uuid():
|
||||||
|
|
||||||
# # TODO: handle prefix cookies
|
# # TODO: handle prefix cookies
|
||||||
# # TODO: fill empty fields
|
# # TODO: fill empty fields
|
||||||
def create_cookie_crawler(cookie_dict, crawler_type='regular'):
|
def create_cookie_crawler(cookie_dict, domain, crawler_type='regular'):
|
||||||
|
# check cookie domain filed
|
||||||
|
if not 'domain' in cookie_dict:
|
||||||
|
cookie_dict['domain'] = '.{}'.format(domain)
|
||||||
|
|
||||||
# tor browser: disable secure cookie
|
# tor browser: disable secure cookie
|
||||||
if crawler_type=='onion':
|
if crawler_type=='onion':
|
||||||
cookie_dict['secure'] = False
|
cookie_dict['secure'] = False
|
||||||
|
@ -53,11 +57,11 @@ def create_cookie_crawler(cookie_dict, crawler_type='regular'):
|
||||||
cookie_dict['expires'] = (datetime.now() + timedelta(days=10)).strftime('%Y-%m-%dT%H:%M:%S') + 'Z'
|
cookie_dict['expires'] = (datetime.now() + timedelta(days=10)).strftime('%Y-%m-%dT%H:%M:%S') + 'Z'
|
||||||
return cookie_dict
|
return cookie_dict
|
||||||
|
|
||||||
def load_crawler_cookies(cookiejar_uuid, crawler_type='regular'):
|
def load_crawler_cookies(cookiejar_uuid, domain, crawler_type='regular'):
|
||||||
cookies = get_cookiejar_cookies_list(cookiejar_uuid)
|
cookies = get_cookiejar_cookies_list(cookiejar_uuid)
|
||||||
all_cookies = []
|
all_cookies = []
|
||||||
for cookie_dict in cookies:
|
for cookie_dict in cookies:
|
||||||
all_cookies.append(create_cookie_crawler(cookie_dict, crawler_type=crawler_type))
|
all_cookies.append(create_cookie_crawler(cookie_dict, domain, crawler_type=crawler_type))
|
||||||
return all_cookies
|
return all_cookies
|
||||||
|
|
||||||
################################################################################
|
################################################################################
|
||||||
|
@ -118,10 +122,13 @@ def get_cookiejar_cookies_uuid(cookiejar_uuid):
|
||||||
res = []
|
res = []
|
||||||
return res
|
return res
|
||||||
|
|
||||||
def get_cookiejar_cookies_list(cookiejar_uuid):
|
def get_cookiejar_cookies_list(cookiejar_uuid, add_cookie_uuid=False):
|
||||||
l_cookiejar = []
|
l_cookiejar = []
|
||||||
for cookie_uuid in get_cookiejar_cookies_uuid(cookiejar_uuid):
|
for cookie_uuid in get_cookiejar_cookies_uuid(cookiejar_uuid):
|
||||||
l_cookiejar.append(get_cookie_dict(cookie_uuid))
|
if add_cookie_uuid:
|
||||||
|
l_cookiejar.append((get_cookie_dict(cookie_uuid), cookie_uuid))
|
||||||
|
else:
|
||||||
|
l_cookiejar.append(get_cookie_dict(cookie_uuid))
|
||||||
return l_cookiejar
|
return l_cookiejar
|
||||||
|
|
||||||
## Cookiejar metadata ##
|
## Cookiejar metadata ##
|
||||||
|
@ -160,6 +167,9 @@ def get_cookiejar_metadata_by_iterator(iter_cookiejar_uuid):
|
||||||
l_cookiejar_metadata.append(get_cookiejar_metadata(cookiejar_uuid))
|
l_cookiejar_metadata.append(get_cookiejar_metadata(cookiejar_uuid))
|
||||||
return l_cookiejar_metadata
|
return l_cookiejar_metadata
|
||||||
|
|
||||||
|
def edit_cookiejar_description(cookiejar_uuid, description):
|
||||||
|
r_serv_onion.hset('cookiejar_metadata:{}'.format(cookiejar_uuid), 'description', description)
|
||||||
|
|
||||||
# # # # # # # #
|
# # # # # # # #
|
||||||
# #
|
# #
|
||||||
# COOKIES #
|
# COOKIES #
|
||||||
|
@ -176,6 +186,8 @@ def get_cookiejar_metadata_by_iterator(iter_cookiejar_uuid):
|
||||||
# - httpOnly (optional)
|
# - httpOnly (optional)
|
||||||
# - text (optional)
|
# - text (optional)
|
||||||
# # # #
|
# # # #
|
||||||
|
def get_cookie_all_keys_name():
|
||||||
|
return ['name', 'value', 'domain', 'path', 'httpOnly', 'secure']
|
||||||
|
|
||||||
def exists_cookie(cookie_uuid):
|
def exists_cookie(cookie_uuid):
|
||||||
if int(r_serv_onion.scard('cookies:map:cookiejar:{}'.format(cookie_uuid))) > 0:
|
if int(r_serv_onion.scard('cookies:map:cookiejar:{}'.format(cookie_uuid))) > 0:
|
||||||
|
@ -188,6 +200,9 @@ def get_cookie_value(cookie_uuid, name):
|
||||||
def set_cookie_value(cookie_uuid, name, value):
|
def set_cookie_value(cookie_uuid, name, value):
|
||||||
r_serv_onion.hset('cookiejar:cookie:{}'.format(cookie_uuid), name, value)
|
r_serv_onion.hset('cookiejar:cookie:{}'.format(cookie_uuid), name, value)
|
||||||
|
|
||||||
|
def delete_cookie_value(cookie_uuid, name):
|
||||||
|
r_serv_onion.hdel('cookiejar:cookie:{}'.format(cookie_uuid), name)
|
||||||
|
|
||||||
def get_cookie_dict(cookie_uuid):
|
def get_cookie_dict(cookie_uuid):
|
||||||
cookie_dict = {}
|
cookie_dict = {}
|
||||||
for key_name in r_serv_onion.hkeys('cookiejar:cookie:{}'.format(cookie_uuid)):
|
for key_name in r_serv_onion.hkeys('cookiejar:cookie:{}'.format(cookie_uuid)):
|
||||||
|
@ -226,7 +241,18 @@ def delete_cookie_from_cookiejar(cookiejar_uuid, cookie_uuid):
|
||||||
r_serv_onion.srem('cookiejar:{}:cookies:uuid'.format(cookiejar_uuid), cookie_uuid)
|
r_serv_onion.srem('cookiejar:{}:cookies:uuid'.format(cookiejar_uuid), cookie_uuid)
|
||||||
r_serv_onion.srem('cookies:map:cookiejar:{}'.format(cookie_uuid), cookiejar_uuid)
|
r_serv_onion.srem('cookies:map:cookiejar:{}'.format(cookie_uuid), cookiejar_uuid)
|
||||||
if not exists_cookie(cookie_uuid):
|
if not exists_cookie(cookie_uuid):
|
||||||
r_serv_onion.delete('cookiejar:cookie:{}'.format(cookies_uuid))
|
r_serv_onion.delete('cookiejar:cookie:{}'.format(cookie_uuid))
|
||||||
|
|
||||||
|
def edit_cookie(cookiejar_uuid, cookie_uuid, cookie_dict):
|
||||||
|
# delete old keys
|
||||||
|
for key_name in r_serv_onion.hkeys('cookiejar:cookie:{}'.format(cookie_uuid)):
|
||||||
|
if key_name not in cookie_dict:
|
||||||
|
delete_cookie_value(cookie_uuid, key_name)
|
||||||
|
# add new keys
|
||||||
|
cookie_all_keys_name = get_cookie_all_keys_name()
|
||||||
|
for key_name in cookie_dict:
|
||||||
|
if key_name in cookie_all_keys_name:
|
||||||
|
set_cookie_value(cookie_uuid, key_name, cookie_dict[key_name])
|
||||||
|
|
||||||
## - - ##
|
## - - ##
|
||||||
## Cookies import ## # TODO: add browser type ?
|
## Cookies import ## # TODO: add browser type ?
|
||||||
|
@ -265,7 +291,7 @@ def api_import_cookies_from_json(json_cookies_str, cookiejar_uuid): # # TODO: ad
|
||||||
|
|
||||||
#### COOKIES API ####
|
#### COOKIES API ####
|
||||||
|
|
||||||
def api_get_cookiejar_cookies_uuid(cookiejar_uuid, user_id):
|
def api_verify_basic_cookiejar(cookiejar_uuid, user_id):
|
||||||
if not exist_cookiejar(cookiejar_uuid):
|
if not exist_cookiejar(cookiejar_uuid):
|
||||||
return ({'error': 'unknow cookiejar uuid', 'cookiejar_uuid': cookiejar_uuid}, 404)
|
return ({'error': 'unknow cookiejar uuid', 'cookiejar_uuid': cookiejar_uuid}, 404)
|
||||||
level = get_cookiejar_level(cookiejar_uuid)
|
level = get_cookiejar_level(cookiejar_uuid)
|
||||||
|
@ -273,21 +299,28 @@ def api_get_cookiejar_cookies_uuid(cookiejar_uuid, user_id):
|
||||||
cookie_owner = get_cookiejar_owner(cookiejar_uuid)
|
cookie_owner = get_cookiejar_owner(cookiejar_uuid)
|
||||||
if cookie_owner != user_id:
|
if cookie_owner != user_id:
|
||||||
return ({'error': 'The access to this cookiejar is restricted'}, 403)
|
return ({'error': 'The access to this cookiejar is restricted'}, 403)
|
||||||
res = get_cookiejar_cookies_uuid(cookiejar_uuid)
|
|
||||||
res = {'json_cookies': res[0], 'manual_cookies': res[1]}
|
|
||||||
return (res, 200)
|
|
||||||
|
|
||||||
def api_get_cookiejar_cookies(cookiejar_uuid, user_id):
|
def api_get_cookiejar_cookies(cookiejar_uuid, user_id):
|
||||||
if not exist_cookiejar(cookiejar_uuid):
|
res = api_verify_basic_cookiejar(cookiejar_uuid, user_id)
|
||||||
return ({'error': 'unknow cookiejar uuid', 'cookiejar_uuid': cookiejar_uuid}, 404)
|
if res:
|
||||||
level = get_cookiejar_level(cookiejar_uuid)
|
return res
|
||||||
if level == 0: # # TODO: check if user is admin
|
|
||||||
cookie_owner = get_cookiejar_owner(cookiejar_uuid)
|
|
||||||
if cookie_owner != user_id:
|
|
||||||
return ({'error': 'The access to this cookiejar is restricted'}, 403)
|
|
||||||
res = get_cookiejar_cookies_list(cookiejar_uuid)
|
res = get_cookiejar_cookies_list(cookiejar_uuid)
|
||||||
return (res, 200)
|
return (res, 200)
|
||||||
|
|
||||||
|
def api_edit_cookiejar_description(user_id, cookiejar_uuid, description):
|
||||||
|
res = api_verify_basic_cookiejar(cookiejar_uuid, user_id)
|
||||||
|
if res:
|
||||||
|
return res
|
||||||
|
edit_cookiejar_description(cookiejar_uuid, description)
|
||||||
|
return ({'cookiejar_uuid': cookiejar_uuid}, 200)
|
||||||
|
|
||||||
|
def api_get_cookiejar_cookies_with_uuid(cookiejar_uuid, user_id):
|
||||||
|
res = api_verify_basic_cookiejar(cookiejar_uuid, user_id)
|
||||||
|
if res:
|
||||||
|
return res
|
||||||
|
res = get_cookiejar_cookies_list(cookiejar_uuid, add_cookie_uuid=True)
|
||||||
|
return (res, 200)
|
||||||
|
|
||||||
def api_get_cookies_list_select(user_id):
|
def api_get_cookies_list_select(user_id):
|
||||||
l_cookiejar = []
|
l_cookiejar = []
|
||||||
for cookies_uuid in get_global_cookiejar():
|
for cookies_uuid in get_global_cookiejar():
|
||||||
|
@ -295,6 +328,39 @@ def api_get_cookies_list_select(user_id):
|
||||||
for cookies_uuid in get_user_cookiejar(user_id):
|
for cookies_uuid in get_user_cookiejar(user_id):
|
||||||
l_cookiejar.append('{} : {}'.format(get_cookiejar_description(cookies_uuid), cookies_uuid))
|
l_cookiejar.append('{} : {}'.format(get_cookiejar_description(cookies_uuid), cookies_uuid))
|
||||||
return sorted(l_cookiejar)
|
return sorted(l_cookiejar)
|
||||||
|
|
||||||
|
def api_delete_cookie_from_cookiejar(user_id, cookiejar_uuid, cookie_uuid):
|
||||||
|
res = api_verify_basic_cookiejar(cookiejar_uuid, user_id)
|
||||||
|
if res:
|
||||||
|
return res
|
||||||
|
delete_cookie_from_cookiejar(cookiejar_uuid, cookie_uuid)
|
||||||
|
return ({'cookiejar_uuid': cookiejar_uuid, 'cookie_uuid': cookie_uuid}, 200)
|
||||||
|
|
||||||
|
def api_delete_cookie_jar(user_id, cookiejar_uuid):
|
||||||
|
res = api_verify_basic_cookiejar(cookiejar_uuid, user_id)
|
||||||
|
if res:
|
||||||
|
return res
|
||||||
|
delete_cookie_jar(cookiejar_uuid)
|
||||||
|
return ({'cookiejar_uuid': cookiejar_uuid}, 200)
|
||||||
|
|
||||||
|
def api_edit_cookie(user_id, cookiejar_uuid, cookie_uuid, cookie_dict):
|
||||||
|
res = api_verify_basic_cookiejar(cookiejar_uuid, user_id)
|
||||||
|
if res:
|
||||||
|
return res
|
||||||
|
if 'name' not in cookie_dict or 'value' not in cookie_dict or cookie_dict['name'] == '':
|
||||||
|
({'error': 'cookie name or value not provided'}, 400)
|
||||||
|
edit_cookie(cookiejar_uuid, cookie_uuid, cookie_dict)
|
||||||
|
return (get_cookie_dict(cookie_uuid), 200)
|
||||||
|
|
||||||
|
def api_create_cookie(user_id, cookiejar_uuid, cookie_dict):
|
||||||
|
res = api_verify_basic_cookiejar(cookiejar_uuid, user_id)
|
||||||
|
if res:
|
||||||
|
return res
|
||||||
|
if 'name' not in cookie_dict or 'value' not in cookie_dict or cookie_dict['name'] == '':
|
||||||
|
({'error': 'cookie name or value not provided'}, 400)
|
||||||
|
res = add_cookie_to_cookiejar(cookiejar_uuid, cookie_dict)
|
||||||
|
return (res, 200)
|
||||||
|
|
||||||
#### ####
|
#### ####
|
||||||
|
|
||||||
#### CRAWLER TASK ####
|
#### CRAWLER TASK ####
|
||||||
|
|
|
@ -39,7 +39,7 @@ if __name__ == '__main__':
|
||||||
requested_mode = crawler_json['requested']
|
requested_mode = crawler_json['requested']
|
||||||
|
|
||||||
if crawler_options['cookiejar_uuid']:
|
if crawler_options['cookiejar_uuid']:
|
||||||
cookies = crawlers.load_crawler_cookies(crawler_options['cookiejar_uuid'], crawler_type=service_type)
|
cookies = crawlers.load_crawler_cookies(crawler_options['cookiejar_uuid'], domain, crawler_type=service_type)
|
||||||
else:
|
else:
|
||||||
cookies = []
|
cookies = []
|
||||||
|
|
||||||
|
|
|
@ -245,7 +245,8 @@ def crawler_cookiejar_add_post():
|
||||||
return create_json_response(res[0], res[1])
|
return create_json_response(res[0], res[1])
|
||||||
if l_manual_cookie:
|
if l_manual_cookie:
|
||||||
crawlers.add_cookies_to_cookiejar(cookiejar_uuid, l_manual_cookie)
|
crawlers.add_cookies_to_cookiejar(cookiejar_uuid, l_manual_cookie)
|
||||||
return render_template("add_cookiejar.html")
|
|
||||||
|
return redirect(url_for('crawler_splash.crawler_cookiejar_show', cookiejar_uuid=cookiejar_uuid))
|
||||||
|
|
||||||
@crawler_splash.route('/crawler/cookiejar/all', methods=['GET'])
|
@crawler_splash.route('/crawler/cookiejar/all', methods=['GET'])
|
||||||
#@login_required
|
#@login_required
|
||||||
|
@ -263,13 +264,143 @@ def crawler_cookiejar_show():
|
||||||
user_id = current_user.get_id()
|
user_id = current_user.get_id()
|
||||||
cookiejar_uuid = request.args.get('cookiejar_uuid')
|
cookiejar_uuid = request.args.get('cookiejar_uuid')
|
||||||
|
|
||||||
res = crawlers.api_get_cookiejar_cookies(cookiejar_uuid, user_id)
|
res = crawlers.api_get_cookiejar_cookies_with_uuid(cookiejar_uuid, user_id)
|
||||||
if res[1] !=200:
|
if res[1] !=200:
|
||||||
return create_json_response(res[0], res[1])
|
return create_json_response(res[0], res[1])
|
||||||
|
|
||||||
cookiejar_metadata = crawlers.get_cookiejar_metadata(cookiejar_uuid, level=False)
|
cookiejar_metadata = crawlers.get_cookiejar_metadata(cookiejar_uuid, level=False)
|
||||||
|
|
||||||
cookies = json.dumps(res[0], indent=4, sort_keys=True)
|
l_cookies = []
|
||||||
return render_template("show_cookiejar.html", cookiejar_metadata=cookiejar_metadata, l_cookies=cookies)
|
l_cookie_uuid = []
|
||||||
|
for cookie in res[0]:
|
||||||
|
l_cookies.append(json.dumps(cookie[0], indent=4, sort_keys=True))
|
||||||
|
l_cookie_uuid.append(cookie[1])
|
||||||
|
return render_template("show_cookiejar.html", cookiejar_uuid=cookiejar_uuid, cookiejar_metadata=cookiejar_metadata,
|
||||||
|
l_cookies=l_cookies, l_cookie_uuid=l_cookie_uuid)
|
||||||
|
|
||||||
|
@crawler_splash.route('/crawler/cookiejar/cookie/delete', methods=['GET'])
|
||||||
|
#@login_required
|
||||||
|
#@login_read_only
|
||||||
|
def crawler_cookiejar_cookie_delete():
|
||||||
|
user_id = current_user.get_id()
|
||||||
|
cookiejar_uuid = request.args.get('cookiejar_uuid')
|
||||||
|
cookie_uuid = request.args.get('cookie_uuid')
|
||||||
|
|
||||||
|
res = crawlers.api_delete_cookie_from_cookiejar(user_id, cookiejar_uuid, cookie_uuid)
|
||||||
|
if res[1] !=200:
|
||||||
|
return create_json_response(res[0], res[1])
|
||||||
|
return redirect(url_for('crawler_splash.crawler_cookiejar_show', cookiejar_uuid=cookiejar_uuid))
|
||||||
|
|
||||||
|
@crawler_splash.route('/crawler/cookiejar/delete', methods=['GET'])
|
||||||
|
#@login_required
|
||||||
|
#@login_read_only
|
||||||
|
def crawler_cookiejar_delete():
|
||||||
|
user_id = current_user.get_id()
|
||||||
|
cookiejar_uuid = request.args.get('cookiejar_uuid')
|
||||||
|
|
||||||
|
res = crawlers.api_delete_cookie_jar(user_id, cookiejar_uuid)
|
||||||
|
if res[1] !=200:
|
||||||
|
return create_json_response(res[0], res[1])
|
||||||
|
return redirect(url_for('crawler_splash.crawler_cookiejar_all'))
|
||||||
|
|
||||||
|
@crawler_splash.route('/crawler/cookiejar/edit', methods=['GET'])
|
||||||
|
@login_required
|
||||||
|
@login_read_only
|
||||||
|
def crawler_cookiejar_edit():
|
||||||
|
user_id = current_user.get_id()
|
||||||
|
cookiejar_uuid = request.args.get('cookiejar_uuid')
|
||||||
|
description = request.args.get('description')
|
||||||
|
|
||||||
|
res = crawlers.api_edit_cookiejar_description(user_id, cookiejar_uuid, description)
|
||||||
|
return create_json_response(res[0], res[1])
|
||||||
|
|
||||||
|
@crawler_splash.route('/crawler/cookiejar/cookie/edit', methods=['GET'])
|
||||||
|
@login_required
|
||||||
|
@login_read_only
|
||||||
|
def crawler_cookiejar_cookie_edit():
|
||||||
|
user_id = current_user.get_id()
|
||||||
|
cookiejar_uuid = request.args.get('cookiejar_uuid')
|
||||||
|
cookie_uuid = request.args.get('cookie_uuid')
|
||||||
|
|
||||||
|
cookie_dict = crawlers.get_cookie_dict(cookie_uuid)
|
||||||
|
return render_template("edit_cookie.html", cookiejar_uuid=cookiejar_uuid, cookie_uuid=cookie_uuid, cookie_dict=cookie_dict)
|
||||||
|
|
||||||
|
@crawler_splash.route('/crawler/cookiejar/cookie/edit_post', methods=['POST'])
|
||||||
|
@login_required
|
||||||
|
@login_read_only
|
||||||
|
def crawler_cookiejar_cookie_edit_post():
|
||||||
|
user_id = current_user.get_id()
|
||||||
|
cookiejar_uuid = request.form.get('cookiejar_uuid')
|
||||||
|
cookie_uuid = request.form.get('cookie_uuid')
|
||||||
|
name = request.form.get('name')
|
||||||
|
value = request.form.get('value')
|
||||||
|
domain = request.form.get('domain')
|
||||||
|
path = request.form.get('path')
|
||||||
|
httpOnly = request.form.get('httpOnly')
|
||||||
|
secure = request.form.get('secure')
|
||||||
|
|
||||||
|
cookie_dict = {'name': name, 'value': value}
|
||||||
|
if domain:
|
||||||
|
cookie_dict['domain'] = domain
|
||||||
|
if path:
|
||||||
|
cookie_dict['path'] = path
|
||||||
|
if httpOnly:
|
||||||
|
cookie_dict['httpOnly'] = True
|
||||||
|
if secure:
|
||||||
|
cookie_dict['secure'] = True
|
||||||
|
|
||||||
|
res = crawlers.api_edit_cookie(user_id, cookiejar_uuid, cookie_uuid, cookie_dict)
|
||||||
|
if res[1] != 200:
|
||||||
|
return create_json_response(res[0], res[1])
|
||||||
|
return redirect(url_for('crawler_splash.crawler_cookiejar_show', cookiejar_uuid=cookiejar_uuid))
|
||||||
|
|
||||||
|
@crawler_splash.route('/crawler/cookiejar/cookie/add', methods=['GET'])
|
||||||
|
@login_required
|
||||||
|
@login_read_only
|
||||||
|
def crawler_cookiejar_cookie_add():
|
||||||
|
user_id = current_user.get_id()
|
||||||
|
cookiejar_uuid = request.args.get('cookiejar_uuid')
|
||||||
|
return render_template("add_cookie.html", cookiejar_uuid=cookiejar_uuid)
|
||||||
|
|
||||||
|
@crawler_splash.route('/crawler/cookiejar/cookie/manual_add_post', methods=['POST'])
|
||||||
|
@login_required
|
||||||
|
@login_read_only
|
||||||
|
def crawler_cookiejar_cookie_manual_add_post():
|
||||||
|
user_id = current_user.get_id()
|
||||||
|
cookiejar_uuid = request.form.get('cookiejar_uuid')
|
||||||
|
name = request.form.get('name')
|
||||||
|
value = request.form.get('value')
|
||||||
|
domain = request.form.get('domain')
|
||||||
|
path = request.form.get('path')
|
||||||
|
httpOnly = request.form.get('httpOnly')
|
||||||
|
secure = request.form.get('secure')
|
||||||
|
|
||||||
|
cookie_dict = {'name': name, 'value': value}
|
||||||
|
if domain:
|
||||||
|
cookie_dict['domain'] = domain
|
||||||
|
if path:
|
||||||
|
cookie_dict['path'] = path
|
||||||
|
if httpOnly:
|
||||||
|
cookie_dict['httpOnly'] = True
|
||||||
|
if secure:
|
||||||
|
cookie_dict['secure'] = True
|
||||||
|
|
||||||
|
return redirect(url_for('crawler_splash.crawler_cookiejar_show', cookiejar_uuid=cookiejar_uuid))
|
||||||
|
|
||||||
|
@crawler_splash.route('/crawler/cookiejar/cookie/json_add_post', methods=['POST'])
|
||||||
|
@login_required
|
||||||
|
@login_read_only
|
||||||
|
def crawler_cookiejar_cookie_json_add_post():
|
||||||
|
user_id = current_user.get_id()
|
||||||
|
cookiejar_uuid = request.form.get('cookiejar_uuid')
|
||||||
|
|
||||||
|
if 'file' in request.files:
|
||||||
|
file = request.files['file']
|
||||||
|
json_cookies = file.read().decode()
|
||||||
|
if json_cookies:
|
||||||
|
res = crawlers.api_import_cookies_from_json(json_cookies, cookiejar_uuid)
|
||||||
|
return redirect(url_for('crawler_splash.crawler_cookiejar_show', cookiejar_uuid=cookiejar_uuid))
|
||||||
|
|
||||||
|
return redirect(url_for('crawler_splash.crawler_cookiejar_cookie_add', cookiejar_uuid=cookiejar_uuid))
|
||||||
|
|
||||||
## - - ##
|
## - - ##
|
||||||
|
|
|
@ -0,0 +1,116 @@
|
||||||
|
<!DOCTYPE html>
|
||||||
|
|
||||||
|
<html>
|
||||||
|
<head>
|
||||||
|
<title>AIL - Add Cookies</title>
|
||||||
|
<link rel="icon" href="{{ url_for('static', filename='image/ail-icon.png')}}">
|
||||||
|
<!-- Core CSS -->
|
||||||
|
<link href="{{ url_for('static', filename='css/bootstrap4.min.css') }}" rel="stylesheet">
|
||||||
|
<link href="{{ url_for('static', filename='css/font-awesome.min.css') }}" rel="stylesheet">
|
||||||
|
|
||||||
|
<!-- JS -->
|
||||||
|
<script src="{{ url_for('static', filename='js/jquery.js')}}"></script>
|
||||||
|
<script src="{{ url_for('static', filename='js/popper.min.js')}}"></script>
|
||||||
|
<script src="{{ url_for('static', filename='js/bootstrap4.min.js')}}"></script>
|
||||||
|
|
||||||
|
</head>
|
||||||
|
|
||||||
|
<body>
|
||||||
|
|
||||||
|
{% include 'nav_bar.html' %}
|
||||||
|
|
||||||
|
<div class="container-fluid">
|
||||||
|
<div class="row">
|
||||||
|
|
||||||
|
{% include 'crawler/menu_sidebar.html' %}
|
||||||
|
|
||||||
|
<div class="col-12 col-lg-10" id="core_content">
|
||||||
|
|
||||||
|
<div class="card mb-3 mt-1">
|
||||||
|
<div class="card-header text-white bg-dark">
|
||||||
|
<div class="row">
|
||||||
|
<div class="col-8">
|
||||||
|
<h5 class="card-title"><i class="fas fa-cookie-bite"></i> Add Cookie to cookiejar: {{cookiejar_uuid}}</h5>
|
||||||
|
</div>
|
||||||
|
<div class="col-4">
|
||||||
|
<a class="btn btn-danger float-right" href="{{ url_for('crawler_splash.crawler_cookiejar_cookie_delete') }}?cookiejar_uuid={{cookiejar_uuid}}&cookie_uuid={{cookie_uuid}}">
|
||||||
|
<i class="fas fa-trash-alt"></i>
|
||||||
|
</a>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="card-body">
|
||||||
|
|
||||||
|
<form action="{{ url_for('crawler_splash.crawler_cookiejar_cookie_manual_add_post') }}" method="post" enctype="multipart/form-data">
|
||||||
|
<input type="text" name="cookiejar_uuid" value="{{cookiejar_uuid}}" hidden>
|
||||||
|
{% include 'crawler/crawler_splash/cookie_edit_block.html' %}
|
||||||
|
<div class="form-group">
|
||||||
|
<button class="btn btn-info" type="submit" value=Upload><i class="fas fa-cookie"></i> Create Cookie</button>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
</form>
|
||||||
|
|
||||||
|
<hr>
|
||||||
|
|
||||||
|
<form action="{{ url_for('crawler_splash.crawler_cookiejar_cookie_json_add_post') }}" method="post" enctype="multipart/form-data">
|
||||||
|
<input type="text" name="cookiejar_uuid" value="{{cookiejar_uuid}}" hidden>
|
||||||
|
<h5>Import cookies from file:</h5>
|
||||||
|
<div class="form-group">
|
||||||
|
<label for="file"><b>JSON File</b></label>
|
||||||
|
<input type="file" class="form-control-file btn btn-outline-secondary" id="file" name="file">
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="form-group">
|
||||||
|
<button class="btn btn-info" type="submit" value=Upload><i class="fas fa-cookie"></i> Import Cookies</button>
|
||||||
|
</div>
|
||||||
|
</form>
|
||||||
|
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
</body>
|
||||||
|
|
||||||
|
<script>
|
||||||
|
$(document).ready(function(){
|
||||||
|
$('#description-edit-block').hide();
|
||||||
|
$("#page-crawler").addClass("active");
|
||||||
|
$("#nav_title_cookiejar").removeClass("text-muted");
|
||||||
|
});
|
||||||
|
|
||||||
|
|
||||||
|
function toggle_sidebar(){
|
||||||
|
if($('#nav_menu').is(':visible')){
|
||||||
|
$('#nav_menu').hide();
|
||||||
|
$('#side_menu').removeClass('border-right')
|
||||||
|
$('#side_menu').removeClass('col-lg-2')
|
||||||
|
$('#core_content').removeClass('col-lg-10')
|
||||||
|
}else{
|
||||||
|
$('#nav_menu').show();
|
||||||
|
$('#side_menu').addClass('border-right')
|
||||||
|
$('#side_menu').addClass('col-lg-2')
|
||||||
|
$('#core_content').addClass('col-lg-10')
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
function show_edit_description(){
|
||||||
|
console.log('edit');
|
||||||
|
$('#description-edit-block').show();
|
||||||
|
}
|
||||||
|
|
||||||
|
function edit_description(){
|
||||||
|
var new_description = $('#input-description').val()
|
||||||
|
var data_to_send = { cookiejar_uuid: "{{cookiejar_uuid}}", "description": new_description}
|
||||||
|
|
||||||
|
$.get("{{ url_for('crawler_splash.crawler_cookiejar_edit') }}", data_to_send, function(data, status){
|
||||||
|
if(status == "success") {
|
||||||
|
$('#description-text').text(new_description)
|
||||||
|
$('#description-edit-block').hide();
|
||||||
|
}
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
</script>
|
|
@ -7,7 +7,6 @@
|
||||||
<!-- Core CSS -->
|
<!-- Core CSS -->
|
||||||
<link href="{{ url_for('static', filename='css/bootstrap4.min.css') }}" rel="stylesheet">
|
<link href="{{ url_for('static', filename='css/bootstrap4.min.css') }}" rel="stylesheet">
|
||||||
<link href="{{ url_for('static', filename='css/font-awesome.min.css') }}" rel="stylesheet">
|
<link href="{{ url_for('static', filename='css/font-awesome.min.css') }}" rel="stylesheet">
|
||||||
<link href="{{ url_for('static', filename='css/daterangepicker.min.css') }}" rel="stylesheet">
|
|
||||||
|
|
||||||
<!-- JS -->
|
<!-- JS -->
|
||||||
<script src="{{ url_for('static', filename='js/jquery.js')}}"></script>
|
<script src="{{ url_for('static', filename='js/jquery.js')}}"></script>
|
||||||
|
@ -56,47 +55,12 @@
|
||||||
|
|
||||||
<hr>
|
<hr>
|
||||||
|
|
||||||
<h5>Import cookies:</h5>
|
{% include 'crawler/crawler_splash/add_cookies_block.html' %}
|
||||||
|
|
||||||
<div class="form-group">
|
<div class="form-group">
|
||||||
<label for="file"><b>JSON File</b></label>
|
<button class="btn btn-info" type="submit" value=Upload><i class="fas fa-cookie-bite"></i> Create Cookiejar</button>
|
||||||
<input type="file" class="form-control-file btn btn-outline-secondary" id="file" name="file">
|
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<hr>
|
|
||||||
|
|
||||||
<div>
|
|
||||||
|
|
||||||
<h5>Create cookies</h5>
|
|
||||||
|
|
||||||
<div class="row">
|
|
||||||
<div class="col-5" for="obj_input_cookie_name"><b>Cookie Name</b></div>
|
|
||||||
<div class="col-6" for="obj_input_cookie_value"><b>Cookie Value</b></div>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<div class="form-horizontal">
|
|
||||||
<div class="form-body">
|
|
||||||
<div class="form-group">
|
|
||||||
<div class="fields">
|
|
||||||
<div class="input-group mb-1">
|
|
||||||
<input type="text" class="form-control col-5" name="first_cookie" id="obj_input_cookie_name">
|
|
||||||
<input type="text" class="form-control col-6" name="first_cookie" id="obj_input_cookie_value">
|
|
||||||
<span class="btn btn-info input-group-addon add-field col-1"><i class="fas fa-plus"></i></span>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<br>
|
|
||||||
|
|
||||||
<span class="help-block" hidden>Manual Cookies></span>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<div class="form-group">
|
|
||||||
<button class="btn btn-info" type="submit" value=Upload><i class="fas fa-cookie-bite"></i> Create Cookiejar</button>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
</form>
|
</form>
|
||||||
|
|
||||||
</div>
|
</div>
|
||||||
|
@ -118,22 +82,6 @@ $(document).ready(function(){
|
||||||
$("#nav_title_cookiejar").removeClass("text-muted");
|
$("#nav_title_cookiejar").removeClass("text-muted");
|
||||||
});
|
});
|
||||||
|
|
||||||
var input_1 = '<div class="input-group mb-1"><input type="text" class="form-control col-5" name="'
|
|
||||||
var input_2 = '"><input type="text" class="form-control col-6" name="'
|
|
||||||
var input_3 = '">';
|
|
||||||
var minusButton = '<span class="btn btn-danger input-group-addon delete-field col-1"><i class="fas fa-trash-alt"></i></span></div>';
|
|
||||||
|
|
||||||
$('.add-field').click(function() {
|
|
||||||
var new_uuid = uuidv4();
|
|
||||||
var template = input_1 + new_uuid + input_2 + new_uuid + input_3;
|
|
||||||
var temp = $(template).insertBefore('.help-block');
|
|
||||||
temp.append(minusButton);
|
|
||||||
});
|
|
||||||
|
|
||||||
$('.fields').on('click', '.delete-field', function(){
|
|
||||||
$(this).parent().remove();
|
|
||||||
});
|
|
||||||
|
|
||||||
function toggle_sidebar(){
|
function toggle_sidebar(){
|
||||||
if($('#nav_menu').is(':visible')){
|
if($('#nav_menu').is(':visible')){
|
||||||
$('#nav_menu').hide();
|
$('#nav_menu').hide();
|
||||||
|
@ -148,10 +96,4 @@ function toggle_sidebar(){
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
function uuidv4() {
|
|
||||||
return ([1e7]+-1e3+-4e3+-8e3+-1e11).replace(/[018]/g, c =>
|
|
||||||
(c ^ crypto.getRandomValues(new Uint8Array(1))[0] & 15 >> c / 4).toString(16)
|
|
||||||
);
|
|
||||||
}
|
|
||||||
|
|
||||||
</script>
|
</script>
|
||||||
|
|
|
@ -0,0 +1,58 @@
|
||||||
|
<h5>Import cookies:</h5>
|
||||||
|
<div class="form-group">
|
||||||
|
<label for="file"><b>JSON File</b></label>
|
||||||
|
<input type="file" class="form-control-file btn btn-outline-secondary" id="file" name="file">
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<hr>
|
||||||
|
|
||||||
|
<div>
|
||||||
|
<h5>Create cookies:</h5>
|
||||||
|
|
||||||
|
<div class="row">
|
||||||
|
<div class="col-5" for="obj_input_cookie_name"><b>Cookie Name</b></div>
|
||||||
|
<div class="col-6" for="obj_input_cookie_value"><b>Cookie Value</b></div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="form-horizontal">
|
||||||
|
<div class="form-body">
|
||||||
|
<div class="form-group">
|
||||||
|
<div class="fields">
|
||||||
|
<div class="input-group mb-1">
|
||||||
|
<input type="text" class="form-control col-5" name="first_cookie" id="obj_input_cookie_name">
|
||||||
|
<input type="text" class="form-control col-6" name="first_cookie" id="obj_input_cookie_value">
|
||||||
|
<span class="btn btn-info input-group-addon add-field col-1"><i class="fas fa-plus"></i></span>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<br>
|
||||||
|
|
||||||
|
<span class="help-block" hidden>Manual Cookies></span>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<script>
|
||||||
|
var input_1 = '<div class="input-group mb-1"><input type="text" class="form-control col-5" name="'
|
||||||
|
var input_2 = '"><input type="text" class="form-control col-6" name="'
|
||||||
|
var input_3 = '">';
|
||||||
|
var minusButton = '<span class="btn btn-danger input-group-addon delete-field col-1"><i class="fas fa-trash-alt"></i></span></div>';
|
||||||
|
|
||||||
|
$('.add-field').click(function() {
|
||||||
|
var new_uuid = uuidv4();
|
||||||
|
var template = input_1 + new_uuid + input_2 + new_uuid + input_3;
|
||||||
|
var temp = $(template).insertBefore('.help-block');
|
||||||
|
temp.append(minusButton);
|
||||||
|
});
|
||||||
|
|
||||||
|
$('.fields').on('click', '.delete-field', function(){
|
||||||
|
$(this).parent().remove();
|
||||||
|
});
|
||||||
|
|
||||||
|
function uuidv4() {
|
||||||
|
return ([1e7]+-1e3+-4e3+-8e3+-1e11).replace(/[018]/g, c =>
|
||||||
|
(c ^ crypto.getRandomValues(new Uint8Array(1))[0] & 15 >> c / 4).toString(16)
|
||||||
|
);
|
||||||
|
}
|
||||||
|
</script>
|
|
@ -1,99 +0,0 @@
|
||||||
<!DOCTYPE html>
|
|
||||||
<html>
|
|
||||||
|
|
||||||
<head>
|
|
||||||
<meta charset="utf-8">
|
|
||||||
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
|
||||||
|
|
||||||
<title>AIL - Cookies</title>
|
|
||||||
<link rel="icon" href="{{ url_for('static', filename='image/ail-icon.png') }}">
|
|
||||||
|
|
||||||
<!-- Core CSS -->
|
|
||||||
<link href="{{ url_for('static', filename='css/bootstrap4.min.css') }}" rel="stylesheet">
|
|
||||||
<link href="{{ url_for('static', filename='css/font-awesome.min.css') }}" rel="stylesheet">
|
|
||||||
<link href="{{ url_for('static', filename='css/dataTables.bootstrap.min.css') }}" rel="stylesheet">
|
|
||||||
|
|
||||||
<script src="{{ url_for('static', filename='js/jquery.js')}}"></script>
|
|
||||||
<script src="{{ url_for('static', filename='js/bootstrap4.min.js')}}"></script>
|
|
||||||
<script src="{{ url_for('static', filename='js/jquery.dataTables.min.js')}}"></script>
|
|
||||||
<script src="{{ url_for('static', filename='js/dataTables.bootstrap.min.js')}}"></script>
|
|
||||||
</head>
|
|
||||||
<body>
|
|
||||||
|
|
||||||
{% include 'nav_bar.html' %}
|
|
||||||
|
|
||||||
<div class="container-fluid">
|
|
||||||
<div class="row">
|
|
||||||
|
|
||||||
{% include 'crawler/menu_sidebar.html' %}
|
|
||||||
|
|
||||||
<div class="col-12 col-lg-10" id="core_content">
|
|
||||||
|
|
||||||
<div class="card mb-3 mt-1">
|
|
||||||
<div class="card-header text-white bg-dark">
|
|
||||||
<h5 class="card-title"><i class="fas fa-cookie-bite"></i> Your Cookies</h5>
|
|
||||||
</div>
|
|
||||||
<div class="card-body">
|
|
||||||
{% with all_cookies=user_cookies, table_id='table_user'%}
|
|
||||||
{% include 'crawler/crawler_splash/table_cookies.html' %}
|
|
||||||
{% endwith %}
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<div class="card mb-3 mt-1">
|
|
||||||
<div class="card-header text-white bg-dark">
|
|
||||||
<h5 class="card-title"><i class="fas fa-cookie-bite"></i> Global Cookies</h5>
|
|
||||||
</div>
|
|
||||||
<div class="card-body">
|
|
||||||
{% with all_cookies=global_cookies, table_id='table_global'%}
|
|
||||||
{% include 'crawler/crawler_splash/table_cookies.html' %}
|
|
||||||
{% endwith %}
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<a class="btn btn-info my-4" href="{{url_for('crawler_splash.crawler_cookies_add')}}">
|
|
||||||
<i class="fas fa-plus-circle ml-auto"></i>
|
|
||||||
Add Cookies
|
|
||||||
</a>
|
|
||||||
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<script>
|
|
||||||
$(document).ready(function(){
|
|
||||||
$("#page-crawler").addClass("active");
|
|
||||||
$("#nav_cookies_all").addClass("active");
|
|
||||||
$("#nav_title_cookies").removeClass("text-muted");
|
|
||||||
|
|
||||||
$('#table_user').DataTable({
|
|
||||||
"aLengthMenu": [[5, 10, 15, -1], [5, 10, 15, "All"]],
|
|
||||||
"iDisplayLength": 10,
|
|
||||||
"order": [[ 0, "desc" ]]
|
|
||||||
});
|
|
||||||
$('#table_global').DataTable({
|
|
||||||
"aLengthMenu": [[5, 10, 15, -1], [5, 10, 15, "All"]],
|
|
||||||
"iDisplayLength": 10,
|
|
||||||
"order": [[ 0, "desc" ]]
|
|
||||||
});
|
|
||||||
|
|
||||||
|
|
||||||
});
|
|
||||||
|
|
||||||
function toggle_sidebar(){
|
|
||||||
if($('#nav_menu').is(':visible')){
|
|
||||||
$('#nav_menu').hide();
|
|
||||||
$('#side_menu').removeClass('border-right')
|
|
||||||
$('#side_menu').removeClass('col-lg-2')
|
|
||||||
$('#core_content').removeClass('col-lg-10')
|
|
||||||
}else{
|
|
||||||
$('#nav_menu').show();
|
|
||||||
$('#side_menu').addClass('border-right')
|
|
||||||
$('#side_menu').addClass('col-lg-2')
|
|
||||||
$('#core_content').addClass('col-lg-10')
|
|
||||||
}
|
|
||||||
}
|
|
||||||
</script>
|
|
||||||
|
|
||||||
</body>
|
|
||||||
</html>
|
|
|
@ -0,0 +1,37 @@
|
||||||
|
<div class="form-group row">
|
||||||
|
<label for="name" class="col-sm-2 col-form-label">name</label>
|
||||||
|
<div class="col-sm-10">
|
||||||
|
<input type="text" class="form-control" id="name" name="name" placeholder="cookie name" value="{%if 'name' in cookie_dict%}{{cookie_dict['name']}}{%endif%}" required>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="form-group row">
|
||||||
|
<label for="value" class="col-sm-2 col-form-label">value</label>
|
||||||
|
<div class="col-sm-10">
|
||||||
|
<input type="text" class="form-control" id="value" name="value" placeholder="cookie value" value="{%if 'value' in cookie_dict%}{{cookie_dict['value']}}{%endif%}" required>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="form-group row">
|
||||||
|
<label for="domain" class="col-sm-2 col-form-label">domain</label>
|
||||||
|
<div class="col-sm-10">
|
||||||
|
<input type="text" class="form-control" id="domain" name="domain" placeholder=".domain - optional" value="{%if 'domain' in cookie_dict%}{{cookie_dict['domain']}}{%endif%}">
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="form-group row">
|
||||||
|
<label for="path" class="col-sm-2 col-form-label">path</label>
|
||||||
|
<div class="col-sm-10">
|
||||||
|
<input type="text" class="form-control" id="path" name="path" placeholder="cookie path - optional" value="{%if 'path' in cookie_dict%}{{cookie_dict['path']}}{%endif%}">
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="custom-control custom-switch mt-1">
|
||||||
|
<input class="custom-control-input" type="checkbox" name="httpOnly" id="httpOnly" {%if 'httpOnly' in cookie_dict%}{%if cookie_dict['httpOnly']%}checked=""{%endif%}{%endif%}>
|
||||||
|
<label class="custom-control-label" for="httpOnly">
|
||||||
|
httpOnly
|
||||||
|
</label>
|
||||||
|
</div>
|
||||||
|
<div class="custom-control custom-switch mt-1">
|
||||||
|
<input class="custom-control-input" type="checkbox" name="secure" id="secure" {%if 'secure' in cookie_dict%}{%if cookie_dict['secure']%}checked=""{%endif%}{%endif%}>
|
||||||
|
<label class="custom-control-label" for="secure">
|
||||||
|
secure
|
||||||
|
</label>
|
||||||
|
</div>
|
|
@ -0,0 +1,36 @@
|
||||||
|
{% for dict_cookie in l_elem %}
|
||||||
|
|
||||||
|
{% if loop.index0 % 4 == 0 %}
|
||||||
|
<div class="card-deck mt-3">
|
||||||
|
{% endif %}
|
||||||
|
|
||||||
|
<div class="card">
|
||||||
|
<div class="card-header py-0">
|
||||||
|
<div class="d-flex flex-row-reverse">
|
||||||
|
<div>
|
||||||
|
<a class="btn btn-light" href="{{ url_for('crawler_splash.crawler_cookiejar_cookie_edit') }}?cookiejar_uuid={{cookiejar_uuid}}&cookie_uuid={{l_cookie_uuid[loop.index0]}}" style="font-size: 15px">
|
||||||
|
<i class="text-secondary fas fa-pencil-alt"></i>
|
||||||
|
</a>
|
||||||
|
</div>
|
||||||
|
<div>
|
||||||
|
<a class="btn btn-light" href="{{ url_for('crawler_splash.crawler_cookiejar_cookie_delete') }}?cookiejar_uuid={{cookiejar_uuid}}&cookie_uuid={{l_cookie_uuid[loop.index0]}}" style="font-size: 15px">
|
||||||
|
<i class="text-danger fas fa-trash-alt"></i>
|
||||||
|
</a>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
</div>
|
||||||
|
<div class="card-body">
|
||||||
|
<pre>{{dict_cookie}}</pre>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
{% if loop.index0 % 4 == 3 %}
|
||||||
|
</div>
|
||||||
|
{% endif %}
|
||||||
|
|
||||||
|
{% endfor %}
|
||||||
|
|
||||||
|
{% if l_elem|length % 4 != 0 %}
|
||||||
|
</div>
|
||||||
|
{% endif %}
|
|
@ -0,0 +1,102 @@
|
||||||
|
<!DOCTYPE html>
|
||||||
|
|
||||||
|
<html>
|
||||||
|
<head>
|
||||||
|
<title>AIL - Add Cookies</title>
|
||||||
|
<link rel="icon" href="{{ url_for('static', filename='image/ail-icon.png')}}">
|
||||||
|
<!-- Core CSS -->
|
||||||
|
<link href="{{ url_for('static', filename='css/bootstrap4.min.css') }}" rel="stylesheet">
|
||||||
|
<link href="{{ url_for('static', filename='css/font-awesome.min.css') }}" rel="stylesheet">
|
||||||
|
|
||||||
|
<!-- JS -->
|
||||||
|
<script src="{{ url_for('static', filename='js/jquery.js')}}"></script>
|
||||||
|
<script src="{{ url_for('static', filename='js/popper.min.js')}}"></script>
|
||||||
|
<script src="{{ url_for('static', filename='js/bootstrap4.min.js')}}"></script>
|
||||||
|
|
||||||
|
</head>
|
||||||
|
|
||||||
|
<body>
|
||||||
|
|
||||||
|
{% include 'nav_bar.html' %}
|
||||||
|
|
||||||
|
<div class="container-fluid">
|
||||||
|
<div class="row">
|
||||||
|
|
||||||
|
{% include 'crawler/menu_sidebar.html' %}
|
||||||
|
|
||||||
|
<div class="col-12 col-lg-10" id="core_content">
|
||||||
|
|
||||||
|
<div class="card mb-3 mt-1">
|
||||||
|
<div class="card-header text-white bg-dark">
|
||||||
|
<div class="row">
|
||||||
|
<div class="col-8">
|
||||||
|
<h5 class="card-title"><i class="fas fa-cookie-bite"></i> Edit Cookie: {{cookie_uuid}}</h5>
|
||||||
|
</div>
|
||||||
|
<div class="col-4">
|
||||||
|
<a class="btn btn-danger float-right" href="{{ url_for('crawler_splash.crawler_cookiejar_cookie_delete') }}?cookiejar_uuid={{cookiejar_uuid}}&cookie_uuid={{cookie_uuid}}">
|
||||||
|
<i class="fas fa-trash-alt"></i>
|
||||||
|
</a>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="card-body">
|
||||||
|
|
||||||
|
<form action="{{ url_for('crawler_splash.crawler_cookiejar_cookie_edit_post') }}" method="post" enctype="multipart/form-data">
|
||||||
|
<input type="text" name="cookiejar_uuid" value="{{cookiejar_uuid}}" hidden>
|
||||||
|
<input type="text" name="cookie_uuid" value="{{cookie_uuid}}" hidden>
|
||||||
|
{% include 'crawler/crawler_splash/cookie_edit_block.html' %}
|
||||||
|
<div class="form-group">
|
||||||
|
<button class="btn btn-info" type="submit" value=Upload><i class="fas fa-cookie-bite"></i> Edit Cookie</button>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
</form>
|
||||||
|
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
</body>
|
||||||
|
|
||||||
|
<script>
|
||||||
|
$(document).ready(function(){
|
||||||
|
$('#description-edit-block').hide();
|
||||||
|
$("#page-crawler").addClass("active");
|
||||||
|
$("#nav_title_cookiejar").removeClass("text-muted");
|
||||||
|
});
|
||||||
|
|
||||||
|
|
||||||
|
function toggle_sidebar(){
|
||||||
|
if($('#nav_menu').is(':visible')){
|
||||||
|
$('#nav_menu').hide();
|
||||||
|
$('#side_menu').removeClass('border-right')
|
||||||
|
$('#side_menu').removeClass('col-lg-2')
|
||||||
|
$('#core_content').removeClass('col-lg-10')
|
||||||
|
}else{
|
||||||
|
$('#nav_menu').show();
|
||||||
|
$('#side_menu').addClass('border-right')
|
||||||
|
$('#side_menu').addClass('col-lg-2')
|
||||||
|
$('#core_content').addClass('col-lg-10')
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
function show_edit_description(){
|
||||||
|
console.log('edit');
|
||||||
|
$('#description-edit-block').show();
|
||||||
|
}
|
||||||
|
|
||||||
|
function edit_description(){
|
||||||
|
var new_description = $('#input-description').val()
|
||||||
|
var data_to_send = { cookiejar_uuid: "{{cookiejar_uuid}}", "description": new_description}
|
||||||
|
|
||||||
|
$.get("{{ url_for('crawler_splash.crawler_cookiejar_edit') }}", data_to_send, function(data, status){
|
||||||
|
if(status == "success") {
|
||||||
|
$('#description-text').text(new_description)
|
||||||
|
$('#description-edit-block').hide();
|
||||||
|
}
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
</script>
|
|
@ -27,108 +27,51 @@
|
||||||
|
|
||||||
<div class="col-12 col-lg-10" id="core_content">
|
<div class="col-12 col-lg-10" id="core_content">
|
||||||
|
|
||||||
<table id="{{table_id}}" class="table table-striped table-bordered">
|
|
||||||
<thead class="bg-dark text-white">
|
|
||||||
<tr>
|
|
||||||
<th class="bg-info text-white">Description</th>
|
|
||||||
<th class="bg-info text-white">Date</th>
|
|
||||||
<th class="bg-info text-white">UUID</th>
|
|
||||||
<th class="bg-info text-white">User</th>
|
|
||||||
</tr>
|
|
||||||
</thead>
|
|
||||||
<tbody style="font-size: 15px;">
|
|
||||||
<tr>
|
|
||||||
<td>{{dict_cookiejar['description']}}</td>
|
|
||||||
<td>
|
|
||||||
{%if dict_cookiejar['date']%}
|
|
||||||
{{dict_cookiejar['date'][0:4]}}/{{dict_cookiejar['date'][4:6]}}/{{dict_cookiejar['date'][6:8]}}
|
|
||||||
{%endif%}
|
|
||||||
</td>
|
|
||||||
<td>
|
|
||||||
{{ dict_cookiejar['cookiejar_uuid']}}
|
|
||||||
</td>
|
|
||||||
<td>{{dict_cookiejar['user_id']}}</td>
|
|
||||||
</tr>
|
|
||||||
</tbody>
|
|
||||||
</table>
|
|
||||||
|
|
||||||
<div class="card mb-3 mt-1">
|
<div class="card mb-3 mt-1">
|
||||||
<div class="card-header text-white bg-dark">
|
<div class="card-header text-white bg-dark">
|
||||||
<h5 class="card-title"><i class="fas fa-box"></i> Create Cookijar <i class="fas fa-cookie"></i></h5>
|
<div class="row">
|
||||||
</div>
|
<div class="col-8">
|
||||||
<div class="card-body">
|
<h5 class="card-title"><i class="fas fa-cookie-bite"></i> Edit Cookiejar</h5>
|
||||||
|
|
||||||
|
|
||||||
<form action="{{ url_for('crawler_splash.crawler_cookiejar_add_post') }}" method="post" enctype="multipart/form-data">
|
|
||||||
|
|
||||||
<div class="row">
|
|
||||||
<div class="col-12 col-md-9">
|
|
||||||
<div class="input-group mb-2 mr-sm-2">
|
|
||||||
<div class="input-group-prepend">
|
|
||||||
<div class="input-group-text"><i class="fas fa-tag"></i></div>
|
|
||||||
</div>
|
|
||||||
<input id="description" name="description" class="form-control" placeholder="cookies description - (optional)" type="text">
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
<div class="col-12 col-md-3">
|
|
||||||
<div class="custom-control custom-switch mt-1">
|
|
||||||
<input class="custom-control-input" type="checkbox" name="level" id="id_level" checked="">
|
|
||||||
<label class="custom-control-label" for="id_level">
|
|
||||||
<i class="fas fa-users"></i> Show cookiejar to all Users
|
|
||||||
</label>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<hr>
|
|
||||||
|
|
||||||
<h5>Import cookies:</h5>
|
|
||||||
<div class="form-group">
|
|
||||||
<label for="file"><b>JSON File</b></label>
|
|
||||||
<input type="file" class="form-control-file btn btn-outline-secondary" id="file" name="file">
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<hr>
|
|
||||||
|
|
||||||
<div>
|
|
||||||
|
|
||||||
<h5>Create cookies</h5>
|
|
||||||
|
|
||||||
<div class="row">
|
|
||||||
<div class="col-5" for="obj_input_cookie_name"><b>Cookie Name</b></div>
|
|
||||||
<div class="col-6" for="obj_input_cookie_value"><b>Cookie Value</b></div>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<div class="form-horizontal">
|
|
||||||
<div class="form-body">
|
|
||||||
<div class="form-group">
|
|
||||||
<div class="fields">
|
|
||||||
<div class="input-group mb-1">
|
|
||||||
<input type="text" class="form-control col-5" name="first_cookie" id="obj_input_cookie_name">
|
|
||||||
<input type="text" class="form-control col-6" name="first_cookie" id="obj_input_cookie_value">
|
|
||||||
<span class="btn btn-info input-group-addon add-field col-1"><i class="fas fa-plus"></i></span>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<br>
|
|
||||||
|
|
||||||
<span class="help-block" hidden>Manual Cookies></span>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
</div>
|
</div>
|
||||||
|
<div class="col-4">
|
||||||
<div class="form-group">
|
<a class="btn btn-danger float-right" href="{{ url_for('crawler_splash.crawler_cookiejar_delete') }}?cookiejar_uuid={{cookiejar_uuid}}">
|
||||||
<button class="btn btn-info" type="submit" value=Upload><i class="fas fa-cookie-bite"></i> Create Cookiejar</button>
|
<i class="fas fa-trash-alt"></i>
|
||||||
|
</a>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
</form>
|
|
||||||
|
|
||||||
</div>
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="card-body">
|
||||||
|
{% with all_cookiejar=[cookiejar_metadata], table_id='table_cookiejar'%}
|
||||||
|
{% include 'crawler/crawler_splash/table_cookiejar.html' %}
|
||||||
|
{% endwith %}
|
||||||
|
|
||||||
|
<button class="btn btn-info" onclick="show_edit_description();">
|
||||||
|
Edit Description <i class="fas fa-pencil-alt"></i>
|
||||||
|
</button>
|
||||||
|
|
||||||
|
<a href="{{ url_for('crawler_splash.crawler_cookiejar_cookie_add')}}?cookiejar_uuid={{cookiejar_uuid}}">
|
||||||
|
<button class="btn btn-primary">
|
||||||
|
Add Cookies <i class="fas fa-cookie"></i>
|
||||||
|
</button>
|
||||||
|
</a>
|
||||||
|
|
||||||
|
<span class="mt-1" id="description-edit-block">
|
||||||
|
<div class="input-group">
|
||||||
|
<input class="form-control" type="text" id="input-description" value="{{cookiejar_metadata['description']}}"></input>
|
||||||
|
<div class="input-group-append">
|
||||||
|
<button class="btn btn-info" onclick="edit_description();">
|
||||||
|
<i class="fas fa-pencil-alt"></i> Edit
|
||||||
|
</button>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</span>
|
||||||
|
|
||||||
</div>
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
{% with l_elem=l_cookies, l_cookie_uuid=l_cookie_uuid, cookiejar_uuid=cookiejar_uuid %}
|
||||||
|
{% include 'crawler/crawler_splash/cookies_card_block.html' %}
|
||||||
|
{% endwith %}
|
||||||
|
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
@ -139,26 +82,11 @@
|
||||||
<script>
|
<script>
|
||||||
var chart = {};
|
var chart = {};
|
||||||
$(document).ready(function(){
|
$(document).ready(function(){
|
||||||
|
$('#description-edit-block').hide();
|
||||||
$("#page-crawler").addClass("active");
|
$("#page-crawler").addClass("active");
|
||||||
$("#nav_cookiejar_add").addClass("active");
|
|
||||||
$("#nav_title_cookiejar").removeClass("text-muted");
|
$("#nav_title_cookiejar").removeClass("text-muted");
|
||||||
});
|
});
|
||||||
|
|
||||||
var input_1 = '<div class="input-group mb-1"><input type="text" class="form-control col-5" name="'
|
|
||||||
var input_2 = '"><input type="text" class="form-control col-6" name="'
|
|
||||||
var input_3 = '">';
|
|
||||||
var minusButton = '<span class="btn btn-danger input-group-addon delete-field col-1"><i class="fas fa-trash-alt"></i></span></div>';
|
|
||||||
|
|
||||||
$('.add-field').click(function() {
|
|
||||||
var new_uuid = uuidv4();
|
|
||||||
var template = input_1 + new_uuid + input_2 + new_uuid + input_3;
|
|
||||||
var temp = $(template).insertBefore('.help-block');
|
|
||||||
temp.append(minusButton);
|
|
||||||
});
|
|
||||||
|
|
||||||
$('.fields').on('click', '.delete-field', function(){
|
|
||||||
$(this).parent().remove();
|
|
||||||
});
|
|
||||||
|
|
||||||
function toggle_sidebar(){
|
function toggle_sidebar(){
|
||||||
if($('#nav_menu').is(':visible')){
|
if($('#nav_menu').is(':visible')){
|
||||||
|
@ -174,10 +102,21 @@ function toggle_sidebar(){
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
function uuidv4() {
|
function show_edit_description(){
|
||||||
return ([1e7]+-1e3+-4e3+-8e3+-1e11).replace(/[018]/g, c =>
|
console.log('edit');
|
||||||
(c ^ crypto.getRandomValues(new Uint8Array(1))[0] & 15 >> c / 4).toString(16)
|
$('#description-edit-block').show();
|
||||||
);
|
}
|
||||||
|
|
||||||
|
function edit_description(){
|
||||||
|
var new_description = $('#input-description').val()
|
||||||
|
var data_to_send = { cookiejar_uuid: "{{cookiejar_uuid}}", "description": new_description}
|
||||||
|
|
||||||
|
$.get("{{ url_for('crawler_splash.crawler_cookiejar_edit') }}", data_to_send, function(data, status){
|
||||||
|
if(status == "success") {
|
||||||
|
$('#description-text').text(new_description)
|
||||||
|
$('#description-edit-block').hide();
|
||||||
|
}
|
||||||
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
</script>
|
</script>
|
||||||
|
|
|
@ -10,7 +10,7 @@
|
||||||
<tbody style="font-size: 15px;">
|
<tbody style="font-size: 15px;">
|
||||||
{% for dict_cookiejar in all_cookiejar %}
|
{% for dict_cookiejar in all_cookiejar %}
|
||||||
<tr>
|
<tr>
|
||||||
<td>{{dict_cookiejar['description']}}</td>
|
<td id="description-text">{{dict_cookiejar['description']}}</td>
|
||||||
<td>
|
<td>
|
||||||
{%if dict_cookiejar['date']%}
|
{%if dict_cookiejar['date']%}
|
||||||
{{dict_cookiejar['date'][0:4]}}/{{dict_cookiejar['date'][4:6]}}/{{dict_cookiejar['date'][6:8]}}
|
{{dict_cookiejar['date'][0:4]}}/{{dict_cookiejar['date'][4:6]}}/{{dict_cookiejar['date'][6:8]}}
|
||||||
|
|
Loading…
Reference in New Issue