def do_GET(self):
        b_obj = self.barix
        NOT_CONNECTED = "<b>NOT CONNECTED</b>"

        left_level_avg = 0
        right_level_avg = 0
        level_avg_window_minutes = 0

        if level_history:
            N = len(level_history)
            left_level_avg = sum(L for L, _ in level_history) / N
            right_level_avg = sum(R for _, R in level_history) / N
            level_avg_window_minutes = N * _POLLING_FREQUENCY_S / 60

        barix_info = {
            "status_time": b_obj.last_update_time_str,
            "status": b_obj.status,
            "left_level": b_obj.left_level,
            "right_level": b_obj.right_level,
            "left_level_avg": int(left_level_avg),
            "right_level_avg": int(right_level_avg),
            "level_avg_window_minutes": int(level_avg_window_minutes),
            "live365_connected": NOT_CONNECTED,
            "archiver_connected": NOT_CONNECTED,
            }

        # TODO(trow): Check IP address.
        if "12345" in b_obj.clients:
            barix_info["live365_connected"] = "connected"
        # TODO(trow): Check IP address.
        if "12346" in b_obj.clients:
            barix_info["archiver_connected"] = "connected"

        response_str = _STATUS_PAGE % barix_info
        self.send_response(200)
        self.send_header("Content-Type", "text/html")
        self.send_header("Content-Length", str(len(response_str)))
        self.end_headers()
        self.wfile.write(response_str)