#To define a particular parameter, replace the 'parameterName' inside itsm.getParameter('parameterName') with that parameter's name
import socket
import sys

subdomain = itsm.getParameter("subdomain")      #You need to specify subdomain upon running the procedure


def check_server(address, port, type, nr):
    try:
        if nr == 1:
            s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
            s.settimeout(10)
            s.connect((address, port))
            s.shutdown(2)
            print("Success connecting to %s on port %s %s" % (address, port, type))
            return "Successful"
        if nr == 2:
            s = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
            s.settimeout(10)
            a= 'ef070401002d201bab1c00197e02e5bc3c31'
            b= 'cd48b5a9e77250e09e50345d003395856ce8'
            c= '1f2b7382dee72602f798b642f14140'
            request = bytearray.fromhex(a+b+c)
            # print(request)
            s.sendto(request, (address, port))
            recv, svr = s.recvfrom(1024)
            s.shutdown(2)
            print("Success connecting to %s on port %s %s" % (address, port, type))
            return "Successful"
        if nr == 3:
            s = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
            s.settimeout(10)
            request = bytearray.fromhex("000100002112a442324b47584530545977646c6a")
            # print(request)
            s.sendto(request, (address, port))
            recv, svr = s.recvfrom(1024)
            s.shutdown(2)
            print("Success connecting to %s on port %s %s" % (address, port, type))
            return "Successful"
        if nr == 4:
            s = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
            s.settimeout(10)
            request = bytearray.fromhex("000300082112a44257474b612f2f7a6f633237530019000411000000")
            # print(request)
            s.sendto(request, (address, port))
            recv, svr = s.recvfrom(1024)
            s.shutdown(2)
            print("Success connecting to %s on port %s %s" % (address, port, type))
            return "Successful"
    except:
        print("Connection to %s on port %s failed: %s %s" % (address, port, sys.exc_info()[:2], type))
        return "Failed    "


print("Firewall EU instance\r\n")

print("Comodo Client - Communication (CCC)")
check_server(subdomain + ".cmdm.comodo.com", 443, "HTTPS", 1)
check_server("mdmsupport.comodo.com", 443, "HTTPS", 1)
check_server("plugins.cmdm.comodo.com", 443, "HTTPS", 1)
check_server(subdomain + ".cmdm.comodo.com", 443, "HTTPS", 1)
check_server("xmpp.cmdm.comodo.com", 443, "HTTPS", 1)
check_server("18.197.167.137", 443, "HTTPS", 1)
check_server("34.227.128.175", 443, "HTTPS", 1)
check_server("one.comodo.com", 443, "HTTPS", 1)
check_server("platform.xcitium.com", 443, "HTTPS", 1)
check_server("platform-downloads.comodo.com", 443, "HTTPS", 1)
check_server("download.comodo.com", 443, "HTTPS", 1)
check_server("162.255.25.209", 443, "HTTPS", 1)
check_server("download.comodo.com", 80, "HTTP", 1)
check_server("162.255.25.209", 80, "HTTP", 1)
check_server("cdn.download.comodo.com", 443, "HTTPS", 1)
check_server("cdn.download.comodo.com", 80, "HTTP", 1)
check_server("ocsp.comodoca.com", 80, "HTTP", 1)
check_server("crl.comodoca.com", 80, "HTTP", 1)
check_server("patchportal.one.comodo.com", 443, "HTTPS", 1)
check_server("cescollector.cwatchapi.com", 443, "HTTPS", 1)

print("\r\nComodo Client - Security (CCS)")
check_server("fls.security.comodo.com", 4447, "UDP", 2)
check_server("fls.security.comodo.com", 53, "UDP", 2)
check_server("45.77.153.162", 4447, "UDP", 2)
check_server("45.77.153.162", 53, "UDP", 2)
check_server("fls.security.comodo.com", 4448, "TCP", 1)
check_server("fls.security.comodo.com", 80, "TCP", 1)
check_server("45.77.153.162", 4448, "TCP", 1)
check_server("45.77.153.162", 80, "TCP", 1)
check_server("valkyrie.comodo.com", 443, "HTTPS", 1)
check_server("cdn.download.comodo.com", 80, "HTTP", 1)
check_server("cdn.download.comodo.com", 443, "HTTPS", 1)
check_server("download.comodo.com", 80, "HTTP", 1)
check_server("162.255.25.209", 80, "HTTP", 1)
check_server("download.comodo.com", 443, "HTTPS", 1)
check_server("162.255.25.209", 443, "HTTPS", 1)
check_server("s3-eu-west-1.amazonaws.com", 443, "HTTPS", 1)
check_server(subdomain + ".cmdm.comodo.com", 443, "HTTPS", 1)
check_server("ocsp.comodoca.com", 80, "HTTP", 1)
check_server("crl.comodoca.com", 80, "HTTP", 1)

print("\r\nComodo Remote Control")
check_server("xmpp.cmdm.comodo.com", 443, "HTTPS", 1)
check_server("18.197.167.137", 443, "HTTPS", 1)
check_server("34.227.128.175", 443, "HTTPS", 1)
check_server("stun.l.google.com", 19302, "UDP", 3)
check_server("18.196.107.208", 3478, "UDP", 4)
check_server("52.29.123.206", 3478, "UDP", 4)
check_server("34.232.133.48", 3478, "UDP", 4)
check_server("18.208.23.45", 3478, "UDP", 4)
