upgrade noauth 처리기 수정

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

View File

@ -173,9 +173,9 @@ func (ws *websocketPeerHandler[T]) onSessionInvalidated(accid primitive.ObjectID
func (ws *websocketPeerHandler[T]) RegisterHandlers(serveMux *http.ServeMux, prefix string) error { func (ws *websocketPeerHandler[T]) RegisterHandlers(serveMux *http.ServeMux, prefix string) error {
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,25 +292,37 @@ func (ws *websocketPeerHandler[T]) upgrade_nosession(w http.ResponseWriter, r *h
r.Body.Close() r.Body.Close()
}() }()
auth := strings.Split(r.Header.Get("Authorization"), " ") sk := r.Header.Get("AS-X-SESSION")
if len(auth) != 2 { var accid primitive.ObjectID
w.WriteHeader(http.StatusBadRequest) if len(sk) > 0 {
return logger.Println("WebsocketHandler.upgrade sk :", sk)
authinfo, err := ws.sessionConsumer.Query(sk)
if err == nil {
accid = authinfo.Account
}
} }
temp, err := hex.DecodeString(auth[1]) if accid.IsZero() {
if err != nil { auth := strings.Split(r.Header.Get("Authorization"), " ")
w.WriteHeader(http.StatusBadRequest) if len(auth) != 2 {
return w.WriteHeader(http.StatusBadRequest)
} return
}
if len(temp) != len(primitive.NilObjectID) { temp, err := hex.DecodeString(auth[1])
w.WriteHeader(http.StatusBadRequest) if err != nil {
return w.WriteHeader(http.StatusBadRequest)
} return
}
raw := (*[12]byte)(temp) if len(temp) != len(primitive.NilObjectID) {
accid := primitive.ObjectID(*raw) w.WriteHeader(http.StatusBadRequest)
return
}
raw := (*[12]byte)(temp)
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)