33
44package software.aws.toolkits.jetbrains.services.amazonq.project
55
6- import com.fasterxml.jackson.module.kotlin.jacksonObjectMapper
76import com.intellij.execution.configurations.GeneralCommandLine
8- import com.intellij.execution.process.KillableProcessHandler
97import com.intellij.openapi.Disposable
108import com.intellij.openapi.application.ApplicationManager
119import com.intellij.openapi.project.Project
12- import com.intellij.openapi.util.process.ProcessCloseUtil
10+ import com.intellij.openapi.util.Disposer
1311import com.intellij.util.io.HttpRequests
1412import com.intellij.util.io.createDirectories
1513import com.intellij.util.net.NetUtils
16- import com.nimbusds.jose.JOSEObjectType
17- import com.nimbusds.jose.JWSAlgorithm
18- import com.nimbusds.jose.JWSHeader
19- import com.nimbusds.jose.crypto.MACSigner
20- import com.nimbusds.jwt.JWTClaimsSet
21- import com.nimbusds.jwt.SignedJWT
2214import kotlinx.coroutines.CoroutineScope
2315import org.apache.commons.codec.digest.DigestUtils
2416import software.amazon.awssdk.utils.UserHomeDirectoryUtils
2517import software.aws.toolkits.core.utils.getLogger
26- import software.aws.toolkits.core.utils.info
2718import software.aws.toolkits.core.utils.tryDirOp
2819import software.aws.toolkits.core.utils.warn
2920import software.aws.toolkits.jetbrains.services.amazonq.lsp.EncoderServer2
@@ -35,11 +26,6 @@ import java.nio.file.Files
3526import java.nio.file.Path
3627import java.nio.file.Paths
3728import java.nio.file.attribute.PosixFilePermission
38- import java.security.Key
39- import java.security.SecureRandom
40- import java.util.Base64
41- import java.util.concurrent.atomic.AtomicInteger
42- import javax.crypto.spec.SecretKeySpec
4329
4430class EncoderServer (val project : Project , private val cs : CoroutineScope ) : Disposable {
4531 val cachePath = Paths .get(
@@ -49,9 +35,6 @@ class EncoderServer(val project: Project, private val cs: CoroutineScope) : Disp
4935 private val serverDirectoryName = " qserver-${manifestManager.currentVersion} .zip"
5036 val port by lazy { NetUtils .findAvailableSocketPort() }
5137 private val nodeRunnableName = if (manifestManager.getOs() == " windows" ) " node.exe" else " node"
52- private val key = generateHmacKey()
53- private var processHandler: KillableProcessHandler ? = null
54- private val mapper = jacksonObjectMapper()
5538 lateinit var encoderServer2: EncoderServer2
5639
5740 fun downloadArtifactsAndStartServer () {
@@ -62,39 +45,7 @@ class EncoderServer(val project: Project, private val cs: CoroutineScope) : Disp
6245 start()
6346 }
6447
65- fun isNodeProcessRunning () = processHandler != null && processHandler?.process?.isAlive == true
66-
67- private fun generateHmacKey (): Key {
68- val keyBytes = ByteArray (32 )
69- SecureRandom ().nextBytes(keyBytes)
70- return SecretKeySpec (keyBytes, " HmacSHA256" )
71- }
72-
73- fun encrypt (data : String ): String {
74- val header = JWSHeader .Builder (JWSAlgorithm .HS256 )
75- .type(JOSEObjectType .JWT )
76- .build()
77-
78- val claimsSet = JWTClaimsSet .Builder ()
79- .subject(Base64 .getUrlEncoder().withoutPadding().encodeToString(data.toByteArray()))
80- .build()
81-
82- val signedJWT = SignedJWT (header, claimsSet)
83- signedJWT.sign(MACSigner (key.encoded))
84-
85- return signedJWT.serialize()
86- }
87-
88- data class EncryptionRequest (
89- val version : String = " 1.0" ,
90- val mode : String = " JWT" ,
91- val key : String ,
92- )
93-
94- fun getEncryptionRequest (): String {
95- val request = EncryptionRequest (key = Base64 .getUrlEncoder().withoutPadding().encodeToString(key.encoded))
96- return mapper.writeValueAsString(request) + " \n "
97- }
48+ fun isNodeProcessRunning () = encoderServer2.initializer.isCompleted
9849
9950 private fun getCommand (): GeneralCommandLine {
10051 val threadCount = CodeWhispererSettings .getInstance().getProjectContextIndexThreadCount()
@@ -123,7 +74,7 @@ class EncoderServer(val project: Project, private val cs: CoroutineScope) : Disp
12374 }
12475
12576 private fun close () {
126- processHandler?.process?. let { ProcessCloseUtil .close(it) }
77+ Disposer .dispose(encoderServer2)
12778 }
12879
12980 private fun downloadArtifactsIfNeeded () {
0 commit comments