Просмотр исходного кода

delete websocket support as per discussion on #139

tags/v0.9.2-alpha
Shivaram Lingamneni 6 лет назад
Родитель
Сommit
3b0f1ff1cc
4 измененных файлов: 2 добавлений и 133 удалений
  1. 0
    1
      irc/config.go
  2. 2
    73
      irc/server.go
  3. 0
    56
      irc/websocket.go
  4. 0
    3
      oragono.yaml

+ 0
- 1
irc/config.go Просмотреть файл

@@ -196,7 +196,6 @@ type Config struct {
196 196
 		Password           string
197 197
 		Name               string
198 198
 		Listen             []string
199
-		Wslisten           string                      `yaml:"ws-listen"`
200 199
 		TLSListeners       map[string]*TLSListenConfig `yaml:"tls-listeners"`
201 200
 		STS                STSConfig
202 201
 		RestAPI            RestAPIConfig `yaml:"rest-api"`

+ 2
- 73
irc/server.go Просмотреть файл

@@ -38,8 +38,8 @@ var (
38 38
 )
39 39
 
40 40
 const (
41
-	// when shutting down the REST and websocket servers, wait this long
42
-	// before killing active non-WS connections. TODO: this might not be
41
+	// when shutting down the REST server, wait this long
42
+	// before killing active connections. TODO: this might not be
43 43
 	// necessary at all? but it seems prudent to avoid potential resource
44 44
 	// leaks
45 45
 	httpShutdownTimeout = time.Second
@@ -124,7 +124,6 @@ type Server struct {
124 124
 	store                        *buntdb.DB
125 125
 	stsEnabled                   bool
126 126
 	whoWas                       *WhoWasList
127
-	wsServer                     *http.Server
128 127
 }
129 128
 
130 129
 var (
@@ -382,75 +381,6 @@ func (server *Server) createListener(addr string, tlsConfig *tls.Config) *Listen
382 381
 	return &wrapper
383 382
 }
384 383
 
385
-//
386
-// websocket listen goroutine
387
-//
388
-
389
-func (server *Server) setupWSListener(config *Config) {
390
-	// unconditionally shut down the old listener because we can't tell
391
-	// whether we need to reload the TLS certificate
392
-	if server.wsServer != nil {
393
-		ctx, _ := context.WithTimeout(context.Background(), httpShutdownTimeout)
394
-		server.wsServer.Shutdown(ctx)
395
-		server.wsServer.Close()
396
-	}
397
-
398
-	if config.Server.Wslisten == "" {
399
-		server.wsServer = nil
400
-		return
401
-	}
402
-
403
-	addr := config.Server.Wslisten
404
-	tlsConfig := config.Server.TLSListeners[addr]
405
-	handler := http.NewServeMux()
406
-	wsServer := http.Server{
407
-		Addr:    addr,
408
-		Handler: handler,
409
-	}
410
-
411
-	handler.HandleFunc("/", func(w http.ResponseWriter, r *http.Request) {
412
-		if r.Method != "GET" {
413
-			server.logger.Error("ws", addr, fmt.Sprintf("%s method not allowed", r.Method))
414
-			return
415
-		}
416
-
417
-		// We don't have any subprotocols, so if someone attempts to `new
418
-		// WebSocket(server, "subprotocol")` they'll break here, instead of
419
-		// getting the default, ambiguous, response from gorilla.
420
-		if v, ok := r.Header["Sec-Websocket-Protocol"]; ok {
421
-			http.Error(w, fmt.Sprintf("WebSocket subprocotols (e.g. %s) not supported", v), 400)
422
-		}
423
-
424
-		ws, err := upgrader.Upgrade(w, r, nil)
425
-		if err != nil {
426
-			server.logger.Error("ws", addr, fmt.Sprintf("%s websocket upgrade error: %s", server.name, err))
427
-			return
428
-		}
429
-
430
-		newConn := clientConn{
431
-			Conn:  WSContainer{ws},
432
-			IsTLS: tlsConfig != nil,
433
-		}
434
-		server.newConns <- newConn
435
-	})
436
-
437
-	go func() {
438
-		var err error
439
-		server.logger.Info("listeners", fmt.Sprintf("websocket listening on %s, tls=%t.", addr, tlsConfig != nil))
440
-
441
-		if tlsConfig != nil {
442
-			err = wsServer.ListenAndServeTLS(tlsConfig.Cert, tlsConfig.Key)
443
-		} else {
444
-			err = wsServer.ListenAndServe()
445
-		}
446
-		if err != nil {
447
-			server.logger.Error("listeners", fmt.Sprintf("websocket ListenAndServe error: %s", err))
448
-		}
449
-	}()
450
-
451
-	server.wsServer = &wsServer
452
-}
453
-
454 384
 // generateMessageID returns a network-unique message ID.
455 385
 func (server *Server) generateMessageID() string {
456 386
 	return fmt.Sprintf("%s-%s", strconv.FormatInt(time.Now().UTC().UnixNano(), 10), strconv.FormatInt(rand.Int63(), 10))
@@ -1497,7 +1427,6 @@ func (server *Server) applyConfig(config *Config, initial bool) error {
1497 1427
 
1498 1428
 	// we are now open for business
1499 1429
 	server.setupListeners(config)
1500
-	server.setupWSListener(config)
1501 1430
 	server.setupRestAPI(config)
1502 1431
 
1503 1432
 	return nil

+ 0
- 56
irc/websocket.go Просмотреть файл

@@ -1,56 +0,0 @@
1
-// Copyright (c) 2015 Niels Freier
2
-// Copyright (c) 2015 Edmund Huber
3
-// released under the MIT license
4
-
5
-package irc
6
-
7
-import (
8
-	"net/http"
9
-	"time"
10
-
11
-	"github.com/gorilla/websocket"
12
-)
13
-
14
-var upgrader = websocket.Upgrader{
15
-	ReadBufferSize:  2048,
16
-	WriteBufferSize: 2048,
17
-	// If a WS session contains sensitive information, and you choose to use
18
-	// cookies for authentication (during the HTTP(S) upgrade request), then
19
-	// you should check that Origin is a domain under your control. If it
20
-	// isn't, then it is possible for users of your site, visiting a naughty
21
-	// Origin, to have a WS opened using their credentials. See
22
-	// http://www.christian-schneider.net/CrossSiteWebSocketHijacking.html#main.
23
-	// We don't care about Origin because the (IRC) authentication is contained
24
-	// in the WS stream -- the WS session is not privileged when it is opened.
25
-	CheckOrigin: func(r *http.Request) bool { return true },
26
-}
27
-
28
-// WSContainer holds the websocket.
29
-type WSContainer struct {
30
-	*websocket.Conn
31
-}
32
-
33
-// Read reads new incoming messages.
34
-func (ws WSContainer) Read(msg []byte) (int, error) {
35
-	ty, bytes, err := ws.ReadMessage()
36
-	if ty == websocket.TextMessage {
37
-		n := copy(msg, []byte(string(bytes)+"\r\n\r\n"))
38
-		return n, err
39
-	}
40
-	// Binary, and other kinds of messages, are thrown away.
41
-	return 0, nil
42
-}
43
-
44
-// Write writes lines out to the websocket.
45
-func (ws WSContainer) Write(msg []byte) (int, error) {
46
-	err := ws.WriteMessage(websocket.TextMessage, msg)
47
-	return len(msg), err
48
-}
49
-
50
-// SetDeadline sets the read and write deadline on this websocket.
51
-func (ws WSContainer) SetDeadline(t time.Time) error {
52
-	if err := ws.SetWriteDeadline(t); err != nil {
53
-		return err
54
-	}
55
-	return ws.SetReadDeadline(t)
56
-}

+ 0
- 3
oragono.yaml Просмотреть файл

@@ -17,9 +17,6 @@ server:
17 17
         - "[::1]:6668"
18 18
         - ":6697" # ssl port
19 19
 
20
-    # websocket listening port
21
-    ws-listen: ":8080"
22
-
23 20
     # tls listeners
24 21
     tls-listeners:
25 22
         # listener on ":6697"

Загрузка…
Отмена
Сохранить