lanscape 1.3.0b1__py3-none-any.whl → 1.3.1a2__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.

@@ -347,17 +347,24 @@ def get_all_network_subnets():
347
347
 
348
348
  return subnets
349
349
 
350
- def smart_select_primary_subnet(subnets: List[dict]=get_all_network_subnets()) -> str:
350
+ def smart_select_primary_subnet(subnets: List[dict] | None = None) -> str:
351
351
  """
352
- Finds the largest subnet within max ip range
353
- not perfect, but works better than subnets[0]
352
+ Finds the largest subnet within max ip range. If no subnets are
353
+ available, returns an empty string instead of raising ``KeyError``.
354
354
  """
355
+ subnets = subnets or get_all_network_subnets()
356
+
357
+ if not subnets:
358
+ return ""
359
+
355
360
  selected = {}
356
361
  for subnet in subnets:
357
- if selected.get('address_cnt',0) < subnet['address_cnt'] < MAX_IPS_ALLOWED:
362
+ if selected.get("address_cnt", 0) < subnet["address_cnt"] < MAX_IPS_ALLOWED:
358
363
  selected = subnet
359
- if not selected and len(subnets):
364
+
365
+ if not selected:
360
366
  selected = subnets[0]
361
- return selected['subnet']
367
+
368
+ return selected.get("subnet", "")
362
369
 
363
370
 
@@ -29,12 +29,21 @@ def open_webapp(url: str) -> bool:
29
29
  """
30
30
  start = time.time()
31
31
  try:
32
- exe = get_default_browser_executable()
33
- if not exe:
34
- raise RuntimeError('Unable to find browser binary')
35
- log.debug(f'Opening {url} with {exe}')
32
+ if sys.platform.startswith("darwin"):
33
+ # macOS does not support chrome-style app mode via the generic
34
+ # method. Fallback to the system "open" command which will use the
35
+ # default browser.
36
+ cmd = """"$(mdfind 'kMDItemCFBundleIdentifier == "com.google.Chrome"' | head -n1)/Contents/MacOS/Google Chrome" --app=https://weatherlite.app"""
37
+ subprocess.run(cmd, check=True, shell=True)
36
38
 
37
- subprocess.run(f'{exe} --app="{url}"')
39
+ else:
40
+
41
+ exe = get_default_browser_executable()
42
+ if not exe:
43
+ raise RuntimeError('Unable to find browser binary')
44
+ log.debug(f'Opening {url} with {exe}')
45
+
46
+ subprocess.run(f'{exe} --app="{url}"')
38
47
 
39
48
  if time.time() - start < 2:
40
49
  log.debug(f'Unable to hook into closure of UI, listening for flask shutdown')
@@ -117,8 +126,12 @@ def get_default_browser_executable() -> Optional[str]:
117
126
  # strip arguments like “%u”, “--flag”, etc.
118
127
  exec_cmd = exec_cmd.split()[0]
119
128
  exec_cmd = exec_cmd.split("%")[0]
120
- return exec_cmd
129
+ return exec_cmd
121
130
  return None
122
131
 
132
+ elif sys.platform.startswith("darwin"):
133
+ # macOS will use the system 'open' command to launch the default browser
134
+ return "/usr/bin/open"
135
+
123
136
  else:
124
137
  raise NotImplementedError(f"Unsupported platform: {sys.platform!r}")
lanscape/ui/app.py CHANGED
@@ -71,7 +71,7 @@ def exit_app():
71
71
  if args.persistent:
72
72
  log.info('Dectected browser close, not exiting flask.')
73
73
  return "Ignored"
74
- log.info('Web browser closed, terminating flask.')
74
+ log.info('Web browser closed, terminating flask. (disable with --peristent)')
75
75
  elif req_type == 'core':
76
76
  log.info('Core requested exit, terminating flask.')
77
77
  else:
@@ -100,7 +100,7 @@ def internal_error(e):
100
100
  ## Webserver creation functions
101
101
  ################################
102
102
 
103
- def start_webserver_dameon(args: RuntimeArgs) -> threading.Thread:
103
+ def start_webserver_daemon(args: RuntimeArgs) -> threading.Thread:
104
104
  proc = threading.Thread(target=start_webserver, args=(args,))
105
105
  proc.daemon = True # Kill thread when main thread exits
106
106
  proc.start()
lanscape/ui/main.py CHANGED
@@ -12,7 +12,7 @@ args = parse_args()
12
12
  configure_logging(args.loglevel, args.logfile, args.flask_logging)
13
13
 
14
14
  from ..libraries.version_manager import get_installed_version, is_update_available
15
- from .app import start_webserver_dameon, start_webserver
15
+ from .app import start_webserver_daemon, start_webserver
16
16
  import socket
17
17
 
18
18
 
@@ -100,13 +100,13 @@ def start_webserver_ui(args: RuntimeArgs):
100
100
  ).start()
101
101
  start_webserver(args)
102
102
  else:
103
- flask_thread = start_webserver_dameon(args)
103
+ flask_thread = start_webserver_daemon(args)
104
104
  app_closed = open_browser(uri)
105
105
 
106
106
  # depending on env, open_browser may or
107
107
  # may not be coupled with the closure of UI
108
108
  # (if in browser tab, it's uncoupled)
109
- if not app_closed:
109
+ if not app_closed or args.persistent:
110
110
  # not doing a direct join so i can still
111
111
  # terminate the app with ctrl+c
112
112
  while flask_thread.is_alive():
@@ -34,7 +34,7 @@
34
34
  discover more about your network as well. Enjoy!
35
35
  </p>
36
36
  <a href="https://github.com/mdennis281/" target="_blank">
37
- <button class="btn btn-primary m-2">Github</button>
37
+ <button class="btn btn-primary m-2">GitHub</button>
38
38
  </a>
39
39
  <a href="https://github.com/mdennis281/LANscape" target="_blank">
40
40
  <button class="btn btn-secondary m-2">Project Repo</button>
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: lanscape
3
- Version: 1.3.0b1
3
+ Version: 1.3.1a2
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
@@ -6,13 +6,13 @@ lanscape/libraries/errors.py,sha256=DaercNEZD_tUuXF7KsNk3SD6AqAwT-S7fvzpEybVn08,
6
6
  lanscape/libraries/ip_parser.py,sha256=ElXz3LU5CUYWqKOHEyrj5Y4Iv6OBtoSlbCcxhCsibfQ,2226
7
7
  lanscape/libraries/logger.py,sha256=doD8KKb4TNWDwVXc1VR7NK4UdharrAoRHl8vZnSAupI,1407
8
8
  lanscape/libraries/mac_lookup.py,sha256=-dRV0ygtjjh3JkgL3GTi_5-w7pcZ1oj4XVH4chjsmRs,2121
9
- lanscape/libraries/net_tools.py,sha256=GOK2zUdbk8bQ4gHLDZ0e73bZHvnbK7VADce_pTbbw2Q,11736
9
+ lanscape/libraries/net_tools.py,sha256=JU4mnQptO3-WGGlGR4lCRvOM8qpoCIvw6CuApiTQ-t4,11855
10
10
  lanscape/libraries/port_manager.py,sha256=fNext3FNfGnGYRZK9RhTEwQ2K0e0YmmMlhK4zVAvoCw,1977
11
11
  lanscape/libraries/runtime_args.py,sha256=ICX_JkOmqDQdewZNfRxJb9jMggDw1XqF5CxM9zXZE_Q,1947
12
12
  lanscape/libraries/service_scan.py,sha256=jLU84ZoJnqSQbE30Zly2lm2zHrCGutNXjla1sEvp1hE,1949
13
13
  lanscape/libraries/subnet_scan.py,sha256=0LW_xdoL-PRp59rJr6r6pSL3LiXEO_SJnjdrgEF_pO8,13120
14
14
  lanscape/libraries/version_manager.py,sha256=v-IsZ7sYIsNRiraIRckGZthlyL0iTuscR6jF_o9LBK8,1720
15
- lanscape/libraries/web_browser.py,sha256=ZRtQ0L0rjTYQZTxNEMqmwShOfZNK-6IqWvs1GdcCw5M,4338
15
+ lanscape/libraries/web_browser.py,sha256=1P5X0XlrC-CTK6Rv3FEN1O0IP660mes9KvV53HWJrzU,4972
16
16
  lanscape/resources/mac_addresses/convert_csv.py,sha256=w3Heed5z2mHYDEZNBep3_hNg4dbrp_N6J54MGxnrq4s,721
17
17
  lanscape/resources/mac_addresses/mac_db.json,sha256=ygtFSwNwJzDlg6hmAujdgCyzUjxt9Di75J8SO4xYIs8,2187804
18
18
  lanscape/resources/ports/convert_csv.py,sha256=mWe8zucWVfnlNEx_ZzH5Vc3tJJbdi-Ih4nm2yKNrRN0,720
@@ -26,8 +26,8 @@ lanscape/tests/_helpers.py,sha256=wXJfUwzL3Fq4XBsC3dValCbXsf0U8FisuM_yo1de4QQ,37
26
26
  lanscape/tests/test_api.py,sha256=sjcjt3b1ZwvQiALOSfXoQxTlN1Z1_TRPC0EEy-bRIgE,7313
27
27
  lanscape/tests/test_env.py,sha256=ivFhCcemJ9vbe0_KtUkbqDY4r9nsDB8rVLUVjV-sNj8,673
28
28
  lanscape/tests/test_library.py,sha256=OPcTsUoR5IureSNDbePxid2BG98mfNNIJmCIY0BVz3w,1553
29
- lanscape/ui/app.py,sha256=fcifRJtaRWxe2gZHPVAB4GQmyaIV7tFhK0_GClIt6Qs,3567
30
- lanscape/ui/main.py,sha256=uNiMeupLRzZ3mzNd05KF_caAEzgFb_jv74-xuBlwQkI,4008
29
+ lanscape/ui/app.py,sha256=jMr72omFHOJJWxb9vwfpC7Lg-YIpw-4sZFAbWHnx_D4,3594
30
+ lanscape/ui/main.py,sha256=KObgvdOlIhx4VQgcaNLcLrnkFXmOhfVpUyI8tZDQmJo,4027
31
31
  lanscape/ui/blueprints/__init__.py,sha256=agvgPOSVbrxddaw6EY64ZZr1CQi1Qzwcs1t0lZMv5oY,206
32
32
  lanscape/ui/blueprints/api/__init__.py,sha256=t0QOq3vHFWmlZm_3YFPQbQzCn1a_a5cmRchtIxwy4eY,103
33
33
  lanscape/ui/blueprints/api/port.py,sha256=2UA38umzXE8pMitx1E-_wJHyL1dYYbtM6Kg5zVtfj6A,1019
@@ -54,7 +54,7 @@ lanscape/ui/static/js/subnet-info.js,sha256=aytt0LkBx4FVq36TxiMEw3aM7XQLHg_ng1U2
54
54
  lanscape/ui/static/js/subnet-selector.js,sha256=OG01pDaSOPLq3Ial0aO0CqPcob9tPZA1MZKGmQG0W7Q,366
55
55
  lanscape/ui/templates/base.html,sha256=P5xnMlvDXYkYSXdSZUWaRfhsszNuZPP7A56hemBrAFs,1498
56
56
  lanscape/ui/templates/error.html,sha256=zXFO0zPIfQORWq1ZMiSZ8G7FjfhVVr-aaYC0HeBl4Rs,1068
57
- lanscape/ui/templates/info.html,sha256=uRvR5Y0lDmSq2k-_ibcEcab2Ipzo8Qt6ZNK04h5Bfh8,2457
57
+ lanscape/ui/templates/info.html,sha256=K2ckljQujyXBaf0VmKO7IMm2S_wmN0sHD4vWA8Y4gJA,2457
58
58
  lanscape/ui/templates/main.html,sha256=M12xJSN6Ga565vIPhdCiqcr1tYgDrqzuQTeuXtk-8yo,3759
59
59
  lanscape/ui/templates/scan.html,sha256=Fz1Q4CzRq5qpKgszTAQLhaLVV0A6gBraT33mNDmpYRE,390
60
60
  lanscape/ui/templates/shutdown.html,sha256=v0cGT5CJWi-V8b5sUN3l-QIDNUmHTvKGi2gDlhmRlrs,724
@@ -65,8 +65,8 @@ lanscape/ui/templates/scan/ip-table-row.html,sha256=ptY24rxJRaA4PEEQRDncaq6Q0ql5
65
65
  lanscape/ui/templates/scan/ip-table.html,sha256=ds__UP9JiTKf5IxCmTMzw--eN_yg1Pvn3Nj1KvQxeZg,940
66
66
  lanscape/ui/templates/scan/overview.html,sha256=FsX-jSFhGKwCxZGKE8AMKk328UuawN6O9RNTzYvIOts,1205
67
67
  lanscape/ui/templates/scan/scan-error.html,sha256=Q4eZM5ThrxnFaWOSTUpK8hA2ksHwhxOBTaVUCLALhyA,1032
68
- lanscape-1.3.0b1.dist-info/licenses/LICENSE,sha256=cCO-NbS01Ilwc6djHjZ7LIgPFRkRmWdr0fH2ysXKioA,1090
69
- lanscape-1.3.0b1.dist-info/METADATA,sha256=6Je873VqtOapiau6tCbOyrCpLodk5t1z8x0WuYjcjrc,2567
70
- lanscape-1.3.0b1.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
71
- lanscape-1.3.0b1.dist-info/top_level.txt,sha256=E9D4sjPz_6H7c85Ycy_pOS2xuv1Wm-ilKhxEprln2ps,9
72
- lanscape-1.3.0b1.dist-info/RECORD,,
68
+ lanscape-1.3.1a2.dist-info/licenses/LICENSE,sha256=cCO-NbS01Ilwc6djHjZ7LIgPFRkRmWdr0fH2ysXKioA,1090
69
+ lanscape-1.3.1a2.dist-info/METADATA,sha256=QR9ZK6YwvTDlb5a6Vt-lpSqSwRyg9Rw46Mkh5DNwxdU,2567
70
+ lanscape-1.3.1a2.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
71
+ lanscape-1.3.1a2.dist-info/top_level.txt,sha256=E9D4sjPz_6H7c85Ycy_pOS2xuv1Wm-ilKhxEprln2ps,9
72
+ lanscape-1.3.1a2.dist-info/RECORD,,