mirror of https://github.com/CIRCL/lookyloo
chg: Improve support of self generated user-agents
parent
f0c7e42bd9
commit
c8cc56f78b
|
@ -49,6 +49,7 @@ time_delta_on_index = get_config('generic', 'time_delta_on_index')
|
||||||
blur_screenshot = get_config('generic', 'enable_default_blur_screenshot')
|
blur_screenshot = get_config('generic', 'enable_default_blur_screenshot')
|
||||||
max_depth = get_config('generic', 'max_depth')
|
max_depth = get_config('generic', 'max_depth')
|
||||||
|
|
||||||
|
use_own_ua = get_config('generic', 'use_user_agents_users')
|
||||||
enable_mail_notification = get_config('generic', 'enable_mail_notification')
|
enable_mail_notification = get_config('generic', 'enable_mail_notification')
|
||||||
enable_context_by_users = get_config('generic', 'enable_context_by_users')
|
enable_context_by_users = get_config('generic', 'enable_context_by_users')
|
||||||
enable_categorization = get_config('generic', 'enable_categorization')
|
enable_categorization = get_config('generic', 'enable_categorization')
|
||||||
|
@ -449,7 +450,10 @@ def index():
|
||||||
if request.method == 'HEAD':
|
if request.method == 'HEAD':
|
||||||
# Just returns ack if the webserver is running
|
# Just returns ack if the webserver is running
|
||||||
return 'Ack'
|
return 'Ack'
|
||||||
update_user_agents()
|
if use_own_ua:
|
||||||
|
lookyloo.build_ua_file()
|
||||||
|
else:
|
||||||
|
update_user_agents()
|
||||||
return index_generic()
|
return index_generic()
|
||||||
|
|
||||||
|
|
||||||
|
@ -538,14 +542,16 @@ def capture_web():
|
||||||
os=os, browser=browser)
|
os=os, browser=browser)
|
||||||
return redirect(url_for('tree', tree_uuid=perma_uuid))
|
return redirect(url_for('tree', tree_uuid=perma_uuid))
|
||||||
user_agents: Dict[str, Any] = {}
|
user_agents: Dict[str, Any] = {}
|
||||||
if get_config('generic', 'use_user_agents_users'):
|
if use_own_ua:
|
||||||
lookyloo.build_ua_file()
|
user_agents = get_user_agents('own_user_agents')
|
||||||
# NOTE: For now, just generate the file, so we have an idea of the size
|
|
||||||
# user_agents = get_user_agents('own_user_agents')
|
|
||||||
if not user_agents:
|
if not user_agents:
|
||||||
user_agents = get_user_agents()
|
user_agents = get_user_agents()
|
||||||
user_agents.pop('by_frequency')
|
# get most frequest UA that isn't a bot (yes, it is dirty.)
|
||||||
return render_template('capture.html', user_agents=user_agents,
|
for ua in user_agents.pop('by_frequency'):
|
||||||
|
if 'bot' not in ua['useragent'].lower():
|
||||||
|
default_ua = ua
|
||||||
|
break
|
||||||
|
return render_template('capture.html', user_agents=user_agents, default=default_ua,
|
||||||
max_depth=max_depth, personal_ua=request.headers.get('User-Agent'))
|
max_depth=max_depth, personal_ua=request.headers.get('User-Agent'))
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -2,15 +2,20 @@ $("#os").change(function(){
|
||||||
var os_name = $(this).find(":selected").val().replace(/(:|\.|\[|\]|,|=)/g, "\\$1").replace(/ /g,"_");
|
var os_name = $(this).find(":selected").val().replace(/(:|\.|\[|\]|,|=)/g, "\\$1").replace(/ /g,"_");
|
||||||
var first_browser_name = $("[id='" + os_name + "']").find('select option:first-child').val().replace(/(:|\.|\[|\]|,|=)/g, "\\$1").replace(/ /g,"_");
|
var first_browser_name = $("[id='" + os_name + "']").find('select option:first-child').val().replace(/(:|\.|\[|\]|,|=)/g, "\\$1").replace(/ /g,"_");
|
||||||
// Hide and disable everything
|
// Hide and disable everything
|
||||||
|
$("#os > option").removeAttr('selected');
|
||||||
$(".style-sub-1").hide();
|
$(".style-sub-1").hide();
|
||||||
$(".style-sub-1 > div > select").attr('disabled', true);
|
$(".style-sub-1 > div > select").attr('disabled', true);
|
||||||
|
$(".style-sub-1 > div > select").removeAttr('selected');
|
||||||
$(".style-sub-2").hide();
|
$(".style-sub-2").hide();
|
||||||
$(".style-sub-2 > div > select").attr('disabled', true);
|
$(".style-sub-2 > div > select").attr('disabled', true);
|
||||||
|
$(".style-sub-2 > div > select").removeAttr('selected');
|
||||||
|
|
||||||
$("[id='" + os_name + "']").show();
|
$("[id='" + os_name + "']").show();
|
||||||
$("[id='" + os_name + "'] > div > select").removeAttr('disabled');
|
$("[id='" + os_name + "'] > div > select").removeAttr('disabled');
|
||||||
|
$("[id='" + os_name + "'] > div > select option:first").prop('selected',true);
|
||||||
$("[id='" + os_name + '_' + first_browser_name + "']").show();
|
$("[id='" + os_name + '_' + first_browser_name + "']").show();
|
||||||
$("[id='" + os_name + '_' + first_browser_name + "'] > div > select").removeAttr('disabled');
|
$("[id='" + os_name + '_' + first_browser_name + "'] > div > select").removeAttr('disabled');
|
||||||
|
$("[id='" + os_name + '_' + first_browser_name + "'] > div > select option:first").prop('selected',true);
|
||||||
});
|
});
|
||||||
|
|
||||||
$('select[name="browser"]').change(function(){
|
$('select[name="browser"]').change(function(){
|
||||||
|
@ -18,8 +23,10 @@ $('select[name="browser"]').change(function(){
|
||||||
var os_name = $(this).parent().parent().attr("id").replace(/(:|\.|\[|\]|,|=)/g, "\\$1").replace(/ /g,"_");
|
var os_name = $(this).parent().parent().attr("id").replace(/(:|\.|\[|\]|,|=)/g, "\\$1").replace(/ /g,"_");
|
||||||
|
|
||||||
// Hide what makes sense
|
// Hide what makes sense
|
||||||
|
$(".style-sub-1 > div > select").removeAttr('selected');
|
||||||
$(".style-sub-2").hide();
|
$(".style-sub-2").hide();
|
||||||
$(".style-sub-2 > div > select").attr('disabled', true);
|
$(".style-sub-2 > div > select").attr('disabled', true);
|
||||||
|
$(".style-sub-2 > div > select").removeAttr('selected');
|
||||||
|
|
||||||
$("[id='" + os_name + '_' + browser_name + "']").show();
|
$("[id='" + os_name + '_' + browser_name + "']").show();
|
||||||
$("[id='" + os_name + '_' + browser_name + "'] > div > select").removeAttr('disabled');
|
$("[id='" + os_name + '_' + browser_name + "'] > div > select").removeAttr('disabled');
|
||||||
|
|
|
@ -94,33 +94,37 @@
|
||||||
<div class="col-sm-10">
|
<div class="col-sm-10">
|
||||||
<select class="form-control" name="os" id="os">
|
<select class="form-control" name="os" id="os">
|
||||||
{% for os in user_agents.keys() %}
|
{% for os in user_agents.keys() %}
|
||||||
<option value="{{ os }}">{{ os }}</option>
|
<!-- Select the default os -->
|
||||||
|
<option value="{{ os }}" {% if os==default['os'] %}selected{% endif %}>{{ os }}</option>
|
||||||
{% endfor%}
|
{% endfor%}
|
||||||
</select>
|
</select>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
{% for os, browsers in user_agents.items() %}
|
{% for os, browsers in user_agents.items() %}
|
||||||
<div id="{{os.replace(' ', '_')}}" class="style-sub-1 form-group row" {% if not loop.first %}style="display: none;"{%endif%}>
|
<!-- Hide the browsers that aren't part of the default os -->
|
||||||
|
<div id="{{os.replace(' ', '_')}}" class="style-sub-1 form-group row" {% if not os==default['os'] %}style="display: none;"{%endif%}>
|
||||||
<label for="browser" class="col-sm-2 col-form-label">Browser Type:</label>
|
<label for="browser" class="col-sm-2 col-form-label">Browser Type:</label>
|
||||||
<div class="col-sm-10">
|
<div class="col-sm-10">
|
||||||
<!-- Disable all the selects, unless it is the first one in the OS list-->
|
<!-- Disable all the selects not related to the default os -->
|
||||||
<select class="form-control" name="browser" {% if not loop.first %}disabled{%endif%}>
|
<select class="form-control" name="browser" {% if not os==default['os'] %}disabled{%endif%}>
|
||||||
{% for browser in browsers.keys()%}
|
{% for browser in browsers.keys()%}
|
||||||
<option value="{{ browser }}">{{ browser }}</option>
|
<!-- Select the default browser -->
|
||||||
|
<option value="{{ browser }}" {% if browser==default['browser'] %}selected{% endif %}>{{ browser }}</option>
|
||||||
{% endfor%}
|
{% endfor%}
|
||||||
</select>
|
</select>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
{% set outer_loop = loop %}
|
|
||||||
{% for browser, user_agents in browsers.items()%}
|
{% for browser, user_agents in browsers.items()%}
|
||||||
<div id="{{os.replace(' ', '_')}}_{{browser.replace(' ', '_')}}" class="style-sub-2 form-group row" {% if not loop.first or not outer_loop.first %} style="display: none;"{%endif%}>
|
<!-- Hide the user agents that aren't part of the default OS and browsers that aren't part of the default os -->
|
||||||
|
<div id="{{os.replace(' ', '_')}}_{{browser.replace(' ', '_')}}" class="style-sub-2 form-group row" {% if not os==default['os'] or not browser==default['browser']%} style="display: none;"{%endif%}>
|
||||||
<label for="user_agent" class="col-sm-2 col-form-label">User Agent:</label>
|
<label for="user_agent" class="col-sm-2 col-form-label">User Agent:</label>
|
||||||
<div class="col-sm-10">
|
<div class="col-sm-10">
|
||||||
<!-- Disable all the selects, unless it is the first one in the OS list and in the browser list-->
|
<!-- Disable all the selects, unless it is in default os and browser -->
|
||||||
<select class="form-control" name="user_agent" {% if not outer_loop.first or not loop.first %}disabled{%endif%}>
|
<select class="form-control" name="user_agent" {% if not os==default['os'] or not browser==default['browser'] %}disabled{%endif%}>
|
||||||
{% for user_agent in user_agents %}
|
{% for user_agent in user_agents %}
|
||||||
<option value="{{ user_agent }}">{{ user_agent }}</option>
|
<!-- Select the default ua -->
|
||||||
|
<option value="{{ user_agent }}" {% if user_agent==default['useragent'] %}selected{% endif %}>{{ user_agent }}</option>
|
||||||
{% endfor%}
|
{% endfor%}
|
||||||
</select>
|
</select>
|
||||||
</div>
|
</div>
|
||||||
|
|
Loading…
Reference in New Issue