|
| 1 | +import json |
1 | 2 | from pathlib import Path
|
| 3 | +import socket |
2 | 4 | from typing import Dict, List, Set
|
3 | 5 |
|
4 | 6 | from flask import Blueprint, make_response, render_template_string, request
|
5 | 7 | from werkzeug.exceptions import NotFound, Unauthorized
|
6 | 8 | from werkzeug.utils import redirect
|
7 | 9 |
|
8 |
| -from .._common import log_info_with_request |
| 10 | +from .._common import db, log_info_with_request |
9 | 11 | from .._config import ADMIN_PASSWORD, API_KEY_REGISTRATION_FORM_LINK, API_KEY_REMOVAL_REQUEST_LINK, REGISTER_WEBHOOK_TOKEN
|
10 | 12 | from .._db import WriteSession
|
11 | 13 | from .._security import resolve_auth_token
|
@@ -130,6 +132,22 @@ def diags():
|
130 | 132 | # such as a full current "X-Forwarded-For" path as inserted into headers by intermediate proxies...
|
131 | 133 | # (but only when initiated purposefully by us to keep junk out of the logs)
|
132 | 134 | _require_admin()
|
133 |
| - log_info_with_request("diagnostics", headers=request.headers) |
134 |
| - response_text = f"request path: {request.headers.get('X-Forwarded-For', 'idk')}" |
135 |
| - return make_response(response_text, 200, {'content-type': 'text/plain'}) |
| 135 | + |
| 136 | + try: |
| 137 | + serving_host = socket.gethostbyname_ex(socket.gethostname()) |
| 138 | + except e: |
| 139 | + serving_host = e |
| 140 | + |
| 141 | + try: |
| 142 | + db_host = db.execute('SELECT @@hostname AS hn').fetchone()['hn'] |
| 143 | + except e: |
| 144 | + db_host = e |
| 145 | + |
| 146 | + log_info_with_request("diagnostics", headers=request.headers, serving_host=serving_host, database_host=db_host) |
| 147 | + |
| 148 | + response_data = { |
| 149 | + 'request_path': request.headers.get('X-Forwarded-For', 'idfk'), |
| 150 | + 'serving_host': serving_host, |
| 151 | + 'database_host': db_host, |
| 152 | + } |
| 153 | + return make_response(json.dumps(response_data), 200, {'content-type': 'text/plain'}) |
0 commit comments