context menu option
This commit is contained in:
parent
e2d4e12057
commit
93a258170a
2
cache/crtsh/coturn_ms-it-services_de.json
vendored
2
cache/crtsh/coturn_ms-it-services_de.json
vendored
@ -1 +1 @@
|
|||||||
{"domain":"coturn.ms-it-services.de","first_cached":"2025-09-14T21:03:44.169328+00:00","last_upstream_query":"2025-09-15T08:33:17.764021+00:00","upstream_query_count":2,"certificates":[{"issuer_ca_id":295819,"issuer_name":"C=US, O=Let's Encrypt, CN=E6","common_name":"coturn.ms-it-services.de","name_value":"coturn.ms-it-services.de","id":14781803935,"entry_timestamp":"2024-10-03T09:53:12.473","not_before":"2024-10-03T08:54:42","not_after":"2025-01-01T08:54:41","serial_number":"0395c04e522a2715eebcb7fc4ffb3da1fdba","result_count":2},{"issuer_ca_id":295819,"issuer_name":"C=US, O=Let's Encrypt, CN=E6","common_name":"coturn.ms-it-services.de","name_value":"coturn.ms-it-services.de","id":14781794097,"entry_timestamp":"2024-10-03T09:53:12.142","not_before":"2024-10-03T08:54:42","not_after":"2025-01-01T08:54:41","serial_number":"0395c04e522a2715eebcb7fc4ffb3da1fdba","result_count":2},{"issuer_ca_id":295819,"issuer_name":"C=US, O=Let's Encrypt, CN=E6","common_name":"coturn.ms-it-services.de","name_value":"coturn.ms-it-services.de","id":14773518990,"entry_timestamp":"2024-10-02T19:20:49.687","not_before":"2024-10-02T18:22:19","not_after":"2024-12-31T18:22:18","serial_number":"04f26242ac1b2ac659ac2e19ae2522ce3274","result_count":2},{"issuer_ca_id":295819,"issuer_name":"C=US, O=Let's Encrypt, CN=E6","common_name":"coturn.ms-it-services.de","name_value":"coturn.ms-it-services.de","id":14773501988,"entry_timestamp":"2024-10-02T19:20:49.356","not_before":"2024-10-02T18:22:19","not_after":"2024-12-31T18:22:18","serial_number":"04f26242ac1b2ac659ac2e19ae2522ce3274","result_count":2}]}
|
{"domain":"coturn.ms-it-services.de","first_cached":"2025-09-14T21:03:44.169328+00:00","last_upstream_query":"2025-09-15T19:08:39.390556+00:00","upstream_query_count":3,"certificates":[{"issuer_ca_id":295819,"issuer_name":"C=US, O=Let's Encrypt, CN=E6","common_name":"coturn.ms-it-services.de","name_value":"coturn.ms-it-services.de","id":14781803935,"entry_timestamp":"2024-10-03T09:53:12.473","not_before":"2024-10-03T08:54:42","not_after":"2025-01-01T08:54:41","serial_number":"0395c04e522a2715eebcb7fc4ffb3da1fdba","result_count":2},{"issuer_ca_id":295819,"issuer_name":"C=US, O=Let's Encrypt, CN=E6","common_name":"coturn.ms-it-services.de","name_value":"coturn.ms-it-services.de","id":14781794097,"entry_timestamp":"2024-10-03T09:53:12.142","not_before":"2024-10-03T08:54:42","not_after":"2025-01-01T08:54:41","serial_number":"0395c04e522a2715eebcb7fc4ffb3da1fdba","result_count":2},{"issuer_ca_id":295819,"issuer_name":"C=US, O=Let's Encrypt, CN=E6","common_name":"coturn.ms-it-services.de","name_value":"coturn.ms-it-services.de","id":14773518990,"entry_timestamp":"2024-10-02T19:20:49.687","not_before":"2024-10-02T18:22:19","not_after":"2024-12-31T18:22:18","serial_number":"04f26242ac1b2ac659ac2e19ae2522ce3274","result_count":2},{"issuer_ca_id":295819,"issuer_name":"C=US, O=Let's Encrypt, CN=E6","common_name":"coturn.ms-it-services.de","name_value":"coturn.ms-it-services.de","id":14773501988,"entry_timestamp":"2024-10-02T19:20:49.356","not_before":"2024-10-02T18:22:19","not_after":"2024-12-31T18:22:18","serial_number":"04f26242ac1b2ac659ac2e19ae2522ce3274","result_count":2}]}
|
188
cache/crtsh/mx00_kundenserver_de.json
vendored
Normal file
188
cache/crtsh/mx00_kundenserver_de.json
vendored
Normal file
@ -0,0 +1,188 @@
|
|||||||
|
{
|
||||||
|
"domain": "mx00.kundenserver.de",
|
||||||
|
"first_cached": "2025-09-15T19:23:52.908544+00:00",
|
||||||
|
"last_upstream_query": "2025-09-15T19:23:52.908548+00:00",
|
||||||
|
"upstream_query_count": 1,
|
||||||
|
"certificates": [
|
||||||
|
{
|
||||||
|
"issuer_ca_id": 245439,
|
||||||
|
"issuer_name": "C=DE, O=Deutsche Telekom Security GmbH, CN=Telekom Security ServerID OV Class 2 CA",
|
||||||
|
"common_name": "mx.kundenserver.de",
|
||||||
|
"name_value": "mx00.kundenserver.de",
|
||||||
|
"id": 17921174855,
|
||||||
|
"entry_timestamp": "2025-04-18T11:32:56.685",
|
||||||
|
"not_before": "2024-05-14T10:13:42",
|
||||||
|
"not_after": "2025-05-18T23:59:59",
|
||||||
|
"serial_number": "01f21195d95cb3f63712c59f40b2f75c",
|
||||||
|
"result_count": 1
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"issuer_ca_id": 245439,
|
||||||
|
"issuer_name": "C=DE, O=Deutsche Telekom Security GmbH, CN=Telekom Security ServerID OV Class 2 CA",
|
||||||
|
"common_name": "mx.kundenserver.de",
|
||||||
|
"name_value": "mx00.kundenserver.de",
|
||||||
|
"id": 17755974719,
|
||||||
|
"entry_timestamp": "2025-04-10T06:20:35.546",
|
||||||
|
"not_before": "2025-04-10T06:20:33",
|
||||||
|
"not_after": "2026-04-14T23:59:59",
|
||||||
|
"serial_number": "27efd5b7b17610e4ae86d40dea979ad7",
|
||||||
|
"result_count": 1
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"issuer_ca_id": 245439,
|
||||||
|
"issuer_name": "C=DE, O=Deutsche Telekom Security GmbH, CN=Telekom Security ServerID OV Class 2 CA",
|
||||||
|
"common_name": "mx.kundenserver.de",
|
||||||
|
"name_value": "mx00.kundenserver.de",
|
||||||
|
"id": 13038507917,
|
||||||
|
"entry_timestamp": "2024-05-14T10:13:43.64",
|
||||||
|
"not_before": "2024-05-14T10:13:42",
|
||||||
|
"not_after": "2025-05-18T23:59:59",
|
||||||
|
"serial_number": "01f21195d95cb3f63712c59f40b2f75c",
|
||||||
|
"result_count": 1
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"issuer_ca_id": 245439,
|
||||||
|
"issuer_name": "C=DE, O=Deutsche Telekom Security GmbH, CN=Telekom Security ServerID OV Class 2 CA",
|
||||||
|
"common_name": "mx.kundenserver.de",
|
||||||
|
"name_value": "mx00.kundenserver.de",
|
||||||
|
"id": 9700366741,
|
||||||
|
"entry_timestamp": "2023-06-20T11:08:14.981",
|
||||||
|
"not_before": "2023-06-20T11:08:11",
|
||||||
|
"not_after": "2024-06-24T23:59:59",
|
||||||
|
"serial_number": "153f3cd769500d3eebec07c90476d817",
|
||||||
|
"result_count": 1
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"issuer_ca_id": 6069,
|
||||||
|
"issuer_name": "C=DE, O=T-Systems International GmbH, OU=T-Systems Trust Center, ST=Nordrhein Westfalen, postalCode=57250, L=Netphen, street=Untere Industriestr. 20, CN=TeleSec ServerPass Class 2 CA",
|
||||||
|
"common_name": "mx.kundenserver.de",
|
||||||
|
"name_value": "mx00.kundenserver.de",
|
||||||
|
"id": 7107715703,
|
||||||
|
"entry_timestamp": "2022-07-12T10:00:03.026",
|
||||||
|
"not_before": "2022-07-12T10:00:01",
|
||||||
|
"not_after": "2023-07-16T23:59:59",
|
||||||
|
"serial_number": "210a3739eb290b28d1199f6a9c04d294",
|
||||||
|
"result_count": 1
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"issuer_ca_id": 6069,
|
||||||
|
"issuer_name": "C=DE, O=T-Systems International GmbH, OU=T-Systems Trust Center, ST=Nordrhein Westfalen, postalCode=57250, L=Netphen, street=Untere Industriestr. 20, CN=TeleSec ServerPass Class 2 CA",
|
||||||
|
"common_name": "mx.kundenserver.de",
|
||||||
|
"name_value": "mx00.kundenserver.de",
|
||||||
|
"id": 4981516894,
|
||||||
|
"entry_timestamp": "2021-08-04T08:35:13.1",
|
||||||
|
"not_before": "2021-08-04T08:35:11",
|
||||||
|
"not_after": "2022-08-08T23:59:59",
|
||||||
|
"serial_number": "11ae5449f5d5cc2a5ec198105748f927",
|
||||||
|
"result_count": 1
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"issuer_ca_id": 6069,
|
||||||
|
"issuer_name": "C=DE, O=T-Systems International GmbH, OU=T-Systems Trust Center, ST=Nordrhein Westfalen, postalCode=57250, L=Netphen, street=Untere Industriestr. 20, CN=TeleSec ServerPass Class 2 CA",
|
||||||
|
"common_name": "mx.kundenserver.de",
|
||||||
|
"name_value": "mx00.kundenserver.de",
|
||||||
|
"id": 2864694015,
|
||||||
|
"entry_timestamp": "2020-05-28T07:54:38.37",
|
||||||
|
"not_before": "2020-05-28T07:54:37",
|
||||||
|
"not_after": "2022-06-02T23:59:59",
|
||||||
|
"serial_number": "325b678601aae53e99926c1834988786",
|
||||||
|
"result_count": 1
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"issuer_ca_id": 6069,
|
||||||
|
"issuer_name": "C=DE, O=T-Systems International GmbH, OU=T-Systems Trust Center, ST=Nordrhein Westfalen, postalCode=57250, L=Netphen, street=Untere Industriestr. 20, CN=TeleSec ServerPass Class 2 CA",
|
||||||
|
"common_name": "mx.kundenserver.de",
|
||||||
|
"name_value": "mx00.kundenserver.de",
|
||||||
|
"id": 2857249553,
|
||||||
|
"entry_timestamp": "2020-05-26T09:01:33.944",
|
||||||
|
"not_before": "2020-05-26T09:01:33",
|
||||||
|
"not_after": "2022-05-31T23:59:59",
|
||||||
|
"serial_number": "0ceee698ba17a744881fbb3998c05748",
|
||||||
|
"result_count": 1
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"issuer_ca_id": 6069,
|
||||||
|
"issuer_name": "C=DE, O=T-Systems International GmbH, OU=T-Systems Trust Center, ST=Nordrhein Westfalen, postalCode=57250, L=Netphen, street=Untere Industriestr. 20, CN=TeleSec ServerPass Class 2 CA",
|
||||||
|
"common_name": "mx.kundenserver.de",
|
||||||
|
"name_value": "mx00.kundenserver.de",
|
||||||
|
"id": 2857204010,
|
||||||
|
"entry_timestamp": "2020-05-26T08:46:52.8",
|
||||||
|
"not_before": "2020-05-26T08:46:52",
|
||||||
|
"not_after": "2022-05-31T23:59:59",
|
||||||
|
"serial_number": "0ac520de92fde640943c1d2c0eb2f6e8",
|
||||||
|
"result_count": 1
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"issuer_ca_id": 6069,
|
||||||
|
"issuer_name": "C=DE, O=T-Systems International GmbH, OU=T-Systems Trust Center, ST=Nordrhein Westfalen, postalCode=57250, L=Netphen, street=Untere Industriestr. 20, CN=TeleSec ServerPass Class 2 CA",
|
||||||
|
"common_name": "mx.kundenserver.de",
|
||||||
|
"name_value": "mx00.kundenserver.de",
|
||||||
|
"id": 2856876813,
|
||||||
|
"entry_timestamp": "2020-05-26T06:58:49.881",
|
||||||
|
"not_before": "2020-05-26T06:58:49",
|
||||||
|
"not_after": "2022-05-31T23:59:59",
|
||||||
|
"serial_number": "2f9201af62a3408df1579b8a39c0f7b6",
|
||||||
|
"result_count": 1
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"issuer_ca_id": 6069,
|
||||||
|
"issuer_name": "C=DE, O=T-Systems International GmbH, OU=T-Systems Trust Center, ST=Nordrhein Westfalen, postalCode=57250, L=Netphen, street=Untere Industriestr. 20, CN=TeleSec ServerPass Class 2 CA",
|
||||||
|
"common_name": "mx.kundenserver.de",
|
||||||
|
"name_value": "mx00.kundenserver.de",
|
||||||
|
"id": 1351991065,
|
||||||
|
"entry_timestamp": "2019-04-05T05:26:06.601",
|
||||||
|
"not_before": "2019-02-18T09:14:39",
|
||||||
|
"not_after": "2021-02-23T23:59:59",
|
||||||
|
"serial_number": "2c12501e6e490dd60bfb87d85edad1d1",
|
||||||
|
"result_count": 1
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"issuer_ca_id": 6069,
|
||||||
|
"issuer_name": "C=DE, O=T-Systems International GmbH, OU=T-Systems Trust Center, ST=Nordrhein Westfalen, postalCode=57250, L=Netphen, street=Untere Industriestr. 20, CN=TeleSec ServerPass Class 2 CA",
|
||||||
|
"common_name": "mx.kundenserver.de",
|
||||||
|
"name_value": "mx00.kundenserver.de",
|
||||||
|
"id": 1213296236,
|
||||||
|
"entry_timestamp": "2019-02-18T09:14:39.61",
|
||||||
|
"not_before": "2019-02-18T09:14:39",
|
||||||
|
"not_after": "2021-02-23T23:59:59",
|
||||||
|
"serial_number": "2c12501e6e490dd60bfb87d85edad1d1",
|
||||||
|
"result_count": 1
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"issuer_ca_id": 1375,
|
||||||
|
"issuer_name": "C=DE, O=T-Systems International GmbH, OU=T-Systems Trust Center, ST=NRW, postalCode=57250, L=Netphen, street=Untere Industriestr. 20, CN=TeleSec ServerPass DE-1",
|
||||||
|
"common_name": "mx00.kundenserver.de",
|
||||||
|
"name_value": "mx00.kundenserver.de",
|
||||||
|
"id": 370285812,
|
||||||
|
"entry_timestamp": "2018-03-30T01:09:17.252",
|
||||||
|
"not_before": "2013-08-06T15:49:56",
|
||||||
|
"not_after": "2014-08-11T23:59:59",
|
||||||
|
"serial_number": "00f17c74ae3d6e7a5c",
|
||||||
|
"result_count": 2
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"issuer_ca_id": 1477,
|
||||||
|
"issuer_name": "C=DE, O=T-Systems International GmbH, OU=T-Systems Trust Center, ST=Nordrhein Westfalen, postalCode=57250, L=Netphen, street=Untere Industriestr. 20, CN=TeleSec ServerPass DE-2",
|
||||||
|
"common_name": "mx.kundenserver.de",
|
||||||
|
"name_value": "mx00.kundenserver.de",
|
||||||
|
"id": 307747879,
|
||||||
|
"entry_timestamp": "2018-01-19T09:01:19.72",
|
||||||
|
"not_before": "2017-03-22T10:21:38",
|
||||||
|
"not_after": "2019-03-27T23:59:59",
|
||||||
|
"serial_number": "00bf95dcc292d7bf01",
|
||||||
|
"result_count": 1
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"issuer_ca_id": 1477,
|
||||||
|
"issuer_name": "C=DE, O=T-Systems International GmbH, OU=T-Systems Trust Center, ST=Nordrhein Westfalen, postalCode=57250, L=Netphen, street=Untere Industriestr. 20, CN=TeleSec ServerPass DE-2",
|
||||||
|
"common_name": "mx00.kundenserver.de",
|
||||||
|
"name_value": "mx00.kundenserver.de",
|
||||||
|
"id": 14627870,
|
||||||
|
"entry_timestamp": "2016-03-08T11:54:51.83",
|
||||||
|
"not_before": "2014-07-22T11:15:15",
|
||||||
|
"not_after": "2017-07-27T23:59:59",
|
||||||
|
"serial_number": "20e14d5c7f18e199",
|
||||||
|
"result_count": 2
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
1
cache/crtsh/mx01_kundenserver_de.json
vendored
Normal file
1
cache/crtsh/mx01_kundenserver_de.json
vendored
Normal file
File diff suppressed because one or more lines are too long
2
cache/crtsh/overcuriousity_org.json
vendored
2
cache/crtsh/overcuriousity_org.json
vendored
File diff suppressed because one or more lines are too long
33
cache/crtsh/www_overcuriousity_org.json
vendored
33
cache/crtsh/www_overcuriousity_org.json
vendored
@ -1 +1,32 @@
|
|||||||
{"domain":"www.overcuriousity.org","first_cached":"2025-09-14T21:16:24.041839+00:00","last_upstream_query":"2025-09-15T08:33:07.990411+00:00","upstream_query_count":2,"certificates":[{"issuer_ca_id":295819,"issuer_name":"C=US, O=Let's Encrypt, CN=E6","common_name":"signaling.mikoshi.de","name_value":"www.overcuriousity.org","id":19208272013,"entry_timestamp":"2025-06-23T18:20:29.619","not_before":"2025-06-23T17:21:56","not_after":"2025-09-21T17:21:55","serial_number":"0540be6c8cb99dcaa5492af7b934f40466f9","result_count":1},{"issuer_ca_id":295819,"issuer_name":"C=US, O=Let's Encrypt, CN=E6","common_name":"signaling.mikoshi.de","name_value":"www.overcuriousity.org","id":19208263539,"entry_timestamp":"2025-06-23T18:20:26.82","not_before":"2025-06-23T17:21:56","not_after":"2025-09-21T17:21:55","serial_number":"0540be6c8cb99dcaa5492af7b934f40466f9","result_count":1}]}
|
{
|
||||||
|
"domain": "www.overcuriousity.org",
|
||||||
|
"first_cached": "2025-09-14T21:16:24.041839+00:00",
|
||||||
|
"last_upstream_query": "2025-09-15T19:08:25.160183+00:00",
|
||||||
|
"upstream_query_count": 3,
|
||||||
|
"certificates": [
|
||||||
|
{
|
||||||
|
"issuer_ca_id": 295819,
|
||||||
|
"issuer_name": "C=US, O=Let's Encrypt, CN=E6",
|
||||||
|
"common_name": "signaling.mikoshi.de",
|
||||||
|
"name_value": "www.overcuriousity.org",
|
||||||
|
"id": 19208272013,
|
||||||
|
"entry_timestamp": "2025-06-23T18:20:29.619",
|
||||||
|
"not_before": "2025-06-23T17:21:56",
|
||||||
|
"not_after": "2025-09-21T17:21:55",
|
||||||
|
"serial_number": "0540be6c8cb99dcaa5492af7b934f40466f9",
|
||||||
|
"result_count": 1
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"issuer_ca_id": 295819,
|
||||||
|
"issuer_name": "C=US, O=Let's Encrypt, CN=E6",
|
||||||
|
"common_name": "signaling.mikoshi.de",
|
||||||
|
"name_value": "www.overcuriousity.org",
|
||||||
|
"id": 19208263539,
|
||||||
|
"entry_timestamp": "2025-06-23T18:20:26.82",
|
||||||
|
"not_before": "2025-06-23T17:21:56",
|
||||||
|
"not_after": "2025-09-21T17:21:55",
|
||||||
|
"serial_number": "0540be6c8cb99dcaa5492af7b934f40466f9",
|
||||||
|
"result_count": 1
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
@ -561,6 +561,16 @@ input[type="text"]:focus, select:focus {
|
|||||||
color: #00ff41;
|
color: #00ff41;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
.graph-context-menu ul li[disabled] {
|
||||||
|
color: #666;
|
||||||
|
cursor: not-allowed;
|
||||||
|
}
|
||||||
|
|
||||||
|
.graph-context-menu ul li[disabled]:hover {
|
||||||
|
background-color: #2a2a2a;
|
||||||
|
color: #666;
|
||||||
|
}
|
||||||
|
|
||||||
.graph-placeholder {
|
.graph-placeholder {
|
||||||
display: flex;
|
display: flex;
|
||||||
align-items: center;
|
align-items: center;
|
||||||
|
@ -68,6 +68,7 @@ class GraphManager {
|
|||||||
this.trueRootIds = new Set();
|
this.trueRootIds = new Set();
|
||||||
// Track large entity members for proper hiding
|
// Track large entity members for proper hiding
|
||||||
this.largeEntityMembers = new Set();
|
this.largeEntityMembers = new Set();
|
||||||
|
this.isScanning = false;
|
||||||
|
|
||||||
this.options = {
|
this.options = {
|
||||||
nodes: {
|
nodes: {
|
||||||
@ -1002,8 +1003,7 @@ class GraphManager {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/* * @param {Set} excludedNodeIds - Node IDs to exclude from analysis (for simulation)
|
||||||
* @param {Set} excludedNodeIds - Node IDs to exclude from analysis (for simulation)
|
|
||||||
* @param {Set} excludedEdgeTypes - Edge types to exclude from traversal
|
* @param {Set} excludedEdgeTypes - Edge types to exclude from traversal
|
||||||
* @param {Set} excludedNodeTypes - Node types to exclude from traversal
|
* @param {Set} excludedNodeTypes - Node types to exclude from traversal
|
||||||
* @returns {Object} Analysis results with reachable/unreachable nodes
|
* @returns {Object} Analysis results with reachable/unreachable nodes
|
||||||
@ -1400,14 +1400,30 @@ class GraphManager {
|
|||||||
*/
|
*/
|
||||||
showContextMenu(nodeId, event) {
|
showContextMenu(nodeId, event) {
|
||||||
console.log('Showing context menu for node:', nodeId);
|
console.log('Showing context menu for node:', nodeId);
|
||||||
|
const node = this.nodes.get(nodeId);
|
||||||
|
|
||||||
// Create menu items
|
// Create menu items
|
||||||
this.contextMenu.innerHTML = `
|
let menuItems = `
|
||||||
<ul>
|
<ul>
|
||||||
<li data-action="focus" data-node-id="${nodeId}">
|
<li data-action="focus" data-node-id="${nodeId}">
|
||||||
<span class="menu-icon">🎯</span>
|
<span class="menu-icon">🎯</span>
|
||||||
<span>Focus on Node</span>
|
<span>Focus on Node</span>
|
||||||
</li>
|
</li>
|
||||||
|
`;
|
||||||
|
|
||||||
|
// Add "Iterate Scan" option only for domain or IP nodes
|
||||||
|
if (node && (node.type === 'domain' || node.type === 'ip')) {
|
||||||
|
const disabled = this.isScanning ? 'disabled' : ''; // Check if scanning
|
||||||
|
const title = this.isScanning ? 'A scan is already in progress' : 'Iterate Scan (Add to Graph)'; // Add a title for disabled state
|
||||||
|
menuItems += `
|
||||||
|
<li data-action="iterate" data-node-id="${nodeId}" ${disabled} title="${title}">
|
||||||
|
<span class="menu-icon">➕</span>
|
||||||
|
<span>Iterate Scan (Add to Graph)</span>
|
||||||
|
</li>
|
||||||
|
`;
|
||||||
|
}
|
||||||
|
|
||||||
|
menuItems += `
|
||||||
<li data-action="hide" data-node-id="${nodeId}">
|
<li data-action="hide" data-node-id="${nodeId}">
|
||||||
<span class="menu-icon">👁️🗨️</span>
|
<span class="menu-icon">👁️🗨️</span>
|
||||||
<span>Hide Node</span>
|
<span>Hide Node</span>
|
||||||
@ -1423,6 +1439,8 @@ class GraphManager {
|
|||||||
</ul>
|
</ul>
|
||||||
`;
|
`;
|
||||||
|
|
||||||
|
this.contextMenu.innerHTML = menuItems;
|
||||||
|
|
||||||
// Position the menu
|
// Position the menu
|
||||||
this.contextMenu.style.left = `${event.clientX}px`;
|
this.contextMenu.style.left = `${event.clientX}px`;
|
||||||
this.contextMenu.style.top = `${event.clientY}px`;
|
this.contextMenu.style.top = `${event.clientY}px`;
|
||||||
@ -1440,6 +1458,10 @@ class GraphManager {
|
|||||||
// Add event listeners to menu items
|
// Add event listeners to menu items
|
||||||
this.contextMenu.querySelectorAll('li').forEach(item => {
|
this.contextMenu.querySelectorAll('li').forEach(item => {
|
||||||
item.addEventListener('click', (e) => {
|
item.addEventListener('click', (e) => {
|
||||||
|
if (e.currentTarget.hasAttribute('disabled')) { // Prevent action if disabled
|
||||||
|
e.stopPropagation();
|
||||||
|
return;
|
||||||
|
}
|
||||||
e.stopPropagation();
|
e.stopPropagation();
|
||||||
const action = e.currentTarget.dataset.action;
|
const action = e.currentTarget.dataset.action;
|
||||||
const nodeId = e.currentTarget.dataset.nodeId;
|
const nodeId = e.currentTarget.dataset.nodeId;
|
||||||
@ -1471,6 +1493,13 @@ class GraphManager {
|
|||||||
this.focusOnNode(nodeId);
|
this.focusOnNode(nodeId);
|
||||||
break;
|
break;
|
||||||
|
|
||||||
|
case 'iterate':
|
||||||
|
const event = new CustomEvent('iterateScan', {
|
||||||
|
detail: { nodeId }
|
||||||
|
});
|
||||||
|
document.dispatchEvent(event);
|
||||||
|
break;
|
||||||
|
|
||||||
case 'hide':
|
case 'hide':
|
||||||
// Use enhanced method with reachability analysis
|
// Use enhanced method with reachability analysis
|
||||||
this.hideNodeWithReachabilityAnalysis(nodeId);
|
this.hideNodeWithReachabilityAnalysis(nodeId);
|
||||||
|
@ -193,6 +193,18 @@ class DNSReconApp {
|
|||||||
document.addEventListener('nodeSelected', (e) => {
|
document.addEventListener('nodeSelected', (e) => {
|
||||||
this.showNodeModal(e.detail.node);
|
this.showNodeModal(e.detail.node);
|
||||||
});
|
});
|
||||||
|
|
||||||
|
// Listen for the new iterateScan event from the graph context menu
|
||||||
|
document.addEventListener('iterateScan', (e) => {
|
||||||
|
if (this.isScanning) {
|
||||||
|
this.showWarning('A scan is already in progress.');
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
const { nodeId } = e.detail;
|
||||||
|
console.log(`Received iterateScan event for node: ${nodeId}`);
|
||||||
|
this.elements.targetInput.value = nodeId;
|
||||||
|
this.startScan(false); // Start scan in "add to graph" mode
|
||||||
|
});
|
||||||
|
|
||||||
// Keyboard shortcuts
|
// Keyboard shortcuts
|
||||||
document.addEventListener('keydown', (e) => {
|
document.addEventListener('keydown', (e) => {
|
||||||
@ -671,6 +683,9 @@ class DNSReconApp {
|
|||||||
switch (state) {
|
switch (state) {
|
||||||
case 'scanning':
|
case 'scanning':
|
||||||
this.isScanning = true;
|
this.isScanning = true;
|
||||||
|
if (this.graphManager) {
|
||||||
|
this.graphManager.isScanning = true;
|
||||||
|
}
|
||||||
if (this.elements.startScan) {
|
if (this.elements.startScan) {
|
||||||
this.elements.startScan.disabled = true;
|
this.elements.startScan.disabled = true;
|
||||||
this.elements.startScan.classList.add('loading');
|
this.elements.startScan.classList.add('loading');
|
||||||
@ -695,6 +710,9 @@ class DNSReconApp {
|
|||||||
case 'failed':
|
case 'failed':
|
||||||
case 'stopped':
|
case 'stopped':
|
||||||
this.isScanning = false;
|
this.isScanning = false;
|
||||||
|
if (this.graphManager) {
|
||||||
|
this.graphManager.isScanning = false;
|
||||||
|
}
|
||||||
if (this.elements.startScan) {
|
if (this.elements.startScan) {
|
||||||
this.elements.startScan.disabled = !isQueueEmpty;
|
this.elements.startScan.disabled = !isQueueEmpty;
|
||||||
this.elements.startScan.classList.remove('loading');
|
this.elements.startScan.classList.remove('loading');
|
||||||
|
Loading…
x
Reference in New Issue
Block a user