From e12cc063d68ea6c635bf4e1602c2da57dbac95b5 Mon Sep 17 00:00:00 2001 From: VirtuBox Date: Sun, 21 Apr 2024 12:48:11 +0200 Subject: [PATCH] Improve WordOps server ip check --- wo/cli/plugins/stack_pref.py | 5 ++- wo/core/checkfqdn.py | 63 +++++++++++++++++++++++------------- 2 files changed, 44 insertions(+), 24 deletions(-) diff --git a/wo/cli/plugins/stack_pref.py b/wo/cli/plugins/stack_pref.py index 4c91b7b..e663db2 100644 --- a/wo/cli/plugins/stack_pref.py +++ b/wo/cli/plugins/stack_pref.py @@ -22,6 +22,7 @@ from wo.core.template import WOTemplate from wo.core.variables import WOVar from wo.core.stackconf import WOConf from wo.core.download import WODownload +from wo.core.checkfqdn import WOFqdn def pre_pref(self, apt_packages): @@ -404,7 +405,9 @@ def post_pref(self, apt_packages, packages, upgrade=False): "/var/www/22222/cert/22222.key;\n" "ssl_stapling off;\n") - server_ip = requests.get('http://v4.wordops.eu') + server_ip = WOFqdn.get_server_ip(self) + if server_ip is None: + server_ip = "0.0.0.0" if set(["nginx"]).issubset(set(apt_packages)): print("WordOps backend configuration was successful\n" diff --git a/wo/core/checkfqdn.py b/wo/core/checkfqdn.py index 2ce5533..d154e50 100644 --- a/wo/core/checkfqdn.py +++ b/wo/core/checkfqdn.py @@ -4,33 +4,50 @@ from wo.core.shellexec import WOShellExec from wo.core.variables import WOVar -def check_fqdn(self, wo_host): - """FQDN check with WordOps, for mail server hostname must be FQDN""" - # wo_host=os.popen("hostname -f | tr -d '\n'").read() - if '.' in wo_host: - WOVar.wo_fqdn = wo_host - with open('/etc/hostname', encoding='utf-8', mode='w') as hostfile: - hostfile.write(wo_host) +class WOFqdn: + """IP and FQDN tools for WordOps""" + + def check_fqdn(self, wo_host): + """FQDN check with WordOps, for mail server hostname must be FQDN""" + # wo_host=os.popen("hostname -f | tr -d '\n'").read() + if '.' in wo_host: + WOVar.wo_fqdn = wo_host + with open('/etc/hostname', encoding='utf-8', mode='w') as hostfile: + hostfile.write(wo_host) + + WOShellExec.cmd_exec(self, "sed -i \"1i\\127.0.0.1 {0}\" /etc/hosts" + .format(wo_host)) + if WOVar.wo_distro == 'debian': + WOShellExec.cmd_exec(self, "/etc/init.d/hostname.sh start") + else: + WOShellExec.cmd_exec(self, "service hostname restart") - WOShellExec.cmd_exec(self, "sed -i \"1i\\127.0.0.1 {0}\" /etc/hosts" - .format(wo_host)) - if WOVar.wo_distro == 'debian': - WOShellExec.cmd_exec(self, "/etc/init.d/hostname.sh start") else: - WOShellExec.cmd_exec(self, "service hostname restart") + wo_host = input("Enter hostname [fqdn]:") + WOFqdn.check_fqdn(self, wo_host) - else: - wo_host = input("Enter hostname [fqdn]:") - check_fqdn(self, wo_host) + def check_fqdn_ip(self): + """Check if server hostname resolved server IP""" + try: + x = requests.get('http://v4.wordops.eu') + ip = (x.text).strip() + wo_fqdn = WOVar.wo_fqdn + y = requests.get('http://v4.wordops.eu/dns/{0}/'.format(wo_fqdn)) + ip_fqdn = (y.text).strip() -def check_fqdn_ip(self): - """Check if server hostname resolved server IP""" - x = requests.get('http://v4.wordops.eu') - ip = (x.text).strip() + return bool(ip == ip_fqdn) + except requests.exceptions.RequestException as e: + print("Error occurred during request:", e) + return False - wo_fqdn = WOVar.wo_fqdn - y = requests.get('http://v4.wordops.eu/dns/{0}/'.format(wo_fqdn)) - ip_fqdn = (y.text).strip() + def get_server_ip(self): + """Get the server externet IP""" + try: + x = requests.get('http://v4.wordops.eu') + ip = (x.text).strip() - return bool(ip == ip_fqdn) + return ip + except requests.exceptions.RequestException as e: + print("Error occurred during request:", e) + return None