Skip to content

Commit 00a7b79

Browse files
Lagt til en enkel juridisk logg klient (#50)
* Lagt til en enkel juridisk logg klient * Lagt til coroutine context for forespørsel til juridisk logg. * Forandret JuridiskLoggRequest bygging logikken * Fikset PayloadIntegrationTest * Lagt til extra logging * Revert "Lagt til extra logging" This reverts commit 52a11ea.
1 parent bdf9df3 commit 00a7b79

File tree

5 files changed

+104
-2
lines changed

5 files changed

+104
-2
lines changed

.nais/ebms-payload-dev.yaml

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -51,6 +51,11 @@ spec:
5151
inbound:
5252
rules:
5353
- application: ebms-provider
54+
vault:
55+
enabled: true
56+
paths:
57+
- kvPath: serviceuser/data/dev/srv-ebms-payload
58+
mountPath: /var/run/secrets/nais.io/vault/serviceuser
5459
webproxy: true
5560
envFrom:
5661
- secret: ebms-payload-secret
@@ -68,3 +73,7 @@ spec:
6873
value: DEBUG
6974
- name: TRUSTSTORE_PATH
7075
value: truststore_test.p12
76+
- name: APP_JURIDISKLOGG_URI
77+
value: https://app-q1.adeo.no/juridisklogg
78+
- name: JURIDISKLOGG_STORAGE_TIME_YEARS
79+
value: "1"

.nais/ebms-payload-prod.yaml

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -53,6 +53,9 @@ spec:
5353
- application: ebms-provider
5454
vault:
5555
enabled: true
56+
paths:
57+
- kvPath: serviceuser/data/prod/srv-ebms-payload
58+
mountPath: /var/run/secrets/nais.io/vault/serviceuser
5659
webproxy: true
5760
env:
5861
- name: VIRKSOMHETSSERTIFIKAT_PATH
@@ -65,3 +68,7 @@ spec:
6568
value: credentials.2022
6669
- name: TRUSTSTORE_PATH
6770
value: truststore_prod.p12
71+
- name: APP_JURIDISKLOGG_URI
72+
value: https://app.adeo.no/juridisklogg
73+
- name: JURIDISKLOGG_STORAGE_TIME_YEARS
74+
value: "10"

ebms-payload/init/init.sh

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,2 @@
1+
export JURIDESKLOGG_USERNAME=$(cat /var/run/secrets/nais.io/vault/serviceuser/username)
2+
export JURIDESKLOGG_PASSWORD=$(cat /var/run/secrets/nais.io/vault/serviceuser/password)

ebms-payload/src/main/kotlin/no/nav/emottak/payload/Processor.kt

Lines changed: 13 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,7 @@ import no.nav.emottak.payload.crypto.Dekryptering
1010
import no.nav.emottak.payload.crypto.Kryptering
1111
import no.nav.emottak.payload.crypto.PayloadSignering
1212
import no.nav.emottak.payload.crypto.payloadSigneringConfig
13+
import no.nav.emottak.payload.juridisklogg.JuridiskLoggService
1314
import no.nav.emottak.payload.ocspstatus.OcspStatusService
1415
import no.nav.emottak.payload.ocspstatus.trustStoreConfig
1516
import no.nav.emottak.payload.util.GZipUtil
@@ -30,7 +31,8 @@ class Processor(
3031
private val dekryptering: Dekryptering = Dekryptering(),
3132
private val signering: PayloadSignering = PayloadSignering(),
3233
private val gZipUtil: GZipUtil = GZipUtil(),
33-
private val signatureVerifisering: SignaturVerifisering = SignaturVerifisering()
34+
private val signatureVerifisering: SignaturVerifisering = SignaturVerifisering(),
35+
private val juridiskLogging: JuridiskLoggService = JuridiskLoggService()
3436
) {
3537

3638
fun process(payloadRequest: PayloadRequest): PayloadResponse {
@@ -49,7 +51,16 @@ class Processor(
4951

5052
shouldThrowExceptionForTestPurposes(payloadRequest.payload.bytes)
5153

52-
return payloadRequest.payload.let {
54+
return payloadRequest.payload.also {
55+
try {
56+
if (processConfig.juridiskLogg) {
57+
log.debug("Sender forespørsel til juridisk logg")
58+
juridiskLogging.logge(payloadRequest)
59+
}
60+
} catch (e: Exception) {
61+
log.error("Feil med å lage forespørsel til juridisk logg", e)
62+
}
63+
}.let {
5364
when (processConfig.kryptering) {
5465
true -> dekryptering.dekrypter(it.bytes, false).also { log.info(payloadRequest.marker(), "Payload dekryptert") }
5566
false -> it.bytes
Lines changed: 73 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,73 @@
1+
package no.nav.emottak.payload.juridisklogg
2+
3+
import io.ktor.client.HttpClient
4+
import io.ktor.client.call.body
5+
import io.ktor.client.engine.cio.CIO
6+
import io.ktor.client.request.basicAuth
7+
import io.ktor.client.request.post
8+
import io.ktor.client.request.setBody
9+
import io.ktor.http.ContentType
10+
import io.ktor.http.contentType
11+
import kotlinx.coroutines.Dispatchers
12+
import kotlinx.coroutines.withContext
13+
import kotlinx.serialization.Serializable
14+
import no.nav.emottak.message.model.Direction
15+
import no.nav.emottak.message.model.PayloadRequest
16+
import no.nav.emottak.payload.log
17+
import no.nav.emottak.util.getEnvVar
18+
19+
class JuridiskLoggService() {
20+
private val juridiskLoggUrl = getEnvVar("APP_JURIDISKLOGG_URI", "https://app-q1.adeo.no/juridisklogg") + "/api/rest/logg"
21+
private val juridiskLoggStorageTime = getEnvVar("JURIDISKLOGG_STORAGE_TIME_YEARS", "1").toInt()
22+
private val userName = getEnvVar("JURIDESKLOGG_USERNAME", "dummyUsername")
23+
private val userPassword = getEnvVar("JURIDESKLOGG_PASSWORD", "dummyPassword")
24+
25+
init {
26+
log.debug("Juridisk logg URL: $juridiskLoggUrl")
27+
log.debug("Juridisk logg user: $userName")
28+
log.debug("Juridisk logg password length: ${userPassword.length}")
29+
}
30+
31+
fun logge(payloadRequest: PayloadRequest) {
32+
val httpClient = HttpClient(CIO)
33+
val request = JuridiskLoggRequest(
34+
payloadRequest.messageId,
35+
if (payloadRequest.direction == Direction.IN) "Ekstern bruker" else "NAV",
36+
if (payloadRequest.direction == Direction.IN) "NAV" else "Ekstern bruker",
37+
juridiskLoggStorageTime,
38+
payloadRequest.payload.bytes
39+
)
40+
log.debug("Juridisk logg forespørsel: $request")
41+
42+
val response = suspend {
43+
withContext(Dispatchers.IO) {
44+
try {
45+
httpClient.post(juridiskLoggUrl) {
46+
setBody(request)
47+
contentType(ContentType.Application.Json)
48+
basicAuth(userName, userPassword)
49+
}.body<JuridiskLoggResponse>()
50+
} catch (e: Exception) {
51+
log.error("Feil med å sende forespørsel til juridisk logg", e)
52+
} finally {
53+
httpClient.close()
54+
}
55+
}
56+
}
57+
log.debug("Juridisk logg respons: $response")
58+
}
59+
}
60+
61+
@Serializable
62+
data class JuridiskLoggRequest(
63+
val meldingsId: String,
64+
val avsender: String,
65+
val mottaker: String,
66+
val antallAarLagres: Int = 10,
67+
val meldingsInnhold: ByteArray
68+
)
69+
70+
@Serializable
71+
data class JuridiskLoggResponse(
72+
val id: String
73+
)

0 commit comments

Comments
 (0)