Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 5b543d9f authored by Takuo Kitame's avatar Takuo Kitame Committed by Chris Soyars
Browse files

OpenVPN: Added configurable options cipher, keysize and extra custom arguments.

It would possibly close issues 1177, 1476 and 1519
parent e6642c66
Loading
Loading
Loading
Loading
+6 −0
Original line number Diff line number Diff line
@@ -2417,6 +2417,12 @@ found in the list of installed applications.</string>
    <string name="vpn_openvpn_set_addr_summary">Uncheck to set tunnel addresses manually</string>
    <string name="vpn_openvpn_set_local_addr">Local IP Address</string>
    <string name="vpn_openvpn_set_remote_addr">Remote IP Address</string>
    <string name="vpn_openvpn_set_cipher">Cipher algorithm</string>
    <string name="vpn_openvpn_set_cipher_message">Leave empty to use default cipher</string>
    <string name="vpn_openvpn_set_keysize">Size of cipher key</string>
    <string name="vpn_openvpn_set_keysize_message">Leave empty to use cipher-specific default</string>
    <string name="vpn_openvpn_set_extra">Extra arguments</string>
    <string name="vpn_openvpn_set_extra_message">Enter the extra command line arguments</string>

    <!-- Preference title -->
    <string name="vpn_ipsec_presharedkey_title">Set IPSec pre-shared key</string>
+29 −2
Original line number Diff line number Diff line
@@ -76,4 +76,31 @@
       android:singleLine="true"
       />

    <EditTextPreference
       android:key="set_cipher"
       android:title="@string/vpn_openvpn_set_cipher"
       android:dialogTitle="@string/vpn_openvpn_set_cipher"
       android:dialogMessage="@string/vpn_openvpn_set_cipher_message"
       android:singleLine="true"
       android:inputType="textCapCharacters"
       />

    <EditTextPreference
       android:key="set_keysize"
       android:title="@string/vpn_openvpn_set_keysize"
       android:dialogTitle="@string/vpn_openvpn_set_keysize"
       android:dialogMessage="@string/vpn_openvpn_set_keysize_message"
       android:singleLine="true"
       android:inputType="number"
       />

    <EditTextPreference
       android:key="set_extra"
       android:title="@string/vpn_openvpn_set_extra"
       android:dialogTitle="@string/vpn_openvpn_set_extra"
       android:dialogMessage="@string/vpn_openvpn_set_extra_message"
       android:singleLine="true"
       android:inputType="text"
       />

</PreferenceScreen>
+75 −3
Original line number Diff line number Diff line
@@ -163,6 +163,9 @@ class OpenvpnEditor extends VpnProfileEditor {
        p.setSupplyAddr(newP.getSupplyAddr());
        p.setLocalAddr(newP.getLocalAddr());
        p.setRemoteAddr(newP.getRemoteAddr());
        p.setCipher(newP.getCipher());
        p.setKeySize(newP.getKeySize());
        p.setExtra(newP.getExtra());
    }

    private ListPreference createList(Context c, int titleResId, String selection, String[] keys,
@@ -195,6 +198,12 @@ class OpenvpnEditor extends VpnProfileEditor {

        private static final String KEY_REMOTE_ADDR = "set_remote_addr";

        private static final String KEY_CIPHER = "set_cipher";

        private static final String KEY_KEYSIZE = "set_keysize";

        private static final String KEY_EXTRA = "set_extra";

        private EditTextPreference mPort;

        private ListPreference mProto;
@@ -211,6 +220,12 @@ class OpenvpnEditor extends VpnProfileEditor {

        private EditTextPreference mRemoteAddr;

        private EditTextPreference mCipher;

        private EditTextPreference mKeySize;

        private EditTextPreference mExtra;

        private OpenvpnProfile profile;

        @Override
@@ -229,6 +244,9 @@ class OpenvpnEditor extends VpnProfileEditor {
            mSetAddr = (CheckBoxPreference) findPreference(KEY_SET_ADDR);
            mLocalAddr = (EditTextPreference) findPreference(KEY_LOCAL_ADDR);
            mRemoteAddr = (EditTextPreference) findPreference(KEY_REMOTE_ADDR);
            mCipher = (EditTextPreference) findPreference(KEY_CIPHER);
            mKeySize = (EditTextPreference) findPreference(KEY_KEYSIZE);
            mExtra = (EditTextPreference) findPreference(KEY_EXTRA);

            mPort.setSummary(profile.getPort());
            mPort.setText(profile.getPort());
@@ -325,6 +343,60 @@ class OpenvpnEditor extends VpnProfileEditor {
                    return true;
                }
            });

            if (profile.getCipher() == null ||
                profile.getCipher().equals(""))
                mCipher.setSummary("default");
            else
                mCipher.setSummary(profile.getCipher());
            mCipher.setText(profile.getCipher());
            mCipher.setOnPreferenceChangeListener(new Preference.OnPreferenceChangeListener() {
                public boolean onPreferenceChange(Preference pref, Object newValue) {
                    String name = (String) newValue;
                    name.trim();
                    profile.setCipher(name);
                    if (profile.getCipher().equals(""))
                        mCipher.setSummary("default");
                    else
                        mCipher.setSummary(profile.getCipher());
                    return true;
                }
            });

            if (profile.getKeySize() == null ||
                profile.getKeySize().equals("0")) {
                mKeySize.setSummary("default");
                mKeySize.setText("");
            } else {
                mKeySize.setSummary(profile.getKeySize());
                mKeySize.setText(profile.getKeySize());
            }
            mKeySize.setOnPreferenceChangeListener(new Preference.OnPreferenceChangeListener() {
                public boolean onPreferenceChange(Preference pref, Object newValue) {
                    String name = (String) newValue;
                    name.trim();
                    if (name.equals(""))
                        name = "0";
                    profile.setKeySize(name);
                    if (profile.getKeySize().equals("0"))
                        mKeySize.setSummary("default");
                    else
                        mKeySize.setSummary(profile.getKeySize());
                    return true;
                }
            });

            mExtra.setSummary(profile.getExtra());
            mExtra.setText(profile.getExtra());
            mExtra.setOnPreferenceChangeListener(new Preference.OnPreferenceChangeListener() {
                public boolean onPreferenceChange(Preference pref, Object newValue) {
                    String name = (String) newValue;
                    name.trim();
                    profile.setExtra(name);
                    mExtra.setSummary(profile.getExtra());
                    return true;
                }
            });
        }

        @Override