lanscape 1.3.1a6__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.

Files changed (79) hide show
  1. {lanscape-1.3.1a6/src/lanscape.egg-info → lanscape-1.3.1a7}/PKG-INFO +1 -1
  2. {lanscape-1.3.1a6 → lanscape-1.3.1a7}/pyproject.toml +1 -1
  3. {lanscape-1.3.1a6 → lanscape-1.3.1a7}/src/lanscape/libraries/version_manager.py +1 -1
  4. lanscape-1.3.1a7/src/lanscape/ui/static/js/on-tab-close.js +42 -0
  5. {lanscape-1.3.1a6 → lanscape-1.3.1a7}/src/lanscape/ui/templates/info.html +8 -6
  6. {lanscape-1.3.1a6 → lanscape-1.3.1a7/src/lanscape.egg-info}/PKG-INFO +1 -1
  7. lanscape-1.3.1a6/src/lanscape/ui/static/js/on-tab-close.js +0 -29
  8. {lanscape-1.3.1a6 → lanscape-1.3.1a7}/LICENSE +0 -0
  9. {lanscape-1.3.1a6 → lanscape-1.3.1a7}/MANIFEST.in +0 -0
  10. {lanscape-1.3.1a6 → lanscape-1.3.1a7}/README.md +0 -0
  11. {lanscape-1.3.1a6 → lanscape-1.3.1a7}/setup.cfg +0 -0
  12. {lanscape-1.3.1a6 → lanscape-1.3.1a7}/src/lanscape/__init__.py +0 -0
  13. {lanscape-1.3.1a6 → lanscape-1.3.1a7}/src/lanscape/__main__.py +0 -0
  14. {lanscape-1.3.1a6 → lanscape-1.3.1a7}/src/lanscape/libraries/app_scope.py +0 -0
  15. {lanscape-1.3.1a6 → lanscape-1.3.1a7}/src/lanscape/libraries/decorators.py +0 -0
  16. {lanscape-1.3.1a6 → lanscape-1.3.1a7}/src/lanscape/libraries/errors.py +0 -0
  17. {lanscape-1.3.1a6 → lanscape-1.3.1a7}/src/lanscape/libraries/ip_parser.py +0 -0
  18. {lanscape-1.3.1a6 → lanscape-1.3.1a7}/src/lanscape/libraries/logger.py +0 -0
  19. {lanscape-1.3.1a6 → lanscape-1.3.1a7}/src/lanscape/libraries/mac_lookup.py +0 -0
  20. {lanscape-1.3.1a6 → lanscape-1.3.1a7}/src/lanscape/libraries/net_tools.py +0 -0
  21. {lanscape-1.3.1a6 → lanscape-1.3.1a7}/src/lanscape/libraries/port_manager.py +0 -0
  22. {lanscape-1.3.1a6 → lanscape-1.3.1a7}/src/lanscape/libraries/runtime_args.py +0 -0
  23. {lanscape-1.3.1a6 → lanscape-1.3.1a7}/src/lanscape/libraries/service_scan.py +0 -0
  24. {lanscape-1.3.1a6 → lanscape-1.3.1a7}/src/lanscape/libraries/subnet_scan.py +0 -0
  25. {lanscape-1.3.1a6 → lanscape-1.3.1a7}/src/lanscape/libraries/web_browser.py +0 -0
  26. {lanscape-1.3.1a6 → lanscape-1.3.1a7}/src/lanscape/resources/mac_addresses/convert_csv.py +0 -0
  27. {lanscape-1.3.1a6 → lanscape-1.3.1a7}/src/lanscape/resources/mac_addresses/mac_db.json +0 -0
  28. {lanscape-1.3.1a6 → lanscape-1.3.1a7}/src/lanscape/resources/ports/convert_csv.py +0 -0
  29. {lanscape-1.3.1a6 → lanscape-1.3.1a7}/src/lanscape/resources/ports/full.json +0 -0
  30. {lanscape-1.3.1a6 → lanscape-1.3.1a7}/src/lanscape/resources/ports/large.json +0 -0
  31. {lanscape-1.3.1a6 → lanscape-1.3.1a7}/src/lanscape/resources/ports/medium.json +0 -0
  32. {lanscape-1.3.1a6 → lanscape-1.3.1a7}/src/lanscape/resources/ports/small.json +0 -0
  33. {lanscape-1.3.1a6 → lanscape-1.3.1a7}/src/lanscape/resources/services/definitions.jsonc +0 -0
  34. {lanscape-1.3.1a6 → lanscape-1.3.1a7}/src/lanscape/tests/__init__.py +0 -0
  35. {lanscape-1.3.1a6 → lanscape-1.3.1a7}/src/lanscape/tests/_helpers.py +0 -0
  36. {lanscape-1.3.1a6 → lanscape-1.3.1a7}/src/lanscape/tests/test_api.py +0 -0
  37. {lanscape-1.3.1a6 → lanscape-1.3.1a7}/src/lanscape/tests/test_env.py +0 -0
  38. {lanscape-1.3.1a6 → lanscape-1.3.1a7}/src/lanscape/tests/test_library.py +0 -0
  39. {lanscape-1.3.1a6 → lanscape-1.3.1a7}/src/lanscape/ui/app.py +0 -0
  40. {lanscape-1.3.1a6 → lanscape-1.3.1a7}/src/lanscape/ui/blueprints/__init__.py +0 -0
  41. {lanscape-1.3.1a6 → lanscape-1.3.1a7}/src/lanscape/ui/blueprints/api/__init__.py +0 -0
  42. {lanscape-1.3.1a6 → lanscape-1.3.1a7}/src/lanscape/ui/blueprints/api/port.py +0 -0
  43. {lanscape-1.3.1a6 → lanscape-1.3.1a7}/src/lanscape/ui/blueprints/api/scan.py +0 -0
  44. {lanscape-1.3.1a6 → lanscape-1.3.1a7}/src/lanscape/ui/blueprints/api/tools.py +0 -0
  45. {lanscape-1.3.1a6 → lanscape-1.3.1a7}/src/lanscape/ui/blueprints/web/__init__.py +0 -0
  46. {lanscape-1.3.1a6 → lanscape-1.3.1a7}/src/lanscape/ui/blueprints/web/routes.py +0 -0
  47. {lanscape-1.3.1a6 → lanscape-1.3.1a7}/src/lanscape/ui/main.py +0 -0
  48. {lanscape-1.3.1a6 → lanscape-1.3.1a7}/src/lanscape/ui/static/css/style.css +0 -0
  49. {lanscape-1.3.1a6 → lanscape-1.3.1a7}/src/lanscape/ui/static/img/ico/android-chrome-192x192.png +0 -0
  50. {lanscape-1.3.1a6 → lanscape-1.3.1a7}/src/lanscape/ui/static/img/ico/android-chrome-512x512.png +0 -0
  51. {lanscape-1.3.1a6 → lanscape-1.3.1a7}/src/lanscape/ui/static/img/ico/apple-touch-icon.png +0 -0
  52. {lanscape-1.3.1a6 → lanscape-1.3.1a7}/src/lanscape/ui/static/img/ico/favicon-16x16.png +0 -0
  53. {lanscape-1.3.1a6 → lanscape-1.3.1a7}/src/lanscape/ui/static/img/ico/favicon-32x32.png +0 -0
  54. {lanscape-1.3.1a6 → lanscape-1.3.1a7}/src/lanscape/ui/static/img/ico/favicon.ico +0 -0
  55. {lanscape-1.3.1a6 → lanscape-1.3.1a7}/src/lanscape/ui/static/img/ico/site.webmanifest +0 -0
  56. {lanscape-1.3.1a6 → lanscape-1.3.1a7}/src/lanscape/ui/static/js/core.js +0 -0
  57. {lanscape-1.3.1a6 → lanscape-1.3.1a7}/src/lanscape/ui/static/js/layout-sizing.js +0 -0
  58. {lanscape-1.3.1a6 → lanscape-1.3.1a7}/src/lanscape/ui/static/js/main.js +0 -0
  59. {lanscape-1.3.1a6 → lanscape-1.3.1a7}/src/lanscape/ui/static/js/quietReload.js +0 -0
  60. {lanscape-1.3.1a6 → lanscape-1.3.1a7}/src/lanscape/ui/static/js/shutdown-server.js +0 -0
  61. {lanscape-1.3.1a6 → lanscape-1.3.1a7}/src/lanscape/ui/static/js/subnet-info.js +0 -0
  62. {lanscape-1.3.1a6 → lanscape-1.3.1a7}/src/lanscape/ui/static/js/subnet-selector.js +0 -0
  63. {lanscape-1.3.1a6 → lanscape-1.3.1a7}/src/lanscape/ui/static/lanscape.webmanifest +0 -0
  64. {lanscape-1.3.1a6 → lanscape-1.3.1a7}/src/lanscape/ui/templates/base.html +0 -0
  65. {lanscape-1.3.1a6 → lanscape-1.3.1a7}/src/lanscape/ui/templates/core/head.html +0 -0
  66. {lanscape-1.3.1a6 → lanscape-1.3.1a7}/src/lanscape/ui/templates/core/scripts.html +0 -0
  67. {lanscape-1.3.1a6 → lanscape-1.3.1a7}/src/lanscape/ui/templates/error.html +0 -0
  68. {lanscape-1.3.1a6 → lanscape-1.3.1a7}/src/lanscape/ui/templates/main.html +0 -0
  69. {lanscape-1.3.1a6 → lanscape-1.3.1a7}/src/lanscape/ui/templates/scan/export.html +0 -0
  70. {lanscape-1.3.1a6 → lanscape-1.3.1a7}/src/lanscape/ui/templates/scan/ip-table-row.html +0 -0
  71. {lanscape-1.3.1a6 → lanscape-1.3.1a7}/src/lanscape/ui/templates/scan/ip-table.html +0 -0
  72. {lanscape-1.3.1a6 → lanscape-1.3.1a7}/src/lanscape/ui/templates/scan/overview.html +0 -0
  73. {lanscape-1.3.1a6 → lanscape-1.3.1a7}/src/lanscape/ui/templates/scan/scan-error.html +0 -0
  74. {lanscape-1.3.1a6 → lanscape-1.3.1a7}/src/lanscape/ui/templates/scan.html +0 -0
  75. {lanscape-1.3.1a6 → lanscape-1.3.1a7}/src/lanscape/ui/templates/shutdown.html +0 -0
  76. {lanscape-1.3.1a6 → lanscape-1.3.1a7}/src/lanscape.egg-info/SOURCES.txt +0 -0
  77. {lanscape-1.3.1a6 → lanscape-1.3.1a7}/src/lanscape.egg-info/dependency_links.txt +0 -0
  78. {lanscape-1.3.1a6 → lanscape-1.3.1a7}/src/lanscape.egg-info/requires.txt +0 -0
  79. {lanscape-1.3.1a6 → lanscape-1.3.1a7}/src/lanscape.egg-info/top_level.txt +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: lanscape
3
- Version: 1.3.1a6
3
+ Version: 1.3.1a7
4
4
  Summary: A python based local network scanner
5
5
  Author-email: Michael Dennis <michael@dipduo.com>
6
6
  Project-URL: Homepage, https://github.com/mdennis281/py-lanscape
@@ -1,6 +1,6 @@
1
1
  [project]
2
2
  name = "lanscape"
3
- version = "1.3.1a6"
3
+ version = "1.3.1a7"
4
4
  authors = [
5
5
  { name="Michael Dennis", email="michael@dipduo.com" },
6
6
  ]
@@ -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}')
@@ -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
- <h1 class="title" onclick="location.href = '/'">
8
- <span>LAN</span>scape
9
- </h1>
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 href="https://pypi.org/project/lanscape/" target="_blank"></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,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: lanscape
3
- Version: 1.3.1a6
3
+ Version: 1.3.1a7
4
4
  Summary: A python based local network scanner
5
5
  Author-email: Michael Dennis <michael@dipduo.com>
6
6
  Project-URL: Homepage, https://github.com/mdennis281/py-lanscape
@@ -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