diff --git a/tests/test_nginx_vhosts.py b/tests/test_nginx_vhosts.py index 385d41e9874b2459a1759c41dd66c61a2e2b9d22..5c7965aaee97d89fe283b829bdf4137a4ad3ee75 100755 --- a/tests/test_nginx_vhosts.py +++ b/tests/test_nginx_vhosts.py @@ -1,13 +1,15 @@ #!/usr/bin/env python3 # -*- coding: utf-8 -*- ''' -Check the response status code of all enabled vhosts. -Allowed status code are: 403 and 200. -Also check Wowza response for all mediaserver vhosts. +This script checks for all enabled vhosts in Nginx conf that: +* The response status code is 200 or 403. +* The host is resolved as 127.0.0.1. +* The Wowza response is correct on /streaming/ (only for mediaserver vhosts). ''' import os import re import requests +import socket import sys @@ -48,34 +50,39 @@ for name in os.listdir(nginx_dir): found = True url = '%s://%s' % ('https' if https else 'http', domain) sys.stdout.write('Testing url "%s": ' % url) - try: - req = requests.get(url, verify=False, proxies={'http': '', 'https': ''}, timeout=10) - except Exception as e: - code = str(e) - else: - code = req.status_code - if code not in (200, 403): - sys.stdout.write('\033[91mKO (%s)\033[0m' % code) + ip = socket.gethostbyname(domain) + if ip != '127.0.0.1': + sys.stdout.write('\033[91mKO (domain is not resolved with 127.0.0.1)\033[0m') errors += 1 else: - sys.stdout.write('\033[92mOK (%s)\033[0m' % code) - if 'mediaserver' in name and wowza_dir: - # test /streaming url - sys.stdout.write(', streaming: ') - try: - req = requests.get(url + '/streaming/', verify=False, proxies={'http': '', 'https': ''}, timeout=10) - except Exception as e: - code = str(e) - else: - code = req.status_code - if code != 200: - sys.stdout.write('\033[91mKO (%s)\033[0m' % code) - errors += 1 - elif 'Wowza Streaming Engine' not in req.text: - sys.stdout.write('\033[91mKO (%s, %s)\033[0m' % (code, req.text.replace('\n', ' ')[:200])) - errors += 1 - else: - sys.stdout.write('\033[92mOK (%s)\033[0m' % code) + try: + req = requests.get(url, verify=False, proxies={'http': '', 'https': ''}, timeout=10) + except Exception as e: + code = str(e) + else: + code = req.status_code + if code not in (200, 403): + sys.stdout.write('\033[91mKO (%s)\033[0m' % code) + errors += 1 + else: + sys.stdout.write('\033[92mOK (%s)\033[0m' % code) + if 'mediaserver' in name and wowza_dir: + # test /streaming url + sys.stdout.write(', streaming: ') + try: + req = requests.get(url + '/streaming/', verify=False, proxies={'http': '', 'https': ''}, timeout=10) + except Exception as e: + code = str(e) + else: + code = req.status_code + if code != 200: + sys.stdout.write('\033[91mKO (%s)\033[0m' % code) + errors += 1 + elif 'Wowza Streaming Engine' not in req.text: + sys.stdout.write('\033[91mKO (%s, %s)\033[0m' % (code, req.text.replace('\n', ' ')[:200])) + errors += 1 + else: + sys.stdout.write('\033[92mOK (%s)\033[0m' % code) sys.stdout.write('.\n') if errors: