lanscape 1.3.1a5__tar.gz → 1.3.1a7__tar.gz
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.
- {lanscape-1.3.1a5/src/lanscape.egg-info → lanscape-1.3.1a7}/PKG-INFO +1 -1
- {lanscape-1.3.1a5 → lanscape-1.3.1a7}/pyproject.toml +1 -1
- {lanscape-1.3.1a5 → lanscape-1.3.1a7}/src/lanscape/libraries/version_manager.py +1 -1
- {lanscape-1.3.1a5 → lanscape-1.3.1a7}/src/lanscape/libraries/web_browser.py +1 -1
- lanscape-1.3.1a7/src/lanscape/ui/static/js/on-tab-close.js +42 -0
- {lanscape-1.3.1a5 → lanscape-1.3.1a7}/src/lanscape/ui/templates/info.html +8 -6
- {lanscape-1.3.1a5 → lanscape-1.3.1a7/src/lanscape.egg-info}/PKG-INFO +1 -1
- lanscape-1.3.1a5/src/lanscape/ui/static/js/on-tab-close.js +0 -29
- {lanscape-1.3.1a5 → lanscape-1.3.1a7}/LICENSE +0 -0
- {lanscape-1.3.1a5 → lanscape-1.3.1a7}/MANIFEST.in +0 -0
- {lanscape-1.3.1a5 → lanscape-1.3.1a7}/README.md +0 -0
- {lanscape-1.3.1a5 → lanscape-1.3.1a7}/setup.cfg +0 -0
- {lanscape-1.3.1a5 → lanscape-1.3.1a7}/src/lanscape/__init__.py +0 -0
- {lanscape-1.3.1a5 → lanscape-1.3.1a7}/src/lanscape/__main__.py +0 -0
- {lanscape-1.3.1a5 → lanscape-1.3.1a7}/src/lanscape/libraries/app_scope.py +0 -0
- {lanscape-1.3.1a5 → lanscape-1.3.1a7}/src/lanscape/libraries/decorators.py +0 -0
- {lanscape-1.3.1a5 → lanscape-1.3.1a7}/src/lanscape/libraries/errors.py +0 -0
- {lanscape-1.3.1a5 → lanscape-1.3.1a7}/src/lanscape/libraries/ip_parser.py +0 -0
- {lanscape-1.3.1a5 → lanscape-1.3.1a7}/src/lanscape/libraries/logger.py +0 -0
- {lanscape-1.3.1a5 → lanscape-1.3.1a7}/src/lanscape/libraries/mac_lookup.py +0 -0
- {lanscape-1.3.1a5 → lanscape-1.3.1a7}/src/lanscape/libraries/net_tools.py +0 -0
- {lanscape-1.3.1a5 → lanscape-1.3.1a7}/src/lanscape/libraries/port_manager.py +0 -0
- {lanscape-1.3.1a5 → lanscape-1.3.1a7}/src/lanscape/libraries/runtime_args.py +0 -0
- {lanscape-1.3.1a5 → lanscape-1.3.1a7}/src/lanscape/libraries/service_scan.py +0 -0
- {lanscape-1.3.1a5 → lanscape-1.3.1a7}/src/lanscape/libraries/subnet_scan.py +0 -0
- {lanscape-1.3.1a5 → lanscape-1.3.1a7}/src/lanscape/resources/mac_addresses/convert_csv.py +0 -0
- {lanscape-1.3.1a5 → lanscape-1.3.1a7}/src/lanscape/resources/mac_addresses/mac_db.json +0 -0
- {lanscape-1.3.1a5 → lanscape-1.3.1a7}/src/lanscape/resources/ports/convert_csv.py +0 -0
- {lanscape-1.3.1a5 → lanscape-1.3.1a7}/src/lanscape/resources/ports/full.json +0 -0
- {lanscape-1.3.1a5 → lanscape-1.3.1a7}/src/lanscape/resources/ports/large.json +0 -0
- {lanscape-1.3.1a5 → lanscape-1.3.1a7}/src/lanscape/resources/ports/medium.json +0 -0
- {lanscape-1.3.1a5 → lanscape-1.3.1a7}/src/lanscape/resources/ports/small.json +0 -0
- {lanscape-1.3.1a5 → lanscape-1.3.1a7}/src/lanscape/resources/services/definitions.jsonc +0 -0
- {lanscape-1.3.1a5 → lanscape-1.3.1a7}/src/lanscape/tests/__init__.py +0 -0
- {lanscape-1.3.1a5 → lanscape-1.3.1a7}/src/lanscape/tests/_helpers.py +0 -0
- {lanscape-1.3.1a5 → lanscape-1.3.1a7}/src/lanscape/tests/test_api.py +0 -0
- {lanscape-1.3.1a5 → lanscape-1.3.1a7}/src/lanscape/tests/test_env.py +0 -0
- {lanscape-1.3.1a5 → lanscape-1.3.1a7}/src/lanscape/tests/test_library.py +0 -0
- {lanscape-1.3.1a5 → lanscape-1.3.1a7}/src/lanscape/ui/app.py +0 -0
- {lanscape-1.3.1a5 → lanscape-1.3.1a7}/src/lanscape/ui/blueprints/__init__.py +0 -0
- {lanscape-1.3.1a5 → lanscape-1.3.1a7}/src/lanscape/ui/blueprints/api/__init__.py +0 -0
- {lanscape-1.3.1a5 → lanscape-1.3.1a7}/src/lanscape/ui/blueprints/api/port.py +0 -0
- {lanscape-1.3.1a5 → lanscape-1.3.1a7}/src/lanscape/ui/blueprints/api/scan.py +0 -0
- {lanscape-1.3.1a5 → lanscape-1.3.1a7}/src/lanscape/ui/blueprints/api/tools.py +0 -0
- {lanscape-1.3.1a5 → lanscape-1.3.1a7}/src/lanscape/ui/blueprints/web/__init__.py +0 -0
- {lanscape-1.3.1a5 → lanscape-1.3.1a7}/src/lanscape/ui/blueprints/web/routes.py +0 -0
- {lanscape-1.3.1a5 → lanscape-1.3.1a7}/src/lanscape/ui/main.py +0 -0
- {lanscape-1.3.1a5 → lanscape-1.3.1a7}/src/lanscape/ui/static/css/style.css +0 -0
- {lanscape-1.3.1a5 → lanscape-1.3.1a7}/src/lanscape/ui/static/img/ico/android-chrome-192x192.png +0 -0
- {lanscape-1.3.1a5 → lanscape-1.3.1a7}/src/lanscape/ui/static/img/ico/android-chrome-512x512.png +0 -0
- {lanscape-1.3.1a5 → lanscape-1.3.1a7}/src/lanscape/ui/static/img/ico/apple-touch-icon.png +0 -0
- {lanscape-1.3.1a5 → lanscape-1.3.1a7}/src/lanscape/ui/static/img/ico/favicon-16x16.png +0 -0
- {lanscape-1.3.1a5 → lanscape-1.3.1a7}/src/lanscape/ui/static/img/ico/favicon-32x32.png +0 -0
- {lanscape-1.3.1a5 → lanscape-1.3.1a7}/src/lanscape/ui/static/img/ico/favicon.ico +0 -0
- {lanscape-1.3.1a5 → lanscape-1.3.1a7}/src/lanscape/ui/static/img/ico/site.webmanifest +0 -0
- {lanscape-1.3.1a5 → lanscape-1.3.1a7}/src/lanscape/ui/static/js/core.js +0 -0
- {lanscape-1.3.1a5 → lanscape-1.3.1a7}/src/lanscape/ui/static/js/layout-sizing.js +0 -0
- {lanscape-1.3.1a5 → lanscape-1.3.1a7}/src/lanscape/ui/static/js/main.js +0 -0
- {lanscape-1.3.1a5 → lanscape-1.3.1a7}/src/lanscape/ui/static/js/quietReload.js +0 -0
- {lanscape-1.3.1a5 → lanscape-1.3.1a7}/src/lanscape/ui/static/js/shutdown-server.js +0 -0
- {lanscape-1.3.1a5 → lanscape-1.3.1a7}/src/lanscape/ui/static/js/subnet-info.js +0 -0
- {lanscape-1.3.1a5 → lanscape-1.3.1a7}/src/lanscape/ui/static/js/subnet-selector.js +0 -0
- {lanscape-1.3.1a5 → lanscape-1.3.1a7}/src/lanscape/ui/static/lanscape.webmanifest +0 -0
- {lanscape-1.3.1a5 → lanscape-1.3.1a7}/src/lanscape/ui/templates/base.html +0 -0
- {lanscape-1.3.1a5 → lanscape-1.3.1a7}/src/lanscape/ui/templates/core/head.html +0 -0
- {lanscape-1.3.1a5 → lanscape-1.3.1a7}/src/lanscape/ui/templates/core/scripts.html +0 -0
- {lanscape-1.3.1a5 → lanscape-1.3.1a7}/src/lanscape/ui/templates/error.html +0 -0
- {lanscape-1.3.1a5 → lanscape-1.3.1a7}/src/lanscape/ui/templates/main.html +0 -0
- {lanscape-1.3.1a5 → lanscape-1.3.1a7}/src/lanscape/ui/templates/scan/export.html +0 -0
- {lanscape-1.3.1a5 → lanscape-1.3.1a7}/src/lanscape/ui/templates/scan/ip-table-row.html +0 -0
- {lanscape-1.3.1a5 → lanscape-1.3.1a7}/src/lanscape/ui/templates/scan/ip-table.html +0 -0
- {lanscape-1.3.1a5 → lanscape-1.3.1a7}/src/lanscape/ui/templates/scan/overview.html +0 -0
- {lanscape-1.3.1a5 → lanscape-1.3.1a7}/src/lanscape/ui/templates/scan/scan-error.html +0 -0
- {lanscape-1.3.1a5 → lanscape-1.3.1a7}/src/lanscape/ui/templates/scan.html +0 -0
- {lanscape-1.3.1a5 → lanscape-1.3.1a7}/src/lanscape/ui/templates/shutdown.html +0 -0
- {lanscape-1.3.1a5 → lanscape-1.3.1a7}/src/lanscape.egg-info/SOURCES.txt +0 -0
- {lanscape-1.3.1a5 → lanscape-1.3.1a7}/src/lanscape.egg-info/dependency_links.txt +0 -0
- {lanscape-1.3.1a5 → lanscape-1.3.1a7}/src/lanscape.egg-info/requires.txt +0 -0
- {lanscape-1.3.1a5 → lanscape-1.3.1a7}/src/lanscape.egg-info/top_level.txt +0 -0
|
@@ -33,7 +33,7 @@ def lookup_latest_version(package=PACKAGE):
|
|
|
33
33
|
no_cache = f'?cachebust={randint(0,6969)}'
|
|
34
34
|
url = f"https://pypi.org/pypi/{package}/json{no_cache}"
|
|
35
35
|
try:
|
|
36
|
-
response = requests.get(url)
|
|
36
|
+
response = requests.get(url,timeout=5)
|
|
37
37
|
response.raise_for_status() # Raise an exception for HTTP errors
|
|
38
38
|
latest = response.json()['info']['version']
|
|
39
39
|
log.debug(f'Latest pypi version: {latest}')
|
|
@@ -130,7 +130,7 @@ def get_default_browser_executable() -> Optional[str]:
|
|
|
130
130
|
)
|
|
131
131
|
chrome_paths = p.stdout.strip().split('\n')
|
|
132
132
|
if chrome_paths and chrome_paths[0]:
|
|
133
|
-
return f"
|
|
133
|
+
return f"{chrome_paths[0]}/Contents/MacOS/Google Chrome"
|
|
134
134
|
except subprocess.CalledProcessError:
|
|
135
135
|
pass
|
|
136
136
|
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
// helps flask server know when the browser tab is closed
|
|
2
|
+
|
|
3
|
+
|
|
4
|
+
function sendOnUnload(event = null) {
|
|
5
|
+
const url = '/shutdown?type=browser-close';
|
|
6
|
+
const data = JSON.stringify({ event });
|
|
7
|
+
console.log('sendOnUnload called:', data);
|
|
8
|
+
// (1) Using navigator.sendBeacon
|
|
9
|
+
if (navigator.sendBeacon) {
|
|
10
|
+
const blob = new Blob([data], { type: 'application/json' });
|
|
11
|
+
navigator.sendBeacon(url, blob);
|
|
12
|
+
}
|
|
13
|
+
// (2) Or—you can use fetch with keepalive (supported in modern browsers)
|
|
14
|
+
else {
|
|
15
|
+
fetch(url, {
|
|
16
|
+
method: 'POST',
|
|
17
|
+
body: data,
|
|
18
|
+
headers: { 'Content-Type': 'application/json' },
|
|
19
|
+
keepalive: true
|
|
20
|
+
})
|
|
21
|
+
.catch((err) => {
|
|
22
|
+
// If it fails, there's not much you can do here.
|
|
23
|
+
console.warn('sendOnUnload fetch failed:', err);
|
|
24
|
+
});
|
|
25
|
+
}
|
|
26
|
+
}
|
|
27
|
+
|
|
28
|
+
let hasBeenCalled = false;
|
|
29
|
+
|
|
30
|
+
// When pagehide is called w/ persist=false we want to send our payload.
|
|
31
|
+
// Wont work on all browsers, but should work on most modern ones.
|
|
32
|
+
window.addEventListener('pagehide', (event) => {
|
|
33
|
+
if (!hasBeenCalled && !event.persisted) {
|
|
34
|
+
// persisted = false means page is being discarded, not cached
|
|
35
|
+
const clonedEvent = {
|
|
36
|
+
type: 'pagehide',
|
|
37
|
+
persisted: event.persisted
|
|
38
|
+
};
|
|
39
|
+
sendOnUnload(clonedEvent);
|
|
40
|
+
hasBeenCalled = true;
|
|
41
|
+
}
|
|
42
|
+
});
|
|
@@ -4,9 +4,11 @@
|
|
|
4
4
|
<div id="header">
|
|
5
5
|
<!-- Header and Scan Submission Inline -->
|
|
6
6
|
<div class="d-flex justify-content-start align-items-center">
|
|
7
|
-
<
|
|
8
|
-
<
|
|
9
|
-
|
|
7
|
+
<a href="/" class="text-decoration-none">
|
|
8
|
+
<h1 class="title">
|
|
9
|
+
<span>LAN</span>scape
|
|
10
|
+
</h1>
|
|
11
|
+
</a>
|
|
10
12
|
</div>
|
|
11
13
|
</div>
|
|
12
14
|
<div class="scroll-container" id="content">
|
|
@@ -18,7 +20,7 @@
|
|
|
18
20
|
({{app_version}} -> {{latest_version}})
|
|
19
21
|
</p>
|
|
20
22
|
<input type="text" readonly class="form-control mb-3 mt-3" value="pip install --upgrade lanscape --no-cache"/>
|
|
21
|
-
<a
|
|
23
|
+
<a class="text-decoration-none" href="https://pypi.org/project/lanscape/" target="_blank">
|
|
22
24
|
<button class="btn btn-primary m-2">PyPi - Lanscape</button>
|
|
23
25
|
</a>
|
|
24
26
|
</div>
|
|
@@ -33,10 +35,10 @@
|
|
|
33
35
|
This project has been a learning journey, & I hope it helps you
|
|
34
36
|
discover more about your network as well. Enjoy!
|
|
35
37
|
</p>
|
|
36
|
-
<a href="https://github.com/mdennis281/" target="_blank">
|
|
38
|
+
<a href="https://github.com/mdennis281/" class="text-decoration-none" target="_blank">
|
|
37
39
|
<button class="btn btn-primary m-2">GitHub</button>
|
|
38
40
|
</a>
|
|
39
|
-
<a href="https://github.com/mdennis281/LANscape" target="_blank">
|
|
41
|
+
<a href="https://github.com/mdennis281/LANscape" class="text-decoration-none" target="_blank">
|
|
40
42
|
<button class="btn btn-secondary m-2">Project Repo</button>
|
|
41
43
|
</a>
|
|
42
44
|
</div>
|
|
@@ -1,29 +0,0 @@
|
|
|
1
|
-
// This is the payload you want to send on unload.
|
|
2
|
-
// It can be as simple as JSON or just an empty POST.
|
|
3
|
-
function sendOnUnload() {
|
|
4
|
-
const url = '/shutdown?type=browser-close';
|
|
5
|
-
const data = JSON.stringify({ });
|
|
6
|
-
// (1) Using navigator.sendBeacon
|
|
7
|
-
if (navigator.sendBeacon) {
|
|
8
|
-
const blob = new Blob([data], { type: 'application/json' });
|
|
9
|
-
navigator.sendBeacon(url, blob);
|
|
10
|
-
}
|
|
11
|
-
// (2) Or—you can use fetch with keepalive (supported in modern browsers)
|
|
12
|
-
else {
|
|
13
|
-
fetch(url, {
|
|
14
|
-
method: 'POST',
|
|
15
|
-
body: data,
|
|
16
|
-
headers: { 'Content-Type': 'application/json' },
|
|
17
|
-
keepalive: true
|
|
18
|
-
})
|
|
19
|
-
.catch((err) => {
|
|
20
|
-
// If it fails, there’s not much you can do here.
|
|
21
|
-
console.warn('sendOnUnload fetch failed:', err);
|
|
22
|
-
});
|
|
23
|
-
}
|
|
24
|
-
}
|
|
25
|
-
|
|
26
|
-
// Attach to both beforeunload and unload to increase reliability.
|
|
27
|
-
// beforeunload fires slightly earlier, but some browsers block async work there.
|
|
28
|
-
window.addEventListener('beforeunload', sendOnUnload);
|
|
29
|
-
window.addEventListener('unload', sendOnUnload);
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{lanscape-1.3.1a5 → lanscape-1.3.1a7}/src/lanscape/ui/static/img/ico/android-chrome-192x192.png
RENAMED
|
File without changes
|
{lanscape-1.3.1a5 → lanscape-1.3.1a7}/src/lanscape/ui/static/img/ico/android-chrome-512x512.png
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|