ing
This commit is contained in:
35
servlet/auth/auth.go
Normal file
35
servlet/auth/auth.go
Normal file
@@ -0,0 +1,35 @@
|
||||
package auth
|
||||
|
||||
import (
|
||||
"fmt"
|
||||
|
||||
"git.loafle.net/commons_go/logging"
|
||||
oogwc "git.loafle.net/overflow/overflow_gateway_websocket/config"
|
||||
oogws "git.loafle.net/overflow/overflow_gateway_websocket/server"
|
||||
oosc "git.loafle.net/overflow/overflow_server_config"
|
||||
)
|
||||
|
||||
const (
|
||||
Name = "auth"
|
||||
)
|
||||
|
||||
var (
|
||||
cfg *oosc.Servlet
|
||||
)
|
||||
|
||||
func ServletInit(sh oogws.ServerHandler) {
|
||||
cfg = oogwc.Config.Servlets[Name]
|
||||
if nil == cfg {
|
||||
logging.Logger().Panic(fmt.Sprintf("Webapp: config of servlet[%s] is not exist", Name))
|
||||
}
|
||||
|
||||
rpcGH := newGatewayRPCHandler()
|
||||
rpcSH := sh.RegisterRPCGatewayServlet(Name, rpcGH)
|
||||
sub := newSubscriberHandler(rpcSH)
|
||||
|
||||
sh.RegisterSubscriber(sub)
|
||||
}
|
||||
|
||||
func ServletDestroy() {
|
||||
|
||||
}
|
||||
89
servlet/auth/gateway_rpc_handlers.go
Normal file
89
servlet/auth/gateway_rpc_handlers.go
Normal file
@@ -0,0 +1,89 @@
|
||||
package auth
|
||||
|
||||
import (
|
||||
"context"
|
||||
"encoding/base64"
|
||||
"encoding/json"
|
||||
|
||||
cwf "git.loafle.net/commons_go/websocket_fasthttp"
|
||||
oocmn "git.loafle.net/overflow/overflow_commons_go/modules/noauthprobe"
|
||||
noauthprobeM "git.loafle.net/overflow/overflow_commons_go/modules/noauthprobe/model"
|
||||
oogweg "git.loafle.net/overflow/overflow_gateway_websocket/external/grpc"
|
||||
"git.loafle.net/overflow/overflow_gateway_websocket/rpc"
|
||||
"github.com/valyala/fasthttp"
|
||||
)
|
||||
|
||||
func newGatewayRPCHandler() rpc.GatewayRPCHandler {
|
||||
gh := &GatewayRPCHandlers{}
|
||||
|
||||
return gh
|
||||
}
|
||||
|
||||
type GatewayRPCHandlers struct {
|
||||
rpc.GatewayRPCHandlers
|
||||
}
|
||||
|
||||
func (sh *GatewayRPCHandlers) Init(serverCTX cwf.ServerContext) error {
|
||||
return nil
|
||||
}
|
||||
|
||||
func (sh *GatewayRPCHandlers) Handshake(socketCTX cwf.SocketContext, ctx *fasthttp.RequestCtx) (id string, extensionsHeader *fasthttp.ResponseHeader) {
|
||||
bMethod := ctx.Request.Header.Peek(oocmn.HTTPRequestHeaderKey_NoAuthProbe_Method)
|
||||
if nil == bMethod {
|
||||
return "", nil
|
||||
}
|
||||
method := string(bMethod)
|
||||
|
||||
switch method {
|
||||
case oocmn.HTTPRequestHeaderValue_NoAuthProbe_Method_Regist:
|
||||
bInfo := ctx.Request.Header.Peek(oocmn.HTTPRequestHeaderKey_NoAuthProbe_Info)
|
||||
if nil == bInfo {
|
||||
return "", nil
|
||||
}
|
||||
rJSON := make([]byte, base64.StdEncoding.DecodedLen(len(bInfo)))
|
||||
_, err := base64.StdEncoding.Decode(rJSON, bInfo)
|
||||
if nil != err {
|
||||
return "", nil
|
||||
}
|
||||
grpcCTX := context.Background()
|
||||
r, err := oogweg.Exec(grpcCTX, "NoAuthProbeService.regist", []string{string(rJSON)})
|
||||
if nil != err {
|
||||
return "", nil
|
||||
}
|
||||
nap := &noauthprobeM.NoAuthProbe{}
|
||||
err = json.Unmarshal([]byte(r), nap)
|
||||
if nil != err {
|
||||
return "", nil
|
||||
}
|
||||
|
||||
id = nap.TempProbeKey
|
||||
extensionsHeader = &fasthttp.ResponseHeader{}
|
||||
extensionsHeader.Add(oocmn.HTTPResponseHeaderKey_NoAuthProbe_SetTempProbeKey, nap.TempProbeKey)
|
||||
return
|
||||
case oocmn.HTTPRequestHeaderValue_NoAuthProbe_Method_Connect:
|
||||
bTempProbeKey := ctx.Request.Header.Peek(oocmn.HTTPRequestHeaderKey_NoAuthProbe_TempProbeKey)
|
||||
if nil == bTempProbeKey {
|
||||
return "", nil
|
||||
}
|
||||
grpcCTX := context.Background()
|
||||
r, err := oogweg.Exec(grpcCTX, "NoAuthProbeService.readByTempKey", []string{string(bTempProbeKey)})
|
||||
if nil != err {
|
||||
return "", nil
|
||||
}
|
||||
nap := &noauthprobeM.NoAuthProbe{}
|
||||
err = json.Unmarshal([]byte(r), nap)
|
||||
if nil != err {
|
||||
return "", nil
|
||||
}
|
||||
|
||||
id = string(bTempProbeKey)
|
||||
return
|
||||
default:
|
||||
return "", nil
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
func (sh *GatewayRPCHandlers) Validate() {
|
||||
sh.GatewayRPCHandlers.Validate()
|
||||
}
|
||||
32
servlet/auth/subscriber_handlers.go
Normal file
32
servlet/auth/subscriber_handlers.go
Normal file
@@ -0,0 +1,32 @@
|
||||
package auth
|
||||
|
||||
import (
|
||||
"git.loafle.net/commons_go/websocket_fasthttp/websocket"
|
||||
oogws "git.loafle.net/overflow/overflow_gateway_websocket/servlet"
|
||||
oogwsub "git.loafle.net/overflow/overflow_gateway_websocket/subscribe"
|
||||
oos "git.loafle.net/overflow/overflow_subscriber"
|
||||
)
|
||||
|
||||
func newSubscriberHandler(servletHandler oogws.ServletHandler) oogwsub.SubscriberHandler {
|
||||
sh := &SubscriberHandlers{}
|
||||
sh.ServletHandler = servletHandler
|
||||
sh.Channel = cfg.Entry
|
||||
|
||||
return sh
|
||||
}
|
||||
|
||||
type SubscriberHandlers struct {
|
||||
oogwsub.SubscriberHandlers
|
||||
}
|
||||
|
||||
func (sh *SubscriberHandlers) OnSubscribe(channel string, message oos.SubscribeMessage) {
|
||||
for _, uid := range message.Targets {
|
||||
if soc := sh.GetSocket(uid); nil != soc {
|
||||
soc.WriteMessage(websocket.TextMessage, message.Message)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
func (sh *SubscriberHandlers) Validate() {
|
||||
sh.SubscriberHandlers.Validate()
|
||||
}
|
||||
Reference in New Issue
Block a user