From 54588935b0480c55e3f54a126d57f2c16277be50 Mon Sep 17 00:00:00 2001 From: ubuntu Date: Sun, 14 Jan 2024 12:25:48 +0000 Subject: [PATCH 01/21] Add OAuth2 --- internal/context/context.go | 11 +++++++++++ internal/sbi/consumer/nf_management.go | 9 +++++++-- internal/sbi/eventexposure/routers.go | 6 ++++++ internal/sbi/parameterprovision/routers.go | 6 ++++++ internal/sbi/subscriberdatamanagement/routers.go | 6 ++++++ internal/sbi/ueauthentication/routers.go | 6 ++++++ internal/sbi/uecontextmanagement/routers.go | 6 ++++++ 7 files changed, 48 insertions(+), 2 deletions(-) diff --git a/internal/context/context.go b/internal/context/context.go index 7e579a8..6453bb3 100644 --- a/internal/context/context.go +++ b/internal/context/context.go @@ -496,3 +496,14 @@ func (c *UDMContext) GetTokenCtx(scope, targetNF string) ( func GetSelf() *UDMContext { return &udmContext } + +func (context *UDMContext) AuthorizationCheck(token, serviceName string) error { + if !context.OAuth2Required { + return nil + } + err := oauth.VerifyOAuth(token, serviceName, context.NrfCertPem) + if err != nil { + return err + } + return nil +} diff --git a/internal/sbi/consumer/nf_management.go b/internal/sbi/consumer/nf_management.go index 9446bcc..c098111 100644 --- a/internal/sbi/consumer/nf_management.go +++ b/internal/sbi/consumer/nf_management.go @@ -1,7 +1,6 @@ package consumer import ( - "context" "fmt" "net/http" "strings" @@ -41,6 +40,11 @@ func BuildNFInstance(udmContext *udm_context.UDMContext) (profile models.NfProfi func SendRegisterNFInstance(nrfUri, nfInstanceId string, profile models.NfProfile) (resouceNrfUri string, retrieveNfInstanceId string, err error, ) { + ctx, _, err := udm_context.GetSelf().GetTokenCtx("nnrf-nfm", "NRF") + if err != nil { + return "", "", err + } + configuration := Nnrf_NFManagement.NewConfiguration() configuration.SetBasePath(nrfUri) client := Nnrf_NFManagement.NewAPIClient(configuration) @@ -48,7 +52,8 @@ func SendRegisterNFInstance(nrfUri, nfInstanceId string, profile models.NfProfil var res *http.Response for { var nf models.NfProfile - nf, res, err = client.NFInstanceIDDocumentApi.RegisterNFInstance(context.TODO(), nfInstanceId, profile) + //nf, res, err = client.NFInstanceIDDocumentApi.RegisterNFInstance(context.TODO(), nfInstanceId, profile) + nf, res, err = client.NFInstanceIDDocumentApi.RegisterNFInstance(ctx, nfInstanceId, profile) if err != nil || res == nil { // TODO : add log fmt.Println(fmt.Errorf("UDM register to NRF Error[%v]", err.Error())) diff --git a/internal/sbi/eventexposure/routers.go b/internal/sbi/eventexposure/routers.go index f02d860..903c661 100644 --- a/internal/sbi/eventexposure/routers.go +++ b/internal/sbi/eventexposure/routers.go @@ -15,6 +15,7 @@ import ( "github.com/gin-gonic/gin" + udm_context "github.com/free5gc/udm/internal/context" "github.com/free5gc/udm/internal/logger" "github.com/free5gc/udm/pkg/factory" logger_util "github.com/free5gc/util/logger" @@ -67,6 +68,11 @@ func Index(c *gin.Context) { c.String(http.StatusOK, "Hello World!") } +func authorizationCheck(c *gin.Context) error { + token := c.Request.Header.Get("Authorization") + return udm_context.GetSelf().AuthorizationCheck(token, "nudm-ee") +} + var routes = Routes{ { "Index", diff --git a/internal/sbi/parameterprovision/routers.go b/internal/sbi/parameterprovision/routers.go index 8c37a3e..c2ea387 100644 --- a/internal/sbi/parameterprovision/routers.go +++ b/internal/sbi/parameterprovision/routers.go @@ -15,6 +15,7 @@ import ( "github.com/gin-gonic/gin" + udm_context "github.com/free5gc/udm/internal/context" "github.com/free5gc/udm/internal/logger" "github.com/free5gc/udm/pkg/factory" logger_util "github.com/free5gc/util/logger" @@ -67,6 +68,11 @@ func Index(c *gin.Context) { c.String(http.StatusOK, "Hello World!") } +func authorizationCheck(c *gin.Context) error { + token := c.Request.Header.Get("Authorization") + return udm_context.GetSelf().AuthorizationCheck(token, "nudm-pp") +} + var routes = Routes{ { "Index", diff --git a/internal/sbi/subscriberdatamanagement/routers.go b/internal/sbi/subscriberdatamanagement/routers.go index 7624eb6..4e51b66 100644 --- a/internal/sbi/subscriberdatamanagement/routers.go +++ b/internal/sbi/subscriberdatamanagement/routers.go @@ -15,6 +15,7 @@ import ( "github.com/gin-gonic/gin" + udm_context "github.com/free5gc/udm/internal/context" "github.com/free5gc/udm/internal/logger" "github.com/free5gc/udm/pkg/factory" logger_util "github.com/free5gc/util/logger" @@ -160,6 +161,11 @@ func Index(c *gin.Context) { c.String(http.StatusOK, "Hello World!") } +func authorizationCheck(c *gin.Context) error { + token := c.Request.Header.Get("Authorization") + return udm_context.GetSelf().AuthorizationCheck(token, "nudm-sdm") +} + var routes = Routes{ { "Index", diff --git a/internal/sbi/ueauthentication/routers.go b/internal/sbi/ueauthentication/routers.go index dda263f..404da04 100644 --- a/internal/sbi/ueauthentication/routers.go +++ b/internal/sbi/ueauthentication/routers.go @@ -16,6 +16,7 @@ import ( "github.com/gin-gonic/gin" "github.com/sirupsen/logrus" + udm_context "github.com/free5gc/udm/internal/context" "github.com/free5gc/udm/internal/logger" "github.com/free5gc/udm/pkg/factory" logger_util "github.com/free5gc/util/logger" @@ -88,6 +89,11 @@ func Index(c *gin.Context) { c.String(http.StatusOK, "Hello World!") } +func authorizationCheck(c *gin.Context) error { + token := c.Request.Header.Get("Authorization") + return udm_context.GetSelf().AuthorizationCheck(token, "nudm-ueau") +} + var routes = Routes{ { "Index", diff --git a/internal/sbi/uecontextmanagement/routers.go b/internal/sbi/uecontextmanagement/routers.go index 493d592..1b95d31 100644 --- a/internal/sbi/uecontextmanagement/routers.go +++ b/internal/sbi/uecontextmanagement/routers.go @@ -15,6 +15,7 @@ import ( "github.com/gin-gonic/gin" + udm_context "github.com/free5gc/udm/internal/context" "github.com/free5gc/udm/internal/logger" "github.com/free5gc/udm/pkg/factory" logger_util "github.com/free5gc/util/logger" @@ -68,6 +69,11 @@ func Index(c *gin.Context) { c.String(http.StatusOK, "Hello World!") } +func authorizationCheck(c *gin.Context) error { + token := c.Request.Header.Get("Authorization") + return udm_context.GetSelf().AuthorizationCheck(token, "nudm-uecm") +} + var routes = Routes{ { "Index", From e8d4524fe0b03700d7b02bb414c5d017bc2ab75c Mon Sep 17 00:00:00 2001 From: ubuntu Date: Tue, 16 Jan 2024 12:59:14 +0000 Subject: [PATCH 02/21] Add Consumer OAuth --- internal/sbi/consumer/nf_management.go | 8 +- internal/sbi/producer/callback/callback.go | 17 +- internal/sbi/producer/generate_auth_data.go | 19 +- internal/sbi/producer/parameter_provision.go | 7 +- .../producer/subscriber_data_management.go | 243 ++++++++---------- .../sbi/producer/ue_context_management.go | 67 ++++- 6 files changed, 207 insertions(+), 154 deletions(-) diff --git a/internal/sbi/consumer/nf_management.go b/internal/sbi/consumer/nf_management.go index c098111..b2371a2 100644 --- a/internal/sbi/consumer/nf_management.go +++ b/internal/sbi/consumer/nf_management.go @@ -1,6 +1,7 @@ package consumer import ( + "context" "fmt" "net/http" "strings" @@ -40,10 +41,6 @@ func BuildNFInstance(udmContext *udm_context.UDMContext) (profile models.NfProfi func SendRegisterNFInstance(nrfUri, nfInstanceId string, profile models.NfProfile) (resouceNrfUri string, retrieveNfInstanceId string, err error, ) { - ctx, _, err := udm_context.GetSelf().GetTokenCtx("nnrf-nfm", "NRF") - if err != nil { - return "", "", err - } configuration := Nnrf_NFManagement.NewConfiguration() configuration.SetBasePath(nrfUri) @@ -52,8 +49,7 @@ func SendRegisterNFInstance(nrfUri, nfInstanceId string, profile models.NfProfil var res *http.Response for { var nf models.NfProfile - //nf, res, err = client.NFInstanceIDDocumentApi.RegisterNFInstance(context.TODO(), nfInstanceId, profile) - nf, res, err = client.NFInstanceIDDocumentApi.RegisterNFInstance(ctx, nfInstanceId, profile) + nf, res, err = client.NFInstanceIDDocumentApi.RegisterNFInstance(context.TODO(), nfInstanceId, profile) if err != nil || res == nil { // TODO : add log fmt.Println(fmt.Errorf("UDM register to NRF Error[%v]", err.Error())) diff --git a/internal/sbi/producer/callback/callback.go b/internal/sbi/producer/callback/callback.go index 6937eb2..02bd122 100644 --- a/internal/sbi/producer/callback/callback.go +++ b/internal/sbi/producer/callback/callback.go @@ -12,6 +12,11 @@ import ( ) func DataChangeNotificationProcedure(notifyItems []models.NotifyItem, supi string) *models.ProblemDetails { + ctx, pd, err := udm_context.GetSelf().GetTokenCtx("nudm-sdm", "UDM") + if err != nil { + return pd + } + ue, _ := udm_context.GetSelf().UdmUeFindBySupi(supi) configuration := Nudm_SubscriberDataManagement.NewConfiguration() clientAPI := Nudm_SubscriberDataManagement.NewAPIClient(configuration) @@ -21,8 +26,10 @@ func DataChangeNotificationProcedure(notifyItems []models.NotifyItem, supi strin onDataChangeNotificationurl := subscriptionDataSubscription.OriginalCallbackReference dataChangeNotification := models.ModificationNotification{} dataChangeNotification.NotifyItems = notifyItems + //httpResponse, err := clientAPI.DataChangeNotificationCallbackDocumentApi.OnDataChangeNotification( + // context.TODO(), onDataChangeNotificationurl, dataChangeNotification) httpResponse, err := clientAPI.DataChangeNotificationCallbackDocumentApi.OnDataChangeNotification( - context.TODO(), onDataChangeNotificationurl, dataChangeNotification) + ctx, onDataChangeNotificationurl, dataChangeNotification) if err != nil { if httpResponse == nil { logger.HttpLog.Error(err.Error()) @@ -52,11 +59,17 @@ func DataChangeNotificationProcedure(notifyItems []models.NotifyItem, supi strin func SendOnDeregistrationNotification(ueId string, onDeregistrationNotificationUrl string, deregistData models.DeregistrationData, ) *models.ProblemDetails { + ctx, pd, err := udm_context.GetSelf().GetTokenCtx("nudm-uecm", "UDM") + if err != nil { + return pd + } configuration := Nudm_UEContextManagement.NewConfiguration() clientAPI := Nudm_UEContextManagement.NewAPIClient(configuration) + // httpResponse, err := clientAPI.DeregistrationNotificationCallbackApi.DeregistrationNotify( + // context.TODO(), onDeregistrationNotificationUrl, deregistData) httpResponse, err := clientAPI.DeregistrationNotificationCallbackApi.DeregistrationNotify( - context.TODO(), onDeregistrationNotificationUrl, deregistData) + ctx, onDeregistrationNotificationUrl, deregistData) if err != nil { if httpResponse == nil { logger.HttpLog.Error(err.Error()) diff --git a/internal/sbi/producer/generate_auth_data.go b/internal/sbi/producer/generate_auth_data.go index 8a2a5e3..67fdd6a 100644 --- a/internal/sbi/producer/generate_auth_data.go +++ b/internal/sbi/producer/generate_auth_data.go @@ -119,6 +119,10 @@ func HandleConfirmAuthDataRequest(request *httpwrapper.Request) *httpwrapper.Res } func ConfirmAuthDataProcedure(authEvent models.AuthEvent, supi string) (problemDetails *models.ProblemDetails) { + ctx, pd, err := udm_context.GetSelf().GetTokenCtx("nudr-dm", "UDR") + if err != nil { + return pd + } var createAuthParam Nudr_DataRepository.CreateAuthenticationStatusParamOpts optInterface := optional.NewInterface(authEvent) createAuthParam.AuthEvent = optInterface @@ -127,8 +131,10 @@ func ConfirmAuthDataProcedure(authEvent models.AuthEvent, supi string) (problemD if err != nil { return openapi.ProblemDetailsSystemFailure(err.Error()) } + // resp, err := client.AuthenticationStatusDocumentApi.CreateAuthenticationStatus( + // context.Background(), supi, &createAuthParam) resp, err := client.AuthenticationStatusDocumentApi.CreateAuthenticationStatus( - context.Background(), supi, &createAuthParam) + ctx, supi, &createAuthParam) if err != nil { problemDetails = &models.ProblemDetails{ Status: int32(resp.StatusCode), @@ -151,6 +157,10 @@ func ConfirmAuthDataProcedure(authEvent models.AuthEvent, supi string) (problemD func GenerateAuthDataProcedure(authInfoRequest models.AuthenticationInfoRequest, supiOrSuci string) ( response *models.AuthenticationInfoResult, problemDetails *models.ProblemDetails, ) { + ctx, pd, err := udm_context.GetSelf().GetTokenCtx("nudr-dm", "UDR") + if err != nil { + return pd + } logger.UeauLog.Traceln("In GenerateAuthDataProcedure") response = &models.AuthenticationInfoResult{} @@ -173,7 +183,8 @@ func GenerateAuthDataProcedure(authInfoRequest models.AuthenticationInfoRequest, if err != nil { return nil, openapi.ProblemDetailsSystemFailure(err.Error()) } - authSubs, res, err := client.AuthenticationDataDocumentApi.QueryAuthSubsData(context.Background(), supi, nil) + // authSubs, res, err := client.AuthenticationDataDocumentApi.QueryAuthSubsData(context.Background(), supi, nil) + authSubs, res, err := client.AuthenticationDataDocumentApi.QueryAuthSubsData(ctx, supi, nil) if err != nil { problemDetails = &models.ProblemDetails{ Status: http.StatusForbidden, @@ -461,8 +472,10 @@ func GenerateAuthDataProcedure(authInfoRequest models.AuthenticationInfoRequest, } var rsp *http.Response + // rsp, err = client.AuthenticationDataDocumentApi.ModifyAuthentication( + // context.Background(), supi, patchItemArray) rsp, err = client.AuthenticationDataDocumentApi.ModifyAuthentication( - context.Background(), supi, patchItemArray) + ctx, supi, patchItemArray) if err != nil { problemDetails = &models.ProblemDetails{ Status: http.StatusForbidden, diff --git a/internal/sbi/producer/parameter_provision.go b/internal/sbi/producer/parameter_provision.go index 2d4fea3..46fd847 100644 --- a/internal/sbi/producer/parameter_provision.go +++ b/internal/sbi/producer/parameter_provision.go @@ -30,11 +30,16 @@ func HandleUpdateRequest(request *httpwrapper.Request) *httpwrapper.Response { } func UpdateProcedure(updateRequest models.PpData, gpsi string) (problemDetails *models.ProblemDetails) { + ctx, pd, err := udm_context.GetSelf().GetTokenCtx("nudr-dm", "UDR") + if err != nil { + return pd + } clientAPI, err := createUDMClientToUDR(gpsi) if err != nil { return openapi.ProblemDetailsSystemFailure(err.Error()) } - res, err := clientAPI.ProvisionedParameterDataDocumentApi.ModifyPpData(context.Background(), gpsi, nil) + // res, err := clientAPI.ProvisionedParameterDataDocumentApi.ModifyPpData(context.Background(), gpsi, nil) + res, err := clientAPI.ProvisionedParameterDataDocumentApi.ModifyPpData(ctx, gpsi, nil) if err != nil { problemDetails = &models.ProblemDetails{ Status: int32(res.StatusCode), diff --git a/internal/sbi/producer/subscriber_data_management.go b/internal/sbi/producer/subscriber_data_management.go index 40151c1..82e2cdd 100644 --- a/internal/sbi/producer/subscriber_data_management.go +++ b/internal/sbi/producer/subscriber_data_management.go @@ -54,6 +54,10 @@ func HandleGetAmDataRequest(request *httpwrapper.Request) *httpwrapper.Response func getAmDataProcedure(supi string, plmnID string, supportedFeatures string) ( response *models.AccessAndMobilitySubscriptionData, problemDetails *models.ProblemDetails, ) { + ctx, pd, err := udm_context.GetSelf().GetTokenCtx("nudr-dm", "UDR") + if err != nil { + return pd + } var queryAmDataParamOpts Nudr.QueryAmDataParamOpts queryAmDataParamOpts.SupportedFeatures = optional.NewString(supportedFeatures) @@ -62,8 +66,10 @@ func getAmDataProcedure(supi string, plmnID string, supportedFeatures string) ( return nil, openapi.ProblemDetailsSystemFailure(err.Error()) } + // accessAndMobilitySubscriptionDataResp, res, err := clientAPI.AccessAndMobilitySubscriptionDataDocumentApi. + // QueryAmData(context.Background(), supi, plmnID, &queryAmDataParamOpts) accessAndMobilitySubscriptionDataResp, res, err := clientAPI.AccessAndMobilitySubscriptionDataDocumentApi. - QueryAmData(context.Background(), supi, plmnID, &queryAmDataParamOpts) + QueryAmData(ctx, supi, plmnID, &queryAmDataParamOpts) if err != nil { if res == nil { logger.SdmLog.Errorf(err.Error()) @@ -129,6 +135,10 @@ func HandleGetIdTranslationResultRequest(request *httpwrapper.Request) *httpwrap func getIdTranslationResultProcedure(gpsi string) (response *models.IdTranslationResult, problemDetails *models.ProblemDetails, ) { + ctx, pd, err := udm_context.GetSelf().GetTokenCtx("nudr-dm", "UDR") + if err != nil { + return pd + } var idTranslationResult models.IdTranslationResult var getIdentityDataParamOpts Nudr.GetIdentityDataParamOpts @@ -137,8 +147,10 @@ func getIdTranslationResultProcedure(gpsi string) (response *models.IdTranslatio return nil, openapi.ProblemDetailsSystemFailure(err.Error()) } + // idTranslationResultResp, res, err := clientAPI.QueryIdentityDataBySUPIOrGPSIDocumentApi.GetIdentityData( + // context.Background(), gpsi, &getIdentityDataParamOpts) idTranslationResultResp, res, err := clientAPI.QueryIdentityDataBySUPIOrGPSIDocumentApi.GetIdentityData( - context.Background(), gpsi, &getIdentityDataParamOpts) + ctx, gpsi, &getIdentityDataParamOpts) if err != nil { if res == nil { logger.SdmLog.Errorf(err.Error()) @@ -221,6 +233,10 @@ func HandleGetSupiRequest(request *httpwrapper.Request) *httpwrapper.Response { func getSupiProcedure(supi string, plmnID string, dataSetNames []string, supportedFeatures string) ( response *models.SubscriptionDataSets, problemDetails *models.ProblemDetails, ) { + ctx, pd, err := udm_context.GetSelf().GetTokenCtx("nudr-dm", "UDR") + if err != nil { + return pd + } if len(dataSetNames) < 2 { problemDetails = &models.ProblemDetails{ Status: http.StatusBadRequest, @@ -253,8 +269,10 @@ func getSupiProcedure(supi string, plmnID string, dataSetNames []string, support if containDataSetName(dataSetNames, string(models.DataSetName_AM)) { var body models.AccessAndMobilitySubscriptionData udm_context.GetSelf().CreateAccessMobilitySubsDataForUe(supi, body) + // amData, res, err := clientAPI.AccessAndMobilitySubscriptionDataDocumentApi.QueryAmData( + // context.Background(), supi, plmnID, &queryAmDataParamOpts) amData, res, err := clientAPI.AccessAndMobilitySubscriptionDataDocumentApi.QueryAmData( - context.Background(), supi, plmnID, &queryAmDataParamOpts) + ctx, supi, plmnID, &queryAmDataParamOpts) if err != nil { if res == nil { logger.SdmLog.Errorf(err.Error()) @@ -295,8 +313,10 @@ func getSupiProcedure(supi string, plmnID string, dataSetNames []string, support if containDataSetName(dataSetNames, string(models.DataSetName_SMF_SEL)) { var smfSelSubsbody models.SmfSelectionSubscriptionData udm_context.GetSelf().CreateSmfSelectionSubsDataforUe(supi, smfSelSubsbody) - smfSelData, res, err := clientAPI.SMFSelectionSubscriptionDataDocumentApi.QuerySmfSelectData(context.Background(), - supi, plmnID, &querySmfSelectDataParamOpts) + // smfSelData, res, err := clientAPI.SMFSelectionSubscriptionDataDocumentApi.QuerySmfSelectData(context.Background(), + // supi, plmnID, &querySmfSelectDataParamOpts) + smfSelData, res, err := clientAPI.SMFSelectionSubscriptionDataDocumentApi.QuerySmfSelectData(ctx, + supi, plmnID, &querySmfSelectDataParamOpts) if err != nil { if res == nil { logger.SdmLog.Errorln(err.Error()) @@ -339,8 +359,10 @@ func getSupiProcedure(supi string, plmnID string, dataSetNames []string, support var querySmfRegListParamOpts Nudr.QuerySmfRegListParamOpts querySmfRegListParamOpts.SupportedFeatures = optional.NewString(supportedFeatures) udm_context.GetSelf().CreateUeContextInSmfDataforUe(supi, UeContextInSmfbody) + // pdusess, res, err := clientAPI.SMFRegistrationsCollectionApi.QuerySmfRegList( + // context.Background(), supi, &querySmfRegListParamOpts) pdusess, res, err := clientAPI.SMFRegistrationsCollectionApi.QuerySmfRegList( - context.Background(), supi, &querySmfRegListParamOpts) + ctx, supi, &querySmfRegListParamOpts) if err != nil { if res == nil { logger.SdmLog.Errorf(err.Error()) @@ -403,8 +425,10 @@ func getSupiProcedure(supi string, plmnID string, dataSetNames []string, support // } if containDataSetName(dataSetNames, string(models.DataSetName_SM)) { + // sessionManagementSubscriptionData, res, err := clientAPI.SessionManagementSubscriptionDataApi. + // QuerySmData(context.Background(), supi, plmnID, &querySmDataParamOpts) sessionManagementSubscriptionData, res, err := clientAPI.SessionManagementSubscriptionDataApi. - QuerySmData(context.Background(), supi, plmnID, &querySmDataParamOpts) + QuerySmData(ctx, supi, plmnID, &querySmDataParamOpts) if err != nil { if res == nil { logger.SdmLog.Errorf(err.Error()) @@ -446,8 +470,10 @@ func getSupiProcedure(supi string, plmnID string, dataSetNames []string, support if containDataSetName(dataSetNames, string(models.DataSetName_TRACE)) { var TraceDatabody models.TraceData udm_context.GetSelf().CreateTraceDataforUe(supi, TraceDatabody) + // traceData, res, err := clientAPI.TraceDataDocumentApi.QueryTraceData( + // context.Background(), supi, plmnID, &queryTraceDataParamOpts) traceData, res, err := clientAPI.TraceDataDocumentApi.QueryTraceData( - context.Background(), supi, plmnID, &queryTraceDataParamOpts) + ctx, supi, plmnID, &queryTraceDataParamOpts) if err != nil { if res == nil { logger.SdmLog.Errorf(err.Error()) @@ -521,6 +547,10 @@ func HandleGetSharedDataRequest(request *httpwrapper.Request) *httpwrapper.Respo func getSharedDataProcedure(sharedDataIds []string, supportedFeatures string) ( response []models.SharedData, problemDetails *models.ProblemDetails, ) { + ctx, pd, err := udm_context.GetSelf().GetTokenCtx("nudr-dm", "UDR") + if err != nil { + return pd + } clientAPI, err := createUDMClientToUDR("") if err != nil { return nil, openapi.ProblemDetailsSystemFailure(err.Error()) @@ -529,8 +559,10 @@ func getSharedDataProcedure(sharedDataIds []string, supportedFeatures string) ( var getSharedDataParamOpts Nudr.GetSharedDataParamOpts getSharedDataParamOpts.SupportedFeatures = optional.NewString(supportedFeatures) - sharedDataResp, res, err := clientAPI.RetrievalOfSharedDataApi.GetSharedData(context.Background(), sharedDataIds, - &getSharedDataParamOpts) + // sharedDataResp, res, err := clientAPI.RetrievalOfSharedDataApi.GetSharedData(context.Background(), sharedDataIds, + // &getSharedDataParamOpts) + sharedDataResp, res, err := clientAPI.RetrievalOfSharedDataApi.GetSharedData(ctx, sharedDataIds, + &getSharedDataParamOpts) if err != nil { if res == nil { logger.SdmLog.Warnln(err) @@ -603,6 +635,10 @@ func HandleGetSmDataRequest(request *httpwrapper.Request) *httpwrapper.Response func getSmDataProcedure(supi string, plmnID string, Dnn string, Snssai string, supportedFeatures string) ( response interface{}, problemDetails *models.ProblemDetails, ) { + ctx, pd, err := udm_context.GetSelf().GetTokenCtx("nudr-dm", "UDR") + if err != nil { + return pd + } logger.SdmLog.Infof("getSmDataProcedure: SUPI[%s] PLMNID[%s] DNN[%s] SNssai[%s]", supi, plmnID, Dnn, Snssai) clientAPI, err := createUDMClientToUDR(supi) @@ -613,8 +649,10 @@ func getSmDataProcedure(supi string, plmnID string, Dnn string, Snssai string, s var querySmDataParamOpts Nudr.QuerySmDataParamOpts querySmDataParamOpts.SingleNssai = optional.NewInterface(Snssai) + // sessionManagementSubscriptionDataResp, res, err := clientAPI.SessionManagementSubscriptionDataApi. + // QuerySmData(context.Background(), supi, plmnID, &querySmDataParamOpts) sessionManagementSubscriptionDataResp, res, err := clientAPI.SessionManagementSubscriptionDataApi. - QuerySmData(context.Background(), supi, plmnID, &querySmDataParamOpts) + QuerySmData(ctx, supi, plmnID, &querySmDataParamOpts) if err != nil { if res == nil { logger.SdmLog.Warnln(err) @@ -715,6 +753,10 @@ func HandleGetNssaiRequest(request *httpwrapper.Request) *httpwrapper.Response { func getNssaiProcedure(supi string, plmnID string, supportedFeatures string) ( *models.Nssai, *models.ProblemDetails, ) { + ctx, pd, err := udm_context.GetSelf().GetTokenCtx("nudr-dm", "UDR") + if err != nil { + return pd + } var queryAmDataParamOpts Nudr.QueryAmDataParamOpts queryAmDataParamOpts.SupportedFeatures = optional.NewString(supportedFeatures) var nssaiResp models.Nssai @@ -723,8 +765,10 @@ func getNssaiProcedure(supi string, plmnID string, supportedFeatures string) ( return nil, openapi.ProblemDetailsSystemFailure(err.Error()) } + // accessAndMobilitySubscriptionDataResp, res, err := clientAPI.AccessAndMobilitySubscriptionDataDocumentApi. + // QueryAmData(context.Background(), supi, plmnID, &queryAmDataParamOpts) accessAndMobilitySubscriptionDataResp, res, err := clientAPI.AccessAndMobilitySubscriptionDataDocumentApi. - QueryAmData(context.Background(), supi, plmnID, &queryAmDataParamOpts) + QueryAmData(ctx, supi, plmnID, &queryAmDataParamOpts) if err != nil { if res == nil { logger.SdmLog.Warnln(err) @@ -800,6 +844,10 @@ func HandleGetSmfSelectDataRequest(request *httpwrapper.Request) *httpwrapper.Re func getSmfSelectDataProcedure(supi string, plmnID string, supportedFeatures string) ( response *models.SmfSelectionSubscriptionData, problemDetails *models.ProblemDetails, ) { + ctx, pd, err := udm_context.GetSelf().GetTokenCtx("nudr-dm", "UDR") + if err != nil { + return pd + } var querySmfSelectDataParamOpts Nudr.QuerySmfSelectDataParamOpts querySmfSelectDataParamOpts.SupportedFeatures = optional.NewString(supportedFeatures) var body models.SmfSelectionSubscriptionData @@ -811,8 +859,10 @@ func getSmfSelectDataProcedure(supi string, plmnID string, supportedFeatures str udm_context.GetSelf().CreateSmfSelectionSubsDataforUe(supi, body) + // smfSelectionSubscriptionDataResp, res, err := clientAPI.SMFSelectionSubscriptionDataDocumentApi. + // QuerySmfSelectData(context.Background(), supi, plmnID, &querySmfSelectDataParamOpts) smfSelectionSubscriptionDataResp, res, err := clientAPI.SMFSelectionSubscriptionDataDocumentApi. - QuerySmfSelectData(context.Background(), supi, plmnID, &querySmfSelectDataParamOpts) + QuerySmfSelectData(ctx, supi, plmnID, &querySmfSelectDataParamOpts) if err != nil { if res == nil { logger.SdmLog.Warnln(err) @@ -877,11 +927,17 @@ func HandleSubscribeToSharedDataRequest(request *httpwrapper.Request) *httpwrapp func subscribeToSharedDataProcedure(sdmSubscription *models.SdmSubscription) ( header http.Header, response *models.SdmSubscription, problemDetails *models.ProblemDetails, ) { + ctx, pd, err := udm_context.GetSelf().GetTokenCtx("nudm-sdm", "UDM") + if err != nil { + return pd + } cfg := Nudm_SubscriberDataManagement.NewConfiguration() udmClientAPI := Nudm_SubscriberDataManagement.NewAPIClient(cfg) + // sdmSubscriptionResp, res, err := udmClientAPI.SubscriptionCreationForSharedDataApi.SubscribeToSharedData( + // context.Background(), *sdmSubscription) sdmSubscriptionResp, res, err := udmClientAPI.SubscriptionCreationForSharedDataApi.SubscribeToSharedData( - context.Background(), *sdmSubscription) + ctx, *sdmSubscription) if err != nil { if res == nil { logger.SdmLog.Warnln(err) @@ -952,13 +1008,19 @@ func HandleSubscribeRequest(request *httpwrapper.Request) *httpwrapper.Response func subscribeProcedure(sdmSubscription *models.SdmSubscription, supi string) ( header http.Header, response *models.SdmSubscription, problemDetails *models.ProblemDetails, ) { + ctx, pd, err := udm_context.GetSelf().GetTokenCtx("nudr-dm", "UDR") + if err != nil { + return pd + } clientAPI, err := createUDMClientToUDR(supi) if err != nil { return nil, nil, openapi.ProblemDetailsSystemFailure(err.Error()) } + // sdmSubscriptionResp, res, err := clientAPI.SDMSubscriptionsCollectionApi.CreateSdmSubscriptions( + // context.Background(), supi, *sdmSubscription) sdmSubscriptionResp, res, err := clientAPI.SDMSubscriptionsCollectionApi.CreateSdmSubscriptions( - context.Background(), supi, *sdmSubscription) + ctx, supi, *sdmSubscription) if err != nil { if res == nil { logger.SdmLog.Warnln(err) @@ -1023,11 +1085,17 @@ func HandleUnsubscribeForSharedDataRequest(request *httpwrapper.Request) *httpwr // TS 29.503 5.2.2.4.3 // Unsubscribe to notifications of data change func unsubscribeForSharedDataProcedure(subscriptionID string) *models.ProblemDetails { + ctx, pd, err := udm_context.GetSelf().GetTokenCtx("nudm-sdm", "UDM") + if err != nil { + return pd + } cfg := Nudm_SubscriberDataManagement.NewConfiguration() udmClientAPI := Nudm_SubscriberDataManagement.NewAPIClient(cfg) + // res, err := udmClientAPI.SubscriptionDeletionForSharedDataApi.UnsubscribeForSharedData( + // context.Background(), subscriptionID) res, err := udmClientAPI.SubscriptionDeletionForSharedDataApi.UnsubscribeForSharedData( - context.Background(), subscriptionID) + ctx, subscriptionID) if err != nil { if res == nil { logger.SdmLog.Warnln(err) @@ -1081,12 +1149,17 @@ func HandleUnsubscribeRequest(request *httpwrapper.Request) *httpwrapper.Respons // TS 29.503 5.2.2.4.2 // Unsubscribe to notifications of data change func unsubscribeProcedure(supi string, subscriptionID string) *models.ProblemDetails { + ctx, pd, err := udm_context.GetSelf().GetTokenCtx("nudr-dm", "UDR") + if err != nil { + return pd + } clientAPI, err := createUDMClientToUDR(supi) if err != nil { return openapi.ProblemDetailsSystemFailure(err.Error()) } - res, err := clientAPI.SDMSubscriptionDocumentApi.RemovesdmSubscriptions(context.Background(), supi, subscriptionID) + // res, err := clientAPI.SDMSubscriptionDocumentApi.RemovesdmSubscriptions(context.Background(), supi, subscriptionID) + res, err := clientAPI.SDMSubscriptionDocumentApi.RemovesdmSubscriptions(ctx, supi, subscriptionID) if err != nil { if res == nil { logger.SdmLog.Warnln(err) @@ -1150,6 +1223,10 @@ func HandleModifyRequest(request *httpwrapper.Request) *httpwrapper.Response { func modifyProcedure(sdmSubsModification *models.SdmSubsModification, supi string, subscriptionID string) ( response *models.SdmSubscription, problemDetails *models.ProblemDetails, ) { + ctx, pd, err := udm_context.GetSelf().GetTokenCtx("nudr-dm", "UDR") + if err != nil { + return pd + } clientAPI, err := createUDMClientToUDR(supi) if err != nil { return nil, openapi.ProblemDetailsSystemFailure(err.Error()) @@ -1159,8 +1236,10 @@ func modifyProcedure(sdmSubsModification *models.SdmSubsModification, supi strin body := Nudr.UpdatesdmsubscriptionsParamOpts{ SdmSubscription: optional.NewInterface(sdmSubscription), } + // res, err := clientAPI.SDMSubscriptionDocumentApi.Updatesdmsubscriptions( + // context.Background(), supi, subscriptionID, &body) res, err := clientAPI.SDMSubscriptionDocumentApi.Updatesdmsubscriptions( - context.Background(), supi, subscriptionID, &body) + ctx, supi, subscriptionID, &body) if err != nil { if res == nil { logger.SdmLog.Warnln(err) @@ -1224,6 +1303,10 @@ func HandleModifyForSharedDataRequest(request *httpwrapper.Request) *httpwrapper func modifyForSharedDataProcedure(sdmSubsModification *models.SdmSubsModification, supi string, subscriptionID string, ) (response *models.SdmSubscription, problemDetails *models.ProblemDetails) { + ctx, pd, err := udm_context.GetSelf().GetTokenCtx("nudr-dm", "UDR") + if err != nil { + return pd + } clientAPI, err := createUDMClientToUDR(supi) if err != nil { return nil, openapi.ProblemDetailsSystemFailure(err.Error()) @@ -1235,8 +1318,10 @@ func modifyForSharedDataProcedure(sdmSubsModification *models.SdmSubsModificatio SdmSubscription: optional.NewInterface(sdmSubs), } + // res, err := clientAPI.SDMSubscriptionDocumentApi.Updatesdmsubscriptions( + // context.Background(), supi, subscriptionID, &body) res, err := clientAPI.SDMSubscriptionDocumentApi.Updatesdmsubscriptions( - context.Background(), supi, subscriptionID, &body) + ctx, supi, subscriptionID, &body) if err != nil { if res == nil { logger.SdmLog.Warnln(err) @@ -1297,6 +1382,10 @@ func HandleGetTraceDataRequest(request *httpwrapper.Request) *httpwrapper.Respon func getTraceDataProcedure(supi string, plmnID string) ( response *models.TraceData, problemDetails *models.ProblemDetails, ) { + ctx, pd, err := udm_context.GetSelf().GetTokenCtx("nudr-dm", "UDR") + if err != nil { + return pd + } var body models.TraceData var queryTraceDataParamOpts Nudr.QueryTraceDataParamOpts @@ -1307,8 +1396,10 @@ func getTraceDataProcedure(supi string, plmnID string) ( udm_context.GetSelf().CreateTraceDataforUe(supi, body) + // traceDataRes, res, err := clientAPI.TraceDataDocumentApi.QueryTraceData( + // context.Background(), supi, plmnID, &queryTraceDataParamOpts) traceDataRes, res, err := clientAPI.TraceDataDocumentApi.QueryTraceData( - context.Background(), supi, plmnID, &queryTraceDataParamOpts) + ctx, supi, plmnID, &queryTraceDataParamOpts) if err != nil { if res == nil { logger.SdmLog.Warnln(err) @@ -1365,114 +1456,4 @@ func HandleGetUeContextInSmfDataRequest(request *httpwrapper.Request) *httpwrapp // status code is based on SPEC, and option headers return httpwrapper.NewResponse(http.StatusOK, nil, response) } else if problemDetails != nil { - return httpwrapper.NewResponse(int(problemDetails.Status), nil, problemDetails) - } - problemDetails = &models.ProblemDetails{ - Status: http.StatusForbidden, - Cause: "UNSPECIFIED", - } - return httpwrapper.NewResponse(http.StatusForbidden, nil, problemDetails) -} - -func getUeContextInSmfDataProcedure(supi string, supportedFeatures string) ( - response *models.UeContextInSmfData, problemDetails *models.ProblemDetails, -) { - var body models.UeContextInSmfData - var ueContextInSmfData models.UeContextInSmfData - var pgwInfoArray []models.PgwInfo - var querySmfRegListParamOpts Nudr.QuerySmfRegListParamOpts - querySmfRegListParamOpts.SupportedFeatures = optional.NewString(supportedFeatures) - - clientAPI, err := createUDMClientToUDR(supi) - if err != nil { - return nil, openapi.ProblemDetailsSystemFailure(err.Error()) - } - - pduSessionMap := make(map[string]models.PduSession) - udm_context.GetSelf().CreateUeContextInSmfDataforUe(supi, body) - - pdusess, res, err := clientAPI.SMFRegistrationsCollectionApi.QuerySmfRegList( - context.Background(), supi, &querySmfRegListParamOpts) - if err != nil { - if res == nil { - logger.SdmLog.Infoln(err) - } else if err.Error() != res.Status { - logger.SdmLog.Infoln(err) - } else { - logger.SdmLog.Infoln(err) - problemDetails = &models.ProblemDetails{ - Status: int32(res.StatusCode), - Cause: err.(openapi.GenericOpenAPIError).Model().(models.ProblemDetails).Cause, - Detail: err.Error(), - } - - return nil, problemDetails - } - } - defer func() { - if rspCloseErr := res.Body.Close(); rspCloseErr != nil { - logger.SdmLog.Errorf("QuerySmfRegList response body cannot close: %+v", rspCloseErr) - } - }() - - for _, element := range pdusess { - var pduSession models.PduSession - pduSession.Dnn = element.Dnn - pduSession.SmfInstanceId = element.SmfInstanceId - pduSession.PlmnId = element.PlmnId - pduSessionMap[strconv.Itoa(int(element.PduSessionId))] = pduSession - } - ueContextInSmfData.PduSessions = pduSessionMap - - for _, element := range pdusess { - var pgwInfo models.PgwInfo - pgwInfo.Dnn = element.Dnn - pgwInfo.PgwFqdn = element.PgwFqdn - pgwInfo.PlmnId = element.PlmnId - pgwInfoArray = append(pgwInfoArray, pgwInfo) - } - ueContextInSmfData.PgwInfo = pgwInfoArray - - if res.StatusCode == http.StatusOK { - udmUe, ok := udm_context.GetSelf().UdmUeFindBySupi(supi) - if !ok { - udmUe = udm_context.GetSelf().NewUdmUe(supi) - } - udmUe.UeCtxtInSmfData = &ueContextInSmfData - return udmUe.UeCtxtInSmfData, nil - } else { - problemDetails = &models.ProblemDetails{ - Status: http.StatusNotFound, - Cause: "DATA_NOT_FOUND", - } - return nil, problemDetails - } -} - -func getPlmnIDStruct(queryParameters url.Values) (plmnIDStruct *models.PlmnId, problemDetails *models.ProblemDetails) { - if queryParameters["plmn-id"] != nil { - plmnIDJson := queryParameters["plmn-id"][0] - plmnIDStruct := &models.PlmnId{} - err := json.Unmarshal([]byte(plmnIDJson), plmnIDStruct) - if err != nil { - logger.SdmLog.Warnln("Unmarshal Error in targetPlmnListtruct: ", err) - } - return plmnIDStruct, nil - } else { - problemDetails := &models.ProblemDetails{ - Title: "Invalid Parameter", - Status: http.StatusBadRequest, - Cause: "No get plmn-id", - } - return nil, problemDetails - } -} - -func containDataSetName(dataSetNames []string, target string) bool { - for _, dataSetName := range dataSetNames { - if dataSetName == target { - return true - } - } - return false -} + return httpwrapper.NewResponse(int(problemDetails.Status), nil, prob \ No newline at end of file diff --git a/internal/sbi/producer/ue_context_management.go b/internal/sbi/producer/ue_context_management.go index 5fff6aa..56f3c61 100644 --- a/internal/sbi/producer/ue_context_management.go +++ b/internal/sbi/producer/ue_context_management.go @@ -102,6 +102,10 @@ func HandleGetAmf3gppAccessRequest(request *httpwrapper.Request) *httpwrapper.Re func GetAmf3gppAccessProcedure(ueID string, supportedFeatures string) ( response *models.Amf3GppAccessRegistration, problemDetails *models.ProblemDetails, ) { + ctx, pd, err := udm_context.GetSelf().GetTokenCtx("nudr-dm", "UDR") + if err != nil { + return pd + } var queryAmfContext3gppParamOpts Nudr_DataRepository.QueryAmfContext3gppParamOpts queryAmfContext3gppParamOpts.SupportedFeatures = optional.NewString(supportedFeatures) @@ -110,8 +114,10 @@ func GetAmf3gppAccessProcedure(ueID string, supportedFeatures string) ( return nil, openapi.ProblemDetailsSystemFailure(err.Error()) } + //amf3GppAccessRegistration, resp, err := clientAPI.AMF3GPPAccessRegistrationDocumentApi. + //QueryAmfContext3gpp(context.Background(), ueID, &queryAmfContext3gppParamOpts) amf3GppAccessRegistration, resp, err := clientAPI.AMF3GPPAccessRegistrationDocumentApi. - QueryAmfContext3gpp(context.Background(), ueID, &queryAmfContext3gppParamOpts) + QueryAmfContext3gpp(ctx, ueID, &queryAmfContext3gppParamOpts) if err != nil { problemDetails = &models.ProblemDetails{ Status: int32(resp.StatusCode), @@ -160,13 +166,19 @@ func GetAmfNon3gppAccessProcedure(queryAmfContextNon3gppParamOpts Nudr_DataRepos QueryAmfContextNon3gppParamOpts, ueID string) (response *models.AmfNon3GppAccessRegistration, problemDetails *models.ProblemDetails, ) { + ctx, pd, err := udm_context.GetSelf().GetTokenCtx("nudr-dm", "UDR") + if err != nil { + return pd + } clientAPI, err := createUDMClientToUDR(ueID) if err != nil { return nil, openapi.ProblemDetailsSystemFailure(err.Error()) } + // amfNon3GppAccessRegistration, resp, err := clientAPI.AMFNon3GPPAccessRegistrationDocumentApi. + // QueryAmfContextNon3gpp(context.Background(), ueID, &queryAmfContextNon3gppParamOpts) amfNon3GppAccessRegistration, resp, err := clientAPI.AMFNon3GPPAccessRegistrationDocumentApi. - QueryAmfContextNon3gpp(context.Background(), ueID, &queryAmfContextNon3gppParamOpts) + QueryAmfContextNon3gpp(ctx, ueID, &queryAmfContextNon3gppParamOpts) if err != nil { problemDetails = &models.ProblemDetails{ Status: int32(resp.StatusCode), @@ -214,6 +226,10 @@ func HandleRegistrationAmf3gppAccessRequest(request *httpwrapper.Request) *httpw func RegistrationAmf3gppAccessProcedure(registerRequest models.Amf3GppAccessRegistration, ueID string) ( header http.Header, response *models.Amf3GppAccessRegistration, problemDetails *models.ProblemDetails, ) { + ctx, pd, err := udm_context.GetSelf().GetTokenCtx("nudr-dm", "UDR") + if err != nil { + return pd + } // TODO: EPS interworking with N26 is not supported yet in this stage var oldAmf3GppAccessRegContext *models.Amf3GppAccessRegistration var ue *udm_context.UdmUeContext @@ -233,7 +249,7 @@ func RegistrationAmf3gppAccessProcedure(registerRequest models.Amf3GppAccessRegi var createAmfContext3gppParamOpts Nudr_DataRepository.CreateAmfContext3gppParamOpts optInterface := optional.NewInterface(registerRequest) createAmfContext3gppParamOpts.Amf3GppAccessRegistration = optInterface - resp, err := clientAPI.AMF3GPPAccessRegistrationDocumentApi.CreateAmfContext3gpp(context.Background(), + resp, err := clientAPI.AMF3GPPAccessRegistrationDocumentApi.CreateAmfContext3gpp(ctx, ueID, &createAmfContext3gppParamOpts) if err != nil { logger.UecmLog.Errorln("CreateAmfContext3gpp error : ", err) @@ -311,6 +327,10 @@ func HandleRegisterAmfNon3gppAccessRequest(request *httpwrapper.Request) *httpwr func RegisterAmfNon3gppAccessProcedure(registerRequest models.AmfNon3GppAccessRegistration, ueID string) ( header http.Header, response *models.AmfNon3GppAccessRegistration, problemDetails *models.ProblemDetails, ) { + ctx, pd, err := udm_context.GetSelf().GetTokenCtx("nudr-dm", "UDR") + if err != nil { + return pd + } var oldAmfNon3GppAccessRegContext *models.AmfNon3GppAccessRegistration if udm_context.GetSelf().UdmAmfNon3gppRegContextExists(ueID) { ue, _ := udm_context.GetSelf().UdmUeFindBySupi(ueID) @@ -327,8 +347,10 @@ func RegisterAmfNon3gppAccessProcedure(registerRequest models.AmfNon3GppAccessRe var createAmfContextNon3gppParamOpts Nudr_DataRepository.CreateAmfContextNon3gppParamOpts optInterface := optional.NewInterface(registerRequest) createAmfContextNon3gppParamOpts.AmfNon3GppAccessRegistration = optInterface + // resp, err := clientAPI.AMFNon3GPPAccessRegistrationDocumentApi.CreateAmfContextNon3gpp( + // context.Background(), ueID, &createAmfContextNon3gppParamOpts) resp, err := clientAPI.AMFNon3GPPAccessRegistrationDocumentApi.CreateAmfContextNon3gpp( - context.Background(), ueID, &createAmfContextNon3gppParamOpts) + ctx, ueID, &createAmfContextNon3gppParamOpts) if err != nil { problemDetails = &models.ProblemDetails{ Status: int32(resp.StatusCode), @@ -385,6 +407,10 @@ func HandleUpdateAmf3gppAccessRequest(request *httpwrapper.Request) *httpwrapper func UpdateAmf3gppAccessProcedure(request models.Amf3GppAccessRegistrationModification, ueID string) ( problemDetails *models.ProblemDetails, ) { + ctx, pd, err := udm_context.GetSelf().GetTokenCtx("nudr-dm", "UDR") + if err != nil { + return pd + } var patchItemReqArray []models.PatchItem currentContext := udm_context.GetSelf().GetAmf3gppRegContext(ueID) if currentContext == nil { @@ -454,8 +480,10 @@ func UpdateAmf3gppAccessProcedure(request models.Amf3GppAccessRegistrationModifi return openapi.ProblemDetailsSystemFailure(err.Error()) } - resp, err := clientAPI.AMF3GPPAccessRegistrationDocumentApi.AmfContext3gpp(context.Background(), ueID, - patchItemReqArray) + // resp, err := clientAPI.AMF3GPPAccessRegistrationDocumentApi.AmfContext3gpp(context.Background(), ueID, + // patchItemReqArray) + resp, err := clientAPI.AMF3GPPAccessRegistrationDocumentApi.AmfContext3gpp(ctx, ueID, + patchItemReqArray) if err != nil { problemDetails = &models.ProblemDetails{ Status: int32(resp.StatusCode), @@ -503,6 +531,10 @@ func HandleUpdateAmfNon3gppAccessRequest(request *httpwrapper.Request) *httpwrap func UpdateAmfNon3gppAccessProcedure(request models.AmfNon3GppAccessRegistrationModification, ueID string) ( problemDetails *models.ProblemDetails, ) { + ctx, pd, err := udm_context.GetSelf().GetTokenCtx("nudr-dm", "UDR") + if err != nil { + return pd + } var patchItemReqArray []models.PatchItem currentContext := udm_context.GetSelf().GetAmfNon3gppRegContext(ueID) if currentContext == nil { @@ -571,8 +603,10 @@ func UpdateAmfNon3gppAccessProcedure(request models.AmfNon3GppAccessRegistration return openapi.ProblemDetailsSystemFailure(err.Error()) } - resp, err := clientAPI.AMFNon3GPPAccessRegistrationDocumentApi.AmfContextNon3gpp(context.Background(), - ueID, patchItemReqArray) + // resp, err := clientAPI.AMFNon3GPPAccessRegistrationDocumentApi.AmfContextNon3gpp(context.Background(), + // ueID, patchItemReqArray) + resp, err := clientAPI.AMFNon3GPPAccessRegistrationDocumentApi.AmfContextNon3gpp(ctx, + ueID, patchItemReqArray) if err != nil { problemDetails = &models.ProblemDetails{ Status: int32(resp.StatusCode), @@ -610,12 +644,17 @@ func HandleDeregistrationSmfRegistrations(request *httpwrapper.Request) *httpwra } func DeregistrationSmfRegistrationsProcedure(ueID string, pduSessionID string) (problemDetails *models.ProblemDetails) { + ctx, pd, err := udm_context.GetSelf().GetTokenCtx("nudr-dm", "UDR") + if err != nil { + return pd + } clientAPI, err := createUDMClientToUDR(ueID) if err != nil { return openapi.ProblemDetailsSystemFailure(err.Error()) } - resp, err := clientAPI.SMFRegistrationDocumentApi.DeleteSmfContext(context.Background(), ueID, pduSessionID) + // resp, err := clientAPI.SMFRegistrationDocumentApi.DeleteSmfContext(context.Background(), ueID, pduSessionID) + resp, err := clientAPI.SMFRegistrationDocumentApi.DeleteSmfContext(ctx, ueID, pduSessionID) if err != nil { problemDetails = &models.ProblemDetails{ Status: int32(resp.StatusCode), @@ -662,6 +701,10 @@ func HandleRegistrationSmfRegistrationsRequest(request *httpwrapper.Request) *ht func RegistrationSmfRegistrationsProcedure(request *models.SmfRegistration, ueID string, pduSessionID string) ( header http.Header, response *models.SmfRegistration, problemDetails *models.ProblemDetails, ) { + ctx, pd, err := udm_context.GetSelf().GetTokenCtx("nudr-dm", "UDR") + if err != nil { + return pd + } contextExisted := false udm_context.GetSelf().CreateSmfRegContext(ueID, pduSessionID) if !udm_context.GetSelf().UdmSmfRegContextNotExists(ueID) { @@ -683,8 +726,10 @@ func RegistrationSmfRegistrationsProcedure(request *models.SmfRegistration, ueID return nil, nil, openapi.ProblemDetailsSystemFailure(err.Error()) } - resp, err := clientAPI.SMFRegistrationDocumentApi.CreateSmfContextNon3gpp(context.Background(), ueID, - pduID32, &createSmfContextNon3gppParamOpts) + // resp, err := clientAPI.SMFRegistrationDocumentApi.CreateSmfContextNon3gpp(context.Background(), ueID, + // pduID32, &createSmfContextNon3gppParamOpts) + resp, err := clientAPI.SMFRegistrationDocumentApi.CreateSmfContextNon3gpp(ctx, ueID, + pduID32, &createSmfContextNon3gppParamOpts) if err != nil { problemDetails.Cause = err.(openapi.GenericOpenAPIError).Model().(models.ProblemDetails).Cause problemDetails = &models.ProblemDetails{ From f133a0dfe0b3ee11e8913bd8d3b07cc9657581a5 Mon Sep 17 00:00:00 2001 From: ubuntu Date: Tue, 16 Jan 2024 14:29:47 +0000 Subject: [PATCH 03/21] fix err return value --- internal/sbi/producer/callback/callback.go | 1 - internal/sbi/producer/generate_auth_data.go | 3 +- internal/sbi/producer/parameter_provision.go | 2 +- .../producer/subscriber_data_management.go | 152 +++++++++++++++--- .../sbi/producer/ue_context_management.go | 19 ++- 5 files changed, 142 insertions(+), 35 deletions(-) diff --git a/internal/sbi/producer/callback/callback.go b/internal/sbi/producer/callback/callback.go index 02bd122..93a6b44 100644 --- a/internal/sbi/producer/callback/callback.go +++ b/internal/sbi/producer/callback/callback.go @@ -1,7 +1,6 @@ package callback import ( - "context" "net/http" "github.com/free5gc/openapi/Nudm_SubscriberDataManagement" diff --git a/internal/sbi/producer/generate_auth_data.go b/internal/sbi/producer/generate_auth_data.go index 67fdd6a..5f317bb 100644 --- a/internal/sbi/producer/generate_auth_data.go +++ b/internal/sbi/producer/generate_auth_data.go @@ -1,7 +1,6 @@ package producer import ( - "context" cryptoRand "crypto/rand" "encoding/hex" "fmt" @@ -159,7 +158,7 @@ func GenerateAuthDataProcedure(authInfoRequest models.AuthenticationInfoRequest, ) { ctx, pd, err := udm_context.GetSelf().GetTokenCtx("nudr-dm", "UDR") if err != nil { - return pd + return nil, pd } logger.UeauLog.Traceln("In GenerateAuthDataProcedure") diff --git a/internal/sbi/producer/parameter_provision.go b/internal/sbi/producer/parameter_provision.go index 46fd847..84e716b 100644 --- a/internal/sbi/producer/parameter_provision.go +++ b/internal/sbi/producer/parameter_provision.go @@ -1,11 +1,11 @@ package producer import ( - "context" "net/http" "github.com/free5gc/openapi" "github.com/free5gc/openapi/models" + udm_context "github.com/free5gc/udm/internal/context" "github.com/free5gc/udm/internal/logger" "github.com/free5gc/util/httpwrapper" ) diff --git a/internal/sbi/producer/subscriber_data_management.go b/internal/sbi/producer/subscriber_data_management.go index 82e2cdd..12de606 100644 --- a/internal/sbi/producer/subscriber_data_management.go +++ b/internal/sbi/producer/subscriber_data_management.go @@ -56,7 +56,7 @@ func getAmDataProcedure(supi string, plmnID string, supportedFeatures string) ( ) { ctx, pd, err := udm_context.GetSelf().GetTokenCtx("nudr-dm", "UDR") if err != nil { - return pd + return nil, pd } var queryAmDataParamOpts Nudr.QueryAmDataParamOpts queryAmDataParamOpts.SupportedFeatures = optional.NewString(supportedFeatures) @@ -69,7 +69,7 @@ func getAmDataProcedure(supi string, plmnID string, supportedFeatures string) ( // accessAndMobilitySubscriptionDataResp, res, err := clientAPI.AccessAndMobilitySubscriptionDataDocumentApi. // QueryAmData(context.Background(), supi, plmnID, &queryAmDataParamOpts) accessAndMobilitySubscriptionDataResp, res, err := clientAPI.AccessAndMobilitySubscriptionDataDocumentApi. - QueryAmData(ctx, supi, plmnID, &queryAmDataParamOpts) + QueryAmData(ctx, supi, plmnID, &queryAmDataParamOpts) if err != nil { if res == nil { logger.SdmLog.Errorf(err.Error()) @@ -137,7 +137,7 @@ func getIdTranslationResultProcedure(gpsi string) (response *models.IdTranslatio ) { ctx, pd, err := udm_context.GetSelf().GetTokenCtx("nudr-dm", "UDR") if err != nil { - return pd + return nil, pd } var idTranslationResult models.IdTranslationResult var getIdentityDataParamOpts Nudr.GetIdentityDataParamOpts @@ -235,7 +235,7 @@ func getSupiProcedure(supi string, plmnID string, dataSetNames []string, support ) { ctx, pd, err := udm_context.GetSelf().GetTokenCtx("nudr-dm", "UDR") if err != nil { - return pd + return nil, pd } if len(dataSetNames) < 2 { problemDetails = &models.ProblemDetails{ @@ -316,7 +316,7 @@ func getSupiProcedure(supi string, plmnID string, dataSetNames []string, support // smfSelData, res, err := clientAPI.SMFSelectionSubscriptionDataDocumentApi.QuerySmfSelectData(context.Background(), // supi, plmnID, &querySmfSelectDataParamOpts) smfSelData, res, err := clientAPI.SMFSelectionSubscriptionDataDocumentApi.QuerySmfSelectData(ctx, - supi, plmnID, &querySmfSelectDataParamOpts) + supi, plmnID, &querySmfSelectDataParamOpts) if err != nil { if res == nil { logger.SdmLog.Errorln(err.Error()) @@ -362,7 +362,7 @@ func getSupiProcedure(supi string, plmnID string, dataSetNames []string, support // pdusess, res, err := clientAPI.SMFRegistrationsCollectionApi.QuerySmfRegList( // context.Background(), supi, &querySmfRegListParamOpts) pdusess, res, err := clientAPI.SMFRegistrationsCollectionApi.QuerySmfRegList( - ctx, supi, &querySmfRegListParamOpts) + ctx, supi, &querySmfRegListParamOpts) if err != nil { if res == nil { logger.SdmLog.Errorf(err.Error()) @@ -428,7 +428,7 @@ func getSupiProcedure(supi string, plmnID string, dataSetNames []string, support // sessionManagementSubscriptionData, res, err := clientAPI.SessionManagementSubscriptionDataApi. // QuerySmData(context.Background(), supi, plmnID, &querySmDataParamOpts) sessionManagementSubscriptionData, res, err := clientAPI.SessionManagementSubscriptionDataApi. - QuerySmData(ctx, supi, plmnID, &querySmDataParamOpts) + QuerySmData(ctx, supi, plmnID, &querySmDataParamOpts) if err != nil { if res == nil { logger.SdmLog.Errorf(err.Error()) @@ -549,7 +549,7 @@ func getSharedDataProcedure(sharedDataIds []string, supportedFeatures string) ( ) { ctx, pd, err := udm_context.GetSelf().GetTokenCtx("nudr-dm", "UDR") if err != nil { - return pd + return nil, pd } clientAPI, err := createUDMClientToUDR("") if err != nil { @@ -562,7 +562,7 @@ func getSharedDataProcedure(sharedDataIds []string, supportedFeatures string) ( // sharedDataResp, res, err := clientAPI.RetrievalOfSharedDataApi.GetSharedData(context.Background(), sharedDataIds, // &getSharedDataParamOpts) sharedDataResp, res, err := clientAPI.RetrievalOfSharedDataApi.GetSharedData(ctx, sharedDataIds, - &getSharedDataParamOpts) + &getSharedDataParamOpts) if err != nil { if res == nil { logger.SdmLog.Warnln(err) @@ -637,7 +637,7 @@ func getSmDataProcedure(supi string, plmnID string, Dnn string, Snssai string, s ) { ctx, pd, err := udm_context.GetSelf().GetTokenCtx("nudr-dm", "UDR") if err != nil { - return pd + return nil, pd } logger.SdmLog.Infof("getSmDataProcedure: SUPI[%s] PLMNID[%s] DNN[%s] SNssai[%s]", supi, plmnID, Dnn, Snssai) @@ -652,7 +652,7 @@ func getSmDataProcedure(supi string, plmnID string, Dnn string, Snssai string, s // sessionManagementSubscriptionDataResp, res, err := clientAPI.SessionManagementSubscriptionDataApi. // QuerySmData(context.Background(), supi, plmnID, &querySmDataParamOpts) sessionManagementSubscriptionDataResp, res, err := clientAPI.SessionManagementSubscriptionDataApi. - QuerySmData(ctx, supi, plmnID, &querySmDataParamOpts) + QuerySmData(ctx, supi, plmnID, &querySmDataParamOpts) if err != nil { if res == nil { logger.SdmLog.Warnln(err) @@ -755,7 +755,7 @@ func getNssaiProcedure(supi string, plmnID string, supportedFeatures string) ( ) { ctx, pd, err := udm_context.GetSelf().GetTokenCtx("nudr-dm", "UDR") if err != nil { - return pd + return nil, pd } var queryAmDataParamOpts Nudr.QueryAmDataParamOpts queryAmDataParamOpts.SupportedFeatures = optional.NewString(supportedFeatures) @@ -846,7 +846,7 @@ func getSmfSelectDataProcedure(supi string, plmnID string, supportedFeatures str ) { ctx, pd, err := udm_context.GetSelf().GetTokenCtx("nudr-dm", "UDR") if err != nil { - return pd + return nil, pd } var querySmfSelectDataParamOpts Nudr.QuerySmfSelectDataParamOpts querySmfSelectDataParamOpts.SupportedFeatures = optional.NewString(supportedFeatures) @@ -862,7 +862,7 @@ func getSmfSelectDataProcedure(supi string, plmnID string, supportedFeatures str // smfSelectionSubscriptionDataResp, res, err := clientAPI.SMFSelectionSubscriptionDataDocumentApi. // QuerySmfSelectData(context.Background(), supi, plmnID, &querySmfSelectDataParamOpts) smfSelectionSubscriptionDataResp, res, err := clientAPI.SMFSelectionSubscriptionDataDocumentApi. - QuerySmfSelectData(ctx, supi, plmnID, &querySmfSelectDataParamOpts) + QuerySmfSelectData(ctx, supi, plmnID, &querySmfSelectDataParamOpts) if err != nil { if res == nil { logger.SdmLog.Warnln(err) @@ -929,7 +929,7 @@ func subscribeToSharedDataProcedure(sdmSubscription *models.SdmSubscription) ( ) { ctx, pd, err := udm_context.GetSelf().GetTokenCtx("nudm-sdm", "UDM") if err != nil { - return pd + return nil, nil, pd } cfg := Nudm_SubscriberDataManagement.NewConfiguration() udmClientAPI := Nudm_SubscriberDataManagement.NewAPIClient(cfg) @@ -1010,7 +1010,7 @@ func subscribeProcedure(sdmSubscription *models.SdmSubscription, supi string) ( ) { ctx, pd, err := udm_context.GetSelf().GetTokenCtx("nudr-dm", "UDR") if err != nil { - return pd + return nil, nil, pd } clientAPI, err := createUDMClientToUDR(supi) if err != nil { @@ -1225,7 +1225,7 @@ func modifyProcedure(sdmSubsModification *models.SdmSubsModification, supi strin ) { ctx, pd, err := udm_context.GetSelf().GetTokenCtx("nudr-dm", "UDR") if err != nil { - return pd + return nil, pd } clientAPI, err := createUDMClientToUDR(supi) if err != nil { @@ -1239,7 +1239,7 @@ func modifyProcedure(sdmSubsModification *models.SdmSubsModification, supi strin // res, err := clientAPI.SDMSubscriptionDocumentApi.Updatesdmsubscriptions( // context.Background(), supi, subscriptionID, &body) res, err := clientAPI.SDMSubscriptionDocumentApi.Updatesdmsubscriptions( - ctx, supi, subscriptionID, &body) + ctx, supi, subscriptionID, &body) if err != nil { if res == nil { logger.SdmLog.Warnln(err) @@ -1305,7 +1305,7 @@ func modifyForSharedDataProcedure(sdmSubsModification *models.SdmSubsModificatio ) (response *models.SdmSubscription, problemDetails *models.ProblemDetails) { ctx, pd, err := udm_context.GetSelf().GetTokenCtx("nudr-dm", "UDR") if err != nil { - return pd + return nil, pd } clientAPI, err := createUDMClientToUDR(supi) if err != nil { @@ -1384,7 +1384,7 @@ func getTraceDataProcedure(supi string, plmnID string) ( ) { ctx, pd, err := udm_context.GetSelf().GetTokenCtx("nudr-dm", "UDR") if err != nil { - return pd + return nil, pd } var body models.TraceData var queryTraceDataParamOpts Nudr.QueryTraceDataParamOpts @@ -1456,4 +1456,114 @@ func HandleGetUeContextInSmfDataRequest(request *httpwrapper.Request) *httpwrapp // status code is based on SPEC, and option headers return httpwrapper.NewResponse(http.StatusOK, nil, response) } else if problemDetails != nil { - return httpwrapper.NewResponse(int(problemDetails.Status), nil, prob \ No newline at end of file + return httpwrapper.NewResponse(int(problemDetails.Status), nil, problemDetails) + } + problemDetails = &models.ProblemDetails{ + Status: http.StatusForbidden, + Cause: "UNSPECIFIED", + } + return httpwrapper.NewResponse(http.StatusForbidden, nil, problemDetails) +} + +func getUeContextInSmfDataProcedure(supi string, supportedFeatures string) ( + response *models.UeContextInSmfData, problemDetails *models.ProblemDetails, +) { + var body models.UeContextInSmfData + var ueContextInSmfData models.UeContextInSmfData + var pgwInfoArray []models.PgwInfo + var querySmfRegListParamOpts Nudr.QuerySmfRegListParamOpts + querySmfRegListParamOpts.SupportedFeatures = optional.NewString(supportedFeatures) + + clientAPI, err := createUDMClientToUDR(supi) + if err != nil { + return nil, openapi.ProblemDetailsSystemFailure(err.Error()) + } + + pduSessionMap := make(map[string]models.PduSession) + udm_context.GetSelf().CreateUeContextInSmfDataforUe(supi, body) + + pdusess, res, err := clientAPI.SMFRegistrationsCollectionApi.QuerySmfRegList( + context.Background(), supi, &querySmfRegListParamOpts) + if err != nil { + if res == nil { + logger.SdmLog.Infoln(err) + } else if err.Error() != res.Status { + logger.SdmLog.Infoln(err) + } else { + logger.SdmLog.Infoln(err) + problemDetails = &models.ProblemDetails{ + Status: int32(res.StatusCode), + Cause: err.(openapi.GenericOpenAPIError).Model().(models.ProblemDetails).Cause, + Detail: err.Error(), + } + + return nil, problemDetails + } + } + defer func() { + if rspCloseErr := res.Body.Close(); rspCloseErr != nil { + logger.SdmLog.Errorf("QuerySmfRegList response body cannot close: %+v", rspCloseErr) + } + }() + + for _, element := range pdusess { + var pduSession models.PduSession + pduSession.Dnn = element.Dnn + pduSession.SmfInstanceId = element.SmfInstanceId + pduSession.PlmnId = element.PlmnId + pduSessionMap[strconv.Itoa(int(element.PduSessionId))] = pduSession + } + ueContextInSmfData.PduSessions = pduSessionMap + + for _, element := range pdusess { + var pgwInfo models.PgwInfo + pgwInfo.Dnn = element.Dnn + pgwInfo.PgwFqdn = element.PgwFqdn + pgwInfo.PlmnId = element.PlmnId + pgwInfoArray = append(pgwInfoArray, pgwInfo) + } + ueContextInSmfData.PgwInfo = pgwInfoArray + + if res.StatusCode == http.StatusOK { + udmUe, ok := udm_context.GetSelf().UdmUeFindBySupi(supi) + if !ok { + udmUe = udm_context.GetSelf().NewUdmUe(supi) + } + udmUe.UeCtxtInSmfData = &ueContextInSmfData + return udmUe.UeCtxtInSmfData, nil + } else { + problemDetails = &models.ProblemDetails{ + Status: http.StatusNotFound, + Cause: "DATA_NOT_FOUND", + } + return nil, problemDetails + } +} + +func getPlmnIDStruct(queryParameters url.Values) (plmnIDStruct *models.PlmnId, problemDetails *models.ProblemDetails) { + if queryParameters["plmn-id"] != nil { + plmnIDJson := queryParameters["plmn-id"][0] + plmnIDStruct := &models.PlmnId{} + err := json.Unmarshal([]byte(plmnIDJson), plmnIDStruct) + if err != nil { + logger.SdmLog.Warnln("Unmarshal Error in targetPlmnListtruct: ", err) + } + return plmnIDStruct, nil + } else { + problemDetails := &models.ProblemDetails{ + Title: "Invalid Parameter", + Status: http.StatusBadRequest, + Cause: "No get plmn-id", + } + return nil, problemDetails + } +} + +func containDataSetName(dataSetNames []string, target string) bool { + for _, dataSetName := range dataSetNames { + if dataSetName == target { + return true + } + } + return false +} diff --git a/internal/sbi/producer/ue_context_management.go b/internal/sbi/producer/ue_context_management.go index 56f3c61..e7a54d0 100644 --- a/internal/sbi/producer/ue_context_management.go +++ b/internal/sbi/producer/ue_context_management.go @@ -1,7 +1,6 @@ package producer import ( - "context" "fmt" "net/http" "strconv" @@ -104,7 +103,7 @@ func GetAmf3gppAccessProcedure(ueID string, supportedFeatures string) ( ) { ctx, pd, err := udm_context.GetSelf().GetTokenCtx("nudr-dm", "UDR") if err != nil { - return pd + return nil, pd } var queryAmfContext3gppParamOpts Nudr_DataRepository.QueryAmfContext3gppParamOpts queryAmfContext3gppParamOpts.SupportedFeatures = optional.NewString(supportedFeatures) @@ -168,7 +167,7 @@ func GetAmfNon3gppAccessProcedure(queryAmfContextNon3gppParamOpts Nudr_DataRepos ) { ctx, pd, err := udm_context.GetSelf().GetTokenCtx("nudr-dm", "UDR") if err != nil { - return pd + return nil, pd } clientAPI, err := createUDMClientToUDR(ueID) if err != nil { @@ -178,7 +177,7 @@ func GetAmfNon3gppAccessProcedure(queryAmfContextNon3gppParamOpts Nudr_DataRepos // amfNon3GppAccessRegistration, resp, err := clientAPI.AMFNon3GPPAccessRegistrationDocumentApi. // QueryAmfContextNon3gpp(context.Background(), ueID, &queryAmfContextNon3gppParamOpts) amfNon3GppAccessRegistration, resp, err := clientAPI.AMFNon3GPPAccessRegistrationDocumentApi. - QueryAmfContextNon3gpp(ctx, ueID, &queryAmfContextNon3gppParamOpts) + QueryAmfContextNon3gpp(ctx, ueID, &queryAmfContextNon3gppParamOpts) if err != nil { problemDetails = &models.ProblemDetails{ Status: int32(resp.StatusCode), @@ -228,7 +227,7 @@ func RegistrationAmf3gppAccessProcedure(registerRequest models.Amf3GppAccessRegi ) { ctx, pd, err := udm_context.GetSelf().GetTokenCtx("nudr-dm", "UDR") if err != nil { - return pd + return nil, nil, pd } // TODO: EPS interworking with N26 is not supported yet in this stage var oldAmf3GppAccessRegContext *models.Amf3GppAccessRegistration @@ -329,7 +328,7 @@ func RegisterAmfNon3gppAccessProcedure(registerRequest models.AmfNon3GppAccessRe ) { ctx, pd, err := udm_context.GetSelf().GetTokenCtx("nudr-dm", "UDR") if err != nil { - return pd + return nil, nil, pd } var oldAmfNon3GppAccessRegContext *models.AmfNon3GppAccessRegistration if udm_context.GetSelf().UdmAmfNon3gppRegContextExists(ueID) { @@ -483,7 +482,7 @@ func UpdateAmf3gppAccessProcedure(request models.Amf3GppAccessRegistrationModifi // resp, err := clientAPI.AMF3GPPAccessRegistrationDocumentApi.AmfContext3gpp(context.Background(), ueID, // patchItemReqArray) resp, err := clientAPI.AMF3GPPAccessRegistrationDocumentApi.AmfContext3gpp(ctx, ueID, - patchItemReqArray) + patchItemReqArray) if err != nil { problemDetails = &models.ProblemDetails{ Status: int32(resp.StatusCode), @@ -606,7 +605,7 @@ func UpdateAmfNon3gppAccessProcedure(request models.AmfNon3GppAccessRegistration // resp, err := clientAPI.AMFNon3GPPAccessRegistrationDocumentApi.AmfContextNon3gpp(context.Background(), // ueID, patchItemReqArray) resp, err := clientAPI.AMFNon3GPPAccessRegistrationDocumentApi.AmfContextNon3gpp(ctx, - ueID, patchItemReqArray) + ueID, patchItemReqArray) if err != nil { problemDetails = &models.ProblemDetails{ Status: int32(resp.StatusCode), @@ -703,7 +702,7 @@ func RegistrationSmfRegistrationsProcedure(request *models.SmfRegistration, ueID ) { ctx, pd, err := udm_context.GetSelf().GetTokenCtx("nudr-dm", "UDR") if err != nil { - return pd + return nil, nil, pd } contextExisted := false udm_context.GetSelf().CreateSmfRegContext(ueID, pduSessionID) @@ -729,7 +728,7 @@ func RegistrationSmfRegistrationsProcedure(request *models.SmfRegistration, ueID // resp, err := clientAPI.SMFRegistrationDocumentApi.CreateSmfContextNon3gpp(context.Background(), ueID, // pduID32, &createSmfContextNon3gppParamOpts) resp, err := clientAPI.SMFRegistrationDocumentApi.CreateSmfContextNon3gpp(ctx, ueID, - pduID32, &createSmfContextNon3gppParamOpts) + pduID32, &createSmfContextNon3gppParamOpts) if err != nil { problemDetails.Cause = err.(openapi.GenericOpenAPIError).Model().(models.ProblemDetails).Cause problemDetails = &models.ProblemDetails{ From e956cc5f1ac32a5df5f385c984be2076d54716fe Mon Sep 17 00:00:00 2001 From: ubuntu Date: Tue, 16 Jan 2024 17:19:20 +0000 Subject: [PATCH 04/21] modify OAuth in producer --- internal/context/context.go | 4 + internal/sbi/eventexposure/routers.go | 18 ++-- internal/sbi/parameterprovision/routers.go | 18 ++-- .../sbi/subscriberdatamanagement/routers.go | 18 ++-- internal/sbi/ueauthentication/routers.go | 19 +++-- internal/sbi/uecontextmanagement/routers.go | 18 ++-- internal/util/router_auth_check.go | 35 ++++++++ internal/util/router_auth_check_test.go | 83 +++++++++++++++++++ 8 files changed, 185 insertions(+), 28 deletions(-) create mode 100644 internal/util/router_auth_check.go create mode 100644 internal/util/router_auth_check_test.go diff --git a/internal/context/context.go b/internal/context/context.go index 6453bb3..bd23135 100644 --- a/internal/context/context.go +++ b/internal/context/context.go @@ -36,6 +36,10 @@ func Init() { GetSelf().EeSubscriptionIDGenerator = idgenerator.NewGenerator(1, math.MaxInt32) } +type NFContext interface { + AuthorizationCheck(token, serviceName string) error +} + type UDMContext struct { NfId string GroupId string diff --git a/internal/sbi/eventexposure/routers.go b/internal/sbi/eventexposure/routers.go index 903c661..bac2ed8 100644 --- a/internal/sbi/eventexposure/routers.go +++ b/internal/sbi/eventexposure/routers.go @@ -17,6 +17,7 @@ import ( udm_context "github.com/free5gc/udm/internal/context" "github.com/free5gc/udm/internal/logger" + "github.com/free5gc/udm/internal/util" "github.com/free5gc/udm/pkg/factory" logger_util "github.com/free5gc/util/logger" ) @@ -36,9 +37,17 @@ type Route struct { // Routes is the list of the generated Route. type Routes []Route +const serviceName string = "nudm-ee" + // NewRouter returns a new router. func NewRouter() *gin.Engine { router := logger_util.NewGinWithLogrus(logger.GinLog) + routerAuthorizationCheck := util.NewRouterAuthorizationCheck(serviceName) + + router.Use(func(c *gin.Context) { + routerAuthorizationCheck.Check(c, udm_context.GetSelf()) + }) + AddService(router) return router } @@ -46,6 +55,10 @@ func NewRouter() *gin.Engine { func AddService(engine *gin.Engine) *gin.RouterGroup { group := engine.Group(factory.UdmEeResUriPrefix) + routerAuthorizationCheck := util.NewRouterAuthorizationCheck(serviceName) + group.Use(func(c *gin.Context) { + routerAuthorizationCheck.Check(c, udm_context.GetSelf()) + }) for _, route := range routes { switch route.Method { case "GET": @@ -68,11 +81,6 @@ func Index(c *gin.Context) { c.String(http.StatusOK, "Hello World!") } -func authorizationCheck(c *gin.Context) error { - token := c.Request.Header.Get("Authorization") - return udm_context.GetSelf().AuthorizationCheck(token, "nudm-ee") -} - var routes = Routes{ { "Index", diff --git a/internal/sbi/parameterprovision/routers.go b/internal/sbi/parameterprovision/routers.go index c2ea387..17f9adc 100644 --- a/internal/sbi/parameterprovision/routers.go +++ b/internal/sbi/parameterprovision/routers.go @@ -17,6 +17,7 @@ import ( udm_context "github.com/free5gc/udm/internal/context" "github.com/free5gc/udm/internal/logger" + "github.com/free5gc/udm/internal/util" "github.com/free5gc/udm/pkg/factory" logger_util "github.com/free5gc/util/logger" ) @@ -36,16 +37,26 @@ type Route struct { // Routes is the list of the generated Route. type Routes []Route +const serviceName string = "nudm-pp" + // NewRouter returns a new router. func NewRouter() *gin.Engine { router := logger_util.NewGinWithLogrus(logger.GinLog) + routerAuthorizationCheck := util.NewRouterAuthorizationCheck(serviceName) + + router.Use(func(c *gin.Context) { + routerAuthorizationCheck.Check(c, udm_context.GetSelf()) + }) AddService(router) return router } func AddService(engine *gin.Engine) *gin.RouterGroup { group := engine.Group(factory.UdmPpResUriPrefix) - + routerAuthorizationCheck := util.NewRouterAuthorizationCheck(serviceName) + group.Use(func(c *gin.Context) { + routerAuthorizationCheck.Check(c, udm_context.GetSelf()) + }) for _, route := range routes { switch route.Method { case "GET": @@ -68,11 +79,6 @@ func Index(c *gin.Context) { c.String(http.StatusOK, "Hello World!") } -func authorizationCheck(c *gin.Context) error { - token := c.Request.Header.Get("Authorization") - return udm_context.GetSelf().AuthorizationCheck(token, "nudm-pp") -} - var routes = Routes{ { "Index", diff --git a/internal/sbi/subscriberdatamanagement/routers.go b/internal/sbi/subscriberdatamanagement/routers.go index 4e51b66..1b4dce5 100644 --- a/internal/sbi/subscriberdatamanagement/routers.go +++ b/internal/sbi/subscriberdatamanagement/routers.go @@ -17,6 +17,7 @@ import ( udm_context "github.com/free5gc/udm/internal/context" "github.com/free5gc/udm/internal/logger" + "github.com/free5gc/udm/internal/util" "github.com/free5gc/udm/pkg/factory" logger_util "github.com/free5gc/util/logger" ) @@ -36,9 +37,17 @@ type Route struct { // Routes is the list of the generated Route. type Routes []Route +const serviceName string = "nudm-sdm" + // NewRouter returns a new router. func NewRouter() *gin.Engine { router := logger_util.NewGinWithLogrus(logger.GinLog) + routerAuthorizationCheck := util.NewRouterAuthorizationCheck(serviceName) + + router.Use(func(c *gin.Context) { + routerAuthorizationCheck.Check(c, udm_context.GetSelf()) + }) + AddService(router) return router } @@ -129,6 +138,10 @@ func threeLayerPathHandlerFunc(c *gin.Context) { func AddService(engine *gin.Engine) *gin.RouterGroup { group := engine.Group(factory.UdmSdmResUriPrefix) + routerAuthorizationCheck := util.NewRouterAuthorizationCheck(serviceName) + group.Use(func(c *gin.Context) { + routerAuthorizationCheck.Check(c, udm_context.GetSelf()) + }) for _, route := range routes { switch route.Method { case "GET": @@ -161,11 +174,6 @@ func Index(c *gin.Context) { c.String(http.StatusOK, "Hello World!") } -func authorizationCheck(c *gin.Context) error { - token := c.Request.Header.Get("Authorization") - return udm_context.GetSelf().AuthorizationCheck(token, "nudm-sdm") -} - var routes = Routes{ { "Index", diff --git a/internal/sbi/ueauthentication/routers.go b/internal/sbi/ueauthentication/routers.go index 404da04..1e02d6b 100644 --- a/internal/sbi/ueauthentication/routers.go +++ b/internal/sbi/ueauthentication/routers.go @@ -18,6 +18,7 @@ import ( udm_context "github.com/free5gc/udm/internal/context" "github.com/free5gc/udm/internal/logger" + "github.com/free5gc/udm/internal/util" "github.com/free5gc/udm/pkg/factory" logger_util "github.com/free5gc/util/logger" ) @@ -43,9 +44,17 @@ type Route struct { // Routes is the list of the generated Route. type Routes []Route +const serviceName string = "nudm-ueau" + // NewRouter returns a new router. func NewRouter() *gin.Engine { router := logger_util.NewGinWithLogrus(logger.GinLog) + routerAuthorizationCheck := util.NewRouterAuthorizationCheck(serviceName) + + router.Use(func(c *gin.Context) { + routerAuthorizationCheck.Check(c, udm_context.GetSelf()) + }) + AddService(router) return router } @@ -62,7 +71,10 @@ func genAuthDataHandlerFunc(c *gin.Context) { func AddService(engine *gin.Engine) *gin.RouterGroup { group := engine.Group(factory.UdmUeauResUriPrefix) - + routerAuthorizationCheck := util.NewRouterAuthorizationCheck(serviceName) + group.Use(func(c *gin.Context) { + routerAuthorizationCheck.Check(c, udm_context.GetSelf()) + }) for _, route := range routes { switch route.Method { case "GET": @@ -89,11 +101,6 @@ func Index(c *gin.Context) { c.String(http.StatusOK, "Hello World!") } -func authorizationCheck(c *gin.Context) error { - token := c.Request.Header.Get("Authorization") - return udm_context.GetSelf().AuthorizationCheck(token, "nudm-ueau") -} - var routes = Routes{ { "Index", diff --git a/internal/sbi/uecontextmanagement/routers.go b/internal/sbi/uecontextmanagement/routers.go index 1b95d31..166d688 100644 --- a/internal/sbi/uecontextmanagement/routers.go +++ b/internal/sbi/uecontextmanagement/routers.go @@ -17,6 +17,7 @@ import ( udm_context "github.com/free5gc/udm/internal/context" "github.com/free5gc/udm/internal/logger" + "github.com/free5gc/udm/internal/util" "github.com/free5gc/udm/pkg/factory" logger_util "github.com/free5gc/util/logger" ) @@ -36,16 +37,26 @@ type Route struct { // Routes is the list of the generated Route. type Routes []Route +const serviceName string = "nudm-uecm" + // NewRouter returns a new router. func NewRouter() *gin.Engine { router := logger_util.NewGinWithLogrus(logger.GinLog) + routerAuthorizationCheck := util.NewRouterAuthorizationCheck(serviceName) + + router.Use(func(c *gin.Context) { + routerAuthorizationCheck.Check(c, udm_context.GetSelf()) + }) AddService(router) return router } func AddService(engine *gin.Engine) *gin.RouterGroup { group := engine.Group(factory.UdmUecmResUriPrefix) - + routerAuthorizationCheck := util.NewRouterAuthorizationCheck(serviceName) + group.Use(func(c *gin.Context) { + routerAuthorizationCheck.Check(c, udm_context.GetSelf()) + }) for _, route := range routes { switch route.Method { case "GET": @@ -69,11 +80,6 @@ func Index(c *gin.Context) { c.String(http.StatusOK, "Hello World!") } -func authorizationCheck(c *gin.Context) error { - token := c.Request.Header.Get("Authorization") - return udm_context.GetSelf().AuthorizationCheck(token, "nudm-uecm") -} - var routes = Routes{ { "Index", diff --git a/internal/util/router_auth_check.go b/internal/util/router_auth_check.go new file mode 100644 index 0000000..7a2ff43 --- /dev/null +++ b/internal/util/router_auth_check.go @@ -0,0 +1,35 @@ +package util + +import ( + "net/http" + + udm_context "github.com/free5gc/udm/internal/context" + "github.com/free5gc/udm/internal/logger" + "github.com/gin-gonic/gin" +) + +type NFContextGetter func() *udm_context.UDMContext + +type RouterAuthorizationCheck struct { + serviceName string +} + +func NewRouterAuthorizationCheck(serviceName string) *RouterAuthorizationCheck { + return &RouterAuthorizationCheck{ + serviceName: serviceName, + } +} + +func (rac *RouterAuthorizationCheck) Check(c *gin.Context, udmContext udm_context.NFContext) { + token := c.Request.Header.Get("Authorization") + err := udmContext.AuthorizationCheck(token, rac.serviceName) + + if err != nil { + logger.UtilLog.Debugf("RouterAuthorizationCheck::Check Unauthorized: %s", err) + c.JSON(http.StatusUnauthorized, gin.H{"error": err.Error()}) + c.Abort() + return + } + + logger.UtilLog.Debugf("RouterAuthorizationCheck::Check Authorized") +} diff --git a/internal/util/router_auth_check_test.go b/internal/util/router_auth_check_test.go new file mode 100644 index 0000000..1f23a93 --- /dev/null +++ b/internal/util/router_auth_check_test.go @@ -0,0 +1,83 @@ +package util + +import ( + "net/http" + "net/http/httptest" + "testing" + + "github.com/gin-gonic/gin" + "github.com/pkg/errors" +) + +const ( + Valid = "valid" + Invalid = "invalid" +) + +type mockUDMContext struct{} + +func newMockUDMContext() *mockUDMContext { + return &mockUDMContext{} +} + +func (m *mockUDMContext) AuthorizationCheck(token string, serviceName string) error { + if token == Valid { + return nil + } + + return errors.New("invalid token") +} + +func TestRouterAuthorizationCheck_Check(t *testing.T) { + // Mock gin.Context + w := httptest.NewRecorder() + c, _ := gin.CreateTestContext(w) + c.Request, _ = http.NewRequest("GET", "/", nil) + + type Args struct { + token string + } + type Want struct { + statusCode int + } + + tests := []struct { + name string + args Args + want Want + }{ + { + name: "Valid Token", + args: Args{ + token: Valid, + }, + want: Want{ + statusCode: http.StatusOK, + }, + }, + { + name: "Invalid Token", + args: Args{ + token: Invalid, + }, + want: Want{ + statusCode: http.StatusUnauthorized, + }, + }, + } + + for _, tt := range tests { + t.Run(tt.name, func(t *testing.T) { + w = httptest.NewRecorder() + c, _ = gin.CreateTestContext(w) + c.Request, _ = http.NewRequest("GET", "/", nil) + c.Request.Header.Set("Authorization", tt.args.token) + + rac := NewRouterAuthorizationCheck("testService") + rac.Check(c, newMockUDMContext()) + if w.Code != tt.want.statusCode { + t.Errorf("StatusCode should be %d, but got %d", tt.want.statusCode, w.Code) + } + }) + } +} From 8a39f208b522239cece4fd637eb29799a65b2a10 Mon Sep 17 00:00:00 2001 From: ubuntu Date: Wed, 17 Jan 2024 07:27:25 +0000 Subject: [PATCH 05/21] 1. modify error to error.Error() 2. modify nudr.dm to nudr.dr 3. remove NewRouterAuthorizationChekck in AddService() in every producer router.go 4. add _ NFContext = &UDMContext in context.go --- internal/context/context.go | 6 ++++- internal/sbi/eventexposure/routers.go | 5 ---- internal/sbi/parameterprovision/routers.go | 4 ---- internal/sbi/producer/event_exposure.go | 1 - internal/sbi/producer/generate_auth_data.go | 4 ++-- internal/sbi/producer/parameter_provision.go | 2 +- .../producer/subscriber_data_management.go | 24 +++++++++---------- .../sbi/producer/ue_context_management.go | 16 ++++++------- .../sbi/subscriberdatamanagement/routers.go | 5 ---- internal/sbi/ueauthentication/routers.go | 5 ---- internal/sbi/uecontextmanagement/routers.go | 4 ---- internal/util/router_auth_check.go | 2 +- 12 files changed, 29 insertions(+), 49 deletions(-) diff --git a/internal/context/context.go b/internal/context/context.go index bd23135..0c2463a 100644 --- a/internal/context/context.go +++ b/internal/context/context.go @@ -21,7 +21,7 @@ import ( "github.com/free5gc/util/idgenerator" ) -var udmContext UDMContext +var udmContext = UDMContext{} const ( LocationUriAmf3GppAccessRegistration int = iota @@ -40,6 +40,8 @@ type NFContext interface { AuthorizationCheck(token, serviceName string) error } +var _ NFContext = &UDMContext{} + type UDMContext struct { NfId string GroupId string @@ -503,8 +505,10 @@ func GetSelf() *UDMContext { func (context *UDMContext) AuthorizationCheck(token, serviceName string) error { if !context.OAuth2Required { + logger.UtilLog.Debugf("NSSFContext::AuthorizationCheck: OAuth2 not required\n") return nil } + logger.UtilLog.Debugf("UDMContext::AuthorizationCheck: token[%s] serviceName[%s]\n", token, serviceName) err := oauth.VerifyOAuth(token, serviceName, context.NrfCertPem) if err != nil { return err diff --git a/internal/sbi/eventexposure/routers.go b/internal/sbi/eventexposure/routers.go index bac2ed8..a92c997 100644 --- a/internal/sbi/eventexposure/routers.go +++ b/internal/sbi/eventexposure/routers.go @@ -42,11 +42,6 @@ const serviceName string = "nudm-ee" // NewRouter returns a new router. func NewRouter() *gin.Engine { router := logger_util.NewGinWithLogrus(logger.GinLog) - routerAuthorizationCheck := util.NewRouterAuthorizationCheck(serviceName) - - router.Use(func(c *gin.Context) { - routerAuthorizationCheck.Check(c, udm_context.GetSelf()) - }) AddService(router) return router diff --git a/internal/sbi/parameterprovision/routers.go b/internal/sbi/parameterprovision/routers.go index 17f9adc..1e99d57 100644 --- a/internal/sbi/parameterprovision/routers.go +++ b/internal/sbi/parameterprovision/routers.go @@ -42,11 +42,7 @@ const serviceName string = "nudm-pp" // NewRouter returns a new router. func NewRouter() *gin.Engine { router := logger_util.NewGinWithLogrus(logger.GinLog) - routerAuthorizationCheck := util.NewRouterAuthorizationCheck(serviceName) - router.Use(func(c *gin.Context) { - routerAuthorizationCheck.Check(c, udm_context.GetSelf()) - }) AddService(router) return router } diff --git a/internal/sbi/producer/event_exposure.go b/internal/sbi/producer/event_exposure.go index aa8eb80..4463d05 100644 --- a/internal/sbi/producer/event_exposure.go +++ b/internal/sbi/producer/event_exposure.go @@ -36,7 +36,6 @@ func CreateEeSubscriptionProcedure(ueIdentity string, eesubscription models.EeSubscription, ) (*models.CreatedEeSubscription, *models.ProblemDetails) { udmSelf := udm_context.GetSelf() - logger.EeLog.Debugf("udIdentity: %s", ueIdentity) switch { // GPSI (MSISDN identifier) represents a single UE diff --git a/internal/sbi/producer/generate_auth_data.go b/internal/sbi/producer/generate_auth_data.go index 5f317bb..06b1467 100644 --- a/internal/sbi/producer/generate_auth_data.go +++ b/internal/sbi/producer/generate_auth_data.go @@ -118,7 +118,7 @@ func HandleConfirmAuthDataRequest(request *httpwrapper.Request) *httpwrapper.Res } func ConfirmAuthDataProcedure(authEvent models.AuthEvent, supi string) (problemDetails *models.ProblemDetails) { - ctx, pd, err := udm_context.GetSelf().GetTokenCtx("nudr-dm", "UDR") + ctx, pd, err := udm_context.GetSelf().GetTokenCtx("nudr-dr", "UDR") if err != nil { return pd } @@ -156,7 +156,7 @@ func ConfirmAuthDataProcedure(authEvent models.AuthEvent, supi string) (problemD func GenerateAuthDataProcedure(authInfoRequest models.AuthenticationInfoRequest, supiOrSuci string) ( response *models.AuthenticationInfoResult, problemDetails *models.ProblemDetails, ) { - ctx, pd, err := udm_context.GetSelf().GetTokenCtx("nudr-dm", "UDR") + ctx, pd, err := udm_context.GetSelf().GetTokenCtx("nudr-dr", "UDR") if err != nil { return nil, pd } diff --git a/internal/sbi/producer/parameter_provision.go b/internal/sbi/producer/parameter_provision.go index 84e716b..bfe3779 100644 --- a/internal/sbi/producer/parameter_provision.go +++ b/internal/sbi/producer/parameter_provision.go @@ -30,7 +30,7 @@ func HandleUpdateRequest(request *httpwrapper.Request) *httpwrapper.Response { } func UpdateProcedure(updateRequest models.PpData, gpsi string) (problemDetails *models.ProblemDetails) { - ctx, pd, err := udm_context.GetSelf().GetTokenCtx("nudr-dm", "UDR") + ctx, pd, err := udm_context.GetSelf().GetTokenCtx("nudr-dr", "UDR") if err != nil { return pd } diff --git a/internal/sbi/producer/subscriber_data_management.go b/internal/sbi/producer/subscriber_data_management.go index 12de606..307586a 100644 --- a/internal/sbi/producer/subscriber_data_management.go +++ b/internal/sbi/producer/subscriber_data_management.go @@ -54,7 +54,7 @@ func HandleGetAmDataRequest(request *httpwrapper.Request) *httpwrapper.Response func getAmDataProcedure(supi string, plmnID string, supportedFeatures string) ( response *models.AccessAndMobilitySubscriptionData, problemDetails *models.ProblemDetails, ) { - ctx, pd, err := udm_context.GetSelf().GetTokenCtx("nudr-dm", "UDR") + ctx, pd, err := udm_context.GetSelf().GetTokenCtx("nudr-dr", "UDR") if err != nil { return nil, pd } @@ -135,7 +135,7 @@ func HandleGetIdTranslationResultRequest(request *httpwrapper.Request) *httpwrap func getIdTranslationResultProcedure(gpsi string) (response *models.IdTranslationResult, problemDetails *models.ProblemDetails, ) { - ctx, pd, err := udm_context.GetSelf().GetTokenCtx("nudr-dm", "UDR") + ctx, pd, err := udm_context.GetSelf().GetTokenCtx("nudr-dr", "UDR") if err != nil { return nil, pd } @@ -233,7 +233,7 @@ func HandleGetSupiRequest(request *httpwrapper.Request) *httpwrapper.Response { func getSupiProcedure(supi string, plmnID string, dataSetNames []string, supportedFeatures string) ( response *models.SubscriptionDataSets, problemDetails *models.ProblemDetails, ) { - ctx, pd, err := udm_context.GetSelf().GetTokenCtx("nudr-dm", "UDR") + ctx, pd, err := udm_context.GetSelf().GetTokenCtx("nudr-dr", "UDR") if err != nil { return nil, pd } @@ -547,7 +547,7 @@ func HandleGetSharedDataRequest(request *httpwrapper.Request) *httpwrapper.Respo func getSharedDataProcedure(sharedDataIds []string, supportedFeatures string) ( response []models.SharedData, problemDetails *models.ProblemDetails, ) { - ctx, pd, err := udm_context.GetSelf().GetTokenCtx("nudr-dm", "UDR") + ctx, pd, err := udm_context.GetSelf().GetTokenCtx("nudr-dr", "UDR") if err != nil { return nil, pd } @@ -635,7 +635,7 @@ func HandleGetSmDataRequest(request *httpwrapper.Request) *httpwrapper.Response func getSmDataProcedure(supi string, plmnID string, Dnn string, Snssai string, supportedFeatures string) ( response interface{}, problemDetails *models.ProblemDetails, ) { - ctx, pd, err := udm_context.GetSelf().GetTokenCtx("nudr-dm", "UDR") + ctx, pd, err := udm_context.GetSelf().GetTokenCtx("nudr-dr", "UDR") if err != nil { return nil, pd } @@ -753,7 +753,7 @@ func HandleGetNssaiRequest(request *httpwrapper.Request) *httpwrapper.Response { func getNssaiProcedure(supi string, plmnID string, supportedFeatures string) ( *models.Nssai, *models.ProblemDetails, ) { - ctx, pd, err := udm_context.GetSelf().GetTokenCtx("nudr-dm", "UDR") + ctx, pd, err := udm_context.GetSelf().GetTokenCtx("nudr-dr", "UDR") if err != nil { return nil, pd } @@ -844,7 +844,7 @@ func HandleGetSmfSelectDataRequest(request *httpwrapper.Request) *httpwrapper.Re func getSmfSelectDataProcedure(supi string, plmnID string, supportedFeatures string) ( response *models.SmfSelectionSubscriptionData, problemDetails *models.ProblemDetails, ) { - ctx, pd, err := udm_context.GetSelf().GetTokenCtx("nudr-dm", "UDR") + ctx, pd, err := udm_context.GetSelf().GetTokenCtx("nudr-dr", "UDR") if err != nil { return nil, pd } @@ -1008,7 +1008,7 @@ func HandleSubscribeRequest(request *httpwrapper.Request) *httpwrapper.Response func subscribeProcedure(sdmSubscription *models.SdmSubscription, supi string) ( header http.Header, response *models.SdmSubscription, problemDetails *models.ProblemDetails, ) { - ctx, pd, err := udm_context.GetSelf().GetTokenCtx("nudr-dm", "UDR") + ctx, pd, err := udm_context.GetSelf().GetTokenCtx("nudr-dr", "UDR") if err != nil { return nil, nil, pd } @@ -1149,7 +1149,7 @@ func HandleUnsubscribeRequest(request *httpwrapper.Request) *httpwrapper.Respons // TS 29.503 5.2.2.4.2 // Unsubscribe to notifications of data change func unsubscribeProcedure(supi string, subscriptionID string) *models.ProblemDetails { - ctx, pd, err := udm_context.GetSelf().GetTokenCtx("nudr-dm", "UDR") + ctx, pd, err := udm_context.GetSelf().GetTokenCtx("nudr-dr", "UDR") if err != nil { return pd } @@ -1223,7 +1223,7 @@ func HandleModifyRequest(request *httpwrapper.Request) *httpwrapper.Response { func modifyProcedure(sdmSubsModification *models.SdmSubsModification, supi string, subscriptionID string) ( response *models.SdmSubscription, problemDetails *models.ProblemDetails, ) { - ctx, pd, err := udm_context.GetSelf().GetTokenCtx("nudr-dm", "UDR") + ctx, pd, err := udm_context.GetSelf().GetTokenCtx("nudr-dr", "UDR") if err != nil { return nil, pd } @@ -1303,7 +1303,7 @@ func HandleModifyForSharedDataRequest(request *httpwrapper.Request) *httpwrapper func modifyForSharedDataProcedure(sdmSubsModification *models.SdmSubsModification, supi string, subscriptionID string, ) (response *models.SdmSubscription, problemDetails *models.ProblemDetails) { - ctx, pd, err := udm_context.GetSelf().GetTokenCtx("nudr-dm", "UDR") + ctx, pd, err := udm_context.GetSelf().GetTokenCtx("nudr-dr", "UDR") if err != nil { return nil, pd } @@ -1382,7 +1382,7 @@ func HandleGetTraceDataRequest(request *httpwrapper.Request) *httpwrapper.Respon func getTraceDataProcedure(supi string, plmnID string) ( response *models.TraceData, problemDetails *models.ProblemDetails, ) { - ctx, pd, err := udm_context.GetSelf().GetTokenCtx("nudr-dm", "UDR") + ctx, pd, err := udm_context.GetSelf().GetTokenCtx("nudr-dr", "UDR") if err != nil { return nil, pd } diff --git a/internal/sbi/producer/ue_context_management.go b/internal/sbi/producer/ue_context_management.go index e7a54d0..59066cf 100644 --- a/internal/sbi/producer/ue_context_management.go +++ b/internal/sbi/producer/ue_context_management.go @@ -101,7 +101,7 @@ func HandleGetAmf3gppAccessRequest(request *httpwrapper.Request) *httpwrapper.Re func GetAmf3gppAccessProcedure(ueID string, supportedFeatures string) ( response *models.Amf3GppAccessRegistration, problemDetails *models.ProblemDetails, ) { - ctx, pd, err := udm_context.GetSelf().GetTokenCtx("nudr-dm", "UDR") + ctx, pd, err := udm_context.GetSelf().GetTokenCtx("nudr-dr", "UDR") if err != nil { return nil, pd } @@ -165,7 +165,7 @@ func GetAmfNon3gppAccessProcedure(queryAmfContextNon3gppParamOpts Nudr_DataRepos QueryAmfContextNon3gppParamOpts, ueID string) (response *models.AmfNon3GppAccessRegistration, problemDetails *models.ProblemDetails, ) { - ctx, pd, err := udm_context.GetSelf().GetTokenCtx("nudr-dm", "UDR") + ctx, pd, err := udm_context.GetSelf().GetTokenCtx("nudr-dr", "UDR") if err != nil { return nil, pd } @@ -225,7 +225,7 @@ func HandleRegistrationAmf3gppAccessRequest(request *httpwrapper.Request) *httpw func RegistrationAmf3gppAccessProcedure(registerRequest models.Amf3GppAccessRegistration, ueID string) ( header http.Header, response *models.Amf3GppAccessRegistration, problemDetails *models.ProblemDetails, ) { - ctx, pd, err := udm_context.GetSelf().GetTokenCtx("nudr-dm", "UDR") + ctx, pd, err := udm_context.GetSelf().GetTokenCtx("nudr-dr", "UDR") if err != nil { return nil, nil, pd } @@ -326,7 +326,7 @@ func HandleRegisterAmfNon3gppAccessRequest(request *httpwrapper.Request) *httpwr func RegisterAmfNon3gppAccessProcedure(registerRequest models.AmfNon3GppAccessRegistration, ueID string) ( header http.Header, response *models.AmfNon3GppAccessRegistration, problemDetails *models.ProblemDetails, ) { - ctx, pd, err := udm_context.GetSelf().GetTokenCtx("nudr-dm", "UDR") + ctx, pd, err := udm_context.GetSelf().GetTokenCtx("nudr-dr", "UDR") if err != nil { return nil, nil, pd } @@ -406,7 +406,7 @@ func HandleUpdateAmf3gppAccessRequest(request *httpwrapper.Request) *httpwrapper func UpdateAmf3gppAccessProcedure(request models.Amf3GppAccessRegistrationModification, ueID string) ( problemDetails *models.ProblemDetails, ) { - ctx, pd, err := udm_context.GetSelf().GetTokenCtx("nudr-dm", "UDR") + ctx, pd, err := udm_context.GetSelf().GetTokenCtx("nudr-dr", "UDR") if err != nil { return pd } @@ -530,7 +530,7 @@ func HandleUpdateAmfNon3gppAccessRequest(request *httpwrapper.Request) *httpwrap func UpdateAmfNon3gppAccessProcedure(request models.AmfNon3GppAccessRegistrationModification, ueID string) ( problemDetails *models.ProblemDetails, ) { - ctx, pd, err := udm_context.GetSelf().GetTokenCtx("nudr-dm", "UDR") + ctx, pd, err := udm_context.GetSelf().GetTokenCtx("nudr-dr", "UDR") if err != nil { return pd } @@ -643,7 +643,7 @@ func HandleDeregistrationSmfRegistrations(request *httpwrapper.Request) *httpwra } func DeregistrationSmfRegistrationsProcedure(ueID string, pduSessionID string) (problemDetails *models.ProblemDetails) { - ctx, pd, err := udm_context.GetSelf().GetTokenCtx("nudr-dm", "UDR") + ctx, pd, err := udm_context.GetSelf().GetTokenCtx("nudr-dr", "UDR") if err != nil { return pd } @@ -700,7 +700,7 @@ func HandleRegistrationSmfRegistrationsRequest(request *httpwrapper.Request) *ht func RegistrationSmfRegistrationsProcedure(request *models.SmfRegistration, ueID string, pduSessionID string) ( header http.Header, response *models.SmfRegistration, problemDetails *models.ProblemDetails, ) { - ctx, pd, err := udm_context.GetSelf().GetTokenCtx("nudr-dm", "UDR") + ctx, pd, err := udm_context.GetSelf().GetTokenCtx("nudr-dr", "UDR") if err != nil { return nil, nil, pd } diff --git a/internal/sbi/subscriberdatamanagement/routers.go b/internal/sbi/subscriberdatamanagement/routers.go index 1b4dce5..6600d17 100644 --- a/internal/sbi/subscriberdatamanagement/routers.go +++ b/internal/sbi/subscriberdatamanagement/routers.go @@ -42,11 +42,6 @@ const serviceName string = "nudm-sdm" // NewRouter returns a new router. func NewRouter() *gin.Engine { router := logger_util.NewGinWithLogrus(logger.GinLog) - routerAuthorizationCheck := util.NewRouterAuthorizationCheck(serviceName) - - router.Use(func(c *gin.Context) { - routerAuthorizationCheck.Check(c, udm_context.GetSelf()) - }) AddService(router) return router diff --git a/internal/sbi/ueauthentication/routers.go b/internal/sbi/ueauthentication/routers.go index 1e02d6b..2b77b5a 100644 --- a/internal/sbi/ueauthentication/routers.go +++ b/internal/sbi/ueauthentication/routers.go @@ -49,11 +49,6 @@ const serviceName string = "nudm-ueau" // NewRouter returns a new router. func NewRouter() *gin.Engine { router := logger_util.NewGinWithLogrus(logger.GinLog) - routerAuthorizationCheck := util.NewRouterAuthorizationCheck(serviceName) - - router.Use(func(c *gin.Context) { - routerAuthorizationCheck.Check(c, udm_context.GetSelf()) - }) AddService(router) return router diff --git a/internal/sbi/uecontextmanagement/routers.go b/internal/sbi/uecontextmanagement/routers.go index 166d688..b8487d4 100644 --- a/internal/sbi/uecontextmanagement/routers.go +++ b/internal/sbi/uecontextmanagement/routers.go @@ -42,11 +42,7 @@ const serviceName string = "nudm-uecm" // NewRouter returns a new router. func NewRouter() *gin.Engine { router := logger_util.NewGinWithLogrus(logger.GinLog) - routerAuthorizationCheck := util.NewRouterAuthorizationCheck(serviceName) - router.Use(func(c *gin.Context) { - routerAuthorizationCheck.Check(c, udm_context.GetSelf()) - }) AddService(router) return router } diff --git a/internal/util/router_auth_check.go b/internal/util/router_auth_check.go index 7a2ff43..f1718a3 100644 --- a/internal/util/router_auth_check.go +++ b/internal/util/router_auth_check.go @@ -25,7 +25,7 @@ func (rac *RouterAuthorizationCheck) Check(c *gin.Context, udmContext udm_contex err := udmContext.AuthorizationCheck(token, rac.serviceName) if err != nil { - logger.UtilLog.Debugf("RouterAuthorizationCheck::Check Unauthorized: %s", err) + logger.UtilLog.Debugf("RouterAuthorizationCheck::Check Unauthorized: %s", err.Error()) c.JSON(http.StatusUnauthorized, gin.H{"error": err.Error()}) c.Abort() return From a67bfb8022716ab3305e3ebc1e7c236965880ea7 Mon Sep 17 00:00:00 2001 From: ubuntu Date: Wed, 17 Jan 2024 07:33:42 +0000 Subject: [PATCH 06/21] modify log in context.go --- internal/context/context.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/internal/context/context.go b/internal/context/context.go index 0c2463a..250ff38 100644 --- a/internal/context/context.go +++ b/internal/context/context.go @@ -505,7 +505,7 @@ func GetSelf() *UDMContext { func (context *UDMContext) AuthorizationCheck(token, serviceName string) error { if !context.OAuth2Required { - logger.UtilLog.Debugf("NSSFContext::AuthorizationCheck: OAuth2 not required\n") + logger.UtilLog.Debugf("UDMContext::AuthorizationCheck: OAuth2 not required\n") return nil } logger.UtilLog.Debugf("UDMContext::AuthorizationCheck: token[%s] serviceName[%s]\n", token, serviceName) From 8f540f7baf9964c2e6be5cb2b187e983540bf02e Mon Sep 17 00:00:00 2001 From: ubuntu Date: Wed, 17 Jan 2024 17:52:23 +0000 Subject: [PATCH 07/21] Add: 1. each const serviceName 2. each const nfType Modify: 1. getTokenCtx() argument --- internal/sbi/consumer/nf_discovery.go | 6 +++- internal/sbi/consumer/nf_management.go | 3 +- internal/sbi/eventexposure/routers.go | 3 +- internal/sbi/parameterprovision/routers.go | 3 +- internal/sbi/producer/callback/callback.go | 8 ++++-- internal/sbi/producer/generate_auth_data.go | 4 +-- internal/sbi/producer/parameter_provision.go | 4 ++- .../producer/subscriber_data_management.go | 28 +++++++++---------- .../sbi/producer/ue_context_management.go | 21 ++++++++------ .../sbi/subscriberdatamanagement/routers.go | 3 +- internal/sbi/ueauthentication/routers.go | 3 +- internal/sbi/uecontextmanagement/routers.go | 3 +- 12 files changed, 54 insertions(+), 35 deletions(-) diff --git a/internal/sbi/consumer/nf_discovery.go b/internal/sbi/consumer/nf_discovery.go index 66f1b03..bfa444c 100644 --- a/internal/sbi/consumer/nf_discovery.go +++ b/internal/sbi/consumer/nf_discovery.go @@ -18,6 +18,10 @@ const ( NFDiscoveryToUDRParamGpsi ) +const serviceNameNnrfDisc string = string(models.ServiceName_NNRF_DISC) +const serviceNameNnrfNfm string = string(models.ServiceName_NNRF_NFM) +const nfTypeNRF string = string(models.NfType_NRF) + func SendNFIntances(nrfUri string, targetNfType, requestNfType models.NfType, param Nnrf_NFDiscovery.SearchNFInstancesParamOpts, ) (result models.SearchResult, err error) { @@ -25,7 +29,7 @@ func SendNFIntances(nrfUri string, targetNfType, requestNfType models.NfType, configuration.SetBasePath(nrfUri) // addr clientNRF := Nnrf_NFDiscovery.NewAPIClient(configuration) - ctx, _, err := udm_context.GetSelf().GetTokenCtx("nnrf-disc", "NRF") + ctx, _, err := udm_context.GetSelf().GetTokenCtx(serviceNameNnrfDisc, nfTypeNRF) if err != nil { return } diff --git a/internal/sbi/consumer/nf_management.go b/internal/sbi/consumer/nf_management.go index b2371a2..418ac4a 100644 --- a/internal/sbi/consumer/nf_management.go +++ b/internal/sbi/consumer/nf_management.go @@ -95,8 +95,7 @@ func SendRegisterNFInstance(nrfUri, nfInstanceId string, profile models.NfProfil func SendDeregisterNFInstance() (problemDetails *models.ProblemDetails, err error) { logger.ConsumerLog.Infof("Send Deregister NFInstance") - - ctx, pd, err := udm_context.GetSelf().GetTokenCtx("nnrf-nfm", "NRF") + ctx, pd, err := udm_context.GetSelf().GetTokenCtx(serviceNameNnrfNfm, nfTypeNRF) if err != nil { return pd, err } diff --git a/internal/sbi/eventexposure/routers.go b/internal/sbi/eventexposure/routers.go index a92c997..bdc45a2 100644 --- a/internal/sbi/eventexposure/routers.go +++ b/internal/sbi/eventexposure/routers.go @@ -15,6 +15,7 @@ import ( "github.com/gin-gonic/gin" + "github.com/free5gc/openapi/models" udm_context "github.com/free5gc/udm/internal/context" "github.com/free5gc/udm/internal/logger" "github.com/free5gc/udm/internal/util" @@ -37,7 +38,7 @@ type Route struct { // Routes is the list of the generated Route. type Routes []Route -const serviceName string = "nudm-ee" +const serviceName string = string(models.ServiceName_NUDM_EE) // NewRouter returns a new router. func NewRouter() *gin.Engine { diff --git a/internal/sbi/parameterprovision/routers.go b/internal/sbi/parameterprovision/routers.go index 1e99d57..927a2c0 100644 --- a/internal/sbi/parameterprovision/routers.go +++ b/internal/sbi/parameterprovision/routers.go @@ -15,6 +15,7 @@ import ( "github.com/gin-gonic/gin" + "github.com/free5gc/openapi/models" udm_context "github.com/free5gc/udm/internal/context" "github.com/free5gc/udm/internal/logger" "github.com/free5gc/udm/internal/util" @@ -37,7 +38,7 @@ type Route struct { // Routes is the list of the generated Route. type Routes []Route -const serviceName string = "nudm-pp" +const serviceName string = string(models.ServiceName_NUDM_PP) // NewRouter returns a new router. func NewRouter() *gin.Engine { diff --git a/internal/sbi/producer/callback/callback.go b/internal/sbi/producer/callback/callback.go index 93a6b44..658b87a 100644 --- a/internal/sbi/producer/callback/callback.go +++ b/internal/sbi/producer/callback/callback.go @@ -10,8 +10,12 @@ import ( "github.com/free5gc/udm/internal/logger" ) +const serviceNameNudmSdm string = string(models.ServiceName_NUDM_SDM) +const serviceNameNudmUecm string = string(models.ServiceName_NUDM_UECM) +const nfTypeUDM string = string(models.NfType_UDM) + func DataChangeNotificationProcedure(notifyItems []models.NotifyItem, supi string) *models.ProblemDetails { - ctx, pd, err := udm_context.GetSelf().GetTokenCtx("nudm-sdm", "UDM") + ctx, pd, err := udm_context.GetSelf().GetTokenCtx(serviceNameNudmSdm, nfTypeUDM) if err != nil { return pd } @@ -58,7 +62,7 @@ func DataChangeNotificationProcedure(notifyItems []models.NotifyItem, supi strin func SendOnDeregistrationNotification(ueId string, onDeregistrationNotificationUrl string, deregistData models.DeregistrationData, ) *models.ProblemDetails { - ctx, pd, err := udm_context.GetSelf().GetTokenCtx("nudm-uecm", "UDM") + ctx, pd, err := udm_context.GetSelf().GetTokenCtx(serviceNameNudmUecm, nfTypeUDM) if err != nil { return pd } diff --git a/internal/sbi/producer/generate_auth_data.go b/internal/sbi/producer/generate_auth_data.go index 06b1467..ecffc50 100644 --- a/internal/sbi/producer/generate_auth_data.go +++ b/internal/sbi/producer/generate_auth_data.go @@ -118,7 +118,7 @@ func HandleConfirmAuthDataRequest(request *httpwrapper.Request) *httpwrapper.Res } func ConfirmAuthDataProcedure(authEvent models.AuthEvent, supi string) (problemDetails *models.ProblemDetails) { - ctx, pd, err := udm_context.GetSelf().GetTokenCtx("nudr-dr", "UDR") + ctx, pd, err := udm_context.GetSelf().GetTokenCtx(serviceNameNudrDr, nfTypeUDR) if err != nil { return pd } @@ -156,7 +156,7 @@ func ConfirmAuthDataProcedure(authEvent models.AuthEvent, supi string) (problemD func GenerateAuthDataProcedure(authInfoRequest models.AuthenticationInfoRequest, supiOrSuci string) ( response *models.AuthenticationInfoResult, problemDetails *models.ProblemDetails, ) { - ctx, pd, err := udm_context.GetSelf().GetTokenCtx("nudr-dr", "UDR") + ctx, pd, err := udm_context.GetSelf().GetTokenCtx(serviceNameNudrDr, nfTypeUDR) if err != nil { return nil, pd } diff --git a/internal/sbi/producer/parameter_provision.go b/internal/sbi/producer/parameter_provision.go index bfe3779..624f3f2 100644 --- a/internal/sbi/producer/parameter_provision.go +++ b/internal/sbi/producer/parameter_provision.go @@ -10,6 +10,8 @@ import ( "github.com/free5gc/util/httpwrapper" ) +//const serviceName string = string(models.ServiceName_NUDR_DR) + func HandleUpdateRequest(request *httpwrapper.Request) *httpwrapper.Response { // step 1: log logger.PpLog.Infoln("Handle UpdateRequest") @@ -30,7 +32,7 @@ func HandleUpdateRequest(request *httpwrapper.Request) *httpwrapper.Response { } func UpdateProcedure(updateRequest models.PpData, gpsi string) (problemDetails *models.ProblemDetails) { - ctx, pd, err := udm_context.GetSelf().GetTokenCtx("nudr-dr", "UDR") + ctx, pd, err := udm_context.GetSelf().GetTokenCtx(serviceNameNudrDr, nfTypeUDR) if err != nil { return pd } diff --git a/internal/sbi/producer/subscriber_data_management.go b/internal/sbi/producer/subscriber_data_management.go index 307586a..b6736ee 100644 --- a/internal/sbi/producer/subscriber_data_management.go +++ b/internal/sbi/producer/subscriber_data_management.go @@ -54,7 +54,7 @@ func HandleGetAmDataRequest(request *httpwrapper.Request) *httpwrapper.Response func getAmDataProcedure(supi string, plmnID string, supportedFeatures string) ( response *models.AccessAndMobilitySubscriptionData, problemDetails *models.ProblemDetails, ) { - ctx, pd, err := udm_context.GetSelf().GetTokenCtx("nudr-dr", "UDR") + ctx, pd, err := udm_context.GetSelf().GetTokenCtx(serviceNameNudrDr, nfTypeUDR) if err != nil { return nil, pd } @@ -135,7 +135,7 @@ func HandleGetIdTranslationResultRequest(request *httpwrapper.Request) *httpwrap func getIdTranslationResultProcedure(gpsi string) (response *models.IdTranslationResult, problemDetails *models.ProblemDetails, ) { - ctx, pd, err := udm_context.GetSelf().GetTokenCtx("nudr-dr", "UDR") + ctx, pd, err := udm_context.GetSelf().GetTokenCtx(serviceNameNudrDr, nfTypeUDR) if err != nil { return nil, pd } @@ -233,7 +233,7 @@ func HandleGetSupiRequest(request *httpwrapper.Request) *httpwrapper.Response { func getSupiProcedure(supi string, plmnID string, dataSetNames []string, supportedFeatures string) ( response *models.SubscriptionDataSets, problemDetails *models.ProblemDetails, ) { - ctx, pd, err := udm_context.GetSelf().GetTokenCtx("nudr-dr", "UDR") + ctx, pd, err := udm_context.GetSelf().GetTokenCtx(serviceNameNudrDr, nfTypeUDR) if err != nil { return nil, pd } @@ -547,7 +547,7 @@ func HandleGetSharedDataRequest(request *httpwrapper.Request) *httpwrapper.Respo func getSharedDataProcedure(sharedDataIds []string, supportedFeatures string) ( response []models.SharedData, problemDetails *models.ProblemDetails, ) { - ctx, pd, err := udm_context.GetSelf().GetTokenCtx("nudr-dr", "UDR") + ctx, pd, err := udm_context.GetSelf().GetTokenCtx(serviceNameNudrDr, nfTypeUDR) if err != nil { return nil, pd } @@ -635,7 +635,7 @@ func HandleGetSmDataRequest(request *httpwrapper.Request) *httpwrapper.Response func getSmDataProcedure(supi string, plmnID string, Dnn string, Snssai string, supportedFeatures string) ( response interface{}, problemDetails *models.ProblemDetails, ) { - ctx, pd, err := udm_context.GetSelf().GetTokenCtx("nudr-dr", "UDR") + ctx, pd, err := udm_context.GetSelf().GetTokenCtx(serviceNameNudrDr, nfTypeUDR) if err != nil { return nil, pd } @@ -753,7 +753,7 @@ func HandleGetNssaiRequest(request *httpwrapper.Request) *httpwrapper.Response { func getNssaiProcedure(supi string, plmnID string, supportedFeatures string) ( *models.Nssai, *models.ProblemDetails, ) { - ctx, pd, err := udm_context.GetSelf().GetTokenCtx("nudr-dr", "UDR") + ctx, pd, err := udm_context.GetSelf().GetTokenCtx(serviceNameNudrDr, nfTypeUDR) if err != nil { return nil, pd } @@ -844,7 +844,7 @@ func HandleGetSmfSelectDataRequest(request *httpwrapper.Request) *httpwrapper.Re func getSmfSelectDataProcedure(supi string, plmnID string, supportedFeatures string) ( response *models.SmfSelectionSubscriptionData, problemDetails *models.ProblemDetails, ) { - ctx, pd, err := udm_context.GetSelf().GetTokenCtx("nudr-dr", "UDR") + ctx, pd, err := udm_context.GetSelf().GetTokenCtx(serviceNameNudrDr, nfTypeUDR) if err != nil { return nil, pd } @@ -927,7 +927,7 @@ func HandleSubscribeToSharedDataRequest(request *httpwrapper.Request) *httpwrapp func subscribeToSharedDataProcedure(sdmSubscription *models.SdmSubscription) ( header http.Header, response *models.SdmSubscription, problemDetails *models.ProblemDetails, ) { - ctx, pd, err := udm_context.GetSelf().GetTokenCtx("nudm-sdm", "UDM") + ctx, pd, err := udm_context.GetSelf().GetTokenCtx(serviceNameNudmSdm, nfTypeUDM) if err != nil { return nil, nil, pd } @@ -1008,7 +1008,7 @@ func HandleSubscribeRequest(request *httpwrapper.Request) *httpwrapper.Response func subscribeProcedure(sdmSubscription *models.SdmSubscription, supi string) ( header http.Header, response *models.SdmSubscription, problemDetails *models.ProblemDetails, ) { - ctx, pd, err := udm_context.GetSelf().GetTokenCtx("nudr-dr", "UDR") + ctx, pd, err := udm_context.GetSelf().GetTokenCtx(serviceNameNudrDr, nfTypeUDR) if err != nil { return nil, nil, pd } @@ -1085,7 +1085,7 @@ func HandleUnsubscribeForSharedDataRequest(request *httpwrapper.Request) *httpwr // TS 29.503 5.2.2.4.3 // Unsubscribe to notifications of data change func unsubscribeForSharedDataProcedure(subscriptionID string) *models.ProblemDetails { - ctx, pd, err := udm_context.GetSelf().GetTokenCtx("nudm-sdm", "UDM") + ctx, pd, err := udm_context.GetSelf().GetTokenCtx(serviceNameNudmSdm, nfTypeUDM) if err != nil { return pd } @@ -1149,7 +1149,7 @@ func HandleUnsubscribeRequest(request *httpwrapper.Request) *httpwrapper.Respons // TS 29.503 5.2.2.4.2 // Unsubscribe to notifications of data change func unsubscribeProcedure(supi string, subscriptionID string) *models.ProblemDetails { - ctx, pd, err := udm_context.GetSelf().GetTokenCtx("nudr-dr", "UDR") + ctx, pd, err := udm_context.GetSelf().GetTokenCtx(serviceNameNudrDr, nfTypeUDR) if err != nil { return pd } @@ -1223,7 +1223,7 @@ func HandleModifyRequest(request *httpwrapper.Request) *httpwrapper.Response { func modifyProcedure(sdmSubsModification *models.SdmSubsModification, supi string, subscriptionID string) ( response *models.SdmSubscription, problemDetails *models.ProblemDetails, ) { - ctx, pd, err := udm_context.GetSelf().GetTokenCtx("nudr-dr", "UDR") + ctx, pd, err := udm_context.GetSelf().GetTokenCtx(serviceNameNudrDr, nfTypeUDR) if err != nil { return nil, pd } @@ -1303,7 +1303,7 @@ func HandleModifyForSharedDataRequest(request *httpwrapper.Request) *httpwrapper func modifyForSharedDataProcedure(sdmSubsModification *models.SdmSubsModification, supi string, subscriptionID string, ) (response *models.SdmSubscription, problemDetails *models.ProblemDetails) { - ctx, pd, err := udm_context.GetSelf().GetTokenCtx("nudr-dr", "UDR") + ctx, pd, err := udm_context.GetSelf().GetTokenCtx(serviceNameNudrDr, nfTypeUDR) if err != nil { return nil, pd } @@ -1382,7 +1382,7 @@ func HandleGetTraceDataRequest(request *httpwrapper.Request) *httpwrapper.Respon func getTraceDataProcedure(supi string, plmnID string) ( response *models.TraceData, problemDetails *models.ProblemDetails, ) { - ctx, pd, err := udm_context.GetSelf().GetTokenCtx("nudr-dr", "UDR") + ctx, pd, err := udm_context.GetSelf().GetTokenCtx(serviceNameNudrDr, nfTypeUDR) if err != nil { return nil, pd } diff --git a/internal/sbi/producer/ue_context_management.go b/internal/sbi/producer/ue_context_management.go index 59066cf..e428f19 100644 --- a/internal/sbi/producer/ue_context_management.go +++ b/internal/sbi/producer/ue_context_management.go @@ -18,6 +18,11 @@ import ( "github.com/free5gc/util/httpwrapper" ) +const serviceNameNudrDr string = string(models.ServiceName_NUDR_DR) +const serviceNameNudmSdm string = string(models.ServiceName_NUDM_SDM) +const nfTypeUDR string = string(models.NfType_UDR) +const nfTypeUDM string = string(models.NfType_UDM) + func createUDMClientToUDR(id string) (*Nudr_DataRepository.APIClient, error) { uri := getUdrURI(id) if uri == "" { @@ -101,7 +106,7 @@ func HandleGetAmf3gppAccessRequest(request *httpwrapper.Request) *httpwrapper.Re func GetAmf3gppAccessProcedure(ueID string, supportedFeatures string) ( response *models.Amf3GppAccessRegistration, problemDetails *models.ProblemDetails, ) { - ctx, pd, err := udm_context.GetSelf().GetTokenCtx("nudr-dr", "UDR") + ctx, pd, err := udm_context.GetSelf().GetTokenCtx(serviceNameNudrDr, nfTypeUDM) if err != nil { return nil, pd } @@ -165,7 +170,7 @@ func GetAmfNon3gppAccessProcedure(queryAmfContextNon3gppParamOpts Nudr_DataRepos QueryAmfContextNon3gppParamOpts, ueID string) (response *models.AmfNon3GppAccessRegistration, problemDetails *models.ProblemDetails, ) { - ctx, pd, err := udm_context.GetSelf().GetTokenCtx("nudr-dr", "UDR") + ctx, pd, err := udm_context.GetSelf().GetTokenCtx(serviceNameNudrDr, nfTypeUDM) if err != nil { return nil, pd } @@ -225,7 +230,7 @@ func HandleRegistrationAmf3gppAccessRequest(request *httpwrapper.Request) *httpw func RegistrationAmf3gppAccessProcedure(registerRequest models.Amf3GppAccessRegistration, ueID string) ( header http.Header, response *models.Amf3GppAccessRegistration, problemDetails *models.ProblemDetails, ) { - ctx, pd, err := udm_context.GetSelf().GetTokenCtx("nudr-dr", "UDR") + ctx, pd, err := udm_context.GetSelf().GetTokenCtx(serviceNameNudrDr, nfTypeUDM) if err != nil { return nil, nil, pd } @@ -326,7 +331,7 @@ func HandleRegisterAmfNon3gppAccessRequest(request *httpwrapper.Request) *httpwr func RegisterAmfNon3gppAccessProcedure(registerRequest models.AmfNon3GppAccessRegistration, ueID string) ( header http.Header, response *models.AmfNon3GppAccessRegistration, problemDetails *models.ProblemDetails, ) { - ctx, pd, err := udm_context.GetSelf().GetTokenCtx("nudr-dr", "UDR") + ctx, pd, err := udm_context.GetSelf().GetTokenCtx(serviceNameNudrDr, nfTypeUDM) if err != nil { return nil, nil, pd } @@ -406,7 +411,7 @@ func HandleUpdateAmf3gppAccessRequest(request *httpwrapper.Request) *httpwrapper func UpdateAmf3gppAccessProcedure(request models.Amf3GppAccessRegistrationModification, ueID string) ( problemDetails *models.ProblemDetails, ) { - ctx, pd, err := udm_context.GetSelf().GetTokenCtx("nudr-dr", "UDR") + ctx, pd, err := udm_context.GetSelf().GetTokenCtx(serviceNameNudrDr, nfTypeUDM) if err != nil { return pd } @@ -530,7 +535,7 @@ func HandleUpdateAmfNon3gppAccessRequest(request *httpwrapper.Request) *httpwrap func UpdateAmfNon3gppAccessProcedure(request models.AmfNon3GppAccessRegistrationModification, ueID string) ( problemDetails *models.ProblemDetails, ) { - ctx, pd, err := udm_context.GetSelf().GetTokenCtx("nudr-dr", "UDR") + ctx, pd, err := udm_context.GetSelf().GetTokenCtx(serviceNameNudrDr, nfTypeUDM) if err != nil { return pd } @@ -643,7 +648,7 @@ func HandleDeregistrationSmfRegistrations(request *httpwrapper.Request) *httpwra } func DeregistrationSmfRegistrationsProcedure(ueID string, pduSessionID string) (problemDetails *models.ProblemDetails) { - ctx, pd, err := udm_context.GetSelf().GetTokenCtx("nudr-dr", "UDR") + ctx, pd, err := udm_context.GetSelf().GetTokenCtx(serviceNameNudrDr, nfTypeUDM) if err != nil { return pd } @@ -700,7 +705,7 @@ func HandleRegistrationSmfRegistrationsRequest(request *httpwrapper.Request) *ht func RegistrationSmfRegistrationsProcedure(request *models.SmfRegistration, ueID string, pduSessionID string) ( header http.Header, response *models.SmfRegistration, problemDetails *models.ProblemDetails, ) { - ctx, pd, err := udm_context.GetSelf().GetTokenCtx("nudr-dr", "UDR") + ctx, pd, err := udm_context.GetSelf().GetTokenCtx(serviceNameNudrDr, nfTypeUDM) if err != nil { return nil, nil, pd } diff --git a/internal/sbi/subscriberdatamanagement/routers.go b/internal/sbi/subscriberdatamanagement/routers.go index 6600d17..c23b759 100644 --- a/internal/sbi/subscriberdatamanagement/routers.go +++ b/internal/sbi/subscriberdatamanagement/routers.go @@ -15,6 +15,7 @@ import ( "github.com/gin-gonic/gin" + "github.com/free5gc/openapi/models" udm_context "github.com/free5gc/udm/internal/context" "github.com/free5gc/udm/internal/logger" "github.com/free5gc/udm/internal/util" @@ -37,7 +38,7 @@ type Route struct { // Routes is the list of the generated Route. type Routes []Route -const serviceName string = "nudm-sdm" +const serviceName string = string(models.ServiceName_NUDM_SDM) // NewRouter returns a new router. func NewRouter() *gin.Engine { diff --git a/internal/sbi/ueauthentication/routers.go b/internal/sbi/ueauthentication/routers.go index 2b77b5a..e99cb9f 100644 --- a/internal/sbi/ueauthentication/routers.go +++ b/internal/sbi/ueauthentication/routers.go @@ -16,6 +16,7 @@ import ( "github.com/gin-gonic/gin" "github.com/sirupsen/logrus" + "github.com/free5gc/openapi/models" udm_context "github.com/free5gc/udm/internal/context" "github.com/free5gc/udm/internal/logger" "github.com/free5gc/udm/internal/util" @@ -44,7 +45,7 @@ type Route struct { // Routes is the list of the generated Route. type Routes []Route -const serviceName string = "nudm-ueau" +const serviceName string = string(models.ServiceName_NUDM_UEAU) // NewRouter returns a new router. func NewRouter() *gin.Engine { diff --git a/internal/sbi/uecontextmanagement/routers.go b/internal/sbi/uecontextmanagement/routers.go index b8487d4..24fd672 100644 --- a/internal/sbi/uecontextmanagement/routers.go +++ b/internal/sbi/uecontextmanagement/routers.go @@ -15,6 +15,7 @@ import ( "github.com/gin-gonic/gin" + "github.com/free5gc/openapi/models" udm_context "github.com/free5gc/udm/internal/context" "github.com/free5gc/udm/internal/logger" "github.com/free5gc/udm/internal/util" @@ -37,7 +38,7 @@ type Route struct { // Routes is the list of the generated Route. type Routes []Route -const serviceName string = "nudm-uecm" +const serviceName string = string(models.ServiceName_NUDM_UECM) // NewRouter returns a new router. func NewRouter() *gin.Engine { From 40eff554a882391f3ff7ca7aa46fcceb2b2ac463 Mon Sep 17 00:00:00 2001 From: James Wu Date: Mon, 22 Jan 2024 22:19:27 +0800 Subject: [PATCH 08/21] rm: annotation --- internal/sbi/producer/callback/callback.go | 5 +--- internal/sbi/producer/generate_auth_data.go | 4 +-- internal/sbi/producer/parameter_provision.go | 1 - .../producer/subscriber_data_management.go | 29 ++----------------- .../sbi/producer/ue_context_management.go | 14 +-------- 5 files changed, 5 insertions(+), 48 deletions(-) diff --git a/internal/sbi/producer/callback/callback.go b/internal/sbi/producer/callback/callback.go index 658b87a..92e4d36 100644 --- a/internal/sbi/producer/callback/callback.go +++ b/internal/sbi/producer/callback/callback.go @@ -29,8 +29,7 @@ func DataChangeNotificationProcedure(notifyItems []models.NotifyItem, supi strin onDataChangeNotificationurl := subscriptionDataSubscription.OriginalCallbackReference dataChangeNotification := models.ModificationNotification{} dataChangeNotification.NotifyItems = notifyItems - //httpResponse, err := clientAPI.DataChangeNotificationCallbackDocumentApi.OnDataChangeNotification( - // context.TODO(), onDataChangeNotificationurl, dataChangeNotification) + httpResponse, err := clientAPI.DataChangeNotificationCallbackDocumentApi.OnDataChangeNotification( ctx, onDataChangeNotificationurl, dataChangeNotification) if err != nil { @@ -69,8 +68,6 @@ func SendOnDeregistrationNotification(ueId string, onDeregistrationNotificationU configuration := Nudm_UEContextManagement.NewConfiguration() clientAPI := Nudm_UEContextManagement.NewAPIClient(configuration) - // httpResponse, err := clientAPI.DeregistrationNotificationCallbackApi.DeregistrationNotify( - // context.TODO(), onDeregistrationNotificationUrl, deregistData) httpResponse, err := clientAPI.DeregistrationNotificationCallbackApi.DeregistrationNotify( ctx, onDeregistrationNotificationUrl, deregistData) if err != nil { diff --git a/internal/sbi/producer/generate_auth_data.go b/internal/sbi/producer/generate_auth_data.go index ecffc50..133ba36 100644 --- a/internal/sbi/producer/generate_auth_data.go +++ b/internal/sbi/producer/generate_auth_data.go @@ -130,8 +130,7 @@ func ConfirmAuthDataProcedure(authEvent models.AuthEvent, supi string) (problemD if err != nil { return openapi.ProblemDetailsSystemFailure(err.Error()) } - // resp, err := client.AuthenticationStatusDocumentApi.CreateAuthenticationStatus( - // context.Background(), supi, &createAuthParam) + resp, err := client.AuthenticationStatusDocumentApi.CreateAuthenticationStatus( ctx, supi, &createAuthParam) if err != nil { @@ -182,7 +181,6 @@ func GenerateAuthDataProcedure(authInfoRequest models.AuthenticationInfoRequest, if err != nil { return nil, openapi.ProblemDetailsSystemFailure(err.Error()) } - // authSubs, res, err := client.AuthenticationDataDocumentApi.QueryAuthSubsData(context.Background(), supi, nil) authSubs, res, err := client.AuthenticationDataDocumentApi.QueryAuthSubsData(ctx, supi, nil) if err != nil { problemDetails = &models.ProblemDetails{ diff --git a/internal/sbi/producer/parameter_provision.go b/internal/sbi/producer/parameter_provision.go index 624f3f2..8308be5 100644 --- a/internal/sbi/producer/parameter_provision.go +++ b/internal/sbi/producer/parameter_provision.go @@ -40,7 +40,6 @@ func UpdateProcedure(updateRequest models.PpData, gpsi string) (problemDetails * if err != nil { return openapi.ProblemDetailsSystemFailure(err.Error()) } - // res, err := clientAPI.ProvisionedParameterDataDocumentApi.ModifyPpData(context.Background(), gpsi, nil) res, err := clientAPI.ProvisionedParameterDataDocumentApi.ModifyPpData(ctx, gpsi, nil) if err != nil { problemDetails = &models.ProblemDetails{ diff --git a/internal/sbi/producer/subscriber_data_management.go b/internal/sbi/producer/subscriber_data_management.go index b6736ee..f8c17d1 100644 --- a/internal/sbi/producer/subscriber_data_management.go +++ b/internal/sbi/producer/subscriber_data_management.go @@ -66,8 +66,6 @@ func getAmDataProcedure(supi string, plmnID string, supportedFeatures string) ( return nil, openapi.ProblemDetailsSystemFailure(err.Error()) } - // accessAndMobilitySubscriptionDataResp, res, err := clientAPI.AccessAndMobilitySubscriptionDataDocumentApi. - // QueryAmData(context.Background(), supi, plmnID, &queryAmDataParamOpts) accessAndMobilitySubscriptionDataResp, res, err := clientAPI.AccessAndMobilitySubscriptionDataDocumentApi. QueryAmData(ctx, supi, plmnID, &queryAmDataParamOpts) if err != nil { @@ -147,8 +145,6 @@ func getIdTranslationResultProcedure(gpsi string) (response *models.IdTranslatio return nil, openapi.ProblemDetailsSystemFailure(err.Error()) } - // idTranslationResultResp, res, err := clientAPI.QueryIdentityDataBySUPIOrGPSIDocumentApi.GetIdentityData( - // context.Background(), gpsi, &getIdentityDataParamOpts) idTranslationResultResp, res, err := clientAPI.QueryIdentityDataBySUPIOrGPSIDocumentApi.GetIdentityData( ctx, gpsi, &getIdentityDataParamOpts) if err != nil { @@ -269,8 +265,7 @@ func getSupiProcedure(supi string, plmnID string, dataSetNames []string, support if containDataSetName(dataSetNames, string(models.DataSetName_AM)) { var body models.AccessAndMobilitySubscriptionData udm_context.GetSelf().CreateAccessMobilitySubsDataForUe(supi, body) - // amData, res, err := clientAPI.AccessAndMobilitySubscriptionDataDocumentApi.QueryAmData( - // context.Background(), supi, plmnID, &queryAmDataParamOpts) + amData, res, err := clientAPI.AccessAndMobilitySubscriptionDataDocumentApi.QueryAmData( ctx, supi, plmnID, &queryAmDataParamOpts) if err != nil { @@ -559,8 +554,6 @@ func getSharedDataProcedure(sharedDataIds []string, supportedFeatures string) ( var getSharedDataParamOpts Nudr.GetSharedDataParamOpts getSharedDataParamOpts.SupportedFeatures = optional.NewString(supportedFeatures) - // sharedDataResp, res, err := clientAPI.RetrievalOfSharedDataApi.GetSharedData(context.Background(), sharedDataIds, - // &getSharedDataParamOpts) sharedDataResp, res, err := clientAPI.RetrievalOfSharedDataApi.GetSharedData(ctx, sharedDataIds, &getSharedDataParamOpts) if err != nil { @@ -649,8 +642,6 @@ func getSmDataProcedure(supi string, plmnID string, Dnn string, Snssai string, s var querySmDataParamOpts Nudr.QuerySmDataParamOpts querySmDataParamOpts.SingleNssai = optional.NewInterface(Snssai) - // sessionManagementSubscriptionDataResp, res, err := clientAPI.SessionManagementSubscriptionDataApi. - // QuerySmData(context.Background(), supi, plmnID, &querySmDataParamOpts) sessionManagementSubscriptionDataResp, res, err := clientAPI.SessionManagementSubscriptionDataApi. QuerySmData(ctx, supi, plmnID, &querySmDataParamOpts) if err != nil { @@ -765,8 +756,6 @@ func getNssaiProcedure(supi string, plmnID string, supportedFeatures string) ( return nil, openapi.ProblemDetailsSystemFailure(err.Error()) } - // accessAndMobilitySubscriptionDataResp, res, err := clientAPI.AccessAndMobilitySubscriptionDataDocumentApi. - // QueryAmData(context.Background(), supi, plmnID, &queryAmDataParamOpts) accessAndMobilitySubscriptionDataResp, res, err := clientAPI.AccessAndMobilitySubscriptionDataDocumentApi. QueryAmData(ctx, supi, plmnID, &queryAmDataParamOpts) if err != nil { @@ -859,8 +848,6 @@ func getSmfSelectDataProcedure(supi string, plmnID string, supportedFeatures str udm_context.GetSelf().CreateSmfSelectionSubsDataforUe(supi, body) - // smfSelectionSubscriptionDataResp, res, err := clientAPI.SMFSelectionSubscriptionDataDocumentApi. - // QuerySmfSelectData(context.Background(), supi, plmnID, &querySmfSelectDataParamOpts) smfSelectionSubscriptionDataResp, res, err := clientAPI.SMFSelectionSubscriptionDataDocumentApi. QuerySmfSelectData(ctx, supi, plmnID, &querySmfSelectDataParamOpts) if err != nil { @@ -934,8 +921,6 @@ func subscribeToSharedDataProcedure(sdmSubscription *models.SdmSubscription) ( cfg := Nudm_SubscriberDataManagement.NewConfiguration() udmClientAPI := Nudm_SubscriberDataManagement.NewAPIClient(cfg) - // sdmSubscriptionResp, res, err := udmClientAPI.SubscriptionCreationForSharedDataApi.SubscribeToSharedData( - // context.Background(), *sdmSubscription) sdmSubscriptionResp, res, err := udmClientAPI.SubscriptionCreationForSharedDataApi.SubscribeToSharedData( ctx, *sdmSubscription) if err != nil { @@ -1017,8 +1002,6 @@ func subscribeProcedure(sdmSubscription *models.SdmSubscription, supi string) ( return nil, nil, openapi.ProblemDetailsSystemFailure(err.Error()) } - // sdmSubscriptionResp, res, err := clientAPI.SDMSubscriptionsCollectionApi.CreateSdmSubscriptions( - // context.Background(), supi, *sdmSubscription) sdmSubscriptionResp, res, err := clientAPI.SDMSubscriptionsCollectionApi.CreateSdmSubscriptions( ctx, supi, *sdmSubscription) if err != nil { @@ -1092,8 +1075,6 @@ func unsubscribeForSharedDataProcedure(subscriptionID string) *models.ProblemDet cfg := Nudm_SubscriberDataManagement.NewConfiguration() udmClientAPI := Nudm_SubscriberDataManagement.NewAPIClient(cfg) - // res, err := udmClientAPI.SubscriptionDeletionForSharedDataApi.UnsubscribeForSharedData( - // context.Background(), subscriptionID) res, err := udmClientAPI.SubscriptionDeletionForSharedDataApi.UnsubscribeForSharedData( ctx, subscriptionID) if err != nil { @@ -1158,7 +1139,6 @@ func unsubscribeProcedure(supi string, subscriptionID string) *models.ProblemDet return openapi.ProblemDetailsSystemFailure(err.Error()) } - // res, err := clientAPI.SDMSubscriptionDocumentApi.RemovesdmSubscriptions(context.Background(), supi, subscriptionID) res, err := clientAPI.SDMSubscriptionDocumentApi.RemovesdmSubscriptions(ctx, supi, subscriptionID) if err != nil { if res == nil { @@ -1236,8 +1216,7 @@ func modifyProcedure(sdmSubsModification *models.SdmSubsModification, supi strin body := Nudr.UpdatesdmsubscriptionsParamOpts{ SdmSubscription: optional.NewInterface(sdmSubscription), } - // res, err := clientAPI.SDMSubscriptionDocumentApi.Updatesdmsubscriptions( - // context.Background(), supi, subscriptionID, &body) + res, err := clientAPI.SDMSubscriptionDocumentApi.Updatesdmsubscriptions( ctx, supi, subscriptionID, &body) if err != nil { @@ -1318,8 +1297,6 @@ func modifyForSharedDataProcedure(sdmSubsModification *models.SdmSubsModificatio SdmSubscription: optional.NewInterface(sdmSubs), } - // res, err := clientAPI.SDMSubscriptionDocumentApi.Updatesdmsubscriptions( - // context.Background(), supi, subscriptionID, &body) res, err := clientAPI.SDMSubscriptionDocumentApi.Updatesdmsubscriptions( ctx, supi, subscriptionID, &body) if err != nil { @@ -1396,8 +1373,6 @@ func getTraceDataProcedure(supi string, plmnID string) ( udm_context.GetSelf().CreateTraceDataforUe(supi, body) - // traceDataRes, res, err := clientAPI.TraceDataDocumentApi.QueryTraceData( - // context.Background(), supi, plmnID, &queryTraceDataParamOpts) traceDataRes, res, err := clientAPI.TraceDataDocumentApi.QueryTraceData( ctx, supi, plmnID, &queryTraceDataParamOpts) if err != nil { diff --git a/internal/sbi/producer/ue_context_management.go b/internal/sbi/producer/ue_context_management.go index e428f19..2775f03 100644 --- a/internal/sbi/producer/ue_context_management.go +++ b/internal/sbi/producer/ue_context_management.go @@ -118,8 +118,6 @@ func GetAmf3gppAccessProcedure(ueID string, supportedFeatures string) ( return nil, openapi.ProblemDetailsSystemFailure(err.Error()) } - //amf3GppAccessRegistration, resp, err := clientAPI.AMF3GPPAccessRegistrationDocumentApi. - //QueryAmfContext3gpp(context.Background(), ueID, &queryAmfContext3gppParamOpts) amf3GppAccessRegistration, resp, err := clientAPI.AMF3GPPAccessRegistrationDocumentApi. QueryAmfContext3gpp(ctx, ueID, &queryAmfContext3gppParamOpts) if err != nil { @@ -179,8 +177,6 @@ func GetAmfNon3gppAccessProcedure(queryAmfContextNon3gppParamOpts Nudr_DataRepos return nil, openapi.ProblemDetailsSystemFailure(err.Error()) } - // amfNon3GppAccessRegistration, resp, err := clientAPI.AMFNon3GPPAccessRegistrationDocumentApi. - // QueryAmfContextNon3gpp(context.Background(), ueID, &queryAmfContextNon3gppParamOpts) amfNon3GppAccessRegistration, resp, err := clientAPI.AMFNon3GPPAccessRegistrationDocumentApi. QueryAmfContextNon3gpp(ctx, ueID, &queryAmfContextNon3gppParamOpts) if err != nil { @@ -351,8 +347,7 @@ func RegisterAmfNon3gppAccessProcedure(registerRequest models.AmfNon3GppAccessRe var createAmfContextNon3gppParamOpts Nudr_DataRepository.CreateAmfContextNon3gppParamOpts optInterface := optional.NewInterface(registerRequest) createAmfContextNon3gppParamOpts.AmfNon3GppAccessRegistration = optInterface - // resp, err := clientAPI.AMFNon3GPPAccessRegistrationDocumentApi.CreateAmfContextNon3gpp( - // context.Background(), ueID, &createAmfContextNon3gppParamOpts) + resp, err := clientAPI.AMFNon3GPPAccessRegistrationDocumentApi.CreateAmfContextNon3gpp( ctx, ueID, &createAmfContextNon3gppParamOpts) if err != nil { @@ -484,8 +479,6 @@ func UpdateAmf3gppAccessProcedure(request models.Amf3GppAccessRegistrationModifi return openapi.ProblemDetailsSystemFailure(err.Error()) } - // resp, err := clientAPI.AMF3GPPAccessRegistrationDocumentApi.AmfContext3gpp(context.Background(), ueID, - // patchItemReqArray) resp, err := clientAPI.AMF3GPPAccessRegistrationDocumentApi.AmfContext3gpp(ctx, ueID, patchItemReqArray) if err != nil { @@ -607,8 +600,6 @@ func UpdateAmfNon3gppAccessProcedure(request models.AmfNon3GppAccessRegistration return openapi.ProblemDetailsSystemFailure(err.Error()) } - // resp, err := clientAPI.AMFNon3GPPAccessRegistrationDocumentApi.AmfContextNon3gpp(context.Background(), - // ueID, patchItemReqArray) resp, err := clientAPI.AMFNon3GPPAccessRegistrationDocumentApi.AmfContextNon3gpp(ctx, ueID, patchItemReqArray) if err != nil { @@ -657,7 +648,6 @@ func DeregistrationSmfRegistrationsProcedure(ueID string, pduSessionID string) ( return openapi.ProblemDetailsSystemFailure(err.Error()) } - // resp, err := clientAPI.SMFRegistrationDocumentApi.DeleteSmfContext(context.Background(), ueID, pduSessionID) resp, err := clientAPI.SMFRegistrationDocumentApi.DeleteSmfContext(ctx, ueID, pduSessionID) if err != nil { problemDetails = &models.ProblemDetails{ @@ -730,8 +720,6 @@ func RegistrationSmfRegistrationsProcedure(request *models.SmfRegistration, ueID return nil, nil, openapi.ProblemDetailsSystemFailure(err.Error()) } - // resp, err := clientAPI.SMFRegistrationDocumentApi.CreateSmfContextNon3gpp(context.Background(), ueID, - // pduID32, &createSmfContextNon3gppParamOpts) resp, err := clientAPI.SMFRegistrationDocumentApi.CreateSmfContextNon3gpp(ctx, ueID, pduID32, &createSmfContextNon3gppParamOpts) if err != nil { From 3c6eb62b6b020d28620c7a95b114581eff268cc7 Mon Sep 17 00:00:00 2001 From: James Wu Date: Mon, 22 Jan 2024 22:25:59 +0800 Subject: [PATCH 09/21] update openapi --- go.mod | 4 ++-- go.sum | 4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/go.mod b/go.mod index a448769..d4379c4 100644 --- a/go.mod +++ b/go.mod @@ -5,10 +5,11 @@ go 1.17 require ( github.com/antihax/optional v1.0.0 github.com/asaskevich/govalidator v0.0.0-20210307081110-f21760c49a8d - github.com/free5gc/openapi v1.0.7-0.20231216094313-e15a4ff046f6 + github.com/free5gc/openapi v1.0.7-0.20240117084712-52ad99299693 github.com/free5gc/util v1.0.5-0.20231001095115-433858e5be94 github.com/gin-gonic/gin v1.9.1 github.com/google/uuid v1.3.0 + github.com/pkg/errors v0.9.1 github.com/sirupsen/logrus v1.8.1 github.com/urfave/cli v1.22.5 golang.org/x/crypto v0.17.0 @@ -37,7 +38,6 @@ require ( github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd // indirect github.com/modern-go/reflect2 v1.0.2 // indirect github.com/pelletier/go-toml/v2 v2.0.8 // indirect - github.com/pkg/errors v0.9.1 // indirect github.com/russross/blackfriday/v2 v2.1.0 // indirect github.com/tim-ywliu/nested-logrus-formatter v1.3.2 // indirect github.com/twitchyliquid64/golang-asm v0.15.1 // indirect diff --git a/go.sum b/go.sum index fc6039d..85b44b7 100644 --- a/go.sum +++ b/go.sum @@ -60,8 +60,8 @@ github.com/envoyproxy/go-control-plane v0.9.1-0.20191026205805-5f8ba28d4473/go.m github.com/envoyproxy/go-control-plane v0.9.4/go.mod h1:6rpuAdCZL397s3pYoYcLgu1mIlRU8Am5FuJP05cCM98= github.com/envoyproxy/protoc-gen-validate v0.1.0/go.mod h1:iSmxcyjqTsJpI2R4NaDN7+kN2VEUnK/pcBlmesArF7c= github.com/evanphx/json-patch v0.5.2/go.mod h1:ZWS5hhDbVDyob71nXKNL0+PWn6ToqBHMikGIFbs31qQ= -github.com/free5gc/openapi v1.0.7-0.20231216094313-e15a4ff046f6 h1:8P/wOkTAQMgZJe9pUUNSTE5PWeAdlMrsU9kLsI+VAVE= -github.com/free5gc/openapi v1.0.7-0.20231216094313-e15a4ff046f6/go.mod h1:qv9KqEucoZSeENPRFGxfTe+33ZWYyiYFx1Rj+H0DoWA= +github.com/free5gc/openapi v1.0.7-0.20240117084712-52ad99299693 h1:gFyYBsErQAkx4OVHXYqjO0efO9gPWydQavQcjU0CkHY= +github.com/free5gc/openapi v1.0.7-0.20240117084712-52ad99299693/go.mod h1:qv9KqEucoZSeENPRFGxfTe+33ZWYyiYFx1Rj+H0DoWA= github.com/free5gc/util v1.0.5-0.20231001095115-433858e5be94 h1:tNylIqH/m5Kq+3KuC+jjXGl06Y6EmM8yq61ZUgNrPBY= github.com/free5gc/util v1.0.5-0.20231001095115-433858e5be94/go.mod h1:aMszJZbCkcg5xaGgzya+55jz+OPMsJqPLq5Z3fWDFPE= github.com/gabriel-vasile/mimetype v1.4.2 h1:w5qFW6JKBz9Y393Y4q372O9A7cUSequkh1Q7OhCmWKU= From b9efbdd0a72a1458d1a42bb71c76c792d0b00282 Mon Sep 17 00:00:00 2001 From: James Wu Date: Mon, 22 Jan 2024 22:33:19 +0800 Subject: [PATCH 10/21] modify: openapi type --- internal/context/context.go | 6 +++--- internal/sbi/consumer/nf_discovery.go | 2 +- internal/sbi/producer/callback/callback.go | 2 +- internal/sbi/producer/ue_context_management.go | 4 ++-- 4 files changed, 7 insertions(+), 7 deletions(-) diff --git a/internal/context/context.go b/internal/context/context.go index 250ff38..fa94b96 100644 --- a/internal/context/context.go +++ b/internal/context/context.go @@ -489,14 +489,14 @@ func (context *UDMContext) InitNFService(serviceName []string, version string) { } } -func (c *UDMContext) GetTokenCtx(scope, targetNF string) ( +func (c *UDMContext) GetTokenCtx(scope string, targetNF models.NfType) ( context.Context, *models.ProblemDetails, error, ) { if !c.OAuth2Required { return context.TODO(), nil, nil } - return oauth.GetTokenCtx(models.NfType_UDM, - c.NfId, c.NrfUri, scope, targetNF) + return oauth.GetTokenCtx(models.NfType_UDM, targetNF, + c.NfId, c.NrfUri, scope) } func GetSelf() *UDMContext { diff --git a/internal/sbi/consumer/nf_discovery.go b/internal/sbi/consumer/nf_discovery.go index bfa444c..1b7aa87 100644 --- a/internal/sbi/consumer/nf_discovery.go +++ b/internal/sbi/consumer/nf_discovery.go @@ -20,7 +20,7 @@ const ( const serviceNameNnrfDisc string = string(models.ServiceName_NNRF_DISC) const serviceNameNnrfNfm string = string(models.ServiceName_NNRF_NFM) -const nfTypeNRF string = string(models.NfType_NRF) +const nfTypeNRF models.NfType = models.NfType_NRF func SendNFIntances(nrfUri string, targetNfType, requestNfType models.NfType, param Nnrf_NFDiscovery.SearchNFInstancesParamOpts, diff --git a/internal/sbi/producer/callback/callback.go b/internal/sbi/producer/callback/callback.go index 92e4d36..37a2dac 100644 --- a/internal/sbi/producer/callback/callback.go +++ b/internal/sbi/producer/callback/callback.go @@ -12,7 +12,7 @@ import ( const serviceNameNudmSdm string = string(models.ServiceName_NUDM_SDM) const serviceNameNudmUecm string = string(models.ServiceName_NUDM_UECM) -const nfTypeUDM string = string(models.NfType_UDM) +const nfTypeUDM models.NfType = models.NfType_UDM func DataChangeNotificationProcedure(notifyItems []models.NotifyItem, supi string) *models.ProblemDetails { ctx, pd, err := udm_context.GetSelf().GetTokenCtx(serviceNameNudmSdm, nfTypeUDM) diff --git a/internal/sbi/producer/ue_context_management.go b/internal/sbi/producer/ue_context_management.go index 2775f03..2415308 100644 --- a/internal/sbi/producer/ue_context_management.go +++ b/internal/sbi/producer/ue_context_management.go @@ -20,8 +20,8 @@ import ( const serviceNameNudrDr string = string(models.ServiceName_NUDR_DR) const serviceNameNudmSdm string = string(models.ServiceName_NUDM_SDM) -const nfTypeUDR string = string(models.NfType_UDR) -const nfTypeUDM string = string(models.NfType_UDM) +const nfTypeUDR models.NfType = models.NfType_UDR +const nfTypeUDM models.NfType = models.NfType_UDM func createUDMClientToUDR(id string) (*Nudr_DataRepository.APIClient, error) { uri := getUdrURI(id) From c6dfbc31f2cbc69123578f7bf5a317c415a80f31 Mon Sep 17 00:00:00 2001 From: James Wu Date: Mon, 22 Jan 2024 22:53:16 +0800 Subject: [PATCH 11/21] fix --- internal/util/router_auth_check_test.go | 22 +++++++++++++++------- 1 file changed, 15 insertions(+), 7 deletions(-) diff --git a/internal/util/router_auth_check_test.go b/internal/util/router_auth_check_test.go index 1f23a93..bf4ecf0 100644 --- a/internal/util/router_auth_check_test.go +++ b/internal/util/router_auth_check_test.go @@ -14,13 +14,13 @@ const ( Invalid = "invalid" ) -type mockUDMContext struct{} +type mockNSSFContext struct{} -func newMockUDMContext() *mockUDMContext { - return &mockUDMContext{} +func newMockNSSFContext() *mockNSSFContext { + return &mockNSSFContext{} } -func (m *mockUDMContext) AuthorizationCheck(token string, serviceName string) error { +func (m *mockNSSFContext) AuthorizationCheck(token string, serviceName string) error { if token == Valid { return nil } @@ -32,7 +32,12 @@ func TestRouterAuthorizationCheck_Check(t *testing.T) { // Mock gin.Context w := httptest.NewRecorder() c, _ := gin.CreateTestContext(w) - c.Request, _ = http.NewRequest("GET", "/", nil) + + var err error + c.Request, err = http.NewRequest("GET", "/", nil) + if err != nil { + t.Errorf("error on http request: %+v", err) + } type Args struct { token string @@ -70,11 +75,14 @@ func TestRouterAuthorizationCheck_Check(t *testing.T) { t.Run(tt.name, func(t *testing.T) { w = httptest.NewRecorder() c, _ = gin.CreateTestContext(w) - c.Request, _ = http.NewRequest("GET", "/", nil) + c.Request, err = http.NewRequest("GET", "/", nil) + if err != nil { + t.Errorf("error on http request: %+v", err) + } c.Request.Header.Set("Authorization", tt.args.token) rac := NewRouterAuthorizationCheck("testService") - rac.Check(c, newMockUDMContext()) + rac.Check(c, newMockNSSFContext()) if w.Code != tt.want.statusCode { t.Errorf("StatusCode should be %d, but got %d", tt.want.statusCode, w.Code) } From b543ee9c5aa255164e8413a7d51a9ef735a65e31 Mon Sep 17 00:00:00 2001 From: James Wu Date: Tue, 23 Jan 2024 13:41:32 +0800 Subject: [PATCH 12/21] fix router_auth_check_test.go func name --- internal/util/router_auth_check_test.go | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/internal/util/router_auth_check_test.go b/internal/util/router_auth_check_test.go index bf4ecf0..f534a23 100644 --- a/internal/util/router_auth_check_test.go +++ b/internal/util/router_auth_check_test.go @@ -14,13 +14,13 @@ const ( Invalid = "invalid" ) -type mockNSSFContext struct{} +type mockUDMContext struct{} -func newMockNSSFContext() *mockNSSFContext { - return &mockNSSFContext{} +func newMockUDMContext() *mockUDMContext { + return &mockUDMContext{} } -func (m *mockNSSFContext) AuthorizationCheck(token string, serviceName string) error { +func (m *mockUDMContext) AuthorizationCheck(token string, serviceName string) error { if token == Valid { return nil } @@ -82,7 +82,7 @@ func TestRouterAuthorizationCheck_Check(t *testing.T) { c.Request.Header.Set("Authorization", tt.args.token) rac := NewRouterAuthorizationCheck("testService") - rac.Check(c, newMockNSSFContext()) + rac.Check(c, newMockUDMContext()) if w.Code != tt.want.statusCode { t.Errorf("StatusCode should be %d, but got %d", tt.want.statusCode, w.Code) } From c8e74fab1116b3a04a2af95623ae6c1264b3aaf4 Mon Sep 17 00:00:00 2001 From: James Wu Date: Tue, 23 Jan 2024 14:16:12 +0800 Subject: [PATCH 13/21] fix gofumpt --- internal/sbi/consumer/nf_discovery.go | 8 +++++--- internal/sbi/consumer/nf_management.go | 1 - internal/sbi/producer/callback/callback.go | 8 +++++--- internal/util/router_auth_check.go | 1 - 4 files changed, 10 insertions(+), 8 deletions(-) diff --git a/internal/sbi/consumer/nf_discovery.go b/internal/sbi/consumer/nf_discovery.go index 1b7aa87..a3496cf 100644 --- a/internal/sbi/consumer/nf_discovery.go +++ b/internal/sbi/consumer/nf_discovery.go @@ -18,9 +18,11 @@ const ( NFDiscoveryToUDRParamGpsi ) -const serviceNameNnrfDisc string = string(models.ServiceName_NNRF_DISC) -const serviceNameNnrfNfm string = string(models.ServiceName_NNRF_NFM) -const nfTypeNRF models.NfType = models.NfType_NRF +const ( + serviceNameNnrfDisc string = string(models.ServiceName_NNRF_DISC) + serviceNameNnrfNfm string = string(models.ServiceName_NNRF_NFM) + nfTypeNRF models.NfType = models.NfType_NRF +) func SendNFIntances(nrfUri string, targetNfType, requestNfType models.NfType, param Nnrf_NFDiscovery.SearchNFInstancesParamOpts, diff --git a/internal/sbi/consumer/nf_management.go b/internal/sbi/consumer/nf_management.go index 418ac4a..8316d13 100644 --- a/internal/sbi/consumer/nf_management.go +++ b/internal/sbi/consumer/nf_management.go @@ -41,7 +41,6 @@ func BuildNFInstance(udmContext *udm_context.UDMContext) (profile models.NfProfi func SendRegisterNFInstance(nrfUri, nfInstanceId string, profile models.NfProfile) (resouceNrfUri string, retrieveNfInstanceId string, err error, ) { - configuration := Nnrf_NFManagement.NewConfiguration() configuration.SetBasePath(nrfUri) client := Nnrf_NFManagement.NewAPIClient(configuration) diff --git a/internal/sbi/producer/callback/callback.go b/internal/sbi/producer/callback/callback.go index 37a2dac..c494961 100644 --- a/internal/sbi/producer/callback/callback.go +++ b/internal/sbi/producer/callback/callback.go @@ -10,9 +10,11 @@ import ( "github.com/free5gc/udm/internal/logger" ) -const serviceNameNudmSdm string = string(models.ServiceName_NUDM_SDM) -const serviceNameNudmUecm string = string(models.ServiceName_NUDM_UECM) -const nfTypeUDM models.NfType = models.NfType_UDM +const ( + serviceNameNudmSdm string = string(models.ServiceName_NUDM_SDM) + serviceNameNudmUecm string = string(models.ServiceName_NUDM_UECM) + nfTypeUDM models.NfType = models.NfType_UDM +) func DataChangeNotificationProcedure(notifyItems []models.NotifyItem, supi string) *models.ProblemDetails { ctx, pd, err := udm_context.GetSelf().GetTokenCtx(serviceNameNudmSdm, nfTypeUDM) diff --git a/internal/util/router_auth_check.go b/internal/util/router_auth_check.go index f1718a3..79d6704 100644 --- a/internal/util/router_auth_check.go +++ b/internal/util/router_auth_check.go @@ -23,7 +23,6 @@ func NewRouterAuthorizationCheck(serviceName string) *RouterAuthorizationCheck { func (rac *RouterAuthorizationCheck) Check(c *gin.Context, udmContext udm_context.NFContext) { token := c.Request.Header.Get("Authorization") err := udmContext.AuthorizationCheck(token, rac.serviceName) - if err != nil { logger.UtilLog.Debugf("RouterAuthorizationCheck::Check Unauthorized: %s", err.Error()) c.JSON(http.StatusUnauthorized, gin.H{"error": err.Error()}) From d532678cacf65068c2f19d6757a8119cba5ae289 Mon Sep 17 00:00:00 2001 From: James Wu Date: Tue, 23 Jan 2024 14:26:16 +0800 Subject: [PATCH 14/21] fix go.mod --- go.mod | 1 - 1 file changed, 1 deletion(-) diff --git a/go.mod b/go.mod index 1f15d75..3b3087c 100644 --- a/go.mod +++ b/go.mod @@ -40,7 +40,6 @@ require ( github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd // indirect github.com/modern-go/reflect2 v1.0.2 // indirect github.com/pelletier/go-toml/v2 v2.0.8 // indirect - github.com/pkg/errors v0.9.1 // indirect github.com/pmezard/go-difflib v1.0.0 // indirect github.com/russross/blackfriday/v2 v2.1.0 // indirect github.com/stretchr/testify v1.8.4 // indirect From 1ecb75a3f5f159e7c8e7d095359f63d9c2ff1177 Mon Sep 17 00:00:00 2001 From: James Wu Date: Tue, 23 Jan 2024 14:37:24 +0800 Subject: [PATCH 15/21] fix gci format --- internal/util/router_auth_check.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/internal/util/router_auth_check.go b/internal/util/router_auth_check.go index 79d6704..0b4eece 100644 --- a/internal/util/router_auth_check.go +++ b/internal/util/router_auth_check.go @@ -3,8 +3,8 @@ package util import ( "net/http" - udm_context "github.com/free5gc/udm/internal/context" "github.com/free5gc/udm/internal/logger" + udm_context "github.com/free5gc/udm/internal/context" "github.com/gin-gonic/gin" ) From 90e38ad6e4235da6acfd48ca3bd14ba6154a3d17 Mon Sep 17 00:00:00 2001 From: James Wu Date: Tue, 23 Jan 2024 14:54:55 +0800 Subject: [PATCH 16/21] fix gofumpt --- internal/sbi/producer/parameter_provision.go | 2 +- internal/sbi/producer/ue_context_management.go | 10 ++++++---- 2 files changed, 7 insertions(+), 5 deletions(-) diff --git a/internal/sbi/producer/parameter_provision.go b/internal/sbi/producer/parameter_provision.go index 8308be5..df80dc8 100644 --- a/internal/sbi/producer/parameter_provision.go +++ b/internal/sbi/producer/parameter_provision.go @@ -10,7 +10,7 @@ import ( "github.com/free5gc/util/httpwrapper" ) -//const serviceName string = string(models.ServiceName_NUDR_DR) +// const serviceName string = string(models.ServiceName_NUDR_DR) func HandleUpdateRequest(request *httpwrapper.Request) *httpwrapper.Response { // step 1: log diff --git a/internal/sbi/producer/ue_context_management.go b/internal/sbi/producer/ue_context_management.go index 30ee18f..0781a35 100644 --- a/internal/sbi/producer/ue_context_management.go +++ b/internal/sbi/producer/ue_context_management.go @@ -18,10 +18,12 @@ import ( "github.com/free5gc/util/httpwrapper" ) -const serviceNameNudrDr string = string(models.ServiceName_NUDR_DR) -const serviceNameNudmSdm string = string(models.ServiceName_NUDM_SDM) -const nfTypeUDR models.NfType = models.NfType_UDR -const nfTypeUDM models.NfType = models.NfType_UDM +const ( + serviceNameNudrDr string = string(models.ServiceName_NUDR_DR) + serviceNameNudmSdm string = string(models.ServiceName_NUDM_SDM) + nfTypeUDR models.NfType = models.NfType_UDR + nfTypeUDM models.NfType = models.NfType_UDM +) func createUDMClientToUDR(id string) (*Nudr_DataRepository.APIClient, error) { uri := getUdrURI(id) From 08bdb71734a82db6268ec94107f1ef1e230e86bf Mon Sep 17 00:00:00 2001 From: James Wu Date: Tue, 23 Jan 2024 14:54:55 +0800 Subject: [PATCH 17/21] Fix: fix linter error --- internal/sbi/producer/parameter_provision.go | 2 +- internal/sbi/producer/ue_context_management.go | 10 ++++++---- internal/util/router_auth_check.go | 5 +++-- 3 files changed, 10 insertions(+), 7 deletions(-) diff --git a/internal/sbi/producer/parameter_provision.go b/internal/sbi/producer/parameter_provision.go index 8308be5..df80dc8 100644 --- a/internal/sbi/producer/parameter_provision.go +++ b/internal/sbi/producer/parameter_provision.go @@ -10,7 +10,7 @@ import ( "github.com/free5gc/util/httpwrapper" ) -//const serviceName string = string(models.ServiceName_NUDR_DR) +// const serviceName string = string(models.ServiceName_NUDR_DR) func HandleUpdateRequest(request *httpwrapper.Request) *httpwrapper.Response { // step 1: log diff --git a/internal/sbi/producer/ue_context_management.go b/internal/sbi/producer/ue_context_management.go index 30ee18f..0781a35 100644 --- a/internal/sbi/producer/ue_context_management.go +++ b/internal/sbi/producer/ue_context_management.go @@ -18,10 +18,12 @@ import ( "github.com/free5gc/util/httpwrapper" ) -const serviceNameNudrDr string = string(models.ServiceName_NUDR_DR) -const serviceNameNudmSdm string = string(models.ServiceName_NUDM_SDM) -const nfTypeUDR models.NfType = models.NfType_UDR -const nfTypeUDM models.NfType = models.NfType_UDM +const ( + serviceNameNudrDr string = string(models.ServiceName_NUDR_DR) + serviceNameNudmSdm string = string(models.ServiceName_NUDM_SDM) + nfTypeUDR models.NfType = models.NfType_UDR + nfTypeUDM models.NfType = models.NfType_UDM +) func createUDMClientToUDR(id string) (*Nudr_DataRepository.APIClient, error) { uri := getUdrURI(id) diff --git a/internal/util/router_auth_check.go b/internal/util/router_auth_check.go index 0b4eece..6c60b7f 100644 --- a/internal/util/router_auth_check.go +++ b/internal/util/router_auth_check.go @@ -3,9 +3,10 @@ package util import ( "net/http" - "github.com/free5gc/udm/internal/logger" - udm_context "github.com/free5gc/udm/internal/context" "github.com/gin-gonic/gin" + + udm_context "github.com/free5gc/udm/internal/context" + "github.com/free5gc/udm/internal/logger" ) type NFContextGetter func() *udm_context.UDMContext From 3cc54497857a2203ce75e29637f14a219662c28f Mon Sep 17 00:00:00 2001 From: James Wu Date: Tue, 23 Jan 2024 20:21:51 +0800 Subject: [PATCH 18/21] Modify: 1. move ServiceName and NfType to util package 2. replace ServiceName and NfType constant 3. remove command line --- internal/sbi/consumer/nf_discovery.go | 8 +--- internal/sbi/consumer/nf_management.go | 3 +- internal/sbi/eventexposure/routers.go | 5 +-- internal/sbi/parameterprovision/routers.go | 5 +-- internal/sbi/producer/callback/callback.go | 11 ++--- internal/sbi/producer/generate_auth_data.go | 8 ++-- internal/sbi/producer/parameter_provision.go | 5 +-- .../producer/subscriber_data_management.go | 41 +++++++++---------- .../sbi/producer/ue_context_management.go | 24 ++++------- .../sbi/subscriberdatamanagement/routers.go | 5 +-- internal/sbi/ueauthentication/routers.go | 5 +-- internal/sbi/uecontextmanagement/routers.go | 5 +-- internal/util/router_auth_check.go | 5 ++- internal/util/util.go | 17 ++++++++ 14 files changed, 65 insertions(+), 82 deletions(-) diff --git a/internal/sbi/consumer/nf_discovery.go b/internal/sbi/consumer/nf_discovery.go index a3496cf..90f8cb2 100644 --- a/internal/sbi/consumer/nf_discovery.go +++ b/internal/sbi/consumer/nf_discovery.go @@ -18,12 +18,6 @@ const ( NFDiscoveryToUDRParamGpsi ) -const ( - serviceNameNnrfDisc string = string(models.ServiceName_NNRF_DISC) - serviceNameNnrfNfm string = string(models.ServiceName_NNRF_NFM) - nfTypeNRF models.NfType = models.NfType_NRF -) - func SendNFIntances(nrfUri string, targetNfType, requestNfType models.NfType, param Nnrf_NFDiscovery.SearchNFInstancesParamOpts, ) (result models.SearchResult, err error) { @@ -31,7 +25,7 @@ func SendNFIntances(nrfUri string, targetNfType, requestNfType models.NfType, configuration.SetBasePath(nrfUri) // addr clientNRF := Nnrf_NFDiscovery.NewAPIClient(configuration) - ctx, _, err := udm_context.GetSelf().GetTokenCtx(serviceNameNnrfDisc, nfTypeNRF) + ctx, _, err := udm_context.GetSelf().GetTokenCtx(util.ServiceNameNnrfDisc, util.NfTypeNRF) if err != nil { return } diff --git a/internal/sbi/consumer/nf_management.go b/internal/sbi/consumer/nf_management.go index 8316d13..f7da746 100644 --- a/internal/sbi/consumer/nf_management.go +++ b/internal/sbi/consumer/nf_management.go @@ -12,6 +12,7 @@ import ( "github.com/free5gc/openapi/models" udm_context "github.com/free5gc/udm/internal/context" "github.com/free5gc/udm/internal/logger" + "github.com/free5gc/udm/internal/util" ) func BuildNFInstance(udmContext *udm_context.UDMContext) (profile models.NfProfile, err error) { @@ -94,7 +95,7 @@ func SendRegisterNFInstance(nrfUri, nfInstanceId string, profile models.NfProfil func SendDeregisterNFInstance() (problemDetails *models.ProblemDetails, err error) { logger.ConsumerLog.Infof("Send Deregister NFInstance") - ctx, pd, err := udm_context.GetSelf().GetTokenCtx(serviceNameNnrfNfm, nfTypeNRF) + ctx, pd, err := udm_context.GetSelf().GetTokenCtx(util.ServiceNameNnrfNfm, util.NfTypeNRF) if err != nil { return pd, err } diff --git a/internal/sbi/eventexposure/routers.go b/internal/sbi/eventexposure/routers.go index bdc45a2..a291fde 100644 --- a/internal/sbi/eventexposure/routers.go +++ b/internal/sbi/eventexposure/routers.go @@ -15,7 +15,6 @@ import ( "github.com/gin-gonic/gin" - "github.com/free5gc/openapi/models" udm_context "github.com/free5gc/udm/internal/context" "github.com/free5gc/udm/internal/logger" "github.com/free5gc/udm/internal/util" @@ -38,8 +37,6 @@ type Route struct { // Routes is the list of the generated Route. type Routes []Route -const serviceName string = string(models.ServiceName_NUDM_EE) - // NewRouter returns a new router. func NewRouter() *gin.Engine { router := logger_util.NewGinWithLogrus(logger.GinLog) @@ -51,7 +48,7 @@ func NewRouter() *gin.Engine { func AddService(engine *gin.Engine) *gin.RouterGroup { group := engine.Group(factory.UdmEeResUriPrefix) - routerAuthorizationCheck := util.NewRouterAuthorizationCheck(serviceName) + routerAuthorizationCheck := util.NewRouterAuthorizationCheck(util.ServiceNameNudmEe) group.Use(func(c *gin.Context) { routerAuthorizationCheck.Check(c, udm_context.GetSelf()) }) diff --git a/internal/sbi/parameterprovision/routers.go b/internal/sbi/parameterprovision/routers.go index 927a2c0..31b70c0 100644 --- a/internal/sbi/parameterprovision/routers.go +++ b/internal/sbi/parameterprovision/routers.go @@ -15,7 +15,6 @@ import ( "github.com/gin-gonic/gin" - "github.com/free5gc/openapi/models" udm_context "github.com/free5gc/udm/internal/context" "github.com/free5gc/udm/internal/logger" "github.com/free5gc/udm/internal/util" @@ -38,8 +37,6 @@ type Route struct { // Routes is the list of the generated Route. type Routes []Route -const serviceName string = string(models.ServiceName_NUDM_PP) - // NewRouter returns a new router. func NewRouter() *gin.Engine { router := logger_util.NewGinWithLogrus(logger.GinLog) @@ -50,7 +47,7 @@ func NewRouter() *gin.Engine { func AddService(engine *gin.Engine) *gin.RouterGroup { group := engine.Group(factory.UdmPpResUriPrefix) - routerAuthorizationCheck := util.NewRouterAuthorizationCheck(serviceName) + routerAuthorizationCheck := util.NewRouterAuthorizationCheck(util.ServiceNameNudmPp) group.Use(func(c *gin.Context) { routerAuthorizationCheck.Check(c, udm_context.GetSelf()) }) diff --git a/internal/sbi/producer/callback/callback.go b/internal/sbi/producer/callback/callback.go index c494961..2540964 100644 --- a/internal/sbi/producer/callback/callback.go +++ b/internal/sbi/producer/callback/callback.go @@ -8,16 +8,11 @@ import ( "github.com/free5gc/openapi/models" udm_context "github.com/free5gc/udm/internal/context" "github.com/free5gc/udm/internal/logger" -) - -const ( - serviceNameNudmSdm string = string(models.ServiceName_NUDM_SDM) - serviceNameNudmUecm string = string(models.ServiceName_NUDM_UECM) - nfTypeUDM models.NfType = models.NfType_UDM + "github.com/free5gc/udm/internal/util" ) func DataChangeNotificationProcedure(notifyItems []models.NotifyItem, supi string) *models.ProblemDetails { - ctx, pd, err := udm_context.GetSelf().GetTokenCtx(serviceNameNudmSdm, nfTypeUDM) + ctx, pd, err := udm_context.GetSelf().GetTokenCtx(util.ServiceNameNudmSdm, util.NfTypeUDM) if err != nil { return pd } @@ -63,7 +58,7 @@ func DataChangeNotificationProcedure(notifyItems []models.NotifyItem, supi strin func SendOnDeregistrationNotification(ueId string, onDeregistrationNotificationUrl string, deregistData models.DeregistrationData, ) *models.ProblemDetails { - ctx, pd, err := udm_context.GetSelf().GetTokenCtx(serviceNameNudmUecm, nfTypeUDM) + ctx, pd, err := udm_context.GetSelf().GetTokenCtx(util.ServiceNameNudmUecm, util.NfTypeUDM) if err != nil { return pd } diff --git a/internal/sbi/producer/generate_auth_data.go b/internal/sbi/producer/generate_auth_data.go index 133ba36..eaa3978 100644 --- a/internal/sbi/producer/generate_auth_data.go +++ b/internal/sbi/producer/generate_auth_data.go @@ -19,6 +19,7 @@ import ( "github.com/free5gc/openapi/models" udm_context "github.com/free5gc/udm/internal/context" "github.com/free5gc/udm/internal/logger" + "github.com/free5gc/udm/internal/util" "github.com/free5gc/udm/pkg/suci" "github.com/free5gc/util/httpwrapper" "github.com/free5gc/util/milenage" @@ -118,7 +119,7 @@ func HandleConfirmAuthDataRequest(request *httpwrapper.Request) *httpwrapper.Res } func ConfirmAuthDataProcedure(authEvent models.AuthEvent, supi string) (problemDetails *models.ProblemDetails) { - ctx, pd, err := udm_context.GetSelf().GetTokenCtx(serviceNameNudrDr, nfTypeUDR) + ctx, pd, err := udm_context.GetSelf().GetTokenCtx(util.ServiceNameNudrDr, util.NfTypeUDR) if err != nil { return pd } @@ -155,7 +156,7 @@ func ConfirmAuthDataProcedure(authEvent models.AuthEvent, supi string) (problemD func GenerateAuthDataProcedure(authInfoRequest models.AuthenticationInfoRequest, supiOrSuci string) ( response *models.AuthenticationInfoResult, problemDetails *models.ProblemDetails, ) { - ctx, pd, err := udm_context.GetSelf().GetTokenCtx(serviceNameNudrDr, nfTypeUDR) + ctx, pd, err := udm_context.GetSelf().GetTokenCtx(util.ServiceNameNudrDr, util.NfTypeUDR) if err != nil { return nil, pd } @@ -469,8 +470,7 @@ func GenerateAuthDataProcedure(authInfoRequest models.AuthenticationInfoRequest, } var rsp *http.Response - // rsp, err = client.AuthenticationDataDocumentApi.ModifyAuthentication( - // context.Background(), supi, patchItemArray) + rsp, err = client.AuthenticationDataDocumentApi.ModifyAuthentication( ctx, supi, patchItemArray) if err != nil { diff --git a/internal/sbi/producer/parameter_provision.go b/internal/sbi/producer/parameter_provision.go index df80dc8..ec05756 100644 --- a/internal/sbi/producer/parameter_provision.go +++ b/internal/sbi/producer/parameter_provision.go @@ -7,11 +7,10 @@ import ( "github.com/free5gc/openapi/models" udm_context "github.com/free5gc/udm/internal/context" "github.com/free5gc/udm/internal/logger" + "github.com/free5gc/udm/internal/util" "github.com/free5gc/util/httpwrapper" ) -// const serviceName string = string(models.ServiceName_NUDR_DR) - func HandleUpdateRequest(request *httpwrapper.Request) *httpwrapper.Response { // step 1: log logger.PpLog.Infoln("Handle UpdateRequest") @@ -32,7 +31,7 @@ func HandleUpdateRequest(request *httpwrapper.Request) *httpwrapper.Response { } func UpdateProcedure(updateRequest models.PpData, gpsi string) (problemDetails *models.ProblemDetails) { - ctx, pd, err := udm_context.GetSelf().GetTokenCtx(serviceNameNudrDr, nfTypeUDR) + ctx, pd, err := udm_context.GetSelf().GetTokenCtx(util.ServiceNameNudrDr, util.NfTypeUDR) if err != nil { return pd } diff --git a/internal/sbi/producer/subscriber_data_management.go b/internal/sbi/producer/subscriber_data_management.go index f8c17d1..163dc00 100644 --- a/internal/sbi/producer/subscriber_data_management.go +++ b/internal/sbi/producer/subscriber_data_management.go @@ -16,6 +16,7 @@ import ( "github.com/free5gc/openapi/models" udm_context "github.com/free5gc/udm/internal/context" "github.com/free5gc/udm/internal/logger" + "github.com/free5gc/udm/internal/util" "github.com/free5gc/util/httpwrapper" ) @@ -54,7 +55,7 @@ func HandleGetAmDataRequest(request *httpwrapper.Request) *httpwrapper.Response func getAmDataProcedure(supi string, plmnID string, supportedFeatures string) ( response *models.AccessAndMobilitySubscriptionData, problemDetails *models.ProblemDetails, ) { - ctx, pd, err := udm_context.GetSelf().GetTokenCtx(serviceNameNudrDr, nfTypeUDR) + ctx, pd, err := udm_context.GetSelf().GetTokenCtx(util.ServiceNameNudrDr, util.NfTypeUDR) if err != nil { return nil, pd } @@ -133,7 +134,7 @@ func HandleGetIdTranslationResultRequest(request *httpwrapper.Request) *httpwrap func getIdTranslationResultProcedure(gpsi string) (response *models.IdTranslationResult, problemDetails *models.ProblemDetails, ) { - ctx, pd, err := udm_context.GetSelf().GetTokenCtx(serviceNameNudrDr, nfTypeUDR) + ctx, pd, err := udm_context.GetSelf().GetTokenCtx(util.ServiceNameNudrDr, util.NfTypeNRF) if err != nil { return nil, pd } @@ -229,7 +230,7 @@ func HandleGetSupiRequest(request *httpwrapper.Request) *httpwrapper.Response { func getSupiProcedure(supi string, plmnID string, dataSetNames []string, supportedFeatures string) ( response *models.SubscriptionDataSets, problemDetails *models.ProblemDetails, ) { - ctx, pd, err := udm_context.GetSelf().GetTokenCtx(serviceNameNudrDr, nfTypeUDR) + ctx, pd, err := udm_context.GetSelf().GetTokenCtx(util.ServiceNameNudrDr, util.NfTypeUDR) if err != nil { return nil, pd } @@ -308,8 +309,7 @@ func getSupiProcedure(supi string, plmnID string, dataSetNames []string, support if containDataSetName(dataSetNames, string(models.DataSetName_SMF_SEL)) { var smfSelSubsbody models.SmfSelectionSubscriptionData udm_context.GetSelf().CreateSmfSelectionSubsDataforUe(supi, smfSelSubsbody) - // smfSelData, res, err := clientAPI.SMFSelectionSubscriptionDataDocumentApi.QuerySmfSelectData(context.Background(), - // supi, plmnID, &querySmfSelectDataParamOpts) + smfSelData, res, err := clientAPI.SMFSelectionSubscriptionDataDocumentApi.QuerySmfSelectData(ctx, supi, plmnID, &querySmfSelectDataParamOpts) if err != nil { @@ -354,8 +354,7 @@ func getSupiProcedure(supi string, plmnID string, dataSetNames []string, support var querySmfRegListParamOpts Nudr.QuerySmfRegListParamOpts querySmfRegListParamOpts.SupportedFeatures = optional.NewString(supportedFeatures) udm_context.GetSelf().CreateUeContextInSmfDataforUe(supi, UeContextInSmfbody) - // pdusess, res, err := clientAPI.SMFRegistrationsCollectionApi.QuerySmfRegList( - // context.Background(), supi, &querySmfRegListParamOpts) + pdusess, res, err := clientAPI.SMFRegistrationsCollectionApi.QuerySmfRegList( ctx, supi, &querySmfRegListParamOpts) if err != nil { @@ -420,8 +419,7 @@ func getSupiProcedure(supi string, plmnID string, dataSetNames []string, support // } if containDataSetName(dataSetNames, string(models.DataSetName_SM)) { - // sessionManagementSubscriptionData, res, err := clientAPI.SessionManagementSubscriptionDataApi. - // QuerySmData(context.Background(), supi, plmnID, &querySmDataParamOpts) + sessionManagementSubscriptionData, res, err := clientAPI.SessionManagementSubscriptionDataApi. QuerySmData(ctx, supi, plmnID, &querySmDataParamOpts) if err != nil { @@ -465,8 +463,7 @@ func getSupiProcedure(supi string, plmnID string, dataSetNames []string, support if containDataSetName(dataSetNames, string(models.DataSetName_TRACE)) { var TraceDatabody models.TraceData udm_context.GetSelf().CreateTraceDataforUe(supi, TraceDatabody) - // traceData, res, err := clientAPI.TraceDataDocumentApi.QueryTraceData( - // context.Background(), supi, plmnID, &queryTraceDataParamOpts) + traceData, res, err := clientAPI.TraceDataDocumentApi.QueryTraceData( ctx, supi, plmnID, &queryTraceDataParamOpts) if err != nil { @@ -542,7 +539,7 @@ func HandleGetSharedDataRequest(request *httpwrapper.Request) *httpwrapper.Respo func getSharedDataProcedure(sharedDataIds []string, supportedFeatures string) ( response []models.SharedData, problemDetails *models.ProblemDetails, ) { - ctx, pd, err := udm_context.GetSelf().GetTokenCtx(serviceNameNudrDr, nfTypeUDR) + ctx, pd, err := udm_context.GetSelf().GetTokenCtx(util.ServiceNameNudrDr, util.NfTypeUDR) if err != nil { return nil, pd } @@ -628,7 +625,7 @@ func HandleGetSmDataRequest(request *httpwrapper.Request) *httpwrapper.Response func getSmDataProcedure(supi string, plmnID string, Dnn string, Snssai string, supportedFeatures string) ( response interface{}, problemDetails *models.ProblemDetails, ) { - ctx, pd, err := udm_context.GetSelf().GetTokenCtx(serviceNameNudrDr, nfTypeUDR) + ctx, pd, err := udm_context.GetSelf().GetTokenCtx(util.ServiceNameNudrDr, util.NfTypeUDR) if err != nil { return nil, pd } @@ -744,7 +741,7 @@ func HandleGetNssaiRequest(request *httpwrapper.Request) *httpwrapper.Response { func getNssaiProcedure(supi string, plmnID string, supportedFeatures string) ( *models.Nssai, *models.ProblemDetails, ) { - ctx, pd, err := udm_context.GetSelf().GetTokenCtx(serviceNameNudrDr, nfTypeUDR) + ctx, pd, err := udm_context.GetSelf().GetTokenCtx(util.ServiceNameNudrDr, util.NfTypeUDR) if err != nil { return nil, pd } @@ -833,7 +830,7 @@ func HandleGetSmfSelectDataRequest(request *httpwrapper.Request) *httpwrapper.Re func getSmfSelectDataProcedure(supi string, plmnID string, supportedFeatures string) ( response *models.SmfSelectionSubscriptionData, problemDetails *models.ProblemDetails, ) { - ctx, pd, err := udm_context.GetSelf().GetTokenCtx(serviceNameNudrDr, nfTypeUDR) + ctx, pd, err := udm_context.GetSelf().GetTokenCtx(util.ServiceNameNudrDr, util.NfTypeUDR) if err != nil { return nil, pd } @@ -914,7 +911,7 @@ func HandleSubscribeToSharedDataRequest(request *httpwrapper.Request) *httpwrapp func subscribeToSharedDataProcedure(sdmSubscription *models.SdmSubscription) ( header http.Header, response *models.SdmSubscription, problemDetails *models.ProblemDetails, ) { - ctx, pd, err := udm_context.GetSelf().GetTokenCtx(serviceNameNudmSdm, nfTypeUDM) + ctx, pd, err := udm_context.GetSelf().GetTokenCtx(util.ServiceNameNudmSdm, util.NfTypeUDM) if err != nil { return nil, nil, pd } @@ -993,7 +990,7 @@ func HandleSubscribeRequest(request *httpwrapper.Request) *httpwrapper.Response func subscribeProcedure(sdmSubscription *models.SdmSubscription, supi string) ( header http.Header, response *models.SdmSubscription, problemDetails *models.ProblemDetails, ) { - ctx, pd, err := udm_context.GetSelf().GetTokenCtx(serviceNameNudrDr, nfTypeUDR) + ctx, pd, err := udm_context.GetSelf().GetTokenCtx(util.ServiceNameNudrDr, util.NfTypeUDR) if err != nil { return nil, nil, pd } @@ -1068,7 +1065,7 @@ func HandleUnsubscribeForSharedDataRequest(request *httpwrapper.Request) *httpwr // TS 29.503 5.2.2.4.3 // Unsubscribe to notifications of data change func unsubscribeForSharedDataProcedure(subscriptionID string) *models.ProblemDetails { - ctx, pd, err := udm_context.GetSelf().GetTokenCtx(serviceNameNudmSdm, nfTypeUDM) + ctx, pd, err := udm_context.GetSelf().GetTokenCtx(util.ServiceNameNudmSdm, util.NfTypeUDM) if err != nil { return pd } @@ -1130,7 +1127,7 @@ func HandleUnsubscribeRequest(request *httpwrapper.Request) *httpwrapper.Respons // TS 29.503 5.2.2.4.2 // Unsubscribe to notifications of data change func unsubscribeProcedure(supi string, subscriptionID string) *models.ProblemDetails { - ctx, pd, err := udm_context.GetSelf().GetTokenCtx(serviceNameNudrDr, nfTypeUDR) + ctx, pd, err := udm_context.GetSelf().GetTokenCtx(util.ServiceNameNudrDr, util.NfTypeUDR) if err != nil { return pd } @@ -1203,7 +1200,7 @@ func HandleModifyRequest(request *httpwrapper.Request) *httpwrapper.Response { func modifyProcedure(sdmSubsModification *models.SdmSubsModification, supi string, subscriptionID string) ( response *models.SdmSubscription, problemDetails *models.ProblemDetails, ) { - ctx, pd, err := udm_context.GetSelf().GetTokenCtx(serviceNameNudrDr, nfTypeUDR) + ctx, pd, err := udm_context.GetSelf().GetTokenCtx(util.ServiceNameNudrDr, util.NfTypeUDR) if err != nil { return nil, pd } @@ -1282,7 +1279,7 @@ func HandleModifyForSharedDataRequest(request *httpwrapper.Request) *httpwrapper func modifyForSharedDataProcedure(sdmSubsModification *models.SdmSubsModification, supi string, subscriptionID string, ) (response *models.SdmSubscription, problemDetails *models.ProblemDetails) { - ctx, pd, err := udm_context.GetSelf().GetTokenCtx(serviceNameNudrDr, nfTypeUDR) + ctx, pd, err := udm_context.GetSelf().GetTokenCtx(util.ServiceNameNudrDr, util.NfTypeUDR) if err != nil { return nil, pd } @@ -1359,7 +1356,7 @@ func HandleGetTraceDataRequest(request *httpwrapper.Request) *httpwrapper.Respon func getTraceDataProcedure(supi string, plmnID string) ( response *models.TraceData, problemDetails *models.ProblemDetails, ) { - ctx, pd, err := udm_context.GetSelf().GetTokenCtx(serviceNameNudrDr, nfTypeUDR) + ctx, pd, err := udm_context.GetSelf().GetTokenCtx(util.ServiceNameNudrDr, util.NfTypeUDR) if err != nil { return nil, pd } diff --git a/internal/sbi/producer/ue_context_management.go b/internal/sbi/producer/ue_context_management.go index 0781a35..3483f09 100644 --- a/internal/sbi/producer/ue_context_management.go +++ b/internal/sbi/producer/ue_context_management.go @@ -15,16 +15,10 @@ import ( "github.com/free5gc/udm/internal/logger" "github.com/free5gc/udm/internal/sbi/consumer" "github.com/free5gc/udm/internal/sbi/producer/callback" + "github.com/free5gc/udm/internal/util" "github.com/free5gc/util/httpwrapper" ) -const ( - serviceNameNudrDr string = string(models.ServiceName_NUDR_DR) - serviceNameNudmSdm string = string(models.ServiceName_NUDM_SDM) - nfTypeUDR models.NfType = models.NfType_UDR - nfTypeUDM models.NfType = models.NfType_UDM -) - func createUDMClientToUDR(id string) (*Nudr_DataRepository.APIClient, error) { uri := getUdrURI(id) if uri == "" { @@ -108,7 +102,7 @@ func HandleGetAmf3gppAccessRequest(request *httpwrapper.Request) *httpwrapper.Re func GetAmf3gppAccessProcedure(ueID string, supportedFeatures string) ( response *models.Amf3GppAccessRegistration, problemDetails *models.ProblemDetails, ) { - ctx, pd, err := udm_context.GetSelf().GetTokenCtx(serviceNameNudrDr, nfTypeUDM) + ctx, pd, err := udm_context.GetSelf().GetTokenCtx(util.ServiceNameNudrDr, util.NfTypeUDR) if err != nil { return nil, pd } @@ -170,7 +164,7 @@ func GetAmfNon3gppAccessProcedure(queryAmfContextNon3gppParamOpts Nudr_DataRepos QueryAmfContextNon3gppParamOpts, ueID string) (response *models.AmfNon3GppAccessRegistration, problemDetails *models.ProblemDetails, ) { - ctx, pd, err := udm_context.GetSelf().GetTokenCtx(serviceNameNudrDr, nfTypeUDM) + ctx, pd, err := udm_context.GetSelf().GetTokenCtx(util.ServiceNameNudrDr, util.NfTypeUDR) if err != nil { return nil, pd } @@ -228,7 +222,7 @@ func HandleRegistrationAmf3gppAccessRequest(request *httpwrapper.Request) *httpw func RegistrationAmf3gppAccessProcedure(registerRequest models.Amf3GppAccessRegistration, ueID string) ( header http.Header, response *models.Amf3GppAccessRegistration, problemDetails *models.ProblemDetails, ) { - ctx, pd, err := udm_context.GetSelf().GetTokenCtx(serviceNameNudrDr, nfTypeUDM) + ctx, pd, err := udm_context.GetSelf().GetTokenCtx(util.ServiceNameNudrDr, util.NfTypeUDR) if err != nil { return nil, nil, pd } @@ -329,7 +323,7 @@ func HandleRegisterAmfNon3gppAccessRequest(request *httpwrapper.Request) *httpwr func RegisterAmfNon3gppAccessProcedure(registerRequest models.AmfNon3GppAccessRegistration, ueID string) ( header http.Header, response *models.AmfNon3GppAccessRegistration, problemDetails *models.ProblemDetails, ) { - ctx, pd, err := udm_context.GetSelf().GetTokenCtx(serviceNameNudrDr, nfTypeUDM) + ctx, pd, err := udm_context.GetSelf().GetTokenCtx(util.ServiceNameNudrDr, util.NfTypeUDR) if err != nil { return nil, nil, pd } @@ -408,7 +402,7 @@ func HandleUpdateAmf3gppAccessRequest(request *httpwrapper.Request) *httpwrapper func UpdateAmf3gppAccessProcedure(request models.Amf3GppAccessRegistrationModification, ueID string) ( problemDetails *models.ProblemDetails, ) { - ctx, pd, err := udm_context.GetSelf().GetTokenCtx(serviceNameNudrDr, nfTypeUDM) + ctx, pd, err := udm_context.GetSelf().GetTokenCtx(util.ServiceNameNudrDr, util.NfTypeUDR) if err != nil { return pd } @@ -530,7 +524,7 @@ func HandleUpdateAmfNon3gppAccessRequest(request *httpwrapper.Request) *httpwrap func UpdateAmfNon3gppAccessProcedure(request models.AmfNon3GppAccessRegistrationModification, ueID string) ( problemDetails *models.ProblemDetails, ) { - ctx, pd, err := udm_context.GetSelf().GetTokenCtx(serviceNameNudrDr, nfTypeUDM) + ctx, pd, err := udm_context.GetSelf().GetTokenCtx(util.ServiceNameNudrDr, util.NfTypeUDR) if err != nil { return pd } @@ -641,7 +635,7 @@ func HandleDeregistrationSmfRegistrations(request *httpwrapper.Request) *httpwra } func DeregistrationSmfRegistrationsProcedure(ueID string, pduSessionID string) (problemDetails *models.ProblemDetails) { - ctx, pd, err := udm_context.GetSelf().GetTokenCtx(serviceNameNudrDr, nfTypeUDM) + ctx, pd, err := udm_context.GetSelf().GetTokenCtx(util.ServiceNameNudrDr, util.NfTypeUDR) if err != nil { return pd } @@ -697,7 +691,7 @@ func HandleRegistrationSmfRegistrationsRequest(request *httpwrapper.Request) *ht func RegistrationSmfRegistrationsProcedure(request *models.SmfRegistration, ueID string, pduSessionID string) ( header http.Header, response *models.SmfRegistration, problemDetails *models.ProblemDetails, ) { - ctx, pd, err := udm_context.GetSelf().GetTokenCtx(serviceNameNudrDr, nfTypeUDM) + ctx, pd, err := udm_context.GetSelf().GetTokenCtx(util.ServiceNameNudrDr, util.NfTypeUDR) if err != nil { return nil, nil, pd } diff --git a/internal/sbi/subscriberdatamanagement/routers.go b/internal/sbi/subscriberdatamanagement/routers.go index c23b759..8727dd6 100644 --- a/internal/sbi/subscriberdatamanagement/routers.go +++ b/internal/sbi/subscriberdatamanagement/routers.go @@ -15,7 +15,6 @@ import ( "github.com/gin-gonic/gin" - "github.com/free5gc/openapi/models" udm_context "github.com/free5gc/udm/internal/context" "github.com/free5gc/udm/internal/logger" "github.com/free5gc/udm/internal/util" @@ -38,8 +37,6 @@ type Route struct { // Routes is the list of the generated Route. type Routes []Route -const serviceName string = string(models.ServiceName_NUDM_SDM) - // NewRouter returns a new router. func NewRouter() *gin.Engine { router := logger_util.NewGinWithLogrus(logger.GinLog) @@ -134,7 +131,7 @@ func threeLayerPathHandlerFunc(c *gin.Context) { func AddService(engine *gin.Engine) *gin.RouterGroup { group := engine.Group(factory.UdmSdmResUriPrefix) - routerAuthorizationCheck := util.NewRouterAuthorizationCheck(serviceName) + routerAuthorizationCheck := util.NewRouterAuthorizationCheck(util.ServiceNameNudmSdm) group.Use(func(c *gin.Context) { routerAuthorizationCheck.Check(c, udm_context.GetSelf()) }) diff --git a/internal/sbi/ueauthentication/routers.go b/internal/sbi/ueauthentication/routers.go index e99cb9f..25402b8 100644 --- a/internal/sbi/ueauthentication/routers.go +++ b/internal/sbi/ueauthentication/routers.go @@ -16,7 +16,6 @@ import ( "github.com/gin-gonic/gin" "github.com/sirupsen/logrus" - "github.com/free5gc/openapi/models" udm_context "github.com/free5gc/udm/internal/context" "github.com/free5gc/udm/internal/logger" "github.com/free5gc/udm/internal/util" @@ -45,8 +44,6 @@ type Route struct { // Routes is the list of the generated Route. type Routes []Route -const serviceName string = string(models.ServiceName_NUDM_UEAU) - // NewRouter returns a new router. func NewRouter() *gin.Engine { router := logger_util.NewGinWithLogrus(logger.GinLog) @@ -67,7 +64,7 @@ func genAuthDataHandlerFunc(c *gin.Context) { func AddService(engine *gin.Engine) *gin.RouterGroup { group := engine.Group(factory.UdmUeauResUriPrefix) - routerAuthorizationCheck := util.NewRouterAuthorizationCheck(serviceName) + routerAuthorizationCheck := util.NewRouterAuthorizationCheck(util.ServiceNameNudmUeau) group.Use(func(c *gin.Context) { routerAuthorizationCheck.Check(c, udm_context.GetSelf()) }) diff --git a/internal/sbi/uecontextmanagement/routers.go b/internal/sbi/uecontextmanagement/routers.go index 24fd672..23226cf 100644 --- a/internal/sbi/uecontextmanagement/routers.go +++ b/internal/sbi/uecontextmanagement/routers.go @@ -15,7 +15,6 @@ import ( "github.com/gin-gonic/gin" - "github.com/free5gc/openapi/models" udm_context "github.com/free5gc/udm/internal/context" "github.com/free5gc/udm/internal/logger" "github.com/free5gc/udm/internal/util" @@ -38,8 +37,6 @@ type Route struct { // Routes is the list of the generated Route. type Routes []Route -const serviceName string = string(models.ServiceName_NUDM_UECM) - // NewRouter returns a new router. func NewRouter() *gin.Engine { router := logger_util.NewGinWithLogrus(logger.GinLog) @@ -50,7 +47,7 @@ func NewRouter() *gin.Engine { func AddService(engine *gin.Engine) *gin.RouterGroup { group := engine.Group(factory.UdmUecmResUriPrefix) - routerAuthorizationCheck := util.NewRouterAuthorizationCheck(serviceName) + routerAuthorizationCheck := util.NewRouterAuthorizationCheck(util.ServiceNameNudmUecm) group.Use(func(c *gin.Context) { routerAuthorizationCheck.Check(c, udm_context.GetSelf()) }) diff --git a/internal/util/router_auth_check.go b/internal/util/router_auth_check.go index 0b4eece..6c60b7f 100644 --- a/internal/util/router_auth_check.go +++ b/internal/util/router_auth_check.go @@ -3,9 +3,10 @@ package util import ( "net/http" - "github.com/free5gc/udm/internal/logger" - udm_context "github.com/free5gc/udm/internal/context" "github.com/gin-gonic/gin" + + udm_context "github.com/free5gc/udm/internal/context" + "github.com/free5gc/udm/internal/logger" ) type NFContextGetter func() *udm_context.UDMContext diff --git a/internal/util/util.go b/internal/util/util.go index d4d0d5c..b206994 100644 --- a/internal/util/util.go +++ b/internal/util/util.go @@ -13,6 +13,23 @@ const ( UdmDefaultConfigPath = "./config/udmcfg.yaml" ) +const ( + ServiceNameNnrfDisc = string(models.ServiceName_NNRF_DISC) + ServiceNameNnrfNfm = string(models.ServiceName_NNRF_NFM) + ServiceNameNudmEe = string(models.ServiceName_NUDM_EE) + ServiceNameNudmPp = string(models.ServiceName_NUDM_PP) + ServiceNameNudmSdm = string(models.ServiceName_NUDM_SDM) + ServiceNameNudmUeau = string(models.ServiceName_NUDM_UEAU) + ServiceNameNudmUecm = string(models.ServiceName_NUDM_UECM) + ServiceNameNudrDr = string(models.ServiceName_NUDR_DR) +) + +const ( + NfTypeNRF = models.NfType_NRF + NfTypeUDM = models.NfType_UDM + NfTypeUDR = models.NfType_UDR +) + func ProblemDetailsSystemFailure(detail string) *models.ProblemDetails { return &models.ProblemDetails{ Title: "System failure", From f51eac898a326819a887903e1e90ae08461b6cf4 Mon Sep 17 00:00:00 2001 From: James Wu Date: Tue, 23 Jan 2024 20:39:15 +0800 Subject: [PATCH 19/21] fix gofumpt --- internal/sbi/producer/subscriber_data_management.go | 1 - 1 file changed, 1 deletion(-) diff --git a/internal/sbi/producer/subscriber_data_management.go b/internal/sbi/producer/subscriber_data_management.go index 163dc00..a21be22 100644 --- a/internal/sbi/producer/subscriber_data_management.go +++ b/internal/sbi/producer/subscriber_data_management.go @@ -419,7 +419,6 @@ func getSupiProcedure(supi string, plmnID string, dataSetNames []string, support // } if containDataSetName(dataSetNames, string(models.DataSetName_SM)) { - sessionManagementSubscriptionData, res, err := clientAPI.SessionManagementSubscriptionDataApi. QuerySmData(ctx, supi, plmnID, &querySmDataParamOpts) if err != nil { From e1984b99b7fa06a03b00e7e5c473b4f13b3d5d19 Mon Sep 17 00:00:00 2001 From: "CTFang@WireLab" Date: Fri, 2 Feb 2024 04:20:57 +0000 Subject: [PATCH 20/21] Fix: add consumer with token --- internal/sbi/producer/subscriber_data_management.go | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/internal/sbi/producer/subscriber_data_management.go b/internal/sbi/producer/subscriber_data_management.go index a21be22..9daa2c8 100644 --- a/internal/sbi/producer/subscriber_data_management.go +++ b/internal/sbi/producer/subscriber_data_management.go @@ -1,7 +1,6 @@ package producer import ( - "context" "encoding/json" "net/http" "net/url" @@ -1453,8 +1452,13 @@ func getUeContextInSmfDataProcedure(supi string, supportedFeatures string) ( pduSessionMap := make(map[string]models.PduSession) udm_context.GetSelf().CreateUeContextInSmfDataforUe(supi, body) + ctx, pd, err := udm_context.GetSelf().GetTokenCtx(util.ServiceNameNudrDr, util.NfTypeUDR) + if err != nil { + return nil, pd + } + pdusess, res, err := clientAPI.SMFRegistrationsCollectionApi.QuerySmfRegList( - context.Background(), supi, &querySmfRegListParamOpts) + ctx, supi, &querySmfRegListParamOpts) if err != nil { if res == nil { logger.SdmLog.Infoln(err) From a360dcff96e3560c1d1451a210efc26c6facb6e9 Mon Sep 17 00:00:00 2001 From: CTFang Date: Tue, 6 Feb 2024 14:32:29 +0000 Subject: [PATCH 21/21] Fix: use models serviceName --- internal/context/context.go | 10 +++--- internal/sbi/consumer/nf_discovery.go | 2 +- internal/sbi/consumer/nf_management.go | 3 +- internal/sbi/eventexposure/routers.go | 3 +- internal/sbi/parameterprovision/routers.go | 3 +- internal/sbi/producer/callback/callback.go | 5 ++- internal/sbi/producer/generate_auth_data.go | 5 ++- internal/sbi/producer/parameter_provision.go | 3 +- .../producer/subscriber_data_management.go | 31 +++++++++---------- .../sbi/producer/ue_context_management.go | 17 +++++----- .../sbi/subscriberdatamanagement/routers.go | 3 +- internal/sbi/ueauthentication/routers.go | 3 +- internal/sbi/uecontextmanagement/routers.go | 3 +- internal/util/router_auth_check.go | 5 +-- internal/util/router_auth_check_test.go | 6 ++-- internal/util/util.go | 17 ---------- 16 files changed, 52 insertions(+), 67 deletions(-) diff --git a/internal/context/context.go b/internal/context/context.go index fa94b96..3450dc3 100644 --- a/internal/context/context.go +++ b/internal/context/context.go @@ -37,7 +37,7 @@ func Init() { } type NFContext interface { - AuthorizationCheck(token, serviceName string) error + AuthorizationCheck(token string, serviceName models.ServiceName) error } var _ NFContext = &UDMContext{} @@ -489,27 +489,27 @@ func (context *UDMContext) InitNFService(serviceName []string, version string) { } } -func (c *UDMContext) GetTokenCtx(scope string, targetNF models.NfType) ( +func (c *UDMContext) GetTokenCtx(serviceName models.ServiceName, targetNF models.NfType) ( context.Context, *models.ProblemDetails, error, ) { if !c.OAuth2Required { return context.TODO(), nil, nil } return oauth.GetTokenCtx(models.NfType_UDM, targetNF, - c.NfId, c.NrfUri, scope) + c.NfId, c.NrfUri, string(serviceName)) } func GetSelf() *UDMContext { return &udmContext } -func (context *UDMContext) AuthorizationCheck(token, serviceName string) error { +func (context *UDMContext) AuthorizationCheck(token string, serviceName models.ServiceName) error { if !context.OAuth2Required { logger.UtilLog.Debugf("UDMContext::AuthorizationCheck: OAuth2 not required\n") return nil } logger.UtilLog.Debugf("UDMContext::AuthorizationCheck: token[%s] serviceName[%s]\n", token, serviceName) - err := oauth.VerifyOAuth(token, serviceName, context.NrfCertPem) + err := oauth.VerifyOAuth(token, string(serviceName), context.NrfCertPem) if err != nil { return err } diff --git a/internal/sbi/consumer/nf_discovery.go b/internal/sbi/consumer/nf_discovery.go index 90f8cb2..0cfaa67 100644 --- a/internal/sbi/consumer/nf_discovery.go +++ b/internal/sbi/consumer/nf_discovery.go @@ -25,7 +25,7 @@ func SendNFIntances(nrfUri string, targetNfType, requestNfType models.NfType, configuration.SetBasePath(nrfUri) // addr clientNRF := Nnrf_NFDiscovery.NewAPIClient(configuration) - ctx, _, err := udm_context.GetSelf().GetTokenCtx(util.ServiceNameNnrfDisc, util.NfTypeNRF) + ctx, _, err := udm_context.GetSelf().GetTokenCtx(models.ServiceName_NNRF_DISC, models.NfType_NRF) if err != nil { return } diff --git a/internal/sbi/consumer/nf_management.go b/internal/sbi/consumer/nf_management.go index f7da746..5aef130 100644 --- a/internal/sbi/consumer/nf_management.go +++ b/internal/sbi/consumer/nf_management.go @@ -12,7 +12,6 @@ import ( "github.com/free5gc/openapi/models" udm_context "github.com/free5gc/udm/internal/context" "github.com/free5gc/udm/internal/logger" - "github.com/free5gc/udm/internal/util" ) func BuildNFInstance(udmContext *udm_context.UDMContext) (profile models.NfProfile, err error) { @@ -95,7 +94,7 @@ func SendRegisterNFInstance(nrfUri, nfInstanceId string, profile models.NfProfil func SendDeregisterNFInstance() (problemDetails *models.ProblemDetails, err error) { logger.ConsumerLog.Infof("Send Deregister NFInstance") - ctx, pd, err := udm_context.GetSelf().GetTokenCtx(util.ServiceNameNnrfNfm, util.NfTypeNRF) + ctx, pd, err := udm_context.GetSelf().GetTokenCtx(models.ServiceName_NNRF_NFM, models.NfType_NRF) if err != nil { return pd, err } diff --git a/internal/sbi/eventexposure/routers.go b/internal/sbi/eventexposure/routers.go index a291fde..a6f7400 100644 --- a/internal/sbi/eventexposure/routers.go +++ b/internal/sbi/eventexposure/routers.go @@ -15,6 +15,7 @@ import ( "github.com/gin-gonic/gin" + "github.com/free5gc/openapi/models" udm_context "github.com/free5gc/udm/internal/context" "github.com/free5gc/udm/internal/logger" "github.com/free5gc/udm/internal/util" @@ -48,7 +49,7 @@ func NewRouter() *gin.Engine { func AddService(engine *gin.Engine) *gin.RouterGroup { group := engine.Group(factory.UdmEeResUriPrefix) - routerAuthorizationCheck := util.NewRouterAuthorizationCheck(util.ServiceNameNudmEe) + routerAuthorizationCheck := util.NewRouterAuthorizationCheck(models.ServiceName_NUDM_EE) group.Use(func(c *gin.Context) { routerAuthorizationCheck.Check(c, udm_context.GetSelf()) }) diff --git a/internal/sbi/parameterprovision/routers.go b/internal/sbi/parameterprovision/routers.go index 31b70c0..1066db4 100644 --- a/internal/sbi/parameterprovision/routers.go +++ b/internal/sbi/parameterprovision/routers.go @@ -15,6 +15,7 @@ import ( "github.com/gin-gonic/gin" + "github.com/free5gc/openapi/models" udm_context "github.com/free5gc/udm/internal/context" "github.com/free5gc/udm/internal/logger" "github.com/free5gc/udm/internal/util" @@ -47,7 +48,7 @@ func NewRouter() *gin.Engine { func AddService(engine *gin.Engine) *gin.RouterGroup { group := engine.Group(factory.UdmPpResUriPrefix) - routerAuthorizationCheck := util.NewRouterAuthorizationCheck(util.ServiceNameNudmPp) + routerAuthorizationCheck := util.NewRouterAuthorizationCheck(models.ServiceName_NUDM_PP) group.Use(func(c *gin.Context) { routerAuthorizationCheck.Check(c, udm_context.GetSelf()) }) diff --git a/internal/sbi/producer/callback/callback.go b/internal/sbi/producer/callback/callback.go index 2540964..cf22d03 100644 --- a/internal/sbi/producer/callback/callback.go +++ b/internal/sbi/producer/callback/callback.go @@ -8,11 +8,10 @@ import ( "github.com/free5gc/openapi/models" udm_context "github.com/free5gc/udm/internal/context" "github.com/free5gc/udm/internal/logger" - "github.com/free5gc/udm/internal/util" ) func DataChangeNotificationProcedure(notifyItems []models.NotifyItem, supi string) *models.ProblemDetails { - ctx, pd, err := udm_context.GetSelf().GetTokenCtx(util.ServiceNameNudmSdm, util.NfTypeUDM) + ctx, pd, err := udm_context.GetSelf().GetTokenCtx(models.ServiceName_NUDM_SDM, models.NfType_UDM) if err != nil { return pd } @@ -58,7 +57,7 @@ func DataChangeNotificationProcedure(notifyItems []models.NotifyItem, supi strin func SendOnDeregistrationNotification(ueId string, onDeregistrationNotificationUrl string, deregistData models.DeregistrationData, ) *models.ProblemDetails { - ctx, pd, err := udm_context.GetSelf().GetTokenCtx(util.ServiceNameNudmUecm, util.NfTypeUDM) + ctx, pd, err := udm_context.GetSelf().GetTokenCtx(models.ServiceName_NUDM_UECM, models.NfType_UDM) if err != nil { return pd } diff --git a/internal/sbi/producer/generate_auth_data.go b/internal/sbi/producer/generate_auth_data.go index eaa3978..fba8a2c 100644 --- a/internal/sbi/producer/generate_auth_data.go +++ b/internal/sbi/producer/generate_auth_data.go @@ -19,7 +19,6 @@ import ( "github.com/free5gc/openapi/models" udm_context "github.com/free5gc/udm/internal/context" "github.com/free5gc/udm/internal/logger" - "github.com/free5gc/udm/internal/util" "github.com/free5gc/udm/pkg/suci" "github.com/free5gc/util/httpwrapper" "github.com/free5gc/util/milenage" @@ -119,7 +118,7 @@ func HandleConfirmAuthDataRequest(request *httpwrapper.Request) *httpwrapper.Res } func ConfirmAuthDataProcedure(authEvent models.AuthEvent, supi string) (problemDetails *models.ProblemDetails) { - ctx, pd, err := udm_context.GetSelf().GetTokenCtx(util.ServiceNameNudrDr, util.NfTypeUDR) + ctx, pd, err := udm_context.GetSelf().GetTokenCtx(models.ServiceName_NUDR_DR, models.NfType_UDR) if err != nil { return pd } @@ -156,7 +155,7 @@ func ConfirmAuthDataProcedure(authEvent models.AuthEvent, supi string) (problemD func GenerateAuthDataProcedure(authInfoRequest models.AuthenticationInfoRequest, supiOrSuci string) ( response *models.AuthenticationInfoResult, problemDetails *models.ProblemDetails, ) { - ctx, pd, err := udm_context.GetSelf().GetTokenCtx(util.ServiceNameNudrDr, util.NfTypeUDR) + ctx, pd, err := udm_context.GetSelf().GetTokenCtx(models.ServiceName_NUDR_DR, models.NfType_UDR) if err != nil { return nil, pd } diff --git a/internal/sbi/producer/parameter_provision.go b/internal/sbi/producer/parameter_provision.go index ec05756..d3dfae1 100644 --- a/internal/sbi/producer/parameter_provision.go +++ b/internal/sbi/producer/parameter_provision.go @@ -7,7 +7,6 @@ import ( "github.com/free5gc/openapi/models" udm_context "github.com/free5gc/udm/internal/context" "github.com/free5gc/udm/internal/logger" - "github.com/free5gc/udm/internal/util" "github.com/free5gc/util/httpwrapper" ) @@ -31,7 +30,7 @@ func HandleUpdateRequest(request *httpwrapper.Request) *httpwrapper.Response { } func UpdateProcedure(updateRequest models.PpData, gpsi string) (problemDetails *models.ProblemDetails) { - ctx, pd, err := udm_context.GetSelf().GetTokenCtx(util.ServiceNameNudrDr, util.NfTypeUDR) + ctx, pd, err := udm_context.GetSelf().GetTokenCtx(models.ServiceName_NUDR_DR, models.NfType_UDR) if err != nil { return pd } diff --git a/internal/sbi/producer/subscriber_data_management.go b/internal/sbi/producer/subscriber_data_management.go index 9daa2c8..cf36bcd 100644 --- a/internal/sbi/producer/subscriber_data_management.go +++ b/internal/sbi/producer/subscriber_data_management.go @@ -15,7 +15,6 @@ import ( "github.com/free5gc/openapi/models" udm_context "github.com/free5gc/udm/internal/context" "github.com/free5gc/udm/internal/logger" - "github.com/free5gc/udm/internal/util" "github.com/free5gc/util/httpwrapper" ) @@ -54,7 +53,7 @@ func HandleGetAmDataRequest(request *httpwrapper.Request) *httpwrapper.Response func getAmDataProcedure(supi string, plmnID string, supportedFeatures string) ( response *models.AccessAndMobilitySubscriptionData, problemDetails *models.ProblemDetails, ) { - ctx, pd, err := udm_context.GetSelf().GetTokenCtx(util.ServiceNameNudrDr, util.NfTypeUDR) + ctx, pd, err := udm_context.GetSelf().GetTokenCtx(models.ServiceName_NUDR_DR, models.NfType_UDR) if err != nil { return nil, pd } @@ -133,7 +132,7 @@ func HandleGetIdTranslationResultRequest(request *httpwrapper.Request) *httpwrap func getIdTranslationResultProcedure(gpsi string) (response *models.IdTranslationResult, problemDetails *models.ProblemDetails, ) { - ctx, pd, err := udm_context.GetSelf().GetTokenCtx(util.ServiceNameNudrDr, util.NfTypeNRF) + ctx, pd, err := udm_context.GetSelf().GetTokenCtx(models.ServiceName_NUDR_DR, models.NfType_UDR) if err != nil { return nil, pd } @@ -229,7 +228,7 @@ func HandleGetSupiRequest(request *httpwrapper.Request) *httpwrapper.Response { func getSupiProcedure(supi string, plmnID string, dataSetNames []string, supportedFeatures string) ( response *models.SubscriptionDataSets, problemDetails *models.ProblemDetails, ) { - ctx, pd, err := udm_context.GetSelf().GetTokenCtx(util.ServiceNameNudrDr, util.NfTypeUDR) + ctx, pd, err := udm_context.GetSelf().GetTokenCtx(models.ServiceName_NUDR_DR, models.NfType_UDR) if err != nil { return nil, pd } @@ -537,7 +536,7 @@ func HandleGetSharedDataRequest(request *httpwrapper.Request) *httpwrapper.Respo func getSharedDataProcedure(sharedDataIds []string, supportedFeatures string) ( response []models.SharedData, problemDetails *models.ProblemDetails, ) { - ctx, pd, err := udm_context.GetSelf().GetTokenCtx(util.ServiceNameNudrDr, util.NfTypeUDR) + ctx, pd, err := udm_context.GetSelf().GetTokenCtx(models.ServiceName_NUDR_DR, models.NfType_UDR) if err != nil { return nil, pd } @@ -623,7 +622,7 @@ func HandleGetSmDataRequest(request *httpwrapper.Request) *httpwrapper.Response func getSmDataProcedure(supi string, plmnID string, Dnn string, Snssai string, supportedFeatures string) ( response interface{}, problemDetails *models.ProblemDetails, ) { - ctx, pd, err := udm_context.GetSelf().GetTokenCtx(util.ServiceNameNudrDr, util.NfTypeUDR) + ctx, pd, err := udm_context.GetSelf().GetTokenCtx(models.ServiceName_NUDR_DR, models.NfType_UDR) if err != nil { return nil, pd } @@ -739,7 +738,7 @@ func HandleGetNssaiRequest(request *httpwrapper.Request) *httpwrapper.Response { func getNssaiProcedure(supi string, plmnID string, supportedFeatures string) ( *models.Nssai, *models.ProblemDetails, ) { - ctx, pd, err := udm_context.GetSelf().GetTokenCtx(util.ServiceNameNudrDr, util.NfTypeUDR) + ctx, pd, err := udm_context.GetSelf().GetTokenCtx(models.ServiceName_NUDR_DR, models.NfType_UDR) if err != nil { return nil, pd } @@ -828,7 +827,7 @@ func HandleGetSmfSelectDataRequest(request *httpwrapper.Request) *httpwrapper.Re func getSmfSelectDataProcedure(supi string, plmnID string, supportedFeatures string) ( response *models.SmfSelectionSubscriptionData, problemDetails *models.ProblemDetails, ) { - ctx, pd, err := udm_context.GetSelf().GetTokenCtx(util.ServiceNameNudrDr, util.NfTypeUDR) + ctx, pd, err := udm_context.GetSelf().GetTokenCtx(models.ServiceName_NUDR_DR, models.NfType_UDR) if err != nil { return nil, pd } @@ -909,7 +908,7 @@ func HandleSubscribeToSharedDataRequest(request *httpwrapper.Request) *httpwrapp func subscribeToSharedDataProcedure(sdmSubscription *models.SdmSubscription) ( header http.Header, response *models.SdmSubscription, problemDetails *models.ProblemDetails, ) { - ctx, pd, err := udm_context.GetSelf().GetTokenCtx(util.ServiceNameNudmSdm, util.NfTypeUDM) + ctx, pd, err := udm_context.GetSelf().GetTokenCtx(models.ServiceName_NUDM_SDM, models.NfType_UDM) if err != nil { return nil, nil, pd } @@ -988,7 +987,7 @@ func HandleSubscribeRequest(request *httpwrapper.Request) *httpwrapper.Response func subscribeProcedure(sdmSubscription *models.SdmSubscription, supi string) ( header http.Header, response *models.SdmSubscription, problemDetails *models.ProblemDetails, ) { - ctx, pd, err := udm_context.GetSelf().GetTokenCtx(util.ServiceNameNudrDr, util.NfTypeUDR) + ctx, pd, err := udm_context.GetSelf().GetTokenCtx(models.ServiceName_NUDR_DR, models.NfType_UDR) if err != nil { return nil, nil, pd } @@ -1063,7 +1062,7 @@ func HandleUnsubscribeForSharedDataRequest(request *httpwrapper.Request) *httpwr // TS 29.503 5.2.2.4.3 // Unsubscribe to notifications of data change func unsubscribeForSharedDataProcedure(subscriptionID string) *models.ProblemDetails { - ctx, pd, err := udm_context.GetSelf().GetTokenCtx(util.ServiceNameNudmSdm, util.NfTypeUDM) + ctx, pd, err := udm_context.GetSelf().GetTokenCtx(models.ServiceName_NUDM_SDM, models.NfType_UDM) if err != nil { return pd } @@ -1125,7 +1124,7 @@ func HandleUnsubscribeRequest(request *httpwrapper.Request) *httpwrapper.Respons // TS 29.503 5.2.2.4.2 // Unsubscribe to notifications of data change func unsubscribeProcedure(supi string, subscriptionID string) *models.ProblemDetails { - ctx, pd, err := udm_context.GetSelf().GetTokenCtx(util.ServiceNameNudrDr, util.NfTypeUDR) + ctx, pd, err := udm_context.GetSelf().GetTokenCtx(models.ServiceName_NUDR_DR, models.NfType_UDR) if err != nil { return pd } @@ -1198,7 +1197,7 @@ func HandleModifyRequest(request *httpwrapper.Request) *httpwrapper.Response { func modifyProcedure(sdmSubsModification *models.SdmSubsModification, supi string, subscriptionID string) ( response *models.SdmSubscription, problemDetails *models.ProblemDetails, ) { - ctx, pd, err := udm_context.GetSelf().GetTokenCtx(util.ServiceNameNudrDr, util.NfTypeUDR) + ctx, pd, err := udm_context.GetSelf().GetTokenCtx(models.ServiceName_NUDR_DR, models.NfType_UDR) if err != nil { return nil, pd } @@ -1277,7 +1276,7 @@ func HandleModifyForSharedDataRequest(request *httpwrapper.Request) *httpwrapper func modifyForSharedDataProcedure(sdmSubsModification *models.SdmSubsModification, supi string, subscriptionID string, ) (response *models.SdmSubscription, problemDetails *models.ProblemDetails) { - ctx, pd, err := udm_context.GetSelf().GetTokenCtx(util.ServiceNameNudrDr, util.NfTypeUDR) + ctx, pd, err := udm_context.GetSelf().GetTokenCtx(models.ServiceName_NUDR_DR, models.NfType_UDR) if err != nil { return nil, pd } @@ -1354,7 +1353,7 @@ func HandleGetTraceDataRequest(request *httpwrapper.Request) *httpwrapper.Respon func getTraceDataProcedure(supi string, plmnID string) ( response *models.TraceData, problemDetails *models.ProblemDetails, ) { - ctx, pd, err := udm_context.GetSelf().GetTokenCtx(util.ServiceNameNudrDr, util.NfTypeUDR) + ctx, pd, err := udm_context.GetSelf().GetTokenCtx(models.ServiceName_NUDR_DR, models.NfType_UDR) if err != nil { return nil, pd } @@ -1452,7 +1451,7 @@ func getUeContextInSmfDataProcedure(supi string, supportedFeatures string) ( pduSessionMap := make(map[string]models.PduSession) udm_context.GetSelf().CreateUeContextInSmfDataforUe(supi, body) - ctx, pd, err := udm_context.GetSelf().GetTokenCtx(util.ServiceNameNudrDr, util.NfTypeUDR) + ctx, pd, err := udm_context.GetSelf().GetTokenCtx(models.ServiceName_NUDR_DR, models.NfType_UDR) if err != nil { return nil, pd } diff --git a/internal/sbi/producer/ue_context_management.go b/internal/sbi/producer/ue_context_management.go index 3483f09..f1f9b0c 100644 --- a/internal/sbi/producer/ue_context_management.go +++ b/internal/sbi/producer/ue_context_management.go @@ -15,7 +15,6 @@ import ( "github.com/free5gc/udm/internal/logger" "github.com/free5gc/udm/internal/sbi/consumer" "github.com/free5gc/udm/internal/sbi/producer/callback" - "github.com/free5gc/udm/internal/util" "github.com/free5gc/util/httpwrapper" ) @@ -102,7 +101,7 @@ func HandleGetAmf3gppAccessRequest(request *httpwrapper.Request) *httpwrapper.Re func GetAmf3gppAccessProcedure(ueID string, supportedFeatures string) ( response *models.Amf3GppAccessRegistration, problemDetails *models.ProblemDetails, ) { - ctx, pd, err := udm_context.GetSelf().GetTokenCtx(util.ServiceNameNudrDr, util.NfTypeUDR) + ctx, pd, err := udm_context.GetSelf().GetTokenCtx(models.ServiceName_NUDR_DR, models.NfType_UDR) if err != nil { return nil, pd } @@ -164,7 +163,7 @@ func GetAmfNon3gppAccessProcedure(queryAmfContextNon3gppParamOpts Nudr_DataRepos QueryAmfContextNon3gppParamOpts, ueID string) (response *models.AmfNon3GppAccessRegistration, problemDetails *models.ProblemDetails, ) { - ctx, pd, err := udm_context.GetSelf().GetTokenCtx(util.ServiceNameNudrDr, util.NfTypeUDR) + ctx, pd, err := udm_context.GetSelf().GetTokenCtx(models.ServiceName_NUDR_DR, models.NfType_UDR) if err != nil { return nil, pd } @@ -222,7 +221,7 @@ func HandleRegistrationAmf3gppAccessRequest(request *httpwrapper.Request) *httpw func RegistrationAmf3gppAccessProcedure(registerRequest models.Amf3GppAccessRegistration, ueID string) ( header http.Header, response *models.Amf3GppAccessRegistration, problemDetails *models.ProblemDetails, ) { - ctx, pd, err := udm_context.GetSelf().GetTokenCtx(util.ServiceNameNudrDr, util.NfTypeUDR) + ctx, pd, err := udm_context.GetSelf().GetTokenCtx(models.ServiceName_NUDR_DR, models.NfType_UDR) if err != nil { return nil, nil, pd } @@ -323,7 +322,7 @@ func HandleRegisterAmfNon3gppAccessRequest(request *httpwrapper.Request) *httpwr func RegisterAmfNon3gppAccessProcedure(registerRequest models.AmfNon3GppAccessRegistration, ueID string) ( header http.Header, response *models.AmfNon3GppAccessRegistration, problemDetails *models.ProblemDetails, ) { - ctx, pd, err := udm_context.GetSelf().GetTokenCtx(util.ServiceNameNudrDr, util.NfTypeUDR) + ctx, pd, err := udm_context.GetSelf().GetTokenCtx(models.ServiceName_NUDR_DR, models.NfType_UDR) if err != nil { return nil, nil, pd } @@ -402,7 +401,7 @@ func HandleUpdateAmf3gppAccessRequest(request *httpwrapper.Request) *httpwrapper func UpdateAmf3gppAccessProcedure(request models.Amf3GppAccessRegistrationModification, ueID string) ( problemDetails *models.ProblemDetails, ) { - ctx, pd, err := udm_context.GetSelf().GetTokenCtx(util.ServiceNameNudrDr, util.NfTypeUDR) + ctx, pd, err := udm_context.GetSelf().GetTokenCtx(models.ServiceName_NUDR_DR, models.NfType_UDR) if err != nil { return pd } @@ -524,7 +523,7 @@ func HandleUpdateAmfNon3gppAccessRequest(request *httpwrapper.Request) *httpwrap func UpdateAmfNon3gppAccessProcedure(request models.AmfNon3GppAccessRegistrationModification, ueID string) ( problemDetails *models.ProblemDetails, ) { - ctx, pd, err := udm_context.GetSelf().GetTokenCtx(util.ServiceNameNudrDr, util.NfTypeUDR) + ctx, pd, err := udm_context.GetSelf().GetTokenCtx(models.ServiceName_NUDR_DR, models.NfType_UDR) if err != nil { return pd } @@ -635,7 +634,7 @@ func HandleDeregistrationSmfRegistrations(request *httpwrapper.Request) *httpwra } func DeregistrationSmfRegistrationsProcedure(ueID string, pduSessionID string) (problemDetails *models.ProblemDetails) { - ctx, pd, err := udm_context.GetSelf().GetTokenCtx(util.ServiceNameNudrDr, util.NfTypeUDR) + ctx, pd, err := udm_context.GetSelf().GetTokenCtx(models.ServiceName_NUDR_DR, models.NfType_UDR) if err != nil { return pd } @@ -691,7 +690,7 @@ func HandleRegistrationSmfRegistrationsRequest(request *httpwrapper.Request) *ht func RegistrationSmfRegistrationsProcedure(request *models.SmfRegistration, ueID string, pduSessionID string) ( header http.Header, response *models.SmfRegistration, problemDetails *models.ProblemDetails, ) { - ctx, pd, err := udm_context.GetSelf().GetTokenCtx(util.ServiceNameNudrDr, util.NfTypeUDR) + ctx, pd, err := udm_context.GetSelf().GetTokenCtx(models.ServiceName_NUDR_DR, models.NfType_UDR) if err != nil { return nil, nil, pd } diff --git a/internal/sbi/subscriberdatamanagement/routers.go b/internal/sbi/subscriberdatamanagement/routers.go index 8727dd6..82469d1 100644 --- a/internal/sbi/subscriberdatamanagement/routers.go +++ b/internal/sbi/subscriberdatamanagement/routers.go @@ -15,6 +15,7 @@ import ( "github.com/gin-gonic/gin" + "github.com/free5gc/openapi/models" udm_context "github.com/free5gc/udm/internal/context" "github.com/free5gc/udm/internal/logger" "github.com/free5gc/udm/internal/util" @@ -131,7 +132,7 @@ func threeLayerPathHandlerFunc(c *gin.Context) { func AddService(engine *gin.Engine) *gin.RouterGroup { group := engine.Group(factory.UdmSdmResUriPrefix) - routerAuthorizationCheck := util.NewRouterAuthorizationCheck(util.ServiceNameNudmSdm) + routerAuthorizationCheck := util.NewRouterAuthorizationCheck(models.ServiceName_NUDM_SDM) group.Use(func(c *gin.Context) { routerAuthorizationCheck.Check(c, udm_context.GetSelf()) }) diff --git a/internal/sbi/ueauthentication/routers.go b/internal/sbi/ueauthentication/routers.go index 25402b8..2ca5def 100644 --- a/internal/sbi/ueauthentication/routers.go +++ b/internal/sbi/ueauthentication/routers.go @@ -16,6 +16,7 @@ import ( "github.com/gin-gonic/gin" "github.com/sirupsen/logrus" + "github.com/free5gc/openapi/models" udm_context "github.com/free5gc/udm/internal/context" "github.com/free5gc/udm/internal/logger" "github.com/free5gc/udm/internal/util" @@ -64,7 +65,7 @@ func genAuthDataHandlerFunc(c *gin.Context) { func AddService(engine *gin.Engine) *gin.RouterGroup { group := engine.Group(factory.UdmUeauResUriPrefix) - routerAuthorizationCheck := util.NewRouterAuthorizationCheck(util.ServiceNameNudmUeau) + routerAuthorizationCheck := util.NewRouterAuthorizationCheck(models.ServiceName_NUDM_UEAU) group.Use(func(c *gin.Context) { routerAuthorizationCheck.Check(c, udm_context.GetSelf()) }) diff --git a/internal/sbi/uecontextmanagement/routers.go b/internal/sbi/uecontextmanagement/routers.go index 23226cf..ab67e22 100644 --- a/internal/sbi/uecontextmanagement/routers.go +++ b/internal/sbi/uecontextmanagement/routers.go @@ -15,6 +15,7 @@ import ( "github.com/gin-gonic/gin" + "github.com/free5gc/openapi/models" udm_context "github.com/free5gc/udm/internal/context" "github.com/free5gc/udm/internal/logger" "github.com/free5gc/udm/internal/util" @@ -47,7 +48,7 @@ func NewRouter() *gin.Engine { func AddService(engine *gin.Engine) *gin.RouterGroup { group := engine.Group(factory.UdmUecmResUriPrefix) - routerAuthorizationCheck := util.NewRouterAuthorizationCheck(util.ServiceNameNudmUecm) + routerAuthorizationCheck := util.NewRouterAuthorizationCheck(models.ServiceName_NUDM_UECM) group.Use(func(c *gin.Context) { routerAuthorizationCheck.Check(c, udm_context.GetSelf()) }) diff --git a/internal/util/router_auth_check.go b/internal/util/router_auth_check.go index 6c60b7f..4434cbe 100644 --- a/internal/util/router_auth_check.go +++ b/internal/util/router_auth_check.go @@ -5,6 +5,7 @@ import ( "github.com/gin-gonic/gin" + "github.com/free5gc/openapi/models" udm_context "github.com/free5gc/udm/internal/context" "github.com/free5gc/udm/internal/logger" ) @@ -12,10 +13,10 @@ import ( type NFContextGetter func() *udm_context.UDMContext type RouterAuthorizationCheck struct { - serviceName string + serviceName models.ServiceName } -func NewRouterAuthorizationCheck(serviceName string) *RouterAuthorizationCheck { +func NewRouterAuthorizationCheck(serviceName models.ServiceName) *RouterAuthorizationCheck { return &RouterAuthorizationCheck{ serviceName: serviceName, } diff --git a/internal/util/router_auth_check_test.go b/internal/util/router_auth_check_test.go index f534a23..99a4140 100644 --- a/internal/util/router_auth_check_test.go +++ b/internal/util/router_auth_check_test.go @@ -7,6 +7,8 @@ import ( "github.com/gin-gonic/gin" "github.com/pkg/errors" + + "github.com/free5gc/openapi/models" ) const ( @@ -20,7 +22,7 @@ func newMockUDMContext() *mockUDMContext { return &mockUDMContext{} } -func (m *mockUDMContext) AuthorizationCheck(token string, serviceName string) error { +func (m *mockUDMContext) AuthorizationCheck(token string, serviceName models.ServiceName) error { if token == Valid { return nil } @@ -81,7 +83,7 @@ func TestRouterAuthorizationCheck_Check(t *testing.T) { } c.Request.Header.Set("Authorization", tt.args.token) - rac := NewRouterAuthorizationCheck("testService") + rac := NewRouterAuthorizationCheck(models.ServiceName("testService")) rac.Check(c, newMockUDMContext()) if w.Code != tt.want.statusCode { t.Errorf("StatusCode should be %d, but got %d", tt.want.statusCode, w.Code) diff --git a/internal/util/util.go b/internal/util/util.go index b206994..d4d0d5c 100644 --- a/internal/util/util.go +++ b/internal/util/util.go @@ -13,23 +13,6 @@ const ( UdmDefaultConfigPath = "./config/udmcfg.yaml" ) -const ( - ServiceNameNnrfDisc = string(models.ServiceName_NNRF_DISC) - ServiceNameNnrfNfm = string(models.ServiceName_NNRF_NFM) - ServiceNameNudmEe = string(models.ServiceName_NUDM_EE) - ServiceNameNudmPp = string(models.ServiceName_NUDM_PP) - ServiceNameNudmSdm = string(models.ServiceName_NUDM_SDM) - ServiceNameNudmUeau = string(models.ServiceName_NUDM_UEAU) - ServiceNameNudmUecm = string(models.ServiceName_NUDM_UECM) - ServiceNameNudrDr = string(models.ServiceName_NUDR_DR) -) - -const ( - NfTypeNRF = models.NfType_NRF - NfTypeUDM = models.NfType_UDM - NfTypeUDR = models.NfType_UDR -) - func ProblemDetailsSystemFailure(detail string) *models.ProblemDetails { return &models.ProblemDetails{ Title: "System failure",