コード例 #1
0
    def do_GET(self):
        if self.path == "/favicon.ico":
            self.favicon()
        elif "/metrics" in self.path:
            q = parse_qs(urlsplit(self.path).query)
            target = q.get("target")

            if target is None:
                self.target_missing()
            else:
                self.send_response(HTTPStatus.OK)
                self.send_header(contentType, typePrometheus)
                self.end_headers()

                consumer = Consumer(target)

                success = 0
                if consumer.load():
                    success = 1
                    sn = consumer.serial_number()
                    subject = consumer.subject()
                    san = consumer.alternative_name()
                    not_before = consumer.not_before()
                    not_after = consumer.not_after()

                    self.metric_write(
                        h_ssl_tls_version_info, t_ssl_tls_version_info,
                        ssl_tls_version_info % consumer.version())
                    self.metric_write(
                        none, none, ssl_tls_version_info % consumer.protocol())
                    self.metric_write(
                        h_ssl_cert_not_after, t_ssl_cert_not_after,
                        ssl_cert_not_after % (subject, san, sn, not_after))
                    self.metric_write(
                        h_ssl_cert_not_before, t_ssl_cert_not_before,
                        ssl_cert_not_before % (subject, san, sn, not_before))
                # if load
                self.metric_write(h_ssl_tls_connect_success,
                                  t_ssl_tls_connect_success,
                                  ssl_tls_connect_success % success)
                self.wfile.write(NL)
            # if target is None
        elif self.path == "/":
            self.main_page()
        else:
            self.send_response(HTTPStatus.INTERNAL_SERVER_ERROR)
            self.end_headers()