Commit ccdb0fd4 authored by Andrei Mihu's avatar Andrei Mihu
Browse files

Wire up runtime scripts. (#145)

parent c9480172
Loading
Loading
Loading
Loading
+116 −14
Original line number Diff line number Diff line
@@ -13,10 +13,26 @@
  revision = "c95af922eae69f190717a0b7148960af8c55a072"

[[projects]]
  branch = "master"
  name = "github.com/golang/protobuf"
  packages = ["jsonpb","proto","protoc-gen-go/descriptor","ptypes","ptypes/any","ptypes/duration","ptypes/empty","ptypes/struct","ptypes/timestamp","ptypes/wrappers"]
  revision = "c65a0412e71e8b9b3bfd22925720d23c0f054237"
  packages = [
    "jsonpb",
    "proto",
    "protoc-gen-go/descriptor",
    "ptypes",
    "ptypes/any",
    "ptypes/duration",
    "ptypes/empty",
    "ptypes/struct",
    "ptypes/timestamp",
    "ptypes/wrappers"
  ]
  revision = "925541529c1fa6821df4e44ce2723319eb2be768"
  version = "v1.0.0"

[[projects]]
  name = "github.com/gorhill/cronexpr"
  packages = ["."]
  revision = "d520615e531a6bf3fb69406b9eba718261285ec8"

[[projects]]
  name = "github.com/gorilla/context"
@@ -43,18 +59,29 @@

[[projects]]
  name = "github.com/grpc-ecosystem/grpc-gateway"
  packages = ["runtime","runtime/internal","utilities"]
  packages = [
    "protoc-gen-swagger/options",
    "runtime",
    "runtime/internal",
    "utilities"
  ]
  revision = "07f5e79768022f9a3265235f0db4ac8c3f675fec"
  version = "v1.3.1"

[[projects]]
  name = "github.com/lib/pq"
  packages = [".","oid"]
  packages = [
    ".",
    "oid"
  ]
  revision = "83612a56d3dd153a94a629cd64925371c9adad78"

[[projects]]
  name = "github.com/rubenv/sql-migrate"
  packages = [".","sqlparse"]
  packages = [
    ".",
    "sqlparse"
  ]
  revision = "6edbfbd6a369ee82463312ec67b2c92f97a1d4dc"

[[projects]]
@@ -62,6 +89,16 @@
  packages = ["."]
  revision = "063359185d32c6b045fa171ad7033ea545864fa1"

[[projects]]
  name = "github.com/yuin/gopher-lua"
  packages = [
    ".",
    "ast",
    "parse",
    "pm"
  ]
  revision = "7d7bc8747e3f614c5c587729a341fe7d8903cdb8"

[[projects]]
  name = "go.uber.org/atomic"
  packages = ["."]
@@ -76,31 +113,96 @@

[[projects]]
  name = "go.uber.org/zap"
  packages = [".","buffer","internal/bufferpool","internal/color","internal/exit","zapcore"]
  packages = [
    ".",
    "buffer",
    "internal/bufferpool",
    "internal/color",
    "internal/exit",
    "zapcore"
  ]
  revision = "35aad584952c3e7020db7b839f6b102de6271f89"
  version = "v1.7.1"

[[projects]]
  branch = "master"
  name = "golang.org/x/crypto"
  packages = [
    "bcrypt",
    "blowfish"
  ]
  revision = "1875d0a70c90e57f11972aefd42276df65e895b9"

[[projects]]
  branch = "master"
  name = "golang.org/x/net"
  packages = ["context","http2","http2/hpack","idna","internal/timeseries","lex/httplex","trace"]
  revision = "5ccada7d0a7ba9aeb5d3aca8d3501b4c2a509fec"
  packages = [
    "context",
    "http2",
    "http2/hpack",
    "idna",
    "internal/timeseries",
    "lex/httplex",
    "trace"
  ]
  revision = "2fb46b16b8dda405028c50f7c7f0f9dd1fa6bfb1"

[[projects]]
  branch = "master"
  name = "golang.org/x/text"
  packages = ["collate","collate/build","internal/colltab","internal/gen","internal/tag","internal/triegen","internal/ucd","language","secure/bidirule","transform","unicode/bidi","unicode/cldr","unicode/norm","unicode/rangetable"]
  packages = [
    "collate",
    "collate/build",
    "internal/colltab",
    "internal/gen",
    "internal/tag",
    "internal/triegen",
    "internal/ucd",
    "language",
    "secure/bidirule",
    "transform",
    "unicode/bidi",
    "unicode/cldr",
    "unicode/norm",
    "unicode/rangetable"
  ]
  revision = "e19ae1496984b1c655b8044a65c0300a3c878dd3"

[[projects]]
  branch = "master"
  name = "google.golang.org/genproto"
  packages = ["googleapis/api/annotations","googleapis/rpc/status"]
  revision = "a8101f21cf983e773d0c1133ebc5424792003214"
  packages = [
    "googleapis/api/annotations",
    "googleapis/rpc/status"
  ]
  revision = "4eb30f4778eed4c258ba66527a0d4f9ec8a36c45"

[[projects]]
  name = "google.golang.org/grpc"
  packages = [".","balancer","balancer/base","balancer/roundrobin","codes","connectivity","credentials","encoding","grpclb/grpc_lb_v1/messages","grpclog","internal","keepalive","metadata","naming","peer","resolver","resolver/dns","resolver/passthrough","stats","status","tap","transport"]
  packages = [
    ".",
    "balancer",
    "balancer/base",
    "balancer/roundrobin",
    "codes",
    "connectivity",
    "credentials",
    "encoding",
    "grpclb/grpc_lb_v1/messages",
    "grpclog",
    "internal",
    "keepalive",
    "metadata",
    "naming",
    "peer",
    "resolver",
    "resolver/dns",
    "resolver/passthrough",
    "stats",
    "status",
    "tap",
    "transport"
  ]
  revision = "6b51017f791ae1cfbec89c52efdf444b13b550ef"
  version = "v1.9.2"

@@ -113,6 +215,6 @@
[solve-meta]
  analyzer-name = "dep"
  analyzer-version = 1
  inputs-digest = "01db32151b4b5b577d58fd0dd63d472814ddd331fefa1b105dc12fba3d724f99"
  inputs-digest = "bd27c78031b478645517c097fe42bdb946de0a2a3fdbecf6c56718b8e2ba9492"
  solver-name = "gps-cdcl"
  solver-version = 1
+11 −0
Original line number Diff line number Diff line
@@ -37,3 +37,14 @@
[[constraint]]
  name = "github.com/gorilla/websocket"
  revision = "292fd08b2560ad524ee37396253d71570339a821"

[[constraint]]
  name = "github.com/yuin/gopher-lua"
  revision = "7d7bc8747e3f614c5c587729a341fe7d8903cdb8"

[[constraint]]
  name = "github.com/gorhill/cronexpr"
  revision = "d520615e531a6bf3fb69406b9eba718261285ec8"

[[constraint]]
  name = "golang.org/x/crypto"
+6 −2
Original line number Diff line number Diff line
@@ -85,8 +85,12 @@ func main() {
	registry := server.NewSessionRegistry()
	tracker := server.StartLocalTracker(jsonLogger, registry, jsonpbMarshaler, config.GetName())
	router := server.NewLocalMessageRouter(registry, tracker, jsonpbMarshaler)
	pipeline := server.NewPipeline(config, db, tracker, router, registry)
	apiServer := server.StartApiServer(jsonLogger, db, config, tracker, registry, pipeline, jsonpbMarshaler, jsonpbUnmarshaler)
	runtimePool, err := server.NewRuntimePool(jsonLogger, multiLogger, db, config, registry, tracker, router)
	if err != nil {
		multiLogger.Fatal("Failed initializing runtime modules", zap.Error(err))
	}
	pipeline := server.NewPipeline(config, db, registry, tracker, router, runtimePool)
	apiServer := server.StartApiServer(jsonLogger, db, config, registry, tracker, pipeline, runtimePool, jsonpbMarshaler, jsonpbUnmarshaler)

	// Respect OS stop signals.
	c := make(chan os.Signal, 2)
+4 −2
Original line number Diff line number Diff line
@@ -49,12 +49,13 @@ type ApiServer struct {
	logger            *zap.Logger
	db                *sql.DB
	config            Config
	runtimePool       *RuntimePool
	random            *rand.Rand
	grpcServer        *grpc.Server
	grpcGatewayServer *http.Server
}

func StartApiServer(logger *zap.Logger, db *sql.DB, config Config, tracker Tracker, registry *SessionRegistry, pipeline *pipeline, jsonpbMarshaler *jsonpb.Marshaler, jsonpbUnmarshaler *jsonpb.Unmarshaler) *ApiServer {
func StartApiServer(logger *zap.Logger, db *sql.DB, config Config, registry *SessionRegistry, tracker Tracker, pipeline *pipeline, runtimePool *RuntimePool, jsonpbMarshaler *jsonpb.Marshaler, jsonpbUnmarshaler *jsonpb.Unmarshaler) *ApiServer {
	grpcServer := grpc.NewServer(
		grpc.UnaryInterceptor(SecurityInterceptorFunc(logger, config)),
	)
@@ -63,6 +64,7 @@ func StartApiServer(logger *zap.Logger, db *sql.DB, config Config, tracker Track
		logger:         logger,
		db:             db,
		config:         config,
		runtimePool:    runtimePool,
		random:         rand.New(rand.NewSource(time.Now().UnixNano())),
		grpcServer:     grpcServer,
	}
@@ -94,7 +96,7 @@ func StartApiServer(logger *zap.Logger, db *sql.DB, config Config, tracker Track
	CORSOrigins := handlers.AllowedOrigins([]string{"*"})

	grpcGatewayRouter := mux.NewRouter()
	grpcGatewayRouter.HandleFunc("/ws", NewSocketWsAcceptor(logger, config, tracker, registry, jsonpbMarshaler, jsonpbUnmarshaler, pipeline.processRequest))
	grpcGatewayRouter.HandleFunc("/ws", NewSocketWsAcceptor(logger, config, registry, tracker, jsonpbMarshaler, jsonpbUnmarshaler, pipeline.processRequest))
	grpcGatewayRouter.NewRoute().Handler(grpcGateway)

	handlerWithCORS := handlers.CORS(CORSHeaders, CORSOrigins)(grpcGatewayRouter)
+4 −0
Original line number Diff line number Diff line
@@ -142,6 +142,10 @@ func (s *ApiServer) AuthenticateSteamFunc(ctx context.Context, in *api.Authentic

func generateToken(config Config, userID, username string) string {
	exp := time.Now().UTC().Add(time.Duration(config.GetSession().TokenExpiryMs) * time.Millisecond).Unix()
	return generateTokenWithExpiry(config, userID, username, exp)
}

func generateTokenWithExpiry(config Config, userID, username string, exp int64) string {
	token := jwt.NewWithClaims(jwt.SigningMethodHS256, jwt.MapClaims{
		"uid": userID,
		"exp": exp,
Loading