Skip to content

Commit

Permalink
SRCDSとの通信を行うgatewayの作成 (#275)
Browse files Browse the repository at this point in the history
* SRCDSのquery gatewayの実装

* srcdsへのrcon gatewayの実装

* go mod

* mockの追加
  • Loading branch information
Shugo Kawamura authored Aug 12, 2023
1 parent 9c4bc7b commit f8dd104
Show file tree
Hide file tree
Showing 8 changed files with 195 additions and 0 deletions.
40 changes: 40 additions & 0 deletions backend/gateway/srcds/query/query.go
Original file line number Diff line number Diff line change
@@ -0,0 +1,40 @@
package query

import (
"fmt"
"time"

"github.com/rumblefrog/go-a2s"
)

type queryAdapter struct {
timeout time.Duration
}

type QueryAdapter interface {
QueryPlayer(ip string, port int, password string) (uint8, error)
}

func NewQueryAdapter(timeout time.Duration) QueryAdapter {
return &queryAdapter{
timeout: timeout,
}
}

func (q *queryAdapter) QueryPlayer(ip string, port int, password string) (uint8, error) {
ipport := fmt.Sprintf("%s:%d", ip, port)
client, err := a2s.NewClient(
ipport,
a2s.TimeoutOption(q.timeout),
)
if err != nil {
return 0, err
}
defer client.Close()

player, err := client.QueryPlayer()
if err != nil {
return 0, err
}
return player.Count, nil
}
3 changes: 3 additions & 0 deletions backend/gateway/srcds/query/query_mock.go
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
package query

//go:generate mockgen -source=./query.go -destination=./query_mock/mock_query.go
49 changes: 49 additions & 0 deletions backend/gateway/srcds/query/query_mock/mock_query.go

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

34 changes: 34 additions & 0 deletions backend/gateway/srcds/rcon/rcon.go
Original file line number Diff line number Diff line change
@@ -0,0 +1,34 @@
package rcon

import (
"fmt"

"github.com/FlowingSPDG/go-steam"
)

type RCONAdapter interface {
Execute(ip string, port int, password string, cmd string) (string, error)
}

type rconAdapter struct {
}

func NewRCONAdapter() RCONAdapter {
return &rconAdapter{}
}

func (r *rconAdapter) Execute(ip string, port int, password string, cmd string) (string, error) {
ipport := fmt.Sprintf("%s:%d", ip, port)
connectOptions := &steam.ConnectOptions{RCONPassword: password}
rcon, err := steam.Connect(ipport, connectOptions)
if err != nil {
return "", err
}
defer rcon.Close()

resp, err := rcon.Send(cmd)
if err != nil {
return "", err
}
return resp, nil
}
3 changes: 3 additions & 0 deletions backend/gateway/srcds/rcon/rcon_mock.go
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
package rcon

//go:generate mockgen -source=./rcon.go -destination=./rcon_mock/mock_rcon.go
49 changes: 49 additions & 0 deletions backend/gateway/srcds/rcon/rcon_mock/mock_rcon.go

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

3 changes: 3 additions & 0 deletions backend/go.mod
Original file line number Diff line number Diff line change
Expand Up @@ -4,11 +4,13 @@ go 1.20

require (
github.com/FlowingSPDG/Got5 v0.0.0-20230804162215-be9dcc00f8cc
github.com/FlowingSPDG/go-steam v0.0.0-20200304111708-e30ea2f91a83
github.com/caarlos0/env/v9 v9.0.0
github.com/gin-gonic/gin v1.9.1
github.com/go-sql-driver/mysql v1.7.1
github.com/golang-jwt/jwt/v5 v5.0.0
github.com/google/uuid v1.3.0
github.com/rumblefrog/go-a2s v1.0.2
github.com/stretchr/testify v1.8.4
go.uber.org/mock v0.2.0
golang.org/x/crypto v0.12.0
Expand All @@ -33,6 +35,7 @@ require (
github.com/modern-go/reflect2 v1.0.2 // indirect
github.com/pelletier/go-toml/v2 v2.0.8 // indirect
github.com/pmezard/go-difflib v1.0.0 // indirect
github.com/sirupsen/logrus v1.9.0 // indirect
github.com/twitchyliquid64/golang-asm v0.15.1 // indirect
github.com/ugorji/go/codec v1.2.11 // indirect
golang.org/x/arch v0.3.0 // indirect
Expand Down
14 changes: 14 additions & 0 deletions backend/go.sum
Original file line number Diff line number Diff line change
@@ -1,5 +1,7 @@
github.com/FlowingSPDG/Got5 v0.0.0-20230804162215-be9dcc00f8cc h1:17qQ5CP6MuPV1Ph48OFgTTq6LNNMAYYhrluBsOraXAI=
github.com/FlowingSPDG/Got5 v0.0.0-20230804162215-be9dcc00f8cc/go.mod h1:GkWSjnJpY62vUUsJPVJXxxa+YDjCR1XfE2FErLaS5aI=
github.com/FlowingSPDG/go-steam v0.0.0-20200304111708-e30ea2f91a83 h1:g3VY8PBeP2ntkCAIs0eTPH9X1q+ZrFcTWmvtioURpcw=
github.com/FlowingSPDG/go-steam v0.0.0-20200304111708-e30ea2f91a83/go.mod h1:cBPvfv15MeOWzZuFugEXy7Nw/JTk/D8ZalNSg9FmKH8=
github.com/andybalholm/brotli v1.0.4 h1:V7DdXeJtZscaqfNuAdSRuRFzuiKlHSC/Zh3zl9qY3JY=
github.com/bytedance/sonic v1.5.0/go.mod h1:ED5hyg4y6t3/9Ku1R6dU/4KyJ48DZ4jPhfY1O2AihPM=
github.com/bytedance/sonic v1.9.1 h1:6iJ6NqdoxCDr6mbY8h18oSO+cShGSMRGCEo7F2h0x8s=
Expand Down Expand Up @@ -45,6 +47,8 @@ github.com/klauspost/compress v1.15.9 h1:wKRjX6JRtDdrE9qwa4b/Cip7ACOshUI4smpCQan
github.com/klauspost/cpuid/v2 v2.0.9/go.mod h1:FInQzS24/EEf25PyTYn52gqo7WaD8xa0213Md/qVLRg=
github.com/klauspost/cpuid/v2 v2.2.4 h1:acbojRNwl3o09bUq+yDCtZFc1aiwaAAxtcn8YkZXnvk=
github.com/klauspost/cpuid/v2 v2.2.4/go.mod h1:RVVoqg1df56z8g3pUjL/3lE5UfnlrJX8tyFgg4nqhuY=
github.com/konsorten/go-windows-terminal-sequences v1.0.1/go.mod h1:T0+1ngSBFLxvqU3pZ+m/2kptfBszLMUkC4ZK/EgS/cQ=
github.com/konsorten/go-windows-terminal-sequences v1.0.2/go.mod h1:T0+1ngSBFLxvqU3pZ+m/2kptfBszLMUkC4ZK/EgS/cQ=
github.com/kr/pretty v0.2.1/go.mod h1:ipq/a2n7PKx3OHsz4KJII5eveXtPO4qwEXGdVfWzfnI=
github.com/kr/pretty v0.3.1 h1:flRD4NNwYAUpkphVc1HcthR4KEIFJ65n8Mw5qdRn3LE=
github.com/kr/pretty v0.3.1/go.mod h1:hoEshYVHaxMs3cyo3Yncou5ZscifuDolrwPKZanG3xk=
Expand All @@ -71,9 +75,16 @@ github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZN
github.com/rivo/uniseg v0.2.0 h1:S1pD9weZBuJdFmowNwbpi7BJ8TNftyUImj/0WQi72jY=
github.com/rogpeppe/go-internal v1.9.0 h1:73kH8U+JUqXU8lRuOHeVHaa/SZPifC7BkcraZVejAe8=
github.com/rogpeppe/go-internal v1.9.0/go.mod h1:WtVeX8xhTBvf0smdhujwtBcq4Qrzq/fJaraNFVN+nFs=
github.com/rumblefrog/go-a2s v1.0.2 h1:rT/QP/B+h2R9/3PEfmOkWPdHnEKExskOMPTTkeX+vuA=
github.com/rumblefrog/go-a2s v1.0.2/go.mod h1:6nq//LMUMa3ElowQ7eH8atnDbQG+nVMFsaMFzSo8p/M=
github.com/sirupsen/logrus v1.4.2/go.mod h1:tLMulIdttU9McNUspp0xgXVQah82FyeX6MwdIuYE2rE=
github.com/sirupsen/logrus v1.9.0 h1:trlNQbNUG3OdDrDil03MCb1H2o9nJ1x4/5LYw7byDE0=
github.com/sirupsen/logrus v1.9.0/go.mod h1:naHLuLoDiP4jHNo9R0sCBMtWGeIprob74mVsIT4qYEQ=
github.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME=
github.com/stretchr/objx v0.1.1/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME=
github.com/stretchr/objx v0.4.0/go.mod h1:YvHI0jy2hoMjB+UWwv71VJQ9isScKT/TqJzVSSt89Yw=
github.com/stretchr/objx v0.5.0/go.mod h1:Yh+to48EsGEfYuaHDzXPcE3xhTkx73EhmCGUpEOglKo=
github.com/stretchr/testify v1.2.2/go.mod h1:a8OnRcib4nhh0OaRAV+Yts87kKdq0PP7pXfy6kDkUVs=
github.com/stretchr/testify v1.3.0/go.mod h1:M5WIy9Dh21IEIfnGCwXGc5bZfKNJtfHm1UVUgZn+9EI=
github.com/stretchr/testify v1.7.0/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg=
github.com/stretchr/testify v1.7.1/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg=
Expand All @@ -99,7 +110,10 @@ golang.org/x/crypto v0.12.0 h1:tFM/ta59kqch6LlvYnPa0yx5a83cL2nHflFhYKvv9Yk=
golang.org/x/crypto v0.12.0/go.mod h1:NF0Gs7EO5K4qLn+Ylc+fih8BSTeIjAP05siRnAh98yw=
golang.org/x/net v0.12.0 h1:cfawfvKITfUsFCeJIHJrbSxpeu/E81khclypR0GVT50=
golang.org/x/net v0.12.0/go.mod h1:zEVYFnQC7m/vmpQFELhcD1EWkZlX69l4oqgmer6hfKA=
golang.org/x/sys v0.0.0-20190422165155-953cdadca894/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
golang.org/x/sys v0.0.0-20200302150141-5c8b2ff67527/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
golang.org/x/sys v0.0.0-20220704084225-05e143d24a9e/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
golang.org/x/sys v0.0.0-20220715151400-c0bba94af5f8/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
golang.org/x/sys v0.6.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
golang.org/x/sys v0.11.0 h1:eG7RXZHdqOJ1i+0lgLgCpSXAp6M3LYlAo6osgSi0xOM=
golang.org/x/sys v0.11.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
Expand Down

0 comments on commit f8dd104

Please sign in to comment.