Skip to content

Commit

Permalink
Feature: Add Config ServiceList
Browse files Browse the repository at this point in the history
  • Loading branch information
andy89923 committed Nov 7, 2023
1 parent 19ed5ca commit 91bcdad
Show file tree
Hide file tree
Showing 3 changed files with 55 additions and 12 deletions.
16 changes: 10 additions & 6 deletions internal/sbi/consumer/nf_accesstoken.go
Original file line number Diff line number Diff line change
Expand Up @@ -4,21 +4,24 @@ import (
"context"
"time"

udr_context "github.com/free5gc/udr/internal/context"
"github.com/free5gc/udr/internal/logger"
"github.com/free5gc/udr/pkg/factory"
"github.com/antihax/optional"
"golang.org/x/oauth2"

"github.com/free5gc/openapi"

"github.com/free5gc/openapi/Nnrf_AccessToken"
"github.com/free5gc/openapi/models"

"github.com/antihax/optional"
"golang.org/x/oauth2"
udr_context "github.com/free5gc/udr/internal/context"
"github.com/free5gc/udr/internal/logger"
"github.com/free5gc/udr/pkg/factory"
)

func GetTokenCtx(scope, targetNF string) (context.Context, *models.ProblemDetails, error) {
if factory.UdrConfig.GetOAuth() {
tok, pd, err := sendAccTokenReq(scope, targetNF)
// udrSelf := udr_context.GetSelf()
// tok, pd, err := util.SendAccTokenReq
// (udrSelf.NfId, models.NfType_UDR, &udrSelf.TokenMap, &udrSelf.ClientMap, scope, targetNF, udrSelf.NrfUri)
if err != nil {
return nil, pd, err
}
Expand Down Expand Up @@ -80,6 +83,7 @@ func sendAccTokenReq(scope, targetNF string) (oauth2.TokenSource, *models.Proble
return nil, nil, err
}
problem := err.(openapi.GenericOpenAPIError).Model().(models.ProblemDetails)
// problem := err.(openapi.GenericOpenAPIError).Model().(models.AccessTokenErr)
return nil, &problem, err
} else {
return nil, nil, openapi.ReportError("server no response")
Expand Down
6 changes: 3 additions & 3 deletions internal/sbi/consumer/nf_managemant.go
Original file line number Diff line number Diff line change
Expand Up @@ -121,7 +121,7 @@ func SendDeregisterNFInstance() (problemDetails *models.ProblemDetails, err erro

res, err = client.NFInstanceIDDocumentApi.DeregisterNFInstance(ctx, udrSelf.NfId)
if err == nil {
return
return problemDetails, nil
} else if res != nil {
defer func() {
if rspCloseErr := res.Body.Close(); rspCloseErr != nil {
Expand All @@ -130,12 +130,12 @@ func SendDeregisterNFInstance() (problemDetails *models.ProblemDetails, err erro
}()

if res.Status != err.Error() {
return
return nil, nil
}
problem := err.(openapi.GenericOpenAPIError).Model().(models.ProblemDetails)
problemDetails = &problem
} else {
err = openapi.ReportError("server no response")
}
return
return problemDetails, nil
}
45 changes: 42 additions & 3 deletions pkg/factory/config.go
Original file line number Diff line number Diff line change
Expand Up @@ -9,6 +9,7 @@ import (
"sync"

"github.com/asaskevich/govalidator"
"github.com/pkg/errors"

"github.com/free5gc/udr/internal/logger"
)
Expand Down Expand Up @@ -54,10 +55,17 @@ const (
UDR_DEFAULT_PORT_INT = 8000
)

type ServiceList struct {
ServiceName string `yaml:"serviceName" valid:"required"`
AllowedNfTypes []string `yaml:"allowedNfTypes,omitempty" valid:"required"`
}

type Configuration struct {
Sbi *Sbi `yaml:"sbi" valid:"required"`
Mongodb *Mongodb `yaml:"mongodb" valid:"required"`
NrfUri string `yaml:"nrfUri" valid:"url,required"`
Sbi *Sbi `yaml:"sbi" valid:"required"`
ServiceList []ServiceList `yaml:"serviceList" valid:"required"`
Mongodb *Mongodb `yaml:"mongodb" valid:"required"`
NrfUri string `yaml:"nrfUri" valid:"url,required"`
NrfCertPemPath string `yaml:"nrfCertPemPath" valid:"required"`
}

type Logger struct {
Expand All @@ -84,6 +92,37 @@ type Sbi struct {
OAuth bool `yaml:"oauth,omitempty" valid:"optional"`
}

func (c *Config) VerifyServiceAllowType(nfTypeName string, serviceName string) error {
c.RLock()
defer c.RUnlock()

serviceFound := false
for _, service := range c.Configuration.ServiceList {
if service.ServiceName == serviceName {
serviceFound = true
for _, allowNf := range service.AllowedNfTypes {
if nfTypeName == "All" {
return nil
}
if nfTypeName == allowNf {
return nil
}
}
break
}
}
if serviceFound {
return errors.Errorf("Not allow NF Type: %+v", nfTypeName)
}
return errors.Errorf("ServiceName not found: %+v", serviceName)
}

func (c *Config) GetNrfCertPemPath() string {
c.RLock()
defer c.RUnlock()
return c.Configuration.NrfCertPemPath
}

func (c *Config) GetOAuth() bool {
c.RLock()
defer c.RUnlock()
Expand Down

0 comments on commit 91bcdad

Please sign in to comment.