project shared

This commit is contained in:
geek
2017-11-23 19:33:19 +09:00
commit 181562a5c1
24 changed files with 866 additions and 0 deletions

36
servlet/data/data.go Normal file
View File

@@ -0,0 +1,36 @@
package data
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 = "data"
)
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 := newRPCGatewayHandler()
rpcSH := sh.RegisterRPCGatewayServlet(Name, rpcGH)
sub := newSubscriberHandler(rpcSH)
sh.RegisterSubscriber(sub)
}
func ServletDestroy() {
}

View File

@@ -0,0 +1,56 @@
package data
import (
"fmt"
"git.loafle.net/commons_go/logging"
"git.loafle.net/overflow/overflow_gateway_websocket/config"
"git.loafle.net/overflow/overflow_gateway_websocket/rpc"
jwt "github.com/dgrijalva/jwt-go"
"github.com/valyala/fasthttp"
)
func newRPCGatewayHandler() rpc.RPCGatewayHandler {
gh := &RPCGatewayHandlers{}
return gh
}
type RPCGatewayHandlers struct {
rpc.RPCGatewayHandlers
}
func (sh *RPCGatewayHandlers) Init() error {
return nil
}
func (sh *RPCGatewayHandlers) Handshake(ctx *fasthttp.RequestCtx) (id string, extensionsHeader *fasthttp.ResponseHeader) {
var ok bool
// tokenString := string(soc.Conn().Headers().Cookie("AuthToken"))
tokenString := "eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzUxMiJ9.eyJpc3MiOiJvdmVyRmxvdyIsImlhdCI6MTUwNDU5NTExOSwiZXhwIjoxNTM2MTMxMTE5LCJhdWQiOiJ3d3cub3ZlcmZsb3cuY2xvdWQiLCJzdWIiOiJvdmVyZmxvd0Bsb2FmbGUuY29tIn0.-WQi3OykPlJ9x8RcZGhWXEtGw4GhU6wmyJ_AWh2rMeUatQylfPzvmum2Xfp6pwKLMmcP76XoDPNyq06i7RKWNQ"
token, err := jwt.Parse(tokenString, func(token *jwt.Token) (interface{}, error) {
// Don't forget to validate the alg is what you expect:
if _, ok := token.Method.(*jwt.SigningMethodHMAC); !ok {
return nil, fmt.Errorf("Webapp: Unexpected signing method: %v", token.Header["alg"])
}
// hmacSampleSecret is a []byte containing your secret, e.g. []byte("my_secret_key")
return []byte(config.Config.Auth.SigningKey), nil
})
if nil != err {
return "", nil
}
var claims jwt.MapClaims
if claims, ok = token.Claims.(jwt.MapClaims); !ok || !token.Valid {
logging.Logger().Warn(fmt.Sprintf("Webapp: Token is not valid %v", token))
return "", nil
}
return claims["sub"].(string), nil
}
func (sh *RPCGatewayHandlers) Validate() {
sh.RPCGatewayHandlers.Validate()
}

View File

@@ -0,0 +1,34 @@
package data
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()
}

36
servlet/noauth/noauth.go Normal file
View File

@@ -0,0 +1,36 @@
package noauth
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 = "noauth"
)
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 := newRPCGatewayHandler()
rpcSH := sh.RegisterRPCGatewayServlet(Name, rpcGH)
sub := newSubscriberHandler(rpcSH)
sh.RegisterSubscriber(sub)
}
func ServletDestroy() {
}

View File

@@ -0,0 +1,56 @@
package noauth
import (
"fmt"
"git.loafle.net/commons_go/logging"
"git.loafle.net/overflow/overflow_gateway_websocket/config"
"git.loafle.net/overflow/overflow_gateway_websocket/rpc"
jwt "github.com/dgrijalva/jwt-go"
"github.com/valyala/fasthttp"
)
func newRPCGatewayHandler() rpc.RPCGatewayHandler {
gh := &RPCGatewayHandlers{}
return gh
}
type RPCGatewayHandlers struct {
rpc.RPCGatewayHandlers
}
func (sh *RPCGatewayHandlers) Init() error {
return nil
}
func (sh *RPCGatewayHandlers) Handshake(ctx *fasthttp.RequestCtx) (id string, extensionsHeader *fasthttp.ResponseHeader) {
var ok bool
// tokenString := string(soc.Conn().Headers().Cookie("AuthToken"))
tokenString := "eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzUxMiJ9.eyJpc3MiOiJvdmVyRmxvdyIsImlhdCI6MTUwNDU5NTExOSwiZXhwIjoxNTM2MTMxMTE5LCJhdWQiOiJ3d3cub3ZlcmZsb3cuY2xvdWQiLCJzdWIiOiJvdmVyZmxvd0Bsb2FmbGUuY29tIn0.-WQi3OykPlJ9x8RcZGhWXEtGw4GhU6wmyJ_AWh2rMeUatQylfPzvmum2Xfp6pwKLMmcP76XoDPNyq06i7RKWNQ"
token, err := jwt.Parse(tokenString, func(token *jwt.Token) (interface{}, error) {
// Don't forget to validate the alg is what you expect:
if _, ok := token.Method.(*jwt.SigningMethodHMAC); !ok {
return nil, fmt.Errorf("Webapp: Unexpected signing method: %v", token.Header["alg"])
}
// hmacSampleSecret is a []byte containing your secret, e.g. []byte("my_secret_key")
return []byte(config.Config.Auth.SigningKey), nil
})
if nil != err {
return "", nil
}
var claims jwt.MapClaims
if claims, ok = token.Claims.(jwt.MapClaims); !ok || !token.Valid {
logging.Logger().Warn(fmt.Sprintf("Webapp: Token is not valid %v", token))
return "", nil
}
return claims["sub"].(string), nil
}
func (sh *RPCGatewayHandlers) Validate() {
sh.RPCGatewayHandlers.Validate()
}

View File

@@ -0,0 +1,34 @@
package noauth
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()
}

37
servlet/probe/probe.go Normal file
View File

@@ -0,0 +1,37 @@
package probe
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 = "probe"
)
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 := newRPCGatewayHandler()
rpcSH := sh.RegisterRPCGatewayServlet(Name, rpcGH)
sub := newSubscriberHandler(rpcSH)
sh.RegisterSubscriber(sub)
}
func ServletDestroy() {
}

View File

@@ -0,0 +1,56 @@
package probe
import (
"fmt"
"git.loafle.net/commons_go/logging"
"git.loafle.net/overflow/overflow_gateway_websocket/config"
"git.loafle.net/overflow/overflow_gateway_websocket/rpc"
jwt "github.com/dgrijalva/jwt-go"
"github.com/valyala/fasthttp"
)
func newRPCGatewayHandler() rpc.RPCGatewayHandler {
gh := &RPCGatewayHandlers{}
return gh
}
type RPCGatewayHandlers struct {
rpc.RPCGatewayHandlers
}
func (sh *RPCGatewayHandlers) Init() error {
return nil
}
func (sh *RPCGatewayHandlers) Handshake(ctx *fasthttp.RequestCtx) (id string, extensionsHeader *fasthttp.ResponseHeader) {
var ok bool
// tokenString := string(soc.Conn().Headers().Cookie("AuthToken"))
tokenString := "eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzUxMiJ9.eyJpc3MiOiJvdmVyRmxvdyIsImlhdCI6MTUwNDU5NTExOSwiZXhwIjoxNTM2MTMxMTE5LCJhdWQiOiJ3d3cub3ZlcmZsb3cuY2xvdWQiLCJzdWIiOiJvdmVyZmxvd0Bsb2FmbGUuY29tIn0.-WQi3OykPlJ9x8RcZGhWXEtGw4GhU6wmyJ_AWh2rMeUatQylfPzvmum2Xfp6pwKLMmcP76XoDPNyq06i7RKWNQ"
token, err := jwt.Parse(tokenString, func(token *jwt.Token) (interface{}, error) {
// Don't forget to validate the alg is what you expect:
if _, ok := token.Method.(*jwt.SigningMethodHMAC); !ok {
return nil, fmt.Errorf("Webapp: Unexpected signing method: %v", token.Header["alg"])
}
// hmacSampleSecret is a []byte containing your secret, e.g. []byte("my_secret_key")
return []byte(config.Config.Auth.SigningKey), nil
})
if nil != err {
return "", nil
}
var claims jwt.MapClaims
if claims, ok = token.Claims.(jwt.MapClaims); !ok || !token.Valid {
logging.Logger().Warn(fmt.Sprintf("Webapp: Token is not valid %v", token))
return "", nil
}
return claims["sub"].(string), nil
}
func (sh *RPCGatewayHandlers) Validate() {
sh.RPCGatewayHandlers.Validate()
}

View File

@@ -0,0 +1,34 @@
package probe
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()
}

21
servlet/servlet.go Normal file
View File

@@ -0,0 +1,21 @@
package servlet
import (
oogws "git.loafle.net/overflow/overflow_gateway_websocket/server"
"git.loafle.net/overflow/overflow_gateway_probe/servlet/data"
"git.loafle.net/overflow/overflow_gateway_probe/servlet/noauth"
"git.loafle.net/overflow/overflow_gateway_probe/servlet/probe"
)
func ServletInit(sh oogws.ServerHandler) {
data.ServletInit(sh)
noauth.ServletInit(sh)
probe.ServletInit(sh)
}
func ServletDestroy() {
}