upgrade noauth 처리기 수정
This commit is contained in:
@ -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,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)
|
||||||
|
|||||||
Reference in New Issue
Block a user