Skip to content

Commit 511723c

Browse files
authored
Return api server host and db host info from diagnostic endpt (#1343)
* added api server host and db host info to data returned in diagnostics endpoint
1 parent d8fae2f commit 511723c

File tree

1 file changed

+22
-4
lines changed

1 file changed

+22
-4
lines changed

src/server/endpoints/admin.py

+22-4
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,13 @@
1+
import json
12
from pathlib import Path
3+
import socket
24
from typing import Dict, List, Set
35

46
from flask import Blueprint, make_response, render_template_string, request
57
from werkzeug.exceptions import NotFound, Unauthorized
68
from werkzeug.utils import redirect
79

8-
from .._common import log_info_with_request
10+
from .._common import db, log_info_with_request
911
from .._config import ADMIN_PASSWORD, API_KEY_REGISTRATION_FORM_LINK, API_KEY_REMOVAL_REQUEST_LINK, REGISTER_WEBHOOK_TOKEN
1012
from .._db import WriteSession
1113
from .._security import resolve_auth_token
@@ -130,6 +132,22 @@ def diags():
130132
# such as a full current "X-Forwarded-For" path as inserted into headers by intermediate proxies...
131133
# (but only when initiated purposefully by us to keep junk out of the logs)
132134
_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

Comments
 (0)