diff --git a/main.go b/main.go index c0add7a0b30aeb80b4df87425e782e2536f9e892..5fc2f26964673d0aa73b3ecd7696461ea67eb52d 100644 --- a/main.go +++ b/main.go @@ -1,27 +1,28 @@ package main import ( - "encoding/json" "encoding/base64" + "encoding/json" "flag" "io" "io/ioutil" "net/http" "net/url" - "reflect" "os" + "reflect" "strconv" "strings" + log "github.com/sirupsen/logrus" ) var ( - httpPort = flag.Int("http_port", LookupEnvOrInt("HTTP_PORT", 80), "HTTP port to serve on (defaults to 80)") - logLevel = flag.String("loglevel", LookupEnvOrString("LOGLEVEL", "debug"), "log level (debug, info, warning, error) (defaults to debug)") - cozyDomain = flag.String("cozy_domain", LookupEnvOrString("COZY_DOMAIN", "cozy.self-data.alpha.grandlyon.com"), "Cozy domain (defaults to cozy.self-data.alpha.grandlyon.com)") - cozyRedirectURI = flag.String("cozy_redirect_uri", LookupEnvOrString("COZY_REDIRECT_URI", "/accounts/enedisgrandlyon/redirect"), "Cozy redirect URI (defaults to /accounts/enedisgrandlyon/redirect)") - cozyGrdfRedirectURI = flag.String("cozy_grdf_redirect_uri", LookupEnvOrString("COZY_GRDF_REDIRECT_URI", "/accounts/grdfgrandlyon/redirect"), "Cozy redirect URI (defaults to /accounts/grdfgrandlyon/redirect)") - cozyProxyURI = flag.String("cozy_proxy_uri", LookupEnvOrString("COZY_PROXY_URI", "https://oauth-proxy.self-data.alpha.grandlyon.com"), "Cozy domain (defaults to https://oauth-proxy.self-data.alpha.grandlyon.com)") + httpPort = flag.Int("http_port", LookupEnvOrInt("HTTP_PORT", 80), "HTTP port to serve on (defaults to 80)") + logLevel = flag.String("loglevel", LookupEnvOrString("LOGLEVEL", "debug"), "log level (debug, info, warning, error) (defaults to debug)") + cozyDomain = flag.String("cozy_domain", LookupEnvOrString("COZY_DOMAIN", "cozy.self-data.alpha.grandlyon.com"), "Cozy domain (defaults to cozy.self-data.alpha.grandlyon.com)") + cozyRedirectURI = flag.String("cozy_redirect_uri", LookupEnvOrString("COZY_REDIRECT_URI", "/accounts/enedisgrandlyon/redirect"), "Cozy redirect URI (defaults to /accounts/enedisgrandlyon/redirect)") + cozyGrdfRedirectURI = flag.String("cozy_grdf_redirect_uri", LookupEnvOrString("COZY_GRDF_REDIRECT_URI", "/accounts/grdfgrandlyon/redirect"), "Cozy redirect URI (defaults to /accounts/grdfgrandlyon/redirect)") + cozyProxyURI = flag.String("cozy_proxy_uri", LookupEnvOrString("COZY_PROXY_URI", "https://oauth-proxy.self-data.alpha.grandlyon.com"), "Cozy domain (defaults to https://oauth-proxy.self-data.alpha.grandlyon.com)") ) type EnedisTokenResponse struct { @@ -59,13 +60,13 @@ type GrdfConsentementToken struct { } type GrdfTokenResponse struct { - AccessToken string `json:"access_token"` - RefreshToken string `json:"refresh_token"` - IdToken string `json:"id_token"` - TokenType string `json:"token_type"` - ExpiresIn int `json:"expires_in"` - Scope string `json:"scope"` - Pce string `json:"pce"` + AccessToken string `json:"access_token"` + RefreshToken string `json:"refresh_token"` + IdToken string `json:"id_token"` + TokenType string `json:"token_type"` + ExpiresIn int `json:"expires_in"` + Scope string `json:"scope"` + Pce string `json:"pce"` } func LookupEnvOrString(key string, defaultVal string) string { @@ -100,6 +101,78 @@ func findItem(arrayType interface{}, item interface{}) bool { return false } +func logRoute(key string) { + // format is : Subject - action - location - description + switch key { + case "Ping_enedis_new_auth": + log.Debug("Enedis - Received - Authorize - new /auth request from Cozy") + case "Ping_enedis_redirect": + log.Debug("Enedis - Received - Redirect") + case "Ping_enedis_new_token": + log.Debug("Enedis - Received - Token - new /token request from Cozy") + case "Ping_enedis_oauth_token": + log.Debug("Enedis - Received - Token - an oauth token request from Cozy") + case "Ping_enedis_refresh": + log.Debug("Enedis - Received - Token - a refresh token request from Cozy") + + case "Ping_grdf_new_auth": + log.Debug("Grdf - Received - Authorize - new /auth request from Cozy") + case "Ping_grdf_redirect": + log.Debug("Grdf - Received - Redirect") + case "Ping_grdf_new_token": + log.Debug("Grdf - Received - Token - new /token request from Cozy") + + case "Enedis_success": + log.Debug("Enedis - Success - Oauth - oauth dance successfully done") + case "Enedis_success_token": + log.Debug("Enedis - Success - Token - Enedis gave a new token or refresh token to the cozy stack") + case "Grdf_success": + log.Debug("Grdf - Success - Oauth - oauth dance successfully done") + case "Grdf_success_token": + log.Debug("Grdf - Success - Token - Grdf gave a new token to the cozy stack") + + case "Enedis_error": + log.Debug("Enedis - Error - Oauth - something wrong happened with enedis") + case "Enedis_redirect_error": + log.Debug("Enedis - Error - Redirect - an error occured with enedis redirection") + case "Enedis_token_error": + log.Debug("Enedis - Error - Token - an error occured with enedis /token endpoint") + + case "Grdf_error": + log.Debug("Grdf - Error - Oauth - something wrong happened with grdf") + case "Grdf_redirect_error": + log.Debug("Grdf - Error - Redirect - an error occured with grdf redirection") + case "Grdf_token_error": + log.Debug("Grdf - Error - Token - an error occured with grdf /token endpoint") + + case "Proxy_error": + log.Error("Proxy - Error - Oauth - something wrong happened in the proxy") + + case "Proxy_error_enedis_auth": + log.Error("Proxy - Error - Enedis - Authorize") + case "Proxy_error_grdf_auth": + log.Error("Proxy - Error - Grdf - Authorize") + + case "Proxy_error_enedis_redirect": + log.Error("Proxy - Error - Enedis - Redirect") + case "Proxy_error_grdf_redirect": + log.Error("Proxy - Error - Grdf - Redirect") + + case "Proxy_error_enedis_token": + log.Error("Proxy - Error - Enedis - Token") + case "Proxy_error_grdf_token": + log.Error("Proxy - Error - Grdf - Token") + + case "Cozy_error_enedis_auth": + log.Error("Cozy - Error - Enedis - Authorize") + case "Cozy_error_grdf_auth": + log.Error("Cozy - Error - Grdf - Authorize") + + default: + log.Debug("logRoute was called with unknown arguments") + } +} + func main() { // Parse the flags flag.Parse() @@ -138,9 +211,9 @@ func main() { // ENEDIS AUTH ENDPOINT mux.HandleFunc("/auth", func(w http.ResponseWriter, r *http.Request) { - log.Debug("Enedis - auth - Received new auth request from Cozy") + logRoute("Ping_enedis_new_auth") query := r.URL.Query() - log.Debug("Enedis - auth - query received from Cozy - ", query) + log.Debug("WL - EnedisReceived - Authorize - Query received from Cozy: ", query) clientId := query.Get("client_id") state := query.Get("state") @@ -148,65 +221,69 @@ func main() { // here we use the redirect_uri param to transmit our stack url // We keep only the instance name to not reach the 100 max char of redirectUrl cozyOrigin := query.Get("redirect_uri") - if len(clientId) > 0 && len(state) > 0 && len(cozyOrigin) > 0 { + if len(clientId) > 0 && len(state) > 0 && len(cozyOrigin) > 0 { splitIndexStart := strings.Index(cozyOrigin, ":") splitIndexEnd := strings.Index(cozyOrigin, ".") if splitIndexStart > -1 && splitIndexEnd > -1 { - instanceName := cozyOrigin[splitIndexStart+3:splitIndexEnd] + instanceName := cozyOrigin[splitIndexStart+3 : splitIndexEnd] // DEV API // authURL := "https://gw.hml.api.enedis.fr/dataconnect/v1/oauth2/authorize" // PROD API authURL := "https://mon-compte-particulier.enedis.fr/dataconnect/v1/oauth2/authorize" redirectUrl := authURL + "?client_id=" + clientId + "&duration=P6M&response_type=" + responseType + "&state=" + state + "-" + instanceName - log.Debug("Enedis - auth - Redirect user to Enedis - ", redirectUrl) + log.Debug("WL - EnedisSuccess - Authorize - Redirecting user to Enedis: ", redirectUrl) http.Redirect(w, r, redirectUrl, 302) } else { - log.Error("ProxyError: Enedis - auth - redirect_uri bad format from Cozy " + cozyOrigin) + logRoute("Proxy_error_enedis_auth") + log.Debug("WL - ProxyError - Enedis - Authorize - redirect_uri bad format from Cozy " + cozyOrigin) http.Error(w, http.StatusText(500), 500) } } else { - log.Error("CozyError: Enedis - auth - Missing parameters in request") + logRoute("Cozy_error_enedis_auth") + log.Debug("WL - CozyError - Enedis - Authorize - Missing parameters in request") http.Error(w, http.StatusText(500), 500) - } + } }) // GRDF ADICT AUTHORIZE ENDPOINT mux.HandleFunc("/grdf_authorize", func(w http.ResponseWriter, r *http.Request) { - log.Debug("GRDF - grdf_authorize - Received new auth request from Cozy") + logRoute("Ping_grdf_new_auth") query := r.URL.Query() - log.Debug("Query received - ", query) + log.Debug("WL - GrdfReceived - Authorize - Query received: ", query) clientId := query.Get("client_id") state := query.Get("state") cozyOrigin := query.Get("redirect_uri") - if len(clientId) > 0 && len(state) > 0 && len(cozyOrigin) > 0 { + if len(clientId) > 0 && len(state) > 0 && len(cozyOrigin) > 0 { splitIndexStart := strings.Index(cozyOrigin, ":") splitIndexEnd := strings.Index(cozyOrigin, ".") if splitIndexStart > -1 && splitIndexEnd > -1 { - instanceName := cozyOrigin[splitIndexStart+3:splitIndexEnd] + instanceName := cozyOrigin[splitIndexStart+3 : splitIndexEnd] redirectProxy := *cozyProxyURI + "/redirect-grdf" authURL := "https://sofit-sso-oidc.grdf.fr/openam/oauth2/realms/externeGrdf/authorize" - - redirectUrl := authURL + "?client_id=" + clientId + "&scope=openid&response_type=code&redirect_uri="+ redirectProxy + "&login_hint=Prénom|Nom||Ecolyo&state=" + state + "-" + instanceName - - log.Debug("GRDF - grdf_authorize - Redirect user to - ", redirectUrl) + + redirectUrl := authURL + "?client_id=" + clientId + "&scope=openid&response_type=code&redirect_uri=" + redirectProxy + "&login_hint=Prénom|Nom||Ecolyo&state=" + state + "-" + instanceName + + log.Debug("WL - GrdfSuccess - Authorize - Redirect user to: ", redirectUrl) http.Redirect(w, r, redirectUrl, 302) } else { - log.Error("ProxyError: GRDF - grdf_authorize - redirect_uri bad format " + cozyOrigin) - http.Error(w, http.StatusText(500), 500) + logRoute("Proxy_error_grdf_auth") + log.Debug("WL - ProxyError - Grdf - Authorize - redirect_uri bad format from Cozy " + cozyOrigin) + http.Error(w, http.StatusText(500), 500) } } else { - log.Error("ProxyError: GRDF - grdf_authorize - Missing parameters in request") + logRoute("Cozy_error_grdf_auth") + log.Debug("WL - CozyError - Grdf - Authorize - Missing parameters in request") http.Error(w, http.StatusText(500), 500) } }) //ENEDIS REDIRECT ENDPOINT mux.HandleFunc("/redirect", func(w http.ResponseWriter, r *http.Request) { - log.Debug("Enedis - redirect - Received redirect answer from Enedis") + logRoute("Ping_enedis_redirect") query := r.URL.Query() - log.Debug(query) + log.Debug("WL - EnedisReceived - Redirect - Query received: ", query) code := query.Get("code") req_state := query.Get("state") @@ -216,18 +293,21 @@ func main() { if findItem(statusCodes, code) { intCode, err := strconv.Atoi(code) if err != nil { - log.Error("ProxyError: Enedis - redirect - string to int convert error for status code: ", err) + logRoute("Proxy_error_enedis_redirect") + log.Debug("WL - ProxyError - Enedis - Redirect - String to int convert error for status code: ", err) http.Error(w, http.StatusText(500), 500) return } - log.Error("EnedisError: Enedis - redirect - status code error : ", code) + logRoute("Enedis_redirect_error") + log.Debug("WL - EnedisError - Redirect - status code error: ", code) http.Error(w, http.StatusText(intCode), intCode) return } splitIndex := strings.Index(req_state, "-") if splitIndex == -1 { - log.Error("ProxyError: Enedis - redirect - No host found in query") + logRoute("Proxy_error_enedis_redirect") + log.Debug("WL - ProxyError - Enedis - Redirect - No host found in query") http.Error(w, http.StatusText(500), 500) return } @@ -236,33 +316,36 @@ func main() { usagePointId := query.Get("usage_point_id") cozyURL := "https://" + host + "." + *cozyDomain + *cozyRedirectURI redir := cozyURL + "?code=" + code + "&state=" + state + "&usage_point_id=" + usagePointId - log.Debug("Enedis - redirect - Redirect to Cozy stack - ", redir) + log.Debug("WL - EnedisSuccess - Redirect - Redirecting user to Cozy stack: ", redir) http.Redirect(w, r, redir, 302) } else { - log.Error("ProxyError: Enedis - redirect - Missing parameters in request") + logRoute("Proxy_error_enedis_redirect") + log.Debug("WL - ProxyError - Enedis - Redirect - Missing parameters in request") http.Error(w, http.StatusText(500), 500) } }) //ENEDIS WRONG REDIRECT ENDPOINT mux.HandleFunc("/redirect/", func(w http.ResponseWriter, r *http.Request) { - log.Error("EnedisError: Enedis - redirect - wrong route received from Enedis ") + logRoute("Enedis_redirect_error") + log.Error("WL - EnedisError - Redirect - Wrong route received from Enedis ") http.Error(w, http.StatusText(500), 500) }) //GRDF REDIRECT ENDPOINT mux.HandleFunc("/redirect-grdf", func(w http.ResponseWriter, r *http.Request) { - log.Debug("GRDF - redirect-grdf - Received redirect answer from GRDF") + logRoute("Ping_grdf_redirect") query := r.URL.Query() - log.Debug(query) + log.Debug("WL - GrdfReceived - Redirect - Received redirect answer from GRDF: ", query) code := query.Get("code") req_state := query.Get("state") - + if len(code) > 0 && len(req_state) > 0 { splitIndex := strings.Index(req_state, "-") if splitIndex == -1 { - log.Error("ProxyError: GRDF - redirect-grdf - No host found") + logRoute("Proxy_error_grdf_redirect") + log.Error("WL - ProxyError - Grdf - Redirect - No host found") http.Error(w, http.StatusText(500), 500) return } @@ -272,19 +355,20 @@ func main() { cozyURL := "https://" + host + "." + *cozyDomain + *cozyGrdfRedirectURI redir := cozyURL + "?code=" + code + "&state=" + state - log.Debug("GRDF - redirect - Redirect to Cozy stack - ", redir) + log.Debug("WL - GrdfSuccess - Redirect - Redirect to Cozy stack: ", redir) http.Redirect(w, r, redir, 302) } else { - log.Error("ProxyError: GRDF - redirect - Missing parameters in request") + logRoute("Proxy_error_grdf_redirect") + log.Error("WL - ProxyError - Grdf - Redirect - Missing parameters in request") http.Error(w, http.StatusText(500), 500) } }) //ENEDIS TOKEN ENDPOINT mux.HandleFunc("/token", func(w http.ResponseWriter, r *http.Request) { - log.Debug("Enedis - token - Received new token request from Cozy") + logRoute("Ping_enedis_new_token") query := r.URL.Query() - log.Debug(query) + log.Debug("WL - EnedisReceived - Token - Received new token request from Cozy: ", query) clientId := "" clientSecret := "" @@ -294,16 +378,18 @@ func main() { // For request token params are into query parameters if len(query) == 0 { - log.Debug("Enedis - token - No params found in url query, trying to catch them from body") + log.Debug("WL - EnedisInfo - Token - No params found in url query, trying to catch them from body") contents, err := ioutil.ReadAll(r.Body) if err != nil { - log.Error("ProxyError: Enedis - token - Unable to read the body: ", err) + logRoute("Proxy_error_enedis_token") + log.Error("WL - ProxyError - Enedis - Token - Unable to read the body: ", err) http.Error(w, err.Error(), 500) return - } + } params, err := url.ParseQuery(string(contents)) if err != nil { - log.Error(err) + logRoute("Proxy_error_enedis_token") + log.Error("WL - ProxyError - Enedis - Token - Unable to parse query", err) http.Error(w, err.Error(), 500) return } @@ -337,7 +423,7 @@ func main() { "code": code, "grant_type": grantType, "refresh_token": refreshToken, - }).Debug("result") + }).Debug("WL - EnedisInfo - Token - Result") // DEV API // tokenUrl := "https://gw.hml.api.enedis.fr/v1/oauth2/token" @@ -350,18 +436,24 @@ func main() { data.Set("code", code) data.Set("grant_type", grantType) if refreshToken != "" { + logRoute("Ping_enedis_refresh") + log.Debug("WL - EnedisReceived - Token - Cozystack asks for a new refresh token") data.Set("refresh_token", refreshToken) data.Set("grant_type", "refresh_token") + } else { + logRoute("Ping_enedis_oauth_token") + log.Debug("WL - EnedisReceived - Token - Cozystack asks for a regular token to end the oauth dance") } - log.Debug("Enedis - token - Send request to Enedis token endpoint: ", tokenUrl) + log.Debug("WL - EnedisInfo - Token - Send request to Enedis token endpoint: ", tokenUrl) response, err := http.PostForm(tokenUrl, data) if err != nil { - log.Error("ProxyError: Enedis - token - Unable to post the request: ", err) + logRoute("Proxy_error_enedis_token") + log.Error("WL - ProxyError - Enedis - Token - Unable to post the request: ", err) http.Error(w, http.StatusText(500), 500) return - } - log.Debug("Enedis - token - Enedis Endpoint response with status ", response.Status) + } + log.Debug("WL - EnedisInfo - Token - Enedis answered back with status ", response.Status) defer response.Body.Close() if response.StatusCode >= 200 && response.StatusCode <= 299 { // Set Content-Type in response header @@ -370,29 +462,33 @@ func main() { data := EnedisTokenResponse{} decodeError := json.NewDecoder(response.Body).Decode(&data) if decodeError != nil { - log.Error("ProxyError: Enedis - token - Unable to decode data: ", decodeError) + logRoute("Proxy_error_enedis_token") + log.Error("WL - ProxyError - Enedis - Token - Unable to decode data: ", decodeError) http.Error(w, decodeError.Error(), 500) return } // Response with json data jsonError := json.NewEncoder(w).Encode(data) if jsonError != nil { - log.Error("ProxyError: Enedis - token - Unable to encode data: ", jsonError) + logRoute("Proxy_error_enedis_token") + log.Error("WL - ProxyError - Enedis - Token - Unable to encode data: ", jsonError) http.Error(w, jsonError.Error(), 500) return } - log.Info("Enedis - token - Response correctly to Cozy stack") + logRoute("Enedis_success_token") + log.Info("WL - EnedisSuccess - Token - Respond correctly to Cozy stack") } else { - log.Error("EnedisError: Enedis - token - Enedis response with status code: ", response.StatusCode) + logRoute("Enedis_token_error") + log.Error("WL - EnedisError - Token - Enedis answer back with status code: ", response.StatusCode) http.Error(w, http.StatusText(response.StatusCode), response.StatusCode) } }) //GRDF TOKEN ENDPOINT mux.HandleFunc("/grdf_token", func(w http.ResponseWriter, r *http.Request) { - log.Debug("GRDF - grdf_token - Received new token request from Cozy") + logRoute("Ping_grdf_new_token") query := r.URL.Query() - log.Debug(query) + log.Debug("WL - GrdfReceived - Token - Received new token request from Cozy", query) clientId := "" clientSecret := "" @@ -405,16 +501,18 @@ func main() { // For request token params are into query parameters if len(query) == 0 { - log.Debug("GRDF - grdf_token - No params found in url query \nStack probably asks for a refresh token \nTrying to catch them from body") + log.Debug("WL - GrdfInfo - Token - No params found in url query \nStack probably asks for a refresh token \nTrying to catch them from body") contents, err := ioutil.ReadAll(r.Body) if err != nil { - log.Error("ProxyError: GRDF - grdf_token - Unable to read the body: ", err) + logRoute("Proxy_error_grdf_token") + log.Error("WL - ProxyError - Grdf - Token - Unable to read the body: ", err) http.Error(w, err.Error(), 500) return } params, err := url.ParseQuery(string(contents)) if err != nil { - log.Error("ProxyError: GRDF - grdf_token - Unable to parse the query: ", err) + logRoute("Proxy_error_grdf_token") + log.Error("WL - ProxyError - Grdf - Token - Unable to parse the query: ", err) http.Error(w, err.Error(), 500) return } @@ -441,13 +539,13 @@ func main() { "client_secret": clientSecret, "code": code, "grant_type": grantType, - "redirect_uri": redirectUri, - "scope": scope, - }).Debug("result") + "redirect_uri": redirectUri, + "scope": scope, + }).Debug("WL - GrdfInfo - Token - Result") tokenUrl := "https://sofit-sso-oidc.grdf.fr/openam/oauth2/realms/externeGrdf/access_token" - if grantType != "refresh_token"{ + if grantType != "refresh_token" { // Call GRDF access_token endpoint with code & grant_type = "authorization_code" data := url.Values{} data.Set("client_id", clientId) @@ -456,22 +554,24 @@ func main() { data.Set("redirect_uri", redirectUri) data.Set("code", code) - log.Debug("GRDF - grdf_token - data sent is : ", data) - log.Debug("GRDF - grdf_token - Send request to access_token endpoint with authorization_code: ", tokenUrl) + log.Debug("WL - GrdfInfo - Token - data sent is: ", data) + log.Debug("WL - GrdfInfo - Token - Send request to access_token endpoint with authorization_code: ", tokenUrl) response, err := http.PostForm(tokenUrl, data) if err != nil { - log.Error("ProxyError: GRDF - grdf_token - Unable to post the request: ", err) + logRoute("Proxy_error_grdf_token") + log.Error("WL - ProxyError - Grdf - Token - Unable to post the request: ", err) http.Error(w, http.StatusText(500), 500) return } - log.Debug("GRDF - grdf_token - GRDF Endpoint response with status ", response.Status) + log.Debug("WL - GrdfInfo - Token - GRDF Endpoint response with status ", response.Status) defer response.Body.Close() if response.StatusCode >= 200 && response.StatusCode <= 299 { // Decode response Body using the defined type "GrdfTokenResponse" data := GrdfTokenResponse{} decodeError := json.NewDecoder(response.Body).Decode(&data) if decodeError != nil { - log.Error("ProxyError: GRDF - grdf_token - Unable to decode data: ", err) + logRoute("Proxy_error_grdf_token") + log.Error("WL - ProxyError - Grdf - Token - Unable to decode data: ", err) http.Error(w, decodeError.Error(), 500) return } @@ -486,22 +586,24 @@ func main() { if payload[len(payload)-1] != 125 { payload = append(payload, []byte{125}...) } - log.Debug(string(payload)) + log.Debug("WL - GrdfInfo - Token - token decoded payload: ", string(payload)) // Decode the payload from the token var token GrdfConsentementToken err := json.Unmarshal(payload, &token) if err != nil { - log.Error("ProxyError: GRDF - grdf_token - Unable to unmarshal payload from token: ", err) + logRoute("Proxy_error_grdf_token") + log.Error("WL - ProxyError - Grdf - Token - Unable to unmarshal payload from token: ", err) http.Error(w, err.Error(), 500) return } - log.Debug("Consentements found : ", token.Consentements) + log.Debug("WL - GrdfInfo - Token - Consentements found: ", token.Consentements) // Decode the consentement information if len(token.Consentements) > 0 { var consentements GrdfConsentement err2 := json.Unmarshal([]byte(token.Consentements), &consentements) if err2 != nil { - log.Error("ProxyError: GRDF - grdf_token - Unable to unmarshal consentement information: ", err2) + logRoute("Proxy_error_grdf_token") + log.Error("WL - ProxyError - Grdf - Token - Unable to unmarshal consentement information: ", err2) http.Error(w, err2.Error(), 500) return } @@ -512,12 +614,14 @@ func main() { } } if len(pce) <= 0 { - log.Error("ProxyError: GRDF - grdf_token - No PCE found") + logRoute("Proxy_error_grdf_token") + log.Error("WL - ProxyError - Grdf - Token - No PCE found") http.Error(w, http.StatusText(500), 500) return } } else { - log.Error("GRDFError: GRDF - grdf_token - GRDF response with status code: ", response.StatusCode) + logRoute("Grdf_token_error") + log.Error("WL - GrdfError - Token - GRDF response with status code: ", response.StatusCode) http.Error(w, http.StatusText(response.StatusCode), response.StatusCode) return } @@ -531,15 +635,16 @@ func main() { data2.Set("redirect_uri", redirectUri) data2.Set("scope", "/adict/v1") - log.Debug("GRDF - grdf_token - data sent is : ", data2) - log.Debug("GRDF - grdf_token - Send request to access_token endpoint with client_credentials: ", tokenUrl) + log.Debug("WL - GrdfInfo - Token - data sent is: ", data2) + log.Debug("WL - GrdfInfo - Token - send request to access_token endpoint with client_credentials: ", tokenUrl) response2, err2 := http.PostForm(tokenUrl, data2) if err2 != nil { - log.Error("ProxyError: GRDF - grdf_token - Unable to post the request: ", err2) + logRoute("Proxy_error_grdf_token") + log.Error("WL - ProxyError - Grdf - Token - Unable to post the request: ", err2) http.Error(w, http.StatusText(500), 500) return - } - log.Debug("GRDF - grdf_token - Endpoint response with status ", response2.Status) + } + log.Debug("WL - GrdfInfo - Token - Endpoint response with status ", response2.Status) defer response2.Body.Close() if response2.StatusCode >= 200 && response2.StatusCode <= 299 { // Set Content-Type in response header @@ -548,25 +653,29 @@ func main() { data := GrdfTokenResponse{} decodeError := json.NewDecoder(response2.Body).Decode(&data) if decodeError != nil { - log.Error("ProxyError: GRDF - grdf_token - Unable to decode data: ", decodeError) + logRoute("Proxy_error_grdf_token") + log.Error("WL - ProxyError - Grdf - Token - Unable to decode data: ", decodeError) http.Error(w, decodeError.Error(), 500) return } - if grantType != "refresh_token"{ + if grantType != "refresh_token" { data.RefreshToken = "-" data.Pce = pce data.IdToken = IdToken } - + jsonError := json.NewEncoder(w).Encode(data) if jsonError != nil { - log.Error("ProxyError: GRDF - grdf_token - Unable to encode data: ", jsonError) + logRoute("Proxy_error_grdf_token") + log.Error("WL - ProxyError - Grdf - Token - Unable to encode data: ", jsonError) http.Error(w, jsonError.Error(), 500) return } - log.Info("GRDF - grdf_token - Response correctly to Cozy stack") + logRoute("Grdf_success_token") + log.Info("WL - GrdfSuccess - Token - Response correctly to Cozy stack") } else { - log.Error("GRDFError: GRDF - grdf_token - GRDF response with status code: ", response2.StatusCode) + logRoute("Grdf_token_error") + log.Error("WL - GrdfError - Token - GRDF response with status code: ", response2.StatusCode) http.Error(w, http.StatusText(response2.StatusCode), response2.StatusCode) } })