1
1
/*
2
- * Copyright 2018-2023 JetBrains s.r.o. and contributors. Use of this source code is governed by the MIT license.
2
+ * Copyright 2018-2025 JetBrains s.r.o. and contributors. Use of this source code is governed by the MIT license.
3
3
*/
4
4
5
5
package com.microsoft.azure.toolkit.intellij.base
6
6
7
- import com.intellij.ide.AppLifecycleListener
8
7
import com.intellij.openapi.diagnostic.logger
9
- import com.intellij.util.net.HttpConfigurable
8
+ import com.intellij.openapi.project.Project
9
+ import com.intellij.openapi.startup.ProjectActivity
10
+ import com.intellij.util.net.ProxyAuthentication
11
+ import com.intellij.util.net.ProxyConfiguration.StaticProxyConfiguration
12
+ import com.intellij.util.net.ProxySettings
10
13
import com.intellij.util.net.ssl.CertificateManager
11
14
import com.microsoft.azure.toolkit.ide.common.auth.IdeAzureAccount
12
15
import com.microsoft.azure.toolkit.ide.common.store.AzureConfigInitializer.initialize
@@ -15,43 +18,40 @@ import com.microsoft.azure.toolkit.ide.common.store.DefaultMachineStore
15
18
import com.microsoft.azure.toolkit.intellij.common.CommonConst
16
19
import com.microsoft.azure.toolkit.intellij.common.auth.IntelliJSecureStore
17
20
import com.microsoft.azure.toolkit.intellij.common.settings.IntellijStore
18
- import com.microsoft.azure.toolkit.intellij.common.telemetry.IntelliJAzureTelemetryCommonPropertiesProvider
19
21
import com.microsoft.azure.toolkit.lib.Azure
20
22
import com.microsoft.azure.toolkit.lib.auth.AzureCloud
21
23
import com.microsoft.azure.toolkit.lib.common.proxy.ProxyInfo
22
24
import com.microsoft.azure.toolkit.lib.common.proxy.ProxyManager
23
25
import com.microsoft.azure.toolkit.lib.common.task.AzureRxTaskManager
24
- import com.microsoft.azure.toolkit.lib.common.task.AzureTaskManager
25
- import java.io.File
26
+ import java.util.UUID
26
27
import javax.net.ssl.HttpsURLConnection
28
+ import kotlin.io.path.Path
29
+ import kotlin.io.path.absolutePathString
27
30
28
- class PluginLifecycleListener : AppLifecycleListener {
31
+ class PluginLifecycleActivity : ProjectActivity {
29
32
companion object {
30
- private val LOG = logger<PluginLifecycleListener >()
33
+ private val LOG = logger<PluginLifecycleActivity >()
31
34
}
32
35
33
- override fun appFrameCreated ( commandLineArgs : MutableList < String > ) {
36
+ override suspend fun execute ( project : Project ) {
34
37
try {
35
38
AzureRxTaskManager .register()
36
- val azureJson = String .format( " %s%s%s " , CommonConst .PLUGIN_PATH , File .separator, " azure.json" )
39
+ val azureJson = Path ( CommonConst .PLUGIN_PATH ).resolve( " azure.json" ).absolutePathString( )
37
40
AzureStoreManager .register(
38
41
DefaultMachineStore (azureJson),
39
42
IntellijStore .getInstance(),
40
43
IntelliJSecureStore .getInstance()
41
44
)
42
45
initProxy()
43
46
initializeConfig()
44
- AzureTaskManager .getInstance().runLater {
45
- IdeAzureAccount .getInstance().restoreSignin()
46
- }
47
+ IdeAzureAccount .getInstance().restoreSignin()
47
48
} catch (t: Throwable ) {
48
49
LOG .error(t)
49
50
}
50
51
}
51
52
52
53
private fun initializeConfig () {
53
- val installId = IntelliJAzureTelemetryCommonPropertiesProvider .getInstallationId()
54
-
54
+ val installId = UUID .randomUUID().toString()
55
55
initialize(installId, " Azure Toolkit for IntelliJ" , CommonConst .PLUGIN_VERSION )
56
56
val cloud = Azure .az().config().cloud
57
57
if (cloud.isNotBlank()) {
@@ -60,18 +60,23 @@ class PluginLifecycleListener : AppLifecycleListener {
60
60
}
61
61
62
62
private fun initProxy () {
63
- val instance = HttpConfigurable .getInstance()
64
- if (instance != null && instance.USE_HTTP_PROXY ) {
65
- val proxy = ProxyInfo .builder()
66
- .source(" intellij" )
67
- .host(instance.PROXY_HOST )
68
- .port(instance.PROXY_PORT )
69
- .username(instance.proxyLogin)
70
- .password(instance.plainProxyPassword)
71
- .build()
72
- Azure .az().config().setProxyInfo(proxy)
73
- ProxyManager .getInstance().applyProxy()
63
+ val proxySettings = ProxySettings .getInstance().getProxyConfiguration()
64
+ if (proxySettings is StaticProxyConfiguration ) {
65
+ val proxyAuthentication = ProxyAuthentication .getInstance()
66
+ val credentials = proxyAuthentication.getKnownAuthentication(proxySettings.host, proxySettings.port)
67
+ if (credentials != null ) {
68
+ val proxy = ProxyInfo .builder()
69
+ .source(" intellij" )
70
+ .host(proxySettings.host)
71
+ .port(proxySettings.port)
72
+ .username(credentials.userName)
73
+ .password(credentials.password?.toString() ? : " " )
74
+ .build()
75
+ Azure .az().config().setProxyInfo(proxy)
76
+ ProxyManager .getInstance().applyProxy()
77
+ }
74
78
}
79
+
75
80
val certificateManager = CertificateManager .getInstance()
76
81
Azure .az().config().sslContext = certificateManager.sslContext
77
82
HttpsURLConnection .setDefaultSSLSocketFactory(certificateManager.sslContext.socketFactory)
0 commit comments