MCPcopy Create free account
hub / github.com/Windscribe/Desktop-App / setSettingsImpl

Method setSettingsImpl

src/client/engine/engine/engine.cpp:1251–1358  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

1249}
1250
1251void Engine::setSettingsImpl(const types::EngineSettings &engineSettings)
1252{
1253 if (engineSettings_ == engineSettings)
1254 return;
1255
1256 bool isAllowLanTrafficChanged = engineSettings_.isAllowLanTraffic() != engineSettings.isAllowLanTraffic();
1257 bool isUpdateChannelChanged = engineSettings_.updateChannel() != engineSettings.updateChannel();
1258 bool isTerminateSocketsChanged = engineSettings_.isTerminateSockets() != engineSettings.isTerminateSockets();
1259 bool isDnsPolicyChanged = engineSettings_.dnsPolicy() != engineSettings.dnsPolicy();
1260 bool isCustomOvpnConfigsPathChanged = engineSettings_.customOvpnConfigsPath() != engineSettings.customOvpnConfigsPath();
1261 bool isMACSpoofingChanged = engineSettings_.macAddrSpoofing() != engineSettings.macAddrSpoofing();
1262 bool isPacketSizeChanged = engineSettings_.packetSize() != engineSettings.packetSize();
1263 bool isDnsWhileConnectedChanged = engineSettings_.connectedDnsInfo() != engineSettings.connectedDnsInfo();
1264 bool isDecoyTrafficSettingsChanged = engineSettings_.decoyTrafficSettings() != engineSettings.decoyTrafficSettings();
1265 bool isFirewallSettingsChanged = engineSettings_.firewallSettings() != engineSettings.firewallSettings();
1266 bool isServerRoutingMethodChanged = engineSettings_.serverRoutingMethod() != engineSettings.serverRoutingMethod();
1267 bool isLanguageChanged = engineSettings_.language() != engineSettings.language();
1268
1269 engineSettings_ = engineSettings;
1270 engineSettings_.saveToSettings();
1271
1272 updateFirewallOnBoot();
1273
1274#ifdef Q_OS_LINUX
1275 DnsScripts_linux::instance().setDnsManager(engineSettings.dnsManager());
1276#endif
1277
1278 if (isDnsPolicyChanged) {
1279 firewallExceptions_.setDnsPolicy(engineSettings_.dnsPolicy());
1280 if (connectStateController_->currentState() != CONNECT_STATE_CONNECTED && emergencyConnectStateController_->currentState() != CONNECT_STATE_CONNECTED) {
1281 DnsServersConfiguration::instance().setDnsServersPolicy(engineSettings_.dnsPolicy());
1282 WSNet::instance()->dnsResolver()->setDnsServers(DnsServersConfiguration::instance().getCurrentDnsServers());
1283 }
1284 }
1285
1286 if (isDnsWhileConnectedChanged) {
1287 // tell connection manager about new settings (it will use them onConnect)
1288 connectionManager_->setConnectedDnsInfo(engineSettings.connectedDnsInfo());
1289 }
1290
1291 connectionManager_->setFirewallAlwaysOnPlusEnabled(engineSettings.firewallSettings().mode == FIREWALL_MODE_ALWAYS_ON_PLUS);
1292
1293 if (isAllowLanTrafficChanged || isDnsPolicyChanged || isFirewallSettingsChanged)
1294 updateFirewallSettings();
1295
1296 if (isFirewallSettingsChanged) {
1297 // Always On+ blocks API access, so a firewall mode change can flip the effective connectivity
1298 // that wsnet sees.
1299 updateWsnetConnectivityState();
1300
1301 // If a login was deferred because the Always On+ firewall was blocking API access, retry it now
1302 // that the firewall settings changed and access is no longer blocked.
1303 if (tryLoginNextConnectOrDisconnect_ && !isApiAccessBlockedByAlwaysOnPlusFirewall()) {
1304 tryLoginNextConnectOrDisconnect_ = false;
1305 loginImpl(true, QString(), QString(), QString());
1306 }
1307 }
1308

Callers

nothing calls this directly

Calls 15

connectedDnsInfoMethod · 0.80
setDnsServersPolicyMethod · 0.80
getCurrentDnsServersMethod · 0.80
changeDirMethod · 0.80
clearCredentialsMethod · 0.80
volumeMethod · 0.80
isKeepAliveEnabledMethod · 0.80
isAllowLanTrafficMethod · 0.45
updateChannelMethod · 0.45
isTerminateSocketsMethod · 0.45
dnsPolicyMethod · 0.45

Tested by

no test coverage detected