1
1
import { autorun , observable } from 'mobx' ;
2
2
import { remote } from 'electron' ;
3
3
4
- import { DEFAULT_FEATURES_CONFIG } from '../../config' ;
4
+ import { DEFAULT_FEATURES_CONFIG , HEALTHCHECK_URL } from '../../config' ;
5
5
6
6
const { session } = remote ;
7
7
@@ -15,29 +15,40 @@ export const config = observable({
15
15
export default function init ( stores ) {
16
16
debug ( 'Initializing `serviceProxy` feature' ) ;
17
17
18
- autorun ( ( ) => {
19
- const { isServiceProxyEnabled, isServiceProxyPremiumFeature } = stores . features . features ;
18
+ const { defaultSession } = session ;
19
+ defaultSession . resolveProxy ( HEALTHCHECK_URL , ( proxy ) => {
20
+ debug ( 'Resolve proxy' , proxy ) ;
20
21
21
- config . isEnabled = isServiceProxyEnabled !== undefined ? isServiceProxyEnabled : DEFAULT_FEATURES_CONFIG . isServiceProxyEnabled ;
22
- config . isPremium = isServiceProxyPremiumFeature !== undefined ? isServiceProxyPremiumFeature : DEFAULT_FEATURES_CONFIG . isServiceProxyPremiumFeature ;
22
+ let systemProxy = 'direct://' ;
23
+ const proxyMatch = proxy . match ( / P R O X Y ( .* ) / i) ;
24
+ if ( proxyMatch . length ) {
25
+ systemProxy = proxyMatch [ 1 ] . trim ( ) ;
26
+ }
23
27
24
- const services = stores . services . all ;
25
- const isPremiumUser = stores . user . data . isPremium ;
28
+ autorun ( ( ) => {
29
+ const { isServiceProxyEnabled , isServiceProxyPremiumFeature } = stores . features . features ;
26
30
27
- services . forEach ( ( service ) => {
28
- const s = session . fromPartition ( `persist:service-${ service . id } ` ) ;
29
- let proxyHost = 'direct://' ;
31
+ config . isEnabled = isServiceProxyEnabled !== undefined ? isServiceProxyEnabled : DEFAULT_FEATURES_CONFIG . isServiceProxyEnabled ;
32
+ config . isPremium = isServiceProxyPremiumFeature !== undefined ? isServiceProxyPremiumFeature : DEFAULT_FEATURES_CONFIG . isServiceProxyPremiumFeature ;
30
33
31
- if ( config . isEnabled && ( isPremiumUser || ! config . isPremium ) ) {
32
- const serviceProxyConfig = stores . settings . proxy [ service . id ] ;
34
+ const services = stores . services . enabled ;
35
+ const isPremiumUser = stores . user . data . isPremium ;
33
36
34
- if ( serviceProxyConfig && serviceProxyConfig . isEnabled && serviceProxyConfig . host ) {
35
- proxyHost = serviceProxyConfig . host ;
37
+ services . forEach ( ( service ) => {
38
+ let proxyHost = systemProxy ;
39
+ const s = session . fromPartition ( `persist:service-${ service . id } ` ) ;
40
+
41
+ if ( config . isEnabled && ( isPremiumUser || ! config . isPremium ) ) {
42
+ const serviceProxyConfig = stores . settings . proxy [ service . id ] ;
43
+
44
+ if ( serviceProxyConfig && serviceProxyConfig . isEnabled && serviceProxyConfig . host ) {
45
+ proxyHost = serviceProxyConfig . host ;
46
+ }
36
47
}
37
- }
38
48
39
- s . setProxy ( { proxyRules : proxyHost } , ( e ) => {
40
- debug ( `Using proxy "${ proxyHost } " for "${ service . name } " (${ service . id } )` , e ) ;
49
+ s . setProxy ( { proxyRules : proxyHost } , ( ) => {
50
+ debug ( `Using proxy "${ proxyHost } " for "${ service . name } " (${ service . id } )` ) ;
51
+ } ) ;
41
52
} ) ;
42
53
} ) ;
43
54
} ) ;
0 commit comments