Skip to content

Commit 8ddae4a

Browse files
committed
fix(App): Use system proxy for services
1 parent 5c18595 commit 8ddae4a

File tree

2 files changed

+30
-17
lines changed

2 files changed

+30
-17
lines changed

src/config.js

+2
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,8 @@ export const DEV_API = 'https://dev.franzinfra.com';
1010
export const LIVE_API = 'https://api.franzinfra.com';
1111
export const GA_ID = 'UA-74126766-10';
1212

13+
export const HEALTHCHECK_URL = 'https://api.franzinfra.com/health';
14+
1315
export const DEFAULT_APP_SETTINGS = {
1416
autoLaunchInBackground: false,
1517
runInBackground: true,

src/features/serviceProxy/index.js

+28-17
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
import { autorun, observable } from 'mobx';
22
import { remote } from 'electron';
33

4-
import { DEFAULT_FEATURES_CONFIG } from '../../config';
4+
import { DEFAULT_FEATURES_CONFIG, HEALTHCHECK_URL } from '../../config';
55

66
const { session } = remote;
77

@@ -15,29 +15,40 @@ export const config = observable({
1515
export default function init(stores) {
1616
debug('Initializing `serviceProxy` feature');
1717

18-
autorun(() => {
19-
const { isServiceProxyEnabled, isServiceProxyPremiumFeature } = stores.features.features;
18+
const { defaultSession } = session;
19+
defaultSession.resolveProxy(HEALTHCHECK_URL, (proxy) => {
20+
debug('Resolve proxy', proxy);
2021

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(/PROXY (.*)/i);
24+
if (proxyMatch.length) {
25+
systemProxy = proxyMatch[1].trim();
26+
}
2327

24-
const services = stores.services.all;
25-
const isPremiumUser = stores.user.data.isPremium;
28+
autorun(() => {
29+
const { isServiceProxyEnabled, isServiceProxyPremiumFeature } = stores.features.features;
2630

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;
3033

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;
3336

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+
}
3647
}
37-
}
3848

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+
});
4152
});
4253
});
4354
});

0 commit comments

Comments
 (0)