Skip to content
This repository was archived by the owner on Apr 17, 2024. It is now read-only.

Commit a45a2ec

Browse files
authored
gamebox: reset gamebox (#110)
1 parent fc1ea6e commit a45a2ec

File tree

9 files changed

+47
-11
lines changed

9 files changed

+47
-11
lines changed

go.mod

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -55,8 +55,8 @@ require (
5555
github.com/theplant/cldr v0.0.0-20190423050709-9f76f7ce4ee8 // indirect
5656
github.com/theplant/htmltestingutils v0.0.0-20190423050759-0e06de7b6967 // indirect
5757
github.com/theplant/testingutils v0.0.0-20190603093022-26d8b4d95c61 // indirect
58-
github.com/vidar-team/Cardinal_frontend v0.7.2
59-
github.com/vidar-team/Cardinal_manager_frontend v0.7.2
58+
github.com/vidar-team/Cardinal_frontend v0.7.3
59+
github.com/vidar-team/Cardinal_manager_frontend v0.7.3
6060
github.com/yosssi/gohtml v0.0.0-20200424144038-a48de20dd9dd // indirect
6161
golang.org/x/crypto v0.0.0-20191205180655-e7c4368fe9dd
6262
golang.org/x/text v0.3.0

go.sum

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -321,6 +321,8 @@ github.com/vidar-team/Cardinal_frontend v0.7.0 h1:7RcqGZcLy6bMXMBZvIbIoVC08mzdBF
321321
github.com/vidar-team/Cardinal_frontend v0.7.0/go.mod h1:wD4qPD/Z+T3eT0SiOQe9262VY6xSyWz12UQXmkH9uiI=
322322
github.com/vidar-team/Cardinal_frontend v0.7.2 h1:BvaBbfw+nw0fOdhTIAz7qPTqLqFdVLQd/ggP4XYWX4o=
323323
github.com/vidar-team/Cardinal_frontend v0.7.2/go.mod h1:wD4qPD/Z+T3eT0SiOQe9262VY6xSyWz12UQXmkH9uiI=
324+
github.com/vidar-team/Cardinal_frontend v0.7.3 h1:9lyBHUfnGIoegcIpen3n8S99cYYc+lS7hSW5MMV4O60=
325+
github.com/vidar-team/Cardinal_frontend v0.7.3/go.mod h1:wD4qPD/Z+T3eT0SiOQe9262VY6xSyWz12UQXmkH9uiI=
324326
github.com/vidar-team/Cardinal_manager_frontend v0.7.0 h1:ETcUmcSkh8cZYV2dSKioRM4bnAhnTNjEFKwD8yW4nCQ=
325327
github.com/vidar-team/Cardinal_manager_frontend v0.7.0/go.mod h1:uJBQtuXHTLNyuIMONoM1OqYmW7Q/N40+587Qt90kqAk=
326328
github.com/vidar-team/Cardinal_manager_frontend v0.7.1-1 h1:vCxLOT54YmYf8hB9QdqB7VVVOhxdTIMpcLUE33E8FcE=
@@ -331,6 +333,8 @@ github.com/vidar-team/Cardinal_manager_frontend v0.7.1 h1:HgqOwST8hmFHD1w9zSQy3c
331333
github.com/vidar-team/Cardinal_manager_frontend v0.7.1/go.mod h1:uJBQtuXHTLNyuIMONoM1OqYmW7Q/N40+587Qt90kqAk=
332334
github.com/vidar-team/Cardinal_manager_frontend v0.7.2 h1:DjSV6rZGl3M8o8xcBY6agNxRlgc5r71Gvimja/viBIE=
333335
github.com/vidar-team/Cardinal_manager_frontend v0.7.2/go.mod h1:uJBQtuXHTLNyuIMONoM1OqYmW7Q/N40+587Qt90kqAk=
336+
github.com/vidar-team/Cardinal_manager_frontend v0.7.3 h1:FyHJlb1NV0GgIEDvXxtTwUMWu40vpfldEh9ZSmWFBqE=
337+
github.com/vidar-team/Cardinal_manager_frontend v0.7.3/go.mod h1:uJBQtuXHTLNyuIMONoM1OqYmW7Q/N40+587Qt90kqAk=
334338
github.com/xeipuuv/gojsonpointer v0.0.0-20180127040702-4e3ac2762d5f/go.mod h1:N2zxlSyiKSe5eX1tZViRH5QA0qijqEDrYZiPEAiq3wU=
335339
github.com/xeipuuv/gojsonreference v0.0.0-20180127040603-bd5ef7bd5415/go.mod h1:GwrjFmJcFw6At/Gs6z4yjiIwzuJ1/+UwLxMQDVQXShQ=
336340
github.com/xeipuuv/gojsonschema v1.2.0/go.mod h1:anYRn/JVcOK2ZgGU+IjEV4nwlhoK5sQluxsYJ78Id3Y=

internal/db/model.go

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -150,7 +150,8 @@ type WebHook struct {
150150
type DynamicConfig struct {
151151
gorm.Model `json:"-"`
152152

153-
Key string
154-
Value string
155-
Kind int8
153+
Key string
154+
Value string
155+
Kind int8
156+
Options string
156157
}

internal/dynamic_config/dynamic_config.go

Lines changed: 17 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@ package dynamic_config
22

33
import (
44
"github.com/gin-gonic/gin"
5+
56
"github.com/vidar-team/Cardinal/internal/db"
67
"github.com/vidar-team/Cardinal/internal/locales"
78
"github.com/vidar-team/Cardinal/internal/utils"
@@ -16,21 +17,32 @@ func Init() {
1617
initConfig(utils.FLAG_SUFFIX_CONF, "}", utils.STRING)
1718
initConfig(utils.ANIMATE_ASTEROID, utils.BOOLEAN_FALSE, utils.BOOLEAN)
1819
initConfig(utils.SHOW_OTHERS_GAMEBOX, utils.BOOLEAN_FALSE, utils.BOOLEAN)
20+
initConfig(utils.DEFAULT_LANGUAGE, "zh-CN", utils.SELECT, "zh-CN|en-US")
1921
}
2022

2123
// initConfig set the default value of the given key.
2224
// Always used in installation.
23-
func initConfig(key string, value string, kind int8) {
25+
func initConfig(key string, value string, kind int8, option ...string) {
26+
var opt string
27+
if len(option) != 0 {
28+
opt = option[0]
29+
}
30+
2431
db.MySQL.Model(&db.DynamicConfig{}).FirstOrCreate(&db.DynamicConfig{
25-
Key: key,
26-
Value: value,
27-
Kind: kind,
32+
Key: key,
33+
Value: value,
34+
Kind: kind,
35+
Options: opt,
2836
}, "`key` = ?", key)
2937
}
3038

3139
// Set update the config by insert a new record into database, for we can make a config version control soon.
3240
// Then refresh the config in struct.
3341
func Set(key string, value string) {
42+
if key == utils.DATBASE_VERSION {
43+
return
44+
}
45+
3446
db.MySQL.Model(&db.DynamicConfig{}).Where("`key` = ?", key).Update(&db.DynamicConfig{
3547
Key: key,
3648
Value: value,
@@ -77,6 +89,6 @@ func GetConfig(c *gin.Context) (int, interface{}) {
7789
// GetAllConfig is the HTTP handler used to return the all the configs.
7890
func GetAllConfig(c *gin.Context) (int, interface{}) {
7991
var config []db.DynamicConfig
80-
db.MySQL.Model(&db.DynamicConfig{}).Find(&config)
92+
db.MySQL.Model(&db.DynamicConfig{}).Where("`key` != ?", utils.DATBASE_VERSION).Find(&config)
8193
return utils.MakeSuccessJSON(config)
8294
}

internal/game/gamebox.go

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@ import (
66

77
"github.com/gin-gonic/gin"
88
"github.com/jinzhu/gorm"
9+
910
"github.com/vidar-team/Cardinal/internal/db"
1011
"github.com/vidar-team/Cardinal/internal/dynamic_config"
1112
"github.com/vidar-team/Cardinal/internal/locales"
@@ -223,3 +224,14 @@ func GetOthersGameBox(c *gin.Context) (int, interface{}) {
223224
func CleanGameBoxStatus() {
224225
db.MySQL.Model(&db.GameBox{}).Update(map[string]interface{}{"is_down": false, "is_attacked": false})
225226
}
227+
228+
func ResetAllGameBoxes(c *gin.Context) (int, interface{}) {
229+
db.MySQL.Model(&db.AttackAction{}).Delete(&db.AttackAction{})
230+
db.MySQL.Model(&db.DownAction{}).Delete(&db.DownAction{})
231+
232+
CleanGameBoxStatus()
233+
SetRankList()
234+
235+
logger.New(logger.IMPORTANT, "manager_operate", string(locales.I18n.T(c.GetString("lang"), "gamebox.reset_success")))
236+
return utils.MakeSuccessJSON(locales.I18n.T(c.GetString("lang"), "gamebox.reset_success"))
237+
}

internal/route/router.go

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@ import (
55
"github.com/gin-contrib/cors"
66
"github.com/gin-contrib/static"
77
"github.com/gin-gonic/gin"
8+
89
"github.com/vidar-team/Cardinal/conf"
910
"github.com/vidar-team/Cardinal/frontend"
1011
"github.com/vidar-team/Cardinal/internal/asteroid"
@@ -57,7 +58,8 @@ func Init() *gin.Engine {
5758

5859
api.GET("/base", func(c *gin.Context) {
5960
c.JSON(utils.MakeSuccessJSON(gin.H{
60-
"Title": dynamic_config.Get(utils.TITLE_CONF),
61+
"Title": dynamic_config.Get(utils.TITLE_CONF),
62+
"Language": dynamic_config.Get(utils.DEFAULT_LANGUAGE),
6163
}))
6264
})
6365

@@ -124,6 +126,7 @@ func Init() *gin.Engine {
124126
// TODO: i18n
125127
c.JSON(utils.MakeSuccessJSON("刷新 Flag 操作已执行,请在数据大屏查看是否有错误信息"))
126128
})
129+
managerRouter.GET("/gameboxes/reset", __(game.ResetAllGameBoxes))
127130

128131
// Team
129132
managerRouter.GET("/teams", __(team.GetAllTeams))

internal/utils/const.go

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,7 @@ const (
1515
FLAG_SUFFIX_CONF = "flag_suffix"
1616
ANIMATE_ASTEROID = "animate_asteroid"
1717
SHOW_OTHERS_GAMEBOX = "show_others_gamebox"
18+
DEFAULT_LANGUAGE = "default_language"
1819

1920
BOOLEAN_TRUE = "true"
2021
BOOLEAN_FALSE = "false"
@@ -24,4 +25,5 @@ const (
2425
// Config type
2526
STRING = iota
2627
BOOLEAN
28+
SELECT
2729
)

locales/en-US.yml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -59,6 +59,7 @@ en-US:
5959
repeat: "Duplicated Gamebox Found!"
6060
not_found: "Gamebox Not Found!"
6161
auto_refresh_flag_error: "Missing GameBox SSH!"
62+
reset_success: "Reset gameboxes successfully!"
6263

6364
team:
6465
post_error: "Add Team Failed!"

locales/zh-CN.yml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -59,6 +59,7 @@ zh-CN:
5959
repeat: "存在重复添加的靶机,请检查"
6060
not_found: "靶机不存在!"
6161
auto_refresh_flag_error: "靶机 SSH 设置为空"
62+
reset_success: "重置靶机信息成功"
6263

6364
team:
6465
post_error: "添加队伍失败!"

0 commit comments

Comments
 (0)