This commit is contained in:
Neale Pickett 2019-11-13 20:47:56 +00:00
parent 8771cf9d4f
commit 8af56b515d
4 changed files with 34 additions and 38 deletions

View File

@ -106,7 +106,7 @@ func (ctx *Instance) answerHandler(w http.ResponseWriter, req *http.Request) {
pointstr := req.FormValue("points")
answer := req.FormValue("answer")
if ! ctx.ValidTeamId(teamId) {
if !ctx.ValidTeamId(teamId) {
respond(
w, req, JSendFail,
"Invalid team ID",
@ -251,7 +251,7 @@ func (ctx *Instance) staticHandler(w http.ResponseWriter, req *http.Request) {
}
func (ctx *Instance) manifestHandler(w http.ResponseWriter, req *http.Request) {
if (! ctx.Runtime.export_manifest) {
if !ctx.Runtime.export_manifest {
http.Error(w, "Endpoint disabled", http.StatusForbidden)
return
}
@ -262,7 +262,7 @@ func (ctx *Instance) manifestHandler(w http.ResponseWriter, req *http.Request) {
return
}
if (req.Method == http.MethodHead) {
if req.Method == http.MethodHead {
w.WriteHeader(http.StatusOK)
return
}
@ -273,13 +273,13 @@ func (ctx *Instance) manifestHandler(w http.ResponseWriter, req *http.Request) {
// Pack up the theme files
theme_root_re := regexp.MustCompile(fmt.Sprintf("^%s/", ctx.ThemeDir))
filepath.Walk(ctx.ThemeDir, func (path string, info os.FileInfo, err error) error {
filepath.Walk(ctx.ThemeDir, func(path string, info os.FileInfo, err error) error {
if err != nil {
return err
}
if ! info.IsDir() { // Only package up files
localized_path := theme_root_re.ReplaceAllLiteralString( path, "")
if !info.IsDir() { // Only package up files
localized_path := theme_root_re.ReplaceAllLiteralString(path, "")
manifest = append(manifest, localized_path)
}
return nil
@ -287,13 +287,13 @@ func (ctx *Instance) manifestHandler(w http.ResponseWriter, req *http.Request) {
// Package up files for currently-unlocked puzzles in categories
for category_name, category := range ctx.categories {
if _, ok := ctx.MaxPointsUnlocked[category_name]; ok { // Check that the category is actually unlocked. This should never fail, probably
if _, ok := ctx.MaxPointsUnlocked[category_name]; ok { // Check that the category is actually unlocked. This should never fail, probably
for _, file := range category.zf.File {
parts := strings.Split(file.Name, "/")
if (parts[0] == "content") { // Only pick up content files, not thing like map.txt
for _, puzzlemap := range category.puzzlemap { // Figure out which puzzles are currently unlocked
if (puzzlemap.Path == parts[1] && puzzlemap.Points <= ctx.MaxPointsUnlocked[category_name]) {
if parts[0] == "content" { // Only pick up content files, not thing like map.txt
for _, puzzlemap := range category.puzzlemap { // Figure out which puzzles are currently unlocked
if puzzlemap.Path == parts[1] && puzzlemap.Points <= ctx.MaxPointsUnlocked[category_name] {
manifest = append(manifest, path.Join("content", category_name, path.Join(parts[1:]...)))
break

View File

@ -26,16 +26,16 @@ type Instance struct {
ThemeDir string
AttemptInterval time.Duration
Runtime RuntimeConfig
Runtime RuntimeConfig
categories map[string]*Mothball
MaxPointsUnlocked map[string]int
update chan bool
jPuzzleList []byte
jPointsLog []byte
nextAttempt map[string]time.Time
nextAttemptMutex *sync.RWMutex
mux *http.ServeMux
categories map[string]*Mothball
MaxPointsUnlocked map[string]int
update chan bool
jPuzzleList []byte
jPointsLog []byte
nextAttempt map[string]time.Time
nextAttemptMutex *sync.RWMutex
mux *http.ServeMux
}
func (ctx *Instance) Initialize() error {

View File

@ -12,7 +12,6 @@ import (
"time"
)
func (pm *PuzzleMap) MarshalJSON() ([]byte, error) {
if pm == nil {
return []byte("null"), nil
@ -35,7 +34,6 @@ func (ctx *Instance) generatePuzzleList() {
}
}
ret := map[string][]PuzzleMap{}
for catName, mb := range ctx.categories {
filtered_puzzlemap := make([]PuzzleMap, 0, 30)
@ -273,11 +271,11 @@ func (ctx *Instance) isEnabled() bool {
func (ctx *Instance) UpdateConfig() {
// Handle export manifest
if _, err := os.Stat(ctx.StatePath("export_manifest")); err == nil {
if (! ctx.Runtime.export_manifest) {
if !ctx.Runtime.export_manifest {
log.Print("Enabling manifest export")
ctx.Runtime.export_manifest = true
}
} else if (ctx.Runtime.export_manifest) {
} else if ctx.Runtime.export_manifest {
log.Print("Disabling manifest export")
ctx.Runtime.export_manifest = false
}

View File

@ -13,16 +13,15 @@ import (
)
type PuzzleMap struct {
Points int
Path string
Points int
Path string
}
type Mothball struct {
zf *zip.ReadCloser
filename string
puzzlemap []PuzzleMap
mtime time.Time
zf *zip.ReadCloser
filename string
puzzlemap []PuzzleMap
mtime time.Time
}
type MothballFile struct {
@ -161,7 +160,7 @@ func (m *Mothball) Refresh() error {
mf, err := m.Open("map.txt")
if err != nil {
// File isn't in there
// File isn't in there
} else {
defer mf.Close()
@ -183,11 +182,10 @@ func (m *Mothball) Refresh() error {
pm = append(pm, PuzzleMap{pointval, dir})
}
m.puzzlemap = pm
}
}
m.puzzlemap = pm
}
return nil
}