Extend validity period and add checking to ensure ROA data
won't expire unnessarily
This commit is contained in:
parent
14ed3da238
commit
ddbedc0ff6
20
roaapi.go
20
roaapi.go
@ -57,6 +57,12 @@ type ROA struct {
|
|||||||
|
|
||||||
var ROAData *ROA
|
var ROAData *ROA
|
||||||
|
|
||||||
|
// set validity period for one week
|
||||||
|
// this might appear to be a long time, but is intended to provide
|
||||||
|
// enough time to prevent expiry of the data between real registry
|
||||||
|
// updates (which may only happen infrequently)
|
||||||
|
const ROA_JSON_VALIDITY_PERIOD = (7 * 24)
|
||||||
|
|
||||||
type ROAMetaData struct {
|
type ROAMetaData struct {
|
||||||
Counts uint `json:"counts"`
|
Counts uint `json:"counts"`
|
||||||
Generated uint32 `json:"generated"`
|
Generated uint32 `json:"generated"`
|
||||||
@ -95,6 +101,18 @@ func InitROAAPI(params ...interface{}) {
|
|||||||
|
|
||||||
// return JSON formatted ROA data suitable for use with GoRTR
|
// return JSON formatted ROA data suitable for use with GoRTR
|
||||||
func roaJSONHandler(w http.ResponseWriter, r *http.Request) {
|
func roaJSONHandler(w http.ResponseWriter, r *http.Request) {
|
||||||
|
|
||||||
|
// check validity period of returned data
|
||||||
|
tnow := uint32(time.Now().Unix())
|
||||||
|
valid := ROAJSONResponse.MetaData.Valid
|
||||||
|
|
||||||
|
// check if validity period is close to expiry
|
||||||
|
if (tnow > valid) ||
|
||||||
|
((valid - tnow) < (ROA_JSON_VALIDITY_PERIOD / 4)) {
|
||||||
|
// if so extend the validity period
|
||||||
|
ROAJSONResponse.MetaData.Valid += (ROA_JSON_VALIDITY_PERIOD * 3600)
|
||||||
|
}
|
||||||
|
|
||||||
ResponseJSON(w, ROAJSONResponse)
|
ResponseJSON(w, ROAJSONResponse)
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -173,7 +191,7 @@ func ROAUpdate(params ...interface{}) {
|
|||||||
response := &ROAJSON{
|
response := &ROAJSON{
|
||||||
MetaData: ROAMetaData{
|
MetaData: ROAMetaData{
|
||||||
Generated: utime,
|
Generated: utime,
|
||||||
Valid: utime + (12 * 3600), // valid for 12 hours
|
Valid: utime + (ROA_JSON_VALIDITY_PERIOD * 3600),
|
||||||
},
|
},
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user