diff --git a/.env.template b/.env.template index 05ab3a8960882958c0e9f1043fa87f61579272d1..3990d028175b9cdfb675a7ddadd3c140deeb81f7 100644 --- a/.env.template +++ b/.env.template @@ -22,5 +22,6 @@ DATABASE_NAME BO_API_TOKEN +FETCH_GRDF_TOKEN=true GRDF_CLIENT_ID GRDF_CLIENT_SECRET diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index 8af339c30cd91a00d1a939b8df4c8925e7f089a9..a21ef1708d67e4177e214b5682dbd03e954ee8c3 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -142,6 +142,7 @@ deploy_rec: - sed -i "s/{{CLIENT_ID}}/$REC_CLIENT_ID/" ./k8s/secrets/ecolyo-agent-server-config.yml - sed -i "s/{{CLIENT_SECRET}}/$REC_CLIENT_SECRET/" ./k8s/secrets/ecolyo-agent-server-config.yml - sed -i "s/{{BO_API_TOKEN}}/$REC_BO_API_TOKEN/" ./k8s/secrets/ecolyo-agent-server-config.yml + - sed -i "s/{{FETCH_GRDF_TOKEN}}/$FETCH_GRDF_TOKEN/" ./k8s/secrets/ecolyo-agent-server-config.yml - sed -i "s/{{GRDF_CLIENT_ID}}/$GRDF_CLIENT_ID/" ./k8s/secrets/ecolyo-agent-server-config.yml - sed -i "s/{{GRDF_CLIENT_SECRET}}/$GRDF_CLIENT_SECRET/" ./k8s/secrets/ecolyo-agent-server-config.yml - sed -i "s/{{HOSTNAME}}/ecolyo-agent-rec.apps.grandlyon.com/g" ./k8s/secrets/ecolyo-agent-server-config.yml @@ -174,6 +175,7 @@ deploy_prod: - sed -i "s/{{CLIENT_ID}}/$PROD_CLIENT_ID/" ./k8s/secrets/ecolyo-agent-server-config.yml - sed -i "s/{{CLIENT_SECRET}}/$PROD_CLIENT_SECRET/" ./k8s/secrets/ecolyo-agent-server-config.yml - sed -i "s/{{BO_API_TOKEN}}/$PROD_BO_API_TOKEN/" ./k8s/secrets/ecolyo-agent-server-config.yml + - sed -i "s/{{FETCH_GRDF_TOKEN}}/$FETCH_GRDF_TOKEN/" ./k8s/secrets/ecolyo-agent-server-config.yml - sed -i "s/{{GRDF_CLIENT_ID}}/$GRDF_CLIENT_ID/" ./k8s/secrets/ecolyo-agent-server-config.yml - sed -i "s/{{GRDF_CLIENT_SECRET}}/$GRDF_CLIENT_SECRET/" ./k8s/secrets/ecolyo-agent-server-config.yml - sed -i "s/{{HOSTNAME}}/ecolyo-agent.apps.grandlyon.com/g" ./k8s/secrets/ecolyo-agent-server-config.yml diff --git a/k8s/secrets/ecolyo-agent-server-config.yml b/k8s/secrets/ecolyo-agent-server-config.yml index 8beaebcd8d310d2546c52060152f15e5fa404c80..3f09d2beeddafaacca0ffc78ef761bc944a12510 100644 --- a/k8s/secrets/ecolyo-agent-server-config.yml +++ b/k8s/secrets/ecolyo-agent-server-config.yml @@ -20,6 +20,7 @@ stringData: BO_API_TOKEN: {{BO_API_TOKEN}} TOKEN_URL: {{TOKEN_URL}} USERINFO_URL: {{USERINFO_URL}} + FETCH_GRDF_TOKEN: {{FETCH_GRDF_TOKEN}} GRDF_CLIENT_ID: {{GRDF_CLIENT_ID}} GRDF_CLIENT_SECRET: {{GRDF_CLIENT_SECRET}} type: Opaque diff --git a/main.go b/main.go index 2ce10eea288fe1aee16b90bb229cbb4135982849..1ff1d184a5cf90889992b2d1dc6569b67369b207 100644 --- a/main.go +++ b/main.go @@ -16,9 +16,10 @@ import ( ) var ( - httpsPort = common.IntValueFromEnv("HTTPS_PORT", 443) // HTTPS port to serve on - debugMode = common.BoolValueFromEnv("DEBUG_MODE", false) // Debug mode, disable Secure attribute for cookies - mockOAuth2 = common.BoolValueFromEnv("MOCK_OAUTH2", false) // Enable mock OAuth2 login + httpsPort = common.IntValueFromEnv("HTTPS_PORT", 443) // HTTPS port to serve on + debugMode = common.BoolValueFromEnv("DEBUG_MODE", false) // Debug mode, disable Secure attribute for cookies + mockOAuth2 = common.BoolValueFromEnv("MOCK_OAUTH2", false) // Enable mock OAuth2 login + fetchGrdfToken = common.BoolValueFromEnv("FETCH_GRDF_TOKEN", true) // HTTPS port to serve on ) func main() { @@ -41,23 +42,27 @@ func main() { fmt.Println("Mock OAuth2 server Listening on: http://localhost" + mockOAuth2Port) } - // Call the function immediately when the server starts - models.FetchGRDFAuthAPI() - - // then call GRDF auth api every two hours - ticker := time.NewTicker(time.Hour * 2) quit := make(chan struct{}) - go func() { - for { - select { - case <-ticker.C: - models.FetchGRDFAuthAPI() - case <-quit: - ticker.Stop() - return + + // If needed, we shall request a new GRDF token every 2-hours + if fetchGrdfToken { + // Call the function immediately when the server starts + models.FetchGRDFAuthAPI() + + // then call GRDF auth api every two hours + ticker := time.NewTicker(time.Hour * 2) + go func() { + for { + select { + case <-ticker.C: + models.FetchGRDFAuthAPI() + case <-quit: + ticker.Stop() + return + } } - } - }() + }() + } // Deletes outdated consents every 24h dh := models.NewDataHandler()