diff --git a/config.json b/config.json new file mode 100644 index 0000000..3925055 --- /dev/null +++ b/config.json @@ -0,0 +1,29 @@ +{ + "serverHandler": { + "name": "Member Gateway REST", + "network": "tcp4", + "address": ":19080", + "concurrency": 262144, + "keepAlive": 60, + "handshakeTimeout": 60, + "maxMessageSize": 8192, + "readBufferSize": 1024, + "writeBufferSize": 1024, + "readTimeout": 0, + "writeTimeout": 0, + "pongTimeout": 60, + "pingTimeout": 10, + "pingPeriod": 10, + "enableCompression": false + }, + "external": { + "grpc": { + "network": "tcp4", + "address": "192.168.1.50:50006" + }, + "redis": { + "network": "tcp4", + "address": "192.168.1.50:6379" + } + } +} \ No newline at end of file diff --git a/config/config.go b/config/config.go new file mode 100644 index 0000000..671240c --- /dev/null +++ b/config/config.go @@ -0,0 +1,11 @@ +package config + +import ( + occe "git.loafle.net/overflow/commons-go/config/external" + ogrs "git.loafle.net/overflow/gateway_rest/server" +) + +type Config struct { + ServerHandler *ogrs.ServerHandlers `json:"serverHandler"` + External *occe.External `json:"external"` +} diff --git a/glide.yaml b/glide.yaml index 335bc5d..c7b8e74 100644 --- a/glide.yaml +++ b/glide.yaml @@ -7,3 +7,5 @@ import: version: ^1.11.2 - package: git.loafle.net/overflow/gateway_rest - package: git.loafle.net/overflow/gateway +- package: git.loafle.net/commons/di-go +- package: git.loafle.net/overflow/commons-go diff --git a/main.go b/main.go index d3b2cbe..c83a1e1 100644 --- a/main.go +++ b/main.go @@ -2,22 +2,45 @@ package main import ( "context" + "flag" "log" "os" "os/signal" "syscall" "time" + "git.loafle.net/commons/configuration-go" "git.loafle.net/commons/logging-go" + "git.loafle.net/overflow/member_gateway_rest/config" "git.loafle.net/overflow/member_gateway_rest/server" + "git.loafle.net/overflow/member_gateway_rest/service" +) + +var ( + configDir *string ) func init() { - logging.InitializeLogger("") + configDir = flag.String("config-dir", "./", "Config directory") + logConfigPath := flag.String("log-config", "", "logging config path") + flag.Parse() + + logging.InitializeLogger(*logConfigPath) } func main() { - s := server.NewServer() + _config := &config.Config{} + configuration.SetConfigPath(*configDir) + if err := configuration.Load(_config, "config.json"); nil != err { + logging.Logger().Panic(err) + } + + service.InitPackage() + defer func() { + service.DestroyPackage() + }() + + s := server.NewServer(_config) go func() { err := s.ListenAndServe() diff --git a/overFlow-private.key b/overFlow-private.key new file mode 100644 index 0000000..40d3195 --- /dev/null +++ b/overFlow-private.key @@ -0,0 +1,51 @@ +-----BEGIN RSA PRIVATE KEY----- +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 +-----END RSA PRIVATE KEY----- diff --git a/overFlow-public.pem b/overFlow-public.pem new file mode 100644 index 0000000..c4fae35 --- /dev/null +++ b/overFlow-public.pem @@ -0,0 +1,14 @@ +-----BEGIN PUBLIC KEY----- +MIICIjANBgkqhkiG9w0BAQEFAAOCAg8AMIICCgKCAgEAsmcQLI5ZQQThoePzL4dT +wuAxqGPIfNCqTirQxZesyXTOEX3oQFLkd3s6dNHmFQIj1jVsFXDML5wRvv7YeI4a +9wOrH+QR62KEzB6aT/yxSsVhNrLxkQ35Xd9keGmfyMRNr72iiP8Hrm+7O0x2vlGU +Qp8+jMCzDVNlFvE5V9iqjSv4Q/AHrURg5fH8JBIMZnhcz/kmNgWg2NByTFDiQXRj +wBY5ts4Ylk8mZdAuumyiseXjE4l2JxdJJyRGqbx70wrC76MgTUvXEyw3MPSDGvN6 +7PFYIJJwq5VpRNHeBMkNoPRWX6eE9M1VNY+/rXuUGdg2ZxBzykAUjhjR9Iq/hawP +ZR78TaJ/w5wCVb7L6xIDqXb2JqhlFA4LHZmiDcR/m9Y2wI1DJkBeZpdxF1m19d5s +xs3vNNKzNVquKEz1QBfKnLvPxBXKpUT+zliCdzu1D/VU+veqDtKI8dmmGflc5lXe +DUYfPc7Kt4XLEZDSTBQlMgtkgE94ZcCJu6zdM3DrjPTh9OP5sG+/B5/KRYqZb4Yp +PGQ0TkXCaJjBtBEOM1FTk9/uhU/9b6lFbgc/quCkmz8Vxe5sJ98tXMi/F5q5n8ba +90AKaLUUwhTAxWV69NXweYtIMtKIj7AuI7IuK64iIyW+CE6BAl0QOlMtgF2/EqKW +ltvmbYpb+YgWOYJwa8F8pj0CAwEAAQ== +-----END PUBLIC KEY----- diff --git a/server/server-handler.go b/server/server-handler.go index b50a426..cfa77b2 100644 --- a/server/server-handler.go +++ b/server/server-handler.go @@ -1,13 +1,49 @@ package server import ( - cgrs "git.loafle.net/overflow/gateway_rest/server" + cs "git.loafle.net/commons/server-go" + oge "git.loafle.net/overflow/gateway/external" + ogrs "git.loafle.net/overflow/gateway_rest/server" + "git.loafle.net/overflow/member_gateway_rest/config" ) type ServerHandler interface { - cgrs.ServerHandler + ogrs.ServerHandler } type ServerHandlers struct { - cgrs.ServerHandlers + ogrs.ServerHandlers + + Config *config.Config +} + +func (sh *ServerHandlers) Init(serverCtx cs.ServerCtx) error { + if err := sh.ServerHandlers.Init(serverCtx); nil != err { + return err + } + oge.InitPackage(sh.Config.External) + + return nil +} + +func (sh *ServerHandlers) OnStart(serverCtx cs.ServerCtx) error { + if err := sh.ServerHandlers.OnStart(serverCtx); nil != err { + return err + } + + oge.StartPackage(sh.Config.External) + + return nil +} + +func (sh *ServerHandlers) OnStop(serverCtx cs.ServerCtx) { + oge.StopPackage(sh.Config.External) + + sh.ServerHandlers.OnStop(serverCtx) +} + +func (sh *ServerHandlers) Destroy(serverCtx cs.ServerCtx) { + oge.DestroyPackage(sh.Config.External) + + sh.ServerHandlers.Destroy(serverCtx) } diff --git a/server/server.go b/server/server.go index 06a3ce2..a3ab65c 100644 --- a/server/server.go +++ b/server/server.go @@ -1,28 +1,40 @@ package server import ( - logging "git.loafle.net/commons/logging-go" + cdr "git.loafle.net/commons/di-go/registry" + "git.loafle.net/commons/logging-go" crpj "git.loafle.net/commons/rpc-go/protocol/json" crr "git.loafle.net/commons/rpc-go/registry" cswf "git.loafle.net/commons/server-go/web/fasthttp" - "git.loafle.net/overflow/member_gateway_rest/service" + oca "git.loafle.net/overflow/commons-go/annotation" + "git.loafle.net/overflow/member_gateway_rest/config" "git.loafle.net/overflow/member_gateway_rest/servlet" ) -func NewServer() *cswf.Server { +func NewServer(_config *config.Config) *cswf.Server { serverCodec := crpj.NewServerCodec() rpcRegistry := crr.NewRPCRegistry() - ms := &service.MemberService{} - if err := rpcRegistry.RegisterService(ms, ""); nil != err { - logging.Logger().Error(err) + services, err := cdr.GetInstancesByAnnotationType(oca.ServiceAnnotationType) + if nil != err { + logging.Logger().Panic(err) + } + + for _, _service := range services { + if err := rpcRegistry.RegisterService(_service, ""); nil != err { + logging.Logger().Panic(err) + } } webappS := &servlet.WebappServlets{} webappS.ServerCodec = serverCodec webappS.RPCInvoker = rpcRegistry - sh := &ServerHandlers{} + sh := &ServerHandlers{ + ServerHandlers: *_config.ServerHandler, + Config: _config, + } + sh.RegisterServlet("/webapp", webappS) s := &cswf.Server{ diff --git a/service/member-service.go b/service/member-service.go index f6a0390..a3320ba 100644 --- a/service/member-service.go +++ b/service/member-service.go @@ -2,13 +2,24 @@ package service import ( "context" + "reflect" + cda "git.loafle.net/commons/di-go/annotation" + cdr "git.loafle.net/commons/di-go/registry" "git.loafle.net/commons/server-go" + _ "git.loafle.net/overflow/commons-go/annotation" "git.loafle.net/overflow/gateway/external/grpc" "github.com/valyala/fasthttp" ) +var MemberServiceType = reflect.TypeOf((*MemberService)(nil)) + +func init() { + cdr.RegisterType(MemberServiceType) +} + type MemberService struct { + cda.TypeAnnotation `annotation:"@overflow:Service()"` } func (ms *MemberService) Signin(servletCtx server.ServletCtx, ctx *fasthttp.RequestCtx, id string, pw string) (string, error) { diff --git a/service/service.go b/service/service.go new file mode 100644 index 0000000..3713b70 --- /dev/null +++ b/service/service.go @@ -0,0 +1,13 @@ +package service + +func InitPackage() { +} + +func StartPackage() { +} + +func StopPackage() { +} + +func DestroyPackage() { +}