Skip to content

Commit 9c34569

Browse files
committed
Should work behind reverse proxy
1 parent be95217 commit 9c34569

File tree

6 files changed

+37
-14
lines changed

6 files changed

+37
-14
lines changed

gdbgui/server/app.py

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@
66
from flask import Flask, abort, request, session
77
from flask_compress import Compress # type: ignore
88
from flask_socketio import SocketIO, emit # type: ignore
9+
from werkzeug.middleware.proxy_fix import ProxyFix
910

1011
from .constants import DEFAULT_GDB_EXECUTABLE, STATIC_DIR, TEMPLATE_DIR
1112
from .http_routes import blueprint
@@ -15,6 +16,7 @@
1516
logger = logging.getLogger(__file__)
1617
# Create flask application and add some configuration keys to be used in various callbacks
1718
app = Flask(__name__, template_folder=str(TEMPLATE_DIR), static_folder=str(STATIC_DIR))
19+
app.wsgi_app = ProxyFix(app.wsgi_app, x_for=1,x_prefix=1)
1820
Compress(
1921
app
2022
) # add gzip compression to Flask. see https://github.com/libwilliam/flask-compress

gdbgui/src/js/GdbApi.tsx

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -37,6 +37,7 @@ if (debug) {
3737
// @ts-expect-error ts-migrate(2339) FIXME: Property 'initial_data' does not exist on type 'Wi... Remove this comment to see the full error message
3838
const initial_data = window.initial_data;
3939
let socket: SocketIOClient.Socket;
40+
const base = window.location.pathname.replace(/\/$/, '');
4041
const GdbApi = {
4142
getSocket: function() {
4243
return socket;
@@ -49,7 +50,8 @@ const GdbApi = {
4950
csrf_token: initial_data.csrf_token,
5051
gdbpid: initial_data.gdbpid,
5152
gdb_command: initial_data.gdb_command
52-
}
53+
},
54+
path: base + '/socket.io',
5355
});
5456

5557
socket.on("connect", function() {

gdbgui/src/js/ajaxOverride.ts

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,13 @@
1+
const originalAjax = $.ajax;
2+
const base = window.location.pathname.replace(/\/$/, '');
3+
console.log("AjaxOverride");
4+
5+
$.ajax = function (options: any) {
6+
// You can customize the options here
7+
const modifiedOptions = {
8+
...options,
9+
url: base + options.url
10+
};
11+
12+
return originalAjax.call(this, modifiedOptions);
13+
};

gdbgui/src/js/constants.ts

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,5 @@
1+
import './ajaxOverride'
2+
13
let constants = {
24
ENTER_BUTTON_NUM: 13,
35
TAB_BUTTON_NUM: 9,

gdbgui/templates/dashboard.html

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,9 @@
77
<link rel="shortcut icon" href="{{ url_for('static', filename='favicon.ico') }}" />
88
</head>
99

10+
11+
<base href="{{ url_for('static', filename='') }}">
12+
1013
<body class="w-screen h-screen bg-gray-300">
1114
<div id="dashboard">Loading dashboard...</div>
1215
</body>
@@ -15,5 +18,5 @@
1518
window.csrf_token = {{csrf_token | tojson}}
1619
window.default_command = {{default_command | tojson}}
1720
</script>
18-
<script type="text/javascript" src="static/js/dashboard.js?_={{version}}"></script>
21+
<script type="text/javascript" src="js/dashboard.js?_={{version}}"></script>
1922
</html>

gdbgui/templates/gdbgui.html

Lines changed: 13 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -18,24 +18,25 @@ <h3>Loading application, please wait.</h3>
1818
</div>
1919
</body>
2020

21-
<link href="static/vendor/css/bootstrap.min.css" rel="stylesheet" />
22-
<link href="static/vendor/css/gdbgui_awesomeplete.css" rel="stylesheet" />
21+
<base href="{{ url_for('static', filename='') }}">
22+
<link href="vendor/css/bootstrap.min.css" rel="stylesheet" />
23+
<link href="vendor/css/gdbgui_awesomeplete.css" rel="stylesheet" />
2324
<script>
2425
initial_data = {{initial_data | tojson}}
2526
debug = {{debug | tojson}}
2627
</script>
27-
<script type="text/javascript" src="static/vendor/js/jquery.min.js"></script>
28-
<script type="text/javascript" src="static/vendor/js/jquery.flot-0.8.3.min.js"></script>
29-
<script type="text/javascript" src="static/vendor/js/bootstrap.min.js"></script>
30-
<script type="text/javascript" src="static/vendor/js/lodash.min.js"></script>
31-
<script type="text/javascript" src="static/vendor/js/moment.min.js"></script>
32-
<script type="text/javascript" src="static/vendor/js/vis-4.20.1.min.js"></script>
33-
<script type="text/javascript" src="static/vendor/js/awesomeplete.min.js"></script>
34-
<script type="text/javascript" src="static/vendor/js/splitjs.min-1.2.0.js"></script>
28+
<script type="text/javascript" src="vendor/js/jquery.min.js"></script>
29+
<script type="text/javascript" src="vendor/js/jquery.flot-0.8.3.min.js"></script>
30+
<script type="text/javascript" src="vendor/js/bootstrap.min.js"></script>
31+
<script type="text/javascript" src="vendor/js/lodash.min.js"></script>
32+
<script type="text/javascript" src="vendor/js/moment.min.js"></script>
33+
<script type="text/javascript" src="vendor/js/vis-4.20.1.min.js"></script>
34+
<script type="text/javascript" src="vendor/js/awesomeplete.min.js"></script>
35+
<script type="text/javascript" src="vendor/js/splitjs.min-1.2.0.js"></script>
3536

36-
<script type="text/javascript" src="static/js/main.js?_={{version}}"></script>
37+
<script type="text/javascript" src="js/main.js?_={{version}}"></script>
3738

3839
{% for theme in themes %}
39-
<link href="static/vendor/css/pygments/{{theme}}.css" rel="stylesheet" />
40+
<link href="vendor/css/pygments/{{theme}}.css" rel="stylesheet" />
4041
{% endfor %}
4142
</html>

0 commit comments

Comments
 (0)