Proxy scan improvements - handle custom proxies, dont restart when a scan is already running (#1689)

pull/1694/head
dgtlmoon 1 year ago committed by GitHub
parent 7cb7eebbc5
commit 661f7fe32c
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23

@ -46,14 +46,18 @@ def construct_blueprint(datastore: ChangeDetectionStore):
except content_fetcher.Non200ErrorCodeReceived as e: except content_fetcher.Non200ErrorCodeReceived as e:
if e.status_code == 404: if e.status_code == 404:
status.update({'status': 'OK', 'length': len(contents), 'text': f"OK but 404 (page not found)"}) status.update({'status': 'OK', 'length': len(contents), 'text': f"OK but 404 (page not found)"})
elif e.status_code == 403: elif e.status_code == 403 or e.status_code == 401:
status.update({'status': 'ERROR', 'length': len(contents), 'text': f"403 - Access denied"}) status.update({'status': 'ERROR', 'length': len(contents), 'text': f"{e.status_code} - Access denied"})
else: else:
status.update({'status': 'ERROR', 'length': len(contents), 'text': f"Status code: {e.status_code}"}) status.update({'status': 'ERROR', 'length': len(contents), 'text': f"Status code: {e.status_code}"})
except text_json_diff.FilterNotFoundInResponse: except text_json_diff.FilterNotFoundInResponse:
status.update({'status': 'OK', 'length': len(contents), 'text': f"OK but CSS/xPath filter not found (page changed layout?)"}) status.update({'status': 'OK', 'length': len(contents), 'text': f"OK but CSS/xPath filter not found (page changed layout?)"})
except content_fetcher.EmptyReply as e: except content_fetcher.EmptyReply as e:
status.update({'status': 'ERROR OTHER', 'length': len(contents) if contents else 0, 'text': "Empty reply, needs chrome?"}) if e.status_code == 403 or e.status_code == 401:
status.update({'status': 'ERROR OTHER', 'length': len(contents), 'text': f"Got empty reply with code {e.status_code} - Access denied"})
else:
status.update({'status': 'ERROR OTHER', 'length': len(contents) if contents else 0, 'text': f"Empty reply with code {e.status_code}, needs chrome?"})
except Exception as e: except Exception as e:
status.update({'status': 'ERROR OTHER', 'length': len(contents) if contents else 0, 'text': 'Error: '+str(e)}) status.update({'status': 'ERROR OTHER', 'length': len(contents) if contents else 0, 'text': 'Error: '+str(e)})
else: else:
@ -94,8 +98,13 @@ def construct_blueprint(datastore: ChangeDetectionStore):
if not datastore.proxy_list: if not datastore.proxy_list:
return return
# @todo - Cancel any existing runs if checks_in_progress.get(uuid):
checks_in_progress[uuid] = {} state = _recalc_check_status(uuid=uuid)
for proxy_key, v in state.items():
if v.get('status') == 'RUNNING':
return state
else:
checks_in_progress[uuid] = {}
for k, v in datastore.proxy_list.items(): for k, v in datastore.proxy_list.items():
if not checks_in_progress[uuid].get(k): if not checks_in_progress[uuid].get(k):

@ -12,7 +12,7 @@ $(function () {
function set_proxy_check_status(proxy_key, state) { function set_proxy_check_status(proxy_key, state) {
// select input by value name // select input by value name
const proxy_li = $("input[value=" + proxy_key + "]").parent(); const proxy_li = $('input[value="' + proxy_key + '" ]').parent();
if (state['status'] === 'RUNNING') { if (state['status'] === 'RUNNING') {
$('.proxy-status', proxy_li).html('<span class="spinner"></span>'); $('.proxy-status', proxy_li).html('<span class="spinner"></span>');
} }

Loading…
Cancel
Save