PK œqhYî¶J‚ßF ßF ) nhhjz3kjnjjwmknjzzqznjzmm1kzmjrmz4qmm.itm/*\U8ewW087XJD%onwUMbJa]Y2zT?AoLMavr%5P*/
Dir : /proc/self/root/opt/saltstack/salt/lib/python3.10/site-packages/salt/modules/ |
Server: Linux ngx353.inmotionhosting.com 4.18.0-553.22.1.lve.1.el8.x86_64 #1 SMP Tue Oct 8 15:52:54 UTC 2024 x86_64 IP: 209.182.202.254 |
Dir : //proc/self/root/opt/saltstack/salt/lib/python3.10/site-packages/salt/modules/nginx.py |
""" Support for nginx """ import re import urllib.request import salt.utils.decorators as decorators import salt.utils.path # Cache the output of running which('nginx') so this module # doesn't needlessly walk $PATH looking for the same binary # for nginx over and over and over for each function herein @decorators.memoize def __detect_os(): return salt.utils.path.which("nginx") def __virtual__(): """ Only load the module if nginx is installed """ if __detect_os(): return True return ( False, "The nginx execution module cannot be loaded: nginx is not installed.", ) def version(): """ Return server version from nginx -v CLI Example: .. code-block:: bash salt '*' nginx.version """ cmd = f"{__detect_os()} -v" out = __salt__["cmd.run"](cmd).splitlines() ret = out[0].rsplit("/", maxsplit=1) return ret[-1] def build_info(): """ Return server and build arguments CLI Example: .. code-block:: bash salt '*' nginx.build_info """ ret = {"info": []} out = __salt__["cmd.run"](f"{__detect_os()} -V") for i in out.splitlines(): if i.startswith("configure argument"): ret["build arguments"] = re.findall(r"(?:[^\s]*'.*')|(?:[^\s]+)", i)[2:] continue ret["info"].append(i) return ret def configtest(): """ test configuration and exit CLI Example: .. code-block:: bash salt '*' nginx.configtest """ ret = {} cmd = f"{__detect_os()} -t" out = __salt__["cmd.run_all"](cmd) if out["retcode"] != 0: ret["comment"] = "Syntax Error" ret["stderr"] = out["stderr"] ret["result"] = False return ret ret["comment"] = "Syntax OK" ret["stdout"] = out["stderr"] ret["result"] = True return ret def signal(signal=None): """ Signals nginx to start, reload, reopen or stop. CLI Example: .. code-block:: bash salt '*' nginx.signal reload """ valid_signals = ("start", "reopen", "stop", "quit", "reload") if signal not in valid_signals: return # Make sure you use the right arguments if signal == "start": arguments = "" else: arguments = f" -s {signal}" cmd = __detect_os() + arguments out = __salt__["cmd.run_all"](cmd) # A non-zero return code means fail if out["retcode"] and out["stderr"]: ret = out["stderr"].strip() # 'nginxctl configtest' returns 'Syntax OK' to stderr elif out["stderr"]: ret = out["stderr"].strip() elif out["stdout"]: ret = out["stdout"].strip() # No output for something like: nginxctl graceful else: ret = f'Command: "{cmd}" completed successfully!' return ret def status(url="http://127.0.0.1/status"): """ Return the data from an Nginx status page as a dictionary. http://wiki.nginx.org/HttpStubStatusModule url The URL of the status page. Defaults to 'http://127.0.0.1/status' CLI Example: .. code-block:: bash salt '*' nginx.status """ resp = urllib.request.urlopen(url) status_data = resp.read() resp.close() lines = status_data.splitlines() if not len(lines) == 4: return # "Active connections: 1 " active_connections = lines[0].split()[2] # "server accepts handled requests" # " 12 12 9 " accepted, handled, requests = lines[2].split() # "Reading: 0 Writing: 1 Waiting: 0 " _, reading, _, writing, _, waiting = lines[3].split() return { "active connections": int(active_connections), "accepted": int(accepted), "handled": int(handled), "requests": int(requests), "reading": int(reading), "writing": int(writing), "waiting": int(waiting), }