55 "fmt"
66 "log"
77 "net/url"
8+ "strconv"
89 "strings"
910 "time"
1011
@@ -57,8 +58,9 @@ func Start(logger logging.LoggerInterface, cfg *pconf.Main) error {
5758 return fmt .Errorf ("error writing temporary snapshot file: %w" , err )
5859 }
5960
60- if snap .Meta ().SpecVersion != cfg .FlagSpecVersion {
61- return common .NewInitError (fmt .Errorf ("snapshot spec version %s does not match config spec version %s" , snap .Meta ().SpecVersion , cfg .FlagSpecVersion ), common .ExitErrorDB )
61+ currentHash := util .HashAPIKey (cfg .Apikey + cfg .FlagSpecVersion + strings .Join (cfg .FlagSetsFilter , "::" ))
62+ if snap .Meta ().Hash != strconv .Itoa (int (currentHash )) {
63+ return common .NewInitError (errors .New ("snapshot cfg (apikey, version, flagsets) does not match the provided one" ), common .ExitErrorDB )
6264 }
6365
6466 logger .Debug ("Database created from snapshot at" , dbpath )
@@ -221,6 +223,7 @@ func Start(logger logging.LoggerInterface, cfg *pconf.Main) error {
221223
222224 // --------------------------- ADMIN DASHBOARD ------------------------------
223225 cfgForAdmin := * cfg
226+ hash := util .HashAPIKey (cfgForAdmin .Apikey + cfg .FlagSpecVersion + strings .Join (cfg .FlagSetsFilter , "::" ))
224227 cfgForAdmin .Apikey = logging .ObfuscateAPIKey (cfgForAdmin .Apikey )
225228
226229 adminTLSConfig , err := util .TLSConfigForServer (& cfg .Admin .TLS )
@@ -244,6 +247,7 @@ func Start(logger logging.LoggerInterface, cfg *pconf.Main) error {
244247 FullConfig : cfgForAdmin ,
245248 TLS : adminTLSConfig ,
246249 FlagSpecVersion : cfg .FlagSpecVersion ,
250+ Hash : strconv .Itoa (int (hash )),
247251 })
248252 if err != nil {
249253 return common .NewInitError (fmt .Errorf ("error starting admin server: %w" , err ), common .ExitAdminError )
0 commit comments