Search in sources :

Example 56 with VpnProfile

use of com.android.internal.net.VpnProfile in project Resurrection_packages_apps_Settings by ResurrectionRemix.

the class ConfigDialog method getProfile.

VpnProfile getProfile() {
    // First, save common fields.
    VpnProfile profile = new VpnProfile(mProfile.key);
    profile.name = mName.getText().toString();
    profile.type = mType.getSelectedItemPosition();
    profile.server = mServer.getText().toString().trim();
    profile.username = mUsername.getText().toString();
    profile.password = mPassword.getText().toString();
    profile.searchDomains = mSearchDomains.getText().toString().trim();
    profile.dnsServers = mDnsServers.getText().toString().trim();
    profile.routes = mRoutes.getText().toString().trim();
    if (hasProxy()) {
        String proxyHost = mProxyHost.getText().toString().trim();
        String proxyPort = mProxyPort.getText().toString().trim();
        // 0 is a last resort default, but the interface validates that the proxy port is
        // present and non-zero.
        int port = proxyPort.isEmpty() ? 0 : Integer.parseInt(proxyPort);
        profile.proxy = new ProxyInfo(proxyHost, port, null);
    } else {
        profile.proxy = null;
    }
    // Then, save type-specific fields.
    switch(profile.type) {
        case VpnProfile.TYPE_PPTP:
            profile.mppe = mMppe.isChecked();
            break;
        case VpnProfile.TYPE_L2TP_IPSEC_PSK:
            profile.l2tpSecret = mL2tpSecret.getText().toString();
        // fall through
        case VpnProfile.TYPE_IPSEC_XAUTH_PSK:
            profile.ipsecIdentifier = mIpsecIdentifier.getText().toString();
            profile.ipsecSecret = mIpsecSecret.getText().toString();
            break;
        case VpnProfile.TYPE_L2TP_IPSEC_RSA:
            profile.l2tpSecret = mL2tpSecret.getText().toString();
        // fall through
        case VpnProfile.TYPE_IPSEC_XAUTH_RSA:
            if (mIpsecUserCert.getSelectedItemPosition() != 0) {
                profile.ipsecUserCert = (String) mIpsecUserCert.getSelectedItem();
            }
        // fall through
        case VpnProfile.TYPE_IPSEC_HYBRID_RSA:
            if (mIpsecCaCert.getSelectedItemPosition() != 0) {
                profile.ipsecCaCert = (String) mIpsecCaCert.getSelectedItem();
            }
            if (mIpsecServerCert.getSelectedItemPosition() != 0) {
                profile.ipsecServerCert = (String) mIpsecServerCert.getSelectedItem();
            }
            break;
    }
    final boolean hasLogin = !profile.username.isEmpty() || !profile.password.isEmpty();
    profile.saveLogin = mSaveLogin.isChecked() || (mEditing && hasLogin);
    return profile;
}
Also used : VpnProfile(com.android.internal.net.VpnProfile) ProxyInfo(android.net.ProxyInfo)

Example 57 with VpnProfile

use of com.android.internal.net.VpnProfile in project Resurrection_packages_apps_Settings by ResurrectionRemix.

the class ConfigDialog method updateUiControls.

/**
 * Updates the UI according to the current configuration entered by the user.
 *
 * These include:
 * "Always-on VPN" checkbox
 * Reason for "Always-on VPN" being disabled, when necessary
 * Proxy info if manually configured
 * "Save account information" checkbox
 * "Save" and "Connect" buttons
 */
private void updateUiControls() {
    VpnProfile profile = getProfile();
    // Always-on VPN
    if (profile.isValidLockdownProfile()) {
        mAlwaysOnVpn.setEnabled(true);
        mAlwaysOnInvalidReason.setVisibility(View.GONE);
    } else {
        mAlwaysOnVpn.setChecked(false);
        mAlwaysOnVpn.setEnabled(false);
        if (!profile.isTypeValidForLockdown()) {
            mAlwaysOnInvalidReason.setText(R.string.vpn_always_on_invalid_reason_type);
        } else if (!profile.isServerAddressNumeric()) {
            mAlwaysOnInvalidReason.setText(R.string.vpn_always_on_invalid_reason_server);
        } else if (!profile.hasDns()) {
            mAlwaysOnInvalidReason.setText(R.string.vpn_always_on_invalid_reason_no_dns);
        } else if (!profile.areDnsAddressesNumeric()) {
            mAlwaysOnInvalidReason.setText(R.string.vpn_always_on_invalid_reason_dns);
        } else {
            mAlwaysOnInvalidReason.setText(R.string.vpn_always_on_invalid_reason_other);
        }
        mAlwaysOnInvalidReason.setVisibility(View.VISIBLE);
    }
    // Show proxy fields if any proxy field is filled.
    if (mProfile.proxy != null && (!mProfile.proxy.getHost().isEmpty() || mProfile.proxy.getPort() != 0)) {
        mProxySettings.setSelection(VpnProfile.PROXY_MANUAL);
        updateProxyFieldsVisibility(VpnProfile.PROXY_MANUAL);
    }
    // Save account information
    if (mAlwaysOnVpn.isChecked()) {
        mSaveLogin.setChecked(true);
        mSaveLogin.setEnabled(false);
    } else {
        mSaveLogin.setChecked(mProfile.saveLogin);
        mSaveLogin.setEnabled(true);
    }
    // Save or Connect button
    getButton(DialogInterface.BUTTON_POSITIVE).setEnabled(validate(mEditing));
}
Also used : VpnProfile(com.android.internal.net.VpnProfile)

Example 58 with VpnProfile

use of com.android.internal.net.VpnProfile in project android_frameworks_base by ParanoidAndroid.

the class ConnectivityService method updateLockdownVpn.

@Override
public boolean updateLockdownVpn() {
    if (Binder.getCallingUid() != Process.SYSTEM_UID) {
        Slog.w(TAG, "Lockdown VPN only available to AID_SYSTEM");
        return false;
    }
    // Tear down existing lockdown if profile was removed
    mLockdownEnabled = LockdownVpnTracker.isEnabled();
    if (mLockdownEnabled) {
        if (!mKeyStore.isUnlocked()) {
            Slog.w(TAG, "KeyStore locked; unable to create LockdownTracker");
            return false;
        }
        final String profileName = new String(mKeyStore.get(Credentials.LOCKDOWN_VPN));
        final VpnProfile profile = VpnProfile.decode(profileName, mKeyStore.get(Credentials.VPN + profileName));
        setLockdownTracker(new LockdownVpnTracker(mContext, mNetd, this, mVpn, profile));
    } else {
        setLockdownTracker(null);
    }
    return true;
}
Also used : VpnProfile(com.android.internal.net.VpnProfile) LockdownVpnTracker(com.android.server.net.LockdownVpnTracker)

Example 59 with VpnProfile

use of com.android.internal.net.VpnProfile in project platform_frameworks_base by android.

the class ConnectivityService method updateLockdownVpn.

@Override
public boolean updateLockdownVpn() {
    if (Binder.getCallingUid() != Process.SYSTEM_UID) {
        Slog.w(TAG, "Lockdown VPN only available to AID_SYSTEM");
        return false;
    }
    // Tear down existing lockdown if profile was removed
    mLockdownEnabled = LockdownVpnTracker.isEnabled();
    if (mLockdownEnabled) {
        byte[] profileTag = mKeyStore.get(Credentials.LOCKDOWN_VPN);
        if (profileTag == null) {
            Slog.e(TAG, "Lockdown VPN configured but cannot be read from keystore");
            return false;
        }
        String profileName = new String(profileTag);
        final VpnProfile profile = VpnProfile.decode(profileName, mKeyStore.get(Credentials.VPN + profileName));
        if (profile == null) {
            Slog.e(TAG, "Lockdown VPN configured invalid profile " + profileName);
            setLockdownTracker(null);
            return true;
        }
        int user = UserHandle.getUserId(Binder.getCallingUid());
        synchronized (mVpns) {
            Vpn vpn = mVpns.get(user);
            if (vpn == null) {
                Slog.w(TAG, "VPN for user " + user + " not ready yet. Skipping lockdown");
                return false;
            }
            setLockdownTracker(new LockdownVpnTracker(mContext, mNetd, this, vpn, profile));
        }
    } else {
        setLockdownTracker(null);
    }
    return true;
}
Also used : VpnProfile(com.android.internal.net.VpnProfile) Vpn(com.android.server.connectivity.Vpn) LockdownVpnTracker(com.android.server.net.LockdownVpnTracker) NetworkPolicyManager.uidRulesToString(android.net.NetworkPolicyManager.uidRulesToString)

Example 60 with VpnProfile

use of com.android.internal.net.VpnProfile in project android_frameworks_base by DirtyUnicorns.

the class ConnectivityService method updateLockdownVpn.

@Override
public boolean updateLockdownVpn() {
    if (Binder.getCallingUid() != Process.SYSTEM_UID) {
        Slog.w(TAG, "Lockdown VPN only available to AID_SYSTEM");
        return false;
    }
    // Tear down existing lockdown if profile was removed
    mLockdownEnabled = LockdownVpnTracker.isEnabled();
    if (mLockdownEnabled) {
        final String profileName = new String(mKeyStore.get(Credentials.LOCKDOWN_VPN));
        final VpnProfile profile = VpnProfile.decode(profileName, mKeyStore.get(Credentials.VPN + profileName));
        if (profile == null) {
            Slog.e(TAG, "Lockdown VPN configured invalid profile " + profileName);
            setLockdownTracker(null);
            return true;
        }
        int user = UserHandle.getUserId(Binder.getCallingUid());
        synchronized (mVpns) {
            Vpn vpn = mVpns.get(user);
            if (vpn == null) {
                Slog.w(TAG, "VPN for user " + user + " not ready yet. Skipping lockdown");
                return false;
            }
            setLockdownTracker(new LockdownVpnTracker(mContext, mNetd, this, vpn, profile));
        }
    } else {
        setLockdownTracker(null);
    }
    return true;
}
Also used : VpnProfile(com.android.internal.net.VpnProfile) Vpn(com.android.server.connectivity.Vpn) LockdownVpnTracker(com.android.server.net.LockdownVpnTracker) NetworkPolicyManager.uidRulesToString(android.net.NetworkPolicyManager.uidRulesToString)

Aggregations

VpnProfile (com.android.internal.net.VpnProfile)119 LegacyVpnInfo (com.android.internal.net.LegacyVpnInfo)63 LargeTest (android.test.suitebuilder.annotation.LargeTest)42 SmallTest (android.test.suitebuilder.annotation.SmallTest)21 VpnSettings (com.android.settings.vpn2.VpnSettings)15 Context (android.content.Context)14 Bundle (android.os.Bundle)14 RemoteException (android.os.RemoteException)13 WorkerThread (android.annotation.WorkerThread)7 Activity (android.app.Activity)7 Dialog (android.app.Dialog)7 Intent (android.content.Intent)7 PackageInfo (android.content.pm.PackageInfo)7 PackageManager (android.content.pm.PackageManager)7 UserHandle (android.os.UserHandle)7 KeyStore (android.security.KeyStore)6 LockdownVpnTracker (com.android.server.net.LockdownVpnTracker)6 AlertDialog (android.app.AlertDialog)5 NetworkPolicyManager.uidRulesToString (android.net.NetworkPolicyManager.uidRulesToString)5 Vpn (com.android.server.connectivity.Vpn)5