Skip to content

Commit 054a25c

Browse files
committed
no-check-origin option & change cdn
unpkg returns 520, change to jsdelivr
1 parent 163c773 commit 054a25c

4 files changed

Lines changed: 20 additions & 12 deletions

File tree

main.go

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -124,6 +124,7 @@ func main() {
124124
keyFile := flag.String("key", "https.key", "path to https key file")
125125
max := flag.Int("max", 0, "max number of connections, 0 means no limit")
126126
credential := flag.String("credit", "", "credential for authentication")
127+
noCheckOrigin := flag.Bool("no-check-origin", false, "do not check origin")
127128
statics := StringArray{}
128129
flag.Var(&statics, "static", "folder to provide extra static files")
129130

@@ -169,10 +170,16 @@ func main() {
169170
}
170171
}
171172

173+
var originChecker func(r *http.Request) bool = nil
174+
if *noCheckOrigin {
175+
originChecker = func(r *http.Request) bool { return true }
176+
}
177+
172178
tty := ttyd.NewTTYd(ttyd.Config{
173179
OtherFSList: fsList,
174180
Gen: generator,
175181
MaxConn: int32(*max),
182+
CheckOrigin: originChecker,
176183
})
177184
portString := fmt.Sprintf(":%d", *port)
178185
_, crtErr := os.Stat(*crtFile)

ttyd/frontend/index.html

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -4,11 +4,11 @@
44
<meta charset="UTF-8">
55
<meta http-equiv="X-UA-Compatible" content="IE=edge">
66
<meta name="viewport" content="width=device-width, initial-scale=1.0">
7-
<link rel="stylesheet" href="https://unpkg.com/xterm@4.19.0/css/xterm.css" />
8-
<script src="https://unpkg.com/xterm@4.19.0/lib/xterm.js"></script>
9-
<script src="https://unpkg.com/xterm-addon-fit@0.5.0/lib/xterm-addon-fit.js"></script>
10-
<script src="https://unpkg.com/xterm-addon-unicode11@0.3.0/lib/xterm-addon-unicode11.js"></script>
11-
<!-- <script src="https://unpkg.com/xterm-addon-webgl@0.12.0/lib/xterm-addon-webgl.js"></script> -->
7+
<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/xterm@4.19.0/css/xterm.css" />
8+
<script src="https://cdn.jsdelivr.net/npm/xterm@4.19.0/lib/xterm.js"></script>
9+
<script src="https://cdn.jsdelivr.net/npm/xterm-addon-fit@0.5.0/lib/xterm-addon-fit.js"></script>
10+
<script src="https://cdn.jsdelivr.net/npm/xterm-addon-unicode11@0.3.0/lib/xterm-addon-unicode11.js"></script>
11+
<!-- <script src="https://cdn.jsdelivr.net/npm/xterm-addon-webgl@0.12.0/lib/xterm-addon-webgl.js"></script> -->
1212
<title>XtermJS</title>
1313
<style>
1414
body {

ttyd/frontend/main.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -221,7 +221,7 @@ globalThis.loadTermFont = loadTermFont;
221221
globalThis.RenderFonts = [];
222222

223223
window.addEventListener('load', async function () {
224-
await loadTermFont("PureNerdFont", [{ url: "https://unpkg.com/@azurity/pure-nerd-font@1.0.0/PureNerdFont.woff2" }]);
224+
await loadTermFont("PureNerdFont", [{ url: "https://cdn.jsdelivr.net/npm/@azurity/pure-nerd-font@1.0.0/PureNerdFont.woff2" }]);
225225
await prepareTheme();
226226
if (globalThis.RenderFonts.length == 1) {
227227
// only nerd-font prepared, use go mono as default font

ttyd/ttyd.go

Lines changed: 7 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -39,14 +39,13 @@ func init() {
3939
}
4040

4141
type TTYd struct {
42-
mux *http.ServeMux
42+
mux *http.ServeMux
43+
upgrader websocket.Upgrader
4344
}
4445

4546
type CmdGenerator func() *exec.Cmd
4647

47-
var upgrader = websocket.Upgrader{} // use default options
48-
49-
func ws(w http.ResponseWriter, r *http.Request, gen CmdGenerator, connCounter *int32, max int32) {
48+
func ws(upgrader websocket.Upgrader, w http.ResponseWriter, r *http.Request, gen CmdGenerator, connCounter *int32, max int32) {
5049
c, err := upgrader.Upgrade(w, r, nil)
5150
if err != nil {
5251
Logger.Print("upgrade:", err)
@@ -83,11 +82,13 @@ type Config struct {
8382
OtherFSList []fs.FS // Other fs that need to be served as static files.
8483
Gen CmdGenerator // A generator that creates the actual command.
8584
MaxConn int32 // Maximum number of connections. Unlimited if <= 0.
85+
CheckOrigin func(r *http.Request) bool
8686
}
8787

8888
func NewTTYd(conf Config) *TTYd {
8989
ttyd := &TTYd{
90-
mux: http.NewServeMux(),
90+
mux: http.NewServeMux(),
91+
upgrader: websocket.Upgrader{CheckOrigin: conf.CheckOrigin},
9192
}
9293
if conf.MaxConn < 0 {
9394
conf.MaxConn = 0
@@ -104,7 +105,7 @@ func NewTTYd(conf Config) *TTYd {
104105
Pair: map[string]string{},
105106
}, "/index.html"))
106107
ttyd.mux.HandleFunc("/ws", func(w http.ResponseWriter, r *http.Request) {
107-
ws(w, r, conf.Gen, &connCounter, conf.MaxConn)
108+
ws(ttyd.upgrader, w, r, conf.Gen, &connCounter, conf.MaxConn)
108109
})
109110
ttyd.mux.HandleFunc("/themes.json", func(w http.ResponseWriter, r *http.Request) {
110111
themes := ThemeList(serveFS)

0 commit comments

Comments
 (0)