diff --git a/.github/workflows/commit-msg-check.yml b/.github/workflows/commit-msg-check.yml index 4baa186..4b388a9 100644 --- a/.github/workflows/commit-msg-check.yml +++ b/.github/workflows/commit-msg-check.yml @@ -2,7 +2,6 @@ name: 'Commit Message Check' on: pull_request: - branches: [ main ] jobs: build: diff --git a/.github/workflows/go.yml b/.github/workflows/go.yml index b4d3f47..bd8cb02 100644 --- a/.github/workflows/go.yml +++ b/.github/workflows/go.yml @@ -2,9 +2,7 @@ name: Go on: push: - branches: [ main ] pull_request: - branches: [ main ] jobs: build: diff --git a/.github/workflows/golangci-lint.yml b/.github/workflows/golangci-lint.yml index 4fdc07a..a38d629 100644 --- a/.github/workflows/golangci-lint.yml +++ b/.github/workflows/golangci-lint.yml @@ -4,9 +4,7 @@ on: push: tags: - v* - branches: [ main ] pull_request: - branches: [ main ] jobs: golangci: diff --git a/go.mod b/go.mod index 37e0437..ebc20cf 100644 --- a/go.mod +++ b/go.mod @@ -3,17 +3,17 @@ module github.com/free5gc/ausf go 1.21 require ( - github.com/antihax/optional v1.0.0 github.com/asaskevich/govalidator v0.0.0-20210307081110-f21760c49a8d github.com/bronze1man/radius v0.0.0-20190516032554-afd8baec892d - github.com/free5gc/openapi v1.0.8 + github.com/free5gc/openapi v1.0.9-0.20241112160830-092c679ef6cd github.com/free5gc/util v1.0.6 github.com/gin-gonic/gin v1.9.1 github.com/google/gopacket v1.1.19 github.com/google/uuid v1.3.0 github.com/pkg/errors v0.9.1 - github.com/sirupsen/logrus v1.8.1 + github.com/sirupsen/logrus v1.9.3 github.com/urfave/cli v1.22.5 + go.uber.org/mock v0.4.0 gopkg.in/yaml.v2 v2.4.0 ) @@ -21,14 +21,18 @@ require ( github.com/bytedance/sonic v1.9.1 // indirect github.com/chenzhuoyu/base64x v0.0.0-20221115062448-fe3a3abad311 // indirect github.com/cpuguy83/go-md2man/v2 v2.0.0-20190314233015-f79a8a8ca69d // indirect + github.com/felixge/httpsnoop v1.0.4 // indirect github.com/gabriel-vasile/mimetype v1.4.2 // indirect github.com/gin-contrib/sse v0.1.0 // indirect + github.com/go-logr/logr v1.4.1 // indirect + github.com/go-logr/stdr v1.2.2 // indirect github.com/go-playground/locales v0.14.1 // indirect github.com/go-playground/universal-translator v0.18.1 // indirect github.com/go-playground/validator/v10 v10.14.0 // indirect github.com/goccy/go-json v0.10.2 // indirect - github.com/golang-jwt/jwt v3.2.1+incompatible // indirect + github.com/golang-jwt/jwt/v5 v5.2.1 // indirect github.com/golang/protobuf v1.5.0 // indirect + github.com/h2non/gock v1.2.0 // indirect github.com/h2non/parth v0.0.0-20190131123155-b4df798d6542 // indirect github.com/json-iterator/go v1.1.12 // indirect github.com/klauspost/cpuid/v2 v2.2.4 // indirect @@ -43,6 +47,11 @@ require ( github.com/tim-ywliu/nested-logrus-formatter v1.3.2 // indirect github.com/twitchyliquid64/golang-asm v0.15.1 // indirect github.com/ugorji/go/codec v1.2.11 // indirect + go.opentelemetry.io/contrib/instrumentation/net/http/httptrace/otelhttptrace v0.49.0 // indirect + go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.49.0 // indirect + go.opentelemetry.io/otel v1.24.0 // indirect + go.opentelemetry.io/otel/metric v1.24.0 // indirect + go.opentelemetry.io/otel/trace v1.24.0 // indirect golang.org/x/arch v0.3.0 // indirect golang.org/x/crypto v0.21.0 // indirect golang.org/x/net v0.23.0 // indirect @@ -51,6 +60,5 @@ require ( golang.org/x/text v0.14.0 // indirect google.golang.org/appengine v1.6.6 // indirect google.golang.org/protobuf v1.33.0 // indirect - gopkg.in/h2non/gock.v1 v1.1.2 // indirect gopkg.in/yaml.v3 v3.0.1 // indirect ) diff --git a/go.sum b/go.sum index 173ecee..9ce4b02 100644 --- a/go.sum +++ b/go.sum @@ -33,8 +33,6 @@ cloud.google.com/go/storage v1.10.0/go.mod h1:FLPqc6j+Ki4BU591ie1oL6qBQGu2Bl/tZ9 dmitri.shuralyov.com/gpu/mtl v0.0.0-20190408044501-666a987793e9/go.mod h1:H6x//7gZCb22OMCxBHrMx7a5I7Hp++hsVxbQ4BYO7hU= github.com/BurntSushi/toml v0.3.1/go.mod h1:xHWCNGjB5oqiDr8zfno3MHue2Ht5sIBksp03qcyfWMU= github.com/BurntSushi/xgb v0.0.0-20160522181843-27f122750802/go.mod h1:IVnqGOEym/WlBOVXweHU+Q+/VP0lqqI8lqeDx9IjBqo= -github.com/antihax/optional v1.0.0 h1:xK2lYat7ZLaVVcIuj82J8kIro4V6kDe0AUDFboUCwcg= -github.com/antihax/optional v1.0.0/go.mod h1:uupD/76wgC+ih3iEmQUL+0Ugr19nfwCT1kdvxnR2qWY= github.com/asaskevich/govalidator v0.0.0-20210307081110-f21760c49a8d h1:Byv0BzEl3/e6D5CLfI0j/7hiIEtvGVFPCZ7Ei2oq8iQ= github.com/asaskevich/govalidator v0.0.0-20210307081110-f21760c49a8d/go.mod h1:WaHUgvxTVq04UNunO+XhnAqY/wQc+bxr74GqbsZ/Jqw= github.com/bronze1man/radius v0.0.0-20190516032554-afd8baec892d h1:3Yh8YMWPvo93EMc2Buc+1rHw+G0m+b1cOMg8TypHth8= @@ -60,8 +58,10 @@ github.com/envoyproxy/go-control-plane v0.9.0/go.mod h1:YTl/9mNaCwkRvm6d1a2C3ymF github.com/envoyproxy/go-control-plane v0.9.1-0.20191026205805-5f8ba28d4473/go.mod h1:YTl/9mNaCwkRvm6d1a2C3ymFceY/DCBVvsKhRF0iEA4= 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/free5gc/openapi v1.0.8 h1:QjfQdB6VVA1GRnzOJ7nILzrI7gMiY0lH64JHVW7vF34= -github.com/free5gc/openapi v1.0.8/go.mod h1:w6y9P/uySczc1d9OJZAEuB2FImR/z60Wg2BekPAVt3M= +github.com/felixge/httpsnoop v1.0.4 h1:NFTV2Zj1bL4mc9sqWACXbQFVBBg2W3GPvqp8/ESS2Wg= +github.com/felixge/httpsnoop v1.0.4/go.mod h1:m8KPJKqk1gH5J9DgRY2ASl2lWCfGKXixSwevea8zH2U= +github.com/free5gc/openapi v1.0.9-0.20241112160830-092c679ef6cd h1:VRxE3QzfL1uU8ZnR9Y1aXtslHPeMIVoHb3wU0yOz2AI= +github.com/free5gc/openapi v1.0.9-0.20241112160830-092c679ef6cd/go.mod h1:aKw6uGzEibGDrn9++w4/JpWxaaUBo7GaqsvuFKU9fl4= github.com/free5gc/util v1.0.6 h1:dBt9drcXtYKE/cY5XuQcuffgsYclPIpIArhSeS6M+DQ= github.com/free5gc/util v1.0.6/go.mod h1:eSGN7POUM8LNTvg/E591XR6447a6/w1jFWGKNZPHcXw= github.com/gabriel-vasile/mimetype v1.4.2 h1:w5qFW6JKBz9Y393Y4q372O9A7cUSequkh1Q7OhCmWKU= @@ -73,6 +73,11 @@ github.com/gin-gonic/gin v1.9.1/go.mod h1:hPrL7YrpYKXt5YId3A/Tnip5kqbEAP+KLuI3SU github.com/go-gl/glfw v0.0.0-20190409004039-e6da0acd62b1/go.mod h1:vR7hzQXu2zJy9AVAgeJqvqgH9Q5CA+iKCZ2gyEVpxRU= github.com/go-gl/glfw/v3.3/glfw v0.0.0-20191125211704-12ad95a8df72/go.mod h1:tQ2UAYgL5IevRw8kRxooKSPJfGvJ9fJQFa0TUsXzTg8= github.com/go-gl/glfw/v3.3/glfw v0.0.0-20200222043503-6f7a984d4dc4/go.mod h1:tQ2UAYgL5IevRw8kRxooKSPJfGvJ9fJQFa0TUsXzTg8= +github.com/go-logr/logr v1.2.2/go.mod h1:jdQByPbusPIv2/zmleS9BjJVeZ6kBagPoEUsqbVz/1A= +github.com/go-logr/logr v1.4.1 h1:pKouT5E8xu9zeFC39JXRDukb6JFQPXM5p5I91188VAQ= +github.com/go-logr/logr v1.4.1/go.mod h1:9T104GzyrTigFIr8wt5mBrctHMim0Nb2HLGrmQ40KvY= +github.com/go-logr/stdr v1.2.2 h1:hSWxHoqTgW2S2qGc0LTAI563KZ5YKYRhT3MFKZMbjag= +github.com/go-logr/stdr v1.2.2/go.mod h1:mMo/vtBO5dYbehREoey6XUKy/eSumjCCveDpRre4VKE= github.com/go-playground/assert/v2 v2.2.0 h1:JvknZsQTYeFEAhQwI4qEt9cyV5ONwRHC+lYKSsYSR8s= github.com/go-playground/assert/v2 v2.2.0/go.mod h1:VDjEfimB/XKnb+ZQfWdccd7VUvScMdVu0Titje2rxJ4= github.com/go-playground/locales v0.14.1 h1:EWaQ/wswjilfKLTECiXz7Rh+3BjFhfDFKv/oXslEjJA= @@ -83,8 +88,8 @@ github.com/go-playground/validator/v10 v10.14.0 h1:vgvQWe3XCz3gIeFDm/HnTIbj6UGmg github.com/go-playground/validator/v10 v10.14.0/go.mod h1:9iXMNT7sEkjXb0I+enO7QXmzG6QCsPWY4zveKFVRSyU= github.com/goccy/go-json v0.10.2 h1:CrxCmQqYDkv1z7lO7Wbh2HN93uovUHgrECaO5ZrCXAU= github.com/goccy/go-json v0.10.2/go.mod h1:6MelG93GURQebXPDq3khkgXZkazVtN9CRI+MGFi0w8I= -github.com/golang-jwt/jwt v3.2.1+incompatible h1:73Z+4BJcrTC+KczS6WvTPvRGOp1WmfEP4Q1lOd9Z/+c= -github.com/golang-jwt/jwt v3.2.1+incompatible/go.mod h1:8pz2t5EyA70fFQQSrl6XZXzqecmYZeUEB8OUGHkxJ+I= +github.com/golang-jwt/jwt/v5 v5.2.1 h1:OuVbFODueb089Lh128TAcimifWaLhJwVflnrgM17wHk= +github.com/golang-jwt/jwt/v5 v5.2.1/go.mod h1:pqrtFR0X4osieyHYxtmOUWsAWrfe1Q5UVIyoH402zdk= github.com/golang/glog v0.0.0-20160126235308-23def4e6c14b/go.mod h1:SBH7ygxi8pfUlaOkMMuAQtPIUF8ecWP5IEl/CR7VP2Q= github.com/golang/groupcache v0.0.0-20190702054246-869f871628b6/go.mod h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc= github.com/golang/groupcache v0.0.0-20191227052852-215e87163ea7/go.mod h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc= @@ -120,8 +125,9 @@ github.com/google/go-cmp v0.4.0/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/ github.com/google/go-cmp v0.4.1/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= github.com/google/go-cmp v0.5.0/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= github.com/google/go-cmp v0.5.1/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= -github.com/google/go-cmp v0.5.5 h1:Khx7svrCpmxxtHBq5j2mp/xVjsi8hQMfNLvJFAlrGgU= github.com/google/go-cmp v0.5.5/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= +github.com/google/go-cmp v0.6.0 h1:ofyhxvXcZhMsU5ulbFiLKl/XBFqE1GSq7atu8tAmTRI= +github.com/google/go-cmp v0.6.0/go.mod h1:17dUlkBOakJ0+DkrSSNjCkIjxS6bF9zb3elmeNGIjoY= github.com/google/gofuzz v1.0.0/go.mod h1:dBl0BpW6vV/+mYPU4Po3pmUjxk6FQPldtuIdl/M65Eg= github.com/google/gopacket v1.1.19 h1:ves8RnFZPGiFnTS0uPQStjwru6uO6h+nlr9j6fL7kF8= github.com/google/gopacket v1.1.19/go.mod h1:iJ8V8n6KS+z2U1A8pUwu8bW5SyEMkXJB8Yo/Vo+TKTo= @@ -139,6 +145,8 @@ github.com/google/uuid v1.3.0 h1:t6JiXgmwXMjEs8VusXIJk2BXHsn+wx8BZdTaoZ5fu7I= github.com/google/uuid v1.3.0/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= github.com/googleapis/gax-go/v2 v2.0.4/go.mod h1:0Wqv26UfaUD9n4G6kQubkQ+KchISgw+vpHVxEJEs9eg= github.com/googleapis/gax-go/v2 v2.0.5/go.mod h1:DWXyrwAJ9X0FpwwEdw+IPEYBICEFu5mhpdKc/us6bOk= +github.com/h2non/gock v1.2.0 h1:K6ol8rfrRkUOefooBC8elXoaNGYkpp7y2qcxGG6BzUE= +github.com/h2non/gock v1.2.0/go.mod h1:tNhoxHYW2W42cYkYb1WqzdbYIieALC99kpYr7rH/BQk= github.com/h2non/parth v0.0.0-20190131123155-b4df798d6542 h1:2VTzZjLZBgl62/EtslCrtky5vbi9dd7HrQPQIx6wqiw= github.com/h2non/parth v0.0.0-20190131123155-b4df798d6542/go.mod h1:Ow0tF8D4Kplbc8s8sSb3V2oUCygFHVp8gC3Dn6U4MNI= github.com/hashicorp/golang-lru v0.5.0/go.mod h1:/m3WP610KZHVQ1SGc6re/UDhFvYD7pJ4Ao+sR/qLZy8= @@ -182,12 +190,11 @@ github.com/russross/blackfriday/v2 v2.0.1 h1:lPqVAte+HuHNfhJ/0LC98ESWRz8afy9tM/0 github.com/russross/blackfriday/v2 v2.0.1/go.mod h1:+Rmxgy9KzJVeS9/2gXHxylqXiyQDYRxCVz55jmeOWTM= github.com/shurcooL/sanitized_anchor_name v1.0.0 h1:PdmoCO6wvbs+7yrJyMORt4/BmY5IYyJwS/kOiWx8mHo= github.com/shurcooL/sanitized_anchor_name v1.0.0/go.mod h1:1NzhyTcUVG4SuEtjjoZeVRXNmyL/1OwPU0+IJeTBvfc= -github.com/sirupsen/logrus v1.8.1 h1:dJKuHgqk1NNQlqoA6BTlM1Wf9DOH3NBjQyu0h9+AZZE= -github.com/sirupsen/logrus v1.8.1/go.mod h1:yWOB1SBYBC5VeMP7gHvWumXLIWorT60ONWic61uBYv0= +github.com/sirupsen/logrus v1.9.3 h1:dueUQJ1C2q9oE3F7wvmSGAaVtTmUizReu6fjN8uqzbQ= +github.com/sirupsen/logrus v1.9.3/go.mod h1:naHLuLoDiP4jHNo9R0sCBMtWGeIprob74mVsIT4qYEQ= github.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME= github.com/stretchr/objx v0.4.0/go.mod h1:YvHI0jy2hoMjB+UWwv71VJQ9isScKT/TqJzVSSt89Yw= github.com/stretchr/objx v0.5.0/go.mod h1:Yh+to48EsGEfYuaHDzXPcE3xhTkx73EhmCGUpEOglKo= -github.com/stretchr/testify v1.2.2/go.mod h1:a8OnRcib4nhh0OaRAV+Yts87kKdq0PP7pXfy6kDkUVs= github.com/stretchr/testify v1.3.0/go.mod h1:M5WIy9Dh21IEIfnGCwXGc5bZfKNJtfHm1UVUgZn+9EI= github.com/stretchr/testify v1.4.0/go.mod h1:j7eGeouHqKxXV5pUuKE4zz7dFj8WfuZ+81PSLYec5m4= github.com/stretchr/testify v1.7.0/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg= @@ -195,8 +202,9 @@ github.com/stretchr/testify v1.7.1/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/ github.com/stretchr/testify v1.8.0/go.mod h1:yNjHg4UonilssWZ8iaSj1OCr/vHnekPRkoO+kdMU+MU= github.com/stretchr/testify v1.8.1/go.mod h1:w2LPCIKwWwSfY2zedu0+kehJoqGctiVI29o6fzry7u4= github.com/stretchr/testify v1.8.2/go.mod h1:w2LPCIKwWwSfY2zedu0+kehJoqGctiVI29o6fzry7u4= -github.com/stretchr/testify v1.8.3 h1:RP3t2pwF7cMEbC1dqtB6poj3niw/9gnV4Cjg5oW5gtY= github.com/stretchr/testify v1.8.3/go.mod h1:sz/lmYIOXD/1dqDmKjjqLyZ2RngseejIcXlSw2iwfAo= +github.com/stretchr/testify v1.8.4 h1:CcVxjf3Q8PM0mHUKJCdn+eZZtm5yQwehR5yeSVQQcUk= +github.com/stretchr/testify v1.8.4/go.mod h1:sz/lmYIOXD/1dqDmKjjqLyZ2RngseejIcXlSw2iwfAo= github.com/tim-ywliu/nested-logrus-formatter v1.3.2 h1:jugNJ2/CNCI79SxOJCOhwUHeN3O7/7/bj+ZRGOFlCSw= github.com/tim-ywliu/nested-logrus-formatter v1.3.2/go.mod h1:oGPmcxZB65j9Wo7mCnQKSrKEJtVDqyjD666SGmyStXI= github.com/twitchyliquid64/golang-asm v0.15.1 h1:SU5vSMR7hnwNxj24w34ZyCi/FmDZTkS4MhqMhdFk5YI= @@ -213,6 +221,18 @@ go.opencensus.io v0.22.0/go.mod h1:+kGneAE2xo2IficOXnaByMWTGM9T73dGwxeWcUqIpI8= go.opencensus.io v0.22.2/go.mod h1:yxeiOL68Rb0Xd1ddK5vPZ/oVn4vY4Ynel7k9FzqtOIw= go.opencensus.io v0.22.3/go.mod h1:yxeiOL68Rb0Xd1ddK5vPZ/oVn4vY4Ynel7k9FzqtOIw= go.opencensus.io v0.22.4/go.mod h1:yxeiOL68Rb0Xd1ddK5vPZ/oVn4vY4Ynel7k9FzqtOIw= +go.opentelemetry.io/contrib/instrumentation/net/http/httptrace/otelhttptrace v0.49.0 h1:RtcvQ4iw3w9NBB5yRwgA4sSa82rfId7n4atVpvKx3bY= +go.opentelemetry.io/contrib/instrumentation/net/http/httptrace/otelhttptrace v0.49.0/go.mod h1:f/PbKbRd4cdUICWell6DmzvVJ7QrmBgFrRHjXmAXbK4= +go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.49.0 h1:jq9TW8u3so/bN+JPT166wjOI6/vQPF6Xe7nMNIltagk= +go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.49.0/go.mod h1:p8pYQP+m5XfbZm9fxtSKAbM6oIllS7s2AfxrChvc7iw= +go.opentelemetry.io/otel v1.24.0 h1:0LAOdjNmQeSTzGBzduGe/rU4tZhMwL5rWgtp9Ku5Jfo= +go.opentelemetry.io/otel v1.24.0/go.mod h1:W7b9Ozg4nkF5tWI5zsXkaKKDjdVjpD4oAt9Qi/MArHo= +go.opentelemetry.io/otel/metric v1.24.0 h1:6EhoGWWK28x1fbpA4tYTOWBkPefTDQnb8WSGXlc88kI= +go.opentelemetry.io/otel/metric v1.24.0/go.mod h1:VYhLe1rFfxuTXLgj4CBiyz+9WYBA8pNGJgDcSFRKBco= +go.opentelemetry.io/otel/trace v1.24.0 h1:CsKnnL4dUAr/0llH9FKuc698G04IrpWV0MQA/Y1YELI= +go.opentelemetry.io/otel/trace v1.24.0/go.mod h1:HPc3Xr/cOApsBI154IU0OI0HJexz+aw5uPdbs3UCjNU= +go.uber.org/mock v0.4.0 h1:VcM4ZOtdbR4f6VXfiOpwpVJDL6lCReaZ6mw31wqh7KU= +go.uber.org/mock v0.4.0/go.mod h1:a6FSlNadKUHUa9IP5Vyt1zh4fC7uAwxMutEAscFbkZc= golang.org/x/arch v0.0.0-20210923205945-b76863e36670/go.mod h1:5om86z9Hs0C8fWVUuoMHwpExlXzs5Tkyp9hOrfG7pp8= golang.org/x/arch v0.3.0 h1:02VY4/ZcO/gBOH6PUaoiptASxtXU10jazRCP865E97k= golang.org/x/arch v0.3.0/go.mod h1:5om86z9Hs0C8fWVUuoMHwpExlXzs5Tkyp9hOrfG7pp8= @@ -306,7 +326,6 @@ golang.org/x/sys v0.0.0-20190606165138-5da285871e9c/go.mod h1:h1NjWce9XRLGQEsW7w golang.org/x/sys v0.0.0-20190624142023-c5567b49c5d0/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20190726091711-fc99dfbffb4e/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20191001151750-bb3f8db39f24/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20191026070338-33540a1f6037/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20191204072324-ce4227a45e2e/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20191228213918-04cbcbbfeed8/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20200113162924-86b910548bc1/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= @@ -323,6 +342,7 @@ golang.org/x/sys v0.0.0-20200515095857-1151b9dac4a9/go.mod h1:h1NjWce9XRLGQEsW7w golang.org/x/sys v0.0.0-20200523222454-059865788121/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20200803210538-64077c9b5642/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20220704084225-05e143d24a9e/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.0.0-20220715151400-c0bba94af5f8/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.6.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.18.0 h1:DBdB3niSjOA/O0blCZBqDefyWNYveAYMNF1Wum0DYQ4= golang.org/x/sys v0.18.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= @@ -379,7 +399,6 @@ golang.org/x/tools v0.0.0-20200825202427-b303f430e36d/go.mod h1:njjCfa9FT2d7l9Bc golang.org/x/xerrors v0.0.0-20190717185122-a985d3407aa7/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= golang.org/x/xerrors v0.0.0-20191011141410-1b5146add898/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= -golang.org/x/xerrors v0.0.0-20200804184101-5ec99f83aff1 h1:go1bK/D/BFZV2I8cIQd1NKEZ+0owSTG1fDTci4IqFcE= golang.org/x/xerrors v0.0.0-20200804184101-5ec99f83aff1/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= google.golang.org/api v0.4.0/go.mod h1:8k5glujaEP+g9n7WNsDg8QP6cUVNI86fCNMcbazEtwE= google.golang.org/api v0.7.0/go.mod h1:WtwebWUNSVBH/HAw79HIFXZNqEvBhG+Ra+ax0hx3E3M= @@ -462,8 +481,6 @@ gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8 gopkg.in/check.v1 v1.0.0-20180628173108-788fd7840127 h1:qIbj1fsPNlZgppZ+VLlY7N33q108Sa+fhmuc+sWQYwY= gopkg.in/check.v1 v1.0.0-20180628173108-788fd7840127/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= gopkg.in/errgo.v2 v2.1.0/go.mod h1:hNsd1EY+bozCKY1Ytp96fpM3vjJbqLJn88ws8XvfDNI= -gopkg.in/h2non/gock.v1 v1.1.2 h1:jBbHXgGBK/AoPVfJh5x4r/WxIrElvbLel8TCZkkZJoY= -gopkg.in/h2non/gock.v1 v1.1.2/go.mod h1:n7UGz/ckNChHiK05rDoiC4MYSunEC/lyaUm2WWaDva0= gopkg.in/yaml.v2 v2.2.2/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= gopkg.in/yaml.v2 v2.4.0 h1:D8xgwECY7CYvx+Y2n4sBz93Jn9JRvxdiyyo8CTfuKaY= gopkg.in/yaml.v2 v2.4.0/go.mod h1:RDklbk79AGWmwhnvt/jBztapEOGDOx6ZbXqjP6csGnQ= diff --git a/internal/context/ausf_context_init.go b/internal/context/ausf_context_init.go index 575a04f..80d7591 100644 --- a/internal/context/ausf_context_init.go +++ b/internal/context/ausf_context_init.go @@ -56,15 +56,17 @@ func InitAusfContext(context *AUSFContext) { context.PlmnList = append(context.PlmnList, configuration.PlmnSupportList...) // context.NfService - context.NfService = make(map[models.ServiceName]models.NfService) + context.NfService = make(map[models.ServiceName]models.NrfNfManagementNfService) AddNfServices(&context.NfService, config, context) fmt.Println("ausf context = ", context) context.EapAkaSupiImsiPrefix = configuration.EapAkaSupiImsiPrefix } -func AddNfServices(serviceMap *map[models.ServiceName]models.NfService, config *factory.Config, context *AUSFContext) { - var nfService models.NfService +func AddNfServices( + serviceMap *map[models.ServiceName]models.NrfNfManagementNfService, config *factory.Config, context *AUSFContext, +) { + var nfService models.NrfNfManagementNfService var ipEndPoints []models.IpEndPoint var nfServiceVersions []models.NfServiceVersion services := *serviceMap @@ -86,7 +88,7 @@ func AddNfServices(serviceMap *map[models.ServiceName]models.NfService, config * nfService.Scheme = context.UriScheme nfService.NfServiceStatus = models.NfServiceStatus_REGISTERED - nfService.IpEndPoints = &ipEndPoints - nfService.Versions = &nfServiceVersions + nfService.IpEndPoints = ipEndPoints + nfService.Versions = nfServiceVersions services[models.ServiceName_NAUSF_AUTH] = nfService } diff --git a/internal/context/context.go b/internal/context/context.go index 017ac74..ad9a08d 100644 --- a/internal/context/context.go +++ b/internal/context/context.go @@ -22,7 +22,7 @@ type AUSFContext struct { UriScheme models.UriScheme NrfUri string NrfCertPem string - NfService map[models.ServiceName]models.NfService + NfService map[models.ServiceName]models.NrfNfManagementNfService PlmnList []models.PlmnId UdmUeauUrl string snRegex *regexp.Regexp @@ -35,7 +35,7 @@ type AusfUeContext struct { Kausf string Kseaf string ServingNetworkName string - AuthStatus models.AuthResult + AuthStatus models.AusfUeAuthenticationAuthResult UdmUeauUrl string // for 5G AKA @@ -166,13 +166,13 @@ func (a *AUSFContext) GetSelfID() string { return a.NfId } -func (c *AUSFContext) GetTokenCtx(serviceName models.ServiceName, targetNF models.NfType) ( +func (c *AUSFContext) GetTokenCtx(serviceName models.ServiceName, targetNF models.NrfNfManagementNfType) ( context.Context, *models.ProblemDetails, error, ) { if !c.OAuth2Required { return context.TODO(), nil, nil } - return oauth.GetTokenCtx(models.NfType_AUSF, targetNF, + return oauth.GetTokenCtx(models.NrfNfManagementNfType_AUSF, targetNF, c.NfId, c.NrfUri, string(serviceName)) } diff --git a/internal/sbi/api_sorprotection.go b/internal/sbi/api_sorprotection.go index ff5ebf3..a90c1ab 100644 --- a/internal/sbi/api_sorprotection.go +++ b/internal/sbi/api_sorprotection.go @@ -9,18 +9,22 @@ import ( func (s *Server) getSorprotectionRoutes() []Route { return []Route{ { + Name: "Index", Method: http.MethodGet, Pattern: "/", - APIFunc: Index, + APIFunc: func(c *gin.Context) { + c.String(http.StatusOK, "Hello free5GC!") + }, }, { + Name: "SupiUeSorPost", Method: http.MethodPost, Pattern: "/:supi/ue-sor", - APIFunc: s.SupiUeSorPost, + APIFunc: s.HTTPSupiUeSorPost, }, } } -func (s *Server) SupiUeSorPost(c *gin.Context) { +func (s *Server) HTTPSupiUeSorPost(c *gin.Context) { c.JSON(http.StatusNotImplemented, gin.H{}) } diff --git a/internal/sbi/api_ueauthentication.go b/internal/sbi/api_ueauthentication.go index 073a6b1..ddb05e3 100644 --- a/internal/sbi/api_ueauthentication.go +++ b/internal/sbi/api_ueauthentication.go @@ -29,30 +29,78 @@ func Index(c *gin.Context) { func (s *Server) getUeAuthenticationRoutes() []Route { return []Route{ { + Name: "Index", Method: http.MethodGet, Pattern: "/", - APIFunc: Index, + APIFunc: func(c *gin.Context) { + c.String(http.StatusOK, "Hello free5GC!") + }, }, { + Name: "EapAuthMethod", Method: http.MethodPost, Pattern: "/ue-authentications/:authCtxId/eap-session", - APIFunc: s.EapAuthMethodPost, + APIFunc: s.HTTPEapAuthMethod, }, { + Name: "UeAuthenticationsPost", Method: http.MethodPost, Pattern: "/ue-authentications", - APIFunc: s.UeAuthenticationsPost, + APIFunc: s.HTTPUeAuthenticationsPost, }, { + Name: "UeAuthenticationsAuthCtxId5gAkaConfirmationPut", Method: http.MethodPut, Pattern: "/ue-authentications/:authCtxId/5g-aka-confirmation", - APIFunc: s.UeAuthenticationsAuthCtxID5gAkaConfirmationPut, + APIFunc: s.HTTPUeAuthenticationsAuthCtxId5gAkaConfirmationPut, + }, + + { + Name: "Delete5gAkaAuthenticationResult", + Method: http.MethodDelete, + Pattern: "/ue-authentications/:authCtxId/5g-aka-confirmation", + APIFunc: s.HTTPDelete5gAkaAuthenticationResult, + }, + { + Name: "DeleteEapAuthenticationResult", + Method: http.MethodDelete, + Pattern: "/ue-authentications/:authCtxId/eap-session", + APIFunc: s.HTTPDeleteEapAuthenticationResult, + }, + { + Name: "DeleteProSeAuthenticationResult", + Method: http.MethodDelete, + Pattern: "/prose-authentications/:authCtxId/prose-auth", + APIFunc: s.HTTPDeleteProSeAuthenticationResult, + }, + { + Name: "ProseAuth", + Method: http.MethodPost, + Pattern: "/prose-authentications", + APIFunc: s.HTTPProseAuth, + }, + { + Name: "ProseAuthenticationsPost", + Method: http.MethodPost, + Pattern: "/prose-authentications/:authCtxId/prose-auth", + APIFunc: s.HTTPProseAuthenticationsPost, + }, + { + Name: "RgAuthenticationsPost", + Method: http.MethodPost, + Pattern: "/rg-authentications/:authCtxId", + APIFunc: s.HTTPRgAuthenticationsPost, + }, + { + Name: "UeAuthenticationsDeregisterPost", + Method: http.MethodPost, + Pattern: "/ue-authentications/deregister", + APIFunc: s.HTTPUeAuthenticationsDeregisterPost, }, } } -// EapAuthMethodPost - -func (s *Server) EapAuthMethodPost(c *gin.Context) { +func (s *Server) HTTPEapAuthMethod(c *gin.Context) { var eapSessionReq models.EapSession requestBody, err := c.GetRawData() @@ -85,8 +133,7 @@ func (s *Server) EapAuthMethodPost(c *gin.Context) { s.Processor().HandleEapAuthComfirmRequest(c, eapSessionReq, eapSessionId) } -// UeAuthenticationsPost -func (s *Server) UeAuthenticationsPost(c *gin.Context) { +func (s *Server) HTTPUeAuthenticationsPost(c *gin.Context) { var authInfo models.AuthenticationInfo requestBody, err := c.GetRawData() @@ -118,8 +165,7 @@ func (s *Server) UeAuthenticationsPost(c *gin.Context) { s.Processor().HandleUeAuthPostRequest(c, authInfo) } -// UeAuthenticationsAuthCtxID5gAkaConfirmationPut -func (s *Server) UeAuthenticationsAuthCtxID5gAkaConfirmationPut(c *gin.Context) { +func (s *Server) HTTPUeAuthenticationsAuthCtxId5gAkaConfirmationPut(c *gin.Context) { var confirmationData models.ConfirmationData requestBody, err := c.GetRawData() @@ -151,3 +197,31 @@ func (s *Server) UeAuthenticationsAuthCtxID5gAkaConfirmationPut(c *gin.Context) s.Processor().HandleAuth5gAkaComfirmRequest(c, confirmationData, confirmationDataResponseId) } + +func (s *Server) HTTPDelete5gAkaAuthenticationResult(c *gin.Context) { + c.JSON(http.StatusNotImplemented, gin.H{}) +} + +func (s *Server) HTTPDeleteEapAuthenticationResult(c *gin.Context) { + c.JSON(http.StatusNotImplemented, gin.H{}) +} + +func (s *Server) HTTPDeleteProSeAuthenticationResult(c *gin.Context) { + c.JSON(http.StatusNotImplemented, gin.H{}) +} + +func (s *Server) HTTPProseAuth(c *gin.Context) { + c.JSON(http.StatusNotImplemented, gin.H{}) +} + +func (s *Server) HTTPProseAuthenticationsPost(c *gin.Context) { + c.JSON(http.StatusNotImplemented, gin.H{}) +} + +func (s *Server) HTTPRgAuthenticationsPost(c *gin.Context) { + c.JSON(http.StatusNotImplemented, gin.H{}) +} + +func (s *Server) HTTPUeAuthenticationsDeregisterPost(c *gin.Context) { + c.JSON(http.StatusNotImplemented, gin.H{}) +} diff --git a/internal/sbi/api_upuprotection.go b/internal/sbi/api_upuprotection.go index 856ebf1..5475dda 100644 --- a/internal/sbi/api_upuprotection.go +++ b/internal/sbi/api_upuprotection.go @@ -9,18 +9,22 @@ import ( func (s *Server) getUpuprotectionRoutes() []Route { return []Route{ { + Name: "Index", Method: http.MethodGet, Pattern: "/", - APIFunc: Index, + APIFunc: func(c *gin.Context) { + c.String(http.StatusOK, "Hello free5GC!") + }, }, { + Name: "SupiUeUpuPost", Method: http.MethodPost, Pattern: "/:supi/ue-upu", - APIFunc: s.SupiUeUpuPost, + APIFunc: s.HTTPSupiUeUpuPost, }, } } -func (s *Server) SupiUeUpuPost(c *gin.Context) { +func (s *Server) HTTPSupiUeUpuPost(c *gin.Context) { c.JSON(http.StatusNotImplemented, gin.H{}) } diff --git a/internal/sbi/consumer/consumer.go b/internal/sbi/consumer/consumer.go index a0cd457..401e3f1 100644 --- a/internal/sbi/consumer/consumer.go +++ b/internal/sbi/consumer/consumer.go @@ -2,9 +2,9 @@ package consumer import ( "github.com/free5gc/ausf/pkg/app" - "github.com/free5gc/openapi/Nnrf_NFDiscovery" - "github.com/free5gc/openapi/Nnrf_NFManagement" - "github.com/free5gc/openapi/Nudm_UEAuthentication" + Nnrf_NFDiscovery "github.com/free5gc/openapi/nrf/NFDiscovery" + Nnrf_NFManagement "github.com/free5gc/openapi/nrf/NFManagement" + Nudm_UEAuthentication "github.com/free5gc/openapi/udm/UEAuthentication" ) type ConsumerAusf interface { diff --git a/internal/sbi/consumer/nrf_service.go b/internal/sbi/consumer/nrf_service.go index 0a5a01b..8382703 100644 --- a/internal/sbi/consumer/nrf_service.go +++ b/internal/sbi/consumer/nrf_service.go @@ -2,22 +2,19 @@ package consumer import ( "context" - "fmt" - "net/http" "strconv" "strings" "sync" "time" - "github.com/antihax/optional" "github.com/pkg/errors" ausf_context "github.com/free5gc/ausf/internal/context" "github.com/free5gc/ausf/internal/logger" "github.com/free5gc/openapi" - "github.com/free5gc/openapi/Nnrf_NFDiscovery" - "github.com/free5gc/openapi/Nnrf_NFManagement" "github.com/free5gc/openapi/models" + Nnrf_NFDiscovery "github.com/free5gc/openapi/nrf/NFDiscovery" + Nnrf_NFManagement "github.com/free5gc/openapi/nrf/NFManagement" ) type nnrfService struct { @@ -75,7 +72,10 @@ func (s *nnrfService) getNFDiscClient(uri string) *Nnrf_NFDiscovery.APIClient { } func (s *nnrfService) SendSearchNFInstances( - nrfUri string, targetNfType, requestNfType models.NfType, param *Nnrf_NFDiscovery.SearchNFInstancesParamOpts) ( + nrfUri string, targetNfType, + requestNfType models.NrfNfManagementNfType, + param Nnrf_NFDiscovery.SearchNFInstancesRequest, +) ( *models.SearchResult, error, ) { // Set client and set url @@ -84,94 +84,84 @@ func (s *nnrfService) SendSearchNFInstances( return nil, openapi.ReportError("nrf not found") } - ctx, _, err := ausf_context.GetSelf().GetTokenCtx(models.ServiceName_NNRF_DISC, models.NfType_NRF) + ctx, _, err := ausf_context.GetSelf().GetTokenCtx(models.ServiceName_NNRF_DISC, models.NrfNfManagementNfType_NRF) if err != nil { return nil, err } - result, res, err := client.NFInstancesStoreApi.SearchNFInstances(ctx, targetNfType, requestNfType, param) + res, err := client.NFInstancesStoreApi.SearchNFInstances(ctx, ¶m) - if res != nil && res.StatusCode == http.StatusTemporaryRedirect { - return nil, fmt.Errorf("temporary Redirect For Non NRF Consumer") - } - if res == nil || res.Body == nil { - return &result, err + if err != nil || res == nil { + logger.ConsumerLog.Errorf("SearchNFInstances failed: %+v", err) + return nil, err } - defer func() { - if res != nil { - if bodyCloseErr := res.Body.Close(); bodyCloseErr != nil { - err = fmt.Errorf("SearchNFInstances' response body cannot close: %+w", bodyCloseErr) - } - } - }() + + result := res.SearchResult return &result, err } -func (s *nnrfService) SendDeregisterNFInstance() (problemDetails *models.ProblemDetails, err error) { - logger.ConsumerLog.Infof("Send Deregister NFInstance") +func (s *nnrfService) SendDeregisterNFInstance() (*models.ProblemDetails, error) { + logger.ConsumerLog.Infof("[AUSF] Send Deregister NFInstance") - ctx, pd, err := ausf_context.GetSelf().GetTokenCtx(models.ServiceName_NNRF_NFM, models.NfType_NRF) + ctx, pd, err := ausf_context.GetSelf().GetTokenCtx(models.ServiceName_NNRF_NFM, models.NrfNfManagementNfType_NRF) if err != nil { return pd, err } ausfContext := s.consumer.Context() client := s.getNFManagementClient(ausfContext.NrfUri) + request := &Nnrf_NFManagement.DeregisterNFInstanceRequest{ + NfInstanceID: &ausfContext.NfId, + } - var res *http.Response - - res, err = client.NFInstanceIDDocumentApi.DeregisterNFInstance(ctx, ausfContext.NfId) - if err == nil { - return problemDetails, err - } else if res != nil { - defer func() { - if resCloseErr := res.Body.Close(); resCloseErr != nil { - logger.ConsumerLog.Errorf("DeregisterNFInstance response cannot close: %+v", resCloseErr) - } - }() - if res.Status != err.Error() { - return problemDetails, err + _, err = client.NFInstanceIDDocumentApi.DeregisterNFInstance(ctx, request) + if apiErr, ok := err.(openapi.GenericOpenAPIError); ok { + // API error + if deregNfError, okDeg := apiErr.Model().(Nnrf_NFManagement.DeregisterNFInstanceError); okDeg { + return &deregNfError.ProblemDetails, err } - problem := err.(openapi.GenericOpenAPIError).Model().(models.ProblemDetails) - problemDetails = &problem - } else { - err = openapi.ReportError("server no response") + return nil, err } - return problemDetails, err + return nil, err } func (s *nnrfService) RegisterNFInstance(ctx context.Context) ( resouceNrfUri string, retrieveNfInstanceID string, err error, ) { ausfContext := s.consumer.Context() - client := s.getNFManagementClient(ausfContext.NrfUri) nfProfile, err := s.buildNfProfile(ausfContext) if err != nil { return "", "", errors.Wrap(err, "RegisterNFInstance buildNfProfile()") } - var nf models.NfProfile - var res *http.Response + var nf models.NrfNfManagementNfProfile + var res *Nnrf_NFManagement.RegisterNFInstanceResponse + registerNFInstanceRequest := &Nnrf_NFManagement.RegisterNFInstanceRequest{ + NfInstanceID: &ausfContext.NfId, + NrfNfManagementNfProfile: &nfProfile, + } for { - nf, res, err = client.NFInstanceIDDocumentApi.RegisterNFInstance(ctx, ausfContext.NfId, nfProfile) + select { + case <-ctx.Done(): + return "", "", errors.Errorf("Context Cancel before RegisterNFInstance") + default: + } + res, err = client.NFInstanceIDDocumentApi.RegisterNFInstance(ctx, registerNFInstanceRequest) if err != nil || res == nil { logger.ConsumerLog.Errorf("AUSF register to NRF Error[%v]", err) time.Sleep(2 * time.Second) continue } - defer func() { - if resCloseErr := res.Body.Close(); resCloseErr != nil { - logger.ConsumerLog.Errorf("RegisterNFInstance response body cannot close: %+v", resCloseErr) - } - }() - status := res.StatusCode - if status == http.StatusOK { + nf = res.NrfNfManagementNfProfile + + // http.StatusOK + if res.Location == "" { // NFUpdate break - } else if status == http.StatusCreated { + } else { // http.StatusCreated // NFRegister - resourceUri := res.Header.Get("Location") + resourceUri := res.Location resouceNrfUri = resourceUri[:strings.Index(resourceUri, "/nnrf-nfm/")] retrieveNfInstanceID = resourceUri[strings.LastIndex(resourceUri, "/")+1:] @@ -189,24 +179,24 @@ func (s *nnrfService) RegisterNFInstance(ctx context.Context) ( } break - } else { - logger.ConsumerLog.Errorln("NRF return wrong status code", status) } } return resouceNrfUri, retrieveNfInstanceID, err } -func (s *nnrfService) buildNfProfile(ausfContext *ausf_context.AUSFContext) (profile models.NfProfile, err error) { +func (s *nnrfService) buildNfProfile(ausfContext *ausf_context.AUSFContext) ( + profile models.NrfNfManagementNfProfile, err error, +) { profile.NfInstanceId = ausfContext.NfId - profile.NfType = models.NfType_AUSF - profile.NfStatus = models.NfStatus_REGISTERED + profile.NfType = models.NrfNfManagementNfType_AUSF + profile.NfStatus = models.NrfNfManagementNfStatus_REGISTERED profile.Ipv4Addresses = append(profile.Ipv4Addresses, ausfContext.RegisterIPv4) - services := []models.NfService{} + services := []models.NrfNfManagementNfService{} for _, nfService := range ausfContext.NfService { services = append(services, nfService) } if len(services) > 0 { - profile.NfServices = &services + profile.NfServices = services } profile.AusfInfo = &models.AusfInfo{ // Todo @@ -225,13 +215,17 @@ func (s *nnrfService) buildNfProfile(ausfContext *ausf_context.AUSFContext) (pro func (s *nnrfService) GetUdmUrl(nrfUri string) string { udmUrl := "https://localhost:29503" // default - nfDiscoverParam := &Nnrf_NFDiscovery.SearchNFInstancesParamOpts{ - ServiceNames: optional.NewInterface([]models.ServiceName{models.ServiceName_NUDM_UEAU}), + targetNfType := models.NrfNfManagementNfType_UDM + requestNfType := models.NrfNfManagementNfType_AUSF + nfDiscoverParam := Nnrf_NFDiscovery.SearchNFInstancesRequest{ + RequesterNfType: &requestNfType, + TargetNfType: &targetNfType, + ServiceNames: []models.ServiceName{models.ServiceName_NUDM_UEAU}, } res, err := s.SendSearchNFInstances( nrfUri, - models.NfType_UDM, - models.NfType_AUSF, + models.NrfNfManagementNfType_UDM, + models.NrfNfManagementNfType_AUSF, nfDiscoverParam, ) if err != nil { @@ -239,8 +233,8 @@ func (s *nnrfService) GetUdmUrl(nrfUri string) string { } else if len(res.NfInstances) > 0 { udmInstance := res.NfInstances[0] if len(udmInstance.Ipv4Addresses) > 0 && udmInstance.NfServices != nil { - ueauService := (*udmInstance.NfServices)[0] - ueauEndPoint := (*ueauService.IpEndPoints)[0] + ueauService := udmInstance.NfServices[0] + ueauEndPoint := ueauService.IpEndPoints[0] udmUrl = string(ueauService.Scheme) + "://" + ueauEndPoint.Ipv4Address + ":" + strconv.Itoa(int(ueauEndPoint.Port)) } } else { diff --git a/internal/sbi/consumer/udm_service.go b/internal/sbi/consumer/udm_service.go index 69e2603..8d2fc4b 100644 --- a/internal/sbi/consumer/udm_service.go +++ b/internal/sbi/consumer/udm_service.go @@ -6,8 +6,8 @@ import ( ausf_context "github.com/free5gc/ausf/internal/context" "github.com/free5gc/ausf/internal/logger" - Nudm_UEAU "github.com/free5gc/openapi/Nudm_UEAuthentication" "github.com/free5gc/openapi/models" + Nudm_UEAU "github.com/free5gc/openapi/udm/UEAuthentication" ) type nudmService struct { @@ -42,7 +42,7 @@ func (s *nudmService) getUdmUeauClient(uri string) *Nudm_UEAU.APIClient { func (s *nudmService) SendAuthResultToUDM( id string, - authType models.AuthType, + authType models.UdmUeauAuthType, success bool, servingNetworkName, udmUrl string, ) error { @@ -61,17 +61,21 @@ func (s *nudmService) SendAuthResultToUDM( client := s.getUdmUeauClient(udmUrl) - ctx, _, err := ausf_context.GetSelf().GetTokenCtx(models.ServiceName_NUDM_UEAU, models.NfType_UDM) + ctx, _, err := ausf_context.GetSelf().GetTokenCtx(models.ServiceName_NUDM_UEAU, models.NrfNfManagementNfType_UDM) if err != nil { return err } - _, rsp, confirmAuthErr := client.ConfirmAuthApi.ConfirmAuth(ctx, id, authEvent) - defer func() { - if rspCloseErr := rsp.Body.Close(); rspCloseErr != nil { - logger.ConsumerLog.Errorf("ConfirmAuth Response cannot close: %v", rspCloseErr) - } - }() + request := &Nudm_UEAU.ConfirmAuthRequest{ + Supi: &id, // Make sure this is correctly referenced + AuthEvent: &authEvent, // Make sure this is correctly referenced + } + + _, confirmAuthErr := client.ConfirmAuthApi.ConfirmAuth(ctx, request) + if confirmAuthErr != nil { + logger.ConsumerLog.Errorf("Error in ConfirmAuth: %v", confirmAuthErr) + } + return confirmAuthErr } @@ -79,29 +83,41 @@ func (s *nudmService) GenerateAuthDataApi( udmUrl string, supiOrSuci string, authInfoReq models.AuthenticationInfoRequest, -) (*models.AuthenticationInfoResult, error, *models.ProblemDetails) { +) (*models.UdmUeauAuthenticationInfoResult, error, *models.ProblemDetails) { client := s.getUdmUeauClient(udmUrl) - ctx, pd, err := ausf_context.GetSelf().GetTokenCtx(models.ServiceName_NUDM_UEAU, models.NfType_UDM) + ctx, pd, err := ausf_context.GetSelf().GetTokenCtx(models.ServiceName_NUDM_UEAU, models.NrfNfManagementNfType_UDM) if err != nil { return nil, err, pd } - authInfoResult, rsp, err := client.GenerateAuthDataApi.GenerateAuthData(ctx, supiOrSuci, authInfoReq) + udmAuthInfoReq := models.UdmUeauAuthenticationInfoRequest{ + SupportedFeatures: authInfoReq.SupportedFeatures, + ServingNetworkName: authInfoReq.ServingNetworkName, + ResynchronizationInfo: authInfoReq.ResynchronizationInfo, + AusfInstanceId: authInfoReq.AusfInstanceId, + CellCagInfo: authInfoReq.CellCagInfo, + N5gcInd: authInfoReq.N5gcInd, + } + + request := &Nudm_UEAU.GenerateAuthDataRequest{ + SupiOrSuci: &supiOrSuci, + UdmUeauAuthenticationInfoRequest: &udmAuthInfoReq, + } + + rsp, err := client.GenerateAuthDataApi.GenerateAuthData(ctx, request) if err != nil { var problemDetails models.ProblemDetails - if authInfoResult.AuthenticationVector == nil { + if rsp == nil { + problemDetails.Cause = "NO_RESPONSE_FROM_SERVER" + } else if rsp.UdmUeauAuthenticationInfoResult.AuthenticationVector == nil { problemDetails.Cause = "AV_GENERATION_PROBLEM" } else { problemDetails.Cause = "UPSTREAM_SERVER_ERROR" } - problemDetails.Status = int32(rsp.StatusCode) return nil, err, &problemDetails } - defer func() { - if rspCloseErr := rsp.Body.Close(); rspCloseErr != nil { - logger.UeAuthLog.Errorf("GenerateAuthDataApi response body cannot close: %+v", rspCloseErr) - } - }() + authInfoResult := rsp.UdmUeauAuthenticationInfoResult + return &authInfoResult, nil, nil } diff --git a/internal/sbi/processor/ue_authentication.go b/internal/sbi/processor/ue_authentication.go index 57dc802..04ceb12 100644 --- a/internal/sbi/processor/ue_authentication.go +++ b/internal/sbi/processor/ue_authentication.go @@ -64,11 +64,11 @@ func (p *Processor) EapAuthComfirmRequestProcedure( ausfCurrentContext := ausf_context.GetAusfUeContext(currentSupi) servingNetworkName := ausfCurrentContext.ServingNetworkName - if ausfCurrentContext.AuthStatus == models.AuthResult_FAILURE { + if ausfCurrentContext.AuthStatus == models.AusfUeAuthenticationAuthResult_FAILURE { logger.AuthELog.Warnf("Authentication failed with status: %s", ausfCurrentContext.AuthStatus) eapFailPkt := ConstructEapNoTypePkt(radius.EapCodeFailure, 0) eapSession.EapPayload = eapFailPkt - eapSession.AuthResult = models.AuthResult_FAILURE + eapSession.AuthResult = models.AusfUeAuthenticationAuthResult_FAILURE c.JSON(http.StatusUnauthorized, eapSession) return } @@ -118,13 +118,13 @@ func (p *Processor) EapAuthComfirmRequestProcedure( logger.AuthELog.Infoln("Correct RES value, EAP-AKA' auth succeed") eapSession.KSeaf = ausfCurrentContext.Kseaf eapSession.Supi = currentSupi - eapSession.AuthResult = models.AuthResult_SUCCESS + eapSession.AuthResult = models.AusfUeAuthenticationAuthResult_SUCCESS eapSuccPkt := ConstructEapNoTypePkt(radius.EapCodeSuccess, eapContent.Id) eapSession.EapPayload = eapSuccPkt udmUrl := ausfCurrentContext.UdmUeauUrl if sendErr := p.Consumer().SendAuthResultToUDM( eapSessionID, - models.AuthType_EAP_AKA_PRIME, + models.UdmUeauAuthType_EAP_AKA_PRIME, true, servingNetworkName, udmUrl); sendErr != nil { @@ -135,13 +135,13 @@ func (p *Processor) EapAuthComfirmRequestProcedure( c.JSON(http.StatusInternalServerError, problemDetails) return } - ausfCurrentContext.AuthStatus = models.AuthResult_SUCCESS + ausfCurrentContext.AuthStatus = models.AusfUeAuthenticationAuthResult_SUCCESS } else { eapOK = false eapErrStr = "Wrong RES value, EAP-AKA' auth failed" } case ausf_context.AKA_AUTHENTICATION_REJECT_SUBTYPE: - ausfCurrentContext.AuthStatus = models.AuthResult_FAILURE + ausfCurrentContext.AuthStatus = models.AusfUeAuthenticationAuthResult_FAILURE case ausf_context.AKA_SYNCHRONIZATION_FAILURE_SUBTYPE: logger.AuthELog.Warnf("EAP-AKA' synchronziation failure") if ausfCurrentContext.Resynced { @@ -160,19 +160,19 @@ func (p *Processor) EapAuthComfirmRequestProcedure( return } case ausf_context.AKA_NOTIFICATION_SUBTYPE: - ausfCurrentContext.AuthStatus = models.AuthResult_FAILURE + ausfCurrentContext.AuthStatus = models.AusfUeAuthenticationAuthResult_FAILURE case ausf_context.AKA_CLIENT_ERROR_SUBTYPE: logger.AuthELog.Warnf("EAP-AKA' failure: receive client-error") - ausfCurrentContext.AuthStatus = models.AuthResult_FAILURE + ausfCurrentContext.AuthStatus = models.AusfUeAuthenticationAuthResult_FAILURE default: - ausfCurrentContext.AuthStatus = models.AuthResult_FAILURE + ausfCurrentContext.AuthStatus = models.AusfUeAuthenticationAuthResult_FAILURE } } if !eapOK { logger.AuthELog.Warnf("EAP-AKA' failure: %s", eapErrStr) - if sendErr := p.Consumer().SendAuthResultToUDM(eapSessionID, models.AuthType_EAP_AKA_PRIME, false, servingNetworkName, - ausfCurrentContext.UdmUeauUrl); sendErr != nil { + if sendErr := p.Consumer().SendAuthResultToUDM(eapSessionID, models.UdmUeauAuthType_EAP_AKA_PRIME, + false, servingNetworkName, ausfCurrentContext.UdmUeauUrl); sendErr != nil { logger.AuthELog.Infoln(sendErr.Error()) problemDetails := models.ProblemDetails{ Status: http.StatusInternalServerError, @@ -182,27 +182,29 @@ func (p *Processor) EapAuthComfirmRequestProcedure( return } - ausfCurrentContext.AuthStatus = models.AuthResult_FAILURE - eapSession.AuthResult = models.AuthResult_ONGOING + ausfCurrentContext.AuthStatus = models.AusfUeAuthenticationAuthResult_FAILURE + eapSession.AuthResult = models.AusfUeAuthenticationAuthResult_ONGOING failEapAkaNoti := ConstructFailEapAkaNotification(eapContent.Id) eapSession.EapPayload = failEapAkaNoti self := ausf_context.GetSelf() linkUrl := self.Url + factory.AusfAuthResUriPrefix + "/ue-authentications/" + eapSessionID + "/eap-session" - linksValue := models.LinksValueSchema{Href: linkUrl} - eapSession.Links = make(map[string]models.LinksValueSchema) - eapSession.Links["eap-session"] = linksValue - } else if ausfCurrentContext.AuthStatus == models.AuthResult_FAILURE { - if sendErr := p.Consumer().SendAuthResultToUDM(eapSessionID, models.AuthType_EAP_AKA_PRIME, false, servingNetworkName, - ausfCurrentContext.UdmUeauUrl); sendErr != nil { + linksValue := models.Link{Href: linkUrl} + eapSession.Links = make(map[string][]models.Link) + eapSession.Links["eap-session"] = []models.Link{linksValue} + } else if ausfCurrentContext.AuthStatus == models.AusfUeAuthenticationAuthResult_FAILURE { + if sendErr := p.Consumer().SendAuthResultToUDM(eapSessionID, models.UdmUeauAuthType_EAP_AKA_PRIME, false, + servingNetworkName, ausfCurrentContext.UdmUeauUrl); sendErr != nil { logger.AuthELog.Infoln(sendErr.Error()) var problemDetails models.ProblemDetails problemDetails.Status = http.StatusInternalServerError problemDetails.Cause = "UPSTREAM_SERVER_ERROR" + c.JSON(http.StatusInternalServerError, problemDetails) + return } eapFailPkt := ConstructEapNoTypePkt(radius.EapCodeFailure, eapPayload[1]) eapSession.EapPayload = eapFailPkt - eapSession.AuthResult = models.AuthResult_FAILURE + eapSession.AuthResult = models.AusfUeAuthenticationAuthResult_FAILURE } c.JSON(http.StatusOK, eapSession) @@ -265,7 +267,7 @@ func (p *Processor) UeAuthPostRequestProcedure(c *gin.Context, updateAuthenticat ueid := authInfoResult.Supi ausfUeContext := ausf_context.NewAusfUeContext(ueid) ausfUeContext.ServingNetworkName = snName - ausfUeContext.AuthStatus = models.AuthResult_ONGOING + ausfUeContext.AuthStatus = models.AusfUeAuthenticationAuthResult_ONGOING ausfUeContext.UdmUeauUrl = udmUrl ausf_context.AddAusfUeContextToPool(ausfUeContext) @@ -274,7 +276,7 @@ func (p *Processor) UeAuthPostRequestProcedure(c *gin.Context, updateAuthenticat locationURI := self.Url + factory.AusfAuthResUriPrefix + "/ue-authentications/" + supiOrSuci putLink := locationURI - if authInfoResult.AuthType == models.AuthType__5_G_AKA { + if authInfoResult.AuthType == models.UdmUeauAuthType__5_G_AKA { logger.UeAuthLog.Infoln("Use 5G AKA auth method") putLink += "/5g-aka-confirmation" @@ -338,10 +340,10 @@ func (p *Processor) UeAuthPostRequestProcedure(c *gin.Context, updateAuthenticat av5gAka.HxresStar = hxresStar responseBody.Var5gAuthData = av5gAka - linksValue := models.LinksValueSchema{Href: putLink} - responseBody.Links = make(map[string]models.LinksValueSchema) - responseBody.Links["5g-aka"] = linksValue - } else if authInfoResult.AuthType == models.AuthType_EAP_AKA_PRIME { + linksValue := models.Link{Href: putLink} + responseBody.Links = make(map[string][]models.Link) + responseBody.Links["5g-aka"] = []models.Link{linksValue} + } else if authInfoResult.AuthType == models.UdmUeauAuthType_EAP_AKA_PRIME { logger.UeAuthLog.Infoln("Use EAP-AKA' auth method") putLink += "/eap-session" @@ -433,12 +435,12 @@ func (p *Processor) UeAuthPostRequestProcedure(c *gin.Context, updateAuthenticat encodedPktAfterMAC := eapPkt.Encode() responseBody.Var5gAuthData = base64.StdEncoding.EncodeToString(encodedPktAfterMAC) - linksValue := models.LinksValueSchema{Href: putLink} - responseBody.Links = make(map[string]models.LinksValueSchema) - responseBody.Links["eap-session"] = linksValue + linksValue := models.Link{Href: putLink} + responseBody.Links = make(map[string][]models.Link) + responseBody.Links["eap-session"] = []models.Link{linksValue} } - responseBody.AuthType = authInfoResult.AuthType + responseBody.AuthType = models.AusfUeAuthenticationAuthType(authInfoResult.AuthType) c.Header("Location", locationURI) c.JSON(http.StatusCreated, responseBody) @@ -458,7 +460,7 @@ func (p *Processor) Auth5gAkaComfirmRequestProcedure(c *gin.Context, updateConfi ) { var confirmDataRsp models.ConfirmationDataResponse success := false - confirmDataRsp.AuthResult = models.AuthResult_FAILURE + confirmDataRsp.AuthResult = models.AusfUeAuthenticationAuthResult_FAILURE if !ausf_context.CheckIfSuciSupiPairExists(ConfirmationDataResponseID) { logger.Auth5gAkaLog.Infof("supiSuciPair does not exist, confirmation failed (queried by %s)\n", @@ -488,21 +490,21 @@ func (p *Processor) Auth5gAkaComfirmRequestProcedure(c *gin.Context, updateConfi // Compare the received RES* with the stored XRES* logger.Auth5gAkaLog.Infof("res*: %x\nXres*: %x\n", updateConfirmationData.ResStar, ausfCurrentContext.XresStar) if strings.EqualFold(updateConfirmationData.ResStar, ausfCurrentContext.XresStar) { - ausfCurrentContext.AuthStatus = models.AuthResult_SUCCESS - confirmDataRsp.AuthResult = models.AuthResult_SUCCESS + ausfCurrentContext.AuthStatus = models.AusfUeAuthenticationAuthResult_SUCCESS + confirmDataRsp.AuthResult = models.AusfUeAuthenticationAuthResult_SUCCESS success = true logger.Auth5gAkaLog.Infoln("5G AKA confirmation succeeded") confirmDataRsp.Supi = currentSupi confirmDataRsp.Kseaf = ausfCurrentContext.Kseaf } else { - ausfCurrentContext.AuthStatus = models.AuthResult_FAILURE - confirmDataRsp.AuthResult = models.AuthResult_FAILURE - p.logConfirmFailureAndInformUDM(ConfirmationDataResponseID, models.AuthType__5_G_AKA, servingNetworkName, - "5G AKA confirmation failed", ausfCurrentContext.UdmUeauUrl) + ausfCurrentContext.AuthStatus = models.AusfUeAuthenticationAuthResult_FAILURE + confirmDataRsp.AuthResult = models.AusfUeAuthenticationAuthResult_FAILURE + p.logConfirmFailureAndInformUDM(ConfirmationDataResponseID, models.AusfUeAuthenticationAuthType__5_G_AKA, + servingNetworkName, "5G AKA confirmation failed", ausfCurrentContext.UdmUeauUrl) } - if sendErr := p.Consumer().SendAuthResultToUDM(currentSupi, models.AuthType__5_G_AKA, success, servingNetworkName, - ausfCurrentContext.UdmUeauUrl); sendErr != nil { + if sendErr := p.Consumer().SendAuthResultToUDM(currentSupi, models.UdmUeauAuthType__5_G_AKA, success, + servingNetworkName, ausfCurrentContext.UdmUeauUrl); sendErr != nil { logger.Auth5gAkaLog.Infoln(sendErr.Error()) problemDetails := models.ProblemDetails{ Status: http.StatusInternalServerError, @@ -819,16 +821,18 @@ func ConstructEapNoTypePkt(code radius.EapCode, pktID uint8) string { } func (p *Processor) logConfirmFailureAndInformUDM( - id string, authType models.AuthType, servingNetworkName, errStr, udmUrl string, + id string, authType models.AusfUeAuthenticationAuthType, servingNetworkName, errStr, udmUrl string, ) { - if authType == models.AuthType__5_G_AKA { + udmAuthType := models.UdmUeauAuthType(authType) + + if authType == models.AusfUeAuthenticationAuthType__5_G_AKA { logger.Auth5gAkaLog.Infoln(servingNetworkName, errStr) - if sendErr := p.Consumer().SendAuthResultToUDM(id, authType, false, "", udmUrl); sendErr != nil { + if sendErr := p.Consumer().SendAuthResultToUDM(id, udmAuthType, false, "", udmUrl); sendErr != nil { logger.Auth5gAkaLog.Infoln(sendErr.Error()) } - } else if authType == models.AuthType_EAP_AKA_PRIME { + } else if authType == models.AusfUeAuthenticationAuthType_EAP_AKA_PRIME { logger.AuthELog.Infoln(errStr) - if sendErr := p.Consumer().SendAuthResultToUDM(id, authType, false, "", udmUrl); sendErr != nil { + if sendErr := p.Consumer().SendAuthResultToUDM(id, udmAuthType, false, "", udmUrl); sendErr != nil { logger.AuthELog.Infoln(sendErr.Error()) } } diff --git a/internal/sbi/routes.go b/internal/sbi/routes.go index 124bbf8..82767aa 100644 --- a/internal/sbi/routes.go +++ b/internal/sbi/routes.go @@ -3,6 +3,7 @@ package sbi import "github.com/gin-gonic/gin" type Route struct { + Name string Method string Pattern string APIFunc gin.HandlerFunc diff --git a/internal/sbi/server.go b/internal/sbi/server.go index 90b3c09..46a5d73 100644 --- a/internal/sbi/server.go +++ b/internal/sbi/server.go @@ -61,8 +61,8 @@ func NewServer(ausf ServerAusf, tlsKeyLogPath string) (*Server, error) { func newRouter(s *Server) *gin.Engine { router := logger_util.NewGinWithLogrus(logger.GinLog) - for _, serverName := range factory.AusfConfig.Configuration.ServiceNameList { - switch models.ServiceName(serverName) { + for _, serviceName := range factory.AusfConfig.Configuration.ServiceNameList { + switch models.ServiceName(serviceName) { case models.ServiceName_NAUSF_AUTH: ausfUeAuthenticationGroup := router.Group(factory.AusfAuthResUriPrefix) ausfUeAuthenticationRoutes := s.getUeAuthenticationRoutes() @@ -87,6 +87,9 @@ func newRouter(s *Server) *gin.Engine { routerAuthorizationCheck.Check(c, ausf_context.GetSelf()) }) applyRoutes(ausfUpuprotectionGroup, ausfUpuprotectionRoutes) + + default: + logger.SBILog.Warnf("Unsupported service name: %s", serviceName) } } diff --git a/pkg/app/mock.go b/pkg/app/mock.go new file mode 100644 index 0000000..0cc5c11 --- /dev/null +++ b/pkg/app/mock.go @@ -0,0 +1,129 @@ +// Code generated by MockGen. DO NOT EDIT. +// Source: app.go +// +// Generated by this command: +// +// mockgen -source=app.go -destination=mock.go -package=app +// + +// Package app is a generated GoMock package. +package app + +import ( + reflect "reflect" + + context "github.com/free5gc/ausf/internal/context" + factory "github.com/free5gc/ausf/pkg/factory" + gomock "go.uber.org/mock/gomock" +) + +// MockApp is a mock of App interface. +type MockApp struct { + ctrl *gomock.Controller + recorder *MockAppMockRecorder +} + +// MockAppMockRecorder is the mock recorder for MockApp. +type MockAppMockRecorder struct { + mock *MockApp +} + +// NewMockApp creates a new mock instance. +func NewMockApp(ctrl *gomock.Controller) *MockApp { + mock := &MockApp{ctrl: ctrl} + mock.recorder = &MockAppMockRecorder{mock} + return mock +} + +// EXPECT returns an object that allows the caller to indicate expected use. +func (m *MockApp) EXPECT() *MockAppMockRecorder { + return m.recorder +} + +// Config mocks base method. +func (m *MockApp) Config() *factory.Config { + m.ctrl.T.Helper() + ret := m.ctrl.Call(m, "Config") + ret0, _ := ret[0].(*factory.Config) + return ret0 +} + +// Config indicates an expected call of Config. +func (mr *MockAppMockRecorder) Config() *gomock.Call { + mr.mock.ctrl.T.Helper() + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "Config", reflect.TypeOf((*MockApp)(nil).Config)) +} + +// Context mocks base method. +func (m *MockApp) Context() *context.AUSFContext { + m.ctrl.T.Helper() + ret := m.ctrl.Call(m, "Context") + ret0, _ := ret[0].(*context.AUSFContext) + return ret0 +} + +// Context indicates an expected call of Context. +func (mr *MockAppMockRecorder) Context() *gomock.Call { + mr.mock.ctrl.T.Helper() + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "Context", reflect.TypeOf((*MockApp)(nil).Context)) +} + +// SetLogEnable mocks base method. +func (m *MockApp) SetLogEnable(enable bool) { + m.ctrl.T.Helper() + m.ctrl.Call(m, "SetLogEnable", enable) +} + +// SetLogEnable indicates an expected call of SetLogEnable. +func (mr *MockAppMockRecorder) SetLogEnable(enable any) *gomock.Call { + mr.mock.ctrl.T.Helper() + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "SetLogEnable", reflect.TypeOf((*MockApp)(nil).SetLogEnable), enable) +} + +// SetLogLevel mocks base method. +func (m *MockApp) SetLogLevel(level string) { + m.ctrl.T.Helper() + m.ctrl.Call(m, "SetLogLevel", level) +} + +// SetLogLevel indicates an expected call of SetLogLevel. +func (mr *MockAppMockRecorder) SetLogLevel(level any) *gomock.Call { + mr.mock.ctrl.T.Helper() + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "SetLogLevel", reflect.TypeOf((*MockApp)(nil).SetLogLevel), level) +} + +// SetReportCaller mocks base method. +func (m *MockApp) SetReportCaller(reportCaller bool) { + m.ctrl.T.Helper() + m.ctrl.Call(m, "SetReportCaller", reportCaller) +} + +// SetReportCaller indicates an expected call of SetReportCaller. +func (mr *MockAppMockRecorder) SetReportCaller(reportCaller any) *gomock.Call { + mr.mock.ctrl.T.Helper() + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "SetReportCaller", reflect.TypeOf((*MockApp)(nil).SetReportCaller), reportCaller) +} + +// Start mocks base method. +func (m *MockApp) Start() { + m.ctrl.T.Helper() + m.ctrl.Call(m, "Start") +} + +// Start indicates an expected call of Start. +func (mr *MockAppMockRecorder) Start() *gomock.Call { + mr.mock.ctrl.T.Helper() + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "Start", reflect.TypeOf((*MockApp)(nil).Start)) +} + +// Terminate mocks base method. +func (m *MockApp) Terminate() { + m.ctrl.T.Helper() + m.ctrl.Call(m, "Terminate") +} + +// Terminate indicates an expected call of Terminate. +func (mr *MockAppMockRecorder) Terminate() *gomock.Call { + mr.mock.ctrl.T.Helper() + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "Terminate", reflect.TypeOf((*MockApp)(nil).Terminate)) +} diff --git a/pkg/service/init.go b/pkg/service/init.go index bb01b5d..0c93036 100644 --- a/pkg/service/init.go +++ b/pkg/service/init.go @@ -161,6 +161,7 @@ func (a *AusfApp) Terminate() { func (a *AusfApp) terminateProcedure() { logger.MainLog.Infof("Terminating AUSF...") + a.CallServerStop() // deregister with NRF problemDetails, err := a.Consumer().SendDeregisterNFInstance() @@ -171,9 +172,7 @@ func (a *AusfApp) terminateProcedure() { } else { logger.MainLog.Infof("Deregister from NRF successfully") } - logger.MainLog.Infof("AUSF SBI Server terminated") - - a.CallServerStop() + logger.MainLog.Infof("CHF SBI Server terminated") } func (a *AusfApp) CallServerStop() {