lanscape 1.3.5a1__py3-none-any.whl → 1.3.6a1__py3-none-any.whl

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.

Potentially problematic release.


This version of lanscape might be problematic. Click here for more details.

Files changed (36) hide show
  1. lanscape/__init__.py +9 -1
  2. lanscape/libraries/app_scope.py +0 -1
  3. lanscape/libraries/decorators.py +26 -9
  4. lanscape/libraries/device_alive.py +227 -0
  5. lanscape/libraries/errors.py +10 -0
  6. lanscape/libraries/ip_parser.py +73 -1
  7. lanscape/libraries/logger.py +29 -1
  8. lanscape/libraries/mac_lookup.py +5 -0
  9. lanscape/libraries/net_tools.py +156 -188
  10. lanscape/libraries/port_manager.py +83 -0
  11. lanscape/libraries/scan_config.py +173 -19
  12. lanscape/libraries/service_scan.py +3 -3
  13. lanscape/libraries/subnet_scan.py +111 -26
  14. lanscape/libraries/version_manager.py +50 -7
  15. lanscape/libraries/web_browser.py +75 -58
  16. lanscape/resources/mac_addresses/convert_csv.py +13 -2
  17. lanscape/resources/ports/convert_csv.py +13 -3
  18. lanscape/ui/app.py +24 -6
  19. lanscape/ui/blueprints/__init__.py +4 -1
  20. lanscape/ui/blueprints/api/__init__.py +2 -0
  21. lanscape/ui/blueprints/api/port.py +46 -0
  22. lanscape/ui/blueprints/api/scan.py +57 -5
  23. lanscape/ui/blueprints/api/tools.py +1 -0
  24. lanscape/ui/blueprints/web/__init__.py +4 -0
  25. lanscape/ui/blueprints/web/routes.py +52 -2
  26. lanscape/ui/main.py +1 -10
  27. lanscape/ui/shutdown_handler.py +5 -1
  28. lanscape/ui/static/css/style.css +35 -24
  29. lanscape/ui/static/js/scan-config.js +76 -2
  30. lanscape/ui/templates/main.html +0 -7
  31. lanscape/ui/templates/scan/config.html +71 -10
  32. {lanscape-1.3.5a1.dist-info → lanscape-1.3.6a1.dist-info}/METADATA +1 -1
  33. {lanscape-1.3.5a1.dist-info → lanscape-1.3.6a1.dist-info}/RECORD +36 -35
  34. {lanscape-1.3.5a1.dist-info → lanscape-1.3.6a1.dist-info}/WHEEL +0 -0
  35. {lanscape-1.3.5a1.dist-info → lanscape-1.3.6a1.dist-info}/licenses/LICENSE +0 -0
  36. {lanscape-1.3.5a1.dist-info → lanscape-1.3.6a1.dist-info}/top_level.txt +0 -0
@@ -159,24 +159,21 @@ details {
159
159
  margin-bottom: 0;
160
160
  }
161
161
  #scan-form input {
162
+ margin: 0 -1px; /* sneak borders around buttons */
162
163
  z-index: 2;
163
164
  transition: all .2s ease-in-out;
164
165
  border-radius: 5px !important; /* override bootstrap stuff */
165
- padding-right: 34px;
166
- margin-right: -34px;
167
- margin-left: -41px;
168
- padding-left: calc(41px + 5px);
166
+ padding-left: calc(30px + 5px);
169
167
  }
170
168
 
171
169
 
170
+
172
171
  #scan-form .input-group button {
173
172
  background-color: var(--primary-bg-accent);
174
173
  border: 0;
175
-
176
174
  transition: all .2s ease-in-out;
177
175
  height: 40px;
178
176
  margin-top: 1px;
179
- transform: translateX(.5px);
180
177
  z-index: 3;
181
178
  margin-left: 0;
182
179
  }
@@ -187,13 +184,19 @@ details {
187
184
  background-color: var(--primary-accent);
188
185
  }
189
186
  #scan-form .input-group button.start {
187
+ position: absolute;
188
+ left: 0;
190
189
  border-radius: 5px 0 0 5px;
190
+ padding: 0;
191
191
  border-right: 1px var(--border-color) solid;
192
- width: 40px; /* added because it looks gross on icon load */
192
+ width: 30px; /* added because it looks gross on icon load */
193
193
  }
194
194
  #scan-form .input-group button.end {
195
195
  border-radius: 0 5px 5px 0;
196
196
  border-left: 1px var(--border-color) solid;
197
+ position: absolute;
198
+ width: 30px;
199
+ right: 0;
197
200
  }
198
201
 
199
202
  .label-container {
@@ -333,6 +336,31 @@ details {
333
336
  padding: 5px;
334
337
  }
335
338
 
339
+ #advanced-modal #lookup-type-group {
340
+ gap: 12px;
341
+ }
342
+
343
+ #advanced-modal .modal-body {
344
+ height: calc(100vh - 200px);
345
+ overflow-y: scroll;
346
+ }
347
+
348
+ #advanced-modal #lookup-type-group .form-check {
349
+ margin-right: 8px;
350
+ margin-bottom: 6px;
351
+ }
352
+
353
+ #advanced-modal .arp-help-ico {
354
+ font-size: 1em;
355
+ vertical-align: middle;
356
+ margin-left: 3px;
357
+ color: var(--text-color);
358
+ cursor: pointer;
359
+ opacity: 1;
360
+ }
361
+ #advanced-modal .arp-help-ico:hover {
362
+ color: var(--text-accent-color);
363
+ }
336
364
 
337
365
  /* Card Styles */
338
366
  .card {
@@ -758,19 +786,6 @@ html {
758
786
  background-color: var(--warning-accent);
759
787
  }
760
788
 
761
- #arp-error {
762
- width: calc(100% + 40px);
763
- position: relative;
764
- display: flex;
765
- justify-content: center;
766
- background-color: var(--danger-accent-transparent);
767
- color: var(--text-color);
768
- transform: translate3d(-20px, -20px, 0);
769
- font-size: small;
770
- }
771
- #arp-error span {
772
- text-align: center;
773
- }
774
789
 
775
790
  @media screen and (max-width: 681px) {
776
791
  #power-button {
@@ -783,10 +798,6 @@ html {
783
798
  width:98%;
784
799
  padding: 8px;
785
800
  }
786
- #arp-error {
787
- width: calc(100% + 16px);
788
- transform: translate3d(-8px, -8px, 0);
789
- }
790
801
  }
791
802
 
792
803
  @media screen and (max-width: 885px) {
@@ -13,6 +13,9 @@ $(document).ready(function() {
13
13
 
14
14
  $('#t_cnt_port_scan, #t_cnt_port_test').on('input', updatePortTotals);
15
15
  $('#ping_attempts, #ping_ping_count').on('input', updatePingTotals);
16
+
17
+ // Lookup type toggles
18
+ $('.lookup-type-input').on('change', onLookupTypeChanged);
16
19
  });
17
20
 
18
21
  function getScanDefaults(callback=null) {
@@ -39,7 +42,9 @@ function setScanConfig(configName) {
39
42
  $('#t_cnt_isalive').val(config.t_cnt_isalive);
40
43
  $('#task_scan_ports').prop('checked', config.task_scan_ports);
41
44
  $('#task_scan_port_services').prop('checked', config.task_scan_port_services);
42
- $('#lookup_type').val(config.lookup_type);
45
+
46
+ // lookup type (array of enum values as strings)
47
+ setLookupTypeUI(config.lookup_type || []);
43
48
 
44
49
  // ping config
45
50
  $('#ping_attempts').val(config.ping_config.attempts);
@@ -51,8 +56,21 @@ function setScanConfig(configName) {
51
56
  $('#arp_attempts').val(config.arp_config.attempts);
52
57
  $('#arp_timeout').val(config.arp_config.timeout);
53
58
 
59
+ // arp cache config
60
+ if (config.arp_cache_config) {
61
+ $('#arp_cache_attempts').val(config.arp_cache_config.attempts);
62
+ $('#arp_cache_wait_before').val(config.arp_cache_config.wait_before);
63
+ }
64
+
65
+ // poke config
66
+ if (config.poke_config) {
67
+ $('#poke_attempts').val(config.poke_config.attempts);
68
+ $('#poke_timeout').val(config.poke_config.timeout);
69
+ }
70
+
54
71
  updatePortTotals();
55
72
  updatePingTotals();
73
+ updateVisibility();
56
74
  }
57
75
 
58
76
  function getScanConfig() {
@@ -63,7 +81,7 @@ function getScanConfig() {
63
81
  t_cnt_isalive: parseInt($('#t_cnt_isalive').val()),
64
82
  task_scan_ports: $('#task_scan_ports').is(':checked'),
65
83
  task_scan_port_services: $('#task_scan_port_services').is(':checked'),
66
- lookup_type: $('#lookup_type').val(),
84
+ lookup_type: getSelectedLookupTypes(),
67
85
  ping_config: {
68
86
  attempts: parseInt($('#ping_attempts').val()),
69
87
  ping_count: parseInt($('#ping_ping_count').val()),
@@ -73,6 +91,14 @@ function getScanConfig() {
73
91
  arp_config: {
74
92
  attempts: parseInt($('#arp_attempts').val()),
75
93
  timeout: parseFloat($('#arp_timeout').val())
94
+ },
95
+ arp_cache_config: {
96
+ attempts: parseInt($('#arp_cache_attempts').val()),
97
+ wait_before: parseFloat($('#arp_cache_wait_before').val())
98
+ },
99
+ poke_config: {
100
+ attempts: parseInt($('#poke_attempts').val()),
101
+ timeout: parseFloat($('#poke_timeout').val())
76
102
  }
77
103
  };
78
104
  }
@@ -102,6 +128,54 @@ function updatePingTotals() {
102
128
  $('#total-ping-attempts').val(attempts * count);
103
129
  }
104
130
 
131
+ // Lookup type helpers
132
+ function setLookupTypeUI(values) {
133
+ const set = new Set(values || []);
134
+ $('.lookup-type-input').each(function() {
135
+ const val = $(this).val();
136
+ $(this).prop('checked', set.has(val));
137
+ });
138
+ updateVisibility();
139
+ }
140
+
141
+ function getSelectedLookupTypes() {
142
+ const selected = [];
143
+ $('.lookup-type-input:checked').each(function() {
144
+ selected.push($(this).val());
145
+ });
146
+ return selected;
147
+ }
148
+
149
+ function onLookupTypeChanged() {
150
+ updateVisibility();
151
+ }
152
+
153
+ function updateVisibility() {
154
+ const types = new Set(getSelectedLookupTypes());
155
+
156
+ // Show ping if ICMP is used directly or as part of ICMP_THEN_ARP
157
+ const showPing = types.has('ICMP') || types.has('ICMP_THEN_ARP');
158
+ toggleSection('#section-ping', showPing);
159
+
160
+ // ARP active lookup (scapy) only when ARP_LOOKUP is selected
161
+ const showArp = types.has('ARP_LOOKUP');
162
+ toggleSection('#section-arp', showArp);
163
+
164
+ // ARP cache is used when we do a staged lookup that relies on cache
165
+ const showArpCache = types.has('ICMP_THEN_ARP') || types.has('POKE_THEN_ARP');
166
+ toggleSection('#section-arp-cache', showArpCache);
167
+
168
+ // Poke section only when POKE_THEN_ARP is selected
169
+ const showPoke = types.has('POKE_THEN_ARP');
170
+ toggleSection('#section-poke', showPoke);
171
+ }
172
+
173
+ function toggleSection(selector, show) {
174
+ const $el = $(selector);
175
+ if (show) $el.removeClass('div-hide');
176
+ else $el.addClass('div-hide');
177
+ }
178
+
105
179
  // expose functions globally
106
180
  window.setScanConfig = setScanConfig;
107
181
  window.getScanConfig = getScanConfig;
@@ -53,13 +53,6 @@
53
53
 
54
54
  <div id="content">
55
55
  <div class="container-fluid my-4">
56
- <!-- ARP Error -->
57
- <div id="arp-error" class="{{ 'div-hide' if is_arp_supported else '' }}">
58
- <span>
59
- Unable to use ARP lookup. Device discovery is degraded.
60
- <a target="_blank" href="https://github.com/mdennis281/LANscape/blob/main/support/arp-issues.md">Steps to fix</a>
61
- </span>
62
- </div>
63
56
  <!-- Scan Results -->
64
57
  <div id="scan-results" class="div-hide">
65
58
  <div class="d-flex justify-content-between">
@@ -32,14 +32,46 @@
32
32
  <h6>Device Detection</h6>
33
33
  <div class="row mt-2">
34
34
  <div class="col">
35
- <label for="lookup_type">Lookup Type</label>
36
- <div class="port-list-wrapper">
37
- <select id="lookup_type" class="port-list">
38
- <option value="both">ARP + Ping</option>
39
- <option value="arp">ARP Only</option>
40
- <option value="ping">Ping Only</option>
41
- </select>
35
+ <label class="mb-1">Lookup Type</label>
36
+ <div id="lookup-type-group" class="d-flex flex-wrap gap-3">
37
+ <div class="form-check">
38
+ <input class="form-check-input lookup-type-input" type="checkbox" id="lookup_icmp" value="ICMP">
39
+ <label class="form-check-label" for="lookup_icmp">ICMP</label>
40
+ </div>
41
+ <div class="form-check">
42
+ <!-- ARP lookup does not always work. Depends on host system -->
43
+ <input
44
+ class="form-check-input lookup-type-input"
45
+ type="checkbox"
46
+ id="lookup_arp_lookup"
47
+ value="ARP_LOOKUP"
48
+ {{ '' if is_arp_supported else 'disabled' }}
49
+ />
50
+ <label class="form-check-label" for="lookup_arp_lookup">
51
+ ARP Lookup
52
+ </label>
53
+ {% if not is_arp_supported %}
54
+ <span
55
+ class="material-symbols-outlined arp-help-ico"
56
+ data-bs-toggle="tooltip"
57
+ data-bs-placement="top"
58
+ title="ARP lookup is not supported on this system, click for more info"
59
+ onclick="window.open('https://github.com/mdennis281/LANscape/blob/main/support/arp-issues.md', '_blank')"
60
+ >
61
+ help
62
+ </span>
63
+ {% endif %}
64
+ </div>
65
+ <div class="form-check">
66
+ <input class="form-check-input lookup-type-input" type="checkbox" id="lookup_icmp_then_arp" value="ICMP_THEN_ARP">
67
+ <label class="form-check-label" for="lookup_icmp_then_arp">ICMP then ARP Cache</label>
68
+ </div>
69
+ <div class="form-check">
70
+ <input class="form-check-input lookup-type-input" type="checkbox" id="lookup_poke_then_arp" value="POKE_THEN_ARP">
71
+ <label class="form-check-label" for="lookup_poke_then_arp">Poke then ARP Cache</label>
72
+ </div>
42
73
  </div>
74
+
43
75
  </div>
44
76
  <div class="col">
45
77
  <label for="t_cnt_isalive">Device Lookup Threads</label>
@@ -49,7 +81,7 @@
49
81
  </div>
50
82
 
51
83
  <hr>
52
- <div class="form-group mt-2">
84
+ <div id="section-ping" class="form-group mt-2">
53
85
  <h6>Device Detection <span class=text-color>/</span> Ping Settings</h6>
54
86
  <div class="row">
55
87
  <div class="col-3">
@@ -80,8 +112,7 @@
80
112
  </div>
81
113
 
82
114
  <hr>
83
-
84
- <div class="form-group mt-2">
115
+ <div id="section-arp" class="form-group mt-2">
85
116
  <h6>Device Detection <span class=text-color>/</span> ARP Settings</h6>
86
117
  <div class="row">
87
118
  <div class="col">
@@ -95,6 +126,36 @@
95
126
  </div>
96
127
  </div>
97
128
 
129
+ <hr>
130
+ <div id="section-arp-cache" class="form-group mt-2 div-hide">
131
+ <h6>Device Detection <span class=text-color>/</span> ARP Cache Settings</h6>
132
+ <div class="row">
133
+ <div class="col">
134
+ <label for="arp_cache_attempts" class="form-label">Attempts</label>
135
+ <input type="number" id="arp_cache_attempts" class="form-control">
136
+ </div>
137
+ <div class="col">
138
+ <label for="arp_cache_wait_before" class="form-label">Wait Before (sec)</label>
139
+ <input type="number" step="0.1" id="arp_cache_wait_before" class="form-control">
140
+ </div>
141
+ </div>
142
+ </div>
143
+
144
+ <hr>
145
+ <div id="section-poke" class="form-group mt-2 div-hide">
146
+ <h6>Device Detection <span class=text-color>/</span> Poke Settings</h6>
147
+ <div class="row">
148
+ <div class="col">
149
+ <label for="poke_attempts" class="form-label">Attempts</label>
150
+ <input type="number" id="poke_attempts" class="form-control">
151
+ </div>
152
+ <div class="col">
153
+ <label for="poke_timeout" class="form-label">Timeout (sec)</label>
154
+ <input type="number" step="0.1" id="poke_timeout" class="form-control">
155
+ </div>
156
+ </div>
157
+ </div>
158
+
98
159
  <hr>
99
160
 
100
161
  <div class="form-group mt-2">
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: lanscape
3
- Version: 1.3.5a1
3
+ Version: 1.3.6a1
4
4
  Summary: A python based local network scanner
5
5
  Author-email: Michael Dennis <michael@dipduo.com>
6
6
  License-Expression: MIT
@@ -1,41 +1,42 @@
1
- lanscape/__init__.py,sha256=tjBtwEQhJA4njI8gsKddyuWcLBXaPwtpSPM0Wd6qrLg,227
1
+ lanscape/__init__.py,sha256=YVrshFIK9GR9JrtpvJSg3BmsYcffuAdXJVxCoRCGmTE,355
2
2
  lanscape/__main__.py,sha256=PuY42yuCLAwHrOREJ6u2DgVyGX5hZKRQeoE9pajkNfM,170
3
3
  lanscape/libraries/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
4
- lanscape/libraries/app_scope.py,sha256=VvZPtIGWmtDFahliL1rOVYAIvFXoykyh-ZEUqylPjhc,2553
5
- lanscape/libraries/decorators.py,sha256=P4GyH25bqs5HIr6OncdrptQpb2l0Yx8Ogfau_gD1mII,5064
6
- lanscape/libraries/errors.py,sha256=EzJA5_rh9xzu5HEfwyxIyHZBEBFkekx2dwwOjprfw-g,940
7
- lanscape/libraries/ip_parser.py,sha256=sPTm1UQtCixtM8dq45ThGgCjiZQQcueI7OwkHLKYBIU,2151
8
- lanscape/libraries/logger.py,sha256=axADqgQhoDmdCOV3l4zTd9F6XaTgJf_XDg8I4jHGRoo,1436
9
- lanscape/libraries/mac_lookup.py,sha256=VSZbsJ0UzwKptYLpGLi8MHUyFEaQntkayshnQuZKtSs,3390
10
- lanscape/libraries/net_tools.py,sha256=lUHHwybha4AExr5cjmagJK0zy5UdYVF2nZdnLybw8Y0,18030
11
- lanscape/libraries/port_manager.py,sha256=9nYGJmR1wliWx2ZuXJ4y_79up-dS8F2kKHJKf-rL758,2025
4
+ lanscape/libraries/app_scope.py,sha256=EqYQRQcbjOPPcIOhFkIepcz2cKHmoUHxWj2JSoRJmzk,2542
5
+ lanscape/libraries/decorators.py,sha256=SoNqfEInPyL-rrUKY6njK5d6Mwqu7Ix6He-BZRu2VKQ,5394
6
+ lanscape/libraries/device_alive.py,sha256=4K-wGQr4dv-aPqMmzACYyF82uiIAfsqLTgdf8gj4Mik,6723
7
+ lanscape/libraries/errors.py,sha256=QTf42UzR9Zxj1t1mdwfLvZIp0c9a5EItELOdCR7kTmE,1322
8
+ lanscape/libraries/ip_parser.py,sha256=RgIEvHw_oQEcjUYOrvcpbfm4KThtH8L68WyhSOJNOfE,4201
9
+ lanscape/libraries/logger.py,sha256=nzo6J8UdlMdhRkOJEDOIHKztoE3Du8PQZad7ixvNgeM,2534
10
+ lanscape/libraries/mac_lookup.py,sha256=PxBSMe3wEVDtivCsh5NclSAguZz9rqdAS7QshBiuWvM,3519
11
+ lanscape/libraries/net_tools.py,sha256=nIvOV_qYXmWIBYEd5PqWH1Mkadg3I1T0vbcHPkzlw6I,15853
12
+ lanscape/libraries/port_manager.py,sha256=3_ROOb6JEiB0NByZVtADuGcldFkgZwn1RKtvwgs9AIk,4479
12
13
  lanscape/libraries/runtime_args.py,sha256=2vIqRrcWr-NHRSBlZGrxh1PdkPY0ytkPguu8KZqy2L8,2543
13
- lanscape/libraries/scan_config.py,sha256=fHsf5wX-aRDvLXIhqt1kAnfB-WB7w5VApGhlKrkE1eE,3785
14
- lanscape/libraries/service_scan.py,sha256=1pBf0A5HqzpcsR5vs2ifS6Opk35GKocNpgs-dJ4nXuA,1870
15
- lanscape/libraries/subnet_scan.py,sha256=H2vlycSfyrLgRdcLgs83MCtyXO_V2OShQnd3DR-E68g,11737
16
- lanscape/libraries/version_manager.py,sha256=yh-VtxwBzK_-dOMv-MpN6gKU8k9TkLkmIpSyqWYuj_M,1700
17
- lanscape/libraries/web_browser.py,sha256=ATJ1bqVtwg9-xHzqcJbbwU1Y7DBoncUaV7NOMmS2kFg,6386
18
- lanscape/resources/mac_addresses/convert_csv.py,sha256=QqeTjgH8KIyokSMoRJmKOHmz5xEHnEGdnEYJ9Fzl7h8,710
14
+ lanscape/libraries/scan_config.py,sha256=KkY5tzuEbTbUeQrMgbn95IArgYBerFRuu-JIPsQd7AA,8310
15
+ lanscape/libraries/service_scan.py,sha256=ZF4LL2gSI0T5oYEMjc8pCVtJkV1KIk4xP-AeEAkSdLc,1944
16
+ lanscape/libraries/subnet_scan.py,sha256=lL2LzuxoTgPyvsdkPPEcZDqQPbCAGMHAjoX2slKGUKc,14136
17
+ lanscape/libraries/version_manager.py,sha256=fIAv6bVHb_VCOrqT8Do53trxwEgR2mnZV82v3YGxJ14,2944
18
+ lanscape/libraries/web_browser.py,sha256=23MuGIrBYdGhw6ejj6OWxwReeKIlWhtWukc1dKV_3_0,6736
19
+ lanscape/resources/mac_addresses/convert_csv.py,sha256=hvlyLs0XmuuhBuvXBNRGP1cKJzYVRSf8VfUJ1VqROms,1189
19
20
  lanscape/resources/mac_addresses/mac_db.json,sha256=Lng2yJerwO7vjefzxzgtE203hry1lIsCadHL1A5Rptg,2136137
20
- lanscape/resources/ports/convert_csv.py,sha256=Z1TzYcvycSWCE1jU48dFmmFzxD1kJ2-H_8OCqr6ZYes,709
21
+ lanscape/resources/ports/convert_csv.py,sha256=MMLDa-5pGMsn4A2_k45jHsRYffrRY_0Z2D1ziiikeQA,1143
21
22
  lanscape/resources/ports/full.json,sha256=O8XBW52QvEVSGMQDbXe4-c4qq6XAecw6KJW4m2HkTLo,1441444
22
23
  lanscape/resources/ports/large.json,sha256=CzlCcIGCBW1QAgjz4NDerCYA8HcYf6lNxehh7F928y0,138410
23
24
  lanscape/resources/ports/medium.json,sha256=T5Rc7wa47MtroHxuZrHSftOqRWbQzhZULJdE1vpsTvU,3518
24
25
  lanscape/resources/ports/small.json,sha256=F_lo_5xHwHBfOVfVgxP7ejblR3R62SNtC1Mm33brhYc,376
25
26
  lanscape/resources/services/definitions.jsonc,sha256=4k7XnqIpWr1xuF7EUMgZf7y6aVDxOL_if7GGsT-JEuY,8387
26
27
  lanscape/ui/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
27
- lanscape/ui/app.py,sha256=2FZHQWSkcQzHfQD1Z323oRHx42gAayJwXlSZAOw7_Xs,3197
28
- lanscape/ui/main.py,sha256=_3lK3OEF62de4HNpdanxgESQZ6JdQF2n2UPNvRgNdAg,4482
29
- lanscape/ui/shutdown_handler.py,sha256=cQyGVr_AY60zEbTk9EbEr5xGbpdpY_LUou2aIn8f7Uc,1603
30
- lanscape/ui/blueprints/__init__.py,sha256=iSffZhWqNd5gxz9HC5dH_Vs3jXnZWmLQXnV7KSdQ-gg,207
31
- lanscape/ui/blueprints/api/__init__.py,sha256=QMYG0IybloD3yrQtznf2iffgBhbwqPmhaez17T9SfSw,65
32
- lanscape/ui/blueprints/api/port.py,sha256=Ccym3K3ZfguviEWOH9tcBtKt-May31hOiWOrjC28W-E,1028
33
- lanscape/ui/blueprints/api/scan.py,sha256=ZwBsSuxZq_6tMdVMpETVHUSBC2DloJvQp48xm7Qq6hk,2119
34
- lanscape/ui/blueprints/api/tools.py,sha256=9yDVPrHP8D8AxSvTSNuozdPkY5ZsJHpZqURug2VdR4c,1633
35
- lanscape/ui/blueprints/web/__init__.py,sha256=txshnITQLj-tGZW7Yp-cmg76PtSSQp_UF8VuZuwoMBw,65
36
- lanscape/ui/blueprints/web/routes.py,sha256=6fg1cCtYAD1PBZU_XRlzO6yIG70u-hShJLVMhZY9Dvg,2285
28
+ lanscape/ui/app.py,sha256=bL3K3NkGV1RY67kGHEQIWUl-Jm_MVN4WsIlsRQuK-SU,3760
29
+ lanscape/ui/main.py,sha256=8Be2UL_ezWLpaEYYejjd8iyM2_hG1pXlkHdVjn-lySc,4196
30
+ lanscape/ui/shutdown_handler.py,sha256=eJC9A0MDMgLv_KQnJlUy3Kz2xCGDAf5opVdd8nBtABE,1710
31
+ lanscape/ui/blueprints/__init__.py,sha256=WLnPfPE06684wArgKDDLfsW-1hKFlLe75AR7uLAPlKc,270
32
+ lanscape/ui/blueprints/api/__init__.py,sha256=5Z4Y7B36O-bNFenpomfuNhPuJ9dW_MC0TPUU3pCFVfA,103
33
+ lanscape/ui/blueprints/api/port.py,sha256=8FuNcjF56wmgjoCZeaYrIakTGdshAmDjUmkjXHbaZ8I,1981
34
+ lanscape/ui/blueprints/api/scan.py,sha256=lbwV5AciMGP-S2J_EaXcPOHeHywImzQ_bm2ZSJg-H5U,3331
35
+ lanscape/ui/blueprints/api/tools.py,sha256=Dm5eAlWajr670H3O6note5hS_BZ888IGp2Rsdu2kXmY,1670
36
+ lanscape/ui/blueprints/web/__init__.py,sha256=NvgnjP0X4LwqVhSEyh5RUzoG45N44kHK1MEFlfvBxTg,118
37
+ lanscape/ui/blueprints/web/routes.py,sha256=883puFTHePUEgwS4a2-Co6-gdLwr5NbOx0goUck7054,3571
37
38
  lanscape/ui/static/lanscape.webmanifest,sha256=07CqA-PQsO35KJD8R96sI3Pxix6UuBjijPDCuy9vM3s,446
38
- lanscape/ui/static/css/style.css,sha256=f5AcXpFMOdvM-EHV-khpLG-v0TvnS3sRr0tCyphiw-k,17472
39
+ lanscape/ui/static/css/style.css,sha256=O2BA0DiLlXYe_wLxM_uzrCc1VjV_SxSWQEHLCghy_0A,17598
39
40
  lanscape/ui/static/img/ico/android-chrome-192x192.png,sha256=JmFT6KBCCuoyxMV-mLNtF9_QJbVBvfWPUizKN700fi8,18255
40
41
  lanscape/ui/static/img/ico/android-chrome-512x512.png,sha256=88Jjx_1-4XAnZYz64KP6FdTl_kYkNG2_kQIKteQwSh4,138055
41
42
  lanscape/ui/static/img/ico/apple-touch-icon.png,sha256=tEJlLwBZtF4v-NC90YCfRJQ2prTsF4i3VQLK_hnv2Mw,16523
@@ -48,26 +49,26 @@ lanscape/ui/static/js/layout-sizing.js,sha256=U2dsyJi-YKpOpudu3kg2whiU4047ghzDTY
48
49
  lanscape/ui/static/js/main.js,sha256=zCT_4Vql-XzmoMq9fDjC1p4W8WowjIuctwNJ2ymeonI,6538
49
50
  lanscape/ui/static/js/on-tab-close.js,sha256=3icxYWlLpY81iLoW7kQTJeWQ3UnyyboG0dESHF2wLPQ,1376
50
51
  lanscape/ui/static/js/quietReload.js,sha256=8POH0t1KVzGCJas9fNsOVbBG-ULwZT2wiS14URgkeAU,702
51
- lanscape/ui/static/js/scan-config.js,sha256=RVGrjv3djlOmbx3NN1zhaORvHh6EsAh8YtYVjyk6J9E,3683
52
+ lanscape/ui/static/js/scan-config.js,sha256=EOPo-0liYn3UPuhm2kaQrT7G-UumxQ25_rh1c1DaTj4,6021
52
53
  lanscape/ui/static/js/shutdown-server.js,sha256=Mx8UGmmktHaCK7DL8TVUxah6VEcN0wwLFfhbCId-K8U,453
53
54
  lanscape/ui/static/js/subnet-info.js,sha256=osZM6CGs-TC5QpBJWkNWCtXNOKzjyIiWKHwKi4vlDf8,559
54
55
  lanscape/ui/static/js/subnet-selector.js,sha256=2YKCAuKU2Ti1CmJrqi4_vNTD2LQbxx7chIDqND_1eAY,358
55
56
  lanscape/ui/templates/base.html,sha256=cnKU-kHUBpt6Xg4gPLE4dWkcXr3H-K4Vz1Im8xDKdOQ,1448
56
57
  lanscape/ui/templates/error.html,sha256=bqGJbf_ix9wtpUlXk5zvz_XyFpeTbEO-4f0ImgLtUGk,1033
57
58
  lanscape/ui/templates/info.html,sha256=gu8SGFUaFQc46Rm4TkZD8HM4Tnls-ZWsJ0FJNhx9wEs,2545
58
- lanscape/ui/templates/main.html,sha256=YAuJsyZOGr_euLvUwYBUacB7Gmc8xCcEKSbNf9qix3o,4260
59
+ lanscape/ui/templates/main.html,sha256=ubxKUQcWQ27A0YpvBgj6AnIqgVSfW3exYXyn7EgrKJM,3895
59
60
  lanscape/ui/templates/scan.html,sha256=00QX2_1S_1wGzk42r00LjEkJvoioCLs6JgjOibi6r20,376
60
61
  lanscape/ui/templates/shutdown.html,sha256=iXVCq2yl5TjZfNFl4esbDJra3gJA2VQpae0jj4ipy9w,701
61
62
  lanscape/ui/templates/core/head.html,sha256=eZiebt24xYd_NALe-fFL25rb4uFjUrF4XJjxFH61MgM,779
62
63
  lanscape/ui/templates/core/scripts.html,sha256=rSRi4Ut8iejajMPhOc5bzEz-Z3EHxpj_3PxwwyyhmTQ,640
63
- lanscape/ui/templates/scan/config.html,sha256=CcGWubKAG8M5hwokKCkJhnZN7yGfpqRJJLP4oPzM30E,7815
64
+ lanscape/ui/templates/scan/config.html,sha256=WK0kOq7EintAvch8ospSofFLYB3qCmQ4i-xnVOj-4l0,11376
64
65
  lanscape/ui/templates/scan/export.html,sha256=Nvs_unojzT3qhN_ZnEgYHou2C9wqWGr3dVr2UiLnYjY,749
65
66
  lanscape/ui/templates/scan/ip-table-row.html,sha256=RANDsfW4xBATdtiLrxUlRouFSjgwetZqdzH-MJgj2mE,4740
66
67
  lanscape/ui/templates/scan/ip-table.html,sha256=CP7AG8WHOgy3AyYCIN0wA2wO6n0H1X0F9IOncQtpPvE,914
67
68
  lanscape/ui/templates/scan/overview.html,sha256=xWj9jWDPg2KcPLvS8fnSins23_UXjKCdb2NJwNG2U2Q,1176
68
69
  lanscape/ui/templates/scan/scan-error.html,sha256=wmAYQ13IJHUoO8fAGNDjMvNml7tu4rsIU3Vav71ETlA,999
69
- lanscape-1.3.5a1.dist-info/licenses/LICENSE,sha256=VLoE0IrNTIc09dFm7hMN0qzk4T3q8V0NaPcFQqMemDs,1070
70
- lanscape-1.3.5a1.dist-info/METADATA,sha256=oHSG52DOrrUi8m5rFAXgXMr2fslnaMebDA6Reg_8zxg,2569
71
- lanscape-1.3.5a1.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
72
- lanscape-1.3.5a1.dist-info/top_level.txt,sha256=E9D4sjPz_6H7c85Ycy_pOS2xuv1Wm-ilKhxEprln2ps,9
73
- lanscape-1.3.5a1.dist-info/RECORD,,
70
+ lanscape-1.3.6a1.dist-info/licenses/LICENSE,sha256=VLoE0IrNTIc09dFm7hMN0qzk4T3q8V0NaPcFQqMemDs,1070
71
+ lanscape-1.3.6a1.dist-info/METADATA,sha256=dIExY84WdU5U1DKWJ7--2BtqWv7gQ70W9RuwvANHoNY,2569
72
+ lanscape-1.3.6a1.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
73
+ lanscape-1.3.6a1.dist-info/top_level.txt,sha256=E9D4sjPz_6H7c85Ycy_pOS2xuv1Wm-ilKhxEprln2ps,9
74
+ lanscape-1.3.6a1.dist-info/RECORD,,