eping 4.6__tar.gz → 4.7__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.
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: eping
3
- Version: 4.6
3
+ Version: 4.7
4
4
  Summary: Continuous ICMP reachability monitor built on fping, with a CSV logfile analyser (epinga)
5
5
  Author-email: Ewald Jeitler <ewald@jeitler.cc>
6
6
  License: GPL-3.0-or-later
@@ -17,7 +17,7 @@ Description-Content-Type: text/markdown
17
17
  License-File: LICENSE
18
18
  Dynamic: license-file
19
19
 
20
- # eping.py 4.06
20
+ # eping.py 4.07
21
21
 
22
22
  Continuous ICMP reachability monitor built on `fping`. Scans a host list in a loop,
23
23
  reports each host UP/DOWN/NO-DNS, counts state changes. CLI (curses) or web GUI.
@@ -1,4 +1,4 @@
1
- # eping.py 4.06
1
+ # eping.py 4.07
2
2
 
3
3
  Continuous ICMP reachability monitor built on `fping`. Scans a host list in a loop,
4
4
  reports each host UP/DOWN/NO-DNS, counts state changes. CLI (curses) or web GUI.
@@ -4,7 +4,7 @@ build-backend = "setuptools.build_meta"
4
4
 
5
5
  [project]
6
6
  name = "eping"
7
- version = "4.06"
7
+ version = "4.07"
8
8
  description = "Continuous ICMP reachability monitor built on fping, with a CSV logfile analyser (epinga)"
9
9
  readme = "README.md"
10
10
  license = { text = "GPL-3.0-or-later" }
@@ -7,7 +7,7 @@
7
7
  # I knew how it worked.
8
8
  # Now, only god knows it!
9
9
  # - - - - - - - - - - - - - - - - - - - - - - - -
10
- VERSION = '4.06'
10
+ VERSION = '4.07'
11
11
  version = VERSION # legacy alias (kept for existing references)
12
12
 
13
13
  # --- scaling limits ---
@@ -7009,7 +7009,20 @@ class EpingWebServer(socketserver.ThreadingMixIn, http.server.HTTPServer):
7009
7009
  pass
7010
7010
 
7011
7011
 
7012
+ def _port_in_use(bind_addr, port):
7013
+ """True if a listener already answers on the address we are about to bind. BSD/macOS lets a
7014
+ wildcard socket and a specific one share a port (SO_REUSEADDR), so bind() alone does not
7015
+ detect another instance bound to 127.0.0.1."""
7016
+ host = {'': '127.0.0.1', '0.0.0.0': '127.0.0.1', '::': '::1'}.get(bind_addr, bind_addr)
7017
+ try:
7018
+ with socket.create_connection((host, port), timeout=0.5):
7019
+ return True
7020
+ except OSError:
7021
+ return False
7022
+
7012
7023
  def start_web_server(bind_addr, port):
7024
+ if _port_in_use(bind_addr, port):
7025
+ error_handler('ERROR: unable to bind web gui to ' + str(bind_addr) + ':' + str(port) + ' - address already in use')
7013
7026
  try:
7014
7027
  httpd = EpingWebServer((bind_addr, port), EpingWebHandler)
7015
7028
  except OSError as e:
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: eping
3
- Version: 4.6
3
+ Version: 4.7
4
4
  Summary: Continuous ICMP reachability monitor built on fping, with a CSV logfile analyser (epinga)
5
5
  Author-email: Ewald Jeitler <ewald@jeitler.cc>
6
6
  License: GPL-3.0-or-later
@@ -17,7 +17,7 @@ Description-Content-Type: text/markdown
17
17
  License-File: LICENSE
18
18
  Dynamic: license-file
19
19
 
20
- # eping.py 4.06
20
+ # eping.py 4.07
21
21
 
22
22
  Continuous ICMP reachability monitor built on `fping`. Scans a host list in a loop,
23
23
  reports each host UP/DOWN/NO-DNS, counts state changes. CLI (curses) or web GUI.
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes