lanscape 1.3.1a3__py3-none-any.whl → 1.3.1a5__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.
- lanscape/libraries/net_tools.py +8 -9
- lanscape/libraries/web_browser.py +19 -16
- {lanscape-1.3.1a3.dist-info → lanscape-1.3.1a5.dist-info}/METADATA +1 -1
- {lanscape-1.3.1a3.dist-info → lanscape-1.3.1a5.dist-info}/RECORD +7 -7
- {lanscape-1.3.1a3.dist-info → lanscape-1.3.1a5.dist-info}/WHEEL +0 -0
- {lanscape-1.3.1a3.dist-info → lanscape-1.3.1a5.dist-info}/licenses/LICENSE +0 -0
- {lanscape-1.3.1a3.dist-info → lanscape-1.3.1a5.dist-info}/top_level.txt +0 -0
lanscape/libraries/net_tools.py
CHANGED
|
@@ -76,7 +76,7 @@ class IPAlive:
|
|
|
76
76
|
if os_name == "windows":
|
|
77
77
|
# -n count, -w timeout in ms
|
|
78
78
|
cmd = ['ping', '-n', str(ping_count), '-w', str(timeout*1000)]
|
|
79
|
-
else:
|
|
79
|
+
else: # Linux, macOS, and other Unix-like systems
|
|
80
80
|
# -c count, -W timeout in s
|
|
81
81
|
cmd = ['ping', '-c', str(ping_count), '-W', str(timeout)]
|
|
82
82
|
|
|
@@ -211,9 +211,9 @@ mac_selector = MacSelector()
|
|
|
211
211
|
|
|
212
212
|
def get_ip_address(interface: str):
|
|
213
213
|
"""
|
|
214
|
-
Get the IP address of a network interface on Windows or
|
|
214
|
+
Get the IP address of a network interface on Windows, Linux, or macOS.
|
|
215
215
|
"""
|
|
216
|
-
def
|
|
216
|
+
def unix_like(): # Combined Linux and macOS
|
|
217
217
|
try:
|
|
218
218
|
import fcntl
|
|
219
219
|
import struct
|
|
@@ -239,17 +239,15 @@ def get_ip_address(interface: str):
|
|
|
239
239
|
# Call the appropriate function based on the platform
|
|
240
240
|
if psutil.WINDOWS:
|
|
241
241
|
return windows()
|
|
242
|
-
|
|
243
|
-
return
|
|
244
|
-
else:
|
|
245
|
-
return None
|
|
242
|
+
else: # Linux, macOS, and other Unix-like systems
|
|
243
|
+
return unix_like()
|
|
246
244
|
|
|
247
245
|
def get_netmask(interface: str):
|
|
248
246
|
"""
|
|
249
247
|
Get the netmask of a network interface.
|
|
250
248
|
"""
|
|
251
249
|
|
|
252
|
-
def
|
|
250
|
+
def unix_like(): # Combined Linux and macOS
|
|
253
251
|
try:
|
|
254
252
|
import fcntl
|
|
255
253
|
sock = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
|
|
@@ -273,7 +271,8 @@ def get_netmask(interface: str):
|
|
|
273
271
|
|
|
274
272
|
if psutil.WINDOWS:
|
|
275
273
|
return windows()
|
|
276
|
-
|
|
274
|
+
else: # Linux, macOS, and other Unix-like systems
|
|
275
|
+
return unix_like()
|
|
277
276
|
|
|
278
277
|
def get_cidr_from_netmask(netmask: str):
|
|
279
278
|
"""
|
|
@@ -29,22 +29,13 @@ def open_webapp(url: str) -> bool:
|
|
|
29
29
|
"""
|
|
30
30
|
start = time.time()
|
|
31
31
|
try:
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
cmd = """"$(mdfind 'kMDItemCFBundleIdentifier == "com.google.Chrome"' | head -n1)/Contents/MacOS/Google Chrome" """
|
|
37
|
-
cmd += f' --app="{url}"'
|
|
38
|
-
subprocess.run(cmd, check=True, shell=True)
|
|
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}')
|
|
39
36
|
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
exe = get_default_browser_executable()
|
|
43
|
-
if not exe:
|
|
44
|
-
raise RuntimeError('Unable to find browser binary')
|
|
45
|
-
log.debug(f'Opening {url} with {exe}')
|
|
46
|
-
|
|
47
|
-
subprocess.run(f'{exe} --app="{url}"')
|
|
37
|
+
cmd = f'"{exe}" --app="{url}"'
|
|
38
|
+
subprocess.run(cmd, check=True, shell=True)
|
|
48
39
|
|
|
49
40
|
if time.time() - start < 2:
|
|
50
41
|
log.debug(f'Unable to hook into closure of UI, listening for flask shutdown')
|
|
@@ -131,7 +122,19 @@ def get_default_browser_executable() -> Optional[str]:
|
|
|
131
122
|
return None
|
|
132
123
|
|
|
133
124
|
elif sys.platform.startswith("darwin"):
|
|
134
|
-
# macOS
|
|
125
|
+
# macOS: try to find Chrome first for app mode support, fallback to default
|
|
126
|
+
try:
|
|
127
|
+
p = subprocess.run(
|
|
128
|
+
["mdfind", "kMDItemCFBundleIdentifier == 'com.google.Chrome'"],
|
|
129
|
+
capture_output=True, text=True, check=True
|
|
130
|
+
)
|
|
131
|
+
chrome_paths = p.stdout.strip().split('\n')
|
|
132
|
+
if chrome_paths and chrome_paths[0]:
|
|
133
|
+
return f"\"{chrome_paths[0]}/Contents/MacOS/Google Chrome\""
|
|
134
|
+
except subprocess.CalledProcessError:
|
|
135
|
+
pass
|
|
136
|
+
|
|
137
|
+
# Fallback to system default
|
|
135
138
|
return "/usr/bin/open"
|
|
136
139
|
|
|
137
140
|
else:
|
|
@@ -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=
|
|
9
|
+
lanscape/libraries/net_tools.py,sha256=_XWdZjboJ76dIoi90gDkk2fUzvEKHPsy2TQ7URj7QlE,12040
|
|
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=
|
|
15
|
+
lanscape/libraries/web_browser.py,sha256=PEPW-lfe31VixJW8KuQmGAFkZIrZ1oqy_fGUc7kKI9M,5032
|
|
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
|
|
@@ -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.
|
|
69
|
-
lanscape-1.3.
|
|
70
|
-
lanscape-1.3.
|
|
71
|
-
lanscape-1.3.
|
|
72
|
-
lanscape-1.3.
|
|
68
|
+
lanscape-1.3.1a5.dist-info/licenses/LICENSE,sha256=cCO-NbS01Ilwc6djHjZ7LIgPFRkRmWdr0fH2ysXKioA,1090
|
|
69
|
+
lanscape-1.3.1a5.dist-info/METADATA,sha256=2z1NR8XEa_GB7vWrDzyD1VluYp3az47aNyXDBd3XJp8,2567
|
|
70
|
+
lanscape-1.3.1a5.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
|
|
71
|
+
lanscape-1.3.1a5.dist-info/top_level.txt,sha256=E9D4sjPz_6H7c85Ycy_pOS2xuv1Wm-ilKhxEprln2ps,9
|
|
72
|
+
lanscape-1.3.1a5.dist-info/RECORD,,
|
|
File without changes
|
|
File without changes
|
|
File without changes
|