diff options
author | Viacheslav Hletenko <v.gletenko@vyos.io> | 2022-08-20 13:48:30 +0000 |
---|---|---|
committer | Viacheslav Hletenko <v.gletenko@vyos.io> | 2022-08-20 13:48:30 +0000 |
commit | c0f5d00d92667f2a45896180cd05747c3ba82782 (patch) | |
tree | fcc5be19c276aaadb6e306589eaa65cb15e60027 /python/vyos/util.py | |
parent | d247bc04b765a92c973ef93d94f8955312fdc13c (diff) | |
download | vyos-1x-c0f5d00d92667f2a45896180cd05747c3ba82782.tar.gz vyos-1x-c0f5d00d92667f2a45896180cd05747c3ba82782.zip |
ocserv: T4597: Fix check bounded port by service itself
We check listen port before commit service if is port available and
not bounded, but when we start openconnect our own port starts be
bounded by "ocserv-main" process and next commit will be fail as
port is already bound
To fix it, extend check if port already bonded and it is not our
self process "ocserv-main"
Diffstat (limited to 'python/vyos/util.py')
-rw-r--r-- | python/vyos/util.py | 23 |
1 files changed, 23 insertions, 0 deletions
diff --git a/python/vyos/util.py b/python/vyos/util.py index b86b1949c..c1459f02a 100644 --- a/python/vyos/util.py +++ b/python/vyos/util.py @@ -471,6 +471,29 @@ def process_named_running(name): return p.pid return None +def is_listen_port_bind_service(port: int, service: str) -> bool: + """Check if listen port bound to expected program name + :param port: Bind port + :param service: Program name + :return: bool + + Example: + % is_listen_port_bind_service(443, 'nginx') + True + % is_listen_port_bind_service(443, 'ocservr-main') + False + """ + from psutil import net_connections as connections + from psutil import Process as process + for connection in connections(): + addr = connection.laddr + pid = connection.pid + pid_name = process(pid).name() + pid_port = addr.port + if service == pid_name and port == pid_port: + return True + return False + def seconds_to_human(s, separator=""): """ Converts number of seconds passed to a human-readable interval such as 1w4d18h35m59s |