mirror of
https://github.com/pagefaultgames/rogueserver.git
synced 2025-04-03 03:27:13 +08:00
ensure uniqueness of daily seed
This commit is contained in:
parent
3a5f6fb116
commit
b803dff3e9
@ -61,22 +61,27 @@ func Init() error {
|
|||||||
secret = newSecret
|
secret = newSecret
|
||||||
}
|
}
|
||||||
|
|
||||||
err = recordNewDaily()
|
seed, err := recordNewDaily()
|
||||||
if err != nil {
|
if err != nil {
|
||||||
log.Print(err)
|
log.Print(err)
|
||||||
}
|
}
|
||||||
|
|
||||||
log.Printf("Daily Run Seed: %s", Seed())
|
log.Printf("Daily Run Seed: %s", seed)
|
||||||
|
|
||||||
scheduler.AddFunc("@daily", func() {
|
_, err = scheduler.AddFunc("@daily", func() {
|
||||||
time.Sleep(time.Second)
|
time.Sleep(time.Second)
|
||||||
|
|
||||||
err := recordNewDaily()
|
seed, err = recordNewDaily()
|
||||||
|
log.Printf("Daily Run Seed: %s", seed)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
log.Printf("error while recording new daily: %s", err)
|
log.Printf("error while recording new daily: %s", err)
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
|
|
||||||
|
if err != nil {
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
|
||||||
scheduler.Start()
|
scheduler.Start()
|
||||||
|
|
||||||
return nil
|
return nil
|
||||||
@ -95,11 +100,6 @@ func deriveSeed(seedTime time.Time) []byte {
|
|||||||
return hashedSeed[:]
|
return hashedSeed[:]
|
||||||
}
|
}
|
||||||
|
|
||||||
func recordNewDaily() error {
|
func recordNewDaily() (string, error) {
|
||||||
err := db.TryAddDailyRun(Seed())
|
return db.TryAddDailyRun(Seed())
|
||||||
if err != nil {
|
|
||||||
return err
|
|
||||||
}
|
|
||||||
|
|
||||||
return nil
|
|
||||||
}
|
}
|
||||||
|
@ -18,6 +18,7 @@
|
|||||||
package api
|
package api
|
||||||
|
|
||||||
import (
|
import (
|
||||||
|
"encoding/base64"
|
||||||
"encoding/json"
|
"encoding/json"
|
||||||
"fmt"
|
"fmt"
|
||||||
"net/http"
|
"net/http"
|
||||||
@ -302,7 +303,13 @@ func handleSaveData(w http.ResponseWriter, r *http.Request) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
// doesn't return a save, but it works
|
// doesn't return a save, but it works
|
||||||
save, err = savedata.Clear(uuid, slot, daily.Seed(), s)
|
var seed string
|
||||||
|
seed, err = db.GetDailyRunSeed()
|
||||||
|
if err != nil {
|
||||||
|
httpError(w, r, err, http.StatusInternalServerError)
|
||||||
|
return
|
||||||
|
}
|
||||||
|
save, err = savedata.Clear(uuid, slot, seed, s)
|
||||||
}
|
}
|
||||||
if err != nil {
|
if err != nil {
|
||||||
httpError(w, r, err, http.StatusInternalServerError)
|
httpError(w, r, err, http.StatusInternalServerError)
|
||||||
@ -326,7 +333,21 @@ func handleSaveData(w http.ResponseWriter, r *http.Request) {
|
|||||||
// daily
|
// daily
|
||||||
|
|
||||||
func handleDailySeed(w http.ResponseWriter, r *http.Request) {
|
func handleDailySeed(w http.ResponseWriter, r *http.Request) {
|
||||||
w.Write([]byte(daily.Seed()))
|
seed, err := db.GetDailyRunSeed()
|
||||||
|
if err != nil {
|
||||||
|
httpError(w, r, err, http.StatusInternalServerError)
|
||||||
|
return
|
||||||
|
}
|
||||||
|
bytes, err := base64.StdEncoding.DecodeString(seed)
|
||||||
|
if err != nil {
|
||||||
|
httpError(w, r, err, http.StatusInternalServerError)
|
||||||
|
return
|
||||||
|
}
|
||||||
|
_, err = w.Write(bytes)
|
||||||
|
if err != nil {
|
||||||
|
httpError(w, r, err, http.StatusInternalServerError)
|
||||||
|
return
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
func handleDailyRankings(w http.ResponseWriter, r *http.Request) {
|
func handleDailyRankings(w http.ResponseWriter, r *http.Request) {
|
||||||
|
20
db/daily.go
20
db/daily.go
@ -23,13 +23,25 @@ import (
|
|||||||
"github.com/pagefaultgames/rogueserver/defs"
|
"github.com/pagefaultgames/rogueserver/defs"
|
||||||
)
|
)
|
||||||
|
|
||||||
func TryAddDailyRun(seed string) error {
|
func TryAddDailyRun(seed string) (string, error) {
|
||||||
_, err := handle.Exec("INSERT INTO dailyRuns (seed, date) VALUES (?, UTC_DATE()) ON DUPLICATE KEY UPDATE date = date", seed)
|
var actualSeed string
|
||||||
|
err := handle.QueryRow("INSERT INTO dailyRuns (seed, date) VALUES (?, UTC_DATE()) ON DUPLICATE KEY UPDATE date = date RETURNING seed", seed).Scan(&actualSeed)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return err
|
return "INVALID", err
|
||||||
}
|
}
|
||||||
|
|
||||||
return nil
|
return actualSeed, nil
|
||||||
|
}
|
||||||
|
|
||||||
|
func GetDailyRunSeed() (string, error) {
|
||||||
|
var seed string
|
||||||
|
err := handle.QueryRow("SELECT seed FROM dailyRuns WHERE date = UTC_DATE()").Scan(&seed)
|
||||||
|
if err != nil {
|
||||||
|
return "INVALID", err
|
||||||
|
}
|
||||||
|
|
||||||
|
return seed, nil
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
func AddOrUpdateAccountDailyRun(uuid []byte, score int, wave int) error {
|
func AddOrUpdateAccountDailyRun(uuid []byte, score int, wave int) error {
|
||||||
|
Loading…
x
Reference in New Issue
Block a user