]>
git.siccegge.de Git - dane-monitoring-plugins.git/blob - check_dane/https.py
3 from __future__
import print_function
8 from ssl
import SSLContext
, PROTOCOL_TLSv1_2
, CERT_REQUIRED
9 from socket
import socket
11 from check_dane
.cert
import add_certificate_options
12 from check_dane
.abstract
import DaneChecker
15 class HttpsDaneChecker(DaneChecker
):
16 def _init_connection(self
, family
, host
, port
):
17 connection
= self
._sslcontext
.wrap_socket(socket(family
),
19 connection
.connect((host
, port
))
20 connection
.send(b
"HEAD / HTTP/1.1\r\nHost: %s\r\n\r\n" % host
.encode())
21 answer
= connection
.recv(512)
32 def _close_connection(self
, connection
):
37 DaneChecker
.__init
__(self
)
40 def set_args(self
, args
):
41 DaneChecker
.set_args(self
, args
)
43 self
._port
= args
.port
45 sslcontext
= SSLContext(PROTOCOL_TLSv1_2
)
46 sslcontext
.verify_mode
= CERT_REQUIRED
47 sslcontext
.load_verify_locations(args
.castore
)
49 self
._sslcontext
= sslcontext
52 def generate_menu(self
, argparser
):
53 DaneChecker
.generate_menu(self
, argparser
)
54 argparser
.add_argument("-p", "--port",
55 action
="store", type=int, default
=443,
62 logging
.basicConfig(format
='%(levelname)5s %(message)s')
63 checker
= HttpsDaneChecker()
64 parser
= argparse
.ArgumentParser()
66 parser
.add_argument("--verbose", action
="store_true")
67 parser
.add_argument("--quiet", action
="store_true")
69 checker
.generate_menu(parser
)
70 add_certificate_options(parser
)
72 args
= parser
.parse_args()
73 checker
.set_args(args
)
76 logging
.getLogger().setLevel(logging
.DEBUG
)
78 logging
.getLogger().setLevel(logging
.WARNING
)
80 logging
.getLogger().setLevel(logging
.INFO
)
82 return checker
.check()
85 if __name__
== '__main__':