upgrade noauth 처리기 수정

This commit is contained in:
2023-12-25 22:41:48 +09:00
parent 29dcca9725
commit e42c1969a2

View File

@ -175,7 +175,7 @@ func (ws *websocketPeerHandler[T]) RegisterHandlers(serveMux *http.ServeMux, pre
go ws.sessionMonitoring() go ws.sessionMonitoring()
if *noAuthFlag { if *noAuthFlag {
serveMux.HandleFunc(prefix, ws.upgrade_nosession) serveMux.HandleFunc(prefix, ws.upgrade_noauth)
} else { } else {
serveMux.HandleFunc(prefix, ws.upgrade) serveMux.HandleFunc(prefix, ws.upgrade)
} }
@ -281,7 +281,7 @@ func (ws *websocketPeerHandler[T]) upgrade_core(conn *websocket.Conn, accid prim
}(conn, accid) }(conn, accid)
} }
func (ws *websocketPeerHandler[T]) upgrade_nosession(w http.ResponseWriter, r *http.Request) { func (ws *websocketPeerHandler[T]) upgrade_noauth(w http.ResponseWriter, r *http.Request) {
// 클라이언트 접속 // 클라이언트 접속
defer func() { defer func() {
s := recover() s := recover()
@ -292,6 +292,17 @@ func (ws *websocketPeerHandler[T]) upgrade_nosession(w http.ResponseWriter, r *h
r.Body.Close() r.Body.Close()
}() }()
sk := r.Header.Get("AS-X-SESSION")
var accid primitive.ObjectID
if len(sk) > 0 {
logger.Println("WebsocketHandler.upgrade sk :", sk)
authinfo, err := ws.sessionConsumer.Query(sk)
if err == nil {
accid = authinfo.Account
}
}
if accid.IsZero() {
auth := strings.Split(r.Header.Get("Authorization"), " ") auth := strings.Split(r.Header.Get("Authorization"), " ")
if len(auth) != 2 { if len(auth) != 2 {
w.WriteHeader(http.StatusBadRequest) w.WriteHeader(http.StatusBadRequest)
@ -310,7 +321,8 @@ func (ws *websocketPeerHandler[T]) upgrade_nosession(w http.ResponseWriter, r *h
} }
raw := (*[12]byte)(temp) raw := (*[12]byte)(temp)
accid := primitive.ObjectID(*raw) accid = primitive.ObjectID(*raw)
}
var upgrader = websocket.Upgrader{} // use default options var upgrader = websocket.Upgrader{} // use default options
conn, err := upgrader.Upgrade(w, r, nil) conn, err := upgrader.Upgrade(w, r, nil)