Ejemplo n.º 1
0
wstring GetSettingString(const string& settingName, wstring defaultValue, bool writeDefault=false)
{
    AutoMUTEX lock(g_registryMutex);

    wstring value;

    if (!ReadRegistryStringValue(settingName.c_str(), value))
    {
        value = defaultValue;

        if (writeDefault)
        {
            RegistryFailureReason reason = REGISTRY_FAILURE_NO_REASON;
            WriteRegistryStringValue(settingName, value, reason);
        }
    }

    return value;
}
Ejemplo n.º 2
0
void Settings::SetWindowPlacement(const string& value)
{
    RegistryFailureReason reason = REGISTRY_FAILURE_NO_REASON;
    (void)WriteRegistryStringValue(WINDOW_PLACEMENT_NAME, value, reason);
    // ignoring failures
}
Ejemplo n.º 3
0
void Settings::SetCookies(const string& value)
{
    RegistryFailureReason reason = REGISTRY_FAILURE_NO_REASON;
    (void)WriteRegistryStringValue(COOKIES_NAME, value, reason);
    // ignoring failures
}
Ejemplo n.º 4
0
// FromJson updates the stores settings from an object stored in JSON format.
bool Settings::FromJson(
    const string& utf8JSON, 
    bool& o_reconnectRequired)
{
    o_reconnectRequired = false;

    Json::Value json;
    Json::Reader reader;

    bool parsingSuccessful = reader.parse(utf8JSON, json);
    if (!parsingSuccessful)
    {
        my_print(NOT_SENSITIVE, false, _T("Failed to save settings!"));
        return false;
    }

    bool reconnectRequiredValueChanged = false;

    try
    {
        AutoMUTEX lock(g_registryMutex);

        // Note: We're purposely not bothering to check registry write return values.

        RegistryFailureReason failReason;

        BOOL splitTunnel = json.get("SplitTunnel", SPLIT_TUNNEL_DEFAULT).asUInt();
        reconnectRequiredValueChanged = reconnectRequiredValueChanged || !!splitTunnel != Settings::SplitTunnel();
        WriteRegistryDwordValue(SPLIT_TUNNEL_NAME, splitTunnel);

        wstring transport = json.get("VPN", TRANSPORT_DEFAULT).asUInt() ? TRANSPORT_VPN : TRANSPORT_DEFAULT;
        reconnectRequiredValueChanged = reconnectRequiredValueChanged || transport != Settings::Transport();
        WriteRegistryStringValue(
            TRANSPORT_NAME,
            transport,
            failReason);

        DWORD httpPort = json.get("LocalHttpProxyPort", HTTP_PROXY_PORT_DEFAULT).asUInt();
        reconnectRequiredValueChanged = reconnectRequiredValueChanged || httpPort != Settings::LocalHttpProxyPort();
        WriteRegistryDwordValue(HTTP_PROXY_PORT_NAME, httpPort);

        DWORD socksPort = json.get("LocalSocksProxyPort", SOCKS_PROXY_PORT_DEFAULT).asUInt();
        reconnectRequiredValueChanged = reconnectRequiredValueChanged || socksPort != Settings::LocalSocksProxyPort();
        WriteRegistryDwordValue(SOCKS_PROXY_PORT_NAME, socksPort);

        string upstreamProxyHostname = json.get("UpstreamProxyHostname", UPSTREAM_PROXY_HOSTNAME_DEFAULT).asString();
        reconnectRequiredValueChanged = reconnectRequiredValueChanged || upstreamProxyHostname != Settings::UpstreamProxyHostname();
        WriteRegistryStringValue(
            UPSTREAM_PROXY_HOSTNAME_NAME,
            upstreamProxyHostname,
            failReason);

        DWORD upstreamProxyPort = json.get("UpstreamProxyPort", UPSTREAM_PROXY_PORT_DEFAULT).asUInt();
        reconnectRequiredValueChanged = reconnectRequiredValueChanged || upstreamProxyPort != Settings::UpstreamProxyPort();
        WriteRegistryDwordValue(UPSTREAM_PROXY_PORT_NAME, upstreamProxyPort);

        BOOL skipUpstreamProxy = json.get("SkipUpstreamProxy", SKIP_UPSTREAM_PROXY_DEFAULT).asUInt();
        reconnectRequiredValueChanged = reconnectRequiredValueChanged || !!skipUpstreamProxy != Settings::SkipUpstreamProxy();
        WriteRegistryDwordValue(SKIP_UPSTREAM_PROXY_NAME, skipUpstreamProxy);

        string egressRegion = json.get("EgressRegion", EGRESS_REGION_DEFAULT).asString();
        reconnectRequiredValueChanged = reconnectRequiredValueChanged || egressRegion != Settings::EgressRegion();
        WriteRegistryStringValue(
            EGRESS_REGION_NAME,
            egressRegion,
            failReason);

        BOOL systrayMinimize = json.get("SystrayMinimize", SYSTRAY_MINIMIZE_DEFAULT).asUInt();
        // Does not require reconnect to apply change.
        WriteRegistryDwordValue(SYSTRAY_MINIMIZE_NAME, systrayMinimize);
    }
    catch (exception& e)
    {
        my_print(NOT_SENSITIVE, false, _T("%s:%d: JSON parse exception: %S"), __TFUNCTION__, __LINE__, e.what());
        return false;
    }

    o_reconnectRequired = reconnectRequiredValueChanged;

    return true;
}
Ejemplo n.º 5
0
// Get/set registry values for all versions (common)
void SharedUtil::SetCommonRegistryValue ( const SString& strPath, const SString& strName, const SString& strValue )
{
    WriteRegistryStringValue ( HKEY_LOCAL_MACHINE, MakeVersionRegistryPath ( "Common", strPath ), strName, strValue );
}
Ejemplo n.º 6
0
//
// Registry values
// 
// Get/set registry values for the current version
void SharedUtil::SetRegistryValue ( const SString& strPath, const SString& strName, const SString& strValue )
{
    WriteRegistryStringValue ( HKEY_LOCAL_MACHINE, MakeVersionRegistryPath ( GetMajorVersionString (), strPath ), strName, strValue );
}
Ejemplo n.º 7
0
// Get/set registry values for a version using the old (HKCU) layout
void SharedUtil::SetVersionRegistryValueLegacy ( const SString& strVersion, const SString& strPath, const SString& strName, const SString& strValue )
{
    WriteRegistryStringValue ( HKEY_CURRENT_USER, MakeVersionRegistryPathLegacy ( strVersion, strPath ), strName, strValue );
}